@poe-platform/safe-bash 0.1.539 → 0.1.541

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 (138) hide show
  1. package/dist/safe-bash/chunks/bz2-B2RXT4EX.js +4836 -0
  2. package/dist/safe-bash/chunks/bz2-B2RXT4EX.js.map +7 -0
  3. package/dist/safe-bash/chunks/{chunk-4NMFAR4Z.js → chunk-2KL6W6NB.js} +3 -629
  4. package/dist/safe-bash/chunks/{chunk-4NMFAR4Z.js.map → chunk-2KL6W6NB.js.map} +4 -4
  5. package/dist/safe-bash/chunks/chunk-5VBLSPNM.js +641 -0
  6. package/dist/safe-bash/chunks/chunk-5VBLSPNM.js.map +7 -0
  7. package/dist/safe-bash/chunks/{chunk-LUIEXTN5.js → chunk-66VSWIUC.js} +6 -4
  8. package/dist/safe-bash/chunks/{chunk-LUIEXTN5.js.map → chunk-66VSWIUC.js.map} +1 -1
  9. package/dist/safe-bash/chunks/{chunk-5X2TAR25.js → chunk-6PSMEBVP.js} +6 -4
  10. package/dist/safe-bash/chunks/{chunk-5X2TAR25.js.map → chunk-6PSMEBVP.js.map} +1 -1
  11. package/dist/safe-bash/chunks/{chunk-RDIJ6M2D.js → chunk-AZNI263O.js} +6 -4
  12. package/dist/safe-bash/chunks/{chunk-RDIJ6M2D.js.map → chunk-AZNI263O.js.map} +1 -1
  13. package/dist/safe-bash/chunks/{chunk-CI42NIWL.js → chunk-DPJWEGIX.js} +2 -2
  14. package/dist/safe-bash/chunks/{chunk-GV76QENF.js → chunk-EZLQA6ON.js} +6 -4
  15. package/dist/safe-bash/chunks/{chunk-GV76QENF.js.map → chunk-EZLQA6ON.js.map} +1 -1
  16. package/dist/safe-bash/chunks/{chunk-F4UILGOA.js → chunk-HFEU5SBQ.js} +8 -6
  17. package/dist/safe-bash/chunks/{chunk-F4UILGOA.js.map → chunk-HFEU5SBQ.js.map} +1 -1
  18. package/dist/safe-bash/chunks/{chunk-UL4TNDNV.js → chunk-PZMJ4EC3.js} +5 -3
  19. package/dist/safe-bash/chunks/{chunk-UL4TNDNV.js.map → chunk-PZMJ4EC3.js.map} +1 -1
  20. package/dist/safe-bash/chunks/chunk-R3QJL5HH.js +698 -0
  21. package/dist/safe-bash/chunks/chunk-R3QJL5HH.js.map +7 -0
  22. package/dist/safe-bash/chunks/{chunk-R5ZK7V4W.js → chunk-T5BV7HPD.js} +7 -5
  23. package/dist/safe-bash/chunks/{chunk-R5ZK7V4W.js.map → chunk-T5BV7HPD.js.map} +1 -1
  24. package/dist/safe-bash/chunks/{chunk-RVGX5DQT.js → chunk-TPD45VUZ.js} +15 -11
  25. package/dist/safe-bash/chunks/chunk-TPD45VUZ.js.map +7 -0
  26. package/dist/safe-bash/chunks/{chunk-GZH6ILJC.js → chunk-VNDFKT6F.js} +7 -5
  27. package/dist/safe-bash/chunks/{chunk-GZH6ILJC.js.map → chunk-VNDFKT6F.js.map} +1 -1
  28. package/dist/safe-bash/chunks/{chunk-ELK3CQTQ.js → chunk-WF4P7XKI.js} +7 -5
  29. package/dist/safe-bash/chunks/{chunk-ELK3CQTQ.js.map → chunk-WF4P7XKI.js.map} +1 -1
  30. package/dist/safe-bash/chunks/{chunk-67TENRTW.js → chunk-WODV2DVM.js} +7 -5
  31. package/dist/safe-bash/chunks/{chunk-67TENRTW.js.map → chunk-WODV2DVM.js.map} +1 -1
  32. package/dist/safe-bash/chunks/{chunk-QWCD4HKE.js → chunk-YEJBZLE5.js} +9 -7
  33. package/dist/safe-bash/chunks/{chunk-QWCD4HKE.js.map → chunk-YEJBZLE5.js.map} +1 -1
  34. package/dist/safe-bash/chunks/xz-AVXFDXW4.js +6042 -0
  35. package/dist/safe-bash/chunks/xz-AVXFDXW4.js.map +7 -0
  36. package/dist/safe-bash/chunks/zstd-R6RPHJYO.js +27110 -0
  37. package/dist/safe-bash/chunks/zstd-R6RPHJYO.js.map +7 -0
  38. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts +20 -0
  39. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts.map +1 -0
  40. package/dist/safe-bash/commands/bytes/compression/bounded-codec.js +111 -0
  41. package/dist/safe-bash/commands/bytes/compression/bounded-codec.js.map +1 -0
  42. package/dist/safe-bash/commands/bytes/compression/codec-loader.d.ts +5 -0
  43. package/dist/safe-bash/commands/bytes/compression/codec-loader.d.ts.map +1 -0
  44. package/dist/safe-bash/commands/bytes/compression/codec-loader.js +89 -0
  45. package/dist/safe-bash/commands/bytes/compression/codec-loader.js.map +1 -0
  46. package/dist/safe-bash/commands/bytes/compression/file-operation.d.ts +16 -0
  47. package/dist/safe-bash/commands/bytes/compression/file-operation.d.ts.map +1 -0
  48. package/dist/safe-bash/commands/bytes/compression/file-operation.js +134 -0
  49. package/dist/safe-bash/commands/bytes/compression/file-operation.js.map +1 -0
  50. package/dist/safe-bash/commands/bytes/compression/files.d.ts +1 -1
  51. package/dist/safe-bash/commands/bytes/compression/files.d.ts.map +1 -1
  52. package/dist/safe-bash/commands/bytes/compression/files.js +141 -67
  53. package/dist/safe-bash/commands/bytes/compression/files.js.map +1 -1
  54. package/dist/safe-bash/commands/bytes/compression/index.js +3 -3
  55. package/dist/safe-bash/commands/bytes/compression/index.js.map +1 -1
  56. package/dist/safe-bash/commands/bytes/compression/native/LICENSES.txt +777 -0
  57. package/dist/safe-bash/commands/bytes/compression/native/generated/bz2.d.mts +3 -0
  58. package/dist/safe-bash/commands/bytes/compression/native/generated/bz2.mjs +2 -0
  59. package/dist/safe-bash/commands/bytes/compression/native/generated/xz.d.mts +3 -0
  60. package/dist/safe-bash/commands/bytes/compression/native/generated/xz.mjs +2 -0
  61. package/dist/safe-bash/commands/bytes/compression/native/generated/zstd.d.mts +3 -0
  62. package/dist/safe-bash/commands/bytes/compression/native/generated/zstd.mjs +2 -0
  63. package/dist/safe-bash/commands/bytes/compression/native/sources.json +246 -0
  64. package/dist/safe-bash/commands/bytes/compression/native/types.d.ts +17 -0
  65. package/dist/safe-bash/commands/bytes/compression/native/types.d.ts.map +1 -0
  66. package/dist/safe-bash/commands/bytes/compression/native/types.js +2 -0
  67. package/dist/safe-bash/commands/bytes/compression/native/types.js.map +1 -0
  68. package/dist/safe-bash/commands/bytes/compression/options.d.ts +27 -0
  69. package/dist/safe-bash/commands/bytes/compression/options.d.ts.map +1 -1
  70. package/dist/safe-bash/commands/bytes/compression/options.js +16 -3
  71. package/dist/safe-bash/commands/bytes/compression/options.js.map +1 -1
  72. package/dist/safe-bash/commands/bytes/compression/stream.d.ts.map +1 -1
  73. package/dist/safe-bash/commands/bytes/compression/stream.js +9 -5
  74. package/dist/safe-bash/commands/bytes/compression/stream.js.map +1 -1
  75. package/dist/safe-bash/commands/csplit/index.browser.js +6 -5
  76. package/dist/safe-bash/commands/factor/index.browser.js +4 -3
  77. package/dist/safe-bash/commands/getopt/index.browser.js +4 -3
  78. package/dist/safe-bash/commands/hexdump/command.d.ts +5 -0
  79. package/dist/safe-bash/commands/hexdump/command.d.ts.map +1 -0
  80. package/dist/safe-bash/commands/hexdump/command.js +174 -0
  81. package/dist/safe-bash/commands/hexdump/command.js.map +1 -0
  82. package/dist/safe-bash/commands/hexdump/format.d.ts +2 -0
  83. package/dist/safe-bash/commands/hexdump/format.d.ts.map +1 -0
  84. package/dist/safe-bash/commands/hexdump/format.js +25 -0
  85. package/dist/safe-bash/commands/hexdump/format.js.map +1 -0
  86. package/dist/safe-bash/commands/hexdump/index.browser.js +17 -0
  87. package/dist/safe-bash/commands/hexdump/index.browser.js.map +7 -0
  88. package/dist/safe-bash/commands/hexdump/index.d.ts +7 -0
  89. package/dist/safe-bash/commands/hexdump/index.d.ts.map +1 -0
  90. package/dist/safe-bash/commands/hexdump/index.js +17 -0
  91. package/dist/safe-bash/commands/hexdump/index.js.map +1 -0
  92. package/dist/safe-bash/commands/hexdump/internal.d.ts +52 -0
  93. package/dist/safe-bash/commands/hexdump/internal.d.ts.map +1 -0
  94. package/dist/safe-bash/commands/hexdump/internal.js +150 -0
  95. package/dist/safe-bash/commands/hexdump/internal.js.map +1 -0
  96. package/dist/safe-bash/commands/hexdump/io.d.ts +41 -0
  97. package/dist/safe-bash/commands/hexdump/io.d.ts.map +1 -0
  98. package/dist/safe-bash/commands/hexdump/io.js +288 -0
  99. package/dist/safe-bash/commands/hexdump/io.js.map +1 -0
  100. package/dist/safe-bash/commands/hexdump/options.d.ts +10 -0
  101. package/dist/safe-bash/commands/hexdump/options.d.ts.map +1 -0
  102. package/dist/safe-bash/commands/hexdump/options.js +80 -0
  103. package/dist/safe-bash/commands/hexdump/options.js.map +1 -0
  104. package/dist/safe-bash/commands/network/curl.js +1 -1
  105. package/dist/safe-bash/commands/network/curl.js.map +1 -1
  106. package/dist/safe-bash/commands/network/index.browser.js +7 -6
  107. package/dist/safe-bash/commands/network/output.d.ts.map +1 -1
  108. package/dist/safe-bash/commands/network/output.js +2 -2
  109. package/dist/safe-bash/commands/network/output.js.map +1 -1
  110. package/dist/safe-bash/commands/network/types.d.ts +4 -0
  111. package/dist/safe-bash/commands/network/types.d.ts.map +1 -1
  112. package/dist/safe-bash/commands/network/types.js.map +1 -1
  113. package/dist/safe-bash/commands/pr/index.browser.js +5 -4
  114. package/dist/safe-bash/commands/truncate.d.ts.map +1 -1
  115. package/dist/safe-bash/commands/truncate.js +14 -1
  116. package/dist/safe-bash/commands/truncate.js.map +1 -1
  117. package/dist/safe-bash/commands/tsort/index.browser.js +5 -4
  118. package/dist/safe-bash/commands/xml/index.browser.js +6 -5
  119. package/dist/safe-bash/commands/yq/index.browser.js +7 -6
  120. package/dist/safe-bash/contracts/filesystem.d.ts +1 -1
  121. package/dist/safe-bash/contracts/filesystem.d.ts.map +1 -1
  122. package/dist/safe-bash/contracts/yield.d.ts +1 -0
  123. package/dist/safe-bash/contracts/yield.d.ts.map +1 -1
  124. package/dist/safe-bash/contracts/yield.js +5 -0
  125. package/dist/safe-bash/contracts/yield.js.map +1 -1
  126. package/dist/safe-bash/core.browser.js +597 -163
  127. package/dist/safe-bash/core.browser.js.map +4 -4
  128. package/dist/safe-bash/core.d.ts +1 -0
  129. package/dist/safe-bash/core.d.ts.map +1 -1
  130. package/dist/safe-bash/core.js +1 -0
  131. package/dist/safe-bash/core.js.map +1 -1
  132. package/dist/safe-bash/plugins/composition.d.ts +2 -0
  133. package/dist/safe-bash/plugins/composition.d.ts.map +1 -1
  134. package/dist/safe-bash/plugins/composition.js +3 -1
  135. package/dist/safe-bash/plugins/composition.js.map +1 -1
  136. package/package.json +8 -2
  137. package/dist/safe-bash/chunks/chunk-RVGX5DQT.js.map +0 -7
  138. /package/dist/safe-bash/chunks/{chunk-CI42NIWL.js.map → chunk-DPJWEGIX.js.map} +0 -0
