@nestia/core
Version:
Super-fast validation decorators of NestJS
50 lines • 3.09 kB
JavaScript
;
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