@poe-platform/safe-bash 0.1.800 → 0.1.801

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 (459) hide show
  1. package/README.md +16 -5
  2. package/dist/image-ast/index.browser.js +119 -75
  3. package/dist/image-ast/index.js +119 -75
  4. package/dist/pdf-ast/index.js +4 -3
  5. package/dist/safe-bash/chunks/{chunk-LUOFIVNI.js → chunk-3NDIFSNM.js} +3 -3
  6. package/dist/safe-bash/chunks/{chunk-4SEW2Q6H.js → chunk-3R3AANOR.js} +1 -1
  7. package/dist/safe-bash/chunks/{chunk-HHW7MGS2.js → chunk-45PK3NWI.js} +4 -4
  8. package/dist/safe-bash/chunks/{chunk-KHMGTPD6.js → chunk-46Z5E5EV.js} +2 -2
  9. package/dist/safe-bash/chunks/{chunk-XB3B7KMM.js → chunk-6O77NL2S.js} +1 -1
  10. package/dist/safe-bash/chunks/{chunk-T3JTVIEP.js → chunk-6PAVEFT3.js} +1 -1
  11. package/dist/safe-bash/chunks/{chunk-PYVEAFJM.js → chunk-74GHTNJA.js} +3 -2
  12. package/dist/safe-bash/chunks/{chunk-LQHGH25W.js → chunk-7R5BDCG7.js} +1 -1
  13. package/dist/safe-bash/chunks/{chunk-RMWLWH7Q.js → chunk-7VNF5BFF.js} +300 -737
  14. package/dist/safe-bash/chunks/{chunk-QVSRRNZT.js → chunk-A7XEHALN.js} +4 -4
  15. package/dist/safe-bash/chunks/{chunk-MHZ24KEI.js → chunk-AM5ESLPH.js} +1 -1
  16. package/dist/safe-bash/chunks/{chunk-3L3T6LYV.js → chunk-AUSNDQTJ.js} +1 -1
  17. package/dist/safe-bash/chunks/{chunk-YG5WAHK7.js → chunk-B7TAL7S5.js} +1 -3
  18. package/dist/safe-bash/chunks/{chunk-K7IQZE7D.js → chunk-C5OWC2TL.js} +1 -1
  19. package/dist/safe-bash/chunks/{chunk-F3RV2F72.js → chunk-CHYGPFVM.js} +1 -1
  20. package/dist/safe-bash/chunks/{chunk-M4CFCXHN.js → chunk-CS4MNM6I.js} +1 -1
  21. package/dist/safe-bash/chunks/{chunk-H6JW3E4F.js → chunk-CTVWDACF.js} +1 -1
  22. package/dist/safe-bash/chunks/{chunk-BHJE5LPZ.js → chunk-D3ANYGMC.js} +1 -1
  23. package/dist/safe-bash/chunks/{chunk-NLAW7KDI.js → chunk-E7OYNDGL.js} +1 -1
  24. package/dist/safe-bash/chunks/{chunk-SOZK5JVX.js → chunk-FBUCWVTE.js} +1 -1
  25. package/dist/safe-bash/chunks/{chunk-RKKRJ54E.js → chunk-FNDNHAGE.js} +30 -23
  26. package/dist/safe-bash/chunks/{chunk-KCVSVD65.js → chunk-I5HZ4FGE.js} +1 -1
  27. package/dist/safe-bash/chunks/{chunk-JJSTTIEZ.js → chunk-ICFDYV64.js} +1 -1
  28. package/dist/safe-bash/chunks/{chunk-TYD7EVUJ.js → chunk-IVRQ4BXL.js} +1 -1
  29. package/dist/safe-bash/chunks/{chunk-KV7PKOHV.js → chunk-IWDICZVK.js} +1 -1
  30. package/dist/safe-bash/chunks/{chunk-I4OAEOP6.js → chunk-J42RIHHJ.js} +1 -1
  31. package/dist/safe-bash/chunks/{chunk-K2VCOJ2B.js → chunk-K6VCD7IY.js} +7 -12
  32. package/dist/safe-bash/chunks/{chunk-63FXVDGF.js → chunk-LVOBFF4D.js} +1 -1
  33. package/dist/safe-bash/chunks/{chunk-U5NUZPCC.js → chunk-MHMMRCYC.js} +1 -1
  34. package/dist/safe-bash/chunks/{chunk-6HZYFL3H.js → chunk-NR3EM4LS.js} +1 -1
  35. package/dist/safe-bash/chunks/{chunk-VYZTG3GV.js → chunk-NZQXYWA3.js} +1 -1
  36. package/dist/safe-bash/chunks/{chunk-TFGRKY43.js → chunk-OQRVVGR6.js} +1 -1
  37. package/dist/safe-bash/chunks/{chunk-PPYM75Z3.js → chunk-OV6IHKO6.js} +2 -2
  38. package/dist/safe-bash/chunks/{chunk-KW24TAIU.js → chunk-PQRAK7HU.js} +920 -432
  39. package/dist/safe-bash/chunks/{chunk-K4YMYFRJ.js → chunk-SZH7EJLD.js} +116 -697
  40. package/dist/safe-bash/chunks/{chunk-7YSRXFEG.js → chunk-TFIBK2GI.js} +1 -1
  41. package/dist/safe-bash/chunks/{chunk-I7L3G3NX.js → chunk-UE5KZDEK.js} +2 -2
  42. package/dist/safe-bash/chunks/{chunk-QU3BVQ53.js → chunk-UTBUUFDM.js} +1 -1
  43. package/dist/safe-bash/chunks/{chunk-JTLSUJ7V.js → chunk-VQDD3G76.js} +42 -25
  44. package/dist/safe-bash/chunks/{chunk-46UISJCK.js → chunk-VTH3MLDU.js} +1 -1
  45. package/dist/safe-bash/chunks/{chunk-LLZCZ24K.js → chunk-XVOSKJE2.js} +1 -1
  46. package/dist/safe-bash/chunks/{csvkit-QGP3GAOB.js → csvkit-TACDU7FC.js} +3 -3
  47. package/dist/safe-bash/chunks/{ffmpeg-JTVH26MK.js → ffmpeg-WTC3TEFI.js} +2 -2
  48. package/dist/safe-bash/chunks/{gh-I7QX7N5C.js → gh-6WU6PXL4.js} +2 -2
  49. package/dist/safe-bash/chunks/{git-MA7NKYVP.js → git-EFZIGJW4.js} +2 -2
  50. package/dist/safe-bash/chunks/{imagemagick-Y4NPWX2Q.js → imagemagick-EIEYGWPF.js} +2 -2
  51. package/dist/safe-bash/chunks/{implementation-BWDKOVQJ.js → implementation-MLFHUQ5M.js} +2 -2
  52. package/dist/safe-bash/chunks/{mmdc-44PELHDG.js → mmdc-ROQJT5HQ.js} +2 -2
  53. package/dist/safe-bash/chunks/{pdfimages-635TRW4Q.js → pdfimages-DW7LWXFI.js} +2 -2
  54. package/dist/safe-bash/chunks/{pdfinfo-FSDAA2KY.js → pdfinfo-TIP6XLUQ.js} +2 -2
  55. package/dist/safe-bash/chunks/{pdftk-GQ5UH3VG.js → pdftk-DMG22ITZ.js} +2 -2
  56. package/dist/safe-bash/chunks/{pdftoppm-YTXQCAYT.js → pdftoppm-WNDYR72T.js} +2 -2
  57. package/dist/safe-bash/chunks/{pdftotext-CVA2G7FY.js → pdftotext-5IPZ4NI7.js} +2 -2
  58. package/dist/safe-bash/chunks/{qpdf-HZMIFG4A.js → qpdf-TTX2DIUA.js} +2 -2
  59. package/dist/safe-bash/chunks/{sips-E7UBDP33.js → sips-XYS46JPJ.js} +2 -2
  60. package/dist/safe-bash/chunks/{soffice-ELASUWUK.js → soffice-TU73E5KL.js} +2 -2
  61. package/dist/safe-bash/chunks/{wkhtmltopdf-EPO6YCMG.js → wkhtmltopdf-FSZ2CHGE.js} +2 -2
  62. package/dist/safe-bash/command-chunks/{chunk-QBGA56UH.js → chunk-2ELYGJDD.js} +7 -7
  63. package/dist/safe-bash/command-chunks/{chunk-52PCQXD2.js → chunk-2NHI5F5S.js} +2 -1
  64. package/dist/safe-bash/command-chunks/{chunk-HDKVO47G.js → chunk-2SQEIUGJ.js} +3 -3
  65. package/dist/safe-bash/command-chunks/{chunk-5LSGEIZY.js → chunk-3HHCU5YU.js} +4 -3
  66. package/dist/safe-bash/command-chunks/{chunk-TF6OA2GK.js → chunk-3NV3HYT2.js} +1 -1
  67. package/dist/safe-bash/command-chunks/{chunk-2QHG43WJ.js → chunk-4BB2SWJ5.js} +1 -1
  68. package/dist/safe-bash/command-chunks/{chunk-IEXHHNOF.js → chunk-4J5CZ2DP.js} +2 -7
  69. package/dist/safe-bash/command-chunks/{chunk-WDHI3S6Y.js → chunk-4OOUQTQO.js} +1 -1
  70. package/dist/safe-bash/command-chunks/{chunk-YMONDXET.js → chunk-4ZQWGOZB.js} +2 -2
  71. package/dist/safe-bash/command-chunks/{chunk-L6DVEBW3.js → chunk-5BSTFCXG.js} +2 -2
  72. package/dist/safe-bash/command-chunks/{chunk-Q3DII3Q7.js → chunk-5PWJG2UK.js} +1 -1
  73. package/dist/safe-bash/command-chunks/{chunk-JMPP4TCW.js → chunk-5UBXNSFZ.js} +3 -2
  74. package/dist/safe-bash/command-chunks/{chunk-3NG75MOB.js → chunk-67GQA75T.js} +1 -1
  75. package/dist/safe-bash/command-chunks/{chunk-L6SU4S26.js → chunk-6B7WQIKB.js} +0 -7
  76. package/dist/safe-bash/command-chunks/{chunk-V6MSPQLA.js → chunk-6BNTBWIK.js} +4 -39
  77. package/dist/safe-bash/command-chunks/{chunk-JN7WIP6S.js → chunk-6KJ3LPI2.js} +2 -2
  78. package/dist/safe-bash/command-chunks/{chunk-HLDTOR7M.js → chunk-6ZVI7LUY.js} +1 -1
  79. package/dist/safe-bash/command-chunks/{chunk-X6NJC3IC.js → chunk-75OFBY5R.js} +1 -1
  80. package/dist/safe-bash/command-chunks/{chunk-MRW5HD2D.js → chunk-7O3E4LPT.js} +4 -22
  81. package/dist/safe-bash/command-chunks/{chunk-TEVJJPTC.js → chunk-7U7EXOXX.js} +1 -1
  82. package/dist/safe-bash/command-chunks/{chunk-6CYTRQ24.js → chunk-7VTKQUA5.js} +20 -17
  83. package/dist/safe-bash/command-chunks/{chunk-BZPAWTUL.js → chunk-AEF5BA3D.js} +1 -1
  84. package/dist/safe-bash/command-chunks/{chunk-63R3FEZJ.js → chunk-AIV5BF5W.js} +1 -1
  85. package/dist/safe-bash/command-chunks/{chunk-AYUTO323.js → chunk-AKJG2XD3.js} +2 -18
  86. package/dist/safe-bash/command-chunks/{chunk-J34TZVMW.js → chunk-ALDC4XP4.js} +0 -5
  87. package/dist/safe-bash/command-chunks/{chunk-CKXV2CLD.js → chunk-ARBYOQUZ.js} +1 -1
  88. package/dist/safe-bash/command-chunks/{chunk-44AHAB5O.js → chunk-BDSMROQZ.js} +1 -4
  89. package/dist/safe-bash/command-chunks/{chunk-53P53XFM.js → chunk-BPE5INLI.js} +1 -1
  90. package/dist/safe-bash/command-chunks/{chunk-OT4LZMLB.js → chunk-BR73BIOW.js} +1 -1
  91. package/dist/safe-bash/command-chunks/{chunk-WB5SVIG7.js → chunk-C5YYCQHW.js} +498 -88
  92. package/dist/safe-bash/command-chunks/{chunk-EUSPTFAX.js → chunk-CAP7ZJSY.js} +7 -7
  93. package/dist/safe-bash/command-chunks/{chunk-DWFLVJC6.js → chunk-CCRHMAU5.js} +2 -1
  94. package/dist/safe-bash/command-chunks/{chunk-GI4CJED2.js → chunk-CQTRW45K.js} +1 -1
  95. package/dist/safe-bash/command-chunks/{chunk-N2F74VRO.js → chunk-CZ7EN3JG.js} +1 -1
  96. package/dist/safe-bash/command-chunks/{chunk-KKG4BAFZ.js → chunk-DIEPXUM4.js} +6 -0
  97. package/dist/safe-bash/command-chunks/{chunk-QJAFJP2G.js → chunk-DZCY63VJ.js} +12 -10
  98. package/dist/safe-bash/command-chunks/{chunk-QUENU6GM.js → chunk-E55UKBIE.js} +3 -3
  99. package/dist/safe-bash/command-chunks/{chunk-HLGKIZ25.js → chunk-F6OYH562.js} +2 -0
  100. package/dist/safe-bash/command-chunks/{chunk-MC3VWLIZ.js → chunk-FDBUV4HJ.js} +28 -19
  101. package/dist/safe-bash/command-chunks/{chunk-7FKUC34S.js → chunk-FPVUD6TH.js} +6 -3
  102. package/dist/safe-bash/command-chunks/{chunk-E2LB7FRT.js → chunk-FXOA7RBK.js} +1 -1
  103. package/dist/safe-bash/command-chunks/{chunk-QWIDNAAK.js → chunk-FZTK4MFI.js} +3 -3
  104. package/dist/safe-bash/command-chunks/{chunk-K543PB3I.js → chunk-G66QUHIZ.js} +6 -35
  105. package/dist/safe-bash/command-chunks/{chunk-YJDV76GL.js → chunk-GFQZCKO6.js} +29 -19
  106. package/dist/safe-bash/command-chunks/{chunk-FKKB5X5V.js → chunk-GOB777HR.js} +1 -1
  107. package/dist/safe-bash/command-chunks/{chunk-IYPAQ7PH.js → chunk-GRBWW4SG.js} +6 -0
  108. package/dist/safe-bash/command-chunks/{chunk-PPNBNFAU.js → chunk-GYQ2HAKQ.js} +8 -8
  109. package/dist/safe-bash/command-chunks/{chunk-PJJUYO3R.js → chunk-II77KPZN.js} +2 -2
  110. package/dist/safe-bash/command-chunks/{chunk-VL67NWNS.js → chunk-JDYXY44P.js} +2 -2
  111. package/dist/safe-bash/command-chunks/{chunk-4QJOYXVB.js → chunk-JV7LBUTP.js} +1 -1
  112. package/dist/safe-bash/command-chunks/{chunk-IKS2YXZQ.js → chunk-K67MWWWH.js} +3 -3
  113. package/dist/safe-bash/command-chunks/{chunk-BKCNF5U3.js → chunk-KQLD3AED.js} +2 -2
  114. package/dist/safe-bash/command-chunks/{chunk-UMDIOL3O.js → chunk-KXU3IRUO.js} +1 -1
  115. package/dist/safe-bash/command-chunks/{chunk-QZF3SINC.js → chunk-LAOM65EE.js} +2 -2
  116. package/dist/safe-bash/command-chunks/{chunk-HFII3QYO.js → chunk-LWS62ISU.js} +46 -32
  117. package/dist/safe-bash/command-chunks/{chunk-BZDDAPSV.js → chunk-LWSBAWLT.js} +1 -1
  118. package/dist/safe-bash/command-chunks/{chunk-U6G67N23.js → chunk-MIXBO6U7.js} +18 -5
  119. package/dist/safe-bash/command-chunks/{chunk-JQ74HC37.js → chunk-MQFIPHIQ.js} +23 -50
  120. package/dist/safe-bash/command-chunks/{chunk-ZJBR5Q5I.js → chunk-MSFXC3OC.js} +4 -4
  121. package/dist/safe-bash/command-chunks/{chunk-NI7MKJPN.js → chunk-MTQH74CF.js} +3 -55
  122. package/dist/safe-bash/command-chunks/chunk-MWUZZWXK.js +354 -0
  123. package/dist/safe-bash/command-chunks/{chunk-RVLO4DYT.js → chunk-N4PFUSRM.js} +1 -1
  124. package/dist/safe-bash/command-chunks/{chunk-D4OP2BR3.js → chunk-NKFYQSES.js} +1 -2
  125. package/dist/safe-bash/command-chunks/{chunk-NGWB2YBL.js → chunk-O4JQSB7O.js} +1 -1
  126. package/dist/safe-bash/command-chunks/{chunk-7L24L4UO.js → chunk-OQU6UT6X.js} +2 -20
  127. package/dist/safe-bash/command-chunks/{chunk-TYCGMRLM.js → chunk-OYYV7ZAF.js} +1 -1
  128. package/dist/safe-bash/command-chunks/{chunk-SVULUDOP.js → chunk-P2N33UMN.js} +20 -81
  129. package/dist/safe-bash/command-chunks/{chunk-Q7Q5GM5S.js → chunk-P5APDEFB.js} +2 -2
  130. package/dist/safe-bash/command-chunks/{chunk-SAMH7SQE.js → chunk-PCEFOYA3.js} +237 -145
  131. package/dist/safe-bash/command-chunks/{chunk-3HXDA5PT.js → chunk-PMBFZXTK.js} +1 -1
  132. package/dist/safe-bash/command-chunks/{chunk-4Y3WVMK4.js → chunk-PV66YWHB.js} +1 -0
  133. package/dist/safe-bash/command-chunks/{chunk-AXK3H4PX.js → chunk-QJ33BHI4.js} +1 -1
  134. package/dist/safe-bash/command-chunks/{chunk-3LSOYLNV.js → chunk-QKFSRZGQ.js} +2 -2
  135. package/dist/safe-bash/command-chunks/{chunk-JZSNU2MY.js → chunk-QKJLP53H.js} +2 -2
  136. package/dist/safe-bash/command-chunks/{chunk-LC2MFKT4.js → chunk-RMWQAAO5.js} +24 -25
  137. package/dist/safe-bash/command-chunks/{chunk-QDTBMSBE.js → chunk-RO62EWX6.js} +2 -2
  138. package/dist/safe-bash/command-chunks/{chunk-4C6QI5BQ.js → chunk-RZZI24ZE.js} +4 -4
  139. package/dist/safe-bash/command-chunks/{chunk-PFAADCB5.js → chunk-SDNBCQ3X.js} +10 -24
  140. package/dist/safe-bash/command-chunks/{chunk-36O5OT7E.js → chunk-T35Y7YQD.js} +1 -1
  141. package/dist/safe-bash/command-chunks/{chunk-6HMX4CQS.js → chunk-TGSNCQSR.js} +44 -16
  142. package/dist/safe-bash/command-chunks/{chunk-5T7CRJHW.js → chunk-TIOCQVUQ.js} +4 -7
  143. package/dist/safe-bash/command-chunks/{chunk-T5H5UJQ3.js → chunk-TNOA7FCQ.js} +1 -1
  144. package/dist/safe-bash/command-chunks/{chunk-GN2TKLE7.js → chunk-TS65BJHG.js} +5 -5
  145. package/dist/safe-bash/command-chunks/{chunk-7RGB363W.js → chunk-TSCGT46G.js} +3 -2
  146. package/dist/safe-bash/command-chunks/{chunk-KBEURXFF.js → chunk-UN6WS55J.js} +3 -3
  147. package/dist/safe-bash/command-chunks/{chunk-SX2X3IH4.js → chunk-V2V5OCL3.js} +1 -1
  148. package/dist/safe-bash/command-chunks/{chunk-ERYJLO6G.js → chunk-V7A7DRTU.js} +1 -1
  149. package/dist/safe-bash/command-chunks/{chunk-5SHGJ7NO.js → chunk-VA5ZHYYA.js} +73 -33
  150. package/dist/safe-bash/command-chunks/{chunk-XETLEHZP.js → chunk-VPR5LQYX.js} +3 -2
  151. package/dist/safe-bash/command-chunks/{chunk-3DT2YOGW.js → chunk-VSRGNQCP.js} +3 -3
  152. package/dist/safe-bash/command-chunks/{chunk-J5SN3PZ3.js → chunk-VXSLJH7G.js} +53 -3
  153. package/dist/safe-bash/command-chunks/{chunk-PXYOWWMV.js → chunk-W7RAD4EW.js} +4 -3
  154. package/dist/safe-bash/command-chunks/{chunk-YGC6OS5O.js → chunk-WECIOOQB.js} +5 -8
  155. package/dist/safe-bash/command-chunks/{chunk-HHP343KT.js → chunk-WTECBRU4.js} +1 -1
  156. package/dist/safe-bash/command-chunks/{chunk-AO6Z5EQ7.js → chunk-WVE64WM2.js} +6 -5
  157. package/dist/safe-bash/command-chunks/{chunk-Z7RVSD5K.js → chunk-WVHONVZ4.js} +1 -1
  158. package/dist/safe-bash/command-chunks/{chunk-QNIMV57G.js → chunk-XNLFHHOC.js} +1 -1
  159. package/dist/safe-bash/command-chunks/{chunk-XAFSZDY2.js → chunk-XS72HTMA.js} +11 -0
  160. package/dist/safe-bash/command-chunks/{chunk-KYSPGS33.js → chunk-YIQACGEW.js} +2 -0
  161. package/dist/safe-bash/command-chunks/{chunk-NAY27PXB.js → chunk-YOFC45RK.js} +1 -1
  162. package/dist/safe-bash/command-chunks/{chunk-QI7LGHJJ.js → chunk-Z45N42QC.js} +21 -6
  163. package/dist/safe-bash/command-chunks/{chunk-67IQF5GC.js → chunk-ZYHTWNAE.js} +23 -9
  164. package/dist/safe-bash/command-chunks/{chunk-STC3LEWJ.js → chunk-ZYXH3B66.js} +5 -3
  165. package/dist/safe-bash/commands/bytes/compression/index.js +3 -2
  166. package/dist/safe-bash/commands/copy-preserve.d.ts +1 -0
  167. package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
  168. package/dist/safe-bash/commands/docx/index.browser.js +1 -1
  169. package/dist/safe-bash/commands/execution.js +19 -13
  170. package/dist/safe-bash/commands/factor/index.browser.js +2 -2
  171. package/dist/safe-bash/commands/filesystem.d.ts +1 -1
  172. package/dist/safe-bash/commands/filesystem.js +17 -13
  173. package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
  174. package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
  175. package/dist/safe-bash/commands/htmlq/index.d.ts +1 -1
  176. package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
  177. package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
  178. package/dist/safe-bash/commands/llm/index.browser.js +2 -2
  179. package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
  180. package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
  181. package/dist/safe-bash/commands/media/index.browser.js +1 -1
  182. package/dist/safe-bash/commands/network/curl.d.ts +1 -1
  183. package/dist/safe-bash/commands/network/curl.js +1 -3
  184. package/dist/safe-bash/commands/network/index.browser.js +4 -4
  185. package/dist/safe-bash/commands/network/platform-portable.d.ts +1 -5
  186. package/dist/safe-bash/commands/network/platform-portable.js +1 -26
  187. package/dist/safe-bash/commands/network/public.d.ts +2 -2
  188. package/dist/safe-bash/commands/network/public.js +2 -2
  189. package/dist/safe-bash/commands/network/transport.js +2 -2
  190. package/dist/safe-bash/commands/network/wget.d.ts +1 -1
  191. package/dist/safe-bash/commands/network/wget.js +1 -3
  192. package/dist/safe-bash/commands/node/filesystem.js +3 -2
  193. package/dist/safe-bash/commands/node/index.browser.js +8 -8
  194. package/dist/safe-bash/commands/node/types.js +1 -1
  195. package/dist/safe-bash/commands/op/index.browser.js +3 -3
  196. package/dist/safe-bash/commands/pr/index.browser.js +2 -2
  197. package/dist/safe-bash/commands/python/host-capabilities.js +31 -14
  198. package/dist/safe-bash/commands/python/index.browser.js +11 -11
  199. package/dist/safe-bash/commands/python/manifest.d.ts +1 -0
  200. package/dist/safe-bash/commands/python/manifest.js +6 -3
  201. package/dist/safe-bash/commands/python/shell-capability.d.ts +1 -0
  202. package/dist/safe-bash/commands/python/shell-capability.js +3 -2
  203. package/dist/safe-bash/commands/python/worker.browser.js +3 -3
  204. package/dist/safe-bash/commands/regex-execution/public.browser.js +4 -4
  205. package/dist/safe-bash/commands/safejs/runtime.js +16 -7
  206. package/dist/safe-bash/commands/standard.d.ts +1 -0
  207. package/dist/safe-bash/commands/standard.js +2 -1
  208. package/dist/safe-bash/commands/streams.js +6 -24
  209. package/dist/safe-bash/commands/text.js +268 -364
  210. package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
  211. package/dist/safe-bash/commands/xml/index.browser.js +2 -2
  212. package/dist/safe-bash/commands/yq/index.browser.js +2 -2
  213. package/dist/safe-bash/core.browser.js +1 -1
  214. package/dist/safe-bash/core.d.ts +6 -1
  215. package/dist/safe-bash/core.js +1 -1
  216. package/dist/safe-bash/full-core.browser.js +108 -104
  217. package/dist/safe-bash/jobs.browser.js +5 -5
  218. package/dist/safe-bash/opt-in/commands/dd/index.js +2 -0
  219. package/dist/safe-bash/opt-in/optional/commands/shuf/options.d.ts +1 -0
  220. package/dist/safe-bash/opt-in/optional/commands/shuf/options.js +2 -4
  221. package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +2 -1
  222. package/dist/safe-bash/optional-host.browser.js +11 -11
  223. package/dist/safe-bash/plugins/composition.d.ts +1 -0
  224. package/dist/safe-bash/plugins/composition.js +3 -8
  225. package/dist/safe-bash/plugins/index.browser.js +27 -27
  226. package/dist/safe-bash/registry-entry.browser.js +28 -28
  227. package/dist/safe-bash/shell/arrays/bindings.js +1 -1
  228. package/dist/safe-bash/shell/arrays/state.js +4 -0
  229. package/dist/safe-bash/shell/brace-expansion.js +1 -1
  230. package/dist/safe-bash/shell/dynamic-variables.d.ts +10 -0
  231. package/dist/safe-bash/shell/dynamic-variables.js +25 -0
  232. package/dist/safe-bash/shell/parser.js +8 -1
  233. package/dist/safe-bash/shell/runtime.d.ts +4 -4
  234. package/dist/safe-bash/shell/runtime.js +291 -741
  235. package/dist/safe-bash/shell/shell.js +2 -31
  236. package/dist/safe-bash/shell-entry.browser.js +25 -25
  237. package/dist/safe-bash/trap.browser.js +4 -4
  238. package/dist/safe-bash/yq-browser/index.js +1 -1
  239. package/dist/safe-bash-base-encoding-engine/base.js +2 -2
  240. package/dist/safe-bash-base-encoding-engine/shared.js +1 -1
  241. package/dist/safe-bash-byte-input-engine/index.d.ts +3 -2
  242. package/dist/safe-bash-byte-input-engine/index.js +4 -1
  243. package/dist/safe-bash-checksum-engine/index.js +13 -6
  244. package/dist/safe-bash-command-apply-patch/apply.d.ts +1 -1
  245. package/dist/safe-bash-command-apply-patch/apply.js +4 -3
  246. package/dist/safe-bash-command-apply-patch/index.js +3 -3
  247. package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
  248. package/dist/safe-bash-command-apply-patch/parser.js +1 -1
  249. package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
  250. package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
  251. package/dist/safe-bash-command-awk/awk-syntax.d.ts +1 -1
  252. package/dist/safe-bash-command-awk/awk-syntax.js +2 -2
  253. package/dist/safe-bash-command-awk/awk-values.js +1 -1
  254. package/dist/safe-bash-command-awk/awk.js +5 -5
  255. package/dist/safe-bash-command-awk/index.js +5 -5
  256. package/dist/safe-bash-command-bc/index.d.ts +2 -0
  257. package/dist/safe-bash-command-bc/index.js +123 -92
  258. package/dist/safe-bash-command-column/column.js +5 -5
  259. package/dist/safe-bash-command-column/display.d.ts +1 -1
  260. package/dist/safe-bash-command-column/display.js +1 -1
  261. package/dist/safe-bash-command-column/index.js +5 -5
  262. package/dist/safe-bash-command-column/internal.d.ts +0 -2
  263. package/dist/safe-bash-command-column/internal.js +1 -1
  264. package/dist/safe-bash-command-column/layout.js +4 -4
  265. package/dist/safe-bash-command-column/table.js +2 -2
  266. package/dist/safe-bash-command-comm/comm.js +1 -1
  267. package/dist/safe-bash-command-comm/index.js +1 -1
  268. package/dist/safe-bash-command-csvcut/index.d.ts +1 -0
  269. package/dist/safe-bash-command-csvcut/index.js +1 -0
  270. package/dist/safe-bash-command-csvgrep/index.d.ts +1 -0
  271. package/dist/safe-bash-command-csvgrep/index.js +2 -2
  272. package/dist/safe-bash-command-csvkit/index.js +9 -9
  273. package/dist/safe-bash-command-csvkit/sync-support.js +1 -1
  274. package/dist/safe-bash-command-curl/curl.js +1 -1
  275. package/dist/safe-bash-command-curl/index.js +1 -1
  276. package/dist/safe-bash-command-dd/index.js +2 -0
  277. package/dist/safe-bash-command-diff/diff.js +1 -1
  278. package/dist/safe-bash-command-diff/index.js +1 -1
  279. package/dist/safe-bash-command-exiftool/index.d.ts +1 -0
  280. package/dist/safe-bash-command-fd/index.js +9 -9
  281. package/dist/safe-bash-command-ffmpeg/index.js +31 -8
  282. package/dist/safe-bash-command-file/index.js +1 -1
  283. package/dist/safe-bash-command-file/shared.js +1 -1
  284. package/dist/safe-bash-command-find/find.js +1 -1
  285. package/dist/safe-bash-command-find/index.js +1 -1
  286. package/dist/safe-bash-command-gzip/index.js +3 -2
  287. package/dist/safe-bash-command-hexdump/command.js +4 -4
  288. package/dist/safe-bash-command-hexdump/custom.d.ts +24 -0
  289. package/dist/safe-bash-command-hexdump/index.js +4 -4
  290. package/dist/safe-bash-command-hexdump/internal.d.ts +2 -0
  291. package/dist/safe-bash-command-hexdump/internal.js +1 -1
  292. package/dist/safe-bash-command-hexdump/io.js +2 -2
  293. package/dist/safe-bash-command-hexdump/options.d.ts +3 -0
  294. package/dist/safe-bash-command-hexdump/options.js +2 -2
  295. package/dist/safe-bash-command-hostname/index.js +1 -1
  296. package/dist/safe-bash-command-html-to-markdown/budget.js +1 -1
  297. package/dist/safe-bash-command-html-to-markdown/entities.js +3 -3
  298. package/dist/safe-bash-command-html-to-markdown/index.js +6 -6
  299. package/dist/safe-bash-command-html-to-markdown/input.js +5 -5
  300. package/dist/safe-bash-command-html-to-markdown/parser.d.ts +1 -0
  301. package/dist/safe-bash-command-html-to-markdown/parser.js +4 -4
  302. package/dist/safe-bash-command-html-to-markdown/render.js +5 -5
  303. package/dist/safe-bash-command-html-to-markdown/text.js +2 -2
  304. package/dist/safe-bash-command-htmlq/index.d.ts +1 -0
  305. package/dist/safe-bash-command-htmlq/index.js +27 -9
  306. package/dist/safe-bash-command-iconv/codec.js +1 -1
  307. package/dist/safe-bash-command-iconv/command.js +2 -2
  308. package/dist/safe-bash-command-iconv/index.js +2 -2
  309. package/dist/safe-bash-command-imagemagick/index.js +24 -6
  310. package/dist/safe-bash-command-join/index.js +1 -1
  311. package/dist/safe-bash-command-join/join.js +1 -1
  312. package/dist/safe-bash-command-jq/index.js +1 -1
  313. package/dist/safe-bash-command-jq/jq.js +1 -1
  314. package/dist/safe-bash-command-less/index.js +43 -28
  315. package/dist/safe-bash-command-mmdc/index.d.ts +1 -0
  316. package/dist/safe-bash-command-numfmt/index.js +0 -11
  317. package/dist/safe-bash-command-od/index.js +101 -68
  318. package/dist/safe-bash-command-pandoc/command.js +1 -1
  319. package/dist/safe-bash-command-pandoc/index.js +1 -1
  320. package/dist/safe-bash-command-paste/index.js +1 -1
  321. package/dist/safe-bash-command-paste/paste.js +1 -1
  322. package/dist/safe-bash-command-pathchk/index.js +3 -13
  323. package/dist/safe-bash-command-pdfimages/index.js +27 -11
  324. package/dist/safe-bash-command-pdfinfo/index.js +19 -10
  325. package/dist/safe-bash-command-pdftk/index.js +3 -3
  326. package/dist/safe-bash-command-pdftoppm/index.js +26 -10
  327. package/dist/safe-bash-command-pdftotext/index.js +27 -13
  328. package/dist/safe-bash-command-qpdf/index.js +5 -5
  329. package/dist/safe-bash-command-sed/index.js +1 -1
  330. package/dist/safe-bash-command-sed/sed.js +1 -1
  331. package/dist/safe-bash-command-shuf/options.d.ts +1 -0
  332. package/dist/safe-bash-command-shuf/options.js +2 -4
  333. package/dist/safe-bash-command-shuf/shuf.js +2 -1
  334. package/dist/safe-bash-command-soffice/index.js +20 -16
  335. package/dist/safe-bash-command-split/index.js +3 -3
  336. package/dist/safe-bash-command-split/io.js +1 -1
  337. package/dist/safe-bash-command-split/outputs.js +2 -2
  338. package/dist/safe-bash-command-split/split.js +3 -3
  339. package/dist/safe-bash-command-sqlite3/btree.d.ts +1 -0
  340. package/dist/safe-bash-command-sqlite3/engine.d.ts +6 -0
  341. package/dist/safe-bash-command-sqlite3/index.js +284 -85
  342. package/dist/safe-bash-command-ssconvert/commands.js +9 -9
  343. package/dist/safe-bash-command-ssconvert/core.js +8 -8
  344. package/dist/safe-bash-command-ssconvert/formats/csv.js +9 -9
  345. package/dist/safe-bash-command-ssconvert/formats/ods.js +8 -8
  346. package/dist/safe-bash-command-ssconvert/formats/spreadsheetml.js +2 -2
  347. package/dist/safe-bash-command-ssconvert/formats/xls.js +9 -9
  348. package/dist/safe-bash-command-ssconvert/formats/xlsx.js +8 -8
  349. package/dist/safe-bash-command-ssconvert/index.js +20 -20
  350. package/dist/safe-bash-command-tar/extract.js +1 -1
  351. package/dist/safe-bash-command-tar/index.js +5 -4
  352. package/dist/safe-bash-command-tar/modes.js +2 -2
  353. package/dist/safe-bash-command-tree/arguments.js +3 -3
  354. package/dist/safe-bash-command-tree/charset.js +1 -1
  355. package/dist/safe-bash-command-tree/index.js +4 -4
  356. package/dist/safe-bash-command-tree/io.js +1 -1
  357. package/dist/safe-bash-command-tree/pattern.js +2 -2
  358. package/dist/safe-bash-command-tree/tree.js +4 -4
  359. package/dist/safe-bash-command-unrtf/index.js +14 -7
  360. package/dist/safe-bash-command-unzip/index.js +1 -1
  361. package/dist/safe-bash-command-unzip/unzip.js +1 -1
  362. package/dist/safe-bash-command-wget/index.js +1 -1
  363. package/dist/safe-bash-command-wget/wget.js +1 -1
  364. package/dist/safe-bash-command-xan/argv.d.ts +1 -1
  365. package/dist/safe-bash-command-xan/argv.js +1 -1
  366. package/dist/safe-bash-command-xan/commands.js +5 -3
  367. package/dist/safe-bash-command-xan/csv.d.ts +1 -1
  368. package/dist/safe-bash-command-xan/csv.js +1 -1
  369. package/dist/safe-bash-command-xan/index.js +7 -7
  370. package/dist/safe-bash-command-xan/io.js +3 -3
  371. package/dist/safe-bash-command-xmllint/index.js +1 -1
  372. package/dist/safe-bash-command-xxd/index.js +105 -91
  373. package/dist/safe-bash-command-xz/command.d.ts +2 -0
  374. package/dist/safe-bash-command-xz/index.d.ts +1 -1
  375. package/dist/safe-bash-command-xz/index.js +8 -0
  376. package/dist/safe-bash-command-yq/query.js +1 -1
  377. package/dist/safe-bash-command-zip/index.js +1 -1
  378. package/dist/safe-bash-command-zip/zip.js +1 -1
  379. package/dist/safe-bash-contracts/escaping.js +3 -3
  380. package/dist/safe-bash-contracts/filesystem-output.js +2 -2
  381. package/dist/safe-bash-contracts/index.d.ts +1 -0
  382. package/dist/safe-bash-contracts/index.js +7 -3
  383. package/dist/safe-bash-contracts/io.d.ts +4 -1
  384. package/dist/safe-bash-contracts/io.js +3 -1
  385. package/dist/safe-bash-contracts/managed-abort.d.ts +10 -0
  386. package/dist/safe-bash-contracts/output.js +2 -2
  387. package/dist/safe-bash-diff-engine/index.js +1 -1
  388. package/dist/safe-bash-diff-engine/shared.d.ts +3 -2
  389. package/dist/safe-bash-diff-engine/shared.js +1 -1
  390. package/dist/safe-bash-io-engine/commands/archive/internal.js +5 -23
  391. package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
  392. package/dist/safe-bash-io-engine/commands/text-programs/shared.js +33 -44
  393. package/dist/safe-bash-io-engine/internal.js +1 -1
  394. package/dist/safe-bash-io-engine/shell/pattern.js +1 -1
  395. package/dist/safe-bash-io-engine/shell/string-operations.js +1 -1
  396. package/dist/safe-bash-mcp/index.browser.d.ts +155 -35
  397. package/dist/safe-bash-mcp/index.browser.js +416 -0
  398. package/dist/safe-bash-mcp/index.d.ts +54 -2
  399. package/dist/safe-bash-mcp/index.js +283 -89
  400. package/dist/safe-bash-network-engine/aggregate.js +2 -2
  401. package/dist/safe-bash-network-engine/args.js +4 -4
  402. package/dist/safe-bash-network-engine/authorizer.js +1 -1
  403. package/dist/safe-bash-network-engine/body.js +6 -6
  404. package/dist/safe-bash-network-engine/decode.d.ts +1 -1
  405. package/dist/safe-bash-network-engine/decode.js +3 -4
  406. package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
  407. package/dist/safe-bash-network-engine/form-content-type.js +2 -2
  408. package/dist/safe-bash-network-engine/form-headers.js +2 -2
  409. package/dist/safe-bash-network-engine/glob.js +1 -1
  410. package/dist/safe-bash-network-engine/index.js +4 -4
  411. package/dist/safe-bash-network-engine/input.js +6 -6
  412. package/dist/safe-bash-network-engine/output.js +2 -2
  413. package/dist/safe-bash-network-engine/platform-portable.js +3 -3
  414. package/dist/safe-bash-network-engine/shared.js +2 -2
  415. package/dist/safe-bash-network-engine/types.d.ts +7 -2
  416. package/dist/safe-bash-network-engine/types.js +1 -1
  417. package/dist/safe-bash-network-engine/url.js +2 -2
  418. package/dist/safe-bash-query-engine/capture.js +3 -3
  419. package/dist/safe-bash-query-engine/delpaths.js +3 -3
  420. package/dist/safe-bash-query-engine/formats.js +2 -2
  421. package/dist/safe-bash-query-engine/index.js +11 -11
  422. package/dist/safe-bash-query-engine/indices.js +3 -3
  423. package/dist/safe-bash-query-engine/input.js +1 -1
  424. package/dist/safe-bash-query-engine/interpreter.js +9 -9
  425. package/dist/safe-bash-query-engine/parser.js +1 -1
  426. package/dist/safe-bash-query-engine/query-core.js +11 -11
  427. package/dist/safe-bash-query-engine/regex.js +4 -4
  428. package/dist/safe-bash-query-engine/splits.js +5 -5
  429. package/dist/safe-bash-query-engine/values.js +2 -2
  430. package/dist/safe-bash-regex-engine/ere/matcher.js +102 -30
  431. package/dist/safe-bash-regex-engine/execution/bounded-provider.js +55 -67
  432. package/dist/safe-bash-regex-engine/execution/portable.d.ts +0 -1
  433. package/dist/safe-bash-regex-engine/execution/portable.js +6 -10
  434. package/dist/safe-bash-regex-engine/execution/protocol.d.ts +0 -5
  435. package/dist/safe-bash-regex-engine/execution/protocol.js +1 -3
  436. package/dist/safe-bash-regex-engine/index.js +6 -4
  437. package/dist/safe-bash-regex-engine/text/budget.d.ts +1 -0
  438. package/dist/safe-bash-regex-engine/text/budget.js +1 -1
  439. package/dist/safe-bash-regex-engine/text/regex.d.ts +14 -0
  440. package/dist/safe-bash-regex-engine/text/regex.js +6 -4
  441. package/dist/safe-bash-regex-engine/text/replacement-buffer.js +2 -2
  442. package/dist/safe-bash-regex-engine/text/rust-syntax.js +2 -2
  443. package/dist/safe-bash-search-engine/grep.js +189 -227
  444. package/dist/safe-bash-table-text-engine/table-text/internal.d.ts +7 -5
  445. package/dist/safe-bash-table-text-engine/table-text/internal.js +39 -21
  446. package/dist/safe-playwright-cloudflare/browser-trace-budget.js +6 -2
  447. package/dist/spreadsheet-engine/codecs/odf-hyperlinks.js +8 -2
  448. package/dist/spreadsheet-engine/formulas/functions/captured-bessel-phase.js +2 -2
  449. package/dist/spreadsheet-engine/formulas/label-references.js +54 -33
  450. package/dist/spreadsheet-engine/formulas/parser.js +3 -1
  451. package/dist/spreadsheet-engine/formulas/rewriting.js +13 -3
  452. package/dist/spreadsheet-format-xls/biff-data-tables.js +4 -6
  453. package/dist/spreadsheet-format-xls/biff-formulas.js +3 -0
  454. package/dist/spreadsheet-format-xls/biff-label-ranges.js +9 -6
  455. package/dist/spreadsheet-format-xls/biff.js +1 -1
  456. package/dist/xlsx-ast/xlsx.js +8 -5
  457. package/package.json +9 -8
  458. package/dist/safe-bash/command-chunks/chunk-KAGBORIC.js +0 -88
  459. /package/dist/safe-bash/command-chunks/{chunk-BWNXWI33.js → chunk-2LMZVE3I.js} +0 -0
