UNPKG

nestjs-chainlist

Version:

chainlist module for Nest framework (node.js)

69 lines 3.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ChainParam = void 0; const constants_1 = require("@nestjs/common/constants"); const lodash_get_1 = __importDefault(require("lodash.get")); const chains_pipe_1 = require("./chains.pipe"); const util_1 = require("./util"); function createOptions(paramOrOptions, listOrValuesOrOptions, options) { let _options = {}; if ((0, util_1.isNil)(options) && typeof (paramOrOptions) === 'object') { _options = Object.assign({}, paramOrOptions); } else if ((0, util_1.isNil)(options) && typeof (listOrValuesOrOptions) === 'object' && !Array.isArray(listOrValuesOrOptions)) { _options = Object.assign({}, listOrValuesOrOptions); } else { _options = Object.assign({}, options !== null && options !== void 0 ? options : {}); } if (typeof (paramOrOptions) === 'string') { _options.param = paramOrOptions; } if (Array.isArray(listOrValuesOrOptions)) { _options.supportChains = listOrValuesOrOptions; } else if (typeof (listOrValuesOrOptions) === 'string') { _options.supportChainList = listOrValuesOrOptions; } return _options; } function ChainParam(paramOrOptions, listOrValuesOrOptions, options) { var _a; options = createOptions(paramOrOptions, listOrValuesOrOptions, options); if (!options.param) { throw new TypeError('`param` is required'); } const pipes = [chains_pipe_1.ChainsPipe, ...((_a = options.pipes) !== null && _a !== void 0 ? _a : [])]; return (target, key, index) => { const factory = function (_options, ctx) { const request = ctx.switchToHttp().getRequest(); if (_options.paramtype) return (0, lodash_get_1.default)((0, lodash_get_1.default)(request, _options.paramtype), _options.param); if (request.method === 'GET') return (0, lodash_get_1.default)(request.query, _options.param); else return (0, lodash_get_1.default)(request.body, _options.param); }; const args = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, target.constructor, key) || {}; Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, (0, util_1.assignCustomParameterMetadata)(args, options.paramtype, index, factory, options, pipes), target.constructor, key); }; } exports.ChainParam = ChainParam; [ ['Body', 'body'], ['Query', 'query'], ['Param', 'params'], ['Header', 'headers'], ].forEach(([name, paramtype]) => { const fn = function (paramOrOptions, listOrValuesOrOptions, options) { const _options = createOptions(paramOrOptions, listOrValuesOrOptions, options); _options.paramtype = paramtype; return ChainParam(_options); }; Object.defineProperty(fn, "name", { value: `${name}Chain` }); exports[`${name}Chain`] = fn; }); //# sourceMappingURL=route-params.decorator.js.map