@bemedev/types
Version:
Type definitions for Bemedev projects
19 lines • 1.21 kB
TypeScript
import type { AnyArray, NOmit, PrimitiveObject, SoRa } from '../types/types';
import type { CUSTOM, PARTIAL, PRIMITIVE_OBJECTS, PRIMITIVES } from './constants';
export type PrimitiveS = (typeof PRIMITIVES)[number];
export type TransformS<T extends PrimitiveS> = T extends 'string' ? string : T extends 'number' ? number : T extends 'boolean' ? boolean : T extends 'bigint' ? bigint : T extends 'symbol' ? symbol : T extends 'undefined' ? undefined : T extends 'null' ? null : never;
export type MapS = {
[key: string]: ObjectS;
};
export type Custom<T = any> = {
[CUSTOM]: T;
};
export type PartialCustom = {
[PARTIAL]: undefined;
};
export type _ObjectS = MapS | PrimitiveS | Custom | PartialCustom | (typeof PRIMITIVE_OBJECTS)[number];
export type ObjectS = SoRa<_ObjectS>;
export type TransformO<T> = T extends PrimitiveS ? TransformS<T> : T extends 'date' ? Date : T extends 'object' ? {} : T extends 'primitive' ? PrimitiveObject : T extends PartialCustom ? Partial<TransformO<NOmit<T, typeof PARTIAL>>> : T extends AnyArray<any> ? T[number] extends infer TKN extends ObjectS ? TransformO<TKN>[] : never : {
[K in keyof T]: TransformO<T[K]>;
};
//# sourceMappingURL=types.types.d.ts.map