@poe-platform/safe-bash 0.1.726 → 0.1.727

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 (207) hide show
  1. package/dist/safe-bash/chunks/{chunk-6VZX7ESE.js → chunk-26N7BLXE.js} +3 -3
  2. package/dist/safe-bash/chunks/{chunk-ZZ7JQBPX.js → chunk-4A2OLEML.js} +2 -2
  3. package/dist/safe-bash/chunks/{chunk-LTREB3HX.js → chunk-54MC6XF5.js} +4 -4
  4. package/dist/safe-bash/chunks/{chunk-Z3CCN6Y2.js → chunk-6J5FUESH.js} +2 -2
  5. package/dist/safe-bash/chunks/{chunk-YR5RZBWS.js → chunk-6TBFZ5JE.js} +2 -2
  6. package/dist/safe-bash/chunks/{chunk-6HJNJ625.js → chunk-7MMYQG3P.js} +2 -2
  7. package/dist/safe-bash/chunks/{chunk-WTZZX4LV.js → chunk-A4MB2KXV.js} +2 -2
  8. package/dist/safe-bash/chunks/{chunk-EM2JW7ZH.js → chunk-ATYJKRBZ.js} +2 -2
  9. package/dist/safe-bash/chunks/{chunk-VV24PRPB.js → chunk-AZQOEGP3.js} +1050 -101
  10. package/dist/safe-bash/chunks/chunk-AZQOEGP3.js.map +7 -0
  11. package/dist/safe-bash/chunks/{chunk-EFMXWUYE.js → chunk-B6JEJ6AT.js} +2 -2
  12. package/dist/safe-bash/chunks/{chunk-JFGGQUYP.js → chunk-BFXGHT3R.js} +2 -2
  13. package/dist/safe-bash/chunks/{chunk-RP5IZOOR.js → chunk-BJYV5J65.js} +1050 -101
  14. package/dist/safe-bash/chunks/chunk-BJYV5J65.js.map +7 -0
  15. package/dist/safe-bash/chunks/{chunk-HNHOPD3P.js → chunk-DIEFWGXO.js} +46 -26
  16. package/dist/safe-bash/chunks/{chunk-HNHOPD3P.js.map → chunk-DIEFWGXO.js.map} +2 -2
  17. package/dist/safe-bash/chunks/{chunk-SME47P4B.js → chunk-DV6EZOKM.js} +46 -26
  18. package/dist/safe-bash/chunks/{chunk-SME47P4B.js.map → chunk-DV6EZOKM.js.map} +2 -2
  19. package/dist/safe-bash/chunks/{chunk-646RTREQ.js → chunk-EEDOYIPC.js} +2 -2
  20. package/dist/safe-bash/chunks/{chunk-OFAAHWL5.js → chunk-GCQ5A2T2.js} +2 -2
  21. package/dist/safe-bash/chunks/{chunk-MJW4KSKV.js → chunk-GLPJEDLY.js} +2 -2
  22. package/dist/safe-bash/chunks/{chunk-FOOJWH7J.js → chunk-GO5OKPBO.js} +4 -4
  23. package/dist/safe-bash/chunks/{chunk-5JANWFJ3.js → chunk-GWYXCCGO.js} +4 -4
  24. package/dist/safe-bash/chunks/{chunk-DPHRNHPT.js → chunk-H6KJ4L22.js} +2 -2
  25. package/dist/safe-bash/chunks/{chunk-FLX2BZBF.js → chunk-HGBYIDAK.js} +4 -4
  26. package/dist/safe-bash/chunks/{chunk-VGJIDLZM.js → chunk-KS5VSJYM.js} +15 -8
  27. package/dist/safe-bash/chunks/chunk-KS5VSJYM.js.map +7 -0
  28. package/dist/safe-bash/chunks/{chunk-PO3Z7W3A.js → chunk-MUHYGUFD.js} +4 -4
  29. package/dist/safe-bash/chunks/{chunk-5DLGYPGJ.js → chunk-PDSTXORC.js} +126 -58
  30. package/dist/safe-bash/chunks/chunk-PDSTXORC.js.map +7 -0
  31. package/dist/safe-bash/chunks/{chunk-TIHMU25L.js → chunk-PQ37GDJF.js} +3 -3
  32. package/dist/safe-bash/chunks/{chunk-OTM5RCWZ.js → chunk-QNEDWYC2.js} +15 -8
  33. package/dist/safe-bash/chunks/chunk-QNEDWYC2.js.map +7 -0
  34. package/dist/safe-bash/chunks/{chunk-LZ7FUN6K.js → chunk-RHHDOA67.js} +5 -5
  35. package/dist/safe-bash/chunks/{chunk-DSCL3VA2.js → chunk-SJ3B26XV.js} +4 -4
  36. package/dist/safe-bash/chunks/{chunk-6JBTVWHH.js → chunk-SWACYEIT.js} +5 -5
  37. package/dist/safe-bash/chunks/{chunk-7UJW7TYR.js → chunk-TD6NWAUK.js} +126 -58
  38. package/dist/safe-bash/chunks/chunk-TD6NWAUK.js.map +7 -0
  39. package/dist/safe-bash/chunks/{chunk-Q4I754TV.js → chunk-THOBFD5C.js} +2 -2
  40. package/dist/safe-bash/chunks/{chunk-XELW5O3R.js → chunk-U2STHT7S.js} +2 -2
  41. package/dist/safe-bash/chunks/{chunk-5X4SOSTT.js → chunk-UJHE5PTK.js} +2 -2
  42. package/dist/safe-bash/chunks/{chunk-B6YFFKYG.js → chunk-X4I3RHTC.js} +5 -1
  43. package/dist/safe-bash/chunks/chunk-X4I3RHTC.js.map +7 -0
  44. package/dist/safe-bash/chunks/{chunk-YOK5UHA7.js → chunk-XKXFX3RH.js} +5 -1
  45. package/dist/safe-bash/chunks/chunk-XKXFX3RH.js.map +7 -0
  46. package/dist/safe-bash/chunks/{chunk-PLCYP2E5.js → chunk-XV4K3UUF.js} +2 -2
  47. package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
  48. package/dist/safe-bash/commands/factor/index.browser.js +2 -2
  49. package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
  50. package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
  51. package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
  52. package/dist/safe-bash/commands/internal.d.ts.map +1 -1
  53. package/dist/safe-bash/commands/internal.js +4 -3
  54. package/dist/safe-bash/commands/internal.js.map +1 -1
  55. package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
  56. package/dist/safe-bash/commands/llm/index.browser.js +4 -4
  57. package/dist/safe-bash/commands/network/index.browser.js +4 -4
  58. package/dist/safe-bash/commands/node/index.browser.js +4 -4
  59. package/dist/safe-bash/commands/pandoc/index.js.map +1 -1
  60. package/dist/safe-bash/commands/pr/index.browser.js +3 -3
  61. package/dist/safe-bash/commands/python/index.browser.js +2 -2
  62. package/dist/safe-bash/commands/record-buffer.d.ts.map +1 -1
  63. package/dist/safe-bash/commands/record-buffer.js +12 -4
  64. package/dist/safe-bash/commands/record-buffer.js.map +1 -1
  65. package/dist/safe-bash/commands/regex-execution/bounded-provider.d.ts.map +1 -1
  66. package/dist/safe-bash/commands/regex-execution/bounded-provider.js +75 -8
  67. package/dist/safe-bash/commands/regex-execution/bounded-provider.js.map +1 -1
  68. package/dist/safe-bash/commands/regex-execution/ere/limits.d.ts +1 -1
  69. package/dist/safe-bash/commands/regex-execution/ere/limits.d.ts.map +1 -1
  70. package/dist/safe-bash/commands/regex-execution/ere/limits.js +6 -4
  71. package/dist/safe-bash/commands/regex-execution/ere/limits.js.map +1 -1
  72. package/dist/safe-bash/commands/regex-execution/portable.d.ts.map +1 -1
  73. package/dist/safe-bash/commands/regex-execution/portable.js +7 -2
  74. package/dist/safe-bash/commands/regex-execution/portable.js.map +1 -1
  75. package/dist/safe-bash/commands/regex-execution/protocol.d.ts +2 -0
  76. package/dist/safe-bash/commands/regex-execution/protocol.d.ts.map +1 -1
  77. package/dist/safe-bash/commands/regex-execution/protocol.js +26 -0
  78. package/dist/safe-bash/commands/regex-execution/protocol.js.map +1 -1
  79. package/dist/safe-bash/commands/regex-execution/utf8.d.ts +1 -1
  80. package/dist/safe-bash/commands/regex-execution/utf8.d.ts.map +1 -1
  81. package/dist/safe-bash/commands/regex-execution/utf8.js +26 -2
  82. package/dist/safe-bash/commands/regex-execution/utf8.js.map +1 -1
  83. package/dist/safe-bash/commands/search/grep.d.ts.map +1 -1
  84. package/dist/safe-bash/commands/search/grep.js +109 -15
  85. package/dist/safe-bash/commands/search/grep.js.map +1 -1
  86. package/dist/safe-bash/commands/search/matcher.d.ts +1 -1
  87. package/dist/safe-bash/commands/search/matcher.d.ts.map +1 -1
  88. package/dist/safe-bash/commands/search/matcher.js +2 -0
  89. package/dist/safe-bash/commands/search/matcher.js.map +1 -1
  90. package/dist/safe-bash/commands/search/shared.d.ts.map +1 -1
  91. package/dist/safe-bash/commands/search/shared.js +23 -12
  92. package/dist/safe-bash/commands/search/shared.js.map +1 -1
  93. package/dist/safe-bash/commands/standard.d.ts.map +1 -1
  94. package/dist/safe-bash/commands/standard.js +22 -0
  95. package/dist/safe-bash/commands/standard.js.map +1 -1
  96. package/dist/safe-bash/commands/streams.d.ts.map +1 -1
  97. package/dist/safe-bash/commands/streams.js +54 -10
  98. package/dist/safe-bash/commands/streams.js.map +1 -1
  99. package/dist/safe-bash/commands/structured/input.d.ts.map +1 -1
  100. package/dist/safe-bash/commands/structured/input.js +484 -55
  101. package/dist/safe-bash/commands/structured/input.js.map +1 -1
  102. package/dist/safe-bash/commands/structured/interpreter.d.ts +3 -0
  103. package/dist/safe-bash/commands/structured/interpreter.d.ts.map +1 -1
  104. package/dist/safe-bash/commands/structured/interpreter.js +157 -1
  105. package/dist/safe-bash/commands/structured/interpreter.js.map +1 -1
  106. package/dist/safe-bash/commands/structured/jq.d.ts.map +1 -1
  107. package/dist/safe-bash/commands/structured/jq.js +50 -24
  108. package/dist/safe-bash/commands/structured/jq.js.map +1 -1
  109. package/dist/safe-bash/commands/structured/limits.d.ts +5 -0
  110. package/dist/safe-bash/commands/structured/limits.d.ts.map +1 -1
  111. package/dist/safe-bash/commands/structured/limits.js +51 -36
  112. package/dist/safe-bash/commands/structured/limits.js.map +1 -1
  113. package/dist/safe-bash/commands/structured/numbers.d.ts +1 -0
  114. package/dist/safe-bash/commands/structured/numbers.d.ts.map +1 -1
  115. package/dist/safe-bash/commands/structured/numbers.js +32 -0
  116. package/dist/safe-bash/commands/structured/numbers.js.map +1 -1
  117. package/dist/safe-bash/commands/text-programs/awk-reader.d.ts +1 -0
  118. package/dist/safe-bash/commands/text-programs/awk-reader.d.ts.map +1 -1
  119. package/dist/safe-bash/commands/text-programs/awk-reader.js +41 -5
  120. package/dist/safe-bash/commands/text-programs/awk-reader.js.map +1 -1
  121. package/dist/safe-bash/commands/text-programs/awk-retention.d.ts +1 -0
  122. package/dist/safe-bash/commands/text-programs/awk-retention.d.ts.map +1 -1
  123. package/dist/safe-bash/commands/text-programs/awk-retention.js +9 -0
  124. package/dist/safe-bash/commands/text-programs/awk-retention.js.map +1 -1
  125. package/dist/safe-bash/commands/text-programs/awk-runtime.d.ts +13 -0
  126. package/dist/safe-bash/commands/text-programs/awk-runtime.d.ts.map +1 -1
  127. package/dist/safe-bash/commands/text-programs/awk-runtime.js +421 -83
  128. package/dist/safe-bash/commands/text-programs/awk-runtime.js.map +1 -1
  129. package/dist/safe-bash/commands/text-programs/awk-values.d.ts.map +1 -1
  130. package/dist/safe-bash/commands/text-programs/awk-values.js +21 -0
  131. package/dist/safe-bash/commands/text-programs/awk-values.js.map +1 -1
  132. package/dist/safe-bash/commands/text-programs/regex.d.ts +15 -2
  133. package/dist/safe-bash/commands/text-programs/regex.d.ts.map +1 -1
  134. package/dist/safe-bash/commands/text-programs/regex.js +501 -13
  135. package/dist/safe-bash/commands/text-programs/regex.js.map +1 -1
  136. package/dist/safe-bash/commands/text-programs/sed.d.ts.map +1 -1
  137. package/dist/safe-bash/commands/text-programs/sed.js +242 -102
  138. package/dist/safe-bash/commands/text-programs/sed.js.map +1 -1
  139. package/dist/safe-bash/commands/text-programs/shared.d.ts +2 -0
  140. package/dist/safe-bash/commands/text-programs/shared.d.ts.map +1 -1
  141. package/dist/safe-bash/commands/text-programs/shared.js +36 -0
  142. package/dist/safe-bash/commands/text-programs/shared.js.map +1 -1
  143. package/dist/safe-bash/commands/text.d.ts.map +1 -1
  144. package/dist/safe-bash/commands/text.js +136 -19
  145. package/dist/safe-bash/commands/text.js.map +1 -1
  146. package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
  147. package/dist/safe-bash/commands/xml/index.browser.js +5 -5
  148. package/dist/safe-bash/commands/yq/index.browser.js +5 -5
  149. package/dist/safe-bash/contracts/yield.d.ts +1 -0
  150. package/dist/safe-bash/contracts/yield.d.ts.map +1 -1
  151. package/dist/safe-bash/contracts/yield.js +3 -0
  152. package/dist/safe-bash/contracts/yield.js.map +1 -1
  153. package/dist/safe-bash/core.browser.js +1052 -256
  154. package/dist/safe-bash/core.browser.js.map +3 -3
  155. package/dist/safe-bash/plugins/composition.d.ts +1 -0
  156. package/dist/safe-bash/plugins/composition.d.ts.map +1 -1
  157. package/dist/safe-bash/plugins/composition.js +80 -2
  158. package/dist/safe-bash/plugins/composition.js.map +1 -1
  159. package/dist/safe-bash/plugins/index.d.ts.map +1 -1
  160. package/dist/safe-bash/plugins/index.js +2 -2
  161. package/dist/safe-bash/plugins/index.js.map +1 -1
  162. package/dist/safe-bash-command-fold/arguments.d.ts +1 -1
  163. package/dist/safe-bash-command-fold/contracts.d.ts +2 -1
  164. package/dist/safe-bash-command-fold/engine.d.ts +1 -1
  165. package/dist/safe-bash-command-fold/index.js +10 -8
  166. package/dist/safe-bash-command-fold/index.js.map +2 -2
  167. package/dist/safe-bash-command-sips/index.js +231 -67
  168. package/dist/safe-bash-command-sips/index.js.map +2 -2
  169. package/dist/safe-bash-command-unrtf/contracts.d.ts +5 -2
  170. package/dist/safe-bash-command-unrtf/index.js +6 -5
  171. package/dist/safe-bash-command-unrtf/index.js.map +2 -2
  172. package/dist/safe-playwright-cloudflare/browser-run-code.js +22 -6
  173. package/package.json +2 -2
  174. package/dist/safe-bash/chunks/chunk-5DLGYPGJ.js.map +0 -7
  175. package/dist/safe-bash/chunks/chunk-7UJW7TYR.js.map +0 -7
  176. package/dist/safe-bash/chunks/chunk-B6YFFKYG.js.map +0 -7
  177. package/dist/safe-bash/chunks/chunk-OTM5RCWZ.js.map +0 -7
  178. package/dist/safe-bash/chunks/chunk-RP5IZOOR.js.map +0 -7
  179. package/dist/safe-bash/chunks/chunk-VGJIDLZM.js.map +0 -7
  180. package/dist/safe-bash/chunks/chunk-VV24PRPB.js.map +0 -7
  181. package/dist/safe-bash/chunks/chunk-YOK5UHA7.js.map +0 -7
  182. /package/dist/safe-bash/chunks/{chunk-6VZX7ESE.js.map → chunk-26N7BLXE.js.map} +0 -0
  183. /package/dist/safe-bash/chunks/{chunk-ZZ7JQBPX.js.map → chunk-4A2OLEML.js.map} +0 -0
  184. /package/dist/safe-bash/chunks/{chunk-LTREB3HX.js.map → chunk-54MC6XF5.js.map} +0 -0
  185. /package/dist/safe-bash/chunks/{chunk-Z3CCN6Y2.js.map → chunk-6J5FUESH.js.map} +0 -0
  186. /package/dist/safe-bash/chunks/{chunk-YR5RZBWS.js.map → chunk-6TBFZ5JE.js.map} +0 -0
  187. /package/dist/safe-bash/chunks/{chunk-6HJNJ625.js.map → chunk-7MMYQG3P.js.map} +0 -0
  188. /package/dist/safe-bash/chunks/{chunk-WTZZX4LV.js.map → chunk-A4MB2KXV.js.map} +0 -0
  189. /package/dist/safe-bash/chunks/{chunk-EM2JW7ZH.js.map → chunk-ATYJKRBZ.js.map} +0 -0
  190. /package/dist/safe-bash/chunks/{chunk-EFMXWUYE.js.map → chunk-B6JEJ6AT.js.map} +0 -0
  191. /package/dist/safe-bash/chunks/{chunk-JFGGQUYP.js.map → chunk-BFXGHT3R.js.map} +0 -0
  192. /package/dist/safe-bash/chunks/{chunk-646RTREQ.js.map → chunk-EEDOYIPC.js.map} +0 -0
  193. /package/dist/safe-bash/chunks/{chunk-OFAAHWL5.js.map → chunk-GCQ5A2T2.js.map} +0 -0
  194. /package/dist/safe-bash/chunks/{chunk-MJW4KSKV.js.map → chunk-GLPJEDLY.js.map} +0 -0
  195. /package/dist/safe-bash/chunks/{chunk-FOOJWH7J.js.map → chunk-GO5OKPBO.js.map} +0 -0
  196. /package/dist/safe-bash/chunks/{chunk-5JANWFJ3.js.map → chunk-GWYXCCGO.js.map} +0 -0
  197. /package/dist/safe-bash/chunks/{chunk-DPHRNHPT.js.map → chunk-H6KJ4L22.js.map} +0 -0
  198. /package/dist/safe-bash/chunks/{chunk-FLX2BZBF.js.map → chunk-HGBYIDAK.js.map} +0 -0
  199. /package/dist/safe-bash/chunks/{chunk-PO3Z7W3A.js.map → chunk-MUHYGUFD.js.map} +0 -0
  200. /package/dist/safe-bash/chunks/{chunk-TIHMU25L.js.map → chunk-PQ37GDJF.js.map} +0 -0
  201. /package/dist/safe-bash/chunks/{chunk-LZ7FUN6K.js.map → chunk-RHHDOA67.js.map} +0 -0
  202. /package/dist/safe-bash/chunks/{chunk-DSCL3VA2.js.map → chunk-SJ3B26XV.js.map} +0 -0
  203. /package/dist/safe-bash/chunks/{chunk-6JBTVWHH.js.map → chunk-SWACYEIT.js.map} +0 -0
  204. /package/dist/safe-bash/chunks/{chunk-Q4I754TV.js.map → chunk-THOBFD5C.js.map} +0 -0
  205. /package/dist/safe-bash/chunks/{chunk-XELW5O3R.js.map → chunk-U2STHT7S.js.map} +0 -0
  206. /package/dist/safe-bash/chunks/{chunk-5X4SOSTT.js.map → chunk-UJHE5PTK.js.map} +0 -0
  207. /package/dist/safe-bash/chunks/{chunk-PLCYP2E5.js.map → chunk-XV4K3UUF.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
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", "../../src/commands/xml/document.ts", "../../src/commands/structured/jq.ts", "../../src/commands/xml/json.ts"],
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\";\nimport { serializeDocument, type DocumentMode } from \"./document.js\";\nimport { executeJq } from \"../structured/jq.js\";\nimport { Budget, JqError, resolveJqLimits } from \"../structured/limits.js\";\nimport { stringify } from \"../structured/input.js\";\nimport { xmlToJson } from \"./json.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; mode?: DocumentMode | undefined; format?: boolean; noout?: boolean; 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\" && args[0] !== \"--xpath\") {\n let mode: DocumentMode | undefined;\n let noout = false;\n let format = false;\n while (index < args.length) {\n const flag = args[index]!;\n if (flag === \"--noout\") noout = true;\n else if (flag === \"--format\") { mode ??= \"format\"; format = true; }\n else if (flag === \"--c14n\") mode = \"c14n\";\n else break;\n index++;\n }\n mode ??= \"format\";\n if (args[index] === \"--\") index++;\n const fileIndex = index++;\n const file = args[fileIndex];\n if (index < args.length || file !== undefined && file.startsWith(\"-\") && file !== \"-\" && args[fileIndex - 1] !== \"--\") {\n throw new XmlQueryError(\"expected one XML input FILE or -\", 2);\n }\n return { mode, format, noout, file: file === undefined ? undefined : await admitted(fileIndex, \"maxInputBytes\") };\n }\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, ...(Number.isFinite(budget.limits.maxInputBytes) ? { 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 const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n for await (const chunk of readBytes(source, context.signal)) {\n await budget.tick();\n budget.inputBytes += chunk.byteLength;\n if (budget.inputBytes > 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 if (context.command === \"xq\") {\n const carrier = getCommandArguments(context);\n for (let index = 0; index < carrier.args.length; index++) {\n if (shellValueByteLength(carrier.values[index]!) > limits.maxInputBytes) throw new XmlQueryLimitError(\"maxInputBytes\");\n let decoded: string;\n try { decoded = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(carrier.bytes(index)); }\n catch { throw new XmlQueryError(\"filters and filenames require valid UTF-8\", 2); }\n if (decoded !== carrier.args[index]) throw new XmlQueryError(\"filters and filenames require lossless UTF-8\", 2);\n await budget.tick(decoded.length);\n }\n const jqLimits = resolveJqLimits({\n maxOutputBytes: limits.maxOutputBytes,\n maxSourceBytes: limits.maxSourceBytes, maxDepth: limits.maxDepth * 2 + 2,\n maxSteps: limits.maxSteps, maxResults: limits.maxResults,\n });\n const conversionBudget = new Budget(jqLimits, context.signal);\n // Only XML conversion errors are translated; jq owns its sink failures.\n return executeJq(context, jqLimits, async bytes => {\n try {\n const source = await input({ ...context, stdin: bytes }, undefined, 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 value = await xmlToJson(parsed.value, budget);\n conversionBudget.value(value);\n return toByteSource(await stringify(value, conversionBudget, false, jqLimits.maxValueBytes, \"maxValueBytes\") + \"\\n\");\n } catch (error) {\n context.signal.throwIfAborted();\n if (error instanceof XmlQueryError) throw new JqError(error.message, error.status);\n if (error instanceof XmlLimitError) throw new JqError(error.message, 5);\n if (error instanceof SyntaxError) throw new JqError(error.message, 1);\n throw error;\n }\n });\n }\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 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 === undefined) {\n if (!options.noout && options.mode !== undefined) {\n for await (const part of serializeDocument(parsed.value, options.mode, budget, options.format)) await write(part);\n }\n return { exitCode: 0 };\n }\n const nodes = await evaluate(options.query, parsed.value, budget);\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_388_608, maxOutputBytes: 8_388_608,\n maxSourceBytes: 65_536, maxDepth: 64, maxNodes: 10_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) || (value !== Infinity && !Number.isSafeInteger(value)) || value < 1) {\n throw new RangeError(`${name} must be a positive safe integer XML limit`);\n }\n }\n return Object.freeze(limits);\n}\nexport class XmlBudget {\n private steps = 0;\n private checkpoint = 0;\n outputBytes = 0;\n inputBytes = 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: \"last\" }\n | { kind: \"attribute\"; name: string; value?: string }\n | { kind: \"child\" | \"text\" | \"self\"; name: string; value: string };\nexport interface QueryStep {\n readonly descendant: boolean;\n readonly kind: \"element\" | \"attribute\" | \"text\" | \"self\" | \"parent\";\n readonly name: string;\n readonly predicates: readonly Predicate[];\n}\nexport interface Query {\n readonly scalar: \"string\" | \"count\" | \"boolean\" | undefined;\n readonly paths: readonly (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 ([\"string\", \"count\", \"boolean\"].some(value => source.startsWith(value, at) && (() => { let offset = at + value.length; while (\" \\t\\r\\n\".includes(source[offset] ?? \"\") && offset < source.length) offset++; return source[offset] === \"(\"; })())) {\n const value = name();\n if (value !== \"string\" && value !== \"count\" && value !== \"boolean\") fail();\n scalar = value as Query[\"scalar\"];\n expect(\"(\");\n }\n const paths: QueryStep[][] = [];\n let morePaths: boolean;\n do {\n const steps: QueryStep[] = [];\n paths.push(steps);\n space();\n do {\n let descendant = false;\n if (source[at] === \"/\") {\n at++;\n descendant = source[at] === \"/\";\n if (descendant) at++;\n }\n space();\n let kind: QueryStep[\"kind\"] = \"element\";\n if (source[at] === \"@\") { kind = \"attribute\"; at++; }\n let selected: string;\n if (source[at] === \".\") {\n at++; selected = \".\";\n kind = source[at] === \".\" ? \"parent\" : \"self\";\n if (kind === \"parent\") at++;\n } else 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 const integer = (): number => {\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 return value;\n };\n if ((source[at] ?? \"\") >= \"0\" && (source[at] ?? \"\") <= \"9\") {\n predicates.push({ kind: \"position\", value: integer() });\n } else if ([\"last\", \"position\"].some(value => source.startsWith(value, at) && (() => { let offset = at + value.length; while (offset < source.length && \" \\t\\r\\n\".includes(source[offset]!)) offset++; return source[offset] === \"(\"; })())) {\n const functionName = name(); expect(\"(\"); expect(\")\");\n if (functionName === \"last\") predicates.push({ kind: \"last\" });\n else if (functionName === \"position\") { expect(\"=\"); space(); predicates.push({ kind: \"position\", value: integer() }); }\n else fail();\n } else {\n let predicateKind: \"attribute\" | \"child\" | \"text\" | \"self\" = \"child\";\n let selectedName = \"\";\n if (source[at] === \"@\") { at++; predicateKind = \"attribute\"; selectedName = name(); }\n else if (source[at] === \".\") { at++; predicateKind = \"self\"; }\n else {\n selectedName = name(); space();\n if (source[at] === \"(\") {\n if (selectedName !== \"text\") fail();\n expect(\"(\"); expect(\")\"); predicateKind = \"text\";\n }\n }\n space();\n if (predicateKind === \"attribute\" && source[at] === \"]\") {\n predicates.push({ kind: \"attribute\", name: selectedName });\n } else {\n 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: predicateKind, name: selectedName, value: source.slice(start, at++) });\n }\n }\n expect(\"]\"); space();\n }\n steps.push({ descendant, kind, name: selected, predicates });\n if ((kind === \"attribute\" || kind === \"text\") && source[at] === \"/\") fail();\n await budget.tick();\n } while (source[at] === \"/\");\n space();\n morePaths = source[at] === \"|\";\n if (morePaths) at++;\n } while (morePaths);\n if (scalar !== undefined) expect(\")\");\n space();\n if (at !== source.length) fail();\n return { scalar, paths };\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[]; parentOf: Map<Node, Container> }> {\n const document: Container = { kind: \"document\", children: [] };\n const order: Node[] = [document];\n const parentOf = new Map<Node, Container>();\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); parentOf.set(node, parent); 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); parentOf.set(selected, node); 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); parentOf.set(node, parent); order.push(node);\n }\n }\n return { document, order, parentOf };\n}\n\nfunction matches(node: Node, step: QueryStep): boolean {\n if (step.kind === \"self\" || step.kind === \"parent\") return true;\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, parentOf } = await indexTree(root, budget);\n const union = new Set<Node>();\n for (const path of query.paths) {\n let contexts: Node[] = [document];\n for (const step of path) {\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 === \"self\" ? [parent]\n : step.kind === \"parent\" ? parentOf.has(parent) ? [parentOf.get(parent)!] : []\n : 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 if (predicate.kind === \"last\") matched = matched.length ? [matched[matched.length - 1]!] : [];\n else {\n const filtered: Node[] = [];\n for (const candidate of matched) {\n await budget.tick();\n if (predicate.kind !== \"attribute\") {\n const values: Node[] = [];\n if (predicate.kind === \"self\") values.push(candidate);\n else if (candidate.kind === \"element\" || candidate.kind === \"document\") {\n for (const child of candidate.children) {\n await budget.tick();\n if (predicate.kind === \"text\" ? child.kind === \"text\" || child.kind === \"cdata\"\n : child.kind === \"element\" && child.value.namespace === \"\" && child.value.localName === predicate.name) values.push(child);\n }\n }\n for (const value of values) {\n await budget.tick();\n let text = \"\";\n for await (const part of stringValue(value, budget)) { await budget.tick(part.length); text += part; }\n if (text === predicate.value) { filtered.push(candidate); break; }\n }\n continue;\n }\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 && (predicate.value === undefined || 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 for (const node of contexts) { await budget.tick(); budget.results(union.size + (union.has(node) ? 0 : 1)); union.add(node); }\n }\n const result: Node[] = [];\n for (const node of order) { await budget.tick(); if (union.has(node)) result.push(node); }\n return result;\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\nexport async function* escape(value: string, attribute: boolean, budget: XmlBudget, options: { canonical?: boolean; ascii?: boolean } = {}): 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\" ? options.canonical ? \"&#xA;\" : \"&#10;\"\n : character === \"\\r\" ? options.canonical ? \"&#xD;\" : \"&#13;\" : attribute && character === \"\\t\" ? options.canonical ? \"&#x9;\" : \"&#9;\" : options.ascii && character.codePointAt(0)! >= 128 ? `&#x${character.codePointAt(0)!.toString(16).toUpperCase()};` : character;\n if (part.length >= 4096) { yield part; part = \"\"; }\n }\n if (part) yield part;\n}\n", "import type { XmlAttribute, XmlContent, XmlElement } from \"@poe-code/safe-fs/core\";\nimport { escape } from \"./evaluate.js\";\nimport { XmlBudget, XmlQueryError } from \"./limits.js\";\n\nexport type DocumentMode = \"format\" | \"c14n\";\nconst xmlns = \"http://www.w3.org/2000/xmlns/\";\nconst xml = \"http://www.w3.org/XML/1998/namespace\";\n\nfunction compare(left: string, right: string): number {\n let a = 0, b = 0;\n while (a < left.length && b < right.length) {\n const x = left.codePointAt(a)!, y = right.codePointAt(b)!;\n if (x !== y) return x - y;\n a += x > 0xffff ? 2 : 1;\n b += y > 0xffff ? 2 : 1;\n }\n return left.length - right.length;\n}\n\nfunction declaration(source: string | undefined): string {\n let result = \"<?xml\";\n for (const name of [\"version\", \"encoding\", \"standalone\"]) {\n const start = source?.indexOf(name) ?? -1;\n if (start < 0) { if (name === \"version\") result += ' version=\"1.0\"'; continue; }\n let offset = source!.indexOf(\"=\", start) + 1;\n while (\" \\t\\n\\r\".includes(source![offset]!)) offset++;\n const quote = source![offset++]!;\n result += ` ${name}=\"${source!.slice(offset, source!.indexOf(quote, offset))}\"`;\n }\n return result + \"?>\\n\";\n}\n\nasync function attributes(element: XmlElement, inherited: ReadonlyMap<string, string>, budget: XmlBudget): Promise<XmlAttribute[]> {\n const selected: XmlAttribute[] = [];\n for (const attribute of element.attributes) {\n await budget.tick();\n if (attribute.namespace !== xmlns) selected.push(attribute);\n }\n for (const [prefix, uri] of element.namespaces) {\n await budget.tick(uri.length + prefix.length + 1);\n if (prefix === \"xml\") continue;\n if (uri === (inherited.get(prefix) ?? \"\")) continue;\n selected.push({ name: prefix ? `xmlns:${prefix}` : \"xmlns\", namespace: xmlns, localName: prefix, value: uri });\n }\n // Admit comparison work before sorting; names are bounded by the XML input cap.\n const comparisons = Math.ceil(Math.log2(selected.length + 1));\n for (const attribute of selected) await budget.tick((attribute.namespace.length + attribute.localName.length + 1) * comparisons);\n selected.sort((left, right) => {\n if (left.namespace === xmlns || right.namespace === xmlns) {\n if (left.namespace !== right.namespace) return left.namespace === xmlns ? -1 : 1;\n return compare(left.localName, right.localName);\n }\n return compare(left.namespace, right.namespace) || compare(left.localName, right.localName);\n });\n return selected;\n}\n\nexport async function* serializeDocument(root: XmlElement, mode: DocumentMode, budget: XmlBudget, format = mode === \"format\"): AsyncGenerator<string> {\n const canonical = mode === \"c14n\";\n const escaping = { canonical, ascii: !canonical && !root.declaration?.includes(\"encoding\") };\n if (canonical) {\n const elements = [root];\n while (elements.length) {\n const element = elements.pop()!;\n await budget.tick();\n for (const [prefix, uri] of element.namespaces) {\n await budget.tick(prefix.length + uri.length + 1);\n if (!uri) continue;\n const colon = uri.indexOf(\":\");\n let absolute = colon > 0 && \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\".includes(uri[0]!);\n for (let index = 1; index < colon; index++) {\n if (!\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+.-\".includes(uri[index]!)) absolute = false;\n }\n if (!absolute) throw new XmlQueryError(\"Failed to canonicalize: relative namespace URI\", 6);\n }\n for (const child of element.children) { await budget.tick(); elements.push(child); }\n }\n } else yield declaration(root.declaration);\n interface Frame { content: XmlContent | string; depth: number; namespaces: ReadonlyMap<string, string>; preserveSpace: boolean }\n const namespaces = new Map<string, string>([[\"xml\", xml]]);\n const pending: Frame[] = [];\n for (let index = (root.epilog?.length ?? 0) - 1; index >= 0; index--) {\n const content = root.epilog![index]!;\n await budget.tick();\n if (content.kind === \"text\") continue;\n if (!canonical) pending.push({ content: \"\\n\", depth: 0, namespaces, preserveSpace: false });\n pending.push({ content, depth: 0, namespaces, preserveSpace: false });\n if (canonical) pending.push({ content: \"\\n\", depth: 0, namespaces, preserveSpace: false });\n }\n if (!canonical) pending.push({ content: \"\\n\", depth: 0, namespaces, preserveSpace: false });\n pending.push({ content: root, depth: 0, namespaces, preserveSpace: false });\n for (let index = (root.prolog?.length ?? 0) - 1; index >= 0; index--) {\n const content = root.prolog![index]!;\n await budget.tick();\n if (content.kind === \"text\") continue;\n pending.push({ content: \"\\n\", depth: 0, namespaces, preserveSpace: false });\n pending.push({ content, depth: 0, namespaces, preserveSpace: false });\n }\n while (pending.length) {\n await budget.tick();\n const frame = pending.pop()!;\n const current = frame.content;\n if (typeof current === \"string\") { yield current; continue; }\n if (current.kind === \"element\") {\n let preserveSpace = frame.preserveSpace;\n for (const attribute of current.attributes) {\n await budget.tick();\n if (attribute.namespace === xml && attribute.localName === \"space\") {\n if (attribute.value === \"preserve\") preserveSpace = true;\n else if (attribute.value === \"default\") preserveSpace = false;\n }\n }\n const content: XmlContent[] = [];\n let mixed = false;\n for (let index = 0; index < current.content.length; index++) {\n const child = current.content[index]!;\n await budget.tick();\n if (child.kind === \"text\") {\n let blank = true;\n for (const character of child.text) {\n await budget.tick();\n if (!\" \\t\\n\\r\".includes(character)) blank = false;\n }\n // libxml's formatting parser removes blanks before markup and after\n // an already parsed child, while preserving text-only leaf content.\n if (format && !preserveSpace && !mixed && blank && (content.length > 0 || index + 1 < current.content.length)) continue;\n mixed = true;\n } else if (child.kind === \"cdata\") mixed = true;\n content.push(child);\n }\n const ordered = canonical ? await attributes(current, frame.namespaces, budget) : [];\n if (!canonical) {\n for (const namespace of [true, false]) for (const attribute of current.attributes) {\n await budget.tick();\n if ((attribute.namespace === xmlns) === namespace) ordered.push(attribute);\n }\n }\n yield `<${current.name}`;\n for (const attribute of ordered) {\n await budget.tick();\n yield ` ${attribute.name}=\"`;\n yield* escape(attribute.value, true, budget, escaping);\n yield '\"';\n }\n if (!content.length && !canonical) { yield \"/>\"; continue; }\n yield \">\";\n const indent = !canonical && format && !mixed && content.length > 0;\n const childNamespaces = canonical ? current.namespaces : frame.namespaces;\n const childFrame = { depth: frame.depth + 1, namespaces: childNamespaces, preserveSpace };\n pending.push({ ...frame, content: `${indent ? \"\\n\" + \" \".repeat(frame.depth) : \"\"}</${current.name}>` });\n for (let index = content.length - 1; index >= 0; index--) {\n await budget.tick();\n pending.push({ ...childFrame, content: content[index]! });\n if (indent) pending.push({ ...childFrame, content: \"\\n\" + \" \".repeat(childFrame.depth) });\n }\n } else if (current.kind === \"text\" || current.kind === \"cdata\" && canonical) yield* escape(current.text, false, budget, escaping);\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", "import { FsError, readBytes, toByteSource, writeBytes, type ByteSource, type CommandContext, type CommandDefinition } from \"../../contracts/index.js\";\nimport { pathOf } from \"../internal.js\";\nimport { joinPath } from \"../../contracts/path.js\";\nimport { escapeText, writeDiagnostic } from \"../../escaping.js\";\nimport { Budget, copyObject, interruptible, JqHalt, JqError, JqLimitError, object, put, resolveJqLimits, truth, wellFormed, type InputLocation, type JqLimits, type Json, type StructuredCommandsOptions } from \"./limits.js\";\nimport { jsonValues, parseJson, rawValues, stringify, type JsonFormat } from \"./input.js\";\nimport { Interpreter } from \"./interpreter.js\";\nimport { moduleProgram, parse, type Ast } from \"./parser.js\";\nimport { sortObjectKeys } from \"./values.js\";\n\ninterface Options {\n stream: boolean;\n streamErrors: boolean;\n sequence: boolean;\n raw: boolean;\n rawInput: boolean;\n joinOutput: boolean;\n rawOutput0: boolean;\n monochrome: boolean;\n format: JsonFormat;\n sortKeys: boolean;\n slurp: boolean;\n nullInput: boolean;\n exitStatus: boolean;\n source: string | undefined;\n programFile: string | undefined;\n files: string[];\n moduleDirectories: string[];\n variables: Map<string, Json>;\n}\nasync function argumentsFor(context: CommandContext, budget: Budget): Promise<Options> {\n const args = context.args;\n budget.collection(args.length);\n let argumentBytes = 0;\n for (const argument of args) {\n argumentBytes += Buffer.byteLength(argument);\n if (argumentBytes > budget.limits.maxInputBytes) throw new JqLimitError(\"maxInputBytes\");\n }\n const options: Options = { stream: false, streamErrors: false, sequence: false, raw: false, rawInput: false, joinOutput: false, rawOutput0: false, monochrome: false, format: { indent: \" \", ascii: false, color: false }, sortKeys: false, slurp: false, nullInput: false, exitStatus: false, source: undefined, programFile: undefined, files: [], moduleDirectories: [], variables: new Map() };\n const named = object();\n const positional: Json[] = [];\n let positionalMode: \"--args\" | \"--jsonargs\" | undefined;\n let ended = false;\n let variableBytes = 0;\n for (let index = 0; index < args.length; index++) {\n const argument = args[index]!;\n const operand = (): string => { const value = args[++index]; if (value === undefined) throw new JqError(`${argument} requires an operand`, 2); return value; };\n if (!ended && argument === \"--\") { ended = true; continue; }\n if (!ended && (argument === \"--args\" || argument === \"--jsonargs\")) { positionalMode = argument; continue; }\n if (!ended && argument.startsWith(\"-L\")) {\n options.moduleDirectories.push(argument === \"-L\" ? operand() : argument.slice(2));\n continue;\n }\n if (!ended && (argument === \"--arg\" || argument === \"--argjson\" || argument === \"--rawfile\" || argument === \"--slurpfile\")) {\n const name = operand(); const text = operand();\n budget.text(name); budget.text(text);\n let value: Json;\n if (argument === \"--rawfile\" || argument === \"--slurpfile\") {\n if (!wellFormed(name)) throw new JqError(\"arguments must contain well-formed Unicode\", 2);\n if (options.variables.has(name)) continue;\n try { value = await fileVariable(context, text, argument === \"--rawfile\", budget); }\n catch (error) {\n context.signal.throwIfAborted();\n if (!(error instanceof JqError) || error instanceof JqLimitError) throw error;\n throw new JqError(`Bad JSON in ${argument} ${name} ${text}: ${error.message}`, 2);\n }\n } else {\n try { value = argument === \"--arg\" ? text : parseJson(text, budget); }\n catch (error) { if (error instanceof JqLimitError) throw error; throw new JqError(`invalid JSON for --argjson ${name}`, 2); }\n }\n if (!wellFormed(name) || (typeof value === \"string\" && !wellFormed(value))) throw new JqError(\"arguments must contain well-formed Unicode\", 2);\n variableBytes += Buffer.byteLength(name) + budget.value(value);\n if (variableBytes > budget.limits.maxValueBytes) throw new JqLimitError(\"maxValueBytes\");\n if (!options.variables.has(name)) { options.variables.set(name, value); put(named, name, value); }\n continue;\n }\n if (!ended && (argument === \"-f\" || argument === \"--from-file\")) {\n if (options.programFile !== undefined || options.source !== undefined) throw new JqError(\"provide exactly one filter program\", 2);\n options.programFile = operand(); continue;\n }\n if (!ended && (argument === \"--stream\" || argument === \"--stream-errors\" || argument === \"--seq\")) {\n if (argument === \"--seq\") options.sequence = true;\n else { options.stream = true; options.streamErrors ||= argument === \"--stream-errors\"; }\n continue;\n }\n if (!ended && argument === \"--indent\") {\n const value = Number.parseInt(operand(), 10) || 0;\n if (value < -1 || value > 7) throw new JqError(\"--indent takes a number between -1 and 7\", 2);\n options.format.indent = value === -1 ? \"\\t\" : \" \".repeat(value);\n continue;\n }\n if (!ended && argument === \"--tab\") { options.format.indent = \"\\t\"; continue; }\n if (!ended && argument === \"--raw-output0\") { options.rawOutput0 = true; options.raw = true; continue; }\n // Each result already reaches the awaited sink before the next input is read.\n if (!ended && argument === \"--unbuffered\") continue;\n const long: Readonly<Record<string, string>> = { \"--raw-output\": \"r\", \"--raw-input\": \"R\", \"--join-output\": \"j\", \"--compact-output\": \"c\", \"--sort-keys\": \"S\", \"--slurp\": \"s\", \"--null-input\": \"n\", \"--exit-status\": \"e\", \"--ascii-output\": \"a\", \"--color-output\": \"C\", \"--monochrome-output\": \"M\" };\n const flagStart = argument[1] ?? \"\";\n // jq treats negative numbers and punctuation after '-' as operands.\n const positionalOperand = positionalMode !== undefined && flagStart !== \"-\" && !(flagStart >= \"a\" && flagStart <= \"z\") && !(flagStart >= \"A\" && flagStart <= \"Z\");\n if (!ended && argument.startsWith(\"-\") && argument !== \"-\" && !positionalOperand) {\n const flags = Object.hasOwn(long, argument) ? long[argument]! : argument.startsWith(\"--\") ? \"\" : argument.slice(1);\n if (!flags || [...flags].some(flag => !\"rRjcSsneaCM\".includes(flag))) throw new JqError(`unsupported option ${argument}`, 2);\n for (const flag of flags) {\n if (flag === \"r\") options.raw = true;\n else if (flag === \"R\") options.rawInput = true;\n else if (flag === \"j\") { options.joinOutput = true; options.raw = true; }\n else if (flag === \"c\") options.format.indent = \"\";\n else if (flag === \"a\") options.format.ascii = true;\n else if (flag === \"C\") options.format.color = true;\n else if (flag === \"M\") options.monochrome = true;\n else if (flag === \"S\") options.sortKeys = true;\n else if (flag === \"s\") options.slurp = true;\n else if (flag === \"n\") options.nullInput = true;\n else options.exitStatus = true;\n }\n continue;\n }\n if (options.source === undefined && options.programFile === undefined) options.source = argument;\n else if (positionalMode !== undefined) {\n budget.text(argument);\n let value: Json;\n try { value = positionalMode === \"--args\" ? argument : parseJson(argument, budget); }\n catch (error) { if (error instanceof JqLimitError) throw error; throw new JqError(\"invalid JSON text passed to --jsonargs\", 2); }\n if (typeof value === \"string\" && !wellFormed(value)) throw new JqError(\"arguments must contain well-formed Unicode\", 2);\n variableBytes += budget.value(value) + (positional.length ? 1 : 2);\n if (variableBytes > budget.limits.maxValueBytes) throw new JqLimitError(\"maxValueBytes\");\n positional.push(value);\n }\n else options.files.push(argument);\n }\n options.format.color &&= !options.monochrome;\n if (positional.length) budget.value(positional);\n options.variables.set(\"ARGS\", copyObject({ positional, named }));\n options.source ??= options.programFile === undefined ? \".\" : undefined;\n return options;\n}\nasync function readProgram(context: CommandContext, path: string, limits: JqLimits): Promise<string> {\n const absolute = pathOf(context, path);\n const chunks: Uint8Array[] = [];\n let size = 0;\n const capabilities = context.fs.capabilitiesFor\n ? await interruptible(() => context.fs.capabilitiesFor!(absolute, { signal: context.signal }), context.signal)\n : context.fs.capabilities;\n context.signal.throwIfAborted();\n if (context.fs.readStream && capabilities.streamingRead !== false) {\n for await (const chunk of readBytes(context.fs.readStream(absolute, { signal: context.signal }), context.signal)) {\n size += chunk.byteLength;\n if (size > limits.maxSourceBytes) throw new JqLimitError(\"maxSourceBytes\");\n if (chunk.byteLength) chunks.push(new Uint8Array(chunk));\n }\n } else {\n const chunk = await interruptible(() => context.fs.readFile(absolute, { signal: context.signal, ...(Number.isFinite(limits.maxSourceBytes) ? { maxBytes: limits.maxSourceBytes } : {}) }), context.signal);\n if (chunk.byteLength > limits.maxSourceBytes) throw new JqLimitError(\"maxSourceBytes\");\n chunks.push(chunk);\n }\n try { return new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(Buffer.concat(chunks)); }\n catch { throw new JqError(\"program file is not valid UTF-8\", 3); }\n}\nexport type FilterInput = (source: ByteSource) => Promise<ByteSource>;\n\nasync function compileProgram(context: CommandContext, options: Options, source: string, budget: Budget): Promise<Ast> {\n if (!options.moduleDirectories.length) return parse(source, options.variables, budget);\n let sourceBytes = Buffer.byteLength(source);\n const active = new Set<string>();\n const compile = async (text: string, depth: number, module: boolean): Promise<{ ast: Ast; definitions: Map<string, Ast> }> => {\n await budget.tick();\n if (sourceBytes > budget.limits.maxSourceBytes) throw new JqLimitError(\"maxSourceBytes\");\n if (depth > budget.limits.maxAstDepth) throw new JqLimitError(\"maxAstDepth\");\n const program = moduleProgram(text, budget);\n const definitions = new Map<string, Ast>();\n for (const entry of program.imports) {\n const parts = entry.name.split(\"/\");\n if (parts.some(part => !part || part === \".\" || part === \"..\" || part.includes(\"\\0\"))) throw new JqError(\"invalid module path\", 3);\n let loaded: { ast: Ast; definitions: Map<string, Ast> } | undefined;\n for (const directory of options.moduleDirectories) {\n await budget.tick();\n const path = pathOf(context, joinPath(directory, `${entry.name}.jq`));\n if (active.has(path)) throw new JqError(`module dependency cycle: ${entry.name}`, 3);\n let contents: string;\n try { contents = await readProgram(context, path, { ...budget.limits, maxSourceBytes: budget.limits.maxSourceBytes - sourceBytes }); }\n catch (error) {\n context.signal.throwIfAborted();\n if (error instanceof FsError && (error.code === \"ENOENT\" || error.code === \"ENOTDIR\")) continue;\n throw error;\n }\n sourceBytes += Buffer.byteLength(contents);\n active.add(path);\n try { loaded = await compile(contents, depth + 1, true); }\n finally { active.delete(path); }\n break;\n }\n if (!loaded) throw new JqError(`module not found: ${entry.name}`, 3);\n for (const [name, body] of loaded.definitions) {\n definitions.set(entry.alias === undefined ? name : `${entry.alias}::${name}`, body);\n budget.collection(definitions.size);\n }\n }\n return { ast: parse(program.source, options.variables, budget, definitions, module), definitions };\n };\n return (await compile(source, 1, false)).ast;\n}\n\nasync function* inputSources(context: CommandContext, options: Pick<Options, \"files\" | \"rawInput\">, budget: Budget, convert?: FilterInput): AsyncGenerator<ByteSource> {\n const files = options.files.length ? options.files : [\"-\"];\n let usedStdin = false;\n for (const file of files) {\n let source: ByteSource;\n if (file === \"-\") {\n if (options.rawInput && usedStdin) continue;\n usedStdin = true;\n source = context.stdin;\n }\n else {\n const absolute = pathOf(context, file);\n const remaining = budget.limits.maxInputBytes - budget.inputBytes;\n await budget.tick();\n const capabilities = context.fs.capabilitiesFor\n ? await interruptible(() => context.fs.capabilitiesFor!(absolute, { 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(absolute, { signal: context.signal });\n else source = toByteSource(await interruptible(() => context.fs.readFile(absolute, { signal: context.signal, ...(Number.isFinite(remaining) ? { maxBytes: remaining } : {}) }), context.signal));\n }\n budget.inputLocation = { name: file === \"-\" ? \"<stdin>\" : file, line: 0, complete: false };\n yield convert ? await convert(source) : source;\n }\n}\nasync function fileVariable(context: CommandContext, path: string, raw: boolean, budget: Budget): Promise<Json> {\n // Resolve first so a literal '-' remains a file, never the command's stdin.\n const sources = inputSources(context, { files: [pathOf(context, path)], rawInput: raw }, budget);\n if (raw) {\n for await (const value of rawValues(sources, budget, true)) return value;\n return \"\";\n }\n const values: Json[] = [];\n let bytes = 2;\n for await (const source of sources) {\n for await (const value of jsonValues(source, budget)) {\n budget.collection(values.length + 1);\n bytes += budget.value(value) + (values.length ? 1 : 0);\n if (bytes > budget.limits.maxValueBytes) throw new JqLimitError(\"maxValueBytes\");\n values.push(value);\n }\n }\n budget.value(values);\n return values;\n}\nasync function* inputs(context: CommandContext, options: Options, budget: Budget, convert?: FilterInput): AsyncGenerator<Json> {\n if (options.rawInput) {\n yield* rawValues(inputSources(context, options, budget, convert), budget, options.slurp);\n } else {\n async function* joined(): ByteSource {\n for await (const source of inputSources(context, options, budget, convert)) yield* readBytes(source, context.signal);\n }\n yield* jsonValues(joined(), budget, {\n stream: options.stream, streamErrors: options.streamErrors, sequence: options.sequence,\n warning: async message => {\n const bytes = Buffer.byteLength(message) + 5;\n budget.outputBytes += bytes;\n if (budget.outputBytes > budget.limits.maxOutputBytes) throw new JqLimitError(\"maxOutputBytes\");\n await writeDiagnostic(context.stderr, `jq: ${message}\\n`, context.signal);\n },\n });\n }\n}\nexport async function executeJq(context: CommandContext, limits: JqLimits, convert?: FilterInput): Promise<{ exitCode: number }> {\n const budget = new Budget(limits, context.signal);\n context.signal.throwIfAborted();\n const diagnostics: { location: InputLocation; message: string }[] = [];\n let diagnosticBytes = 0;\n let diagnosticWriteFailed = false;\n let stdoutWriteFailed = false;\n const flush = async (force = false): Promise<void> => {\n let written = 0;\n try {\n while (written < diagnostics.length && (force || diagnostics[written]!.location.complete)) {\n const { location, message } = diagnostics[written++]!;\n const place = location.name === \"<unknown>\" ? location.name : `${escapeText(location.name, \"diagnostic\")}:${location.line}`;\n await writeBytes(context.stderr, Buffer.from(`jq: error (at ${place}): ${message}\\n`), context.signal);\n }\n } catch (error) {\n diagnosticWriteFailed = true;\n throw error;\n } finally {\n diagnostics.splice(0, written);\n }\n };\n try {\n const options = await argumentsFor(context, budget);\n const source = options.programFile === undefined ? options.source! : await readProgram(context, options.programFile, limits);\n const ast = await compileProgram(context, options, source, budget);\n const interpreter = new Interpreter(budget, options.variables);\n let last: Json | undefined;\n let status = 0;\n const emit = async (input: Json): Promise<void> => {\n await flush();\n status = options.exitStatus ? last === undefined ? 4 : truth(last) ? 0 : 1 : 0;\n let invocationLast: Json | undefined;\n const iterator = interpreter.run(ast, input);\n try {\n while (true) {\n let next: IteratorResult<Json>;\n try {\n next = await iterator.next();\n if (!next.done && options.rawOutput0 && !options.format.ascii && typeof next.value === \"string\") {\n await budget.tick(next.value.length);\n if (next.value.includes(\"\\0\")) throw new JqError(\"Cannot dump a string containing NUL with --raw-output0 option\");\n }\n }\n catch (error) {\n context.signal.throwIfAborted();\n if (!(error instanceof JqError) || error instanceof JqLimitError) throw error;\n const message = escapeText(error.message.slice(0, 1000), \"diagnostic\");\n diagnosticBytes += Buffer.byteLength(message) + Buffer.byteLength(escapeText(budget.inputLocation.name, \"diagnostic\")) + 64;\n if (diagnosticBytes > limits.maxOutputBytes) throw new JqLimitError(\"maxOutputBytes\");\n diagnostics.push({ location: budget.inputLocation, message });\n status = error.exitCode;\n break;\n }\n if (next.done) break;\n const result = next.value;\n await budget.tick(); budget.value(result);\n if (++budget.results > limits.maxResults) throw new JqLimitError(\"maxResults\");\n const remaining = limits.maxOutputBytes - budget.outputBytes;\n const suffix = options.rawOutput0 ? \"\\0\" : options.joinOutput ? \"\" : \"\\n\";\n const prefix = options.sequence && !(options.raw && typeof result === \"string\") ? \"\\x1e\" : \"\";\n const output = options.sortKeys ? await sortObjectKeys(result, budget) : result;\n const rawString = options.raw && typeof output === \"string\";\n const format = rawString ? { ...options.format, color: false } : options.format;\n const text = rawString && !format.ascii ? output : await stringify(output, budget, format, Math.max(0, remaining - suffix.length - prefix.length), \"maxOutputBytes\");\n if (prefix.length + Buffer.byteLength(text) + suffix.length > remaining) throw new JqLimitError(\"maxOutputBytes\");\n const bytes = Buffer.from(`${prefix}${text}${suffix}`);\n budget.outputBytes += bytes.byteLength;\n try { await writeBytes(context.stdout, bytes, context.signal); }\n catch (error) { stdoutWriteFailed = true; throw error; }\n invocationLast = result;\n status = options.exitStatus ? truth(result) ? 0 : 1 : 0;\n }\n } finally { await iterator.return(undefined); }\n if (status < 2 && invocationLast !== undefined) last = invocationLast;\n await flush();\n };\n if (options.nullInput) {\n await emit(null);\n // XML frontends still parse their documents when jq receives null.\n if (convert) for await (const value of inputs(context, options, budget, convert)) budget.value(value);\n }\n else if (options.slurp && !options.rawInput) {\n const values: Json[] = [];\n let bytes = 2;\n for await (const value of inputs(context, options, budget, convert)) {\n budget.collection(values.length + 1);\n bytes += budget.value(value) + (values.length ? 1 : 0);\n if (bytes > limits.maxValueBytes) throw new JqLimitError(\"maxValueBytes\");\n values.push(value);\n }\n budget.value(values); await emit(values);\n } else for await (const value of inputs(context, options, budget, convert)) await emit(value);\n await flush(true);\n return { exitCode: options.exitStatus && last === undefined && status === 0 ? 4 : status };\n } catch (error) {\n if (diagnosticWriteFailed) throw error;\n context.signal.throwIfAborted();\n if (stdoutWriteFailed) throw error;\n if (error instanceof JqHalt) {\n await flush(true);\n await writeBytes(context.stderr, Buffer.from(error.stderr), context.signal);\n return { exitCode: error.exitCode };\n }\n if (!(error instanceof JqError) && !(error instanceof FsError)) throw error;\n if (error instanceof FsError && error.code === \"EPIPE\") throw error;\n await flush(true);\n await writeDiagnostic(context.stderr, `jq: ${error.message.slice(0, 1000)}\\n`, context.signal);\n return { exitCode: error instanceof JqError ? error.exitCode : 2 };\n }\n}\nexport function jqCommand(options: StructuredCommandsOptions = {}): CommandDefinition {\n const limits = resolveJqLimits(options.limits);\n return { name: \"jq\", description: \"Bounded, dependency-free JSON filter interpreter\", execute: context => executeJq(context, limits) };\n}\n", "import type { XmlElement } from \"@poe-code/safe-fs/core\";\nimport type { Json } from \"../structured/limits.js\";\nimport type { XmlBudget } from \"./limits.js\";\n\n// Python yq's xq uses xmltodict's attribute, text and repeated-child mapping.\nexport async function xmlToJson(root: XmlElement, budget: XmlBudget): Promise<Json> {\n async function element(node: XmlElement): Promise<Json> {\n await budget.tick();\n const result: Record<string, Json> = Object.create(null);\n const names = new Set<string>();\n for (const attribute of node.attributes) {\n await budget.tick();\n result[\"@\" + attribute.name] = attribute.value;\n }\n const text: string[] = [];\n for (const child of node.content) {\n await budget.tick();\n if (child.kind === \"text\" || child.kind === \"cdata\") text.push(child.text);\n else if (child.kind === \"element\") {\n const value = await element(child);\n if (!names.has(child.name)) {\n result[child.name] = value;\n names.add(child.name);\n } else {\n const previous = result[child.name]!;\n if (Array.isArray(previous)) previous.push(value);\n else result[child.name] = [previous, value];\n }\n }\n }\n const value = text.join(\"\").trim();\n if (Object.keys(result).length === 0) return value || null;\n if (value) result[\"#text\"] = value;\n return result;\n }\n const result: Record<string, Json> = Object.create(null);\n result[root.name] = await element(root);\n return result;\n}\n"],
5
- "mappings": "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",
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\";\nimport { serializeDocument, type DocumentMode } from \"./document.js\";\nimport { executeJq } from \"../structured/jq.js\";\nimport { Budget, JqError, resolveJqLimits } from \"../structured/limits.js\";\nimport { stringify } from \"../structured/input.js\";\nimport { xmlToJson } from \"./json.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; mode?: DocumentMode | undefined; format?: boolean; noout?: boolean; 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\" && args[0] !== \"--xpath\") {\n let mode: DocumentMode | undefined;\n let noout = false;\n let format = false;\n while (index < args.length) {\n const flag = args[index]!;\n if (flag === \"--noout\") noout = true;\n else if (flag === \"--format\") { mode ??= \"format\"; format = true; }\n else if (flag === \"--c14n\") mode = \"c14n\";\n else break;\n index++;\n }\n mode ??= \"format\";\n if (args[index] === \"--\") index++;\n const fileIndex = index++;\n const file = args[fileIndex];\n if (index < args.length || file !== undefined && file.startsWith(\"-\") && file !== \"-\" && args[fileIndex - 1] !== \"--\") {\n throw new XmlQueryError(\"expected one XML input FILE or -\", 2);\n }\n return { mode, format, noout, file: file === undefined ? undefined : await admitted(fileIndex, \"maxInputBytes\") };\n }\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, ...(Number.isFinite(budget.limits.maxInputBytes) ? { 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 const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n for await (const chunk of readBytes(source, context.signal)) {\n await budget.tick();\n budget.inputBytes += chunk.byteLength;\n if (budget.inputBytes > 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 if (context.command === \"xq\") {\n const carrier = getCommandArguments(context);\n for (let index = 0; index < carrier.args.length; index++) {\n if (shellValueByteLength(carrier.values[index]!) > limits.maxInputBytes) throw new XmlQueryLimitError(\"maxInputBytes\");\n let decoded: string;\n try { decoded = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(carrier.bytes(index)); }\n catch { throw new XmlQueryError(\"filters and filenames require valid UTF-8\", 2); }\n if (decoded !== carrier.args[index]) throw new XmlQueryError(\"filters and filenames require lossless UTF-8\", 2);\n await budget.tick(decoded.length);\n }\n const jqLimits = resolveJqLimits({\n maxOutputBytes: limits.maxOutputBytes,\n maxSourceBytes: limits.maxSourceBytes, maxDepth: limits.maxDepth * 2 + 2,\n maxSteps: limits.maxSteps, maxResults: limits.maxResults,\n });\n const conversionBudget = new Budget(jqLimits, context.signal);\n // Only XML conversion errors are translated; jq owns its sink failures.\n return executeJq(context, jqLimits, async bytes => {\n try {\n const source = await input({ ...context, stdin: bytes }, undefined, 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 value = await xmlToJson(parsed.value, budget);\n conversionBudget.value(value);\n return toByteSource(await stringify(value, conversionBudget, false, jqLimits.maxValueBytes, \"maxValueBytes\") + \"\\n\");\n } catch (error) {\n context.signal.throwIfAborted();\n if (error instanceof XmlQueryError) throw new JqError(error.message, error.status);\n if (error instanceof XmlLimitError) throw new JqError(error.message, 5);\n if (error instanceof SyntaxError) throw new JqError(error.message, 1);\n throw error;\n }\n });\n }\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 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 === undefined) {\n if (!options.noout && options.mode !== undefined) {\n for await (const part of serializeDocument(parsed.value, options.mode, budget, options.format)) await write(part);\n }\n return { exitCode: 0 };\n }\n const nodes = await evaluate(options.query, parsed.value, budget);\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_388_608, maxOutputBytes: 8_388_608,\n maxSourceBytes: 65_536, maxDepth: 64, maxNodes: 10_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) || (value !== Infinity && !Number.isSafeInteger(value)) || value < 1) {\n throw new RangeError(`${name} must be a positive safe integer XML limit`);\n }\n }\n return Object.freeze(limits);\n}\nexport class XmlBudget {\n private steps = 0;\n private checkpoint = 0;\n outputBytes = 0;\n inputBytes = 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: \"last\" }\n | { kind: \"attribute\"; name: string; value?: string }\n | { kind: \"child\" | \"text\" | \"self\"; name: string; value: string };\nexport interface QueryStep {\n readonly descendant: boolean;\n readonly kind: \"element\" | \"attribute\" | \"text\" | \"self\" | \"parent\";\n readonly name: string;\n readonly predicates: readonly Predicate[];\n}\nexport interface Query {\n readonly scalar: \"string\" | \"count\" | \"boolean\" | undefined;\n readonly paths: readonly (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 ([\"string\", \"count\", \"boolean\"].some(value => source.startsWith(value, at) && (() => { let offset = at + value.length; while (\" \\t\\r\\n\".includes(source[offset] ?? \"\") && offset < source.length) offset++; return source[offset] === \"(\"; })())) {\n const value = name();\n if (value !== \"string\" && value !== \"count\" && value !== \"boolean\") fail();\n scalar = value as Query[\"scalar\"];\n expect(\"(\");\n }\n const paths: QueryStep[][] = [];\n let morePaths: boolean;\n do {\n const steps: QueryStep[] = [];\n paths.push(steps);\n space();\n do {\n let descendant = false;\n if (source[at] === \"/\") {\n at++;\n descendant = source[at] === \"/\";\n if (descendant) at++;\n }\n space();\n let kind: QueryStep[\"kind\"] = \"element\";\n if (source[at] === \"@\") { kind = \"attribute\"; at++; }\n let selected: string;\n if (source[at] === \".\") {\n at++; selected = \".\";\n kind = source[at] === \".\" ? \"parent\" : \"self\";\n if (kind === \"parent\") at++;\n } else 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 const integer = (): number => {\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 return value;\n };\n if ((source[at] ?? \"\") >= \"0\" && (source[at] ?? \"\") <= \"9\") {\n predicates.push({ kind: \"position\", value: integer() });\n } else if ([\"last\", \"position\"].some(value => source.startsWith(value, at) && (() => { let offset = at + value.length; while (offset < source.length && \" \\t\\r\\n\".includes(source[offset]!)) offset++; return source[offset] === \"(\"; })())) {\n const functionName = name(); expect(\"(\"); expect(\")\");\n if (functionName === \"last\") predicates.push({ kind: \"last\" });\n else if (functionName === \"position\") { expect(\"=\"); space(); predicates.push({ kind: \"position\", value: integer() }); }\n else fail();\n } else {\n let predicateKind: \"attribute\" | \"child\" | \"text\" | \"self\" = \"child\";\n let selectedName = \"\";\n if (source[at] === \"@\") { at++; predicateKind = \"attribute\"; selectedName = name(); }\n else if (source[at] === \".\") { at++; predicateKind = \"self\"; }\n else {\n selectedName = name(); space();\n if (source[at] === \"(\") {\n if (selectedName !== \"text\") fail();\n expect(\"(\"); expect(\")\"); predicateKind = \"text\";\n }\n }\n space();\n if (predicateKind === \"attribute\" && source[at] === \"]\") {\n predicates.push({ kind: \"attribute\", name: selectedName });\n } else {\n 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: predicateKind, name: selectedName, value: source.slice(start, at++) });\n }\n }\n expect(\"]\"); space();\n }\n steps.push({ descendant, kind, name: selected, predicates });\n if ((kind === \"attribute\" || kind === \"text\") && source[at] === \"/\") fail();\n await budget.tick();\n } while (source[at] === \"/\");\n space();\n morePaths = source[at] === \"|\";\n if (morePaths) at++;\n } while (morePaths);\n if (scalar !== undefined) expect(\")\");\n space();\n if (at !== source.length) fail();\n return { scalar, paths };\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[]; parentOf: Map<Node, Container> }> {\n const document: Container = { kind: \"document\", children: [] };\n const order: Node[] = [document];\n const parentOf = new Map<Node, Container>();\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); parentOf.set(node, parent); 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); parentOf.set(selected, node); 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); parentOf.set(node, parent); order.push(node);\n }\n }\n return { document, order, parentOf };\n}\n\nfunction matches(node: Node, step: QueryStep): boolean {\n if (step.kind === \"self\" || step.kind === \"parent\") return true;\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, parentOf } = await indexTree(root, budget);\n const union = new Set<Node>();\n for (const path of query.paths) {\n let contexts: Node[] = [document];\n for (const step of path) {\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 === \"self\" ? [parent]\n : step.kind === \"parent\" ? parentOf.has(parent) ? [parentOf.get(parent)!] : []\n : 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 if (predicate.kind === \"last\") matched = matched.length ? [matched[matched.length - 1]!] : [];\n else {\n const filtered: Node[] = [];\n for (const candidate of matched) {\n await budget.tick();\n if (predicate.kind !== \"attribute\") {\n const values: Node[] = [];\n if (predicate.kind === \"self\") values.push(candidate);\n else if (candidate.kind === \"element\" || candidate.kind === \"document\") {\n for (const child of candidate.children) {\n await budget.tick();\n if (predicate.kind === \"text\" ? child.kind === \"text\" || child.kind === \"cdata\"\n : child.kind === \"element\" && child.value.namespace === \"\" && child.value.localName === predicate.name) values.push(child);\n }\n }\n for (const value of values) {\n await budget.tick();\n let text = \"\";\n for await (const part of stringValue(value, budget)) { await budget.tick(part.length); text += part; }\n if (text === predicate.value) { filtered.push(candidate); break; }\n }\n continue;\n }\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 && (predicate.value === undefined || 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 for (const node of contexts) { await budget.tick(); budget.results(union.size + (union.has(node) ? 0 : 1)); union.add(node); }\n }\n const result: Node[] = [];\n for (const node of order) { await budget.tick(); if (union.has(node)) result.push(node); }\n return result;\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\nexport async function* escape(value: string, attribute: boolean, budget: XmlBudget, options: { canonical?: boolean; ascii?: boolean } = {}): 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\" ? options.canonical ? \"&#xA;\" : \"&#10;\"\n : character === \"\\r\" ? options.canonical ? \"&#xD;\" : \"&#13;\" : attribute && character === \"\\t\" ? options.canonical ? \"&#x9;\" : \"&#9;\" : options.ascii && character.codePointAt(0)! >= 128 ? `&#x${character.codePointAt(0)!.toString(16).toUpperCase()};` : character;\n if (part.length >= 4096) { yield part; part = \"\"; }\n }\n if (part) yield part;\n}\n", "import type { XmlAttribute, XmlContent, XmlElement } from \"@poe-code/safe-fs/core\";\nimport { escape } from \"./evaluate.js\";\nimport { XmlBudget, XmlQueryError } from \"./limits.js\";\n\nexport type DocumentMode = \"format\" | \"c14n\";\nconst xmlns = \"http://www.w3.org/2000/xmlns/\";\nconst xml = \"http://www.w3.org/XML/1998/namespace\";\n\nfunction compare(left: string, right: string): number {\n let a = 0, b = 0;\n while (a < left.length && b < right.length) {\n const x = left.codePointAt(a)!, y = right.codePointAt(b)!;\n if (x !== y) return x - y;\n a += x > 0xffff ? 2 : 1;\n b += y > 0xffff ? 2 : 1;\n }\n return left.length - right.length;\n}\n\nfunction declaration(source: string | undefined): string {\n let result = \"<?xml\";\n for (const name of [\"version\", \"encoding\", \"standalone\"]) {\n const start = source?.indexOf(name) ?? -1;\n if (start < 0) { if (name === \"version\") result += ' version=\"1.0\"'; continue; }\n let offset = source!.indexOf(\"=\", start) + 1;\n while (\" \\t\\n\\r\".includes(source![offset]!)) offset++;\n const quote = source![offset++]!;\n result += ` ${name}=\"${source!.slice(offset, source!.indexOf(quote, offset))}\"`;\n }\n return result + \"?>\\n\";\n}\n\nasync function attributes(element: XmlElement, inherited: ReadonlyMap<string, string>, budget: XmlBudget): Promise<XmlAttribute[]> {\n const selected: XmlAttribute[] = [];\n for (const attribute of element.attributes) {\n await budget.tick();\n if (attribute.namespace !== xmlns) selected.push(attribute);\n }\n for (const [prefix, uri] of element.namespaces) {\n await budget.tick(uri.length + prefix.length + 1);\n if (prefix === \"xml\") continue;\n if (uri === (inherited.get(prefix) ?? \"\")) continue;\n selected.push({ name: prefix ? `xmlns:${prefix}` : \"xmlns\", namespace: xmlns, localName: prefix, value: uri });\n }\n // Admit comparison work before sorting; names are bounded by the XML input cap.\n const comparisons = Math.ceil(Math.log2(selected.length + 1));\n for (const attribute of selected) await budget.tick((attribute.namespace.length + attribute.localName.length + 1) * comparisons);\n selected.sort((left, right) => {\n if (left.namespace === xmlns || right.namespace === xmlns) {\n if (left.namespace !== right.namespace) return left.namespace === xmlns ? -1 : 1;\n return compare(left.localName, right.localName);\n }\n return compare(left.namespace, right.namespace) || compare(left.localName, right.localName);\n });\n return selected;\n}\n\nexport async function* serializeDocument(root: XmlElement, mode: DocumentMode, budget: XmlBudget, format = mode === \"format\"): AsyncGenerator<string> {\n const canonical = mode === \"c14n\";\n const escaping = { canonical, ascii: !canonical && !root.declaration?.includes(\"encoding\") };\n if (canonical) {\n const elements = [root];\n while (elements.length) {\n const element = elements.pop()!;\n await budget.tick();\n for (const [prefix, uri] of element.namespaces) {\n await budget.tick(prefix.length + uri.length + 1);\n if (!uri) continue;\n const colon = uri.indexOf(\":\");\n let absolute = colon > 0 && \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\".includes(uri[0]!);\n for (let index = 1; index < colon; index++) {\n if (!\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+.-\".includes(uri[index]!)) absolute = false;\n }\n if (!absolute) throw new XmlQueryError(\"Failed to canonicalize: relative namespace URI\", 6);\n }\n for (const child of element.children) { await budget.tick(); elements.push(child); }\n }\n } else yield declaration(root.declaration);\n interface Frame { content: XmlContent | string; depth: number; namespaces: ReadonlyMap<string, string>; preserveSpace: boolean }\n const namespaces = new Map<string, string>([[\"xml\", xml]]);\n const pending: Frame[] = [];\n for (let index = (root.epilog?.length ?? 0) - 1; index >= 0; index--) {\n const content = root.epilog![index]!;\n await budget.tick();\n if (content.kind === \"text\") continue;\n if (!canonical) pending.push({ content: \"\\n\", depth: 0, namespaces, preserveSpace: false });\n pending.push({ content, depth: 0, namespaces, preserveSpace: false });\n if (canonical) pending.push({ content: \"\\n\", depth: 0, namespaces, preserveSpace: false });\n }\n if (!canonical) pending.push({ content: \"\\n\", depth: 0, namespaces, preserveSpace: false });\n pending.push({ content: root, depth: 0, namespaces, preserveSpace: false });\n for (let index = (root.prolog?.length ?? 0) - 1; index >= 0; index--) {\n const content = root.prolog![index]!;\n await budget.tick();\n if (content.kind === \"text\") continue;\n pending.push({ content: \"\\n\", depth: 0, namespaces, preserveSpace: false });\n pending.push({ content, depth: 0, namespaces, preserveSpace: false });\n }\n while (pending.length) {\n await budget.tick();\n const frame = pending.pop()!;\n const current = frame.content;\n if (typeof current === \"string\") { yield current; continue; }\n if (current.kind === \"element\") {\n let preserveSpace = frame.preserveSpace;\n for (const attribute of current.attributes) {\n await budget.tick();\n if (attribute.namespace === xml && attribute.localName === \"space\") {\n if (attribute.value === \"preserve\") preserveSpace = true;\n else if (attribute.value === \"default\") preserveSpace = false;\n }\n }\n const content: XmlContent[] = [];\n let mixed = false;\n for (let index = 0; index < current.content.length; index++) {\n const child = current.content[index]!;\n await budget.tick();\n if (child.kind === \"text\") {\n let blank = true;\n for (const character of child.text) {\n await budget.tick();\n if (!\" \\t\\n\\r\".includes(character)) blank = false;\n }\n // libxml's formatting parser removes blanks before markup and after\n // an already parsed child, while preserving text-only leaf content.\n if (format && !preserveSpace && !mixed && blank && (content.length > 0 || index + 1 < current.content.length)) continue;\n mixed = true;\n } else if (child.kind === \"cdata\") mixed = true;\n content.push(child);\n }\n const ordered = canonical ? await attributes(current, frame.namespaces, budget) : [];\n if (!canonical) {\n for (const namespace of [true, false]) for (const attribute of current.attributes) {\n await budget.tick();\n if ((attribute.namespace === xmlns) === namespace) ordered.push(attribute);\n }\n }\n yield `<${current.name}`;\n for (const attribute of ordered) {\n await budget.tick();\n yield ` ${attribute.name}=\"`;\n yield* escape(attribute.value, true, budget, escaping);\n yield '\"';\n }\n if (!content.length && !canonical) { yield \"/>\"; continue; }\n yield \">\";\n const indent = !canonical && format && !mixed && content.length > 0;\n const childNamespaces = canonical ? current.namespaces : frame.namespaces;\n const childFrame = { depth: frame.depth + 1, namespaces: childNamespaces, preserveSpace };\n pending.push({ ...frame, content: `${indent ? \"\\n\" + \" \".repeat(frame.depth) : \"\"}</${current.name}>` });\n for (let index = content.length - 1; index >= 0; index--) {\n await budget.tick();\n pending.push({ ...childFrame, content: content[index]! });\n if (indent) pending.push({ ...childFrame, content: \"\\n\" + \" \".repeat(childFrame.depth) });\n }\n } else if (current.kind === \"text\" || current.kind === \"cdata\" && canonical) yield* escape(current.text, false, budget, escaping);\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", "import { FsError, readBytes, toByteSource, writeBytes, type ByteSource, type CommandContext, type CommandDefinition } from \"../../contracts/index.js\";\nimport { pathOf } from \"../internal.js\";\nimport { joinPath } from \"../../contracts/path.js\";\nimport { escapeText, writeDiagnostic } from \"../../escaping.js\";\nimport { Budget, copyObject, interruptible, JqHalt, JqError, JqLimitError, object, put, resolveJqLimits, truth, wellFormed, type InputLocation, type JqLimits, type Json, type StructuredCommandsOptions } from \"./limits.js\";\nimport { jsonValues, parseJson, rawValues, stringify, type JsonFormat } from \"./input.js\";\nimport { Interpreter } from \"./interpreter.js\";\nimport { moduleProgram, parse, type Ast } from \"./parser.js\";\nimport { sortObjectKeys } from \"./values.js\";\n\ninterface Options {\n stream: boolean;\n streamErrors: boolean;\n sequence: boolean;\n raw: boolean;\n rawInput: boolean;\n joinOutput: boolean;\n rawOutput0: boolean;\n monochrome: boolean;\n format: JsonFormat;\n sortKeys: boolean;\n slurp: boolean;\n nullInput: boolean;\n exitStatus: boolean;\n source: string | undefined;\n programFile: string | undefined;\n files: string[];\n moduleDirectories: string[];\n variables: Map<string, Json>;\n}\nasync function argumentsFor(context: CommandContext, budget: Budget): Promise<Options> {\n const args = context.args;\n budget.collection(args.length);\n let argumentBytes = 0;\n for (const argument of args) {\n argumentBytes += Buffer.byteLength(argument);\n if (argumentBytes > budget.limits.maxInputBytes) throw new JqLimitError(\"maxInputBytes\");\n }\n const options: Options = { stream: false, streamErrors: false, sequence: false, raw: false, rawInput: false, joinOutput: false, rawOutput0: false, monochrome: false, format: { indent: \" \", ascii: false, color: false }, sortKeys: false, slurp: false, nullInput: false, exitStatus: false, source: undefined, programFile: undefined, files: [], moduleDirectories: [], variables: new Map() };\n const named = object();\n const positional: Json[] = [];\n let positionalMode: \"--args\" | \"--jsonargs\" | undefined;\n let ended = false;\n let variableBytes = 0;\n for (let index = 0; index < args.length; index++) {\n const argument = args[index]!;\n const operand = (): string => { const value = args[++index]; if (value === undefined) throw new JqError(`${argument} requires an operand`, 2); return value; };\n if (!ended && argument === \"--\") { ended = true; continue; }\n if (!ended && (argument === \"--args\" || argument === \"--jsonargs\")) { positionalMode = argument; continue; }\n if (!ended && argument.startsWith(\"-L\")) {\n options.moduleDirectories.push(argument === \"-L\" ? operand() : argument.slice(2));\n continue;\n }\n if (!ended && (argument === \"--arg\" || argument === \"--argjson\" || argument === \"--rawfile\" || argument === \"--slurpfile\")) {\n const name = operand(); const text = operand();\n budget.text(name); budget.text(text);\n let value: Json;\n if (argument === \"--rawfile\" || argument === \"--slurpfile\") {\n if (!wellFormed(name)) throw new JqError(\"arguments must contain well-formed Unicode\", 2);\n if (options.variables.has(name)) continue;\n try { value = await fileVariable(context, text, argument === \"--rawfile\", budget); }\n catch (error) {\n context.signal.throwIfAborted();\n if (!(error instanceof JqError) || error instanceof JqLimitError) throw error;\n throw new JqError(`Bad JSON in ${argument} ${name} ${text}: ${error.message}`, 2);\n }\n } else {\n try { value = argument === \"--arg\" ? text : parseJson(text, budget); }\n catch (error) { if (error instanceof JqLimitError) throw error; throw new JqError(`invalid JSON for --argjson ${name}`, 2); }\n }\n if (!wellFormed(name) || (typeof value === \"string\" && !wellFormed(value))) throw new JqError(\"arguments must contain well-formed Unicode\", 2);\n variableBytes += Buffer.byteLength(name) + budget.value(value);\n if (variableBytes > budget.limits.maxValueBytes) throw new JqLimitError(\"maxValueBytes\");\n if (!options.variables.has(name)) { options.variables.set(name, value); put(named, name, value); }\n continue;\n }\n if (!ended && (argument === \"-f\" || argument === \"--from-file\")) {\n if (options.programFile !== undefined || options.source !== undefined) throw new JqError(\"provide exactly one filter program\", 2);\n options.programFile = operand(); continue;\n }\n if (!ended && (argument === \"--stream\" || argument === \"--stream-errors\" || argument === \"--seq\")) {\n if (argument === \"--seq\") options.sequence = true;\n else { options.stream = true; options.streamErrors ||= argument === \"--stream-errors\"; }\n continue;\n }\n if (!ended && argument === \"--indent\") {\n const value = Number.parseInt(operand(), 10) || 0;\n if (value < -1 || value > 7) throw new JqError(\"--indent takes a number between -1 and 7\", 2);\n options.format.indent = value === -1 ? \"\\t\" : \" \".repeat(value);\n continue;\n }\n if (!ended && argument === \"--tab\") { options.format.indent = \"\\t\"; continue; }\n if (!ended && argument === \"--raw-output0\") { options.rawOutput0 = true; options.raw = true; continue; }\n // Each result already reaches the awaited sink before the next input is read.\n if (!ended && argument === \"--unbuffered\") continue;\n const long: Readonly<Record<string, string>> = { \"--raw-output\": \"r\", \"--raw-input\": \"R\", \"--join-output\": \"j\", \"--compact-output\": \"c\", \"--sort-keys\": \"S\", \"--slurp\": \"s\", \"--null-input\": \"n\", \"--exit-status\": \"e\", \"--ascii-output\": \"a\", \"--color-output\": \"C\", \"--monochrome-output\": \"M\" };\n const flagStart = argument[1] ?? \"\";\n // jq treats negative numbers and punctuation after '-' as operands.\n const positionalOperand = positionalMode !== undefined && flagStart !== \"-\" && !(flagStart >= \"a\" && flagStart <= \"z\") && !(flagStart >= \"A\" && flagStart <= \"Z\");\n if (!ended && argument.startsWith(\"-\") && argument !== \"-\" && !positionalOperand) {\n const flags = Object.hasOwn(long, argument) ? long[argument]! : argument.startsWith(\"--\") ? \"\" : argument.slice(1);\n if (!flags || [...flags].some(flag => !\"rRjcSsneaCM\".includes(flag))) throw new JqError(`unsupported option ${argument}`, 2);\n for (const flag of flags) {\n if (flag === \"r\") options.raw = true;\n else if (flag === \"R\") options.rawInput = true;\n else if (flag === \"j\") { options.joinOutput = true; options.raw = true; }\n else if (flag === \"c\") options.format.indent = \"\";\n else if (flag === \"a\") options.format.ascii = true;\n else if (flag === \"C\") options.format.color = true;\n else if (flag === \"M\") options.monochrome = true;\n else if (flag === \"S\") options.sortKeys = true;\n else if (flag === \"s\") options.slurp = true;\n else if (flag === \"n\") options.nullInput = true;\n else options.exitStatus = true;\n }\n continue;\n }\n if (options.source === undefined && options.programFile === undefined) options.source = argument;\n else if (positionalMode !== undefined) {\n budget.text(argument);\n let value: Json;\n try { value = positionalMode === \"--args\" ? argument : parseJson(argument, budget); }\n catch (error) { if (error instanceof JqLimitError) throw error; throw new JqError(\"invalid JSON text passed to --jsonargs\", 2); }\n if (typeof value === \"string\" && !wellFormed(value)) throw new JqError(\"arguments must contain well-formed Unicode\", 2);\n variableBytes += budget.value(value) + (positional.length ? 1 : 2);\n if (variableBytes > budget.limits.maxValueBytes) throw new JqLimitError(\"maxValueBytes\");\n positional.push(value);\n }\n else options.files.push(argument);\n }\n options.format.color &&= !options.monochrome;\n if (positional.length) budget.value(positional);\n options.variables.set(\"ARGS\", copyObject({ positional, named }));\n options.source ??= options.programFile === undefined ? \".\" : undefined;\n return options;\n}\nasync function readProgram(context: CommandContext, path: string, limits: JqLimits): Promise<string> {\n const absolute = pathOf(context, path);\n const chunks: Uint8Array[] = [];\n let size = 0;\n const capabilities = context.fs.capabilitiesFor\n ? await interruptible(() => context.fs.capabilitiesFor!(absolute, { signal: context.signal }), context.signal)\n : context.fs.capabilities;\n context.signal.throwIfAborted();\n if (context.fs.readStream && capabilities.streamingRead !== false) {\n for await (const chunk of readBytes(context.fs.readStream(absolute, { signal: context.signal }), context.signal)) {\n size += chunk.byteLength;\n if (size > limits.maxSourceBytes) throw new JqLimitError(\"maxSourceBytes\");\n if (chunk.byteLength) chunks.push(new Uint8Array(chunk));\n }\n } else {\n const chunk = await interruptible(() => context.fs.readFile(absolute, { signal: context.signal, ...(Number.isFinite(limits.maxSourceBytes) ? { maxBytes: limits.maxSourceBytes } : {}) }), context.signal);\n if (chunk.byteLength > limits.maxSourceBytes) throw new JqLimitError(\"maxSourceBytes\");\n chunks.push(chunk);\n }\n try { return new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(Buffer.concat(chunks)); }\n catch { throw new JqError(\"program file is not valid UTF-8\", 3); }\n}\nexport type FilterInput = (source: ByteSource) => Promise<ByteSource>;\n\nasync function compileProgram(context: CommandContext, options: Options, source: string, budget: Budget): Promise<Ast> {\n if (!options.moduleDirectories.length) return parse(source, options.variables, budget);\n let sourceBytes = Buffer.byteLength(source);\n const active = new Set<string>();\n const compile = async (text: string, depth: number, module: boolean): Promise<{ ast: Ast; definitions: Map<string, Ast> }> => {\n await budget.tick();\n if (sourceBytes > budget.limits.maxSourceBytes) throw new JqLimitError(\"maxSourceBytes\");\n if (depth > budget.limits.maxAstDepth) throw new JqLimitError(\"maxAstDepth\");\n const program = moduleProgram(text, budget);\n const definitions = new Map<string, Ast>();\n for (const entry of program.imports) {\n const parts = entry.name.split(\"/\");\n if (parts.some(part => !part || part === \".\" || part === \"..\" || part.includes(\"\\0\"))) throw new JqError(\"invalid module path\", 3);\n let loaded: { ast: Ast; definitions: Map<string, Ast> } | undefined;\n for (const directory of options.moduleDirectories) {\n await budget.tick();\n const path = pathOf(context, joinPath(directory, `${entry.name}.jq`));\n if (active.has(path)) throw new JqError(`module dependency cycle: ${entry.name}`, 3);\n let contents: string;\n try { contents = await readProgram(context, path, { ...budget.limits, maxSourceBytes: budget.limits.maxSourceBytes - sourceBytes }); }\n catch (error) {\n context.signal.throwIfAborted();\n if (error instanceof FsError && (error.code === \"ENOENT\" || error.code === \"ENOTDIR\")) continue;\n throw error;\n }\n sourceBytes += Buffer.byteLength(contents);\n active.add(path);\n try { loaded = await compile(contents, depth + 1, true); }\n finally { active.delete(path); }\n break;\n }\n if (!loaded) throw new JqError(`module not found: ${entry.name}`, 3);\n for (const [name, body] of loaded.definitions) {\n definitions.set(entry.alias === undefined ? name : `${entry.alias}::${name}`, body);\n budget.collection(definitions.size);\n }\n }\n return { ast: parse(program.source, options.variables, budget, definitions, module), definitions };\n };\n return (await compile(source, 1, false)).ast;\n}\n\nasync function* inputSources(context: CommandContext, options: Pick<Options, \"files\" | \"rawInput\">, budget: Budget, convert?: FilterInput): AsyncGenerator<ByteSource> {\n const files = options.files.length ? options.files : [\"-\"];\n let usedStdin = false;\n for (const file of files) {\n let source: ByteSource;\n if (file === \"-\") {\n if (options.rawInput && usedStdin) continue;\n usedStdin = true;\n source = context.stdin;\n }\n else {\n const absolute = pathOf(context, file);\n const remaining = budget.limits.maxInputBytes - budget.inputBytes;\n await budget.tick();\n const capabilities = context.fs.capabilitiesFor\n ? await interruptible(() => context.fs.capabilitiesFor!(absolute, { 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(absolute, { signal: context.signal });\n else source = toByteSource(await interruptible(() => context.fs.readFile(absolute, { signal: context.signal, ...(Number.isFinite(remaining) ? { maxBytes: remaining } : {}) }), context.signal));\n }\n budget.inputLocation = { name: file === \"-\" ? \"<stdin>\" : file, line: 0, complete: false };\n yield convert ? await convert(source) : source;\n }\n}\nasync function fileVariable(context: CommandContext, path: string, raw: boolean, budget: Budget): Promise<Json> {\n // Resolve first so a literal '-' remains a file, never the command's stdin.\n const sources = inputSources(context, { files: [pathOf(context, path)], rawInput: raw }, budget);\n if (raw) {\n for await (const value of rawValues(sources, budget, true)) return value;\n return \"\";\n }\n const values: Json[] = [];\n let bytes = 2;\n for await (const source of sources) {\n for await (const value of jsonValues(source, budget)) {\n budget.collection(values.length + 1);\n bytes += budget.value(value) + (values.length ? 1 : 0);\n if (bytes > budget.limits.maxValueBytes) throw new JqLimitError(\"maxValueBytes\");\n values.push(value);\n }\n }\n budget.value(values);\n return values;\n}\nasync function* inputs(context: CommandContext, options: Options, budget: Budget, convert?: FilterInput): AsyncGenerator<Json> {\n if (options.rawInput) {\n yield* rawValues(inputSources(context, options, budget, convert), budget, options.slurp);\n } else {\n async function* joined(): ByteSource {\n for await (const source of inputSources(context, options, budget, convert)) yield* readBytes(source, context.signal);\n }\n yield* jsonValues(joined(), budget, {\n stream: options.stream, streamErrors: options.streamErrors, sequence: options.sequence,\n warning: async message => {\n const bytes = Buffer.byteLength(message) + 5;\n budget.outputBytes += bytes;\n if (budget.outputBytes > budget.limits.maxOutputBytes) throw new JqLimitError(\"maxOutputBytes\");\n await writeDiagnostic(context.stderr, `jq: ${message}\\n`, context.signal);\n },\n });\n }\n}\nexport async function executeJq(context: CommandContext, limits: JqLimits, convert?: FilterInput): Promise<{ exitCode: number }> {\n const budget = new Budget(limits, context.signal);\n context.signal.throwIfAborted();\n const diagnostics: { location: InputLocation; message: string }[] = [];\n let diagnosticBytes = 0;\n let diagnosticWriteFailed = false;\n let stdoutWriteFailed = false;\n const flush = async (force = false): Promise<void> => {\n if (!diagnostics.length) return;\n let written = 0;\n try {\n while (written < diagnostics.length && (force || diagnostics[written]!.location.complete)) {\n const { location, message } = diagnostics[written++]!;\n const place = location.name === \"<unknown>\" ? location.name : `${escapeText(location.name, \"diagnostic\")}:${location.line}`;\n await writeBytes(context.stderr, Buffer.from(`jq: error (at ${place}): ${message}\\n`), context.signal);\n }\n } catch (error) {\n diagnosticWriteFailed = true;\n throw error;\n } finally {\n diagnostics.splice(0, written);\n }\n };\n try {\n const options = await argumentsFor(context, budget);\n const source = options.programFile === undefined ? options.source! : await readProgram(context, options.programFile, limits);\n const ast = await compileProgram(context, options, source, budget);\n const interpreter = new Interpreter(budget, options.variables);\n let last: Json | undefined;\n let status = 0;\n const suffix = options.rawOutput0 ? \"\\0\" : options.joinOutput ? \"\" : \"\\n\";\n const publishResult = async (result: Json): Promise<void> => {\n const pt = budget.tickSync();\n if (pt) await pt;\n budget.value(result);\n if (++budget.results > limits.maxResults) throw new JqLimitError(\"maxResults\");\n const remaining = limits.maxOutputBytes - budget.outputBytes;\n const prefix = options.sequence && !(options.raw && typeof result === \"string\") ? \"\\x1e\" : \"\";\n const output = options.sortKeys ? await sortObjectKeys(result, budget) : result;\n const rawString = options.raw && typeof output === \"string\";\n const format = rawString ? { ...options.format, color: false } : options.format;\n const text = rawString && !format.ascii ? output : await stringify(output, budget, format, Math.max(0, remaining - suffix.length - prefix.length), \"maxOutputBytes\");\n const chunkText = `${prefix}${text}${suffix}`;\n const byteLen = Buffer.byteLength(chunkText);\n if (byteLen > remaining) throw new JqLimitError(\"maxOutputBytes\");\n budget.outputBytes += byteLen;\n try { await writeBytes(context.stdout, Buffer.from(chunkText), context.signal); }\n catch (error) { stdoutWriteFailed = true; throw error; }\n };\n const emit = async (input: Json): Promise<void> => {\n if (diagnostics.length) await flush();\n status = options.exitStatus ? last === undefined ? 4 : truth(last) ? 0 : 1 : 0;\n let invocationLast: Json | undefined;\n if (!options.rawOutput0) {\n const syncResults = interpreter.tryRunSync(ast, input);\n if (syncResults !== undefined) {\n for (let i = 0; i < syncResults.length; i++) {\n const result = syncResults[i]!;\n await publishResult(result);\n invocationLast = result;\n status = options.exitStatus ? truth(result) ? 0 : 1 : 0;\n }\n if (status < 2 && invocationLast !== undefined) last = invocationLast;\n if (diagnostics.length) await flush();\n return;\n }\n }\n const iterator = interpreter.run(ast, input);\n try {\n while (true) {\n let next: IteratorResult<Json>;\n try {\n next = await iterator.next();\n if (!next.done && options.rawOutput0 && !options.format.ascii && typeof next.value === \"string\") {\n await budget.tick(next.value.length);\n if (next.value.includes(\"\\0\")) throw new JqError(\"Cannot dump a string containing NUL with --raw-output0 option\");\n }\n }\n catch (error) {\n context.signal.throwIfAborted();\n if (!(error instanceof JqError) || error instanceof JqLimitError) throw error;\n const message = escapeText(error.message.slice(0, 1000), \"diagnostic\");\n diagnosticBytes += Buffer.byteLength(message) + Buffer.byteLength(escapeText(budget.inputLocation.name, \"diagnostic\")) + 64;\n if (diagnosticBytes > limits.maxOutputBytes) throw new JqLimitError(\"maxOutputBytes\");\n diagnostics.push({ location: budget.inputLocation, message });\n status = error.exitCode;\n break;\n }\n if (next.done) break;\n const result = next.value;\n await publishResult(result);\n invocationLast = result;\n status = options.exitStatus ? truth(result) ? 0 : 1 : 0;\n }\n } finally { await iterator.return(undefined); }\n if (status < 2 && invocationLast !== undefined) last = invocationLast;\n if (diagnostics.length) await flush();\n };\n if (options.nullInput) {\n await emit(null);\n // XML frontends still parse their documents when jq receives null.\n if (convert) for await (const value of inputs(context, options, budget, convert)) budget.value(value);\n }\n else if (options.slurp && !options.rawInput) {\n const values: Json[] = [];\n let bytes = 2;\n for await (const value of inputs(context, options, budget, convert)) {\n budget.collection(values.length + 1);\n bytes += budget.value(value) + (values.length ? 1 : 0);\n if (bytes > limits.maxValueBytes) throw new JqLimitError(\"maxValueBytes\");\n values.push(value);\n }\n budget.value(values); await emit(values);\n } else for await (const value of inputs(context, options, budget, convert)) await emit(value);\n await flush(true);\n return { exitCode: options.exitStatus && last === undefined && status === 0 ? 4 : status };\n } catch (error) {\n if (diagnosticWriteFailed) throw error;\n context.signal.throwIfAborted();\n if (stdoutWriteFailed) throw error;\n if (error instanceof JqHalt) {\n await flush(true);\n await writeBytes(context.stderr, Buffer.from(error.stderr), context.signal);\n return { exitCode: error.exitCode };\n }\n if (!(error instanceof JqError) && !(error instanceof FsError)) throw error;\n if (error instanceof FsError && error.code === \"EPIPE\") throw error;\n await flush(true);\n await writeDiagnostic(context.stderr, `jq: ${error.message.slice(0, 1000)}\\n`, context.signal);\n return { exitCode: error instanceof JqError ? error.exitCode : 2 };\n }\n}\nexport function jqCommand(options: StructuredCommandsOptions = {}): CommandDefinition {\n const limits = resolveJqLimits(options.limits);\n return { name: \"jq\", description: \"Bounded, dependency-free JSON filter interpreter\", execute: context => executeJq(context, limits) };\n}\n", "import type { XmlElement } from \"@poe-code/safe-fs/core\";\nimport type { Json } from \"../structured/limits.js\";\nimport type { XmlBudget } from \"./limits.js\";\n\n// Python yq's xq uses xmltodict's attribute, text and repeated-child mapping.\nexport async function xmlToJson(root: XmlElement, budget: XmlBudget): Promise<Json> {\n async function element(node: XmlElement): Promise<Json> {\n await budget.tick();\n const result: Record<string, Json> = Object.create(null);\n const names = new Set<string>();\n for (const attribute of node.attributes) {\n await budget.tick();\n result[\"@\" + attribute.name] = attribute.value;\n }\n const text: string[] = [];\n for (const child of node.content) {\n await budget.tick();\n if (child.kind === \"text\" || child.kind === \"cdata\") text.push(child.text);\n else if (child.kind === \"element\") {\n const value = await element(child);\n if (!names.has(child.name)) {\n result[child.name] = value;\n names.add(child.name);\n } else {\n const previous = result[child.name]!;\n if (Array.isArray(previous)) previous.push(value);\n else result[child.name] = [previous, value];\n }\n }\n }\n const value = text.join(\"\").trim();\n if (Object.keys(result).length === 0) return value || null;\n if (value) result[\"#text\"] = value;\n return result;\n }\n const result: Record<string, Json> = Object.create(null);\n result[root.name] = await element(root);\n return result;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["xmlns", "input", "result", "value", "argumentsFor", "fileIndex", "file", "source", "parser", "parsed"]
7
7
  }
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  inheritYieldCheckpoint,
19
19
  yieldTurn
