UNPKG

@nestia/core

Version:

Super-fast validation decorators of NestJS

50 lines 3.09 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpQuerifyProgrammer = void 0; const core_1 = require("@typia/core"); const typescript_1 = __importDefault(require("typescript")); var HttpQuerifyProgrammer; (function (HttpQuerifyProgrammer) { HttpQuerifyProgrammer.write = (props) => { // GET OBJECT TYPE const functor = new core_1.FunctionProgrammer(props.modulo.getText()); const storage = new core_1.MetadataCollection(); const result = core_1.MetadataFactory.analyze({ checker: props.context.checker, transformer: props.context.transformer, options: { escape: false, constant: true, absorb: true, validate: core_1.HttpQueryProgrammer.validate, }, type: props.type, components: storage, }); if (result.success === false) throw core_1.TransformerError.from({ code: functor.method, errors: result.errors, }); const object = result.data.objects[0]; return typescript_1.default.factory.createArrowFunction(undefined, undefined, [core_1.IdentifierFactory.parameter("input")], undefined, undefined, typescript_1.default.factory.createBlock([ ...functor.declare(), core_1.StatementFactory.constant({ name: "output", value: typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("URLSearchParams"), undefined, []), }), ...object.type.properties.map((p) => typescript_1.default.factory.createExpressionStatement(decode(p.key.constants[0].values[0].value)(p.value))), typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createIdentifier("output")), ], true)); }; const decode = (key) => (value) => !!value.arrays.length ? typescript_1.default.factory.createCallExpression(core_1.IdentifierFactory.access(core_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("input"), key), "forEach"), undefined, [ typescript_1.default.factory.createArrowFunction(undefined, undefined, [core_1.IdentifierFactory.parameter("elem")], undefined, undefined, append(key)(typescript_1.default.factory.createIdentifier("elem"))), ]) : append(key)(core_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("input"), key)); const append = (key) => (elem) => typescript_1.default.factory.createCallExpression(core_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("output"), "append"), undefined, [typescript_1.default.factory.createStringLiteral(key), elem]); })(HttpQuerifyProgrammer || (exports.HttpQuerifyProgrammer = HttpQuerifyProgrammer = {})); //# sourceMappingURL=HttpQuerifyProgrammer.js.map