UNPKG

@tunnel-cast/nestjs

Version:

## About This is a Tunnel-Cast - NestJS integration package, wrap the `cast` application into the `NestJS` building blocks.

43 lines 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CastParameterDecorator = exports.CastParameterDecoratorFactory = void 0; const common_1 = require("@nestjs/common"); const constants_1 = require("../constants"); const extract_value_1 = require("../utils/extract-value"); const pipes_1 = require("../pipes"); function CastParameterDecoratorFactory(extractionPath, payloadType) { return (model) => { const decorator = exports.CastParameterDecorator(extractionPath, payloadType); if (model != undefined) { return decorator(pipes_1.CastPipeFactory(model)); } else { return decorator(pipes_1.CastPipe); } }; } exports.CastParameterDecoratorFactory = CastParameterDecoratorFactory; exports.CastParameterDecorator = (extractionPath, payloadType) => { const enhancers = payloadType ? [assignHttpDataTypeMetadataEnhancer(payloadType)] : []; const decorator = common_1.createParamDecorator((data, ctx) => { const target = { req: ctx.switchToHttp().getRequest(), res: ctx.switchToHttp().getResponse() }; const extractedValue = extract_value_1.extractValue(target, extractionPath); return { extractedValue, path: extractionPath }; }, enhancers); return decorator; }; function assignHttpDataTypeMetadataEnhancer(payloadType) { return function (target, key, index) { if (Reflect.hasMetadata(constants_1.CAST_HTTP_PAYLOAD_TYPE_LIST, target, key)) { const payloadTypeList = Reflect.getMetadata(constants_1.CAST_HTTP_PAYLOAD_TYPE_LIST, target, key); payloadTypeList.push({ payloadType, argumentIndex: index }); } else { Reflect.defineMetadata(constants_1.CAST_HTTP_PAYLOAD_TYPE_LIST, [{ payloadType, argumentIndex: index }], target, key); } }; } //# sourceMappingURL=cast-parameter-decorator.factory.js.map