UNPKG

typia

Version:

Superfast runtime validators with only one line

37 lines (36 loc) 1.61 kB
import ts from "typescript"; import { Metadata } from "../schemas/metadata/Metadata"; import { MetadataAlias } from "../schemas/metadata/MetadataAlias"; import { MetadataArrayType } from "../schemas/metadata/MetadataArrayType"; import { MetadataObject } from "../schemas/metadata/MetadataObject"; import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType"; import { ValidationPipe } from "../typings/ValidationPipe"; import { MetadataCollection } from "./MetadataCollection"; export declare namespace MetadataFactory { type Validator = (meta: Metadata, explore: IExplore) => string[]; interface IOptions { escape: boolean; constant: boolean; absorb: boolean; functional?: boolean; validate?: Validator; onError?: (node: ts.Node | undefined, message: string) => void; } interface IExplore { top: boolean; object: MetadataObject | null; property: string | object | null; nested: null | MetadataAlias | MetadataArrayType | MetadataTupleType; parameter: string | null; output: boolean; escaped: boolean; aliased: boolean; } interface IError { name: string; explore: IExplore; messages: string[]; } const analyze: (checker: ts.TypeChecker, context?: ts.TransformationContext) => (options: IOptions) => (collection: MetadataCollection) => (type: ts.Type | null) => ValidationPipe<Metadata, IError>; const validate: (context?: ts.TransformationContext) => (options: IOptions) => (functor: Validator) => (meta: Metadata) => IError[]; }