UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

8 lines (7 loc) 770 B
import { GetFieldByDotNotation } from '@backland/utils'; import { $var } from './$var'; export type $pick_def = $var; export type $pick<op extends $pick_def, P1, P2> = op extends unknown ? [op] extends [string] ? _Pick<op, P1, P2> : never : never; type _Pick<T extends string, P1, P2> = P1 extends unknown ? P2 extends unknown ? T extends unknown ? T extends $var ? __Pick<T, P1, P2> : never : never : never : never; type __Pick<T extends $var, P1, P2> = T extends '$' ? P1 : T extends '$$' ? P2 : T extends `$.${infer Path}` ? GetFieldByDotNotation<P1, Path> : T extends `$$.${infer Path}` ? GetFieldByDotNotation<P2, Path> : T extends `$elem(${infer Path})` ? _Pick<Path, P1, P2> extends infer R ? R extends [...infer El] ? El : R[keyof R] : never : never; export {};