@diia-inhouse/diia-logger 2.15.0 → 3.1.0

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/config.js CHANGED
@@ -9,78 +9,84 @@ exports.defaultOptions = {
9
9
  endLengthToLog: 10,
10
10
  maxObjectDepth: 8,
11
11
  maxObjectBreadth: 50,
12
- redact: [
13
- 'inn',
14
- 'itn',
15
- 'client',
16
- 'firstName',
17
- 'lastName',
18
- 'middleName',
19
- 'firstname',
20
- 'lastname',
21
- 'middlename',
22
- 'first_name',
23
- 'last_name',
24
- 'middle_name',
25
- 'passportSeries',
26
- 'passportNumber',
27
- 'email',
28
- 'addressOfRegistration',
29
- 'addressOfBirth',
30
- 'birthDay',
31
- 'birthday',
32
- 'fio',
33
- 'passport',
34
- 'phone',
35
- 'address',
36
- 'birthplace',
37
- 'fullName',
38
- 'phoneNumber',
39
- 'extraPhoneNumber',
40
- 'refreshToken',
41
- 'token',
42
- 'fName',
43
- 'lName',
44
- 'mName',
45
- 'DocNumberDRFO',
46
- 'GivenName',
47
- 'PatronymicName',
48
- 'FamilyName',
49
- 'surname',
50
- 'patronymic',
51
- 'rnokpp',
52
- 'document',
53
- 'firstNameUA',
54
- 'lastNameUA',
55
- 'middleNameUA',
56
- 'serialNumber',
57
- 'department',
58
- 'departmentUA',
59
- 'departmentEN',
60
- 'birthPlaceUA',
61
- 'birthPlaceEN',
62
- 'recordNumber',
63
- 'firstNameEN',
64
- 'lastNameEN',
65
- 'docNumber',
66
- 'documentRegistrationPlaceUA',
67
- 'currentRegistrationPlaceUA',
68
- 'registrationPlace',
69
- 'birthDate',
70
- 'categories',
71
- 'photo',
72
- 'sign',
73
- 'docIdentity',
74
- 'collegeName',
75
- 'facultyName',
76
- 'educationType',
77
- 'vehicleLicenseId',
78
- 'website',
79
- 'vin',
80
- 'licensePlate',
81
- 'dateReg',
82
- 'dateFirstReg',
83
- 'number',
84
- ],
12
+ redact: {
13
+ fields: [
14
+ 'inn',
15
+ 'itn',
16
+ 'client',
17
+ 'firstName',
18
+ 'lastName',
19
+ 'middleName',
20
+ 'firstname',
21
+ 'lastname',
22
+ 'middlename',
23
+ 'first_name',
24
+ 'last_name',
25
+ 'middle_name',
26
+ 'passportSeries',
27
+ 'passportNumber',
28
+ 'email',
29
+ 'addressOfRegistration',
30
+ 'addressOfBirth',
31
+ 'birthDay',
32
+ 'birthday',
33
+ 'fio',
34
+ 'passport',
35
+ 'phone',
36
+ 'address',
37
+ 'birthplace',
38
+ 'fullName',
39
+ 'full_name',
40
+ 'phoneNumber',
41
+ 'extraPhoneNumber',
42
+ 'refreshToken',
43
+ 'token',
44
+ 'fName',
45
+ 'lName',
46
+ 'mName',
47
+ 'DocNumberDRFO',
48
+ 'GivenName',
49
+ 'PatronymicName',
50
+ 'FamilyName',
51
+ 'surname',
52
+ 'patronymic',
53
+ 'rnokpp',
54
+ 'document',
55
+ 'firstNameUA',
56
+ 'lastNameUA',
57
+ 'middleNameUA',
58
+ 'serialNumber',
59
+ 'department',
60
+ 'departmentUA',
61
+ 'departmentEN',
62
+ 'birthPlaceUA',
63
+ 'birthPlaceEN',
64
+ 'recordNumber',
65
+ 'firstNameEN',
66
+ 'lastNameEN',
67
+ 'docNumber',
68
+ 'documentRegistrationPlaceUA',
69
+ 'currentRegistrationPlaceUA',
70
+ 'registrationPlace',
71
+ 'birthDate',
72
+ 'categories',
73
+ 'photo',
74
+ 'sign',
75
+ 'docIdentity',
76
+ 'collegeName',
77
+ 'facultyName',
78
+ 'educationType',
79
+ 'vehicleLicenseId',
80
+ 'website',
81
+ 'vin',
82
+ 'licensePlate',
83
+ 'dateReg',
84
+ 'dateFirstReg',
85
+ 'number',
86
+ 'residenceRegistrationPlace',
87
+ ],
88
+ paths: [],
89
+ fieldsToRedactFullname: ['value', 'name', 'title', 'creditors', 'pay_text'],
90
+ },
85
91
  };
