@beefree.io/sdk
Version:
wrapper of BeefreeSDK
17 lines (16 loc) • 814 B
TypeScript
type Kebab<T extends string, A extends string = ""> = T extends `${infer F}${infer R}` ? Kebab<R, `${A}${F extends Lowercase<F> ? "" : "-"}${Lowercase<F>}`> : A;
export type KebabKeys<T> = {
[K in keyof T as K extends string ? Kebab<K> : K]: T[K];
};
export type ValueOf<T> = T[keyof T];
export type RecursivePartial<T> = {
[P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends Record<string, unknown> ? RecursivePartial<T[P]> : T[P];
};
export type RecursiveRequired<T> = Required<{
[P in keyof T]: T[P] extends Record<string, unknown> | undefined ? RecursiveRequired<Required<T[P]>> : T[P];
}>;
export type RequireAtLeastOne<T, K extends keyof T = keyof T> = {
[P in K]: Required<Pick<T, P>> & Partial<Omit<T, P>>;
}[K];
export type valueof<T> = T[keyof T];
export {};