@visulima/pail 1.1.4 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/chunk-K4LLYFBH.cjs +45 -0
- package/dist/chunk-K4LLYFBH.cjs.map +1 -0
- package/dist/chunk-XCDBMDTZ.js +33 -0
- package/dist/chunk-XCDBMDTZ.js.map +1 -0
- package/dist/index.server.cjs +3 -3
- package/dist/index.server.cjs.map +1 -1
- package/dist/index.server.js +1 -1
- package/dist/index.server.js.map +1 -1
- package/dist/reporter.server.cjs +3 -3
- package/dist/reporter.server.js +2 -2
- package/package.json +9 -9
- package/dist/chunk-JGZNXQSY.js +0 -29
- package/dist/chunk-JGZNXQSY.js.map +0 -1
- package/dist/chunk-XQP4GKQU.cjs +0 -41
- package/dist/chunk-XQP4GKQU.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
package/dist/index.server.cjs
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
var chunkVDTOVBKK_cjs = require('./chunk-VDTOVBKK.cjs');
|
|
4
4
|
var chunkF4FJCQ4L_cjs = require('./chunk-F4FJCQ4L.cjs');
|
|
5
5
|
require('./chunk-N2UPJYJR.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkK4LLYFBH_cjs = require('./chunk-K4LLYFBH.cjs');
|
|
7
7
|
require('./chunk-YP3U3DTV.cjs');
|
|
8
8
|
require('./chunk-QINSQ6TU.cjs');
|
|
9
9
|
var string_decoder = require('string_decoder');
|
|
10
10
|
|
|
11
|
-
var g=class{#e;#t=!1;#i=!1;#r=0;#s=0;constructor(t,e){this.#e={stderr:e,stdout:t};}get lastLength(){return this.#r}get outside(){return this.#s}get isHooked(){return this.#t}get isSuspended(){return this.#i}erase(t,e=this.#r){if(this.#e[t]===void 0)throw new TypeError(`Stream "${t}" is not available`);this.#e[t].erase(e);}hook(){return this.#t||(Object.values(this.#e).forEach(t=>t.active()),this._clear(!0)),this.#t}resume(t,e){this.#i&&(this.#i=!1,e&&this.erase(t,e),this.#r=0,Object.values(this.#e).forEach(r=>r.active()));}suspend(t,e=!0){this.#i||(this.#i=!0,e&&this.erase(t),Object.values(this.#e).forEach(r=>r.renew()));}unhook(t=!0){return this.#t&&(Object.values(this.#e).forEach(e=>e.inactive(t)),this._clear()),!this.#t}update(t,e,r=0){if(e.length>0){if(this.#e[t]===void 0)throw new TypeError(`Stream "${t}" is not available`);let o=this.#e[t],{columns:u,rows:i}=
|
|
11
|
+
var g=class{#e;#t=!1;#i=!1;#r=0;#s=0;constructor(t,e){this.#e={stderr:e,stdout:t};}get lastLength(){return this.#r}get outside(){return this.#s}get isHooked(){return this.#t}get isSuspended(){return this.#i}erase(t,e=this.#r){if(this.#e[t]===void 0)throw new TypeError(`Stream "${t}" is not available`);this.#e[t].erase(e);}hook(){return this.#t||(Object.values(this.#e).forEach(t=>t.active()),this._clear(!0)),this.#t}resume(t,e){this.#i&&(this.#i=!1,e&&this.erase(t,e),this.#r=0,Object.values(this.#e).forEach(r=>r.active()));}suspend(t,e=!0){this.#i||(this.#i=!0,e&&this.erase(t),Object.values(this.#e).forEach(r=>r.renew()));}unhook(t=!0){return this.#t&&(Object.values(this.#e).forEach(e=>e.inactive(t)),this._clear()),!this.#t}update(t,e,r=0){if(e.length>0){if(this.#e[t]===void 0)throw new TypeError(`Stream "${t}" is not available`);let o=this.#e[t],{columns:u,rows:i}=chunkK4LLYFBH_cjs.a(),c=r>i?i-1:Math.max(0,Math.min(i-1,r)),n=this.lastLength-c,d=Math.max(n-i,this.outside),p=e.reduce((l,C)=>[...l,chunkK4LLYFBH_cjs.b(C,u,{hard:!0,trim:!1,wordWrap:!0})],[]);i<=n?(o.erase(i),c<d&&(p=p.slice(d-c+1))):n&&o.erase(n),o.write(p.join(`
|
|
12
12
|
`)+`
|
|
13
13
|
`),this.#r=d?d+p.length+1:p.length,this.#s=Math.max(this.lastLength-i,this.outside);}}_clear(t=!1){this.#t=t,this.#r=0,this.#s=0;}};var a="\x1B[",I=a+"2J",P=a+"2K",_=a+"G",J=(s=1)=>a+s+"A",m=process.platform==="win32"?`${I}${a}0f`:`${I}${a}3J${a}H`,A=a+"?25l",N=a+"?25h",M=s=>{let t="";for(let e=0;e<s;e++)t+=P+(e<s-1?J():"");return s&&(t+=_),t};var h=class s{static DRAIN=!0;#e=new string_decoder.StringDecoder;#t=[];#i;#r;constructor(t){this.#i=t.write,this.#r=t;}active(){this.write(A),this.#r.write=(t,...e)=>{let r=e.at(-1);return this.#t.push(this.#e.write(typeof t=="string"?Buffer.from(t,typeof e[0]=="string"?e[0]:void 0):Buffer.from(t))),typeof r=="function"&&r(),s.DRAIN};}erase(t){t>0&&this.write(M(t+1));}inactive(t=!1){this.#t.length>0&&(t&&this.write(`
|
|
14
14
|
`),this.#t.forEach(e=>{this.write(e);}),this.#t=[]),this.renew();}renew(){this.#r.write=this.#i,this.write(N);}write(t){this.#i.apply(this.#r,[t]);}};var v=class{#e;#t;#i;#r;#s=!1;constructor(){this.#t=process.stdout,this.#i=process.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#i=t;}setStringify(t){this.#e=t;}setInteractiveManager(t){this.#r=t;}setIsInteractive(t){this.#s=t;}log(t){let{context:e,groups:r,message:o,type:u}=t,i=[],c=typeof o=="string"?o:this.#e(o);i.push(c+""),e&&i.push(...e.map(l=>typeof l=="object"?" "+this.#e(l):" "+l));let n=["error","trace","warn"].includes(u.level)?"stderr":"stdout",d=n==="stderr"?this.#i:this.#t,p=r.map(()=>" ").join("");this.#s&&this.#r!==void 0&&d.isTTY?this.#r.update(n,(p+i.join("")).split(`
|
|
15
|
-
`),0):
|
|
15
|
+
`),0):chunkK4LLYFBH_cjs.c(p+i.join(""),d);}};var S=class extends chunkVDTOVBKK_cjs.a{constructor(e={}){let{interactive:r,rawReporter:o,reporters:u,stderr:i,stdout:c,...n}=e;super(n);this.options=e;this.interactive=r??!1,this.stdout=c,this.stderr=i,this.interactive&&(this.interactiveManager=new g(new h(this.stdout),new h(this.stderr))),Array.isArray(u)&&this.registerReporters(u),this.rawReporter=this.extendReporter(e.rawReporter??new v);}stdout;stderr;interactiveManager;interactive;scope(...e){if(e.length===0)throw new Error("No scope name was defined.");return this.scopeName=e.flat(),this}getInteractiveManager(){return this.interactiveManager}wrapStd(){this._wrapStream(this.stdout,"log"),this._wrapStream(this.stderr,"log");}restoreStd(){this._restoreStream(this.stdout),this._restoreStream(this.stderr);}wrapAll(){this.wrapConsole(),this.wrapStd();}restoreAll(){this.restoreConsole(),this.restoreStd();}clear(){this.stdout.write(m),this.stderr.write(m);}extendReporter(e){return typeof e.setStdout=="function"&&e.setStdout(this.stdout),typeof e.setStderr=="function"&&e.setStderr(this.stderr),typeof e.setLoggerTypes=="function"&&e.setLoggerTypes(this.types),typeof e.setStringify=="function"&&e.setStringify(this.stringify),typeof e.setIsInteractive=="function"&&e.setIsInteractive(this.interactive),this.interactive&&typeof e.setInteractiveManager=="function"&&e.setInteractiveManager(this.interactiveManager),e}_wrapStream(e,r){e&&(e.__write||(e.__write=e.write),e.write=o=>{this[r].log(String(o).trim());});}_restoreStream(e){e&&e.__write&&(e.write=e.__write,delete e.__write);}},E=S;var k=()=>process.env.DEBUG!==void 0?"debug":"informational",W=s=>new E({logLevel:k(),processors:[new chunkF4FJCQ4L_cjs.a,new chunkVDTOVBKK_cjs.c],reporters:[new chunkK4LLYFBH_cjs.d],stderr:process.stderr,stdout:process.stdout,...s}),pe=W();
|
|
16
16
|
|
|
17
17
|
exports.createPail = W;
|
|
18
18
|
exports.pail = pe;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactive/interactive-manager.ts","../src/interactive/interactive-stream-hook.ts","../src/util/ansi-escapes.ts","../src/reporter/raw/raw.server.ts","../src/pail.server.ts","../src/index.server.ts"],"names":["InteractiveManager","#stream","#isActive","#isSuspended","#lastLength","#outside","stdout","stderr","stream","count","hook","eraseRowCount","erase","separateHistory","rows","from","width","height","terminalSize","position","actualLength","outside","output","accumulator","row","wrapAnsi","status","StringDecoder","ESC","eraseScreen","eraseLine","cursorLeft","cursorUp","clearTerminal","cursorHide","cursorShow","eraseLines","clear","index","InteractiveStreamHook","_InteractiveStreamHook","#decoder","#history","#method","data","arguments_","callback","element","message","RawReporter","#stringify","#stdout","#stderr","#interactiveManager","#interactive","function_","manager","interactive","meta","context","groups","type","items","formattedMessage","value","streamType","groupSpaces","writeStream","PailServerImpl","PailBrowserImpl","options","rawReporter","reporters","rest","name","reporter","PailServer","_getDefaultLogLevel","createPail","MessageFormatterProcessor","ErrorProcessor","PrettyReporter","pail"],"mappings":"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","sourcesContent":["// 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 { InteractiveStreamHook } from \"./interactive-stream-hook\";\n\ntype StreamType = \"stderr\" | \"stdout\";\n\nexport class InteractiveManager {\n readonly #stream: {\n stderr: InteractiveStreamHook;\n stdout: InteractiveStreamHook;\n };\n\n #isActive = false;\n\n #isSuspended = false;\n\n #lastLength = 0;\n\n #outside = 0;\n\n public constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook) {\n this.#stream = {\n stderr,\n stdout,\n };\n }\n\n /**\n * Last printed rows count\n */\n public get lastLength(): number {\n return this.#lastLength;\n }\n\n /**\n * Rows count outside editable area\n */\n public get outside(): number {\n return this.#outside;\n }\n\n /**\n * Hook activity status\n */\n public get isHooked(): boolean {\n return this.#isActive;\n }\n\n /**\n * Suspend status for active hooks\n */\n public get isSuspended(): boolean {\n return this.#isSuspended;\n }\n\n /**\n * Removes from the bottom of output up the specified count of lines\n *\n * @param stream - Stream to remove lines from\n * @param count - lines count to remove\n */\n public erase(stream: StreamType, count = this.#lastLength): void {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n this.#stream[stream].erase(count);\n }\n\n /**\n * Hook stdout and stderr streams\n * @returns Success status\n */\n public hook(): boolean {\n if (!this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.active());\n\n this._clear(true);\n }\n\n return this.#isActive;\n }\n\n /**\n * Resume suspend hooks\n *\n * @param stream - Stream to resume\n * @param eraseRowCount - erase output rows count\n */\n public resume(stream: StreamType, eraseRowCount?: number): void {\n if (this.#isSuspended) {\n this.#isSuspended = false;\n\n if (eraseRowCount) {\n this.erase(stream, eraseRowCount);\n }\n\n this.#lastLength = 0;\n\n Object.values(this.#stream).forEach((hook) => hook.active());\n }\n }\n\n /**\n * Suspend active hooks for external output\n *\n * @param stream - Stream to suspend\n * @param erase - erase output\n */\n public suspend(stream: StreamType, erase = true): void {\n if (!this.#isSuspended) {\n this.#isSuspended = true;\n\n if (erase) {\n this.erase(stream);\n }\n\n Object.values(this.#stream).forEach((hook) => hook.renew());\n }\n }\n\n /**\n * Unhooks both stdout and stderr streams and print their story of logs\n *\n * @param separateHistory - If `true`, will add an empty line to the history output for individual recorded lines and console logs\n *\n * @returns Success status\n */\n public unhook(separateHistory = true): boolean {\n if (this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.inactive(separateHistory));\n\n this._clear();\n }\n\n return !this.#isActive;\n }\n\n /**\n * Update output\n *\n * @param stream - Stream to write to\n * @param rows - Text lines to write to standard output\n * @param from - Index of the line starting from which the contents of the terminal are being overwritten\n */\n public update(stream: StreamType, rows: string[], from = 0): void {\n if (rows.length > 0) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const hook = this.#stream[stream];\n\n const { columns: width, rows: height } = terminalSize();\n\n const position = from > height ? height - 1 : Math.max(0, Math.min(height - 1, from));\n const actualLength = this.lastLength - position;\n const outside = Math.max(actualLength - height, this.outside);\n\n // eslint-disable-next-line unicorn/no-array-reduce\n let output = rows.reduce<string[]>(\n (accumulator, row) => [\n ...accumulator,\n wrapAnsi(row, width, {\n hard: true,\n trim: false,\n wordWrap: true,\n }),\n ],\n [],\n );\n\n if (height <= actualLength) {\n hook.erase(height);\n\n if (position < outside) {\n output = output.slice(outside - position + 1);\n }\n } else if (actualLength) {\n hook.erase(actualLength);\n }\n\n hook.write(output.join(\"\\n\") + \"\\n\");\n\n this.#lastLength = outside ? outside + output.length + 1 : output.length;\n this.#outside = Math.max(this.lastLength - height, this.outside);\n }\n }\n\n private _clear(status = false): void {\n this.#isActive = status;\n this.#lastLength = 0;\n this.#outside = 0;\n }\n}\n","import { StringDecoder } from \"node:string_decoder\";\n\nimport { cursorHide, cursorShow, eraseLines } from \"../util/ansi-escapes\";\n\nexport class InteractiveStreamHook {\n public static readonly DRAIN = true;\n\n readonly #decoder = new StringDecoder();\n\n #history: string[] = [];\n\n readonly #method: NodeJS.WriteStream[\"write\"];\n\n readonly #stream: NodeJS.WriteStream;\n\n public constructor(stream: NodeJS.WriteStream) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#method = stream.write;\n this.#stream = stream;\n }\n\n public active(): void {\n this.write(cursorHide as string);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - We are modifying the write method\n this.#stream.write = (data: Uint8Array | string, ...arguments_: [((error?: Error) => void)?] | [(string | undefined)?, ((error?: Error) => void)?]) => {\n const callback = arguments_.at(-1);\n\n this.#history.push(\n this.#decoder.write(\n typeof data === \"string\"\n ? Buffer.from(data, typeof arguments_[0] === \"string\" ? (arguments_[0] as BufferEncoding) : undefined)\n : Buffer.from(data),\n ),\n );\n\n if (typeof callback === \"function\") {\n callback();\n }\n\n return InteractiveStreamHook.DRAIN;\n };\n }\n\n public erase(count: number): void {\n if (count > 0) {\n this.write(eraseLines(count + 1) as string);\n }\n }\n\n public inactive(separateHistory = false): void {\n if (this.#history.length > 0) {\n if (separateHistory) {\n this.write(\"\\n\");\n }\n\n this.#history.forEach((element) => {\n this.write(element);\n });\n this.#history = [];\n }\n\n this.renew();\n }\n\n public renew(): void {\n this.#stream.write = this.#method;\n this.write(cursorShow as string);\n }\n\n public write(message: string): void {\n this.#method.apply(this.#stream, [message]);\n }\n}\n","const ESC = \"\\u001B[\";\n\nconst eraseScreen = ESC + \"2J\";\nconst eraseLine = ESC + \"2K\";\n\nconst cursorLeft = ESC + \"G\";\nconst cursorUp = (count = 1) => ESC + count + \"A\";\n\nexport const clearTerminal: string =\n process.platform === \"win32\"\n ? `${eraseScreen}${ESC}0f`\n : // 1. Erases the screen (Only done in case `2` is not supported)\n // 2. Erases the whole screen including scrollback buffer\n // 3. Moves cursor to the top-left position\n // More info: https://www.real-world-systems.com/docs/ANSIcode.html\n `${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const cursorHide: string = ESC + \"?25l\";\nexport const cursorShow: string = ESC + \"?25h\";\n\nexport const eraseLines = (count: number): string => {\n let clear = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0; index < count; index++) {\n clear += eraseLine + (index < count - 1 ? cursorUp() : \"\");\n }\n\n if (count) {\n clear += cursorLeft;\n }\n\n return clear;\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ReadonlyMeta, StreamAwareReporter, StringifyAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\n\nexport class RawReporter<L extends string = never> implements StreamAwareReporter<L>, StringifyAwareReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor() {\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n const { context, groups, message, type } = meta;\n\n const items: string[] = [];\n\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this.#stringify as typeof stringify)(message);\n\n items.push(formattedMessage + \"\");\n\n if (context) {\n items.push(\n ...context.map((value) => {\n if (typeof value === \"object\") {\n return \" \" + (this.#stringify as typeof stringify)(value);\n }\n\n return \" \" + value;\n }),\n );\n }\n\n const streamType = [\"error\", \"trace\", \"warn\"].includes(type.level as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, (groupSpaces + items.join(\"\")).split(\"\\n\"), 0);\n } else {\n writeStream(groupSpaces + items.join(\"\"), stream);\n }\n }\n}\n","import { InteractiveManager } from \"./interactive/interactive-manager\";\nimport { InteractiveStreamHook } from \"./interactive/interactive-stream-hook\";\nimport { PailBrowserImpl } from \"./pail.browser\";\nimport { RawReporter } from \"./reporter/raw/raw.server\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n InteractiveStreamReporter,\n LiteralUnion,\n LoggerFunction,\n LoggerTypesAwareReporter,\n Reporter,\n ServerConstructorOptions,\n StreamAwareReporter,\n StringifyAwareReporter,\n} from \"./types\";\nimport { clearTerminal } from \"./util/ansi-escapes\";\n\nclass PailServerImpl<T extends string = never, L extends string = never> extends PailBrowserImpl<T, L> {\n protected readonly stdout: NodeJS.WriteStream;\n\n protected readonly stderr: NodeJS.WriteStream;\n\n protected interactiveManager: InteractiveManager | undefined;\n\n protected readonly interactive: boolean;\n\n public constructor(public readonly options: ServerConstructorOptions<T, L> = {}) {\n const { interactive, rawReporter, reporters, stderr, stdout, ...rest } = options;\n\n super(rest as ConstructorOptions<T, L>);\n\n this.interactive = interactive ?? false;\n\n this.stdout = stdout as NodeJS.WriteStream;\n this.stderr = stderr as NodeJS.WriteStream;\n\n if (this.interactive) {\n this.interactiveManager = new InteractiveManager(new InteractiveStreamHook(this.stdout), new InteractiveStreamHook(this.stderr));\n }\n\n if (Array.isArray(reporters)) {\n this.registerReporters(reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n }\n\n public override scope<N extends string = T>(...name: string[]): PailServerType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailServerType<N, L>;\n }\n\n public getInteractiveManager(): InteractiveManager | undefined {\n return this.interactiveManager;\n }\n\n public wrapStd() {\n this._wrapStream(this.stdout, \"log\");\n this._wrapStream(this.stderr, \"log\");\n }\n\n public restoreStd() {\n this._restoreStream(this.stdout);\n this._restoreStream(this.stderr);\n }\n\n public wrapAll(): void {\n this.wrapConsole();\n this.wrapStd();\n }\n\n public restoreAll(): void {\n this.restoreConsole();\n this.restoreStd();\n }\n\n public override clear(): void {\n this.stdout.write(clearTerminal as string);\n this.stderr.write(clearTerminal as string);\n }\n\n protected override extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as StreamAwareReporter<L>).setStdout === \"function\") {\n (reporter as StreamAwareReporter<L>).setStdout(this.stdout);\n }\n\n if (typeof (reporter as StreamAwareReporter<L>).setStderr === \"function\") {\n (reporter as StreamAwareReporter<L>).setStderr(this.stderr);\n }\n\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n if (typeof (reporter as InteractiveStreamReporter<L>).setIsInteractive === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setIsInteractive(this.interactive);\n }\n\n if (this.interactive && typeof (reporter as InteractiveStreamReporter<L>).setInteractiveManager === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setInteractiveManager(this.interactiveManager);\n }\n\n return reporter;\n }\n\n private _wrapStream(stream: NodeJS.WriteStream | undefined, type: LiteralUnion<DefaultLogTypes, L>) {\n if (!stream) {\n return;\n }\n\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method\n (stream as any).__write = stream.write;\n }\n\n // Override\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n (stream as any).write = (data: any): void => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n (this as unknown as PailServerImpl)[type].log(String(data).trim());\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _restoreStream(stream?: NodeJS.WriteStream): void {\n if (!stream) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n stream.write = (stream as any).__write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n delete (stream as any).__write;\n }\n }\n}\n\nexport type PailServerType<T extends string = never, L extends string = never> = PailServerImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ServerConstructorOptions<TC, LC>) => PailServerType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ServerConstructorOptions<T, L>) => PailServerType<T, L>;\n\nexport const PailServer = PailServerImpl as unknown as PailServerType;\n","import type { PailServerType } from \"./pail.server\";\nimport { PailServer } from \"./pail.server\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { PrettyReporter } from \"./reporter/pretty/pretty.server\";\nimport type { ConstructorOptions, ExtendedRfc5424LogLevels } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst _getDefaultLogLevel = (): ExtendedRfc5424LogLevels => {\n if (process.env[\"NODE_ENV\"] === \"debug\" || process.env[\"DEBUG\"] !== undefined) {\n return \"debug\";\n }\n\n if (process.env[\"NODE_ENV\"] === \"test\") {\n return \"warning\";\n }\n\n return \"informational\";\n};\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailServerType<T, L> =>\n new PailServer<T, L>({\n logLevel: _getDefaultLogLevel(),\n processors: [new MessageFormatterProcessor<L>(), new ErrorProcessor<L>()],\n reporters: [new PrettyReporter()],\n stderr: process.stderr,\n stdout: process.stdout,\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailServerType as Pail } from \"./pail.server\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interactive/interactive-manager.ts","../src/interactive/interactive-stream-hook.ts","../src/util/ansi-escapes.ts","../src/reporter/raw/raw.server.ts","../src/pail.server.ts","../src/index.server.ts"],"names":["InteractiveManager","#stream","#isActive","#isSuspended","#lastLength","#outside","stdout","stderr","stream","count","hook","eraseRowCount","erase","separateHistory","rows","from","width","height","terminalSize","position","actualLength","outside","output","accumulator","row","wrapAnsi","status","StringDecoder","ESC","eraseScreen","eraseLine","cursorLeft","cursorUp","clearTerminal","cursorHide","cursorShow","eraseLines","clear","index","InteractiveStreamHook","_InteractiveStreamHook","#decoder","#history","#method","data","arguments_","callback","element","message","RawReporter","#stringify","#stdout","#stderr","#interactiveManager","#interactive","function_","manager","interactive","meta","context","groups","type","items","formattedMessage","value","streamType","groupSpaces","writeStream","PailServerImpl","PailBrowserImpl","options","rawReporter","reporters","rest","name","reporter","PailServer","_getDefaultLogLevel","createPail","MessageFormatterProcessor","ErrorProcessor","PrettyReporter","pail"],"mappings":"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","sourcesContent":["// 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 { InteractiveStreamHook } from \"./interactive-stream-hook\";\n\ntype StreamType = \"stderr\" | \"stdout\";\n\nexport class InteractiveManager {\n readonly #stream: {\n stderr: InteractiveStreamHook;\n stdout: InteractiveStreamHook;\n };\n\n #isActive = false;\n\n #isSuspended = false;\n\n #lastLength = 0;\n\n #outside = 0;\n\n public constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook) {\n this.#stream = {\n stderr,\n stdout,\n };\n }\n\n /**\n * Last printed rows count\n */\n public get lastLength(): number {\n return this.#lastLength;\n }\n\n /**\n * Rows count outside editable area\n */\n public get outside(): number {\n return this.#outside;\n }\n\n /**\n * Hook activity status\n */\n public get isHooked(): boolean {\n return this.#isActive;\n }\n\n /**\n * Suspend status for active hooks\n */\n public get isSuspended(): boolean {\n return this.#isSuspended;\n }\n\n /**\n * Removes from the bottom of output up the specified count of lines\n *\n * @param stream - Stream to remove lines from\n * @param count - lines count to remove\n */\n public erase(stream: StreamType, count = this.#lastLength): void {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n this.#stream[stream].erase(count);\n }\n\n /**\n * Hook stdout and stderr streams\n * @returns Success status\n */\n public hook(): boolean {\n if (!this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.active());\n\n this._clear(true);\n }\n\n return this.#isActive;\n }\n\n /**\n * Resume suspend hooks\n *\n * @param stream - Stream to resume\n * @param eraseRowCount - erase output rows count\n */\n public resume(stream: StreamType, eraseRowCount?: number): void {\n if (this.#isSuspended) {\n this.#isSuspended = false;\n\n if (eraseRowCount) {\n this.erase(stream, eraseRowCount);\n }\n\n this.#lastLength = 0;\n\n Object.values(this.#stream).forEach((hook) => hook.active());\n }\n }\n\n /**\n * Suspend active hooks for external output\n *\n * @param stream - Stream to suspend\n * @param erase - erase output\n */\n public suspend(stream: StreamType, erase = true): void {\n if (!this.#isSuspended) {\n this.#isSuspended = true;\n\n if (erase) {\n this.erase(stream);\n }\n\n Object.values(this.#stream).forEach((hook) => hook.renew());\n }\n }\n\n /**\n * Unhooks both stdout and stderr streams and print their story of logs\n *\n * @param separateHistory - If `true`, will add an empty line to the history output for individual recorded lines and console logs\n *\n * @returns Success status\n */\n public unhook(separateHistory = true): boolean {\n if (this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.inactive(separateHistory));\n\n this._clear();\n }\n\n return !this.#isActive;\n }\n\n /**\n * Update output\n *\n * @param stream - Stream to write to\n * @param rows - Text lines to write to standard output\n * @param from - Index of the line starting from which the contents of the terminal are being overwritten\n */\n public update(stream: StreamType, rows: string[], from = 0): void {\n if (rows.length > 0) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const hook = this.#stream[stream];\n\n const { columns: width, rows: height } = terminalSize();\n\n const position = from > height ? height - 1 : Math.max(0, Math.min(height - 1, from));\n const actualLength = this.lastLength - position;\n const outside = Math.max(actualLength - height, this.outside);\n\n // eslint-disable-next-line unicorn/no-array-reduce\n let output = rows.reduce<string[]>(\n (accumulator, row) => [\n ...accumulator,\n wrapAnsi(row, width, {\n hard: true,\n trim: false,\n wordWrap: true,\n }),\n ],\n [],\n );\n\n if (height <= actualLength) {\n hook.erase(height);\n\n if (position < outside) {\n output = output.slice(outside - position + 1);\n }\n } else if (actualLength) {\n hook.erase(actualLength);\n }\n\n hook.write(output.join(\"\\n\") + \"\\n\");\n\n this.#lastLength = outside ? outside + output.length + 1 : output.length;\n this.#outside = Math.max(this.lastLength - height, this.outside);\n }\n }\n\n private _clear(status = false): void {\n this.#isActive = status;\n this.#lastLength = 0;\n this.#outside = 0;\n }\n}\n","import { StringDecoder } from \"node:string_decoder\";\n\nimport { cursorHide, cursorShow, eraseLines } from \"../util/ansi-escapes\";\n\nexport class InteractiveStreamHook {\n public static readonly DRAIN = true;\n\n readonly #decoder = new StringDecoder();\n\n #history: string[] = [];\n\n readonly #method: NodeJS.WriteStream[\"write\"];\n\n readonly #stream: NodeJS.WriteStream;\n\n public constructor(stream: NodeJS.WriteStream) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#method = stream.write;\n this.#stream = stream;\n }\n\n public active(): void {\n this.write(cursorHide as string);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - We are modifying the write method\n this.#stream.write = (data: Uint8Array | string, ...arguments_: [((error?: Error) => void)?] | [(string | undefined)?, ((error?: Error) => void)?]) => {\n const callback = arguments_.at(-1);\n\n this.#history.push(\n this.#decoder.write(\n typeof data === \"string\"\n ? Buffer.from(data, typeof arguments_[0] === \"string\" ? (arguments_[0] as BufferEncoding) : undefined)\n : Buffer.from(data),\n ),\n );\n\n if (typeof callback === \"function\") {\n callback();\n }\n\n return InteractiveStreamHook.DRAIN;\n };\n }\n\n public erase(count: number): void {\n if (count > 0) {\n this.write(eraseLines(count + 1) as string);\n }\n }\n\n public inactive(separateHistory = false): void {\n if (this.#history.length > 0) {\n if (separateHistory) {\n this.write(\"\\n\");\n }\n\n this.#history.forEach((element) => {\n this.write(element);\n });\n this.#history = [];\n }\n\n this.renew();\n }\n\n public renew(): void {\n this.#stream.write = this.#method;\n this.write(cursorShow as string);\n }\n\n public write(message: string): void {\n this.#method.apply(this.#stream, [message]);\n }\n}\n","const ESC = \"\\u001B[\";\n\nconst eraseScreen = ESC + \"2J\";\nconst eraseLine = ESC + \"2K\";\n\nconst cursorLeft = ESC + \"G\";\nconst cursorUp = (count = 1) => ESC + count + \"A\";\n\nexport const clearTerminal: string =\n process.platform === \"win32\"\n ? `${eraseScreen}${ESC}0f`\n : // 1. Erases the screen (Only done in case `2` is not supported)\n // 2. Erases the whole screen including scrollback buffer\n // 3. Moves cursor to the top-left position\n // More info: https://www.real-world-systems.com/docs/ANSIcode.html\n `${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const cursorHide: string = ESC + \"?25l\";\nexport const cursorShow: string = ESC + \"?25h\";\n\nexport const eraseLines = (count: number): string => {\n let clear = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0; index < count; index++) {\n clear += eraseLine + (index < count - 1 ? cursorUp() : \"\");\n }\n\n if (count) {\n clear += cursorLeft;\n }\n\n return clear;\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ReadonlyMeta, StreamAwareReporter, StringifyAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\n\nexport class RawReporter<L extends string = never> implements StreamAwareReporter<L>, StringifyAwareReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor() {\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n const { context, groups, message, type } = meta;\n\n const items: string[] = [];\n\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this.#stringify as typeof stringify)(message);\n\n items.push(formattedMessage + \"\");\n\n if (context) {\n items.push(\n ...context.map((value) => {\n if (typeof value === \"object\") {\n return \" \" + (this.#stringify as typeof stringify)(value);\n }\n\n return \" \" + value;\n }),\n );\n }\n\n const streamType = [\"error\", \"trace\", \"warn\"].includes(type.level as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, (groupSpaces + items.join(\"\")).split(\"\\n\"), 0);\n } else {\n writeStream(groupSpaces + items.join(\"\"), stream);\n }\n }\n}\n","import { InteractiveManager } from \"./interactive/interactive-manager\";\nimport { InteractiveStreamHook } from \"./interactive/interactive-stream-hook\";\nimport { PailBrowserImpl } from \"./pail.browser\";\nimport { RawReporter } from \"./reporter/raw/raw.server\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n InteractiveStreamReporter,\n LiteralUnion,\n LoggerFunction,\n LoggerTypesAwareReporter,\n Reporter,\n ServerConstructorOptions,\n StreamAwareReporter,\n StringifyAwareReporter,\n} from \"./types\";\nimport { clearTerminal } from \"./util/ansi-escapes\";\n\nclass PailServerImpl<T extends string = never, L extends string = never> extends PailBrowserImpl<T, L> {\n protected readonly stdout: NodeJS.WriteStream;\n\n protected readonly stderr: NodeJS.WriteStream;\n\n protected interactiveManager: InteractiveManager | undefined;\n\n protected readonly interactive: boolean;\n\n public constructor(public readonly options: ServerConstructorOptions<T, L> = {}) {\n const { interactive, rawReporter, reporters, stderr, stdout, ...rest } = options;\n\n super(rest as ConstructorOptions<T, L>);\n\n this.interactive = interactive ?? false;\n\n this.stdout = stdout as NodeJS.WriteStream;\n this.stderr = stderr as NodeJS.WriteStream;\n\n if (this.interactive) {\n this.interactiveManager = new InteractiveManager(new InteractiveStreamHook(this.stdout), new InteractiveStreamHook(this.stderr));\n }\n\n if (Array.isArray(reporters)) {\n this.registerReporters(reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n }\n\n public override scope<N extends string = T>(...name: string[]): PailServerType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailServerType<N, L>;\n }\n\n public getInteractiveManager(): InteractiveManager | undefined {\n return this.interactiveManager;\n }\n\n public wrapStd() {\n this._wrapStream(this.stdout, \"log\");\n this._wrapStream(this.stderr, \"log\");\n }\n\n public restoreStd() {\n this._restoreStream(this.stdout);\n this._restoreStream(this.stderr);\n }\n\n public wrapAll(): void {\n this.wrapConsole();\n this.wrapStd();\n }\n\n public restoreAll(): void {\n this.restoreConsole();\n this.restoreStd();\n }\n\n public override clear(): void {\n this.stdout.write(clearTerminal as string);\n this.stderr.write(clearTerminal as string);\n }\n\n protected override extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as StreamAwareReporter<L>).setStdout === \"function\") {\n (reporter as StreamAwareReporter<L>).setStdout(this.stdout);\n }\n\n if (typeof (reporter as StreamAwareReporter<L>).setStderr === \"function\") {\n (reporter as StreamAwareReporter<L>).setStderr(this.stderr);\n }\n\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n if (typeof (reporter as InteractiveStreamReporter<L>).setIsInteractive === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setIsInteractive(this.interactive);\n }\n\n if (this.interactive && typeof (reporter as InteractiveStreamReporter<L>).setInteractiveManager === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setInteractiveManager(this.interactiveManager);\n }\n\n return reporter;\n }\n\n private _wrapStream(stream: NodeJS.WriteStream | undefined, type: LiteralUnion<DefaultLogTypes, L>) {\n if (!stream) {\n return;\n }\n\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method\n (stream as any).__write = stream.write;\n }\n\n // Override\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n (stream as any).write = (data: any): void => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n (this as unknown as PailServerImpl)[type].log(String(data).trim());\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _restoreStream(stream?: NodeJS.WriteStream): void {\n if (!stream) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n stream.write = (stream as any).__write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n delete (stream as any).__write;\n }\n }\n}\n\nexport type PailServerType<T extends string = never, L extends string = never> = PailServerImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ServerConstructorOptions<TC, LC>) => PailServerType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ServerConstructorOptions<T, L>) => PailServerType<T, L>;\n\nexport const PailServer = PailServerImpl as unknown as PailServerType;\n","import type { PailServerType } from \"./pail.server\";\nimport { PailServer } from \"./pail.server\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { PrettyReporter } from \"./reporter/pretty/pretty.server\";\nimport type { ConstructorOptions, ExtendedRfc5424LogLevels } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst _getDefaultLogLevel = (): ExtendedRfc5424LogLevels => {\n if (process.env.NODE_ENV === \"debug\" || process.env.DEBUG !== undefined) {\n return \"debug\";\n }\n\n if (process.env.NODE_ENV === \"test\") {\n return \"warning\";\n }\n\n return \"informational\";\n};\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailServerType<T, L> =>\n new PailServer<T, L>({\n logLevel: _getDefaultLogLevel(),\n processors: [new MessageFormatterProcessor<L>(), new ErrorProcessor<L>()],\n reporters: [new PrettyReporter()],\n stderr: process.stderr,\n stdout: process.stdout,\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailServerType as Pail } from \"./pail.server\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
|
package/dist/index.server.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c, a as a$2 } from './chunk-7QFUDEFS.js';
|
|
2
2
|
import { a as a$1 } from './chunk-SR3Q3EUO.js';
|
|
3
3
|
import './chunk-AFMDCM5W.js';
|
|
4
|
-
import { d, a as a$3, b, c as c$1 } from './chunk-
|
|
4
|
+
import { d, a as a$3, b, c as c$1 } from './chunk-XCDBMDTZ.js';
|
|
5
5
|
import './chunk-ZB7IIFHO.js';
|
|
6
6
|
import './chunk-NF47XQ47.js';
|
|
7
7
|
import { StringDecoder } from 'node:string_decoder';
|
package/dist/index.server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactive/interactive-manager.ts","../src/interactive/interactive-stream-hook.ts","../src/util/ansi-escapes.ts","../src/reporter/raw/raw.server.ts","../src/pail.server.ts","../src/index.server.ts"],"names":["InteractiveManager","#stream","#isActive","#isSuspended","#lastLength","#outside","stdout","stderr","stream","count","hook","eraseRowCount","erase","separateHistory","rows","from","width","height","terminalSize","position","actualLength","outside","output","accumulator","row","wrapAnsi","status","StringDecoder","ESC","eraseScreen","eraseLine","cursorLeft","cursorUp","clearTerminal","cursorHide","cursorShow","eraseLines","clear","index","InteractiveStreamHook","_InteractiveStreamHook","#decoder","#history","#method","data","arguments_","callback","element","message","RawReporter","#stringify","#stdout","#stderr","#interactiveManager","#interactive","function_","manager","interactive","meta","context","groups","type","items","formattedMessage","value","streamType","groupSpaces","writeStream","PailServerImpl","PailBrowserImpl","options","rawReporter","reporters","rest","name","reporter","PailServer","_getDefaultLogLevel","createPail","MessageFormatterProcessor","ErrorProcessor","PrettyReporter","pail"],"mappings":"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","sourcesContent":["// 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 { InteractiveStreamHook } from \"./interactive-stream-hook\";\n\ntype StreamType = \"stderr\" | \"stdout\";\n\nexport class InteractiveManager {\n readonly #stream: {\n stderr: InteractiveStreamHook;\n stdout: InteractiveStreamHook;\n };\n\n #isActive = false;\n\n #isSuspended = false;\n\n #lastLength = 0;\n\n #outside = 0;\n\n public constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook) {\n this.#stream = {\n stderr,\n stdout,\n };\n }\n\n /**\n * Last printed rows count\n */\n public get lastLength(): number {\n return this.#lastLength;\n }\n\n /**\n * Rows count outside editable area\n */\n public get outside(): number {\n return this.#outside;\n }\n\n /**\n * Hook activity status\n */\n public get isHooked(): boolean {\n return this.#isActive;\n }\n\n /**\n * Suspend status for active hooks\n */\n public get isSuspended(): boolean {\n return this.#isSuspended;\n }\n\n /**\n * Removes from the bottom of output up the specified count of lines\n *\n * @param stream - Stream to remove lines from\n * @param count - lines count to remove\n */\n public erase(stream: StreamType, count = this.#lastLength): void {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n this.#stream[stream].erase(count);\n }\n\n /**\n * Hook stdout and stderr streams\n * @returns Success status\n */\n public hook(): boolean {\n if (!this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.active());\n\n this._clear(true);\n }\n\n return this.#isActive;\n }\n\n /**\n * Resume suspend hooks\n *\n * @param stream - Stream to resume\n * @param eraseRowCount - erase output rows count\n */\n public resume(stream: StreamType, eraseRowCount?: number): void {\n if (this.#isSuspended) {\n this.#isSuspended = false;\n\n if (eraseRowCount) {\n this.erase(stream, eraseRowCount);\n }\n\n this.#lastLength = 0;\n\n Object.values(this.#stream).forEach((hook) => hook.active());\n }\n }\n\n /**\n * Suspend active hooks for external output\n *\n * @param stream - Stream to suspend\n * @param erase - erase output\n */\n public suspend(stream: StreamType, erase = true): void {\n if (!this.#isSuspended) {\n this.#isSuspended = true;\n\n if (erase) {\n this.erase(stream);\n }\n\n Object.values(this.#stream).forEach((hook) => hook.renew());\n }\n }\n\n /**\n * Unhooks both stdout and stderr streams and print their story of logs\n *\n * @param separateHistory - If `true`, will add an empty line to the history output for individual recorded lines and console logs\n *\n * @returns Success status\n */\n public unhook(separateHistory = true): boolean {\n if (this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.inactive(separateHistory));\n\n this._clear();\n }\n\n return !this.#isActive;\n }\n\n /**\n * Update output\n *\n * @param stream - Stream to write to\n * @param rows - Text lines to write to standard output\n * @param from - Index of the line starting from which the contents of the terminal are being overwritten\n */\n public update(stream: StreamType, rows: string[], from = 0): void {\n if (rows.length > 0) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const hook = this.#stream[stream];\n\n const { columns: width, rows: height } = terminalSize();\n\n const position = from > height ? height - 1 : Math.max(0, Math.min(height - 1, from));\n const actualLength = this.lastLength - position;\n const outside = Math.max(actualLength - height, this.outside);\n\n // eslint-disable-next-line unicorn/no-array-reduce\n let output = rows.reduce<string[]>(\n (accumulator, row) => [\n ...accumulator,\n wrapAnsi(row, width, {\n hard: true,\n trim: false,\n wordWrap: true,\n }),\n ],\n [],\n );\n\n if (height <= actualLength) {\n hook.erase(height);\n\n if (position < outside) {\n output = output.slice(outside - position + 1);\n }\n } else if (actualLength) {\n hook.erase(actualLength);\n }\n\n hook.write(output.join(\"\\n\") + \"\\n\");\n\n this.#lastLength = outside ? outside + output.length + 1 : output.length;\n this.#outside = Math.max(this.lastLength - height, this.outside);\n }\n }\n\n private _clear(status = false): void {\n this.#isActive = status;\n this.#lastLength = 0;\n this.#outside = 0;\n }\n}\n","import { StringDecoder } from \"node:string_decoder\";\n\nimport { cursorHide, cursorShow, eraseLines } from \"../util/ansi-escapes\";\n\nexport class InteractiveStreamHook {\n public static readonly DRAIN = true;\n\n readonly #decoder = new StringDecoder();\n\n #history: string[] = [];\n\n readonly #method: NodeJS.WriteStream[\"write\"];\n\n readonly #stream: NodeJS.WriteStream;\n\n public constructor(stream: NodeJS.WriteStream) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#method = stream.write;\n this.#stream = stream;\n }\n\n public active(): void {\n this.write(cursorHide as string);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - We are modifying the write method\n this.#stream.write = (data: Uint8Array | string, ...arguments_: [((error?: Error) => void)?] | [(string | undefined)?, ((error?: Error) => void)?]) => {\n const callback = arguments_.at(-1);\n\n this.#history.push(\n this.#decoder.write(\n typeof data === \"string\"\n ? Buffer.from(data, typeof arguments_[0] === \"string\" ? (arguments_[0] as BufferEncoding) : undefined)\n : Buffer.from(data),\n ),\n );\n\n if (typeof callback === \"function\") {\n callback();\n }\n\n return InteractiveStreamHook.DRAIN;\n };\n }\n\n public erase(count: number): void {\n if (count > 0) {\n this.write(eraseLines(count + 1) as string);\n }\n }\n\n public inactive(separateHistory = false): void {\n if (this.#history.length > 0) {\n if (separateHistory) {\n this.write(\"\\n\");\n }\n\n this.#history.forEach((element) => {\n this.write(element);\n });\n this.#history = [];\n }\n\n this.renew();\n }\n\n public renew(): void {\n this.#stream.write = this.#method;\n this.write(cursorShow as string);\n }\n\n public write(message: string): void {\n this.#method.apply(this.#stream, [message]);\n }\n}\n","const ESC = \"\\u001B[\";\n\nconst eraseScreen = ESC + \"2J\";\nconst eraseLine = ESC + \"2K\";\n\nconst cursorLeft = ESC + \"G\";\nconst cursorUp = (count = 1) => ESC + count + \"A\";\n\nexport const clearTerminal: string =\n process.platform === \"win32\"\n ? `${eraseScreen}${ESC}0f`\n : // 1. Erases the screen (Only done in case `2` is not supported)\n // 2. Erases the whole screen including scrollback buffer\n // 3. Moves cursor to the top-left position\n // More info: https://www.real-world-systems.com/docs/ANSIcode.html\n `${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const cursorHide: string = ESC + \"?25l\";\nexport const cursorShow: string = ESC + \"?25h\";\n\nexport const eraseLines = (count: number): string => {\n let clear = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0; index < count; index++) {\n clear += eraseLine + (index < count - 1 ? cursorUp() : \"\");\n }\n\n if (count) {\n clear += cursorLeft;\n }\n\n return clear;\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ReadonlyMeta, StreamAwareReporter, StringifyAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\n\nexport class RawReporter<L extends string = never> implements StreamAwareReporter<L>, StringifyAwareReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor() {\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n const { context, groups, message, type } = meta;\n\n const items: string[] = [];\n\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this.#stringify as typeof stringify)(message);\n\n items.push(formattedMessage + \"\");\n\n if (context) {\n items.push(\n ...context.map((value) => {\n if (typeof value === \"object\") {\n return \" \" + (this.#stringify as typeof stringify)(value);\n }\n\n return \" \" + value;\n }),\n );\n }\n\n const streamType = [\"error\", \"trace\", \"warn\"].includes(type.level as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, (groupSpaces + items.join(\"\")).split(\"\\n\"), 0);\n } else {\n writeStream(groupSpaces + items.join(\"\"), stream);\n }\n }\n}\n","import { InteractiveManager } from \"./interactive/interactive-manager\";\nimport { InteractiveStreamHook } from \"./interactive/interactive-stream-hook\";\nimport { PailBrowserImpl } from \"./pail.browser\";\nimport { RawReporter } from \"./reporter/raw/raw.server\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n InteractiveStreamReporter,\n LiteralUnion,\n LoggerFunction,\n LoggerTypesAwareReporter,\n Reporter,\n ServerConstructorOptions,\n StreamAwareReporter,\n StringifyAwareReporter,\n} from \"./types\";\nimport { clearTerminal } from \"./util/ansi-escapes\";\n\nclass PailServerImpl<T extends string = never, L extends string = never> extends PailBrowserImpl<T, L> {\n protected readonly stdout: NodeJS.WriteStream;\n\n protected readonly stderr: NodeJS.WriteStream;\n\n protected interactiveManager: InteractiveManager | undefined;\n\n protected readonly interactive: boolean;\n\n public constructor(public readonly options: ServerConstructorOptions<T, L> = {}) {\n const { interactive, rawReporter, reporters, stderr, stdout, ...rest } = options;\n\n super(rest as ConstructorOptions<T, L>);\n\n this.interactive = interactive ?? false;\n\n this.stdout = stdout as NodeJS.WriteStream;\n this.stderr = stderr as NodeJS.WriteStream;\n\n if (this.interactive) {\n this.interactiveManager = new InteractiveManager(new InteractiveStreamHook(this.stdout), new InteractiveStreamHook(this.stderr));\n }\n\n if (Array.isArray(reporters)) {\n this.registerReporters(reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n }\n\n public override scope<N extends string = T>(...name: string[]): PailServerType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailServerType<N, L>;\n }\n\n public getInteractiveManager(): InteractiveManager | undefined {\n return this.interactiveManager;\n }\n\n public wrapStd() {\n this._wrapStream(this.stdout, \"log\");\n this._wrapStream(this.stderr, \"log\");\n }\n\n public restoreStd() {\n this._restoreStream(this.stdout);\n this._restoreStream(this.stderr);\n }\n\n public wrapAll(): void {\n this.wrapConsole();\n this.wrapStd();\n }\n\n public restoreAll(): void {\n this.restoreConsole();\n this.restoreStd();\n }\n\n public override clear(): void {\n this.stdout.write(clearTerminal as string);\n this.stderr.write(clearTerminal as string);\n }\n\n protected override extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as StreamAwareReporter<L>).setStdout === \"function\") {\n (reporter as StreamAwareReporter<L>).setStdout(this.stdout);\n }\n\n if (typeof (reporter as StreamAwareReporter<L>).setStderr === \"function\") {\n (reporter as StreamAwareReporter<L>).setStderr(this.stderr);\n }\n\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n if (typeof (reporter as InteractiveStreamReporter<L>).setIsInteractive === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setIsInteractive(this.interactive);\n }\n\n if (this.interactive && typeof (reporter as InteractiveStreamReporter<L>).setInteractiveManager === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setInteractiveManager(this.interactiveManager);\n }\n\n return reporter;\n }\n\n private _wrapStream(stream: NodeJS.WriteStream | undefined, type: LiteralUnion<DefaultLogTypes, L>) {\n if (!stream) {\n return;\n }\n\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method\n (stream as any).__write = stream.write;\n }\n\n // Override\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n (stream as any).write = (data: any): void => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n (this as unknown as PailServerImpl)[type].log(String(data).trim());\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _restoreStream(stream?: NodeJS.WriteStream): void {\n if (!stream) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n stream.write = (stream as any).__write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n delete (stream as any).__write;\n }\n }\n}\n\nexport type PailServerType<T extends string = never, L extends string = never> = PailServerImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ServerConstructorOptions<TC, LC>) => PailServerType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ServerConstructorOptions<T, L>) => PailServerType<T, L>;\n\nexport const PailServer = PailServerImpl as unknown as PailServerType;\n","import type { PailServerType } from \"./pail.server\";\nimport { PailServer } from \"./pail.server\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { PrettyReporter } from \"./reporter/pretty/pretty.server\";\nimport type { ConstructorOptions, ExtendedRfc5424LogLevels } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst _getDefaultLogLevel = (): ExtendedRfc5424LogLevels => {\n if (process.env[\"NODE_ENV\"] === \"debug\" || process.env[\"DEBUG\"] !== undefined) {\n return \"debug\";\n }\n\n if (process.env[\"NODE_ENV\"] === \"test\") {\n return \"warning\";\n }\n\n return \"informational\";\n};\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailServerType<T, L> =>\n new PailServer<T, L>({\n logLevel: _getDefaultLogLevel(),\n processors: [new MessageFormatterProcessor<L>(), new ErrorProcessor<L>()],\n reporters: [new PrettyReporter()],\n stderr: process.stderr,\n stdout: process.stdout,\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailServerType as Pail } from \"./pail.server\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interactive/interactive-manager.ts","../src/interactive/interactive-stream-hook.ts","../src/util/ansi-escapes.ts","../src/reporter/raw/raw.server.ts","../src/pail.server.ts","../src/index.server.ts"],"names":["InteractiveManager","#stream","#isActive","#isSuspended","#lastLength","#outside","stdout","stderr","stream","count","hook","eraseRowCount","erase","separateHistory","rows","from","width","height","terminalSize","position","actualLength","outside","output","accumulator","row","wrapAnsi","status","StringDecoder","ESC","eraseScreen","eraseLine","cursorLeft","cursorUp","clearTerminal","cursorHide","cursorShow","eraseLines","clear","index","InteractiveStreamHook","_InteractiveStreamHook","#decoder","#history","#method","data","arguments_","callback","element","message","RawReporter","#stringify","#stdout","#stderr","#interactiveManager","#interactive","function_","manager","interactive","meta","context","groups","type","items","formattedMessage","value","streamType","groupSpaces","writeStream","PailServerImpl","PailBrowserImpl","options","rawReporter","reporters","rest","name","reporter","PailServer","_getDefaultLogLevel","createPail","MessageFormatterProcessor","ErrorProcessor","PrettyReporter","pail"],"mappings":"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","sourcesContent":["// 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 { InteractiveStreamHook } from \"./interactive-stream-hook\";\n\ntype StreamType = \"stderr\" | \"stdout\";\n\nexport class InteractiveManager {\n readonly #stream: {\n stderr: InteractiveStreamHook;\n stdout: InteractiveStreamHook;\n };\n\n #isActive = false;\n\n #isSuspended = false;\n\n #lastLength = 0;\n\n #outside = 0;\n\n public constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook) {\n this.#stream = {\n stderr,\n stdout,\n };\n }\n\n /**\n * Last printed rows count\n */\n public get lastLength(): number {\n return this.#lastLength;\n }\n\n /**\n * Rows count outside editable area\n */\n public get outside(): number {\n return this.#outside;\n }\n\n /**\n * Hook activity status\n */\n public get isHooked(): boolean {\n return this.#isActive;\n }\n\n /**\n * Suspend status for active hooks\n */\n public get isSuspended(): boolean {\n return this.#isSuspended;\n }\n\n /**\n * Removes from the bottom of output up the specified count of lines\n *\n * @param stream - Stream to remove lines from\n * @param count - lines count to remove\n */\n public erase(stream: StreamType, count = this.#lastLength): void {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n this.#stream[stream].erase(count);\n }\n\n /**\n * Hook stdout and stderr streams\n * @returns Success status\n */\n public hook(): boolean {\n if (!this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.active());\n\n this._clear(true);\n }\n\n return this.#isActive;\n }\n\n /**\n * Resume suspend hooks\n *\n * @param stream - Stream to resume\n * @param eraseRowCount - erase output rows count\n */\n public resume(stream: StreamType, eraseRowCount?: number): void {\n if (this.#isSuspended) {\n this.#isSuspended = false;\n\n if (eraseRowCount) {\n this.erase(stream, eraseRowCount);\n }\n\n this.#lastLength = 0;\n\n Object.values(this.#stream).forEach((hook) => hook.active());\n }\n }\n\n /**\n * Suspend active hooks for external output\n *\n * @param stream - Stream to suspend\n * @param erase - erase output\n */\n public suspend(stream: StreamType, erase = true): void {\n if (!this.#isSuspended) {\n this.#isSuspended = true;\n\n if (erase) {\n this.erase(stream);\n }\n\n Object.values(this.#stream).forEach((hook) => hook.renew());\n }\n }\n\n /**\n * Unhooks both stdout and stderr streams and print their story of logs\n *\n * @param separateHistory - If `true`, will add an empty line to the history output for individual recorded lines and console logs\n *\n * @returns Success status\n */\n public unhook(separateHistory = true): boolean {\n if (this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.inactive(separateHistory));\n\n this._clear();\n }\n\n return !this.#isActive;\n }\n\n /**\n * Update output\n *\n * @param stream - Stream to write to\n * @param rows - Text lines to write to standard output\n * @param from - Index of the line starting from which the contents of the terminal are being overwritten\n */\n public update(stream: StreamType, rows: string[], from = 0): void {\n if (rows.length > 0) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const hook = this.#stream[stream];\n\n const { columns: width, rows: height } = terminalSize();\n\n const position = from > height ? height - 1 : Math.max(0, Math.min(height - 1, from));\n const actualLength = this.lastLength - position;\n const outside = Math.max(actualLength - height, this.outside);\n\n // eslint-disable-next-line unicorn/no-array-reduce\n let output = rows.reduce<string[]>(\n (accumulator, row) => [\n ...accumulator,\n wrapAnsi(row, width, {\n hard: true,\n trim: false,\n wordWrap: true,\n }),\n ],\n [],\n );\n\n if (height <= actualLength) {\n hook.erase(height);\n\n if (position < outside) {\n output = output.slice(outside - position + 1);\n }\n } else if (actualLength) {\n hook.erase(actualLength);\n }\n\n hook.write(output.join(\"\\n\") + \"\\n\");\n\n this.#lastLength = outside ? outside + output.length + 1 : output.length;\n this.#outside = Math.max(this.lastLength - height, this.outside);\n }\n }\n\n private _clear(status = false): void {\n this.#isActive = status;\n this.#lastLength = 0;\n this.#outside = 0;\n }\n}\n","import { StringDecoder } from \"node:string_decoder\";\n\nimport { cursorHide, cursorShow, eraseLines } from \"../util/ansi-escapes\";\n\nexport class InteractiveStreamHook {\n public static readonly DRAIN = true;\n\n readonly #decoder = new StringDecoder();\n\n #history: string[] = [];\n\n readonly #method: NodeJS.WriteStream[\"write\"];\n\n readonly #stream: NodeJS.WriteStream;\n\n public constructor(stream: NodeJS.WriteStream) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#method = stream.write;\n this.#stream = stream;\n }\n\n public active(): void {\n this.write(cursorHide as string);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - We are modifying the write method\n this.#stream.write = (data: Uint8Array | string, ...arguments_: [((error?: Error) => void)?] | [(string | undefined)?, ((error?: Error) => void)?]) => {\n const callback = arguments_.at(-1);\n\n this.#history.push(\n this.#decoder.write(\n typeof data === \"string\"\n ? Buffer.from(data, typeof arguments_[0] === \"string\" ? (arguments_[0] as BufferEncoding) : undefined)\n : Buffer.from(data),\n ),\n );\n\n if (typeof callback === \"function\") {\n callback();\n }\n\n return InteractiveStreamHook.DRAIN;\n };\n }\n\n public erase(count: number): void {\n if (count > 0) {\n this.write(eraseLines(count + 1) as string);\n }\n }\n\n public inactive(separateHistory = false): void {\n if (this.#history.length > 0) {\n if (separateHistory) {\n this.write(\"\\n\");\n }\n\n this.#history.forEach((element) => {\n this.write(element);\n });\n this.#history = [];\n }\n\n this.renew();\n }\n\n public renew(): void {\n this.#stream.write = this.#method;\n this.write(cursorShow as string);\n }\n\n public write(message: string): void {\n this.#method.apply(this.#stream, [message]);\n }\n}\n","const ESC = \"\\u001B[\";\n\nconst eraseScreen = ESC + \"2J\";\nconst eraseLine = ESC + \"2K\";\n\nconst cursorLeft = ESC + \"G\";\nconst cursorUp = (count = 1) => ESC + count + \"A\";\n\nexport const clearTerminal: string =\n process.platform === \"win32\"\n ? `${eraseScreen}${ESC}0f`\n : // 1. Erases the screen (Only done in case `2` is not supported)\n // 2. Erases the whole screen including scrollback buffer\n // 3. Moves cursor to the top-left position\n // More info: https://www.real-world-systems.com/docs/ANSIcode.html\n `${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const cursorHide: string = ESC + \"?25l\";\nexport const cursorShow: string = ESC + \"?25h\";\n\nexport const eraseLines = (count: number): string => {\n let clear = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0; index < count; index++) {\n clear += eraseLine + (index < count - 1 ? cursorUp() : \"\");\n }\n\n if (count) {\n clear += cursorLeft;\n }\n\n return clear;\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ReadonlyMeta, StreamAwareReporter, StringifyAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\n\nexport class RawReporter<L extends string = never> implements StreamAwareReporter<L>, StringifyAwareReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor() {\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n const { context, groups, message, type } = meta;\n\n const items: string[] = [];\n\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this.#stringify as typeof stringify)(message);\n\n items.push(formattedMessage + \"\");\n\n if (context) {\n items.push(\n ...context.map((value) => {\n if (typeof value === \"object\") {\n return \" \" + (this.#stringify as typeof stringify)(value);\n }\n\n return \" \" + value;\n }),\n );\n }\n\n const streamType = [\"error\", \"trace\", \"warn\"].includes(type.level as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, (groupSpaces + items.join(\"\")).split(\"\\n\"), 0);\n } else {\n writeStream(groupSpaces + items.join(\"\"), stream);\n }\n }\n}\n","import { InteractiveManager } from \"./interactive/interactive-manager\";\nimport { InteractiveStreamHook } from \"./interactive/interactive-stream-hook\";\nimport { PailBrowserImpl } from \"./pail.browser\";\nimport { RawReporter } from \"./reporter/raw/raw.server\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n InteractiveStreamReporter,\n LiteralUnion,\n LoggerFunction,\n LoggerTypesAwareReporter,\n Reporter,\n ServerConstructorOptions,\n StreamAwareReporter,\n StringifyAwareReporter,\n} from \"./types\";\nimport { clearTerminal } from \"./util/ansi-escapes\";\n\nclass PailServerImpl<T extends string = never, L extends string = never> extends PailBrowserImpl<T, L> {\n protected readonly stdout: NodeJS.WriteStream;\n\n protected readonly stderr: NodeJS.WriteStream;\n\n protected interactiveManager: InteractiveManager | undefined;\n\n protected readonly interactive: boolean;\n\n public constructor(public readonly options: ServerConstructorOptions<T, L> = {}) {\n const { interactive, rawReporter, reporters, stderr, stdout, ...rest } = options;\n\n super(rest as ConstructorOptions<T, L>);\n\n this.interactive = interactive ?? false;\n\n this.stdout = stdout as NodeJS.WriteStream;\n this.stderr = stderr as NodeJS.WriteStream;\n\n if (this.interactive) {\n this.interactiveManager = new InteractiveManager(new InteractiveStreamHook(this.stdout), new InteractiveStreamHook(this.stderr));\n }\n\n if (Array.isArray(reporters)) {\n this.registerReporters(reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n }\n\n public override scope<N extends string = T>(...name: string[]): PailServerType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailServerType<N, L>;\n }\n\n public getInteractiveManager(): InteractiveManager | undefined {\n return this.interactiveManager;\n }\n\n public wrapStd() {\n this._wrapStream(this.stdout, \"log\");\n this._wrapStream(this.stderr, \"log\");\n }\n\n public restoreStd() {\n this._restoreStream(this.stdout);\n this._restoreStream(this.stderr);\n }\n\n public wrapAll(): void {\n this.wrapConsole();\n this.wrapStd();\n }\n\n public restoreAll(): void {\n this.restoreConsole();\n this.restoreStd();\n }\n\n public override clear(): void {\n this.stdout.write(clearTerminal as string);\n this.stderr.write(clearTerminal as string);\n }\n\n protected override extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as StreamAwareReporter<L>).setStdout === \"function\") {\n (reporter as StreamAwareReporter<L>).setStdout(this.stdout);\n }\n\n if (typeof (reporter as StreamAwareReporter<L>).setStderr === \"function\") {\n (reporter as StreamAwareReporter<L>).setStderr(this.stderr);\n }\n\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n if (typeof (reporter as InteractiveStreamReporter<L>).setIsInteractive === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setIsInteractive(this.interactive);\n }\n\n if (this.interactive && typeof (reporter as InteractiveStreamReporter<L>).setInteractiveManager === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setInteractiveManager(this.interactiveManager);\n }\n\n return reporter;\n }\n\n private _wrapStream(stream: NodeJS.WriteStream | undefined, type: LiteralUnion<DefaultLogTypes, L>) {\n if (!stream) {\n return;\n }\n\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method\n (stream as any).__write = stream.write;\n }\n\n // Override\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n (stream as any).write = (data: any): void => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n (this as unknown as PailServerImpl)[type].log(String(data).trim());\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _restoreStream(stream?: NodeJS.WriteStream): void {\n if (!stream) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n stream.write = (stream as any).__write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n delete (stream as any).__write;\n }\n }\n}\n\nexport type PailServerType<T extends string = never, L extends string = never> = PailServerImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ServerConstructorOptions<TC, LC>) => PailServerType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ServerConstructorOptions<T, L>) => PailServerType<T, L>;\n\nexport const PailServer = PailServerImpl as unknown as PailServerType;\n","import type { PailServerType } from \"./pail.server\";\nimport { PailServer } from \"./pail.server\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { PrettyReporter } from \"./reporter/pretty/pretty.server\";\nimport type { ConstructorOptions, ExtendedRfc5424LogLevels } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst _getDefaultLogLevel = (): ExtendedRfc5424LogLevels => {\n if (process.env.NODE_ENV === \"debug\" || process.env.DEBUG !== undefined) {\n return \"debug\";\n }\n\n if (process.env.NODE_ENV === \"test\") {\n return \"warning\";\n }\n\n return \"informational\";\n};\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailServerType<T, L> =>\n new PailServer<T, L>({\n logLevel: _getDefaultLogLevel(),\n processors: [new MessageFormatterProcessor<L>(), new ErrorProcessor<L>()],\n reporters: [new PrettyReporter()],\n stderr: process.stderr,\n stdout: process.stdout,\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailServerType as Pail } from \"./pail.server\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
|
package/dist/reporter.server.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkK4LLYFBH_cjs = require('./chunk-K4LLYFBH.cjs');
|
|
4
4
|
var chunkZJMTPHZR_cjs = require('./chunk-ZJMTPHZR.cjs');
|
|
5
5
|
require('./chunk-YP3U3DTV.cjs');
|
|
6
6
|
require('./chunk-QINSQ6TU.cjs');
|
|
@@ -12,12 +12,12 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
12
12
|
var c__default = /*#__PURE__*/_interopDefault(c);
|
|
13
13
|
|
|
14
14
|
var a=class{_ready=!0;_stream;_name;constructor(t,r){this._stream=t,this._name=r;}write(t){this.writeStream(t);}end(...t){this._stream.end(...t);}writeStream(t){if(!this._ready){console.warn("Stream busy: "+this._name+'. Write will be dropped: "'+t+'"');return}this._ready=!1,this._stream.on("error",r=>{throw r}),this._stream.on("drain",()=>{this._ready=!0;}),this._stream.on("finish",()=>{this._ready=!0;}),this._ready=this._stream.write(t,()=>{});}};var n=class{_filePath;_immediate;_stream;_options;constructor(t,r=!1,e={}){this._filePath=t,this._immediate=r,this._options=e,this._immediate||(this._stream=rotatingFileStream.createStream(this._filePath,e));}write(t){let r=this._stream;this._immediate&&(r=rotatingFileStream.createStream(this._filePath,this._options));let e=new a(r,this._filePath);e.write(t),this._immediate&&e.end();}end(){this._stream!==void 0&&this._stream.end();}};var s=class{_stream;constructor(t){let{filePath:r,writeImmediately:e=!1,...h}=t;this._stream=new n(r,e,h);}log(t){this._stream.write(this._formatMessage(t)+`
|
|
15
|
-
`);}};var p=class extends s{#t;constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});}setStringify(t){this.#t=t;}_formatMessage(t){let{type:r,...e}=t;return e.label&&(e.label=e.label.trim()),e.file&&(e.file=e.file.name+":"+e.file.line+(e.file.column?":"+e.file.column:"")),this.#t(e)}};var m=class extends chunkZJMTPHZR_cjs.a{#t;#e;constructor(){super(),this.#t=c__default.default.stdout,this.#e=c__default.default.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#e=t;}_log(t,r){let e=["error","warn"].includes(r)?this.#e:this.#t;
|
|
15
|
+
`);}};var p=class extends s{#t;constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});}setStringify(t){this.#t=t;}_formatMessage(t){let{type:r,...e}=t;return e.label&&(e.label=e.label.trim()),e.file&&(e.file=e.file.name+":"+e.file.line+(e.file.column?":"+e.file.column:"")),this.#t(e)}};var m=class extends chunkZJMTPHZR_cjs.a{#t;#e;constructor(){super(),this.#t=c__default.default.stdout,this.#e=c__default.default.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#e=t;}_log(t,r){let e=["error","warn"].includes(r)?this.#e:this.#t;chunkK4LLYFBH_cjs.c(t+`
|
|
16
16
|
`,e);}};
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, 'PrettyReporter', {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkK4LLYFBH_cjs.d; }
|
|
21
21
|
});
|
|
22
22
|
exports.AbstractFileReporter = s;
|
|
23
23
|
exports.JsonFileReporter = p;
|
package/dist/reporter.server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c } from './chunk-
|
|
2
|
-
export { d as PrettyReporter } from './chunk-
|
|
1
|
+
import { c } from './chunk-XCDBMDTZ.js';
|
|
2
|
+
export { d as PrettyReporter } from './chunk-XCDBMDTZ.js';
|
|
3
3
|
import { a } from './chunk-TAH23BHM.js';
|
|
4
4
|
import './chunk-ZB7IIFHO.js';
|
|
5
5
|
import './chunk-NF47XQ47.js';
|