UNPKG

@sinclair/typebox

Version:

Json Schema Type Builder with Static Type Resolution for TypeScript

30 lines (28 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Parse = Parse; const index_1 = require("../transform/index"); const assert_1 = require("../assert/assert"); const default_1 = require("../default/default"); const convert_1 = require("../convert/convert"); const clean_1 = require("../clean/clean"); const index_2 = require("../clone/index"); // prettier-ignore const ParseReducer = [ (_schema, _references, value) => (0, index_2.Clone)(value), (schema, references, value) => (0, default_1.Default)(schema, references, value), (schema, references, value) => (0, clean_1.Clean)(schema, references, value), (schema, references, value) => (0, convert_1.Convert)(schema, references, value), (schema, references, value) => { (0, assert_1.Assert)(schema, references, value); return value; }, (schema, references, value) => ((0, index_1.HasTransform)(schema, references) ? (0, index_1.TransformDecode)(schema, references, value) : value), ]; // ------------------------------------------------------------------ // ParseValue // ------------------------------------------------------------------ function ParseValue(schema, references, value) { return ParseReducer.reduce((value, reducer) => reducer(schema, references, value), value); } /** Parses a value or throws an `AssertError` if invalid. */ function Parse(...args) { return args.length === 3 ? ParseValue(args[0], args[1], args[2]) : ParseValue(args[0], [], args[1]); }