@iamnnort/nestjs-logger 1.1.12 → 1.1.13
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 +3 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -199,7 +199,9 @@ var _LoggerService = class _LoggerService extends import_common.ConsoleLogger {
|
|
|
199
199
|
__name(_LoggerService, "LoggerService");
|
|
200
200
|
var LoggerService = _LoggerService;
|
|
201
201
|
LoggerService = _ts_decorate([
|
|
202
|
-
(0, import_common.Injectable)(
|
|
202
|
+
(0, import_common.Injectable)({
|
|
203
|
+
scope: import_common.Scope.TRANSIENT
|
|
204
|
+
})
|
|
203
205
|
], LoggerService);
|
|
204
206
|
|
|
205
207
|
// src/middleware.ts
|
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","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","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"]}
|
|
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.TRANSIENT,\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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,IAAAA,iBAA+D;;;ACA/D,oBAAiD;;;;UCArCC,iBAAAA;;;;;;;GAAAA,mBAAAA,iBAAAA,CAAAA,EAAAA;;;ACAZ,gBAA0B;AAInB,IAAMC,kBAAN,MAAMA,gBAAAA;EAOXC,cAAc;AANNC;AAEAC;AACAC;AACAC;AAGN,SAAKH,aAAa,CAAA;EACpB;EAEAI,WAAWH,SAA+C;AACxD,SAAKA,UAAUA;AAEf,WAAO;EACT;EAEAI,YAAYH,UAAoC;AAC9C,SAAKA,WAAWA;AAEhB,WAAO;EACT;EAEAI,SAASH,OAAmB;AAC1B,SAAKA,QAAQA;AAEb,WAAO;EACT;EAEAI,SAASC,MAAc;AACrB,SAAKR,WAAWS,KAAK,IAAID,IAAAA,GAAO;AAEhC,WAAO;EACT;EAEAE,UAAU;AACR,UAAMC,MACJ,KAAKV,SAASW,eACd,KAAKV,UAAUW,KAAKD,eACpB,KAAKX,SAASU,OACd,KAAKT,UAAUY,QAAQH,OACvB,KAAKR,OAAOD,UAAUY,OAAOH;AAE/B,UAAMI,SAAS,KAAKd,SAASc,UAAU,KAAKb,UAAUY,QAAQC,UAAU,KAAKZ,OAAOD,UAAUY,OAAOC;AAErG,QAAIJ,KAAK;AACP,UAAII,QAAQ;AACV,eAAOA,OAAO,GAAA;AACd,aAAKf,WAAWS,KAAK;UAACE;cAAKK,qBAAUD,MAAAA;UAASE,OAAO,CAACC,MAAMA,CAAAA,EAAGC,KAAK,GAAA,CAAA;MACtE,OAAO;AACL,aAAKnB,WAAWS,KAAKE,GAAAA;MACvB;IACF;AAEA,WAAO;EACT;EAEAS,aAAa;AACX,UAAMC,SACJ,KAAKpB,SAASoB,UACd,KAAKnB,UAAUW,KAAKQ,UACpB,KAAKnB,UAAUY,QAAQO,UACvB,KAAKlB,OAAOD,UAAUY,OAAOO;AAE/B,QAAIA,QAAQ;AACV,WAAKrB,WAAWS,KAAKY,OAAOC,YAAW,CAAA;IACzC;AAEA,WAAO;EACT;EAEAC,kBAAkB;AAChB,UAAMC,OACJ,KAAKvB,SAASwB,QACd,KAAKvB,UAAUW,KAAKY,QACpB,KAAKxB,SAASuB,QACd,KAAKtB,UAAUY,QAAQU,QACvB,KAAKrB,OAAOD,UAAUY,OAAOU;AAE/B,QAAIA,MAAM;AACR,UAAI,OAAOA,SAAS,UAAU;AAC5B,aAAKxB,WAAWS,KAAKe,IAAAA;AAErB,eAAO;MACT;AAEA,UAAIE,OAAOC,KAAKH,IAAAA,EAAMI,QAAQ;AAC5B,aAAK5B,WAAWS,KAAKoB,KAAKb,UAAUQ,IAAAA,CAAAA;AAEpC,eAAO;MACT;IACF;AAEA,WAAO;EACT;EAEAM,mBAAmB;AACjB,UAAMN,OAAO,KAAKtB,UAAUsB,QAAQ,KAAKrB,OAAOD,UAAUsB;AAE1D,QAAIA,MAAM;AACR,UAAI,OAAOA,SAAS,UAAU;AAC5B,aAAKxB,WAAWS,KAAKe,IAAAA;AAErB,eAAO;MACT;AAEA,UAAIE,OAAOC,KAAKH,IAAAA,EAAMI,QAAQ;AAC5B,aAAK5B,WAAWS,KAAKoB,KAAKb,UAAUQ,IAAAA,CAAAA;AAEpC,eAAO;MACT;IACF;AAEA,WAAO;EACT;EAEAO,aAAa;AACX,UAAMC,SAAS,KAAK9B,UAAU+B,cAAc,KAAK/B,UAAU8B,UAAU,KAAK7B,OAAOD,UAAU8B;AAE3F,QAAIA,QAAQ;AACV,WAAKhC,WAAWS,KAAK,GAAGuB,MAAAA,EAAQ;AAEhC,YAAME,aAAa,KAAKhC,UAAUiC,iBAAiB,KAAKjC,UAAUgC,cAAc,KAAK/B,OAAOD,UAAUgC;AAEtG,UAAIA,YAAY;AACd,aAAKlC,WAAWS,KAAKyB,UAAAA;MACvB;IACF;AAEA,WAAO;EACT;EAEAE,QAAQ;AACN,WAAO,KAAKpC,WAAWmB,KAAK,GAAA;EAC9B;AACF;AAvIarB;AAAN,IAAMA,iBAAN;;;;;;;;;;;;;;AFKA,IAAMuC,iBAAN,MAAMA,uBAAsBC,4BAAAA;EACjCC,WAAWC,SAAkB;AAC3B,UAAMD,WAAWC,WAAWC,eAAeC,MAAM;EACnD;EAEAC,IAAIC,SAAiBJ,SAAkB;AACrC,UAAMK,MAAML,WAAW,KAAKA,WAAW;AAEvC,UAAMM,eAAyB;MAC7BL,eAAeM;MACfN,eAAeO;MACfP,eAAeQ;;AAGjB,QAAIH,aAAaI,SAASL,GAAAA,GAAM;AAC9B;IACF;AAEA,UAAMM,gBAAwC;MAC5C,CAACV,eAAeW,YAAY,GAAG;MAC/B,CAACX,eAAeY,gBAAgB,GAAG;IACrC;AAEA,UAAMC,aAAaH,cAAcN,GAAAA;AAEjC,QAAIS,YAAY;AACd,aAAOC,QAAQZ,IAAI,IAAIF,eAAeC,MAAM,KAAKY,UAAAA,EAAY;IAC/D;AAEA,WAAOC,QAAQZ,IAAI,IAAIE,GAAAA,KAAQD,OAAAA,EAAS;EAC1C;EAEAY,WAAWC,SAA+C;AACxD,UAAMC,uBAAuB,IAAIC,eAAAA;AAEjC,UAAMf,UAAUc,qBACbE,WAAWH,OAAAA,EACXI,SAAS,SAAA,EACTC,WAAU,EACVC,QAAO,EACPC,gBAAe,EACfC,MAAK;AAER,WAAO,KAAKtB,IAAIC,OAAAA;EAClB;EAEAsB,YAAYC,UAAoC;AAC9C,UAAMT,uBAAuB,IAAIC,eAAAA;AAEjC,UAAMf,UAAUc,qBACbU,YAAYD,QAAAA,EACZN,SAAS,UAAA,EACTC,WAAU,EACVC,QAAO,EACPC,gBAAe,EACfK,WAAU,EACVC,iBAAgB,EAChBL,MAAK;AAER,WAAO,KAAKtB,IAAIC,OAAAA;EAClB;EAEA2B,gBAAgBC,OAAmB;AACjC,UAAMd,uBAAuB,IAAIC,eAAAA;AAEjC,UAAMf,UAAUc,qBACbe,SAASD,KAAAA,EACTX,SAAS,OAAA,EACTC,WAAU,EACVC,QAAO,EACPC,gBAAe,EACfK,WAAU,EACVC,iBAAgB,EAChBL,MAAK;AAER,WAAO,KAAKtB,IAAIC,OAAAA;EAClB;AACF;AA7EmCN;AAA5B,IAAMD,gBAAN;AAAMA,gBAAAA,aAAAA;MAHZqC,0BAAW;IACVC,OAAOC,oBAAMC;EACf,CAAA;GACaxC,aAAAA;;;AGTb,IAAAyC,iBAA2C;;;;;;;;;;;;AAMpC,IAAMC,oBAAN,MAAMA,kBAAAA;EACXC,IAAIC,SAAkBC,UAAoBC,MAAoB;AAC5D,UAAMC,gBAAgB,IAAIC,cAAAA;AAE1BD,kBAAcE,WAAWC,eAAeC,MAAM;AAE9CJ,kBAAcK,WAAWR,OAAAA;AAEzBC,aAASQ,GAAG,UAAU,MAAA;AACpBN,oBAAcO,YAAYT,QAAAA;IAC5B,CAAA;AAEA,WAAOC,KAAAA;EACT;AACF;AAdaJ;AAAN,IAAMA,mBAAN;AAAMA,mBAAAA,cAAAA;MADZa,2BAAAA;GACYb,gBAAAA;;;;;;;;;;;;;;AJGN,IAAMc,gBAAN,MAAMA,cAAAA;EACXC,UAAUC,UAA8B;AACtCA,aAASC,MAAMC,gBAAAA,EAAkBC,UAAU,GAAA;EAC7C;AACF;AAJaL;AAAN,IAAMA,eAAN;AAAMA,eAAAA,cAAAA;MALZM,uBAAAA;MACAC,uBAAO;IACNC,WAAW;MAACC;;IACZC,SAAS;MAACD;;EACZ,CAAA;GACaT,YAAAA;","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","TRANSIENT","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
|
@@ -10,7 +10,7 @@ var __publicField = (obj, key, value) => {
|
|
|
10
10
|
import { Global, Module } from "@nestjs/common";
|
|
11
11
|
|
|
12
12
|
// src/service.ts
|
|
13
|
-
import { ConsoleLogger, Injectable } from "@nestjs/common";
|
|
13
|
+
import { ConsoleLogger, Injectable, Scope } from "@nestjs/common";
|
|
14
14
|
|
|
15
15
|
// src/types.ts
|
|
16
16
|
var LoggerContexts;
|
|
@@ -173,7 +173,9 @@ var _LoggerService = class _LoggerService extends ConsoleLogger {
|
|
|
173
173
|
__name(_LoggerService, "LoggerService");
|
|
174
174
|
var LoggerService = _LoggerService;
|
|
175
175
|
LoggerService = _ts_decorate([
|
|
176
|
-
Injectable(
|
|
176
|
+
Injectable({
|
|
177
|
+
scope: Scope.TRANSIENT
|
|
178
|
+
})
|
|
177
179
|
], LoggerService);
|
|
178
180
|
|
|
179
181
|
// src/middleware.ts
|
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":["Global","Module","ConsoleLogger","Injectable","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","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"]}
|
|
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.TRANSIENT,\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","TRANSIENT","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"]}
|