@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
TypeScript
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>;
}