import { IModelType, IModelTypeItem, IModelTypeConstraint, IModelTypeConstrainable, IModelTypeConstraintFactory, IModelTypeRegistry } from "./model.api"; import { ModelConstraints, ModelTypeConstraintPossibleValues } from "./model.base"; import { ModelTypeNumber } from "./model.number"; import { ModelTypeString } from "./model.string"; import { ModelTypeBool } from "./model.bool"; import { ModelTypeArray } from "./model.array"; export interface IConstraintFactory { [k: string]: (o: any) => IModelTypeConstraint; } export interface IConstraintFactories { numbers: IConstraintFactory; strings: IConstraintFactory; dates: IConstraintFactory; booleans: IConstraintFactory; objects: IConstraintFactory; universal: IConstraintFactory; } export interface IModelSchemaParserDefaults { numbers?: { minimum?: number; maximum?: number; minimumExclusive?: boolean; maximumExclusive?: boolean; multipleOf?: number; }; strings?: { minLength?: number; maxLength?: number; pattern?: String | RegExp; }; dates?: { minimum?: Date; maximum?: Date; }; booleans?: {}; objects?: {}; universal?: {}; } export declare class ModelSchemaParser implements IModelTypeRegistry { constructor(constraintFactory?: IModelTypeConstraintFactory, defaultValues?: IModelSchemaParserDefaults); addSchemaFromURL(url: string): Promise; /** * Parses a schema object and adds the resulting model type to the internal * registry. * * @param name of the type * @param schemaObject schema definition / description of the type * @param defaults can be used to override defaults */ addSchemaObject(name: string, schemaObject: any, defaults?: IModelSchemaParserDefaults): IModelType; parseSchemaObject(schemaObject: any, nameOrId?: string): IModelType; parseSchemaConstraintEnum(schemaObject: any): ModelTypeConstraintPossibleValues; parseSchemaObjectTypeString(schemaObject: any, name?: string): ModelTypeString; parseSchemaObjectTypeNumber(schemaObject: any, name?: string, ...constraintArgs: IModelTypeConstraint[]): ModelTypeNumber; parseSchemaObjectTypeBoolean(schemaObject: any, name?: string): ModelTypeBool; parseSchemaObjectTypeObject(schemaObject: any, name?: string): IModelTypeConstrainable; parseSchemaObjectTypeArray(schemaObject: any, name?: string): ModelTypeArray; parseSchemaObjectUntyped(schemaObject: any, name?: string): IModelTypeConstrainable; _parseConstraints(schemaObject: any, factories: IConstraintFactory[]): ModelConstraints; type(name: string): IModelType; itemType(name: string): IModelTypeItem; addType(type: IModelType): void; getRegisteredNames(): string[]; private _ensureRefProcessor; private _constraintFactory; private _registry; private _refProcessor; private _defaults; }