@andrew_l/pino-pretty 0.2.21 → 0.3.0
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/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -5
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/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 (obj && 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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"}
|
|
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 (obj && 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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"}
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","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 (obj && 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":["inspectString","inspectValue","nodeInspect","value","pretty","line"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","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 (obj && 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":["inspectString","inspectValue","nodeInspect","value","pretty","line"],"mappings":";;;;;;;;;;;AASO,SAAS,mBAAmB,IAAA,EAAgC;AACjE,EAAA,MAAM,MAAA,GAAS,IAAK,UAAA,CAAmB,IAAI,CAAA;AAC3C,EAAA,MAAA,CAAO,EAAA,CAAG,SAAS,gBAAgB,CAAA;AAInC,EAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,oBAAoB,CAAC,IAAA,CAAK,QAAQ,YAAA,EAAc;AAC/D,IAAA,WAAA,CAAY,MAAM,CAAA;AAAA,EACpB;AACA,EAAA,OAAO,MAAA;AAEP,EAAA,SAAS,iBAAiB,GAAA,EAAU;AAClC,IAAA,IAAI,GAAA,CAAI,SAAS,OAAA,EAAS;AACxB,MAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AACf,MAAA,MAAA,CAAO,GAAA,GAAM,IAAA;AACb,MAAA,MAAA,CAAO,SAAA,GAAY,IAAA;AACnB,MAAA,MAAA,CAAO,OAAA,GAAU,IAAA;AACjB,MAAA;AAAA,IACF;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,EACjD;AACF;AAEA,SAAS,YAAY,MAAA,EAAmB;AAEtC,EAAA,IAAI,MAAA,CAAO,OAAA,IAAW,MAAA,CAAO,OAAA,IAAW,OAAO,oBAAA,EAAsB;AAInE,IAAA,OAAO,mBAAmB,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,KAAW;AAC3C,MAAA,MAAA,CAAO,QAAA,CAAS,QAAQ,OAAO,CAAA;AAE/B,MAAA,MAAA,CAAO,EAAA,CAAG,SAAS,WAAY;AAC7B,QAAA,MAAA,CAAO,WAAW,MAAM,CAAA;AAAA,MAC1B,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AACF;AAGA,SAAS,OAAA,CAAQ,QAAa,SAAA,EAAgB;AAG5C,EAAA,IAAI,OAAO,SAAA,EAAW;AACpB,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,cAAc,YAAA,EAAc;AAE9B,IAAA,MAAA,CAAO,KAAA,EAAM;AACb,IAAA,MAAA,CAAO,EAAA,CAAG,SAAS,WAAY;AAC7B,MAAA,MAAA,CAAO,GAAA,EAAI;AAAA,IACb,CAAC,CAAA;AAAA,EACH,CAAA,MAAO;AAEL,IAAA,MAAA,CAAO,SAAA,EAAU;AAAA,EACnB;AACF;;AC1DA,MAAM;AAAA,EACJ,MAAM,EAAC;AAAA,EACP,OAAO,EAAC;AAAA,EACR,QAAA,GAAW;AACb,CAAA,GAAI,OAAO,OAAA,KAAY,WAAA,GAAc,EAAC,GAAI,OAAA;AAC1C,MAAM,UAAA,GAAa,UAAA,IAAc,GAAA,IAAO,IAAA,CAAK,SAAS,YAAY,CAAA;AAClE,MAAM,QAAA,GAAW,aAAA,IAAiB,GAAA,IAAO,IAAA,CAAK,SAAS,SAAS,CAAA;AAChE,MAAM,YAAY,QAAA,KAAa,OAAA;AAC/B,MAAM,cAAA,GAAiB,IAAI,IAAA,KAAS,MAAA;AACpC,MAAM,oBAAA,GACJ,GAAA,IAAO,GAAA,CAAI,MAAA,IAAU,GAAA,CAAI,OAAO,CAAC,CAAA,IAAK,GAAA,CAAI,IAAA,IAAQ,CAAC,cAAA;AACrD,MAAM,OACJ,IAAA,IAAQ,GAAA,KACP,oBAAoB,GAAA,IAAO,WAAA,IAAe,OAAO,UAAA,IAAc,GAAA,CAAA;AAMlE,MAAM,mBACJ,CAAC,UAAA,KACA,YAAa,SAAA,IAAa,CAAC,kBAAmB,oBAAA,IAAwB,IAAA,CAAA;AAEzE,SAAS,YAAA,CACP,KAAA,EACA,MAAA,EACA,KAAA,EACA,OAAA,EACA,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA,GAAI,OAAA,EAC7C,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,GAAG,KAAA,GAAQ,KAAA,CAAM,MAAM,CAAC,CAAA,EACrD,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA,EACjB;AACR,EAAA,OAAO,IAAA,IAAQ,OAAO,CAAA,GAAI,IAAA,GAAO,aAAa,IAAA,EAAM,IAAA,EAAM,OAAO,OAAO,CAAA,CAAA;AAC1E;AAEA,SAAS,UAAA,CACP,KAAA,EACA,MAAA,EACA,IAAA,EACA,OACA,OAAA,EACA;AACA,EAAA,OAAO,KAAA,GAAQ,CAAA,GACX,IAAA,GAAO,MAAA,GAAS,KAAA,GAChB,IAAA,GAAO,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA,GAAI,KAAA;AAC3D;AAEA,SAAS,WAAA,CACP,MACA,KAAA,EACA,OAAA,GAAU,MACV,EAAA,GAAK,IAAA,CAAK,SAAS,CAAA,EACnB;AACA,EAAA,OAAO,CAAC,MAAA,KACN,MAAA,IAAU,EAAE,MAAA,KAAW,EAAA,IAAM,WAAW,MAAA,CAAA,GACpC,UAAA;AAAA,IAAA,CACG,EAAA,GAAK,MAAA,EAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,IAC/B,MAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF,GACA,EAAA;AACR;AAEA,SAAS,IAAA,CAAK,IAAA,EAAc,KAAA,EAAe,OAAA,EAAkB;AAC3D,EAAA,OAAO,YAAY,CAAA,KAAA,EAAU,IAAI,KAAK,CAAA,KAAA,EAAU,KAAK,KAAK,OAAO,CAAA;AACnE;AAEA,SAAS,YAAA,CAAa,IAAA,EAAc,IAAA,GAAO,KAAA,EAAO;AAChD,EAAA,MAAM,MAAA,GAAS,OAAO,OAAA,GAAU,OAAA;AAChC,EAAA,MAAM,SAAA,GAAY,OAAO,EAAA,GAAK,EAAA;AAC9B,EAAA,OAAO,WAAA,CAAY,QAAU,MAAM,CAAA,EAAG,IAAI,CAAA,CAAA,CAAA,EAAK,CAAA,KAAA,EAAU,SAAS,CAAA,CAAA,CAAG,CAAA;AACvE;AAEA,MAAM,SAAA,GAAY;AAAA,EAChB,KAAA,EAAO,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA;AAAA,EAChB,IAAA,EAAM,IAAA,CAAK,CAAA,EAAG,EAAA,EAAI,iBAAqB,CAAA;AAAA,EACvC,GAAA,EAAK,IAAA,CAAK,CAAA,EAAG,EAAA,EAAI,iBAAqB,CAAA;AAAA,EACtC,MAAA,EAAQ,IAAA,CAAK,CAAA,EAAG,EAAE,CAAA;AAAA,EAClB,SAAA,EAAW,IAAA,CAAK,CAAA,EAAG,EAAE,CAAA;AAAA,EACrB,OAAA,EAAS,IAAA,CAAK,CAAA,EAAG,EAAE,CAAA;AAAA,EACnB,MAAA,EAAQ,IAAA,CAAK,CAAA,EAAG,EAAE,CAAA;AAAA,EAClB,aAAA,EAAe,IAAA,CAAK,CAAA,EAAG,EAAE,CAAA;AAAA,EACzB,KAAA,EAAO,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EAClB,GAAA,EAAK,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EAChB,KAAA,EAAO,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EAClB,MAAA,EAAQ,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACnB,IAAA,EAAM,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACjB,OAAA,EAAS,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACpB,IAAA,EAAM,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACjB,KAAA,EAAO,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EAClB,IAAA,EAAM,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACjB,OAAA,EAAS,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACpB,KAAA,EAAO,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EAClB,OAAA,EAAS,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACpB,QAAA,EAAU,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACrB,MAAA,EAAQ,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACnB,SAAA,EAAW,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACtB,MAAA,EAAQ,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACnB,OAAA,EAAS,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACpB,WAAA,EAAa,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACxB,SAAA,EAAW,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACtB,WAAA,EAAa,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACxB,YAAA,EAAc,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACzB,UAAA,EAAY,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACvB,aAAA,EAAe,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EAC1B,UAAA,EAAY,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACvB,WAAA,EAAa,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,EACxB,aAAA,EAAe,IAAA,CAAK,GAAA,EAAK,EAAE,CAAA;AAAA,EAC3B,WAAA,EAAa,IAAA,CAAK,GAAA,EAAK,EAAE,CAAA;AAAA,EACzB,aAAA,EAAe,IAAA,CAAK,GAAA,EAAK,EAAE,CAAA;AAAA,EAC3B,cAAA,EAAgB,IAAA,CAAK,GAAA,EAAK,EAAE,CAAA;AAAA,EAC5B,YAAA,EAAc,IAAA,CAAK,GAAA,EAAK,EAAE,CAAA;AAAA,EAC1B,eAAA,EAAiB,IAAA,CAAK,GAAA,EAAK,EAAE,CAAA;AAAA,EAC7B,YAAA,EAAc,IAAA,CAAK,GAAA,EAAK,EAAE,CAAA;AAAA,EAC1B,aAAA,EAAe,IAAA,CAAK,GAAA,EAAK,EAAE,CAAA;AAAA;AAAA,EAG3B,MAAA,EAAQ,aAAa,GAAG,CAAA;AAAA,EACxB,MAAA,EAAQ,aAAa,GAAG,CAAA;AAAA,EACxB,IAAA,EAAM,aAAa,GAAG,CAAA;AAAA,EACtB,IAAA,EAAM,aAAa,GAAG,CAAA;AAAA,EACtB,IAAA,EAAM,aAAa,EAAE,CAAA;AAAA,EACrB,MAAA,EAAQ,aAAa,EAAE,CAAA;AAAA,EACvB,KAAA,EAAO,aAAa,GAAG,CAAA;AAAA,EACvB,KAAA,EAAO,aAAa,GAAG,CAAA;AAAA,EACvB,IAAA,EAAM,aAAa,EAAE,CAAA;AAAA,EACrB,MAAA,EAAQ,aAAa,EAAE,CAAA;AAAA,EACvB,MAAA,EAAQ,aAAa,GAAG,CAAA;AAAA,EACxB,IAAA,EAAM,aAAa,GAAG,CAAA;AAAA,EACtB,QAAA,EAAU,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EAChC,QAAA,EAAU,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EAChC,MAAA,EAAQ,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EAC9B,MAAA,EAAQ,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EAC9B,MAAA,EAAQ,YAAA,CAAa,EAAA,EAAI,IAAI,CAAA;AAAA,EAC7B,QAAA,EAAU,YAAA,CAAa,EAAA,EAAI,IAAI,CAAA;AAAA,EAC/B,OAAA,EAAS,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EAC/B,OAAA,EAAS,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EAC/B,MAAA,EAAQ,YAAA,CAAa,EAAA,EAAI,IAAI,CAAA;AAAA,EAC7B,QAAA,EAAU,YAAA,CAAa,EAAA,EAAI,IAAI,CAAA;AAAA,EAC/B,QAAA,EAAU,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EAChC,MAAA,EAAQ,YAAA,CAAa,GAAA,EAAK,IAAI;AAChC,CAAA;AAEO,MAAM,kBAAkB,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,OAAO,CAAA,CAAA,KAAK;AAChE,EAAA,IAAI,CAAA,CAAE,UAAA,CAAW,IAAI,CAAA,EAAG,OAAO,KAAA;AAC/B,EAAA,IACE;AAAA,IACE,OAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,CAAE,SAAS,CAAC,CAAA;AAEZ,IAAA,OAAO,KAAA;AAET,EAAA,OAAO,IAAA;AACT,CAAC,CAAA;AAWD,SAAS,YAAA,CAAa,WAAW,gBAAA,EAAkB;AACjD,EAAA,OAAO,QAAA,GACH,SAAA,GACA,MAAA,CAAO,WAAA,CAAY,OAAO,IAAA,CAAK,SAAS,CAAA,CAAE,GAAA,CAAI,CAAA,GAAA,KAAO,CAAC,GAAA,EAAK,MAAM,CAAC,CAAC,CAAA;AACzE;AAKO,MAAM,SAAS,YAAA,EAAa;AAQ5B,SAAS,QAAA,CACd,KAAA,EACA,QAAA,GAAsB,OAAA,EACP;AACf,EAAA,OAAO,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA,CAAO,QAAQ,CAAA;AACzC;;ACrMO,IAAI,MAAA,GAAS,EAAE,MAAA,EAAQ,GAAA,EAAK,QAAQ,GAAA,EAAI;AAC/C,IAAI,WAAA,GAAc,EAAE,MAAA,EAAQ,UAAA,EAAY,QAAQ,UAAA,EAAW;AAC3D,IAAI,YAAA,GAAe,EAAE,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAI;AAC/D,IAAI,SAAA,GAAY,yBAAA;AAEhB,SAAS,mBAAA,CAAoB,KAAsB,GAAA,EAAqB;AAEtE,EAAA,IACE,QAAQ,QAAA,IACR,GAAA,KAAQ,aACR,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,IACf,OAAO,QAAQ,QAAA,IAAY,IAAA,CAAK,IAAI,GAAG,CAAA,GAAI,OAC5C,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,EAChB;AACA,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,CAAC,MAAA,CAAO,SAAA,CAAU,GAAG,CAAA,EAAG;AACrD,IAAA,IAAI,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAA,IAAI,MAAA,GAAS,OAAO,OAAO,CAAA;AAC3B,IAAA,IAAI,OAAA,GAAU,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,SAAS,CAAC,CAAA;AAEzC,IAAA,OACE,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAW,KAAK,CAAA,GAC/B,GAAA,GACA,OAAA,CAAQ,OAAA,CAAQ,UAAA,EAAY,KAAK,CAAA,CAAE,OAAA,CAAQ,MAAM,EAAE,CAAA;AAAA,EAEvD;AAEA,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,SAAA,EAAW,KAAK,CAAA;AACrC;AAEO,SAAS,YAAA,CAAa,KAAa,IAAA,EAA8B;AACtE,EAAA,IAAI,UAAA,GAAa,WAAA,CAAY,IAAA,CAAK,UAAU,CAAA;AAE5C,EAAA,OAAO,IAAI,OAAA,CAAQ,UAAA,EAAY,MAAM,CAAA,CAAE,OAAA,CAAQ,gBAAgB,CAAA,IAAA,KAAQ;AACrE,IAAA,IAAI,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA;AAC5B,IAAA,IAAI,UAAA,GAAa,aAAa,IAAiC,CAAA;AAC/D,IAAA,OAAO,UAAA,GACH,CAAA,EAAA,EAAK,UAAU,CAAA,CAAA,GACf,MAAM,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA,CAAE,aAAa,CAAA,CAAA;AAAA,EAC5D,CAAC,CAAA;AACH;AAEA,SAASA,eAAA,CAAc,KAAa,IAAA,EAA8B;AAEhE,EAAA,IAAI,GAAA,CAAI,MAAA,GAAS,IAAA,CAAK,eAAA,EAAiB;AACrC,IAAA,IAAI,SAAA,GAAY,GAAA,CAAI,MAAA,GAAS,IAAA,CAAK,eAAA;AAClC,IAAA,IAAI,UAAU,CAAA,IAAA,EAAO,SAAS,kBAAkB,SAAA,GAAY,CAAA,GAAI,MAAM,EAAE,CAAA,CAAA;AACxE,IAAA,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,eAAe,CAAA;AACvC,IAAA,OAAOA,eAAA,CAAc,GAAA,EAAK,IAAI,CAAA,GAAI,OAAA;AAAA,EACpC;AAGA,EAAA,IAAI,OAAA,GAAU,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAEpC,EAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA;AAClC,EAAA,IAAI,SAAS,CAAA,EAAG,KAAK,CAAA,EAAG,OAAO,GAAG,KAAK,CAAA,CAAA;AAEvC,EAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,MAAA,GAAS,MAAM,CAAA,IAAK,MAAA;AAClD;AAEO,SAAS,aAAA,CACd,KACA,IAAA,EACQ;AACR,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,IAAI,GAAA,GAAM,GAAG,GAAG,CAAA,CAAA,CAAA;AAChB,IAAA,IAAI,SAAS,IAAA,CAAK,gBAAA,GAAmB,mBAAA,CAAoB,GAAA,EAAK,GAAG,CAAA,GAAI,GAAA;AACrE,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,MAAA,GAAS,MAAM,CAAA,IAAK,MAAA;AAAA,EAClD;AAEA,EAAA,IAAI,GAAA,GAAM,OAAO,EAAA,CAAG,GAAA,EAAK,EAAE,CAAA,GAAI,IAAA,GAAO,OAAO,GAAG,CAAA;AAChD,EAAA,IAAI,SAAS,IAAA,CAAK,gBAAA,GAAmB,mBAAA,CAAoB,GAAA,EAAK,GAAG,CAAA,GAAI,GAAA;AACrE,EAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,MAAA,GAAS,MAAM,CAAA,IAAK,MAAA;AAClD;AAEA,SAAS,gBAAA,CAAiB,MAAsB,KAAA,EAAe;AAC7D,EAAA,IAAI,KAAA,KAAU,CAAA,EAAG,OAAO,EAAE,IAAA,EAAM,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,EAAG,IAAA,EAAM,EAAA,EAAG;AAElE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,IAC5B,IAAA,EAAM,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,SAAS,KAAK;AAAA,GACtC;AACF;AAEA,SAAS,aAAa,MAAA,EAA2B;AAC/C,EAAA,OAAO,OAAO,KAAA,CAAM,CAAA,KAAA,KAAS,CAAC,KAAA,CAAM,QAAA,CAAS,IAAI,CAAC,CAAA;AACpD;AAEA,SAAS,eAAA,CACP,QACA,MAAA,EACQ;AACR,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAEhC,EAAA,IAAI,UAAA,GAAa;AAAA,EAAK,MAAA,CAAO,IAAI,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA;AAC/C,EAAA,OAAO,CAAA,EAAG,UAAU,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,CAAA,EAAI,UAAU,EAAE,CAAC;AAAA,EAAK,OAAO,IAAI,CAAA,CAAA;AACtE;AAEA,SAAS,gBAAA,CACP,KACA,SAAA,EACU;AACV,EAAA,IAAI,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAC/B,EAAA,IAAI,UAAoB,EAAC;AAGzB,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,MAAA,OAAA,CAAQ,CAAC,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,GAAI,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,EAAG,GAAG,CAAA,GAAI,EAAA;AAAA,IAChE;AAAA,EACF;AAGA,EAAA,KAAA,IAAS,OAAO,GAAA,EAAK;AACnB,IAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,GAAG,CAAA,EAAG;AAG9B,IAAA,IAAI,OAAA,IAAW,QAAQ,IAAA,CAAK,GAAG,KAAK,MAAA,CAAO,GAAG,CAAA,GAAI,GAAA,CAAI,MAAA,EAAQ;AAE9D,IAAA,IAAI,WAAA,GAAc,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA;AACnC,IAAA,IAAI,MAAA,GAAS,WAAA,GAAc,SAAA,CAAU,GAAA,EAAK,GAAG,CAAA,GAAI,GAAA;AACjD,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,SAAA,CAAU,IAAI,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,EACvD;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,SAASC,cAAA,CACP,GAAA,EACA,IAAA,EACA,KAAA,EACA,IAAA,EACQ;AAER,EAAA,IAAI,GAAA,KAAQ,MAAA;AACV,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,SAAA,GAAY,GAAG,CAAA,IAAK,WAAA;AAClD,EAAA,IAAI,QAAQ,IAAA,EAAM,OAAO,KAAK,eAAA,CAAgB,IAAA,GAAO,GAAG,CAAA,IAAK,MAAA;AAC7D,EAAA,IAAI,OAAO,GAAA,KAAQ,SAAA;AACjB,IAAA,OAAO,KAAK,eAAA,CAAgB,OAAA,GAAU,GAAG,CAAA,IAAK,OAAO,GAAG,CAAA;AAC1D,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAOD,eAAA,CAAc,KAAK,IAAI,CAAA;AAG3D,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,OAAO,aAAA,CAAc,KAAK,IAAI,CAAA;AAAA,EAChC,CAAA,MAAA,IAAW,OAAO,GAAA,KAAQ,QAAA,EAAU;AAClC,IAAA,OAAO,aAAA,CAAc,KAAK,IAAI,CAAA;AAAA,EAChC;AAGA,EAAA,IAAI,KAAA,IAAS,KAAK,KAAA,IAAS,IAAA,CAAK,QAAQ,CAAA,IAAK,OAAO,QAAQ,QAAA,EAAU;AACpE,IAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,GAAI,SAAA,GAAY,UAAA;AAAA,EAC1C;AAGA,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG,OAAO,YAAA;AAC1B,EAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AAEZ,EAAA,IAAI,MAAA,GAAS,gBAAA,CAAiB,IAAA,EAAM,KAAK,CAAA;AAEzC,EAAA,IAAI,YAAA,GAAe,CAAC,KAAA,KAAeC,cAAA,CAAa,OAAO,IAAA,EAAM,KAAA,GAAQ,GAAG,IAAI,CAAA;AAG5E,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,IAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE7B,IAAA,IAAI,OAAA,GAAU,gBAAA,CAAiB,GAAA,EAAK,YAAY,CAAA;AAEhD,IAAA,IAAI,MAAA,CAAO,IAAA,IAAQ,CAAC,YAAA,CAAa,OAAO,CAAA,EAAG;AACzC,MAAA,OAAO,CAAA,CAAA,EAAI,eAAA,CAAgB,OAAA,EAAS,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,IAC7C;AACA,IAAA,OAAO,CAAA,EAAA,EAAK,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EAChC;AAGA,EAAA,IAAI,QAAA,CAAS,GAAG,CAAA,EAAG;AAEjB,IAAA,IAAI,UAAA,CAAY,GAAA,CAAYC,OAAA,CAAY,MAAM,CAAC,CAAA,EAAG;AAChD,MAAA,IAAI,UAAA,GAAa;AAAA,EAAK,OAAO,IAAI,CAAA,CAAA;AACjC,MAAA,OAAOA,OAAA,CAAY,GAAA,EAAK,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,GAAQ,KAAA,EAAO,CAAA,CAClD,KAAA,CAAM,IAAI,CAAA,CACV,KAAK,UAAU,CAAA;AAAA,IACpB;AAEA,IAAA,IAAI,OAAA,GAAU,gBAAA,CAAiB,GAAA,EAAK,YAAY,CAAA;AAChD,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEjC,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,OAAO,CAAA,CAAA,EAAI,eAAA,CAAgB,OAAA,EAAS,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,IAC7C;AACA,IAAA,OAAO,CAAA,EAAA,EAAK,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EAChC;AAEA,EAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AACf,EAAA,OAAO,OAAO,GAAG,CAAA;AACnB;AAEO,SAAS,cAAA,CAAe,KAAU,OAAA,EAAiC;AACxE,EAAA,OAAOD,eAAa,GAAA,EAAK,OAAA,EAAS,CAAA,kBAAG,IAAI,SAAS,CAAA;AACpD;;ACjMA,IAAI,WAAA,GAAmD;AAAA,EACrD,OAAA,EAAS,CAAC,GAAA,EAAK,IAAA,KAAS,IAAA,CAAK,gBAAgB,OAAA,GAAU,GAAG,CAAA,IAAK,MAAA,CAAO,GAAG,CAAA;AAAA,EACzE,MAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,SAAA,EAAW,CAAC,GAAA,EAAK,IAAA,KACf,KAAK,eAAA,CAAgB,SAAA,GAAY,GAAG,CAAA,IAAK,WAAA;AAAA,EAC3C,MAAM,MAAM,MAAA;AAAA,EACZ,KAAA,EAAO,WAAA;AAAA,EACP,MAAA,EAAQ;AACV,CAAA;AAEO,SAAS,cAAA,CAAe,KAAU,OAAA,EAAiC;AACxE,EAAA,OAAO,aAAa,GAAA,EAAK,OAAA,EAAS,CAAA,kBAAG,IAAI,SAAS,CAAA;AACpD;AAEA,SAAS,YAAA,CACP,GAAA,EACA,IAAA,EACA,KAAA,GAAgB,GAChB,IAAA,EACQ;AACR,EAAA,IAAI,MAAA,GAAS,QAAQ,CAAA,GAAI,GAAA,CAAI,OAAO,IAAA,CAAK,MAAA,GAAS,KAAK,CAAA,GAAI,EAAA;AAC3D,EAAA,IAAI,IAAA,GAAO,OAAO,GAAG,CAAA;AACrB,EAAA,IAAI,SAAA,GAAiC,WAAA,CAAY,IAAI,CAAA,IAAK,MAAA;AAG1D,EAAA,IAAI,OAAO,UAAA,CAAY,GAAA,CAAYC,OAAA,CAAY,MAAM,CAAC,CAAA,EAAG;AACvD,IAAA,IAAI,UAAA,GAAa;AAAA,EAAK,MAAM,CAAA,CAAA;AAC5B,IAAA,OACE,MAAA,GACAA,OAAA,CAAY,GAAA,EAAK,EAAE,OAAO,IAAA,CAAK,KAAA,GAAQ,KAAA,EAAO,CAAA,CAC3C,KAAA,CAAM,IAAI,CAAA,CACV,KAAK,UAAU,CAAA;AAAA,EAEtB;AAEA,EAAA,OAAO,SAAA,CAAU,GAAA,EAAK,IAAA,EAAM,KAAA,EAAO,QAAQ,IAAI,CAAA;AACjD;AAEA,SAAS,aAAA,CAAc,KAAa,IAAA,EAA8B;AAEhE,EAAA,IAAI,GAAA,CAAI,MAAA,GAAS,IAAA,CAAK,eAAA,EAAiB;AACrC,IAAA,IAAI,SAAA,GAAY,GAAA,CAAI,MAAA,GAAS,IAAA,CAAK,eAAA;AAClC,IAAA,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,eAAe,CAAA;AACvC,IAAA,OAAO,YAAA,CAAa,GAAA,EAAK,SAAA,EAAW,IAAI,CAAA;AAAA,EAC1C;AAEA,EAAA,OAAO,YAAA,CAAa,GAAA,EAAK,CAAA,EAAG,IAAI,CAAA;AAClC;AAEA,SAAS,YAAA,CACP,GAAA,EACA,SAAA,EACA,IAAA,EACQ;AACR,EAAA,IAAI,OAAA,GAAU,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AACpC,EAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA;AAClC,EAAA,IAAI,MAAA;AAEJ,EAAA,IAAI,OAAA,GACF,YAAY,CAAA,GACR,IAAA,CAAK,gBAAgB,eAAA,CAAgB,CAAA,IAAA,EAAO,SAAS,CAAA,gBAAA,CAAkB,CAAA,GACvE,EAAA;AAEN,EAAA,IAAI,QAAQ,MAAA,GAAS,IAAA,CAAK,WAAW,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA,EAAG;AAC5D,IAAA,OAAA,GAAU,OAAA,CAAQ,UAAA,CAAW,KAAA,EAAO,IAAI,CAAA;AACxC,IAAA,MAAA,GACE,SAAA,IAAa,OAAA,GAAU,CAAA,EAAG,OAAO;AAAA,EAAK,OAAO,KAAK,OAAA,CAAA,GAAW,OAAA;AAAA,EACjE,CAAA,MAAO;AACL,IAAA,MAAA,GAAS,CAAA,EAAG,KAAK,CAAA,EAAG,OAAO,GAAG,OAAA,IAAW,EAAE,GAAG,KAAK,CAAA,CAAA;AAAA,EACrD;AAEA,EAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,MAAA,GAAS,MAAM,CAAA,IAAK,MAAA;AAClD;AAGA,SAAS,WAAA,CACP,GAAA,EACA,IAAA,EACA,KAAA,EACA,QACA,IAAA,EACQ;AACR,EAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,CAAA,IAAK,KAAA,IAAS,KAAK,KAAA,EAAO;AACzC,IAAA,OAAO,SAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG;AACjB,IAAA,OAAO,YAAA;AAAA,EACT;AAEA,EAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AAGZ,EAAA,IAAI,MAAM,GAAA,CAAI,MAAA;AAEd,EAAA,IAAI,gBAAgB,GAAA,EAAK,KAAA,EAAO,MAAA,CAAO,MAAA,EAAQ,IAAI,CAAA,EAAG;AAEpD,IAAA,IAAI,UAAoB,EAAC;AAEzB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AAC5B,MAAA,OAAA,CAAQ,IAAA,CAAK,aAAa,GAAA,CAAI,CAAC,GAAG,IAAA,EAAM,CAAA,EAAG,IAAI,CAAC,CAAA;AAAA,IAClD;AAEA,IAAA,OAAO,CAAA,CAAA,EAAI,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,EAC/B;AAGA,EAAA,IAAI,YAAsB,EAAC;AAE3B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AAC5B,IAAA,IAAI,QAAA,GAAW,aAAa,GAAA,CAAI,CAAC,GAAG,IAAA,EAAM,KAAA,GAAQ,GAAG,IAAI,CAAA;AACzD,IAAA,SAAA,CAAU,IAAA;AAAA,MACR,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,QAAA,CAAS,YAAY,QAAA,CAAS,SAAA,KAAc,QAAQ,CAAA;AAAA,KACpE;AAAA,EACF;AAEA,EAAA,OAAO,SAAA,CAAU,KAAK,IAAI,CAAA;AAC5B;AAEA,SAAS,eAAA,CACP,KAAA,EACA,KAAA,EACA,MAAA,EACA,IAAA,EACS;AACT,EAAA,IAAI,eAAA,GAAkB,IAAA,CAAK,OAAA,GAAU,MAAA,GAAS,QAAQ,IAAA,CAAK,MAAA;AAC3D,EAAA,IAAI,WAAA,GAAc,CAAA;AAElB,EAAA,IAAI,eAAA,IAAmB,GAAG,OAAO,KAAA;AAEjC,EAAA,KAAA,IAAS,IAAA,IAAQ,KAAA,CAAM,IAAA,EAAK,EAAG;AAC7B,IAAA,WAAA,IAAe,MAAA,CAAO,IAAI,CAAA,CAAE,MAAA,GAAS,CAAA;AACrC,IAAA,IAAI,cAAc,eAAA,IAAmB,CAAC,WAAA,CAAY,IAAI,GAAG,OAAO,KAAA;AAAA,EAClE;AAEA,EAAA,OAAO,IAAA;AACT;AAGA,SAAS,YAAA,CACP,GAAA,EACA,IAAA,EACA,KAAA,EACA,QACA,IAAA,EACQ;AACR,EAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,CAAA,IAAK,KAAA,IAAS,KAAK,KAAA,EAAO;AACzC,IAAA,OAAO,SAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG;AACjB,IAAA,OAAO,YAAA;AAAA,EACT;AAEA,EAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AAEZ,EAAA,IAAI,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAChC,EAAA,IAAI,MAAM,OAAA,CAAQ,MAAA;AAElB,EAAA,IAAI,GAAA,KAAQ,GAAG,OAAO,IAAA;AAEtB,EAAA,IAAI,gBAAgB,OAAA,EAAS,KAAA,EAAO,MAAA,CAAO,MAAA,EAAQ,IAAI,CAAA,EAAG;AACxD,IAAA,IAAI,UAAoB,EAAC;AACzB,IAAA,IAAI,GAAA,EAAK,KAAA;AAET,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AAC5B,MAAA,GAAA,GAAM,OAAA,CAAQ,CAAC,CAAA,CAAE,CAAC,CAAA;AAClB,MAAA,KAAA,GAAQ,OAAA,CAAQ,CAAC,CAAA,CAAE,CAAC,CAAA;AACpB,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,EAAA,EAAK,YAAA,CAAa,OAAO,IAAA,EAAM,CAAA,EAAG,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,IAC9D;AAEA,IAAA,OAAO,CAAA,EAAA,EAAK,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EAChC;AAGA,EAAA,IAAI,YAAsB,EAAC;AAC3B,EAAA,IAAI,GAAA,EAAK,OAAO,QAAA,EAAU,WAAA;AAE1B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AAC5B,IAAA,GAAA,GAAM,OAAA,CAAQ,CAAC,CAAA,CAAE,CAAC,CAAA;AAClB,IAAA,KAAA,GAAQ,OAAA,CAAQ,CAAC,CAAA,CAAE,CAAC,CAAA;AACpB,IAAA,QAAA,GAAW,YAAA,CAAa,KAAA,EAAO,IAAA,EAAM,KAAA,GAAQ,GAAG,IAAI,CAAA;AAGpD,IAAA,WAAA,GAAc,SAAS,CAAC,CAAA,KAAM,GAAA,IAAO,QAAA,CAAS,CAAC,CAAA,KAAM,GAAA;AAErD,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,SAAA,CAAU,KAAK,CAAA,EAAG,MAAM,GAAG,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,IAC/C,CAAA,MAAA,IAAW,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AAC7C,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,SAAS,CAAA,IAAK,QAAA,CAAS,CAAC,CAAA,KAAM,GAAA,EAAK;AACnE,QAAA,SAAA,CAAU,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,EAAG,GAAG,CAAA;AAAA,EAAM,QAAQ,CAAA,CAAE,CAAA;AAAA,MAChD,CAAA,MAAA,IAAW,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAChC,QAAA,SAAA,CAAU,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,EAAG,GAAG,CAAA;AAAA,EAAM,QAAQ,CAAA,CAAE,CAAA;AAAA,MAChD,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,KAAK,CAAA,EAAG,MAAM,GAAG,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,MAC/C;AAAA,IACF,CAAA,MAAO;AACL,MAAA,SAAA,CAAU,KAAK,CAAA,EAAG,MAAM,GAAG,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,IAC/C;AAAA,EACF;AAEA,EAAA,OAAO,SAAA,CAAU,KAAK,IAAI,CAAA;AAC5B;;AC5MO,SAAS,aAAa,KAAA,EAAgD;AAC3E,EAAA,MAAM,UAAA,GAA4B;AAAA,IAChC,OAAA,EAAS,EAAA;AAAA,IACT,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO,CAAA;AAAA,IACP,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,aAAA,EAAe,EAAA;AAAA,IACf,eAAA,EAAiB,GAAA;AAAA,IACjB,gBAAA,EAAkB,KAAA;AAAA,IAClB,MAAA,EAAQ,cAAA;AAAA,IACR,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO;AAAA,MACL,MAAA,EAAQ,EAAE,KAAA,EAAO,OAAA,EAAQ;AAAA,MACzB,OAAA,EAAS,EAAE,KAAA,EAAO,WAAA,EAAY;AAAA,MAC9B,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA,EAAS;AAAA,MAC1B,MAAA,EAAQ,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,MACxB,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,MACvB,UAAA,EAAY,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,MAC5B,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,MACtB,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA;AAAO,KACxB;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAI,EAAE,KAAA,EAAO,SAAS,KAAA,EAAO,MAAA,EAAQ,MAAM,QAAA,EAAI;AAAA,MAC/C,IAAI,EAAE,KAAA,EAAO,SAAS,KAAA,EAAO,MAAA,EAAQ,MAAM,QAAA,EAAI;AAAA,MAC/C,IAAI,EAAE,KAAA,EAAO,QAAQ,KAAA,EAAO,MAAA,EAAQ,MAAM,QAAA,EAAI;AAAA,MAC9C,IAAI,EAAE,KAAA,EAAO,QAAQ,KAAA,EAAO,QAAA,EAAU,MAAM,QAAA,EAAI;AAAA,MAChD,IAAI,EAAE,KAAA,EAAO,SAAS,KAAA,EAAO,KAAA,EAAO,MAAM,QAAA,EAAI;AAAA,MAC9C,IAAI,EAAE,KAAA,EAAO,SAAS,KAAA,EAAO,KAAA,EAAO,MAAM,QAAA;AAAI;AAChD,GACF;AAEA,EAAA,MAAM,IAAA,GAAsB,YAAA,CAAa,EAAC,EAAG,OAAO,UAAU,CAAA;AAE9D,EAAA,MAAM,EAAA,GAAK,IAAI,WAAA,CAAY;AAAA,IACzB,aAAa,IAAI,GAAA;AAAA,MACf,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,MAAM,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAC,CAAA,CAAE,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,EAAG,CAAC,CAAC;AAAA;AAC/D,GACD,CAAA;AAED,EAAA,MAAM,MAAA,GAA8B;AAAA,IAClC,GAAG,IAAA;AAAA,IACH,EAAA;AAAA,IACA,aAAA,EAAe,gBAAA,CAAiB,IAAA,CAAK,QAAA,EAAU,MAAM,CAAA;AAAA,IACrD,SAAA,EACE,IAAA,CAAK,OAAA,KAAY,SAAA,GACb,iBACA,IAAA,CAAK,OAAA,KAAY,SAAA,GACf,cAAA,GACA,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA,GACrB,KAAK,OAAA,GACL,cAAA;AAAA,IACV,cAAA,EAAgB;AAAA,MACd,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,iBAAiB,IAAA,CAAK,eAAA;AAAA,MACtB,kBAAkB,IAAA,CAAK,gBAAA;AAAA,MACvB,iBAAiB,EAAC;AAAA,MAClB,SAAS,IAAA,CAAK;AAAA,KAChB;AAAA,IACA,QAAQ,MAAA,CAAO,WAAA;AAAA,MACb,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAKC,MAAK,CAAA,KAAM;AAAA,QAChD,GAAA;AAAA,QACA;AAAA,UACE,GAAGA,MAAAA;AAAA,UACH,KAAA,EAAO,gBAAA,CAAiB,IAAA,CAAK,QAAA,EAAUA,OAAM,KAAK,CAAA;AAAA,UAClD,UAAA,EAAY,qBAAA,CAAsB,IAAA,CAAK,QAAA,EAAUA,OAAM,KAAK;AAAA;AAC9D,OACD;AAAA,KACH;AAAA,IACA,OAAO,MAAA,CAAO,WAAA;AAAA,MACZ,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAKA,MAAK,CAAA,KAAM;AAAA,QAC/C,GAAA;AAAA,QACA;AAAA,UACE,GAAGA,MAAAA;AAAA,UACH,KAAA,EAAO,gBAAA,CAAiB,IAAA,CAAK,QAAA,EAAUA,OAAM,KAAK;AAAA;AACpD,OACD;AAAA,KACH;AAAA,IACA,gBAAA,sBAAsB,GAAA,CAAI;AAAA,MACxB,OAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,IAAA,CAAK,UAAA;AAAA,MACL,KAAK,SAAA,IAAa,EAAA;AAAA,MAClB;AAAA,KACD,CAAA;AAAA,IACD,QAAQ,IAAI,GAAA;AAAA,MACV,IAAA,CAAK,MAAA,CACF,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,EAAM,CAAA,CACjB,MAAA,CAAO,OAAO;AAAA;AACnB,GACF;AAEA,EAAA,MAAA,CAAO,eAAe,eAAA,GAAkB;AAAA,IACtC,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,KAAA;AAAA,IAC5B,OAAA,EAAS,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAA;AAAA,IAC9B,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,KAAA;AAAA,IAC5B,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,MAAM,SAAA,GAAY,SAAA,CAAU,CAAC,GAAA,KAA2B;AACtD,EAAA,IAAI,IAAA,GAAO,KAAA,CAAM,GAAG,CAAA,KAAM,CAAA;AAC1B,EAAA,IAAI,KAAA,GAAQ,OAAO,eAAA,CAAgB,MAAA;AACnC,EAAA,OAAO,gBAAgB,KAAK,CAAA;AAC9B,CAAC,CAAA;AAED,SAAS,gBAAA,CACP,UACA,KAAA,EACY;AACZ,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,OAAO,OAAK,QAAA,CAAS,SAAA,CAAU,CAAC,CAAC,EAAE,CAAC,CAAA;AAAA,EACtC;AAEA,EAAA,IAAI,MAAA,GAAS,UAAU,KAAK,CAAA;AAE5B,EAAA,IAAI,CAAC,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA;AAE3B,EAAA,OAAO,CAAA,CAAA,KAAK;AACV,IAAA,IAAI,MAAA,GAAS,CAAA;AAEb,IAAA,KAAA,IAAS,SAAS,MAAA,EAAQ;AACxB,MAAA,MAAA,GAAS,QAAA,CAAS,KAAK,CAAA,CAAE,MAAM,CAAA;AAAA,IACjC;AAEA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AACF;AAEA,SAAS,qBAAA,CACP,UACA,KAAA,EACY;AACZ,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,OAAO,OAAK,QAAA,CAAS,SAAA,CAAU,CAAC,CAAC,EAAE,CAAC,CAAA;AAAA,EACtC;AAEA,EAAA,IAAI,MAAA,GAAS,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAA,KAAK;AACrC,IAAA,IAAI,CAAA,CAAE,UAAA,CAAW,IAAI,CAAA,EAAG;AACtB,MAAA,CAAA,GAAI,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IACf;AAEA,IAAA,OAAO,CAAA,EAAA,EAAK,UAAA,CAAW,CAAC,CAAC,CAAA,CAAA;AAAA,EAC3B,CAAC,CAAA;AAED,EAAA,IAAI,CAAC,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA;AAE3B,EAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AAEnB,EAAA,OAAO,CAAA,CAAA,KAAK;AACV,IAAA,IAAI,MAAA,GAAS,CAAA;AAEb,IAAA,KAAA,IAAS,SAAS,MAAA,EAAQ;AACxB,MAAA,MAAA,GAAS,QAAA,CAAS,KAAK,CAAA,CAAE,MAAM,CAAA;AAAA,IACjC;AAEA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AACF;;ACjLA,SAAS,kBAAkB,KAAA,EAAsC;AAC/D,EAAA,OAAO,IAAI,KAAA,EAAO,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAC,CAAA;AAChD;AAEA,SAAS,UAAA,CAAW,OAAe,OAAA,EAAiB;AAClD,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,GAAA,EAAI,GAAI,IAAA,CAAK,GAAA;AAEjC,EAAA,MAAM,KAAA,GAAQ,KAAA,CACX,KAAA,CAAM,IAAI,CAAA,CACV,OAAO,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,CAAE,MAAM,CAAA,CACjC,IAAI,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,EAAK,CAAE,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,CAAE,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAC,CAAA;AAE5D,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,gBAAgB,GAAA,EAAa;AACpC,EAAA,OACE,GAAA,CAEG,QAAQ,aAAA,EAAe,CAAC,GAAG,CAAA,KAAM,QAAA,CAAS,MAAM,CAAA,CAAE,CAAC,CAAC,EAEpD,OAAA,CAAQ,mBAAA,EAAqB,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAA,EAAI,SAAS,WAAW,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA,CAAG,CAAA;AAE7E;AAEA,SAAS,WAAA,CACP,KAAA,EACA,OAAA,EACA,UAAA,EACA,IAAA,EACA;AACA,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,SAAS,UAAU,CAAA;AAClD,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,UAAA,EAAY,SAAS,IAAA,CAAK,aAAA;AAE3D,EAAA,OACE;AAAA,EAAK,MAAM,CAAA,CAAA,GACX,UAAA,CAAW,KAAA,EAAO,OAAO,CAAA,CACtB,GAAA;AAAA,IACC,CAAA,IAAA,KACE,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAA,EAAI,aAAA,CAAc,CAAC,CAAC,CAAA,CAAA,CAAG;AAAA,IAEpE,IAAA,CAAK;AAAA,EAAK,MAAM,CAAA,CAAE,CAAA;AAEzB;AAEA,SAAS,UAAA,CAAW,MAAY,IAAA,EAA2B;AACzD,EAAA,OAAO,KAAK,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA,GAAI,EAAA,GAAK,KAAK,kBAAA,EAAmB;AAChE;AAEA,SAAS,UAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EACA;AACA,EAAA,MAAM,UAAA,GAAa,KAAK,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,KAAA,IAAS,CAAA,MAAA,EAAS,MAAA,CAAO,KAAK,CAAA,CAAA;AAE3E,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM,WACJ,IAAA,CAAK,MAAA,CAAO,OAAO,KAAK,CAAA,EAAG,cAAc,IAAA,CAAK,aAAA;AAEhD,IAAA,OAAO,QAAA,CAAS,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,CAAG,CAAA;AAAA,EACnC;AAEA,EAAA,MAAM,OAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,IAAA,IAAQ,UAAA;AAC/C,EAAA,MAAM,YAAY,IAAA,CAAK,MAAA,CAAO,OAAO,KAAK,CAAA,CAAE,SAAS,IAAA,CAAK,aAAA;AAE1D,EAAA,OAAO,IAAA,GAAO,SAAA,CAAU,IAAI,CAAA,GAAI,EAAA;AAClC;AAEA,SAAS,cAAc,GAAA,EAAoB;AACzC,EAAA,OAAO,GAAA,CAAI,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACrC;AAEA,SAAS,WAAA,CACP,GAAA,EACA,UAAA,EACA,IAAA,EACQ;AACR,EAAA,MAAM,WACH,GAAA,CAAI,IAAA,GAAO,GAAG,GAAA,CAAI,IAAI,OAAO,EAAA,KAC7B,GAAA,CAAI,WACH,iBAAA,CAAkB,EAAE,OAAO,IAAA,CAAK,KAAA,EAAO,QAAQ,IAAA,CAAK,QAAA,IAAY,GAAG,CAAA,CAAA;AAEvE,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,KAAA,EAAO,SAAS,IAAA,CAAK,aAAA;AACtD,EAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,GACd,WAAA,CAAY,IAAI,KAAA,EAAO,OAAA,EAAS,UAAA,EAAY,IAAI,CAAA,GAChD,EAAA;AAEJ,EAAA,MAAM,YAAA,GACJ,UAAA,GAAa,CAAA,GAAI,CAAA,EAAG,GAAA,CAAI,OAAO,IAAA,CAAK,MAAA,GAAS,UAAU,CAAC,CAAA,SAAA,CAAA,GAAc,EAAA;AAExE,EAAA,MAAM,WAAA,GAAc,GAAA,CAAI,KAAA,GACpB,MAAA,GAAS,WAAA,CAAY,IAAI,KAAA,EAAO,UAAA,GAAa,CAAA,EAAG,IAAI,CAAA,GACpD,EAAA;AAEJ,EAAA,OAAO,aAAA,CAAc,YAAA,GAAe,OAAA,GAAU,KAAA,GAAQ,WAAW,CAAA;AACnE;AAEA,SAAS,gBAAA,CACP,KACA,IAAA,EACQ;AACR,EAAA,MAAM,aAAkB,EAAC;AACzB,EAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,EAAA,IAAI,iBAAA,CAAkB,GAAG,CAAA,EAAG;AAC1B,IAAA,OAAO,WAAA,CAAY,GAAA,EAAK,CAAA,EAAG,IAAI,CAAA;AAAA,EACjC,CAAA,MAAO;AACL,IAAA,KAAA,MAAW,OAAO,GAAA,EAAK;AACrB,MAAA,KAAA,GAAQ,KAAA;AAER,MAAA,IAAI,iBAAA,CAAkB,GAAA,CAAI,GAAG,CAAC,CAAA,EAAG;AAC/B,QAAA,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA,EAAGD,OAAA,CAAY,MAAA,EAAQ,MAAM,WAAA,CAAY,GAAA,CAAI,GAAG,CAAA,EAAG,CAAA,EAAG,IAAI,CAAC,CAAA;AAAA,MACxE;AAEA,MAAA,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA,CAAI,GAAG,CAAA;AAAA,IAC3B;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ,SAAS,IAAA,CAAK,aAAA;AAExD,EAAA,OAAO,eAAe,IAAA,CAAK,SAAA,CAAU,UAAA,EAAY,IAAA,CAAK,cAAc,CAAC,CAAA;AACvE;AAEO,SAAS,OAAkC,MAAA,EAAmB;AACnE,EAAA,MAAM,IAAA,GAAO,IAAA;AACb,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,UAAU,CAAC,CAAA,GAC5C,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,GACtB,EAAA;AAEJ,EAAA,MAAM,aAAa,IAAA,CAAK,SAAA,GACpB,gBAAA,CAAiB,MAAA,CAAO,KAAK,SAAS,CAAA,EAAG,IAAI,CAAA,GAC7C,iBAAiB,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,gBAAgB,GAAG,IAAI,CAAA;AAE9D,EAAA,MAAM,OAAO,UAAA,CAAW,IAAI,KAAK,MAAA,CAAO,IAAI,GAAG,IAAI,CAAA;AACnD,EAAA,MAAM,cAAc,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,EAAA;AAEzD,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,KAAA,IAAS,IAAA,CAAK,aAAA;AACrC,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,MAAA,EAAQ,OAAA,EAAS,IAAI,CAAA;AAE7C,EAAA,MAAM,IAAA,GAAO,OAAO,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,IAAc,CAAA,GAAI,EAAA;AAE1E,EAAA,IAAI,IAAA;AACJ,EAAA,MAAM,OAAO,aAAA,CAAc,CAAC,MAAM,eAAA,CAAgB,OAAO,CAAC,CAAC,CAAA;AAC3D,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,CAAC,IAAA,EAAM,WAAW,CAAC,CAAA;AAC/C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,EAAA,CAAG,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA,CAAK,EAAA,CAAG,KAAA,CAAM,KAAK,CAAA,GAAI,CAAA;AAE1E,EAAA,IAAA,GACE,KAAA,GAAQ,CAAA,IAAK,IAAA,CAAK,OAAA,IAAW,KACzB,IAAA,GAAO,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,KAAA,GAAA,CAC1B,KAAA,GAAQ,CAAA,CAAA,EAAI,KAAK,OAAO,EAAA,IAAM,IAAA;AAErC,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,IAAA,IAAQ,IAAA,GAAO,UAAA;AAAA,EACjB;AAEA,EAAA,OAAO,OAAA,GAAU,IAAA,GAAO,IAAA,GAAO,IAAA,GAAO,IAAA;AACxC;;AC9JA,SAAS,cAAc,OAAA,EAA6B;AAClD,EAAA,MAAM,IAAA,GAAO,aAAa,OAAO,CAAA;AACjC,EAAA,OAAO,MAAA,CAAO,KAAK,IAAI,CAAA;AACzB;AAMO,SAAS,KAAA,CAAM,IAAA,GAA2B,EAAC,EAAG;AACnD,EAAA,IAAI,WAAA;AAEJ,EAAA,OAAO,iBAAA;AAAA,IACL,SAAU,MAAA,EAAQ;AAChB,MAAA,IAAIE,UAAS,aAAA,CAAc;AAAA,QACzB,UAAA,EAAa,OAAe,UAAA,IAAc,KAAA;AAAA,QAC1C,GAAG;AAAA,OACJ,CAAA;AAED,MAAA,IAAI,SAAA,GAAY,KAAA;AAChB,MAAA,IAAI,IAAA;AAEJ,MAAA,MAAM,MAAA,GAAS,IAAI,SAAA,CAAU;AAAA,QAC3B,UAAA,EAAY,IAAA;AAAA,QACZ,WAAA,EAAa,IAAA;AAAA,QACb,SAAA,CAAU,KAAA,EAAO,GAAA,EAAK,EAAA,EAAI;AACxB,UAAA,IAAA,GAAOA,QAAO,KAAK,CAAA;AAEnB,UAAA,IAAI,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,EAAG;AACvB,YAAA,SAAA,GAAY,IAAA;AAAA,UACd,WAAW,SAAA,EAAW;AACpB,YAAA,IAAA,GAAO,OAAO,IAAA,GAAO,IAAA;AACrB,YAAA,SAAA,GAAY,KAAA;AAAA,UACd,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,IAAA,GAAO,IAAA;AAAA,UAChB;AAEA,UAAA,EAAA,CAAG,MAAM,IAAI,CAAA;AAAA,QACf;AAAA,OACD,CAAA;AAED,MAAA,WAAA,GAAc,kBAAA,CAAmB;AAAA,QAC/B,IAAA,EAAM,CAAA;AAAA,QACN,MAAA,EAAQ,IAAA;AAAA,QACR,KAAA,EAAO,IAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACP,CAAA;AAED,MAAA,MAAA,CAAO,EAAA,CAAG,SAAA,EAAW,SAAUC,KAAAA,EAAM;AACnC,QAAA,WAAA,CAAY,KAAA,CAAMA,QAAO,IAAI,CAAA;AAAA,MAC/B,CAAC,CAAA;AAED,MAAA,IAAA,CAAK,MAAA,EAAQ,QAAQ,WAAW,CAAA;AAChC,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IACA;AAAA,MACE,gBAAA,EAAkB,IAAA;AAAA,MAClB,gBAAA,EAAkB,KAAA;AAAA,MAClB,KAAA,CAAM,KAAK,EAAA,EAAI;AACb,QAAA,WAAA,CAAY,EAAA,CAAG,SAAS,MAAM;AAC5B,UAAA,EAAA,CAAG,GAAG,CAAA;AAAA,QACR,CAAC,CAAA;AAAA,MACH;AAAA;AACF,GACF;AACF;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrew_l/pino-pretty",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Pino transport for beautiful log output",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"@types/node": "22.10.5",
|
|
30
30
|
"@types/pump": "^1.1.3",
|
|
31
31
|
"pino": "^9.7.0",
|
|
32
|
-
"typescript": "~5.
|
|
33
|
-
"unbuild": "3.
|
|
34
|
-
"vitest": "^2.
|
|
32
|
+
"typescript": "~5.8.3",
|
|
33
|
+
"unbuild": "3.5.0",
|
|
34
|
+
"vitest": "^3.2.4"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@cto.af/string-width": "^4.0.1",
|
|
@@ -39,9 +39,10 @@
|
|
|
39
39
|
"pino-abstract-transport": "^2.0.0",
|
|
40
40
|
"pump": "^3.0.2",
|
|
41
41
|
"sonic-boom": "^4.2.0",
|
|
42
|
-
"@andrew_l/toolkit": "0.
|
|
42
|
+
"@andrew_l/toolkit": "0.3.0"
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
45
|
+
"check-types": "tsc --noEmit",
|
|
45
46
|
"build": "unbuild"
|
|
46
47
|
}
|
|
47
48
|
}
|