@sergtyapkin/models-validator
Version:
 
39 lines (38 loc) • 1.73 kB
TypeScript
type SimpleType = StringConstructor | NumberConstructor | BigIntConstructor | SymbolConstructor | BooleanConstructor;
type ConstructableType = {
new (any?: any): any;
};
type SetType = Set<any>;
type ArrayType = Array<any>;
type ComplexType = ConstructableType | SetType | ArrayType;
type _DefaultLongTypeDeclaringFields = {
type: TypeDeclaring;
from?: string;
optional?: boolean;
default?: any;
};
type ArrayLongTypeDeclaring = {
type: ArrayConstructor;
item: TypeDeclaring;
} & _DefaultLongTypeDeclaringFields;
type ObjectLongTypeDeclaring = {
type: ObjectConstructor;
fields: {};
} & _DefaultLongTypeDeclaringFields;
type SimpleLongTypeDeclaring = {
type: TypeDeclaring;
} & _DefaultLongTypeDeclaringFields;
type LongTypeDeclaring = SimpleLongTypeDeclaring | ArrayLongTypeDeclaring | ObjectLongTypeDeclaring;
type ShortTypeDeclaring = SimpleType | ComplexType;
type TypeDeclaring = LongTypeDeclaring | ShortTypeDeclaring;
export interface Model {
readonly [index: string]: TypeDeclaring;
}
export declare function validateModel(model: Model, data: object | string): object;
export declare function reverseValidateModel(model: Model, data: object): object;
export declare function generateSnakeCaseFromCamelCaseModel(model: Model): Model;
export declare function generateCamelCaseFromSnakeCaseModel(model: Model): Model;
export declare function ArrayType(type: TypeDeclaring | Model, optional?: boolean, defaultValue?: any): ArrayLongTypeDeclaring;
export declare function ObjectType(fields: Model, optional?: boolean, defaultValue?: any): ObjectLongTypeDeclaring;
export declare function Type(type: TypeDeclaring, optional?: boolean, defaultValue?: any): LongTypeDeclaring;
export {};