nestjs-chainlist
Version:
chainlist module for Nest framework (node.js)
69 lines • 3.1 kB
JavaScript
;
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