@@ -2,7 +2,7 @@ import {
2
2
  cellValueFormat,
3
3
  functionDescriptors,
4
4
  parseNamedExpression
5
- } from "./chunk-4QJOYXVB.js";
5
+ } from "./chunk-JV7LBUTP.js";
6
6
  import {
7
7
  DEFAULT_SHEET_SIZE,
8
8
  MAX_SHEET_SIZE,
@@ -27,7 +27,7 @@ import {
27
27
  statisticsFunctionDescriptors,
28
28
  sylkGrammar,
29
29
  validSheetSize
30
- } from "./chunk-DWFLVJC6.js";
30
+ } from "./chunk-CCRHMAU5.js";
31
31
  import {
32
32
  init_buffer
33
33
  } from "./chunk-HX3SHTCE.js";
@@ -69,8 +69,14 @@ function rewriteReferences(document, edit) {
69
69
  if (id === void 0) return { row: { value: -1, relative: false }, column: { value: 0, relative: false } };
70
70
  next = { ...ref, sheet: document.sheetNames[id] };
71
71
  }
72
- if (edit.translation === "move" && target.sheet !== document.position.sheet && ref.workbook === void 0 && ref.sheet === void 0)
73
- next = { ...ref, sheet: document.sheetNames?.[document.position.sheet] ?? document.position.sheet };
72
+ if (edit.translation === "move" && target.sheet !== document.position.sheet && ref.workbook === void 0 && ref.sheet === void 0) {
73
+ const { sheetOffset: ignoredOffset, ...anchored } = ref;
74
+ next = {
75
+ ...anchored,
76
+ sheet: document.sheetNames?.[document.position.sheet] ?? document.position.sheet,
77
+ ...ref.sheetRelative === void 0 ? {} : { sheetRelative: false }
78
+ };
79
+ }
74
80
  const renamed = next.workbook === void 0 && next.sheet ? renamedSheet(next.sheet) : void 0;