20
- } from "./chunk-YOK5UHA7.js";
20
+ } from "./chunk-XKXFX3RH.js";
21
21
  import {
22
22
  command_exports,
23
23
  dirname,
@@ -2669,4 +2669,4 @@ export {
2669
2669
  createPythonCommands,
2670
2670
  pythonCommands
2671
2671
  };
2672
- //# sourceMappingURL=chunk-646RTREQ.js.map
2672
+ //# sourceMappingURL=chunk-EEDOYIPC.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-LV3A66Y2.js";
10
10
  import {
11
11
  yieldTurn
12
- } from "./chunk-B6YFFKYG.js";
12
+ } from "./chunk-X4I3RHTC.js";
13
13
  import {
14
14
  getCommandArguments,
15
15
  shellValueBytes
@@ -740,4 +740,4 @@ export {
740
740
  createHexdumpCommands,
741
741
  hexdumpCommands
742
742
  };
743
- //# sourceMappingURL=chunk-OFAAHWL5.js.map
743
+ //# sourceMappingURL=chunk-GCQ5A2T2.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-LV3A66Y2.js";
10
10
  import {
11
11
  yieldTurn
12
- } from "./chunk-B6YFFKYG.js";
12
+ } from "./chunk-X4I3RHTC.js";
13
13
  import {
14
14
  getCommandArguments,
15
15
  shellValueBytes
@@ -655,4 +655,4 @@ export {
655
655
  createTsortCommands,
656
656
  tsortCommands
657
657
  };
658
- //# sourceMappingURL=chunk-MJW4KSKV.js.map
658
+ //# sourceMappingURL=chunk-GLPJEDLY.js.map
@@ -7,14 +7,14 @@ import {
7
7
  } from "./chunk-ZY243FWG.js";
8
8
  import {
9
9
  pathOf
10
- } from "./chunk-OTM5RCWZ.js";
10
+ } from "./chunk-QNEDWYC2.js";
11
11
  import {
12
12
  writeDiagnostic
13
- } from "./chunk-ZZ7JQBPX.js";
13
+ } from "./chunk-4A2OLEML.js";
14
14
  import {
15
15
  inheritYieldCheckpoint,
16
16
  yieldTurn
17
- } from "./chunk-YOK5UHA7.js";
17
+ } from "./chunk-XKXFX3RH.js";
18
18
  import {
19
19
  contracts_exports
20
20
  } from "./chunk-J2E3MV3E.js";
