@cichol/logger 4.0.0 → 4.2.2
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/package.json +11 -10
- package/releases/cjs.js +130 -161
- package/releases/esm.js +92 -96
- package/types/classes/logger.d.ts +0 -33
- package/types/formatters/command-line.d.ts +0 -2
- package/types/formatters/morgan.d.ts +0 -8
- package/types/handlers/debug.d.ts +0 -5
- package/types/handlers/error.d.ts +0 -13
- package/types/handlers/fatal.d.ts +0 -4
- package/types/handlers/http.d.ts +0 -5
- package/types/handlers/index.d.ts +0 -12
- package/types/handlers/info.d.ts +0 -5
- package/types/handlers/notice.d.ts +0 -5
- package/types/handlers/query.d.ts +0 -13
- package/types/handlers/verbose.d.ts +0 -5
- package/types/handlers/warning.d.ts +0 -5
- package/types/helpers/color-scheme.d.ts +0 -12
- package/types/helpers/constants.d.ts +0 -18
- package/types/helpers/label-decorator.d.ts +0 -2
- package/types/helpers/logging-level.d.ts +0 -13
- package/types/index.d.ts +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cichol/logger",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.2",
|
|
4
4
|
"description": "A logger based on `winston` for personal projects.",
|
|
5
5
|
"homepage": "https://github.com/morrighan/packages",
|
|
6
6
|
"bugs": {
|
|
@@ -33,20 +33,21 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"bluebird": "^3.7.2",
|
|
36
|
-
"chalk": "^
|
|
36
|
+
"chalk": "^5.3.0",
|
|
37
37
|
"cli-highlight": "^2.1.11",
|
|
38
|
-
"cls-rtracer": "^2.6.
|
|
38
|
+
"cls-rtracer": "^2.6.3",
|
|
39
|
+
"core-js-pure": "^3.38.1",
|
|
39
40
|
"lodash": "^4.17.21",
|
|
40
|
-
"luxon": "^
|
|
41
|
+
"luxon": "^3.5.0",
|
|
41
42
|
"morgan": "^1.10.0",
|
|
42
|
-
"pretty-bytes": "^
|
|
43
|
-
"pretty-ms": "^
|
|
44
|
-
"reflect-metadata": "^0.
|
|
45
|
-
"winston": "^3.
|
|
43
|
+
"pretty-bytes": "^6.1.1",
|
|
44
|
+
"pretty-ms": "^9.1.0",
|
|
45
|
+
"reflect-metadata": "^0.2.2",
|
|
46
|
+
"winston": "^3.14.2"
|
|
46
47
|
},
|
|
47
48
|
"engines": {
|
|
48
|
-
"node": "^
|
|
49
|
-
"npm": "^8.
|
|
49
|
+
"node": "^20.13.1",
|
|
50
|
+
"npm": "^10.8.0"
|
|
50
51
|
},
|
|
51
52
|
"publishConfig": {
|
|
52
53
|
"registry": "https://registry.npmjs.org/",
|
package/releases/cjs.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var _Symbol = require('
|
|
4
|
-
var _filterInstanceProperty = require('
|
|
5
|
-
var _mapInstanceProperty = require('
|
|
6
|
-
var _trimInstanceProperty = require('
|
|
7
|
-
var _Reflect$hasOwnMetadata = require('@babel/runtime-corejs3/core-js/reflect/has-own-metadata');
|
|
8
|
-
var _Reflect$getOwnMetadata = require('@babel/runtime-corejs3/core-js/reflect/get-own-metadata');
|
|
9
|
-
var _Reflect$defineMetadata = require('@babel/runtime-corejs3/core-js/reflect/define-metadata');
|
|
3
|
+
var _Symbol = require('core-js-pure/stable/symbol/index.js');
|
|
4
|
+
var _filterInstanceProperty = require('core-js-pure/stable/instance/filter.js');
|
|
5
|
+
var _mapInstanceProperty = require('core-js-pure/stable/instance/map.js');
|
|
6
|
+
var _trimInstanceProperty = require('core-js-pure/stable/instance/trim.js');
|
|
10
7
|
require('reflect-metadata');
|
|
11
8
|
var http$1 = require('http');
|
|
12
9
|
var stream = require('stream');
|
|
@@ -14,16 +11,16 @@ var Promise$1 = require('bluebird');
|
|
|
14
11
|
var lodash = require('lodash');
|
|
15
12
|
var morgan = require('morgan');
|
|
16
13
|
var winston = require('winston');
|
|
17
|
-
var _findInstanceProperty = require('
|
|
18
|
-
var _Reflect$apply = require('
|
|
14
|
+
var _findInstanceProperty = require('core-js-pure/stable/instance/find.js');
|
|
15
|
+
var _Reflect$apply = require('core-js-pure/stable/reflect/apply.js');
|
|
19
16
|
var chalk = require('chalk');
|
|
20
17
|
var rTracer = require('cls-rtracer');
|
|
21
18
|
var luxon = require('luxon');
|
|
22
|
-
var _Map = require('
|
|
19
|
+
var _Map = require('core-js-pure/stable/map/index.js');
|
|
23
20
|
var process = require('process');
|
|
24
|
-
var _Symbol$for = require('
|
|
25
|
-
var _startsWithInstanceProperty = require('
|
|
26
|
-
var _sliceInstanceProperty = require('
|
|
21
|
+
var _Symbol$for = require('core-js-pure/stable/symbol/for.js');
|
|
22
|
+
var _startsWithInstanceProperty = require('core-js-pure/stable/instance/starts-with.js');
|
|
23
|
+
var _sliceInstanceProperty = require('core-js-pure/stable/instance/slice.js');
|
|
27
24
|
var path = require('path');
|
|
28
25
|
var highlight = require('cli-highlight');
|
|
29
26
|
var prettyBytes = require('pretty-bytes');
|
|
@@ -31,10 +28,7 @@ var prettyMs = require('pretty-ms');
|
|
|
31
28
|
var cluster = require('cluster');
|
|
32
29
|
require('worker_threads');
|
|
33
30
|
|
|
34
|
-
function
|
|
35
|
-
|
|
36
|
-
function _interopNamespace(e) {
|
|
37
|
-
if (e && e.__esModule) return e;
|
|
31
|
+
function _interopNamespaceDefault(e) {
|
|
38
32
|
var n = Object.create(null);
|
|
39
33
|
if (e) {
|
|
40
34
|
Object.keys(e).forEach(function (k) {
|
|
@@ -47,35 +41,11 @@ function _interopNamespace(e) {
|
|
|
47
41
|
}
|
|
48
42
|
});
|
|
49
43
|
}
|
|
50
|
-
n
|
|
44
|
+
n.default = e;
|
|
51
45
|
return Object.freeze(n);
|
|
52
46
|
}
|
|
53
47
|
|
|
54
|
-
var
|
|
55
|
-
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_filterInstanceProperty);
|
|
56
|
-
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_mapInstanceProperty);
|
|
57
|
-
var _trimInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_trimInstanceProperty);
|
|
58
|
-
var _Reflect$hasOwnMetadata__default = /*#__PURE__*/_interopDefaultLegacy(_Reflect$hasOwnMetadata);
|
|
59
|
-
var _Reflect$getOwnMetadata__default = /*#__PURE__*/_interopDefaultLegacy(_Reflect$getOwnMetadata);
|
|
60
|
-
var _Reflect$defineMetadata__default = /*#__PURE__*/_interopDefaultLegacy(_Reflect$defineMetadata);
|
|
61
|
-
var Promise__default = /*#__PURE__*/_interopDefaultLegacy(Promise$1);
|
|
62
|
-
var lodash__default = /*#__PURE__*/_interopDefaultLegacy(lodash);
|
|
63
|
-
var morgan__default = /*#__PURE__*/_interopDefaultLegacy(morgan);
|
|
64
|
-
var winston__namespace = /*#__PURE__*/_interopNamespace(winston);
|
|
65
|
-
var _findInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_findInstanceProperty);
|
|
66
|
-
var _Reflect$apply__default = /*#__PURE__*/_interopDefaultLegacy(_Reflect$apply);
|
|
67
|
-
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
|
|
68
|
-
var rTracer__default = /*#__PURE__*/_interopDefaultLegacy(rTracer);
|
|
69
|
-
var _Map__default = /*#__PURE__*/_interopDefaultLegacy(_Map);
|
|
70
|
-
var process__default = /*#__PURE__*/_interopDefaultLegacy(process);
|
|
71
|
-
var _Symbol$for__default = /*#__PURE__*/_interopDefaultLegacy(_Symbol$for);
|
|
72
|
-
var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_startsWithInstanceProperty);
|
|
73
|
-
var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_sliceInstanceProperty);
|
|
74
|
-
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
75
|
-
var highlight__default = /*#__PURE__*/_interopDefaultLegacy(highlight);
|
|
76
|
-
var prettyBytes__default = /*#__PURE__*/_interopDefaultLegacy(prettyBytes);
|
|
77
|
-
var prettyMs__default = /*#__PURE__*/_interopDefaultLegacy(prettyMs);
|
|
78
|
-
var cluster__default = /*#__PURE__*/_interopDefaultLegacy(cluster);
|
|
48
|
+
var winston__namespace = /*#__PURE__*/_interopNamespaceDefault(winston);
|
|
79
49
|
|
|
80
50
|
const LoggingLevel = {
|
|
81
51
|
// Critical levels. (It will crash the process)
|
|
@@ -94,16 +64,18 @@ const LoggingLevel = {
|
|
|
94
64
|
Debug: 5
|
|
95
65
|
};
|
|
96
66
|
|
|
97
|
-
|
|
67
|
+
// Constants.
|
|
68
|
+
const colorizerMap = new _Map();
|
|
98
69
|
|
|
70
|
+
// Helpers.
|
|
99
71
|
function createScheme(options) {
|
|
100
72
|
const nextIndex = colorizerMap.size;
|
|
101
|
-
const colorizer =
|
|
73
|
+
const colorizer = chalk.bgHex(options.background).hex(options.foreground);
|
|
102
74
|
colorizerMap.set(nextIndex, colorizer);
|
|
103
75
|
return nextIndex;
|
|
104
|
-
}
|
|
105
|
-
|
|
76
|
+
}
|
|
106
77
|
|
|
78
|
+
// Color definitions.
|
|
107
79
|
const ColorValue = {
|
|
108
80
|
// Basic colors.
|
|
109
81
|
White: '#FFFFFF',
|
|
@@ -143,87 +115,77 @@ const ColorScheme = {
|
|
|
143
115
|
})
|
|
144
116
|
};
|
|
145
117
|
function getChalkOf(colorSet) {
|
|
146
|
-
return colorizerMap.get(colorSet) ??
|
|
118
|
+
return colorizerMap.get(colorSet) ?? chalk;
|
|
147
119
|
}
|
|
120
|
+
|
|
148
121
|
/* eslint-enable no-use-before-define */
|
|
149
122
|
|
|
150
123
|
// Node.js built-in APIs.
|
|
151
124
|
|
|
125
|
+
// Constants.
|
|
152
126
|
const {
|
|
153
127
|
isTTY
|
|
154
|
-
} =
|
|
128
|
+
} = process.stdout;
|
|
155
129
|
const isNotOnCLI = !isTTY;
|
|
156
130
|
function decorateLabel(label, scheme) {
|
|
157
131
|
if (isNotOnCLI) {
|
|
158
132
|
return label;
|
|
159
133
|
}
|
|
160
|
-
|
|
161
134
|
const chalk = getChalkOf(scheme);
|
|
162
135
|
const decoratedLabel = chalk.bold(` ${label} `);
|
|
163
136
|
return decoratedLabel;
|
|
164
137
|
}
|
|
165
138
|
|
|
166
|
-
//
|
|
167
|
-
const rootPath = process__default["default"].cwd();
|
|
168
|
-
const conjunction = ` ${chalk__default["default"].blue('──')} `;
|
|
169
|
-
|
|
170
|
-
const splat = _Symbol$for__default["default"]('splat'); // Handler metadata.
|
|
139
|
+
// Type definitions.
|
|
171
140
|
|
|
141
|
+
// Constants.
|
|
142
|
+
const rootPath = process.cwd();
|
|
143
|
+
const conjunction = ` ${chalk.blue('──')} `;
|
|
144
|
+
const splat = _Symbol$for('splat');
|
|
172
145
|
|
|
146
|
+
// Handler metadata.
|
|
173
147
|
const name$8 = 'error';
|
|
174
148
|
const level$8 = LoggingLevel.Error;
|
|
175
149
|
const label$8 = decorateLabel('ERROR', ColorScheme.Critical);
|
|
176
|
-
|
|
177
150
|
function mapLocationOfErrorThrown(filename) {
|
|
178
|
-
let target =
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
target = chalk__default["default"].gray(target).replace(/node_modules[\\/]([^\\/]+)(.*)/, (matches, moduleName, trailing) => `node_modules${path__default["default"].sep}${chalk__default["default"].bold.underline(moduleName)}${chalk__default["default"].gray(trailing)}` // eslint-disable-line max-len
|
|
151
|
+
let target = path.relative(rootPath, filename);
|
|
152
|
+
if (_startsWithInstanceProperty(target).call(target, 'node_modules')) {
|
|
153
|
+
target = chalk.gray(target).replace(/node_modules[\\/]([^\\/]+)(.*)/, (matches, moduleName, trailing) => `node_modules${path.sep}${chalk.bold.underline(moduleName)}${chalk.gray(trailing)}` // eslint-disable-line max-len
|
|
182
154
|
);
|
|
183
155
|
} else {
|
|
184
|
-
target = `${
|
|
156
|
+
target = `${chalk.gray(path.dirname(target) + path.sep)}${chalk.bold.underline(path.basename(target))}`;
|
|
185
157
|
}
|
|
186
|
-
|
|
187
158
|
return target;
|
|
188
159
|
}
|
|
189
|
-
|
|
190
160
|
function handle$1(data) {
|
|
191
161
|
var _context, _context2, _context3;
|
|
192
|
-
|
|
193
162
|
const {
|
|
194
163
|
[splat]: [error] = []
|
|
195
164
|
} = data;
|
|
196
|
-
|
|
197
165
|
if (!(error instanceof Error)) {
|
|
198
166
|
return undefined;
|
|
199
167
|
}
|
|
200
|
-
|
|
201
168
|
const {
|
|
202
169
|
name,
|
|
203
170
|
message,
|
|
204
171
|
stack: rawStack = ''
|
|
205
172
|
} = error;
|
|
206
|
-
|
|
207
|
-
const stack = _mapInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = _mapInstanceProperty__default["default"](_context3 = _sliceInstanceProperty__default["default"](rawStack).call(rawStack, name.length + message.length + 3).split('\n')).call(_context3, line => line.replace(/^\s+at /g, ''))).call(_context2, line => path__default["default"].isAbsolute(line) ? `<anonymous>${conjunction}${mapLocationOfErrorThrown(line)}` : line)).call(_context, line => line.replace(/^(.+) \((.+)\)$/, (matches, contextName, rawLocation) => {
|
|
173
|
+
const stack = _mapInstanceProperty(_context = _mapInstanceProperty(_context2 = _mapInstanceProperty(_context3 = _sliceInstanceProperty(rawStack).call(rawStack, name.length + message.length + 3).split('\n')).call(_context3, line => line.replace(/^\s+at /g, ''))).call(_context2, line => path.isAbsolute(line) ? `<anonymous>${conjunction}${mapLocationOfErrorThrown(line)}` : line)).call(_context, line => line.replace(/^(.+) \((.+)\)$/, (matches, contextName, rawLocation) => {
|
|
208
174
|
let location;
|
|
209
|
-
|
|
210
175
|
if (rawLocation === '<anonymous>') {
|
|
211
|
-
location =
|
|
176
|
+
location = chalk.gray(rawLocation);
|
|
212
177
|
} else {
|
|
213
178
|
const [filename, line, column] = rawLocation.split(':');
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const
|
|
217
|
-
const trailing = chalk__default["default"].gray(`:${line}:${column}`);
|
|
179
|
+
if (path.isAbsolute(filename)) {
|
|
180
|
+
const target = mapLocationOfErrorThrown(path.relative(rootPath, filename));
|
|
181
|
+
const trailing = chalk.gray(`:${line}:${column}`);
|
|
218
182
|
location = target + trailing;
|
|
219
183
|
} else {
|
|
220
|
-
location =
|
|
184
|
+
location = chalk.gray(`https://github.com/${chalk.bold.underline('nodejs')}/node/blob/${process.version}/lib/${filename}#L${line}`); // eslint-disable-line max-len
|
|
221
185
|
}
|
|
222
186
|
}
|
|
223
|
-
|
|
224
187
|
return `${contextName}${conjunction}${location}`;
|
|
225
188
|
})).join('\n');
|
|
226
|
-
|
|
227
189
|
const label = decorateLabel(name, ColorScheme.Critical);
|
|
228
190
|
const payload = `${message}\n\n${stack}\n`;
|
|
229
191
|
return {
|
|
@@ -234,28 +196,30 @@ function handle$1(data) {
|
|
|
234
196
|
|
|
235
197
|
var ErrorHandler = /*#__PURE__*/Object.freeze({
|
|
236
198
|
__proto__: null,
|
|
237
|
-
|
|
238
|
-
level: level$8,
|
|
199
|
+
default: handle$1,
|
|
239
200
|
label: label$8,
|
|
240
|
-
|
|
201
|
+
level: level$8,
|
|
202
|
+
name: name$8
|
|
241
203
|
});
|
|
242
204
|
|
|
243
205
|
// Local helpers.
|
|
244
206
|
|
|
207
|
+
// Handler metadata.
|
|
245
208
|
const name$7 = 'fatal';
|
|
246
209
|
const level$7 = LoggingLevel.Fatal;
|
|
247
210
|
const label$7 = decorateLabel('FATAL', ColorScheme.Critical);
|
|
248
211
|
|
|
249
212
|
var FatalHandler = /*#__PURE__*/Object.freeze({
|
|
250
213
|
__proto__: null,
|
|
251
|
-
|
|
252
|
-
level: level$7,
|
|
214
|
+
default: handle$1,
|
|
253
215
|
label: label$7,
|
|
254
|
-
|
|
216
|
+
level: level$7,
|
|
217
|
+
name: name$7
|
|
255
218
|
});
|
|
256
219
|
|
|
257
220
|
// Local helpers.
|
|
258
221
|
|
|
222
|
+
// Handler metadata.
|
|
259
223
|
const name$6 = 'warning';
|
|
260
224
|
const level$6 = LoggingLevel.Warning;
|
|
261
225
|
const label$6 = decorateLabel('WARNING', ColorScheme.Warning);
|
|
@@ -263,14 +227,15 @@ var warning = null;
|
|
|
263
227
|
|
|
264
228
|
var WarningHandler = /*#__PURE__*/Object.freeze({
|
|
265
229
|
__proto__: null,
|
|
266
|
-
|
|
267
|
-
level: level$6,
|
|
230
|
+
default: warning,
|
|
268
231
|
label: label$6,
|
|
269
|
-
|
|
232
|
+
level: level$6,
|
|
233
|
+
name: name$6
|
|
270
234
|
});
|
|
271
235
|
|
|
272
236
|
// Local helpers.
|
|
273
237
|
|
|
238
|
+
// Handler metadata.
|
|
274
239
|
const name$5 = 'notice';
|
|
275
240
|
const level$5 = LoggingLevel.Notice;
|
|
276
241
|
const label$5 = decorateLabel('NOTICE', ColorScheme.Regular);
|
|
@@ -278,14 +243,15 @@ var notice = null;
|
|
|
278
243
|
|
|
279
244
|
var NoticeHandler = /*#__PURE__*/Object.freeze({
|
|
280
245
|
__proto__: null,
|
|
281
|
-
|
|
282
|
-
level: level$5,
|
|
246
|
+
default: notice,
|
|
283
247
|
label: label$5,
|
|
284
|
-
|
|
248
|
+
level: level$5,
|
|
249
|
+
name: name$5
|
|
285
250
|
});
|
|
286
251
|
|
|
287
252
|
// Local helpers.
|
|
288
253
|
|
|
254
|
+
// Handler metadata.
|
|
289
255
|
const name$4 = 'info';
|
|
290
256
|
const level$4 = LoggingLevel.Info;
|
|
291
257
|
const label$4 = decorateLabel('INFO', ColorScheme.Regular);
|
|
@@ -293,14 +259,15 @@ var info = null;
|
|
|
293
259
|
|
|
294
260
|
var InfoHandler = /*#__PURE__*/Object.freeze({
|
|
295
261
|
__proto__: null,
|
|
296
|
-
|
|
297
|
-
level: level$4,
|
|
262
|
+
default: info,
|
|
298
263
|
label: label$4,
|
|
299
|
-
|
|
264
|
+
level: level$4,
|
|
265
|
+
name: name$4
|
|
300
266
|
});
|
|
301
267
|
|
|
302
268
|
// Local helpers.
|
|
303
269
|
|
|
270
|
+
// Handler metadata.
|
|
304
271
|
const name$3 = 'http';
|
|
305
272
|
const level$3 = LoggingLevel.Http;
|
|
306
273
|
const label$3 = decorateLabel('HTTP', ColorScheme.Http);
|
|
@@ -308,20 +275,22 @@ var http = null;
|
|
|
308
275
|
|
|
309
276
|
var HttpHandler = /*#__PURE__*/Object.freeze({
|
|
310
277
|
__proto__: null,
|
|
311
|
-
|
|
312
|
-
level: level$3,
|
|
278
|
+
default: http,
|
|
313
279
|
label: label$3,
|
|
314
|
-
|
|
280
|
+
level: level$3,
|
|
281
|
+
name: name$3
|
|
315
282
|
});
|
|
316
283
|
|
|
317
284
|
// Highlight.js
|
|
318
285
|
|
|
286
|
+
// Type definitions.
|
|
287
|
+
|
|
319
288
|
// Handler metadata.
|
|
320
289
|
const name$2 = 'query';
|
|
321
290
|
const level$2 = LoggingLevel.Query;
|
|
322
291
|
const label$2 = decorateLabel('QUERY', ColorScheme.Query);
|
|
323
292
|
function handle(data) {
|
|
324
|
-
const payload =
|
|
293
|
+
const payload = highlight(data.message, {
|
|
325
294
|
language: 'sql'
|
|
326
295
|
});
|
|
327
296
|
return {
|
|
@@ -332,14 +301,15 @@ function handle(data) {
|
|
|
332
301
|
|
|
333
302
|
var QueryHandler = /*#__PURE__*/Object.freeze({
|
|
334
303
|
__proto__: null,
|
|
335
|
-
|
|
336
|
-
level: level$2,
|
|
304
|
+
default: handle,
|
|
337
305
|
label: label$2,
|
|
338
|
-
|
|
306
|
+
level: level$2,
|
|
307
|
+
name: name$2
|
|
339
308
|
});
|
|
340
309
|
|
|
341
310
|
// Local helpers.
|
|
342
311
|
|
|
312
|
+
// Handler metadata.
|
|
343
313
|
const name$1 = 'verbose';
|
|
344
314
|
const level$1 = LoggingLevel.Verbose;
|
|
345
315
|
const label$1 = decorateLabel('VERBOSE', ColorScheme.Loud);
|
|
@@ -347,14 +317,15 @@ var verbose = null;
|
|
|
347
317
|
|
|
348
318
|
var VerboseHandler = /*#__PURE__*/Object.freeze({
|
|
349
319
|
__proto__: null,
|
|
350
|
-
|
|
351
|
-
level: level$1,
|
|
320
|
+
default: verbose,
|
|
352
321
|
label: label$1,
|
|
353
|
-
|
|
322
|
+
level: level$1,
|
|
323
|
+
name: name$1
|
|
354
324
|
});
|
|
355
325
|
|
|
356
326
|
// Local helpers.
|
|
357
327
|
|
|
328
|
+
// Handler metadata.
|
|
358
329
|
const name = 'debug';
|
|
359
330
|
const level = LoggingLevel.Debug;
|
|
360
331
|
const label = decorateLabel('DEBUG', ColorScheme.Loud);
|
|
@@ -362,47 +333,43 @@ var debug = null;
|
|
|
362
333
|
|
|
363
334
|
var DebugHandler = /*#__PURE__*/Object.freeze({
|
|
364
335
|
__proto__: null,
|
|
365
|
-
|
|
366
|
-
level: level,
|
|
336
|
+
default: debug,
|
|
367
337
|
label: label,
|
|
368
|
-
|
|
338
|
+
level: level,
|
|
339
|
+
name: name
|
|
369
340
|
});
|
|
370
341
|
|
|
371
342
|
// Handler implementations.
|
|
372
343
|
const handlers = [FatalHandler, ErrorHandler, WarningHandler, NoticeHandler, InfoHandler, HttpHandler, QueryHandler, VerboseHandler, DebugHandler];
|
|
373
344
|
|
|
374
345
|
var formatForCLI = winston.format.printf(data => {
|
|
375
|
-
const timestamp =
|
|
346
|
+
const timestamp = chalk.gray(luxon.DateTime.now().toISO({
|
|
376
347
|
includeOffset: true
|
|
377
348
|
}));
|
|
378
|
-
|
|
379
|
-
const handler = _findInstanceProperty__default["default"](handlers).call(handlers, ({
|
|
349
|
+
const handler = _findInstanceProperty(handlers).call(handlers, ({
|
|
380
350
|
name
|
|
381
351
|
}) => name === data.level);
|
|
382
|
-
|
|
383
352
|
const fallback = {
|
|
384
353
|
label: handler?.label,
|
|
385
354
|
payload: data.message
|
|
386
355
|
};
|
|
356
|
+
const performHandle = handler?.default ?? (() => fallback);
|
|
387
357
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
358
|
+
// Execute handler and then, get decorated payload.
|
|
391
359
|
const {
|
|
392
360
|
label,
|
|
393
361
|
payload
|
|
394
|
-
} = _Reflect$
|
|
362
|
+
} = _Reflect$apply(performHandle, undefined, [data]) ?? fallback;
|
|
395
363
|
let extraFingerprint;
|
|
396
|
-
|
|
397
364
|
if (handler?.level === LoggingLevel.Http) {
|
|
398
|
-
extraFingerprint = data.transactionId ? `(Transaction-ID = ${data.transactionId})` : `(Request-ID = ${
|
|
365
|
+
extraFingerprint = data.transactionId ? `(Transaction-ID = ${data.transactionId})` : `(Request-ID = ${rTracer.id()})`;
|
|
399
366
|
}
|
|
400
|
-
|
|
401
367
|
return `${label} ${timestamp}${extraFingerprint ? ` ${extraFingerprint}` : ''}\n${payload}`;
|
|
402
368
|
});
|
|
403
369
|
|
|
404
370
|
// Node.js built-in APIs.
|
|
405
371
|
|
|
372
|
+
// Type definitions.
|
|
406
373
|
const ExecutionMode = {
|
|
407
374
|
DevelopmentMode: 'development',
|
|
408
375
|
ProductionMode: 'production'
|
|
@@ -413,81 +380,78 @@ const ClusteringMode = {
|
|
|
413
380
|
};
|
|
414
381
|
// Exportings.
|
|
415
382
|
const executionMode = process.env.NODE_ENV ?? ExecutionMode.DevelopmentMode;
|
|
416
|
-
|
|
383
|
+
cluster.isPrimary ?? cluster.isMaster ? ClusteringMode.MasterProcess : ClusteringMode.WorkerProcess;
|
|
417
384
|
|
|
418
385
|
// Node.js built-in APIs.
|
|
419
386
|
|
|
387
|
+
// Type definitions.
|
|
388
|
+
|
|
420
389
|
// Helpers.
|
|
421
390
|
function decorateStatusCode(statusCode) {
|
|
422
391
|
const groupOfCode = Math.floor(Number(statusCode) / 100) * 100;
|
|
423
392
|
const baseMessage = `${statusCode} ${http$1.STATUS_CODES[statusCode]}`;
|
|
424
|
-
|
|
425
393
|
switch (groupOfCode) {
|
|
426
394
|
case 200:
|
|
427
395
|
{
|
|
428
|
-
return
|
|
396
|
+
return chalk.green(baseMessage);
|
|
429
397
|
}
|
|
430
|
-
|
|
431
398
|
case 300:
|
|
432
399
|
{
|
|
433
|
-
return
|
|
400
|
+
return chalk.magenta(baseMessage);
|
|
434
401
|
}
|
|
435
|
-
|
|
436
402
|
case 400:
|
|
437
403
|
case 500:
|
|
438
404
|
{
|
|
439
|
-
return
|
|
405
|
+
return chalk.red(baseMessage);
|
|
440
406
|
}
|
|
441
|
-
|
|
442
407
|
default:
|
|
443
408
|
{
|
|
444
|
-
return
|
|
409
|
+
return chalk.gray(baseMessage);
|
|
445
410
|
}
|
|
446
411
|
}
|
|
447
412
|
}
|
|
448
|
-
|
|
449
413
|
function formatForMorgan(tokens, request, response) {
|
|
450
414
|
function _(token, ...subArgs) {
|
|
451
415
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
452
416
|
return tokens[token](request, response, ...subArgs);
|
|
453
|
-
}
|
|
454
|
-
|
|
417
|
+
}
|
|
455
418
|
|
|
419
|
+
// Raw values.
|
|
456
420
|
const method = _('method');
|
|
457
|
-
|
|
458
421
|
const URL = _('url');
|
|
459
|
-
|
|
460
422
|
const httpVersion = `HTTP/${_('http-version')}`;
|
|
461
423
|
const statusCode = Number(_('status'));
|
|
462
424
|
const contentLength = Number(_('res', 'content-length') ?? -1);
|
|
463
|
-
const responseTime = Number(_('response-time') ?? -1);
|
|
425
|
+
const responseTime = Number(_('response-time') ?? -1);
|
|
464
426
|
|
|
465
|
-
|
|
466
|
-
const $
|
|
427
|
+
// Decorated values.
|
|
428
|
+
const $method = chalk.bold(method);
|
|
429
|
+
const $version = chalk.rgb(98, 177, 255)(httpVersion);
|
|
467
430
|
const $statusCode = decorateStatusCode(statusCode);
|
|
468
|
-
const $contentLength = contentLength >= 0 ?
|
|
469
|
-
const $responseTime = responseTime >= 0 ?
|
|
431
|
+
const $contentLength = contentLength >= 0 ? prettyBytes(contentLength) : '? B';
|
|
432
|
+
const $responseTime = responseTime >= 0 ? prettyMs(responseTime) : '';
|
|
470
433
|
|
|
434
|
+
// Additional information.
|
|
471
435
|
const metadata = `(${$contentLength}, ${$responseTime})`;
|
|
472
436
|
return [`→ ${$method} ${URL} ${$version}`, `← ${$version} ${$statusCode} ${metadata}`].join('\n');
|
|
473
437
|
}
|
|
474
|
-
|
|
475
|
-
var formatForMorgan$1 = executionMode === ExecutionMode.DevelopmentMode ? formatForMorgan : morgan__default["default"].combined;
|
|
438
|
+
var formatForMorgan$1 = executionMode === ExecutionMode.DevelopmentMode ? formatForMorgan : morgan.combined;
|
|
476
439
|
|
|
477
440
|
var _context, _context2;
|
|
478
441
|
|
|
442
|
+
// Type definitions.
|
|
443
|
+
|
|
479
444
|
// Transports.
|
|
480
445
|
const {
|
|
481
446
|
Console: ConsoleTransport
|
|
482
|
-
} = winston__namespace.transports;
|
|
483
|
-
|
|
484
|
-
const KeyOfInstance = _Symbol__default["default"]('@cichol/logger::classes/logger::Instance');
|
|
485
|
-
|
|
486
|
-
const KeyOfPassport = _Symbol__default["default"]('@cichol/logger::classes/logger::Passport');
|
|
447
|
+
} = winston__namespace.transports;
|
|
487
448
|
|
|
449
|
+
// Keys in order to access private properties.
|
|
450
|
+
const KeyOfInstance = _Symbol('@cichol/logger::classes/logger::Instance');
|
|
451
|
+
const KeyOfPassport = _Symbol('@cichol/logger::classes/logger::Passport');
|
|
488
452
|
class Logger {
|
|
489
453
|
#logger = winston__namespace.createLogger({
|
|
490
|
-
levels:
|
|
454
|
+
levels: _filterInstanceProperty(_context = _mapInstanceProperty(_context2 = lodash(handlers)).call(_context2, ({
|
|
491
455
|
name,
|
|
492
456
|
level
|
|
493
457
|
}) => [name, level])).call(_context, ([, level]) => typeof level === 'number').fromPairs().value(),
|
|
@@ -497,37 +461,33 @@ class Logger {
|
|
|
497
461
|
})],
|
|
498
462
|
exitOnError: false
|
|
499
463
|
});
|
|
500
|
-
#morgan =
|
|
464
|
+
#morgan = morgan(formatForMorgan$1, {
|
|
501
465
|
stream: new stream.PassThrough({
|
|
502
466
|
objectMode: true
|
|
503
467
|
}).on('data', data => {
|
|
504
|
-
this.log('http',
|
|
468
|
+
this.log('http', _trimInstanceProperty(data).call(data));
|
|
505
469
|
})
|
|
506
470
|
});
|
|
507
|
-
|
|
508
471
|
constructor(passport) {
|
|
509
472
|
if (passport !== KeyOfPassport) {
|
|
510
473
|
throw new ReferenceError('Logger class cannot be constructed in directly');
|
|
511
474
|
}
|
|
512
475
|
}
|
|
513
|
-
|
|
514
476
|
static get instance() {
|
|
515
477
|
if (this !== Logger) {
|
|
516
478
|
throw new ReferenceError('Logger class is not inheritable');
|
|
517
479
|
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
return _Reflect$getOwnMetadata__default["default"](KeyOfInstance, Logger);
|
|
480
|
+
if (Reflect.hasOwnMetadata(KeyOfInstance, Logger)) {
|
|
481
|
+
return Reflect.getOwnMetadata(KeyOfInstance, Logger);
|
|
521
482
|
}
|
|
522
|
-
|
|
523
483
|
const instance = new Logger(KeyOfPassport);
|
|
524
|
-
|
|
525
484
|
try {
|
|
526
485
|
return instance;
|
|
527
486
|
} finally {
|
|
528
|
-
|
|
487
|
+
Reflect.defineMetadata(KeyOfInstance, instance, Logger);
|
|
529
488
|
}
|
|
530
489
|
}
|
|
490
|
+
|
|
531
491
|
/**
|
|
532
492
|
* Logging message with specific level.
|
|
533
493
|
*
|
|
@@ -536,38 +496,47 @@ class Logger {
|
|
|
536
496
|
* @param args Additional metadata.
|
|
537
497
|
*/
|
|
538
498
|
|
|
499
|
+
/**
|
|
500
|
+
* Logging HTTP I/O.
|
|
501
|
+
*
|
|
502
|
+
* @param request Node.js built-in `IncomingMessage` instance from `http` module.
|
|
503
|
+
* @param response Node.js built-in `ServerResponse` instance from `http` module.
|
|
504
|
+
*/
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Logging errors in detail.
|
|
508
|
+
*
|
|
509
|
+
* @param error
|
|
510
|
+
*/
|
|
539
511
|
|
|
540
512
|
log(...args) {
|
|
541
513
|
const logger = this.#logger;
|
|
542
514
|
const morgan = this.#morgan;
|
|
543
|
-
|
|
544
515
|
switch (true) {
|
|
545
516
|
case args.length >= 2 && args[0] instanceof http$1.IncomingMessage && args[1] instanceof http$1.ServerResponse:
|
|
546
517
|
{
|
|
547
518
|
const [request, response] = args;
|
|
548
|
-
return
|
|
519
|
+
return Promise$1.fromCallback(callback => morgan(request, response, callback));
|
|
549
520
|
}
|
|
550
|
-
|
|
551
521
|
case args.length >= 1 && args[0] instanceof Error:
|
|
552
522
|
{
|
|
553
|
-
const [error, ...data] = args;
|
|
523
|
+
const [error, ...data] = args;
|
|
554
524
|
|
|
525
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
555
526
|
logger.log('error', error.message, error, ...data);
|
|
556
527
|
return undefined;
|
|
557
528
|
}
|
|
558
|
-
|
|
559
529
|
default:
|
|
560
530
|
{
|
|
561
|
-
const [level, message, ...data] = args;
|
|
531
|
+
const [level, message, ...data] = args;
|
|
562
532
|
|
|
533
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
563
534
|
logger.log(level, message, ...data);
|
|
564
535
|
return undefined;
|
|
565
536
|
}
|
|
566
537
|
}
|
|
567
538
|
}
|
|
568
|
-
|
|
569
539
|
}
|
|
570
|
-
|
|
571
540
|
var logger = Logger.instance;
|
|
572
541
|
|
|
573
542
|
module.exports = logger;
|