import type { Args, Fn } from "../HKT"; export type ToSnakeCase = _ToSnakeCase extends `_${infer T}` ? T : _ToSnakeCase; type _ToSnakeCase = S extends `${infer T}-${infer U}` ? `${Lowercase}_${_ToSnakeCase}` : Kebab extends true ? S : S extends `${infer T}${infer U}` ? `${T extends Capitalize ? "_" : ""}${Lowercase}${_ToSnakeCase}` : S; export default interface ToSnakeCaseFn extends Fn<[string], string> { def: ([s]: Args) => ToSnakeCase; }