import { TypeConstructor } from '../basic'; import { Moment } from 'moment'; import { IValidationArray, IValidationBoolean, IValidationCore, IValidationDate, IValidationEnum, IValidationFile, IValidationNumber, IValidationObject, IValidationString } from './validation.definition'; export type SchemaType = 'boolean' | 'string' | 'number' | 'integer' | 'enum' | 'date' | 'file' | 'array' | 'object' | undefined; export interface ISchemaCore = IValidationCore> { type?: SchemaType; /** * propertyType only should be defined in item schema of array schema */ propertyType?: TypeConstructor; circularType?: (target: T) => any; description?: string; validation?: V; convertData?: (data: any) => any; } export type IBooleanSchema = ISchemaCore; export type IStringSchema = ISchemaCore; export type INumberSchema = ISchemaCore; export type IIntegerSchema = INumberSchema; export type IFileSchema = ISchemaCore; export interface IDateSchema extends ISchemaCore { /** * date format will be ignored if convertToDateMoment is defined */ dateFormat?: string; /** * use this function, the dateFormat will be ignored */ convertToDateMoment?: (originData: any) => Moment; } export interface IEnumSchema extends ISchemaCore { enumData: { [key: string]: any; }; enumName?: string; } export interface IArraySchema extends ISchemaCore, IValidationArray> { itemSchema?: ISchemaGeneral; } export interface IObjectSchema extends ISchemaCore> { /** * validate each property with corresponding schema, this field is higher priority */ properties?: { [key in keyof T]: ISchemaGeneral; }; /** * this schema will be use to validate all item in object, this field is lower priority */ generalSchema?: ISchemaGeneral; } export type ISchemaGeneral = ISchemaCore | IBooleanSchema | IStringSchema | INumberSchema | IIntegerSchema | IFileSchema | IDateSchema | IEnumSchema | IArraySchema | IObjectSchema; export declare const BooleanSchema: IBooleanSchema; export declare const StringSchema: IStringSchema; export declare const NumberSchema: INumberSchema; export declare const IntegerSchema: IIntegerSchema; export declare const DateSchema: IDateSchema; export declare const FileSchema: IFileSchema; export declare const EnumSchema: IEnumSchema; export declare const ArraySchema: IArraySchema; export declare const ObjectSchema: IObjectSchema; export declare const BooleanRequireSchema: IBooleanSchema; export declare const StringRequireSchema: IStringSchema; export declare const NumberRequireSchema: INumberSchema; export declare const IntegerRequireSchema: IIntegerSchema; export declare const DateRequireSchema: IDateSchema; export declare const FileRequireSchema: IFileSchema; export declare const EnumRequireSchema: IEnumSchema; export declare const ArrayRequireSchema: IArraySchema; export declare const ObjectRequireSchema: IObjectSchema; export declare const BakkuHttpErrorSchema: IObjectSchema; /** * Deprecated */ export declare const BinHttpErrorSchema: IObjectSchema; //# sourceMappingURL=schema.definition.d.ts.map