tynder
Version:
TypeScript friendly Data validator for JavaScript.
68 lines (67 loc) • 2.46 kB
TypeScript
import { PrimitiveTypeAssertionConstraints, RepeatedAssertionConstraints, ErrorMessages, TypeAssertion } from './types/tynder-schema-types';
export * from './types/tynder-schema-types';
export declare type RecursivePartial<T> = {
[P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object ? RecursivePartial<T[P]> : T[P];
};
export declare type TypeAssertionErrorMessageConstraints = Partial<Omit<PrimitiveTypeAssertionConstraints & RepeatedAssertionConstraints, 'pattern'> & {
pattern: string;
}>;
export interface TypeAssertionErrorMessage {
code: string;
message: string;
dataPath: string;
constraints: TypeAssertionErrorMessageConstraints;
value?: any;
}
export interface Stereotype {
tryParse: (value: any) => {
value: any;
} | null;
evaluateFormula: (valueOrFormula: any) => any;
compare: (a: any, b: any) => number;
doCast: boolean;
}
export declare type CustomConstraint = (data: any, args: any) => boolean;
export interface CustomConstraintInfo {
kinds?: Array<TypeAssertion['kind']>;
check: CustomConstraint;
}
export interface ValidationContext {
checkAll?: boolean;
noAdditionalProps?: boolean;
errorMessages?: ErrorMessages;
mapper?: (value: any, ty: TypeAssertion) => any;
errors: TypeAssertionErrorMessage[];
typeStack: Array<// For error reporting (keyword substitutions)
// For error reporting (keyword substitutions)
TypeAssertion | [
TypeAssertion,
number | string | undefined
]>;
recordTypeFieldValidated?: boolean;
schema?: TypeAssertionMap;
stereotypes?: Map<string, Stereotype>;
customConstraints?: Map<string, CustomConstraintInfo>;
}
export interface TypeAssertionSetValue {
ty: TypeAssertion;
exported: boolean;
isDeclare: boolean;
resolved: boolean;
}
export declare type TypeAssertionMap = Map<string, TypeAssertionSetValue>;
export interface SymbolResolverOperators {
[propName: string]: (...args: Array<TypeAssertion | string>) => TypeAssertion;
}
export interface ResolveSymbolOptions {
isDeserialization?: boolean;
}
export interface SymbolResolverContext extends ResolveSymbolOptions {
nestLevel: number;
symlinkStack: string[];
operators?: SymbolResolverOperators;
}
export interface CodegenContext {
nestLevel: number;
schema?: TypeAssertionMap;
}