@@ -1,21 +1,23 @@
1
1
  import {
2
2
  interruptible
3
- } from "./chunk-5X2TAR25.js";
3
+ } from "./chunk-6PSMEBVP.js";
4
4
  import {
5
5
  pathOf,
6
6
  writeDiagnostic
7
- } from "./chunk-R5ZK7V4W.js";
7
+ } from "./chunk-T5BV7HPD.js";
8
8
  import {
9
9
  FsError,
10
10
  getCommandArguments,
11
- import_buffer,
12
- init_platform,
13
11
  readBytes,
14
12
  shellValueByteLength,
15
13
  toByteSource,
16
14
  writeBytes,
17
15
  yieldTurn
18
- } from "./chunk-4NMFAR4Z.js";
16
+ } from "./chunk-5VBLSPNM.js";
17
+ import {
18
+ import_buffer,
19
+ init_platform
20
+ } from "./chunk-2KL6W6NB.js";
19
21
 
20
22
  // packages/safe-bash/src/commands/xml/index.ts
21
23
  init_platform();
@@ -521,4 +523,4 @@ export {
521
523
  createXmlCommands,
522
524
  xmlCommands
523
525
  };
524
- //# sourceMappingURL=chunk-F4UILGOA.js.map
526
+ //# sourceMappingURL=chunk-HFEU5SBQ.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/commands/xml/index.ts", "../../src/commands/xml/limits.ts", "../../src/commands/xml/query.ts", "../../src/commands/xml/evaluate.ts"],
4
4
  "sourcesContent": ["import { parseXmlSteps, XmlLimitError } from \"poe-code/safe-fs/core\";\nimport { FsError, getCommandArguments, readBytes, toByteSource, writeBytes, type ByteSource, type CommandContext, type CommandDefinition, type VirtualShellPlugin } from \"../../contracts/index.js\";\nimport { shellValueByteLength } from \"../../contracts/value.js\";\nimport { writeDiagnostic } from \"../../escaping.js\";\nimport { pathOf } from \"../internal.js\";\nimport { interruptible } from \"../structured/limits.js\";\nimport { XmlBudget, XmlQueryError, XmlQueryLimitError, resolveXmlQueryLimits, type XmlCommandsOptions, type XmlQueryLimits } from \"./limits.js\";\nimport { parseQuery, type Query } from \"./query.js\";\nimport { evaluate, serialize, stringValue } from \"./evaluate.js\";\n\nexport { defaultXmlQueryLimits } from \"./limits.js\";\nexport type { XmlCommandsOptions, XmlQueryLimits } from \"./limits.js\";\n\nasync function argumentsFor(context: CommandContext, budget: XmlBudget): Promise<{ query: Query; file: string | undefined }> {\n if (context.args.length > 5) throw new XmlQueryError(\"expected one XML input FILE or -\", 2);\n const carrier = getCommandArguments(context);\n const args = carrier.args;\n async function admitted(position: number, limit: \"maxSourceBytes\" | \"maxInputBytes\"): Promise<string> {\n const text = args[position]!;\n if (text.length > budget.limits[limit]) throw new XmlQueryLimitError(limit);\n const size = shellValueByteLength(carrier.values[position]!);\n if (size > budget.limits[limit]) throw new XmlQueryLimitError(limit);\n for (let offset = 0; offset < size; offset += 1024) await budget.tick(Math.min(1024, size - offset));\n let decoded: string;\n try { decoded = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(carrier.bytes(position)); }\n catch { throw new XmlQueryError(\"XPath and filenames require valid UTF-8\", 2); }\n if (decoded !== text) throw new XmlQueryError(\"XPath and filenames require lossless UTF-8\", 2);\n return decoded;\n }\n let index = 0;\n if (context.command === \"xmllint\") {\n if (args[index++] !== \"--xpath\") throw new XmlQueryError(\"expected --xpath QUERY [FILE|-]\", 2);\n }\n if (args[index] === \"--\") index++;\n const sourceIndex = index++;\n const source = args[sourceIndex];\n if (source === undefined || source.startsWith(\"-\")) throw new XmlQueryError(\"expected QUERY [FILE|-]\", 2);\n if (args[index] === \"--\") index++;\n const fileIndex = index++;\n const file = args[fileIndex];\n if (index < args.length || file !== undefined && file.startsWith(\"-\") && file !== \"-\") throw new XmlQueryError(\"expected one XML input FILE or -\", 2);\n const query = await parseQuery(await admitted(sourceIndex, \"maxSourceBytes\"), budget);\n return { query, file: file === undefined ? undefined : await admitted(fileIndex, \"maxInputBytes\") };\n}\n\nasync function input(context: CommandContext, file: string | undefined, budget: XmlBudget): Promise<string> {\n let source: ByteSource = context.stdin;\n if (file !== undefined && file !== \"-\") {\n const path = pathOf(context, file);\n const capabilities = context.fs.capabilitiesFor\n ? await interruptible(() => context.fs.capabilitiesFor!(path, { signal: context.signal }), context.signal)\n : context.fs.capabilities;\n context.signal.throwIfAborted();\n if (context.fs.readStream && capabilities.streamingRead !== false) source = context.fs.readStream(path, { signal: context.signal });\n else {\n try { source = toByteSource(await interruptible(() => context.fs.readFile(path, { signal: context.signal, maxBytes: budget.limits.maxInputBytes }), context.signal)); }\n catch (error) {\n context.signal.throwIfAborted();\n if (error instanceof FsError && error.code === \"EFBIG\") throw new XmlQueryLimitError(\"maxInputBytes\");\n throw error;\n }\n }\n }\n const parts: string[] = [];\n let size = 0;\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n for await (const chunk of readBytes(source, context.signal)) {\n await budget.tick();\n size += chunk.byteLength;\n if (size > budget.limits.maxInputBytes) throw new XmlQueryLimitError(\"maxInputBytes\");\n // Decode before requesting another chunk; a producer may reuse its backing bytes.\n for (let offset = 0; offset < chunk.length; offset += 4096) {\n await budget.tick(Math.min(4096, chunk.length - offset));\n try { parts.push(decoder.decode(chunk.subarray(offset, offset + 4096), { stream: true })); }\n catch { throw new XmlQueryError(\"XML input must be UTF-8\", 1); }\n }\n }\n try { parts.push(decoder.decode()); }\n catch { throw new XmlQueryError(\"XML input must be UTF-8\", 1); }\n return parts.join(\"\");\n}\n\nasync function execute(context: CommandContext, limits: XmlQueryLimits): Promise<{ exitCode: number }> {\n const budget = new XmlBudget(limits, context.signal);\n let outputFailed = false;\n try {\n const options = await argumentsFor(context, budget);\n const source = await input(context, options.file, budget);\n const parser = parseXmlSteps(source, { ...limits, maxContentNodes: limits.maxNodes, expectedEncoding: \"UTF-8\" });\n let parsed = parser.next();\n try {\n while (!parsed.done) { await budget.tick(parsed.value); parsed = parser.next(); }\n } finally { if (!parsed.done) parser.return(undefined as never); }\n const nodes = await evaluate(options.query, parsed.value, budget);\n async function write(part: string): Promise<void> {\n for (let offset = 0; offset < part.length;) {\n let end = Math.min(offset + 4096, part.length);\n if (end < part.length && part.charCodeAt(end - 1) >= 0xd800 && part.charCodeAt(end - 1) <= 0xdbff) end--;\n await budget.tick(end - offset);\n const slice = part.slice(offset, end);\n const size = Buffer.byteLength(slice);\n if (size > limits.maxOutputBytes - budget.outputBytes) throw new XmlQueryLimitError(\"maxOutputBytes\");\n budget.outputBytes += size;\n try { await writeBytes(context.stdout, Buffer.from(slice), context.signal); }\n catch (error) { outputFailed = true; throw error; }\n offset = end;\n }\n }\n if (options.query.scalar === \"count\") await write(String(nodes.length));\n else if (options.query.scalar === \"boolean\") await write(nodes.length ? \"true\" : \"false\");\n else if (options.query.scalar === \"string\") {\n for await (const part of stringValue(nodes[0], budget)) await write(part);\n } else {\n if (!nodes.length) throw new XmlQueryError(\"XPath set is empty\", 11);\n for (const node of nodes) {\n for await (const part of serialize(node, budget)) await write(part);\n await write(\"\\n\");\n }\n return { exitCode: 0 };\n }\n await write(\"\\n\");\n return { exitCode: 0 };\n } catch (error) {\n context.signal.throwIfAborted();\n if (outputFailed || error instanceof FsError && error.code === \"EPIPE\") throw error;\n const status = error instanceof XmlQueryError ? error.status : error instanceof XmlLimitError ? 5\n : error instanceof SyntaxError || error instanceof FsError ? 1 : undefined;\n if (status === undefined) throw error;\n const message = error instanceof Error ? error.message.slice(0, 1000) : \"XML query failed\";\n await writeDiagnostic(context.stderr, `${context.command}: ${message}\\n`, context.signal);\n return { exitCode: status };\n }\n}\n\nexport function createXmlCommands(options: XmlCommandsOptions = {}): readonly CommandDefinition[] {\n const limits = resolveXmlQueryLimits(options.limits);\n return [\"xq\", \"xmllint\"].map(name => ({ name, execute: context => execute(context, limits) }));\n}\nexport function xmlCommands(options: XmlCommandsOptions = {}): VirtualShellPlugin {\n const definitions = createXmlCommands(options);\n const replace = options.replace ?? false;\n return { name: \"xml-commands\", setup(host) {\n if (!replace) for (const definition of definitions) {\n if (host.commands.has(definition.name)) throw new Error(`Command already registered: ${definition.name}`);\n }\n for (const definition of definitions) host.commands.register(definition, { replace });\n } };\n}\n", "import { yieldTurn } from \"../../contracts/yield.js\";\n\nexport interface XmlQueryLimits {\n readonly maxInputBytes: number;\n readonly maxOutputBytes: number;\n readonly maxSourceBytes: number;\n readonly maxDepth: number;\n readonly maxNodes: number;\n readonly maxAttributes: number;\n readonly maxAttributesPerElement: number;\n readonly maxNamespaces: number;\n readonly maxSteps: number;\n readonly maxResults: number;\n}\nexport interface XmlCommandsOptions {\n readonly replace?: boolean;\n readonly limits?: Partial<XmlQueryLimits>;\n}\nexport const defaultXmlQueryLimits: Readonly<XmlQueryLimits> = Object.freeze({\n maxInputBytes: 8 * 1024 * 1024, maxOutputBytes: 8 * 1024 * 1024,\n maxSourceBytes: 64 * 1024, maxDepth: 64, maxNodes: 100_000,\n maxAttributes: 10_000, maxAttributesPerElement: 128,\n maxNamespaces: 256, maxSteps: 1_000_000, maxResults: 100_000,\n});\nexport class XmlQueryError extends Error {\n constructor(message: string, readonly status: number) { super(message); }\n}\nexport class XmlQueryLimitError extends XmlQueryError {\n constructor(name: keyof XmlQueryLimits) { super(`${name} limit exceeded`, 5); }\n}\nexport function resolveXmlQueryLimits(options: Partial<XmlQueryLimits> = {}): XmlQueryLimits {\n const limits = { ...defaultXmlQueryLimits, ...options };\n for (const [name, value] of Object.entries(limits)) {\n if (!Object.hasOwn(defaultXmlQueryLimits, name) || !Number.isSafeInteger(value) || value < 1) {\n throw new RangeError(`${name} must be a positive safe integer XML limit`);\n }\n }\n if (limits.maxDepth > 256) throw new RangeError(\"maxDepth must be <=256\");\n return Object.freeze(limits);\n}\nexport class XmlBudget {\n private steps = 0;\n private checkpoint = 0;\n outputBytes = 0;\n constructor(readonly limits: XmlQueryLimits, readonly signal: AbortSignal) {}\n async tick(work = 1): Promise<void> {\n this.signal.throwIfAborted();\n this.steps += work;\n if (this.steps > this.limits.maxSteps) throw new XmlQueryLimitError(\"maxSteps\");\n this.checkpoint += work;\n if (this.checkpoint >= 1024) {\n this.checkpoint = 0;\n await yieldTurn(this.signal);\n }\n }\n results(size: number): void {\n if (size > this.limits.maxResults) throw new XmlQueryLimitError(\"maxResults\");\n }\n}\n", "import { XmlBudget, XmlQueryError, XmlQueryLimitError } from \"./limits.js\";\n\nexport type Predicate = { kind: \"position\"; value: number } | { kind: \"attribute\"; name: string; value: string };\nexport interface QueryStep {\n readonly descendant: boolean;\n readonly kind: \"element\" | \"attribute\" | \"text\";\n readonly name: string;\n readonly predicates: readonly Predicate[];\n}\nexport interface Query {\n readonly scalar: \"string\" | \"count\" | \"boolean\" | undefined;\n readonly steps: readonly QueryStep[];\n}\nconst nameStart = (character: string): boolean => character >= \"a\" && character <= \"z\" || character >= \"A\" && character <= \"Z\" || character === \"_\";\nconst namePart = (character: string): boolean => nameStart(character) || character >= \"0\" && character <= \"9\" || character === \"-\" || character === \".\";\n\nexport async function parseQuery(source: string, budget: XmlBudget): Promise<Query> {\n if (source.length > budget.limits.maxSourceBytes || Buffer.byteLength(source) > budget.limits.maxSourceBytes) throw new XmlQueryLimitError(\"maxSourceBytes\");\n // Admit every character before token operations; the grammar itself has no recursion.\n for (let offset = 0; offset < source.length; offset += 256) await budget.tick(Math.min(256, source.length - offset));\n let at = 0;\n const fail = (): never => { throw new XmlQueryError(`unsupported XPath syntax at offset ${at}`, 10); };\n const space = (): void => { while (source[at] === \" \" || source[at] === \"\\t\" || source[at] === \"\\r\" || source[at] === \"\\n\") at++; };\n const expect = (value: string): void => { space(); if (!source.startsWith(value, at)) fail(); at += value.length; };\n const name = (): string => {\n space(); const start = at;\n if (!nameStart(source[at] ?? \"\")) fail();\n while (namePart(source[at] ?? \"\")) at++;\n if (source[at] === \":\") fail();\n return source.slice(start, at);\n };\n space();\n let scalar: Query[\"scalar\"];\n if (source[at] !== \"/\") {\n const value = name();\n if (value !== \"string\" && value !== \"count\" && value !== \"boolean\") fail();\n scalar = value as Query[\"scalar\"];\n expect(\"(\");\n }\n const steps: QueryStep[] = [];\n space();\n while (source[at] === \"/\") {\n at++;\n const descendant = source[at] === \"/\";\n if (descendant) at++;\n space();\n let kind: QueryStep[\"kind\"] = \"element\";\n if (source[at] === \"@\") { kind = \"attribute\"; at++; }\n let selected: string;\n if (source[at] === \"*\") { selected = \"*\"; at++; }\n else {\n selected = name();\n space();\n if (source[at] === \"(\") {\n if (selected !== \"text\" || kind !== \"element\") fail();\n expect(\"(\"); expect(\")\"); kind = \"text\";\n }\n }\n const predicates: Predicate[] = [];\n space();\n while (source[at] === \"[\") {\n at++; space();\n if (source[at] === \"@\") {\n at++; const attribute = name(); expect(\"=\"); space();\n const quote = source[at++];\n if (quote !== \"'\" && quote !== '\"') fail();\n const start = at;\n while (at < source.length && source[at] !== quote) at++;\n if (at === source.length) fail();\n predicates.push({ kind: \"attribute\", name: attribute, value: source.slice(start, at++) });\n } else {\n const start = at;\n while ((source[at] ?? \"\") >= \"0\" && (source[at] ?? \"\") <= \"9\") at++;\n const value = Number(source.slice(start, at));\n if (start === at || !Number.isSafeInteger(value) || value < 1) fail();\n predicates.push({ kind: \"position\", value });\n }\n expect(\"]\"); space();\n }\n steps.push({ descendant, kind, name: selected, predicates });\n if (kind !== \"element\" && source[at] === \"/\") fail();\n await budget.tick();\n }\n if (!steps.length) fail();\n if (scalar !== undefined) expect(\")\");\n space();\n if (at !== source.length) fail();\n return { scalar, steps };\n}\n", "import type { XmlAttribute, XmlContent, XmlElement } from \"poe-code/safe-fs/core\";\nimport type { Query, QueryStep } from \"./query.js\";\nimport { XmlBudget } from \"./limits.js\";\n\ntype Container = { kind: \"document\"; children: Node[] } | ElementNode;\ninterface ElementNode { kind: \"element\"; value: XmlElement; children: Node[]; attributes: AttributeNode[] }\ninterface AttributeNode { kind: \"attribute\"; value: XmlAttribute }\ninterface ContentNode { kind: Exclude<XmlContent[\"kind\"], \"element\">; value: Exclude<XmlContent, XmlElement> }\nexport type Node = Container | AttributeNode | ContentNode;\nconst xmlns = \"http://www.w3.org/2000/xmlns/\";\n\nasync function indexTree(root: XmlElement, budget: XmlBudget): Promise<{ document: Container; order: Node[] }> {\n const document: Container = { kind: \"document\", children: [] };\n const order: Node[] = [document];\n const pending: { parent: Container; content: XmlContent }[] = [{ parent: document, content: root }];\n while (pending.length) {\n await budget.tick();\n const { parent, content } = pending.pop()!;\n if (content.kind === \"element\") {\n const node: ElementNode = { kind: \"element\", value: content, children: [], attributes: [] };\n parent.children.push(node); order.push(node);\n for (const attribute of content.attributes) {\n await budget.tick();\n if (attribute.namespace === xmlns) continue;\n const selected: AttributeNode = { kind: \"attribute\", value: attribute };\n node.attributes.push(selected); order.push(selected);\n }\n for (let index = content.content.length - 1; index >= 0; index--) {\n await budget.tick(); pending.push({ parent: node, content: content.content[index]! });\n }\n } else {\n const node: ContentNode = { kind: content.kind, value: content };\n parent.children.push(node); order.push(node);\n }\n }\n return { document, order };\n}\n\nfunction matches(node: Node, step: QueryStep): boolean {\n if (step.kind === \"text\") return node.kind === \"text\" || node.kind === \"cdata\";\n if (node.kind !== step.kind) return false;\n if (node.kind === \"element\" || node.kind === \"attribute\") {\n return step.name === \"*\" || node.value.namespace === \"\" && node.value.localName === step.name;\n }\n return false;\n}\n\nexport async function evaluate(query: Query, root: XmlElement, budget: XmlBudget): Promise<Node[]> {\n const { document, order } = await indexTree(root, budget);\n let contexts: Node[] = [document];\n for (const step of query.steps) {\n const parents = new Set<Node>();\n const pending = [...contexts];\n while (pending.length) {\n await budget.tick();\n const node = pending.pop()!;\n if (parents.has(node)) continue;\n parents.add(node);\n if (step.descendant && (node.kind === \"document\" || node.kind === \"element\")) {\n for (const child of node.children) { await budget.tick(); pending.push(child); }\n }\n }\n const selected = new Set<Node>();\n for (const parent of parents) {\n await budget.tick();\n const candidates = step.kind === \"attribute\"\n ? parent.kind === \"element\" ? parent.attributes : []\n : parent.kind === \"element\" || parent.kind === \"document\" ? parent.children : [];\n let matched: Node[] = [];\n for (const candidate of candidates) {\n await budget.tick();\n if (matches(candidate, step)) matched.push(candidate);\n }\n for (const predicate of step.predicates) {\n await budget.tick();\n if (predicate.kind === \"position\") matched = matched[predicate.value - 1] ? [matched[predicate.value - 1]!] : [];\n else {\n const filtered: Node[] = [];\n for (const candidate of matched) {\n await budget.tick();\n if (candidate.kind !== \"element\") continue;\n for (const attribute of candidate.attributes) {\n await budget.tick(attribute.value.value.length + 1);\n if (attribute.value.namespace === \"\" && attribute.value.localName === predicate.name && attribute.value.value === predicate.value) {\n filtered.push(candidate); break;\n }\n }\n }\n matched = filtered;\n }\n }\n for (const node of matched) { await budget.tick(); if (!selected.has(node)) { budget.results(selected.size + 1); selected.add(node); } }\n }\n contexts = [];\n for (const node of order) { await budget.tick(); if (selected.has(node)) contexts.push(node); }\n }\n return contexts;\n}\n\nexport async function* stringValue(node: Node | undefined, budget: XmlBudget): AsyncGenerator<string> {\n if (node === undefined) return;\n if (node.kind === \"attribute\") { yield node.value.value; return; }\n const pending: Node[] = [node];\n while (pending.length) {\n await budget.tick();\n const current = pending.pop()!;\n if (current.kind === \"element\" || current.kind === \"document\") {\n for (let index = current.children.length - 1; index >= 0; index--) {\n await budget.tick(); pending.push(current.children[index]!);\n }\n } else if (current.kind === \"text\" || current.kind === \"cdata\") yield current.value.text;\n }\n}\n\nexport async function* serialize(node: Node, budget: XmlBudget): AsyncGenerator<string> {\n if (node.kind === \"attribute\") {\n yield ` ${node.value.name}=\"`; yield* escape(node.value.value, true, budget); yield '\"'; return;\n }\n if (node.kind === \"document\") return;\n const pending: (XmlContent | string)[] = [node.value];\n while (pending.length) {\n await budget.tick();\n const current = pending.pop()!;\n if (typeof current === \"string\") { yield current; continue; }\n if (current.kind === \"element\") {\n yield `<${current.name}`;\n for (const attribute of current.attributes) {\n await budget.tick(); yield ` ${attribute.name}=\"`; yield* escape(attribute.value, true, budget); yield '\"';\n }\n if (!current.content.length) yield \"/>\";\n else {\n yield \">\"; pending.push(`</${current.name}>`);\n for (let index = current.content.length - 1; index >= 0; index--) {\n await budget.tick(); pending.push(current.content[index]!);\n }\n }\n } else if (current.kind === \"text\") yield* escape(current.text, false, budget);\n else if (current.kind === \"cdata\") { yield \"<![CDATA[\"; yield current.text; yield \"]]>\"; }\n else if (current.kind === \"comment\") { yield \"<!--\"; yield current.text; yield \"-->\"; }\n else if (current.kind === \"processing-instruction\") { yield `<?${current.target}`; if (current.text) { yield \" \"; yield current.text; } yield \"?>\"; }\n }\n}\n\nasync function* escape(value: string, attribute: boolean, budget: XmlBudget): AsyncGenerator<string> {\n let part = \"\";\n for (const character of value) {\n await budget.tick();\n part += character === \"&\" ? \"&amp;\" : character === \"<\" ? \"&lt;\" : character === \">\" ? \"&gt;\"\n : attribute && character === '\"' ? \"&quot;\" : attribute && character === \"\\n\" ? \"&#10;\"\n : character === \"\\r\" ? \"&#13;\" : attribute && character === \"\\t\" ? \"&#9;\" : character;\n if (part.length >= 4096) { yield part; part = \"\"; }\n }\n if (part) yield part;\n}\n"],
