@iamnnort/nestjs-logger 1.1.9 → 1.1.11
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/dist/index.js +81 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +82 -32
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -3,6 +3,8 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
8
10
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,14 +18,9 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
18
20
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (decorator = decorators[i])
|
|
23
|
-
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
24
|
-
if (kind && result)
|
|
25
|
-
__defProp(target, key, result);
|
|
26
|
-
return result;
|
|
21
|
+
var __publicField = (obj, key, value) => {
|
|
22
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
23
|
+
return value;
|
|
27
24
|
};
|
|
28
25
|
|
|
29
26
|
// src/index.ts
|
|
@@ -42,20 +39,24 @@ var import_common3 = require("@nestjs/common");
|
|
|
42
39
|
var import_common = require("@nestjs/common");
|
|
43
40
|
|
|
44
41
|
// src/types.ts
|
|
45
|
-
var LoggerContexts
|
|
42
|
+
var LoggerContexts;
|
|
43
|
+
(function(LoggerContexts2) {
|
|
46
44
|
LoggerContexts2["SYSTEM"] = "System";
|
|
47
45
|
LoggerContexts2["INSTANCE_LOADER"] = "InstanceLoader";
|
|
48
46
|
LoggerContexts2["ROUTER_EXPLORER"] = "RouterExplorer";
|
|
49
47
|
LoggerContexts2["ROUTES_RESOLVER"] = "RoutesResolver";
|
|
50
48
|
LoggerContexts2["NEST_FACTORY"] = "NestFactory";
|
|
51
49
|
LoggerContexts2["NEST_APPLICATION"] = "NestApplication";
|
|
52
|
-
|
|
53
|
-
})(LoggerContexts || {});
|
|
50
|
+
})(LoggerContexts || (LoggerContexts = {}));
|
|
54
51
|
|
|
55
52
|
// src/message/builder.ts
|
|
56
53
|
var import_qs = require("qs");
|
|
57
|
-
var
|
|
54
|
+
var _MessageBuilder = class _MessageBuilder {
|
|
58
55
|
constructor() {
|
|
56
|
+
__publicField(this, "printQueue");
|
|
57
|
+
__publicField(this, "request");
|
|
58
|
+
__publicField(this, "response");
|
|
59
|
+
__publicField(this, "error");
|
|
59
60
|
this.printQueue = [];
|
|
60
61
|
}
|
|
61
62
|
setRequest(request) {
|
|
@@ -80,7 +81,10 @@ var MessageBuilder = class {
|
|
|
80
81
|
if (url) {
|
|
81
82
|
if (params) {
|
|
82
83
|
delete params["0"];
|
|
83
|
-
this.printQueue.push([
|
|
84
|
+
this.printQueue.push([
|
|
85
|
+
url,
|
|
86
|
+
(0, import_qs.stringify)(params)
|
|
87
|
+
].filter((_) => _).join("?"));
|
|
84
88
|
} else {
|
|
85
89
|
this.printQueue.push(url);
|
|
86
90
|
}
|
|
@@ -137,29 +141,42 @@ var MessageBuilder = class {
|
|
|
137
141
|
return this.printQueue.join(" ");
|
|
138
142
|
}
|
|
139
143
|
};
|
|
144
|
+
__name(_MessageBuilder, "MessageBuilder");
|
|
145
|
+
var MessageBuilder = _MessageBuilder;
|
|
140
146
|
|
|
141
147
|
// src/service.ts
|
|
142
|
-
|
|
148
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
149
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
150
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
151
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
152
|
+
else
|
|
153
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
154
|
+
if (d = decorators[i])
|
|
155
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
156
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
157
|
+
}
|
|
158
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
159
|
+
var _LoggerService = class _LoggerService extends import_common.ConsoleLogger {
|
|
143
160
|
setContext(context) {
|
|
144
|
-
super.setContext(context ||
|
|
161
|
+
super.setContext(context || LoggerContexts.SYSTEM);
|
|
145
162
|
}
|
|
146
163
|
log(message, context) {
|
|
147
164
|
const ctx = context || this.context || "";
|
|
148
165
|
const ctxBlacklist = [
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
166
|
+
LoggerContexts.INSTANCE_LOADER,
|
|
167
|
+
LoggerContexts.ROUTER_EXPLORER,
|
|
168
|
+
LoggerContexts.ROUTES_RESOLVER
|
|
152
169
|
];
|
|
153
170
|
if (ctxBlacklist.includes(ctx)) {
|
|
154
171
|
return;
|
|
155
172
|
}
|
|
156
173
|
const ctxMessageMap = {
|
|
157
|
-
[
|
|
158
|
-
[
|
|
174
|
+
[LoggerContexts.NEST_FACTORY]: "Application is starting...",
|
|
175
|
+
[LoggerContexts.NEST_APPLICATION]: "Application started."
|
|
159
176
|
};
|
|
160
177
|
const ctxMessage = ctxMessageMap[ctx];
|
|
161
178
|
if (ctxMessage) {
|
|
162
|
-
return console.log(`[${
|
|
179
|
+
return console.log(`[${LoggerContexts.SYSTEM}] ${ctxMessage}`);
|
|
163
180
|
}
|
|
164
181
|
return console.log(`[${ctx}] ${message}`);
|
|
165
182
|
}
|
|
@@ -179,16 +196,31 @@ var LoggerService = class extends import_common.ConsoleLogger {
|
|
|
179
196
|
return this.log(message);
|
|
180
197
|
}
|
|
181
198
|
};
|
|
182
|
-
LoggerService
|
|
183
|
-
|
|
199
|
+
__name(_LoggerService, "LoggerService");
|
|
200
|
+
var LoggerService = _LoggerService;
|
|
201
|
+
LoggerService = _ts_decorate([
|
|
202
|
+
(0, import_common.Injectable)({
|
|
203
|
+
scope: import_common.Scope.REQUEST
|
|
204
|
+
})
|
|
184
205
|
], LoggerService);
|
|
185
206
|
|
|
186
207
|
// src/middleware.ts
|
|
187
208
|
var import_common2 = require("@nestjs/common");
|
|
188
|
-
|
|
209
|
+
function _ts_decorate2(decorators, target, key, desc) {
|
|
210
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
211
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
212
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
213
|
+
else
|
|
214
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
215
|
+
if (d = decorators[i])
|
|
216
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
217
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
218
|
+
}
|
|
219
|
+
__name(_ts_decorate2, "_ts_decorate");
|
|
220
|
+
var _LoggerMiddleware = class _LoggerMiddleware {
|
|
189
221
|
use(request, response, next) {
|
|
190
222
|
const loggerService = new LoggerService();
|
|
191
|
-
loggerService.setContext(
|
|
223
|
+
loggerService.setContext(LoggerContexts.SYSTEM);
|
|
192
224
|
loggerService.logRequest(request);
|
|
193
225
|
response.on("finish", () => {
|
|
194
226
|
loggerService.logResponse(response);
|
|
@@ -196,21 +228,40 @@ var LoggerMiddleware = class {
|
|
|
196
228
|
return next();
|
|
197
229
|
}
|
|
198
230
|
};
|
|
199
|
-
LoggerMiddleware
|
|
231
|
+
__name(_LoggerMiddleware, "LoggerMiddleware");
|
|
232
|
+
var LoggerMiddleware = _LoggerMiddleware;
|
|
233
|
+
LoggerMiddleware = _ts_decorate2([
|
|
200
234
|
(0, import_common2.Injectable)()
|
|
201
235
|
], LoggerMiddleware);
|
|
202
236
|
|
|
203
237
|
// src/module.ts
|
|
204
|
-
|
|
238
|
+
function _ts_decorate3(decorators, target, key, desc) {
|
|
239
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
240
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
241
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
242
|
+
else
|
|
243
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
244
|
+
if (d = decorators[i])
|
|
245
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
246
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
247
|
+
}
|
|
248
|
+
__name(_ts_decorate3, "_ts_decorate");
|
|
249
|
+
var _LoggerModule = class _LoggerModule {
|
|
205
250
|
configure(consumer) {
|
|
206
251
|
consumer.apply(LoggerMiddleware).forRoutes("*");
|
|
207
252
|
}
|
|
208
253
|
};
|
|
209
|
-
LoggerModule
|
|
254
|
+
__name(_LoggerModule, "LoggerModule");
|
|
255
|
+
var LoggerModule = _LoggerModule;
|
|
256
|
+
LoggerModule = _ts_decorate3([
|
|
210
257
|
(0, import_common3.Global)(),
|
|
211
258
|
(0, import_common3.Module)({
|
|
212
|
-
providers: [
|
|
213
|
-
|
|
259
|
+
providers: [
|
|
260
|
+
LoggerService
|
|
261
|
+
],
|
|
262
|
+
exports: [
|
|
263
|
+
LoggerService
|
|
264
|
+
]
|
|
214
265
|
})
|
|
215
266
|
], LoggerModule);
|
|
216
267
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/module.ts","../src/service.ts","../src/types.ts","../src/message/builder.ts","../src/middleware.ts"],"sourcesContent":["export * from './module';\nexport * from './service';\nexport * from './types';\n","import { Global, MiddlewareConsumer, Module, NestModule } from '@nestjs/common';\nimport { LoggerService } from './service';\nimport { LoggerMiddleware } from './middleware';\n\n@Global()\n@Module({\n providers: [LoggerService],\n exports: [LoggerService],\n})\nexport class LoggerModule implements NestModule {\n configure(consumer: MiddlewareConsumer) {\n consumer.apply(LoggerMiddleware).forRoutes('*');\n }\n}\n","import { ConsoleLogger, Injectable } from '@nestjs/common';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { LoggerContexts } from './types';\nimport { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\n\n@Injectable()\nexport class LoggerService extends ConsoleLogger {\n setContext(context?: string) {\n super.setContext(context || LoggerContexts.SYSTEM);\n }\n\n log(message: string, context?: string) {\n const ctx = context || this.context || '';\n\n const ctxBlacklist: string[] = [\n LoggerContexts.INSTANCE_LOADER,\n LoggerContexts.ROUTER_EXPLORER,\n LoggerContexts.ROUTES_RESOLVER,\n ];\n\n if (ctxBlacklist.includes(ctx)) {\n return;\n }\n\n const ctxMessageMap: Record<string, string> = {\n [LoggerContexts.NEST_FACTORY]: 'Application is starting...',\n [LoggerContexts.NEST_APPLICATION]: 'Application started.',\n };\n\n const ctxMessage = ctxMessageMap[ctx];\n\n if (ctxMessage) {\n return console.log(`[${LoggerContexts.SYSTEM}] ${ctxMessage}`);\n }\n\n return console.log(`[${ctx}] ${message}`);\n }\n\n logRequest(request: InternalAxiosRequestConfig & Request) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setRequest(request)\n .makeType('Request')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .build();\n\n return this.log(message);\n }\n\n logResponse(response: AxiosResponse & Response) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setResponse(response)\n .makeType('Response')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus()\n .makeResponseData()\n .build();\n\n return this.log(message);\n }\n\n logRequestError(error: AxiosError) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setError(error)\n .makeType('Error')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus()\n .makeResponseData()\n .build();\n\n return this.log(message);\n }\n}\n","export enum LoggerContexts {\n SYSTEM = 'System',\n INSTANCE_LOADER = 'InstanceLoader',\n ROUTER_EXPLORER = 'RouterExplorer',\n ROUTES_RESOLVER = 'RoutesResolver',\n NEST_FACTORY = 'NestFactory',\n NEST_APPLICATION = 'NestApplication',\n}\n","import { stringify } from 'qs';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { Response, Request } from 'express';\n\nexport class MessageBuilder {\n private printQueue: string[];\n\n private request!: InternalAxiosRequestConfig & Request;\n private response!: AxiosResponse & Response;\n private error!: AxiosError;\n\n constructor() {\n this.printQueue = [];\n }\n\n setRequest(request: InternalAxiosRequestConfig & Request) {\n this.request = request;\n\n return this;\n }\n\n setResponse(response: AxiosResponse & Response) {\n this.response = response;\n\n return this;\n }\n\n setError(error: AxiosError) {\n this.error = error;\n\n return this;\n }\n\n makeType(type: string) {\n this.printQueue.push(`[${type}]`);\n\n return this;\n }\n\n makeUrl() {\n const url =\n this.request?.originalUrl ||\n this.response?.req?.originalUrl ||\n this.request?.url ||\n this.response?.config?.url ||\n this.error?.response?.config.url;\n\n const params = this.request?.params || this.response?.config?.params || this.error?.response?.config.params;\n\n if (url) {\n if (params) {\n delete params['0'];\n this.printQueue.push([url, stringify(params)].filter((_) => _).join('?'));\n } else {\n this.printQueue.push(url);\n }\n }\n\n return this;\n }\n\n makeMethod() {\n const method =\n this.request?.method ||\n this.response?.req?.method ||\n this.response?.config?.method ||\n this.error?.response?.config.method;\n\n if (method) {\n this.printQueue.push(method.toUpperCase());\n }\n\n return this;\n }\n\n makeRequestData() {\n const data =\n this.request?.body ||\n this.response?.req?.body ||\n this.request?.data ||\n this.response?.config?.data ||\n this.error?.response?.config.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeResponseData() {\n const data = this.response?.data || this.error?.response?.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeStatus() {\n const status = this.response?.statusCode || this.response?.status || this.error?.response?.status;\n\n if (status) {\n this.printQueue.push(`${status}`);\n\n const statusText = this.response?.statusMessage || this.response?.statusText || this.error?.response?.statusText;\n\n if (statusText) {\n this.printQueue.push(statusText);\n }\n }\n\n return this;\n }\n\n build() {\n return this.printQueue.join(' ');\n }\n}\n","import { Injectable, NestMiddleware } from '@nestjs/common';\nimport { Request, Response, NextFunction } from 'express';\nimport { LoggerContexts } from './types';\nimport { LoggerService } from './service';\n\n@Injectable()\nexport class LoggerMiddleware implements NestMiddleware {\n use(request: Request, response: Response, next: NextFunction) {\n const loggerService = new LoggerService();\n\n loggerService.setContext(LoggerContexts.SYSTEM);\n\n loggerService.logRequest(request as any);\n\n response.on('finish', () => {\n loggerService.logResponse(response as any);\n });\n\n return next();\n }\n}\n"],"mappings":"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","names":["import_common","LoggerContexts","import_common"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/module.ts","../src/service.ts","../src/types.ts","../src/message/builder.ts","../src/middleware.ts"],"sourcesContent":["export * from './module';\nexport * from './service';\nexport * from './types';\n","import { Global, MiddlewareConsumer, Module, NestModule } from '@nestjs/common';\nimport { LoggerService } from './service';\nimport { LoggerMiddleware } from './middleware';\n\n@Global()\n@Module({\n providers: [LoggerService],\n exports: [LoggerService],\n})\nexport class LoggerModule implements NestModule {\n configure(consumer: MiddlewareConsumer) {\n consumer.apply(LoggerMiddleware).forRoutes('*');\n }\n}\n","import { ConsoleLogger, Injectable, Scope } from '@nestjs/common';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { LoggerContexts } from './types';\nimport { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\n\n@Injectable({\n scope: Scope.REQUEST,\n})\nexport class LoggerService extends ConsoleLogger {\n setContext(context?: string) {\n super.setContext(context || LoggerContexts.SYSTEM);\n }\n\n log(message: string, context?: string) {\n const ctx = context || this.context || '';\n\n const ctxBlacklist: string[] = [\n LoggerContexts.INSTANCE_LOADER,\n LoggerContexts.ROUTER_EXPLORER,\n LoggerContexts.ROUTES_RESOLVER,\n ];\n\n if (ctxBlacklist.includes(ctx)) {\n return;\n }\n\n const ctxMessageMap: Record<string, string> = {\n [LoggerContexts.NEST_FACTORY]: 'Application is starting...',\n [LoggerContexts.NEST_APPLICATION]: 'Application started.',\n };\n\n const ctxMessage = ctxMessageMap[ctx];\n\n if (ctxMessage) {\n return console.log(`[${LoggerContexts.SYSTEM}] ${ctxMessage}`);\n }\n\n return console.log(`[${ctx}] ${message}`);\n }\n\n logRequest(request: InternalAxiosRequestConfig & Request) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setRequest(request)\n .makeType('Request')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .build();\n\n return this.log(message);\n }\n\n logResponse(response: AxiosResponse & Response) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setResponse(response)\n .makeType('Response')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus()\n .makeResponseData()\n .build();\n\n return this.log(message);\n }\n\n logRequestError(error: AxiosError) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setError(error)\n .makeType('Error')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus()\n .makeResponseData()\n .build();\n\n return this.log(message);\n }\n}\n","export enum LoggerContexts {\n SYSTEM = 'System',\n INSTANCE_LOADER = 'InstanceLoader',\n ROUTER_EXPLORER = 'RouterExplorer',\n ROUTES_RESOLVER = 'RoutesResolver',\n NEST_FACTORY = 'NestFactory',\n NEST_APPLICATION = 'NestApplication',\n}\n","import { stringify } from 'qs';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { Response, Request } from 'express';\n\nexport class MessageBuilder {\n private printQueue: string[];\n\n private request!: InternalAxiosRequestConfig & Request;\n private response!: AxiosResponse & Response;\n private error!: AxiosError;\n\n constructor() {\n this.printQueue = [];\n }\n\n setRequest(request: InternalAxiosRequestConfig & Request) {\n this.request = request;\n\n return this;\n }\n\n setResponse(response: AxiosResponse & Response) {\n this.response = response;\n\n return this;\n }\n\n setError(error: AxiosError) {\n this.error = error;\n\n return this;\n }\n\n makeType(type: string) {\n this.printQueue.push(`[${type}]`);\n\n return this;\n }\n\n makeUrl() {\n const url =\n this.request?.originalUrl ||\n this.response?.req?.originalUrl ||\n this.request?.url ||\n this.response?.config?.url ||\n this.error?.response?.config.url;\n\n const params = this.request?.params || this.response?.config?.params || this.error?.response?.config.params;\n\n if (url) {\n if (params) {\n delete params['0'];\n this.printQueue.push([url, stringify(params)].filter((_) => _).join('?'));\n } else {\n this.printQueue.push(url);\n }\n }\n\n return this;\n }\n\n makeMethod() {\n const method =\n this.request?.method ||\n this.response?.req?.method ||\n this.response?.config?.method ||\n this.error?.response?.config.method;\n\n if (method) {\n this.printQueue.push(method.toUpperCase());\n }\n\n return this;\n }\n\n makeRequestData() {\n const data =\n this.request?.body ||\n this.response?.req?.body ||\n this.request?.data ||\n this.response?.config?.data ||\n this.error?.response?.config.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeResponseData() {\n const data = this.response?.data || this.error?.response?.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeStatus() {\n const status = this.response?.statusCode || this.response?.status || this.error?.response?.status;\n\n if (status) {\n this.printQueue.push(`${status}`);\n\n const statusText = this.response?.statusMessage || this.response?.statusText || this.error?.response?.statusText;\n\n if (statusText) {\n this.printQueue.push(statusText);\n }\n }\n\n return this;\n }\n\n build() {\n return this.printQueue.join(' ');\n }\n}\n","import { Injectable, NestMiddleware } from '@nestjs/common';\nimport { Request, Response, NextFunction } from 'express';\nimport { LoggerContexts } from './types';\nimport { LoggerService } from './service';\n\n@Injectable()\nexport class LoggerMiddleware implements NestMiddleware {\n use(request: Request, response: Response, next: NextFunction) {\n const loggerService = new LoggerService();\n\n loggerService.setContext(LoggerContexts.SYSTEM);\n\n loggerService.logRequest(request as any);\n\n response.on('finish', () => {\n loggerService.logResponse(response as any);\n });\n\n return next();\n }\n}\n"],"mappings":"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","names":["import_common","LoggerContexts","MessageBuilder","constructor","printQueue","request","response","error","setRequest","setResponse","setError","makeType","type","push","makeUrl","url","originalUrl","req","config","params","stringify","filter","_","join","makeMethod","method","toUpperCase","makeRequestData","data","body","Object","keys","length","JSON","makeResponseData","makeStatus","status","statusCode","statusText","statusMessage","build","LoggerService","ConsoleLogger","setContext","context","LoggerContexts","SYSTEM","log","message","ctx","ctxBlacklist","INSTANCE_LOADER","ROUTER_EXPLORER","ROUTES_RESOLVER","includes","ctxMessageMap","NEST_FACTORY","NEST_APPLICATION","ctxMessage","console","logRequest","request","loggerMessageBuilder","MessageBuilder","setRequest","makeType","makeMethod","makeUrl","makeRequestData","build","logResponse","response","setResponse","makeStatus","makeResponseData","logRequestError","error","setError","Injectable","scope","Scope","REQUEST","import_common","LoggerMiddleware","use","request","response","next","loggerService","LoggerService","setContext","LoggerContexts","SYSTEM","logRequest","on","logResponse","Injectable","LoggerModule","configure","consumer","apply","LoggerMiddleware","forRoutes","Global","Module","providers","LoggerService","exports"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
-
if (kind && result)
|
|
9
|
-
__defProp(target, key, result);
|
|
10
|
-
return result;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
4
|
+
var __publicField = (obj, key, value) => {
|
|
5
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
|
+
return value;
|
|
11
7
|
};
|
|
12
8
|
|
|
13
9
|
// src/module.ts
|
|
14
10
|
import { Global, Module } from "@nestjs/common";
|
|
15
11
|
|
|
16
12
|
// src/service.ts
|
|
17
|
-
import { ConsoleLogger, Injectable } from "@nestjs/common";
|
|
13
|
+
import { ConsoleLogger, Injectable, Scope } from "@nestjs/common";
|
|
18
14
|
|
|
19
15
|
// src/types.ts
|
|
20
|
-
var LoggerContexts
|
|
16
|
+
var LoggerContexts;
|
|
17
|
+
(function(LoggerContexts2) {
|
|
21
18
|
LoggerContexts2["SYSTEM"] = "System";
|
|
22
19
|
LoggerContexts2["INSTANCE_LOADER"] = "InstanceLoader";
|
|
23
20
|
LoggerContexts2["ROUTER_EXPLORER"] = "RouterExplorer";
|
|
24
21
|
LoggerContexts2["ROUTES_RESOLVER"] = "RoutesResolver";
|
|
25
22
|
LoggerContexts2["NEST_FACTORY"] = "NestFactory";
|
|
26
23
|
LoggerContexts2["NEST_APPLICATION"] = "NestApplication";
|
|
27
|
-
|
|
28
|
-
})(LoggerContexts || {});
|
|
24
|
+
})(LoggerContexts || (LoggerContexts = {}));
|
|
29
25
|
|
|
30
26
|
// src/message/builder.ts
|
|
31
27
|
import { stringify } from "qs";
|
|
32
|
-
var
|
|
28
|
+
var _MessageBuilder = class _MessageBuilder {
|
|
33
29
|
constructor() {
|
|
30
|
+
__publicField(this, "printQueue");
|
|
31
|
+
__publicField(this, "request");
|
|
32
|
+
__publicField(this, "response");
|
|
33
|
+
__publicField(this, "error");
|
|
34
34
|
this.printQueue = [];
|
|
35
35
|
}
|
|
36
36
|
setRequest(request) {
|
|
@@ -55,7 +55,10 @@ var MessageBuilder = class {
|
|
|
55
55
|
if (url) {
|
|
56
56
|
if (params) {
|
|
57
57
|
delete params["0"];
|
|
58
|
-
this.printQueue.push([
|
|
58
|
+
this.printQueue.push([
|
|
59
|
+
url,
|
|
60
|
+
stringify(params)
|
|
61
|
+
].filter((_) => _).join("?"));
|
|
59
62
|
} else {
|
|
60
63
|
this.printQueue.push(url);
|
|
61
64
|
}
|
|
@@ -112,29 +115,42 @@ var MessageBuilder = class {
|
|
|
112
115
|
return this.printQueue.join(" ");
|
|
113
116
|
}
|
|
114
117
|
};
|
|
118
|
+
__name(_MessageBuilder, "MessageBuilder");
|
|
119
|
+
var MessageBuilder = _MessageBuilder;
|
|
115
120
|
|
|
116
121
|
// src/service.ts
|
|
117
|
-
|
|
122
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
123
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
124
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
125
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
126
|
+
else
|
|
127
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
128
|
+
if (d = decorators[i])
|
|
129
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
130
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
131
|
+
}
|
|
132
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
133
|
+
var _LoggerService = class _LoggerService extends ConsoleLogger {
|
|
118
134
|
setContext(context) {
|
|
119
|
-
super.setContext(context ||
|
|
135
|
+
super.setContext(context || LoggerContexts.SYSTEM);
|
|
120
136
|
}
|
|
121
137
|
log(message, context) {
|
|
122
138
|
const ctx = context || this.context || "";
|
|
123
139
|
const ctxBlacklist = [
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
140
|
+
LoggerContexts.INSTANCE_LOADER,
|
|
141
|
+
LoggerContexts.ROUTER_EXPLORER,
|
|
142
|
+
LoggerContexts.ROUTES_RESOLVER
|
|
127
143
|
];
|
|
128
144
|
if (ctxBlacklist.includes(ctx)) {
|
|
129
145
|
return;
|
|
130
146
|
}
|
|
131
147
|
const ctxMessageMap = {
|
|
132
|
-
[
|
|
133
|
-
[
|
|
148
|
+
[LoggerContexts.NEST_FACTORY]: "Application is starting...",
|
|
149
|
+
[LoggerContexts.NEST_APPLICATION]: "Application started."
|
|
134
150
|
};
|
|
135
151
|
const ctxMessage = ctxMessageMap[ctx];
|
|
136
152
|
if (ctxMessage) {
|
|
137
|
-
return console.log(`[${
|
|
153
|
+
return console.log(`[${LoggerContexts.SYSTEM}] ${ctxMessage}`);
|
|
138
154
|
}
|
|
139
155
|
return console.log(`[${ctx}] ${message}`);
|
|
140
156
|
}
|
|
@@ -154,16 +170,31 @@ var LoggerService = class extends ConsoleLogger {
|
|
|
154
170
|
return this.log(message);
|
|
155
171
|
}
|
|
156
172
|
};
|
|
157
|
-
LoggerService
|
|
158
|
-
|
|
173
|
+
__name(_LoggerService, "LoggerService");
|
|
174
|
+
var LoggerService = _LoggerService;
|
|
175
|
+
LoggerService = _ts_decorate([
|
|
176
|
+
Injectable({
|
|
177
|
+
scope: Scope.REQUEST
|
|
178
|
+
})
|
|
159
179
|
], LoggerService);
|
|
160
180
|
|
|
161
181
|
// src/middleware.ts
|
|
162
182
|
import { Injectable as Injectable2 } from "@nestjs/common";
|
|
163
|
-
|
|
183
|
+
function _ts_decorate2(decorators, target, key, desc) {
|
|
184
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
185
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
186
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
187
|
+
else
|
|
188
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
189
|
+
if (d = decorators[i])
|
|
190
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
191
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
192
|
+
}
|
|
193
|
+
__name(_ts_decorate2, "_ts_decorate");
|
|
194
|
+
var _LoggerMiddleware = class _LoggerMiddleware {
|
|
164
195
|
use(request, response, next) {
|
|
165
196
|
const loggerService = new LoggerService();
|
|
166
|
-
loggerService.setContext(
|
|
197
|
+
loggerService.setContext(LoggerContexts.SYSTEM);
|
|
167
198
|
loggerService.logRequest(request);
|
|
168
199
|
response.on("finish", () => {
|
|
169
200
|
loggerService.logResponse(response);
|
|
@@ -171,21 +202,40 @@ var LoggerMiddleware = class {
|
|
|
171
202
|
return next();
|
|
172
203
|
}
|
|
173
204
|
};
|
|
174
|
-
LoggerMiddleware
|
|
205
|
+
__name(_LoggerMiddleware, "LoggerMiddleware");
|
|
206
|
+
var LoggerMiddleware = _LoggerMiddleware;
|
|
207
|
+
LoggerMiddleware = _ts_decorate2([
|
|
175
208
|
Injectable2()
|
|
176
209
|
], LoggerMiddleware);
|
|
177
210
|
|
|
178
211
|
// src/module.ts
|
|
179
|
-
|
|
212
|
+
function _ts_decorate3(decorators, target, key, desc) {
|
|
213
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
214
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
215
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
216
|
+
else
|
|
217
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
218
|
+
if (d = decorators[i])
|
|
219
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
220
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
221
|
+
}
|
|
222
|
+
__name(_ts_decorate3, "_ts_decorate");
|
|
223
|
+
var _LoggerModule = class _LoggerModule {
|
|
180
224
|
configure(consumer) {
|
|
181
225
|
consumer.apply(LoggerMiddleware).forRoutes("*");
|
|
182
226
|
}
|
|
183
227
|
};
|
|
184
|
-
LoggerModule
|
|
228
|
+
__name(_LoggerModule, "LoggerModule");
|
|
229
|
+
var LoggerModule = _LoggerModule;
|
|
230
|
+
LoggerModule = _ts_decorate3([
|
|
185
231
|
Global(),
|
|
186
232
|
Module({
|
|
187
|
-
providers: [
|
|
188
|
-
|
|
233
|
+
providers: [
|
|
234
|
+
LoggerService
|
|
235
|
+
],
|
|
236
|
+
exports: [
|
|
237
|
+
LoggerService
|
|
238
|
+
]
|
|
189
239
|
})
|
|
190
240
|
], LoggerModule);
|
|
191
241
|
export {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/module.ts","../src/service.ts","../src/types.ts","../src/message/builder.ts","../src/middleware.ts"],"sourcesContent":["import { Global, MiddlewareConsumer, Module, NestModule } from '@nestjs/common';\nimport { LoggerService } from './service';\nimport { LoggerMiddleware } from './middleware';\n\n@Global()\n@Module({\n providers: [LoggerService],\n exports: [LoggerService],\n})\nexport class LoggerModule implements NestModule {\n configure(consumer: MiddlewareConsumer) {\n consumer.apply(LoggerMiddleware).forRoutes('*');\n }\n}\n","import { ConsoleLogger, Injectable } from '@nestjs/common';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { LoggerContexts } from './types';\nimport { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\n\n@Injectable()\nexport class LoggerService extends ConsoleLogger {\n setContext(context?: string) {\n super.setContext(context || LoggerContexts.SYSTEM);\n }\n\n log(message: string, context?: string) {\n const ctx = context || this.context || '';\n\n const ctxBlacklist: string[] = [\n LoggerContexts.INSTANCE_LOADER,\n LoggerContexts.ROUTER_EXPLORER,\n LoggerContexts.ROUTES_RESOLVER,\n ];\n\n if (ctxBlacklist.includes(ctx)) {\n return;\n }\n\n const ctxMessageMap: Record<string, string> = {\n [LoggerContexts.NEST_FACTORY]: 'Application is starting...',\n [LoggerContexts.NEST_APPLICATION]: 'Application started.',\n };\n\n const ctxMessage = ctxMessageMap[ctx];\n\n if (ctxMessage) {\n return console.log(`[${LoggerContexts.SYSTEM}] ${ctxMessage}`);\n }\n\n return console.log(`[${ctx}] ${message}`);\n }\n\n logRequest(request: InternalAxiosRequestConfig & Request) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setRequest(request)\n .makeType('Request')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .build();\n\n return this.log(message);\n }\n\n logResponse(response: AxiosResponse & Response) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setResponse(response)\n .makeType('Response')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus()\n .makeResponseData()\n .build();\n\n return this.log(message);\n }\n\n logRequestError(error: AxiosError) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setError(error)\n .makeType('Error')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus()\n .makeResponseData()\n .build();\n\n return this.log(message);\n }\n}\n","export enum LoggerContexts {\n SYSTEM = 'System',\n INSTANCE_LOADER = 'InstanceLoader',\n ROUTER_EXPLORER = 'RouterExplorer',\n ROUTES_RESOLVER = 'RoutesResolver',\n NEST_FACTORY = 'NestFactory',\n NEST_APPLICATION = 'NestApplication',\n}\n","import { stringify } from 'qs';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { Response, Request } from 'express';\n\nexport class MessageBuilder {\n private printQueue: string[];\n\n private request!: InternalAxiosRequestConfig & Request;\n private response!: AxiosResponse & Response;\n private error!: AxiosError;\n\n constructor() {\n this.printQueue = [];\n }\n\n setRequest(request: InternalAxiosRequestConfig & Request) {\n this.request = request;\n\n return this;\n }\n\n setResponse(response: AxiosResponse & Response) {\n this.response = response;\n\n return this;\n }\n\n setError(error: AxiosError) {\n this.error = error;\n\n return this;\n }\n\n makeType(type: string) {\n this.printQueue.push(`[${type}]`);\n\n return this;\n }\n\n makeUrl() {\n const url =\n this.request?.originalUrl ||\n this.response?.req?.originalUrl ||\n this.request?.url ||\n this.response?.config?.url ||\n this.error?.response?.config.url;\n\n const params = this.request?.params || this.response?.config?.params || this.error?.response?.config.params;\n\n if (url) {\n if (params) {\n delete params['0'];\n this.printQueue.push([url, stringify(params)].filter((_) => _).join('?'));\n } else {\n this.printQueue.push(url);\n }\n }\n\n return this;\n }\n\n makeMethod() {\n const method =\n this.request?.method ||\n this.response?.req?.method ||\n this.response?.config?.method ||\n this.error?.response?.config.method;\n\n if (method) {\n this.printQueue.push(method.toUpperCase());\n }\n\n return this;\n }\n\n makeRequestData() {\n const data =\n this.request?.body ||\n this.response?.req?.body ||\n this.request?.data ||\n this.response?.config?.data ||\n this.error?.response?.config.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeResponseData() {\n const data = this.response?.data || this.error?.response?.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeStatus() {\n const status = this.response?.statusCode || this.response?.status || this.error?.response?.status;\n\n if (status) {\n this.printQueue.push(`${status}`);\n\n const statusText = this.response?.statusMessage || this.response?.statusText || this.error?.response?.statusText;\n\n if (statusText) {\n this.printQueue.push(statusText);\n }\n }\n\n return this;\n }\n\n build() {\n return this.printQueue.join(' ');\n }\n}\n","import { Injectable, NestMiddleware } from '@nestjs/common';\nimport { Request, Response, NextFunction } from 'express';\nimport { LoggerContexts } from './types';\nimport { LoggerService } from './service';\n\n@Injectable()\nexport class LoggerMiddleware implements NestMiddleware {\n use(request: Request, response: Response, next: NextFunction) {\n const loggerService = new LoggerService();\n\n loggerService.setContext(LoggerContexts.SYSTEM);\n\n loggerService.logRequest(request as any);\n\n response.on('finish', () => {\n loggerService.logResponse(response as any);\n });\n\n return next();\n }\n}\n"],"mappings":"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","names":["LoggerContexts","Injectable","Injectable"]}
|
|
1
|
+
{"version":3,"sources":["../src/module.ts","../src/service.ts","../src/types.ts","../src/message/builder.ts","../src/middleware.ts"],"sourcesContent":["import { Global, MiddlewareConsumer, Module, NestModule } from '@nestjs/common';\nimport { LoggerService } from './service';\nimport { LoggerMiddleware } from './middleware';\n\n@Global()\n@Module({\n providers: [LoggerService],\n exports: [LoggerService],\n})\nexport class LoggerModule implements NestModule {\n configure(consumer: MiddlewareConsumer) {\n consumer.apply(LoggerMiddleware).forRoutes('*');\n }\n}\n","import { ConsoleLogger, Injectable, Scope } from '@nestjs/common';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { LoggerContexts } from './types';\nimport { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\n\n@Injectable({\n scope: Scope.REQUEST,\n})\nexport class LoggerService extends ConsoleLogger {\n setContext(context?: string) {\n super.setContext(context || LoggerContexts.SYSTEM);\n }\n\n log(message: string, context?: string) {\n const ctx = context || this.context || '';\n\n const ctxBlacklist: string[] = [\n LoggerContexts.INSTANCE_LOADER,\n LoggerContexts.ROUTER_EXPLORER,\n LoggerContexts.ROUTES_RESOLVER,\n ];\n\n if (ctxBlacklist.includes(ctx)) {\n return;\n }\n\n const ctxMessageMap: Record<string, string> = {\n [LoggerContexts.NEST_FACTORY]: 'Application is starting...',\n [LoggerContexts.NEST_APPLICATION]: 'Application started.',\n };\n\n const ctxMessage = ctxMessageMap[ctx];\n\n if (ctxMessage) {\n return console.log(`[${LoggerContexts.SYSTEM}] ${ctxMessage}`);\n }\n\n return console.log(`[${ctx}] ${message}`);\n }\n\n logRequest(request: InternalAxiosRequestConfig & Request) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setRequest(request)\n .makeType('Request')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .build();\n\n return this.log(message);\n }\n\n logResponse(response: AxiosResponse & Response) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setResponse(response)\n .makeType('Response')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus()\n .makeResponseData()\n .build();\n\n return this.log(message);\n }\n\n logRequestError(error: AxiosError) {\n const loggerMessageBuilder = new MessageBuilder();\n\n const message = loggerMessageBuilder\n .setError(error)\n .makeType('Error')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus()\n .makeResponseData()\n .build();\n\n return this.log(message);\n }\n}\n","export enum LoggerContexts {\n SYSTEM = 'System',\n INSTANCE_LOADER = 'InstanceLoader',\n ROUTER_EXPLORER = 'RouterExplorer',\n ROUTES_RESOLVER = 'RoutesResolver',\n NEST_FACTORY = 'NestFactory',\n NEST_APPLICATION = 'NestApplication',\n}\n","import { stringify } from 'qs';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { Response, Request } from 'express';\n\nexport class MessageBuilder {\n private printQueue: string[];\n\n private request!: InternalAxiosRequestConfig & Request;\n private response!: AxiosResponse & Response;\n private error!: AxiosError;\n\n constructor() {\n this.printQueue = [];\n }\n\n setRequest(request: InternalAxiosRequestConfig & Request) {\n this.request = request;\n\n return this;\n }\n\n setResponse(response: AxiosResponse & Response) {\n this.response = response;\n\n return this;\n }\n\n setError(error: AxiosError) {\n this.error = error;\n\n return this;\n }\n\n makeType(type: string) {\n this.printQueue.push(`[${type}]`);\n\n return this;\n }\n\n makeUrl() {\n const url =\n this.request?.originalUrl ||\n this.response?.req?.originalUrl ||\n this.request?.url ||\n this.response?.config?.url ||\n this.error?.response?.config.url;\n\n const params = this.request?.params || this.response?.config?.params || this.error?.response?.config.params;\n\n if (url) {\n if (params) {\n delete params['0'];\n this.printQueue.push([url, stringify(params)].filter((_) => _).join('?'));\n } else {\n this.printQueue.push(url);\n }\n }\n\n return this;\n }\n\n makeMethod() {\n const method =\n this.request?.method ||\n this.response?.req?.method ||\n this.response?.config?.method ||\n this.error?.response?.config.method;\n\n if (method) {\n this.printQueue.push(method.toUpperCase());\n }\n\n return this;\n }\n\n makeRequestData() {\n const data =\n this.request?.body ||\n this.response?.req?.body ||\n this.request?.data ||\n this.response?.config?.data ||\n this.error?.response?.config.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeResponseData() {\n const data = this.response?.data || this.error?.response?.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeStatus() {\n const status = this.response?.statusCode || this.response?.status || this.error?.response?.status;\n\n if (status) {\n this.printQueue.push(`${status}`);\n\n const statusText = this.response?.statusMessage || this.response?.statusText || this.error?.response?.statusText;\n\n if (statusText) {\n this.printQueue.push(statusText);\n }\n }\n\n return this;\n }\n\n build() {\n return this.printQueue.join(' ');\n }\n}\n","import { Injectable, NestMiddleware } from '@nestjs/common';\nimport { Request, Response, NextFunction } from 'express';\nimport { LoggerContexts } from './types';\nimport { LoggerService } from './service';\n\n@Injectable()\nexport class LoggerMiddleware implements NestMiddleware {\n use(request: Request, response: Response, next: NextFunction) {\n const loggerService = new LoggerService();\n\n loggerService.setContext(LoggerContexts.SYSTEM);\n\n loggerService.logRequest(request as any);\n\n response.on('finish', () => {\n loggerService.logResponse(response as any);\n });\n\n return next();\n }\n}\n"],"mappings":"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","names":["Global","Module","ConsoleLogger","Injectable","Scope","LoggerContexts","stringify","MessageBuilder","constructor","printQueue","request","response","error","setRequest","setResponse","setError","makeType","type","push","makeUrl","url","originalUrl","req","config","params","stringify","filter","_","join","makeMethod","method","toUpperCase","makeRequestData","data","body","Object","keys","length","JSON","makeResponseData","makeStatus","status","statusCode","statusText","statusMessage","build","LoggerService","ConsoleLogger","setContext","context","LoggerContexts","SYSTEM","log","message","ctx","ctxBlacklist","INSTANCE_LOADER","ROUTER_EXPLORER","ROUTES_RESOLVER","includes","ctxMessageMap","NEST_FACTORY","NEST_APPLICATION","ctxMessage","console","logRequest","request","loggerMessageBuilder","MessageBuilder","setRequest","makeType","makeMethod","makeUrl","makeRequestData","build","logResponse","response","setResponse","makeStatus","makeResponseData","logRequestError","error","setError","Injectable","scope","Scope","REQUEST","Injectable","LoggerMiddleware","use","request","response","next","loggerService","LoggerService","setContext","LoggerContexts","SYSTEM","logRequest","on","logResponse","Injectable","LoggerModule","configure","consumer","apply","LoggerMiddleware","forRoutes","Global","Module","providers","LoggerService","exports"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iamnnort/nestjs-logger",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.11",
|
|
4
4
|
"description": "Logger module for NestJS - Simple - Informative - Pretty",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"logger"
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@nestjs/core": "^10.3.3",
|
|
40
40
|
"@nestjs/platform-express": "^10.3.3",
|
|
41
|
+
"@swc/core": "^1.4.2",
|
|
41
42
|
"@tsconfig/node16": "^16.1.1",
|
|
42
43
|
"@types/express": "^4.17.21",
|
|
43
44
|
"@types/jest": "^29.5.6",
|