type CamelSeparator = "-" | "_" | "."; /** * Converts a string to camel case. */ type CamelCase = S extends `${infer FirstWord}${CamelSeparator}${infer SecondChar}${infer Remaining}` ? `${Lowercase}${Uppercase}${CamelCase}` : Lowercase; type Camelize = T extends Date ? T : T extends RegExp ? T : T extends Array ? Array> : T extends object ? { [K in keyof T as CamelCase]: Camelize; } : T; declare function camelize(obj: T): T extends string ? CamelCase : Camelize; export = camelize;