UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

34 lines (33 loc) 1.28 kB
import { FieldTypeName } from './fields/_fieldDefinitions'; export declare const parseStringDefinition: any; export declare const typeNameFromTemplate: any; export declare const isStringFieldDefinition: any; export declare const isListTemplate: any; export declare const isOptionalTemplate: any; export type AnyStringFieldDefinition = FieldTypeName | `${FieldTypeName}?` | `[${FieldTypeName}]` | `[${FieldTypeName}]?`; export type ExtractStringFieldDefType<T extends AnyStringFieldDefinition> = T extends FieldTypeName ? T : T extends `[${infer U}]?` ? U : T extends `${infer U}?` ? U : T extends `[${infer U}]` ? U : never; export type ParseStringDefinition<S> = S extends FieldTypeName ? { def: undefined; description?: string; list: false; optional: false; type: S; } : S extends `${FieldTypeName}?` ? { def: undefined; description?: string; list: false; optional: true; type: ExtractStringFieldDefType<S>; } : S extends `[${FieldTypeName}]` ? { def: undefined; description?: string; list: true; optional: false; type: ExtractStringFieldDefType<S>; } : S extends `[${FieldTypeName}]?` ? { def: undefined; description?: string; list: true; optional: true; type: ExtractStringFieldDefType<S>; } : never;