@visulima/pail 1.0.0 → 1.1.1

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.
Files changed (105) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +3 -3
  3. package/dist/{abstract-pretty-reporter-doXJ0wsq.d.ts → abstract-pretty-reporter-L82dKD7X.d.ts} +1 -2
  4. package/dist/{abstract-pretty-reporter-dDQbeuZX.d.cts → abstract-pretty-reporter-SBWxNXW5.d.cts} +1 -2
  5. package/dist/chunk-2SZMC2SJ.cjs +13 -0
  6. package/dist/chunk-2SZMC2SJ.cjs.map +1 -0
  7. package/dist/chunk-576JQ6DN.js +9 -0
  8. package/dist/chunk-576JQ6DN.js.map +1 -0
  9. package/dist/chunk-5MNFJRLM.cjs +10 -0
  10. package/dist/chunk-5MNFJRLM.cjs.map +1 -0
  11. package/dist/{chunk-4RK45K5E.cjs → chunk-AFMDCM5W.js} +2 -4
  12. package/dist/chunk-AFMDCM5W.js.map +1 -0
  13. package/dist/chunk-ETY4VGL2.js +21 -0
  14. package/dist/chunk-ETY4VGL2.js.map +1 -0
  15. package/dist/chunk-F4FJCQ4L.cjs +9 -0
  16. package/dist/chunk-F4FJCQ4L.cjs.map +1 -0
  17. package/dist/chunk-KERJDMYV.js +8 -0
  18. package/dist/chunk-KERJDMYV.js.map +1 -0
  19. package/dist/{chunk-PVAYQO5O.js → chunk-N2UPJYJR.cjs} +4 -2
  20. package/dist/chunk-N2UPJYJR.cjs.map +1 -0
  21. package/dist/{chunk-EBP7SMYV.js → chunk-NF47XQ47.js} +3 -3
  22. package/dist/{chunk-EBP7SMYV.js.map → chunk-NF47XQ47.js.map} +1 -1
  23. package/dist/chunk-O34IIMWQ.cjs +31 -0
  24. package/dist/chunk-O34IIMWQ.cjs.map +1 -0
  25. package/dist/{chunk-MU2CRXVO.cjs → chunk-QINSQ6TU.cjs} +1 -1
  26. package/dist/{chunk-MU2CRXVO.cjs.map → chunk-QINSQ6TU.cjs.map} +1 -1
  27. package/dist/chunk-SR3Q3EUO.js +7 -0
  28. package/dist/chunk-SR3Q3EUO.js.map +1 -0
  29. package/dist/chunk-TAH23BHM.js +5 -0
  30. package/dist/chunk-TAH23BHM.js.map +1 -0
  31. package/dist/chunk-YP3U3DTV.cjs +10 -0
  32. package/dist/chunk-YP3U3DTV.cjs.map +1 -0
  33. package/dist/chunk-ZB7IIFHO.js +7 -0
  34. package/dist/chunk-ZB7IIFHO.js.map +1 -0
  35. package/dist/chunk-ZJMTPHZR.cjs +7 -0
  36. package/dist/chunk-ZJMTPHZR.cjs.map +1 -0
  37. package/dist/index.browser.cjs +7 -8
  38. package/dist/index.browser.cjs.map +1 -1
  39. package/dist/index.browser.d.cts +4 -5
  40. package/dist/index.browser.d.ts +4 -5
  41. package/dist/index.browser.js +6 -7
  42. package/dist/index.browser.js.map +1 -1
  43. package/dist/index.server.cjs +16 -17
  44. package/dist/index.server.cjs.map +1 -1
  45. package/dist/index.server.d.cts +4 -5
  46. package/dist/index.server.d.ts +4 -5
  47. package/dist/index.server.js +14 -15
  48. package/dist/index.server.js.map +1 -1
  49. package/dist/{pail.browser-DH-2bBhK.d.ts → pail.browser-0Ej0KEkV.d.ts} +1 -2
  50. package/dist/{pail.browser-eQgV1vak.d.cts → pail.browser-qG_FNUeK.d.cts} +1 -2
  51. package/dist/processor.browser.cjs +2 -3
  52. package/dist/processor.browser.d.cts +1 -2
  53. package/dist/processor.browser.d.ts +1 -2
  54. package/dist/processor.browser.js +1 -2
  55. package/dist/processor.server.cjs +2 -3
  56. package/dist/processor.server.cjs.map +1 -1
  57. package/dist/processor.server.d.cts +1 -2
  58. package/dist/processor.server.d.ts +1 -2
  59. package/dist/processor.server.js +1 -2
  60. package/dist/processor.server.js.map +1 -1
  61. package/dist/reporter.browser.cjs +7 -8
  62. package/dist/reporter.browser.cjs.map +1 -1
  63. package/dist/reporter.browser.d.cts +2 -3
  64. package/dist/reporter.browser.d.ts +2 -3
  65. package/dist/reporter.browser.js +5 -6
  66. package/dist/reporter.browser.js.map +1 -1
  67. package/dist/reporter.server.cjs +13 -14
  68. package/dist/reporter.server.cjs.map +1 -1
  69. package/dist/reporter.server.d.cts +2 -3
  70. package/dist/reporter.server.d.ts +2 -3
  71. package/dist/reporter.server.js +10 -11
  72. package/dist/reporter.server.js.map +1 -1
  73. package/dist/{types.d-RNxsa9NR.d.cts → types--_CcxoUw.d.cts} +19 -51
  74. package/dist/{types.d-RNxsa9NR.d.ts → types--_CcxoUw.d.ts} +19 -51
  75. package/package.json +6 -9
  76. package/dist/chunk-32FAOPTJ.cjs +0 -10
  77. package/dist/chunk-32FAOPTJ.cjs.map +0 -1
  78. package/dist/chunk-46NTLZF7.cjs +0 -10
  79. package/dist/chunk-46NTLZF7.cjs.map +0 -1
  80. package/dist/chunk-4RK45K5E.cjs.map +0 -1
  81. package/dist/chunk-57OYT2NC.js +0 -7
  82. package/dist/chunk-57OYT2NC.js.map +0 -1
  83. package/dist/chunk-6ATEEAVC.cjs +0 -9
  84. package/dist/chunk-6ATEEAVC.cjs.map +0 -1
  85. package/dist/chunk-7OFJLC7L.cjs +0 -7
  86. package/dist/chunk-7OFJLC7L.cjs.map +0 -1
  87. package/dist/chunk-FJCEDFRI.js +0 -9
  88. package/dist/chunk-FJCEDFRI.js.map +0 -1
  89. package/dist/chunk-G62M5WJH.js +0 -8
  90. package/dist/chunk-G62M5WJH.js.map +0 -1
  91. package/dist/chunk-GZRIZCRG.cjs +0 -32
  92. package/dist/chunk-GZRIZCRG.cjs.map +0 -1
  93. package/dist/chunk-HKIS52YX.js +0 -22
  94. package/dist/chunk-HKIS52YX.js.map +0 -1
  95. package/dist/chunk-ICPHL4AR.js +0 -8
  96. package/dist/chunk-ICPHL4AR.js.map +0 -1
  97. package/dist/chunk-IQF3SXQR.cjs +0 -10
  98. package/dist/chunk-IQF3SXQR.cjs.map +0 -1
  99. package/dist/chunk-JYHWIRFR.js +0 -5
  100. package/dist/chunk-JYHWIRFR.js.map +0 -1
  101. package/dist/chunk-PVAYQO5O.js.map +0 -1
  102. package/dist/chunk-Y36365SA.cjs +0 -13
  103. package/dist/chunk-Y36365SA.cjs.map +0 -1
  104. package/dist/chunk-YKHMQW6V.js +0 -5
  105. package/dist/chunk-YKHMQW6V.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactive/interactive-manager.ts","../src/interactive/interactive-stream-hook.ts","../src/util/ansi-escapes.ts","../src/reporter/raw/raw.server.ts","../src/pail.server.ts","../src/index.server.ts"],"names":["terminalSize","wrapAnsi","_stream","_isActive","_isSuspended","_lastLength","_outside","InteractiveManager","stdout","stderr","__privateAdd","__privateSet","__privateGet","stream","count","hook","eraseRowCount","erase","separateHistory","rows","from","width","height","position","actualLength","outside","output","accumulator","row","status","StringDecoder","ESC","eraseScreen","eraseLine","cursorLeft","cursorUp","clearTerminal","cursorHide","cursorShow","eraseLines","clear","index","_decoder","_history","_method","_InteractiveStreamHook","data","arguments_","callback","element","message","InteractiveStreamHook","_stringify","_stdout","_stderr","_interactiveManager","_interactive","RawReporter","function_","manager","interactive","meta","context","groups","type","items","formattedMessage","value","streamType","groupSpaces","writeStream","PailServerImpl","PailBrowserImpl","options","rawReporter","reporters","rest","name","reporter","PailServer","_getDefaultLogLevel","createPail","MessageFormatterProcessor","ErrorProcessor","PrettyReporter","pail"],"mappings":"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","sourcesContent":["import terminalSize from \"terminal-size\";\nimport wrapAnsi from \"wrap-ansi\";\n\nimport type { InteractiveStreamHook } from \"./interactive-stream-hook\";\n\ntype StreamType = \"stderr\" | \"stdout\";\n\nexport class InteractiveManager {\n readonly #stream: {\n stderr: InteractiveStreamHook;\n stdout: InteractiveStreamHook;\n };\n\n #isActive = false;\n\n #isSuspended = false;\n\n #lastLength = 0;\n\n #outside = 0;\n\n public constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook) {\n this.#stream = {\n stderr,\n stdout,\n };\n }\n\n /**\n * Last printed rows count\n */\n public get lastLength(): number {\n return this.#lastLength;\n }\n\n /**\n * Rows count outside editable area\n */\n public get outside(): number {\n return this.#outside;\n }\n\n /**\n * Hook activity status\n */\n public get isHooked(): boolean {\n return this.#isActive;\n }\n\n /**\n * Suspend status for active hooks\n */\n public get isSuspended(): boolean {\n return this.#isSuspended;\n }\n\n /**\n * Removes from the bottom of output up the specified count of lines\n *\n * @param stream - Stream to remove lines from\n * @param count - lines count to remove\n */\n public erase(stream: StreamType, count = this.#lastLength): void {\n // eslint-disable-next-line security/detect-object-injection\n if (!this.#stream[stream]) {\n throw new Error(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n this.#stream[stream].erase(count);\n }\n\n /**\n * Hook stdout and stderr streams\n * @returns Success status\n */\n public hook(): boolean {\n if (!this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.active());\n\n this._clear(true);\n }\n\n return this.#isActive;\n }\n\n /**\n * Resume suspend hooks\n *\n * @param stream - Stream to resume\n * @param eraseRowCount - erase output rows count\n */\n public resume(stream: StreamType, eraseRowCount?: number): void {\n if (this.#isSuspended) {\n this.#isSuspended = false;\n\n if (eraseRowCount) {\n this.erase(stream, eraseRowCount);\n }\n\n this.#lastLength = 0;\n\n Object.values(this.#stream).forEach((hook) => hook.active());\n }\n }\n\n /**\n * Suspend active hooks for external output\n *\n * @param stream - Stream to suspend\n * @param erase - erase output\n */\n public suspend(stream: StreamType, erase = true): void {\n if (!this.#isSuspended) {\n this.#isSuspended = true;\n\n if (erase) {\n this.erase(stream);\n }\n\n Object.values(this.#stream).forEach((hook) => hook.renew());\n }\n }\n\n /**\n * Unhooks both stdout and stderr streams and print their story of logs\n *\n * @param separateHistory - If `true`, will add an empty line to the history output for individual recorded lines and console logs\n *\n * @returns Success status\n */\n public unhook(separateHistory = true): boolean {\n if (this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.inactive(separateHistory));\n\n this._clear();\n }\n\n return !this.#isActive;\n }\n\n /**\n * Update output\n *\n * @param stream - Stream to write to\n * @param rows - Text lines to write to standard output\n * @param from - Index of the line starting from which the contents of the terminal are being overwritten\n */\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public update(stream: StreamType, rows: string[], from = 0): void {\n if (rows.length > 0) {\n // eslint-disable-next-line security/detect-object-injection\n const hook = this.#stream[stream];\n\n if (hook) {\n const { columns: width, rows: height } = terminalSize();\n\n const position = from > height ? height - 1 : Math.max(0, Math.min(height - 1, from));\n const actualLength = this.lastLength - position;\n const outside = Math.max(actualLength - height, this.outside);\n\n // eslint-disable-next-line unicorn/no-array-reduce\n let output = rows.reduce<string[]>(\n (accumulator, row) => [\n ...accumulator,\n wrapAnsi(row, width, {\n hard: true,\n trim: false,\n wordWrap: true,\n }),\n ],\n [],\n );\n\n if (height <= actualLength) {\n hook.erase(height);\n\n if (position < outside) {\n output = output.slice(outside - position + 1);\n }\n } else if (actualLength) {\n hook.erase(actualLength);\n }\n\n hook.write(output.join(\"\\n\") + \"\\n\");\n\n this.#lastLength = outside ? outside + output.length + 1 : output.length;\n this.#outside = Math.max(this.lastLength - height, this.outside);\n }\n }\n }\n\n private _clear(status = false): void {\n this.#isActive = status;\n this.#lastLength = 0;\n this.#outside = 0;\n }\n}\n","import { StringDecoder } from \"node:string_decoder\";\n\nimport { cursorHide, cursorShow, eraseLines } from \"../util/ansi-escapes\";\n\nexport class InteractiveStreamHook {\n public static readonly DRAIN = true;\n\n readonly #decoder = new StringDecoder();\n\n #history: string[] = [];\n\n readonly #method: NodeJS.WriteStream[\"write\"];\n\n readonly #stream: NodeJS.WriteStream;\n\n public constructor(stream: NodeJS.WriteStream) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#method = stream.write;\n this.#stream = stream;\n }\n\n public active(): void {\n this.write(cursorHide as string);\n\n this.#stream.write = (data: Uint8Array | string, ...arguments_: [((error?: Error) => void)?] | [(string | undefined)?, ((error?: Error) => void)?]) => {\n const callback = arguments_.at(-1);\n\n this.#history.push(\n this.#decoder.write(\n typeof data === \"string\"\n ? Buffer.from(data, typeof arguments_[0] === \"string\" ? (arguments_[0] as BufferEncoding) : undefined)\n : Buffer.from(data),\n ),\n );\n\n if (typeof callback === \"function\") {\n callback();\n }\n\n return InteractiveStreamHook.DRAIN;\n };\n }\n\n public erase(count: number): void {\n if (count > 0) {\n this.write(eraseLines(count + 1) as string);\n }\n }\n\n public inactive(separateHistory = false): void {\n if (this.#history.length > 0) {\n if (separateHistory) {\n this.write(\"\\n\");\n }\n\n this.#history.forEach((element) => {\n this.write(element);\n });\n this.#history = [];\n }\n\n this.renew();\n }\n\n public renew(): void {\n this.#stream.write = this.#method;\n this.write(cursorShow as string);\n }\n\n public write(message: string): void {\n this.#method.apply(this.#stream, [message]);\n }\n}\n","const ESC = \"\\u001B[\";\n\nconst eraseScreen = ESC + \"2J\";\nconst eraseLine = ESC + \"2K\";\n\nconst cursorLeft = ESC + \"G\";\nconst cursorUp = (count = 1) => ESC + count + \"A\";\n\nexport const clearTerminal: string =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n process?.platform === \"win32\"\n ? `${eraseScreen}${ESC}0f`\n : // 1. Erases the screen (Only done in case `2` is not supported)\n // 2. Erases the whole screen including scrollback buffer\n // 3. Moves cursor to the top-left position\n // More info: https://www.real-world-systems.com/docs/ANSIcode.html\n `${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const cursorHide: string = ESC + \"?25l\";\nexport const cursorShow: string = ESC + \"?25h\";\n\nexport const eraseLines = (count: number): string => {\n let clear = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0; index < count; index++) {\n clear += eraseLine + (index < count - 1 ? cursorUp() : \"\");\n }\n\n if (count) {\n clear += cursorLeft;\n }\n\n return clear;\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ReadonlyMeta, StreamAwareReporter, StringifyAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\n\nexport class RawReporter<L extends string = never> implements StreamAwareReporter<L>, StringifyAwareReporter<L> {\n #stringify: typeof stringify | undefined;\n\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor() {\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n const { context, groups, message, type } = meta;\n\n const items: string[] = [];\n\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this.#stringify as typeof stringify)(message);\n\n items.push(formattedMessage + \"\");\n\n if (context) {\n items.push(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n ...context.map((value) => {\n if (typeof value === \"object\") {\n return \" \" + (this.#stringify as typeof stringify)(value);\n }\n\n return \" \" + value;\n }),\n );\n }\n\n const streamType = [\"error\", \"trace\", \"warn\"].includes(type.level as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n const groupSpaces: string = groups ? groups.map(() => \" \").join(\"\") : \"\";\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, (groupSpaces + items.join(\"\")).split(\"\\n\"), 0);\n } else {\n writeStream(groupSpaces + items.join(\"\"), stream);\n }\n }\n}\n","import type { LiteralUnion } from \"type-fest\";\n\nimport { InteractiveManager } from \"./interactive/interactive-manager\";\nimport { InteractiveStreamHook } from \"./interactive/interactive-stream-hook\";\nimport { PailBrowserImpl } from \"./pail.browser\";\nimport { RawReporter } from \"./reporter/raw/raw.server\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n InteractiveStreamReporter,\n LoggerFunction,\n LoggerTypesAwareReporter,\n Reporter,\n ServerConstructorOptions,\n StreamAwareReporter,\n StringifyAwareReporter,\n} from \"./types\";\nimport { clearTerminal } from \"./util/ansi-escapes\";\n\nclass PailServerImpl<T extends string = never, L extends string = never> extends PailBrowserImpl<T, L> {\n protected readonly stdout: NodeJS.WriteStream;\n\n protected readonly stderr: NodeJS.WriteStream;\n\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n protected interactiveManager: InteractiveManager | undefined;\n\n protected readonly interactive: boolean;\n\n public constructor(public readonly options: ServerConstructorOptions<T, L> = {}) {\n const { interactive, rawReporter, reporters, stderr, stdout, ...rest } = options;\n\n super(rest as ConstructorOptions<T, L>);\n\n this.interactive = interactive ?? false;\n\n this.stdout = stdout as NodeJS.WriteStream;\n this.stderr = stderr as NodeJS.WriteStream;\n\n if (this.interactive) {\n this.interactiveManager = new InteractiveManager(new InteractiveStreamHook(this.stdout), new InteractiveStreamHook(this.stderr));\n }\n\n if (Array.isArray(reporters)) {\n this.registerReporters(reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n }\n\n public override scope<N extends string = T>(...name: string[]): PailServerType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailServerType<N, L>;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n public getInteractiveManager(): InteractiveManager | undefined {\n return this.interactiveManager;\n }\n\n public wrapStd() {\n this._wrapStream(this.stdout, \"log\");\n this._wrapStream(this.stderr, \"log\");\n }\n\n public restoreStd() {\n this._restoreStream(this.stdout);\n this._restoreStream(this.stderr);\n }\n\n public wrapAll(): void {\n this.wrapConsole();\n this.wrapStd();\n }\n\n public restoreAll(): void {\n this.restoreConsole();\n this.restoreStd();\n }\n\n public override clear(): void {\n this.stdout.write(clearTerminal as string);\n this.stderr.write(clearTerminal as string);\n }\n\n protected override extendReporter(reporter: Reporter<L>): Reporter<L> {\n if ((reporter as StreamAwareReporter<L>).setStdout) {\n (reporter as StreamAwareReporter<L>).setStdout(this.stdout);\n }\n\n if ((reporter as StreamAwareReporter<L>).setStderr) {\n (reporter as StreamAwareReporter<L>).setStderr(this.stderr);\n }\n\n if ((reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes) {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if ((reporter as StringifyAwareReporter<L>).setStringify) {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n if ((reporter as InteractiveStreamReporter<L>).setIsInteractive) {\n (reporter as InteractiveStreamReporter<L>).setIsInteractive(this.interactive);\n }\n\n if (this.interactive && (reporter as InteractiveStreamReporter<L>).setInteractiveManager) {\n (reporter as InteractiveStreamReporter<L>).setInteractiveManager(this.interactiveManager);\n }\n\n return reporter;\n }\n\n private _wrapStream(stream: NodeJS.WriteStream | undefined, type: LiteralUnion<DefaultLogTypes, L>) {\n if (!stream) {\n return;\n }\n\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method\n (stream as any).__write = stream.write;\n }\n\n // Override\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n (stream as any).write = (data: any): void => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n (this as unknown as PailServerImpl)[type].log(String(data).trim());\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _restoreStream(stream?: NodeJS.WriteStream): void {\n if (!stream) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n stream.write = (stream as any).__write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n delete (stream as any).__write;\n }\n }\n}\n\nexport type PailServerType<T extends string = never, L extends string = never> = PailServerImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ServerConstructorOptions<TC, LC>) => PailServerType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ServerConstructorOptions<T, L>) => PailServerType<T, L>;\n\nexport const PailServer = PailServerImpl as unknown as PailServerType;\n","import type { PailServerType } from \"./pail.server\";\nimport { PailServer } from \"./pail.server\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { PrettyReporter } from \"./reporter/pretty/pretty.server\";\nimport type { ConstructorOptions, ExtendedRfc5424LogLevels } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst _getDefaultLogLevel = (): ExtendedRfc5424LogLevels => {\n if (process.env[\"NODE_ENV\"] === \"debug\" || process.env[\"DEBUG\"] !== undefined) {\n return \"debug\";\n }\n\n if (process.env[\"NODE_ENV\"] === \"test\") {\n return \"warning\";\n }\n\n return \"informational\";\n};\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailServerType<T, L> =>\n new PailServer<T, L>({\n logLevel: _getDefaultLogLevel(),\n processors: [new MessageFormatterProcessor<L>(), new ErrorProcessor<L>()],\n reporters: [new PrettyReporter()],\n stderr: process.stderr,\n stdout: process.stdout,\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailServerType as Pail } from \"./pail.server\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
