@tsed/common
Version:
A TypeScript Framework on top of Express
42 lines • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createContext = void 0;
const PlatformContext_1 = require("../domain/PlatformContext");
const PlatformRequest_1 = require("../services/PlatformRequest");
const PlatformResponse_1 = require("../services/PlatformResponse");
const uuidv4 = require("uuid").v4;
const defaultReqIdBuilder = () => uuidv4().replace(/-/gi, "");
/**
* Create the TsED context to wrap request, response, injector, etc...
* @param injector
* @param req
* @param res
* @ignore
*/
async function createContext(injector, req, res) {
const { level, ignoreUrlPatterns, maxStackSize, reqIdBuilder = defaultReqIdBuilder } = injector.settings.logger;
const id = reqIdBuilder();
const request = PlatformRequest_1.PlatformRequest.create(injector, req);
const response = PlatformResponse_1.PlatformResponse.create(injector, res);
const ctx = new PlatformContext_1.PlatformContext({
id,
logger: injector.logger,
url: request.url,
ignoreUrlPatterns,
level,
maxStackSize,
injector,
response,
request
});
req.$ctx = ctx;
response.onEnd(async () => {
await ctx.emit("$onResponse", ctx);
await ctx.destroy();
delete req.$ctx;
});
await ctx.emit("$onRequest", ctx);
return ctx;
}
exports.createContext = createContext;
//# sourceMappingURL=createContext.js.map