5
- "mappings": "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",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,SAAS,eAAe,qBAAqB;;;ACA7C;AAkBO,IAAM,wBAAkD,OAAO,OAAO;AAAA,EAC3E,eAAe,IAAI,OAAO;AAAA,EAAM,gBAAgB,IAAI,OAAO;AAAA,EAC3D,gBAAgB,KAAK;AAAA,EAAM,UAAU;AAAA,EAAI,UAAU;AAAA,EACnD,eAAe;AAAA,EAAQ,yBAAyB;AAAA,EAChD,eAAe;AAAA,EAAK,UAAU;AAAA,EAAW,YAAY;AACvD,CAAC;AACM,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACvC,YAAY,SAA0B,QAAgB;AAAE,UAAM,OAAO;AAA/B;AAAA,EAAkC;AAAA,EAAlC;AACxC;AACO,IAAM,qBAAN,cAAiC,cAAc;AAAA,EACpD,YAAY,MAA4B;AAAE,UAAM,GAAG,IAAI,mBAAmB,CAAC;AAAA,EAAG;AAChF;AACO,SAAS,sBAAsB,UAAmC,CAAC,GAAmB;AAC3F,QAAM,SAAS,EAAE,GAAG,uBAAuB,GAAG,QAAQ;AACtD,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAClD,QAAI,CAAC,OAAO,OAAO,uBAAuB,IAAI,KAAK,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG;AAC5F,YAAM,IAAI,WAAW,GAAG,IAAI,4CAA4C;AAAA,IAC1E;AAAA,EACF;AACA,MAAI,OAAO,WAAW,IAAK,OAAM,IAAI,WAAW,wBAAwB;AACxE,SAAO,OAAO,OAAO,MAAM;AAC7B;AACO,IAAM,YAAN,MAAgB;AAAA,EAIrB,YAAqB,QAAiC,QAAqB;AAAtD;AAAiC;AAAA,EAAsB;AAAA,EAAvD;AAAA,EAAiC;AAAA,EAH9C,QAAQ;AAAA,EACR,aAAa;AAAA,EACrB,cAAc;AAAA,EAEd,MAAM,KAAK,OAAO,GAAkB;AAClC,SAAK,OAAO,eAAe;AAC3B,SAAK,SAAS;AACd,QAAI,KAAK,QAAQ,KAAK,OAAO,SAAU,OAAM,IAAI,mBAAmB,UAAU;AAC9E,SAAK,cAAc;AACnB,QAAI,KAAK,cAAc,MAAM;AAC3B,WAAK,aAAa;AAClB,YAAM,UAAU,KAAK,MAAM;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,QAAQ,MAAoB;AAC1B,QAAI,OAAO,KAAK,OAAO,WAAY,OAAM,IAAI,mBAAmB,YAAY;AAAA,EAC9E;AACF;;;AC1DA;AAaA,IAAM,YAAY,CAAC,cAA+B,aAAa,OAAO,aAAa,OAAO,aAAa,OAAO,aAAa,OAAO,cAAc;AAChJ,IAAM,WAAW,CAAC,cAA+B,UAAU,SAAS,KAAK,aAAa,OAAO,aAAa,OAAO,cAAc,OAAO,cAAc;AAEpJ,eAAsB,WAAW,QAAgB,QAAmC;AAClF,MAAI,OAAO,SAAS,OAAO,OAAO,kBAAkB,qBAAO,WAAW,MAAM,IAAI,OAAO,OAAO,eAAgB,OAAM,IAAI,mBAAmB,gBAAgB;AAE3J,WAAS,SAAS,GAAG,SAAS,OAAO,QAAQ,UAAU,IAAK,OAAM,OAAO,KAAK,KAAK,IAAI,KAAK,OAAO,SAAS,MAAM,CAAC;AACnH,MAAI,KAAK;AACT,QAAM,OAAO,MAAa;AAAE,UAAM,IAAI,cAAc,sCAAsC,EAAE,IAAI,EAAE;AAAA,EAAG;AACrG,QAAM,QAAQ,MAAY;AAAE,WAAO,OAAO,EAAE,MAAM,OAAO,OAAO,EAAE,MAAM,OAAQ,OAAO,EAAE,MAAM,QAAQ,OAAO,EAAE,MAAM,KAAM;AAAA,EAAM;AAClI,QAAM,SAAS,CAAC,UAAwB;AAAE,UAAM;AAAG,QAAI,CAAC,OAAO,WAAW,OAAO,EAAE,EAAG,MAAK;AAAG,UAAM,MAAM;AAAA,EAAQ;AAClH,QAAM,OAAO,MAAc;AACzB,UAAM;AAAG,UAAM,QAAQ;AACvB,QAAI,CAAC,UAAU,OAAO,EAAE,KAAK,EAAE,EAAG,MAAK;AACvC,WAAO,SAAS,OAAO,EAAE,KAAK,EAAE,EAAG;AACnC,QAAI,OAAO,EAAE,MAAM,IAAK,MAAK;AAC7B,WAAO,OAAO,MAAM,OAAO,EAAE;AAAA,EAC/B;AACA,QAAM;AACN,MAAI;AACJ,MAAI,OAAO,EAAE,MAAM,KAAK;AACtB,UAAM,QAAQ,KAAK;AACnB,QAAI,UAAU,YAAY,UAAU,WAAW,UAAU,UAAW,MAAK;AACzE,aAAS;AACT,WAAO,GAAG;AAAA,EACZ;AACA,QAAM,QAAqB,CAAC;AAC5B,QAAM;AACN,SAAO,OAAO,EAAE,MAAM,KAAK;AACzB;AACA,UAAM,aAAa,OAAO,EAAE,MAAM;AAClC,QAAI,WAAY;AAChB,UAAM;AACN,QAAI,OAA0B;AAC9B,QAAI,OAAO,EAAE,MAAM,KAAK;AAAE,aAAO;AAAa;AAAA,IAAM;AACpD,QAAI;AACJ,QAAI,OAAO,EAAE,MAAM,KAAK;AAAE,iBAAW;AAAK;AAAA,IAAM,OAC3C;AACH,iBAAW,KAAK;AAChB,YAAM;AACN,UAAI,OAAO,EAAE,MAAM,KAAK;AACtB,YAAI,aAAa,UAAU,SAAS,UAAW,MAAK;AACpD,eAAO,GAAG;AAAG,eAAO,GAAG;AAAG,eAAO;AAAA,MACnC;AAAA,IACF;AACA,UAAM,aAA0B,CAAC;AACjC,UAAM;AACN,WAAO,OAAO,EAAE,MAAM,KAAK;AACzB;AAAM,YAAM;AACZ,UAAI,OAAO,EAAE,MAAM,KAAK;AACtB;AAAM,cAAM,YAAY,KAAK;AAAG,eAAO,GAAG;AAAG,cAAM;AACnD,cAAM,QAAQ,OAAO,IAAI;AACzB,YAAI,UAAU,OAAO,UAAU,IAAK,MAAK;AACzC,cAAM,QAAQ;AACd,eAAO,KAAK,OAAO,UAAU,OAAO,EAAE,MAAM,MAAO;AACnD,YAAI,OAAO,OAAO,OAAQ,MAAK;AAC/B,mBAAW,KAAK,EAAE,MAAM,aAAa,MAAM,WAAW,OAAO,OAAO,MAAM,OAAO,IAAI,EAAE,CAAC;AAAA,MAC1F,OAAO;AACL,cAAM,QAAQ;AACd,gBAAQ,OAAO,EAAE,KAAK,OAAO,QAAQ,OAAO,EAAE,KAAK,OAAO,IAAK;AAC/D,cAAM,QAAQ,OAAO,OAAO,MAAM,OAAO,EAAE,CAAC;AAC5C,YAAI,UAAU,MAAM,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,EAAG,MAAK;AACpE,mBAAW,KAAK,EAAE,MAAM,YAAY,MAAM,CAAC;AAAA,MAC7C;AACA,aAAO,GAAG;AAAG,YAAM;AAAA,IACrB;AACA,UAAM,KAAK,EAAE,YAAY,MAAM,MAAM,UAAU,WAAW,CAAC;AAC3D,QAAI,SAAS,aAAa,OAAO,EAAE,MAAM,IAAK,MAAK;AACnD,UAAM,OAAO,KAAK;AAAA,EACpB;AACA,MAAI,CAAC,MAAM,OAAQ,MAAK;AACxB,MAAI,WAAW,OAAW,QAAO,GAAG;AACpC,QAAM;AACN,MAAI,OAAO,OAAO,OAAQ,MAAK;AAC/B,SAAO,EAAE,QAAQ,MAAM;AACzB;;;ACxFA;AASA,IAAM,QAAQ;AAEd,eAAe,UAAU,MAAkB,QAAoE;AAC7G,QAAM,WAAsB,EAAE,MAAM,YAAY,UAAU,CAAC,EAAE;AAC7D,QAAM,QAAgB,CAAC,QAAQ;AAC/B,QAAM,UAAwD,CAAC,EAAE,QAAQ,UAAU,SAAS,KAAK,CAAC;AAClG,SAAO,QAAQ,QAAQ;AACrB,UAAM,OAAO,KAAK;AAClB,UAAM,EAAE,QAAQ,QAAQ,IAAI,QAAQ,IAAI;AACxC,QAAI,QAAQ,SAAS,WAAW;AAC9B,YAAM,OAAoB,EAAE,MAAM,WAAW,OAAO,SAAS,UAAU,CAAC,GAAG,YAAY,CAAC,EAAE;AAC1F,aAAO,SAAS,KAAK,IAAI;AAAG,YAAM,KAAK,IAAI;AAC3C,iBAAW,aAAa,QAAQ,YAAY;AAC1C,cAAM,OAAO,KAAK;AAClB,YAAI,UAAU,cAAc,MAAO;AACnC,cAAM,WAA0B,EAAE,MAAM,aAAa,OAAO,UAAU;AACtE,aAAK,WAAW,KAAK,QAAQ;AAAG,cAAM,KAAK,QAAQ;AAAA,MACrD;AACA,eAAS,QAAQ,QAAQ,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS;AAChE,cAAM,OAAO,KAAK;AAAG,gBAAQ,KAAK,EAAE,QAAQ,MAAM,SAAS,QAAQ,QAAQ,KAAK,EAAG,CAAC;AAAA,MACtF;AAAA,IACF,OAAO;AACL,YAAM,OAAoB,EAAE,MAAM,QAAQ,MAAM,OAAO,QAAQ;AAC/D,aAAO,SAAS,KAAK,IAAI;AAAG,YAAM,KAAK,IAAI;AAAA,IAC7C;AAAA,EACF;AACA,SAAO,EAAE,UAAU,MAAM;AAC3B;AAEA,SAAS,QAAQ,MAAY,MAA0B;AACrD,MAAI,KAAK,SAAS,OAAQ,QAAO,KAAK,SAAS,UAAU,KAAK,SAAS;AACvE,MAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,MAAI,KAAK,SAAS,aAAa,KAAK,SAAS,aAAa;AACxD,WAAO,KAAK,SAAS,OAAO,KAAK,MAAM,cAAc,MAAM,KAAK,MAAM,cAAc,KAAK;AAAA,EAC3F;AACA,SAAO;AACT;AAEA,eAAsB,SAAS,OAAc,MAAkB,QAAoC;AACjG,QAAM,EAAE,UAAU,MAAM,IAAI,MAAM,UAAU,MAAM,MAAM;AACxD,MAAI,WAAmB,CAAC,QAAQ;AAChC,aAAW,QAAQ,MAAM,OAAO;AAC9B,UAAM,UAAU,oBAAI,IAAU;AAC9B,UAAM,UAAU,CAAC,GAAG,QAAQ;AAC5B,WAAO,QAAQ,QAAQ;AACrB,YAAM,OAAO,KAAK;AAClB,YAAM,OAAO,QAAQ,IAAI;AACzB,UAAI,QAAQ,IAAI,IAAI,EAAG;AACvB,cAAQ,IAAI,IAAI;AAChB,UAAI,KAAK,eAAe,KAAK,SAAS,cAAc,KAAK,SAAS,YAAY;AAC5E,mBAAW,SAAS,KAAK,UAAU;AAAE,gBAAM,OAAO,KAAK;AAAG,kBAAQ,KAAK,KAAK;AAAA,QAAG;AAAA,MACjF;AAAA,IACF;AACA,UAAM,WAAW,oBAAI,IAAU;AAC/B,eAAW,UAAU,SAAS;AAC5B,YAAM,OAAO,KAAK;AAClB,YAAM,aAAa,KAAK,SAAS,cAC7B,OAAO,SAAS,YAAY,OAAO,aAAa,CAAC,IACjD,OAAO,SAAS,aAAa,OAAO,SAAS,aAAa,OAAO,WAAW,CAAC;AACjF,UAAI,UAAkB,CAAC;AACvB,iBAAW,aAAa,YAAY;AAClC,cAAM,OAAO,KAAK;AAClB,YAAI,QAAQ,WAAW,IAAI,EAAG,SAAQ,KAAK,SAAS;AAAA,MACtD;AACA,iBAAW,aAAa,KAAK,YAAY;AACvC,cAAM,OAAO,KAAK;AAClB,YAAI,UAAU,SAAS,WAAY,WAAU,QAAQ,UAAU,QAAQ,CAAC,IAAI,CAAC,QAAQ,UAAU,QAAQ,CAAC,CAAE,IAAI,CAAC;AAAA,aAC1G;AACH,gBAAM,WAAmB,CAAC;AAC1B,qBAAW,aAAa,SAAS;AAC/B,kBAAM,OAAO,KAAK;AAClB,gBAAI,UAAU,SAAS,UAAW;AAClC,uBAAW,aAAa,UAAU,YAAY;AAC5C,oBAAM,OAAO,KAAK,UAAU,MAAM,MAAM,SAAS,CAAC;AAClD,kBAAI,UAAU,MAAM,cAAc,MAAM,UAAU,MAAM,cAAc,UAAU,QAAQ,UAAU,MAAM,UAAU,UAAU,OAAO;AACjI,yBAAS,KAAK,SAAS;AAAG;AAAA,cAC5B;AAAA,YACF;AAAA,UACF;AACA,oBAAU;AAAA,QACZ;AAAA,MACF;AACA,iBAAW,QAAQ,SAAS;AAAE,cAAM,OAAO,KAAK;AAAG,YAAI,CAAC,SAAS,IAAI,IAAI,GAAG;AAAE,iBAAO,QAAQ,SAAS,OAAO,CAAC;AAAG,mBAAS,IAAI,IAAI;AAAA,QAAG;AAAA,MAAE;AAAA,IACzI;AACA,eAAW,CAAC;AACZ,eAAW,QAAQ,OAAO;AAAE,YAAM,OAAO,KAAK;AAAG,UAAI,SAAS,IAAI,IAAI,EAAG,UAAS,KAAK,IAAI;AAAA,IAAG;AAAA,EAChG;AACA,SAAO;AACT;AAEA,gBAAuB,YAAY,MAAwB,QAA2C;AACpG,MAAI,SAAS,OAAW;AACxB,MAAI,KAAK,SAAS,aAAa;AAAE,UAAM,KAAK,MAAM;AAAO;AAAA,EAAQ;AACjE,QAAM,UAAkB,CAAC,IAAI;AAC7B,SAAO,QAAQ,QAAQ;AACrB,UAAM,OAAO,KAAK;AAClB,UAAM,UAAU,QAAQ,IAAI;AAC5B,QAAI,QAAQ,SAAS,aAAa,QAAQ,SAAS,YAAY;AAC7D,eAAS,QAAQ,QAAQ,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS;AACjE,cAAM,OAAO,KAAK;AAAG,gBAAQ,KAAK,QAAQ,SAAS,KAAK,CAAE;AAAA,MAC5D;AAAA,IACF,WAAW,QAAQ,SAAS,UAAU,QAAQ,SAAS,QAAS,OAAM,QAAQ,MAAM;AAAA,EACtF;AACF;AAEA,gBAAuB,UAAU,MAAY,QAA2C;AACtF,MAAI,KAAK,SAAS,aAAa;AAC7B,UAAM,IAAI,KAAK,MAAM,IAAI;AAAM,WAAO,OAAO,KAAK,MAAM,OAAO,MAAM,MAAM;AAAG,UAAM;AAAK;AAAA,EAC3F;AACA,MAAI,KAAK,SAAS,WAAY;AAC9B,QAAM,UAAmC,CAAC,KAAK,KAAK;AACpD,SAAO,QAAQ,QAAQ;AACrB,UAAM,OAAO,KAAK;AAClB,UAAM,UAAU,QAAQ,IAAI;AAC5B,QAAI,OAAO,YAAY,UAAU;AAAE,YAAM;AAAS;AAAA,IAAU;AAC5D,QAAI,QAAQ,SAAS,WAAW;AAC9B,YAAM,IAAI,QAAQ,IAAI;AACtB,iBAAW,aAAa,QAAQ,YAAY;AAC1C,cAAM,OAAO,KAAK;AAAG,cAAM,IAAI,UAAU,IAAI;AAAM,eAAO,OAAO,UAAU,OAAO,MAAM,MAAM;AAAG,cAAM;AAAA,MACzG;AACA,UAAI,CAAC,QAAQ,QAAQ,OAAQ,OAAM;AAAA,WAC9B;AACH,cAAM;AAAK,gBAAQ,KAAK,KAAK,QAAQ,IAAI,GAAG;AAC5C,iBAAS,QAAQ,QAAQ,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS;AAChE,gBAAM,OAAO,KAAK;AAAG,kBAAQ,KAAK,QAAQ,QAAQ,KAAK,CAAE;AAAA,QAC3D;AAAA,MACF;AAAA,IACF,WAAW,QAAQ,SAAS,OAAQ,QAAO,OAAO,QAAQ,MAAM,OAAO,MAAM;AAAA,aACpE,QAAQ,SAAS,SAAS;AAAE,YAAM;AAAa,YAAM,QAAQ;AAAM,YAAM;AAAA,IAAO,WAChF,QAAQ,SAAS,WAAW;AAAE,YAAM;AAAQ,YAAM,QAAQ;AAAM,YAAM;AAAA,IAAO,WAC7E,QAAQ,SAAS,0BAA0B;AAAE,YAAM,KAAK,QAAQ,MAAM;AAAI,UAAI,QAAQ,MAAM;AAAE,cAAM;AAAK,cAAM,QAAQ;AAAA,MAAM;AAAE,YAAM;AAAA,IAAM;AAAA,EACtJ;AACF;AAEA,gBAAgB,OAAO,OAAe,WAAoB,QAA2C;AACnG,MAAI,OAAO;AACX,aAAW,aAAa,OAAO;AAC7B,UAAM,OAAO,KAAK;AAClB,YAAQ,cAAc,MAAM,UAAU,cAAc,MAAM,SAAS,cAAc,MAAM,SACnF,aAAa,cAAc,MAAM,WAAW,aAAa,cAAc,OAAO,UAC5E,cAAc,OAAO,UAAU,aAAa,cAAc,MAAO,SAAS;AAChF,QAAI,KAAK,UAAU,MAAM;AAAE,YAAM;AAAM,aAAO;AAAA,IAAI;AAAA,EACpD;AACA,MAAI,KAAM,OAAM;AAClB;;;AH5IA,eAAe,aAAa,SAAyB,QAAwE;AAC3H,MAAI,QAAQ,KAAK,SAAS,EAAG,OAAM,IAAI,cAAc,oCAAoC,CAAC;AAC1F,QAAM,UAAU,oBAAoB,OAAO;AAC3C,QAAM,OAAO,QAAQ;AACrB,iBAAe,SAAS,UAAkB,OAA4D;AACpG,UAAM,OAAO,KAAK,QAAQ;AAC1B,QAAI,KAAK,SAAS,OAAO,OAAO,KAAK,EAAG,OAAM,IAAI,mBAAmB,KAAK;AAC1E,UAAM,OAAO,qBAAqB,QAAQ,OAAO,QAAQ,CAAE;AAC3D,QAAI,OAAO,OAAO,OAAO,KAAK,EAAG,OAAM,IAAI,mBAAmB,KAAK;AACnE,aAAS,SAAS,GAAG,SAAS,MAAM,UAAU,KAAM,OAAM,OAAO,KAAK,KAAK,IAAI,MAAM,OAAO,MAAM,CAAC;AACnG,QAAI;AACJ,QAAI;AAAE,gBAAU,IAAI,YAAY,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC,EAAE,OAAO,QAAQ,MAAM,QAAQ,CAAC;AAAA,IAAG,QACtG;AAAE,YAAM,IAAI,cAAc,2CAA2C,CAAC;AAAA,IAAG;AAC/E,QAAI,YAAY,KAAM,OAAM,IAAI,cAAc,8CAA8C,CAAC;AAC7F,WAAO;AAAA,EACT;AACA,MAAI,QAAQ;AACZ,MAAI,QAAQ,YAAY,WAAW;AACjC,QAAI,KAAK,OAAO,MAAM,UAAW,OAAM,IAAI,cAAc,mCAAmC,CAAC;AAAA,EAC/F;AACA,MAAI,KAAK,KAAK,MAAM,KAAM;AAC1B,QAAM,cAAc;AACpB,QAAM,SAAS,KAAK,WAAW;AAC/B,MAAI,WAAW,UAAa,OAAO,WAAW,GAAG,EAAG,OAAM,IAAI,cAAc,2BAA2B,CAAC;AACxG,MAAI,KAAK,KAAK,MAAM,KAAM;AAC1B,QAAM,YAAY;AAClB,QAAM,OAAO,KAAK,SAAS;AAC3B,MAAI,QAAQ,KAAK,UAAU,SAAS,UAAa,KAAK,WAAW,GAAG,KAAK,SAAS,IAAK,OAAM,IAAI,cAAc,oCAAoC,CAAC;AACpJ,QAAM,QAAQ,MAAM,WAAW,MAAM,SAAS,aAAa,gBAAgB,GAAG,MAAM;AACpF,SAAO,EAAE,OAAO,MAAM,SAAS,SAAY,SAAY,MAAM,SAAS,WAAW,eAAe,EAAE;AACpG;AAEA,eAAe,MAAM,SAAyB,MAA0B,QAAoC;AAC1G,MAAI,SAAqB,QAAQ;AACjC,MAAI,SAAS,UAAa,SAAS,KAAK;AACtC,UAAM,OAAO,OAAO,SAAS,IAAI;AACjC,UAAM,eAAe,QAAQ,GAAG,kBAC5B,MAAM,cAAc,MAAM,QAAQ,GAAG,gBAAiB,MAAM,EAAE,QAAQ,QAAQ,OAAO,CAAC,GAAG,QAAQ,MAAM,IACvG,QAAQ,GAAG;AACf,YAAQ,OAAO,eAAe;AAC9B,QAAI,QAAQ,GAAG,cAAc,aAAa,kBAAkB,MAAO,UAAS,QAAQ,GAAG,WAAW,MAAM,EAAE,QAAQ,QAAQ,OAAO,CAAC;AAAA,SAC7H;AACH,UAAI;AAAE,iBAAS,aAAa,MAAM,cAAc,MAAM,QAAQ,GAAG,SAAS,MAAM,EAAE,QAAQ,QAAQ,QAAQ,UAAU,OAAO,OAAO,cAAc,CAAC,GAAG,QAAQ,MAAM,CAAC;AAAA,MAAG,SAC/J,OAAO;AACZ,gBAAQ,OAAO,eAAe;AAC9B,YAAI,iBAAiB,WAAW,MAAM,SAAS,QAAS,OAAM,IAAI,mBAAmB,eAAe;AACpG,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAkB,CAAC;AACzB,MAAI,OAAO;AACX,QAAM,UAAU,IAAI,YAAY,SAAS,EAAE,OAAO,KAAK,CAAC;AACxD,mBAAiB,SAAS,UAAU,QAAQ,QAAQ,MAAM,GAAG;AAC3D,UAAM,OAAO,KAAK;AAClB,YAAQ,MAAM;AACd,QAAI,OAAO,OAAO,OAAO,cAAe,OAAM,IAAI,mBAAmB,eAAe;AAEpF,aAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU,MAAM;AAC1D,YAAM,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,SAAS,MAAM,CAAC;AACvD,UAAI;AAAE,cAAM,KAAK,QAAQ,OAAO,MAAM,SAAS,QAAQ,SAAS,IAAI,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAAG,QACrF;AAAE,cAAM,IAAI,cAAc,2BAA2B,CAAC;AAAA,MAAG;AAAA,IACjE;AAAA,EACF;AACA,MAAI;AAAE,UAAM,KAAK,QAAQ,OAAO,CAAC;AAAA,EAAG,QAC9B;AAAE,UAAM,IAAI,cAAc,2BAA2B,CAAC;AAAA,EAAG;AAC/D,SAAO,MAAM,KAAK,EAAE;AACtB;AAEA,eAAe,QAAQ,SAAyB,QAAuD;AACrG,QAAM,SAAS,IAAI,UAAU,QAAQ,QAAQ,MAAM;AACnD,MAAI,eAAe;AACnB,MAAI;AACF,UAAM,UAAU,MAAM,aAAa,SAAS,MAAM;AAClD,UAAM,SAAS,MAAM,MAAM,SAAS,QAAQ,MAAM,MAAM;AACxD,UAAM,SAAS,cAAc,QAAQ,EAAE,GAAG,QAAQ,iBAAiB,OAAO,UAAU,kBAAkB,QAAQ,CAAC;AAC/G,QAAI,SAAS,OAAO,KAAK;AACzB,QAAI;AACF,aAAO,CAAC,OAAO,MAAM;AAAE,cAAM,OAAO,KAAK,OAAO,KAAK;AAAG,iBAAS,OAAO,KAAK;AAAA,MAAG;AAAA,IAClF,UAAE;AAAU,UAAI,CAAC,OAAO,KAAM,QAAO,OAAO,MAAkB;AAAA,IAAG;AACjE,UAAM,QAAQ,MAAM,SAAS,QAAQ,OAAO,OAAO,OAAO,MAAM;AAChE,mBAAe,MAAM,MAA6B;AAChD,eAAS,SAAS,GAAG,SAAS,KAAK,UAAS;AAC1C,YAAI,MAAM,KAAK,IAAI,SAAS,MAAM,KAAK,MAAM;AAC7C,YAAI,MAAM,KAAK,UAAU,KAAK,WAAW,MAAM,CAAC,KAAK,SAAU,KAAK,WAAW,MAAM,CAAC,KAAK,MAAQ;AACnG,cAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,cAAM,QAAQ,KAAK,MAAM,QAAQ,GAAG;AACpC,cAAM,OAAO,qBAAO,WAAW,KAAK;AACpC,YAAI,OAAO,OAAO,iBAAiB,OAAO,YAAa,OAAM,IAAI,mBAAmB,gBAAgB;AACpG,eAAO,eAAe;AACtB,YAAI;AAAE,gBAAM,WAAW,QAAQ,QAAQ,qBAAO,KAAK,KAAK,GAAG,QAAQ,MAAM;AAAA,QAAG,SACrE,OAAO;AAAE,yBAAe;AAAM,gBAAM;AAAA,QAAO;AAClD,iBAAS;AAAA,MACX;AAAA,IACF;AACA,QAAI,QAAQ,MAAM,WAAW,QAAS,OAAM,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,aAC7D,QAAQ,MAAM,WAAW,UAAW,OAAM,MAAM,MAAM,SAAS,SAAS,OAAO;AAAA,aAC/E,QAAQ,MAAM,WAAW,UAAU;AAC1C,uBAAiB,QAAQ,YAAY,MAAM,CAAC,GAAG,MAAM,EAAG,OAAM,MAAM,IAAI;AAAA,IAC1E,OAAO;AACL,UAAI,CAAC,MAAM,OAAQ,OAAM,IAAI,cAAc,sBAAsB,EAAE;AACnE,iBAAW,QAAQ,OAAO;AACxB,yBAAiB,QAAQ,UAAU,MAAM,MAAM,EAAG,OAAM,MAAM,IAAI;AAClE,cAAM,MAAM,IAAI;AAAA,MAClB;AACA,aAAO,EAAE,UAAU,EAAE;AAAA,IACvB;AACA,UAAM,MAAM,IAAI;AAChB,WAAO,EAAE,UAAU,EAAE;AAAA,EACvB,SAAS,OAAO;AACd,YAAQ,OAAO,eAAe;AAC9B,QAAI,gBAAgB,iBAAiB,WAAW,MAAM,SAAS,QAAS,OAAM;AAC9E,UAAM,SAAS,iBAAiB,gBAAgB,MAAM,SAAS,iBAAiB,gBAAgB,IAC5F,iBAAiB,eAAe,iBAAiB,UAAU,IAAI;AACnE,QAAI,WAAW,OAAW,OAAM;AAChC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,QAAQ,MAAM,GAAG,GAAI,IAAI;AACxE,UAAM,gBAAgB,QAAQ,QAAQ,GAAG,QAAQ,OAAO,KAAK,OAAO;AAAA,GAAM,QAAQ,MAAM;AACxF,WAAO,EAAE,UAAU,OAAO;AAAA,EAC5B;AACF;AAEO,SAAS,kBAAkB,UAA8B,CAAC,GAAiC;AAChG,QAAM,SAAS,sBAAsB,QAAQ,MAAM;AACnD,SAAO,CAAC,MAAM,SAAS,EAAE,IAAI,WAAS,EAAE,MAAM,SAAS,aAAW,QAAQ,SAAS,MAAM,EAAE,EAAE;AAC/F;AACO,SAAS,YAAY,UAA8B,CAAC,GAAuB;AAChF,QAAM,cAAc,kBAAkB,OAAO;AAC7C,QAAM,UAAU,QAAQ,WAAW;AACnC,SAAO,EAAE,MAAM,gBAAgB,MAAM,MAAM;AACzC,QAAI,CAAC,QAAS,YAAW,cAAc,aAAa;AAClD,UAAI,KAAK,SAAS,IAAI,WAAW,IAAI,EAAG,OAAM,IAAI,MAAM,+BAA+B,WAAW,IAAI,EAAE;AAAA,IAC1G;AACA,eAAW,cAAc,YAAa,MAAK,SAAS,SAAS,YAAY,EAAE,QAAQ,CAAC;AAAA,EACtF,EAAE;AACJ;",
6
6
  "names": []
