@nestjs-mod/common
Version:
A collection of utilities for unifying NestJS applications and modules
74 lines • 3.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Request = void 0;
exports.getRequestFromExecutionContext = getRequestFromExecutionContext;
const common_1 = require("@nestjs/common");
const prepare_headers_1 = require("./prepare-headers");
function getRequestFromExecutionContext(ctx) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let req;
try {
const contextType = ctx.getType();
switch (contextType) {
case 'rpc':
req = {
...(ctx.switchToRpc ? ctx.switchToRpc().getContext() : {}),
headers: {
// nats
...(ctx.switchToRpc && ctx.switchToRpc().getContext && ctx.switchToRpc().getContext().getHeaders
? ctx.switchToRpc().getContext().getHeaders()
: {}),
// mqtt
...(ctx.switchToRpc &&
ctx.switchToRpc().getContext &&
ctx.switchToRpc().getContext().getPacket &&
ctx.switchToRpc().getContext().getPacket().properties
? ctx.switchToRpc().getContext().getPacket().properties
: {}),
// rmq
...(ctx.switchToRpc &&
ctx.switchToRpc().getContext &&
ctx.switchToRpc().getContext().getMessage &&
ctx.switchToRpc().getContext().getMessage().properties?.headers
? ctx.switchToRpc().getContext().getMessage().properties.headers
: {}),
// kafka
...(ctx.switchToRpc &&
ctx.switchToRpc().getContext &&
ctx.switchToRpc().getContext().getMessage &&
ctx.switchToRpc().getContext().getMessage().headers
? ctx.switchToRpc().getContext().getMessage().headers
: {}),
},
};
break;
case 'http':
req = ctx.switchToHttp().getRequest();
break;
case 'graphql':
[, , req] = ctx.getArgs();
break;
case 'ws':
req = ctx.switchToWs().getClient();
break;
default:
req = ctx;
break;
}
}
catch (err) {
req = ctx;
}
if (req.headers) {
req.headers = (0, prepare_headers_1.prepareHeaders)(req.headers);
}
const result = req?.connection?.parser?.incoming || req?.req?.extra?.request || req?.req || req;
if (result.headers) {
result.headers = (0, prepare_headers_1.prepareHeaders)(result.headers);
}
return result;
}
exports.Request = (0, common_1.createParamDecorator)((data, ctx) => {
return getRequestFromExecutionContext(ctx);
});
//# sourceMappingURL=get-request-from-execution-context.js.map