nightingale-formatter 12.1.0 → 12.1.4
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/.eslintrc.json +1 -1
- package/CHANGELOG.md +41 -0
- package/dist/index-browser.cjs.js +66 -82
- package/dist/index-browser.cjs.js.map +1 -1
- package/dist/index-browser.es.js +66 -82
- package/dist/index-browser.es.js.map +1 -1
- package/dist/{index-node14.cjs.js → index-node14.cjs} +1 -1
- package/dist/index-node14.cjs.map +1 -0
- package/package.json +11 -11
- package/dist/index-node14.cjs.js.map +0 -1
package/.eslintrc.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,47 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [12.1.4](https://github.com/christophehurpeau/nightingale/compare/v12.1.3...v12.1.4) (2022-02-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* cjs build ([2e24ac5](https://github.com/christophehurpeau/nightingale/commit/2e24ac5753ee386c5be9ca56796194ee598f10ff))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [12.1.3](https://github.com/christophehurpeau/nightingale/compare/v12.1.2...v12.1.3) (2022-01-15)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package nightingale-formatter
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## [12.1.2](https://github.com/christophehurpeau/nightingale/compare/v12.1.1...v12.1.2) (2022-01-02)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* main esm for jest which supports esm but not exports ([98789fa](https://github.com/christophehurpeau/nightingale/commit/98789fa490e723840fccc443584189b6905d871b))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## [12.1.1](https://github.com/christophehurpeau/nightingale/compare/v12.1.0...v12.1.1) (2022-01-01)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Bug Fixes
|
|
40
|
+
|
|
41
|
+
* properly configure package type ([2e0cbf5](https://github.com/christophehurpeau/nightingale/commit/2e0cbf555bd3b9fa3c3851025452937f64408aa8))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
6
47
|
# [12.1.0](https://github.com/christophehurpeau/nightingale/compare/v12.0.1...v12.1.0) (2021-12-15)
|
|
7
48
|
|
|
8
49
|
**Note:** Version bump only for package nightingale-formatter
|
|
@@ -9,27 +9,11 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
9
9
|
|
|
10
10
|
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
11
11
|
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
[nightingaleLevels.Level.DEBUG]: ['gray'],
|
|
15
|
-
// [Level.INFO]: ['gray'],
|
|
16
|
-
[nightingaleLevels.Level.WARN]: ['yellow'],
|
|
17
|
-
[nightingaleLevels.Level.ERROR]: ['red', 'bold'],
|
|
18
|
-
[nightingaleLevels.Level.CRITICAL]: ['red', 'bold'],
|
|
19
|
-
[nightingaleLevels.Level.FATAL]: ['bgRed', 'white'],
|
|
20
|
-
[nightingaleLevels.Level.EMERGENCY]: ['bgRed', 'white']
|
|
21
|
-
};
|
|
12
|
+
var _levelToStyles;
|
|
13
|
+
var levelToStyles = (_levelToStyles = {}, _levelToStyles[nightingaleLevels.Level.TRACE] = ['gray'], _levelToStyles[nightingaleLevels.Level.DEBUG] = ['gray'], _levelToStyles[nightingaleLevels.Level.WARN] = ['yellow'], _levelToStyles[nightingaleLevels.Level.ERROR] = ['red', 'bold'], _levelToStyles[nightingaleLevels.Level.CRITICAL] = ['red', 'bold'], _levelToStyles[nightingaleLevels.Level.FATAL] = ['bgRed', 'white'], _levelToStyles[nightingaleLevels.Level.EMERGENCY] = ['bgRed', 'white'], _levelToStyles);
|
|
22
14
|
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
[nightingaleLevels.Level.DEBUG]: '•',
|
|
26
|
-
[nightingaleLevels.Level.INFO]: '→',
|
|
27
|
-
[nightingaleLevels.Level.WARN]: '⚠',
|
|
28
|
-
[nightingaleLevels.Level.ERROR]: '✖',
|
|
29
|
-
[nightingaleLevels.Level.CRITICAL]: '!',
|
|
30
|
-
[nightingaleLevels.Level.FATAL]: '‼',
|
|
31
|
-
[nightingaleLevels.Level.EMERGENCY]: '‼'
|
|
32
|
-
};
|
|
15
|
+
var _levelToSymbol;
|
|
16
|
+
var levelToSymbol = (_levelToSymbol = {}, _levelToSymbol[nightingaleLevels.Level.TRACE] = '•', _levelToSymbol[nightingaleLevels.Level.DEBUG] = '•', _levelToSymbol[nightingaleLevels.Level.INFO] = '→', _levelToSymbol[nightingaleLevels.Level.WARN] = '⚠', _levelToSymbol[nightingaleLevels.Level.ERROR] = '✖', _levelToSymbol[nightingaleLevels.Level.CRITICAL] = '!', _levelToSymbol[nightingaleLevels.Level.FATAL] = '‼', _levelToSymbol[nightingaleLevels.Level.EMERGENCY] = '‼', _levelToSymbol);
|
|
33
17
|
|
|
34
18
|
var styleToHexColor = {
|
|
35
19
|
orange: 'ff5f00',
|
|
@@ -128,15 +112,15 @@ var styleToHtmlStyleThemeLight = {
|
|
|
128
112
|
close: 'background: initial'
|
|
129
113
|
},
|
|
130
114
|
orange: {
|
|
131
|
-
open:
|
|
115
|
+
open: "color: #" + styleToHexColor.orange,
|
|
132
116
|
close: 'color: currentcolor'
|
|
133
117
|
},
|
|
134
118
|
grayLight: {
|
|
135
|
-
open:
|
|
119
|
+
open: "color: #" + styleToHexColor.grayLight,
|
|
136
120
|
close: 'color: currentcolor'
|
|
137
121
|
},
|
|
138
122
|
'gray-light': {
|
|
139
|
-
open:
|
|
123
|
+
open: "color: #" + styleToHexColor.grayLight,
|
|
140
124
|
close: 'color: currentcolor'
|
|
141
125
|
}
|
|
142
126
|
};
|
|
@@ -224,10 +208,10 @@ function internalFormatValue(value, styleFn, styles, _ref) {
|
|
|
224
208
|
stringValue = '{Object...}';
|
|
225
209
|
} else {
|
|
226
210
|
return internalFormatObject(value, styleFn, undefined, {
|
|
227
|
-
padding,
|
|
211
|
+
padding: padding,
|
|
228
212
|
depth: depth + 1,
|
|
229
|
-
maxDepth,
|
|
230
|
-
objects
|
|
213
|
+
maxDepth: maxDepth,
|
|
214
|
+
objects: objects
|
|
231
215
|
});
|
|
232
216
|
}
|
|
233
217
|
} else if (Array.isArray(value)) {
|
|
@@ -235,26 +219,26 @@ function internalFormatValue(value, styleFn, styles, _ref) {
|
|
|
235
219
|
stringValue = '[Array...]';
|
|
236
220
|
} else {
|
|
237
221
|
return internalFormatArray(value, styleFn, {
|
|
238
|
-
padding,
|
|
222
|
+
padding: padding,
|
|
239
223
|
depth: depth + 1,
|
|
240
|
-
maxDepth,
|
|
241
|
-
objects
|
|
224
|
+
maxDepth: maxDepth,
|
|
225
|
+
objects: objects
|
|
242
226
|
});
|
|
243
227
|
}
|
|
244
228
|
} else if (value instanceof Error) {
|
|
245
229
|
var stack = value.stack;
|
|
246
|
-
stringValue = stack != null && stack.startsWith(value.message) ? stack :
|
|
230
|
+
stringValue = stack != null && stack.startsWith(value.message) ? stack : value.message + "\n" + (stack || '');
|
|
247
231
|
} else if (value instanceof Map) {
|
|
248
232
|
var name = value.constructor.name;
|
|
249
233
|
|
|
250
234
|
if (depth >= maxDepth) {
|
|
251
|
-
stringValue =
|
|
235
|
+
stringValue = "{" + name + "...}";
|
|
252
236
|
} else {
|
|
253
237
|
return internalFormatMap(name, value, styleFn, {
|
|
254
|
-
padding,
|
|
238
|
+
padding: padding,
|
|
255
239
|
depth: depth + 1,
|
|
256
|
-
maxDepth,
|
|
257
|
-
objects
|
|
240
|
+
maxDepth: maxDepth,
|
|
241
|
+
objects: objects
|
|
258
242
|
});
|
|
259
243
|
}
|
|
260
244
|
} else if (typeofValue === 'bigint') {
|
|
@@ -265,13 +249,13 @@ function internalFormatValue(value, styleFn, styles, _ref) {
|
|
|
265
249
|
var _name = value.constructor.name;
|
|
266
250
|
|
|
267
251
|
if (depth >= maxDepth) {
|
|
268
|
-
stringValue =
|
|
252
|
+
stringValue = "{" + _name + "...}";
|
|
269
253
|
} else {
|
|
270
254
|
return internalFormatSet(_name, value, styleFn, {
|
|
271
|
-
padding,
|
|
255
|
+
padding: padding,
|
|
272
256
|
depth: depth + 1,
|
|
273
|
-
maxDepth,
|
|
274
|
-
objects
|
|
257
|
+
maxDepth: maxDepth,
|
|
258
|
+
objects: objects
|
|
275
259
|
});
|
|
276
260
|
}
|
|
277
261
|
} else if (value instanceof WeakMap) {
|
|
@@ -284,8 +268,8 @@ function internalFormatValue(value, styleFn, styles, _ref) {
|
|
|
284
268
|
|
|
285
269
|
var formattedValue = styleFn(styles, stringValue);
|
|
286
270
|
return {
|
|
287
|
-
stringValue,
|
|
288
|
-
formattedValue
|
|
271
|
+
stringValue: stringValue,
|
|
272
|
+
formattedValue: formattedValue
|
|
289
273
|
};
|
|
290
274
|
}
|
|
291
275
|
|
|
@@ -293,8 +277,8 @@ var separator = ',';
|
|
|
293
277
|
|
|
294
278
|
var internalFormatKey = function internalFormatKey(key, styleFn) {
|
|
295
279
|
return {
|
|
296
|
-
stringKey:
|
|
297
|
-
formattedKey:
|
|
280
|
+
stringKey: key + ": ",
|
|
281
|
+
formattedKey: styleFn(['gray-light', 'bold'], key + ":") + " "
|
|
298
282
|
};
|
|
299
283
|
};
|
|
300
284
|
|
|
@@ -311,8 +295,8 @@ var internalFormatMapKey = function internalFormatMapKey(key, styleFn, internalF
|
|
|
311
295
|
formattedValue = _internalFormatValue.formattedValue;
|
|
312
296
|
|
|
313
297
|
return {
|
|
314
|
-
stringKey:
|
|
315
|
-
formattedKey:
|
|
298
|
+
stringKey: stringValue + " => ",
|
|
299
|
+
formattedKey: styleFn(['gray-light', 'bold'], formattedValue + ":") + " "
|
|
316
300
|
};
|
|
317
301
|
};
|
|
318
302
|
|
|
@@ -337,10 +321,10 @@ var internalFormatIterator = function internalFormatIterator(values, styleFn, ob
|
|
|
337
321
|
var key = _ref4.key,
|
|
338
322
|
value = _ref4.value;
|
|
339
323
|
var internalFormatParams = {
|
|
340
|
-
padding,
|
|
324
|
+
padding: padding,
|
|
341
325
|
depth: depth + 1,
|
|
342
|
-
maxDepth,
|
|
343
|
-
objects
|
|
326
|
+
maxDepth: maxDepth,
|
|
327
|
+
objects: objects
|
|
344
328
|
}; // key must be formatted before value (browser-formatter needs order)
|
|
345
329
|
|
|
346
330
|
var _formatKey = formatKey(key, styleFn, internalFormatParams),
|
|
@@ -353,8 +337,8 @@ var internalFormatIterator = function internalFormatIterator(values, styleFn, ob
|
|
|
353
337
|
|
|
354
338
|
if (stringValue && (stringValue.length > 80 || stringValue.includes('\n'))) {
|
|
355
339
|
breakLine = true;
|
|
356
|
-
stringValue = stringValue.replace(/\n/g,
|
|
357
|
-
formattedValue = formattedValue.replace(/\n/g,
|
|
340
|
+
stringValue = stringValue.replace(/\n/g, "\n" + padding);
|
|
341
|
+
formattedValue = formattedValue.replace(/\n/g, "\n" + padding);
|
|
358
342
|
}
|
|
359
343
|
|
|
360
344
|
return {
|
|
@@ -365,15 +349,15 @@ var internalFormatIterator = function internalFormatIterator(values, styleFn, ob
|
|
|
365
349
|
});
|
|
366
350
|
return {
|
|
367
351
|
stringValue: prefix + formattedValues.map(breakLine ? function (v) {
|
|
368
|
-
return
|
|
352
|
+
return "\n" + padding + v.stringValue;
|
|
369
353
|
} : function (fv) {
|
|
370
354
|
return fv.stringValue;
|
|
371
355
|
}).join(breakLine ? '\n' : ' ') + suffix,
|
|
372
|
-
formattedValue:
|
|
373
|
-
return
|
|
356
|
+
formattedValue: "" + prefix + (breakLine ? '' : prefixSuffixSpace) + formattedValues.map(breakLine ? function (v) {
|
|
357
|
+
return "\n" + padding + v.formattedValue;
|
|
374
358
|
} : function (v) {
|
|
375
359
|
return v.formattedValue;
|
|
376
|
-
}).join(breakLine ? '' : ' ')
|
|
360
|
+
}).join(breakLine ? '' : ' ') + (breakLine ? ',\n' : prefixSuffixSpace) + suffix
|
|
377
361
|
};
|
|
378
362
|
};
|
|
379
363
|
|
|
@@ -396,14 +380,14 @@ function internalFormatObject(object, styleFn, objectStyles, _ref5) {
|
|
|
396
380
|
objects.add(object);
|
|
397
381
|
var result = internalFormatIterator(keys.map(function (key) {
|
|
398
382
|
return {
|
|
399
|
-
key,
|
|
383
|
+
key: key,
|
|
400
384
|
value: object[key]
|
|
401
385
|
};
|
|
402
386
|
}), styleFn, objectStyles, {
|
|
403
|
-
padding,
|
|
404
|
-
depth,
|
|
405
|
-
maxDepth,
|
|
406
|
-
objects
|
|
387
|
+
padding: padding,
|
|
388
|
+
depth: depth,
|
|
389
|
+
maxDepth: maxDepth,
|
|
390
|
+
objects: objects
|
|
407
391
|
}, {
|
|
408
392
|
prefix: '{',
|
|
409
393
|
suffix: '}',
|
|
@@ -420,28 +404,28 @@ function internalFormatMap(name, map, styleFn, _ref6) {
|
|
|
420
404
|
objects = _ref6.objects;
|
|
421
405
|
|
|
422
406
|
if (objects.has(map)) {
|
|
423
|
-
return sameRawFormattedValue(
|
|
407
|
+
return sameRawFormattedValue("{Circular " + name + "}");
|
|
424
408
|
}
|
|
425
409
|
|
|
426
410
|
var keys = [].concat(map.keys());
|
|
427
411
|
|
|
428
412
|
if (keys.length === 0) {
|
|
429
|
-
return sameRawFormattedValue(
|
|
413
|
+
return sameRawFormattedValue(name + " {}");
|
|
430
414
|
}
|
|
431
415
|
|
|
432
416
|
objects.add(map);
|
|
433
417
|
var result = internalFormatIterator(keys.map(function (key) {
|
|
434
418
|
return {
|
|
435
|
-
key,
|
|
419
|
+
key: key,
|
|
436
420
|
value: map.get(key)
|
|
437
421
|
};
|
|
438
422
|
}), styleFn, undefined, {
|
|
439
|
-
padding,
|
|
440
|
-
depth,
|
|
441
|
-
maxDepth,
|
|
442
|
-
objects
|
|
423
|
+
padding: padding,
|
|
424
|
+
depth: depth,
|
|
425
|
+
maxDepth: maxDepth,
|
|
426
|
+
objects: objects
|
|
443
427
|
}, {
|
|
444
|
-
prefix:
|
|
428
|
+
prefix: name + " {",
|
|
445
429
|
suffix: '}',
|
|
446
430
|
formatKey: internalFormatMapKey
|
|
447
431
|
});
|
|
@@ -467,13 +451,13 @@ function internalFormatArray(array, styleFn, _ref7) {
|
|
|
467
451
|
var result = internalFormatIterator(array.map(function (value) {
|
|
468
452
|
return {
|
|
469
453
|
key: undefined,
|
|
470
|
-
value
|
|
454
|
+
value: value
|
|
471
455
|
};
|
|
472
456
|
}), styleFn, undefined, {
|
|
473
|
-
padding,
|
|
474
|
-
depth,
|
|
475
|
-
maxDepth,
|
|
476
|
-
objects
|
|
457
|
+
padding: padding,
|
|
458
|
+
depth: depth,
|
|
459
|
+
maxDepth: maxDepth,
|
|
460
|
+
objects: objects
|
|
477
461
|
}, {
|
|
478
462
|
prefix: '[',
|
|
479
463
|
suffix: ']',
|
|
@@ -491,28 +475,28 @@ function internalFormatSet(name, set, styleFn, _ref8) {
|
|
|
491
475
|
objects = _ref8.objects;
|
|
492
476
|
|
|
493
477
|
if (objects.has(set)) {
|
|
494
|
-
return sameRawFormattedValue(
|
|
478
|
+
return sameRawFormattedValue("{Circular " + name + "}");
|
|
495
479
|
}
|
|
496
480
|
|
|
497
481
|
var values = [].concat(set.values());
|
|
498
482
|
|
|
499
483
|
if (values.length === 0) {
|
|
500
|
-
return sameRawFormattedValue(
|
|
484
|
+
return sameRawFormattedValue(name + " []");
|
|
501
485
|
}
|
|
502
486
|
|
|
503
487
|
objects.add(set);
|
|
504
488
|
var result = internalFormatIterator(values.map(function (value) {
|
|
505
489
|
return {
|
|
506
490
|
key: undefined,
|
|
507
|
-
value
|
|
491
|
+
value: value
|
|
508
492
|
};
|
|
509
493
|
}), styleFn, undefined, {
|
|
510
|
-
padding,
|
|
511
|
-
depth,
|
|
512
|
-
maxDepth,
|
|
513
|
-
objects
|
|
494
|
+
padding: padding,
|
|
495
|
+
depth: depth,
|
|
496
|
+
maxDepth: maxDepth,
|
|
497
|
+
objects: objects
|
|
514
498
|
}, {
|
|
515
|
-
prefix:
|
|
499
|
+
prefix: name + " [",
|
|
516
500
|
suffix: ']',
|
|
517
501
|
formatKey: internalNoKey
|
|
518
502
|
});
|
|
@@ -532,8 +516,8 @@ function formatObject(object, styleFn, objectStyles, _temp) {
|
|
|
532
516
|
maxDepth = _ref9$maxDepth === void 0 ? 10 : _ref9$maxDepth;
|
|
533
517
|
|
|
534
518
|
var _internalFormatObject = internalFormatObject(object, styleFn, objectStyles, {
|
|
535
|
-
padding,
|
|
536
|
-
maxDepth,
|
|
519
|
+
padding: padding,
|
|
520
|
+
maxDepth: maxDepth,
|
|
537
521
|
depth: 0,
|
|
538
522
|
objects: new Set()
|
|
539
523
|
}),
|
|
@@ -565,7 +549,7 @@ function formatRecordToString(record, style) {
|
|
|
565
549
|
|
|
566
550
|
if (record.message) {
|
|
567
551
|
if (message) {
|
|
568
|
-
message +=
|
|
552
|
+
message += " " + record.message;
|
|
569
553
|
} else {
|
|
570
554
|
message = record.message;
|
|
571
555
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browser.cjs.js","sources":["../src/levelToStyles.ts","../src/levelToSymbol.ts","../src/styleToHexColor.ts","../src/styleToHtmlStyle.ts","../src/formatObject.ts","../src/formatRecordToString.ts"],"sourcesContent":["import { Level } from 'nightingale-levels';\n\nexport type LevelToStyles = Readonly<Record<number, string[]>>;\n\nexport const levelToStyles: LevelToStyles = {\n [Level.TRACE]: ['gray'],\n [Level.DEBUG]: ['gray'],\n // [Level.INFO]: ['gray'],\n [Level.WARN]: ['yellow'],\n [Level.ERROR]: ['red', 'bold'],\n [Level.CRITICAL]: ['red', 'bold'],\n [Level.FATAL]: ['bgRed', 'white'],\n [Level.EMERGENCY]: ['bgRed', 'white'],\n};\n","import { Level } from 'nightingale-levels';\n\nexport type LevelToSymbol = Readonly<Record<number, string>>;\n\nexport const levelToSymbol: LevelToSymbol = {\n [Level.TRACE]: '•',\n [Level.DEBUG]: '•',\n [Level.INFO]: '→',\n [Level.WARN]: '⚠',\n [Level.ERROR]: '✖',\n [Level.CRITICAL]: '!',\n [Level.FATAL]: '‼',\n [Level.EMERGENCY]: '‼',\n};\n","export type StyleToHexColor = Readonly<Record<string, string>>;\n\nexport const styleToHexColor: StyleToHexColor = {\n orange: 'ff5f00',\n grayLight: '808080',\n 'gray-light': '808080',\n};\n","import { styleToHexColor } from './styleToHexColor';\n\nexport interface HtmlStyle {\n readonly open: string;\n readonly close: string;\n}\n\nexport type StyleToHtmlStyle = Readonly<Record<string, HtmlStyle>>;\n\nexport const styleToHtmlStyleThemeLight: StyleToHtmlStyle = {\n // text style\n bold: { open: 'font-weight: bold', close: 'font-weight: normal' },\n italic: { open: 'font-style: italic', close: 'font-style: normal' },\n underline: {\n open: 'text-decoration: underline',\n close: 'text-decoration: none',\n },\n inverse: {\n open: 'unicode-bidi: bidi-override; direction: rtl',\n close: 'unicode-bidi: normal; direction: ltr',\n },\n strikethrough: {\n open: 'text-decoration: line-through',\n close: 'text-decoration: none',\n },\n\n black: { open: 'color: black', close: 'color: currentcolor' },\n red: { open: 'color: #ff0020', close: 'color: currentcolor' },\n green: { open: 'color: #00b317', close: 'color: currentcolor' },\n yellow: { open: 'color: #ffcc00', close: 'color: currentcolor' },\n blue: { open: 'color: #00a0ff', close: 'color: currentcolor' },\n magenta: { open: 'color: #ff00a0', close: 'color: currentcolor' },\n cyan: { open: 'color: #00cfd8', close: 'color: currentcolor' },\n white: { open: 'color: white', close: 'color: currentcolor' },\n gray: { open: 'color: gray', close: 'color: currentcolor' },\n\n bgBlack: { open: 'background: black', close: 'background: initial' },\n bgRed: { open: 'background: #ff0020', close: 'background: initial' },\n bgGreen: { open: 'background: #00b317', close: 'background: initial' },\n bgYellow: { open: 'background: #ffcc00', close: 'background: initial' },\n bgBlue: { open: 'background: #00a0ff', close: 'background: initial' },\n bgMagenta: { open: 'background: #ff00a0', close: 'background: initial' },\n bgCyan: { open: 'background: #00cfd8', close: 'background: initial' },\n bgWhite: { open: 'background: white', close: 'background: initial' },\n\n orange: {\n open: `color: #${styleToHexColor.orange}`,\n close: 'color: currentcolor',\n },\n grayLight: {\n open: `color: #${styleToHexColor.grayLight}`,\n close: 'color: currentcolor',\n },\n 'gray-light': {\n open: `color: #${styleToHexColor.grayLight}`,\n close: 'color: currentcolor',\n },\n};\n\nexport const styleToHtmlStyleThemeDark: StyleToHtmlStyle = {\n ...styleToHtmlStyleThemeLight,\n black: styleToHtmlStyleThemeLight.white,\n bgBlack: styleToHtmlStyleThemeLight.bgWhite,\n white: styleToHtmlStyleThemeLight.black,\n bgWhite: styleToHtmlStyleThemeLight.bgBlack,\n gray: { open: 'color: lightgray', close: 'color: currentcolor' },\n};\n","/* eslint-disable max-lines, @typescript-eslint/no-use-before-define */\nimport type { Styles } from 'nightingale-types';\n\nexport interface FormatObjectOptions {\n padding?: string;\n maxDepth?: number;\n}\n\nexport type StyleFn = (styles: Styles, value: string) => string;\n\nexport type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;\n\nconst noStyleFn: StyleFn = (styles: Styles, value: string): string => value;\n\ninterface InternalFormatParams {\n padding: string;\n depth: number;\n maxDepth: number;\n objects: Set<unknown>;\n}\n\ninterface FormattedKey {\n stringKey: string;\n formattedKey: string;\n}\n\ntype FormatKey<Key> = (\n key: Key,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n) => FormattedKey;\n\ninterface Value<Key> {\n key: Key;\n value: unknown;\n}\n\ninterface FormattedValue {\n stringValue: string;\n formattedValue: string;\n}\n\ntype Values<Key> = Value<Key>[];\n\ninterface InternalFormatIteratorParams<Key> {\n prefix: string;\n suffix: string;\n formatKey: FormatKey<Key>;\n prefixSuffixSpace?: string;\n}\n\nfunction tryStringify(arg: unknown): string {\n try {\n return JSON.stringify(arg).replace(/\\\\n/g, '\\n');\n } catch {\n return '[Circular]';\n }\n}\n\nconst sameRawFormattedValue = (value: string): FormattedValue => ({\n stringValue: value,\n formattedValue: value,\n});\n\nfunction internalFormatValue(\n value: unknown,\n styleFn: StyleFn,\n styles: Styles,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n const typeofValue = typeof value;\n\n if (!styles) {\n if (value == null) {\n styles = ['cyan'];\n } else {\n switch (typeofValue) {\n case 'undefined':\n styles = ['cyan'];\n break;\n case 'boolean':\n styles = ['green'];\n break;\n case 'number':\n styles = ['yellow'];\n break;\n case 'bigint':\n styles = ['red'];\n break;\n case 'string':\n styles = ['orange'];\n break;\n case 'symbol':\n styles = ['magenta'];\n break;\n case 'object':\n case 'function':\n break;\n }\n }\n }\n\n let stringValue: string;\n if (value === null) {\n stringValue = 'null';\n } else if (value === undefined) {\n stringValue = 'undefined';\n } else if (typeofValue === 'boolean') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n stringValue = (value as any).toString() as string;\n } else if ((value as () => unknown).constructor === Object) {\n if (depth >= maxDepth) {\n stringValue = '{Object...}';\n } else {\n return internalFormatObject(\n value as Record<string, unknown>,\n styleFn,\n undefined,\n {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n },\n );\n }\n } else if (Array.isArray(value)) {\n if (depth >= maxDepth) {\n stringValue = '[Array...]';\n } else {\n return internalFormatArray(value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof Error) {\n const stack = value.stack;\n stringValue = stack?.startsWith(value.message)\n ? stack\n : `${value.message}\\n${stack || ''}`;\n } else if (value instanceof Map) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatMap(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (typeofValue === 'bigint') {\n stringValue = (value as bigint).toString();\n } else if (typeofValue === 'symbol') {\n stringValue = (value as symbol).toString();\n } else if (value instanceof Set) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatSet(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof WeakMap) {\n stringValue = '{WeakMap...}';\n } else if (value instanceof WeakSet) {\n stringValue = '{WeakSet...}';\n } else {\n stringValue = tryStringify(value);\n }\n\n const formattedValue = styleFn(styles, stringValue);\n\n return {\n stringValue,\n formattedValue,\n };\n}\n\nconst separator = ',';\n\nconst internalFormatKey: FormatKey<string> = (\n key: string,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return {\n stringKey: `${key}: `,\n formattedKey: `${styleFn(['gray-light', 'bold'], `${key}:`)} `,\n };\n};\n\nconst internalNoKey: FormatKey<undefined> = (\n key: string | undefined,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return { stringKey: '', formattedKey: '' };\n};\n\nconst internalFormatMapKey: FormatKey<unknown> = (\n key: unknown,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n const { stringValue, formattedValue } = internalFormatValue(\n key,\n noStyleFn,\n undefined,\n internalFormatParams,\n );\n return {\n stringKey: `${stringValue} => `,\n formattedKey: `${styleFn(['gray-light', 'bold'], `${formattedValue}:`)} `,\n };\n};\n\nconst internalFormatIterator = <Key>(\n values: Values<Key>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n {\n prefix,\n suffix,\n prefixSuffixSpace = ' ',\n formatKey,\n }: InternalFormatIteratorParams<Key>,\n): FormattedValue => {\n let breakLine = false;\n const formattedSeparator = (): string => styleFn(['gray'], separator);\n\n const valuesMaxIndex = values.length - 1;\n const formattedValues: FormattedValue[] = values.map(\n ({ key, value }, index: number) => {\n const nextDepth = depth + 1;\n const internalFormatParams = {\n padding,\n depth: nextDepth,\n maxDepth,\n objects,\n };\n\n // key must be formatted before value (browser-formatter needs order)\n const { stringKey, formattedKey } = formatKey(\n key,\n styleFn,\n internalFormatParams,\n );\n\n let { stringValue, formattedValue } = internalFormatValue(\n value,\n styleFn,\n key && objectStyles\n ? objectStyles[key as unknown as string]\n : undefined,\n internalFormatParams,\n );\n\n if (\n stringValue &&\n (stringValue.length > 80 || stringValue.includes('\\n'))\n ) {\n breakLine = true;\n stringValue = stringValue.replace(/\\n/g, `\\n${padding}`);\n formattedValue = formattedValue.replace(/\\n/g, `\\n${padding}`);\n }\n\n return {\n stringValue:\n stringKey + stringValue + (index === valuesMaxIndex ? '' : separator),\n formattedValue:\n formattedKey +\n formattedValue +\n (index === valuesMaxIndex ? '' : formattedSeparator()),\n // note: we need to format the separator for each values for browser-formatter\n };\n },\n );\n\n return {\n stringValue:\n prefix +\n formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.stringValue}`\n : (fv) => fv.stringValue,\n )\n .join(breakLine ? '\\n' : ' ') +\n suffix,\n formattedValue: `${prefix}${\n breakLine ? '' : prefixSuffixSpace\n }${formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.formattedValue}`\n : (v) => v.formattedValue,\n )\n .join(breakLine ? '' : ' ')}${\n breakLine ? ',\\n' : prefixSuffixSpace\n }${suffix}`,\n };\n};\n\nfunction internalFormatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(object)) {\n return sameRawFormattedValue('{Circular Object}');\n }\n\n const keys: string[] = Object.keys(object);\n if (keys.length === 0) {\n return sameRawFormattedValue('{}');\n }\n\n objects.add(object);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: object[key] })),\n styleFn,\n objectStyles,\n { padding, depth, maxDepth, objects },\n { prefix: '{', suffix: '}', formatKey: internalFormatKey },\n );\n\n objects.delete(object);\n\n return result;\n}\n\nfunction internalFormatMap(\n name: string,\n map: Map<unknown, unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(map)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const keys = [...map.keys()];\n if (keys.length === 0) {\n return sameRawFormattedValue(`${name} {}`);\n }\n\n objects.add(map);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: map.get(key) })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} {`, suffix: '}', formatKey: internalFormatMapKey },\n );\n\n objects.delete(map);\n\n return result;\n}\n\nfunction internalFormatArray(\n array: unknown[],\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(array)) {\n return sameRawFormattedValue('{Circular Array}');\n }\n\n if (array.length === 0) {\n return sameRawFormattedValue('[]');\n }\n\n objects.add(array);\n\n const result = internalFormatIterator(\n array.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n {\n prefix: '[',\n suffix: ']',\n prefixSuffixSpace: '',\n formatKey: internalNoKey,\n },\n );\n\n objects.delete(array);\n\n return result;\n}\n\nfunction internalFormatSet(\n name: string,\n set: Set<unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(set)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const values = [...set.values()];\n if (values.length === 0) {\n return sameRawFormattedValue(`${name} []`);\n }\n\n objects.add(set);\n\n const result = internalFormatIterator(\n values.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} [`, suffix: ']', formatKey: internalNoKey },\n );\n\n objects.delete(set);\n\n return result;\n}\n\nexport function formatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn = noStyleFn,\n objectStyles?: ObjectStyles,\n { padding = ' ', maxDepth = 10 }: FormatObjectOptions = {},\n): string {\n const { formattedValue: result } = internalFormatObject(\n object,\n styleFn,\n objectStyles,\n {\n padding,\n maxDepth,\n depth: 0,\n objects: new Set(),\n },\n );\n\n if (result === '{}') {\n return '';\n }\n\n return result;\n}\n","import type { LogRecord, Metadata } from 'nightingale-types';\nimport type { StyleFn, ObjectStyles } from './formatObject';\nimport { formatObject } from './formatObject';\nimport { levelToStyles } from './levelToStyles';\nimport { levelToSymbol } from './levelToSymbol';\n\nexport function formatRecordToString<T extends Metadata>(\n record: LogRecord<T>,\n style: StyleFn,\n): string {\n const parts: string[] = [];\n\n if (record.displayName) {\n parts.push(style(['gray-light'], record.displayName));\n } else if (record.key) {\n parts.push(style(['gray-light'], record.key));\n }\n\n if (record.datetime) {\n parts.push(\n style(['gray', 'bold'], record.datetime.toTimeString().split(' ')[0]),\n );\n /* new Date().toFormat('HH24:MI:SS') */\n }\n\n let message: string = record.symbol || levelToSymbol[record.level];\n const styles = record.styles || levelToStyles[record.level];\n\n if (record.message) {\n if (message) {\n message += ` ${record.message}`;\n } else {\n message = record.message;\n }\n }\n\n if (message) {\n if (styles) {\n message = style(styles, message);\n }\n parts.push(message);\n }\n\n const formatRecordObject = (\n key: string,\n object: Record<string, unknown> | undefined,\n objectStyles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, objectStyles);\n\n if (!stringObject) {\n return;\n }\n\n parts.push(stringObject);\n };\n\n formatRecordObject('metadata', record.metadata, record.metadataStyles);\n formatRecordObject('extra', record.extra, undefined);\n formatRecordObject('context', record.context, undefined);\n\n return parts.join(' ');\n}\n"],"names":["levelToStyles","Level","TRACE","DEBUG","WARN","ERROR","CRITICAL","FATAL","EMERGENCY","levelToSymbol","INFO","styleToHexColor","orange","grayLight","styleToHtmlStyleThemeLight","bold","open","close","italic","underline","inverse","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","styleToHtmlStyleThemeDark","noStyleFn","styles","value","tryStringify","arg","JSON","stringify","replace","sameRawFormattedValue","stringValue","formattedValue","internalFormatValue","styleFn","padding","depth","maxDepth","objects","typeofValue","undefined","toString","constructor","Object","internalFormatObject","Array","isArray","internalFormatArray","Error","stack","startsWith","message","Map","name","internalFormatMap","Set","internalFormatSet","WeakMap","WeakSet","separator","internalFormatKey","key","stringKey","formattedKey","internalNoKey","internalFormatMapKey","internalFormatParams","internalFormatIterator","values","objectStyles","prefix","suffix","prefixSuffixSpace","formatKey","breakLine","formattedSeparator","valuesMaxIndex","length","formattedValues","map","index","includes","v","fv","join","object","has","keys","add","result","delete","get","array","set","formatObject","formatRecordToString","record","style","parts","displayName","push","datetime","toTimeString","split","symbol","level","formatRecordObject","stringObject","metadata","metadataStyles","extra","context"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-browser.cjs.js","sources":["../src/levelToStyles.ts","../src/levelToSymbol.ts","../src/styleToHexColor.ts","../src/styleToHtmlStyle.ts","../src/formatObject.ts","../src/formatRecordToString.ts"],"sourcesContent":["import { Level } from 'nightingale-levels';\n\nexport type LevelToStyles = Readonly<Record<number, string[]>>;\n\nexport const levelToStyles: LevelToStyles = {\n [Level.TRACE]: ['gray'],\n [Level.DEBUG]: ['gray'],\n // [Level.INFO]: ['gray'],\n [Level.WARN]: ['yellow'],\n [Level.ERROR]: ['red', 'bold'],\n [Level.CRITICAL]: ['red', 'bold'],\n [Level.FATAL]: ['bgRed', 'white'],\n [Level.EMERGENCY]: ['bgRed', 'white'],\n};\n","import { Level } from 'nightingale-levels';\n\nexport type LevelToSymbol = Readonly<Record<number, string>>;\n\nexport const levelToSymbol: LevelToSymbol = {\n [Level.TRACE]: '•',\n [Level.DEBUG]: '•',\n [Level.INFO]: '→',\n [Level.WARN]: '⚠',\n [Level.ERROR]: '✖',\n [Level.CRITICAL]: '!',\n [Level.FATAL]: '‼',\n [Level.EMERGENCY]: '‼',\n};\n","export type StyleToHexColor = Readonly<Record<string, string>>;\n\nexport const styleToHexColor: StyleToHexColor = {\n orange: 'ff5f00',\n grayLight: '808080',\n 'gray-light': '808080',\n};\n","import { styleToHexColor } from './styleToHexColor';\n\nexport interface HtmlStyle {\n readonly open: string;\n readonly close: string;\n}\n\nexport type StyleToHtmlStyle = Readonly<Record<string, HtmlStyle>>;\n\nexport const styleToHtmlStyleThemeLight: StyleToHtmlStyle = {\n // text style\n bold: { open: 'font-weight: bold', close: 'font-weight: normal' },\n italic: { open: 'font-style: italic', close: 'font-style: normal' },\n underline: {\n open: 'text-decoration: underline',\n close: 'text-decoration: none',\n },\n inverse: {\n open: 'unicode-bidi: bidi-override; direction: rtl',\n close: 'unicode-bidi: normal; direction: ltr',\n },\n strikethrough: {\n open: 'text-decoration: line-through',\n close: 'text-decoration: none',\n },\n\n black: { open: 'color: black', close: 'color: currentcolor' },\n red: { open: 'color: #ff0020', close: 'color: currentcolor' },\n green: { open: 'color: #00b317', close: 'color: currentcolor' },\n yellow: { open: 'color: #ffcc00', close: 'color: currentcolor' },\n blue: { open: 'color: #00a0ff', close: 'color: currentcolor' },\n magenta: { open: 'color: #ff00a0', close: 'color: currentcolor' },\n cyan: { open: 'color: #00cfd8', close: 'color: currentcolor' },\n white: { open: 'color: white', close: 'color: currentcolor' },\n gray: { open: 'color: gray', close: 'color: currentcolor' },\n\n bgBlack: { open: 'background: black', close: 'background: initial' },\n bgRed: { open: 'background: #ff0020', close: 'background: initial' },\n bgGreen: { open: 'background: #00b317', close: 'background: initial' },\n bgYellow: { open: 'background: #ffcc00', close: 'background: initial' },\n bgBlue: { open: 'background: #00a0ff', close: 'background: initial' },\n bgMagenta: { open: 'background: #ff00a0', close: 'background: initial' },\n bgCyan: { open: 'background: #00cfd8', close: 'background: initial' },\n bgWhite: { open: 'background: white', close: 'background: initial' },\n\n orange: {\n open: `color: #${styleToHexColor.orange}`,\n close: 'color: currentcolor',\n },\n grayLight: {\n open: `color: #${styleToHexColor.grayLight}`,\n close: 'color: currentcolor',\n },\n 'gray-light': {\n open: `color: #${styleToHexColor.grayLight}`,\n close: 'color: currentcolor',\n },\n};\n\nexport const styleToHtmlStyleThemeDark: StyleToHtmlStyle = {\n ...styleToHtmlStyleThemeLight,\n black: styleToHtmlStyleThemeLight.white,\n bgBlack: styleToHtmlStyleThemeLight.bgWhite,\n white: styleToHtmlStyleThemeLight.black,\n bgWhite: styleToHtmlStyleThemeLight.bgBlack,\n gray: { open: 'color: lightgray', close: 'color: currentcolor' },\n};\n","/* eslint-disable max-lines, @typescript-eslint/no-use-before-define */\nimport type { Styles } from 'nightingale-types';\n\nexport interface FormatObjectOptions {\n padding?: string;\n maxDepth?: number;\n}\n\nexport type StyleFn = (styles: Styles, value: string) => string;\n\nexport type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;\n\nconst noStyleFn: StyleFn = (styles: Styles, value: string): string => value;\n\ninterface InternalFormatParams {\n padding: string;\n depth: number;\n maxDepth: number;\n objects: Set<unknown>;\n}\n\ninterface FormattedKey {\n stringKey: string;\n formattedKey: string;\n}\n\ntype FormatKey<Key> = (\n key: Key,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n) => FormattedKey;\n\ninterface Value<Key> {\n key: Key;\n value: unknown;\n}\n\ninterface FormattedValue {\n stringValue: string;\n formattedValue: string;\n}\n\ntype Values<Key> = Value<Key>[];\n\ninterface InternalFormatIteratorParams<Key> {\n prefix: string;\n suffix: string;\n formatKey: FormatKey<Key>;\n prefixSuffixSpace?: string;\n}\n\nfunction tryStringify(arg: unknown): string {\n try {\n return JSON.stringify(arg).replace(/\\\\n/g, '\\n');\n } catch {\n return '[Circular]';\n }\n}\n\nconst sameRawFormattedValue = (value: string): FormattedValue => ({\n stringValue: value,\n formattedValue: value,\n});\n\nfunction internalFormatValue(\n value: unknown,\n styleFn: StyleFn,\n styles: Styles,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n const typeofValue = typeof value;\n\n if (!styles) {\n if (value == null) {\n styles = ['cyan'];\n } else {\n switch (typeofValue) {\n case 'undefined':\n styles = ['cyan'];\n break;\n case 'boolean':\n styles = ['green'];\n break;\n case 'number':\n styles = ['yellow'];\n break;\n case 'bigint':\n styles = ['red'];\n break;\n case 'string':\n styles = ['orange'];\n break;\n case 'symbol':\n styles = ['magenta'];\n break;\n case 'object':\n case 'function':\n break;\n }\n }\n }\n\n let stringValue: string;\n if (value === null) {\n stringValue = 'null';\n } else if (value === undefined) {\n stringValue = 'undefined';\n } else if (typeofValue === 'boolean') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n stringValue = (value as any).toString() as string;\n } else if ((value as () => unknown).constructor === Object) {\n if (depth >= maxDepth) {\n stringValue = '{Object...}';\n } else {\n return internalFormatObject(\n value as Record<string, unknown>,\n styleFn,\n undefined,\n {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n },\n );\n }\n } else if (Array.isArray(value)) {\n if (depth >= maxDepth) {\n stringValue = '[Array...]';\n } else {\n return internalFormatArray(value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof Error) {\n const stack = value.stack;\n stringValue = stack?.startsWith(value.message)\n ? stack\n : `${value.message}\\n${stack || ''}`;\n } else if (value instanceof Map) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatMap(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (typeofValue === 'bigint') {\n stringValue = (value as bigint).toString();\n } else if (typeofValue === 'symbol') {\n stringValue = (value as symbol).toString();\n } else if (value instanceof Set) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatSet(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof WeakMap) {\n stringValue = '{WeakMap...}';\n } else if (value instanceof WeakSet) {\n stringValue = '{WeakSet...}';\n } else {\n stringValue = tryStringify(value);\n }\n\n const formattedValue = styleFn(styles, stringValue);\n\n return {\n stringValue,\n formattedValue,\n };\n}\n\nconst separator = ',';\n\nconst internalFormatKey: FormatKey<string> = (\n key: string,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return {\n stringKey: `${key}: `,\n formattedKey: `${styleFn(['gray-light', 'bold'], `${key}:`)} `,\n };\n};\n\nconst internalNoKey: FormatKey<undefined> = (\n key: string | undefined,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return { stringKey: '', formattedKey: '' };\n};\n\nconst internalFormatMapKey: FormatKey<unknown> = (\n key: unknown,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n const { stringValue, formattedValue } = internalFormatValue(\n key,\n noStyleFn,\n undefined,\n internalFormatParams,\n );\n return {\n stringKey: `${stringValue} => `,\n formattedKey: `${styleFn(['gray-light', 'bold'], `${formattedValue}:`)} `,\n };\n};\n\nconst internalFormatIterator = <Key>(\n values: Values<Key>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n {\n prefix,\n suffix,\n prefixSuffixSpace = ' ',\n formatKey,\n }: InternalFormatIteratorParams<Key>,\n): FormattedValue => {\n let breakLine = false;\n const formattedSeparator = (): string => styleFn(['gray'], separator);\n\n const valuesMaxIndex = values.length - 1;\n const formattedValues: FormattedValue[] = values.map(\n ({ key, value }, index: number) => {\n const nextDepth = depth + 1;\n const internalFormatParams = {\n padding,\n depth: nextDepth,\n maxDepth,\n objects,\n };\n\n // key must be formatted before value (browser-formatter needs order)\n const { stringKey, formattedKey } = formatKey(\n key,\n styleFn,\n internalFormatParams,\n );\n\n let { stringValue, formattedValue } = internalFormatValue(\n value,\n styleFn,\n key && objectStyles\n ? objectStyles[key as unknown as string]\n : undefined,\n internalFormatParams,\n );\n\n if (\n stringValue &&\n (stringValue.length > 80 || stringValue.includes('\\n'))\n ) {\n breakLine = true;\n stringValue = stringValue.replace(/\\n/g, `\\n${padding}`);\n formattedValue = formattedValue.replace(/\\n/g, `\\n${padding}`);\n }\n\n return {\n stringValue:\n stringKey + stringValue + (index === valuesMaxIndex ? '' : separator),\n formattedValue:\n formattedKey +\n formattedValue +\n (index === valuesMaxIndex ? '' : formattedSeparator()),\n // note: we need to format the separator for each values for browser-formatter\n };\n },\n );\n\n return {\n stringValue:\n prefix +\n formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.stringValue}`\n : (fv) => fv.stringValue,\n )\n .join(breakLine ? '\\n' : ' ') +\n suffix,\n formattedValue: `${prefix}${\n breakLine ? '' : prefixSuffixSpace\n }${formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.formattedValue}`\n : (v) => v.formattedValue,\n )\n .join(breakLine ? '' : ' ')}${\n breakLine ? ',\\n' : prefixSuffixSpace\n }${suffix}`,\n };\n};\n\nfunction internalFormatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(object)) {\n return sameRawFormattedValue('{Circular Object}');\n }\n\n const keys: string[] = Object.keys(object);\n if (keys.length === 0) {\n return sameRawFormattedValue('{}');\n }\n\n objects.add(object);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: object[key] })),\n styleFn,\n objectStyles,\n { padding, depth, maxDepth, objects },\n { prefix: '{', suffix: '}', formatKey: internalFormatKey },\n );\n\n objects.delete(object);\n\n return result;\n}\n\nfunction internalFormatMap(\n name: string,\n map: Map<unknown, unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(map)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const keys = [...map.keys()];\n if (keys.length === 0) {\n return sameRawFormattedValue(`${name} {}`);\n }\n\n objects.add(map);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: map.get(key) })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} {`, suffix: '}', formatKey: internalFormatMapKey },\n );\n\n objects.delete(map);\n\n return result;\n}\n\nfunction internalFormatArray(\n array: unknown[],\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(array)) {\n return sameRawFormattedValue('{Circular Array}');\n }\n\n if (array.length === 0) {\n return sameRawFormattedValue('[]');\n }\n\n objects.add(array);\n\n const result = internalFormatIterator(\n array.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n {\n prefix: '[',\n suffix: ']',\n prefixSuffixSpace: '',\n formatKey: internalNoKey,\n },\n );\n\n objects.delete(array);\n\n return result;\n}\n\nfunction internalFormatSet(\n name: string,\n set: Set<unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(set)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const values = [...set.values()];\n if (values.length === 0) {\n return sameRawFormattedValue(`${name} []`);\n }\n\n objects.add(set);\n\n const result = internalFormatIterator(\n values.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} [`, suffix: ']', formatKey: internalNoKey },\n );\n\n objects.delete(set);\n\n return result;\n}\n\nexport function formatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn = noStyleFn,\n objectStyles?: ObjectStyles,\n { padding = ' ', maxDepth = 10 }: FormatObjectOptions = {},\n): string {\n const { formattedValue: result } = internalFormatObject(\n object,\n styleFn,\n objectStyles,\n {\n padding,\n maxDepth,\n depth: 0,\n objects: new Set(),\n },\n );\n\n if (result === '{}') {\n return '';\n }\n\n return result;\n}\n","import type { LogRecord, Metadata } from 'nightingale-types';\nimport type { StyleFn, ObjectStyles } from './formatObject';\nimport { formatObject } from './formatObject';\nimport { levelToStyles } from './levelToStyles';\nimport { levelToSymbol } from './levelToSymbol';\n\nexport function formatRecordToString<T extends Metadata>(\n record: LogRecord<T>,\n style: StyleFn,\n): string {\n const parts: string[] = [];\n\n if (record.displayName) {\n parts.push(style(['gray-light'], record.displayName));\n } else if (record.key) {\n parts.push(style(['gray-light'], record.key));\n }\n\n if (record.datetime) {\n parts.push(\n style(['gray', 'bold'], record.datetime.toTimeString().split(' ')[0]),\n );\n /* new Date().toFormat('HH24:MI:SS') */\n }\n\n let message: string = record.symbol || levelToSymbol[record.level];\n const styles = record.styles || levelToStyles[record.level];\n\n if (record.message) {\n if (message) {\n message += ` ${record.message}`;\n } else {\n message = record.message;\n }\n }\n\n if (message) {\n if (styles) {\n message = style(styles, message);\n }\n parts.push(message);\n }\n\n const formatRecordObject = (\n key: string,\n object: Record<string, unknown> | undefined,\n objectStyles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, objectStyles);\n\n if (!stringObject) {\n return;\n }\n\n parts.push(stringObject);\n };\n\n formatRecordObject('metadata', record.metadata, record.metadataStyles);\n formatRecordObject('extra', record.extra, undefined);\n formatRecordObject('context', record.context, undefined);\n\n return parts.join(' ');\n}\n"],"names":["levelToStyles","Level","TRACE","DEBUG","WARN","ERROR","CRITICAL","FATAL","EMERGENCY","levelToSymbol","INFO","styleToHexColor","orange","grayLight","styleToHtmlStyleThemeLight","bold","open","close","italic","underline","inverse","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","styleToHtmlStyleThemeDark","noStyleFn","styles","value","tryStringify","arg","JSON","stringify","replace","sameRawFormattedValue","stringValue","formattedValue","internalFormatValue","styleFn","padding","depth","maxDepth","objects","typeofValue","undefined","toString","constructor","Object","internalFormatObject","Array","isArray","internalFormatArray","Error","stack","startsWith","message","Map","name","internalFormatMap","Set","internalFormatSet","WeakMap","WeakSet","separator","internalFormatKey","key","stringKey","formattedKey","internalNoKey","internalFormatMapKey","internalFormatParams","internalFormatIterator","values","objectStyles","prefix","suffix","prefixSuffixSpace","formatKey","breakLine","formattedSeparator","valuesMaxIndex","length","formattedValues","map","index","includes","v","fv","join","object","has","keys","add","result","delete","get","array","set","formatObject","formatRecordToString","record","style","parts","displayName","push","datetime","toTimeString","split","symbol","level","formatRecordObject","stringObject","metadata","metadataStyles","extra","context"],"mappings":"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"}
|