@xfe-repo/bff-core 1.1.0 → 1.2.1

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
@@ -2,7 +2,8 @@ import { Response, Request } from 'express';
2
2
  export { Request, Response } from 'express';
3
3
  import * as nestjs_cls from 'nestjs-cls';
4
4
  import { ClsStore, Terminal, ClsService } from 'nestjs-cls';
5
- import { DynamicModule, Type, INestApplication } from '@nestjs/common';
5
+ import { DynamicModule, INestApplication, Type } from '@nestjs/common';
6
+ import { Logger } from 'nestjs-pino';
6
7
  export * from '@nestjs/swagger';
7
8
  export * from '@nestjs/swagger/dist/constants';
8
9
  export { AppProvider } from './AppProvider.mjs';
@@ -78,6 +79,18 @@ declare class CtxService {
78
79
  setTrack(track: any): void;
79
80
  }
80
81
 
82
+ interface LoggerModuleOptions {
83
+ global?: boolean;
84
+ logDir?: string;
85
+ }
86
+ declare class LoggerModule {
87
+ static register(options: LoggerModuleOptions): DynamicModule;
88
+ }
89
+
90
+ declare class PinoLogger extends Logger {
91
+ log(message: any, context?: string): void;
92
+ }
93
+
81
94
  interface SwaggerSetupOptions {
82
95
  title: string;
83
96
  path: string;
@@ -96,4 +109,4 @@ declare class SwaggerConfig {
96
109
  private static getApiPath;
97
110
  }
98
111
 
99
- export { type CtxHeaders, CtxModule, type CtxModuleOptions, CtxService, type CtxStore, type CtxTrack, type CtxUser, type RequestCtx, type ResponseCtx, SwaggerConfig, type SwaggerSetupOptions };
112
+ export { type CtxHeaders, CtxModule, type CtxModuleOptions, CtxService, type CtxStore, type CtxTrack, type CtxUser, LoggerModule, type LoggerModuleOptions, PinoLogger, type RequestCtx, type ResponseCtx, SwaggerConfig, type SwaggerSetupOptions };
package/dist/index.d.ts CHANGED
@@ -2,7 +2,8 @@ import { Response, Request } from 'express';
2
2
  export { Request, Response } from 'express';
3
3
  import * as nestjs_cls from 'nestjs-cls';
4
4
  import { ClsStore, Terminal, ClsService } from 'nestjs-cls';
5
- import { DynamicModule, Type, INestApplication } from '@nestjs/common';
5
+ import { DynamicModule, INestApplication, Type } from '@nestjs/common';
6
+ import { Logger } from 'nestjs-pino';
6
7
  export * from '@nestjs/swagger';
7
8
  export * from '@nestjs/swagger/dist/constants';
8
9
  export { AppProvider } from './AppProvider.js';
@@ -78,6 +79,18 @@ declare class CtxService {
78
79
  setTrack(track: any): void;
79
80
  }
80
81
 
82
+ interface LoggerModuleOptions {
83
+ global?: boolean;
84
+ logDir?: string;
85
+ }
86
+ declare class LoggerModule {
87
+ static register(options: LoggerModuleOptions): DynamicModule;
88
+ }
89
+
90
+ declare class PinoLogger extends Logger {
91
+ log(message: any, context?: string): void;
92
+ }
93
+
81
94
  interface SwaggerSetupOptions {
82
95
  title: string;
83
96
  path: string;
@@ -96,4 +109,4 @@ declare class SwaggerConfig {
96
109
  private static getApiPath;
97
110
  }
98
111
 
99
- export { type CtxHeaders, CtxModule, type CtxModuleOptions, CtxService, type CtxStore, type CtxTrack, type CtxUser, type RequestCtx, type ResponseCtx, SwaggerConfig, type SwaggerSetupOptions };
112
+ export { type CtxHeaders, CtxModule, type CtxModuleOptions, CtxService, type CtxStore, type CtxTrack, type CtxUser, LoggerModule, type LoggerModuleOptions, PinoLogger, type RequestCtx, type ResponseCtx, SwaggerConfig, type SwaggerSetupOptions };
package/dist/index.js CHANGED
@@ -32,16 +32,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
32
32
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
33
33
 
34
34
  // src/index.ts
35
- var src_exports = {};
36
- __export(src_exports, {
35
+ var index_exports = {};
36
+ __export(index_exports, {
37
37
  AppProvider: () => AppProvider,
38
38
  CoreModule: () => CoreModule,
39
39
  CtxModule: () => CtxModule,
40
40
  CtxService: () => CtxService,
41
+ LoggerModule: () => LoggerModule,
42
+ PinoLogger: () => PinoLogger,
41
43
  SwaggerConfig: () => SwaggerConfig,
42
44
  createApp: () => createApp
43
45
  });
44
- module.exports = __toCommonJS(src_exports);
46
+ module.exports = __toCommonJS(index_exports);
45
47
 
46
48
  // src/ctx/ctx.module.ts
47
49
  var import_common2 = require("@nestjs/common");
@@ -182,6 +184,136 @@ CtxModule = _ts_decorate2([
182
184
  })
183
185
  ], CtxModule);
184
186
 
187
+ // src/logger/logger.module.ts
188
+ var import_common4 = require("@nestjs/common");
189
+ var import_nestjs_pino2 = require("nestjs-pino");
190
+
191
+ // src/logger/pino.logger.ts
192
+ var import_common3 = require("@nestjs/common");
193
+ var import_nestjs_pino = require("nestjs-pino");
194
+ function _ts_decorate3(decorators, target, key, desc) {
195
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
196
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
197
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
198
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
199
+ }
200
+ __name(_ts_decorate3, "_ts_decorate");
201
+ var SKIP_CONTEXTS = [
202
+ "NestFactory",
203
+ "InstanceLoader",
204
+ "RoutesResolver",
205
+ "RouterExplorer",
206
+ "ClientProxy"
207
+ ];
208
+ var _PinoLogger = class _PinoLogger extends import_nestjs_pino.Logger {
209
+ log(message, context) {
210
+ if (context && SKIP_CONTEXTS.includes(context)) return;
211
+ super.log(message, context);
212
+ }
213
+ };
214
+ __name(_PinoLogger, "PinoLogger");
215
+ var PinoLogger = _PinoLogger;
216
+ PinoLogger = _ts_decorate3([
217
+ (0, import_common3.Injectable)()
218
+ ], PinoLogger);
219
+
220
+ // src/logger/logger.module.ts
221
+ function _ts_decorate4(decorators, target, key, desc) {
222
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
223
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
224
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
225
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
226
+ }
227
+ __name(_ts_decorate4, "_ts_decorate");
228
+ var _LoggerModule = class _LoggerModule {
229
+ static register(options) {
230
+ const { global, logDir = "./var/log" } = options;
231
+ return {
232
+ global,
233
+ module: _LoggerModule,
234
+ imports: [
235
+ import_nestjs_pino2.LoggerModule.forRootAsync({
236
+ inject: [
237
+ CtxService
238
+ ],
239
+ useFactory: /* @__PURE__ */ __name((ctx) => {
240
+ const isProd = process.env.NODE_ENV === "production";
241
+ const stdTargets = [
242
+ {
243
+ target: "pino-pretty",
244
+ options: {
245
+ colorize: true,
246
+ minimumLevel: "debug",
247
+ ignore: "pid,hostname",
248
+ messageFormat: "{if context}[{context}]: {end} {msg} {if responseTime}{responseTime}ms {end}",
249
+ singleLine: true
250
+ }
251
+ }
252
+ ];
253
+ const fileTargets = [
254
+ {
255
+ level: "error",
256
+ target: "pino/file",
257
+ options: {
258
+ destination: `${logDir}/bff-err.log`,
259
+ mkdir: true
260
+ }
261
+ },
262
+ {
263
+ level: "debug",
264
+ target: "pino/file",
265
+ options: {
266
+ destination: `${logDir}/bff-out.log`,
267
+ mkdir: true
268
+ }
269
+ }
270
+ ];
271
+ return {
272
+ pinoHttp: {
273
+ transport: {
274
+ targets: isProd ? [
275
+ ...stdTargets,
276
+ ...fileTargets
277
+ ] : stdTargets
278
+ },
279
+ // genReqId: _req => ctx.traceid,
280
+ // customAttributeKeys: { reqId: 'traceid' },
281
+ serializers: {
282
+ req(req) {
283
+ delete req.id;
284
+ req.traceid = ctx.traceid;
285
+ req.headers.business = req.raw.headers.business;
286
+ req.headers.usertoken = req.raw.headers.usertoken;
287
+ req.headers.authorization = req.raw.headers.authorization;
288
+ req.headers.version = req.raw.headers.version;
289
+ req.url = `${req.raw.protocol}://${req.headers.host}${req.url}`;
290
+ req.body = req.raw.body;
291
+ req.user = req.raw.user;
292
+ req.tracks = ctx.tracks;
293
+ return req;
294
+ }
295
+ }
296
+ }
297
+ };
298
+ }, "useFactory")
299
+ })
300
+ ]
301
+ };
302
+ }
303
+ };
304
+ __name(_LoggerModule, "LoggerModule");
305
+ var LoggerModule = _LoggerModule;
306
+ LoggerModule = _ts_decorate4([
307
+ (0, import_common4.Module)({
308
+ providers: [
309
+ PinoLogger
310
+ ],
311
+ exports: [
312
+ PinoLogger
313
+ ]
314
+ })
315
+ ], LoggerModule);
316
+
185
317
  // src/swagger/index.ts
186
318
  var swagger_exports = {};
187
319
  __export(swagger_exports, {
@@ -230,17 +362,17 @@ __reExport(swagger_exports, require("@nestjs/swagger"));
230
362
  __reExport(swagger_exports, require("@nestjs/swagger/dist/constants"));
231
363
 
232
364
  // src/index.ts
233
- __reExport(src_exports, swagger_exports, module.exports);
365
+ __reExport(index_exports, swagger_exports, module.exports);
234
366
 
235
367
  // src/AppProvider.ts
236
- var import_common3 = require("@nestjs/common");
237
- function _ts_decorate3(decorators, target, key, desc) {
368
+ var import_common5 = require("@nestjs/common");
369
+ function _ts_decorate5(decorators, target, key, desc) {
238
370
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
239
371
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
240
372
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
241
373
  return c > 3 && r && Object.defineProperty(target, key, r), r;
242
374
  }
243
- __name(_ts_decorate3, "_ts_decorate");
375
+ __name(_ts_decorate5, "_ts_decorate");
244
376
  var _AppProvider = class _AppProvider {
245
377
  static setInstance(app) {
246
378
  this.instance = app;
@@ -252,25 +384,25 @@ var _AppProvider = class _AppProvider {
252
384
  __name(_AppProvider, "AppProvider");
253
385
  __publicField(_AppProvider, "instance");
254
386
  var AppProvider = _AppProvider;
255
- AppProvider = _ts_decorate3([
256
- (0, import_common3.Injectable)()
387
+ AppProvider = _ts_decorate5([
388
+ (0, import_common5.Injectable)()
257
389
  ], AppProvider);
258
390
 
259
391
  // src/core.module.ts
260
- var import_common4 = require("@nestjs/common");
261
- function _ts_decorate4(decorators, target, key, desc) {
392
+ var import_common6 = require("@nestjs/common");
393
+ function _ts_decorate6(decorators, target, key, desc) {
262
394
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
263
395
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
264
396
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
265
397
  return c > 3 && r && Object.defineProperty(target, key, r), r;
266
398
  }
267
- __name(_ts_decorate4, "_ts_decorate");
399
+ __name(_ts_decorate6, "_ts_decorate");
268
400
  var _CoreModule = class _CoreModule {
269
401
  };
270
402
  __name(_CoreModule, "CoreModule");
271
403
  var CoreModule = _CoreModule;
272
- CoreModule = _ts_decorate4([
273
- (0, import_common4.Module)({
404
+ CoreModule = _ts_decorate6([
405
+ (0, import_common6.Module)({
274
406
  providers: [
275
407
  AppProvider
276
408
  ],
@@ -308,6 +440,8 @@ __name(createApp, "createApp");
308
440
  CoreModule,
309
441
  CtxModule,
310
442
  CtxService,
443
+ LoggerModule,
444
+ PinoLogger,
311
445
  SwaggerConfig,
312
446
  createApp
313
447
  });
package/dist/index.mjs CHANGED
@@ -11,25 +11,162 @@ import {
11
11
  import {
12
12
  AppProvider,
13
13
  __export,
14
+ __name,
14
15
  __reExport
15
16
  } from "./chunk-W3DNSORE.mjs";
16
17
 
17
18
  // src/index.ts
18
- var src_exports = {};
19
- __export(src_exports, {
19
+ var index_exports = {};
20
+ __export(index_exports, {
20
21
  AppProvider: () => AppProvider,
21
22
  CoreModule: () => CoreModule,
22
23
  CtxModule: () => CtxModule,
23
24
  CtxService: () => CtxService,
25
+ LoggerModule: () => LoggerModule,
26
+ PinoLogger: () => PinoLogger,
24
27
  SwaggerConfig: () => SwaggerConfig,
25
28
  createApp: () => createApp
26
29
  });
27
- __reExport(src_exports, swagger_exports);
30
+
31
+ // src/logger/logger.module.ts
32
+ import { Module } from "@nestjs/common";
33
+ import { LoggerModule as PinoLoggerModule } from "nestjs-pino";
34
+
35
+ // src/logger/pino.logger.ts
36
+ import { Injectable } from "@nestjs/common";
37
+ import { Logger } from "nestjs-pino";
38
+ function _ts_decorate(decorators, target, key, desc) {
39
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
42
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
43
+ }
44
+ __name(_ts_decorate, "_ts_decorate");
45
+ var SKIP_CONTEXTS = [
46
+ "NestFactory",
47
+ "InstanceLoader",
48
+ "RoutesResolver",
49
+ "RouterExplorer",
50
+ "ClientProxy"
51
+ ];
52
+ var _PinoLogger = class _PinoLogger extends Logger {
53
+ log(message, context) {
54
+ if (context && SKIP_CONTEXTS.includes(context)) return;
55
+ super.log(message, context);
56
+ }
57
+ };
58
+ __name(_PinoLogger, "PinoLogger");
59
+ var PinoLogger = _PinoLogger;
60
+ PinoLogger = _ts_decorate([
61
+ Injectable()
62
+ ], PinoLogger);
63
+
64
+ // src/logger/logger.module.ts
65
+ function _ts_decorate2(decorators, target, key, desc) {
66
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
67
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
68
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
69
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
70
+ }
71
+ __name(_ts_decorate2, "_ts_decorate");
72
+ var _LoggerModule = class _LoggerModule {
73
+ static register(options) {
74
+ const { global, logDir = "./var/log" } = options;
75
+ return {
76
+ global,
77
+ module: _LoggerModule,
78
+ imports: [
79
+ PinoLoggerModule.forRootAsync({
80
+ inject: [
81
+ CtxService
82
+ ],
83
+ useFactory: /* @__PURE__ */ __name((ctx) => {
84
+ const isProd = process.env.NODE_ENV === "production";
85
+ const stdTargets = [
86
+ {
87
+ target: "pino-pretty",
88
+ options: {
89
+ colorize: true,
90
+ minimumLevel: "debug",
91
+ ignore: "pid,hostname",
92
+ messageFormat: "{if context}[{context}]: {end} {msg} {if responseTime}{responseTime}ms {end}",
93
+ singleLine: true
94
+ }
95
+ }
96
+ ];
97
+ const fileTargets = [
98
+ {
99
+ level: "error",
100
+ target: "pino/file",
101
+ options: {
102
+ destination: `${logDir}/bff-err.log`,
103
+ mkdir: true
104
+ }
105
+ },
106
+ {
107
+ level: "debug",
108
+ target: "pino/file",
109
+ options: {
110
+ destination: `${logDir}/bff-out.log`,
111
+ mkdir: true
112
+ }
113
+ }
114
+ ];
115
+ return {
116
+ pinoHttp: {
117
+ transport: {
118
+ targets: isProd ? [
119
+ ...stdTargets,
120
+ ...fileTargets
121
+ ] : stdTargets
122
+ },
123
+ // genReqId: _req => ctx.traceid,
124
+ // customAttributeKeys: { reqId: 'traceid' },
125
+ serializers: {
126
+ req(req) {
127
+ delete req.id;
128
+ req.traceid = ctx.traceid;
129
+ req.headers.business = req.raw.headers.business;
130
+ req.headers.usertoken = req.raw.headers.usertoken;
131
+ req.headers.authorization = req.raw.headers.authorization;
132
+ req.headers.version = req.raw.headers.version;
133
+ req.url = `${req.raw.protocol}://${req.headers.host}${req.url}`;
134
+ req.body = req.raw.body;
135
+ req.user = req.raw.user;
136
+ req.tracks = ctx.tracks;
137
+ return req;
138
+ }
139
+ }
140
+ }
141
+ };
142
+ }, "useFactory")
143
+ })
144
+ ]
145
+ };
146
+ }
147
+ };
148
+ __name(_LoggerModule, "LoggerModule");
149
+ var LoggerModule = _LoggerModule;
150
+ LoggerModule = _ts_decorate2([
151
+ Module({
152
+ providers: [
153
+ PinoLogger
154
+ ],
155
+ exports: [
156
+ PinoLogger
157
+ ]
158
+ })
159
+ ], LoggerModule);
160
+
161
+ // src/index.ts
162
+ __reExport(index_exports, swagger_exports);
28
163
  export {
29
164
  AppProvider,
30
165
  CoreModule,
31
166
  CtxModule,
32
167
  CtxService,
168
+ LoggerModule,
169
+ PinoLogger,
33
170
  SwaggerConfig,
34
171
  createApp
35
172
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xfe-repo/bff-core",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "sideEffects": false,
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,25 +20,26 @@
20
20
  "dist"
21
21
  ],
22
22
  "dependencies": {
23
+ "@nestjs/common": "^11.1.12",
24
+ "@nestjs/config": "^4.0.2",
25
+ "@nestjs/core": "^11.1.12",
26
+ "@nestjs/platform-express": "^11.1.12",
27
+ "@nestjs/swagger": "^11.2.5",
23
28
  "nestjs-cls": "^6.2.0",
29
+ "nestjs-pino": "^4.5.0",
30
+ "pino-pretty": "^13.1.3",
24
31
  "request-ip": "^3.3.0",
25
32
  "uuid": "^11.1.0"
26
33
  },
27
34
  "devDependencies": {
35
+ "@nestjs/testing": "^11.1.12",
28
36
  "@types/node": "^25.0.10",
29
37
  "@types/request-ip": "^0.0.41",
30
38
  "@types/express": "^5.0.6",
31
39
  "@xfe-repo/eslint-config": "0.0.5",
32
40
  "@xfe-repo/typescript-config": "0.0.6"
33
41
  },
34
- "peerDependencies": {
35
- "@nestjs/common": "^11.1.12",
36
- "@nestjs/config": "^4.0.2",
37
- "@nestjs/core": "^11.1.12",
38
- "@nestjs/platform-express": "^11.1.12",
39
- "@nestjs/swagger": "^11.2.5",
40
- "@nestjs/testing": "^11.1.12"
41
- },
42
+ "peerDependencies": {},
42
43
  "publishConfig": {
43
44
  "registry": "https://registry.npmjs.org/"
44
45
  },