@tsed/platform-log-middleware 8.0.0-alpha.5 → 8.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,17 +1,16 @@
1
1
  {
2
2
  "name": "@tsed/platform-log-middleware",
3
3
  "description": "Log request middleware module for Ts.ED Framework",
4
- "type": "commonjs",
5
- "version": "8.0.0-alpha.5",
4
+ "type": "module",
5
+ "version": "8.0.0-alpha.6",
6
6
  "source": "./src/index.ts",
7
- "main": "./lib/cjs/index.js",
7
+ "main": "./lib/esm/index.js",
8
8
  "module": "./lib/esm/index.js",
9
9
  "typings": "./lib/types/index.d.ts",
10
10
  "exports": {
11
11
  ".": {
12
12
  "types": "./lib/types/index.d.ts",
13
13
  "import": "./lib/esm/index.js",
14
- "require": "./lib/cjs/index.js",
15
14
  "default": "./lib/cjs/index.js"
16
15
  }
17
16
  },
@@ -26,19 +25,19 @@
26
25
  "tslib": "2.6.1"
27
26
  },
28
27
  "devDependencies": {
29
- "@tsed/barrels": "8.0.0-alpha.5",
30
- "@tsed/di": "8.0.0-alpha.5",
31
- "@tsed/platform-middlewares": "8.0.0-alpha.5",
32
- "@tsed/platform-params": "8.0.0-alpha.5",
33
- "@tsed/typescript": "8.0.0-alpha.5",
28
+ "@tsed/barrels": "8.0.0-alpha.6",
29
+ "@tsed/di": "8.0.0-alpha.6",
30
+ "@tsed/platform-middlewares": "8.0.0-alpha.6",
31
+ "@tsed/platform-params": "8.0.0-alpha.6",
32
+ "@tsed/typescript": "8.0.0-alpha.6",
34
33
  "eslint": "^8.57.0",
35
34
  "typescript": "4.9.5",
36
35
  "vitest": "2.0.4"
37
36
  },
38
37
  "peerDependencies": {
39
- "@tsed/di": "8.0.0-alpha.5",
40
- "@tsed/platform-middlewares": "8.0.0-alpha.5",
41
- "@tsed/platform-params": "8.0.0-alpha.5"
38
+ "@tsed/di": "8.0.0-alpha.6",
39
+ "@tsed/platform-middlewares": "8.0.0-alpha.6",
40
+ "@tsed/platform-params": "8.0.0-alpha.6"
42
41
  },