86
92
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAA,+CAA6D;AAEhD,QAAA,cAAc,GAAkB;IACzC,QAAQ,EAAE,gBAAQ,CAAC,IAAI;IACvB,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;IACpB,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,EAAE;IACpB,MAAM,EAAE;QACJ,KAAK;QACL,KAAK;QACL,QAAQ;QACR,WAAW;QACX,UAAU;QACV,YAAY;QACZ,WAAW;QACX,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,OAAO;QACP,uBAAuB;QACvB,gBAAgB;QAChB,UAAU;QACV,UAAU;QACV,KAAK;QACL,UAAU;QACV,OAAO;QACP,SAAS;QACT,YAAY;QACZ,UAAU;QACV,aAAa;QACb,kBAAkB;QAClB,cAAc;QACd,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,eAAe;QACf,WAAW;QACX,gBAAgB;QAChB,YAAY;QACZ,SAAS;QACT,YAAY;QACZ,QAAQ;QACR,UAAU;QACV,aAAa;QACb,YAAY;QACZ,cAAc;QACd,cAAc;QACd,YAAY;QACZ,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,aAAa;QACb,YAAY;QACZ,WAAW;QACX,6BAA6B;QAC7B,4BAA4B;QAC5B,mBAAmB;QACnB,WAAW;QACX,YAAY;QACZ,OAAO;QACP,MAAM;QACN,aAAa;QACb,aAAa;QACb,aAAa;QACb,eAAe;QACf,kBAAkB;QAClB,SAAS;QACT,KAAK;QACL,cAAc;QACd,SAAS;QACT,cAAc;QACd,QAAQ;KACX;CACJ,CAAA"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAA,+CAA6D;AAEhD,QAAA,cAAc,GAAkB;IACzC,QAAQ,EAAE,gBAAQ,CAAC,IAAI;IACvB,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;IACpB,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,EAAE;IACpB,MAAM,EAAE;QACJ,MAAM,EAAE;YACJ,KAAK;YACL,KAAK;YACL,QAAQ;YACR,WAAW;YACX,UAAU;YACV,YAAY;YACZ,WAAW;YACX,UAAU;YACV,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,aAAa;YACb,gBAAgB;YAChB,gBAAgB;YAChB,OAAO;YACP,uBAAuB;YACvB,gBAAgB;YAChB,UAAU;YACV,UAAU;YACV,KAAK;YACL,UAAU;YACV,OAAO;YACP,SAAS;YACT,YAAY;YACZ,UAAU;YACV,WAAW;YACX,aAAa;YACb,kBAAkB;YAClB,cAAc;YACd,OAAO;YACP,OAAO;YACP,OAAO;YACP,OAAO;YACP,eAAe;YACf,WAAW;YACX,gBAAgB;YAChB,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,aAAa;YACb,YAAY;YACZ,cAAc;YACd,cAAc;YACd,YAAY;YACZ,cAAc;YACd,cAAc;YACd,cAAc;YACd,cAAc;YACd,cAAc;YACd,aAAa;YACb,YAAY;YACZ,WAAW;YACX,6BAA6B;YAC7B,4BAA4B;YAC5B,mBAAmB;YACnB,WAAW;YACX,YAAY;YACZ,OAAO;YACP,MAAM;YACN,aAAa;YACb,aAAa;YACb,aAAa;YACb,eAAe;YACf,kBAAkB;YAClB,SAAS;YACT,KAAK;YACL,cAAc;YACd,SAAS;YACT,cAAc;YACd,QAAQ;YACR,4BAA4B;SAC/B;QACD,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;KAC9E;CACJ,CAAA"}
package/dist/index.js CHANGED
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.DiiaLogger = void 0;
26
+ exports.defaultOptions = exports.DiiaLogger = void 0;
27
27
  const lodash_1 = require("lodash");
28
28
  const pino_1 = __importStar(require("pino"));
