@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
34 lines (33 loc) • 1.28 kB
TypeScript
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;