UNPKG

typedconverter

Version:

Convert object into classes match with TypeScript type annotation

42 lines (41 loc) 1.87 kB
import { Opt, val } from "./decorators"; import { VisitorExtension, VisitorInvocation } from "./invocation"; import { Class } from "./types"; import { partial, PartialValidator, Validator, validatorVisitor, ValidatorDecorator, RequiredValidator } from "./validation"; import { Result, ResultMessages } from "./visitor"; interface Option<T = any> { /** * Expected type */ type: T; /** * List of visitor extension to extend TypedConverter internal process */ visitors?: VisitorExtension[]; /** * Top decorators of the type */ decorators?: any[]; /** * Root path */ path?: string; /** * Guess single value as array element if expected type is array. Default false */ guessArrayElement?: boolean; } /** * Convert value into type specified on configuration. * @param value * @param opt */ declare function convert<T = any>(value: any, option: Option<T> | T): T extends Class<infer R>[] ? Result<R[]> : T extends Class<infer R> ? Result<R> : Result<any>; /** * Create type converter with specific configuration * @param option */ export default function createConverter<T = any>(option: Option<T> | T): (value: any) => T extends Class<infer R>[] ? Result<R[]> : T extends Class<infer R_1> ? Result<R_1> : Result<any>; declare function createValidator<T>(option: T | Option<T>): (value: any) => T extends Class<infer R>[] ? Result<R[]> : T extends Class<infer R_1> ? Result<R_1> : Result<any>; declare function validate<T>(value: any, option: Option<T> | T): T extends Class<infer R>[] ? Result<R[]> : T extends Class<infer R_1> ? Result<R_1> : Result<any>; export { convert, Option, VisitorExtension, VisitorInvocation, Result, ResultMessages, partial, validatorVisitor, Validator, PartialValidator, val, Opt, validate, createValidator, ValidatorDecorator, RequiredValidator };