UNPKG

livekit-client

Version:

JavaScript/TypeScript client SDK for LiveKit

17 lines (13 loc) 590 B
export type CamelToSnakeCase<Str extends string> = Str extends `${infer First}${infer Rest}` ? `${First extends Capitalize<First> ? '_' : ''}${Lowercase<First>}${CamelToSnakeCase<Rest>}` : Str; type ArrayValuesToSnakeCase<Item> = Array<ValueToSnakeCase<Item>>; type ObjectKeysToSnakeCase<Obj> = { [Key in keyof Obj as CamelToSnakeCase<string & Key>]: NonNullable<ValueToSnakeCase<Obj[Key]>>; }; export type ValueToSnakeCase<Value> = Value extends Array<infer Item> ? ArrayValuesToSnakeCase<Item> : Value extends object ? ObjectKeysToSnakeCase<Value> : Value;