@@ -2600,4 +2600,4 @@ export {
2600
2600
  createCurlCommands,
2601
2601
  curlCommands
2602
2602
  };
2603
- //# sourceMappingURL=chunk-FOOJWH7J.js.map
2603
+ //# sourceMappingURL=chunk-GO5OKPBO.js.map
@@ -6,17 +6,17 @@ import {
6
6
  } from "./chunk-RA4KWAKW.js";
7
7
  import {
8
8
  pathOf
9
- } from "./chunk-VGJIDLZM.js";
9
+ } from "./chunk-KS5VSJYM.js";
10
10
  import {
11
11
  writeDiagnostic
12
- } from "./chunk-WTZZX4LV.js";
12
+ } from "./chunk-A4MB2KXV.js";
13
13
  import {
14
14
  createOutputOperation
15
15
  } from "./chunk-LV3A66Y2.js";
16
16
  import {
17
17
  inheritYieldCheckpoint,
18
18
  yieldTurn
19
- } from "./chunk-B6YFFKYG.js";
19
+ } from "./chunk-X4I3RHTC.js";
20
20
  import {
21
21
  getCommandArguments,
22
22
  shellValueBytes
@@ -2610,4 +2610,4 @@ export {
2610
2610
  createCurlCommands,
2611
2611
  curlCommands
2612
2612
  };
2613
- //# sourceMappingURL=chunk-5JANWFJ3.js.map
2613
+ //# sourceMappingURL=chunk-GWYXCCGO.js.map