UNPKG

typia

Version:

Superfast runtime validators with only one line

42 lines (36 loc) 1.17 kB
import ts from "typescript"; import { Metadata } from "../../../schemas/metadata/Metadata"; import { MetadataAlias } from "../../../schemas/metadata/MetadataAlias"; import { ArrayUtil } from "../../../utils/ArrayUtil"; import { MetadataCollection } from "../../MetadataCollection"; import { MetadataFactory } from "../../MetadataFactory"; import { explore_metadata } from "./explore_metadata"; export const emplace_metadata_alias = (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (errors: MetadataFactory.IError[]) => ( type: ts.Type, nullable: boolean, explore: MetadataFactory.IExplore, ): MetadataAlias => { // CHECK EXISTENCE const [alias, newbie, closure] = collection.emplaceAlias( checker, type, type.aliasSymbol!, ); ArrayUtil.add(alias.nullables, nullable); if (newbie === false) return alias; // CONSTRUCT VALUE TYPE const value: Metadata = explore_metadata(checker)(options)(collection)( errors, )(type, { ...explore, escaped: false, aliased: true, }); closure(value); return alias; };