@andrew_l/pino-pretty 0.2.17 → 0.2.18
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/README.md +1 -1
- package/dist/index.cjs +181 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -0
- package/dist/index.d.mts +25 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.mjs +185 -41
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Inspired by [consola](https://www.npmjs.com/package/consola)
|
|
|
9
9
|
|
|
10
10
|
[Documentation](https://men232.github.io/toolkit/reference/@andrew_l/pino-pretty/)
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+

|
|
13
13
|
|
|
14
14
|
<!-- install placeholder -->
|
|
15
15
|
|
package/dist/index.cjs
CHANGED
|
@@ -220,24 +220,36 @@ function addNumericSeparator(num, str) {
|
|
|
220
220
|
}
|
|
221
221
|
return str.replace(SEP_REGEX, "$&_");
|
|
222
222
|
}
|
|
223
|
-
function
|
|
224
|
-
var processedStr = str;
|
|
225
|
-
if (str.length > opts.maxStringLength) {
|
|
226
|
-
var remaining = str.length - opts.maxStringLength;
|
|
227
|
-
var trailer = `... ${remaining} more character${remaining > 1 ? "s" : ""}`;
|
|
228
|
-
processedStr = str.slice(0, opts.maxStringLength);
|
|
229
|
-
return inspectString(processedStr, opts) + trailer;
|
|
230
|
-
}
|
|
223
|
+
function escapeString(str, opts) {
|
|
231
224
|
var quoteRegex = QUOTE_REGEX[opts.quoteStyle];
|
|
232
|
-
|
|
225
|
+
return str.replace(quoteRegex, "\\$1").replace(/[\x00-\x1f]/g, (char) => {
|
|
233
226
|
var code = char.charCodeAt(0);
|
|
234
227
|
var escapeChar = ESCAPE_CHARS[code];
|
|
235
228
|
return escapeChar ? `\\${escapeChar}` : `\\x${code.toString(16).padStart(2, "0").toUpperCase()}`;
|
|
236
229
|
});
|
|
230
|
+
}
|
|
231
|
+
function inspectString$1(str, opts) {
|
|
232
|
+
if (str.length > opts.maxStringLength) {
|
|
233
|
+
var remaining = str.length - opts.maxStringLength;
|
|
234
|
+
var trailer = `... ${remaining} more character${remaining > 1 ? "s" : ""}`;
|
|
235
|
+
str = str.slice(0, opts.maxStringLength);
|
|
236
|
+
return inspectString$1(str, opts) + trailer;
|
|
237
|
+
}
|
|
238
|
+
var escaped = escapeString(str, opts);
|
|
237
239
|
var quote = QUOTES[opts.quoteStyle];
|
|
238
240
|
var result = `${quote}${escaped}${quote}`;
|
|
239
241
|
return opts.customStringify.string?.(result) ?? result;
|
|
240
242
|
}
|
|
243
|
+
function inspectNumber(num, opts) {
|
|
244
|
+
if (typeof num === "bigint") {
|
|
245
|
+
var str = `${num}n`;
|
|
246
|
+
var result = opts.numericSeparator ? addNumericSeparator(num, str) : str;
|
|
247
|
+
return opts.customStringify.number?.(result) ?? result;
|
|
248
|
+
}
|
|
249
|
+
var str = Object.is(num, -0) ? "-0" : String(num);
|
|
250
|
+
var result = opts.numericSeparator ? addNumericSeparator(num, str) : str;
|
|
251
|
+
return opts.customStringify.number?.(result) ?? result;
|
|
252
|
+
}
|
|
241
253
|
function getIndentStrings(opts, depth) {
|
|
242
254
|
if (depth === 0) return { base: " ".repeat(opts.indent), prev: "" };
|
|
243
255
|
return {
|
|
@@ -272,23 +284,17 @@ function getObjectEntries(obj, inspectFn) {
|
|
|
272
284
|
}
|
|
273
285
|
return entries;
|
|
274
286
|
}
|
|
275
|
-
function inspectValue(obj, opts, depth, seen) {
|
|
287
|
+
function inspectValue$1(obj, opts, depth, seen) {
|
|
276
288
|
if (obj === void 0)
|
|
277
289
|
return opts.customStringify.undefined?.(obj) ?? "undefined";
|
|
278
290
|
if (obj === null) return opts.customStringify.null?.(obj) ?? "null";
|
|
279
291
|
if (typeof obj === "boolean")
|
|
280
292
|
return opts.customStringify.boolean?.(obj) ?? String(obj);
|
|
281
|
-
if (typeof obj === "string") return inspectString(obj, opts);
|
|
293
|
+
if (typeof obj === "string") return inspectString$1(obj, opts);
|
|
282
294
|
if (typeof obj === "number") {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
return opts.customStringify.number?.(result) ?? result;
|
|
287
|
-
}
|
|
288
|
-
if (typeof obj === "bigint") {
|
|
289
|
-
var str = `${obj}n`;
|
|
290
|
-
var result = opts.numericSeparator ? addNumericSeparator(obj, str) : str;
|
|
291
|
-
return opts.customStringify.number?.(result) ?? result;
|
|
295
|
+
return inspectNumber(obj, opts);
|
|
296
|
+
} else if (typeof obj === "bigint") {
|
|
297
|
+
return inspectNumber(obj, opts);
|
|
292
298
|
}
|
|
293
299
|
if (depth >= opts.depth && opts.depth > 0 && typeof obj === "object") {
|
|
294
300
|
return Array.isArray(obj) ? "[Array]" : "[Object]";
|
|
@@ -296,7 +302,7 @@ function inspectValue(obj, opts, depth, seen) {
|
|
|
296
302
|
if (seen.has(obj)) return "[Circular]";
|
|
297
303
|
seen.add(obj);
|
|
298
304
|
var indent = getIndentStrings(opts, depth);
|
|
299
|
-
var inspectChild = (value) => inspectValue(value, opts, depth + 1, seen);
|
|
305
|
+
var inspectChild = (value) => inspectValue$1(value, opts, depth + 1, seen);
|
|
300
306
|
if (Array.isArray(obj)) {
|
|
301
307
|
if (obj.length === 0) return "[]";
|
|
302
308
|
var entries = getObjectEntries(obj, inspectChild);
|
|
@@ -321,9 +327,137 @@ ${indent.prev}`;
|
|
|
321
327
|
seen.delete(obj);
|
|
322
328
|
return String(obj);
|
|
323
329
|
}
|
|
324
|
-
function
|
|
330
|
+
function inspectRegular(obj, options) {
|
|
331
|
+
return inspectValue$1(obj, options, 0, /* @__PURE__ */ new WeakSet());
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
var INSPECT_MAP = {
|
|
335
|
+
boolean: (obj, opts) => opts.customStringify.boolean?.(obj) ?? String(obj),
|
|
336
|
+
string: inspectString,
|
|
337
|
+
number: inspectNumber,
|
|
338
|
+
bigint: inspectNumber,
|
|
339
|
+
undefined: (obj, opts) => opts.customStringify.undefined?.(obj) ?? "undefined",
|
|
340
|
+
null: () => "null",
|
|
341
|
+
array: formatArray,
|
|
342
|
+
object: formatObject
|
|
343
|
+
};
|
|
344
|
+
function inspectCompact(obj, options) {
|
|
325
345
|
return inspectValue(obj, options, 0, /* @__PURE__ */ new WeakSet());
|
|
326
346
|
}
|
|
347
|
+
function inspectValue(obj, opts, depth = 0, seen) {
|
|
348
|
+
var spaces = depth > 0 ? " ".repeat(opts.indent * depth) : "";
|
|
349
|
+
var type = toolkit.typeOf(obj);
|
|
350
|
+
var inspectFn = INSPECT_MAP[type] || String;
|
|
351
|
+
if (toolkit.isFunction(obj[node_util.inspect.custom])) {
|
|
352
|
+
var lineJoiner = `
|
|
353
|
+
${spaces}`;
|
|
354
|
+
return spaces + node_util.inspect(obj, { depth: opts.depth - depth }).split("\n").join(lineJoiner);
|
|
355
|
+
}
|
|
356
|
+
return inspectFn(obj, opts, depth, spaces, seen);
|
|
357
|
+
}
|
|
358
|
+
function inspectString(str, opts) {
|
|
359
|
+
if (str.length > opts.maxStringLength) {
|
|
360
|
+
var remaining = str.length - opts.maxStringLength;
|
|
361
|
+
str = str.slice(0, opts.maxStringLength);
|
|
362
|
+
return formatString(str, remaining, opts);
|
|
363
|
+
}
|
|
364
|
+
return formatString(str, 0, opts);
|
|
365
|
+
}
|
|
366
|
+
function formatString(str, remaining, opts) {
|
|
367
|
+
var escaped = escapeString(str, opts);
|
|
368
|
+
var quote = QUOTES[opts.quoteStyle];
|
|
369
|
+
var result;
|
|
370
|
+
var trailer = remaining > 0 ? opts.customStringify.stringRemaining(`... ${remaining} more characters`) : "";
|
|
371
|
+
if (escaped.length > opts.columns && escaped.includes("\\n")) {
|
|
372
|
+
escaped = escaped.replaceAll("\\n", "\n");
|
|
373
|
+
result = "\n```\n" + (trailer ? `${escaped}
|
|
374
|
+
${trailer}` : escaped) + "\n```";
|
|
375
|
+
} else {
|
|
376
|
+
result = `${quote}${escaped}${trailer ?? ""}${quote}`;
|
|
377
|
+
}
|
|
378
|
+
return opts.customStringify.string?.(result) ?? result;
|
|
379
|
+
}
|
|
380
|
+
function formatArray(arr, opts, depth, spaces, seen) {
|
|
381
|
+
if (opts.depth > 0 && depth >= opts.depth) {
|
|
382
|
+
return "[Array]";
|
|
383
|
+
}
|
|
384
|
+
if (seen.has(arr)) {
|
|
385
|
+
return "[Circular]";
|
|
386
|
+
}
|
|
387
|
+
seen.add(arr);
|
|
388
|
+
var len = arr.length;
|
|
389
|
+
if (isCompactFormat(arr, depth, spaces.length, opts)) {
|
|
390
|
+
var compact = [];
|
|
391
|
+
for (var i = 0; i < len; i++) {
|
|
392
|
+
compact.push(inspectValue(arr[i], opts, 0, seen));
|
|
393
|
+
}
|
|
394
|
+
return `[${compact.join(", ")}]`;
|
|
395
|
+
}
|
|
396
|
+
var multiline = [];
|
|
397
|
+
for (var i = 0; i < len; i++) {
|
|
398
|
+
var strValue = inspectValue(arr[i], opts, depth + 1, seen);
|
|
399
|
+
multiline.push(
|
|
400
|
+
`${spaces}- ${strValue.trimStart ? strValue.trimStart() : strValue}`
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
return multiline.join("\n");
|
|
404
|
+
}
|
|
405
|
+
function isCompactFormat(value, depth, spaces, opts) {
|
|
406
|
+
var availableLength = opts.columns - spaces - depth * opts.indent;
|
|
407
|
+
var totalLength = 0;
|
|
408
|
+
if (availableLength <= 0) return false;
|
|
409
|
+
for (var item of value.flat()) {
|
|
410
|
+
totalLength += String(item).length + 2;
|
|
411
|
+
if (totalLength > availableLength || !toolkit.isPrimitive(item)) return false;
|
|
412
|
+
}
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
function formatObject(obj, opts, depth, spaces, seen) {
|
|
416
|
+
if (opts.depth > 0 && depth >= opts.depth) {
|
|
417
|
+
return "[Array]";
|
|
418
|
+
}
|
|
419
|
+
if (seen.has(obj)) {
|
|
420
|
+
return "[Circular]";
|
|
421
|
+
}
|
|
422
|
+
seen.add(obj);
|
|
423
|
+
var entries = Object.entries(obj);
|
|
424
|
+
var len = entries.length;
|
|
425
|
+
if (len === 0) return "{}";
|
|
426
|
+
if (isCompactFormat(entries, depth, spaces.length, opts)) {
|
|
427
|
+
var compact = [];
|
|
428
|
+
var key, value;
|
|
429
|
+
for (var i = 0; i < len; i++) {
|
|
430
|
+
key = entries[i][0];
|
|
431
|
+
value = entries[i][1];
|
|
432
|
+
compact.push(`${key}: ${inspectValue(value, opts, 0, seen)}`);
|
|
433
|
+
}
|
|
434
|
+
return `{ ${compact.join(", ")} }`;
|
|
435
|
+
}
|
|
436
|
+
var multiline = [];
|
|
437
|
+
var key, value, strValue, compactMode;
|
|
438
|
+
for (var i = 0; i < len; i++) {
|
|
439
|
+
key = entries[i][0];
|
|
440
|
+
value = entries[i][1];
|
|
441
|
+
strValue = inspectValue(value, opts, depth + 1, seen);
|
|
442
|
+
compactMode = strValue[0] === "{" || strValue[0] === "[";
|
|
443
|
+
if (compactMode) {
|
|
444
|
+
multiline.push(`${spaces}${key}: ${strValue}`);
|
|
445
|
+
} else if (value && typeof value === "object") {
|
|
446
|
+
if (Array.isArray(value) && value.length > 0 && strValue[0] !== "[") {
|
|
447
|
+
multiline.push(`${spaces}${key}:
|
|
448
|
+
${strValue}`);
|
|
449
|
+
} else if (!Array.isArray(value)) {
|
|
450
|
+
multiline.push(`${spaces}${key}:
|
|
451
|
+
${strValue}`);
|
|
452
|
+
} else {
|
|
453
|
+
multiline.push(`${spaces}${key}: ${strValue}`);
|
|
454
|
+
}
|
|
455
|
+
} else {
|
|
456
|
+
multiline.push(`${spaces}${key}: ${strValue}`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
return multiline.join("\n");
|
|
460
|
+
}
|
|
327
461
|
|
|
328
462
|
function parseOptions(value) {
|
|
329
463
|
const defOptions = {
|
|
@@ -337,6 +471,7 @@ function parseOptions(value) {
|
|
|
337
471
|
numericSeparator: false,
|
|
338
472
|
ignore: "hostname,pid",
|
|
339
473
|
colorize: true,
|
|
474
|
+
inspect: "compact",
|
|
340
475
|
types: {
|
|
341
476
|
number: { color: "green" },
|
|
342
477
|
boolean: { color: "redBright" },
|
|
@@ -366,13 +501,15 @@ function parseOptions(value) {
|
|
|
366
501
|
...opts,
|
|
367
502
|
sw,
|
|
368
503
|
colorFallback: createColorizeFn(opts.colorize, "gray"),
|
|
369
|
-
inspect:
|
|
504
|
+
inspectFn: opts.inspect === "regular" ? inspectRegular : opts.inspect === "compact" ? inspectCompact : toolkit.isFunction(opts.inspect) ? opts.inspect : inspectRegular,
|
|
505
|
+
inspectOptions: {
|
|
370
506
|
depth: opts.depth,
|
|
371
507
|
quoteStyle: opts.quoteStyle,
|
|
372
508
|
indent: opts.indent,
|
|
373
509
|
maxStringLength: opts.maxStringLength,
|
|
374
510
|
numericSeparator: opts.numericSeparator,
|
|
375
|
-
customStringify: {}
|
|
511
|
+
customStringify: {},
|
|
512
|
+
columns: opts.columns
|
|
376
513
|
},
|
|
377
514
|
levels: Object.fromEntries(
|
|
378
515
|
Object.entries(opts.levels).map(([key, value2]) => [
|
|
@@ -406,10 +543,11 @@ function parseOptions(value) {
|
|
|
406
543
|
opts.ignore.split(",").map((v) => v.trim()).filter(Boolean)
|
|
407
544
|
)
|
|
408
545
|
};
|
|
409
|
-
result.
|
|
546
|
+
result.inspectOptions.customStringify = {
|
|
410
547
|
number: result.types.number.color,
|
|
411
548
|
boolean: result.types.boolean.color,
|
|
412
|
-
string: result.types.string.color
|
|
549
|
+
string: result.types.string.color,
|
|
550
|
+
stringRemaining: result.colorFallback
|
|
413
551
|
};
|
|
414
552
|
return result;
|
|
415
553
|
}
|
|
@@ -512,20 +650,16 @@ function formatAdditional(obj, opts) {
|
|
|
512
650
|
for (const key in obj) {
|
|
513
651
|
empty = false;
|
|
514
652
|
if (isSerializedError(obj[key])) {
|
|
515
|
-
|
|
516
|
-
...obj[key],
|
|
517
|
-
[node_util.inspect.custom]: () => formatError(obj[key], 0, opts)
|
|
518
|
-
};
|
|
519
|
-
} else {
|
|
520
|
-
additional[key] = obj[key];
|
|
653
|
+
toolkit.def(obj[key], node_util.inspect.custom, () => formatError(obj[key], 0, opts));
|
|
521
654
|
}
|
|
655
|
+
additional[key] = obj[key];
|
|
522
656
|
}
|
|
523
657
|
}
|
|
524
658
|
if (empty) {
|
|
525
659
|
return "";
|
|
526
660
|
}
|
|
527
661
|
const colorizeObject = opts.types.object?.color || opts.colorFallback;
|
|
528
|
-
return colorizeObject(
|
|
662
|
+
return colorizeObject(opts.inspectFn(additional, opts.inspectOptions));
|
|
529
663
|
}
|
|
530
664
|
function pretty(logObj) {
|
|
531
665
|
const opts = this;
|
|
@@ -559,12 +693,22 @@ function build(opts = {}) {
|
|
|
559
693
|
messageKey: source.messageKey || "msg",
|
|
560
694
|
...opts
|
|
561
695
|
});
|
|
696
|
+
var extraLine = false;
|
|
697
|
+
var line;
|
|
562
698
|
const stream = new node_stream.Transform({
|
|
563
699
|
objectMode: true,
|
|
564
700
|
autoDestroy: true,
|
|
565
701
|
transform(chunk, enc, cb) {
|
|
566
|
-
|
|
567
|
-
|
|
702
|
+
line = pretty2(chunk);
|
|
703
|
+
if (line.endsWith("\n")) {
|
|
704
|
+
extraLine = true;
|
|
705
|
+
} else if (extraLine) {
|
|
706
|
+
line = "\n" + line + "\n";
|
|
707
|
+
extraLine = false;
|
|
708
|
+
} else {
|
|
709
|
+
line = line + "\n";
|
|
710
|
+
}
|
|
711
|
+
cb(null, line);
|
|
568
712
|
}
|
|
569
713
|
});
|
|
570
714
|
destination = buildSafeSonicBoom({
|
|
@@ -573,8 +717,8 @@ function build(opts = {}) {
|
|
|
573
717
|
mkdir: true,
|
|
574
718
|
sync: false
|
|
575
719
|
});
|
|
576
|
-
source.on("unknown", function(
|
|
577
|
-
destination.write(
|
|
720
|
+
source.on("unknown", function(line2) {
|
|
721
|
+
destination.write(line2 + "\n");
|
|
578
722
|
});
|
|
579
723
|
pump__default(source, stream, destination);
|
|
580
724
|
return stream;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/utils/buildSafeSonicBoom.ts","../src/utils/getColor.ts","../src/utils/inspect.ts","../src/utils/parseOptions.ts","../src/pretty.ts","../src/index.ts"],"sourcesContent":["import { noop } from '@andrew_l/toolkit';\nimport type { SonicBoom, SonicBoomOpts } from 'sonic-boom';\nimport _SonicBoom from 'sonic-boom';\n\nimport { isMainThread } from 'node:worker_threads';\n\n/**\n * Creates a safe SonicBoom instance\n */\nexport function buildSafeSonicBoom(opts: SonicBoomOpts): SonicBoom {\n const stream = new (_SonicBoom as any)(opts);\n stream.on('error', filterBrokenPipe);\n // if we are sync: false, we must flush on exit\n // NODE_V8_COVERAGE must breaks everything\n // https://github.com/nodejs/node/issues/49344\n if (!process.env.NODE_V8_COVERAGE && !opts.sync && isMainThread) {\n setupOnExit(stream);\n }\n return stream;\n\n function filterBrokenPipe(err: any) {\n if (err.code === 'EPIPE') {\n stream.write = noop as any;\n stream.end = noop;\n stream.flushSync = noop;\n stream.destroy = noop;\n return;\n }\n stream.removeListener('error', filterBrokenPipe);\n }\n}\n\nfunction setupOnExit(stream: SonicBoom) {\n /* istanbul ignore next */\n if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) {\n // This is leak free, it does not leave event handlers\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n import('on-exit-leak-free').then((onExit) => {\n onExit.register(stream, autoEnd);\n\n stream.on('close', function () {\n onExit.unregister(stream);\n });\n });\n }\n}\n\n/* istanbul ignore next */\nfunction autoEnd(stream: any, eventName: any) {\n // This check is needed only on some platforms\n\n if (stream.destroyed) {\n return;\n }\n\n if (eventName === 'beforeExit') {\n // We still have an event loop, let's use it\n stream.flush();\n stream.on('drain', function () {\n stream.end();\n });\n } else {\n // We do not have an event loop, so flush synchronously\n stream.flushSync();\n }\n}\n","/**\n * Based on https://github.com/jorgebucaran/colorette\n * Read LICENSE file for more information\n * https://github.com/jorgebucaran/colorette/blob/20fc196d07d0f87c61e0256eadd7831c79b24108/index.js\n */\nimport * as tty from 'node:tty';\n\n// TODO: Migrate to std-env\nconst {\n env = {},\n argv = [],\n platform = '',\n} = typeof process === 'undefined' ? {} : process;\nconst isDisabled = 'NO_COLOR' in env || argv.includes('--no-color');\nconst isForced = 'FORCE_COLOR' in env || argv.includes('--color');\nconst isWindows = platform === 'win32';\nconst isDumbTerminal = env.TERM === 'dumb';\nconst isCompatibleTerminal =\n tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;\nconst isCI =\n 'CI' in env &&\n ('GITHUB_ACTIONS' in env || 'GITLAB_CI' in env || 'CIRCLECI' in env);\n\n/**\n * Determines support for terminal colours based on the environment and capabilities of the terminal.\n * @type {boolean} isColorSupported - Indicates whether colour support is enabled in the terminal.\n */\nconst isColorSupported =\n !isDisabled &&\n (isForced || (isWindows && !isDumbTerminal) || isCompatibleTerminal || isCI);\n\nfunction replaceClose(\n index: number,\n string: string,\n close: string,\n replace: string,\n head = string.slice(0, Math.max(0, index)) + replace,\n tail = string.slice(Math.max(0, index + close.length)),\n next = tail.indexOf(close),\n): string {\n return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n}\n\nfunction clearBleed(\n index: number,\n string: string,\n open: string,\n close: string,\n replace: string,\n) {\n return index < 0\n ? open + string + close\n : open + replaceClose(index, string, close, replace) + close;\n}\n\nfunction filterEmpty(\n open: string,\n close: string,\n replace = open,\n at = open.length + 1,\n) {\n return (string: string) =>\n string || !(string === '' || string === undefined)\n ? clearBleed(\n ('' + string).indexOf(close, at),\n string,\n open,\n close,\n replace,\n )\n : '';\n}\n\nfunction init(open: number, close: number, replace?: string) {\n return filterEmpty(`\\u001B[${open}m`, `\\u001B[${close}m`, replace);\n}\n\nfunction init256Color(code: number, isBg = false) {\n const prefix = isBg ? '48;5;' : '38;5;';\n const closeCode = isBg ? 49 : 39;\n return filterEmpty(`\\u001B[${prefix}${code}m`, `\\u001B[${closeCode}m`);\n}\n\nconst colorDefs = {\n reset: init(0, 0),\n bold: init(1, 22, '\\u001B[22m\\u001B[1m'),\n dim: init(2, 22, '\\u001B[22m\\u001B[2m'),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49),\n\n // Extended 256-color palette - Popular colors\n orange: init256Color(208),\n purple: init256Color(129),\n pink: init256Color(207),\n lime: init256Color(154),\n teal: init256Color(37),\n indigo: init256Color(54),\n brown: init256Color(130),\n olive: init256Color(142),\n navy: init256Color(17),\n maroon: init256Color(52),\n silver: init256Color(248),\n gold: init256Color(220),\n bgOrange: init256Color(208, true),\n bgPurple: init256Color(129, true),\n bgPink: init256Color(207, true),\n bgLime: init256Color(154, true),\n bgTeal: init256Color(37, true),\n bgIndigo: init256Color(54, true),\n bgBrown: init256Color(130, true),\n bgOlive: init256Color(142, true),\n bgNavy: init256Color(17, true),\n bgMaroon: init256Color(52, true),\n bgSilver: init256Color(248, true),\n bgGold: init256Color(220, true),\n};\n\nexport const RAND_COLOR_LIST = Object.keys(colorDefs).filter(v => {\n if (v.startsWith('bg')) return false;\n if (\n [\n 'reset',\n 'bold',\n 'dim',\n 'italic',\n 'underline',\n 'inverse',\n 'hidden',\n 'strikethrough',\n 'black',\n 'white',\n 'gray',\n ].includes(v)\n )\n return false;\n\n return true;\n}) as Readonly<ColorName[]>;\n\nexport type ColorName = keyof typeof colorDefs;\nexport type ColorFunction = (text: string | number) => string;\n\n/**\n * Creates an object that maps colour names to their respective colour functions,\n * based on whether or not colour support is enabled.\n * @param {boolean} [useColor=isColorSupported] - Specifies whether to use colour functions or fallback to plain strings.\n * @returns {Record<ColorName, ColorFunction>} An object where keys are colour names and values are functions to apply those colours. See {@link ColorFunction}.\n */\nfunction createColors(useColor = isColorSupported) {\n return useColor\n ? colorDefs\n : Object.fromEntries(Object.keys(colorDefs).map(key => [key, String]));\n}\n\n/**\n * An object containing functions for colouring text. Each function corresponds to a terminal colour. See {@link ColorName} for available colours.\n */\nexport const colors = createColors() as Record<ColorName, ColorFunction>;\n\n/**\n * Gets a colour function by name, with an option for a fallback colour if the requested colour is not found.\n * @param {ColorName} color - The name of the colour function to get. See {@link ColorName}.\n * @param {ColorName} [fallback=\"reset\"] - The name of the fallback colour function if the requested colour is not found. See {@link ColorName}.\n * @returns {ColorFunction} The colour function that corresponds to the requested colour, or the fallback colour function. See {@link ColorFunction}.\n */\nexport function getColor(\n color: ColorName,\n fallback: ColorName = 'reset',\n): ColorFunction {\n return colors[color] || colors[fallback];\n}\n\n/**\n * Applies a specified colour to a given text string or number.\n * @param {ColorName} color - The colour to apply. See {@link ColorName}.\n * @param {string | number} text - The text to colour.\n * @returns {string} The coloured text.\n */\nexport function colorize(color: ColorName, text: string | number): string {\n return getColor(color)(text);\n}\n","/**\n * Source code: https://github.dev/inspect-js/object-inspect/blob/main/index.js\n * Simplified because we working here with json serialized object\n */\nimport { isFunction, isObject } from '@andrew_l/toolkit';\n\nimport { inspect as nodeInspect } from 'node:util';\n\nexport interface InspectOptions {\n /** Maximum depth of the inspection @default 5 */\n depth: number;\n /** Quote style for strings @default 'single' */\n quoteStyle: 'single' | 'double';\n /** Maximum string length before truncation @default Infinity */\n maxStringLength: number;\n /** Indentation spaces @default 2 */\n indent: number;\n /** Add numeric separators (1_234.567_8) @default false */\n numericSeparator: boolean;\n /** Custom stringify functions for different types */\n customStringify: {\n [x: string]: InspectCustomStringify;\n };\n}\n\ntype InspectCustomStringify = (value: any) => string;\n\nvar QUOTES = { double: '\"', single: \"'\" } as const;\nvar QUOTE_REGEX = { double: /([\"\\\\])/g, single: /(['\\\\])/g } as const;\nvar ESCAPE_CHARS = { 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r' } as const;\nvar SEP_REGEX = /\\d(?=(?:\\d{3})+(?!\\d))/g;\n\nfunction addNumericSeparator(num: number | bigint, str: string): string {\n // Skip formatting for small numbers, infinity, NaN, or scientific notation\n if (\n num === Infinity ||\n num === -Infinity ||\n Number.isNaN(num) ||\n (typeof num === 'number' && Math.abs(num) < 1000) ||\n str.includes('e')\n ) {\n return str;\n }\n\n if (typeof num === 'number' && !Number.isInteger(num)) {\n var intPart = Math.trunc(num);\n var intStr = String(intPart);\n var decPart = str.slice(intStr.length + 1);\n\n return (\n intStr.replace(SEP_REGEX, '$&_') +\n '.' +\n decPart.replace(/(\\d{3})/g, '$&_').replace(/_$/, '')\n );\n }\n\n return str.replace(SEP_REGEX, '$&_');\n}\n\nfunction inspectString(str: string, opts: InspectOptions): string {\n var processedStr = str;\n\n // Truncate if too long\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = `... ${remaining} more character${remaining > 1 ? 's' : ''}`;\n processedStr = str.slice(0, opts.maxStringLength);\n return inspectString(processedStr, opts) + trailer;\n }\n\n // Escape quotes and control characters\n var quoteRegex = QUOTE_REGEX[opts.quoteStyle];\n var escaped = processedStr\n .replace(quoteRegex, '\\\\$1')\n .replace(/[\\x00-\\x1f]/g, char => {\n var code = char.charCodeAt(0);\n var escapeChar = ESCAPE_CHARS[code as keyof typeof ESCAPE_CHARS];\n return escapeChar\n ? `\\\\${escapeChar}`\n : `\\\\x${code.toString(16).padStart(2, '0').toUpperCase()}`;\n });\n\n var quote = QUOTES[opts.quoteStyle];\n var result = `${quote}${escaped}${quote}`;\n\n return opts.customStringify.string?.(result) ?? result;\n}\n\nfunction getIndentStrings(opts: InspectOptions, depth: number) {\n if (depth === 0) return { base: ' '.repeat(opts.indent), prev: '' };\n\n return {\n base: ' '.repeat(opts.indent),\n prev: ' '.repeat(opts.indent * depth),\n };\n}\n\nfunction isSingleLine(values: string[]): boolean {\n return values.every(value => !value.includes('\\n'));\n}\n\nfunction formatMultiline(\n values: string[],\n indent: { base: string; prev: string },\n): string {\n if (values.length === 0) return '';\n\n var lineJoiner = `\\n${indent.prev}${indent.base}`;\n return `${lineJoiner}${values.join(`,${lineJoiner}`)}\\n${indent.prev}`;\n}\n\nfunction getObjectEntries(\n obj: any,\n inspectFn: (value: any, parent: any) => string,\n): string[] {\n var isArray = Array.isArray(obj);\n var entries: string[] = [];\n\n // Handle array indices\n if (isArray) {\n for (var i = 0; i < obj.length; i++) {\n entries[i] = Object.hasOwn(obj, i) ? inspectFn(obj[i], obj) : '';\n }\n }\n\n // Handle object properties\n for (var key in obj) {\n if (!Object.hasOwn(obj, key)) continue;\n\n // Skip array indices we already handled\n if (isArray && /^\\d+$/.test(key) && Number(key) < obj.length) continue;\n\n var needsQuotes = /[^\\w$]/.test(key);\n var keyStr = needsQuotes ? inspectFn(key, obj) : key;\n entries.push(`${keyStr}: ${inspectFn(obj[key], obj)}`);\n }\n\n return entries;\n}\n\nfunction inspectValue(\n obj: any,\n opts: InspectOptions,\n depth: number,\n seen: WeakSet<any>,\n): string {\n // Handle primitives\n if (obj === undefined)\n return opts.customStringify.undefined?.(obj) ?? 'undefined';\n if (obj === null) return opts.customStringify.null?.(obj) ?? 'null';\n if (typeof obj === 'boolean')\n return opts.customStringify.boolean?.(obj) ?? String(obj);\n if (typeof obj === 'string') return inspectString(obj, opts);\n\n // Handle numbers\n if (typeof obj === 'number') {\n if (obj === 0) return Object.is(obj, -0) ? '-0' : '0';\n\n var str = String(obj);\n var result = opts.numericSeparator ? addNumericSeparator(obj, str) : str;\n return opts.customStringify.number?.(result) ?? result;\n }\n\n if (typeof obj === 'bigint') {\n var str = `${obj}n`;\n var result = opts.numericSeparator ? addNumericSeparator(obj, str) : str;\n return opts.customStringify.number?.(result) ?? result;\n }\n\n // Check depth limit\n if (depth >= opts.depth && opts.depth > 0 && typeof obj === 'object') {\n return Array.isArray(obj) ? '[Array]' : '[Object]';\n }\n\n // Check for circular references\n if (seen.has(obj)) return '[Circular]';\n seen.add(obj);\n\n var indent = getIndentStrings(opts, depth);\n\n var inspectChild = (value: any) => inspectValue(value, opts, depth + 1, seen);\n\n // Handle arrays\n if (Array.isArray(obj)) {\n if (obj.length === 0) return '[]';\n\n var entries = getObjectEntries(obj, inspectChild);\n\n if (indent.base && !isSingleLine(entries)) {\n return `[${formatMultiline(entries, indent)}]`;\n }\n return `[ ${entries.join(', ')} ]`;\n }\n\n // Handle objects\n if (isObject(obj)) {\n // Check for custom inspect method\n if (isFunction((obj as any)[nodeInspect.custom])) {\n var lineJoiner = `\\n${indent.prev}`;\n return nodeInspect(obj, { depth: opts.depth - depth })\n .split('\\n')\n .join(lineJoiner);\n }\n\n var entries = getObjectEntries(obj, inspectChild);\n if (entries.length === 0) return '{}';\n\n if (indent.base) {\n return `{${formatMultiline(entries, indent)}}`;\n }\n return `{ ${entries.join(', ')} }`;\n }\n\n seen.delete(obj);\n return String(obj);\n}\n\nexport function inspect(obj: any, options: InspectOptions): string {\n return inspectValue(obj, options, 0, new WeakSet());\n}\n","import {\n type Arrayable,\n arrayable,\n capitalize,\n crc32,\n deepDefaults,\n withCache,\n} from '@andrew_l/toolkit';\nimport { StringWidth } from '@cto.af/string-width';\nimport type { PinoPretty } from '..';\nimport type { ColorizeFn, PrettyOptions, PrettyOptionsParsed } from '../types';\nimport { type ColorName, RAND_COLOR_LIST, getColor } from './getColor';\n\nexport function parseOptions(value: PinoPretty.Options): PrettyOptionsParsed {\n const defOptions: PrettyOptions = {\n columns: 80,\n indent: 2,\n depth: 5,\n messageKey: 'msg',\n quoteStyle: 'single',\n badgeMinLevel: 40,\n maxStringLength: 400,\n numericSeparator: false,\n ignore: 'hostname,pid',\n colorize: true,\n types: {\n number: { color: 'green' },\n boolean: { color: 'redBright' },\n string: { color: 'yellow' },\n object: { color: 'gray' },\n error: { color: 'gray' },\n errorStack: { color: 'cyan' },\n time: { color: 'gray' },\n name: { color: 'rand' },\n },\n levels: {\n 10: { badge: 'TRACE', color: 'gray', icon: '→' },\n 20: { badge: 'DEBUG', color: 'blue', icon: '⚙' },\n 30: { badge: 'INFO', color: 'cyan', icon: 'ℹ' },\n 40: { badge: 'WARN', color: 'yellow', icon: '⚠' },\n 50: { badge: 'ERROR', color: 'red', icon: '✖' },\n 60: { badge: 'FATAL', color: 'red', icon: '✖' },\n },\n };\n\n const opts: PrettyOptions = deepDefaults({}, value, defOptions);\n\n const sw = new StringWidth({\n extraWidths: new Map(\n Object.values(opts.levels).map(v => [v.icon.charCodeAt(0), 1]),\n ),\n });\n\n const result: PrettyOptionsParsed = {\n ...opts,\n sw,\n colorFallback: createColorizeFn(opts.colorize, 'gray'),\n inspect: {\n depth: opts.depth,\n quoteStyle: opts.quoteStyle,\n indent: opts.indent,\n maxStringLength: opts.maxStringLength,\n numericSeparator: opts.numericSeparator,\n customStringify: {},\n },\n levels: Object.fromEntries(\n Object.entries(opts.levels).map(([key, value]) => [\n key,\n {\n ...value,\n color: createColorizeFn(opts.colorize, value.color),\n colorBadge: createColorizeBadgeFn(opts.colorize, value.color),\n },\n ]),\n ),\n types: Object.fromEntries(\n Object.entries(opts.types).map(([key, value]) => [\n key,\n {\n ...value,\n color: createColorizeFn(opts.colorize, value.color),\n },\n ]),\n ),\n ignoreAdditional: new Set([\n 'level',\n 'time',\n 'pid',\n 'hostname',\n opts.messageKey,\n opts.nestedKey ?? '',\n 'name',\n ]),\n ignore: new Set(\n opts.ignore\n .split(',')\n .map(v => v.trim())\n .filter(Boolean),\n ),\n };\n\n result.inspect.customStringify = {\n number: result.types.number.color,\n boolean: result.types.boolean.color,\n string: result.types.string.color,\n };\n\n return result;\n}\n\nconst randColor = withCache((str: string): ColorName => {\n var hash = crc32(str) >>> 0;\n var index = hash % RAND_COLOR_LIST.length;\n return RAND_COLOR_LIST[index];\n});\n\nfunction createColorizeFn(\n colorize: boolean,\n value: 'rand' | Arrayable<ColorName>,\n): ColorizeFn {\n if (!colorize) {\n return String;\n }\n\n if (value === 'rand') {\n return v => getColor(randColor(v))(v);\n }\n\n var colors = arrayable(value) as ColorName[];\n\n if (!colors.length) return String;\n\n return v => {\n var result = v;\n\n for (var color of colors) {\n result = getColor(color)(result);\n }\n\n return result;\n };\n}\n\nfunction createColorizeBadgeFn(\n colorize: boolean,\n value: 'rand' | Arrayable<ColorName>,\n): ColorizeFn {\n if (!colorize) {\n return String;\n }\n\n if (value === 'rand') {\n return v => getColor(randColor(v))(v);\n }\n\n var colors = arrayable(value).map(v => {\n if (v.startsWith('bg')) {\n v = v.slice(2);\n }\n\n return `bg${capitalize(v)}`;\n }) as ColorName[];\n\n if (!colors.length) return String;\n\n colors.push('black');\n\n return v => {\n var result = v;\n\n for (var color of colors) {\n result = getColor(color)(result);\n }\n\n return result;\n };\n}\n","/**\n * Based on https://github.com/unjs/consola/blob/main/src/reporters/fancy.ts\n */\n\nimport { has, isString, omit } from '@andrew_l/toolkit';\nimport type { SerializedError } from 'pino';\n\nimport path from 'node:path';\nimport { formatWithOptions, inspect as nodeInspect } from 'node:util';\n\nimport type { LogObject, PrettyOptionsParsed } from './types.js';\nimport { getColor, inspect } from './utils/index.js';\n\nfunction isSerializedError(value: any): value is SerializedError {\n return has(value, ['type', 'message', 'stack']);\n}\n\nfunction parseStack(stack: string, message: string) {\n const cwd = process.cwd() + path.sep;\n\n const lines = stack\n .split('\\n')\n .splice(message.split('\\n').length)\n .map(l => l.trim().replace('file://', '').replace(cwd, ''));\n\n return lines;\n}\n\nfunction characterFormat(str: string) {\n return (\n str\n // highlight backticks\n .replace(/`([^`]+)`/gm, (_, m) => getColor('cyan')(m))\n // underline underscores\n .replace(/\\s+_([^_]+)_\\s+/gm, (_, m) => ` ${getColor('underline')(m)} `)\n );\n}\n\nfunction formatStack(\n stack: string,\n message: string,\n errorLevel: number,\n opts: PrettyOptionsParsed,\n) {\n const indent = ' '.repeat(opts.indent * errorLevel);\n const colorizeStack = opts.types.errorStack?.color || opts.colorFallback;\n\n return (\n `\\n${indent}` +\n parseStack(stack, message)\n .map(\n line =>\n ' ' + line.replace(/\\((.+)\\)/, (_, m) => `(${colorizeStack(m)})`),\n )\n .join(`\\n${indent}`)\n );\n}\n\nfunction formatDate(date: Date, opts: PrettyOptionsParsed) {\n return opts.ignore.has('time') ? '' : date.toLocaleTimeString();\n}\n\nfunction formatType(\n logObj: LogObject,\n badge: boolean,\n opts: PrettyOptionsParsed,\n) {\n const levelBadge = opts.levels[logObj.level].badge || `LEVEL:${logObj.level}`;\n\n if (badge) {\n const colorize =\n opts.levels[logObj.level]?.colorBadge || opts.colorFallback;\n\n return colorize(` ${levelBadge} `);\n }\n\n const type = opts.levels[logObj.level].icon || levelBadge;\n const typeColor = opts.levels[logObj.level].color || opts.colorFallback;\n\n return type ? typeColor(type) : '';\n}\n\nfunction filterAndJoin(arr: any[]): string {\n return arr.filter(Boolean).join(' ');\n}\n\nfunction formatError(\n err: any,\n errorLevel: number,\n opts: PrettyOptionsParsed,\n): string {\n const message =\n (err.type ? `${err.type}: ` : '') +\n (err.message ??\n formatWithOptions({ depth: opts.depth, colors: opts.colorize }, err));\n\n const colorizeError = opts.types.error?.color || opts.colorFallback;\n const stack = err.stack\n ? formatStack(err.stack, message, errorLevel, opts)\n : '';\n\n const causedPrefix =\n errorLevel > 0 ? `${' '.repeat(opts.indent * errorLevel)}[cause]: ` : '';\n\n const causedError = err.cause\n ? '\\n\\n' + formatError(err.cause, errorLevel + 1, opts)\n : '';\n\n return colorizeError(causedPrefix + message + stack + causedError);\n}\n\nfunction formatAdditional(\n obj: Record<string, any>,\n opts: PrettyOptionsParsed,\n): string {\n const additional: any = {};\n let empty = true;\n\n if (isSerializedError(obj)) {\n return formatError(obj, 0, opts);\n } else {\n for (const key in obj) {\n empty = false;\n\n if (isSerializedError(obj[key])) {\n additional[key] = {\n ...obj[key],\n [nodeInspect.custom]: () => formatError(obj[key], 0, opts),\n };\n } else {\n additional[key] = obj[key];\n }\n }\n }\n\n if (empty) {\n return '';\n }\n\n const colorizeObject = opts.types.object?.color || opts.colorFallback;\n\n return colorizeObject(inspect(additional, opts.inspect).slice(2, -2));\n}\n\nexport function pretty(this: PrettyOptionsParsed, logObj: LogObject) {\n const opts = this;\n const message = isString(logObj[opts.messageKey])\n ? logObj[opts.messageKey]\n : '';\n\n const additional = opts.nestedKey\n ? formatAdditional(logObj[opts.nestedKey], opts)\n : formatAdditional(omit(logObj, opts.ignoreAdditional), opts);\n\n const date = formatDate(new Date(logObj.time), opts);\n const coloredDate = date ? opts.types.time.color(date) : '';\n\n const isBadge = logObj.level >= opts.badgeMinLevel;\n const type = formatType(logObj, isBadge, opts);\n\n const name = logObj.name ? opts.types.name.color(logObj.name as string) : '';\n\n let line;\n const left = filterAndJoin([type, characterFormat(message)]);\n const right = filterAndJoin([name, coloredDate]);\n const space = opts.columns - opts.sw.width(left) - opts.sw.width(right) - 2;\n\n line =\n space > 0 && opts.columns >= 80\n ? left + ' '.repeat(space) + right\n : (right ? `[${right}] ` : '') + left;\n\n if (additional) {\n line += '\\n' + additional;\n }\n\n return isBadge ? '\\n' + line + '\\n' : line;\n}\n","import type { DeepPartial } from '@andrew_l/toolkit';\nimport { Transform } from 'node:stream';\nimport abstractTransport from 'pino-abstract-transport';\nimport pump from 'pump';\nimport { pretty } from './pretty.js';\nimport { buildSafeSonicBoom } from './utils/index.js';\nimport { parseOptions } from './utils/parseOptions.js';\n\nexport namespace PinoPretty {\n export type Options = DeepPartial<import('./types.js').PrettyOptions>;\n}\n\n/**\n * Processes the supplied options and returns a function that accepts log data\n * and produces a prettified log string.\n */\nfunction prettyFactory(options: PinoPretty.Options) {\n const opts = parseOptions(options);\n return pretty.bind(opts);\n}\n\n/**\n * Constructs a of stream to which the produced\n * prettified log data will be written.\n */\nexport function build(opts: PinoPretty.Options = {}) {\n var destination: any;\n\n return abstractTransport(\n function (source) {\n var pretty = prettyFactory({\n messageKey: (source as any).messageKey || 'msg',\n ...opts,\n });\n\n const stream = new Transform({\n objectMode: true,\n autoDestroy: true,\n transform(chunk, enc, cb) {\n const line = pretty(chunk);\n cb(null, line + '\\n');\n },\n });\n\n destination = buildSafeSonicBoom({\n dest: 1,\n append: true,\n mkdir: true,\n sync: false,\n });\n\n source.on('unknown', function (line) {\n destination.write(line + '\\n');\n });\n\n pump(source, stream, destination);\n return stream;\n },\n {\n expectPinoConfig: true,\n enablePipelining: false as any,\n close(err, cb) {\n destination.on('close', () => {\n cb(err);\n });\n },\n },\n );\n}\n\nexport default build;\n"],"names":["_SonicBoom","isMainThread","noop","tty","isObject","isFunction","nodeInspect","deepDefaults","StringWidth","value","withCache","crc32","arrayable","capitalize","has","path","formatWithOptions","isString","omit","abstractTransport","pretty","Transform","pump"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/utils/buildSafeSonicBoom.ts","../src/utils/getColor.ts","../src/utils/inspectRegular.ts","../src/utils/inspectCompact.ts","../src/utils/parseOptions.ts","../src/pretty.ts","../src/index.ts"],"sourcesContent":["import { noop } from '@andrew_l/toolkit';\nimport type { SonicBoom, SonicBoomOpts } from 'sonic-boom';\nimport _SonicBoom from 'sonic-boom';\n\nimport { isMainThread } from 'node:worker_threads';\n\n/**\n * Creates a safe SonicBoom instance\n */\nexport function buildSafeSonicBoom(opts: SonicBoomOpts): SonicBoom {\n const stream = new (_SonicBoom as any)(opts);\n stream.on('error', filterBrokenPipe);\n // if we are sync: false, we must flush on exit\n // NODE_V8_COVERAGE must breaks everything\n // https://github.com/nodejs/node/issues/49344\n if (!process.env.NODE_V8_COVERAGE && !opts.sync && isMainThread) {\n setupOnExit(stream);\n }\n return stream;\n\n function filterBrokenPipe(err: any) {\n if (err.code === 'EPIPE') {\n stream.write = noop as any;\n stream.end = noop;\n stream.flushSync = noop;\n stream.destroy = noop;\n return;\n }\n stream.removeListener('error', filterBrokenPipe);\n }\n}\n\nfunction setupOnExit(stream: SonicBoom) {\n /* istanbul ignore next */\n if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) {\n // This is leak free, it does not leave event handlers\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n import('on-exit-leak-free').then((onExit) => {\n onExit.register(stream, autoEnd);\n\n stream.on('close', function () {\n onExit.unregister(stream);\n });\n });\n }\n}\n\n/* istanbul ignore next */\nfunction autoEnd(stream: any, eventName: any) {\n // This check is needed only on some platforms\n\n if (stream.destroyed) {\n return;\n }\n\n if (eventName === 'beforeExit') {\n // We still have an event loop, let's use it\n stream.flush();\n stream.on('drain', function () {\n stream.end();\n });\n } else {\n // We do not have an event loop, so flush synchronously\n stream.flushSync();\n }\n}\n","/**\n * Based on https://github.com/jorgebucaran/colorette\n * Read LICENSE file for more information\n * https://github.com/jorgebucaran/colorette/blob/20fc196d07d0f87c61e0256eadd7831c79b24108/index.js\n */\nimport * as tty from 'node:tty';\n\n// TODO: Migrate to std-env\nconst {\n env = {},\n argv = [],\n platform = '',\n} = typeof process === 'undefined' ? {} : process;\nconst isDisabled = 'NO_COLOR' in env || argv.includes('--no-color');\nconst isForced = 'FORCE_COLOR' in env || argv.includes('--color');\nconst isWindows = platform === 'win32';\nconst isDumbTerminal = env.TERM === 'dumb';\nconst isCompatibleTerminal =\n tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;\nconst isCI =\n 'CI' in env &&\n ('GITHUB_ACTIONS' in env || 'GITLAB_CI' in env || 'CIRCLECI' in env);\n\n/**\n * Determines support for terminal colours based on the environment and capabilities of the terminal.\n * @type {boolean} isColorSupported - Indicates whether colour support is enabled in the terminal.\n */\nconst isColorSupported =\n !isDisabled &&\n (isForced || (isWindows && !isDumbTerminal) || isCompatibleTerminal || isCI);\n\nfunction replaceClose(\n index: number,\n string: string,\n close: string,\n replace: string,\n head = string.slice(0, Math.max(0, index)) + replace,\n tail = string.slice(Math.max(0, index + close.length)),\n next = tail.indexOf(close),\n): string {\n return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n}\n\nfunction clearBleed(\n index: number,\n string: string,\n open: string,\n close: string,\n replace: string,\n) {\n return index < 0\n ? open + string + close\n : open + replaceClose(index, string, close, replace) + close;\n}\n\nfunction filterEmpty(\n open: string,\n close: string,\n replace = open,\n at = open.length + 1,\n) {\n return (string: string) =>\n string || !(string === '' || string === undefined)\n ? clearBleed(\n ('' + string).indexOf(close, at),\n string,\n open,\n close,\n replace,\n )\n : '';\n}\n\nfunction init(open: number, close: number, replace?: string) {\n return filterEmpty(`\\u001B[${open}m`, `\\u001B[${close}m`, replace);\n}\n\nfunction init256Color(code: number, isBg = false) {\n const prefix = isBg ? '48;5;' : '38;5;';\n const closeCode = isBg ? 49 : 39;\n return filterEmpty(`\\u001B[${prefix}${code}m`, `\\u001B[${closeCode}m`);\n}\n\nconst colorDefs = {\n reset: init(0, 0),\n bold: init(1, 22, '\\u001B[22m\\u001B[1m'),\n dim: init(2, 22, '\\u001B[22m\\u001B[2m'),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49),\n\n // Extended 256-color palette - Popular colors\n orange: init256Color(208),\n purple: init256Color(129),\n pink: init256Color(207),\n lime: init256Color(154),\n teal: init256Color(37),\n indigo: init256Color(54),\n brown: init256Color(130),\n olive: init256Color(142),\n navy: init256Color(17),\n maroon: init256Color(52),\n silver: init256Color(248),\n gold: init256Color(220),\n bgOrange: init256Color(208, true),\n bgPurple: init256Color(129, true),\n bgPink: init256Color(207, true),\n bgLime: init256Color(154, true),\n bgTeal: init256Color(37, true),\n bgIndigo: init256Color(54, true),\n bgBrown: init256Color(130, true),\n bgOlive: init256Color(142, true),\n bgNavy: init256Color(17, true),\n bgMaroon: init256Color(52, true),\n bgSilver: init256Color(248, true),\n bgGold: init256Color(220, true),\n};\n\nexport const RAND_COLOR_LIST = Object.keys(colorDefs).filter(v => {\n if (v.startsWith('bg')) return false;\n if (\n [\n 'reset',\n 'bold',\n 'dim',\n 'italic',\n 'underline',\n 'inverse',\n 'hidden',\n 'strikethrough',\n 'black',\n 'white',\n 'gray',\n ].includes(v)\n )\n return false;\n\n return true;\n}) as Readonly<ColorName[]>;\n\nexport type ColorName = keyof typeof colorDefs;\nexport type ColorFunction = (text: string | number) => string;\n\n/**\n * Creates an object that maps colour names to their respective colour functions,\n * based on whether or not colour support is enabled.\n * @param {boolean} [useColor=isColorSupported] - Specifies whether to use colour functions or fallback to plain strings.\n * @returns {Record<ColorName, ColorFunction>} An object where keys are colour names and values are functions to apply those colours. See {@link ColorFunction}.\n */\nfunction createColors(useColor = isColorSupported) {\n return useColor\n ? colorDefs\n : Object.fromEntries(Object.keys(colorDefs).map(key => [key, String]));\n}\n\n/**\n * An object containing functions for colouring text. Each function corresponds to a terminal colour. See {@link ColorName} for available colours.\n */\nexport const colors = createColors() as Record<ColorName, ColorFunction>;\n\n/**\n * Gets a colour function by name, with an option for a fallback colour if the requested colour is not found.\n * @param {ColorName} color - The name of the colour function to get. See {@link ColorName}.\n * @param {ColorName} [fallback=\"reset\"] - The name of the fallback colour function if the requested colour is not found. See {@link ColorName}.\n * @returns {ColorFunction} The colour function that corresponds to the requested colour, or the fallback colour function. See {@link ColorFunction}.\n */\nexport function getColor(\n color: ColorName,\n fallback: ColorName = 'reset',\n): ColorFunction {\n return colors[color] || colors[fallback];\n}\n\n/**\n * Applies a specified colour to a given text string or number.\n * @param {ColorName} color - The colour to apply. See {@link ColorName}.\n * @param {string | number} text - The text to colour.\n * @returns {string} The coloured text.\n */\nexport function colorize(color: ColorName, text: string | number): string {\n return getColor(color)(text);\n}\n","/**\n * Source code: https://github.dev/inspect-js/object-inspect/blob/main/index.js\n * Simplified because we working here with json serialized object\n */\nimport { isFunction, isObject } from '@andrew_l/toolkit';\n\nimport { inspect as nodeInspect } from 'node:util';\nimport type { InspectOptions } from '../types';\n\nexport var QUOTES = { double: '\"', single: \"'\" } as const;\nvar QUOTE_REGEX = { double: /([\"\\\\])/g, single: /(['\\\\])/g } as const;\nvar ESCAPE_CHARS = { 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r' } as const;\nvar SEP_REGEX = /\\d(?=(?:\\d{3})+(?!\\d))/g;\n\nfunction addNumericSeparator(num: number | bigint, str: string): string {\n // Skip formatting for small numbers, infinity, NaN, or scientific notation\n if (\n num === Infinity ||\n num === -Infinity ||\n Number.isNaN(num) ||\n (typeof num === 'number' && Math.abs(num) < 1000) ||\n str.includes('e')\n ) {\n return str;\n }\n\n if (typeof num === 'number' && !Number.isInteger(num)) {\n var intPart = Math.trunc(num);\n var intStr = String(intPart);\n var decPart = str.slice(intStr.length + 1);\n\n return (\n intStr.replace(SEP_REGEX, '$&_') +\n '.' +\n decPart.replace(/(\\d{3})/g, '$&_').replace(/_$/, '')\n );\n }\n\n return str.replace(SEP_REGEX, '$&_');\n}\n\nexport function escapeString(str: string, opts: InspectOptions): string {\n var quoteRegex = QUOTE_REGEX[opts.quoteStyle];\n\n return str.replace(quoteRegex, '\\\\$1').replace(/[\\x00-\\x1f]/g, char => {\n var code = char.charCodeAt(0);\n var escapeChar = ESCAPE_CHARS[code as keyof typeof ESCAPE_CHARS];\n return escapeChar\n ? `\\\\${escapeChar}`\n : `\\\\x${code.toString(16).padStart(2, '0').toUpperCase()}`;\n });\n}\n\nfunction inspectString(str: string, opts: InspectOptions): string {\n // Truncate if too long\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = `... ${remaining} more character${remaining > 1 ? 's' : ''}`;\n str = str.slice(0, opts.maxStringLength);\n return inspectString(str, opts) + trailer;\n }\n\n // Escape quotes and control characters\n var escaped = escapeString(str, opts);\n\n var quote = QUOTES[opts.quoteStyle];\n var result = `${quote}${escaped}${quote}`;\n\n return opts.customStringify.string?.(result) ?? result;\n}\n\nexport function inspectNumber(\n num: number | bigint,\n opts: InspectOptions,\n): string {\n if (typeof num === 'bigint') {\n var str = `${num}n`;\n var result = opts.numericSeparator ? addNumericSeparator(num, str) : str;\n return opts.customStringify.number?.(result) ?? result;\n }\n\n var str = Object.is(num, -0) ? '-0' : String(num);\n var result = opts.numericSeparator ? addNumericSeparator(num, str) : str;\n return opts.customStringify.number?.(result) ?? result;\n}\n\nfunction getIndentStrings(opts: InspectOptions, depth: number) {\n if (depth === 0) return { base: ' '.repeat(opts.indent), prev: '' };\n\n return {\n base: ' '.repeat(opts.indent),\n prev: ' '.repeat(opts.indent * depth),\n };\n}\n\nfunction isSingleLine(values: string[]): boolean {\n return values.every(value => !value.includes('\\n'));\n}\n\nfunction formatMultiline(\n values: string[],\n indent: { base: string; prev: string },\n): string {\n if (values.length === 0) return '';\n\n var lineJoiner = `\\n${indent.prev}${indent.base}`;\n return `${lineJoiner}${values.join(`,${lineJoiner}`)}\\n${indent.prev}`;\n}\n\nfunction getObjectEntries(\n obj: any,\n inspectFn: (value: any, parent: any) => string,\n): string[] {\n var isArray = Array.isArray(obj);\n var entries: string[] = [];\n\n // Handle array indices\n if (isArray) {\n for (var i = 0; i < obj.length; i++) {\n entries[i] = Object.hasOwn(obj, i) ? inspectFn(obj[i], obj) : '';\n }\n }\n\n // Handle object properties\n for (var key in obj) {\n if (!Object.hasOwn(obj, key)) continue;\n\n // Skip array indices we already handled\n if (isArray && /^\\d+$/.test(key) && Number(key) < obj.length) continue;\n\n var needsQuotes = /[^\\w$]/.test(key);\n var keyStr = needsQuotes ? inspectFn(key, obj) : key;\n entries.push(`${keyStr}: ${inspectFn(obj[key], obj)}`);\n }\n\n return entries;\n}\n\nfunction inspectValue(\n obj: any,\n opts: InspectOptions,\n depth: number,\n seen: WeakSet<any>,\n): string {\n // Handle primitives\n if (obj === undefined)\n return opts.customStringify.undefined?.(obj) ?? 'undefined';\n if (obj === null) return opts.customStringify.null?.(obj) ?? 'null';\n if (typeof obj === 'boolean')\n return opts.customStringify.boolean?.(obj) ?? String(obj);\n if (typeof obj === 'string') return inspectString(obj, opts);\n\n // Handle numbers\n if (typeof obj === 'number') {\n return inspectNumber(obj, opts);\n } else if (typeof obj === 'bigint') {\n return inspectNumber(obj, opts);\n }\n\n // Check depth limit\n if (depth >= opts.depth && opts.depth > 0 && typeof obj === 'object') {\n return Array.isArray(obj) ? '[Array]' : '[Object]';\n }\n\n // Check for circular references\n if (seen.has(obj)) return '[Circular]';\n seen.add(obj);\n\n var indent = getIndentStrings(opts, depth);\n\n var inspectChild = (value: any) => inspectValue(value, opts, depth + 1, seen);\n\n // Handle arrays\n if (Array.isArray(obj)) {\n if (obj.length === 0) return '[]';\n\n var entries = getObjectEntries(obj, inspectChild);\n\n if (indent.base && !isSingleLine(entries)) {\n return `[${formatMultiline(entries, indent)}]`;\n }\n return `[ ${entries.join(', ')} ]`;\n }\n\n // Handle objects\n if (isObject(obj)) {\n // Check for custom inspect method\n if (isFunction((obj as any)[nodeInspect.custom])) {\n var lineJoiner = `\\n${indent.prev}`;\n return nodeInspect(obj, { depth: opts.depth - depth })\n .split('\\n')\n .join(lineJoiner);\n }\n\n var entries = getObjectEntries(obj, inspectChild);\n if (entries.length === 0) return '{}';\n\n if (indent.base) {\n return `{${formatMultiline(entries, indent)}}`;\n }\n return `{ ${entries.join(', ')} }`;\n }\n\n seen.delete(obj);\n return String(obj);\n}\n\nexport function inspectRegular(obj: any, options: InspectOptions): string {\n return inspectValue(obj, options, 0, new WeakSet());\n}\n","/**\n * Simplified yaml-like inspect implementation\n */\nimport { isFunction, isPrimitive, typeOf } from '@andrew_l/toolkit';\nimport { inspect as nodeInspect } from 'node:util';\nimport type { InspectOptions } from '../types';\nimport { QUOTES, escapeString, inspectNumber } from './inspectRegular.js';\n\ntype InspectTypeFunction = (\n obj: any,\n opts: InspectOptions,\n depth: number,\n spaces: string,\n seen: WeakSet<any>,\n) => string;\n\nvar INSPECT_MAP: Record<string, InspectTypeFunction> = {\n boolean: (obj, opts) => opts.customStringify.boolean?.(obj) ?? String(obj),\n string: inspectString,\n number: inspectNumber,\n bigint: inspectNumber,\n undefined: (obj, opts) =>\n opts.customStringify.undefined?.(obj) ?? 'undefined',\n null: () => 'null',\n array: formatArray,\n object: formatObject,\n};\n\nexport function inspectCompact(obj: any, options: InspectOptions): string {\n return inspectValue(obj, options, 0, new WeakSet());\n}\n\nfunction inspectValue(\n obj: any,\n opts: InspectOptions,\n depth: number = 0,\n seen: WeakSet<any>,\n): string {\n var spaces = depth > 0 ? ' '.repeat(opts.indent * depth) : '';\n var type = typeOf(obj);\n var inspectFn: InspectTypeFunction = INSPECT_MAP[type] || String;\n\n // Check for custom inspect method\n if (isFunction((obj as any)[nodeInspect.custom])) {\n var lineJoiner = `\\n${spaces}`;\n return (\n spaces +\n nodeInspect(obj, { depth: opts.depth - depth })\n .split('\\n')\n .join(lineJoiner)\n );\n }\n\n return inspectFn(obj, opts, depth, spaces, seen);\n}\n\nfunction inspectString(str: string, opts: InspectOptions): string {\n // Truncate if too long\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n str = str.slice(0, opts.maxStringLength);\n return formatString(str, remaining, opts);\n }\n\n return formatString(str, 0, opts);\n}\n\nfunction formatString(\n str: string,\n remaining: number,\n opts: InspectOptions,\n): string {\n var escaped = escapeString(str, opts);\n var quote = QUOTES[opts.quoteStyle];\n var result: string;\n\n var trailer =\n remaining > 0\n ? opts.customStringify.stringRemaining(`... ${remaining} more characters`)\n : '';\n\n if (escaped.length > opts.columns && escaped.includes('\\\\n')) {\n escaped = escaped.replaceAll('\\\\n', '\\n');\n result =\n '\\n```\\n' + (trailer ? `${escaped}\\n${trailer}` : escaped) + '\\n```';\n } else {\n result = `${quote}${escaped}${trailer ?? ''}${quote}`;\n }\n\n return opts.customStringify.string?.(result) ?? result;\n}\n\n// Optimized array formatting\nfunction formatArray(\n arr: any[],\n opts: InspectOptions,\n depth: number,\n spaces: string,\n seen: WeakSet<any>,\n): string {\n if (opts.depth > 0 && depth >= opts.depth) {\n return '[Array]';\n }\n\n if (seen.has(arr)) {\n return '[Circular]';\n }\n\n seen.add(arr);\n\n // Check if all elements are simple (avoid forEach overhead)\n var len = arr.length;\n\n if (isCompactFormat(arr, depth, spaces.length, opts)) {\n // Create fresh array for compact format\n var compact: string[] = [];\n\n for (var i = 0; i < len; i++) {\n compact.push(inspectValue(arr[i], opts, 0, seen));\n }\n\n return `[${compact.join(', ')}]`;\n }\n\n // Multi-line format\n var multiline: string[] = [];\n\n for (var i = 0; i < len; i++) {\n var strValue = inspectValue(arr[i], opts, depth + 1, seen);\n multiline.push(\n `${spaces}- ${strValue.trimStart ? strValue.trimStart() : strValue}`,\n );\n }\n\n return multiline.join('\\n');\n}\n\nfunction isCompactFormat(\n value: any[],\n depth: number,\n spaces: number,\n opts: InspectOptions,\n): boolean {\n var availableLength = opts.columns - spaces - depth * opts.indent;\n var totalLength = 0;\n\n if (availableLength <= 0) return false;\n\n for (var item of value.flat()) {\n totalLength += String(item).length + 2;\n if (totalLength > availableLength || !isPrimitive(item)) return false;\n }\n\n return true;\n}\n\n// Optimized object formatting\nfunction formatObject(\n obj: any,\n opts: InspectOptions,\n depth: number,\n spaces: string,\n seen: WeakSet<any>,\n): string {\n if (opts.depth > 0 && depth >= opts.depth) {\n return '[Array]';\n }\n\n if (seen.has(obj)) {\n return '[Circular]';\n }\n\n seen.add(obj);\n\n var entries = Object.entries(obj);\n var len = entries.length;\n\n if (len === 0) return '{}';\n\n if (isCompactFormat(entries, depth, spaces.length, opts)) {\n var compact: string[] = [];\n var key, value;\n\n for (var i = 0; i < len; i++) {\n key = entries[i][0];\n value = entries[i][1];\n compact.push(`${key}: ${inspectValue(value, opts, 0, seen)}`);\n }\n\n return `{ ${compact.join(', ')} }`;\n }\n\n // Multi-line format\n var multiline: string[] = [];\n var key, value, strValue, compactMode;\n\n for (var i = 0; i < len; i++) {\n key = entries[i][0];\n value = entries[i][1];\n strValue = inspectValue(value, opts, depth + 1, seen);\n\n // Optimized format decision\n compactMode = strValue[0] === '{' || strValue[0] === '[';\n\n if (compactMode) {\n multiline.push(`${spaces}${key}: ${strValue}`);\n } else if (value && typeof value === 'object') {\n if (Array.isArray(value) && value.length > 0 && strValue[0] !== '[') {\n multiline.push(`${spaces}${key}:\\n${strValue}`);\n } else if (!Array.isArray(value)) {\n multiline.push(`${spaces}${key}:\\n${strValue}`);\n } else {\n multiline.push(`${spaces}${key}: ${strValue}`);\n }\n } else {\n multiline.push(`${spaces}${key}: ${strValue}`);\n }\n }\n\n return multiline.join('\\n');\n}\n","import {\n type Arrayable,\n arrayable,\n capitalize,\n crc32,\n deepDefaults,\n isFunction,\n withCache,\n} from '@andrew_l/toolkit';\nimport { StringWidth } from '@cto.af/string-width';\nimport type { PinoPretty } from '..';\nimport type { ColorizeFn, PrettyOptions, PrettyOptionsParsed } from '../types';\nimport { type ColorName, RAND_COLOR_LIST, getColor } from './getColor';\nimport { inspectCompact } from './inspectCompact';\nimport { inspectRegular } from './inspectRegular';\n\nexport function parseOptions(value: PinoPretty.Options): PrettyOptionsParsed {\n const defOptions: PrettyOptions = {\n columns: 80,\n indent: 2,\n depth: 5,\n messageKey: 'msg',\n quoteStyle: 'single',\n badgeMinLevel: 40,\n maxStringLength: 400,\n numericSeparator: false,\n ignore: 'hostname,pid',\n colorize: true,\n inspect: 'compact',\n types: {\n number: { color: 'green' },\n boolean: { color: 'redBright' },\n string: { color: 'yellow' },\n object: { color: 'gray' },\n error: { color: 'gray' },\n errorStack: { color: 'cyan' },\n time: { color: 'gray' },\n name: { color: 'rand' },\n },\n levels: {\n 10: { badge: 'TRACE', color: 'gray', icon: '→' },\n 20: { badge: 'DEBUG', color: 'blue', icon: '⚙' },\n 30: { badge: 'INFO', color: 'cyan', icon: 'ℹ' },\n 40: { badge: 'WARN', color: 'yellow', icon: '⚠' },\n 50: { badge: 'ERROR', color: 'red', icon: '✖' },\n 60: { badge: 'FATAL', color: 'red', icon: '✖' },\n },\n };\n\n const opts: PrettyOptions = deepDefaults({}, value, defOptions);\n\n const sw = new StringWidth({\n extraWidths: new Map(\n Object.values(opts.levels).map(v => [v.icon.charCodeAt(0), 1]),\n ),\n });\n\n const result: PrettyOptionsParsed = {\n ...opts,\n sw,\n colorFallback: createColorizeFn(opts.colorize, 'gray'),\n inspectFn:\n opts.inspect === 'regular'\n ? inspectRegular\n : opts.inspect === 'compact'\n ? inspectCompact\n : isFunction(opts.inspect)\n ? opts.inspect\n : inspectRegular,\n inspectOptions: {\n depth: opts.depth,\n quoteStyle: opts.quoteStyle,\n indent: opts.indent,\n maxStringLength: opts.maxStringLength,\n numericSeparator: opts.numericSeparator,\n customStringify: {},\n columns: opts.columns,\n },\n levels: Object.fromEntries(\n Object.entries(opts.levels).map(([key, value]) => [\n key,\n {\n ...value,\n color: createColorizeFn(opts.colorize, value.color),\n colorBadge: createColorizeBadgeFn(opts.colorize, value.color),\n },\n ]),\n ),\n types: Object.fromEntries(\n Object.entries(opts.types).map(([key, value]) => [\n key,\n {\n ...value,\n color: createColorizeFn(opts.colorize, value.color),\n },\n ]),\n ),\n ignoreAdditional: new Set([\n 'level',\n 'time',\n 'pid',\n 'hostname',\n opts.messageKey,\n opts.nestedKey ?? '',\n 'name',\n ]),\n ignore: new Set(\n opts.ignore\n .split(',')\n .map(v => v.trim())\n .filter(Boolean),\n ),\n };\n\n result.inspectOptions.customStringify = {\n number: result.types.number.color,\n boolean: result.types.boolean.color,\n string: result.types.string.color,\n stringRemaining: result.colorFallback,\n };\n\n return result;\n}\n\nconst randColor = withCache((str: string): ColorName => {\n var hash = crc32(str) >>> 0;\n var index = hash % RAND_COLOR_LIST.length;\n return RAND_COLOR_LIST[index];\n});\n\nfunction createColorizeFn(\n colorize: boolean,\n value: 'rand' | Arrayable<ColorName>,\n): ColorizeFn {\n if (!colorize) {\n return String;\n }\n\n if (value === 'rand') {\n return v => getColor(randColor(v))(v);\n }\n\n var colors = arrayable(value) as ColorName[];\n\n if (!colors.length) return String;\n\n return v => {\n var result = v;\n\n for (var color of colors) {\n result = getColor(color)(result);\n }\n\n return result;\n };\n}\n\nfunction createColorizeBadgeFn(\n colorize: boolean,\n value: 'rand' | Arrayable<ColorName>,\n): ColorizeFn {\n if (!colorize) {\n return String;\n }\n\n if (value === 'rand') {\n return v => getColor(randColor(v))(v);\n }\n\n var colors = arrayable(value).map(v => {\n if (v.startsWith('bg')) {\n v = v.slice(2);\n }\n\n return `bg${capitalize(v)}`;\n }) as ColorName[];\n\n if (!colors.length) return String;\n\n colors.push('black');\n\n return v => {\n var result = v;\n\n for (var color of colors) {\n result = getColor(color)(result);\n }\n\n return result;\n };\n}\n","/**\n * Based on https://github.com/unjs/consola/blob/main/src/reporters/fancy.ts\n */\n\nimport { def, has, isString, omit } from '@andrew_l/toolkit';\nimport type { SerializedError } from 'pino';\n\nimport path from 'node:path';\nimport { formatWithOptions, inspect as nodeInspect } from 'node:util';\n\nimport type { LogObject, PrettyOptionsParsed } from './types.js';\nimport { getColor } from './utils/index.js';\n\nfunction isSerializedError(value: any): value is SerializedError {\n return has(value, ['type', 'message', 'stack']);\n}\n\nfunction parseStack(stack: string, message: string) {\n const cwd = process.cwd() + path.sep;\n\n const lines = stack\n .split('\\n')\n .splice(message.split('\\n').length)\n .map(l => l.trim().replace('file://', '').replace(cwd, ''));\n\n return lines;\n}\n\nfunction characterFormat(str: string) {\n return (\n str\n // highlight backticks\n .replace(/`([^`]+)`/gm, (_, m) => getColor('cyan')(m))\n // underline underscores\n .replace(/\\s+_([^_]+)_\\s+/gm, (_, m) => ` ${getColor('underline')(m)} `)\n );\n}\n\nfunction formatStack(\n stack: string,\n message: string,\n errorLevel: number,\n opts: PrettyOptionsParsed,\n) {\n const indent = ' '.repeat(opts.indent * errorLevel);\n const colorizeStack = opts.types.errorStack?.color || opts.colorFallback;\n\n return (\n `\\n${indent}` +\n parseStack(stack, message)\n .map(\n line =>\n ' ' + line.replace(/\\((.+)\\)/, (_, m) => `(${colorizeStack(m)})`),\n )\n .join(`\\n${indent}`)\n );\n}\n\nfunction formatDate(date: Date, opts: PrettyOptionsParsed) {\n return opts.ignore.has('time') ? '' : date.toLocaleTimeString();\n}\n\nfunction formatType(\n logObj: LogObject,\n badge: boolean,\n opts: PrettyOptionsParsed,\n) {\n const levelBadge = opts.levels[logObj.level].badge || `LEVEL:${logObj.level}`;\n\n if (badge) {\n const colorize =\n opts.levels[logObj.level]?.colorBadge || opts.colorFallback;\n\n return colorize(` ${levelBadge} `);\n }\n\n const type = opts.levels[logObj.level].icon || levelBadge;\n const typeColor = opts.levels[logObj.level].color || opts.colorFallback;\n\n return type ? typeColor(type) : '';\n}\n\nfunction filterAndJoin(arr: any[]): string {\n return arr.filter(Boolean).join(' ');\n}\n\nfunction formatError(\n err: any,\n errorLevel: number,\n opts: PrettyOptionsParsed,\n): string {\n const message =\n (err.type ? `${err.type}: ` : '') +\n (err.message ??\n formatWithOptions({ depth: opts.depth, colors: opts.colorize }, err));\n\n const colorizeError = opts.types.error?.color || opts.colorFallback;\n const stack = err.stack\n ? formatStack(err.stack, message, errorLevel, opts)\n : '';\n\n const causedPrefix =\n errorLevel > 0 ? `${' '.repeat(opts.indent * errorLevel)}[cause]: ` : '';\n\n const causedError = err.cause\n ? '\\n\\n' + formatError(err.cause, errorLevel + 1, opts)\n : '';\n\n return colorizeError(causedPrefix + message + stack + causedError);\n}\n\nfunction formatAdditional(\n obj: Record<string, any>,\n opts: PrettyOptionsParsed,\n): string {\n const additional: any = {};\n let empty = true;\n\n if (isSerializedError(obj)) {\n return formatError(obj, 0, opts);\n } else {\n for (const key in obj) {\n empty = false;\n\n if (isSerializedError(obj[key])) {\n def(obj[key], nodeInspect.custom, () => formatError(obj[key], 0, opts));\n }\n\n additional[key] = obj[key];\n }\n }\n\n if (empty) {\n return '';\n }\n\n const colorizeObject = opts.types.object?.color || opts.colorFallback;\n\n return colorizeObject(opts.inspectFn(additional, opts.inspectOptions));\n}\n\nexport function pretty(this: PrettyOptionsParsed, logObj: LogObject) {\n const opts = this;\n const message = isString(logObj[opts.messageKey])\n ? logObj[opts.messageKey]\n : '';\n\n const additional = opts.nestedKey\n ? formatAdditional(logObj[opts.nestedKey], opts)\n : formatAdditional(omit(logObj, opts.ignoreAdditional), opts);\n\n const date = formatDate(new Date(logObj.time), opts);\n const coloredDate = date ? opts.types.time.color(date) : '';\n\n const isBadge = logObj.level >= opts.badgeMinLevel;\n const type = formatType(logObj, isBadge, opts);\n\n const name = logObj.name ? opts.types.name.color(logObj.name as string) : '';\n\n let line;\n const left = filterAndJoin([type, characterFormat(message)]);\n const right = filterAndJoin([name, coloredDate]);\n const space = opts.columns - opts.sw.width(left) - opts.sw.width(right) - 2;\n\n line =\n space > 0 && opts.columns >= 80\n ? left + ' '.repeat(space) + right\n : (right ? `[${right}] ` : '') + left;\n\n if (additional) {\n line += '\\n' + additional;\n }\n\n return isBadge ? '\\n' + line + '\\n' : line;\n}\n","import type { DeepPartial } from '@andrew_l/toolkit';\nimport { Transform } from 'node:stream';\nimport abstractTransport from 'pino-abstract-transport';\nimport pump from 'pump';\nimport { pretty } from './pretty.js';\nimport { buildSafeSonicBoom } from './utils/index.js';\nimport { parseOptions } from './utils/parseOptions.js';\n\nexport namespace PinoPretty {\n export type Options = DeepPartial<import('./types.js').PrettyOptions>;\n}\n\n/**\n * Processes the supplied options and returns a function that accepts log data\n * and produces a prettified log string.\n */\nfunction prettyFactory(options: PinoPretty.Options) {\n const opts = parseOptions(options);\n return pretty.bind(opts);\n}\n\n/**\n * Constructs a of stream to which the produced\n * prettified log data will be written.\n */\nexport function build(opts: PinoPretty.Options = {}) {\n var destination: any;\n\n return abstractTransport(\n function (source) {\n var pretty = prettyFactory({\n messageKey: (source as any).messageKey || 'msg',\n ...opts,\n });\n\n var extraLine = false;\n var line: string;\n\n const stream = new Transform({\n objectMode: true,\n autoDestroy: true,\n transform(chunk, enc, cb) {\n line = pretty(chunk);\n\n if (line.endsWith('\\n')) {\n extraLine = true;\n } else if (extraLine) {\n line = '\\n' + line + '\\n';\n extraLine = false;\n } else {\n line = line + '\\n';\n }\n\n cb(null, line);\n },\n });\n\n destination = buildSafeSonicBoom({\n dest: 1,\n append: true,\n mkdir: true,\n sync: false,\n });\n\n source.on('unknown', function (line) {\n destination.write(line + '\\n');\n });\n\n pump(source, stream, destination);\n return stream;\n },\n {\n expectPinoConfig: true,\n enablePipelining: false as any,\n close(err, cb) {\n destination.on('close', () => {\n cb(err);\n });\n },\n },\n );\n}\n\nexport default build;\n"],"names":["_SonicBoom","isMainThread","noop","tty","inspectString","inspectValue","isObject","isFunction","nodeInspect","typeOf","isPrimitive","deepDefaults","StringWidth","value","withCache","crc32","arrayable","capitalize","has","path","formatWithOptions","def","isString","omit","abstractTransport","pretty","Transform","line","pump"],"mappings":"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"}
|