//#region ../../node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.d.ts type Splitter = "-" | "_" | "/" | "."; type FirstOfString = S extends `${infer F}${string}` ? F : never; type RemoveFirstOfString = S extends `${string}${infer R}` ? R : never; type IsUpper = S extends Uppercase ? true : false; type IsLower = S extends Lowercase ? true : false; type SameLetterCase = IsUpper extends IsUpper ? true : IsLower extends IsLower ? true : false; type JoinLowercaseWords = T extends readonly [infer F extends string, ...infer R extends string[]] ? Accumulator extends "" ? JoinLowercaseWords}`> : JoinLowercaseWords}`> : Accumulator; type LastOfArray = T extends [...any, infer R] ? R : never; type RemoveLastOfArray = T extends [...infer F, any] ? F : never; type SplitByCase = string extends Separator ? string[] : T extends `${infer F}${infer R}` ? [LastOfArray] extends [never] ? SplitByCase : LastOfArray extends string ? R extends "" ? SplitByCase, `${LastOfArray}${F}`]> : SameLetterCase> extends true ? F extends Separator ? FirstOfString extends Separator ? SplitByCase : IsUpper> extends true ? SplitByCase, Separator, [...Accumulator, FirstOfString]> : SplitByCase : SplitByCase, `${LastOfArray}${F}`]> : IsLower extends true ? SplitByCase, Separator, [...RemoveLastOfArray, `${LastOfArray}${F}`, FirstOfString]> : SplitByCase : never : Accumulator extends [] ? T extends "" ? [] : string[] : Accumulator; type JoinByCase = string extends T ? string : string[] extends T ? string : T extends string ? SplitByCase extends readonly string[] ? JoinLowercaseWords, Joiner> : never : T extends readonly string[] ? JoinLowercaseWords : never; type SnakeCase = JoinByCase; //#endregion export { SnakeCase as t };