1
+ {"version":3,"sources":["../src/interactive/interactive-manager.ts","../src/interactive/interactive-stream-hook.ts","../src/util/ansi-escapes.ts","../src/reporter/raw/raw.server.ts","../src/pail.server.ts","../src/index.server.ts"],"names":["terminalSize","wrapAnsi","InteractiveManager","#stream","#isActive","#isSuspended","#lastLength","#outside","stdout","stderr","stream","count","hook","eraseRowCount","erase","separateHistory","rows","from","width","height","position","actualLength","outside","output","accumulator","row","status","StringDecoder","ESC","eraseScreen","eraseLine","cursorLeft","cursorUp","clearTerminal","cursorHide","cursorShow","eraseLines","clear","index","InteractiveStreamHook","_InteractiveStreamHook","#decoder","#history","#method","data","arguments_","callback","element","message","RawReporter","#stringify","#stdout","#stderr","#interactiveManager","#interactive","function_","manager","interactive","meta","context","groups","type","items","formattedMessage","value","streamType","groupSpaces","writeStream","PailServerImpl","PailBrowserImpl","options","rawReporter","reporters","rest","name","reporter","PailServer","_getDefaultLogLevel","createPail","MessageFormatterProcessor","ErrorProcessor","PrettyReporter","pail"],"mappings":"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","sourcesContent":["import terminalSize from \"terminal-size\";\nimport wrapAnsi from \"wrap-ansi\";\n\nimport type { InteractiveStreamHook } from \"./interactive-stream-hook\";\n\ntype StreamType = \"stderr\" | \"stdout\";\n\nexport class InteractiveManager {\n readonly #stream: {\n stderr: InteractiveStreamHook;\n stdout: InteractiveStreamHook;\n };\n\n #isActive = false;\n\n #isSuspended = false;\n\n #lastLength = 0;\n\n #outside = 0;\n\n public constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook) {\n this.#stream = {\n stderr,\n stdout,\n };\n }\n\n /**\n * Last printed rows count\n */\n public get lastLength(): number {\n return this.#lastLength;\n }\n\n /**\n * Rows count outside editable area\n */\n public get outside(): number {\n return this.#outside;\n }\n\n /**\n * Hook activity status\n */\n public get isHooked(): boolean {\n return this.#isActive;\n }\n\n /**\n * Suspend status for active hooks\n */\n public get isSuspended(): boolean {\n return this.#isSuspended;\n }\n\n /**\n * Removes from the bottom of output up the specified count of lines\n *\n * @param stream - Stream to remove lines from\n * @param count - lines count to remove\n */\n public erase(stream: StreamType, count = this.#lastLength): void {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n this.#stream[stream].erase(count);\n }\n\n /**\n * Hook stdout and stderr streams\n * @returns Success status\n */\n public hook(): boolean {\n if (!this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.active());\n\n this._clear(true);\n }\n\n return this.#isActive;\n }\n\n /**\n * Resume suspend hooks\n *\n * @param stream - Stream to resume\n * @param eraseRowCount - erase output rows count\n */\n public resume(stream: StreamType, eraseRowCount?: number): void {\n if (this.#isSuspended) {\n this.#isSuspended = false;\n\n if (eraseRowCount) {\n this.erase(stream, eraseRowCount);\n }\n\n this.#lastLength = 0;\n\n Object.values(this.#stream).forEach((hook) => hook.active());\n }\n }\n\n /**\n * Suspend active hooks for external output\n *\n * @param stream - Stream to suspend\n * @param erase - erase output\n */\n public suspend(stream: StreamType, erase = true): void {\n if (!this.#isSuspended) {\n this.#isSuspended = true;\n\n if (erase) {\n this.erase(stream);\n }\n\n Object.values(this.#stream).forEach((hook) => hook.renew());\n }\n }\n\n /**\n * Unhooks both stdout and stderr streams and print their story of logs\n *\n * @param separateHistory - If `true`, will add an empty line to the history output for individual recorded lines and console logs\n *\n * @returns Success status\n */\n public unhook(separateHistory = true): boolean {\n if (this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.inactive(separateHistory));\n\n this._clear();\n }\n\n return !this.#isActive;\n }\n\n /**\n * Update output\n *\n * @param stream - Stream to write to\n * @param rows - Text lines to write to standard output\n * @param from - Index of the line starting from which the contents of the terminal are being overwritten\n */\n public update(stream: StreamType, rows: string[], from = 0): void {\n if (rows.length > 0) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const hook = this.#stream[stream];\n\n const { columns: width, rows: height } = terminalSize();\n\n const position = from > height ? height - 1 : Math.max(0, Math.min(height - 1, from));\n const actualLength = this.lastLength - position;\n const outside = Math.max(actualLength - height, this.outside);\n\n // eslint-disable-next-line unicorn/no-array-reduce\n let output = rows.reduce<string[]>(\n (accumulator, row) => [\n ...accumulator,\n wrapAnsi(row, width, {\n hard: true,\n trim: false,\n wordWrap: true,\n }),\n ],\n [],\n );\n\n if (height <= actualLength) {\n hook.erase(height);\n\n if (position < outside) {\n output = output.slice(outside - position + 1);\n }\n } else if (actualLength) {\n hook.erase(actualLength);\n }\n\n hook.write(output.join(\"\\n\") + \"\\n\");\n\n this.#lastLength = outside ? outside + output.length + 1 : output.length;\n this.#outside = Math.max(this.lastLength - height, this.outside);\n }\n }\n\n private _clear(status = false): void {\n this.#isActive = status;\n this.#lastLength = 0;\n this.#outside = 0;\n }\n}\n","import { StringDecoder } from \"node:string_decoder\";\n\nimport { cursorHide, cursorShow, eraseLines } from \"../util/ansi-escapes\";\n\nexport class InteractiveStreamHook {\n public static readonly DRAIN = true;\n\n readonly #decoder = new StringDecoder();\n\n #history: string[] = [];\n\n readonly #method: NodeJS.WriteStream[\"write\"];\n\n readonly #stream: NodeJS.WriteStream;\n\n public constructor(stream: NodeJS.WriteStream) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#method = stream.write;\n this.#stream = stream;\n }\n\n public active(): void {\n this.write(cursorHide as string);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - We are modifying the write method\n this.#stream.write = (data: Uint8Array | string, ...arguments_: [((error?: Error) => void)?] | [(string | undefined)?, ((error?: Error) => void)?]) => {\n const callback = arguments_.at(-1);\n\n this.#history.push(\n this.#decoder.write(\n typeof data === \"string\"\n ? Buffer.from(data, typeof arguments_[0] === \"string\" ? (arguments_[0] as BufferEncoding) : undefined)\n : Buffer.from(data),\n ),\n );\n\n if (typeof callback === \"function\") {\n callback();\n }\n\n return InteractiveStreamHook.DRAIN;\n };\n }\n\n public erase(count: number): void {\n if (count > 0) {\n this.write(eraseLines(count + 1) as string);\n }\n }\n\n public inactive(separateHistory = false): void {\n if (this.#history.length > 0) {\n if (separateHistory) {\n this.write(\"\\n\");\n }\n\n this.#history.forEach((element) => {\n this.write(element);\n });\n this.#history = [];\n }\n\n this.renew();\n }\n\n public renew(): void {\n this.#stream.write = this.#method;\n this.write(cursorShow as string);\n }\n\n public write(message: string): void {\n this.#method.apply(this.#stream, [message]);\n }\n}\n","const ESC = \"\\u001B[\";\n\nconst eraseScreen = ESC + \"2J\";\nconst eraseLine = ESC + \"2K\";\n\nconst cursorLeft = ESC + \"G\";\nconst cursorUp = (count = 1) => ESC + count + \"A\";\n\nexport const clearTerminal: string =\n process.platform === \"win32\"\n ? `${eraseScreen}${ESC}0f`\n : // 1. Erases the screen (Only done in case `2` is not supported)\n // 2. Erases the whole screen including scrollback buffer\n // 3. Moves cursor to the top-left position\n // More info: https://www.real-world-systems.com/docs/ANSIcode.html\n `${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const cursorHide: string = ESC + \"?25l\";\nexport const cursorShow: string = ESC + \"?25h\";\n\nexport const eraseLines = (count: number): string => {\n let clear = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0; index < count; index++) {\n clear += eraseLine + (index < count - 1 ? cursorUp() : \"\");\n }\n\n if (count) {\n clear += cursorLeft;\n }\n\n return clear;\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ReadonlyMeta, StreamAwareReporter, StringifyAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\n\nexport class RawReporter<L extends string = never> implements StreamAwareReporter<L>, StringifyAwareReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor() {\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n const { context, groups, message, type } = meta;\n\n const items: string[] = [];\n\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this.#stringify as typeof stringify)(message);\n\n items.push(formattedMessage + \"\");\n\n if (context) {\n items.push(\n ...context.map((value) => {\n if (typeof value === \"object\") {\n return \" \" + (this.#stringify as typeof stringify)(value);\n }\n\n return \" \" + value;\n }),\n );\n }\n\n const streamType = [\"error\", \"trace\", \"warn\"].includes(type.level as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, (groupSpaces + items.join(\"\")).split(\"\\n\"), 0);\n } else {\n writeStream(groupSpaces + items.join(\"\"), stream);\n }\n }\n}\n","import { InteractiveManager } from \"./interactive/interactive-manager\";\nimport { InteractiveStreamHook } from \"./interactive/interactive-stream-hook\";\nimport { PailBrowserImpl } from \"./pail.browser\";\nimport { RawReporter } from \"./reporter/raw/raw.server\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n InteractiveStreamReporter,\n LiteralUnion,\n LoggerFunction,\n LoggerTypesAwareReporter,\n Reporter,\n ServerConstructorOptions,\n StreamAwareReporter,\n StringifyAwareReporter,\n} from \"./types\";\nimport { clearTerminal } from \"./util/ansi-escapes\";\n\nclass PailServerImpl<T extends string = never, L extends string = never> extends PailBrowserImpl<T, L> {\n protected readonly stdout: NodeJS.WriteStream;\n\n protected readonly stderr: NodeJS.WriteStream;\n\n protected interactiveManager: InteractiveManager | undefined;\n\n protected readonly interactive: boolean;\n\n public constructor(public readonly options: ServerConstructorOptions<T, L> = {}) {\n const { interactive, rawReporter, reporters, stderr, stdout, ...rest } = options;\n\n super(rest as ConstructorOptions<T, L>);\n\n this.interactive = interactive ?? false;\n\n this.stdout = stdout as NodeJS.WriteStream;\n this.stderr = stderr as NodeJS.WriteStream;\n\n if (this.interactive) {\n this.interactiveManager = new InteractiveManager(new InteractiveStreamHook(this.stdout), new InteractiveStreamHook(this.stderr));\n }\n\n if (Array.isArray(reporters)) {\n this.registerReporters(reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n }\n\n public override scope<N extends string = T>(...name: string[]): PailServerType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailServerType<N, L>;\n }\n\n public getInteractiveManager(): InteractiveManager | undefined {\n return this.interactiveManager;\n }\n\n public wrapStd() {\n this._wrapStream(this.stdout, \"log\");\n this._wrapStream(this.stderr, \"log\");\n }\n\n public restoreStd() {\n this._restoreStream(this.stdout);\n this._restoreStream(this.stderr);\n }\n\n public wrapAll(): void {\n this.wrapConsole();\n this.wrapStd();\n }\n\n public restoreAll(): void {\n this.restoreConsole();\n this.restoreStd();\n }\n\n public override clear(): void {\n this.stdout.write(clearTerminal as string);\n this.stderr.write(clearTerminal as string);\n }\n\n protected override extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as StreamAwareReporter<L>).setStdout === \"function\") {\n (reporter as StreamAwareReporter<L>).setStdout(this.stdout);\n }\n\n if (typeof (reporter as StreamAwareReporter<L>).setStderr === \"function\") {\n (reporter as StreamAwareReporter<L>).setStderr(this.stderr);\n }\n\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n if (typeof (reporter as InteractiveStreamReporter<L>).setIsInteractive === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setIsInteractive(this.interactive);\n }\n\n if (this.interactive && typeof (reporter as InteractiveStreamReporter<L>).setInteractiveManager === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setInteractiveManager(this.interactiveManager);\n }\n\n return reporter;\n }\n\n private _wrapStream(stream: NodeJS.WriteStream | undefined, type: LiteralUnion<DefaultLogTypes, L>) {\n if (!stream) {\n return;\n }\n\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method\n (stream as any).__write = stream.write;\n }\n\n // Override\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n (stream as any).write = (data: any): void => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n (this as unknown as PailServerImpl)[type].log(String(data).trim());\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _restoreStream(stream?: NodeJS.WriteStream): void {\n if (!stream) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n stream.write = (stream as any).__write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n delete (stream as any).__write;\n }\n }\n}\n\nexport type PailServerType<T extends string = never, L extends string = never> = PailServerImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ServerConstructorOptions<TC, LC>) => PailServerType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ServerConstructorOptions<T, L>) => PailServerType<T, L>;\n\nexport const PailServer = PailServerImpl as unknown as PailServerType;\n","import type { PailServerType } from \"./pail.server\";\nimport { PailServer } from \"./pail.server\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { PrettyReporter } from \"./reporter/pretty/pretty.server\";\nimport type { ConstructorOptions, ExtendedRfc5424LogLevels } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst _getDefaultLogLevel = (): ExtendedRfc5424LogLevels => {\n if (process.env[\"NODE_ENV\"] === \"debug\" || process.env[\"DEBUG\"] !== undefined) {\n return \"debug\";\n }\n\n if (process.env[\"NODE_ENV\"] === \"test\") {\n return \"warning\";\n }\n\n return \"informational\";\n};\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailServerType<T, L> =>\n new PailServer<T, L>({\n logLevel: _getDefaultLogLevel(),\n processors: [new MessageFormatterProcessor<L>(), new ErrorProcessor<L>()],\n reporters: [new PrettyReporter()],\n stderr: process.stderr,\n stdout: process.stdout,\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailServerType as Pail } from \"./pail.server\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
@@ -1,6 +1,5 @@
1
1
  import { stringify } from 'safe-stable-stringify';
2
- import { LiteralUnion } from 'type-fest';
3
- import { a as DefaultLogTypes, b as LoggerFunction, C as ConstructorOptions, M as Meta, d as LoggerTypesConfig, P as Processor, E as ExtendedRfc5424LogLevels, R as Reporter } from './types.d-RNxsa9NR.js';
2
+ import { a as DefaultLogTypes, b as LoggerFunction, C as ConstructorOptions, M as Meta, d as LoggerTypesConfig, e as LiteralUnion, P as Processor, E as ExtendedRfc5424LogLevels, R as Reporter } from './types--_CcxoUw.js';
4
3
 
5
4
  declare class PailBrowserImpl<T extends string = never, L extends string = never> {
6
5
  protected timersMap: Map<string, number>;
@@ -1,6 +1,5 @@
1
1
  import { stringify } from 'safe-stable-stringify';
2
- import { LiteralUnion } from 'type-fest';
3
- import { a as DefaultLogTypes, b as LoggerFunction, C as ConstructorOptions, M as Meta, d as LoggerTypesConfig, P as Processor, E as ExtendedRfc5424LogLevels, R as Reporter } from './types.d-RNxsa9NR.cjs';
2
+ import { a as DefaultLogTypes, b as LoggerFunction, C as ConstructorOptions, M as Meta, d as LoggerTypesConfig, e as LiteralUnion, P as Processor, E as ExtendedRfc5424LogLevels, R as Reporter } from './types--_CcxoUw.cjs';
4
3
 
5
4
  declare class PailBrowserImpl<T extends string = never, L extends string = never> {
6
5
  protected timersMap: Map<string, number>;
@@ -1,13 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkIQF3SXQR_cjs = require('./chunk-IQF3SXQR.cjs');
4
- require('./chunk-6ATEEAVC.cjs');
3
+ var chunkF4FJCQ4L_cjs = require('./chunk-F4FJCQ4L.cjs');
5
4
 
6
5
 
7
6
 
8
7
  Object.defineProperty(exports, 'MessageFormatterProcessor', {
9
8
  enumerable: true,
10
- get: function () { return chunkIQF3SXQR_cjs.a; }
9
+ get: function () { return chunkF4FJCQ4L_cjs.a; }
11
10
  });
12
11
  //# sourceMappingURL=out.js.map
13
12
  //# sourceMappingURL=processor.browser.cjs.map
@@ -1,7 +1,6 @@
1
1
  import { FormatterFunction } from '@visulima/fmt';
2
- import { i as StringifyAwareProcessor, M as Meta } from './types.d-RNxsa9NR.cjs';
2
+ import { j as StringifyAwareProcessor, M as Meta } from './types--_CcxoUw.cjs';
3
3
  import '@visulima/colorize';
4
- import 'type-fest';
5
4
 
6
5
  declare class MessageFormatterProcessor<L extends string = string> implements StringifyAwareProcessor<L> {
7
6
  #private;
@@ -1,7 +1,6 @@
1
1
  import { FormatterFunction } from '@visulima/fmt';
2
- import { i as StringifyAwareProcessor, M as Meta } from './types.d-RNxsa9NR.js';
2
+ import { j as StringifyAwareProcessor, M as Meta } from './types--_CcxoUw.js';
3
3
  import '@visulima/colorize';
4
- import 'type-fest';
5
4
 
6
5
  declare class MessageFormatterProcessor<L extends string = string> implements StringifyAwareProcessor<L> {
7
6
  #private;
@@ -1,4 +1,3 @@
1
- export { a as MessageFormatterProcessor } from './chunk-ICPHL4AR.js';
2
- import './chunk-YKHMQW6V.js';
1
+ export { a as MessageFormatterProcessor } from './chunk-SR3Q3EUO.js';
3
2
  //# sourceMappingURL=out.js.map
4
3
  //# sourceMappingURL=processor.browser.js.map
@@ -1,13 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkIQF3SXQR_cjs = require('./chunk-IQF3SXQR.cjs');
4
- require('./chunk-6ATEEAVC.cjs');
3
+ var chunkF4FJCQ4L_cjs = require('./chunk-F4FJCQ4L.cjs');
5
4
 
6
5
  var o=()=>{let i=Error.prepareStackTrace;try{let r=[];Error.prepareStackTrace=(n,l)=>{let u=l.slice(1);return r=u,u},new Error().stack;let e=r.reduce((n,l)=>(n.push({columnNumber:l.getColumnNumber(),fileName:l.getFileName(),lineNumber:l.getLineNumber()}),n),[]).at(-2);return e?{columnNumber:e.columnNumber??void 0,fileName:e.fileName,lineNumber:e.lineNumber??void 0}:{fileName:"anonymous",lineNumber:void 0}}finally{Error.prepareStackTrace=i;}};var t=class{process(r){let{columnNumber:m,fileName:e,lineNumber:n}=o();return r.file={column:m,line:n,name:e},r}};
7
6
 
8
7
  Object.defineProperty(exports, 'MessageFormatterProcessor', {
9
8
  enumerable: true,
10
- get: function () { return chunkIQF3SXQR_cjs.a; }
9
+ get: function () { return chunkF4FJCQ4L_cjs.a; }
11
10
  });
12
11
  exports.CallerProcessor = t;
13
12
  //# sourceMappingURL=out.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/get-caller-filename.ts","../src/processor/caller-processor.ts"],"names":["getCallerFilename","errorStack","result","_error","stack","callSitesWithoutCurrent","firstExternalFilePath","accumulator","x","CallerProcessor","meta","columnNumber","fileName","lineNumber"],"mappings":"sEAIO,IAAMA,EAAoB,IAI5B,CACD,IAAMC,EAAa,MAAM,kBAEzB,GAAI,CACA,IAAIC,EAAqB,CAAC,EAE1B,MAAM,kBAAoB,CAACC,EAAQC,IAAU,CACzC,IAAMC,EAA0BD,EAAM,MAAM,CAAC,EAE7C,OAAAF,EAASG,EAEFA,CACX,EAGA,IAAI,MAAM,EAAE,MAYZ,IAAMC,EATUJ,EAAO,OAA+B,CAACK,EAAaC,KAChED,EAAY,KAAK,CACb,aAAcC,EAAE,gBAAgB,EAChC,SAAUA,EAAE,YAAY,EACxB,WAAYA,EAAE,cAAc,CAChC,CAAC,EACMD,GACR,CAAC,CAAC,EAEiC,GAAG,EAAE,EAE3C,OAAID,EACO,CACH,aAAcA,EAAsB,cAAgB,OACpD,SAAUA,EAAsB,SAChC,WAAYA,EAAsB,YAAc,MACpD,EAGG,CACH,SAAU,YACV,WAAY,MAChB,CACJ,QAAE,CACE,MAAM,kBAAoBL,CAC9B,CACJ,ECjCO,IAAMQ,EAAN,KAAwE,CAEpE,QAAQC,EAAwB,CACnC,GAAM,CAAE,aAAAC,EAAc,SAAAC,EAAU,WAAAC,CAAW,EAAIb,EAAkB,EAGjE,OAAAU,EAAK,KAAO,CACR,OAAQC,EACR,KAAME,EACN,KAAMD,CACV,EAEOF,CACX,CACJ","sourcesContent":["type CallSite = NodeJS.CallSite;\n\ntype CallSiteWithFileName = { columnNumber: number | null; fileName: string | undefined; lineNumber: number | null };\n\nexport const getCallerFilename = (): {\n columnNumber?: number;\n fileName: string | undefined;\n lineNumber: number | undefined;\n} => {\n const errorStack = Error.prepareStackTrace;\n\n try {\n let result: CallSite[] = [];\n\n Error.prepareStackTrace = (_error, stack) => {\n const callSitesWithoutCurrent = stack.slice(1);\n\n result = callSitesWithoutCurrent;\n\n return callSitesWithoutCurrent;\n };\n\n // eslint-disable-next-line unicorn/error-message,@typescript-eslint/no-unused-expressions\n new Error().stack;\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const callers = result.reduce<CallSiteWithFileName[]>((accumulator, x) => {\n accumulator.push({\n columnNumber: x.getColumnNumber(),\n fileName: x.getFileName(),\n lineNumber: x.getLineNumber(),\n });\n return accumulator;\n }, []);\n\n const firstExternalFilePath = callers.at(-2);\n\n if (firstExternalFilePath) {\n return {\n columnNumber: firstExternalFilePath.columnNumber ?? undefined,\n fileName: firstExternalFilePath.fileName,\n lineNumber: firstExternalFilePath.lineNumber ?? undefined,\n };\n }\n\n return {\n fileName: \"anonymous\",\n lineNumber: undefined,\n };\n } finally {\n Error.prepareStackTrace = errorStack;\n }\n};\n","import type { Meta, Processor } from \"../types\";\nimport { getCallerFilename } from \"../util/get-caller-filename\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace VisulimaPail {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface CustomMeta<L> {\n file:\n | {\n column: number | undefined;\n line: number | undefined;\n name: string | undefined;\n }\n | undefined;\n }\n }\n}\n\nexport class CallerProcessor<L extends string = never> implements Processor<L> {\n // eslint-disable-next-line class-methods-use-this\n public process(meta: Meta<L>): Meta<L> {\n const { columnNumber, fileName, lineNumber } = getCallerFilename();\n\n // eslint-disable-next-line no-param-reassign\n meta.file = {\n column: columnNumber,\n line: lineNumber,\n name: fileName,\n };\n\n return meta;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/util/get-caller-filename.ts","../src/processor/caller-processor.ts"],"names":["getCallerFilename","errorStack","result","_error","stack","callSitesWithoutCurrent","firstExternalFilePath","accumulator","x","CallerProcessor","meta","columnNumber","fileName","lineNumber"],"mappings":"yCAIO,IAAMA,EAAoB,IAI5B,CACD,IAAMC,EAAa,MAAM,kBAEzB,GAAI,CACA,IAAIC,EAAqB,CAAC,EAE1B,MAAM,kBAAoB,CAACC,EAAQC,IAAU,CACzC,IAAMC,EAA0BD,EAAM,MAAM,CAAC,EAE7C,OAAAF,EAASG,EAEFA,CACX,EAGA,IAAI,MAAM,EAAE,MAYZ,IAAMC,EATUJ,EAAO,OAA+B,CAACK,EAAaC,KAChED,EAAY,KAAK,CACb,aAAcC,EAAE,gBAAgB,EAChC,SAAUA,EAAE,YAAY,EACxB,WAAYA,EAAE,cAAc,CAChC,CAAC,EACMD,GACR,CAAC,CAAC,EAEiC,GAAG,EAAE,EAE3C,OAAID,EACO,CACH,aAAcA,EAAsB,cAAgB,OACpD,SAAUA,EAAsB,SAChC,WAAYA,EAAsB,YAAc,MACpD,EAGG,CACH,SAAU,YACV,WAAY,MAChB,CACJ,QAAE,CACE,MAAM,kBAAoBL,CAC9B,CACJ,ECjCO,IAAMQ,EAAN,KAAwE,CAEpE,QAAQC,EAAwB,CACnC,GAAM,CAAE,aAAAC,EAAc,SAAAC,EAAU,WAAAC,CAAW,EAAIb,EAAkB,EAGjE,OAAAU,EAAK,KAAO,CACR,OAAQC,EACR,KAAME,EACN,KAAMD,CACV,EAEOF,CACX,CACJ","sourcesContent":["type CallSite = NodeJS.CallSite;\n\ntype CallSiteWithFileName = { columnNumber: number | null; fileName: string | undefined; lineNumber: number | null };\n\nexport const getCallerFilename = (): {\n columnNumber?: number;\n fileName: string | undefined;\n lineNumber: number | undefined;\n} => {\n const errorStack = Error.prepareStackTrace;\n\n try {\n let result: CallSite[] = [];\n\n Error.prepareStackTrace = (_error, stack) => {\n const callSitesWithoutCurrent = stack.slice(1);\n\n result = callSitesWithoutCurrent;\n\n return callSitesWithoutCurrent;\n };\n\n // eslint-disable-next-line unicorn/error-message,@typescript-eslint/no-unused-expressions\n new Error().stack;\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const callers = result.reduce<CallSiteWithFileName[]>((accumulator, x) => {\n accumulator.push({\n columnNumber: x.getColumnNumber(),\n fileName: x.getFileName(),\n lineNumber: x.getLineNumber(),\n });\n return accumulator;\n }, []);\n\n const firstExternalFilePath = callers.at(-2);\n\n if (firstExternalFilePath) {\n return {\n columnNumber: firstExternalFilePath.columnNumber ?? undefined,\n fileName: firstExternalFilePath.fileName,\n lineNumber: firstExternalFilePath.lineNumber ?? undefined,\n };\n }\n\n return {\n fileName: \"anonymous\",\n lineNumber: undefined,\n };\n } finally {\n Error.prepareStackTrace = errorStack;\n }\n};\n","import type { Meta, Processor } from \"../types\";\nimport { getCallerFilename } from \"../util/get-caller-filename\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace VisulimaPail {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface CustomMeta<L> {\n file:\n | {\n column: number | undefined;\n line: number | undefined;\n name: string | undefined;\n }\n | undefined;\n }\n }\n}\n\nexport class CallerProcessor<L extends string = never> implements Processor<L> {\n // eslint-disable-next-line class-methods-use-this\n public process(meta: Meta<L>): Meta<L> {\n const { columnNumber, fileName, lineNumber } = getCallerFilename();\n\n // eslint-disable-next-line no-param-reassign\n meta.file = {\n column: columnNumber,\n line: lineNumber,\n name: fileName,\n };\n\n return meta;\n }\n}\n"]}
@@ -1,7 +1,6 @@
1
- import { P as Processor, M as Meta } from './types.d-RNxsa9NR.cjs';
1
+ import { P as Processor, M as Meta } from './types--_CcxoUw.cjs';
2
2
  export { MessageFormatterProcessor } from './processor.browser.cjs';
3
3
  import '@visulima/colorize';
4
- import 'type-fest';
5
4
  import '@visulima/fmt';
6
5
 
7
6
  declare global {
@@ -1,7 +1,6 @@
1
- import { P as Processor, M as Meta } from './types.d-RNxsa9NR.js';
1
+ import { P as Processor, M as Meta } from './types--_CcxoUw.js';
2
2
  export { MessageFormatterProcessor } from './processor.browser.js';
3
3
  import '@visulima/colorize';
4
- import 'type-fest';
5
4
  import '@visulima/fmt';
6
5
 
7
6
  declare global {
@@ -1,5 +1,4 @@
1
- export { a as MessageFormatterProcessor } from './chunk-ICPHL4AR.js';
2
- import './chunk-YKHMQW6V.js';
1
+ export { a as MessageFormatterProcessor } from './chunk-SR3Q3EUO.js';
3
2
 
4
3
  var s=()=>{let i=Error.prepareStackTrace;try{let r=[];Error.prepareStackTrace=(n,l)=>{let u=l.slice(1);return r=u,u},new Error().stack;let e=r.reduce((n,l)=>(n.push({columnNumber:l.getColumnNumber(),fileName:l.getFileName(),lineNumber:l.getLineNumber()}),n),[]).at(-2);return e?{columnNumber:e.columnNumber??void 0,fileName:e.fileName,lineNumber:e.lineNumber??void 0}:{fileName:"anonymous",lineNumber:void 0}}finally{Error.prepareStackTrace=i;}};var t=class{process(r){let{columnNumber:m,fileName:e,lineNumber:n}=s();return r.file={column:m,line:n,name:e},r}};
5
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/get-caller-filename.ts","../src/processor/caller-processor.ts"],"names":["getCallerFilename","errorStack","result","_error","stack","callSitesWithoutCurrent","firstExternalFilePath","accumulator","x","CallerProcessor","meta","columnNumber","fileName","lineNumber"],"mappings":"oEAIO,IAAMA,EAAoB,IAI5B,CACD,IAAMC,EAAa,MAAM,kBAEzB,GAAI,CACA,IAAIC,EAAqB,CAAC,EAE1B,MAAM,kBAAoB,CAACC,EAAQC,IAAU,CACzC,IAAMC,EAA0BD,EAAM,MAAM,CAAC,EAE7C,OAAAF,EAASG,EAEFA,CACX,EAGA,IAAI,MAAM,EAAE,MAYZ,IAAMC,EATUJ,EAAO,OAA+B,CAACK,EAAaC,KAChED,EAAY,KAAK,CACb,aAAcC,EAAE,gBAAgB,EAChC,SAAUA,EAAE,YAAY,EACxB,WAAYA,EAAE,cAAc,CAChC,CAAC,EACMD,GACR,CAAC,CAAC,EAEiC,GAAG,EAAE,EAE3C,OAAID,EACO,CACH,aAAcA,EAAsB,cAAgB,OACpD,SAAUA,EAAsB,SAChC,WAAYA,EAAsB,YAAc,MACpD,EAGG,CACH,SAAU,YACV,WAAY,MAChB,CACJ,QAAE,CACE,MAAM,kBAAoBL,CAC9B,CACJ,ECjCO,IAAMQ,EAAN,KAAwE,CAEpE,QAAQC,EAAwB,CACnC,GAAM,CAAE,aAAAC,EAAc,SAAAC,EAAU,WAAAC,CAAW,EAAIb,EAAkB,EAGjE,OAAAU,EAAK,KAAO,CACR,OAAQC,EACR,KAAME,EACN,KAAMD,CACV,EAEOF,CACX,CACJ","sourcesContent":["type CallSite = NodeJS.CallSite;\n\ntype CallSiteWithFileName = { columnNumber: number | null; fileName: string | undefined; lineNumber: number | null };\n\nexport const getCallerFilename = (): {\n columnNumber?: number;\n fileName: string | undefined;\n lineNumber: number | undefined;\n} => {\n const errorStack = Error.prepareStackTrace;\n\n try {\n let result: CallSite[] = [];\n\n Error.prepareStackTrace = (_error, stack) => {\n const callSitesWithoutCurrent = stack.slice(1);\n\n result = callSitesWithoutCurrent;\n\n return callSitesWithoutCurrent;\n };\n\n // eslint-disable-next-line unicorn/error-message,@typescript-eslint/no-unused-expressions\n new Error().stack;\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const callers = result.reduce<CallSiteWithFileName[]>((accumulator, x) => {\n accumulator.push({\n columnNumber: x.getColumnNumber(),\n fileName: x.getFileName(),\n lineNumber: x.getLineNumber(),\n });\n return accumulator;\n }, []);\n\n const firstExternalFilePath = callers.at(-2);\n\n if (firstExternalFilePath) {\n return {\n columnNumber: firstExternalFilePath.columnNumber ?? undefined,\n fileName: firstExternalFilePath.fileName,\n lineNumber: firstExternalFilePath.lineNumber ?? undefined,\n };\n }\n\n return {\n fileName: \"anonymous\",\n lineNumber: undefined,\n };\n } finally {\n Error.prepareStackTrace = errorStack;\n }\n};\n","import type { Meta, Processor } from \"../types\";\nimport { getCallerFilename } from \"../util/get-caller-filename\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace VisulimaPail {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface CustomMeta<L> {\n file:\n | {\n column: number | undefined;\n line: number | undefined;\n name: string | undefined;\n }\n | undefined;\n }\n }\n}\n\nexport class CallerProcessor<L extends string = never> implements Processor<L> {\n // eslint-disable-next-line class-methods-use-this\n public process(meta: Meta<L>): Meta<L> {\n const { columnNumber, fileName, lineNumber } = getCallerFilename();\n\n // eslint-disable-next-line no-param-reassign\n meta.file = {\n column: columnNumber,\n line: lineNumber,\n name: fileName,\n };\n\n return meta;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/util/get-caller-filename.ts","../src/processor/caller-processor.ts"],"names":["getCallerFilename","errorStack","result","_error","stack","callSitesWithoutCurrent","firstExternalFilePath","accumulator","x","CallerProcessor","meta","columnNumber","fileName","lineNumber"],"mappings":"wCAIO,IAAMA,EAAoB,IAI5B,CACD,IAAMC,EAAa,MAAM,kBAEzB,GAAI,CACA,IAAIC,EAAqB,CAAC,EAE1B,MAAM,kBAAoB,CAACC,EAAQC,IAAU,CACzC,IAAMC,EAA0BD,EAAM,MAAM,CAAC,EAE7C,OAAAF,EAASG,EAEFA,CACX,EAGA,IAAI,MAAM,EAAE,MAYZ,IAAMC,EATUJ,EAAO,OAA+B,CAACK,EAAaC,KAChED,EAAY,KAAK,CACb,aAAcC,EAAE,gBAAgB,EAChC,SAAUA,EAAE,YAAY,EACxB,WAAYA,EAAE,cAAc,CAChC,CAAC,EACMD,GACR,CAAC,CAAC,EAEiC,GAAG,EAAE,EAE3C,OAAID,EACO,CACH,aAAcA,EAAsB,cAAgB,OACpD,SAAUA,EAAsB,SAChC,WAAYA,EAAsB,YAAc,MACpD,EAGG,CACH,SAAU,YACV,WAAY,MAChB,CACJ,QAAE,CACE,MAAM,kBAAoBL,CAC9B,CACJ,ECjCO,IAAMQ,EAAN,KAAwE,CAEpE,QAAQC,EAAwB,CACnC,GAAM,CAAE,aAAAC,EAAc,SAAAC,EAAU,WAAAC,CAAW,EAAIb,EAAkB,EAGjE,OAAAU,EAAK,KAAO,CACR,OAAQC,EACR,KAAME,EACN,KAAMD,CACV,EAEOF,CACX,CACJ","sourcesContent":["type CallSite = NodeJS.CallSite;\n\ntype CallSiteWithFileName = { columnNumber: number | null; fileName: string | undefined; lineNumber: number | null };\n\nexport const getCallerFilename = (): {\n columnNumber?: number;\n fileName: string | undefined;\n lineNumber: number | undefined;\n} => {\n const errorStack = Error.prepareStackTrace;\n\n try {\n let result: CallSite[] = [];\n\n Error.prepareStackTrace = (_error, stack) => {\n const callSitesWithoutCurrent = stack.slice(1);\n\n result = callSitesWithoutCurrent;\n\n return callSitesWithoutCurrent;\n };\n\n // eslint-disable-next-line unicorn/error-message,@typescript-eslint/no-unused-expressions\n new Error().stack;\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const callers = result.reduce<CallSiteWithFileName[]>((accumulator, x) => {\n accumulator.push({\n columnNumber: x.getColumnNumber(),\n fileName: x.getFileName(),\n lineNumber: x.getLineNumber(),\n });\n return accumulator;\n }, []);\n\n const firstExternalFilePath = callers.at(-2);\n\n if (firstExternalFilePath) {\n return {\n columnNumber: firstExternalFilePath.columnNumber ?? undefined,\n fileName: firstExternalFilePath.fileName,\n lineNumber: firstExternalFilePath.lineNumber ?? undefined,\n };\n }\n\n return {\n fileName: \"anonymous\",\n lineNumber: undefined,\n };\n } finally {\n Error.prepareStackTrace = errorStack;\n }\n};\n","import type { Meta, Processor } from \"../types\";\nimport { getCallerFilename } from \"../util/get-caller-filename\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace VisulimaPail {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface CustomMeta<L> {\n file:\n | {\n column: number | undefined;\n line: number | undefined;\n name: string | undefined;\n }\n | undefined;\n }\n }\n}\n\nexport class CallerProcessor<L extends string = never> implements Processor<L> {\n // eslint-disable-next-line class-methods-use-this\n public process(meta: Meta<L>): Meta<L> {\n const { columnNumber, fileName, lineNumber } = getCallerFilename();\n\n // eslint-disable-next-line no-param-reassign\n meta.file = {\n column: columnNumber,\n line: lineNumber,\n name: fileName,\n };\n\n return meta;\n }\n}\n"]}
@@ -1,11 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunk32FAOPTJ_cjs = require('./chunk-32FAOPTJ.cjs');
4
- var chunk4RK45K5E_cjs = require('./chunk-4RK45K5E.cjs');
5
- require('./chunk-7OFJLC7L.cjs');
6
- var chunk46NTLZF7_cjs = require('./chunk-46NTLZF7.cjs');
7
- var chunkMU2CRXVO_cjs = require('./chunk-MU2CRXVO.cjs');
8
- require('./chunk-6ATEEAVC.cjs');
3
+ var chunk5MNFJRLM_cjs = require('./chunk-5MNFJRLM.cjs');
4
+ var chunkN2UPJYJR_cjs = require('./chunk-N2UPJYJR.cjs');
5
+ require('./chunk-ZJMTPHZR.cjs');
6
+ var chunkYP3U3DTV_cjs = require('./chunk-YP3U3DTV.cjs');
7
+ var chunkQINSQ6TU_cjs = require('./chunk-QINSQ6TU.cjs');
9
8
  var z = require('@visulima/colorize/browser');
10
9
  var fmt = require('@visulima/fmt');
11
10
 
@@ -13,7 +12,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
12
 
14
13
  var z__default = /*#__PURE__*/_interopDefault(z);
15
14
 
16
- var m=class extends chunk46NTLZF7_cjs.b{constructor(r={}){super({uppercase:{label:!0,...r.uppercase},...r});}log(r){let t=typeof window<"u"&&typeof window.document<"u",w=chunk4RK45K5E_cjs.a(r.type.level),{badge:b,context:L,date:x,error:_,groups:p,label:u,message:k,prefix:f,repeated:c,scope:g,suffix:h,type:D}=r,{color:S}=this._loggerTypes[D.name],T=S?z__default.default[S]:z.white,e=[];if(t&&p.length>0){let s=p.map(()=>" ").join(""),n=z.grey("["+p.at(-1)+"]");e.push(fmt.format(s+n[0],n.slice(1)));}if(x){let s=z.grey(this._styles.dateFormatter(new Date(x)));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}if(b){let s=T(b);t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}else {let s=chunk46NTLZF7_cjs.a(this._loggerTypes);if(s.length>0){let n=z.grey(".".repeat(s.length));t?e.push(fmt.format(n[0]+" ",n.slice(1))):e.push([n[0]+" ",...n.slice(1)]);}}let v=chunkMU2CRXVO_cjs.c(this._loggerTypes),d;if(c){let s=z.white("["+c+"x]");d=t?fmt.format(s[0],s.slice(1)):[s[0],...s.slice(1)];}if(u){let s=T(this._formatLabel(u));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]),d&&e.push(d);let n=v.length-u.length;if(c?n-=String(c).length+3:n+=1,n>0){let a=z.grey(".".repeat(n));t?e.push(fmt.format(a[0],a.slice(1))):e.push([" "+a[0],...a.slice(1)]);}}else {let s=z.grey(".".repeat(v.length+1));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(Array.isArray(g)&&g.length>0){let s=z.grey("["+g.join(" > ")+"]");t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(f){let s=z.grey((Array.isArray(g)&&g.length>0?". ":" ")+"["+(this._styles.underline.prefix?z.underline(f):f)+"] ");t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(k&&(e.push(k),L&&e.push(...L)),_&&e.push(_,`
15
+ var m=class extends chunkYP3U3DTV_cjs.b{constructor(r={}){super({uppercase:{label:!0,...r.uppercase},...r});}log(r){let t=typeof window<"u"&&typeof window.document<"u",w=chunkN2UPJYJR_cjs.a(r.type.level),{badge:b,context:L,date:x,error:_,groups:p,label:u,message:k,prefix:f,repeated:c,scope:g,suffix:h,type:D}=r,{color:S}=this._loggerTypes[D.name],T=S?z__default.default[S]:z.white,e=[];if(t&&p.length>0){let s=p.map(()=>" ").join(""),n=z.grey("["+p.at(-1)+"]");e.push(fmt.format(s+n[0],n.slice(1)));}if(x){let s=z.grey(this._styles.dateFormatter(new Date(x)));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}if(b){let s=T(b);t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}else {let s=chunkYP3U3DTV_cjs.a(this._loggerTypes);if(s.length>0){let n=z.grey(".".repeat(s.length));t?e.push(fmt.format(n[0]+" ",n.slice(1))):e.push([n[0]+" ",...n.slice(1)]);}}let v=chunkQINSQ6TU_cjs.c(this._loggerTypes),d;if(c){let s=z.white("["+c+"x]");d=t?fmt.format(s[0],s.slice(1)):[s[0],...s.slice(1)];}if(u){let s=T(this._formatLabel(u));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]),d&&e.push(d);let n=v.length-u.length;if(c?n-=String(c).length+3:n+=1,n>0){let a=z.grey(".".repeat(n));t?e.push(fmt.format(a[0],a.slice(1))):e.push([" "+a[0],...a.slice(1)]);}}else {let s=z.grey(".".repeat(v.length+1));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(Array.isArray(g)&&g.length>0){let s=z.grey("["+g.join(" > ")+"]");t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(f){let s=z.grey((Array.isArray(g)&&g.length>0?". ":" ")+"["+(this._styles.underline.prefix?z.underline(f):f)+"] ");t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(k&&(e.push(k),L&&e.push(...L)),_&&e.push(_,`
17
16
 
18
17
  `),h){let s=z.grey(this._styles.underline.suffix?z.underline(h):h);t?e.push(fmt.format(`
19
18
  `+s[0],s.slice(1))):e.push([`
@@ -21,7 +20,7 @@ var m=class extends chunk46NTLZF7_cjs.b{constructor(r={}){super({uppercase:{labe
21
20
 
22
21
  Object.defineProperty(exports, 'JsonReporter', {
23
22
  enumerable: true,
24
- get: function () { return chunk32FAOPTJ_cjs.a; }
23
+ get: function () { return chunk5MNFJRLM_cjs.a; }
25
24
  });
26
25
  exports.PrettyReporter = m;
27
26
  //# sourceMappingURL=out.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/reporter/pretty/pretty.browser.ts"],"names":["colorize","bold","grey","underline","white","format","PrettyReporter","AbstractPrettyReporter","options","meta","isNotBrowser","consoleLogFunction","writeConsoleLogBasedOnLevel","badge","context","date","error","groups","label","message","prefix","repeated","scope","suffix","type","color","colorized","items","groupSpaces","cGroup","cDate","cBadge","longestBadge","getLongestBadge","cBadgePlaceholder","longestLabel","getLongestLabel","repeatedMessage","cRepeated","cLabel","lengthDiff","cLabelSpacer","cSpacer","cScope","cPrefix","cSuffix","logMessage","css","arguments_","value","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bold, grey, underline, white } from \"@visulima/colorize/browser\";\nimport { format } from \"@visulima/fmt\";\n\nimport type { ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport type { PrettyStyleOptions } from \"./abstract-pretty-reporter\";\nimport { AbstractPrettyReporter } from \"./abstract-pretty-reporter\";\n\nexport class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line unicorn/no-typeof-undefined,@typescript-eslint/prefer-optional-chain\n const isNotBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n const consoleLogFunction = writeConsoleLogBasedOnLevel(meta.type.level);\n\n const { badge, context, date, error, groups, label, message, prefix, repeated, scope, suffix, type } = meta;\n\n const { color } = this._loggerTypes[type.name as keyof typeof this._loggerTypes];\n // eslint-disable-next-line security/detect-object-injection\n const colorized = color ? colorize[color] : white;\n\n const items = [];\n\n if (isNotBrowser && groups.length > 0) {\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n const cGroup = grey(\"[\" + (groups.at(-1) as string) + \"]\");\n\n items.push(format(groupSpaces + (cGroup[0] as string), cGroup.slice(1) as unknown as string[]));\n }\n\n if (date) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const cDate = grey(this._styles.dateFormatter(new Date(date)));\n\n if (isNotBrowser) {\n items.push(format(cDate[0] as string, cDate.slice(1) as unknown as string[]));\n } else {\n items.push([(cDate[0] as string) + \" \", ...cDate.slice(1)]);\n }\n }\n\n if (badge) {\n const cBadge = colorized(badge);\n\n if (isNotBrowser) {\n items.push(format(cBadge[0] as string, cBadge.slice(1) as unknown as string[]));\n } else {\n items.push([cBadge[0] + \" \", ...cBadge.slice(1)]);\n }\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n const cBadgePlaceholder = grey(\".\".repeat(longestBadge.length));\n\n if (isNotBrowser) {\n items.push(format((cBadgePlaceholder[0] as string) + \" \", cBadgePlaceholder.slice(1) as unknown as string[]));\n } else {\n items.push([(cBadgePlaceholder[0] as string) + \" \", ...cBadgePlaceholder.slice(1)]);\n }\n }\n }\n\n const longestLabel = getLongestLabel<L, T>(this._loggerTypes);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let repeatedMessage: any[] | string | undefined;\n\n if (repeated) {\n const cRepeated = white(\"[\" + repeated + \"x]\");\n\n repeatedMessage = isNotBrowser\n ? (format(cRepeated[0] as string, cRepeated.slice(1) as unknown as string[]) as string)\n : [cRepeated[0], ...cRepeated.slice(1)];\n }\n\n if (label) {\n const cLabel = colorized(this._formatLabel(label as string));\n\n if (isNotBrowser) {\n items.push(format(cLabel[0] as string, cLabel.slice(1) as unknown as string[]));\n } else {\n items.push([cLabel[0], ...cLabel.slice(1)]);\n }\n\n if (repeatedMessage) {\n items.push(repeatedMessage);\n }\n\n let lengthDiff = (longestLabel as string).length - (label as string).length;\n\n if (repeated) {\n lengthDiff -= String(repeated).length + 3;\n } else {\n lengthDiff += 1;\n }\n\n if (lengthDiff > 0) {\n const cLabelSpacer = grey(\".\".repeat(lengthDiff));\n\n if (isNotBrowser) {\n items.push(format(cLabelSpacer[0] as string, cLabelSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([\" \" + cLabelSpacer[0], ...cLabelSpacer.slice(1)]);\n }\n }\n } else {\n const cSpacer = grey(\".\".repeat((longestLabel as string).length + 1));\n\n if (isNotBrowser) {\n items.push(format(cSpacer[0] as string, cSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([cSpacer[0], ...cSpacer.slice(1)]);\n }\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n const cScope = grey(\"[\" + scope.join(\" > \") + \"]\");\n\n if (isNotBrowser) {\n items.push(format(cScope[0] as string, cScope.slice(1) as unknown as string[]));\n } else {\n items.push([cScope[0], ...cScope.slice(1)]);\n }\n }\n\n if (prefix) {\n const cPrefix = grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") + \"[\" + (this._styles.underline.prefix ? underline(prefix as string) : prefix) + \"] \",\n );\n\n if (isNotBrowser) {\n items.push(format(cPrefix[0] as string, cPrefix.slice(1) as unknown as string[]));\n } else {\n items.push([cPrefix[0] as string, ...cPrefix.slice(1)]);\n }\n }\n\n if (message) {\n items.push(message);\n\n if (context) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n items.push(...context);\n }\n }\n\n if (error) {\n items.push(error, \"\\n\\n\");\n }\n\n if (suffix) {\n const cSuffix = grey((this._styles.underline.suffix ? underline(suffix as string) : suffix) as string);\n\n if (isNotBrowser) {\n items.push(format((\"\\n\" + (cSuffix[0] as string)) as string, cSuffix.slice(1) as unknown as string[]));\n } else {\n items.push([(\"\\n\" + (cSuffix[0] as string)) as string, ...cSuffix.slice(1)]);\n }\n }\n\n if (isNotBrowser) {\n consoleLogFunction(...items);\n } else {\n let logMessage = \"\";\n\n const css = [];\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const arguments_ = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const value of items) {\n if (Array.isArray(value) && value.length > 1 && (value[0] as string).includes(\"%c\")) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n logMessage += value[0];\n css.push(...value.slice(1));\n } else {\n arguments_.push(value);\n }\n }\n\n consoleLogFunction(logMessage + \"%c\", ...css, \"\", ...arguments_);\n }\n }\n\n private _formatLabel(label: string): string {\n let formattedLabel = this._styles.uppercase.label ? label.toUpperCase() : label;\n\n formattedLabel = this._styles.underline.label ? underline(formattedLabel) : formattedLabel;\n\n if (this._styles.bold.label) {\n formattedLabel = bold(formattedLabel);\n }\n\n return formattedLabel;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/reporter/pretty/pretty.browser.ts"],"names":["colorize","bold","grey","underline","white","format","PrettyReporter","AbstractPrettyReporter","options","meta","isNotBrowser","consoleLogFunction","writeConsoleLogBasedOnLevel","badge","context","date","error","groups","label","message","prefix","repeated","scope","suffix","type","color","colorized","items","groupSpaces","cGroup","cDate","cBadge","longestBadge","getLongestBadge","cBadgePlaceholder","longestLabel","getLongestLabel","repeatedMessage","cRepeated","cLabel","lengthDiff","cLabelSpacer","cSpacer","cScope","cPrefix","cSuffix","logMessage","css","arguments_","value","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bold, grey, underline, white } from \"@visulima/colorize/browser\";\nimport { format } from \"@visulima/fmt\";\n\nimport type { ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport type { PrettyStyleOptions } from \"./abstract-pretty-reporter\";\nimport { AbstractPrettyReporter } from \"./abstract-pretty-reporter\";\n\nexport class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line unicorn/no-typeof-undefined,@typescript-eslint/prefer-optional-chain\n const isNotBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n const consoleLogFunction = writeConsoleLogBasedOnLevel(meta.type.level);\n\n const { badge, context, date, error, groups, label, message, prefix, repeated, scope, suffix, type } = meta;\n\n const { color } = this._loggerTypes[type.name as keyof typeof this._loggerTypes];\n // eslint-disable-next-line security/detect-object-injection\n const colorized = color ? colorize[color] : white;\n\n const items = [];\n\n if (isNotBrowser && groups.length > 0) {\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n const cGroup = grey(\"[\" + (groups.at(-1) as string) + \"]\");\n\n items.push(format(groupSpaces + (cGroup[0] as string), cGroup.slice(1) as unknown as string[]));\n }\n\n if (date) {\n const cDate = grey(this._styles.dateFormatter(new Date(date)));\n\n if (isNotBrowser) {\n items.push(format(cDate[0] as string, cDate.slice(1) as unknown as string[]));\n } else {\n items.push([(cDate[0] as string) + \" \", ...cDate.slice(1)]);\n }\n }\n\n if (badge) {\n const cBadge = colorized(badge);\n\n if (isNotBrowser) {\n items.push(format(cBadge[0] as string, cBadge.slice(1) as unknown as string[]));\n } else {\n items.push([cBadge[0] + \" \", ...cBadge.slice(1)]);\n }\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n const cBadgePlaceholder = grey(\".\".repeat(longestBadge.length));\n\n if (isNotBrowser) {\n items.push(format((cBadgePlaceholder[0] as string) + \" \", cBadgePlaceholder.slice(1) as unknown as string[]));\n } else {\n items.push([(cBadgePlaceholder[0] as string) + \" \", ...cBadgePlaceholder.slice(1)]);\n }\n }\n }\n\n const longestLabel = getLongestLabel<L, T>(this._loggerTypes);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let repeatedMessage: any[] | string | undefined;\n\n if (repeated) {\n const cRepeated = white(\"[\" + repeated + \"x]\");\n\n repeatedMessage = isNotBrowser\n ? (format(cRepeated[0] as string, cRepeated.slice(1) as unknown as string[]) as string)\n : [cRepeated[0], ...cRepeated.slice(1)];\n }\n\n if (label) {\n const cLabel = colorized(this._formatLabel(label as string));\n\n if (isNotBrowser) {\n items.push(format(cLabel[0] as string, cLabel.slice(1) as unknown as string[]));\n } else {\n items.push([cLabel[0], ...cLabel.slice(1)]);\n }\n\n if (repeatedMessage) {\n items.push(repeatedMessage);\n }\n\n let lengthDiff = (longestLabel as string).length - (label as string).length;\n\n if (repeated) {\n lengthDiff -= String(repeated).length + 3;\n } else {\n lengthDiff += 1;\n }\n\n if (lengthDiff > 0) {\n const cLabelSpacer = grey(\".\".repeat(lengthDiff));\n\n if (isNotBrowser) {\n items.push(format(cLabelSpacer[0] as string, cLabelSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([\" \" + cLabelSpacer[0], ...cLabelSpacer.slice(1)]);\n }\n }\n } else {\n const cSpacer = grey(\".\".repeat((longestLabel as string).length + 1));\n\n if (isNotBrowser) {\n items.push(format(cSpacer[0] as string, cSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([cSpacer[0], ...cSpacer.slice(1)]);\n }\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n const cScope = grey(\"[\" + scope.join(\" > \") + \"]\");\n\n if (isNotBrowser) {\n items.push(format(cScope[0] as string, cScope.slice(1) as unknown as string[]));\n } else {\n items.push([cScope[0], ...cScope.slice(1)]);\n }\n }\n\n if (prefix) {\n const cPrefix = grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") + \"[\" + (this._styles.underline.prefix ? underline(prefix as string) : prefix) + \"] \",\n );\n\n if (isNotBrowser) {\n items.push(format(cPrefix[0] as string, cPrefix.slice(1) as unknown as string[]));\n } else {\n items.push([cPrefix[0] as string, ...cPrefix.slice(1)]);\n }\n }\n\n if (message) {\n items.push(message);\n\n if (context) {\n items.push(...context);\n }\n }\n\n if (error) {\n items.push(error, \"\\n\\n\");\n }\n\n if (suffix) {\n const cSuffix = grey((this._styles.underline.suffix ? underline(suffix as string) : suffix) as string);\n\n if (isNotBrowser) {\n items.push(format((\"\\n\" + (cSuffix[0] as string)) as string, cSuffix.slice(1) as unknown as string[]));\n } else {\n items.push([(\"\\n\" + (cSuffix[0] as string)) as string, ...cSuffix.slice(1)]);\n }\n }\n\n if (isNotBrowser) {\n consoleLogFunction(...items);\n } else {\n let logMessage = \"\";\n\n const css = [];\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const arguments_ = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const value of items) {\n if (Array.isArray(value) && value.length > 1 && (value[0] as string).includes(\"%c\")) {\n logMessage += value[0];\n\n css.push(...value.slice(1));\n } else {\n arguments_.push(value);\n }\n }\n\n consoleLogFunction(logMessage + \"%c\", ...css, \"\", ...arguments_);\n }\n }\n\n private _formatLabel(label: string): string {\n let formattedLabel = this._styles.uppercase.label ? label.toUpperCase() : label;\n\n formattedLabel = this._styles.underline.label ? underline(formattedLabel) : formattedLabel;\n\n if (this._styles.bold.label) {\n formattedLabel = bold(formattedLabel);\n }\n\n return formattedLabel;\n }\n}\n"]}
@@ -1,6 +1,5 @@
1
- import { LiteralUnion } from 'type-fest';
2
- import { E as ExtendedRfc5424LogLevels, f as ReadonlyMeta } from './types.d-RNxsa9NR.cjs';
3
- import { A as AbstractJsonReporter, a as AbstractPrettyReporter, P as PrettyStyleOptions } from './abstract-pretty-reporter-dDQbeuZX.cjs';
1
+ import { e as LiteralUnion, E as ExtendedRfc5424LogLevels, g as ReadonlyMeta } from './types--_CcxoUw.cjs';
2
+ import { A as AbstractJsonReporter, a as AbstractPrettyReporter, P as PrettyStyleOptions } from './abstract-pretty-reporter-SBWxNXW5.cjs';
4
3
  import '@visulima/colorize';
5
4
  import 'safe-stable-stringify';
6
5
 
@@ -1,6 +1,5 @@
1
- import { LiteralUnion } from 'type-fest';
2
- import { E as ExtendedRfc5424LogLevels, f as ReadonlyMeta } from './types.d-RNxsa9NR.js';
3
- import { A as AbstractJsonReporter, a as AbstractPrettyReporter, P as PrettyStyleOptions } from './abstract-pretty-reporter-doXJ0wsq.js';
1
+ import { e as LiteralUnion, E as ExtendedRfc5424LogLevels, g as ReadonlyMeta } from './types--_CcxoUw.js';
2
+ import { A as AbstractJsonReporter, a as AbstractPrettyReporter, P as PrettyStyleOptions } from './abstract-pretty-reporter-L82dKD7X.js';
4
3
  import '@visulima/colorize';
5
4
  import 'safe-stable-stringify';
6
5
 
@@ -1,9 +1,8 @@
1
- export { a as JsonReporter } from './chunk-G62M5WJH.js';
2
- import { a } from './chunk-PVAYQO5O.js';
3
- import './chunk-JYHWIRFR.js';
4
- import { b, a as a$1 } from './chunk-57OYT2NC.js';
5
- import { c } from './chunk-EBP7SMYV.js';
6
- import './chunk-YKHMQW6V.js';
1
+ export { a as JsonReporter } from './chunk-KERJDMYV.js';
2
+ import { a } from './chunk-AFMDCM5W.js';
3
+ import './chunk-TAH23BHM.js';
4
+ import { b, a as a$1 } from './chunk-ZB7IIFHO.js';
5
+ import { c } from './chunk-NF47XQ47.js';
7
6
  import C, { white, grey, underline, bold } from '@visulima/colorize/browser';
8
7
  import { format } from '@visulima/fmt';
9
8
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/reporter/pretty/pretty.browser.ts"],"names":["colorize","bold","grey","underline","white","format","PrettyReporter","AbstractPrettyReporter","options","meta","isNotBrowser","consoleLogFunction","writeConsoleLogBasedOnLevel","badge","context","date","error","groups","label","message","prefix","repeated","scope","suffix","type","color","colorized","items","groupSpaces","cGroup","cDate","cBadge","longestBadge","getLongestBadge","cBadgePlaceholder","longestLabel","getLongestLabel","repeatedMessage","cRepeated","cLabel","lengthDiff","cLabelSpacer","cSpacer","cScope","cPrefix","cSuffix","logMessage","css","arguments_","value","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bold, grey, underline, white } from \"@visulima/colorize/browser\";\nimport { format } from \"@visulima/fmt\";\n\nimport type { ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport type { PrettyStyleOptions } from \"./abstract-pretty-reporter\";\nimport { AbstractPrettyReporter } from \"./abstract-pretty-reporter\";\n\nexport class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line unicorn/no-typeof-undefined,@typescript-eslint/prefer-optional-chain\n const isNotBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n const consoleLogFunction = writeConsoleLogBasedOnLevel(meta.type.level);\n\n const { badge, context, date, error, groups, label, message, prefix, repeated, scope, suffix, type } = meta;\n\n const { color } = this._loggerTypes[type.name as keyof typeof this._loggerTypes];\n // eslint-disable-next-line security/detect-object-injection\n const colorized = color ? colorize[color] : white;\n\n const items = [];\n\n if (isNotBrowser && groups.length > 0) {\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n const cGroup = grey(\"[\" + (groups.at(-1) as string) + \"]\");\n\n items.push(format(groupSpaces + (cGroup[0] as string), cGroup.slice(1) as unknown as string[]));\n }\n\n if (date) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const cDate = grey(this._styles.dateFormatter(new Date(date)));\n\n if (isNotBrowser) {\n items.push(format(cDate[0] as string, cDate.slice(1) as unknown as string[]));\n } else {\n items.push([(cDate[0] as string) + \" \", ...cDate.slice(1)]);\n }\n }\n\n if (badge) {\n const cBadge = colorized(badge);\n\n if (isNotBrowser) {\n items.push(format(cBadge[0] as string, cBadge.slice(1) as unknown as string[]));\n } else {\n items.push([cBadge[0] + \" \", ...cBadge.slice(1)]);\n }\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n const cBadgePlaceholder = grey(\".\".repeat(longestBadge.length));\n\n if (isNotBrowser) {\n items.push(format((cBadgePlaceholder[0] as string) + \" \", cBadgePlaceholder.slice(1) as unknown as string[]));\n } else {\n items.push([(cBadgePlaceholder[0] as string) + \" \", ...cBadgePlaceholder.slice(1)]);\n }\n }\n }\n\n const longestLabel = getLongestLabel<L, T>(this._loggerTypes);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let repeatedMessage: any[] | string | undefined;\n\n if (repeated) {\n const cRepeated = white(\"[\" + repeated + \"x]\");\n\n repeatedMessage = isNotBrowser\n ? (format(cRepeated[0] as string, cRepeated.slice(1) as unknown as string[]) as string)\n : [cRepeated[0], ...cRepeated.slice(1)];\n }\n\n if (label) {\n const cLabel = colorized(this._formatLabel(label as string));\n\n if (isNotBrowser) {\n items.push(format(cLabel[0] as string, cLabel.slice(1) as unknown as string[]));\n } else {\n items.push([cLabel[0], ...cLabel.slice(1)]);\n }\n\n if (repeatedMessage) {\n items.push(repeatedMessage);\n }\n\n let lengthDiff = (longestLabel as string).length - (label as string).length;\n\n if (repeated) {\n lengthDiff -= String(repeated).length + 3;\n } else {\n lengthDiff += 1;\n }\n\n if (lengthDiff > 0) {\n const cLabelSpacer = grey(\".\".repeat(lengthDiff));\n\n if (isNotBrowser) {\n items.push(format(cLabelSpacer[0] as string, cLabelSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([\" \" + cLabelSpacer[0], ...cLabelSpacer.slice(1)]);\n }\n }\n } else {\n const cSpacer = grey(\".\".repeat((longestLabel as string).length + 1));\n\n if (isNotBrowser) {\n items.push(format(cSpacer[0] as string, cSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([cSpacer[0], ...cSpacer.slice(1)]);\n }\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n const cScope = grey(\"[\" + scope.join(\" > \") + \"]\");\n\n if (isNotBrowser) {\n items.push(format(cScope[0] as string, cScope.slice(1) as unknown as string[]));\n } else {\n items.push([cScope[0], ...cScope.slice(1)]);\n }\n }\n\n if (prefix) {\n const cPrefix = grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") + \"[\" + (this._styles.underline.prefix ? underline(prefix as string) : prefix) + \"] \",\n );\n\n if (isNotBrowser) {\n items.push(format(cPrefix[0] as string, cPrefix.slice(1) as unknown as string[]));\n } else {\n items.push([cPrefix[0] as string, ...cPrefix.slice(1)]);\n }\n }\n\n if (message) {\n items.push(message);\n\n if (context) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n items.push(...context);\n }\n }\n\n if (error) {\n items.push(error, \"\\n\\n\");\n }\n\n if (suffix) {\n const cSuffix = grey((this._styles.underline.suffix ? underline(suffix as string) : suffix) as string);\n\n if (isNotBrowser) {\n items.push(format((\"\\n\" + (cSuffix[0] as string)) as string, cSuffix.slice(1) as unknown as string[]));\n } else {\n items.push([(\"\\n\" + (cSuffix[0] as string)) as string, ...cSuffix.slice(1)]);\n }\n }\n\n if (isNotBrowser) {\n consoleLogFunction(...items);\n } else {\n let logMessage = \"\";\n\n const css = [];\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const arguments_ = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const value of items) {\n if (Array.isArray(value) && value.length > 1 && (value[0] as string).includes(\"%c\")) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n logMessage += value[0];\n css.push(...value.slice(1));\n } else {\n arguments_.push(value);\n }\n }\n\n consoleLogFunction(logMessage + \"%c\", ...css, \"\", ...arguments_);\n }\n }\n\n private _formatLabel(label: string): string {\n let formattedLabel = this._styles.uppercase.label ? label.toUpperCase() : label;\n\n formattedLabel = this._styles.underline.label ? underline(formattedLabel) : formattedLabel;\n\n if (this._styles.bold.label) {\n formattedLabel = bold(formattedLabel);\n }\n\n return formattedLabel;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/reporter/pretty/pretty.browser.ts"],"names":["colorize","bold","grey","underline","white","format","PrettyReporter","AbstractPrettyReporter","options","meta","isNotBrowser","consoleLogFunction","writeConsoleLogBasedOnLevel","badge","context","date","error","groups","label","message","prefix","repeated","scope","suffix","type","color","colorized","items","groupSpaces","cGroup","cDate","cBadge","longestBadge","getLongestBadge","cBadgePlaceholder","longestLabel","getLongestLabel","repeatedMessage","cRepeated","cLabel","lengthDiff","cLabelSpacer","cSpacer","cScope","cPrefix","cSuffix","logMessage","css","arguments_","value","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bold, grey, underline, white } from \"@visulima/colorize/browser\";\nimport { format } from \"@visulima/fmt\";\n\nimport type { ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport type { PrettyStyleOptions } from \"./abstract-pretty-reporter\";\nimport { AbstractPrettyReporter } from \"./abstract-pretty-reporter\";\n\nexport class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line unicorn/no-typeof-undefined,@typescript-eslint/prefer-optional-chain\n const isNotBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n const consoleLogFunction = writeConsoleLogBasedOnLevel(meta.type.level);\n\n const { badge, context, date, error, groups, label, message, prefix, repeated, scope, suffix, type } = meta;\n\n const { color } = this._loggerTypes[type.name as keyof typeof this._loggerTypes];\n // eslint-disable-next-line security/detect-object-injection\n const colorized = color ? colorize[color] : white;\n\n const items = [];\n\n if (isNotBrowser && groups.length > 0) {\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n const cGroup = grey(\"[\" + (groups.at(-1) as string) + \"]\");\n\n items.push(format(groupSpaces + (cGroup[0] as string), cGroup.slice(1) as unknown as string[]));\n }\n\n if (date) {\n const cDate = grey(this._styles.dateFormatter(new Date(date)));\n\n if (isNotBrowser) {\n items.push(format(cDate[0] as string, cDate.slice(1) as unknown as string[]));\n } else {\n items.push([(cDate[0] as string) + \" \", ...cDate.slice(1)]);\n }\n }\n\n if (badge) {\n const cBadge = colorized(badge);\n\n if (isNotBrowser) {\n items.push(format(cBadge[0] as string, cBadge.slice(1) as unknown as string[]));\n } else {\n items.push([cBadge[0] + \" \", ...cBadge.slice(1)]);\n }\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n const cBadgePlaceholder = grey(\".\".repeat(longestBadge.length));\n\n if (isNotBrowser) {\n items.push(format((cBadgePlaceholder[0] as string) + \" \", cBadgePlaceholder.slice(1) as unknown as string[]));\n } else {\n items.push([(cBadgePlaceholder[0] as string) + \" \", ...cBadgePlaceholder.slice(1)]);\n }\n }\n }\n\n const longestLabel = getLongestLabel<L, T>(this._loggerTypes);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let repeatedMessage: any[] | string | undefined;\n\n if (repeated) {\n const cRepeated = white(\"[\" + repeated + \"x]\");\n\n repeatedMessage = isNotBrowser\n ? (format(cRepeated[0] as string, cRepeated.slice(1) as unknown as string[]) as string)\n : [cRepeated[0], ...cRepeated.slice(1)];\n }\n\n if (label) {\n const cLabel = colorized(this._formatLabel(label as string));\n\n if (isNotBrowser) {\n items.push(format(cLabel[0] as string, cLabel.slice(1) as unknown as string[]));\n } else {\n items.push([cLabel[0], ...cLabel.slice(1)]);\n }\n\n if (repeatedMessage) {\n items.push(repeatedMessage);\n }\n\n let lengthDiff = (longestLabel as string).length - (label as string).length;\n\n if (repeated) {\n lengthDiff -= String(repeated).length + 3;\n } else {\n lengthDiff += 1;\n }\n\n if (lengthDiff > 0) {\n const cLabelSpacer = grey(\".\".repeat(lengthDiff));\n\n if (isNotBrowser) {\n items.push(format(cLabelSpacer[0] as string, cLabelSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([\" \" + cLabelSpacer[0], ...cLabelSpacer.slice(1)]);\n }\n }\n } else {\n const cSpacer = grey(\".\".repeat((longestLabel as string).length + 1));\n\n if (isNotBrowser) {\n items.push(format(cSpacer[0] as string, cSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([cSpacer[0], ...cSpacer.slice(1)]);\n }\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n const cScope = grey(\"[\" + scope.join(\" > \") + \"]\");\n\n if (isNotBrowser) {\n items.push(format(cScope[0] as string, cScope.slice(1) as unknown as string[]));\n } else {\n items.push([cScope[0], ...cScope.slice(1)]);\n }\n }\n\n if (prefix) {\n const cPrefix = grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") + \"[\" + (this._styles.underline.prefix ? underline(prefix as string) : prefix) + \"] \",\n );\n\n if (isNotBrowser) {\n items.push(format(cPrefix[0] as string, cPrefix.slice(1) as unknown as string[]));\n } else {\n items.push([cPrefix[0] as string, ...cPrefix.slice(1)]);\n }\n }\n\n if (message) {\n items.push(message);\n\n if (context) {\n items.push(...context);\n }\n }\n\n if (error) {\n items.push(error, \"\\n\\n\");\n }\n\n if (suffix) {\n const cSuffix = grey((this._styles.underline.suffix ? underline(suffix as string) : suffix) as string);\n\n if (isNotBrowser) {\n items.push(format((\"\\n\" + (cSuffix[0] as string)) as string, cSuffix.slice(1) as unknown as string[]));\n } else {\n items.push([(\"\\n\" + (cSuffix[0] as string)) as string, ...cSuffix.slice(1)]);\n }\n }\n\n if (isNotBrowser) {\n consoleLogFunction(...items);\n } else {\n let logMessage = \"\";\n\n const css = [];\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const arguments_ = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const value of items) {\n if (Array.isArray(value) && value.length > 1 && (value[0] as string).includes(\"%c\")) {\n logMessage += value[0];\n\n css.push(...value.slice(1));\n } else {\n arguments_.push(value);\n }\n }\n\n consoleLogFunction(logMessage + \"%c\", ...css, \"\", ...arguments_);\n }\n }\n\n private _formatLabel(label: string): string {\n let formattedLabel = this._styles.uppercase.label ? label.toUpperCase() : label;\n\n formattedLabel = this._styles.underline.label ? underline(formattedLabel) : formattedLabel;\n\n if (this._styles.bold.label) {\n formattedLabel = bold(formattedLabel);\n }\n\n return formattedLabel;\n }\n}\n"]}
@@ -1,27 +1,26 @@
1
1
  'use strict';
2
2
 
3
- var chunkGZRIZCRG_cjs = require('./chunk-GZRIZCRG.cjs');
4
- var chunk7OFJLC7L_cjs = require('./chunk-7OFJLC7L.cjs');
5
- require('./chunk-46NTLZF7.cjs');
6
- require('./chunk-MU2CRXVO.cjs');
7
- var chunk6ATEEAVC_cjs = require('./chunk-6ATEEAVC.cjs');
3
+ var chunkO34IIMWQ_cjs = require('./chunk-O34IIMWQ.cjs');
4
+ var chunkZJMTPHZR_cjs = require('./chunk-ZJMTPHZR.cjs');
5
+ require('./chunk-YP3U3DTV.cjs');
6
+ require('./chunk-QINSQ6TU.cjs');
8
7
  var rotatingFileStream = require('rotating-file-stream');
9
- var R = require('process');
8
+ var c = require('process');
10
9
 
11
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
11
 
13
- var R__default = /*#__PURE__*/_interopDefault(R);
12
+ var c__default = /*#__PURE__*/_interopDefault(c);
14
13
 
15
- var c=class{constructor(e,t){this._ready=!0;this._stream=e,this._name=t;}write(e){this.writeStream(e);}end(...e){this._stream.end(...e);}writeStream(e){if(!this._ready){console.warn("Stream busy: "+this._name+'. Write will be dropped: "'+e+'"');return}this._ready=!1,this._stream.on("error",t=>{throw t}),this._stream.on("drain",()=>{this._ready=!0;}),this._stream.on("finish",()=>{this._ready=!0;}),this._ready=this._stream.write(e,()=>{});}};var h=class{constructor(e,t=!1,i={}){this._filePath=e,this._immediate=t,this._options=i,this._immediate||(this._stream=rotatingFileStream.createStream(this._filePath,i));}write(e){let t=this._stream;this._immediate&&(t=rotatingFileStream.createStream(this._filePath,this._options));let i=new c(t,this._filePath);i.write(e),this._immediate&&i.end();}end(){this._stream!==void 0&&this._stream.end();}};var l=class{constructor(e){let{filePath:t,writeImmediately:i=!1,...r}=e;this._stream=new h(t,i,r);}log(e){this._stream.write(this._formatMessage(e)+`
16
- `);}};var f,y=class extends l{constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});chunk6ATEEAVC_cjs.b(this,f,void 0);}setStringify(t){chunk6ATEEAVC_cjs.c(this,f,t);}_formatMessage(t){let{type:i,...r}=t;return r.label&&(r.label=r.label.trim()),r.file&&(r.file=r.file.name+":"+r.file.line+(r.file.column?":"+r.file.column:"")),chunk6ATEEAVC_cjs.a(this,f).call(this,r)}};f=new WeakMap;var o,a,_=class extends chunk7OFJLC7L_cjs.a{constructor(){super();chunk6ATEEAVC_cjs.b(this,o,void 0);chunk6ATEEAVC_cjs.b(this,a,void 0);chunk6ATEEAVC_cjs.c(this,o,R__default.default.stdout),chunk6ATEEAVC_cjs.c(this,a,R__default.default.stderr);}setStdout(t){chunk6ATEEAVC_cjs.c(this,o,t);}setStderr(t){chunk6ATEEAVC_cjs.c(this,a,t);}_log(t,i){let r=["error","warn"].includes(i)?chunk6ATEEAVC_cjs.a(this,a):chunk6ATEEAVC_cjs.a(this,o);chunkGZRIZCRG_cjs.a(t+`
17
- `,r);}};o=new WeakMap,a=new WeakMap;
14
+ var a=class{_ready=!0;_stream;_name;constructor(t,r){this._stream=t,this._name=r;}write(t){this.writeStream(t);}end(...t){this._stream.end(...t);}writeStream(t){if(!this._ready){console.warn("Stream busy: "+this._name+'. Write will be dropped: "'+t+'"');return}this._ready=!1,this._stream.on("error",r=>{throw r}),this._stream.on("drain",()=>{this._ready=!0;}),this._stream.on("finish",()=>{this._ready=!0;}),this._ready=this._stream.write(t,()=>{});}};var n=class{_filePath;_immediate;_stream;_options;constructor(t,r=!1,e={}){this._filePath=t,this._immediate=r,this._options=e,this._immediate||(this._stream=rotatingFileStream.createStream(this._filePath,e));}write(t){let r=this._stream;this._immediate&&(r=rotatingFileStream.createStream(this._filePath,this._options));let e=new a(r,this._filePath);e.write(t),this._immediate&&e.end();}end(){this._stream!==void 0&&this._stream.end();}};var s=class{_stream;constructor(t){let{filePath:r,writeImmediately:e=!1,...h}=t;this._stream=new n(r,e,h);}log(t){this._stream.write(this._formatMessage(t)+`
15
+ `);}};var p=class extends s{#t;constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});}setStringify(t){this.#t=t;}_formatMessage(t){let{type:r,...e}=t;return e.label&&(e.label=e.label.trim()),e.file&&(e.file=e.file.name+":"+e.file.line+(e.file.column?":"+e.file.column:"")),this.#t(e)}};var m=class extends chunkZJMTPHZR_cjs.a{#t;#e;constructor(){super(),this.#t=c__default.default.stdout,this.#e=c__default.default.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#e=t;}_log(t,r){let e=["error","warn"].includes(r)?this.#e:this.#t;chunkO34IIMWQ_cjs.a(t+`
16
+ `,e);}};
18
17
 
19
18
  Object.defineProperty(exports, 'PrettyReporter', {
20
19
  enumerable: true,
21
- get: function () { return chunkGZRIZCRG_cjs.b; }
20
+ get: function () { return chunkO34IIMWQ_cjs.b; }
22
21
  });
23
- exports.AbstractFileReporter = l;
24
- exports.JsonFileReporter = y;
25
- exports.JsonReporter = _;
22
+ exports.AbstractFileReporter = s;
23
+ exports.JsonFileReporter = p;
24
+ exports.JsonReporter = m;
26
25
  //# sourceMappingURL=out.js.map
27
26
  //# sourceMappingURL=reporter.server.cjs.map