@diia-inhouse/diia-logger 3.20.14 → 4.2.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.
@@ -0,0 +1,5 @@
1
+ import { createRequire } from "node:module";
2
+ //#region \0rolldown/runtime.js
3
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
4
+ //#endregion
5
+ export { __require };
@@ -0,0 +1,6 @@
1
+ import { LoggerOptions } from "@diia-inhouse/types";
2
+
3
+ //#region src/config.d.ts
4
+ declare const defaultOptions: LoggerOptions;
5
+ //#endregion
6
+ export { defaultOptions };
package/dist/config.js CHANGED
@@ -1,156 +1,160 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toInternalLoggerOptions = exports.defaultOptions = void 0;
4
- const lodash_1 = require("lodash");
5
- const types_1 = require("@diia-inhouse/types");
6
- exports.defaultOptions = {
7
- logLevel: types_1.LogLevel.INFO,
8
- maxArrayLength: 100,
9
- maxStringLength: 255,
10
- endLengthToLog: 10,
11
- maxObjectDepth: 8,
12
- maxObjectBreadth: 50,
13
- redact: {
14
- fields: [
15
- 'inn',
16
- 'itn',
17
- 'client',
18
- 'firstName',
19
- 'lastName',
20
- 'middleName',
21
- 'firstname',
22
- 'lastname',
23
- 'middlename',
24
- 'first_name',
25
- 'last_name',
26
- 'middle_name',
27
- 'given_name',
28
- 'family_name',
29
- 'patronymic_name',
30
- 'passportSeries',
31
- 'passportNumber',
32
- 'email',
33
- 'addressOfRegistration',
34
- 'addressOfBirth',
35
- 'birthDay',
36
- 'birthday',
37
- 'date_birth',
38
- 'fio',
39
- 'passport',
40
- 'phone',
41
- 'address',
42
- 'birthplace',
43
- 'fullName',
44
- 'full_name',
45
- 'phoneNumber',
46
- 'extraPhoneNumber',
47
- 'refreshToken',
48
- 'token',
49
- 'fName',
50
- 'lName',
51
- 'mName',
52
- 'DocNumberDRFO',
53
- 'GivenName',
54
- 'PatronymicName',
55
- 'FamilyName',
56
- 'surname',
57
- 'patronymic',
58
- 'rnokpp',
59
- 'document',
60
- 'firstNameUA',
61
- 'lastNameUA',
62
- 'middleNameUA',
63
- 'serialNumber',
64
- 'department',
65
- 'departmentUA',
66
- 'departmentEN',
67
- 'birthPlaceUA',
68
- 'birthPlaceEN',
69
- 'recordNumber',
70
- 'firstNameEN',
71
- 'lastNameEN',
72
- 'docNumber',
73
- 'documentRegistrationPlaceUA',
74
- 'currentRegistrationPlaceUA',
75
- 'registrationPlace',
76
- 'birthDate',
77
- 'categories',
78
- 'photo',
79
- 'sign',
80
- 'docIdentity',
81
- 'collegeName',
82
- 'facultyName',
83
- 'educationType',
84
- 'vehicleLicenseId',
85
- 'website',
86
- 'vin',
87
- 'licensePlate',
88
- 'dateReg',
89
- 'dateFirstReg',
90
- 'number',
91
- 'residenceRegistrationPlace',
92
- 'documentNumber',
93
- 'password',
94
- 'vault',
95
- 'appPartnerId',
96
- 'partnerToken',
97
- 'partnerFullName',
98
- 'residenceAddress',
99
- 'displayName',
100
- 'personalPhone',
101
- 'content',
102
- 'subjAddress',
103
- 'subjPhone',
104
- 'subjEmail',
105
- 'subjDrfoCode',
106
- 'oldLastName',
107
- 'oldFirstName',
108
- 'oldMiddleName',
109
- 'personName',
110
- 'personSurname',
111
- 'personBirthDate',
112
- 'personFullName',
113
- 'INN',
114
- 'D_DOC',
115
- 'N_DOC',
116
- 'S_DOC',
117
- 'N_REG',
118
- ],
119
- paths: [],
120
- fieldsToRedactFullname: [
121
- 'value',
122
- 'name',
123
- 'title',
124
- 'creditors',
125
- 'pay_text',
126
- 'order_description',
127
- 'owner',
128
- 'label',
129
- 'shortText',
130
- 'listName',
131
- 'text',
132
- 'textItems',
133
- 'subject',
134
- 'subjCn',
135
- 'subjFullName',
136
- 'accessibilityDescription',
137
- 'documents',
138
- ],
139
- fieldsToRedactItn: ['label', 'paymentPurpose', 'subject', 'value'],
140
- },
1
+ import lodash from "lodash";
2
+ import { LogLevel } from "@diia-inhouse/types";
3
+ //#region src/config.ts
4
+ const { merge } = lodash;
5
+ const defaultOptions = {
6
+ logLevel: LogLevel.INFO,
7
+ maxArrayLength: 100,
8
+ maxStringLength: 255,
9
+ endLengthToLog: 10,
10
+ maxObjectDepth: 8,
11
+ maxObjectBreadth: 50,
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
+ "given_name",
27
+ "family_name",
28
+ "patronymic_name",
29
+ "passportSeries",
30
+ "passportNumber",
31
+ "email",
32
+ "addressOfRegistration",
33
+ "addressOfBirth",
34
+ "birthDay",
35
+ "birthday",
36
+ "date_birth",
37
+ "fio",
38
+ "passport",
39
+ "phone",
40
+ "address",
41
+ "birthplace",
42
+ "fullName",
43
+ "full_name",
44
+ "phoneNumber",
45
+ "extraPhoneNumber",
46
+ "refreshToken",
47
+ "token",
48
+ "fName",
49
+ "lName",
50
+ "mName",
51
+ "DocNumberDRFO",
52
+ "GivenName",
53
+ "PatronymicName",
54
+ "FamilyName",
55
+ "surname",
56
+ "patronymic",
57
+ "rnokpp",
58
+ "document",
59
+ "firstNameUA",
60
+ "lastNameUA",
61
+ "middleNameUA",
62
+ "serialNumber",
63
+ "department",
64
+ "departmentUA",
65
+ "departmentEN",
66
+ "birthPlaceUA",
67
+ "birthPlaceEN",
68
+ "recordNumber",
69
+ "firstNameEN",
70
+ "lastNameEN",
71
+ "docNumber",
72
+ "documentRegistrationPlaceUA",
73
+ "currentRegistrationPlaceUA",
74
+ "registrationPlace",
75
+ "birthDate",
76
+ "categories",
77
+ "photo",
78
+ "sign",
79
+ "docIdentity",
80
+ "collegeName",
81
+ "facultyName",
82
+ "educationType",
83
+ "vehicleLicenseId",
84
+ "website",
85
+ "vin",
86
+ "licensePlate",
87
+ "dateReg",
88
+ "dateFirstReg",
89
+ "number",
90
+ "residenceRegistrationPlace",
91
+ "documentNumber",
92
+ "password",
93
+ "vault",
94
+ "appPartnerId",
95
+ "partnerToken",
96
+ "partnerFullName",
97
+ "residenceAddress",
98
+ "displayName",
99
+ "personalPhone",
100
+ "content",
101
+ "subjAddress",
102
+ "subjPhone",
103
+ "subjEmail",
104
+ "subjDrfoCode",
105
+ "oldLastName",
106
+ "oldFirstName",
107
+ "oldMiddleName",
108
+ "personName",
109
+ "personSurname",
110
+ "personBirthDate",
111
+ "personFullName",
112
+ "INN",
113
+ "D_DOC",
114
+ "N_DOC",
115
+ "S_DOC",
116
+ "N_REG"
117
+ ],
118
+ paths: [],
119
+ fieldsToRedactFullname: [
120
+ "value",
121
+ "name",
122
+ "title",
123
+ "creditors",
124
+ "pay_text",
125
+ "order_description",
126
+ "owner",
127
+ "label",
128
+ "shortText",
129
+ "listName",
130
+ "text",
131
+ "textItems",
132
+ "subject",
133
+ "subjCn",
134
+ "subjFullName",
135
+ "accessibilityDescription",
136
+ "documents"
137
+ ],
138
+ fieldsToRedactItn: [
139
+ "label",
140
+ "paymentPurpose",
141
+ "subject",
142
+ "value"
143
+ ]
144
+ }
141
145
  };
