UNPKG

@nestia/core

Version:

Super-fast validation decorators of NestJS

58 lines 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PlainBodyProgrammer = void 0; const core_1 = require("@typia/core"); var PlainBodyProgrammer; (function (PlainBodyProgrammer) { PlainBodyProgrammer.generate = (props) => { const result = core_1.MetadataFactory.analyze({ checker: props.context.checker, transformer: props.context.transformer, options: { escape: false, constant: true, absorb: true, validate: ({ metadata }) => validate(metadata), }, components: new core_1.MetadataCollection(), type: props.type, }); if (result.success === false) throw core_1.TransformerError.from({ code: "nestia.core.TypedParam", errors: result.errors, }); return core_1.AssertProgrammer.write({ context: Object.assign(Object.assign({}, props.context), { options: { numeric: false, finite: false, functional: false, } }), modulo: props.modulo, config: { equals: false, guard: false, }, type: props.type, name: undefined, }); }; })(PlainBodyProgrammer || (exports.PlainBodyProgrammer = PlainBodyProgrammer = {})); const validate = (metadata) => { const errors = []; const insert = (msg) => errors.push(msg); const expected = (metadata.atomics.some((a) => a.type === "string") ? 1 : 0) + metadata.templates.length + metadata.constants .filter((c) => c.type === "string") .map((c) => c.values.length) .reduce((a, b) => a + b, 0); if (expected === 0 || expected !== metadata.size()) insert(`only string type is allowed`); if (metadata.nullable === true) insert(`do not allow nullable type`); else if (metadata.any === true) insert(`do not allow any type`); return errors; }; //# sourceMappingURL=PlainBodyProgrammer.js.map