@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 +79 -73
- package/dist/config.js.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/trimmer.js +34 -11
- package/dist/trimmer.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/package.json +4 -4
- package/src/config.ts +79 -73
- package/src/index.ts +6 -0
- package/src/trimmer.ts +44 -12
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
package/dist/config.js.map
CHANGED
|
@@ -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;
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,mCAAiC;AACjC,6CAAoF;AAEpF,+CAAsG;AAEtG,qCAAyC;AACzC,uCAAmC;AAEnC,MAAqB,UAAU;IAMN;IACA;IANb,MAAM,CAAkB;IAExB,IAAI,CAA4B;IAExC,YACqB,UAAwB,EAAE,EAC1B,iBAA8C,EAC/D,oBAA8C,IAAI,EAClD,gBAAyC,IAAI;QAH5B,YAAO,GAAP,OAAO,CAAmB;QAC1B,sBAAiB,GAAjB,iBAAiB,CAA6B;QAI/D,MAAM,cAAc,GAAmB,EAAE,GAAG,uBAAc,EAAE,GAAG,OAAO,EAAE,CAAA;
|
|
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
|
-
|
|
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
|
}
|
package/dist/trimmer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trimmer.js","sourceRoot":"","sources":["../src/trimmer.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,+BAA+B;AAC/B,mCAAiC;AAIjC,
|
|
1
|
+
{"version":3,"file":"trimmer.js","sourceRoot":"","sources":["../src/trimmer.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diia-inhouse/diia-logger",
|
|
3
|
-
"version": "
|
|
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": ">=
|
|
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.
|
|
45
|
-
"@types/lodash": "4.17.
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
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
|