142
146
  const toInternalLoggerOptions = (options = {}) => {
143
- const merged = (0, lodash_1.merge)({}, exports.defaultOptions, options);
144
- const { redact } = merged;
145
- return {
146
- ...merged,
147
- redact: {
148
- fields: new Set(redact.fields),
149
- paths: new Set(redact.paths),
150
- fieldsToRedactFullname: new Set(redact.fieldsToRedactFullname),
151
- fieldsToRedactItn: new Set(redact.fieldsToRedactItn),
152
- },
153
- };
147
+ const merged = merge({}, defaultOptions, options);
148
+ const { redact } = merged;
149
+ return {
150
+ ...merged,
151
+ redact: {
152
+ fields: new Set(redact.fields),
153
+ paths: new Set(redact.paths),
154
+ fieldsToRedactFullname: new Set(redact.fieldsToRedactFullname),
155
+ fieldsToRedactItn: new Set(redact.fieldsToRedactItn)
156
+ }
157
+ };
154
158
  };
155
- exports.toInternalLoggerOptions = toInternalLoggerOptions;
156
- //# sourceMappingURL=config.js.map
159
+ //#endregion
160
+ export { defaultOptions, toInternalLoggerOptions };
@@ -0,0 +1,29 @@
1
+ import { defaultOptions } from "./config.js";
2
+ import { createTrimmer } from "./trimmer.js";
3
+ import { DestinationStream, Logger } from "pino";
4
+ import { AlsData, LogData, Logger as Logger$1, LoggerOptions } from "@diia-inhouse/types";
5
+ import { AsyncLocalStorage } from "node:async_hooks";
6
+
7
+ //#region src/index.d.ts
8
+ declare class DiiaLogger implements Logger$1 {
9
+ private readonly options;
10
+ private readonly asyncLocalStorage;
11
+ private logger;
12
+ private trim;
13
+ constructor(options?: LoggerOptions | undefined, asyncLocalStorage?: AsyncLocalStorage<AlsData> | undefined, destinationStream?: DestinationStream | null, existedLogger?: Logger<"io"> | null);
14
+ child(bindings: Record<string, unknown>, destinationStream?: DestinationStream): Logger$1;
15
+ log(message: string, data?: unknown): void;
16
+ info(message: string, data?: unknown): void;
17
+ io(message: string, data?: unknown): void;
18
+ error(message: string, data?: unknown): void;
19
+ warn(message: string, data?: unknown): void;
20
+ fatal(message: string, data?: unknown): void;
21
+ trace(message: string, data?: unknown): void;
22
+ debug(message: string, data?: unknown): void;
23
+ prepareContext(data: LogData): LogData;
24
+ private printMessage;
25
+ private extractPredefinedProperties;
26
+ private getServiceVersion;
27
+ }
28
+ //#endregion
29
+ export { DiiaLogger, DiiaLogger as default, createTrimmer, defaultOptions };
package/dist/index.js CHANGED
@@ -1,154 +1,112 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.createTrimmer = exports.defaultOptions = exports.DiiaLogger = void 0;
37
- const api_1 = require("@opentelemetry/api");
38
- const lodash_1 = require("lodash");
39
- const pino_1 = __importStar(require("pino"));
40
- const types_1 = require("@diia-inhouse/types");
41
- const config_1 = require("./config");
42
- const trimmer_1 = require("./trimmer");
43
- class DiiaLogger {
44
- options;
45
- asyncLocalStorage;
46
- logger;
47
- trim;
48
- constructor(options = {}, asyncLocalStorage, destinationStream = null, existedLogger = null) {
49
- this.options = options;
50
- this.asyncLocalStorage = asyncLocalStorage;
51
- const internalOptions = (0, config_1.toInternalLoggerOptions)(this.options);
52
- const { redact: { paths: redactPaths }, } = internalOptions;
53
- this.logger =
54
- existedLogger ||
55
- (0, pino_1.default)({
56
- timestamp: () => `,"timestamp":"${new Date(Date.now()).toISOString()}"`,
57
- level: this.options.logLevel ?? types_1.LogLevel.INFO,
58
- base: undefined,
59
- formatters: {
60
- level: (l) => ({ level: l.toUpperCase() }),
61
- },
62
- mixin: () => {
63
- const logData = this.asyncLocalStorage?.getStore()?.logData;
64
- const spanId = api_1.trace.getSpan(api_1.context.active())?.spanContext().spanId;
65
- return {
66
- headers: spanId ? { ...logData, spanId } : logData,
67
- serviceVersion: this.getServiceVersion(),
68
- };
69
- },
70
- serializers: {
71
- err: (value) => {
72
- const res = pino_1.stdSerializers.err(value);
73
- if (!(0, lodash_1.isObject)(res)) {
74
- return res;
75
- }
76
- res.constructorName = res.type;
77
- res.type = value.type;
78
- return res;
79
- },
80
- },
81
- customLevels: {
82
- [types_1.LogLevel.IO]: 25,
83
- },
84
- redact: [...(redactPaths || [])],
85
- }, destinationStream || undefined);
86
- this.trim = (0, trimmer_1.trimmer)(internalOptions, this.logger.isLevelEnabled(types_1.LogLevel.DEBUG));
87
- }
88
- child(bindings, destinationStream) {
89
- const pinoLogger = this.logger.child(bindings);
90
- return new DiiaLogger(this.options, this.asyncLocalStorage, destinationStream, pinoLogger);
91
- }
92
- log(message, data = {}) {
93
- this.printMessage('info', message, data);
94
- }
95
- info(message, data = {}) {
96
- this.printMessage('info', message, data);
97
- }
98
- io(message, data = {}) {
99
- this.printMessage('io', message, data);
100
- }
101
- error(message, data = {}) {
102
- this.printMessage('error', message, data);
103
- }
104
- warn(message, data = {}) {
105
- this.printMessage('warn', message, data);
106
- }
107
- fatal(message, data = {}) {
108
- this.printMessage('fatal', message, data);
109
- }
110
- trace(message, data = {}) {
111
- this.printMessage('trace', message, data);
112
- }
113
- debug(message, data = {}) {
114
- this.printMessage('debug', message, data);
115
- }
116
- prepareContext(context) {
117
- return this.trim(context);
118
- }
119
- printMessage(level, message, data) {
120
- const logData = { log: data };
121
- const trimmedData = this.trim(logData);
122
- this.logger[level](this.extractPredefinedProperties(trimmedData), message);
123
- }
124
- extractPredefinedProperties(data) {
125
- if (data.log?.analytics) {
126
- const { analytics, ...rest } = data.log;
127
- return { analytics, log: rest };
128
- }
129
- if (data.log?.err) {
130
- const { err, ...rest } = data.log;
131
- return { err, log: rest };
132
- }
133
- if (data.log instanceof Error) {
134
- return { err: data.data };
135
- }
136
- return data;
137
- }
138
- getServiceVersion() {
139
- try {
140
- const { utils } = require('@diia-inhouse/utils');
141
- return utils.getServiceVersion();
142
- }
143
- catch {
144
- return undefined;
145
- }
146
- }
147
- }
148
- exports.default = DiiaLogger;
149
- exports.DiiaLogger = DiiaLogger;
150
- var config_2 = require("./config");
151
- Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function () { return config_2.defaultOptions; } });
152
- var trimmer_2 = require("./trimmer");
153
- Object.defineProperty(exports, "createTrimmer", { enumerable: true, get: function () { return trimmer_2.createTrimmer; } });
154
- //# sourceMappingURL=index.js.map
1
+ import { __require } from "./_virtual/_rolldown/runtime.js";
2
+ import { defaultOptions, toInternalLoggerOptions } from "./config.js";
3
+ import { createTrimmer, trimmer } from "./trimmer.js";
4
+ import { context, trace } from "@opentelemetry/api";
5
+ import lodash from "lodash";
6
+ import pino, { stdSerializers } from "pino";
7
+ import { LogLevel } from "@diia-inhouse/types";
8
+ //#region src/index.ts
9
+ const { isObject } = lodash;
10
+ var DiiaLogger = class DiiaLogger {
11
+ options;
12
+ asyncLocalStorage;
13
+ logger;
14
+ trim;
15
+ constructor(options = {}, asyncLocalStorage = void 0, destinationStream = null, existedLogger = null) {
16
+ this.options = options;
17
+ this.asyncLocalStorage = asyncLocalStorage;
18
+ const internalOptions = toInternalLoggerOptions(this.options);
19
+ const { redact: { paths: redactPaths } } = internalOptions;
20
+ this.logger = existedLogger || pino({
21
+ timestamp: () => `,"timestamp":"${new Date(Date.now()).toISOString()}"`,
22
+ level: this.options.logLevel ?? LogLevel.INFO,
23
+ base: void 0,
24
+ formatters: { level: (l) => ({ level: l.toUpperCase() }) },
25
+ mixin: () => {
26
+ const logData = this.asyncLocalStorage?.getStore()?.logData;
27
+ const spanId = trace.getSpan(context.active())?.spanContext().spanId;
28
+ return {
29
+ headers: spanId ? {
30
+ ...logData,
31
+ spanId
32
+ } : logData,
33
+ serviceVersion: this.getServiceVersion()
34
+ };
35
+ },
36
+ serializers: { err: (value) => {
37
+ const res = stdSerializers.err(value);
38
+ if (!isObject(res)) return res;
39
+ res.constructorName = res.type;
40
+ res.type = value.type;
41
+ return res;
42
+ } },
43
+ customLevels: { [LogLevel.IO]: 25 },
44
+ redact: [...redactPaths || []]
45
+ }, destinationStream || void 0);
46
+ this.trim = trimmer(internalOptions, this.logger.isLevelEnabled(LogLevel.DEBUG));
47
+ }
48
+ child(bindings, destinationStream) {
49
+ const pinoLogger = this.logger.child(bindings);
50
+ return new DiiaLogger(this.options, this.asyncLocalStorage, destinationStream, pinoLogger);
51
+ }
52
+ log(message, data = {}) {
53
+ this.printMessage("info", message, data);
54
+ }
55
+ info(message, data = {}) {
56
+ this.printMessage("info", message, data);
57
+ }
58
+ io(message, data = {}) {
59
+ this.printMessage("io", message, data);
60
+ }
61
+ error(message, data = {}) {
62
+ this.printMessage("error", message, data);
63
+ }
64
+ warn(message, data = {}) {
65
+ this.printMessage("warn", message, data);
66
+ }
67
+ fatal(message, data = {}) {
68
+ this.printMessage("fatal", message, data);
69
+ }
70
+ trace(message, data = {}) {
71
+ this.printMessage("trace", message, data);
72
+ }
73
+ debug(message, data = {}) {
74
+ this.printMessage("debug", message, data);
75
+ }
76
+ prepareContext(data) {
77
+ return this.trim(data);
78
+ }
79
+ printMessage(level, message, data) {
80
+ const logData = { log: data };
81
+ const trimmedData = this.trim(logData);
82
+ this.logger[level](this.extractPredefinedProperties(trimmedData), message);
83
+ }
84
+ extractPredefinedProperties(data) {
85
+ if (data.log?.analytics) {
86
+ const { analytics, ...rest } = data.log;
87
+ return {
88
+ analytics,
89
+ log: rest
90
+ };
91
+ }
92
+ if (data.log?.err) {
93
+ const { err, ...rest } = data.log;
94
+ return {
95
+ err,
96
+ log: rest
97
+ };
98
+ }
99
+ if (data.log instanceof Error) return { err: data.data };
100
+ return data;
101
+ }
102
+ getServiceVersion() {
103
+ try {
104
+ const { utils } = __require("@diia-inhouse/utils");
105
+ return utils.getServiceVersion();
106
+ } catch {
107
+ return;
108
+ }
109
+ }
110
+ };
111
+ //#endregion
112
+ export { DiiaLogger, DiiaLogger as default, createTrimmer, defaultOptions };
@@ -0,0 +1 @@
1
+ import { LoggerOptions } from "@diia-inhouse/types";