@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cichol/logger",
3
- "version": "4.0.0",
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": "^4.1.2",
36
+ "chalk": "^5.3.0",
37
37
  "cli-highlight": "^2.1.11",
38
- "cls-rtracer": "^2.6.0",
38
+ "cls-rtracer": "^2.6.3",
39
+ "core-js-pure": "^3.38.1",
39
40
  "lodash": "^4.17.21",
40
- "luxon": "^2.3.0",
41
+ "luxon": "^3.5.0",
41
42
  "morgan": "^1.10.0",
42
- "pretty-bytes": "^5.6.0",
43
- "pretty-ms": "^7.0.1",
44
- "reflect-metadata": "^0.1.13",
45
- "winston": "^3.3.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": "^14.18.3 || ^16.13.2",
49
- "npm": "^8.3.1"
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('@babel/runtime-corejs3/core-js/symbol');
4
- var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/filter');
5
- var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/map');
6
- var _trimInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/trim');
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('@babel/runtime-corejs3/core-js/instance/find');
18
- var _Reflect$apply = require('@babel/runtime-corejs3/core-js/reflect/apply');
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('@babel/runtime-corejs3/core-js/map');
19
+ var _Map = require('core-js-pure/stable/map/index.js');
23
20
  var process = require('process');
24
- var _Symbol$for = require('@babel/runtime-corejs3/core-js/symbol/for');
25
- var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/starts-with');
26
- var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/slice');
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 _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
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["default"] = e;
44
+ n.default = e;
51
45
  return Object.freeze(n);
52
46
  }
53
47
 
54
- var _Symbol__default = /*#__PURE__*/_interopDefaultLegacy(_Symbol);
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
- const colorizerMap = new _Map__default["default"](); // Helpers.
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 = chalk__default["default"].bgHex(options.background).hex(options.foreground);
73
+ const colorizer = chalk.bgHex(options.background).hex(options.foreground);
102
74
  colorizerMap.set(nextIndex, colorizer);
103
75
  return nextIndex;
104
- } // Color definitions.
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) ?? chalk__default["default"];
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
- } = process__default["default"].stdout;
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
- // Constants.
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 = path__default["default"].relative(rootPath, filename);
179
-
180
- if (_startsWithInstanceProperty__default["default"](target).call(target, 'node_modules')) {
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 = `${chalk__default["default"].gray(path__default["default"].dirname(target) + path__default["default"].sep)}${chalk__default["default"].bold.underline(path__default["default"].basename(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 = chalk__default["default"].gray(rawLocation);
176
+ location = chalk.gray(rawLocation);
212
177
  } else {
213
178
  const [filename, line, column] = rawLocation.split(':');
214
-
215
- if (path__default["default"].isAbsolute(filename)) {
216
- const target = mapLocationOfErrorThrown(path__default["default"].relative(rootPath, filename));
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 = chalk__default["default"].gray(`https://github.com/${chalk__default["default"].bold.underline('nodejs')}/node/blob/${process.version}/lib/${filename}#L${line}`); // eslint-disable-line max-len
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
- name: name$8,
238
- level: level$8,
199
+ default: handle$1,
239
200
  label: label$8,
240
- 'default': handle$1
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
- name: name$7,
252
- level: level$7,
214
+ default: handle$1,
253
215
  label: label$7,
254
- 'default': handle$1
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
- name: name$6,
267
- level: level$6,
230
+ default: warning,
268
231
  label: label$6,
269
- 'default': warning
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
- name: name$5,
282
- level: level$5,
246
+ default: notice,
283
247
  label: label$5,
284
- 'default': notice
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
- name: name$4,
297
- level: level$4,
262
+ default: info,
298
263
  label: label$4,
299
- 'default': info
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
- name: name$3,
312
- level: level$3,
278
+ default: http,
313
279
  label: label$3,
314
- 'default': http
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 = highlight__default["default"](data.message, {
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
- name: name$2,
336
- level: level$2,
304
+ default: handle,
337
305
  label: label$2,
338
- 'default': handle
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
- name: name$1,
351
- level: level$1,
320
+ default: verbose,
352
321
  label: label$1,
353
- 'default': verbose
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
- name: name,
366
- level: level,
336
+ default: debug,
367
337
  label: label,
368
- 'default': debug
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 = chalk__default["default"].gray(luxon.DateTime.now().toISO({
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
- const performHandle = handler?.default ?? (() => fallback); // Execute handler and then, get decorated payload.
389
-
390
-
358
+ // Execute handler and then, get decorated payload.
391
359
  const {
392
360
  label,
393
361
  payload
394
- } = _Reflect$apply__default["default"](performHandle, undefined, [data]) ?? fallback;
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 = ${rTracer__default["default"].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
- cluster__default["default"].isPrimary ?? cluster__default["default"].isMaster ? ClusteringMode.MasterProcess : ClusteringMode.WorkerProcess;
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 chalk__default["default"].green(baseMessage);
396
+ return chalk.green(baseMessage);
429
397
  }
430
-
431
398
  case 300:
432
399
  {
433
- return chalk__default["default"].magenta(baseMessage);
400
+ return chalk.magenta(baseMessage);
434
401
  }
435
-
436
402
  case 400:
437
403
  case 500:
438
404
  {
439
- return chalk__default["default"].red(baseMessage);
405
+ return chalk.red(baseMessage);
440
406
  }
441
-
442
407
  default:
443
408
  {
444
- return chalk__default["default"].gray(baseMessage);
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
- } // Raw values.
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); // Decorated values.
425
+ const responseTime = Number(_('response-time') ?? -1);
464
426
 
465
- const $method = chalk__default["default"].bold(method);
466
- const $version = chalk__default["default"].rgb(98, 177, 255)(httpVersion);
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 ? prettyBytes__default["default"](contentLength) : '? B';
469
- const $responseTime = responseTime >= 0 ? prettyMs__default["default"](responseTime) : ''; // Additional information.
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; // Keys in order to access private properties.
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: _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = lodash__default["default"](handlers)).call(_context2, ({
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 = morgan__default["default"](formatForMorgan$1, {
464
+ #morgan = morgan(formatForMorgan$1, {
501
465
  stream: new stream.PassThrough({
502
466
  objectMode: true
503
467
  }).on('data', data => {
504
- this.log('http', _trimInstanceProperty__default["default"](data).call(data));
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
- if (_Reflect$hasOwnMetadata__default["default"](KeyOfInstance, Logger)) {
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
- _Reflect$defineMetadata__default["default"](KeyOfInstance, instance, Logger);
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 Promise__default["default"].fromCallback(callback => morgan(request, response, callback));
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; // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
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; // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
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;