UNPKG

@sprucelabs/schema

Version:

Static and dynamic binding plus runtime validation and transformation to ensure your app is sound. 🤓

74 lines (73 loc) • 4.58 kB
import { AddressFieldDefinition } from '../../../fields/AddressField.types'; import { BooleanFieldDefinition } from '../../../fields/BooleanField.types'; import { DateFieldDefinition } from '../../../fields/DateField.types'; import { DateTimeFieldDefinition } from '../../../fields/DateTimeField.types'; import { DirectoryFieldDefinition } from '../../../fields/DirectoryField.types'; import { DurationFieldDefinition } from '../../../fields/DurationField.types'; import { EmailFieldDefinition } from '../../../fields/EmailField.types'; import { Field } from '../../../fields/field.static.types'; import { FileFieldDefinition } from '../../../fields/FileField.types'; import { IdFieldDefinition } from '../../../fields/IdField.types'; import { ImageFieldDefinition } from '../../../fields/ImageField.types'; import { NumberFieldDefinition } from '../../../fields/NumberField.types'; import { PhoneFieldDefinition } from '../../../fields/PhoneField.types'; import { RawFieldDefinition } from '../../../fields/RawField.types'; import { SchemaFieldFieldDefinition, SchemaFieldValueTypeMapper } from '../../../fields/SchemaField.types'; import { SelectFieldDefinition, SelectFieldValueTypeMapper } from '../../../fields/SelectField.types'; import { TextFieldDefinition } from '../../../fields/TextField.types'; export type FieldDefinitions = BooleanFieldDefinition | SelectFieldDefinition | DurationFieldDefinition | IdFieldDefinition | TextFieldDefinition | AddressFieldDefinition | PhoneFieldDefinition | SchemaFieldFieldDefinition | RawFieldDefinition | NumberFieldDefinition | DateTimeFieldDefinition | FileFieldDefinition | DateFieldDefinition | DirectoryFieldDefinition | EmailFieldDefinition | ImageFieldDefinition; export type Fields = Field<BooleanFieldDefinition> | Field<SelectFieldDefinition> | Field<DurationFieldDefinition> | Field<IdFieldDefinition> | Field<TextFieldDefinition> | Field<AddressFieldDefinition> | Field<PhoneFieldDefinition> | Field<SchemaFieldFieldDefinition> | Field<RawFieldDefinition> | Field<NumberFieldDefinition> | Field<DateTimeFieldDefinition> | Field<FileFieldDefinition> | Field<DateFieldDefinition> | Field<DirectoryFieldDefinition> | Field<EmailFieldDefinition> | Field<ImageFieldDefinition>; export interface FieldDefinitionMap { boolean: BooleanFieldDefinition; select: SelectFieldDefinition; duration: DurationFieldDefinition; id: IdFieldDefinition; text: TextFieldDefinition; address: AddressFieldDefinition; phone: PhoneFieldDefinition; schema: SchemaFieldFieldDefinition; raw: RawFieldDefinition; number: NumberFieldDefinition; dateTime: DateTimeFieldDefinition; file: FileFieldDefinition; date: DateFieldDefinition; directory: DirectoryFieldDefinition; email: EmailFieldDefinition; image: ImageFieldDefinition; } export interface FieldValueTypeGeneratorMap<F extends FieldDefinitions, CreateEntityInstances extends boolean, ShouldIncludeNullAndUndefinedFieldsInSchemas extends boolean = false> { boolean: BooleanFieldDefinition['value']; select: SelectFieldValueTypeMapper<F extends SelectFieldDefinition ? F : SelectFieldDefinition>; duration: DurationFieldDefinition['value']; id: IdFieldDefinition['value']; text: TextFieldDefinition['value']; address: AddressFieldDefinition['value']; phone: PhoneFieldDefinition['value']; schema: SchemaFieldValueTypeMapper<F extends SchemaFieldFieldDefinition ? F : SchemaFieldFieldDefinition, CreateEntityInstances, ShouldIncludeNullAndUndefinedFieldsInSchemas>; raw: RawFieldDefinition['value']; number: NumberFieldDefinition['value']; dateTime: DateTimeFieldDefinition['value']; file: FileFieldDefinition['value']; date: DateFieldDefinition['value']; directory: DirectoryFieldDefinition['value']; email: EmailFieldDefinition['value']; image: ImageFieldDefinition['value']; } export interface FieldMap { boolean: Field<BooleanFieldDefinition>; select: Field<SelectFieldDefinition>; duration: Field<DurationFieldDefinition>; id: Field<IdFieldDefinition>; text: Field<TextFieldDefinition>; address: Field<AddressFieldDefinition>; phone: Field<PhoneFieldDefinition>; schema: Field<SchemaFieldFieldDefinition>; raw: Field<RawFieldDefinition>; number: Field<NumberFieldDefinition>; dateTime: Field<DateTimeFieldDefinition>; file: Field<FileFieldDefinition>; date: Field<DateFieldDefinition>; directory: Field<DirectoryFieldDefinition>; email: Field<EmailFieldDefinition>; image: Field<ImageFieldDefinition>; }