43
42
  "peerDependenciesMeta": {
44
43
  "@tsed/di": {
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=PlatformLogMiddlewareSettings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlatformLogMiddlewareSettings.js","sourceRoot":"","sources":["../../../src/domain/PlatformLogMiddlewareSettings.ts"],"names":[],"mappings":""}
package/lib/cjs/index.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- /**
5
- * @file Automatically generated by @tsed/barrels.
6
- */
7
- tslib_1.__exportStar(require("./domain/PlatformLogMiddlewareSettings.js"), exports);
8
- tslib_1.__exportStar(require("./middlewares/PlatformLogMiddleware.js"), exports);
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,oFAA0D;AAC1D,iFAAuD"}
@@ -1,166 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlatformLogMiddleware = void 0;
4
- const tslib_1 = require("tslib");
5
- const core_1 = require("@tsed/core");
6
- const di_1 = require("@tsed/di");
7
- const platform_middlewares_1 = require("@tsed/platform-middlewares");
8
- const platform_params_1 = require("@tsed/platform-params");
9
- /**
10
- * @middleware
11
- * @platform
12
- */
13
- let PlatformLogMiddleware = class PlatformLogMiddleware {
14
- get settings() {
15
- return this;
16
- }
17
- /**
18
- * Handle the request.
19
- */
20
- use(ctx) {
21
- this.configureRequest(ctx);
22
- this.onLogStart(ctx);
23
- ctx.response.onEnd(() => this.onLogEnd(ctx));
24
- }
25
- /**
26
- * Called when the `$onResponse` is called by Ts.ED (through Express.end).
27
- */
28
- onLogEnd(ctx) {
29
- const { logRequest, logEnd, logLevel } = this.settings;
30
- const started = ctx.logStarted;
31
- if (logEnd && started) {
32
- if (ctx.response.statusCode >= 400) {
33
- const error = ctx.error;
34
- ctx.logger.error({
35
- event: "request.end",
36
- status: ctx.response.statusCode,
37
- status_code: String(ctx.response.statusCode),
38
- state: "KO",
39
- ...(0, core_1.cleanObject)({
40
- error_name: error?.name || error?.code,
41
- error_message: error?.message,
42
- error_errors: error?.errors,
43
- error_stack: error?.stack,
44
- error_body: error?.body,
45
- error_headers: error?.headers
46
- })
47
- });
48
- }
49
- else {
50
- if (logLevel === "debug") {
51
- ctx.logger.debug({
52
- event: "request.end",
53
- status: ctx.response.statusCode,
54
- status_code: String(ctx.response.statusCode),
55
- data: ctx.data,
56
- state: "OK"
57
- });
58
- }
59
- else if (logRequest) {
60
- ctx.logger.info({
61
- event: "request.end",
62
- status: ctx.response.statusCode,
63
- status_code: String(ctx.response.statusCode),
64
- state: "OK"
65
- });
66
- }
67
- }
68
- }
69
- }
70
- /**
71
- * The separate onLogStart() function will allow developer to overwrite the initial request log.
72
- * @param ctx
73
- */
74
- onLogStart(ctx) {
75
- const { logRequest, logLevel, logStart } = this.settings;
76
- ctx.logStarted = true;
77
- if (logStart) {
78
- if (logLevel === "debug") {
79
- ctx.logger.debug({
80
- event: "request.start"
81
- });
82
- }
83
- else if (logRequest) {
84
- ctx.logger.info({
85
- event: "request.start"
86
- });
87
- }
88
- }
89
- }
90
- /**
91
- * Attach all information that will be necessary to log the request. Attach a new `request.log` object.
92
- */
93
- configureRequest(ctx) {
94
- ctx.logger.alterLog((obj, level, withRequest) => {
95
- switch (level) {
96
- case "info":
97
- return { ...this.minimalRequestPicker(ctx), ...obj };
98
- case "debug":
99
- return withRequest ? { ...this.requestToObject(ctx), ...obj } : obj;
100
- default:
101
- return { ...this.requestToObject(ctx), ...obj };
102
- }
103
- });
104
- }
105
- /**
106
- * Return complete request info.
107
- * @returns {Object}
108
- * @param ctx
109
- */
110
- requestToObject(ctx) {
111
- const { request } = ctx;
112
- return {
113
- method: request.method,
114
- url: request.url,
115
- route: request.route || request.url,
116
- headers: request.headers,
117
- body: request.body,
118
- query: request.query,
119
- params: request.params
120
- };
121
- }
122
- /**
123
- * Return a filtered request from global configuration.
124
- * @returns {Object}
125
- * @param ctx
126
- */
127
- minimalRequestPicker(ctx) {
128
- const { requestFields } = this;
129
- const info = this.requestToObject(ctx);
130
- return requestFields.reduce((acc, key) => {
131
- acc[key] = info[key];
132
- return acc;
133
- }, {});
134
- }
135
- };
136
- tslib_1.__decorate([
137
- (0, di_1.Constant)("logger.requestFields", ["reqId", "method", "url", "duration", "route"]),
138
- tslib_1.__metadata("design:type", Array)
139
- ], PlatformLogMiddleware.prototype, "requestFields", void 0);
140
- tslib_1.__decorate([
141
- (0, di_1.Constant)("logger.logRequest", true),
142
- tslib_1.__metadata("design:type", Boolean)
143
- ], PlatformLogMiddleware.prototype, "logRequest", void 0);
144
- tslib_1.__decorate([
145
- (0, di_1.Constant)("logger.logStart", true),
146
- tslib_1.__metadata("design:type", Boolean)
147
- ], PlatformLogMiddleware.prototype, "logStart", void 0);
148
- tslib_1.__decorate([
149
- (0, di_1.Constant)("logger.logEnd", true),
150
- tslib_1.__metadata("design:type", Boolean)
151
- ], PlatformLogMiddleware.prototype, "logEnd", void 0);
152
- tslib_1.__decorate([
153
- (0, di_1.Constant)("logger.level"),
154
- tslib_1.__metadata("design:type", String)
155
- ], PlatformLogMiddleware.prototype, "logLevel", void 0);
156
- tslib_1.__decorate([
157
- tslib_1.__param(0, (0, platform_params_1.Context)()),
158
- tslib_1.__metadata("design:type", Function),
159
- tslib_1.__metadata("design:paramtypes", [Object]),
160
- tslib_1.__metadata("design:returntype", void 0)
161
- ], PlatformLogMiddleware.prototype, "use", null);
162
- PlatformLogMiddleware = tslib_1.__decorate([
163
- (0, platform_middlewares_1.Middleware)()
164
- ], PlatformLogMiddleware);
165
- exports.PlatformLogMiddleware = PlatformLogMiddleware;
166
- //# sourceMappingURL=PlatformLogMiddleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlatformLogMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/PlatformLogMiddleware.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }
@@ -1,25 +0,0 @@
1
- export type LoggerRequestFields = ("reqId" | "method" | "url" | "headers" | "body" | "query" | "params" | "duration" | string)[];
2
- export interface PlatformLogMiddlewareSettings {
3
- /**
4
- * Fields displayed when a request is logged. Possible values: `reqId`, `method`, `url`, `headers`, `body`, `query`,`params`, `duration`.
5
- */
6
- requestFields?: LoggerRequestFields;
7
- /**
8
- * Log all incoming request. By default, is true and print the configured `logger.requestFields`.
9
- */
10
- logRequest?: boolean;
11
- /**
12
- * Log start of all incoming request. By default, is false
13
- */
14
- logStart?: boolean;
15
- /**
16
- * Log end of all incoming request. By default, is true
17
- */
18
- logEnd?: boolean;
19
- }
20
- declare global {
21
- namespace TsED {
22
- interface LoggerConfiguration extends Partial<PlatformLogMiddlewareSettings> {
23
- }
24
- }
25
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * @file Automatically generated by @tsed/barrels.
3
- */
4
- export * from "./domain/PlatformLogMiddlewareSettings.js";
5
- export * from "./middlewares/PlatformLogMiddleware.js";
@@ -1,44 +0,0 @@
1
- import { MiddlewareMethods } from "@tsed/platform-middlewares";
2
- import { Context } from "@tsed/platform-params";
3
- import type { LoggerRequestFields } from "../domain/PlatformLogMiddlewareSettings.js";
4
- /**
5
- * @middleware
6
- * @platform
7
- */
8
- export declare class PlatformLogMiddleware implements MiddlewareMethods {
9
- protected requestFields: LoggerRequestFields;
10
- protected logRequest: boolean;
11
- protected logStart: boolean;
12
- protected logEnd: boolean;
13
- protected logLevel: string;
14
- get settings(): this;
15
- /**
16
- * Handle the request.
17
- */
18
- use(ctx: Context): void;
19
- /**
20
- * Called when the `$onResponse` is called by Ts.ED (through Express.end).
21
- */
22
- onLogEnd(ctx: Context): void;
23
- /**
24
- * The separate onLogStart() function will allow developer to overwrite the initial request log.
25
- * @param ctx
26
- */
27
- protected onLogStart(ctx: Context): void;
28
- /**
29
- * Attach all information that will be necessary to log the request. Attach a new `request.log` object.
30
- */
31
- protected configureRequest(ctx: Context): void;
32
- /**
33
- * Return complete request info.
34
- * @returns {Object}
35
- * @param ctx
36
- */
37
- protected requestToObject(ctx: Context): any;
38
- /**
39
- * Return a filtered request from global configuration.
40
- * @returns {Object}
41
- * @param ctx
42
- */
43
- protected minimalRequestPicker(ctx: Context): any;
44
- }