UNPKG

@nestia/core

Version:

Super-fast validation decorators of NestJS

56 lines 3.76 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 typescript_1 = __importDefault(require("typescript")); const IdentifierFactory_1 = require("typia/lib/factories/IdentifierFactory"); const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection"); const MetadataFactory_1 = require("typia/lib/factories/MetadataFactory"); const StatementFactory_1 = require("typia/lib/factories/StatementFactory"); const FunctionProgrammer_1 = require("typia/lib/programmers/helpers/FunctionProgrammer"); const HttpQueryProgrammer_1 = require("typia/lib/programmers/http/HttpQueryProgrammer"); const TransformerError_1 = require("typia/lib/transformers/TransformerError"); var HttpQuerifyProgrammer; (function (HttpQuerifyProgrammer) { HttpQuerifyProgrammer.write = (props) => { // GET OBJECT TYPE const functor = new FunctionProgrammer_1.FunctionProgrammer(props.modulo.getText()); const collection = new MetadataCollection_1.MetadataCollection(); const result = MetadataFactory_1.MetadataFactory.analyze({ checker: props.context.checker, transformer: props.context.transformer, options: { escape: false, constant: true, absorb: true, validate: HttpQueryProgrammer_1.HttpQueryProgrammer.validate, }, type: props.type, collection, }); if (result.success === false) throw TransformerError_1.TransformerError.from({ code: functor.method, errors: result.errors, }); const object = result.data.objects[0]; return typescript_1.default.factory.createArrowFunction(undefined, undefined, [IdentifierFactory_1.IdentifierFactory.parameter("input")], undefined, undefined, typescript_1.default.factory.createBlock([ ...functor.declare(), StatementFactory_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(IdentifierFactory_1.IdentifierFactory.access(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("input"), key), "forEach"), undefined, [ typescript_1.default.factory.createArrowFunction(undefined, undefined, [IdentifierFactory_1.IdentifierFactory.parameter("elem")], undefined, undefined, append(key)(typescript_1.default.factory.createIdentifier("elem"))), ]) : append(key)(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("input"), key)); const append = (key) => (elem) => typescript_1.default.factory.createCallExpression(IdentifierFactory_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