@gennext/lb-infra 0.0.7 → 0.0.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.
Files changed (56) hide show
  1. package/dist/helpers/logger/common/types.d.ts +15 -0
  2. package/dist/helpers/logger/common/types.d.ts.map +1 -1
  3. package/dist/helpers/logger/common/types.js +19 -1
  4. package/dist/helpers/logger/common/types.js.map +1 -1
  5. package/dist/helpers/logger/config.d.ts +34 -0
  6. package/dist/helpers/logger/config.d.ts.map +1 -0
  7. package/dist/helpers/logger/config.js +71 -0
  8. package/dist/helpers/logger/config.js.map +1 -0
  9. package/dist/helpers/logger/enhanced-factory.d.ts +1 -1
  10. package/dist/helpers/logger/factory.d.ts +41 -1
  11. package/dist/helpers/logger/factory.d.ts.map +1 -1
  12. package/dist/helpers/logger/factory.js +98 -5
  13. package/dist/helpers/logger/factory.js.map +1 -1
  14. package/dist/helpers/logger/http/access-logger.d.ts +25 -4
  15. package/dist/helpers/logger/http/access-logger.d.ts.map +1 -1
  16. package/dist/helpers/logger/http/access-logger.js +159 -22
  17. package/dist/helpers/logger/http/access-logger.js.map +1 -1
  18. package/dist/helpers/logger/http/client-ip.d.ts +1 -1
  19. package/dist/helpers/logger/http/client-ip.d.ts.map +1 -1
  20. package/dist/helpers/logger/http/client-ip.js +4 -15
  21. package/dist/helpers/logger/http/client-ip.js.map +1 -1
  22. package/dist/helpers/logger/http/index.d.ts +1 -1
  23. package/dist/helpers/logger/http/index.d.ts.map +1 -1
  24. package/dist/helpers/logger/http/index.js +1 -1
  25. package/dist/helpers/logger/http/index.js.map +1 -1
  26. package/dist/helpers/logger/http/request-context.d.ts.map +1 -1
  27. package/dist/helpers/logger/http/request-context.js +2 -6
  28. package/dist/helpers/logger/http/request-context.js.map +1 -1
  29. package/dist/helpers/logger/http/request-id-manager.d.ts +17 -0
  30. package/dist/helpers/logger/http/request-id-manager.d.ts.map +1 -0
  31. package/dist/helpers/logger/http/request-id-manager.js +98 -0
  32. package/dist/helpers/logger/http/request-id-manager.js.map +1 -0
  33. package/dist/helpers/logger/http/types.d.ts +10 -6
  34. package/dist/helpers/logger/http/types.d.ts.map +1 -1
  35. package/dist/helpers/logger/index.d.ts +1 -0
  36. package/dist/helpers/logger/index.d.ts.map +1 -1
  37. package/dist/helpers/logger/index.js +1 -0
  38. package/dist/helpers/logger/index.js.map +1 -1
  39. package/dist/helpers/logger/transports/dgram.transport.d.ts +2 -2
  40. package/dist/helpers/logger/transports/dgram.transport.d.ts.map +1 -1
  41. package/dist/helpers/logger/transports/dgram.transport.js +6 -11
  42. package/dist/helpers/logger/transports/dgram.transport.js.map +1 -1
  43. package/dist/helpers/logger/transports/index.d.ts +1 -1
  44. package/dist/utilities/lodash.utility.d.ts +3 -0
  45. package/dist/utilities/lodash.utility.d.ts.map +1 -0
  46. package/dist/utilities/lodash.utility.js +11 -0
  47. package/dist/utilities/lodash.utility.js.map +1 -0
  48. package/dist/utilities/request.utility.d.ts +2 -1
  49. package/dist/utilities/request.utility.d.ts.map +1 -1
  50. package/dist/utilities/request.utility.js +15 -5
  51. package/dist/utilities/request.utility.js.map +1 -1
  52. package/package.json +2 -1
  53. package/dist/helpers/logger/http/data-masking.d.ts +0 -13
  54. package/dist/helpers/logger/http/data-masking.d.ts.map +0 -1
  55. package/dist/helpers/logger/http/data-masking.js +0 -77
  56. package/dist/helpers/logger/http/data-masking.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import dgram from "node:dgram";