29
29
  const types_1 = require("@diia-inhouse/types");
@@ -38,6 +38,7 @@ class DiiaLogger {
38
38
  this.options = options;
39
39
  this.asyncLocalStorage = asyncLocalStorage;
40
40
  const trimmerOptions = { ...config_1.defaultOptions, ...options };
41
+ const { redact: { paths: redactPaths }, } = trimmerOptions;
41
42
  this.trim = (0, trimmer_1.trimmer)(trimmerOptions);
42
43
  this.logger =
43
44
  existedLogger ||
@@ -65,6 +66,7 @@ class DiiaLogger {
65
66
  customLevels: {
66
67
  [types_1.LogLevel.IO]: 25,
67
68
  },
69
+ redact: redactPaths,
68
70
  }, destinationStream || undefined);
69
71
  }
70
72
  child(bindings, destinationStream) {
@@ -120,4 +122,6 @@ class DiiaLogger {
120
122
  }
121
123
  exports.default = DiiaLogger;
122
124
  exports.DiiaLogger = DiiaLogger;
125
+ var config_2 = require("./config");
126
+ Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function () { return config_2.defaultOptions; } });
123
127
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/trimmer.js CHANGED
@@ -4,16 +4,33 @@ exports.trimmer = void 0;
4
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
5
  const bson_1 = require("bson");
6
6
  const lodash_1 = require("lodash");
