// Type definitions for humps 2.0 // Project: https://github.com/domchristie/humps // Definitions by: Niklas Mollenhauer // Piotr Błażejewicz // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // Minimum TypeScript Version: 4.1 export type SnakeToCamelCase = S extends `${infer P1}_${infer P2}${infer P3}` ? `${P1}${Uppercase}${SnakeToCamelCase}` : S; export type CamelizedProperty = T extends any ? T extends Array ? U extends {} ? Array> : T : T extends {} ? Camelized : T : never; export type Camelized = { [K in keyof T as SnakeToCamelCase]: CamelizedProperty; }; export type SnakeToPascalCase = S extends `${infer P1}_${infer P2}${infer P3}` ? `${Capitalize}${Uppercase}${SnakeToPascalCase}` : S; export type PascalizedProperty = T extends any ? T extends Array ? U extends {} ? Array> : T : T extends {} ? Pascalized : T : never; export type Pascalized = { [K in keyof T as SnakeToPascalCase]: PascalizedProperty; }; export type CamelToSnakeCase = S extends `${infer T}${infer U}` ? `${T extends Capitalize ? '_' : ''}${Lowercase}${CamelToSnakeCase}` : S; export type DecamelizedProperty = T extends any ? T extends Array ? U extends {} ? Array> : T : T extends {} ? Decamelized : T : never; export type Decamelized = { [K in keyof T as CamelToSnakeCase]: DecamelizedProperty; }; export type PascalToSnakeCase = S extends `${infer T1}${infer T2}${infer U}` ? `${T2 extends Capitalize ? '_' : ''}${Lowercase}${Lowercase}${CamelToSnakeCase}` : S; export type DepascalizedProperty = T extends any ? T extends Array ? U extends {} ? Array> : T : T extends {} ? Decamelized : T : never; export type Depascalized = { [K in keyof T as CamelToSnakeCase]: DepascalizedProperty; }; export function camelize(value: T): SnakeToCamelCase; export function pascalize(value: T): SnakeToPascalCase; export function decamelize(value: string, optionsOrProcessor?: OptionOrProcessor): string; export function decamelize(value: T): CamelToSnakeCase; export function depascalize(value: string, optionsOrProcessor?: OptionOrProcessor): string; export function depascalize(value: T): PascalToSnakeCase; export function camelizeKeys(str: object[], optionsOrProcessor?: OptionOrProcessor): object[]; export function camelizeKeys(str: object, optionsOrProcessor?: OptionOrProcessor): object; export function camelizeKeys(str: T, optionsOrProcessor?: OptionOrProcessor): Camelized; export function pascalizeKeys(str: object[], optionsOrProcessor?: OptionOrProcessor): object[]; export function pascalizeKeys(str: object, optionsOrProcessor?: OptionOrProcessor): object; export function pascalizeKeys(str: T, optionsOrProcessor?: OptionOrProcessor): Pascalized; export function decamelizeKeys(str: object[], optionsOrProcessor?: OptionOrProcessor): object[]; export function decamelizeKeys(str: object, optionsOrProcessor?: OptionOrProcessor): object; export function decamelizeKeys(str: T, optionsOrProcessor?: OptionOrProcessor): Decamelized; export function depascalizeKeys(str: object[], optionsOrProcessor?: OptionOrProcessor): object[]; export function depascalizeKeys(str: object, optionsOrProcessor?: OptionOrProcessor): object; export function depascalizeKeys(str: T, optionsOrProcessor?: OptionOrProcessor): Depascalized; export interface HumpsOptions { separator?: string | undefined; split?: RegExp | undefined; process?: HumpsProcessor | undefined; } export interface HumpsProcessor { (key: string, convert: HumpsProcessorParameter, options?: HumpsOptions): string; } export interface HumpsProcessorParameter { (key: string, options?: HumpsOptions): string; } export type OptionOrProcessor = HumpsOptions | HumpsProcessor; export as namespace humps;