2
- import Transport from "winston-transport";
1
+ import dgram from 'node:dgram';
2
+ import Transport from 'winston-transport';
3
3
  export interface IDgramTransportOptions extends Transport.TransportStreamOptions {
4
4
  label: string;
5
5
  host: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dgram.transport.d.ts","sourceRoot":"","sources":["../../../../src/helpers/logger/transports/dgram.transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,MAAM,WAAW,sBACf,SAAQ,SAAS,CAAC,sBAAsB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;CACpC;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,MAAM,CAAsB;gBAExB,IAAI,EAAE,sBAAsB;IAoBxC,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACrC,cAAc,GAAG,IAAI;IAcxB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,aAAa;IAUZ,GAAG,CACV,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,EACD,QAAQ,EAAE,QAAQ;CAyBrB"}
1
+ {"version":3,"file":"dgram.transport.d.ts","sourceRoot":"","sources":["../../../../src/helpers/logger/transports/dgram.transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,MAAM,WAAW,sBAAuB,SAAQ,SAAS,CAAC,sBAAsB;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;CACpC;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,MAAM,CAAsB;gBAExB,IAAI,EAAE,sBAAsB;IAaxC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,cAAc,GAAG,IAAI;IAcjF,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,aAAa;IAKZ,GAAG,CACV,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,EACD,QAAQ,EAAE,QAAQ;CAyBrB"}
@@ -31,7 +31,7 @@ class DgramTransport extends winston_transport_1.default {
31
31
  }
32
32
  establish(opts) {
33
33
  this.client = node_dgram_1.default.createSocket(opts.socketOptions);
34
- this.client.on("error", (error) => {
34
+ this.client.on('error', error => {
35
35
  this.client?.close();
36
36
  this.client = null;
37
37
  throw (0, utilities_1.getError)({
@@ -42,18 +42,13 @@ class DgramTransport extends winston_transport_1.default {
42
42
  }
43
43
  formatMessage(opts) {
44
44
  const { timestamp, label, message, ...rest } = opts;
45
- return [
46
- timestamp,
47
- `[${this.label ?? label}]`,
48
- rest[Symbol.for("level")],
49
- message,
50
- ].join(" ");
45
+ return [timestamp, `[${this.label ?? label}]`, rest[Symbol.for('level')], message].join(' ');
51
46
  }
52
47
  log(opts, callback) {
53
48
  setImmediate(() => {
54
- this.emit("logged", opts);
49
+ this.emit('logged', opts);
55
50
  });
56
- const logLevel = opts[Symbol.for("level")];
51
+ const logLevel = opts[Symbol.for('level')];
57
52
  if (!this.triggerLevels.has(logLevel)) {
58
53
  callback();
59
54
  return;
@@ -62,9 +57,9 @@ class DgramTransport extends winston_transport_1.default {
62
57
  this.establish({ socketOptions: this.socketOptions });
63
58
  }
64
59
  const message = this.formatMessage(opts);
65
- this.client?.send(message, this.port, this.host, (error) => {
60
+ this.client?.send(message, this.port, this.host, error => {
66
61
  if (error) {
67
- this.emit("error", error);
62
+ this.emit('error', error);
68
63
  }
69
64
  callback();
70
65
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dgram.transport.js","sourceRoot":"","sources":["../../../../src/helpers/logger/transports/dgram.transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dgram.transport.js","sourceRoot":"","sources":["../../../../src/helpers/logger/transports/dgram.transport.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export * from "./dgram.transport";
1
+ export * from './dgram.transport';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { default as get } from 'lodash/get';
2
+ export { default as set } from 'lodash/set';
3
+ //# sourceMappingURL=lodash.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lodash.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/lodash.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.set = exports.get = void 0;
7
+ var get_1 = require("lodash/get");
8
+ Object.defineProperty(exports, "get", { enumerable: true, get: function () { return __importDefault(get_1).default; } });
9
+ var set_1 = require("lodash/set");
10
+ Object.defineProperty(exports, "set", { enumerable: true, get: function () { return __importDefault(set_1).default; } });
11
+ //# sourceMappingURL=lodash.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lodash.utility.js","sourceRoot":"","sources":["../../src/utilities/lodash.utility.ts"],"names":[],"mappings":";;;;;;AAAA,kCAA4C;AAAnC,2GAAA,OAAO,OAAO;AACvB,kCAA4C;AAAnC,2GAAA,OAAO,OAAO"}
@@ -1,6 +1,6 @@
1
- import { IRequestedRemark } from '../common';
2
1
  import { Request, Response } from '@loopback/rest';
3
2
  import multer from 'multer';
3
+ import { IRequestedRemark } from '../common';
4
4
  export declare const parseMultipartBody: (opts: {
5
5
  storage?: multer.StorageEngine;
6
6
  request: Request;
@@ -18,4 +18,5 @@ export declare const getRequestIp: (opts: {
18
18
  export declare const getRequestRemark: (opts: {
19
19
  request: Request;
20
20
  }) => IRequestedRemark | undefined;
21
+ export declare const genHTTPRequestId: () => string;
21
22
  //# sourceMappingURL=request.utility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/request.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAEtE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,eAAO,MAAM,kBAAkB,GAAI,MAAM;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB,iBAeA,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,OAAO,QAAQ,GAAG;IAAE,SAAS,EAAE,CAAC,CAAA;CAAE,0CAEnF,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,cAEtD,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,WAEtD,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAI,MAAM;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,KAAG,gBAAgB,GAAG,SAEhF,CAAC"}
1
+ {"version":3,"file":"request.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/request.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AACtE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI5C,eAAO,MAAM,kBAAkB,GAAI,MAAM;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB,iBAeA,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,OAAO,QAAQ,GAAG;IAAE,SAAS,EAAE,CAAC,CAAA;CAAE,0CAEnF,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,cAEtD,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,WAEtD,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAI,MAAM;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,KAAG,gBAAgB,GAAG,SAEhF,CAAC;AAGF,eAAO,MAAM,gBAAgB,cAO5B,CAAC"}
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRequestRemark = exports.getRequestIp = exports.getRequestId = exports.getSchemaObject = exports.parseMultipartBody = void 0;
6
+ exports.genHTTPRequestId = exports.getRequestRemark = exports.getRequestIp = exports.getRequestId = exports.getSchemaObject = exports.parseMultipartBody = void 0;
7
7
  const rest_1 = require("@loopback/rest");
8
- const get_1 = __importDefault(require("lodash/get"));
9
8
  const multer_1 = __importDefault(require("multer"));
9
+ const uuid_1 = require("uuid");
10
+ const lodash_utility_1 = require("./lodash.utility");
10
11
  // -------------------------------------------------------------------------
11
12
  const parseMultipartBody = (opts) => {
12
13
  const { storage: cStorage, request, response } = opts;
@@ -30,17 +31,26 @@ const getSchemaObject = (ctor) => {
30
31
  exports.getSchemaObject = getSchemaObject;
31
32
  // -------------------------------------------------------------------------
32
33
  const getRequestId = (opts) => {
33
- return (0, get_1.default)(opts.request, 'requestId');
34
+ return (0, lodash_utility_1.get)(opts.request, 'requestId');
34
35
  };
35
36
  exports.getRequestId = getRequestId;
36
37
  // -------------------------------------------------------------------------
37
38
  const getRequestIp = (opts) => {
38
- return (0, get_1.default)(opts.request, 'requestForwardedIp') ?? 'N/A';
39
+ return (0, lodash_utility_1.get)(opts.request, 'requestForwardedIp') ?? 'N/A';
39
40
  };
40
41
  exports.getRequestIp = getRequestIp;
41
42
  // -------------------------------------------------------------------------
42
43
  const getRequestRemark = (opts) => {
43
- return (0, get_1.default)(opts.request, 'requestedRemark');
44
+ return (0, lodash_utility_1.get)(opts.request, 'requestedRemark');
44
45
  };
45
46
  exports.getRequestRemark = getRequestRemark;
47
+ // -------------------------------------------------------------------------
48
+ const genHTTPRequestId = () => {
49
+ const now = new Date();
50
+ const prefix = now.getFullYear().toString().padStart(4, '0') +
51
+ (now.getMonth() + 1).toString().padStart(2, '0') +
52
+ now.getDate().toString().padStart(2, '0');
53
+ return `${prefix}-${(0, uuid_1.v4)()}`;
54
+ };
55
+ exports.genHTTPRequestId = genHTTPRequestId;
46
56
  //# sourceMappingURL=request.utility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.utility.js","sourceRoot":"","sources":["../../src/utilities/request.utility.ts"],"names":[],"mappings":";;;;;;AACA,yCAAsE;AACtE,qDAA6B;AAC7B,oDAA4B;AAE5B,4EAA4E;AACrE,MAAM,kBAAkB,GAAG,CAAC,IAIlC,EAAE,EAAE;IACH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,IAAI,gBAAM,CAAC,aAAa,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnC,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC3C,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAnBW,QAAA,kBAAkB,sBAmB7B;AAEF,4EAA4E;AACrE,MAAM,eAAe,GAAG,CAAmB,IAAkC,EAAE,EAAE;IACtF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAA,wBAAiB,EAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEF,4EAA4E;AACrE,MAAM,YAAY,GAAG,CAAC,IAA0B,EAAE,EAAE;IACzD,OAAO,IAAA,aAAG,EAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEF,4EAA4E;AACrE,MAAM,YAAY,GAAG,CAAC,IAA0B,EAAE,EAAE;IACzD,OAAO,IAAA,aAAG,EAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,IAAI,KAAK,CAAC;AAC1D,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEF,4EAA4E;AACrE,MAAM,gBAAgB,GAAG,CAAC,IAA0B,EAAgC,EAAE;IAC3F,OAAO,IAAA,aAAG,EAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC9C,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
1
+ {"version":3,"file":"request.utility.js","sourceRoot":"","sources":["../../src/utilities/request.utility.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAsE;AACtE,oDAA4B;AAC5B,+BAAoC;AAGpC,qDAAuC;AAEvC,4EAA4E;AACrE,MAAM,kBAAkB,GAAG,CAAC,IAIlC,EAAE,EAAE;IACH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,IAAI,gBAAM,CAAC,aAAa,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnC,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC3C,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAnBW,QAAA,kBAAkB,sBAmB7B;AAEF,4EAA4E;AACrE,MAAM,eAAe,GAAG,CAAmB,IAAkC,EAAE,EAAE;IACtF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAA,wBAAiB,EAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEF,4EAA4E;AACrE,MAAM,YAAY,GAAG,CAAC,IAA0B,EAAE,EAAE;IACzD,OAAO,IAAA,oBAAG,EAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEF,4EAA4E;AACrE,MAAM,YAAY,GAAG,CAAC,IAA0B,EAAE,EAAE;IACzD,OAAO,IAAA,oBAAG,EAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,IAAI,KAAK,CAAC;AAC1D,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEF,4EAA4E;AACrE,MAAM,gBAAgB,GAAG,CAAC,IAA0B,EAAgC,EAAE;IAC3F,OAAO,IAAA,oBAAG,EAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC9C,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEF,4EAA4E;AACrE,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GACV,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC7C,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAChD,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,GAAG,MAAM,IAAI,IAAA,SAAM,GAAE,EAAE,CAAC;AACjC,CAAC,CAAC;AAPW,QAAA,gBAAgB,oBAO3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gennext/lb-infra",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "dependencies": {
5
5
  "@gennext/dev-configs": "^0.0.2",
6
6
  "@loopback/authentication": "^12.0.6",
@@ -20,6 +20,7 @@
20
20
  "dayjs": "^1.11.19",
21
21
  "ioredis": "^5.9.2",
22
22
  "lodash": "^4.17.21",
23
+ "maskdata": "^1.3.4",
23
24
  "multer": "^2.0.2",
24
25
  "uuid": "^13.0.0",
25
26
  "winston": "^3.19.0",
@@ -1,13 +0,0 @@
1
- import { IDataMaskingConfig } from './types';
2
- export declare class DataMasking {
3
- private static readonly DEFAULT_CONFIG;
4
- private static readonly EMAIL_REGEX;
5
- private static readonly PHONE_REGEX;
6
- private static readonly CREDIT_CARD_REGEX;
7
- private static readonly PASSWORD_FIELDS;
8
- private static readonly TOKEN_REGEX;
9
- static mask(data: any, config?: Partial<IDataMaskingConfig>): any;
10
- private static shouldMaskField;
11
- private static maskValue;
12
- }
13
- //# sourceMappingURL=data-masking.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-masking.d.ts","sourceRoot":"","sources":["../../../../src/helpers/logger/http/data-masking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAMpC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAA0D;IAC7F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CACiC;IACpE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IACvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyD;IAChG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAEtE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,GAAG;IAyBjE,OAAO,CAAC,MAAM,CAAC,eAAe;IAU9B,OAAO,CAAC,MAAM,CAAC,SAAS;CAoCzB"}
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DataMasking = void 0;
4
- class DataMasking {
5
- static { this.DEFAULT_CONFIG = {
6
- email: true,
7
- phone: true,
8
- creditCard: true,
9
- password: true,
10
- token: true,
11
- }; }
12
- static { this.EMAIL_REGEX = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g; }
13
- static { this.PHONE_REGEX = /\b(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})\b/g; }
14
- static { this.CREDIT_CARD_REGEX = /\b(?:\d[ -]*?){13,16}\b/g; }
15
- static { this.PASSWORD_FIELDS = ['password', 'pwd', 'pass', 'secret', 'token', 'key']; }
16
- static { this.TOKEN_REGEX = /\b[A-Za-z0-9+/]{20,}={0,2}\b/g; }
17
- static mask(data, config) {
18
- const maskConfig = { ...this.DEFAULT_CONFIG, ...config };
19
- if (typeof data !== 'object' || data === null) {
20
- return this.maskValue(data, maskConfig);
21
- }
22
- if (Array.isArray(data)) {
23
- return data.map(item => this.mask(item, maskConfig));
24
- }
25
- const masked = {};
26
- for (const [key, value] of Object.entries(data)) {
27
- if (this.shouldMaskField(key, maskConfig)) {
28
- masked[key] = this.maskValue(value, maskConfig);
29
- }
30
- else if (typeof value === 'object' && value !== null) {
31
- masked[key] = this.mask(value, maskConfig);
32
- }
33
- else {
34
- masked[key] = this.maskValue(value, maskConfig);
35
- }
36
- }
37
- return masked;
38
- }
39
- static shouldMaskField(fieldName, config) {
40
- const lowerFieldName = fieldName.toLowerCase();
41
- if (config.customFields?.includes(fieldName)) {
42
- return true;
43
- }
44
- return this.PASSWORD_FIELDS.some(field => lowerFieldName.includes(field));
45
- }
46
- static maskValue(value, config) {
47
- if (typeof value !== 'string') {
48
- return value;
49
- }
50
- let masked = value;
51
- if (config.email) {
52
- masked = masked.replace(this.EMAIL_REGEX, match => {
53
- const [username, domain] = match.split('@');
54
- const maskedUsername = username.charAt(0) +
55
- '*'.repeat(username.length - 2) +
56
- username.charAt(username.length - 1);
57
- return `${maskedUsername}@${domain}`;
58
- });
59
- }
60
- if (config.phone) {
61
- masked = masked.replace(this.PHONE_REGEX, '***-***-****');
62
- }
63
- if (config.creditCard) {
64
- masked = masked.replace(this.CREDIT_CARD_REGEX, match => {
65
- return '*'.repeat(match.length - 4) + match.slice(-4);
66
- });
67
- }
68
- if (config.token) {
69
- masked = masked.replace(this.TOKEN_REGEX, match => {
70
- return match.substring(0, 8) + '*'.repeat(match.length - 8);
71
- });
72
- }
73
- return masked;
74
- }
75
- }
76
- exports.DataMasking = DataMasking;
77
- //# sourceMappingURL=data-masking.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-masking.js","sourceRoot":"","sources":["../../../../src/helpers/logger/http/data-masking.ts"],"names":[],"mappings":"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"}