7
+ function redactFullName(text) {
8
+ // eslint-disable-next-line unicorn/better-regex
9
+ const fullNameRegex = /(?:^|\s)(?<fullname>[А-ЯҐЄІЇA-Z][а-яґєіїa-z]+(?:(\s|-)[А-ЯҐЄІЇA-Z][а-яґєіїa-z-]+)+)(?:\s|$)/g;
10
+ return text.replaceAll(fullNameRegex, (match, ...args) => {
11
+ const fullname = args.at(-1)?.fullname;
12
+ if (!fullname) {
13
+ return match;
14
+ }
15
+ return ` [Fullname redacted: ${fullname
16
+ .split(' ')
17
+ .map((part) => part[0])
18
+ .join('.')}.] `;
19
+ });
20
+ }
21
+ function formatString(str, { maxStringLength, endLengthToLog }) {
22
+ const length = str.length;
23
+ const truncatedString = length > maxStringLength
24
+ ? `${str.slice(0, maxStringLength - endLengthToLog)}...${str.slice(0 - endLengthToLog)} (${length} chars)`
25
+ : str;
26
+ return truncatedString;
27
+ }
7
28
  const walker = (opts, node, depth) => {
8
29
  if (node instanceof Error) {
9
30
  return node;
10
31
  }
11
32
  if (typeof node === 'string') {
12
- const { maxStringLength, endLengthToLog } = opts;
13
- const length = node.length;
14
- return length > maxStringLength
15
- ? `${node.slice(0, maxStringLength - endLengthToLog)}...${node.slice(0 - endLengthToLog)} (${length} chars)`
16
- : node;
33
+ return formatString(node, opts);
17
34
  }
18
35
  if (typeof node === 'number' || typeof node === 'boolean' || node === undefined || node === null) {
19
36
  return node;
@@ -41,18 +58,24 @@ const walker = (opts, node, depth) => {
41
58
  visibleObjectProperties.push(['...', `${propertiesCount - opts.maxObjectBreadth} more properties`]);
42
59
  return Object.fromEntries(visibleObjectProperties);
43
60
  }
44
- }
45
- if ((0, lodash_1.isObject)(node)) {
46
61
  const keys = Object.getOwnPropertyNames(node);
47
62
  if (keys.length > 0) {
48
63
  const output = Array.isArray(node) ? [] : {};
49
64
  for (const [key, value] of Object.entries(node)) {
50
- if (value) {
51
- output[key] = opts.redact.includes(key) ? '[Redacted]' : walker(opts, value, depth + 1);
52
- }
53
- else {
65
+ if (!value) {
54
66
  output[key] = value;
67
+ continue;
68
+ }
69
+ if (opts.redact.fields?.includes(key)) {
70
+ output[key] = '[Redacted]';
71
+ continue;
72
+ }
73
+ if (typeof value === 'string' && opts.redact.fieldsToRedactFullname?.includes(key)) {
74
+ output[key] = redactFullName(value);
75
+ continue;
55
76
  }
77
+ output[key] = walker(opts, value, depth + 1);
78
+ continue;
56
79
  }
57
80
  return output;
58
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trimmer.js","sourceRoot":"","sources":["../src/trimmer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trimmer.js","sourceRoot":"","sources":["../src/trimmer.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,+BAA+B;AAC/B,mCAAiC;AAIjC,SAAS,cAAc,CAAC,IAAY;IAChC,gDAAgD;IAChD,MAAM,aAAa,GAAG,8FAA8F,CAAA;IAEpH,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAW,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAA;QAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,KAAK,CAAA;QAChB,CAAC;QAED,OAAO,wBAAwB,QAAQ;aAClC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACtB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA;IACvB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,EAAE,eAAe,EAAE,cAAc,EAAkB;IAClF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;IACzB,MAAM,eAAe,GACjB,MAAM,GAAG,eAAe;QACpB,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,MAAM,SAAS;QAC1G,CAAC,CAAC,GAAG,CAAA;IAEb,OAAO,eAAe,CAAA;AAC1B,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,IAAoB,EAAE,IAAS,EAAE,KAAa,EAAO,EAAE;IACnE,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC/F,OAAO,IAAI,CAAA;IACf,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAA;IACvB,CAAC;IAED,IAAI,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,UAAU,IAAI,CAAC,MAAM,GAAG,CAAA;IACnC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAW,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAA;QAEjE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,WAAW,eAAe,aAAa,CAAC,CAAA;IAC7F,CAAC;IAED,IAAI,eAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC1B,CAAC;IAED,IAAI,IAAA,iBAAQ,EAAC,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;QAChD,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1C,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAEpF,uBAAuB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,eAAe,GAAG,IAAI,CAAC,gBAAgB,kBAAkB,CAAC,CAAC,CAAA;YAEnG,OAAO,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,MAAM,GAAwB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAEjE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;oBACnB,SAAQ;gBACZ,CAAC;gBAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAA;oBAC1B,SAAQ;gBACZ,CAAC;gBAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjF,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;oBACnC,SAAQ;gBACZ,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAC5C,SAAQ;YACZ,CAAC;YAED,OAAO,MAAM,CAAA;QACjB,CAAC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAEM,MAAM,OAAO,GAAG,CAAC,IAAoB,EAAyB,EAAE;IACnE,OAAO,CAAC,KAAc,EAAO,EAAE;QAC3B,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACjC,CAAC,CAAA;AACL,CAAC,CAAA;AAJY,QAAA,OAAO,WAInB"}
@@ -22,3 +22,4 @@ export default class DiiaLogger implements Logger {
22
22
  private extractPredefinedProperties;
23
23
  }
24
24
  export { DiiaLogger };
25
+ export { defaultOptions } from './config';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diia-inhouse/diia-logger",
3
- "version": "2.15.0",
3
+ "version": "3.1.0",
4
4
  "description": "Logger package",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -35,14 +35,14 @@
35
35
  "pino-pretty": "11.1.0"
36
36
  },
37
37
  "peerDependencies": {
38
- "@diia-inhouse/types": ">=3.2.1"
38
+ "@diia-inhouse/types": ">=6.30.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@diia-inhouse/configs": "1.31.1",
42
42
  "@diia-inhouse/eslint-config": "5.1.0",
43
43
  "@diia-inhouse/eslint-plugin": "1.6.0",
44
- "@diia-inhouse/types": "6.24.0",
45
- "@types/lodash": "4.17.4",
44
+ "@diia-inhouse/types": "6.30.0",
45
+ "@types/lodash": "4.17.5",
46
46
  "@typescript-eslint/typescript-estree": "7.10.0",
47
47
  "jest-junit": "16.0.0",
48
48
  "lockfile-lint": "4.13.2",
package/src/config.ts CHANGED
@@ -7,77 +7,83 @@ export const defaultOptions: LoggerOptions = {
7
7
  endLengthToLog: 10,
8
8
  maxObjectDepth: 8,
9
9
  maxObjectBreadth: 50,
10
- redact: [
11
- 'inn',
12
- 'itn',
13
- 'client',
14
- 'firstName',
15
- 'lastName',
16
- 'middleName',
17
- 'firstname',
18
- 'lastname',
19
- 'middlename',
20
- 'first_name',
21
- 'last_name',
22
- 'middle_name',
23
- 'passportSeries',
24
- 'passportNumber',
25
- 'email',
26
- 'addressOfRegistration',
27
- 'addressOfBirth',
28
- 'birthDay',
29
- 'birthday',
30
- 'fio',
31
- 'passport',
32
- 'phone',
33
- 'address',
34
- 'birthplace',
35
- 'fullName',
36
- 'phoneNumber',
37
- 'extraPhoneNumber',
38
- 'refreshToken',
39
- 'token',
40
- 'fName',
41
- 'lName',
42
- 'mName',
43
- 'DocNumberDRFO',
44
- 'GivenName',
45
- 'PatronymicName',
46
- 'FamilyName',
47
- 'surname',
48
- 'patronymic',
49
- 'rnokpp',
50
- 'document',
51
- 'firstNameUA',
52
- 'lastNameUA',
53
- 'middleNameUA',
54
- 'serialNumber',
55
- 'department',
56
- 'departmentUA',
57
- 'departmentEN',
58
- 'birthPlaceUA',
59
- 'birthPlaceEN',
60
- 'recordNumber',
61
- 'firstNameEN',
62
- 'lastNameEN',
63
- 'docNumber',
64
- 'documentRegistrationPlaceUA',
65
- 'currentRegistrationPlaceUA',
66
- 'registrationPlace',
67
- 'birthDate',
68
- 'categories',
69
- 'photo',
70
- 'sign',
71
- 'docIdentity',
72
- 'collegeName',
73
- 'facultyName',
74
- 'educationType',
75
- 'vehicleLicenseId',
76
- 'website',
77
- 'vin',
78
- 'licensePlate',
79
- 'dateReg',
80
- 'dateFirstReg',
81
- 'number',
82
- ],
10
+ redact: {
11
+ fields: [
12
+ 'inn',
13
+ 'itn',
14
+ 'client',
15
+ 'firstName',
16
+ 'lastName',
17
+ 'middleName',
18
+ 'firstname',
19
+ 'lastname',
20
+ 'middlename',
21
+ 'first_name',
22
+ 'last_name',
23
+ 'middle_name',
24
+ 'passportSeries',
25
+ 'passportNumber',
26
+ 'email',
27
+ 'addressOfRegistration',
28
+ 'addressOfBirth',
29
+ 'birthDay',
30
+ 'birthday',
31
+ 'fio',
32
+ 'passport',
33
+ 'phone',
34
+ 'address',
35
+ 'birthplace',
36
+ 'fullName',
37
+ 'full_name',
38
+ 'phoneNumber',
39
+ 'extraPhoneNumber',
40
+ 'refreshToken',
41
+ 'token',
42
+ 'fName',
43
+ 'lName',
44
+ 'mName',
45
+ 'DocNumberDRFO',
46
+ 'GivenName',
47
+ 'PatronymicName',
48
+ 'FamilyName',
49
+ 'surname',
50
+ 'patronymic',
51
+ 'rnokpp',
52
+ 'document',
53
+ 'firstNameUA',
54
+ 'lastNameUA',
55
+ 'middleNameUA',
56
+ 'serialNumber',
57
+ 'department',
58
+ 'departmentUA',
59
+ 'departmentEN',
60
+ 'birthPlaceUA',
61
+ 'birthPlaceEN',
62
+ 'recordNumber',
63
+ 'firstNameEN',
64
+ 'lastNameEN',
65
+ 'docNumber',
66
+ 'documentRegistrationPlaceUA',
67
+ 'currentRegistrationPlaceUA',
68
+ 'registrationPlace',
69
+ 'birthDate',
70
+ 'categories',
71
+ 'photo',
72
+ 'sign',
73
+ 'docIdentity',
74
+ 'collegeName',
75
+ 'facultyName',
76
+ 'educationType',
77
+ 'vehicleLicenseId',
78
+ 'website',
79
+ 'vin',
80
+ 'licensePlate',
81
+ 'dateReg',
82
+ 'dateFirstReg',
83
+ 'number',
84
+ 'residenceRegistrationPlace',
85
+ ],
86
+ paths: [],
87
+ fieldsToRedactFullname: ['value', 'name', 'title', 'creditors', 'pay_text'],
88
+ },
83
89
  }
package/src/index.ts CHANGED
@@ -21,6 +21,9 @@ export default class DiiaLogger implements Logger {
21
21
  existedLogger: PinoLogger<'io'> | null = null,
22
22
  ) {
23
23
  const trimmerOptions: TrimmerOptions = { ...defaultOptions, ...options }
24
+ const {
25
+ redact: { paths: redactPaths },
26
+ } = trimmerOptions
24
27
 
25
28
  this.trim = trimmer(trimmerOptions)
26
29
 
@@ -53,6 +56,7 @@ export default class DiiaLogger implements Logger {
53
56
  customLevels: {
54
57
  [LogLevel.IO]: 25,
55
58
  },
59
+ redact: redactPaths,
56
60
  },
57
61
  destinationStream || undefined,
58
62
  )
@@ -129,3 +133,5 @@ export default class DiiaLogger implements Logger {
129
133
  }
130
134
 
131
135
  export { DiiaLogger }
136
+
137
+ export { defaultOptions } from './config'
package/src/trimmer.ts CHANGED
@@ -4,18 +4,41 @@ import { isObject } from 'lodash'
4
4
 
5
5
  import { TrimmerOptions } from '@diia-inhouse/types'
6
6
 
7
+ function redactFullName(text: string): string {
8
+ // eslint-disable-next-line unicorn/better-regex
9
+ const fullNameRegex = /(?:^|\s)(?<fullname>[А-ЯҐЄІЇA-Z][а-яґєіїa-z]+(?:(\s|-)[А-ЯҐЄІЇA-Z][а-яґєіїa-z-]+)+)(?:\s|$)/g
10
+
11
+ return text.replaceAll(fullNameRegex, (match, ...args) => {
12
+ const fullname: string = args.at(-1)?.fullname
13
+
14
+ if (!fullname) {
15
+ return match
16
+ }
17
+
18
+ return ` [Fullname redacted: ${fullname
19
+ .split(' ')
20
+ .map((part) => part[0])
21
+ .join('.')}.] `
22
+ })
23
+ }
24
+
25
+ function formatString(str: string, { maxStringLength, endLengthToLog }: TrimmerOptions): string {
26
+ const length = str.length
27
+ const truncatedString =
28
+ length > maxStringLength
29
+ ? `${str.slice(0, maxStringLength - endLengthToLog)}...${str.slice(0 - endLengthToLog)} (${length} chars)`
30
+ : str
31
+
32
+ return truncatedString
33
+ }
34
+
7
35
  const walker = (opts: TrimmerOptions, node: any, depth: number): any => {
8
36
  if (node instanceof Error) {
9
37
  return node
10
38
  }
11
39
 
12
40
  if (typeof node === 'string') {
13
- const { maxStringLength, endLengthToLog } = opts
14
- const length = node.length
15
-
16
- return length > maxStringLength
17
- ? `${node.slice(0, maxStringLength - endLengthToLog)}...${node.slice(0 - endLengthToLog)} (${length} chars)`
18
- : node
41
+ return formatString(node, opts)
19
42
  }
20
43
 
21
44
  if (typeof node === 'number' || typeof node === 'boolean' || node === undefined || node === null) {
@@ -53,20 +76,29 @@ const walker = (opts: TrimmerOptions, node: any, depth: number): any => {
53
76
 
54
77
  return Object.fromEntries(visibleObjectProperties)
55
78
  }
56
- }
57
79
 
58
- if (isObject(node)) {
59
80
  const keys = Object.getOwnPropertyNames(node)
60
-
61
81
  if (keys.length > 0) {
62
82
  const output: Record<string, any> = Array.isArray(node) ? [] : {}
63
83
 
64
84
  for (const [key, value] of Object.entries(node)) {
65
- if (value) {
66
- output[key] = opts.redact.includes(key) ? '[Redacted]' : walker(opts, value, depth + 1)
67
- } else {
85
+ if (!value) {
68
86
  output[key] = value
87
+ continue
69
88
  }
89
+
90
+ if (opts.redact.fields?.includes(key)) {
91
+ output[key] = '[Redacted]'
92
+ continue
93
+ }
94
+
95
+ if (typeof value === 'string' && opts.redact.fieldsToRedactFullname?.includes(key)) {
96
+ output[key] = redactFullName(value)
97
+ continue
98
+ }
99
+
100
+ output[key] = walker(opts, value, depth + 1)
101
+ continue
70
102
  }
71
103
 
72
104
  return output