nightingale-formatter 11.7.1 → 11.7.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/.eslintrc.json +1 -1
- package/CHANGELOG.md +11 -0
- package/babel.config.cjs +14 -0
- package/dist/index-browser-dev.cjs.js +84 -69
- package/dist/index-browser-dev.cjs.js.map +1 -1
- package/dist/index-browser-dev.es.js +83 -67
- package/dist/index-browser-dev.es.js.map +1 -1
- package/dist/index-browser.cjs.js +84 -69
- package/dist/index-browser.cjs.js.map +1 -1
- package/dist/index-browser.es.js +83 -67
- package/dist/index-browser.es.js.map +1 -1
- package/dist/index-browsermodern-dev.es.js +1 -1
- package/dist/index-browsermodern-dev.es.js.map +1 -1
- package/dist/index-browsermodern.es.js +1 -1
- package/dist/index-browsermodern.es.js.map +1 -1
- package/dist/index-node12-dev.cjs.js +16 -20
- package/dist/index-node12-dev.cjs.js.map +1 -1
- package/dist/index-node12-dev.mjs +1 -1
- package/dist/index-node12-dev.mjs.map +1 -1
- package/dist/index-node12.cjs.js +16 -20
- package/dist/index-node12.cjs.js.map +1 -1
- package/dist/index-node12.mjs +1 -1
- package/dist/index-node12.mjs.map +1 -1
- package/package.json +19 -27
- package/rollup.config.mjs +3 -0
- package/src/formatObject.test.ts +23 -1
- package/src/formatObject.ts +14 -1
- package/src/formatRecordToString.ts +2 -2
- package/src/levelToStyles.ts +1 -1
- package/src/levelToSymbol.ts +1 -1
- package/index.js +0 -6
package/.eslintrc.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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
|
+
## [11.7.2](https://github.com/christophehurpeau/nightingale/compare/v11.7.1...v11.7.2) (2021-11-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* support formatting symbol and bigint ([f4205b0](https://github.com/christophehurpeau/nightingale/commit/f4205b0add9d570e470f93ac525db1adbfacf1db))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [11.7.1](https://github.com/christophehurpeau/nightingale/compare/v11.7.0...v11.7.1) (2021-06-29)
|
|
7
18
|
|
|
8
19
|
|
package/babel.config.cjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
module.exports = function babelConfig(api) {
|
|
6
|
+
const isTest = api.env('test');
|
|
7
|
+
|
|
8
|
+
if (!isTest) return {};
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
only: [path.resolve(__dirname, 'src')],
|
|
12
|
+
presets: [require.resolve('pob-babel/preset')],
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -2,19 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var nightingaleLevels = require('nightingale-levels');
|
|
6
6
|
var _extends = require('@babel/runtime/helpers/esm/extends');
|
|
7
7
|
|
|
8
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e[
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
9
9
|
|
|
10
|
-
var Level__default = /*#__PURE__*/_interopDefaultLegacy(Level);
|
|
11
10
|
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
12
11
|
|
|
13
|
-
var
|
|
14
|
-
|
|
12
|
+
var levelToStyles = {
|
|
13
|
+
[nightingaleLevels.Level.TRACE]: ['gray'],
|
|
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
|
+
};
|
|
15
22
|
|
|
16
|
-
var
|
|
17
|
-
|
|
23
|
+
var levelToSymbol = {
|
|
24
|
+
[nightingaleLevels.Level.TRACE]: '•',
|
|
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
|
+
};
|
|
18
33
|
|
|
19
34
|
var styleToHexColor = {
|
|
20
35
|
orange: 'ff5f00',
|
|
@@ -113,15 +128,15 @@ var styleToHtmlStyleThemeLight = {
|
|
|
113
128
|
close: 'background: initial'
|
|
114
129
|
},
|
|
115
130
|
orange: {
|
|
116
|
-
open:
|
|
131
|
+
open: `color: #${styleToHexColor.orange}`,
|
|
117
132
|
close: 'color: currentcolor'
|
|
118
133
|
},
|
|
119
134
|
grayLight: {
|
|
120
|
-
open:
|
|
135
|
+
open: `color: #${styleToHexColor.grayLight}`,
|
|
121
136
|
close: 'color: currentcolor'
|
|
122
137
|
},
|
|
123
138
|
'gray-light': {
|
|
124
|
-
open:
|
|
139
|
+
open: `color: #${styleToHexColor.grayLight}`,
|
|
125
140
|
close: 'color: currentcolor'
|
|
126
141
|
}
|
|
127
142
|
};
|
|
@@ -201,10 +216,10 @@ function internalFormatValue(value, styleFn, styles, _ref) {
|
|
|
201
216
|
stringValue = '{Object...}';
|
|
202
217
|
} else {
|
|
203
218
|
return internalFormatObject(value, styleFn, undefined, {
|
|
204
|
-
padding
|
|
219
|
+
padding,
|
|
205
220
|
depth: depth + 1,
|
|
206
|
-
maxDepth
|
|
207
|
-
objects
|
|
221
|
+
maxDepth,
|
|
222
|
+
objects
|
|
208
223
|
});
|
|
209
224
|
}
|
|
210
225
|
} else if (Array.isArray(value)) {
|
|
@@ -212,39 +227,39 @@ function internalFormatValue(value, styleFn, styles, _ref) {
|
|
|
212
227
|
stringValue = '[Array...]';
|
|
213
228
|
} else {
|
|
214
229
|
return internalFormatArray(value, styleFn, {
|
|
215
|
-
padding
|
|
230
|
+
padding,
|
|
216
231
|
depth: depth + 1,
|
|
217
|
-
maxDepth
|
|
218
|
-
objects
|
|
232
|
+
maxDepth,
|
|
233
|
+
objects
|
|
219
234
|
});
|
|
220
235
|
}
|
|
221
236
|
} else if (value instanceof Error) {
|
|
222
237
|
var stack = value.stack;
|
|
223
|
-
stringValue = stack != null && stack.startsWith(value.message) ? stack : value.message
|
|
238
|
+
stringValue = stack != null && stack.startsWith(value.message) ? stack : `${value.message}\n${stack || ''}`;
|
|
224
239
|
} else if (value instanceof Map) {
|
|
225
240
|
var name = value.constructor.name;
|
|
226
241
|
|
|
227
242
|
if (depth >= maxDepth) {
|
|
228
|
-
stringValue =
|
|
243
|
+
stringValue = `{${name}...}`;
|
|
229
244
|
} else {
|
|
230
245
|
return internalFormatMap(name, value, styleFn, {
|
|
231
|
-
padding
|
|
246
|
+
padding,
|
|
232
247
|
depth: depth + 1,
|
|
233
|
-
maxDepth
|
|
234
|
-
objects
|
|
248
|
+
maxDepth,
|
|
249
|
+
objects
|
|
235
250
|
});
|
|
236
251
|
}
|
|
237
252
|
} else if (value instanceof Set) {
|
|
238
253
|
var _name = value.constructor.name;
|
|
239
254
|
|
|
240
255
|
if (depth >= maxDepth) {
|
|
241
|
-
stringValue =
|
|
256
|
+
stringValue = `{${_name}...}`;
|
|
242
257
|
} else {
|
|
243
258
|
return internalFormatSet(_name, value, styleFn, {
|
|
244
|
-
padding
|
|
259
|
+
padding,
|
|
245
260
|
depth: depth + 1,
|
|
246
|
-
maxDepth
|
|
247
|
-
objects
|
|
261
|
+
maxDepth,
|
|
262
|
+
objects
|
|
248
263
|
});
|
|
249
264
|
}
|
|
250
265
|
} else if (value instanceof WeakMap) {
|
|
@@ -257,8 +272,8 @@ function internalFormatValue(value, styleFn, styles, _ref) {
|
|
|
257
272
|
|
|
258
273
|
var formattedValue = styleFn(styles, stringValue);
|
|
259
274
|
return {
|
|
260
|
-
stringValue
|
|
261
|
-
formattedValue
|
|
275
|
+
stringValue,
|
|
276
|
+
formattedValue
|
|
262
277
|
};
|
|
263
278
|
}
|
|
264
279
|
|
|
@@ -266,8 +281,8 @@ var separator = ',';
|
|
|
266
281
|
|
|
267
282
|
var internalFormatKey = function internalFormatKey(key, styleFn) {
|
|
268
283
|
return {
|
|
269
|
-
stringKey: key
|
|
270
|
-
formattedKey: styleFn(['gray-light', 'bold'], key
|
|
284
|
+
stringKey: `${key}: `,
|
|
285
|
+
formattedKey: `${styleFn(['gray-light', 'bold'], `${key}:`)} `
|
|
271
286
|
};
|
|
272
287
|
};
|
|
273
288
|
|
|
@@ -284,8 +299,8 @@ var internalFormatMapKey = function internalFormatMapKey(key, styleFn, internalF
|
|
|
284
299
|
formattedValue = _internalFormatValue.formattedValue;
|
|
285
300
|
|
|
286
301
|
return {
|
|
287
|
-
stringKey: stringValue
|
|
288
|
-
formattedKey: styleFn(['gray-light', 'bold'], formattedValue
|
|
302
|
+
stringKey: `${stringValue} => `,
|
|
303
|
+
formattedKey: `${styleFn(['gray-light', 'bold'], `${formattedValue}:`)} `
|
|
289
304
|
};
|
|
290
305
|
};
|
|
291
306
|
|
|
@@ -310,10 +325,10 @@ var internalFormatIterator = function internalFormatIterator(values, styleFn, ob
|
|
|
310
325
|
var key = _ref4.key,
|
|
311
326
|
value = _ref4.value;
|
|
312
327
|
var internalFormatParams = {
|
|
313
|
-
padding
|
|
328
|
+
padding,
|
|
314
329
|
depth: depth + 1,
|
|
315
|
-
maxDepth
|
|
316
|
-
objects
|
|
330
|
+
maxDepth,
|
|
331
|
+
objects
|
|
317
332
|
}; // key must be formatted before value (browser-formatter needs order)
|
|
318
333
|
|
|
319
334
|
var _formatKey = formatKey(key, styleFn, internalFormatParams),
|
|
@@ -326,8 +341,8 @@ var internalFormatIterator = function internalFormatIterator(values, styleFn, ob
|
|
|
326
341
|
|
|
327
342
|
if (stringValue && (stringValue.length > 80 || stringValue.includes('\n'))) {
|
|
328
343
|
breakLine = true;
|
|
329
|
-
stringValue = stringValue.replace(/\n/g,
|
|
330
|
-
formattedValue = formattedValue.replace(/\n/g,
|
|
344
|
+
stringValue = stringValue.replace(/\n/g, `\n${padding}`);
|
|
345
|
+
formattedValue = formattedValue.replace(/\n/g, `\n${padding}`);
|
|
331
346
|
}
|
|
332
347
|
|
|
333
348
|
return {
|
|
@@ -338,15 +353,15 @@ var internalFormatIterator = function internalFormatIterator(values, styleFn, ob
|
|
|
338
353
|
});
|
|
339
354
|
return {
|
|
340
355
|
stringValue: prefix + formattedValues.map(breakLine ? function (v) {
|
|
341
|
-
return
|
|
356
|
+
return `\n${padding}${v.stringValue}`;
|
|
342
357
|
} : function (fv) {
|
|
343
358
|
return fv.stringValue;
|
|
344
359
|
}).join(breakLine ? '\n' : ' ') + suffix,
|
|
345
|
-
formattedValue:
|
|
346
|
-
return
|
|
360
|
+
formattedValue: `${prefix}${breakLine ? '' : prefixSuffixSpace}${formattedValues.map(breakLine ? function (v) {
|
|
361
|
+
return `\n${padding}${v.formattedValue}`;
|
|
347
362
|
} : function (v) {
|
|
348
363
|
return v.formattedValue;
|
|
349
|
-
}).join(breakLine ? '' : ' ')
|
|
364
|
+
}).join(breakLine ? '' : ' ')}${breakLine ? ',\n' : prefixSuffixSpace}${suffix}`
|
|
350
365
|
};
|
|
351
366
|
};
|
|
352
367
|
|
|
@@ -369,14 +384,14 @@ function internalFormatObject(object, styleFn, objectStyles, _ref5) {
|
|
|
369
384
|
objects.add(object);
|
|
370
385
|
var result = internalFormatIterator(keys.map(function (key) {
|
|
371
386
|
return {
|
|
372
|
-
key
|
|
387
|
+
key,
|
|
373
388
|
value: object[key]
|
|
374
389
|
};
|
|
375
390
|
}), styleFn, objectStyles, {
|
|
376
|
-
padding
|
|
377
|
-
depth
|
|
378
|
-
maxDepth
|
|
379
|
-
objects
|
|
391
|
+
padding,
|
|
392
|
+
depth,
|
|
393
|
+
maxDepth,
|
|
394
|
+
objects
|
|
380
395
|
}, {
|
|
381
396
|
prefix: '{',
|
|
382
397
|
suffix: '}',
|
|
@@ -393,28 +408,28 @@ function internalFormatMap(name, map, styleFn, _ref6) {
|
|
|
393
408
|
objects = _ref6.objects;
|
|
394
409
|
|
|
395
410
|
if (objects.has(map)) {
|
|
396
|
-
return sameRawFormattedValue(
|
|
411
|
+
return sameRawFormattedValue(`{Circular ${name}}`);
|
|
397
412
|
}
|
|
398
413
|
|
|
399
414
|
var keys = [].concat(map.keys());
|
|
400
415
|
|
|
401
416
|
if (keys.length === 0) {
|
|
402
|
-
return sameRawFormattedValue(name
|
|
417
|
+
return sameRawFormattedValue(`${name} {}`);
|
|
403
418
|
}
|
|
404
419
|
|
|
405
420
|
objects.add(map);
|
|
406
421
|
var result = internalFormatIterator(keys.map(function (key) {
|
|
407
422
|
return {
|
|
408
|
-
key
|
|
423
|
+
key,
|
|
409
424
|
value: map.get(key)
|
|
410
425
|
};
|
|
411
426
|
}), styleFn, undefined, {
|
|
412
|
-
padding
|
|
413
|
-
depth
|
|
414
|
-
maxDepth
|
|
415
|
-
objects
|
|
427
|
+
padding,
|
|
428
|
+
depth,
|
|
429
|
+
maxDepth,
|
|
430
|
+
objects
|
|
416
431
|
}, {
|
|
417
|
-
prefix: name
|
|
432
|
+
prefix: `${name} {`,
|
|
418
433
|
suffix: '}',
|
|
419
434
|
formatKey: internalFormatMapKey
|
|
420
435
|
});
|
|
@@ -440,13 +455,13 @@ function internalFormatArray(array, styleFn, _ref7) {
|
|
|
440
455
|
var result = internalFormatIterator(array.map(function (value) {
|
|
441
456
|
return {
|
|
442
457
|
key: undefined,
|
|
443
|
-
value
|
|
458
|
+
value
|
|
444
459
|
};
|
|
445
460
|
}), styleFn, undefined, {
|
|
446
|
-
padding
|
|
447
|
-
depth
|
|
448
|
-
maxDepth
|
|
449
|
-
objects
|
|
461
|
+
padding,
|
|
462
|
+
depth,
|
|
463
|
+
maxDepth,
|
|
464
|
+
objects
|
|
450
465
|
}, {
|
|
451
466
|
prefix: '[',
|
|
452
467
|
suffix: ']',
|
|
@@ -464,28 +479,28 @@ function internalFormatSet(name, set, styleFn, _ref8) {
|
|
|
464
479
|
objects = _ref8.objects;
|
|
465
480
|
|
|
466
481
|
if (objects.has(set)) {
|
|
467
|
-
return sameRawFormattedValue(
|
|
482
|
+
return sameRawFormattedValue(`{Circular ${name}}`);
|
|
468
483
|
}
|
|
469
484
|
|
|
470
485
|
var values = [].concat(set.values());
|
|
471
486
|
|
|
472
487
|
if (values.length === 0) {
|
|
473
|
-
return sameRawFormattedValue(name
|
|
488
|
+
return sameRawFormattedValue(`${name} []`);
|
|
474
489
|
}
|
|
475
490
|
|
|
476
491
|
objects.add(set);
|
|
477
492
|
var result = internalFormatIterator(values.map(function (value) {
|
|
478
493
|
return {
|
|
479
494
|
key: undefined,
|
|
480
|
-
value
|
|
495
|
+
value
|
|
481
496
|
};
|
|
482
497
|
}), styleFn, undefined, {
|
|
483
|
-
padding
|
|
484
|
-
depth
|
|
485
|
-
maxDepth
|
|
486
|
-
objects
|
|
498
|
+
padding,
|
|
499
|
+
depth,
|
|
500
|
+
maxDepth,
|
|
501
|
+
objects
|
|
487
502
|
}, {
|
|
488
|
-
prefix: name
|
|
503
|
+
prefix: `${name} [`,
|
|
489
504
|
suffix: ']',
|
|
490
505
|
formatKey: internalNoKey
|
|
491
506
|
});
|
|
@@ -505,8 +520,8 @@ function formatObject(object, styleFn, objectStyles, _temp) {
|
|
|
505
520
|
maxDepth = _ref9$maxDepth === void 0 ? 10 : _ref9$maxDepth;
|
|
506
521
|
|
|
507
522
|
var _internalFormatObject = internalFormatObject(object, styleFn, objectStyles, {
|
|
508
|
-
padding
|
|
509
|
-
maxDepth
|
|
523
|
+
padding,
|
|
524
|
+
maxDepth,
|
|
510
525
|
depth: 0,
|
|
511
526
|
objects: new Set()
|
|
512
527
|
}),
|
|
@@ -538,7 +553,7 @@ function formatRecordToString(record, style) {
|
|
|
538
553
|
|
|
539
554
|
if (record.message) {
|
|
540
555
|
if (message) {
|
|
541
|
-
message +=
|
|
556
|
+
message += ` ${record.message}`;
|
|
542
557
|
} else {
|
|
543
558
|
message = record.message;
|
|
544
559
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browser-dev.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 'boolean':\n styles = ['green'];\n break;\n case 'number':\n styles = ['yellow'];\n break;\n case 'string':\n styles = ['orange'];\n break;\n case 'symbol':\n styles = ['magenta'];\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 (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 styles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, styles);\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-dev.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 'boolean':\n styles = ['green'];\n break;\n case 'number':\n styles = ['yellow'];\n break;\n case 'string':\n styles = ['orange'];\n break;\n case 'symbol':\n styles = ['magenta'];\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 (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 styles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, styles);\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":";;;;;;;;;;;IAIaA,aAA4B,GAAG;AAC1C,GAACC,uBAAK,CAACC,KAAP,GAAe,CAAC,MAAD,CAD2B;AAE1C,GAACD,uBAAK,CAACE,KAAP,GAAe,CAAC,MAAD,CAF2B;AAG1C;AACA,GAACF,uBAAK,CAACG,IAAP,GAAc,CAAC,QAAD,CAJ4B;AAK1C,GAACH,uBAAK,CAACI,KAAP,GAAe,CAAC,KAAD,EAAQ,MAAR,CAL2B;AAM1C,GAACJ,uBAAK,CAACK,QAAP,GAAkB,CAAC,KAAD,EAAQ,MAAR,CANwB;AAO1C,GAACL,uBAAK,CAACM,KAAP,GAAe,CAAC,OAAD,EAAU,OAAV,CAP2B;AAQ1C,GAACN,uBAAK,CAACO,SAAP,GAAmB,CAAC,OAAD,EAAU,OAAV;AARuB;;ICA/BC,aAA4B,GAAG;AAC1C,GAACR,uBAAK,CAACC,KAAP,GAAe,GAD2B;AAE1C,GAACD,uBAAK,CAACE,KAAP,GAAe,GAF2B;AAG1C,GAACF,uBAAK,CAACS,IAAP,GAAc,GAH4B;AAI1C,GAACT,uBAAK,CAACG,IAAP,GAAc,GAJ4B;AAK1C,GAACH,uBAAK,CAACI,KAAP,GAAe,GAL2B;AAM1C,GAACJ,uBAAK,CAACK,QAAP,GAAkB,GANwB;AAO1C,GAACL,uBAAK,CAACM,KAAP,GAAe,GAP2B;AAQ1C,GAACN,uBAAK,CAACO,SAAP,GAAmB;AARuB;;ICF/BG,eAAgC,GAAG;AAC9CC,EAAAA,MAAM,EAAE,QADsC;AAE9CC,EAAAA,SAAS,EAAE,QAFmC;AAG9C,gBAAc;AAHgC;;ICOnCC,0BAA4C,GAAG;AAC1D;AACAC,EAAAA,IAAI,EAAE;AAAEC,IAAAA,IAAI,EAAE,mBAAR;AAA6BC,IAAAA,KAAK,EAAE;AAApC,GAFoD;AAG1DC,EAAAA,MAAM,EAAE;AAAEF,IAAAA,IAAI,EAAE,oBAAR;AAA8BC,IAAAA,KAAK,EAAE;AAArC,GAHkD;AAI1DE,EAAAA,SAAS,EAAE;AACTH,IAAAA,IAAI,EAAE,4BADG;AAETC,IAAAA,KAAK,EAAE;AAFE,GAJ+C;AAQ1DG,EAAAA,OAAO,EAAE;AACPJ,IAAAA,IAAI,EAAE,6CADC;AAEPC,IAAAA,KAAK,EAAE;AAFA,GARiD;AAY1DI,EAAAA,aAAa,EAAE;AACbL,IAAAA,IAAI,EAAE,+BADO;AAEbC,IAAAA,KAAK,EAAE;AAFM,GAZ2C;AAiB1DK,EAAAA,KAAK,EAAE;AAAEN,IAAAA,IAAI,EAAE,cAAR;AAAwBC,IAAAA,KAAK,EAAE;AAA/B,GAjBmD;AAkB1DM,EAAAA,GAAG,EAAE;AAAEP,IAAAA,IAAI,EAAE,gBAAR;AAA0BC,IAAAA,KAAK,EAAE;AAAjC,GAlBqD;AAmB1DO,EAAAA,KAAK,EAAE;AAAER,IAAAA,IAAI,EAAE,gBAAR;AAA0BC,IAAAA,KAAK,EAAE;AAAjC,GAnBmD;AAoB1DQ,EAAAA,MAAM,EAAE;AAAET,IAAAA,IAAI,EAAE,gBAAR;AAA0BC,IAAAA,KAAK,EAAE;AAAjC,GApBkD;AAqB1DS,EAAAA,IAAI,EAAE;AAAEV,IAAAA,IAAI,EAAE,gBAAR;AAA0BC,IAAAA,KAAK,EAAE;AAAjC,GArBoD;AAsB1DU,EAAAA,OAAO,EAAE;AAAEX,IAAAA,IAAI,EAAE,gBAAR;AAA0BC,IAAAA,KAAK,EAAE;AAAjC,GAtBiD;AAuB1DW,EAAAA,IAAI,EAAE;AAAEZ,IAAAA,IAAI,EAAE,gBAAR;AAA0BC,IAAAA,KAAK,EAAE;AAAjC,GAvBoD;AAwB1DY,EAAAA,KAAK,EAAE;AAAEb,IAAAA,IAAI,EAAE,cAAR;AAAwBC,IAAAA,KAAK,EAAE;AAA/B,GAxBmD;AAyB1Da,EAAAA,IAAI,EAAE;AAAEd,IAAAA,IAAI,EAAE,aAAR;AAAuBC,IAAAA,KAAK,EAAE;AAA9B,GAzBoD;AA2B1Dc,EAAAA,OAAO,EAAE;AAAEf,IAAAA,IAAI,EAAE,mBAAR;AAA6BC,IAAAA,KAAK,EAAE;AAApC,GA3BiD;AA4B1De,EAAAA,KAAK,EAAE;AAAEhB,IAAAA,IAAI,EAAE,qBAAR;AAA+BC,IAAAA,KAAK,EAAE;AAAtC,GA5BmD;AA6B1DgB,EAAAA,OAAO,EAAE;AAAEjB,IAAAA,IAAI,EAAE,qBAAR;AAA+BC,IAAAA,KAAK,EAAE;AAAtC,GA7BiD;AA8B1DiB,EAAAA,QAAQ,EAAE;AAAElB,IAAAA,IAAI,EAAE,qBAAR;AAA+BC,IAAAA,KAAK,EAAE;AAAtC,GA9BgD;AA+B1DkB,EAAAA,MAAM,EAAE;AAAEnB,IAAAA,IAAI,EAAE,qBAAR;AAA+BC,IAAAA,KAAK,EAAE;AAAtC,GA/BkD;AAgC1DmB,EAAAA,SAAS,EAAE;AAAEpB,IAAAA,IAAI,EAAE,qBAAR;AAA+BC,IAAAA,KAAK,EAAE;AAAtC,GAhC+C;AAiC1DoB,EAAAA,MAAM,EAAE;AAAErB,IAAAA,IAAI,EAAE,qBAAR;AAA+BC,IAAAA,KAAK,EAAE;AAAtC,GAjCkD;AAkC1DqB,EAAAA,OAAO,EAAE;AAAEtB,IAAAA,IAAI,EAAE,mBAAR;AAA6BC,IAAAA,KAAK,EAAE;AAApC,GAlCiD;AAoC1DL,EAAAA,MAAM,EAAE;AACNI,IAAAA,IAAI,EAAG,WAAUL,eAAe,CAACC,MAAO,EADlC;AAENK,IAAAA,KAAK,EAAE;AAFD,GApCkD;AAwC1DJ,EAAAA,SAAS,EAAE;AACTG,IAAAA,IAAI,EAAG,WAAUL,eAAe,CAACE,SAAU,EADlC;AAETI,IAAAA,KAAK,EAAE;AAFE,GAxC+C;AA4C1D,gBAAc;AACZD,IAAAA,IAAI,EAAG,WAAUL,eAAe,CAACE,SAAU,EAD/B;AAEZI,IAAAA,KAAK,EAAE;AAFK;AA5C4C;IAkD/CsB,yBAA2C,yBACnDzB,0BADmD;AAEtDQ,EAAAA,KAAK,EAAER,0BAA0B,CAACe,KAFoB;AAGtDE,EAAAA,OAAO,EAAEjB,0BAA0B,CAACwB,OAHkB;AAItDT,EAAAA,KAAK,EAAEf,0BAA0B,CAACQ,KAJoB;AAKtDgB,EAAAA,OAAO,EAAExB,0BAA0B,CAACiB,OALkB;AAMtDD,EAAAA,IAAI,EAAE;AAAEd,IAAAA,IAAI,EAAE,kBAAR;AAA4BC,IAAAA,KAAK,EAAE;AAAnC;AANgD;;AC3DxD;AAYA,IAAMuB,SAAkB,GAAG,SAArBA,SAAqB,CAACC,MAAD,EAAiBC,KAAjB;AAAA,SAA2CA,KAA3C;AAAA,CAA3B;;AAuCA,SAASC,YAAT,CAAsBC,GAAtB,EAA4C;AAC1C,MAAI;AACF,WAAOC,IAAI,CAACC,SAAL,CAAeF,GAAf,EAAoBG,OAApB,CAA4B,MAA5B,EAAoC,IAApC,CAAP;AACD,GAFD,CAEE,gBAAM;AACN,WAAO,YAAP;AACD;AACF;;AAED,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACN,KAAD;AAAA,SAAoC;AAChEO,IAAAA,WAAW,EAAEP,KADmD;AAEhEQ,IAAAA,cAAc,EAAER;AAFgD,GAApC;AAAA,CAA9B;;AAKA,SAASS,mBAAT,CACET,KADF,EAEEU,OAFF,EAGEX,MAHF,QAKkB;AAAA,MADdY,OACc,QADdA,OACc;AAAA,MADLC,KACK,QADLA,KACK;AAAA,MADEC,QACF,QADEA,QACF;AAAA,MADYC,OACZ,QADYA,OACZ;AAChB,MAAMC,WAAW,GAAG,OAAOf,KAA3B;;AAEA,MAAI,CAACD,MAAL,EAAa;AACX,QAAIC,KAAK,IAAI,IAAb,EAAmB;AACjBD,MAAAA,MAAM,GAAG,CAAC,MAAD,CAAT;AACD,KAFD,MAEO;AACL,cAAQgB,WAAR;AACE,aAAK,SAAL;AACEhB,UAAAA,MAAM,GAAG,CAAC,OAAD,CAAT;AACA;;AACF,aAAK,QAAL;AACEA,UAAAA,MAAM,GAAG,CAAC,QAAD,CAAT;AACA;;AACF,aAAK,QAAL;AACEA,UAAAA,MAAM,GAAG,CAAC,QAAD,CAAT;AACA;;AACF,aAAK,QAAL;AACEA,UAAAA,MAAM,GAAG,CAAC,SAAD,CAAT;AACA;AAZJ;AAcD;AACF;;AAED,MAAIQ,WAAJ;;AACA,MAAIP,KAAK,KAAK,IAAd,EAAoB;AAClBO,IAAAA,WAAW,GAAG,MAAd;AACD,GAFD,MAEO,IAAIP,KAAK,KAAKgB,SAAd,EAAyB;AAC9BT,IAAAA,WAAW,GAAG,WAAd;AACD,GAFM,MAEA,IAAIQ,WAAW,KAAK,SAApB,EAA+B;AACpC;AACAR,IAAAA,WAAW,GAAIP,KAAD,CAAeiB,QAAf,EAAd;AACD,GAHM,MAGA,IAAKjB,KAAD,CAAyBkB,WAAzB,KAAyCC,MAA7C,EAAqD;AAC1D,QAAIP,KAAK,IAAIC,QAAb,EAAuB;AACrBN,MAAAA,WAAW,GAAG,aAAd;AACD,KAFD,MAEO;AACL,aAAOa,oBAAoB,CACzBpB,KADyB,EAEzBU,OAFyB,EAGzBM,SAHyB,EAIzB;AACEL,QAAAA,OADF;AAEEC,QAAAA,KAAK,EAAEA,KAAK,GAAG,CAFjB;AAGEC,QAAAA,QAHF;AAIEC,QAAAA;AAJF,OAJyB,CAA3B;AAWD;AACF,GAhBM,MAgBA,IAAIO,KAAK,CAACC,OAAN,CAActB,KAAd,CAAJ,EAA0B;AAC/B,QAAIY,KAAK,IAAIC,QAAb,EAAuB;AACrBN,MAAAA,WAAW,GAAG,YAAd;AACD,KAFD,MAEO;AACL,aAAOgB,mBAAmB,CAACvB,KAAD,EAAQU,OAAR,EAAiB;AACzCC,QAAAA,OADyC;AAEzCC,QAAAA,KAAK,EAAEA,KAAK,GAAG,CAF0B;AAGzCC,QAAAA,QAHyC;AAIzCC,QAAAA;AAJyC,OAAjB,CAA1B;AAMD;AACF,GAXM,MAWA,IAAId,KAAK,YAAYwB,KAArB,EAA4B;AACjC,QAAMC,KAAK,GAAGzB,KAAK,CAACyB,KAApB;AACAlB,IAAAA,WAAW,GAAGkB,KAAK,QAAL,IAAAA,KAAK,CAAEC,UAAP,CAAkB1B,KAAK,CAAC2B,OAAxB,IACVF,KADU,GAET,GAAEzB,KAAK,CAAC2B,OAAQ,KAAIF,KAAK,IAAI,EAAG,EAFrC;AAGD,GALM,MAKA,IAAIzB,KAAK,YAAY4B,GAArB,EAA0B;AAC/B,QAAMC,IAAI,GAAG7B,KAAK,CAACkB,WAAN,CAAkBW,IAA/B;;AACA,QAAIjB,KAAK,IAAIC,QAAb,EAAuB;AACrBN,MAAAA,WAAW,GAAI,IAAGsB,IAAK,MAAvB;AACD,KAFD,MAEO;AACL,aAAOC,iBAAiB,CAACD,IAAD,EAAO7B,KAAP,EAAcU,OAAd,EAAuB;AAC7CC,QAAAA,OAD6C;AAE7CC,QAAAA,KAAK,EAAEA,KAAK,GAAG,CAF8B;AAG7CC,QAAAA,QAH6C;AAI7CC,QAAAA;AAJ6C,OAAvB,CAAxB;AAMD;AACF,GAZM,MAYA,IAAId,KAAK,YAAY+B,GAArB,EAA0B;AAC/B,QAAMF,KAAI,GAAG7B,KAAK,CAACkB,WAAN,CAAkBW,IAA/B;;AACA,QAAIjB,KAAK,IAAIC,QAAb,EAAuB;AACrBN,MAAAA,WAAW,GAAI,IAAGsB,KAAK,MAAvB;AACD,KAFD,MAEO;AACL,aAAOG,iBAAiB,CAACH,KAAD,EAAO7B,KAAP,EAAcU,OAAd,EAAuB;AAC7CC,QAAAA,OAD6C;AAE7CC,QAAAA,KAAK,EAAEA,KAAK,GAAG,CAF8B;AAG7CC,QAAAA,QAH6C;AAI7CC,QAAAA;AAJ6C,OAAvB,CAAxB;AAMD;AACF,GAZM,MAYA,IAAId,KAAK,YAAYiC,OAArB,EAA8B;AACnC1B,IAAAA,WAAW,GAAG,cAAd;AACD,GAFM,MAEA,IAAIP,KAAK,YAAYkC,OAArB,EAA8B;AACnC3B,IAAAA,WAAW,GAAG,cAAd;AACD,GAFM,MAEA;AACLA,IAAAA,WAAW,GAAGN,YAAY,CAACD,KAAD,CAA1B;AACD;;AAED,MAAMQ,cAAc,GAAGE,OAAO,CAACX,MAAD,EAASQ,WAAT,CAA9B;AAEA,SAAO;AACLA,IAAAA,WADK;AAELC,IAAAA;AAFK,GAAP;AAID;;AAED,IAAM2B,SAAS,GAAG,GAAlB;;AAEA,IAAMC,iBAAoC,GAAG,SAAvCA,iBAAuC,CAC3CC,GAD2C,EAE3C3B,OAF2C,EAI1B;AACjB,SAAO;AACL4B,IAAAA,SAAS,EAAG,GAAED,GAAI,IADb;AAELE,IAAAA,YAAY,EAAG,GAAE7B,OAAO,CAAC,CAAC,YAAD,EAAe,MAAf,CAAD,EAA0B,GAAE2B,GAAI,GAAhC,CAAoC;AAFvD,GAAP;AAID,CATD;;AAWA,IAAMG,aAAmC,GAAG,SAAtCA,aAAsC,GAIzB;AACjB,SAAO;AAAEF,IAAAA,SAAS,EAAE,EAAb;AAAiBC,IAAAA,YAAY,EAAE;AAA/B,GAAP;AACD,CAND;;AAQA,IAAME,oBAAwC,GAAG,SAA3CA,oBAA2C,CAC/CJ,GAD+C,EAE/C3B,OAF+C,EAG/CgC,oBAH+C,EAI9B;AACjB,6BAAwCjC,mBAAmB,CACzD4B,GADyD,EAEzDvC,SAFyD,EAGzDkB,SAHyD,EAIzD0B,oBAJyD,CAA3D;AAAA,MAAQnC,WAAR,wBAAQA,WAAR;AAAA,MAAqBC,cAArB,wBAAqBA,cAArB;;AAMA,SAAO;AACL8B,IAAAA,SAAS,EAAG,GAAE/B,WAAY,MADrB;AAELgC,IAAAA,YAAY,EAAG,GAAE7B,OAAO,CAAC,CAAC,YAAD,EAAe,MAAf,CAAD,EAA0B,GAAEF,cAAe,GAA3C,CAA+C;AAFlE,GAAP;AAID,CAfD;;AAiBA,IAAMmC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAC7BC,MAD6B,EAE7BlC,OAF6B,EAG7BmC,YAH6B,gBAWV;AAAA,MAPjBlC,OAOiB,SAPjBA,OAOiB;AAAA,MAPRC,KAOQ,SAPRA,KAOQ;AAAA,MAPDC,QAOC,SAPDA,QAOC;AAAA,MAPSC,OAOT,SAPSA,OAOT;AAAA,MALjBgC,MAKiB,SALjBA,MAKiB;AAAA,MAJjBC,MAIiB,SAJjBA,MAIiB;AAAA,oCAHjBC,iBAGiB;AAAA,MAHjBA,iBAGiB,sCAHG,GAGH;AAAA,MAFjBC,SAEiB,SAFjBA,SAEiB;AACnB,MAAIC,SAAS,GAAG,KAAhB;;AACA,MAAMC,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,WAAczC,OAAO,CAAC,CAAC,MAAD,CAAD,EAAWyB,SAAX,CAArB;AAAA,GAA3B;;AAEA,MAAMiB,cAAc,GAAGR,MAAM,CAACS,MAAP,GAAgB,CAAvC;AACA,MAAMC,eAAiC,GAAGV,MAAM,CAACW,GAAP,CACxC,iBAAiBC,KAAjB,EAAmC;AAAA,QAAhCnB,GAAgC,SAAhCA,GAAgC;AAAA,QAA3BrC,KAA2B,SAA3BA,KAA2B;AAEjC,QAAM0C,oBAAoB,GAAG;AAC3B/B,MAAAA,OAD2B;AAE3BC,MAAAA,KAAK,EAHWA,KAAK,GAAG,CACG;AAG3BC,MAAAA,QAH2B;AAI3BC,MAAAA;AAJ2B,KAA7B,CAFiC;;AAUjC,qBAAoCmC,SAAS,CAC3CZ,GAD2C,EAE3C3B,OAF2C,EAG3CgC,oBAH2C,CAA7C;AAAA,QAAQJ,SAAR,cAAQA,SAAR;AAAA,QAAmBC,YAAnB,cAAmBA,YAAnB;;AAMA,gCAAsC9B,mBAAmB,CACvDT,KADuD,EAEvDU,OAFuD,EAGvD2B,GAAG,IAAIQ,YAAP,GACIA,YAAY,CAACR,GAAD,CADhB,GAEIrB,SALmD,EAMvD0B,oBANuD,CAAzD;AAAA,QAAMnC,WAAN,yBAAMA,WAAN;AAAA,QAAmBC,cAAnB,yBAAmBA,cAAnB;;AASA,QACED,WAAW,KACVA,WAAW,CAAC8C,MAAZ,GAAqB,EAArB,IAA2B9C,WAAW,CAACkD,QAAZ,CAAqB,IAArB,CADjB,CADb,EAGE;AACAP,MAAAA,SAAS,GAAG,IAAZ;AACA3C,MAAAA,WAAW,GAAGA,WAAW,CAACF,OAAZ,CAAoB,KAApB,EAA4B,KAAIM,OAAQ,EAAxC,CAAd;AACAH,MAAAA,cAAc,GAAGA,cAAc,CAACH,OAAf,CAAuB,KAAvB,EAA+B,KAAIM,OAAQ,EAA3C,CAAjB;AACD;;AAED,WAAO;AACLJ,MAAAA,WAAW,EACT+B,SAAS,GAAG/B,WAAZ,IAA2BiD,KAAK,KAAKJ,cAAV,GAA2B,EAA3B,GAAgCjB,SAA3D,CAFG;AAGL3B,MAAAA,cAAc,EACZ+B,YAAY,GACZ/B,cADA,IAECgD,KAAK,KAAKJ,cAAV,GAA2B,EAA3B,GAAgCD,kBAAkB,EAFnD,CAJG;;AAAA,KAAP;AASD,GA5CuC,CAA1C;AA+CA,SAAO;AACL5C,IAAAA,WAAW,EACTuC,MAAM,GACNQ,eAAe,CACZC,GADH,CAEIL,SAAS,GACL,UAACQ,CAAD;AAAA,aAAQ,KAAI/C,OAAQ,GAAE+C,CAAC,CAACnD,WAAY,EAApC;AAAA,KADK,GAEL,UAACoD,EAAD;AAAA,aAAQA,EAAE,CAACpD,WAAX;AAAA,KAJR,EAMGqD,IANH,CAMQV,SAAS,GAAG,IAAH,GAAU,GAN3B,CADA,GAQAH,MAVG;AAWLvC,IAAAA,cAAc,EAAG,GAAEsC,MAAO,GACxBI,SAAS,GAAG,EAAH,GAAQF,iBAClB,GAAEM,eAAe,CACfC,GADA,CAECL,SAAS,GACL,UAACQ,CAAD;AAAA,aAAQ,KAAI/C,OAAQ,GAAE+C,CAAC,CAAClD,cAAe,EAAvC;AAAA,KADK,GAEL,UAACkD,CAAD;AAAA,aAAOA,CAAC,CAAClD,cAAT;AAAA,KAJL,EAMAoD,IANA,CAMKV,SAAS,GAAG,EAAH,GAAQ,GANtB,CAM2B,GAC5BA,SAAS,GAAG,KAAH,GAAWF,iBACrB,GAAED,MAAO;AArBL,GAAP;AAuBD,CAtFD;;AAwFA,SAAS3B,oBAAT,CACEyC,MADF,EAEEnD,OAFF,EAGEmC,YAHF,SAKkB;AAAA,MADdlC,OACc,SADdA,OACc;AAAA,MADLC,KACK,SADLA,KACK;AAAA,MADEC,QACF,SADEA,QACF;AAAA,MADYC,OACZ,SADYA,OACZ;;AAChB,MAAIA,OAAO,CAACgD,GAAR,CAAYD,MAAZ,CAAJ,EAAyB;AACvB,WAAOvD,qBAAqB,CAAC,mBAAD,CAA5B;AACD;;AAED,MAAMyD,IAAc,GAAG5C,MAAM,CAAC4C,IAAP,CAAYF,MAAZ,CAAvB;;AACA,MAAIE,IAAI,CAACV,MAAL,KAAgB,CAApB,EAAuB;AACrB,WAAO/C,qBAAqB,CAAC,IAAD,CAA5B;AACD;;AAEDQ,EAAAA,OAAO,CAACkD,GAAR,CAAYH,MAAZ;AAEA,MAAMI,MAAM,GAAGtB,sBAAsB,CACnCoB,IAAI,CAACR,GAAL,CAAS,UAAClB,GAAD;AAAA,WAAU;AAAEA,MAAAA,GAAF;AAAOrC,MAAAA,KAAK,EAAE6D,MAAM,CAACxB,GAAD;AAApB,KAAV;AAAA,GAAT,CADmC,EAEnC3B,OAFmC,EAGnCmC,YAHmC,EAInC;AAAElC,IAAAA,OAAF;AAAWC,IAAAA,KAAX;AAAkBC,IAAAA,QAAlB;AAA4BC,IAAAA;AAA5B,GAJmC,EAKnC;AAAEgC,IAAAA,MAAM,EAAE,GAAV;AAAeC,IAAAA,MAAM,EAAE,GAAvB;AAA4BE,IAAAA,SAAS,EAAEb;AAAvC,GALmC,CAArC;AAQAtB,EAAAA,OAAO,CAACoD,MAAR,CAAeL,MAAf;AAEA,SAAOI,MAAP;AACD;;AAED,SAASnC,iBAAT,CACED,IADF,EAEE0B,GAFF,EAGE7C,OAHF,SAKkB;AAAA,MADdC,OACc,SADdA,OACc;AAAA,MADLC,KACK,SADLA,KACK;AAAA,MADEC,QACF,SADEA,QACF;AAAA,MADYC,OACZ,SADYA,OACZ;;AAChB,MAAIA,OAAO,CAACgD,GAAR,CAAYP,GAAZ,CAAJ,EAAsB;AACpB,WAAOjD,qBAAqB,CAAE,aAAYuB,IAAK,GAAnB,CAA5B;AACD;;AAED,MAAMkC,IAAI,aAAOR,GAAG,CAACQ,IAAJ,EAAP,CAAV;;AACA,MAAIA,IAAI,CAACV,MAAL,KAAgB,CAApB,EAAuB;AACrB,WAAO/C,qBAAqB,CAAE,GAAEuB,IAAK,KAAT,CAA5B;AACD;;AAEDf,EAAAA,OAAO,CAACkD,GAAR,CAAYT,GAAZ;AAEA,MAAMU,MAAM,GAAGtB,sBAAsB,CACnCoB,IAAI,CAACR,GAAL,CAAS,UAAClB,GAAD;AAAA,WAAU;AAAEA,MAAAA,GAAF;AAAOrC,MAAAA,KAAK,EAAEuD,GAAG,CAACY,GAAJ,CAAQ9B,GAAR;AAAd,KAAV;AAAA,GAAT,CADmC,EAEnC3B,OAFmC,EAGnCM,SAHmC,EAInC;AAAEL,IAAAA,OAAF;AAAWC,IAAAA,KAAX;AAAkBC,IAAAA,QAAlB;AAA4BC,IAAAA;AAA5B,GAJmC,EAKnC;AAAEgC,IAAAA,MAAM,EAAG,GAAEjB,IAAK,IAAlB;AAAuBkB,IAAAA,MAAM,EAAE,GAA/B;AAAoCE,IAAAA,SAAS,EAAER;AAA/C,GALmC,CAArC;AAQA3B,EAAAA,OAAO,CAACoD,MAAR,CAAeX,GAAf;AAEA,SAAOU,MAAP;AACD;;AAED,SAAS1C,mBAAT,CACE6C,KADF,EAEE1D,OAFF,SAIkB;AAAA,MADdC,OACc,SADdA,OACc;AAAA,MADLC,KACK,SADLA,KACK;AAAA,MADEC,QACF,SADEA,QACF;AAAA,MADYC,OACZ,SADYA,OACZ;;AAChB,MAAIA,OAAO,CAACgD,GAAR,CAAYM,KAAZ,CAAJ,EAAwB;AACtB,WAAO9D,qBAAqB,CAAC,kBAAD,CAA5B;AACD;;AAED,MAAI8D,KAAK,CAACf,MAAN,KAAiB,CAArB,EAAwB;AACtB,WAAO/C,qBAAqB,CAAC,IAAD,CAA5B;AACD;;AAEDQ,EAAAA,OAAO,CAACkD,GAAR,CAAYI,KAAZ;AAEA,MAAMH,MAAM,GAAGtB,sBAAsB,CACnCyB,KAAK,CAACb,GAAN,CAAU,UAACvD,KAAD;AAAA,WAAY;AAAEqC,MAAAA,GAAG,EAAErB,SAAP;AAAkBhB,MAAAA;AAAlB,KAAZ;AAAA,GAAV,CADmC,EAEnCU,OAFmC,EAGnCM,SAHmC,EAInC;AAAEL,IAAAA,OAAF;AAAWC,IAAAA,KAAX;AAAkBC,IAAAA,QAAlB;AAA4BC,IAAAA;AAA5B,GAJmC,EAKnC;AACEgC,IAAAA,MAAM,EAAE,GADV;AAEEC,IAAAA,MAAM,EAAE,GAFV;AAGEC,IAAAA,iBAAiB,EAAE,EAHrB;AAIEC,IAAAA,SAAS,EAAET;AAJb,GALmC,CAArC;AAaA1B,EAAAA,OAAO,CAACoD,MAAR,CAAeE,KAAf;AAEA,SAAOH,MAAP;AACD;;AAED,SAASjC,iBAAT,CACEH,IADF,EAEEwC,GAFF,EAGE3D,OAHF,SAKkB;AAAA,MADdC,OACc,SADdA,OACc;AAAA,MADLC,KACK,SADLA,KACK;AAAA,MADEC,QACF,SADEA,QACF;AAAA,MADYC,OACZ,SADYA,OACZ;;AAChB,MAAIA,OAAO,CAACgD,GAAR,CAAYO,GAAZ,CAAJ,EAAsB;AACpB,WAAO/D,qBAAqB,CAAE,aAAYuB,IAAK,GAAnB,CAA5B;AACD;;AAED,MAAMe,MAAM,aAAOyB,GAAG,CAACzB,MAAJ,EAAP,CAAZ;;AACA,MAAIA,MAAM,CAACS,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO/C,qBAAqB,CAAE,GAAEuB,IAAK,KAAT,CAA5B;AACD;;AAEDf,EAAAA,OAAO,CAACkD,GAAR,CAAYK,GAAZ;AAEA,MAAMJ,MAAM,GAAGtB,sBAAsB,CACnCC,MAAM,CAACW,GAAP,CAAW,UAACvD,KAAD;AAAA,WAAY;AAAEqC,MAAAA,GAAG,EAAErB,SAAP;AAAkBhB,MAAAA;AAAlB,KAAZ;AAAA,GAAX,CADmC,EAEnCU,OAFmC,EAGnCM,SAHmC,EAInC;AAAEL,IAAAA,OAAF;AAAWC,IAAAA,KAAX;AAAkBC,IAAAA,QAAlB;AAA4BC,IAAAA;AAA5B,GAJmC,EAKnC;AAAEgC,IAAAA,MAAM,EAAG,GAAEjB,IAAK,IAAlB;AAAuBkB,IAAAA,MAAM,EAAE,GAA/B;AAAoCE,IAAAA,SAAS,EAAET;AAA/C,GALmC,CAArC;AAQA1B,EAAAA,OAAO,CAACoD,MAAR,CAAeG,GAAf;AAEA,SAAOJ,MAAP;AACD;;AAEM,SAASK,YAAT,CACLT,MADK,EAELnD,OAFK,EAGLmC,YAHK,SAKG;AAAA,MAHRnC,OAGQ;AAHRA,IAAAA,OAGQ,GAHWZ,SAGX;AAAA;;AAAA,iCADiD,EACjD;AAAA,4BADNa,OACM;AAAA,MADNA,OACM,8BADI,IACJ;AAAA,6BADUE,QACV;AAAA,MADUA,QACV,+BADqB,EACrB;;AACR,8BAAmCO,oBAAoB,CACrDyC,MADqD,EAErDnD,OAFqD,EAGrDmC,YAHqD,EAIrD;AACElC,IAAAA,OADF;AAEEE,IAAAA,QAFF;AAGED,IAAAA,KAAK,EAAE,CAHT;AAIEE,IAAAA,OAAO,EAAE,IAAIiB,GAAJ;AAJX,GAJqD,CAAvD;AAAA,MAAwBkC,MAAxB,yBAAQzD,cAAR;;AAYA,MAAIyD,MAAM,KAAK,IAAf,EAAqB;AACnB,WAAO,EAAP;AACD;;AAED,SAAOA,MAAP;AACD;;ACvbM,SAASM,oBAAT,CACLC,MADK,EAELC,KAFK,EAGG;AACR,MAAMC,KAAe,GAAG,EAAxB;;AAEA,MAAIF,MAAM,CAACG,WAAX,EAAwB;AACtBD,IAAAA,KAAK,CAACE,IAAN,CAAWH,KAAK,CAAC,CAAC,YAAD,CAAD,EAAiBD,MAAM,CAACG,WAAxB,CAAhB;AACD,GAFD,MAEO,IAAIH,MAAM,CAACnC,GAAX,EAAgB;AACrBqC,IAAAA,KAAK,CAACE,IAAN,CAAWH,KAAK,CAAC,CAAC,YAAD,CAAD,EAAiBD,MAAM,CAACnC,GAAxB,CAAhB;AACD;;AAED,MAAImC,MAAM,CAACK,QAAX,EAAqB;AACnBH,IAAAA,KAAK,CAACE,IAAN,CACEH,KAAK,CAAC,CAAC,MAAD,EAAS,MAAT,CAAD,EAAmBD,MAAM,CAACK,QAAP,CAAgBC,YAAhB,GAA+BC,KAA/B,CAAqC,GAArC,EAA0C,CAA1C,CAAnB,CADP;AAGA;AACD;;AAED,MAAIpD,OAAe,GAAG6C,MAAM,CAACQ,MAAP,IAAiBjH,aAAa,CAACyG,MAAM,CAACS,KAAR,CAApD;AACA,MAAMlF,MAAM,GAAGyE,MAAM,CAACzE,MAAP,IAAiBzC,aAAa,CAACkH,MAAM,CAACS,KAAR,CAA7C;;AAEA,MAAIT,MAAM,CAAC7C,OAAX,EAAoB;AAClB,QAAIA,OAAJ,EAAa;AACXA,MAAAA,OAAO,IAAK,IAAG6C,MAAM,CAAC7C,OAAQ,EAA9B;AACD,KAFD,MAEO;AACLA,MAAAA,OAAO,GAAG6C,MAAM,CAAC7C,OAAjB;AACD;AACF;;AAED,MAAIA,OAAJ,EAAa;AACX,QAAI5B,MAAJ,EAAY;AACV4B,MAAAA,OAAO,GAAG8C,KAAK,CAAC1E,MAAD,EAAS4B,OAAT,CAAf;AACD;;AACD+C,IAAAA,KAAK,CAACE,IAAN,CAAWjD,OAAX;AACD;;AAED,MAAMuD,kBAAkB,GAAG,SAArBA,kBAAqB,CACzB7C,GADyB,EAEzBwB,MAFyB,EAGzB9D,MAHyB,EAIhB;AACT,QAAI,CAAC8D,MAAL,EAAa;AACX;AACD;;AAED,QAAMsB,YAAY,GAAGb,YAAY,CAACT,MAAD,EAASY,KAAT,EAAgB1E,MAAhB,CAAjC;;AAEA,QAAI,CAACoF,YAAL,EAAmB;AACjB;AACD;;AAEDT,IAAAA,KAAK,CAACE,IAAN,CAAWO,YAAX;AACD,GAhBD;;AAkBAD,EAAAA,kBAAkB,CAAC,UAAD,EAAaV,MAAM,CAACY,QAApB,EAA8BZ,MAAM,CAACa,cAArC,CAAlB;AACAH,EAAAA,kBAAkB,CAAC,OAAD,EAAUV,MAAM,CAACc,KAAjB,EAAwBtE,SAAxB,CAAlB;AACAkE,EAAAA,kBAAkB,CAAC,SAAD,EAAYV,MAAM,CAACe,OAAnB,EAA4BvE,SAA5B,CAAlB;AAEA,SAAO0D,KAAK,CAACd,IAAN,CAAW,GAAX,CAAP;AACD;;;;;;;;;;;"}
|