@iamnnort/nestjs-logger 1.1.8 → 1.1.9

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 CHANGED
@@ -7,6 +7,7 @@ declare class LoggerModule implements NestModule {
7
7
  }
8
8
 
9
9
  declare class LoggerService extends ConsoleLogger {
10
+ setContext(context?: string): void;
10
11
  log(message: string, context?: string): void;
11
12
  logRequest(request: InternalAxiosRequestConfig & Request): void;
12
13
  logResponse(response: AxiosResponse & Response): void;
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ declare class LoggerModule implements NestModule {
7
7
  }
8
8
 
9
9
  declare class LoggerService extends ConsoleLogger {
10
+ setContext(context?: string): void;
10
11
  log(message: string, context?: string): void;
11
12
  logRequest(request: InternalAxiosRequestConfig & Request): void;
12
13
  logResponse(response: AxiosResponse & Response): void;
package/dist/index.js CHANGED
@@ -41,6 +41,17 @@ var import_common3 = require("@nestjs/common");
41
41
  // src/service.ts
42
42
  var import_common = require("@nestjs/common");
43
43
 
44
+ // src/types.ts
45
+ var LoggerContexts = /* @__PURE__ */ ((LoggerContexts2) => {
46
+ LoggerContexts2["SYSTEM"] = "System";
47
+ LoggerContexts2["INSTANCE_LOADER"] = "InstanceLoader";
48
+ LoggerContexts2["ROUTER_EXPLORER"] = "RouterExplorer";
49
+ LoggerContexts2["ROUTES_RESOLVER"] = "RoutesResolver";
50
+ LoggerContexts2["NEST_FACTORY"] = "NestFactory";
51
+ LoggerContexts2["NEST_APPLICATION"] = "NestApplication";
52
+ return LoggerContexts2;
53
+ })(LoggerContexts || {});
54
+
44
55
  // src/message/builder.ts
45
56
  var import_qs = require("qs");
46
57
  var MessageBuilder = class {
@@ -127,19 +138,11 @@ var MessageBuilder = class {
127
138
  }
128
139
  };
129
140
 
130
- // src/types.ts
131
- var LoggerContexts = /* @__PURE__ */ ((LoggerContexts2) => {
132
- LoggerContexts2["SYSTEM"] = "System";
133
- LoggerContexts2["INSTANCE_LOADER"] = "InstanceLoader";
134
- LoggerContexts2["ROUTER_EXPLORER"] = "RouterExplorer";
135
- LoggerContexts2["ROUTES_RESOLVER"] = "RoutesResolver";
136
- LoggerContexts2["NEST_FACTORY"] = "NestFactory";
137
- LoggerContexts2["NEST_APPLICATION"] = "NestApplication";
138
- return LoggerContexts2;
139
- })(LoggerContexts || {});
140
-
141
141
  // src/service.ts
142
142
  var LoggerService = class extends import_common.ConsoleLogger {
143
+ setContext(context) {
144
+ super.setContext(context || "System" /* SYSTEM */);
145
+ }
143
146
  log(message, context) {
144
147
  const ctx = context || this.context || "";
145
148
  const ctxBlacklist = [
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/module.ts","../src/service.ts","../src/message/builder.ts","../src/types.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 { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\nimport { LoggerContexts } from './types';\n\n@Injectable()\nexport class LoggerService extends ConsoleLogger {\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","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","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 { 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 } 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"]}
package/dist/index.mjs CHANGED
@@ -16,6 +16,17 @@ import { Global, Module } from "@nestjs/common";
16
16
  // src/service.ts
17
17
  import { ConsoleLogger, Injectable } from "@nestjs/common";
18
18
 
19
+ // src/types.ts
20
+ var LoggerContexts = /* @__PURE__ */ ((LoggerContexts2) => {
21
+ LoggerContexts2["SYSTEM"] = "System";
22
+ LoggerContexts2["INSTANCE_LOADER"] = "InstanceLoader";
23
+ LoggerContexts2["ROUTER_EXPLORER"] = "RouterExplorer";
24
+ LoggerContexts2["ROUTES_RESOLVER"] = "RoutesResolver";
25
+ LoggerContexts2["NEST_FACTORY"] = "NestFactory";
26
+ LoggerContexts2["NEST_APPLICATION"] = "NestApplication";
27
+ return LoggerContexts2;
28
+ })(LoggerContexts || {});
29
+
19
30
  // src/message/builder.ts
20
31
  import { stringify } from "qs";
21
32
  var MessageBuilder = class {
@@ -102,19 +113,11 @@ var MessageBuilder = class {
102
113
  }
103
114
  };
104
115
 
105
- // src/types.ts
106
- var LoggerContexts = /* @__PURE__ */ ((LoggerContexts2) => {
107
- LoggerContexts2["SYSTEM"] = "System";
108
- LoggerContexts2["INSTANCE_LOADER"] = "InstanceLoader";
109
- LoggerContexts2["ROUTER_EXPLORER"] = "RouterExplorer";
110
- LoggerContexts2["ROUTES_RESOLVER"] = "RoutesResolver";
111
- LoggerContexts2["NEST_FACTORY"] = "NestFactory";
112
- LoggerContexts2["NEST_APPLICATION"] = "NestApplication";
113
- return LoggerContexts2;
114
- })(LoggerContexts || {});
115
-
116
116
  // src/service.ts
117
117
  var LoggerService = class extends ConsoleLogger {
118
+ setContext(context) {
119
+ super.setContext(context || "System" /* SYSTEM */);
120
+ }
118
121
  log(message, context) {
119
122
  const ctx = context || this.context || "";
120
123
  const ctxBlacklist = [
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/module.ts","../src/service.ts","../src/message/builder.ts","../src/types.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 { Request, Response } from 'express';\nimport { MessageBuilder } from './message/builder';\nimport { LoggerContexts } from './types';\n\n@Injectable()\nexport class LoggerService extends ConsoleLogger {\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","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","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 { 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 } 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iamnnort/nestjs-logger",
3
- "version": "1.1.8",
3
+ "version": "1.1.9",
4
4
  "description": "Logger module for NestJS - Simple - Informative - Pretty",
5
5
  "keywords": [
6
6
  "logger"