@iamnnort/nestjs-logger 1.4.1 → 1.4.2
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.d.mts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +24 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -1
package/dist/index.d.mts
CHANGED
|
@@ -5,10 +5,11 @@ import { Request, Response } from 'express';
|
|
|
5
5
|
|
|
6
6
|
type LoggerConfig = {
|
|
7
7
|
context?: string;
|
|
8
|
+
forbiddenKeys?: string[];
|
|
9
|
+
logResponse?: boolean;
|
|
8
10
|
serializer?: {
|
|
9
|
-
array
|
|
11
|
+
array: 'indices' | 'brackets' | 'repeat' | 'comma';
|
|
10
12
|
};
|
|
11
|
-
forbiddenKeys?: string[];
|
|
12
13
|
};
|
|
13
14
|
declare enum LoggerContexts {
|
|
14
15
|
SYSTEM = "System",
|
|
@@ -27,7 +28,7 @@ declare class LoggerModule extends ConfigurableModuleClass {
|
|
|
27
28
|
|
|
28
29
|
declare class LoggerService extends ConsoleLogger {
|
|
29
30
|
private config;
|
|
30
|
-
constructor(
|
|
31
|
+
constructor(customConfig?: LoggerConfig);
|
|
31
32
|
log(message: string, context?: string): void;
|
|
32
33
|
logRequest(request: InternalAxiosRequestConfig & Request): void;
|
|
33
34
|
logResponse(response: AxiosResponse & Response): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -5,10 +5,11 @@ import { Request, Response } from 'express';
|
|
|
5
5
|
|
|
6
6
|
type LoggerConfig = {
|
|
7
7
|
context?: string;
|
|
8
|
+
forbiddenKeys?: string[];
|
|
9
|
+
logResponse?: boolean;
|
|
8
10
|
serializer?: {
|
|
9
|
-
array
|
|
11
|
+
array: 'indices' | 'brackets' | 'repeat' | 'comma';
|
|
10
12
|
};
|
|
11
|
-
forbiddenKeys?: string[];
|
|
12
13
|
};
|
|
13
14
|
declare enum LoggerContexts {
|
|
14
15
|
SYSTEM = "System",
|
|
@@ -27,7 +28,7 @@ declare class LoggerModule extends ConfigurableModuleClass {
|
|
|
27
28
|
|
|
28
29
|
declare class LoggerService extends ConsoleLogger {
|
|
29
30
|
private config;
|
|
30
|
-
constructor(
|
|
31
|
+
constructor(customConfig?: LoggerConfig);
|
|
31
32
|
log(message: string, context?: string): void;
|
|
32
33
|
logRequest(request: InternalAxiosRequestConfig & Request): void;
|
|
33
34
|
logResponse(response: AxiosResponse & Response): void;
|
package/dist/index.js
CHANGED
|
@@ -61,10 +61,7 @@ var MessageBuilder = class {
|
|
|
61
61
|
"0",
|
|
62
62
|
"path"
|
|
63
63
|
];
|
|
64
|
-
const forbiddenKeys = [
|
|
65
|
-
"password",
|
|
66
|
-
...this.config.forbiddenKeys || []
|
|
67
|
-
];
|
|
64
|
+
const forbiddenKeys = this.config.forbiddenKeys || [];
|
|
68
65
|
Object.keys(formattedParams).forEach((paramKey) => {
|
|
69
66
|
if (forbiddenKeys.includes(paramKey)) {
|
|
70
67
|
formattedParams[paramKey] = "******";
|
|
@@ -76,7 +73,7 @@ var MessageBuilder = class {
|
|
|
76
73
|
this.printQueue.push([
|
|
77
74
|
url,
|
|
78
75
|
_qs.stringify.call(void 0, formattedParams, {
|
|
79
|
-
arrayFormat: _optionalChain([this, 'access', _25 => _25.config, 'access', _26 => _26.serializer, 'optionalAccess', _27 => _27.array])
|
|
76
|
+
arrayFormat: _optionalChain([this, 'access', _25 => _25.config, 'access', _26 => _26.serializer, 'optionalAccess', _27 => _27.array]),
|
|
80
77
|
skipNulls: true
|
|
81
78
|
})
|
|
82
79
|
].filter((_) => _).join("?"));
|
|
@@ -104,10 +101,7 @@ var MessageBuilder = class {
|
|
|
104
101
|
const formattedData = {
|
|
105
102
|
...data
|
|
106
103
|
};
|
|
107
|
-
const forbiddenKeys = [
|
|
108
|
-
"password",
|
|
109
|
-
...this.config.forbiddenKeys || []
|
|
110
|
-
];
|
|
104
|
+
const forbiddenKeys = this.config.forbiddenKeys || [];
|
|
111
105
|
Object.keys(formattedData).forEach((dataKey) => {
|
|
112
106
|
if (forbiddenKeys.includes(dataKey)) {
|
|
113
107
|
formattedData[dataKey] = "******";
|
|
@@ -130,10 +124,7 @@ var MessageBuilder = class {
|
|
|
130
124
|
const formattedData = {
|
|
131
125
|
...data
|
|
132
126
|
};
|
|
133
|
-
const forbiddenKeys = [
|
|
134
|
-
"password",
|
|
135
|
-
...this.config.forbiddenKeys || []
|
|
136
|
-
];
|
|
127
|
+
const forbiddenKeys = this.config.forbiddenKeys || [];
|
|
137
128
|
Object.keys(formattedData).forEach((dataKey) => {
|
|
138
129
|
if (forbiddenKeys.includes(dataKey)) {
|
|
139
130
|
formattedData[dataKey] = "******";
|
|
@@ -166,6 +157,7 @@ var MessageBuilder = class {
|
|
|
166
157
|
var { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new (0, _common.ConfigurableModuleBuilder)().build();
|
|
167
158
|
|
|
168
159
|
// src/service.ts
|
|
160
|
+
var _lodash = require('lodash');
|
|
169
161
|
function _ts_decorate(decorators, target, key, desc) {
|
|
170
162
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
171
163
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -188,9 +180,20 @@ var LoggerService = class extends _common.ConsoleLogger {
|
|
|
188
180
|
__name(this, "LoggerService");
|
|
189
181
|
}
|
|
190
182
|
|
|
191
|
-
constructor(
|
|
192
|
-
const
|
|
193
|
-
|
|
183
|
+
constructor(customConfig = {}) {
|
|
184
|
+
const defaultConfig = {
|
|
185
|
+
context: LoggerContexts.SYSTEM,
|
|
186
|
+
forbiddenKeys: [
|
|
187
|
+
"password"
|
|
188
|
+
],
|
|
189
|
+
logResponse: true,
|
|
190
|
+
serializer: {
|
|
191
|
+
array: "brackets"
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
const config = _lodash.merge.call(void 0, {}, defaultConfig, customConfig);
|
|
195
|
+
super(config.context);
|
|
196
|
+
this.config = config;
|
|
194
197
|
}
|
|
195
198
|
log(message, context) {
|
|
196
199
|
const ctx = _optionalChain([context, 'optionalAccess', _73 => _73.replace, 'call', _74 => _74(/^_/, "")]) || this.context || "";
|
|
@@ -219,7 +222,11 @@ var LoggerService = class extends _common.ConsoleLogger {
|
|
|
219
222
|
}
|
|
220
223
|
logResponse(response) {
|
|
221
224
|
const loggerMessageBuilder = new MessageBuilder(this.config);
|
|
222
|
-
const
|
|
225
|
+
const loggerMesage = loggerMessageBuilder.setResponse(response).makeType("Response").makeMethod().makeUrl().makeRequestData().makeStatus();
|
|
226
|
+
if (this.config.logResponse) {
|
|
227
|
+
loggerMesage.makeResponseData();
|
|
228
|
+
}
|
|
229
|
+
const message = loggerMesage.build();
|
|
223
230
|
return this.log(message);
|
|
224
231
|
}
|
|
225
232
|
logRequestError(error) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/nestjs-logger/nestjs-logger/dist/index.js","../src/module.ts","../src/service.ts","../src/types.ts","../src/message/builder.ts","../src/module-definition.ts","../src/middleware.ts"],"names":["LoggerContexts","MessageBuilder","printQueue","request","response","error","constructor","config","setRequest","setResponse","setError","makeType","type","push","makeUrl","url","originalUrl","req","params","formattedParams","systemKeys","forbiddenKeys","Object","keys","forEach","paramKey","includes","stringify","arrayFormat","serializer","array","skipNulls","filter","_","join","makeMethod","method","toUpperCase","makeRequestData","data","body","length","formattedData","dataKey","JSON","makeResponseData","makeStatus","status","statusCode","ConfigurableModuleBuilder","ConfigurableModuleClass","ConsoleLogger","context","replace","INSTANCE_LOADER","ROUTER_EXPLORER","ROUTES_RESOLVER","NEST_FACTORY","NEST_APPLICATION","ctxMessageMap","ctx","loggerMessageBuilder","message","TRANSIENT","Injectable","LoggerMiddleware","loggerService","next","logRequest","logResponse","LoggerService"],"mappings":"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","file":"/home/runner/work/nestjs-logger/nestjs-logger/dist/index.js","sourcesContent":[null,"import { Global, MiddlewareConsumer, Module } from '@nestjs/common';\nimport { LoggerService } from './service';\nimport { LoggerMiddleware } from './middleware';\nimport { ConfigurableModuleClass } from './module-definition';\n\n@Global()\n@Module({\n providers: [LoggerService],\n exports: [LoggerService],\n})\nexport class LoggerModule extends ConfigurableModuleClass {\n configure(consumer: MiddlewareConsumer) {\n consumer.apply(LoggerMiddleware).forRoutes('*');\n }\n}\n","import { ConsoleLogger, Inject, Injectable, Scope } from '@nestjs/common';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { type LoggerConfig, LoggerContexts } from './types';\nimport { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\nimport { MODULE_OPTIONS_TOKEN } from './module-definition';\n\n@Injectable({\n scope: Scope.TRANSIENT,\n})\nexport class LoggerService extends ConsoleLogger {\n constructor(@Inject(MODULE_OPTIONS_TOKEN) private config: LoggerConfig = {}) {\n const ctx = config.context || LoggerContexts.SYSTEM;\n\n super(ctx);\n }\n\n log(message: string, context?: string) {\n const ctx = context?.replace(/^_/, '') || 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(this.config);\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(this.config);\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(this.config);\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 type LoggerConfig = {\n context?: string;\n serializer?: {\n array?: 'indices' | 'brackets' | 'repeat' | 'comma';\n };\n forbiddenKeys?: string[];\n};\n\nexport 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';\nimport { LoggerConfig } from '@src/types';\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(private config: LoggerConfig = {}) {}\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 const formattedParams = { ...params };\n const systemKeys = ['0', 'path'];\n const forbiddenKeys = ['password', ...(this.config.forbiddenKeys || [])];\n\n Object.keys(formattedParams).forEach((paramKey) => {\n if (forbiddenKeys.includes(paramKey)) {\n formattedParams[paramKey] = '******';\n }\n\n if (systemKeys.includes(paramKey)) {\n delete formattedParams[paramKey];\n }\n });\n\n this.printQueue.push(\n [\n url,\n stringify(formattedParams, {\n arrayFormat: this.config.serializer?.array || 'brackets',\n skipNulls: true,\n }),\n ]\n .filter((_) => _)\n .join('?'),\n );\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 const formattedData = { ...data };\n const forbiddenKeys = ['password', ...(this.config.forbiddenKeys || [])];\n\n Object.keys(formattedData).forEach((dataKey) => {\n if (forbiddenKeys.includes(dataKey)) {\n formattedData[dataKey] = '******';\n }\n });\n\n this.printQueue.push(JSON.stringify(formattedData));\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 const formattedData = { ...data };\n const forbiddenKeys = ['password', ...(this.config.forbiddenKeys || [])];\n\n Object.keys(formattedData).forEach((dataKey) => {\n if (forbiddenKeys.includes(dataKey)) {\n formattedData[dataKey] = '******';\n }\n });\n\n this.printQueue.push(JSON.stringify(formattedData));\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 { ConfigurableModuleBuilder } from '@nestjs/common';\nimport { LoggerConfig } from './types';\n\nexport const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<LoggerConfig>().build();\n","import { Injectable, NestMiddleware } from '@nestjs/common';\nimport { Request, Response, NextFunction } from 'express';\nimport { LoggerService } from './service';\n\n@Injectable()\nexport class LoggerMiddleware implements NestMiddleware {\n constructor(private loggerService: LoggerService) {}\n\n use(request: Request, response: Response, next: NextFunction) {\n this.loggerService.logRequest(request as any);\n\n response.on('finish', () => {\n this.loggerService.logResponse(response as any);\n });\n\n return next();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/nestjs-logger/nestjs-logger/dist/index.js","../src/module.ts","../src/service.ts","../src/types.ts","../src/message/builder.ts","../src/module-definition.ts","../src/middleware.ts"],"names":["LoggerContexts","MessageBuilder","printQueue","request","response","error","constructor","config","setRequest","setResponse","setError","makeType","type","push","makeUrl","url","originalUrl","req","params","formattedParams","systemKeys","forbiddenKeys","Object","keys","forEach","paramKey","includes","stringify","arrayFormat","serializer","array","skipNulls","filter","_","join","makeMethod","method","toUpperCase","makeRequestData","data","body","length","formattedData","dataKey","JSON","makeResponseData","makeStatus","status","statusCode","ConfigurableModuleBuilder","ConfigurableModuleClass","ConsoleLogger","customConfig","replace","INSTANCE_LOADER","ROUTER_EXPLORER","ROUTES_RESOLVER","NEST_FACTORY","NEST_APPLICATION","ctxMessageMap","ctx","loggerMessageBuilder","message","logResponse","loggerMesage","TRANSIENT","Injectable","LoggerMiddleware","loggerService","next","logRequest","LoggerService"],"mappings":"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","file":"/home/runner/work/nestjs-logger/nestjs-logger/dist/index.js","sourcesContent":[null,"import { Global, MiddlewareConsumer, Module } from '@nestjs/common';\nimport { LoggerService } from './service';\nimport { LoggerMiddleware } from './middleware';\nimport { ConfigurableModuleClass } from './module-definition';\n\n@Global()\n@Module({\n providers: [LoggerService],\n exports: [LoggerService],\n})\nexport class LoggerModule extends ConfigurableModuleClass {\n configure(consumer: MiddlewareConsumer) {\n consumer.apply(LoggerMiddleware).forRoutes('*');\n }\n}\n","import { ConsoleLogger, Inject, Injectable, Scope } from '@nestjs/common';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { type LoggerConfig, LoggerContexts } from './types';\nimport { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\nimport { MODULE_OPTIONS_TOKEN } from './module-definition';\nimport { merge } from 'lodash';\n\n@Injectable({\n scope: Scope.TRANSIENT,\n})\nexport class LoggerService extends ConsoleLogger {\n private config: LoggerConfig;\n\n constructor(@Inject(MODULE_OPTIONS_TOKEN) customConfig: LoggerConfig = {}) {\n const defaultConfig = {\n context: LoggerContexts.SYSTEM,\n forbiddenKeys: ['password'],\n logResponse: true,\n serializer: {\n array: 'brackets',\n },\n };\n\n const config = merge({}, defaultConfig, customConfig);\n\n super(config.context);\n\n this.config = config;\n }\n\n log(message: string, context?: string) {\n const ctx = context?.replace(/^_/, '') || 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(this.config);\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(this.config);\n\n const loggerMesage = loggerMessageBuilder\n .setResponse(response)\n .makeType('Response')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus();\n\n if (this.config.logResponse) {\n loggerMesage.makeResponseData();\n }\n\n const message = loggerMesage.build();\n\n return this.log(message);\n }\n\n logRequestError(error: AxiosError) {\n const loggerMessageBuilder = new MessageBuilder(this.config);\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 type LoggerConfig = {\n context?: string;\n forbiddenKeys?: string[];\n logResponse?: boolean;\n serializer?: {\n array: 'indices' | 'brackets' | 'repeat' | 'comma';\n };\n};\n\nexport 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';\nimport { LoggerConfig } from '@src/types';\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(private config: LoggerConfig = {}) {}\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 const formattedParams = { ...params };\n const systemKeys = ['0', 'path'];\n const forbiddenKeys = this.config.forbiddenKeys || [];\n\n Object.keys(formattedParams).forEach((paramKey) => {\n if (forbiddenKeys.includes(paramKey)) {\n formattedParams[paramKey] = '******';\n }\n\n if (systemKeys.includes(paramKey)) {\n delete formattedParams[paramKey];\n }\n });\n\n this.printQueue.push(\n [\n url,\n stringify(formattedParams, {\n arrayFormat: this.config.serializer?.array,\n skipNulls: true,\n }),\n ]\n .filter((_) => _)\n .join('?'),\n );\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 const formattedData = { ...data };\n const forbiddenKeys = this.config.forbiddenKeys || [];\n\n Object.keys(formattedData).forEach((dataKey) => {\n if (forbiddenKeys.includes(dataKey)) {\n formattedData[dataKey] = '******';\n }\n });\n\n this.printQueue.push(JSON.stringify(formattedData));\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 const formattedData = { ...data };\n const forbiddenKeys = this.config.forbiddenKeys || [];\n\n Object.keys(formattedData).forEach((dataKey) => {\n if (forbiddenKeys.includes(dataKey)) {\n formattedData[dataKey] = '******';\n }\n });\n\n this.printQueue.push(JSON.stringify(formattedData));\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 { ConfigurableModuleBuilder } from '@nestjs/common';\nimport { LoggerConfig } from './types';\n\nexport const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<LoggerConfig>().build();\n","import { Injectable, NestMiddleware } from '@nestjs/common';\nimport { Request, Response, NextFunction } from 'express';\nimport { LoggerService } from './service';\n\n@Injectable()\nexport class LoggerMiddleware implements NestMiddleware {\n constructor(private loggerService: LoggerService) {}\n\n use(request: Request, response: Response, next: NextFunction) {\n this.loggerService.logRequest(request as any);\n\n response.on('finish', () => {\n this.loggerService.logResponse(response as any);\n });\n\n return next();\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -61,10 +61,7 @@ var MessageBuilder = class {
|
|
|
61
61
|
"0",
|
|
62
62
|
"path"
|
|
63
63
|
];
|
|
64
|
-
const forbiddenKeys = [
|
|
65
|
-
"password",
|
|
66
|
-
...this.config.forbiddenKeys || []
|
|
67
|
-
];
|
|
64
|
+
const forbiddenKeys = this.config.forbiddenKeys || [];
|
|
68
65
|
Object.keys(formattedParams).forEach((paramKey) => {
|
|
69
66
|
if (forbiddenKeys.includes(paramKey)) {
|
|
70
67
|
formattedParams[paramKey] = "******";
|
|
@@ -76,7 +73,7 @@ var MessageBuilder = class {
|
|
|
76
73
|
this.printQueue.push([
|
|
77
74
|
url,
|
|
78
75
|
stringify(formattedParams, {
|
|
79
|
-
arrayFormat: this.config.serializer?.array
|
|
76
|
+
arrayFormat: this.config.serializer?.array,
|
|
80
77
|
skipNulls: true
|
|
81
78
|
})
|
|
82
79
|
].filter((_) => _).join("?"));
|
|
@@ -104,10 +101,7 @@ var MessageBuilder = class {
|
|
|
104
101
|
const formattedData = {
|
|
105
102
|
...data
|
|
106
103
|
};
|
|
107
|
-
const forbiddenKeys = [
|
|
108
|
-
"password",
|
|
109
|
-
...this.config.forbiddenKeys || []
|
|
110
|
-
];
|
|
104
|
+
const forbiddenKeys = this.config.forbiddenKeys || [];
|
|
111
105
|
Object.keys(formattedData).forEach((dataKey) => {
|
|
112
106
|
if (forbiddenKeys.includes(dataKey)) {
|
|
113
107
|
formattedData[dataKey] = "******";
|
|
@@ -130,10 +124,7 @@ var MessageBuilder = class {
|
|
|
130
124
|
const formattedData = {
|
|
131
125
|
...data
|
|
132
126
|
};
|
|
133
|
-
const forbiddenKeys = [
|
|
134
|
-
"password",
|
|
135
|
-
...this.config.forbiddenKeys || []
|
|
136
|
-
];
|
|
127
|
+
const forbiddenKeys = this.config.forbiddenKeys || [];
|
|
137
128
|
Object.keys(formattedData).forEach((dataKey) => {
|
|
138
129
|
if (forbiddenKeys.includes(dataKey)) {
|
|
139
130
|
formattedData[dataKey] = "******";
|
|
@@ -166,6 +157,7 @@ import { ConfigurableModuleBuilder } from "@nestjs/common";
|
|
|
166
157
|
var { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder().build();
|
|
167
158
|
|
|
168
159
|
// src/service.ts
|
|
160
|
+
import { merge } from "lodash";
|
|
169
161
|
function _ts_decorate(decorators, target, key, desc) {
|
|
170
162
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
171
163
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -188,9 +180,20 @@ var LoggerService = class extends ConsoleLogger {
|
|
|
188
180
|
__name(this, "LoggerService");
|
|
189
181
|
}
|
|
190
182
|
config;
|
|
191
|
-
constructor(
|
|
192
|
-
const
|
|
193
|
-
|
|
183
|
+
constructor(customConfig = {}) {
|
|
184
|
+
const defaultConfig = {
|
|
185
|
+
context: LoggerContexts.SYSTEM,
|
|
186
|
+
forbiddenKeys: [
|
|
187
|
+
"password"
|
|
188
|
+
],
|
|
189
|
+
logResponse: true,
|
|
190
|
+
serializer: {
|
|
191
|
+
array: "brackets"
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
const config = merge({}, defaultConfig, customConfig);
|
|
195
|
+
super(config.context);
|
|
196
|
+
this.config = config;
|
|
194
197
|
}
|
|
195
198
|
log(message, context) {
|
|
196
199
|
const ctx = context?.replace(/^_/, "") || this.context || "";
|
|
@@ -219,7 +222,11 @@ var LoggerService = class extends ConsoleLogger {
|
|
|
219
222
|
}
|
|
220
223
|
logResponse(response) {
|
|
221
224
|
const loggerMessageBuilder = new MessageBuilder(this.config);
|
|
222
|
-
const
|
|
225
|
+
const loggerMesage = loggerMessageBuilder.setResponse(response).makeType("Response").makeMethod().makeUrl().makeRequestData().makeStatus();
|
|
226
|
+
if (this.config.logResponse) {
|
|
227
|
+
loggerMesage.makeResponseData();
|
|
228
|
+
}
|
|
229
|
+
const message = loggerMesage.build();
|
|
223
230
|
return this.log(message);
|
|
224
231
|
}
|
|
225
232
|
logRequestError(error) {
|
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/module-definition.ts","../src/middleware.ts"],"sourcesContent":["import { Global, MiddlewareConsumer, Module } from '@nestjs/common';\nimport { LoggerService } from './service';\nimport { LoggerMiddleware } from './middleware';\nimport { ConfigurableModuleClass } from './module-definition';\n\n@Global()\n@Module({\n providers: [LoggerService],\n exports: [LoggerService],\n})\nexport class LoggerModule extends ConfigurableModuleClass {\n configure(consumer: MiddlewareConsumer) {\n consumer.apply(LoggerMiddleware).forRoutes('*');\n }\n}\n","import { ConsoleLogger, Inject, Injectable, Scope } from '@nestjs/common';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { type LoggerConfig, LoggerContexts } from './types';\nimport { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\nimport { MODULE_OPTIONS_TOKEN } from './module-definition';\n\n@Injectable({\n scope: Scope.TRANSIENT,\n})\nexport class LoggerService extends ConsoleLogger {\n constructor(@Inject(MODULE_OPTIONS_TOKEN) private config: LoggerConfig = {}) {\n const ctx = config.context || LoggerContexts.SYSTEM;\n\n super(ctx);\n }\n\n log(message: string, context?: string) {\n const ctx = context?.replace(/^_/, '') || 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(this.config);\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(this.config);\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(this.config);\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 type LoggerConfig = {\n context?: string;\n serializer?: {\n array?: 'indices' | 'brackets' | 'repeat' | 'comma';\n };\n forbiddenKeys?: string[];\n};\n\nexport 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';\nimport { LoggerConfig } from '@src/types';\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(private config: LoggerConfig = {}) {}\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 const formattedParams = { ...params };\n const systemKeys = ['0', 'path'];\n const forbiddenKeys = ['password', ...(this.config.forbiddenKeys || [])];\n\n Object.keys(formattedParams).forEach((paramKey) => {\n if (forbiddenKeys.includes(paramKey)) {\n formattedParams[paramKey] = '******';\n }\n\n if (systemKeys.includes(paramKey)) {\n delete formattedParams[paramKey];\n }\n });\n\n this.printQueue.push(\n [\n url,\n stringify(formattedParams, {\n arrayFormat: this.config.serializer?.array || 'brackets',\n skipNulls: true,\n }),\n ]\n .filter((_) => _)\n .join('?'),\n );\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 const formattedData = { ...data };\n const forbiddenKeys = ['password', ...(this.config.forbiddenKeys || [])];\n\n Object.keys(formattedData).forEach((dataKey) => {\n if (forbiddenKeys.includes(dataKey)) {\n formattedData[dataKey] = '******';\n }\n });\n\n this.printQueue.push(JSON.stringify(formattedData));\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 const formattedData = { ...data };\n const forbiddenKeys = ['password', ...(this.config.forbiddenKeys || [])];\n\n Object.keys(formattedData).forEach((dataKey) => {\n if (forbiddenKeys.includes(dataKey)) {\n formattedData[dataKey] = '******';\n }\n });\n\n this.printQueue.push(JSON.stringify(formattedData));\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 { ConfigurableModuleBuilder } from '@nestjs/common';\nimport { LoggerConfig } from './types';\n\nexport const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<LoggerConfig>().build();\n","import { Injectable, NestMiddleware } from '@nestjs/common';\nimport { Request, Response, NextFunction } from 'express';\nimport { LoggerService } from './service';\n\n@Injectable()\nexport class LoggerMiddleware implements NestMiddleware {\n constructor(private loggerService: LoggerService) {}\n\n use(request: Request, response: Response, next: NextFunction) {\n this.loggerService.logRequest(request as any);\n\n response.on('finish', () => {\n this.loggerService.logResponse(response as any);\n });\n\n return next();\n }\n}\n"],"mappings":"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","names":["Global","Module","ConsoleLogger","Inject","Injectable","Scope","LoggerContexts","stringify","MessageBuilder","printQueue","request","response","error","constructor","config","setRequest","setResponse","setError","makeType","type","push","makeUrl","url","originalUrl","req","params","formattedParams","systemKeys","forbiddenKeys","Object","keys","forEach","paramKey","includes","stringify","arrayFormat","serializer","array","skipNulls","filter","_","join","makeMethod","method","toUpperCase","makeRequestData","data","body","length","formattedData","dataKey","JSON","makeResponseData","makeStatus","status","statusCode","statusText","statusMessage","build","ConfigurableModuleBuilder","ConfigurableModuleClass","MODULE_OPTIONS_TOKEN","build","LoggerService","ConsoleLogger","constructor","config","ctx","context","LoggerContexts","SYSTEM","log","message","replace","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","scope","Scope","TRANSIENT","Injectable","LoggerMiddleware","constructor","loggerService","use","request","response","next","logRequest","on","logResponse","LoggerModule","ConfigurableModuleClass","configure","consumer","apply","LoggerMiddleware","forRoutes","providers","LoggerService","exports"]}
|
|
1
|
+
{"version":3,"sources":["../src/module.ts","../src/service.ts","../src/types.ts","../src/message/builder.ts","../src/module-definition.ts","../src/middleware.ts"],"sourcesContent":["import { Global, MiddlewareConsumer, Module } from '@nestjs/common';\nimport { LoggerService } from './service';\nimport { LoggerMiddleware } from './middleware';\nimport { ConfigurableModuleClass } from './module-definition';\n\n@Global()\n@Module({\n providers: [LoggerService],\n exports: [LoggerService],\n})\nexport class LoggerModule extends ConfigurableModuleClass {\n configure(consumer: MiddlewareConsumer) {\n consumer.apply(LoggerMiddleware).forRoutes('*');\n }\n}\n","import { ConsoleLogger, Inject, Injectable, Scope } from '@nestjs/common';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport { type LoggerConfig, LoggerContexts } from './types';\nimport { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\nimport { MODULE_OPTIONS_TOKEN } from './module-definition';\nimport { merge } from 'lodash';\n\n@Injectable({\n scope: Scope.TRANSIENT,\n})\nexport class LoggerService extends ConsoleLogger {\n private config: LoggerConfig;\n\n constructor(@Inject(MODULE_OPTIONS_TOKEN) customConfig: LoggerConfig = {}) {\n const defaultConfig = {\n context: LoggerContexts.SYSTEM,\n forbiddenKeys: ['password'],\n logResponse: true,\n serializer: {\n array: 'brackets',\n },\n };\n\n const config = merge({}, defaultConfig, customConfig);\n\n super(config.context);\n\n this.config = config;\n }\n\n log(message: string, context?: string) {\n const ctx = context?.replace(/^_/, '') || 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(this.config);\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(this.config);\n\n const loggerMesage = loggerMessageBuilder\n .setResponse(response)\n .makeType('Response')\n .makeMethod()\n .makeUrl()\n .makeRequestData()\n .makeStatus();\n\n if (this.config.logResponse) {\n loggerMesage.makeResponseData();\n }\n\n const message = loggerMesage.build();\n\n return this.log(message);\n }\n\n logRequestError(error: AxiosError) {\n const loggerMessageBuilder = new MessageBuilder(this.config);\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 type LoggerConfig = {\n context?: string;\n forbiddenKeys?: string[];\n logResponse?: boolean;\n serializer?: {\n array: 'indices' | 'brackets' | 'repeat' | 'comma';\n };\n};\n\nexport 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';\nimport { LoggerConfig } from '@src/types';\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(private config: LoggerConfig = {}) {}\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 const formattedParams = { ...params };\n const systemKeys = ['0', 'path'];\n const forbiddenKeys = this.config.forbiddenKeys || [];\n\n Object.keys(formattedParams).forEach((paramKey) => {\n if (forbiddenKeys.includes(paramKey)) {\n formattedParams[paramKey] = '******';\n }\n\n if (systemKeys.includes(paramKey)) {\n delete formattedParams[paramKey];\n }\n });\n\n this.printQueue.push(\n [\n url,\n stringify(formattedParams, {\n arrayFormat: this.config.serializer?.array,\n skipNulls: true,\n }),\n ]\n .filter((_) => _)\n .join('?'),\n );\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 const formattedData = { ...data };\n const forbiddenKeys = this.config.forbiddenKeys || [];\n\n Object.keys(formattedData).forEach((dataKey) => {\n if (forbiddenKeys.includes(dataKey)) {\n formattedData[dataKey] = '******';\n }\n });\n\n this.printQueue.push(JSON.stringify(formattedData));\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 const formattedData = { ...data };\n const forbiddenKeys = this.config.forbiddenKeys || [];\n\n Object.keys(formattedData).forEach((dataKey) => {\n if (forbiddenKeys.includes(dataKey)) {\n formattedData[dataKey] = '******';\n }\n });\n\n this.printQueue.push(JSON.stringify(formattedData));\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 { ConfigurableModuleBuilder } from '@nestjs/common';\nimport { LoggerConfig } from './types';\n\nexport const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<LoggerConfig>().build();\n","import { Injectable, NestMiddleware } from '@nestjs/common';\nimport { Request, Response, NextFunction } from 'express';\nimport { LoggerService } from './service';\n\n@Injectable()\nexport class LoggerMiddleware implements NestMiddleware {\n constructor(private loggerService: LoggerService) {}\n\n use(request: Request, response: Response, next: NextFunction) {\n this.loggerService.logRequest(request as any);\n\n response.on('finish', () => {\n this.loggerService.logResponse(response as any);\n });\n\n return next();\n }\n}\n"],"mappings":"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","names":["Global","Module","ConsoleLogger","Inject","Injectable","Scope","LoggerContexts","stringify","MessageBuilder","printQueue","request","response","error","constructor","config","setRequest","setResponse","setError","makeType","type","push","makeUrl","url","originalUrl","req","params","formattedParams","systemKeys","forbiddenKeys","Object","keys","forEach","paramKey","includes","stringify","arrayFormat","serializer","array","skipNulls","filter","_","join","makeMethod","method","toUpperCase","makeRequestData","data","body","length","formattedData","dataKey","JSON","makeResponseData","makeStatus","status","statusCode","statusText","statusMessage","build","ConfigurableModuleBuilder","ConfigurableModuleClass","MODULE_OPTIONS_TOKEN","build","merge","LoggerService","ConsoleLogger","config","constructor","customConfig","defaultConfig","context","LoggerContexts","SYSTEM","forbiddenKeys","logResponse","serializer","array","merge","log","message","ctx","replace","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","response","loggerMesage","setResponse","makeStatus","makeResponseData","logRequestError","error","setError","scope","Scope","TRANSIENT","Injectable","LoggerMiddleware","constructor","loggerService","use","request","response","next","logRequest","on","logResponse","LoggerModule","ConfigurableModuleClass","configure","consumer","apply","LoggerMiddleware","forRoutes","providers","LoggerService","exports"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iamnnort/nestjs-logger",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2",
|
|
4
4
|
"description": "Logger module for NestJS - Simple - Informative - Pretty",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"logger"
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@nestjs/common": "^11.0.12",
|
|
37
37
|
"axios": "^1.8.4",
|
|
38
|
+
"lodash": "^4.17.21",
|
|
38
39
|
"qs": "^6.14.0"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
"@swc/core": "^1.11.16",
|
|
44
45
|
"@tsconfig/node20": "^20.1.5",
|
|
45
46
|
"@types/express": "^5.0.1",
|
|
47
|
+
"@types/lodash": "^4.17.16",
|
|
46
48
|
"@types/node": "^22.13.17",
|
|
47
49
|
"@typescript-eslint/parser": "^8.29.0",
|
|
48
50
|
"eslint": "^9.23.0",
|