/** * This module contains functions and types to change the cases of items within tuples and arrays * * @module */ import type { CaseName } from "./cases.js"; import { type NonDelimitedCaseName } from "./non-delimited-cases.js"; import { type ChangeStringCase, type DetectCaseNameFromString } from "./string.js"; import type { UnionToTuple } from "./utils.js"; export type DetectCaseNameFromArray = number extends Array["length"] ? Array extends (infer Item)[] ? DetectCaseNameFromTuple> : undefined : DetectCaseNameFromTuple; type DetectCaseNameFromTuple = Tuple extends [infer Head, ...infer Tail extends unknown[]] ? Head extends string ? DetectCaseNameFromString extends infer Head extends CaseName ? Prev extends Head | undefined ? DetectCaseNameFromTuple : Prev extends NonDelimitedCaseName ? Head extends NonDelimitedCaseName ? undefined : DetectCaseNameFromTuple : Head extends NonDelimitedCaseName ? DetectCaseNameFromTuple : undefined : DetectCaseNameFromTuple : DetectCaseNameFromTuple : Prev; export declare function detectCaseNameFromArray(array: Array): DetectCaseNameFromArray | undefined; /** Changes the case of the items within a string literal union array or tuple type */ export type ChangeArrayCase = number extends Array["length"] ? Array extends (infer Item)[] ? (ChangeTupleCase, ToCase, FromCase>[number])[] : Array : ChangeTupleCase; type ChangeTupleCase = Tuple extends [infer Head, ...infer Tail extends unknown[]] ? Head extends string ? ChangeTupleCase ]> : ChangeTupleCase : Acc; /** Returns a function translating the string literals within an array or tuple. The current case will be auto-detected if possible. */ export declare function arrayCaseChanger(toCase: ToCase): (array: Array) => DetectCaseNameFromArray extends infer FromCase extends CaseName ? ChangeArrayCase : Array; /** Returns a function translating the string literals within an array or tuple from one provided case to another */ export declare function arrayCaseChanger(toCase: ToCase, fromCase: FromCase): (array: Array) => ChangeArrayCase; /** Translates the string literals within an array or tuple. The current case will be auto-detected if possible. */ export declare function changeArrayCase(array: Array, toCase: ToCase): DetectCaseNameFromArray extends infer FromCase extends CaseName ? ChangeArrayCase : Array; /** Translates the string literals within an array or tuple from one provided case to another */ export declare function changeArrayCase(array: Array, toCase: ToCase, fromCase: FromCase): ChangeArrayCase; export {}; //# sourceMappingURL=array.d.ts.map