poe-code 15.0.9 → 15.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/metafile.json +1 -1
  2. package/package.json +7 -1
  3. package/packages/safe-bash/dist/chunks/{chunk-L2GZSOSJ.js → chunk-4NMFAR4Z.js} +2 -16
  4. package/packages/safe-bash/dist/chunks/{chunk-L2GZSOSJ.js.map → chunk-4NMFAR4Z.js.map} +4 -4
  5. package/packages/safe-bash/dist/chunks/{chunk-UZELUFGF.js → chunk-54EWSIBL.js} +5 -5
  6. package/packages/safe-bash/dist/chunks/{chunk-NVUC5B2R.js → chunk-5FNFA5ZV.js} +9 -7
  7. package/packages/safe-bash/dist/chunks/{chunk-NVUC5B2R.js.map → chunk-5FNFA5ZV.js.map} +1 -1
  8. package/packages/safe-bash/dist/chunks/{chunk-M7KZ7V4P.js → chunk-5X2TAR25.js} +2 -2
  9. package/packages/safe-bash/dist/chunks/{chunk-XROAIPKA.js → chunk-67TENRTW.js} +7 -5
  10. package/packages/safe-bash/dist/chunks/{chunk-XROAIPKA.js.map → chunk-67TENRTW.js.map} +1 -1
  11. package/packages/safe-bash/dist/chunks/{chunk-5Y4AEZB2.js → chunk-7XJVLU37.js} +6 -4
  12. package/packages/safe-bash/dist/chunks/{chunk-5Y4AEZB2.js.map → chunk-7XJVLU37.js.map} +1 -1
  13. package/packages/safe-bash/dist/chunks/chunk-CI42NIWL.js +21 -0
  14. package/packages/safe-bash/dist/chunks/chunk-CI42NIWL.js.map +7 -0
  15. package/packages/safe-bash/dist/chunks/{chunk-JWUT4LBW.js → chunk-ELK3CQTQ.js} +47 -16
  16. package/packages/safe-bash/dist/chunks/chunk-ELK3CQTQ.js.map +7 -0
  17. package/packages/safe-bash/dist/chunks/{chunk-PY37EOPJ.js → chunk-GZH6ILJC.js} +50 -15
  18. package/packages/safe-bash/dist/chunks/chunk-GZH6ILJC.js.map +7 -0
  19. package/packages/safe-bash/dist/chunks/chunk-LUIEXTN5.js +527 -0
  20. package/packages/safe-bash/dist/chunks/chunk-LUIEXTN5.js.map +7 -0
  21. package/packages/safe-bash/dist/chunks/{chunk-AVXYPKV7.js → chunk-QQHMFJHF.js} +4 -4
  22. package/packages/safe-bash/dist/chunks/{chunk-QY2XHZTE.js → chunk-RDIJ6M2D.js} +3 -3
  23. package/packages/safe-bash/dist/chunks/{chunk-PPVCI2F2.js → chunk-UL4TNDNV.js} +2 -2
  24. package/packages/safe-bash/dist/commands/csplit/index.browser.js +5 -4
  25. package/packages/safe-bash/dist/commands/factor/command.d.ts +4 -0
  26. package/packages/safe-bash/dist/commands/factor/command.d.ts.map +1 -0
  27. package/packages/safe-bash/dist/commands/factor/command.js +121 -0
  28. package/packages/safe-bash/dist/commands/factor/command.js.map +1 -0
  29. package/packages/safe-bash/dist/commands/factor/factor.d.ts +4 -0
  30. package/packages/safe-bash/dist/commands/factor/factor.d.ts.map +1 -0
  31. package/packages/safe-bash/dist/commands/factor/factor.js +54 -0
  32. package/packages/safe-bash/dist/commands/factor/factor.js.map +1 -0
  33. package/packages/safe-bash/dist/commands/factor/index.browser.js +13 -0
  34. package/packages/safe-bash/dist/commands/factor/index.browser.js.map +7 -0
  35. package/packages/safe-bash/dist/commands/factor/index.d.ts +7 -0
  36. package/packages/safe-bash/dist/commands/factor/index.d.ts.map +1 -0
  37. package/packages/safe-bash/dist/commands/factor/index.js +13 -0
  38. package/packages/safe-bash/dist/commands/factor/index.js.map +1 -0
  39. package/packages/safe-bash/dist/commands/factor/internal.d.ts +51 -0
  40. package/packages/safe-bash/dist/commands/factor/internal.d.ts.map +1 -0
  41. package/packages/safe-bash/dist/commands/factor/internal.js +138 -0
  42. package/packages/safe-bash/dist/commands/factor/internal.js.map +1 -0
  43. package/packages/safe-bash/dist/commands/factor/io.d.ts +36 -0
  44. package/packages/safe-bash/dist/commands/factor/io.d.ts.map +1 -0
  45. package/packages/safe-bash/dist/commands/factor/io.js +207 -0
  46. package/packages/safe-bash/dist/commands/factor/io.js.map +1 -0
  47. package/packages/safe-bash/dist/commands/network/index.browser.js +6 -5
  48. package/packages/safe-bash/dist/commands/pr/index.browser.js +4 -3
  49. package/packages/safe-bash/dist/commands/pr/io.d.ts.map +1 -1
  50. package/packages/safe-bash/dist/commands/pr/io.js +46 -11
  51. package/packages/safe-bash/dist/commands/pr/io.js.map +1 -1
  52. package/packages/safe-bash/dist/commands/tsort/index.browser.js +4 -3
  53. package/packages/safe-bash/dist/commands/tsort/io.d.ts.map +1 -1
  54. package/packages/safe-bash/dist/commands/tsort/io.js +43 -12
  55. package/packages/safe-bash/dist/commands/tsort/io.js.map +1 -1
  56. package/packages/safe-bash/dist/commands/xml/index.browser.js +5 -4
  57. package/packages/safe-bash/dist/commands/yq/index.browser.js +6 -5
  58. package/packages/safe-bash/dist/core.browser.js +32 -20
  59. package/packages/safe-bash/dist/core.browser.js.map +2 -2
  60. package/packages/safe-bash/dist/core.d.ts +1 -0
  61. package/packages/safe-bash/dist/core.d.ts.map +1 -1
  62. package/packages/safe-bash/dist/core.js +1 -0
  63. package/packages/safe-bash/dist/core.js.map +1 -1
  64. package/packages/safe-bash/dist/plugins/composition.d.ts +2 -0
  65. package/packages/safe-bash/dist/plugins/composition.d.ts.map +1 -1
  66. package/packages/safe-bash/dist/plugins/composition.js +3 -1
  67. package/packages/safe-bash/dist/plugins/composition.js.map +1 -1
  68. package/packages/safe-bash/dist/chunks/chunk-JWUT4LBW.js.map +0 -7
  69. package/packages/safe-bash/dist/chunks/chunk-PY37EOPJ.js.map +0 -7
  70. /package/packages/safe-bash/dist/chunks/{chunk-UZELUFGF.js.map → chunk-54EWSIBL.js.map} +0 -0
  71. /package/packages/safe-bash/dist/chunks/{chunk-M7KZ7V4P.js.map → chunk-5X2TAR25.js.map} +0 -0
  72. /package/packages/safe-bash/dist/chunks/{chunk-AVXYPKV7.js.map → chunk-QQHMFJHF.js.map} +0 -0
  73. /package/packages/safe-bash/dist/chunks/{chunk-QY2XHZTE.js.map → chunk-RDIJ6M2D.js.map} +0 -0
  74. /package/packages/safe-bash/dist/chunks/{chunk-PPVCI2F2.js.map → chunk-UL4TNDNV.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/commands/pr/index.ts", "../../src/commands/pr/command.ts", "../../src/commands/pr/internal.ts", "../../src/commands/pr/io.ts", "../../src/commands/pr/options.ts", "../../src/commands/pr/format.ts"],
4
+ "sourcesContent": ["import type { CommandDefinition, VirtualShellPlugin } from \"../../contracts/index.js\";\nimport { createPrCommand } from \"./command.js\";\nimport type { PrCommandsOptions } from \"./internal.js\";\n\nexport { createPrCommand } from \"./command.js\";\nexport type { PrCommandsOptions, PrLimits } from \"./internal.js\";\n\nexport function createPrCommands(options: PrCommandsOptions = {}): readonly CommandDefinition[] {\n return [createPrCommand(options)];\n}\n\nexport function prCommands(options: PrCommandsOptions = {}): VirtualShellPlugin {\n const commands = createPrCommands(options);\n return { name: \"pr-commands\", setup(host) {\n for (const command of commands) host.commands.register(command, { replace: options.replace ?? false });\n } };\n}\n", "import { FsError, type CommandDefinition } from \"../../contracts/index.js\";\nimport { createOutputOperation } from \"../../contracts/output.js\";\nimport { publicDiagnosticMessage } from \"../../diagnostics.js\";\nimport { Budget, PrError, fileQuote, quote, settings, type PrCommandsOptions } from \"./internal.js\";\nimport { Lifecycle, Reader, fsDetail } from \"./io.js\";\nimport { parseOptions } from \"./options.js\";\nimport { Formatter } from \"./format.js\";\n\nexport function createPrCommand(options: PrCommandsOptions = {}): CommandDefinition {\n const limits = settings(options);\n return { name: \"pr\", description: \"Paginate files and print balanced or merged columns\", async execute(context) {\n const output = createOutputOperation(context, context.stdout);\n const budget = new Budget(context, limits, output.signal);\n let lifecycle: Lifecycle | undefined;\n let failure: { reason: unknown } | undefined;\n let primary: { reason: unknown } | undefined;\n let exitCode = 0;\n try {\n lifecycle = new Lifecycle(budget, output);\n const parsed = parseOptions(budget.arguments(), budget);\n if (parsed.information) {\n await lifecycle.write(parsed.information === \"version\" ? \"pr (virtual-bash)\\n\" : \"Usage: pr [OPTION]... [FILE]...\\nPaginate or columnate files for printing.\\nOptions: -COLUMNS -h HEADER -l LENGTH -w WIDTH -t -n[SEP[DIGITS]] -m -s[SEP]\\n\");\n } else {\n const ctype = context.env.LC_ALL || context.env.LC_CTYPE || context.env.LANG || \"C\";\n const timeLocale = context.env.LC_ALL || context.env.LC_TIME || context.env.LANG || \"C\";\n for (const locale of [ctype, timeLocale]) if (![\"C\", \"POSIX\", \"C.UTF-8\", \"C.utf8\"].includes(locale)) throw new PrError(`unsupported locale ${quote(locale)}`);\n let sampled: number | undefined;\n const date = (reader: Reader | undefined): string => {\n let milliseconds: number;\n if (reader?.stat) milliseconds = reader.stat.mtimeMs;\n else milliseconds = sampled ??= (options.clock ?? Date.now)();\n const value = new Date(milliseconds);\n if (!Number.isFinite(milliseconds) || Number.isNaN(value.getTime())) throw new PrError(\"invalid header timestamp\");\n const year = String(value.getUTCFullYear()).padStart(4, \"0\");\n const month = String(value.getUTCMonth() + 1).padStart(2, \"0\");\n const day = String(value.getUTCDate()).padStart(2, \"0\");\n const time = `${String(value.getUTCHours()).padStart(2, \"0\")}:${String(value.getUTCMinutes()).padStart(2, \"0\")}`;\n if (context.env.POSIXLY_CORRECT !== undefined && (timeLocale === \"C\" || timeLocale === \"POSIX\")) return `${[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"][value.getUTCMonth()]} ${String(value.getUTCDate()).padStart(2, \" \")} ${time} ${year}`;\n return `${year}-${month}-${day} ${time}`;\n };\n let stdin: Reader | undefined;\n const open = async (name: string): Promise<Reader | undefined> => {\n if (name === \"-\" && stdin) return stdin;\n const reader = new Reader(name, lifecycle!);\n try { await reader.open(); }\n catch (error) {\n if (!(error instanceof FsError)) throw error;\n exitCode = 1;\n if (!parsed.quiet) {\n await lifecycle!.write(`pr: ${fileQuote(name)}: ${fsDetail(error)}\\n`, true);\n }\n return undefined;\n }\n if (name === \"-\") stdin = reader;\n return reader;\n };\n const names = parsed.files.length ? parsed.files : [\"-\"];\n if (!parsed.files.length) parsed.merge = false;\n const groups = parsed.merge ? [names] : names.map(name => [name]);\n for (const group of groups) {\n const formatter = new Formatter({ ...parsed }, lifecycle, group.length);\n const readers: Reader[] = [];\n for (const name of group) { const reader = await open(name); if (reader) readers.push(reader); }\n if (!readers.length) continue;\n const title = parsed.header ?? (parsed.merge || readers[0]!.name === \"-\" ? \"\" : readers[0]!.name);\n await formatter.run(readers, date(parsed.merge ? undefined : readers[0]), title);\n }\n }\n } catch (error) {\n primary = { reason: error };\n failure = { reason: error };\n if (!output.signal.aborted && lifecycle && error instanceof PrError) {\n exitCode = 1;\n try {\n await lifecycle.write(`pr: ${publicDiagnosticMessage(error, context.onInternalError)}\\n`, true);\n if (error.usage) await lifecycle.write(\"Try 'pr --help' for more information.\\n\", true);\n failure = undefined;\n } catch (reporting) { failure = { reason: new AggregateError([error, reporting], \"pr failure reporting failed\") }; }\n }\n }\n try { await output.close(); }\n catch (cleanup) {\n const previous = failure ?? primary;\n failure = { reason: previous ? new AggregateError([previous.reason, cleanup], \"pr execution and cleanup failed\") : cleanup };\n }\n context.signal.throwIfAborted();\n output.signal.throwIfAborted();\n if (failure) throw failure.reason;\n return { exitCode };\n } };\n}\n", "import { getCommandArguments, type CommandContext } from \"../../contracts/index.js\";\nimport { shellValueByteLength, shellValueBytes } from \"../../contracts/value.js\";\nimport { yieldTurn } from \"../../contracts/yield.js\";\nimport { PublicDiagnostic } from \"../../diagnostics.js\";\n\nexport interface PrLimits {\n readonly maxArguments: number;\n readonly maxArgumentBytes: number;\n readonly maxFiles: number;\n readonly maxColumns: number;\n readonly maxPageLines: number;\n readonly maxPageWidth: number;\n readonly maxPages: number;\n readonly maxInputBytes: number;\n readonly maxBufferedBytes: number;\n readonly maxLineBytes: number;\n readonly maxLines: number;\n readonly maxOutputBytes: number;\n readonly maxDiagnosticBytes: number;\n readonly maxWork: number;\n readonly maxEmptyChunks: number;\n}\n\nexport interface PrCommandsOptions {\n readonly replace?: boolean;\n readonly clock?: () => number;\n readonly limits?: Partial<PrLimits>;\n}\n\nexport function settings(options: PrCommandsOptions): PrLimits {\n const limits: PrLimits = {\n maxArguments: 4096, maxArgumentBytes: 65_536, maxFiles: 128, maxColumns: 128,\n maxPageLines: 65_536, maxPageWidth: 65_536, maxPages: 65_536,\n maxInputBytes: 33_554_432, maxBufferedBytes: 16_777_216,\n maxLineBytes: 1_048_576, maxLines: 1_048_576, maxOutputBytes: 67_108_864,\n maxDiagnosticBytes: 65_536, maxWork: 134_217_728, maxEmptyChunks: 4096, ...options.limits,\n };\n for (const [name, value] of Object.entries(limits)) {\n if (!Number.isSafeInteger(value) || value < 1) throw new RangeError(`Invalid pr limit: ${name}`);\n }\n if (options.clock !== undefined && typeof options.clock !== \"function\") throw new TypeError(\"pr clock must be a function\");\n return Object.freeze(limits);\n}\n\nexport class PrError extends PublicDiagnostic {\n constructor(message: string, readonly usage = false) { super(message); }\n}\n\nexport class PrReadError extends PrError {}\n\nexport function raw(value: Uint8Array): string {\n let text = \"\";\n for (const byte of value) text += String.fromCharCode(byte);\n return text;\n}\n\nexport function bytes(value: string): Uint8Array {\n return Uint8Array.from(value, character => character.charCodeAt(0));\n}\n\nexport function pathText(value: string): string {\n try { return new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes(value)); }\n catch { throw new PrError(\"filesystem paths must be valid UTF-8\"); }\n}\n\nexport function quote(value: string): string {\n const escapes: Readonly<Record<string, string>> = { \"\\x07\": \"\\\\a\", \"\\b\": \"\\\\b\", \"\\f\": \"\\\\f\", \"\\n\": \"\\\\n\", \"\\r\": \"\\\\r\", \"\\t\": \"\\\\t\", \"\\v\": \"\\\\v\", \"\\\\\": \"\\\\\\\\\", \"'\": \"\\\\'\" };\n let result = \"'\";\n for (const character of value) {\n const code = character.charCodeAt(0);\n result += escapes[character] ?? (code >= 32 && code < 127 ? character : `\\\\${code.toString(8).padStart(3, \"0\")}`);\n }\n return `${result}'`;\n}\n\nexport function fileQuote(value: string): string {\n let safe = value.length > 0, escaped = false;\n for (const character of value) {\n const code = character.charCodeAt(0);\n if (!(character >= \"a\" && character <= \"z\" || character >= \"A\" && character <= \"Z\" || character >= \"0\" && character <= \"9\" || \"_./-\".includes(character))) safe = false;\n if (code < 32 || code >= 127) escaped = true;\n }\n if (safe) return value;\n if (!escaped) {\n if (value.includes(\"'\") && ![\"$\", \"`\", \"\\\\\", '\"'].some(character => value.includes(character))) return `\"${value}\"`;\n return `'${value.split(\"'\").join(\"'\\\\''\")}'`;\n }\n let result = \"'\", inEscape = false;\n for (const character of value) {\n const code = character.charCodeAt(0);\n if (code < 32 || code >= 127) {\n if (!inEscape) { result += \"'$'\"; inEscape = true; }\n result += quote(character).slice(1, -1);\n } else {\n if (inEscape) { result += \"''\"; inEscape = false; }\n result += character === \"'\" ? \"'\\\\''\" : character;\n }\n }\n return `${result}'`;\n}\n\nexport class Budget {\n private work = 0;\n private checkpoint = 0;\n private retained = 0;\n private input = 0;\n private lines = 0;\n private pages = 0;\n private output = 0;\n private diagnostics = 0;\n constructor(readonly context: CommandContext, readonly limits: PrLimits, readonly signal: AbortSignal) {}\n check(value: number, maximum: number, label: string): void {\n if (!Number.isSafeInteger(value) || value < 0 || value > maximum) throw new PrError(`${label} limit exceeded`);\n }\n charge(amount = 1): void {\n this.signal.throwIfAborted();\n this.work += amount;\n this.check(this.work, this.limits.maxWork, \"work\");\n }\n async checkpointWork(): Promise<void> {\n this.signal.throwIfAborted();\n if (this.work - this.checkpoint >= 4096) {\n this.checkpoint = this.work;\n await yieldTurn(this.signal);\n }\n }\n retain(amount: number): void {\n this.check(this.retained + amount, this.limits.maxBufferedBytes, \"buffered bytes\");\n this.retained += amount;\n }\n admitString(length: number): void {\n this.signal.throwIfAborted();\n this.check(length, this.limits.maxWork - this.work, \"work\");\n this.check(this.retained + length * 2, this.limits.maxBufferedBytes, \"buffered bytes\");\n }\n inputBytes(amount: number): void {\n this.input += amount;\n this.check(this.input, this.limits.maxInputBytes, \"input bytes\");\n }\n line(): void { this.check(++this.lines, this.limits.maxLines, \"input lines\"); }\n page(): void { this.check(++this.pages, this.limits.maxPages, \"pages\"); this.charge(); }\n emitted(amount: number, diagnostic: boolean): void {\n if (diagnostic) {\n this.diagnostics += amount;\n this.check(this.diagnostics, this.limits.maxDiagnosticBytes, \"diagnostic bytes\");\n } else {\n this.output += amount;\n this.check(this.output, this.limits.maxOutputBytes, \"output bytes\");\n }\n if (!diagnostic) this.charge(amount);\n }\n arguments(): string[] {\n this.check(this.context.args.length, this.limits.maxArguments, \"argument count\");\n let total = 0;\n for (const argument of this.context.args) {\n total += argument.length;\n this.check(total, this.limits.maxArgumentBytes, \"argument bytes\");\n for (let offset = 0; offset < argument.length; offset++) {\n const unit = argument.charCodeAt(offset);\n if (unit >= 0xd800 && unit <= 0xdbff) {\n const next = argument.charCodeAt(++offset);\n if (!(next >= 0xdc00 && next <= 0xdfff)) throw new PrError(\"arguments must contain well-formed Unicode\");\n } else if (unit >= 0xdc00 && unit <= 0xdfff) throw new PrError(\"arguments must contain well-formed Unicode\");\n }\n }\n total = 0;\n return getCommandArguments(this.context).values.map(argument => {\n total += shellValueByteLength(argument);\n this.check(total, this.limits.maxArgumentBytes, \"argument bytes\");\n const value = shellValueBytes(argument);\n this.charge(value.length);\n if (value.includes(0)) throw new PrError(\"NUL is not supported in arguments\");\n return raw(value);\n });\n }\n}\n", "import { FsError, resolvePath, type ByteSource, type FileStat } from \"../../contracts/index.js\";\nimport type { OutputOperation } from \"../../contracts/output.js\";\nimport { Budget, PrError, PrReadError, bytes, fileQuote, pathText } from \"./internal.js\";\n\nexport class Lifecycle {\n private readonly pending = new Set<Promise<unknown>>();\n private readonly cleanups: (() => Promise<void>)[] = [];\n private closing: Promise<void> | undefined;\n constructor(readonly budget: Budget, output: OutputOperation) { output.registerCleanup(() => this.close()); }\n cleanup(action: () => Promise<void>): void { this.assertOpen(); this.cleanups.push(action); }\n assertOpen(): void {\n this.budget.signal.throwIfAborted();\n if (this.closing) throw new PrError(\"command is closed\");\n }\n async operation<Value>(action: () => Value | Promise<Value>, diagnostic = false): Promise<Value> {\n this.assertOpen();\n if (!diagnostic) this.budget.charge();\n const pending = Promise.resolve().then(() => { this.assertOpen(); return action(); });\n this.pending.add(pending);\n try { const value = await pending; this.assertOpen(); return value; }\n finally { this.pending.delete(pending); }\n }\n close(): Promise<void> {\n return this.closing ??= Promise.resolve().then(async () => {\n while (this.pending.size) await Promise.allSettled([...this.pending]);\n const failures: unknown[] = [];\n for (const cleanup of this.cleanups) {\n try { await cleanup(); } catch (error) { failures.push(error); }\n }\n if (failures.length === 1) throw failures[0];\n if (failures.length > 1) throw new AggregateError(failures, \"pr cleanup failed\");\n });\n }\n async write(value: string, diagnostic = false): Promise<void> {\n const { budget } = this;\n budget.emitted(value.length, diagnostic);\n await this.operation(async () => {\n if (!diagnostic) budget.retain(value.length * 3);\n try {\n const sink = diagnostic ? budget.context.stderr : budget.context.stdout;\n this.assertOpen();\n const destination = sink.ownedOutput ?? sink;\n this.assertOpen();\n const write = destination.write;\n this.assertOpen();\n await Reflect.apply(write, destination, [bytes(value)]);\n } finally { if (!diagnostic) budget.retain(-value.length * 3); }\n }, diagnostic);\n }\n}\n\nexport class Reader {\n private iterator: AsyncIterator<Uint8Array> | undefined;\n private chunk: Uint8Array = new Uint8Array();\n private offset = 0;\n private pushed = -1;\n private ended = false;\n private empties = 0;\n private length = 0;\n private snapshotBytes = 0;\n private path: string | undefined;\n stat: FileStat | undefined;\n constructor(readonly name: string, readonly lifecycle: Lifecycle) {\n lifecycle.cleanup(async () => {\n try { if (!this.ended) await this.iterator?.return?.(); }\n finally {\n this.iterator = undefined;\n this.releaseSnapshot();\n lifecycle.budget.retain(-this.chunk.length);\n this.chunk = new Uint8Array();\n }\n });\n }\n private readonly releaseSnapshot = (): void => {\n this.lifecycle.budget.retain(-this.snapshotBytes);\n this.snapshotBytes = 0;\n };\n async open(): Promise<void> {\n if (this.name === \"-\") return;\n const { budget } = this.lifecycle;\n this.path = resolvePath(budget.context.cwd, pathText(this.name));\n this.stat = await this.lifecycle.operation(() => {\n const fs = budget.context.fs;\n this.lifecycle.assertOpen();\n const stat = fs.stat;\n this.lifecycle.assertOpen();\n return Reflect.apply(stat, fs, [this.path!, { signal: budget.signal }]);\n });\n if (this.stat.type !== \"file\" && this.stat.type !== \"directory\" && this.stat.type !== \"character\") throw new FsError(\"ENOTSUP\", { path: this.path });\n }\n private async acquire(): Promise<void> {\n const { budget } = this.lifecycle;\n await this.lifecycle.operation(async () => {\n let source: ByteSource;\n let needsAcquisitionCleanup = false;\n if (this.path === undefined) source = budget.context.stdin;\n else {\n const fs = budget.context.fs;\n this.lifecycle.assertOpen();\n const capabilitiesFor = fs.capabilitiesFor;\n this.lifecycle.assertOpen();\n const selected = capabilitiesFor ? await Reflect.apply(capabilitiesFor, fs, [this.path, { signal: budget.signal }]) : undefined;\n this.lifecycle.assertOpen();\n const capabilities = selected ?? fs.capabilities;\n this.lifecycle.assertOpen();\n const readStream = fs.readStream;\n this.lifecycle.assertOpen();\n const streamingRead = readStream && capabilities.streamingRead !== false;\n this.lifecycle.assertOpen();\n if (readStream && streamingRead) {\n source = Reflect.apply(readStream, fs, [this.path, { signal: budget.signal, chunkSize: 16_384 }]);\n needsAcquisitionCleanup = budget.signal.aborted;\n }\n else {\n const maximum = Math.min(budget.limits.maxInputBytes, Math.floor(budget.limits.maxBufferedBytes / 2));\n budget.check(this.stat!.size, maximum, \"buffered input bytes\");\n budget.retain(maximum);\n this.snapshotBytes = maximum;\n const readFile = fs.readFile;\n this.lifecycle.assertOpen();\n const content = await Reflect.apply(readFile, fs, [this.path, { signal: budget.signal, maxBytes: maximum }]);\n if (!(content instanceof Uint8Array)) throw new TypeError(\"pr input requires bytes\");\n budget.check(content.length, maximum, \"buffered input bytes\");\n budget.retain(content.length - maximum);\n this.snapshotBytes = content.length;\n const { releaseSnapshot } = this;\n source = { async *[Symbol.asyncIterator]() { try { yield content; } finally { releaseSnapshot(); } } };\n }\n }\n if (!needsAcquisitionCleanup) this.lifecycle.assertOpen();\n const factory = source[Symbol.asyncIterator];\n if (!needsAcquisitionCleanup) this.lifecycle.assertOpen();\n this.iterator = Reflect.apply(factory, source, []);\n });\n }\n unget(value: number): void { this.pushed = value; }\n async get(): Promise<number> {\n const { budget } = this.lifecycle;\n budget.charge();\n await budget.checkpointWork();\n if (this.stat?.type === \"directory\") throw new PrReadError(`${fileQuote(this.name)}: Is a directory`);\n if (this.pushed >= 0) { const value = this.pushed; this.pushed = -1; return value; }\n while (this.offset === this.chunk.length) {\n if (this.ended) return -1;\n let next: IteratorResult<Uint8Array>;\n try {\n if (!this.iterator) await this.acquire();\n next = await this.lifecycle.operation(() => {\n const iterator = this.iterator!;\n const advance = iterator.next;\n this.lifecycle.assertOpen();\n return Reflect.apply(advance, iterator, []);\n });\n } catch (error) {\n if (error instanceof FsError) throw new PrReadError(`${fileQuote(this.name === \"-\" ? \"standard input\" : this.name)}: ${fsDetail(error)}`);\n throw error;\n }\n budget.retain(-this.chunk.length);\n this.chunk = new Uint8Array();\n this.offset = 0;\n if (next.done) {\n this.ended = true;\n this.iterator = undefined;\n if (this.length > 0) { this.length = 0; budget.line(); }\n return -1;\n }\n if (!(next.value instanceof Uint8Array)) throw new TypeError(\"pr input requires bytes\");\n budget.inputBytes(next.value.length);\n budget.retain(next.value.length);\n this.chunk = Uint8Array.from(next.value);\n if (!this.chunk.length) budget.check(++this.empties, budget.limits.maxEmptyChunks, \"empty input chunks\");\n }\n const value = this.chunk[this.offset++]!;\n if (value === 10 || value === 12) { this.length = 0; budget.line(); }\n else budget.check(++this.length, budget.limits.maxLineBytes, \"input line bytes\");\n return value;\n }\n}\n\nexport function fsDetail(error: FsError): string {\n const details: Partial<Record<FsError[\"code\"], string>> = {\n EACCES: \"Permission denied\", EPERM: \"Operation not permitted\", ENOENT: \"No such file or directory\",\n EISDIR: \"Is a directory\", ENOTDIR: \"Not a directory\", EIO: \"Input/output error\", ELOOP: \"Too many levels of symbolic links\",\n ENAMETOOLONG: \"File name too long\", ENOTSUP: \"Operation not supported\",\n };\n return details[error.code] ?? error.message;\n}\n", "import { Budget, PrError, quote } from \"./internal.js\";\n\nexport interface Options {\n files: string[];\n columns: number;\n explicitColumns: boolean;\n merge: boolean;\n across: boolean;\n length: number;\n width: number;\n header: string | undefined;\n extremities: boolean;\n keepFF: boolean;\n formFeed: boolean;\n numbered: boolean;\n digits: number;\n numberSeparator: string;\n startNumber: number;\n separator: string;\n useSeparator: boolean;\n truncate: boolean;\n join: boolean;\n doubleSpace: boolean;\n margin: number;\n expand: boolean;\n tabify: boolean;\n inputTab: string;\n inputTabWidth: number;\n outputTab: string;\n outputTabWidth: number;\n control: boolean;\n octal: boolean;\n quiet: boolean;\n information: \"help\" | \"version\" | undefined;\n}\n\nfunction digit(value: string): boolean { return value >= \"0\" && value <= \"9\"; }\n\nfunction integer(value: string, minimum: number, label: string): number {\n let offset = 0;\n while (\" \\t\\r\\n\\v\\f\".includes(value[offset] ?? \"!\") && offset < value.length) offset++;\n if (value[offset] === \"+\" || value[offset] === \"-\") offset++;\n const start = offset;\n while (offset < value.length && digit(value[offset]!)) offset++;\n if (offset !== value.length || offset === start) throw new PrError(`${label}: ${quote(value)}`);\n const result = Number(value);\n if (result < minimum || result > 2147483647 || !Number.isSafeInteger(result)) throw new PrError(`${label}: ${quote(value)}: Numerical result out of range`);\n return result;\n}\n\nexport function parseOptions(args: string[], budget: Budget): Options {\n const options: Options = {\n files: [], columns: 1, explicitColumns: false, merge: false, across: false,\n length: 66, width: 72, header: undefined, extremities: true, keepFF: false,\n formFeed: false, numbered: false, digits: 5, numberSeparator: \"\\t\", startNumber: 1,\n separator: \"\", useSeparator: false, truncate: false, join: false, doubleSpace: false,\n margin: 0, expand: false, tabify: false, inputTab: \"\\t\", inputTabWidth: 8,\n outputTab: \"\\t\", outputTabWidth: 8, control: false, octal: false, quiet: false, information: undefined,\n };\n const long: Record<string, string> = {\n columns: \"#\", across: \"a\", \"show-control-chars\": \"c\", \"double-space\": \"d\", \"expand-tabs\": \"e\",\n \"form-feed\": \"f\", header: \"h\", \"output-tabs\": \"i\", \"join-lines\": \"J\", length: \"l\", merge: \"m\",\n \"number-lines\": \"n\", \"first-line-number\": \"N\", indent: \"o\", \"no-file-warnings\": \"r\", separator: \"s\",\n \"sep-string\": \"S\", \"omit-header\": \"t\", \"omit-pagination\": \"T\", \"show-nonprinting\": \"v\", width: \"w\", \"page-width\": \"W\",\n };\n let oldWidth = false, oldSeparator = false, oldOptions = false, stop = false;\n let columnDigits: string | undefined;\n let accumulating = false;\n for (let index = 0; index < args.length; index++) {\n const argument = args[index]!;\n budget.charge(argument.length);\n if (stop) { options.files.push(argument); continue; }\n if (argument === \"--\") { stop = true; continue; }\n if (argument === \"--help\" || argument === \"--version\") {\n options.information = argument === \"--help\" ? \"help\" : \"version\";\n return options;\n }\n if (!argument.startsWith(\"-\") || argument === \"-\") { accumulating = false; options.files.push(argument); continue; }\n const isLong = argument.startsWith(\"--\");\n let switches = argument.slice(1), attached: string | undefined;\n if (isLong) {\n const equal = argument.indexOf(\"=\");\n const name = argument.slice(2, equal < 0 ? undefined : equal);\n const candidates = Object.keys(long).filter(candidate => candidate.startsWith(name));\n if (!Object.hasOwn(long, name) && candidates.length > 1) throw new PrError(`option ${quote(argument)} is ambiguous; possibilities:${candidates.map(candidate => ` '--${candidate}'`).join(\"\")}`, true);\n switches = long[name] ?? (candidates.length === 1 ? long[candidates[0]!] : undefined) ?? \"\";\n if (!switches) throw new PrError(`unrecognized option ${quote(argument)}`, true);\n if (equal >= 0) attached = argument.slice(equal + 1);\n }\n for (let offset = 0; offset < switches.length; offset++) {\n const option = switches[offset]!;\n if (digit(option)) {\n columnDigits = (accumulating ? columnDigits ?? \"\" : \"\") + option;\n accumulating = true;\n continue;\n }\n accumulating = false;\n const required = \"#hlwWNo\".includes(option);\n const optional = \"nseiS\".includes(option);\n let value = attached;\n if (required || optional) {\n if (!isLong && offset + 1 < switches.length) value = switches.slice(offset + 1);\n if (required && value === undefined) {\n value = args[++index];\n if (value === undefined) throw new PrError(isLong ? `option ${quote(argument)} requires an argument` : `option requires an argument -- '${option}'`, true);\n }\n offset = switches.length;\n } else if (attached !== undefined) throw new PrError(`option ${quote(argument.slice(0, argument.indexOf(\"=\")))} doesn't allow an argument`, true);\n switch (option) {\n case \"#\": options.columns = integer(value!, 1, \"invalid number of columns\"); options.explicitColumns = true; columnDigits = undefined; break;\n case \"h\": options.header = value; break;\n case \"l\": options.length = integer(value!, 1, \"'-l PAGE_LENGTH' invalid number of lines\"); break;\n case \"w\": oldWidth = true; oldOptions = true; {\n const width = integer(value!, 1, \"'-w PAGE_WIDTH' invalid number of characters\");\n if (!options.truncate) options.width = width;\n } break;\n case \"W\": oldWidth = false; options.truncate = true; options.width = integer(value!, 1, \"'-W PAGE_WIDTH' invalid number of characters\"); break;\n case \"m\": options.merge = true; break;\n case \"a\": options.across = true; break;\n case \"b\": break;\n case \"d\": options.doubleSpace = true; break;\n case \"f\": case \"F\": options.formFeed = true; break;\n case \"J\": options.join = true; break;\n case \"N\": options.startNumber = integer(value!, -2147483648, \"'-N NUMBER' invalid starting line number\"); break;\n case \"o\": options.margin = integer(value!, 0, \"'-o MARGIN' invalid line offset\"); break;\n case \"r\": options.quiet = true; break;\n case \"s\": oldOptions = true; oldSeparator = true; if (!options.useSeparator && value !== undefined) options.separator = value; break;\n case \"S\": oldSeparator = false; options.useSeparator = true; options.separator = value ?? \"\"; break;\n case \"t\": options.extremities = false; options.keepFF = true; break;\n case \"T\": options.extremities = false; options.keepFF = false; break;\n case \"c\": options.control = true; break;\n case \"v\": options.octal = true; break;\n case \"n\": case \"e\": case \"i\": {\n if (option === \"n\") options.numbered = true;\n if (option === \"e\") options.expand = true;\n if (option === \"i\") options.tabify = true;\n if (value === undefined || !value.length) break;\n let character: string | undefined;\n if (!digit(value[0]!)) { character = value[0]; value = value.slice(1); }\n let count: number | undefined;\n if (value.length) {\n try { count = integer(value, 1, \"invalid number\"); }\n catch { throw new PrError(`'-${option}' extra characters or invalid number in the argument: ${quote(value)}${Number(value) > 2147483647 ? \": Value too large for defined data type\" : \"\"}`, true); }\n }\n if (option === \"n\") { options.numberSeparator = character ?? options.numberSeparator; options.digits = count ?? options.digits; }\n if (option === \"e\") { options.inputTab = character ?? options.inputTab; options.inputTabWidth = count ?? options.inputTabWidth; }\n if (option === \"i\") { options.outputTab = character ?? options.outputTab; options.outputTabWidth = count ?? options.outputTabWidth; }\n break;\n }\n default: throw new PrError(`invalid option -- '${option}'`, true);\n }\n }\n }\n if (columnDigits !== undefined) { options.columns = integer(columnDigits, 1, \"invalid number of columns\"); options.explicitColumns = true; }\n if (options.merge && options.explicitColumns) throw new PrError(\"cannot specify number of columns when printing in parallel\");\n if (options.merge && options.across) throw new PrError(\"cannot specify both printing across and printing in parallel\");\n if (oldOptions) {\n if (oldWidth) {\n if (options.merge || options.explicitColumns) { options.truncate = true; if (oldSeparator) options.useSeparator = true; }\n else options.join = true;\n } else if (!options.useSeparator && oldSeparator && (options.merge || options.explicitColumns)) {\n if (!options.truncate) { options.join = true; if (options.separator.length) options.useSeparator = true; }\n else options.useSeparator = true;\n }\n }\n const { limits } = budget;\n budget.check(options.files.length, limits.maxFiles, \"input files\");\n budget.check(options.merge ? Math.max(1, options.files.length) : options.columns, limits.maxColumns, \"columns\");\n budget.check(options.length, limits.maxPageLines, \"page lines\");\n for (const width of [options.width, options.margin, options.digits, options.inputTabWidth, options.outputTabWidth]) budget.check(width, limits.maxPageWidth, \"page width\");\n return options;\n}\n", "import { Budget, PrError, PrReadError } from \"./internal.js\";\nimport { Lifecycle, Reader } from \"./io.js\";\nimport type { Options } from \"./options.js\";\n\ninterface StoredLine { text: string; end: number }\ninterface Column {\n reader: Reader;\n status: \"open\" | \"held\" | \"feed\" | \"closed\";\n full: boolean;\n numbered: boolean;\n start: number;\n lines: StoredLine[];\n current: number;\n remaining: number;\n}\n\nexport class Formatter {\n private readonly budget: Budget;\n private readonly body: number;\n private readonly columnWidth: number;\n private readonly numberWidth: number;\n private readonly store: boolean;\n private columns: Column[] = [];\n private lineNumber: number;\n private pageNumber = 1;\n private inputPosition = 0;\n private outputPosition = 0;\n private spaces = 0;\n private separators = 0;\n private padding = 0;\n private vertical = false;\n private empty = true;\n private alignEmpty = false;\n private feedOnly = false;\n private printFeed = false;\n private needHeader = false;\n private storing = false;\n private stored = \"\";\n private rendered = \"\";\n private pageRetained = 0;\n\n constructor(private readonly options: Options, private readonly lifecycle: Lifecycle, count: number) {\n this.budget = lifecycle.budget;\n if (options.length <= 10) { options.extremities = false; options.keepFF = true; }\n this.body = Math.floor((options.extremities ? options.length - 10 : options.length) / (options.doubleSpace ? 2 : 1));\n if (this.body < 1) throw new PrError(\"page has no text lines\");\n options.columns = options.merge ? count : options.columns;\n if (options.columns > 1) {\n if (!options.useSeparator) { options.useSeparator = true; options.separator = options.join ? \"\\t\" : \" \"; }\n else if (!options.join && options.separator === \"\\t\") options.separator = \" \";\n options.truncate = true;\n options.tabify = true;\n }\n if (options.join) options.truncate = false;\n this.numberWidth = options.numberSeparator === \"\\t\" ? options.digits + 8 - options.digits % 8 : options.digits + 1;\n this.columnWidth = Math.trunc((options.width - (options.merge && options.numbered ? this.numberWidth : 0) - (options.columns - 1) * options.separator.length) / options.columns);\n if (this.columnWidth < 1) throw new PrError(\"page width too narrow\");\n this.store = options.columns > 1 && !options.merge && !options.across;\n this.lineNumber = options.startNumber;\n lifecycle.cleanup(async () => {\n this.budget.retain(-this.pageRetained - this.rendered.length * 2);\n this.pageRetained = 0;\n this.rendered = \"\";\n this.columns = [];\n });\n }\n\n private append(value: string): void {\n this.budget.charge(value.length);\n this.budget.retain(value.length * 2);\n this.rendered += value;\n }\n private repeat(value: string, count: number, construction = false): string {\n this.budget.admitString(value.length * count);\n if (construction) this.budget.charge(value.length * count);\n return value.repeat(count);\n }\n private async flush(): Promise<void> {\n const text = this.rendered;\n this.rendered = \"\";\n this.budget.retain(-text.length * 2);\n if (text) await this.lifecycle.write(text);\n }\n private white(): void {\n let position = this.outputPosition;\n const goal = position + this.spaces;\n this.budget.check(Math.max(0, this.spaces), this.budget.limits.maxBufferedBytes, \"horizontal padding\");\n while (goal - position > 1) {\n const next = position + this.options.outputTabWidth - position % this.options.outputTabWidth;\n if (next > goal) break;\n this.append(this.options.outputTab);\n position = next;\n }\n if (goal > position) this.append(this.repeat(\" \", goal - position));\n this.outputPosition = goal;\n this.spaces = 0;\n }\n private pad(position: number): void {\n if (this.options.tabify) this.spaces = position - this.outputPosition;\n else {\n if (position > this.outputPosition) this.append(this.repeat(\" \", position - this.outputPosition));\n this.outputPosition = position;\n }\n }\n private separator(): void {\n if (this.separators <= 0) { if (this.spaces > 0) this.white(); return; }\n let offset = 0;\n for (; this.separators > 0; this.separators--) {\n while (offset < this.options.separator.length) {\n const character = this.options.separator[offset++]!;\n if (character === \" \") this.spaces++;\n else { if (this.spaces > 0) this.white(); this.append(character); this.outputPosition++; }\n }\n if (this.spaces > 0) this.white();\n }\n }\n private character(character: string): void {\n if (this.storing) {\n this.budget.charge(character.length);\n this.budget.retain(character.length * 2);\n this.pageRetained += character.length * 2;\n this.stored += character;\n return;\n }\n if (this.options.tabify) {\n if (character === \" \") { this.spaces++; return; }\n if (this.spaces > 0) this.white();\n if (character >= \" \" && character <= \"~\") this.outputPosition++;\n else if (character === \"\\b\") this.outputPosition--;\n }\n this.append(character);\n }\n private number(column: Column): void {\n this.budget.admitString(this.options.digits);\n const text = String(this.lineNumber++).padStart(this.options.digits, \" \").slice(-this.options.digits);\n for (const character of text) this.character(character);\n if (this.columns.length > 1 && this.options.numberSeparator === \"\\t\") {\n for (let count = this.numberWidth - this.options.digits; count > 0; count--) this.character(\" \");\n } else {\n this.character(this.options.numberSeparator);\n if (this.columns.length === 1 && this.options.numberSeparator === \"\\t\") this.outputPosition += this.options.outputTabWidth - this.outputPosition % this.options.outputTabWidth;\n }\n if (this.options.truncate && !this.options.merge) this.inputPosition += this.numberWidth;\n this.budget.charge(column.numbered ? 1 : 0);\n }\n private align(column: Column): void {\n this.padding = column.start;\n if (this.options.separator.length < this.padding) { this.pad(this.padding - this.options.separator.length); this.padding = 0; }\n if (this.options.useSeparator) this.separator();\n if (column.numbered) this.number(column);\n }\n private clump(byte: number): string {\n const character = String.fromCharCode(byte);\n let width: number;\n let text = character;\n if (character === this.options.inputTab || byte === 9) {\n const tab = character === this.options.inputTab ? this.options.inputTabWidth : 8;\n width = tab - this.inputPosition % tab;\n if (this.options.expand) text = this.repeat(\" \", width, true);\n } else if (byte < 32 || byte > 126) {\n if (this.options.octal || this.options.control && byte >= 128) { text = `\\\\${byte.toString(8).padStart(3, \"0\")}`; width = 4; }\n else if (this.options.control) { text = `^${String.fromCharCode(byte ^ 64)}`; width = 2; }\n else width = byte === 8 ? -1 : 0;\n } else width = 1;\n if (width < 0 && this.inputPosition === 0) return \"\";\n this.inputPosition = Math.max(0, this.inputPosition + width);\n return text;\n }\n private close(column: Column): void {\n for (const current of this.options.merge ? [column] : this.columns) {\n current.status = \"closed\";\n if (!current.lines.length) current.remaining = 0;\n }\n }\n private hold(column: Column): void {\n for (const current of this.options.merge ? [column] : this.columns) current.status = this.store ? \"feed\" : \"held\";\n column.remaining = 0;\n }\n private async feed(column: Column): Promise<void> {\n const next = await column.reader.get();\n if (next !== 10) column.reader.unget(next);\n this.hold(column);\n }\n private async rest(column: Column): Promise<void> {\n for (;;) {\n const byte = await column.reader.get();\n if (byte === 10) return;\n if (byte === 12) { await this.feed(column); if (this.options.keepFF) this.printFeed = true; return; }\n if (byte < 0) { this.close(column); return; }\n }\n }\n private header(date: string, name: string): void {\n const { env } = this.budget.context;\n if (![undefined, \"\", \"UTC\", \"UTC0\", \":UTC\", \"GMT\", \"GMT0\"].includes(env.TZ)) throw new PrError(\"only UTC timezones are supported for headers\");\n const ctype = env.LC_ALL || env.LC_CTYPE || env.LANG || \"C\";\n if (ctype === \"C.UTF-8\" || ctype === \"C.utf8\") {\n for (const character of name) if (character.charCodeAt(0) >= 128) throw new PrError(\"non-ASCII headers require the C locale\");\n }\n this.outputPosition = 0;\n this.pad(this.options.margin);\n this.white();\n const width = (text: string): number => {\n this.budget.charge(text.length);\n let result = 0;\n for (const character of text) if (character >= \" \" && character !== \"\\x7f\") result++;\n return result;\n };\n const page = `Page ${this.pageNumber}`;\n const available = Math.max(0, this.options.width - width(date) - width(name) - width(page));\n const left = Math.floor(available / 2);\n this.budget.admitString(5 + this.options.margin + date.length + name.length + page.length + Math.max(1, left) + Math.max(1, available - left));\n this.append(`\\n\\n${this.repeat(\" \", this.options.margin)}${date}${this.repeat(\" \", Math.max(1, left))}${name}${this.repeat(\" \", Math.max(1, available - left))}${page}\\n\\n\\n`);\n this.needHeader = false;\n this.outputPosition = 0;\n }\n private async read(column: Column, date: string, name: string): Promise<void> {\n let byte = await column.reader.get();\n if (byte === 12 && column.full) { byte = await column.reader.get(); if (byte === 10) byte = await column.reader.get(); }\n column.full = false;\n if (byte === 12) {\n await this.feed(column);\n this.feedOnly = true;\n if (this.needHeader && !this.store) { this.vertical = true; this.header(date, name); }\n else if (this.options.keepFF) this.printFeed = true;\n return;\n }\n if (byte < 0) { this.close(column); return; }\n let clump = byte === 10 ? \"\" : this.clump(byte);\n if (this.options.truncate && this.inputPosition > this.columnWidth) { this.inputPosition = 0; await this.rest(column); return; }\n if (!this.storing) {\n this.vertical = true;\n if (this.needHeader && !this.store) this.header(date, name);\n if (this.options.merge && this.alignEmpty) {\n const pending = this.separators;\n this.separators = 0;\n for (let index = 0; index < pending; index++) { this.align(this.columns[index]!); this.separators++; }\n this.padding = column.start;\n this.spaces = this.options.truncate ? this.columnWidth : 0;\n this.alignEmpty = false;\n }\n if (this.options.separator.length < this.padding) { this.pad(this.padding - this.options.separator.length); this.padding = 0; }\n if (this.options.useSeparator) this.separator();\n }\n if (column.numbered) this.number(column);\n this.empty = false;\n if (byte === 10) return;\n for (const character of clump) this.character(character);\n for (;;) {\n byte = await column.reader.get();\n if (byte === 10) return;\n if (byte === 12) { await this.feed(column); if (this.options.keepFF) this.printFeed = true; return; }\n if (byte < 0) { this.close(column); return; }\n const previous = this.inputPosition;\n clump = this.clump(byte);\n if (this.options.truncate && this.inputPosition > this.columnWidth) { this.inputPosition = previous; await this.rest(column); return; }\n for (const character of clump) this.character(character);\n }\n }\n private ready(): boolean {\n return this.columns.some(column => column.status === \"open\" || column.status === \"feed\" || this.store && column.remaining > 0 && column.lines.length > 0);\n }\n private async storePage(date: string, name: string): Promise<void> {\n this.budget.retain(-this.pageRetained);\n this.pageRetained = 0;\n const lines: StoredLine[] = [];\n this.storing = true;\n for (const column of this.columns) { column.lines = []; column.current = 0; }\n try {\n for (const column of this.columns) {\n for (let count = 0; count < this.body && column.status === \"open\"; count++) {\n this.stored = \"\";\n this.inputPosition = 0;\n await this.read(column, date, name);\n if (column.status === \"open\" || this.stored.length) {\n this.budget.retain(32);\n this.pageRetained += 32;\n lines.push({ text: this.stored, end: this.inputPosition });\n }\n }\n }\n } finally { this.storing = false; }\n let start = 0;\n for (let index = 0; index < this.columns.length; index++) {\n const column = this.columns[index]!;\n const count = Math.floor(lines.length / this.columns.length) + (index < lines.length % this.columns.length ? 1 : 0);\n column.lines = lines.slice(start, start + count);\n column.remaining = count;\n start += count;\n }\n }\n private storedLine(column: Column, date: string, name: string): void {\n this.vertical = true;\n if (this.needHeader) this.header(date, name);\n if (column.status === \"feed\") {\n for (const current of this.columns) current.status = \"held\";\n if (this.columns[0]!.remaining <= 0) { if (!this.options.extremities) this.vertical = false; return; }\n }\n const line = column.lines[column.current++];\n if (!line) return;\n if (this.options.separator.length < this.padding) { this.pad(this.padding - this.options.separator.length); this.padding = 0; }\n if (this.options.useSeparator) this.separator();\n for (const character of line.text) this.character(character);\n if (this.spaces === 0) {\n this.outputPosition = column.start + line.end;\n if (column.start - this.options.separator.length === this.options.margin) this.outputPosition -= this.options.separator.length;\n }\n }\n async run(readers: Reader[], date: string, name: string): Promise<void> {\n const count = this.options.merge ? readers.length : this.options.columns;\n for (let index = 0; index < count; index++) {\n const start = index === 0 ? this.options.margin + this.options.separator.length : this.options.truncate\n ? this.options.margin + index * (this.columnWidth + this.options.separator.length) + (this.options.merge && this.options.numbered ? this.numberWidth : 0) : 0;\n this.columns.push({ reader: readers[this.options.merge ? index : 0]!, status: \"open\", full: false,\n numbered: this.options.numbered && (!this.options.merge || index === 0), start,\n lines: [], current: 0, remaining: 0 });\n }\n try { await this.pages(date, name); }\n catch (error) { if (error instanceof PrReadError) await this.flush(); throw error; }\n }\n private async pages(date: string, name: string): Promise<void> {\n for (;;) {\n if (this.store) await this.storePage(date, name);\n else for (const column of this.columns) column.remaining = column.status === \"open\" ? this.body : 0;\n if (!this.ready()) return;\n this.budget.page();\n this.needHeader = this.options.extremities;\n let printed = false;\n let left = this.body * (this.options.doubleSpace ? 2 : 1);\n while (left > 0 && this.ready()) {\n this.outputPosition = 0; this.spaces = 0; this.separators = 0; this.vertical = false; this.alignEmpty = false; this.empty = true;\n for (const column of this.columns) {\n this.budget.charge();\n this.inputPosition = 0;\n if (column.remaining > 0 || column.status === \"feed\") {\n this.feedOnly = false;\n this.padding = column.start;\n if (this.store) this.storedLine(column, date, name);\n else await this.read(column, date, name);\n printed ||= this.vertical;\n column.remaining--;\n if (column.remaining <= 0 && !this.ready()) break;\n if (this.options.merge && column.status !== \"open\") {\n if (this.empty) this.alignEmpty = true;\n else if (column.status === \"closed\" || this.feedOnly) this.align(column);\n }\n } else if (this.options.merge) { if (this.empty) this.alignEmpty = true; else this.align(column); }\n if (this.options.useSeparator) this.separators++;\n }\n if (this.vertical) { this.append(\"\\n\"); left--; }\n if (!this.ready() && !this.options.extremities) { await this.flush(); break; }\n if (this.options.doubleSpace && printed) { this.append(\"\\n\"); left--; }\n await this.flush();\n }\n if (left === 0) for (const column of this.columns) if (column.status === \"open\") column.full = true;\n if (printed && this.options.extremities) this.append(this.options.formFeed ? \"\\f\" : this.repeat(\"\\n\", left + 5));\n else if (this.options.keepFF && this.printFeed) { this.append(\"\\f\"); this.printFeed = false; }\n await this.flush();\n this.pageNumber++;\n for (const column of this.columns) if (column.status === \"held\") column.status = \"open\";\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["value"]
7
+ }