@visulima/pail 1.1.7 → 1.1.9

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pail.browser.ts","../src/reporter/raw/raw.browser.ts","../src/util/arrayify.ts","../src/util/merge-types.ts","../src/util/pad-end.ts","../src/processor/error/error-proto.ts","../src/processor/error/error-with-cause-serializer.ts","../src/processor/error/error-processor.ts"],"names":["stringifyConfigure","RawReporter","meta","context","message","type","writeConsoleLogBasedOnLevel","arrayify","x","mergeTypes","standard","custom","types","padEnd","string_","targetLength","EMPTY_META","PailBrowserImpl","options","LOG_TYPES","getLongestLabel","EXTENDED_RFC_5424_LOG_LEVELS","error","name","label","data","span","current","arguments_","reporter","reporters","raw","processors","processor","level","typeName","prefix","suffix","messageObject","logLevel","resolveLog","newLog","repeated","lastMeta","diffTime","serializedLog","isSameLog","PailBrowser","seen","rawSymbol","errorProto","value","ErrorProto","errorWithCauseSerializer","protoError","error_","key","ErrorProcessor"],"mappings":"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","sourcesContent":["import type { stringify } from \"safe-stable-stringify\";\nimport { configure as stringifyConfigure } from \"safe-stable-stringify\";\n\nimport { EXTENDED_RFC_5424_LOG_LEVELS, LOG_TYPES } from \"./constants\";\nimport { RawReporter } from \"./reporter/raw/raw.browser\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LiteralUnion,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Message,\n Meta,\n Primitive,\n Processor,\n Reporter,\n StringifyAwareProcessor,\n StringifyAwareReporter,\n} from \"./types\";\nimport { arrayify } from \"./util/arrayify\";\nimport { getLongestLabel } from \"./util/get-longest-label\";\nimport { mergeTypes } from \"./util/merge-types\";\nimport { padEnd } from \"./util/pad-end\";\n\nconst EMPTY_META = {\n badge: undefined,\n context: undefined,\n error: undefined,\n label: undefined,\n message: undefined,\n prefix: undefined,\n repeated: undefined,\n scope: undefined,\n suffix: undefined,\n};\n\nexport class PailBrowserImpl<T extends string = never, L extends string = never> {\n protected timersMap: Map<string, number>;\n\n protected countMap: Map<string, number>;\n\n protected seqTimers: Set<string>;\n\n protected readonly lastLog: {\n count?: number;\n object?: Meta<L>;\n serialized?: string;\n time?: Date;\n timeout?: ReturnType<typeof setTimeout>;\n };\n\n protected readonly logLevels: Record<string, number>;\n\n protected disabled: boolean;\n\n protected scopeName: string[];\n\n protected readonly types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n protected readonly longestLabel: string;\n\n protected readonly processors: Set<Processor<L>>;\n\n protected readonly generalLogLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;\n\n protected reporters: Set<Reporter<L>>;\n\n protected readonly throttle: number;\n\n protected readonly throttleMin: number;\n\n protected readonly stringify: typeof stringify;\n\n protected groups: string[];\n\n protected readonly startTimerMessage: string;\n\n protected readonly endTimerMessage: string;\n\n protected rawReporter: Reporter<L>;\n\n public constructor(options: ConstructorOptions<T, L>) {\n this.throttle = options.throttle ?? 1000;\n this.throttleMin = options.throttleMin ?? 5;\n\n this.stringify = stringifyConfigure({\n strict: true,\n });\n\n this.startTimerMessage = options.messages?.timerStart ?? \"Initialized timer...\";\n this.endTimerMessage = options.messages?.timerEnd ?? \"Timer run for:\";\n this.types = mergeTypes<L, T>(LOG_TYPES, (options.types ?? {}) as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>);\n this.longestLabel = getLongestLabel<L, T>(this.types);\n\n this.logLevels = { ...EXTENDED_RFC_5424_LOG_LEVELS, ...options.logLevels };\n this.generalLogLevel = this._normalizeLogLevel(options.logLevel);\n\n this.reporters = new Set();\n this.processors = new Set();\n\n this.disabled = options.disabled ?? false;\n\n this.scopeName = arrayify(options.scope).filter(Boolean) as string[];\n\n this.timersMap = new Map();\n this.countMap = new Map();\n\n this.groups = [];\n\n this.seqTimers = new Set();\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax,guard-for-in\n for (const type in this.types) {\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n this[type] = this._logger.bind(this, type as T, false);\n }\n\n // Track of last log\n this.lastLog = {};\n\n if (Array.isArray(options.reporters)) {\n this.registerReporters(options.reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n\n if (Array.isArray(options.processors)) {\n this.registerProcessors(options.processors);\n }\n }\n\n public wrapConsole(): void {\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const type in this.types) {\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(console as any)[\"__\" + type]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[\"__\" + type] = (console as any)[type];\n }\n // Override\n // @TODO: Fix typings\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[type] = (this as unknown as PailBrowserImpl<T, L>)[type as keyof PailBrowserImpl<T, L>];\n }\n }\n\n public restoreConsole(): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const type in this.types) {\n // Restore if backup is available\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((console as any)[\"__\" + type]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[type] = (console as any)[\"__\" + type];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-dynamic-delete\n delete (console as any)[\"__\" + type];\n }\n }\n }\n\n public wrapException(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on(\"uncaughtException\", (error: any) => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n (this as unknown as PailBrowserImpl<T, L>).error(error);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on(\"unhandledRejection\", (error: any) => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n (this as unknown as PailBrowserImpl<T, L>).error(error);\n });\n }\n\n /**\n * Disables logging\n */\n public disable(): void {\n this.disabled = true;\n }\n\n /**\n * Enables logging\n */\n public enable(): void {\n this.disabled = false;\n }\n\n public isEnabled(): boolean {\n return !this.disabled;\n }\n\n public scope<N extends string = T>(...name: string[]): PailBrowserType<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 PailBrowserType<N, L>;\n }\n\n public unscope(): void {\n this.scopeName = [];\n }\n\n public time(label = \"default\"): void {\n if (this.seqTimers.has(label)) {\n this._logger(\"warn\", false, {\n message: \"Timer '\" + label + \"' already exists\",\n prefix: label,\n });\n } else {\n this.seqTimers.add(label);\n this.timersMap.set(label, Date.now());\n\n this._logger(\"start\", false, {\n message: this.startTimerMessage,\n prefix: label,\n });\n }\n }\n\n public timeLog(label?: string, ...data: unknown[]): void {\n if (!label && this.seqTimers.size > 0) {\n // eslint-disable-next-line no-param-reassign\n label = [...this.seqTimers].pop();\n }\n\n if (label && this.timersMap.has(label)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const span = Date.now() - this.timersMap.get(label)!;\n\n this._logger(\"info\", false, {\n context: data,\n message: span < 1000 ? span + \" ms\" : (span / 1000).toFixed(2) + \" s\",\n prefix: label,\n });\n } else {\n this._logger(\"warn\", false, {\n context: data,\n message: \"Timer not found\",\n prefix: label,\n });\n }\n }\n\n public timeEnd(label?: string): void {\n if (!label && this.seqTimers.size > 0) {\n // eslint-disable-next-line no-param-reassign\n label = [...this.seqTimers].pop();\n }\n\n if (label && this.timersMap.has(label)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const span = Date.now() - this.timersMap.get(label)!;\n\n this.timersMap.delete(label);\n\n this._logger(\"stop\", false, {\n message: this.endTimerMessage + \" \" + (span < 1000 ? span + \" ms\" : (span / 1000).toFixed(2) + \" s\"),\n prefix: label,\n });\n }\n }\n\n public group(label = \"console.group\"): void {\n if (typeof window === \"undefined\") {\n // eslint-disable-next-line no-console\n console.group(label);\n } else {\n this.groups.push(label);\n }\n }\n\n public groupEnd(): void {\n if (typeof window === \"undefined\") {\n // eslint-disable-next-line no-console\n console.groupEnd();\n } else {\n this.groups.pop();\n }\n }\n\n public count(label = \"default\"): void {\n const current = this.countMap.get(label) ?? 0;\n\n this.countMap.set(label, current + 1);\n\n this._logger(\"log\", false, {\n message: label + \": \" + (current + 1),\n prefix: label,\n });\n }\n\n public countReset(label = \"default\"): void {\n if (this.countMap.has(label)) {\n this.countMap.delete(label);\n } else {\n this._logger(\"warn\", false, {\n message: \"Count for \" + label + \" does not exist\",\n prefix: label,\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n public clear(): void {\n // eslint-disable-next-line no-console\n console.clear();\n }\n\n public raw(message: string, ...arguments_: unknown[]): void {\n if (this.disabled) {\n return;\n }\n\n this._logger(\"log\", true, {\n context: arguments_,\n message,\n });\n }\n\n protected extendReporter(reporter: Reporter<L>): Reporter<L> {\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 return reporter;\n }\n\n protected registerReporters(reporters: Reporter<L>[]): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const reporter of reporters) {\n this.reporters.add(this.extendReporter(reporter));\n }\n }\n\n private _report(meta: Meta<L>, raw: boolean): void {\n if (raw) {\n this.rawReporter.log(Object.freeze(meta));\n } else {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const reporter of this.reporters) {\n reporter.log(Object.freeze(meta));\n }\n }\n }\n\n private registerProcessors(processors: Processor<L>[]): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const processor of processors) {\n if (typeof (processor as StringifyAwareProcessor<L>).setStringify === \"function\") {\n (processor as StringifyAwareProcessor<L>).setStringify(this.stringify);\n }\n\n this.processors.add(processor as Processor<L>);\n }\n }\n\n private _normalizeLogLevel(level: LiteralUnion<ExtendedRfc5424LogLevels, L> | undefined): LiteralUnion<ExtendedRfc5424LogLevels, L> {\n // eslint-disable-next-line security/detect-object-injection\n return level && this.logLevels[level] ? level : \"debug\";\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\n private _buildMeta(typeName: string, type: Partial<LoggerConfiguration<L>>, ...arguments_: any[]): Meta<L> {\n const meta = { ...EMPTY_META } as Meta<L>;\n\n meta.type = {\n level: type.logLevel as LiteralUnion<ExtendedRfc5424LogLevels, L>,\n name: typeName,\n };\n\n meta.groups = this.groups;\n meta.scope = this.scopeName;\n meta.date = new Date();\n\n if (arguments_.length === 1 && typeof arguments_[0] === \"object\" && arguments_[0] !== null) {\n if (arguments_[0] instanceof Error) {\n // eslint-disable-next-line prefer-destructuring\n meta.error = arguments_[0];\n } else if (\"message\" in arguments_[0]) {\n const { context, message, prefix, suffix } = arguments_[0] as Message;\n\n if (context) {\n meta.context = context;\n }\n\n if (prefix) {\n meta.prefix = prefix;\n }\n\n if (suffix) {\n meta.suffix = suffix;\n }\n\n meta.message = message;\n } else {\n meta.message = arguments_[0] as Primitive | ReadonlyArray<unknown> | Record<PropertyKey, unknown>;\n }\n } else if (arguments_.length > 1 && typeof arguments_[0] === \"string\") {\n meta.message = arguments_[0] as string;\n meta.context = arguments_.slice(1);\n } else {\n // eslint-disable-next-line prefer-destructuring\n meta.message = arguments_[0];\n }\n\n if (type.logLevel === \"trace\") {\n meta.traceError = new Error(\"Trace\");\n }\n\n if (type.badge) {\n meta.badge = padEnd(type.badge, type.badge.length + 1);\n }\n\n if (type.label) {\n meta.label = type.label;\n }\n\n return meta;\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\n private _logger(type: LiteralUnion<DefaultLogTypes, T>, raw: boolean, ...messageObject: any[]): void {\n if (this.disabled) {\n return;\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const logLevel = this._normalizeLogLevel(this.types[type].logLevel);\n\n // eslint-disable-next-line security/detect-object-injection\n if ((this.logLevels[logLevel] as number) >= (this.logLevels[this.generalLogLevel] as number)) {\n // eslint-disable-next-line security/detect-object-injection\n let meta = this._buildMeta(type, this.types[type], ...messageObject);\n\n /**\n * @param newLog false if the throttle expired and we don't want to log a duplicate\n */\n const resolveLog = (newLog = false) => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const repeated = (this.lastLog.count || 0) - this.throttleMin;\n\n if (this.lastLog.object && repeated > 0) {\n const lastMeta = { ...this.lastLog.object };\n\n if (repeated > 1) {\n lastMeta.repeated = repeated;\n }\n\n this._report(lastMeta, raw);\n\n this.lastLog.count = 1;\n }\n\n if (newLog) {\n // Apply global processors\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const processor of this.processors) {\n meta = { ...processor.process(meta) };\n }\n\n this.lastLog.object = meta;\n\n this._report(meta, raw);\n }\n };\n\n clearTimeout(this.lastLog.timeout);\n\n const diffTime = this.lastLog.time && meta.date ? new Date(meta.date as Date | string).getTime() - this.lastLog.time.getTime() : 0;\n\n this.lastLog.time = new Date(meta.date as Date | string);\n\n if (diffTime < this.throttle) {\n try {\n const serializedLog = JSON.stringify([meta.label, meta.scope, meta.type, meta.message, meta.prefix, meta.suffix, meta.context]);\n const isSameLog = this.lastLog.serialized === serializedLog;\n\n this.lastLog.serialized = serializedLog;\n\n if (isSameLog) {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.lastLog.count = (this.lastLog.count || 0) + 1;\n\n if (this.lastLog.count > this.throttleMin) {\n // Auto-resolve when throttle is timed out\n this.lastLog.timeout = setTimeout(resolveLog, this.throttle);\n\n return; // SPAM!\n }\n }\n } catch {\n // Circular References\n }\n }\n\n resolveLog(true);\n }\n }\n}\n\nexport type PailBrowserType<T extends string = never, L extends string = never> = PailBrowserImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ConstructorOptions<TC, LC>) => PailBrowserType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ConstructorOptions<T, L>) => PailBrowserType<T, L>;\n\nexport const PailBrowser = PailBrowserImpl as unknown as PailBrowserType;\n","import type { ReadonlyMeta, Reporter } from \"../../types\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\n\nexport class RawReporter<L extends string = never> implements Reporter<L> {\n // eslint-disable-next-line class-methods-use-this\n public log(meta: ReadonlyMeta<L>): void {\n const { context = [], message, type } = meta;\n\n const consoleLogFunction = writeConsoleLogBasedOnLevel(type.level);\n\n consoleLogFunction(message, ...context);\n }\n}\n","export const arrayify = <T>(x: T | T[]): T[] => {\n if (x === undefined) {\n return [] as T[];\n }\n\n return Array.isArray(x) ? x : ([x] as T[]);\n};\n","import type { DefaultLoggerTypes, DefaultLogTypes, LiteralUnion, LoggerTypesConfig } from \"../types\";\n\nexport const mergeTypes = <L extends string, T extends string>(\n standard: DefaultLoggerTypes<L>,\n custom: LoggerTypesConfig<T, L>,\n): LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L> => {\n const types = { ...standard } as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n Object.keys(custom).forEach((type) => {\n types[type as T] = { ...types[type as T], ...custom[type as T] };\n });\n\n return types;\n};\n","export const padEnd = (string_: string, targetLength: number): string => {\n if (string_.length >= targetLength) {\n return string_;\n }\n\n return string_.padEnd(targetLength);\n};\n","// eslint-disable-next-line import/exports-last\nexport const seen = Symbol(\"circular-reference-tag\");\n\n// eslint-disable-next-line import/exports-last,import/no-unused-modules\nexport const rawSymbol = Symbol(\"raw-error-ref\");\n\nconst errorProto = Object.create(\n {},\n {\n aggregateErrors: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n cause: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n code: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n message: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n name: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n raw: {\n enumerable: false,\n get() {\n // eslint-disable-next-line security/detect-object-injection\n return this[rawSymbol];\n },\n set(value) {\n // eslint-disable-next-line security/detect-object-injection\n this[rawSymbol] = value;\n },\n },\n stack: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n },\n) as SerializedError;\n\nObject.defineProperty(errorProto, rawSymbol, {\n value: {},\n writable: true,\n});\n\nexport const ErrorProto = errorProto;\n\nexport type SerializedError<ErrorType = Error> = Record<PropertyKey, unknown> & {\n aggregateErrors?: SerializedError<ErrorType>[];\n cause?: unknown;\n code?: string;\n message: string;\n name: string;\n raw?: ErrorType;\n stack?: string;\n};\n","import type { SerializedError } from \"./error-proto\";\nimport { ErrorProto, seen } from \"./error-proto\";\n\ntype CauseError = Error & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cause: any;\n};\n\ntype Options = {\n readonly maxDepth?: number;\n readonly useToJSON?: boolean;\n};\n\n/**\n * Serialize an `Error` object into a plain object.\n *\n * - Non-error values are passed through.\n * - Custom properties are preserved.\n * - Buffer properties are replaced with `[object Buffer]`.\n * - Circular references are handled.\n * - If the input object has a `.toJSON()` method, then it's called instead of serializing the object's properties.\n * - It's up to `.toJSON()` implementation to handle circular references and enumerability of the properties.\n */\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport const errorWithCauseSerializer = (error: AggregateError | Error, options: Options = {}): SerializedError => {\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line no-param-reassign\n error[seen as keyof Error] = undefined; // tag to prevent re-looking at this\n\n const protoError = Object.create(ErrorProto as object) as SerializedError;\n\n protoError.name = Object.prototype.toString.call(error.constructor) === \"[object Function]\" ? error.constructor.name : error.name;\n protoError.message = error.message;\n protoError.stack = error.stack;\n\n if (Array.isArray((error as AggregateError).errors)) {\n protoError.aggregateErrors = (error as AggregateError).errors.map((error_: AggregateError | Error) => errorWithCauseSerializer(error_, options));\n }\n\n // Handle aggregate errors\n if ((error as CauseError).cause instanceof Error && !Object.prototype.hasOwnProperty.call((error as CauseError).cause, seen as PropertyKey)) {\n protoError.cause = errorWithCauseSerializer((error as CauseError).cause, options);\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const key in error) {\n // eslint-disable-next-line security/detect-object-injection\n if (protoError[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = error[key as keyof Error] as any;\n\n if (value instanceof Error) {\n if (!Object.prototype.hasOwnProperty.call(value, seen as PropertyKey)) {\n // eslint-disable-next-line security/detect-object-injection\n protoError[key] = errorWithCauseSerializer(value, options);\n }\n } else if (typeof value === \"function\") {\n // eslint-disable-next-line security/detect-object-injection\n protoError[key] = \"[Function: \" + (value.name || \"anonymous\");\n } else {\n // Gracefully handle non-configurable errors like `DOMException`.\n try {\n // eslint-disable-next-line security/detect-object-injection\n protoError[key] = value;\n } catch {\n /* empty */\n }\n }\n }\n }\n\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-dynamic-delete\n delete error[seen as unknown as keyof Error]; // clean up tag in case err is serialized again later\n\n protoError.raw = error;\n\n return protoError;\n};\n","import type { Meta, Processor } from \"../../types\";\nimport type { SerializedError } from \"./error-proto\";\nimport { errorWithCauseSerializer } from \"./error-with-cause-serializer\";\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 error: SerializedError | undefined;\n }\n }\n}\n\nexport class ErrorProcessor<L extends string = never> implements Processor<L> {\n private readonly _options: { maxDepth: number; useToJSON: boolean };\n\n public constructor(options: { maxDepth?: number; useToJSON?: boolean } = {}) {\n this._options = {\n maxDepth: Number.POSITIVE_INFINITY,\n useToJSON: true,\n ...options,\n };\n }\n\n public process(meta: Meta<L>): Meta<L> {\n if (meta.error) {\n // eslint-disable-next-line no-param-reassign\n meta.error = errorWithCauseSerializer(meta.error, this._options);\n }\n\n return meta;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/pretty/pretty.server.ts","../../../node_modules/.pnpm/ansi-regex@6.0.1/node_modules/ansi-regex/index.js","../../../node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../../node_modules/.pnpm/string-length@6.0.0/node_modules/string-length/index.js","../../../node_modules/.pnpm/terminal-size@4.0.0/node_modules/terminal-size/index.js","../../../node_modules/.pnpm/get-east-asian-width@1.2.0/node_modules/get-east-asian-width/lookup.js","../../../node_modules/.pnpm/get-east-asian-width@1.2.0/node_modules/get-east-asian-width/index.js","../../../node_modules/.pnpm/emoji-regex@10.3.0/node_modules/emoji-regex/index.mjs","../../../node_modules/.pnpm/string-width@7.1.0/node_modules/string-width/index.js","../../../node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../../node_modules/.pnpm/wrap-ansi@9.0.0/node_modules/wrap-ansi/index.js","../src/util/write-stream.ts"],"names":["colorize","bgGrey","bold","cyan","grey","red","underline","white","ansiRegex","onlyFirst","pattern","regex","stripAnsi","string","segmenter","stringLength","countAnsiEscapeCodes","length","_","process","execFileSync","fs","tty","defaultColumns","defaultRows","exec","command","arguments_","shell","env","create","columns","rows","createIfNotDefault","maybeColumns","maybeRows","terminalSize","stdout","stderr","fallback","tput","devTty","resize","flags","size","isAmbiguous","x","isFullWidth","isWide","validate","codePoint","eastAsianWidth","ambiguousAsWide","emoji_regex_default","stringWidth","options","ambiguousIsNarrow","width","eastAsianWidthOptions","character","wrapAnsi16","offset","code","wrapAnsi256","wrapAnsi16m","green","blue","styles","modifierNames","foregroundColorNames","backgroundColorNames","colorNames","assembleStyles","codes","groupName","group","styleName","style","hex","matches","colorString","integer","remainder","value","result","ansiStyles","ansi_styles_default","ESCAPES","END_CODE","ANSI_ESCAPE_BELL","ANSI_CSI","ANSI_OSC","ANSI_SGR_TERMINATOR","ANSI_ESCAPE_LINK","wrapAnsiCode","wrapAnsiHyperlink","url","wordLengths","wrapWord","word","characters","isInsideEscape","isInsideLinkEscape","visible","index","characterLength","stringVisibleTrimSpacesRight","words","last","returnValue","escapeCode","escapeUrl","lengths","rowLength","remainingColumns","breaksStartingThisLine","row","preString","pre","preStringIndex","groups","wrapAnsi","line","writeStream","data","stream","PrettyReporter","AbstractPrettyReporter","#stdout","#stderr","#interactiveManager","#interactive","manager","interactive","meta","badge","context","date","error","file","label","message","prefix","repeated","scope","suffix","traceError","type","color","colorized","groupSpaces","items","longestBadge","getLongestBadge","longestLabel","getLongestLabel","titleSize","fileMessage","fileMessageSize","formattedMessage","hasError","newValue","logLevel","streamType","hideName","name","stack","lines","m","formattedLabel"],"mappings":"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K,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MAC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","sourcesContent":["import colorize, { bgGrey, bold, cyan, grey, red, underline, white } from \"@visulima/colorize\";\nimport type { stringify } from \"safe-stable-stringify\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport stringLength from \"string-length\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport terminalSize from \"terminal-size\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport wrapAnsi from \"wrap-ansi\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ExtendedRfc5424LogLevels, InteractiveStreamReporter, LiteralUnion, ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeStream } from \"../../util/write-stream\";\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> implements InteractiveStreamReporter<L> {\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n public setStdout(stdout: NodeJS.WriteStream): void {\n this.#stdout = stdout;\n }\n\n public setStderr(stderr: NodeJS.WriteStream): void {\n this.#stderr = stderr;\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 this._log(this._formatMessage(meta as ReadonlyMeta<L>), meta.type.level);\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n protected _formatMessage(data: ReadonlyMeta<L>): string {\n const { columns } = terminalSize();\n\n let size = columns;\n\n if (typeof this._styles.messageLength === \"number\") {\n size = this._styles.messageLength;\n }\n\n const { badge, context, date, error, file, groups, label, message, prefix, repeated, scope, suffix, traceError, type } = data;\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 groupSpaces: string = groups.map(() => \" \").join(\"\");\n const items: string[] = [];\n\n if (groups.length > 0) {\n items.push((groupSpaces + grey(\"[\" + groups.at(-1) + \"] \")) as string);\n }\n\n if (date) {\n items.push(grey(this._styles.dateFormatter(new Date(date))) + \" \");\n }\n\n if (badge) {\n items.push(colorized(badge) as string);\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n items.push(grey(\".\".repeat(longestBadge.length)) + \" \");\n }\n }\n\n const longestLabel: string = getLongestLabel<L, T>(this._loggerTypes);\n\n if (label) {\n items.push(colorized(this._formatLabel(label as string)) + \" \", grey(\".\".repeat(longestLabel.length - stringLength(label as string))));\n } else {\n // plus 2 for the space and the dot\n items.push(grey(\".\".repeat(longestLabel.length + 2)));\n }\n\n if (repeated) {\n items.push(bgGrey.white(\"[\" + repeated + \"x]\") + \" \");\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n items.push(grey(\" [\" + scope.join(\" > \") + \"] \"));\n }\n\n if (prefix) {\n items.push(\n grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") +\n \"[\" +\n (this._styles.underline.prefix ? underline(prefix as string) : prefix) +\n \"] \",\n ),\n );\n }\n\n const titleSize = stringLength(items.join(\" \"));\n\n if (file) {\n const fileMessage = file.name + (file.line ? \":\" + file.line : \"\");\n const fileMessageSize = stringLength(fileMessage);\n\n items.push(grey(\".\".repeat(size - titleSize - fileMessageSize - 2) + \" \" + fileMessage));\n } else {\n items.push(grey(\".\".repeat(size - titleSize - 1)));\n }\n\n if (items.length > 0) {\n items.push(\"\\n\\n\");\n }\n\n if (message) {\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this._stringify as typeof stringify)(message);\n\n items.push(\n groupSpaces +\n wrapAnsi(formattedMessage ?? \"undefined\", size - 3, {\n hard: true,\n trim: true,\n wordWrap: true,\n }),\n );\n\n if (context) {\n let hasError = false;\n\n items.push(\n ...context.map((value) => {\n if (value instanceof Error) {\n hasError = true;\n return \"\\n\\n\" + this._formatError(value, size, groupSpaces);\n }\n\n if (typeof value === \"object\") {\n return \" \" + (this._stringify as typeof stringify)(value);\n }\n\n const newValue = (hasError ? \"\\n\\n\" : \" \") + value;\n\n hasError = false;\n\n return newValue;\n }),\n );\n }\n }\n\n if (error) {\n items.push(this._formatError(error as Error, size, groupSpaces));\n }\n\n if (traceError) {\n items.push(this._formatError(traceError as Error, size, groupSpaces, true));\n }\n\n if (suffix) {\n items.push(\"\\n\", groupSpaces + grey(this._styles.underline.suffix ? underline(suffix as string) : suffix));\n }\n\n return items.join(\"\") + \"\\n\";\n }\n\n protected _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void {\n const streamType = [\"error\", \"trace\", \"warn\"].includes(logLevel as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, message.split(\"\\n\"), 0);\n } else {\n writeStream(message + \"\\n\", stream);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _formatError(error: Error, size: number, groupSpaces: string, hideName = false): string {\n const { message, name, stack } = error;\n\n const items: string[] = [];\n\n items.push(\n ...(hideName ? [] : [groupSpaces + red(name), \": \"]),\n wrapAnsi(message, size - 3, {\n hard: true,\n trim: true,\n wordWrap: true,\n }),\n );\n\n if (stack) {\n const lines = stack\n .split(\"\\n\")\n .splice(1)\n .map((line: string) => groupSpaces + line.trim().replace(\"file://\", \"\"))\n .filter((line: string) => !line.includes(\"/pail/dist\"));\n\n items.push(\n \"\\n\",\n lines\n .map((line: string) => \" \" + line.replace(/^at +/, (m) => grey(m)).replace(/\\((.+)\\)/, (_, m) => \"(\" + cyan(m as string) + \")\"))\n .join(\"\\n\"),\n );\n }\n\n return items.join(\"\");\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","export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","import stripAnsi from 'strip-ansi';\n\nconst segmenter = new Intl.Segmenter();\n\nexport default function stringLength(string, {countAnsiEscapeCodes = false} = {}) {\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tlet length = 0;\n\n\tfor (const _ of segmenter.segment(string)) { // eslint-disable-line no-unused-vars\n\t\tlength++;\n\t}\n\n\treturn length;\n}\n","import process from 'node:process';\nimport {execFileSync} from 'node:child_process';\nimport fs from 'node:fs';\nimport tty from 'node:tty';\n\nconst defaultColumns = 80;\nconst defaultRows = 24;\n\nconst exec = (command, arguments_, {shell, env} = {}) =>\n\texecFileSync(command, arguments_, {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t\tshell,\n\t\tenv,\n\t}).trim();\n\nconst create = (columns, rows) => ({\n\tcolumns: Number.parseInt(columns, 10),\n\trows: Number.parseInt(rows, 10),\n});\n\nconst createIfNotDefault = (maybeColumns, maybeRows) => {\n\tconst {columns, rows} = create(maybeColumns, maybeRows);\n\n\tif (Number.isNaN(columns) || Number.isNaN(rows)) {\n\t\treturn;\n\t}\n\n\tif (columns === defaultColumns && rows === defaultRows) {\n\t\treturn;\n\t}\n\n\treturn {columns, rows};\n};\n\nexport default function terminalSize() {\n\tconst {env, stdout, stderr} = process;\n\n\tif (stdout?.columns && stdout?.rows) {\n\t\treturn create(stdout.columns, stdout.rows);\n\t}\n\n\tif (stderr?.columns && stderr?.rows) {\n\t\treturn create(stderr.columns, stderr.rows);\n\t}\n\n\t// These values are static, so not the first choice.\n\tif (env.COLUMNS && env.LINES) {\n\t\treturn create(env.COLUMNS, env.LINES);\n\t}\n\n\tconst fallback = {\n\t\tcolumns: defaultColumns,\n\t\trows: defaultRows,\n\t};\n\n\tif (process.platform === 'win32') {\n\t\t// We include `tput` for Windows users using Git Bash.\n\t\treturn tput() ?? fallback;\n\t}\n\n\tif (process.platform === 'darwin') {\n\t\treturn devTty() ?? tput() ?? fallback;\n\t}\n\n\treturn devTty() ?? tput() ?? resize() ?? fallback;\n}\n\nconst devTty = () => {\n\ttry {\n\t\t// eslint-disable-next-line no-bitwise\n\t\tconst flags = process.platform === 'darwin' ? fs.constants.O_EVTONLY | fs.constants.O_NONBLOCK : fs.constants.O_NONBLOCK;\n\t\t// eslint-disable-next-line new-cap\n\t\tconst {columns, rows} = tty.WriteStream(fs.openSync('/dev/tty', flags));\n\t\treturn {columns, rows};\n\t} catch {}\n};\n\n// On macOS, this only returns correct values when stdout is not redirected.\nconst tput = () => {\n\ttry {\n\t\t// `tput` requires the `TERM` environment variable to be set.\n\t\tconst columns = exec('tput', ['cols'], {env: {TERM: 'dumb', ...process.env}});\n\t\tconst rows = exec('tput', ['lines'], {env: {TERM: 'dumb', ...process.env}});\n\n\t\tif (columns && rows) {\n\t\t\treturn createIfNotDefault(columns, rows);\n\t\t}\n\t} catch {}\n};\n\n// Only exists on Linux.\nconst resize = () => {\n\t// `resize` is preferred as it works even when all file descriptors are redirected\n\t// https://linux.die.net/man/1/resize\n\ttry {\n\t\tconst size = exec('resize', ['-u']).match(/\\d+/g);\n\n\t\tif (size.length === 2) {\n\t\t\treturn createIfNotDefault(size[0], size[1]);\n\t\t}\n\t} catch {}\n};\n","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E3\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0x4DBF\n\t\t|| x >= 0x4E00 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18D00 && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA88\n\t\t|| x >= 0x1FA90 && x <= 0x1FABD\n\t\t|| x >= 0x1FABF && x <= 0x1FAC5\n\t\t|| x >= 0x1FACE && x <= 0x1FADB\n\t\t|| x >= 0x1FAE0 && x <= 0x1FAE8\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// For Prettier. This doesn't count \"ambiguous\" characters or check for valid input.\n// https://github.com/sindresorhus/get-east-asian-width/pull/6\nexport const _isNarrowWidth = codePoint => !(isFullWidth(codePoint) || isWide(codePoint));\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (codePoint >= 0x3_00 && codePoint <= 0x3_6F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","export const writeStream = (data: string, stream: NodeJS.WriteStream): boolean => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/unbound-method\n const write = (stream as any).__write ?? stream.write;\n\n return write.call(stream, data);\n};\n"]}
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkN2UPJYJR_cjs = require('./chunk-N2UPJYJR.cjs');
4
- var chunkQINSQ6TU_cjs = require('./chunk-QINSQ6TU.cjs');
5
- var safeStableStringify = require('safe-stable-stringify');
6
-
7
- var u=class{log(e){let{context:r=[],message:t,type:o}=e;chunkN2UPJYJR_cjs.a(o.level)(t,...r);}};var w=s=>s===void 0?[]:Array.isArray(s)?s:[s];var v=(s,e)=>{let r={...s};return Object.keys(e).forEach(t=>{r[t]={...r[t],...e[t]};}),r};var x=(s,e)=>s.length>=e?s:s.padEnd(e);var P={badge:void 0,context:void 0,error:void 0,label:void 0,message:void 0,prefix:void 0,repeated:void 0,scope:void 0,suffix:void 0},L=class{timersMap;countMap;seqTimers;lastLog;logLevels;disabled;scopeName;types;longestLabel;processors;generalLogLevel;reporters;throttle;throttleMin;stringify;groups;startTimerMessage;endTimerMessage;rawReporter;constructor(e){this.throttle=e.throttle??1e3,this.throttleMin=e.throttleMin??5,this.stringify=safeStableStringify.configure({strict:!0}),this.startTimerMessage=e.messages?.timerStart??"Initialized timer...",this.endTimerMessage=e.messages?.timerEnd??"Timer run for:",this.types=v(chunkQINSQ6TU_cjs.b,e.types??{}),this.longestLabel=chunkQINSQ6TU_cjs.c(this.types),this.logLevels={...chunkQINSQ6TU_cjs.a,...e.logLevels},this.generalLogLevel=this._normalizeLogLevel(e.logLevel),this.reporters=new Set,this.processors=new Set,this.disabled=e.disabled??!1,this.scopeName=w(e.scope).filter(Boolean),this.timersMap=new Map,this.countMap=new Map,this.groups=[],this.seqTimers=new Set;for(let r in this.types)this[r]=this._logger.bind(this,r,!1);this.lastLog={},Array.isArray(e.reporters)&&this.registerReporters(e.reporters),this.rawReporter=this.extendReporter(e.rawReporter??new u),Array.isArray(e.processors)&&this.registerProcessors(e.processors);}wrapConsole(){for(let e in this.types)console["__"+e]||(console["__"+e]=console[e]),console[e]=this[e];}restoreConsole(){for(let e in this.types)console["__"+e]&&(console[e]=console["__"+e],delete console["__"+e]);}wrapException(){process.on("uncaughtException",e=>{this.error(e);}),process.on("unhandledRejection",e=>{this.error(e);});}disable(){this.disabled=!0;}enable(){this.disabled=!1;}isEnabled(){return !this.disabled}scope(...e){if(e.length===0)throw new Error("No scope name was defined.");return this.scopeName=e.flat(),this}unscope(){this.scopeName=[];}time(e="default"){this.seqTimers.has(e)?this._logger("warn",!1,{message:"Timer '"+e+"' already exists",prefix:e}):(this.seqTimers.add(e),this.timersMap.set(e,Date.now()),this._logger("start",!1,{message:this.startTimerMessage,prefix:e}));}timeLog(e,...r){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){let t=Date.now()-this.timersMap.get(e);this._logger("info",!1,{context:r,message:t<1e3?t+" ms":(t/1e3).toFixed(2)+" s",prefix:e});}else this._logger("warn",!1,{context:r,message:"Timer not found",prefix:e});}timeEnd(e){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){let r=Date.now()-this.timersMap.get(e);this.timersMap.delete(e),this._logger("stop",!1,{message:this.endTimerMessage+" "+(r<1e3?r+" ms":(r/1e3).toFixed(2)+" s"),prefix:e});}}group(e="console.group"){typeof window>"u"?console.group(e):this.groups.push(e);}groupEnd(){typeof window>"u"?console.groupEnd():this.groups.pop();}count(e="default"){let r=this.countMap.get(e)??0;this.countMap.set(e,r+1),this._logger("log",!1,{message:e+": "+(r+1),prefix:e});}countReset(e="default"){this.countMap.has(e)?this.countMap.delete(e):this._logger("warn",!1,{message:"Count for "+e+" does not exist",prefix:e});}clear(){console.clear();}raw(e,...r){this.disabled||this._logger("log",!0,{context:r,message:e});}extendReporter(e){return typeof e.setLoggerTypes=="function"&&e.setLoggerTypes(this.types),typeof e.setStringify=="function"&&e.setStringify(this.stringify),e}registerReporters(e){for(let r of e)this.reporters.add(this.extendReporter(r));}_report(e,r){if(r)this.rawReporter.log(Object.freeze(e));else for(let t of this.reporters)t.log(Object.freeze(e));}registerProcessors(e){for(let r of e)typeof r.setStringify=="function"&&r.setStringify(this.stringify),this.processors.add(r);}_normalizeLogLevel(e){return e&&this.logLevels[e]?e:"debug"}_buildMeta(e,r,...t){let o={...P};if(o.type={level:r.logLevel,name:e},o.groups=this.groups,o.scope=this.scopeName,o.date=new Date,t.length===1&&typeof t[0]=="object"&&t[0]!==null)if(t[0]instanceof Error)o.error=t[0];else if("message"in t[0]){let{context:i,message:c,prefix:d,suffix:n}=t[0];i&&(o.context=i),d&&(o.prefix=d),n&&(o.suffix=n),o.message=c;}else o.message=t[0];else t.length>1&&typeof t[0]=="string"?(o.message=t[0],o.context=t.slice(1)):o.message=t[0];return r.logLevel==="trace"&&(o.traceError=new Error("Trace")),r.badge&&(o.badge=x(r.badge,r.badge.length+1)),r.label&&(o.label=r.label),o}_logger(e,r,...t){if(this.disabled)return;let o=this._normalizeLogLevel(this.types[e].logLevel);if(this.logLevels[o]>=this.logLevels[this.generalLogLevel]){let i=this._buildMeta(e,this.types[e],...t),c=(n=!1)=>{let p=(this.lastLog.count||0)-this.throttleMin;if(this.lastLog.object&&p>0){let f={...this.lastLog.object};p>1&&(f.repeated=p),this._report(f,r),this.lastLog.count=1;}if(n){for(let f of this.processors)i={...f.process(i)};this.lastLog.object=i,this._report(i,r);}};clearTimeout(this.lastLog.timeout);let d=this.lastLog.time&&i.date?new Date(i.date).getTime()-this.lastLog.time.getTime():0;if(this.lastLog.time=new Date(i.date),d<this.throttle)try{let n=JSON.stringify([i.label,i.scope,i.type,i.message,i.prefix,i.suffix,i.context]),p=this.lastLog.serialized===n;if(this.lastLog.serialized=n,p&&(this.lastLog.count=(this.lastLog.count||0)+1,this.lastLog.count>this.throttleMin)){this.lastLog.timeout=setTimeout(c,this.throttle);return}}catch{}c(!0);}}},V=L;var l=Symbol("circular-reference-tag"),y=Symbol("raw-error-ref"),E=Object.create({},{aggregateErrors:{enumerable:!0,value:void 0,writable:!0},cause:{enumerable:!0,value:void 0,writable:!0},code:{enumerable:!0,value:void 0,writable:!0},message:{enumerable:!0,value:void 0,writable:!0},name:{enumerable:!0,value:void 0,writable:!0},raw:{enumerable:!1,get(){return this[y]},set(s){this[y]=s;}},stack:{enumerable:!0,value:void 0,writable:!0}});Object.defineProperty(E,y,{value:{},writable:!0});var M=E;var g=(s,e={})=>{s[l]=void 0;let r=Object.create(M);r.name=Object.prototype.toString.call(s.constructor)==="[object Function]"?s.constructor.name:s.name,r.message=s.message,r.stack=s.stack,Array.isArray(s.errors)&&(r.aggregateErrors=s.errors.map(t=>g(t,e))),s.cause instanceof Error&&!Object.prototype.hasOwnProperty.call(s.cause,l)&&(r.cause=g(s.cause,e));for(let t in s)if(r[t]===void 0){let o=s[t];if(o instanceof Error)Object.prototype.hasOwnProperty.call(o,l)||(r[t]=g(o,e));else if(typeof o=="function")r[t]="[Function: "+(o.name||"anonymous");else try{r[t]=o;}catch{}}return delete s[l],r.raw=s,r};var R=class{_options;constructor(e={}){this._options={maxDepth:Number.POSITIVE_INFINITY,useToJSON:!0,...e};}process(e){return e.error&&(e.error=g(e.error,this._options)),e}};
8
-
9
- exports.a = L;
10
- exports.b = V;
11
- exports.c = R;
12
- //# sourceMappingURL=out.js.map
13
- //# sourceMappingURL=chunk-VDTOVBKK.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pail.browser.ts","../src/reporter/raw/raw.browser.ts","../src/util/arrayify.ts","../src/util/merge-types.ts","../src/util/pad-end.ts","../src/processor/error/error-proto.ts","../src/processor/error/error-with-cause-serializer.ts","../src/processor/error/error-processor.ts"],"names":["stringifyConfigure","RawReporter","meta","context","message","type","writeConsoleLogBasedOnLevel","arrayify","x","mergeTypes","standard","custom","types","padEnd","string_","targetLength","EMPTY_META","PailBrowserImpl","options","LOG_TYPES","getLongestLabel","EXTENDED_RFC_5424_LOG_LEVELS","error","name","label","data","span","current","arguments_","reporter","reporters","raw","processors","processor","level","typeName","prefix","suffix","messageObject","logLevel","resolveLog","newLog","repeated","lastMeta","diffTime","serializedLog","isSameLog","PailBrowser","seen","rawSymbol","errorProto","value","ErrorProto","errorWithCauseSerializer","protoError","error_","key","ErrorProcessor"],"mappings":"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","sourcesContent":["import type { stringify } from \"safe-stable-stringify\";\nimport { configure as stringifyConfigure } from \"safe-stable-stringify\";\n\nimport { EXTENDED_RFC_5424_LOG_LEVELS, LOG_TYPES } from \"./constants\";\nimport { RawReporter } from \"./reporter/raw/raw.browser\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LiteralUnion,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Message,\n Meta,\n Primitive,\n Processor,\n Reporter,\n StringifyAwareProcessor,\n StringifyAwareReporter,\n} from \"./types\";\nimport { arrayify } from \"./util/arrayify\";\nimport { getLongestLabel } from \"./util/get-longest-label\";\nimport { mergeTypes } from \"./util/merge-types\";\nimport { padEnd } from \"./util/pad-end\";\n\nconst EMPTY_META = {\n badge: undefined,\n context: undefined,\n error: undefined,\n label: undefined,\n message: undefined,\n prefix: undefined,\n repeated: undefined,\n scope: undefined,\n suffix: undefined,\n};\n\nexport class PailBrowserImpl<T extends string = never, L extends string = never> {\n protected timersMap: Map<string, number>;\n\n protected countMap: Map<string, number>;\n\n protected seqTimers: Set<string>;\n\n protected readonly lastLog: {\n count?: number;\n object?: Meta<L>;\n serialized?: string;\n time?: Date;\n timeout?: ReturnType<typeof setTimeout>;\n };\n\n protected readonly logLevels: Record<string, number>;\n\n protected disabled: boolean;\n\n protected scopeName: string[];\n\n protected readonly types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n protected readonly longestLabel: string;\n\n protected readonly processors: Set<Processor<L>>;\n\n protected readonly generalLogLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;\n\n protected reporters: Set<Reporter<L>>;\n\n protected readonly throttle: number;\n\n protected readonly throttleMin: number;\n\n protected readonly stringify: typeof stringify;\n\n protected groups: string[];\n\n protected readonly startTimerMessage: string;\n\n protected readonly endTimerMessage: string;\n\n protected rawReporter: Reporter<L>;\n\n public constructor(options: ConstructorOptions<T, L>) {\n this.throttle = options.throttle ?? 1000;\n this.throttleMin = options.throttleMin ?? 5;\n\n this.stringify = stringifyConfigure({\n strict: true,\n });\n\n this.startTimerMessage = options.messages?.timerStart ?? \"Initialized timer...\";\n this.endTimerMessage = options.messages?.timerEnd ?? \"Timer run for:\";\n this.types = mergeTypes<L, T>(LOG_TYPES, (options.types ?? {}) as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>);\n this.longestLabel = getLongestLabel<L, T>(this.types);\n\n this.logLevels = { ...EXTENDED_RFC_5424_LOG_LEVELS, ...options.logLevels };\n this.generalLogLevel = this._normalizeLogLevel(options.logLevel);\n\n this.reporters = new Set();\n this.processors = new Set();\n\n this.disabled = options.disabled ?? false;\n\n this.scopeName = arrayify(options.scope).filter(Boolean) as string[];\n\n this.timersMap = new Map();\n this.countMap = new Map();\n\n this.groups = [];\n\n this.seqTimers = new Set();\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax,guard-for-in\n for (const type in this.types) {\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n this[type] = this._logger.bind(this, type as T, false);\n }\n\n // Track of last log\n this.lastLog = {};\n\n if (Array.isArray(options.reporters)) {\n this.registerReporters(options.reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n\n if (Array.isArray(options.processors)) {\n this.registerProcessors(options.processors);\n }\n }\n\n public wrapConsole(): void {\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const type in this.types) {\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(console as any)[\"__\" + type]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[\"__\" + type] = (console as any)[type];\n }\n // Override\n // @TODO: Fix typings\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[type] = (this as unknown as PailBrowserImpl<T, L>)[type as keyof PailBrowserImpl<T, L>];\n }\n }\n\n public restoreConsole(): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const type in this.types) {\n // Restore if backup is available\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((console as any)[\"__\" + type]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[type] = (console as any)[\"__\" + type];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-dynamic-delete\n delete (console as any)[\"__\" + type];\n }\n }\n }\n\n public wrapException(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on(\"uncaughtException\", (error: any) => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n (this as unknown as PailBrowserImpl<T, L>).error(error);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on(\"unhandledRejection\", (error: any) => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n (this as unknown as PailBrowserImpl<T, L>).error(error);\n });\n }\n\n /**\n * Disables logging\n */\n public disable(): void {\n this.disabled = true;\n }\n\n /**\n * Enables logging\n */\n public enable(): void {\n this.disabled = false;\n }\n\n public isEnabled(): boolean {\n return !this.disabled;\n }\n\n public scope<N extends string = T>(...name: string[]): PailBrowserType<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 PailBrowserType<N, L>;\n }\n\n public unscope(): void {\n this.scopeName = [];\n }\n\n public time(label = \"default\"): void {\n if (this.seqTimers.has(label)) {\n this._logger(\"warn\", false, {\n message: \"Timer '\" + label + \"' already exists\",\n prefix: label,\n });\n } else {\n this.seqTimers.add(label);\n this.timersMap.set(label, Date.now());\n\n this._logger(\"start\", false, {\n message: this.startTimerMessage,\n prefix: label,\n });\n }\n }\n\n public timeLog(label?: string, ...data: unknown[]): void {\n if (!label && this.seqTimers.size > 0) {\n // eslint-disable-next-line no-param-reassign\n label = [...this.seqTimers].pop();\n }\n\n if (label && this.timersMap.has(label)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const span = Date.now() - this.timersMap.get(label)!;\n\n this._logger(\"info\", false, {\n context: data,\n message: span < 1000 ? span + \" ms\" : (span / 1000).toFixed(2) + \" s\",\n prefix: label,\n });\n } else {\n this._logger(\"warn\", false, {\n context: data,\n message: \"Timer not found\",\n prefix: label,\n });\n }\n }\n\n public timeEnd(label?: string): void {\n if (!label && this.seqTimers.size > 0) {\n // eslint-disable-next-line no-param-reassign\n label = [...this.seqTimers].pop();\n }\n\n if (label && this.timersMap.has(label)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const span = Date.now() - this.timersMap.get(label)!;\n\n this.timersMap.delete(label);\n\n this._logger(\"stop\", false, {\n message: this.endTimerMessage + \" \" + (span < 1000 ? span + \" ms\" : (span / 1000).toFixed(2) + \" s\"),\n prefix: label,\n });\n }\n }\n\n public group(label = \"console.group\"): void {\n if (typeof window === \"undefined\") {\n // eslint-disable-next-line no-console\n console.group(label);\n } else {\n this.groups.push(label);\n }\n }\n\n public groupEnd(): void {\n if (typeof window === \"undefined\") {\n // eslint-disable-next-line no-console\n console.groupEnd();\n } else {\n this.groups.pop();\n }\n }\n\n public count(label = \"default\"): void {\n const current = this.countMap.get(label) ?? 0;\n\n this.countMap.set(label, current + 1);\n\n this._logger(\"log\", false, {\n message: label + \": \" + (current + 1),\n prefix: label,\n });\n }\n\n public countReset(label = \"default\"): void {\n if (this.countMap.has(label)) {\n this.countMap.delete(label);\n } else {\n this._logger(\"warn\", false, {\n message: \"Count for \" + label + \" does not exist\",\n prefix: label,\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n public clear(): void {\n // eslint-disable-next-line no-console\n console.clear();\n }\n\n public raw(message: string, ...arguments_: unknown[]): void {\n if (this.disabled) {\n return;\n }\n\n this._logger(\"log\", true, {\n context: arguments_,\n message,\n });\n }\n\n protected extendReporter(reporter: Reporter<L>): Reporter<L> {\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 return reporter;\n }\n\n protected registerReporters(reporters: Reporter<L>[]): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const reporter of reporters) {\n this.reporters.add(this.extendReporter(reporter));\n }\n }\n\n private _report(meta: Meta<L>, raw: boolean): void {\n if (raw) {\n this.rawReporter.log(Object.freeze(meta));\n } else {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const reporter of this.reporters) {\n reporter.log(Object.freeze(meta));\n }\n }\n }\n\n private registerProcessors(processors: Processor<L>[]): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const processor of processors) {\n if (typeof (processor as StringifyAwareProcessor<L>).setStringify === \"function\") {\n (processor as StringifyAwareProcessor<L>).setStringify(this.stringify);\n }\n\n this.processors.add(processor as Processor<L>);\n }\n }\n\n private _normalizeLogLevel(level: LiteralUnion<ExtendedRfc5424LogLevels, L> | undefined): LiteralUnion<ExtendedRfc5424LogLevels, L> {\n // eslint-disable-next-line security/detect-object-injection\n return level && this.logLevels[level] ? level : \"debug\";\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\n private _buildMeta(typeName: string, type: Partial<LoggerConfiguration<L>>, ...arguments_: any[]): Meta<L> {\n const meta = { ...EMPTY_META } as Meta<L>;\n\n meta.type = {\n level: type.logLevel as LiteralUnion<ExtendedRfc5424LogLevels, L>,\n name: typeName,\n };\n\n meta.groups = this.groups;\n meta.scope = this.scopeName;\n meta.date = new Date();\n\n if (arguments_.length === 1 && typeof arguments_[0] === \"object\" && arguments_[0] !== null) {\n if (arguments_[0] instanceof Error) {\n // eslint-disable-next-line prefer-destructuring\n meta.error = arguments_[0];\n } else if (\"message\" in arguments_[0]) {\n const { context, message, prefix, suffix } = arguments_[0] as Message;\n\n if (context) {\n meta.context = context;\n }\n\n if (prefix) {\n meta.prefix = prefix;\n }\n\n if (suffix) {\n meta.suffix = suffix;\n }\n\n meta.message = message;\n } else {\n meta.message = arguments_[0] as Primitive | ReadonlyArray<unknown> | Record<PropertyKey, unknown>;\n }\n } else if (arguments_.length > 1 && typeof arguments_[0] === \"string\") {\n meta.message = arguments_[0] as string;\n meta.context = arguments_.slice(1);\n } else {\n // eslint-disable-next-line prefer-destructuring\n meta.message = arguments_[0];\n }\n\n if (type.logLevel === \"trace\") {\n meta.traceError = new Error(\"Trace\");\n }\n\n if (type.badge) {\n meta.badge = padEnd(type.badge, type.badge.length + 1);\n }\n\n if (type.label) {\n meta.label = type.label;\n }\n\n return meta;\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\n private _logger(type: LiteralUnion<DefaultLogTypes, T>, raw: boolean, ...messageObject: any[]): void {\n if (this.disabled) {\n return;\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const logLevel = this._normalizeLogLevel(this.types[type].logLevel);\n\n // eslint-disable-next-line security/detect-object-injection\n if ((this.logLevels[logLevel] as number) >= (this.logLevels[this.generalLogLevel] as number)) {\n // eslint-disable-next-line security/detect-object-injection\n let meta = this._buildMeta(type, this.types[type], ...messageObject);\n\n /**\n * @param newLog false if the throttle expired and we don't want to log a duplicate\n */\n const resolveLog = (newLog = false) => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const repeated = (this.lastLog.count || 0) - this.throttleMin;\n\n if (this.lastLog.object && repeated > 0) {\n const lastMeta = { ...this.lastLog.object };\n\n if (repeated > 1) {\n lastMeta.repeated = repeated;\n }\n\n this._report(lastMeta, raw);\n\n this.lastLog.count = 1;\n }\n\n if (newLog) {\n // Apply global processors\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const processor of this.processors) {\n meta = { ...processor.process(meta) };\n }\n\n this.lastLog.object = meta;\n\n this._report(meta, raw);\n }\n };\n\n clearTimeout(this.lastLog.timeout);\n\n const diffTime = this.lastLog.time && meta.date ? new Date(meta.date as Date | string).getTime() - this.lastLog.time.getTime() : 0;\n\n this.lastLog.time = new Date(meta.date as Date | string);\n\n if (diffTime < this.throttle) {\n try {\n const serializedLog = JSON.stringify([meta.label, meta.scope, meta.type, meta.message, meta.prefix, meta.suffix, meta.context]);\n const isSameLog = this.lastLog.serialized === serializedLog;\n\n this.lastLog.serialized = serializedLog;\n\n if (isSameLog) {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.lastLog.count = (this.lastLog.count || 0) + 1;\n\n if (this.lastLog.count > this.throttleMin) {\n // Auto-resolve when throttle is timed out\n this.lastLog.timeout = setTimeout(resolveLog, this.throttle);\n\n return; // SPAM!\n }\n }\n } catch {\n // Circular References\n }\n }\n\n resolveLog(true);\n }\n }\n}\n\nexport type PailBrowserType<T extends string = never, L extends string = never> = PailBrowserImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ConstructorOptions<TC, LC>) => PailBrowserType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ConstructorOptions<T, L>) => PailBrowserType<T, L>;\n\nexport const PailBrowser = PailBrowserImpl as unknown as PailBrowserType;\n","import type { ReadonlyMeta, Reporter } from \"../../types\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\n\nexport class RawReporter<L extends string = never> implements Reporter<L> {\n // eslint-disable-next-line class-methods-use-this\n public log(meta: ReadonlyMeta<L>): void {\n const { context = [], message, type } = meta;\n\n const consoleLogFunction = writeConsoleLogBasedOnLevel(type.level);\n\n consoleLogFunction(message, ...context);\n }\n}\n","export const arrayify = <T>(x: T | T[]): T[] => {\n if (x === undefined) {\n return [] as T[];\n }\n\n return Array.isArray(x) ? x : ([x] as T[]);\n};\n","import type { DefaultLoggerTypes, DefaultLogTypes, LiteralUnion, LoggerTypesConfig } from \"../types\";\n\nexport const mergeTypes = <L extends string, T extends string>(\n standard: DefaultLoggerTypes<L>,\n custom: LoggerTypesConfig<T, L>,\n): LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L> => {\n const types = { ...standard } as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n Object.keys(custom).forEach((type) => {\n types[type as T] = { ...types[type as T], ...custom[type as T] };\n });\n\n return types;\n};\n","export const padEnd = (string_: string, targetLength: number): string => {\n if (string_.length >= targetLength) {\n return string_;\n }\n\n return string_.padEnd(targetLength);\n};\n","// eslint-disable-next-line import/exports-last\nexport const seen = Symbol(\"circular-reference-tag\");\n\n// eslint-disable-next-line import/exports-last,import/no-unused-modules\nexport const rawSymbol = Symbol(\"raw-error-ref\");\n\nconst errorProto = Object.create(\n {},\n {\n aggregateErrors: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n cause: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n code: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n message: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n name: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n raw: {\n enumerable: false,\n get() {\n // eslint-disable-next-line security/detect-object-injection\n return this[rawSymbol];\n },\n set(value) {\n // eslint-disable-next-line security/detect-object-injection\n this[rawSymbol] = value;\n },\n },\n stack: {\n enumerable: true,\n value: undefined,\n writable: true,\n },\n },\n) as SerializedError;\n\nObject.defineProperty(errorProto, rawSymbol, {\n value: {},\n writable: true,\n});\n\nexport const ErrorProto = errorProto;\n\nexport type SerializedError<ErrorType = Error> = Record<PropertyKey, unknown> & {\n aggregateErrors?: SerializedError<ErrorType>[];\n cause?: unknown;\n code?: string;\n message: string;\n name: string;\n raw?: ErrorType;\n stack?: string;\n};\n","import type { SerializedError } from \"./error-proto\";\nimport { ErrorProto, seen } from \"./error-proto\";\n\ntype CauseError = Error & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cause: any;\n};\n\ntype Options = {\n readonly maxDepth?: number;\n readonly useToJSON?: boolean;\n};\n\n/**\n * Serialize an `Error` object into a plain object.\n *\n * - Non-error values are passed through.\n * - Custom properties are preserved.\n * - Buffer properties are replaced with `[object Buffer]`.\n * - Circular references are handled.\n * - If the input object has a `.toJSON()` method, then it's called instead of serializing the object's properties.\n * - It's up to `.toJSON()` implementation to handle circular references and enumerability of the properties.\n */\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport const errorWithCauseSerializer = (error: AggregateError | Error, options: Options = {}): SerializedError => {\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line no-param-reassign\n error[seen as keyof Error] = undefined; // tag to prevent re-looking at this\n\n const protoError = Object.create(ErrorProto as object) as SerializedError;\n\n protoError.name = Object.prototype.toString.call(error.constructor) === \"[object Function]\" ? error.constructor.name : error.name;\n protoError.message = error.message;\n protoError.stack = error.stack;\n\n if (Array.isArray((error as AggregateError).errors)) {\n protoError.aggregateErrors = (error as AggregateError).errors.map((error_: AggregateError | Error) => errorWithCauseSerializer(error_, options));\n }\n\n // Handle aggregate errors\n if ((error as CauseError).cause instanceof Error && !Object.prototype.hasOwnProperty.call((error as CauseError).cause, seen as PropertyKey)) {\n protoError.cause = errorWithCauseSerializer((error as CauseError).cause, options);\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const key in error) {\n // eslint-disable-next-line security/detect-object-injection\n if (protoError[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = error[key as keyof Error] as any;\n\n if (value instanceof Error) {\n if (!Object.prototype.hasOwnProperty.call(value, seen as PropertyKey)) {\n // eslint-disable-next-line security/detect-object-injection\n protoError[key] = errorWithCauseSerializer(value, options);\n }\n } else if (typeof value === \"function\") {\n // eslint-disable-next-line security/detect-object-injection\n protoError[key] = \"[Function: \" + (value.name || \"anonymous\");\n } else {\n // Gracefully handle non-configurable errors like `DOMException`.\n try {\n // eslint-disable-next-line security/detect-object-injection\n protoError[key] = value;\n } catch {\n /* empty */\n }\n }\n }\n }\n\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-dynamic-delete\n delete error[seen as unknown as keyof Error]; // clean up tag in case err is serialized again later\n\n protoError.raw = error;\n\n return protoError;\n};\n","import type { Meta, Processor } from \"../../types\";\nimport type { SerializedError } from \"./error-proto\";\nimport { errorWithCauseSerializer } from \"./error-with-cause-serializer\";\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 error: SerializedError | undefined;\n }\n }\n}\n\nexport class ErrorProcessor<L extends string = never> implements Processor<L> {\n private readonly _options: { maxDepth: number; useToJSON: boolean };\n\n public constructor(options: { maxDepth?: number; useToJSON?: boolean } = {}) {\n this._options = {\n maxDepth: Number.POSITIVE_INFINITY,\n useToJSON: true,\n ...options,\n };\n }\n\n public process(meta: Meta<L>): Meta<L> {\n if (meta.error) {\n // eslint-disable-next-line no-param-reassign\n meta.error = errorWithCauseSerializer(meta.error, this._options);\n }\n\n return meta;\n }\n}\n"]}