75
81
  if (renamed !== void 0) next = { ...next, sheet: renamed };
76
82
  if (edit.translation === "move") for (const kind of ["row", "column"]) {
@@ -99,7 +105,12 @@ function rewriteReferences(document, edit) {
99
105
  if (JSON.stringify(comparable) !== JSON.stringify(ref)) unchanged = false;
100
106
  return next;
101
107
  };
102
- const first = rewrite(node.first), last = node.last ? rewrite(node.last) : void 0;
108
+ const first = rewrite(node.first);
109
+ let last = node.last ? rewrite(node.last) : void 0;
110
+ if (document.grammar.bracketReferences && node.first.sheet === void 0 && node.last?.sheet === void 0 && first.sheet !== void 0 && last?.sheet === first.sheet && last.sheetRelative === first.sheetRelative) {
111
+ const { sheet: ignoredSheet, ...inherited } = last;
112
+ last = inherited;
113
+ }
103
114
  if (node.label?.kind === "radical") {
104
115
  if (node.label.data) absorbedReferences.add(node.label.data);
105
116
  for (const ref of node.label.preceding ?? []) absorbedReferences.add(ref);
@@ -486,7 +497,16 @@ function createOdfXml(context, extended) {
486
497
 
487
498
  // packages/spreadsheet-engine/src/codecs/odf-hyperlinks.ts
488
499
  init_buffer();
489
- var linkGrammar = { ...excelGrammar, id: "odf-hyperlink", sheetSeparator: ".", absoluteSheetReferences: true };
500
+ var linkGrammar = {
501
+ ...excelGrammar,
502
+ id: "odf-hyperlink",
503
+ sheetSeparator: ".",
504
+ absoluteSheetReferences: true,
505
+ quoteSheetName(name) {
506
+ const letter = (c3) => c3 >= "A" && c3 <= "Z" || c3 >= "a" && c3 <= "z" || c3 === "_";
507
+ return name.length > 0 && letter(name[0]) && [...name].every((c3) => letter(c3) || c3 >= "0" && c3 <= "9") ? name : quoteFormulaString(name, "'", excelGrammar);
508
+ }
509
+ };
490
510
  function decodeFragment(source, charge) {
491
511
  let result2 = "";
492
512
  for (let at = 0; at < source.length; ) {
@@ -1679,9 +1699,11 @@ function resolveLabelReference(book, node, position, read, tick, anchorOnly = fa
1679
1699
  const coordinate = value && value.value + (value.relative ? position[axis] : 0);
1680
1700
  if (coordinate === void 0 || coordinate < 0 || coordinate >= (axis === "row" ? size.rows : size.columns)) return error("#REF!");
1681
1701
  }
1682
- if (range.firstRow !== range.lastRow && range.firstColumn !== range.lastColumn) return error("#REF!");
1683
- if (!label.scalar || range.firstRow === range.lastRow && range.firstColumn === range.lastColumn) return { kind: "range", ...range };
1684
- if (range.firstRow === range.lastRow) return position.column < range.firstColumn || position.column > range.lastColumn ? error("#REF!") : { kind: "range", ...range, firstColumn: position.column, lastColumn: position.column };
1702
+ const rowLabel = range.firstRow === range.lastRow && row === range.firstRow && (column === range.firstColumn - 1 || column === range.lastColumn + 1);
1703
+ const columnLabel2 = range.firstColumn === range.lastColumn && column === range.firstColumn && (row === range.firstRow - 1 || row === range.lastRow + 1);
1704
+ if (rowLabel === columnLabel2 || label.preceding && !columnLabel2) return error("#REF!");
1705
+ if (!label.scalar) return { kind: "range", ...range };
1706
+ if (rowLabel) return position.column < range.firstColumn || position.column > range.lastColumn ? error("#REF!") : { kind: "range", ...range, firstColumn: position.column, lastColumn: position.column };
1685
1707
  return position.row < range.firstRow || position.row > range.lastRow ? error("#REF!") : { kind: "range", ...range, firstRow: position.row, lastRow: position.row };
1686
1708
  }
1687
1709
  const pairs = (sheet.labelRanges ?? []).filter((pair) => {
@@ -1695,7 +1717,7 @@ function resolveLabelReference(book, node, position, read, tick, anchorOnly = fa
1695
1717
  const columnLabel = label.axis === "column";
1696
1718
  const maximum = (columnLabel ? size.rows : size.columns) - 1;
1697
1719
  const ownAxis = columnLabel ? position.row : position.column;
1698
- const sameAxis = columnLabel ? position.column === column : position.row === row;
1720
+ const sameAxis = position.sheet === sheet.id && (columnLabel ? position.column === column : position.row === row);
1699
1721
  let start, end;
1700
1722
  if (!declared && label.semantics === "openformula") {
1701
1723
  if (!book.automaticLabelLookup) return error("#NAME?");
@@ -1751,10 +1773,10 @@ function resolveLabelReference(book, node, position, read, tick, anchorOnly = fa
1751
1773
  if (!book.automaticLabelLookup) return error("#NAME?");
1752
1774
  const value = read(sheet, row, column);
1753
1775
  if (value.kind !== "string" && value.kind !== "blank") return error("#NAME?");
1754
- start = Math.min((columnLabel ? row : column) + 1, maximum);
1776
+ start = (columnLabel ? row : column) + 1;
1755
1777
  end = maximum;
1756
1778
  if (sameAxis) {
1757
- if (ownAxis === start) start = Math.min(start + 1, maximum);
1779
+ if (ownAxis === start) start++;
1758
1780
  else if (ownAxis > start) end = ownAxis - 1;
1759
1781
  }
1760
1782
  for (const owner of [...book.sheets, ...book.detachedSheets ?? []]) {
@@ -1769,39 +1791,57 @@ function resolveLabelReference(book, node, position, read, tick, anchorOnly = fa
1769
1791
  }
1770
1792
  }
1771
1793
  }
1772
- if (start !== end && label.scalar) {
1794
+ if (start > end) return error("#REF!");
1795
+ if (label.scalar) {
1773
1796
  if (ownAxis < start || ownAxis > end) return error("#REF!");
1774
1797
  start = end = ownAxis;
1775
1798
  } else if (!declared && start !== end) {
1799
+ const rows = /* @__PURE__ */ new Map(), columns = /* @__PURE__ */ new Map();
1800
+ for (const cell of sheet.cells) {
1801
+ tick();
1802
+ if (cell.value.kind === "blank" && !cell.formula) continue;
1803
+ const rowCells = rows.get(cell.row) ?? [], columnCells = columns.get(cell.column) ?? [];
1804
+ rowCells.push(cell.column);
1805
+ columnCells.push(cell.row);
1806
+ rows.set(cell.row, rowCells);
1807
+ columns.set(cell.column, columnCells);
1808
+ }
1809
+ for (const index of [rows, columns]) for (const coordinates of index.values()) {
1810
+ tick();
1811
+ coordinates.sort((a2, b2) => {
1812
+ tick();
1813
+ return a2 - b2;
1814
+ });
1815
+ }
1816
+ const occupied = (index, axis, low, high) => {
1817
+ tick();
1818
+ const coordinates = index.get(axis);
1819
+ if (!coordinates) return false;
1820
+ let first = 0, last = coordinates.length;
1821
+ while (first < last) {
1822
+ tick();
1823
+ const middle = Math.floor((first + last) / 2);
1824
+ if (coordinates[middle] < low) first = middle + 1;
1825
+ else last = middle;
1826
+ }
1827
+ return first < coordinates.length && coordinates[first] <= high;
1828
+ };
1776
1829
  let left = columnLabel ? column : start, right = left;
1777
1830
  let top = columnLabel ? start : row, bottom = top;
1778
1831
  for (; ; ) {
1779
- let extendLeft = false, extendRight = false, extendTop = false, extendBottom = false;
1780
- for (const cell of sheet.cells) {
1781
- tick();
1782
- if (cell.value.kind === "blank" && !cell.formula) continue;
1783
- if (cell.row >= top - 1 && cell.row <= bottom + 1) {
1784
- if (cell.column === left - 1) extendLeft = true;
1785
- if (cell.column === right + 1) extendRight = true;
1786
- }
1787
- }
1832
+ const extendLeft = occupied(columns, left - 1, top - 1, bottom + 1);
1833
+ const extendRight = occupied(columns, right + 1, top - 1, bottom + 1);
1788
1834
  if (extendLeft) left--;
1789
1835
  if (extendRight) right++;
1790
- for (const cell of sheet.cells) {
1791
- tick();
1792
- if (cell.value.kind === "blank" && !cell.formula) continue;
1793
- if (cell.column >= left && cell.column <= right) {
1794
- if (cell.row === top - 1) extendTop = true;
1795
- if (cell.row === bottom + 1) extendBottom = true;
1796
- }
1797
- }
1836
+ const extendTop = occupied(rows, top - 1, left, right);
1837
+ const extendBottom = occupied(rows, bottom + 1, left, right);
1798
1838
  if (extendTop) top--;
1799
1839
  if (extendBottom) bottom++;
1800
1840
  if (!extendLeft && !extendRight && !extendTop && !extendBottom) break;
1801
1841
  }
1802
1842
  end = Math.min(end, columnLabel ? bottom : right);
1803
1843
  if (sameAxis && ownAxis >= start && ownAxis <= end) {
1804
- if (ownAxis === start) start = Math.min(start + 1, maximum);
1844
+ if (ownAxis === start) start++;
1805
1845
  else end = ownAxis - 1;
1806
1846
  }
1807
1847
  }
@@ -17472,7 +17512,8 @@ function besselPhaseDomain(x, order) {
17472
17512
  function capturedBesselPhase(x, order, secondKind, host) {
17473
17513
  let sum2 = 1, term = 1;
17474
17514
  const x2 = x * x, n2 = order * order;
17475
- if (!Number.isFinite(x2) || !Number.isFinite(n2)) {
17515
+ const inverse2 = divide3([1, 0], product2(x, x)), square = product2(order, order);
17516
+ if (!Number.isFinite(x2) || !Number.isFinite(n2) || !Number.isFinite(inverse2[0] + inverse2[1]) || !Number.isFinite(square[0] + square[1])) {
17476
17517
  if (x > 1 / Number.EPSILON) host.diagnostic?.({ code: "numeric-warning", severity: "warning", message: "Reduced accuracy for very large trigonometric arguments" });
17477
17518
  return NaN;
17478
17519
  }
@@ -17485,7 +17526,6 @@ function capturedBesselPhase(x, order, secondKind, host) {
17485
17526
  if (Math.abs(term) < Number.EPSILON * Math.abs(sum2)) break;
17486
17527
  }
17487
17528
  const amplitude2 = Math.sqrt(sum2 / (x * (Math.PI / 2)));
17488
- const inverse2 = divide3([1, 0], product2(x, x)), square = product2(order, order);
17489
17529
  const t = [[1, 0]], s = [[1, 0]];
17490
17530
  let phase = [0, 0], last = Number.MAX_VALUE;
17491
17531
  for (let n = 1; n < 400; n++) {
@@ -4,6 +4,7 @@ import {
4
4
 
5
5
  // packages/safe-bash-command-zip/src/zip.ts
6
6
  init_buffer();
7
+ import { withInputByteBudget } from "../../safe-bash-contracts/index.js";
7
8
  import { collectBytes, dirname, getCommandArguments, writeBytes } from "../../safe-bash-contracts/index.js";
8
9
  import { publicDiagnosticMessage } from "../../safe-bash-contracts/diagnostics.js";
9
10
  import { escapeText } from "../../safe-bash-contracts/escaping.js";
@@ -1046,7 +1047,7 @@ ${warning}` : ""} ${dots ? `${dots} ` : ""}(${entry.method === 14 ? `lzma ${perc
1046
1047
  }
1047
1048
  function createZipCommand(options = {}) {
1048
1049
  const configured = settings(options);
1049
- return { name: "zip", description: "Create or update bounded ZIP archives in the virtual filesystem", async execute(original) {
1050
+ return { name: "zip", description: "Create or update bounded ZIP archives in the virtual filesystem", execute: withInputByteBudget(async (original) => {
1050
1051
  const limits = invocationLimits(configured, original);
1051
1052
  original.signal.throwIfAborted();
1052
1053
  const scope = new ZipScope(original, limits);
@@ -1219,7 +1220,7 @@ zip error: ${error.label} (${zipPublicText(error.message)})
1219
1220
  original.signal.throwIfAborted();
1220
1221
  }
1221
1222
  }
1222
- } };
1223
+ }) };
1223
1224
  }
1224
1225
 
1225
1226
  export {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  regexError,
3
3
  regexFlags
4
- } from "./chunk-BKCNF5U3.js";
4
+ } from "./chunk-KQLD3AED.js";
5
5
  import {
6
6
  extendedPattern
7
- } from "./chunk-GI4CJED2.js";
7
+ } from "./chunk-CQTRW45K.js";
8
8
  import {
9
9
  describe
10
- } from "./chunk-UMDIOL3O.js";
10
+ } from "./chunk-KXU3IRUO.js";
11
11
  import {
12
12
  JqError
13
13
  } from "./chunk-QP4R6GLA.js";
@@ -55,6 +55,32 @@ function notifyManagedAbortWaiters(signal) {
55
55
  }
56
56
  }
57
57
  }
58
+ var abortSubscriptions = /* @__PURE__ */ new WeakMap();
59
+ function subscribeAbort(signal, callback) {
60
+ signal.throwIfAborted();
61
+ let entry = abortSubscriptions.get(signal);
62
+ if (!entry) {
63
+ const waiters = /* @__PURE__ */ new Set();
64
+ const listener = () => {
65
+ abortSubscriptions.delete(signal);
66
+ signal.removeEventListener("abort", listener);
67
+ const pending = [...waiters];
68
+ waiters.clear();
69
+ for (const waiter of pending) waiter();
70
+ };
71
+ entry = { waiters, listener };
72
+ abortSubscriptions.set(signal, entry);
73
+ signal.addEventListener("abort", listener, { once: true });
74
+ }
75
+ entry.waiters.add(callback);
76
+ return () => {
77
+ entry.waiters.delete(callback);
78
+ if (entry.waiters.size === 0 && abortSubscriptions.get(signal) === entry) {
79
+ abortSubscriptions.delete(signal);
80
+ signal.removeEventListener("abort", entry.listener);
81
+ }
82
+ };
83
+ }
58
84
 
59
85
  // packages/safe-bash-contracts/src/io.ts
60
86
  var outputFailure = /* @__PURE__ */ Symbol("output failure");
@@ -816,11 +842,13 @@ function createLegacyWritable(pipe) {
816
842
  };
817
843
  }
818
844
  var InputByteBudget = class _InputByteBudget {
819
- constructor(maximum = Infinity) {
845
+ constructor(maximum = Infinity, host) {
820
846
  this.maximum = maximum;
847
+ this.host = host;
821
848
  _InputByteBudget.limit(maximum);
822
849
  }
823
850
  maximum;
851
+ host;
824
852
  #used = 0;
825
853
  #failure;
826
854
  static limit(value = Infinity) {
@@ -839,6 +867,7 @@ var InputByteBudget = class _InputByteBudget {
839
867
  this.#failure = new FsError("EFBIG", { message: "command input byte limit exceeded" });
840
868
  throw this.#failure;
841
869
  }
870
+ this.host?.check(this.#used + bytes);
842
871
  this.#used += bytes;
843
872
  }
844
873
  async run(context, execute) {
@@ -847,13 +876,29 @@ var InputByteBudget = class _InputByteBudget {
847
876
  ...context,
848
877
  stdin: this.read(context.stdin, context.signal),
849
878
  fs: Object.create(fs, {
850
- readFile: { value: async (...args) => {
879
+ readFile: { configurable: true, value: async (...args) => {
851
880
  this.assertOpen();
852
881
  const bytes = await fs.readFile(...args);
853
882
  this.charge(bytes.byteLength);
854
883
  return bytes;
855
884
  } },
856
- ...fs.readStream ? { readStream: { value: (...args) => {
885
+ ...fs.openReadFile ? { openReadFile: { configurable: true, value: async (...args) => {
886
+ this.assertOpen();
887
+ const handle = await fs.openReadFile(...args);
888
+ return new Proxy(Object.create(handle), {
889
+ get: (_target, key) => {
890
+ if (key === "read") return async (...readArgs) => {
891
+ this.assertOpen();
892
+ const bytes = await handle.read(...readArgs);
893
+ this.charge(bytes.byteLength);
894
+ return bytes;
895
+ };
896
+ const value = Reflect.get(handle, key, handle);
897
+ return typeof value === "function" ? value.bind(handle) : value;
898
+ }
899
+ });
900
+ } } } : {},
901
+ ...fs.readStream ? { readStream: { configurable: true, value: (...args) => {
857
902
  this.assertOpen();
858
903
  return this.read(fs.readStream(...args), context.signal);
859
904
  } } } : {}
@@ -886,12 +931,16 @@ var InputByteBudget = class _InputByteBudget {
886
931
  signal.throwIfAborted();
887
932
  }
888
933
  };
934
+ function withInputByteBudget(execute) {
935
+ return (context) => context.inputBudget ? new InputByteBudget(Infinity, context.inputBudget).run(context, execute) : execute(context);
936
+ }
889
937
 
890
938
  export {
891
939
  managedSignalSymbol,
892
940
  addManagedAbortWaiter,
893
941
  removeManagedAbortWaiter,
894
942
  notifyManagedAbortWaiters,
943
+ subscribeAbort,
895
944
  outputFailure,
896
945
  createBufferedOutput,
897
946
  createBytePipe,
@@ -900,6 +949,7 @@ export {
900
949
  pipeBytes,
901
950
  collectText,
902
951
  InputByteBudget,
952
+ withInputByteBudget,
903
953
  collectBytes2 as collectBytes,
904
954
  readBytes2 as readBytes,
905
955
  toByteSource
@@ -5,7 +5,7 @@ import {
5
5
  // packages/safe-bash-command-paste/src/paste.ts
6
6
  init_buffer();
7
7
  import { diagnostic } from "../../safe-bash-io-engine/internal.js";
8
- import { argument, Budget, command, empty, encode, fail, Inputs, settings } from "../../safe-bash-table-text-engine/table-text/internal.js";
8
+ import { argument, command, empty, encode, fail, Inputs, settings } from "../../safe-bash-table-text-engine/table-text/internal.js";
9
9
  function delimiters(text) {
10
10
  const characters = Array.from(text), result = [];
11
11
  const escapes = { b: "\b", f: "\f", n: "\n", r: "\r", t: " ", v: "\v" };
@@ -26,8 +26,8 @@ function delimiters(text) {
26
26
  }
27
27
  function createPasteCommand(options = {}) {
28
28
  const limits = settings(options);
29
- return command("paste", async (context) => {
30
- const budget = new Budget(context, limits), files = [];
29
+ return command("paste", limits, async (context, budget) => {
30
+ const files = [];
31
31
  let serial = false, separator = 10, list = [Uint8Array.of(9)], literal = false;
32
32
  for (let index = 0; index < context.args.length; index++) {
33
33
  const token = context.args[index];
@@ -78,6 +78,7 @@ function createPasteCommand(options = {}) {
78
78
  reader = await inputs.open(file);
79
79
  } catch (error) {
80
80
  context.signal.throwIfAborted();
81
+ if (budget.hasPendingOutput()) await budget.flushOutput();
81
82
  await diagnostic(context, error);
82
83
  status = 1;
83
84
  continue;
@@ -879,14 +879,11 @@ function tryProcessFlatSelectProjectChunkSync(rawChunk, budget, condKey, outKeys
879
879
  if (rawChunk[0] !== 123 || rawChunk[len - 1] !== 10) return -1;
880
880
  const totalAfter = budget.inputBytes + len;
881
881
  if (totalAfter > budget.maxInputBytesSmi && totalAfter > budget.limits.maxInputBytes) return -1;
882
- let plan = planHolder?.cachedSchemaPlan;
883
- if (!plan) {
884
- const firstNl = rawChunk.indexOf(10, 0);
885
- if (firstNl < 2 || firstNl > 16384) return -1;
886
- plan = getOrCreateFlatSchemaPlan(rawChunk, firstNl, condKey, outKeys, srcKeys);
887
- if (!plan) return -1;
888
- if (planHolder) planHolder.cachedSchemaPlan = plan;
889
- }
882
+ const firstNl = rawChunk.indexOf(10, 0);
883
+ if (firstNl < 2 || firstNl > 16384) return -1;
884
+ const plan = getOrCreateFlatSchemaPlan(rawChunk, firstNl, condKey, outKeys, srcKeys);
885
+ if (planHolder) planHolder.cachedSchemaPlan = plan;
886
+ if (!plan) return -1;
890
887
  let pos = 0;
891
888
  let outPos = 0;
892
889
  let lineCount = 0;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Builder
3
- } from "./chunk-4Y3WVMK4.js";
3
+ } from "./chunk-PV66YWHB.js";
4
4
  import {
5
5
  init_buffer
6
6
  } from "./chunk-HX3SHTCE.js";
@@ -4,7 +4,7 @@ import {
4
4
 
5
5
  // packages/safe-bash-command-join/src/join.ts
6
6
  init_buffer();
7
- import { argument, Budget, command, compare, empty, encode, fail, Inputs, OrderCheck, settings } from "../../safe-bash-table-text-engine/table-text/internal.js";
7
+ import { argument, command, compare, empty, encode, fail, Inputs, OrderCheck, settings } from "../../safe-bash-table-text-engine/table-text/internal.js";
8
8
  function number(value, label) {
9
9
  if (!/^\+?[0-9]+$/u.test(value) || !Number.isSafeInteger(Number(value)) || Number(value) < 1) fail(`invalid ${label}: ${value}`);
10
10
  return Number(value);
@@ -167,9 +167,9 @@ function split(bytes, options, budget) {
167
167
  }
168
168
  function createJoinCommand(factory = {}) {
169
169
  const limits = settings(factory);
170
- return command("join", async (context) => {
171
- const budget = new Budget(context, limits), options = parse(context, budget);
172
- const inputs = new Inputs(context, budget, options.separator), order = new OrderCheck(options.order, context);
170
+ return command("join", limits, async (context, budget) => {
171
+ const options = parse(context, budget);
172
+ const inputs = new Inputs(context, budget, options.separator), order = new OrderCheck(options.order, context, budget);
173
173
  const terminator = Uint8Array.of(options.separator), delimiter = Uint8Array.of(options.delimiter ?? 32);
174
174
  try {
175
175
  const readers = [await inputs.open(options.files[0]), await inputs.open(options.files[1])];
@@ -283,13 +283,13 @@ function createJoinCommand(factory = {}) {
283
283
  }
284
284
  const comparison = compare(rows[0].key, rows[1].key, options.fold);
285
285
  if (comparison !== 0) {
286
+ await order.markUnpaired();
286
287
  const file = comparison < 0 ? 0 : 1;
287
288
  if (options.unpaired.has(file)) await emit(file === 0 ? rows[file] : void 0, file === 1 ? rows[file] : void 0);
288
289
  {
289
290
  const nr = next(file);
290
291
  rows[file] = nr instanceof Promise ? await nr : nr;
291
292
  }
292
- order.unpaired = true;
293
293
  continue;
294
294
  }
295
295
  const key = rows[0].key, groups = [[], []];
@@ -325,6 +325,7 @@ function createJoinCommand(factory = {}) {
325
325
  }
326
326
  for (let file = 0; file < 2; file++) {
327
327
  if (!options.unpaired.has(file) && options.order === "none") continue;
328
+ if (rows[file]) await order.markUnpaired();
328
329
  while (rows[file]) {
329
330
  if (options.unpaired.has(file)) await emit(file === 0 ? rows[file] : void 0, file === 1 ? rows[file] : void 0);
330
331
  rows[file] = await next(file);
@@ -404,7 +404,7 @@ async function run(context, budget) {
404
404
  }
405
405
  let oldText = oldBytes, newText = newBytes;
406
406
  encoding = "latin1";
407
- if (!options.text) {
407
+ {
408
408
  const decoder = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
409
409
  try {
410
410
  const oldDecoded = decoder.decode(encodeBytes(oldBytes, "latin1"));
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AwkArray
3
- } from "./chunk-V6MSPQLA.js";
3
+ } from "./chunk-6BNTBWIK.js";
4
4
  import {
5
5
  quoteAwk
6
6
  } from "./chunk-EQ4HV54N.js";
@@ -245,6 +245,17 @@ function input(context, name = "-") {
245
245
  }
246
246
  return readBytes(context.stdin, context.signal);
247
247
  }
248
+ const budget = context.inputBudget;
249
+ if (budget && Number.isFinite(budget.maxBytes)) {
250
+ return (async function* () {
251
+ let total = 0;
252
+ for await (const bytes of inputFileSlow(context, name)) {
253
+ total += bytes.byteLength;
254
+ budget.check(total);
255
+ yield bytes;
256
+ }
257
+ })();
258
+ }
248
259
  const backing = getRuntimeBackingFileSystem(context.fs);
249
260
  if (!context.signal.aborted && backing !== void 0 && backing.capabilitiesFor === void 0 && context.fs.readStream && context.fs.capabilities.streamingRead !== false && context.fs.capabilities.read !== false && Object.getPrototypeOf(backing)?.constructor?.name === "MemoryFileSystem" && !Object.prototype.hasOwnProperty.call(backing, "readStream")) {
250
261
  const resolvedPath = pathOf(context, name);
@@ -27,6 +27,8 @@ function createOriginAuthorizer(allowlist = "*", options = {}) {
27
27
  }
28
28
  return (request) => {
29
29
  const url = new URL(request.url);
30
+ const hostHeaders = request.headers?.filter(([name]) => name.toLowerCase() === "host") ?? [];
31
+ if (hostHeaders.length > 1 || hostHeaders.some(([, value]) => value.toLowerCase() !== url.host.toLowerCase())) return false;
30
32
  const hostname = url.hostname.toLowerCase().replace(/\.$/u, "");
31
33
  if (denyPrivateNetworks) {
32
34
  request.requirePrivateNetworkDeny?.();
@@ -5,7 +5,7 @@ import {
5
5
  outputFailure,
6
6
  removeManagedAbortWaiter,
7
7
  writeBytes
8
- } from "./chunk-J5SN3PZ3.js";
8
+ } from "./chunk-VXSLJH7G.js";
9
9
  import {
10
10
  init_buffer
11
11
  } from "./chunk-HX3SHTCE.js";
@@ -51,6 +51,11 @@ function inferDelimiter(path) {
51
51
  var shortOptions = { B: "byte-offset", S: "start-condition", E: "end-condition", H: "human-readable", c: "check-alignment", a: "approx", p: "parallel", t: "threads", h: "help", o: "output", d: "delimiter", n: "no-headers", j: "just-names", s: "start", e: "end", l: "len", i: "index", I: "indices", L: "last" };
52
52
  var switches = /* @__PURE__ */ new Set(["help", "no-headers", "just-names", "csv", "human-readable", "check-alignment", "approx", "parallel", "raw", "evaluate", "evaluate-file"]);
53
53
  var extraShort = {
54
+ dedup: { s: "select", l: "keep-last", S: "sorted" },
55
+ enum: { c: "column-name", S: "start" },
56
+ from: { f: "format" },
57
+ cat: { p: "pad" },
58
+ split: { S: "size", O: "out-dir", f: "filename", c: "chunks" },
54
59
  head: { l: "limit" },
55
60
  tail: { l: "limit" },
56
61
  sort: { s: "select", N: "numeric", R: "reverse", u: "uniq" },
@@ -61,9 +66,18 @@ var extraShort = {
61
66
  freq: { s: "select", l: "limit", A: "all", N: "no-extra" },
62
67
  join: { i: "ignore-case" }
63
68
  };
64
- for (const name of ["numeric", "reverse", "uniq", "exact", "ignore-case", "invert-match", "every-column", "all", "no-extra", "inner", "left", "right", "full", "semi", "anti", "cross", "nulls"]) switches.add(name);
69
+ for (const name of ["keep-last", "sorted", "keep-duplicates", "pad", "sort-keys", "single-object", "omit", "numeric", "reverse", "uniq", "exact", "ignore-case", "invert-match", "every-column", "all", "no-extra", "inner", "left", "right", "full", "semi", "anti", "cross", "nulls"]) switches.add(name);
65
70
  var common = ["help", "output", "delimiter"];
66
71
  var allowed = {
72
+ dedup: /* @__PURE__ */ new Set([...common, "no-headers", "select", "keep-last", "sorted", "keep-duplicates"]),
73
+ enum: /* @__PURE__ */ new Set([...common, "no-headers", "column-name", "start"]),
74
+ transpose: new Set(common),
75
+ agg: /* @__PURE__ */ new Set([...common, "no-headers"]),
76
+ groupby: /* @__PURE__ */ new Set([...common, "no-headers"]),
77
+ to: /* @__PURE__ */ new Set([...common, "no-headers", "nulls", "omit"]),
78
+ from: /* @__PURE__ */ new Set([...common, "format", "sort-keys", "single-object", "column-name"]),
79
+ cat: /* @__PURE__ */ new Set([...common, "no-headers", "pad"]),
80
+ split: /* @__PURE__ */ new Set(["help", "delimiter", "no-headers", "size", "out-dir", "filename", "chunks"]),
67
81
  head: /* @__PURE__ */ new Set([...common, "no-headers", "limit"]),
68
82
  tail: /* @__PURE__ */ new Set([...common, "no-headers", "limit"]),
69
83
  sort: /* @__PURE__ */ new Set([...common, "no-headers", "select", "numeric", "reverse", "uniq"]),
@@ -149,7 +163,8 @@ async function parseArguments(args, cwd, budget) {
149
163
  if (values.has("evaluate") && values.has("evaluate-file")) throw new XanError("conflicting expression modes");
150
164
  let rightSelection;
151
165
  let operand;
152
- if (["search", "filter", "rename"].includes(command)) {
166
+ if (command === "groupby") rightSelection = operands.shift();
167
+ if (["search", "filter", "rename", "agg", "groupby", "to", "cat"].includes(command)) {
153
168
  operand = operands.shift();
154
169
  if (operand === void 0 && !help) throw new XanError(`${command} requires an argument`);
155
170
  }
@@ -168,16 +183,16 @@ async function parseArguments(args, cwd, budget) {
168
183
  }
169
184
  if (values.has("limit")) await unsigned(values.get("limit"), "--limit", budget);
170
185
  if (selection === void 0 && !help) throw new UsageError("Usage:\n xan select [options] [--] <selection> [<input>]\n xan select --help\n\nInvalid subcommand or arguments! Use the -h/--help flag for more information.");
171
- if (command !== "headers" && command !== "join" && operands.length > 1) throw new XanError("too many input files");
186
+ if (command !== "headers" && command !== "join" && command !== "cat" && operands.length > 1) throw new XanError("too many input files");
172
187
  if (operands.filter((path2) => path2 === "-").length > 1) throw new XanError("stdin may appear only once");
173
188
  if (!operands.length) operands.push("-");
174
189
  budget.bound("maxInputFiles", operands.length);
175
- const path = (value) => {
190
+ const path = (value, input = false) => {
176
191
  if (!value || value.includes("\0")) throw new XanError("invalid path");
177
- if (/\.(gz|zst|cdx|ndjson|jsonl|vcf|gtf|gff2|sam|bed)$/u.test(value)) throw new XanError(`unsupported in bounded CSV profile: format ${value}`);
192
+ if (input && command !== "from" && /\.(gz|zst|cdx|ndjson|jsonl|vcf|gtf|gff2|sam|bed)$/u.test(value)) throw new XanError(`unsupported in bounded CSV profile: format ${value}`);
178
193
  return value === "-" ? value : resolvePath(cwd, value);
179
194
  };
180
- for (const operand2 of operands) path(operand2);
195
+ for (const operand2 of operands) path(operand2, true);
181
196
  const output = values.get("output");
182
197
  if (output !== void 0) path(output);
183
198
  let delimiter;
@@ -3,21 +3,21 @@ import {
3
3
  } from "./chunk-PTT3I223.js";
4
4
  import {
5
5
  splitRegex
6
- } from "./chunk-3DT2YOGW.js";
6
+ } from "./chunk-VSRGNQCP.js";
7
7
  import {
8
8
  matchRegex,
9
9
  scanRegex,
10
10
  substituteRegex
11
- } from "./chunk-BKCNF5U3.js";
11
+ } from "./chunk-KQLD3AED.js";
12
12
  import {
13
13
  formatValue
14
- } from "./chunk-53P53XFM.js";
14
+ } from "./chunk-BPE5INLI.js";
15
15
  import {
16
16
  indices
17
- } from "./chunk-2QHG43WJ.js";
17
+ } from "./chunk-4BB2SWJ5.js";
18
18
  import {
19
19
  capture
20
- } from "./chunk-GI4CJED2.js";
20
+ } from "./chunk-CQTRW45K.js";
21
21
  import {
22
22
  fromDateIso8601,
23
23
  gmtime,
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-GMIHJYDG.js";
29
29
  import {
30
30
  delpaths
31
- } from "./chunk-TYCGMRLM.js";
31
+ } from "./chunk-OYYV7ZAF.js";
32
32
  import {
33
33
  binary,
34
34
  compare,
@@ -42,7 +42,7 @@ import {
42
42
  sortedKeys,
43
43
  stableSort,
44
44
  type
45
- } from "./chunk-UMDIOL3O.js";
45
+ } from "./chunk-KXU3IRUO.js";
46
46
  import {
47
47
  splitString
48
48
  } from "./chunk-HMOZ6XVJ.js";
@@ -51,7 +51,7 @@ import {
51
51
  measureValue,
52
52
  parseJson,
53
53
  stringify
54
- } from "./chunk-YGC6OS5O.js";
54
+ } from "./chunk-WECIOOQB.js";
55
55
  import {
56
56
  JqError,
57
57
  JqHalt,
@@ -1810,7 +1810,21 @@ var Interpreter = class _Interpreter {
1810
1810
  }
1811
1811
  if (name === "split") {
1812
1812
  for await (const separator of this.run(args[0], input)) {
1813
- yield await splitString(input, separator, budget);
1813
+ if (!args[1]) {
1814
+ yield await splitString(input, separator, budget);
1815
+ continue;
1816
+ }
1817
+ for await (const flags of this.run(args[1], input)) {
1818
+ const parts = [];
1819
+ let bytes = 2;
1820
+ for await (const part of splitRegex(input, separator, budget, flags)) {
1821
+ budget.collection(parts.length + 1);
1822
+ bytes += budget.value(part) + (parts.length ? 1 : 0);
1823
+ if (bytes > budget.limits.maxValueBytes) throw new JqLimitError("maxValueBytes");
1824
+ parts.push(part);
1825
+ }
1826
+ yield parts;
1827
+ }
1814
1828
  }
1815
1829
  return;
1816
1830
  }