7
7
  }
@@ -1,8 +1,10 @@
1
1
  import {
2
- init_platform,
3
2
  outputFailure,
4
3
  writeBytes
5
- } from "./chunk-4NMFAR4Z.js";
4
+ } from "./chunk-5VBLSPNM.js";
5
+ import {
6
+ init_platform
7
+ } from "./chunk-2KL6W6NB.js";
6
8
 
7
9
  // packages/safe-bash/src/contracts/output.ts
8
10
  init_platform();
@@ -133,4 +135,4 @@ function createOutputOperation(context, destination) {
133
135
  export {
134
136
  createOutputOperation
135
137
  };
136
- //# sourceMappingURL=chunk-UL4TNDNV.js.map
138
+ //# sourceMappingURL=chunk-PZMJ4EC3.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/contracts/output.ts"],
4
4
  "sourcesContent": ["import type { CommandContext, InvocationCleanup } from \"./command.js\";\nimport { outputFailure, writeBytes, type ByteSink } from \"./io.js\";\n\nexport interface OutputOperation {\n readonly signal: AbortSignal;\n readonly output: ByteSink;\n child(destination: ByteSink): OutputOperation;\n registerCleanup(cleanup: InvocationCleanup): void;\n acquire<Value>(start: (signal: AbortSignal) => Value | Promise<Value>, release: (resource: Value) => void | Promise<void>): Promise<Value>;\n close(): Promise<void>;\n abort(reason: unknown): Promise<void>;\n}\n\nexport function createOutputOperation(context: Pick<CommandContext, \"signal\" | \"registerCleanup\">, destination: ByteSink): OutputOperation {\n const controller = new AbortController();\n const signal = controller.signal;\n const capability = destination.ownedOutput;\n const callbacks: InvocationCleanup[] = [];\n const children: OutputOperation[] = [];\n const closedReason = new Error(\"Output operation is closed\");\n let accepting = true;\n let drain: Promise<void> | undefined;\n const assertOpen = (): void => {\n context.signal.throwIfAborted();\n signal.throwIfAborted();\n if (!accepting) throw closedReason;\n };\n const close = (): Promise<void> => {\n if (drain) return drain;\n accepting = false;\n drain = Promise.resolve().then(async () => {\n try {\n const results = await Promise.allSettled(callbacks.map(async cleanup => cleanup()));\n const failures = results.filter(result => result.status === \"rejected\").map(result => result.reason);\n if (failures.length === 1) throw failures[0];\n if (failures.length) throw new AggregateError(failures, \"Output operation cleanup failed\");\n } finally {\n context.signal.removeEventListener(\"abort\", callerAbort);\n capability?.consumerClosed.removeEventListener(\"abort\", outputAbort);\n }\n });\n void drain.catch(() => {});\n for (const child of children) void child.close().catch(() => {});\n return drain;\n };\n const abort = (reason: unknown): void => {\n controller.abort(reason);\n void close().catch(() => {});\n };\n const callerAbort = (): void => abort(context.signal.reason);\n const outputAbort = (): void => abort(capability?.consumerClosed.reason);\n const registerCleanup = (cleanup: InvocationCleanup): void => {\n assertOpen();\n if (typeof cleanup !== \"function\") throw new TypeError(\"Cleanup must be callable\");\n callbacks.push(cleanup);\n };\n const wait = <Value>(pending: Promise<Value>): Promise<Value> => new Promise((resolve, reject) => {\n const aborted = (): void => reject(signal.reason);\n if (signal.aborted) aborted();\n else signal.addEventListener(\"abort\", aborted, { once: true });\n pending.then(value => {\n signal.removeEventListener(\"abort\", aborted);\n resolve(value);\n }, error => {\n signal.removeEventListener(\"abort\", aborted);\n reject(error);\n });\n });\n context.registerCleanup?.(close);\n if (context.signal.aborted) callerAbort();\n else if (capability?.consumerClosed.aborted) outputAbort();\n else {\n context.signal.addEventListener(\"abort\", callerAbort, { once: true });\n capability?.consumerClosed.addEventListener(\"abort\", outputAbort, { once: true });\n }\n return {\n signal,\n output: {\n ...(destination[outputFailure] ? { [outputFailure]: destination[outputFailure] } : {}),\n async write(chunk) {\n assertOpen();\n await writeBytes(capability ?? destination, chunk, signal);\n },\n },\n registerCleanup,\n child(destination) {\n assertOpen();\n const child = createOutputOperation({ signal, registerCleanup }, destination);\n children.push(child);\n return child;\n },\n async acquire<Value>(start: (signal: AbortSignal) => Value | Promise<Value>, release: (resource: Value) => void | Promise<void>) {\n assertOpen();\n let resource: { value: Value } | undefined;\n let settled!: () => void;\n const admitted = new Promise<void>(resolve => { settled = resolve; });\n let released: Promise<void> | undefined;\n const dispose = (): Promise<void> => {\n released ??= admitted.then(async () => { if (resource) await release(resource.value); });\n return released;\n };\n registerCleanup(dispose);\n let acquisition: Promise<Value>;\n try { acquisition = Promise.resolve(start(signal)); }\n catch (error) { acquisition = Promise.reject(error); }\n const pending = acquisition.then(async value => {\n resource = { value };\n settled();\n if (!accepting) {\n await dispose();\n throw signal.aborted ? signal.reason : closedReason;\n }\n return value;\n }, error => {\n settled();\n throw error;\n });\n return wait(pending);\n },\n close,\n abort(reason) {\n abort(reason);\n return close();\n },\n };\n}\n"],
5
- "mappings": "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",
5
+ "mappings": ";;;;;;;;;AAAA;AAaO,SAAS,sBAAsB,SAA6D,aAAwC;AACzI,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,SAAS,WAAW;AAC1B,QAAM,aAAa,YAAY;AAC/B,QAAM,YAAiC,CAAC;AACxC,QAAM,WAA8B,CAAC;AACrC,QAAM,eAAe,IAAI,MAAM,4BAA4B;AAC3D,MAAI,YAAY;AAChB,MAAI;AACJ,QAAM,aAAa,MAAY;AAC7B,YAAQ,OAAO,eAAe;AAC9B,WAAO,eAAe;AACtB,QAAI,CAAC,UAAW,OAAM;AAAA,EACxB;AACA,QAAM,QAAQ,MAAqB;AACjC,QAAI,MAAO,QAAO;AAClB,gBAAY;AACZ,YAAQ,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACzC,UAAI;AACF,cAAM,UAAU,MAAM,QAAQ,WAAW,UAAU,IAAI,OAAM,YAAW,QAAQ,CAAC,CAAC;AAClF,cAAM,WAAW,QAAQ,OAAO,YAAU,OAAO,WAAW,UAAU,EAAE,IAAI,YAAU,OAAO,MAAM;AACnG,YAAI,SAAS,WAAW,EAAG,OAAM,SAAS,CAAC;AAC3C,YAAI,SAAS,OAAQ,OAAM,IAAI,eAAe,UAAU,iCAAiC;AAAA,MAC3F,UAAE;AACA,gBAAQ,OAAO,oBAAoB,SAAS,WAAW;AACvD,oBAAY,eAAe,oBAAoB,SAAS,WAAW;AAAA,MACrE;AAAA,IACF,CAAC;AACD,SAAK,MAAM,MAAM,MAAM;AAAA,IAAC,CAAC;AACzB,eAAW,SAAS,SAAU,MAAK,MAAM,MAAM,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAC/D,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,CAAC,WAA0B;AACvC,eAAW,MAAM,MAAM;AACvB,SAAK,MAAM,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EAC7B;AACA,QAAM,cAAc,MAAY,MAAM,QAAQ,OAAO,MAAM;AAC3D,QAAM,cAAc,MAAY,MAAM,YAAY,eAAe,MAAM;AACvE,QAAM,kBAAkB,CAAC,YAAqC;AAC5D,eAAW;AACX,QAAI,OAAO,YAAY,WAAY,OAAM,IAAI,UAAU,0BAA0B;AACjF,cAAU,KAAK,OAAO;AAAA,EACxB;AACA,QAAM,OAAO,CAAQ,YAA4C,IAAI,QAAQ,CAAC,SAAS,WAAW;AAChG,UAAM,UAAU,MAAY,OAAO,OAAO,MAAM;AAChD,QAAI,OAAO,QAAS,SAAQ;AAAA,QACvB,QAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAC7D,YAAQ,KAAK,WAAS;AACpB,aAAO,oBAAoB,SAAS,OAAO;AAC3C,cAAQ,KAAK;AAAA,IACf,GAAG,WAAS;AACV,aAAO,oBAAoB,SAAS,OAAO;AAC3C,aAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AACD,UAAQ,kBAAkB,KAAK;AAC/B,MAAI,QAAQ,OAAO,QAAS,aAAY;AAAA,WAC/B,YAAY,eAAe,QAAS,aAAY;AAAA,OACpD;AACH,YAAQ,OAAO,iBAAiB,SAAS,aAAa,EAAE,MAAM,KAAK,CAAC;AACpE,gBAAY,eAAe,iBAAiB,SAAS,aAAa,EAAE,MAAM,KAAK,CAAC;AAAA,EAClF;AACA,SAAO;AAAA,IACL;AAAA,IACA,QAAQ;AAAA,MACN,GAAI,YAAY,aAAa,IAAI,EAAE,CAAC,aAAa,GAAG,YAAY,aAAa,EAAE,IAAI,CAAC;AAAA,MACpF,MAAM,MAAM,OAAO;AACjB,mBAAW;AACX,cAAM,WAAW,cAAc,aAAa,OAAO,MAAM;AAAA,MAC3D;AAAA,IACF;AAAA,IACA;AAAA,IACA,MAAMA,cAAa;AACjB,iBAAW;AACX,YAAM,QAAQ,sBAAsB,EAAE,QAAQ,gBAAgB,GAAGA,YAAW;AAC5E,eAAS,KAAK,KAAK;AACnB,aAAO;AAAA,IACT;AAAA,IACA,MAAM,QAAe,OAAwD,SAAoD;AAC/H,iBAAW;AACX,UAAI;AACJ,UAAI;AACJ,YAAM,WAAW,IAAI,QAAc,aAAW;AAAE,kBAAU;AAAA,MAAS,CAAC;AACpE,UAAI;AACJ,YAAM,UAAU,MAAqB;AACnC,qBAAa,SAAS,KAAK,YAAY;AAAE,cAAI,SAAU,OAAM,QAAQ,SAAS,KAAK;AAAA,QAAG,CAAC;AACvF,eAAO;AAAA,MACT;AACA,sBAAgB,OAAO;AACvB,UAAI;AACJ,UAAI;AAAE,sBAAc,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAAA,MAAG,SAC7C,OAAO;AAAE,sBAAc,QAAQ,OAAO,KAAK;AAAA,MAAG;AACrD,YAAM,UAAU,YAAY,KAAK,OAAM,UAAS;AAC9C,mBAAW,EAAE,MAAM;AACnB,gBAAQ;AACR,YAAI,CAAC,WAAW;AACd,gBAAM,QAAQ;AACd,gBAAM,OAAO,UAAU,OAAO,SAAS;AAAA,QACzC;AACA,eAAO;AAAA,MACT,GAAG,WAAS;AACV,gBAAQ;AACR,cAAM;AAAA,MACR,CAAC;AACD,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA,IACA;AAAA,IACA,MAAM,QAAQ;AACZ,YAAM,MAAM;AACZ,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AACF;",
6
6
  "names": ["destination"]
7
7
  }