@poe-platform/safe-bash 0.1.800 → 0.1.802

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 (502) hide show
  1. package/README.md +16 -5
  2. package/dist/image-ast/index.browser.js +122 -76
  3. package/dist/image-ast/index.js +122 -76
  4. package/dist/pdf-ast/index.js +4 -3
  5. package/dist/safe-bash/chunks/chunk-3HQU4OJO.js +13 -0
  6. package/dist/safe-bash/chunks/{chunk-LUOFIVNI.js → chunk-3NDIFSNM.js} +3 -3
  7. package/dist/safe-bash/chunks/{chunk-4SEW2Q6H.js → chunk-3R3AANOR.js} +1 -1
  8. package/dist/safe-bash/chunks/{chunk-K4YMYFRJ.js → chunk-44ALJ4QG.js} +5809 -7424
  9. package/dist/safe-bash/chunks/{chunk-KHMGTPD6.js → chunk-46Z5E5EV.js} +2 -2
  10. package/dist/safe-bash/chunks/chunk-4BSJLKNM.js +14 -0
  11. package/dist/safe-bash/chunks/chunk-4D4N7IU2.js +47 -0
  12. package/dist/safe-bash/chunks/chunk-55YJASTN.js +14 -0
  13. package/dist/safe-bash/chunks/{chunk-XB3B7KMM.js → chunk-6O77NL2S.js} +1 -1
  14. package/dist/safe-bash/chunks/{chunk-T3JTVIEP.js → chunk-6PAVEFT3.js} +1 -1
  15. package/dist/safe-bash/chunks/{chunk-PYVEAFJM.js → chunk-74GHTNJA.js} +3 -2
  16. package/dist/safe-bash/chunks/{chunk-LQHGH25W.js → chunk-7R5BDCG7.js} +1 -1
  17. package/dist/safe-bash/chunks/chunk-7ZBU7KYV.js +14 -0
  18. package/dist/safe-bash/chunks/{chunk-MHZ24KEI.js → chunk-AM5ESLPH.js} +1 -1
  19. package/dist/safe-bash/chunks/{chunk-3L3T6LYV.js → chunk-AUSNDQTJ.js} +1 -1
  20. package/dist/safe-bash/chunks/{chunk-YG5WAHK7.js → chunk-B7TAL7S5.js} +1 -3
  21. package/dist/safe-bash/chunks/{chunk-QVSRRNZT.js → chunk-BJA5XNP6.js} +6 -6
  22. package/dist/safe-bash/chunks/{chunk-K7IQZE7D.js → chunk-C5OWC2TL.js} +1 -1
  23. package/dist/safe-bash/chunks/{chunk-F3RV2F72.js → chunk-CHYGPFVM.js} +1 -1
  24. package/dist/safe-bash/chunks/{chunk-M4CFCXHN.js → chunk-CS4MNM6I.js} +1 -1
  25. package/dist/safe-bash/chunks/{chunk-H6JW3E4F.js → chunk-CTVWDACF.js} +1 -1
  26. package/dist/safe-bash/chunks/{chunk-BHJE5LPZ.js → chunk-D3ANYGMC.js} +1 -1
  27. package/dist/safe-bash/chunks/chunk-DQP3VHSB.js +15 -0
  28. package/dist/safe-bash/chunks/{chunk-NLAW7KDI.js → chunk-E7OYNDGL.js} +1 -1
  29. package/dist/safe-bash/chunks/{chunk-SOZK5JVX.js → chunk-FBUCWVTE.js} +1 -1
  30. package/dist/safe-bash/chunks/chunk-FZE4HW6G.js +11 -0
  31. package/dist/safe-bash/chunks/chunk-GEG3BWGE.js +14 -0
  32. package/dist/safe-bash/chunks/{chunk-HHW7MGS2.js → chunk-GETUOD5D.js} +4 -4
  33. package/dist/safe-bash/chunks/chunk-HBCN24ZA.js +50 -0
  34. package/dist/safe-bash/chunks/chunk-HZ7BWKQ3.js +13 -0
  35. package/dist/safe-bash/chunks/{chunk-JJSTTIEZ.js → chunk-HZAMGT5I.js} +3 -3
  36. package/dist/safe-bash/chunks/{chunk-KCVSVD65.js → chunk-I5HZ4FGE.js} +1 -1
  37. package/dist/safe-bash/chunks/{chunk-KV7PKOHV.js → chunk-IWDICZVK.js} +1 -1
  38. package/dist/safe-bash/chunks/{chunk-I4OAEOP6.js → chunk-J42RIHHJ.js} +1 -1
  39. package/dist/safe-bash/chunks/{chunk-K2VCOJ2B.js → chunk-K6VCD7IY.js} +7 -12
  40. package/dist/safe-bash/chunks/chunk-KDNSPLII.js +83 -0
  41. package/dist/safe-bash/chunks/{chunk-63FXVDGF.js → chunk-LVOBFF4D.js} +1 -1
  42. package/dist/safe-bash/chunks/{chunk-U5NUZPCC.js → chunk-MHMMRCYC.js} +1 -1
  43. package/dist/safe-bash/chunks/{chunk-KW24TAIU.js → chunk-NQCM3TYR.js} +922 -658
  44. package/dist/safe-bash/chunks/{chunk-VYZTG3GV.js → chunk-NZQXYWA3.js} +1 -1
  45. package/dist/safe-bash/chunks/{chunk-TFGRKY43.js → chunk-OQRVVGR6.js} +1 -1
  46. package/dist/safe-bash/chunks/{chunk-PPYM75Z3.js → chunk-OV6IHKO6.js} +2 -2
  47. package/dist/safe-bash/chunks/{chunk-TYD7EVUJ.js → chunk-PH63PLPZ.js} +8 -8
  48. package/dist/safe-bash/chunks/chunk-QGUV42T5.js +44 -0
  49. package/dist/safe-bash/chunks/chunk-R3NAKOED.js +51 -0
  50. package/dist/safe-bash/chunks/chunk-RRR7AQ24.js +38 -0
  51. package/dist/safe-bash/chunks/{chunk-RKKRJ54E.js → chunk-RSTHLAF3.js} +30 -23
  52. package/dist/safe-bash/chunks/{chunk-RMWLWH7Q.js → chunk-SHEMU2Z7.js} +378 -1148
  53. package/dist/safe-bash/chunks/{chunk-7YSRXFEG.js → chunk-TFIBK2GI.js} +1 -1
  54. package/dist/safe-bash/chunks/{chunk-I7L3G3NX.js → chunk-UE5KZDEK.js} +2 -2
  55. package/dist/safe-bash/chunks/{chunk-QU3BVQ53.js → chunk-UTBUUFDM.js} +1 -1
  56. package/dist/safe-bash/chunks/{chunk-6HZYFL3H.js → chunk-VKNVHEX3.js} +2 -7
  57. package/dist/safe-bash/chunks/chunk-VSAJ4OTM.js +962 -0
  58. package/dist/safe-bash/chunks/{chunk-46UISJCK.js → chunk-VTH3MLDU.js} +1 -1
  59. package/dist/safe-bash/chunks/{chunk-JTLSUJ7V.js → chunk-WDLGKIHD.js} +56 -39
  60. package/dist/safe-bash/chunks/chunk-XAQMU6OY.js +14 -0
  61. package/dist/safe-bash/chunks/{chunk-LLZCZ24K.js → chunk-XVOSKJE2.js} +1 -1
  62. package/dist/safe-bash/chunks/chunk-ZVD5IS4V.js +49 -0
  63. package/dist/safe-bash/chunks/{csvkit-QGP3GAOB.js → csvkit-TACDU7FC.js} +3 -3
  64. package/dist/safe-bash/chunks/{ffmpeg-JTVH26MK.js → ffmpeg-WTC3TEFI.js} +2 -2
  65. package/dist/safe-bash/chunks/{gh-I7QX7N5C.js → gh-6WU6PXL4.js} +2 -2
  66. package/dist/safe-bash/chunks/{git-MA7NKYVP.js → git-EFZIGJW4.js} +2 -2
  67. package/dist/safe-bash/chunks/{imagemagick-Y4NPWX2Q.js → imagemagick-EIEYGWPF.js} +2 -2
  68. package/dist/safe-bash/chunks/{implementation-BWDKOVQJ.js → implementation-MLFHUQ5M.js} +2 -2
  69. package/dist/safe-bash/chunks/{mmdc-44PELHDG.js → mmdc-ROQJT5HQ.js} +2 -2
  70. package/dist/safe-bash/chunks/{pdfimages-635TRW4Q.js → pdfimages-DW7LWXFI.js} +2 -2
  71. package/dist/safe-bash/chunks/{pdfinfo-FSDAA2KY.js → pdfinfo-TIP6XLUQ.js} +2 -2
  72. package/dist/safe-bash/chunks/{pdftk-GQ5UH3VG.js → pdftk-DMG22ITZ.js} +2 -2
  73. package/dist/safe-bash/chunks/{pdftoppm-YTXQCAYT.js → pdftoppm-WNDYR72T.js} +2 -2
  74. package/dist/safe-bash/chunks/{pdftotext-CVA2G7FY.js → pdftotext-5IPZ4NI7.js} +2 -2
  75. package/dist/safe-bash/chunks/{qpdf-HZMIFG4A.js → qpdf-TTX2DIUA.js} +2 -2
  76. package/dist/safe-bash/chunks/{sips-E7UBDP33.js → sips-XYS46JPJ.js} +2 -2
  77. package/dist/safe-bash/chunks/{soffice-ELASUWUK.js → soffice-TU73E5KL.js} +2 -2
  78. package/dist/safe-bash/chunks/{wkhtmltopdf-EPO6YCMG.js → wkhtmltopdf-FSZ2CHGE.js} +2 -2
  79. package/dist/safe-bash/command-chunks/{chunk-QBGA56UH.js → chunk-2ELYGJDD.js} +7 -7
  80. package/dist/safe-bash/command-chunks/{chunk-52PCQXD2.js → chunk-2NHI5F5S.js} +2 -1
  81. package/dist/safe-bash/command-chunks/{chunk-HDKVO47G.js → chunk-2SQEIUGJ.js} +3 -3
  82. package/dist/safe-bash/command-chunks/{chunk-5LSGEIZY.js → chunk-3HHCU5YU.js} +4 -3
  83. package/dist/safe-bash/command-chunks/{chunk-TF6OA2GK.js → chunk-3NV3HYT2.js} +1 -1
  84. package/dist/safe-bash/command-chunks/{chunk-2QHG43WJ.js → chunk-4BB2SWJ5.js} +1 -1
  85. package/dist/safe-bash/command-chunks/{chunk-IEXHHNOF.js → chunk-4J5CZ2DP.js} +2 -7
  86. package/dist/safe-bash/command-chunks/{chunk-WDHI3S6Y.js → chunk-4OOUQTQO.js} +1 -1
  87. package/dist/safe-bash/command-chunks/{chunk-YMONDXET.js → chunk-4ZQWGOZB.js} +2 -2
  88. package/dist/safe-bash/command-chunks/{chunk-L6DVEBW3.js → chunk-5BSTFCXG.js} +2 -2
  89. package/dist/safe-bash/command-chunks/{chunk-Q3DII3Q7.js → chunk-5PWJG2UK.js} +1 -1
  90. package/dist/safe-bash/command-chunks/{chunk-JMPP4TCW.js → chunk-5UBXNSFZ.js} +3 -2
  91. package/dist/safe-bash/command-chunks/{chunk-3NG75MOB.js → chunk-67GQA75T.js} +1 -1
  92. package/dist/safe-bash/command-chunks/{chunk-L6SU4S26.js → chunk-6B7WQIKB.js} +0 -7
  93. package/dist/safe-bash/command-chunks/{chunk-V6MSPQLA.js → chunk-6BNTBWIK.js} +4 -39
  94. package/dist/safe-bash/command-chunks/{chunk-SAMH7SQE.js → chunk-6GWJUQAV.js} +237 -145
  95. package/dist/safe-bash/command-chunks/{chunk-JN7WIP6S.js → chunk-6KJ3LPI2.js} +2 -2
  96. package/dist/safe-bash/command-chunks/{chunk-HLDTOR7M.js → chunk-6ZVI7LUY.js} +1 -1
  97. package/dist/safe-bash/command-chunks/{chunk-X6NJC3IC.js → chunk-75OFBY5R.js} +1 -1
  98. package/dist/safe-bash/command-chunks/{chunk-MRW5HD2D.js → chunk-7O3E4LPT.js} +4 -22
  99. package/dist/safe-bash/command-chunks/{chunk-TEVJJPTC.js → chunk-7U7EXOXX.js} +1 -1
  100. package/dist/safe-bash/command-chunks/{chunk-6CYTRQ24.js → chunk-7VTKQUA5.js} +20 -17
  101. package/dist/safe-bash/command-chunks/{chunk-BZPAWTUL.js → chunk-AEF5BA3D.js} +1 -1
  102. package/dist/safe-bash/command-chunks/{chunk-63R3FEZJ.js → chunk-AIV5BF5W.js} +1 -1
  103. package/dist/safe-bash/command-chunks/{chunk-AYUTO323.js → chunk-AKJG2XD3.js} +2 -18
  104. package/dist/safe-bash/command-chunks/{chunk-J34TZVMW.js → chunk-ALDC4XP4.js} +0 -5
  105. package/dist/safe-bash/command-chunks/{chunk-CKXV2CLD.js → chunk-ARBYOQUZ.js} +1 -1
  106. package/dist/safe-bash/command-chunks/{chunk-44AHAB5O.js → chunk-BDSMROQZ.js} +1 -4
  107. package/dist/safe-bash/command-chunks/{chunk-53P53XFM.js → chunk-BPE5INLI.js} +1 -1
  108. package/dist/safe-bash/command-chunks/{chunk-OT4LZMLB.js → chunk-BR73BIOW.js} +1 -1
  109. package/dist/safe-bash/command-chunks/{chunk-WB5SVIG7.js → chunk-C5YYCQHW.js} +498 -88
  110. package/dist/safe-bash/command-chunks/{chunk-EUSPTFAX.js → chunk-CAP7ZJSY.js} +7 -7
  111. package/dist/safe-bash/command-chunks/{chunk-DWFLVJC6.js → chunk-CCRHMAU5.js} +2 -1
  112. package/dist/safe-bash/command-chunks/{chunk-GI4CJED2.js → chunk-CQTRW45K.js} +1 -1
  113. package/dist/safe-bash/command-chunks/{chunk-KKG4BAFZ.js → chunk-DIEPXUM4.js} +6 -0
  114. package/dist/safe-bash/command-chunks/{chunk-QJAFJP2G.js → chunk-DZCY63VJ.js} +12 -10
  115. package/dist/safe-bash/command-chunks/{chunk-QUENU6GM.js → chunk-E55UKBIE.js} +3 -3
  116. package/dist/safe-bash/command-chunks/{chunk-MC3VWLIZ.js → chunk-FDBUV4HJ.js} +28 -19
  117. package/dist/safe-bash/command-chunks/{chunk-7FKUC34S.js → chunk-FPVUD6TH.js} +6 -3
  118. package/dist/safe-bash/command-chunks/{chunk-E2LB7FRT.js → chunk-FXOA7RBK.js} +1 -1
  119. package/dist/safe-bash/command-chunks/{chunk-QWIDNAAK.js → chunk-FZTK4MFI.js} +3 -3
  120. package/dist/safe-bash/command-chunks/{chunk-K543PB3I.js → chunk-G66QUHIZ.js} +6 -35
  121. package/dist/safe-bash/command-chunks/{chunk-YJDV76GL.js → chunk-GFQZCKO6.js} +29 -19
  122. package/dist/safe-bash/command-chunks/{chunk-FKKB5X5V.js → chunk-GOB777HR.js} +1 -1
  123. package/dist/safe-bash/command-chunks/{chunk-IYPAQ7PH.js → chunk-GRBWW4SG.js} +6 -0
  124. package/dist/safe-bash/command-chunks/{chunk-EFANWIHL.js → chunk-GY3BWK7K.js} +1 -0
  125. package/dist/safe-bash/command-chunks/{chunk-PPNBNFAU.js → chunk-GYQ2HAKQ.js} +8 -8
  126. package/dist/safe-bash/command-chunks/{chunk-PJJUYO3R.js → chunk-II77KPZN.js} +2 -2
  127. package/dist/safe-bash/command-chunks/{chunk-VL67NWNS.js → chunk-JDYXY44P.js} +2 -2
  128. package/dist/safe-bash/command-chunks/{chunk-4QJOYXVB.js → chunk-JV7LBUTP.js} +1 -1
  129. package/dist/safe-bash/command-chunks/{chunk-IKS2YXZQ.js → chunk-K67MWWWH.js} +3 -3
  130. package/dist/safe-bash/command-chunks/{chunk-BKCNF5U3.js → chunk-KQLD3AED.js} +2 -2
  131. package/dist/safe-bash/command-chunks/{chunk-UMDIOL3O.js → chunk-KXU3IRUO.js} +1 -1
  132. package/dist/safe-bash/command-chunks/{chunk-QZF3SINC.js → chunk-LAOM65EE.js} +2 -2
  133. package/dist/safe-bash/command-chunks/{chunk-HFII3QYO.js → chunk-LWS62ISU.js} +46 -32
  134. package/dist/safe-bash/command-chunks/{chunk-BZDDAPSV.js → chunk-LWSBAWLT.js} +1 -1
  135. package/dist/safe-bash/command-chunks/{chunk-U6G67N23.js → chunk-MIXBO6U7.js} +18 -5
  136. package/dist/safe-bash/command-chunks/{chunk-JQ74HC37.js → chunk-MQFIPHIQ.js} +23 -50
  137. package/dist/safe-bash/command-chunks/{chunk-ZJBR5Q5I.js → chunk-MSFXC3OC.js} +4 -4
  138. package/dist/safe-bash/command-chunks/{chunk-NI7MKJPN.js → chunk-MTQH74CF.js} +3 -55
  139. package/dist/safe-bash/command-chunks/chunk-MWUZZWXK.js +354 -0
  140. package/dist/safe-bash/command-chunks/{chunk-RVLO4DYT.js → chunk-N4PFUSRM.js} +1 -1
  141. package/dist/safe-bash/command-chunks/{chunk-WBNZ4PRE.js → chunk-NGG2XL56.js} +7 -4
  142. package/dist/safe-bash/command-chunks/{chunk-D4OP2BR3.js → chunk-NKFYQSES.js} +1 -2
  143. package/dist/safe-bash/command-chunks/{chunk-NGWB2YBL.js → chunk-O4JQSB7O.js} +1 -1
  144. package/dist/safe-bash/command-chunks/{chunk-GLOZX57Y.js → chunk-OQKC5ZU2.js} +23 -114
  145. package/dist/safe-bash/command-chunks/{chunk-7L24L4UO.js → chunk-OQU6UT6X.js} +2 -20
  146. package/dist/safe-bash/command-chunks/{chunk-TYCGMRLM.js → chunk-OYYV7ZAF.js} +1 -1
  147. package/dist/safe-bash/command-chunks/{chunk-SVULUDOP.js → chunk-P2N33UMN.js} +20 -81
  148. package/dist/safe-bash/command-chunks/{chunk-Q7Q5GM5S.js → chunk-P5APDEFB.js} +2 -2
  149. package/dist/safe-bash/command-chunks/{chunk-3HXDA5PT.js → chunk-PMBFZXTK.js} +1 -1
  150. package/dist/safe-bash/command-chunks/{chunk-4Y3WVMK4.js → chunk-PV66YWHB.js} +1 -0
  151. package/dist/safe-bash/command-chunks/{chunk-AXK3H4PX.js → chunk-QJ33BHI4.js} +1 -1
  152. package/dist/safe-bash/command-chunks/{chunk-3LSOYLNV.js → chunk-QKFSRZGQ.js} +2 -2
  153. package/dist/safe-bash/command-chunks/{chunk-JZSNU2MY.js → chunk-QKJLP53H.js} +2 -2
  154. package/dist/safe-bash/command-chunks/{chunk-LC2MFKT4.js → chunk-RMWQAAO5.js} +24 -25
  155. package/dist/safe-bash/command-chunks/{chunk-QDTBMSBE.js → chunk-RO62EWX6.js} +2 -2
  156. package/dist/safe-bash/command-chunks/{chunk-4C6QI5BQ.js → chunk-RZZI24ZE.js} +4 -4
  157. package/dist/safe-bash/command-chunks/{chunk-PFAADCB5.js → chunk-SDNBCQ3X.js} +10 -24
  158. package/dist/safe-bash/command-chunks/{chunk-36O5OT7E.js → chunk-T35Y7YQD.js} +1 -1
  159. package/dist/safe-bash/command-chunks/{chunk-6HMX4CQS.js → chunk-TGSNCQSR.js} +44 -16
  160. package/dist/safe-bash/command-chunks/{chunk-5T7CRJHW.js → chunk-TIOCQVUQ.js} +4 -7
  161. package/dist/safe-bash/command-chunks/{chunk-GN2TKLE7.js → chunk-TS65BJHG.js} +5 -5
  162. package/dist/safe-bash/command-chunks/{chunk-7RGB363W.js → chunk-TSCGT46G.js} +3 -2
  163. package/dist/safe-bash/command-chunks/{chunk-KBEURXFF.js → chunk-UN6WS55J.js} +3 -3
  164. package/dist/safe-bash/command-chunks/{chunk-SX2X3IH4.js → chunk-V2V5OCL3.js} +1 -1
  165. package/dist/safe-bash/command-chunks/{chunk-ERYJLO6G.js → chunk-V7A7DRTU.js} +1 -1
  166. package/dist/safe-bash/command-chunks/{chunk-5SHGJ7NO.js → chunk-VA5ZHYYA.js} +73 -33
  167. package/dist/safe-bash/command-chunks/{chunk-XETLEHZP.js → chunk-VPR5LQYX.js} +3 -2
  168. package/dist/safe-bash/command-chunks/{chunk-3DT2YOGW.js → chunk-VSRGNQCP.js} +3 -3
  169. package/dist/safe-bash/command-chunks/{chunk-N2F74VRO.js → chunk-VT6MJBEI.js} +1 -1
  170. package/dist/safe-bash/command-chunks/{chunk-J5SN3PZ3.js → chunk-VXSLJH7G.js} +53 -3
  171. package/dist/safe-bash/command-chunks/{chunk-PXYOWWMV.js → chunk-W7RAD4EW.js} +4 -3
  172. package/dist/safe-bash/command-chunks/{chunk-YGC6OS5O.js → chunk-WECIOOQB.js} +5 -8
  173. package/dist/safe-bash/command-chunks/{chunk-HHP343KT.js → chunk-WTECBRU4.js} +1 -1
  174. package/dist/safe-bash/command-chunks/{chunk-AO6Z5EQ7.js → chunk-WVE64WM2.js} +6 -5
  175. package/dist/safe-bash/command-chunks/{chunk-Z7RVSD5K.js → chunk-WVHONVZ4.js} +1 -1
  176. package/dist/safe-bash/command-chunks/{chunk-HLGKIZ25.js → chunk-X54L3DBL.js} +6 -9
  177. package/dist/safe-bash/command-chunks/{chunk-QNIMV57G.js → chunk-XNLFHHOC.js} +1 -1
  178. package/dist/safe-bash/command-chunks/{chunk-XAFSZDY2.js → chunk-XS72HTMA.js} +11 -0
  179. package/dist/safe-bash/command-chunks/{chunk-KYSPGS33.js → chunk-YIQACGEW.js} +2 -0
  180. package/dist/safe-bash/command-chunks/{chunk-NAY27PXB.js → chunk-YOFC45RK.js} +1 -1
  181. package/dist/safe-bash/command-chunks/{chunk-T5H5UJQ3.js → chunk-YVNGTIJO.js} +1 -1
  182. package/dist/safe-bash/command-chunks/{chunk-QI7LGHJJ.js → chunk-Z45N42QC.js} +21 -6
  183. package/dist/safe-bash/command-chunks/{chunk-67IQF5GC.js → chunk-ZYHTWNAE.js} +23 -9
  184. package/dist/safe-bash/command-chunks/{chunk-STC3LEWJ.js → chunk-ZYXH3B66.js} +5 -3
  185. package/dist/safe-bash/commands/apply-patch/index.browser.js +14 -0
  186. package/dist/safe-bash/commands/archive/index.browser.js +36 -0
  187. package/dist/safe-bash/commands/bytes/compression/index.js +3 -2
  188. package/dist/safe-bash/commands/column/index.browser.js +12 -0
  189. package/dist/safe-bash/commands/copy-preserve.d.ts +1 -0
  190. package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
  191. package/dist/safe-bash/commands/docx/index.browser.js +1 -1
  192. package/dist/safe-bash/commands/du/index.browser.js +14 -0
  193. package/dist/safe-bash/commands/execution.js +19 -13
  194. package/dist/safe-bash/commands/expr/index.browser.js +12 -0
  195. package/dist/safe-bash/commands/factor/index.browser.js +2 -2
  196. package/dist/safe-bash/commands/file/index.browser.js +14 -0
  197. package/dist/safe-bash/commands/filesystem.d.ts +1 -1
  198. package/dist/safe-bash/commands/filesystem.js +26 -15
  199. package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
  200. package/dist/safe-bash/commands/grep-aliases/index.browser.js +14 -0
  201. package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
  202. package/dist/safe-bash/commands/html-to-markdown/index.browser.js +16 -0
  203. package/dist/safe-bash/commands/htmlq/index.d.ts +1 -1
  204. package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
  205. package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
  206. package/dist/safe-bash/commands/llm/index.browser.js +2 -2
  207. package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
  208. package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
  209. package/dist/safe-bash/commands/media/index.browser.js +1 -1
  210. package/dist/safe-bash/commands/metadata/index.browser.js +21 -0
  211. package/dist/safe-bash/commands/network/curl.d.ts +1 -1
  212. package/dist/safe-bash/commands/network/curl.js +1 -3
  213. package/dist/safe-bash/commands/network/index.browser.js +4 -4
  214. package/dist/safe-bash/commands/network/platform-portable.d.ts +1 -5
  215. package/dist/safe-bash/commands/network/platform-portable.js +1 -26
  216. package/dist/safe-bash/commands/network/public.d.ts +2 -2
  217. package/dist/safe-bash/commands/network/public.js +2 -2
  218. package/dist/safe-bash/commands/network/transport.js +2 -2
  219. package/dist/safe-bash/commands/network/wget.d.ts +1 -1
  220. package/dist/safe-bash/commands/network/wget.js +1 -3
  221. package/dist/safe-bash/commands/node/filesystem.js +3 -2
  222. package/dist/safe-bash/commands/node/index.browser.js +8 -8
  223. package/dist/safe-bash/commands/node/types.js +1 -1
  224. package/dist/safe-bash/commands/op/index.browser.js +3 -3
  225. package/dist/safe-bash/commands/pr/index.browser.js +2 -2
  226. package/dist/safe-bash/commands/python/host-capabilities.js +31 -14
  227. package/dist/safe-bash/commands/python/index.browser.js +11 -11
  228. package/dist/safe-bash/commands/python/manifest.d.ts +1 -0
  229. package/dist/safe-bash/commands/python/manifest.js +6 -3
  230. package/dist/safe-bash/commands/python/shell-capability.d.ts +1 -0
  231. package/dist/safe-bash/commands/python/shell-capability.js +3 -2
  232. package/dist/safe-bash/commands/python/worker.browser.js +3 -3
  233. package/dist/safe-bash/commands/regex-execution/public.browser.js +8 -6
  234. package/dist/safe-bash/commands/safejs/runtime.js +16 -7
  235. package/dist/safe-bash/commands/split/index.browser.js +14 -0
  236. package/dist/safe-bash/commands/standard.d.ts +1 -0
  237. package/dist/safe-bash/commands/standard.js +2 -1
  238. package/dist/safe-bash/commands/stream-format/index.browser.js +11 -0
  239. package/dist/safe-bash/commands/stream-inspection/index.browser.js +11 -0
  240. package/dist/safe-bash/commands/streams.js +11 -29
  241. package/dist/safe-bash/commands/table-text/index.browser.js +11 -0
  242. package/dist/safe-bash/commands/text.js +269 -496
  243. package/dist/safe-bash/commands/time-env/index.browser.js +15 -0
  244. package/dist/safe-bash/commands/tree/index.browser.js +14 -0
  245. package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
  246. package/dist/safe-bash/commands/xml/index.browser.js +2 -2
  247. package/dist/safe-bash/commands/yq/index.browser.js +2 -2
  248. package/dist/safe-bash/core.browser.js +1 -1
  249. package/dist/safe-bash/core.d.ts +6 -1
  250. package/dist/safe-bash/core.js +1 -1
  251. package/dist/safe-bash/full-core.browser.js +308 -295
  252. package/dist/safe-bash/jobs.browser.js +5 -5
  253. package/dist/safe-bash/opt-in/commands/dd/index.js +2 -0
  254. package/dist/safe-bash/opt-in/optional/commands/shuf/options.d.ts +1 -0
  255. package/dist/safe-bash/opt-in/optional/commands/shuf/options.js +2 -4
  256. package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +2 -1
  257. package/dist/safe-bash/optional-host.browser.js +15 -15
  258. package/dist/safe-bash/plugins/composition.d.ts +1 -0
  259. package/dist/safe-bash/plugins/composition.js +3 -8
  260. package/dist/safe-bash/plugins/index.browser.js +41 -27
  261. package/dist/safe-bash/registry-entry.browser.js +42 -28
  262. package/dist/safe-bash/search.browser.js +48 -0
  263. package/dist/safe-bash/shell/arrays/bindings.js +1 -1
  264. package/dist/safe-bash/shell/arrays/state.js +4 -0
  265. package/dist/safe-bash/shell/brace-expansion.js +1 -1
  266. package/dist/safe-bash/shell/dynamic-variables.d.ts +10 -0
  267. package/dist/safe-bash/shell/dynamic-variables.js +25 -0
  268. package/dist/safe-bash/shell/parser.js +8 -1
  269. package/dist/safe-bash/shell/runtime.d.ts +4 -13
  270. package/dist/safe-bash/shell/runtime.js +334 -1049
  271. package/dist/safe-bash/shell/shell.js +2 -54
  272. package/dist/safe-bash/shell-entry.browser.js +35 -26
  273. package/dist/safe-bash/trap.browser.js +4 -4
  274. package/dist/safe-bash/yq-browser/index.js +1 -1
  275. package/dist/safe-bash-base-encoding-engine/base.js +2 -2
  276. package/dist/safe-bash-base-encoding-engine/shared.js +1 -1
  277. package/dist/safe-bash-byte-input-engine/index.d.ts +3 -2
  278. package/dist/safe-bash-byte-input-engine/index.js +4 -1
  279. package/dist/safe-bash-checksum-engine/index.js +13 -6
  280. package/dist/safe-bash-command-apply-patch/apply.d.ts +1 -1
  281. package/dist/safe-bash-command-apply-patch/apply.js +4 -3
  282. package/dist/safe-bash-command-apply-patch/index.js +3 -3
  283. package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
  284. package/dist/safe-bash-command-apply-patch/parser.js +1 -1
  285. package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
  286. package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
  287. package/dist/safe-bash-command-awk/awk-syntax.d.ts +1 -1
  288. package/dist/safe-bash-command-awk/awk-syntax.js +2 -2
  289. package/dist/safe-bash-command-awk/awk-values.js +1 -1
  290. package/dist/safe-bash-command-awk/awk.js +5 -5
  291. package/dist/safe-bash-command-awk/index.js +5 -5
  292. package/dist/safe-bash-command-bc/index.d.ts +2 -0
  293. package/dist/safe-bash-command-bc/index.js +123 -92
  294. package/dist/safe-bash-command-column/column.js +5 -5
  295. package/dist/safe-bash-command-column/display.d.ts +1 -1
  296. package/dist/safe-bash-command-column/display.js +1 -1
  297. package/dist/safe-bash-command-column/index.js +5 -5
  298. package/dist/safe-bash-command-column/internal.d.ts +0 -2
  299. package/dist/safe-bash-command-column/internal.js +1 -1
  300. package/dist/safe-bash-command-column/layout.js +4 -4
  301. package/dist/safe-bash-command-column/table.js +2 -2
  302. package/dist/safe-bash-command-comm/comm.js +1 -1
  303. package/dist/safe-bash-command-comm/index.js +1 -1
  304. package/dist/safe-bash-command-csvcut/index.d.ts +1 -0
  305. package/dist/safe-bash-command-csvcut/index.js +1 -0
  306. package/dist/safe-bash-command-csvgrep/index.d.ts +1 -0
  307. package/dist/safe-bash-command-csvgrep/index.js +2 -2
  308. package/dist/safe-bash-command-csvkit/index.js +9 -9
  309. package/dist/safe-bash-command-csvkit/sync-support.js +1 -1
  310. package/dist/safe-bash-command-curl/curl.js +1 -1
  311. package/dist/safe-bash-command-curl/index.js +1 -1
  312. package/dist/safe-bash-command-dd/index.js +2 -0
  313. package/dist/safe-bash-command-diff/diff.js +1 -1
  314. package/dist/safe-bash-command-diff/index.js +1 -1
  315. package/dist/safe-bash-command-exiftool/index.d.ts +1 -0
  316. package/dist/safe-bash-command-fd/index.js +9 -9
  317. package/dist/safe-bash-command-ffmpeg/index.js +31 -8
  318. package/dist/safe-bash-command-file/index.js +1 -1
  319. package/dist/safe-bash-command-file/shared.js +1 -1
  320. package/dist/safe-bash-command-find/find.js +1 -1
  321. package/dist/safe-bash-command-find/index.js +1 -1
  322. package/dist/safe-bash-command-gzip/index.js +3 -2
  323. package/dist/safe-bash-command-hexdump/command.js +4 -4
  324. package/dist/safe-bash-command-hexdump/custom.d.ts +24 -0
  325. package/dist/safe-bash-command-hexdump/index.js +4 -4
  326. package/dist/safe-bash-command-hexdump/internal.d.ts +2 -0
  327. package/dist/safe-bash-command-hexdump/internal.js +1 -1
  328. package/dist/safe-bash-command-hexdump/io.js +2 -2
  329. package/dist/safe-bash-command-hexdump/options.d.ts +3 -0
  330. package/dist/safe-bash-command-hexdump/options.js +2 -2
  331. package/dist/safe-bash-command-hostname/index.js +1 -1
  332. package/dist/safe-bash-command-html-to-markdown/budget.js +1 -1
  333. package/dist/safe-bash-command-html-to-markdown/entities.js +3 -3
  334. package/dist/safe-bash-command-html-to-markdown/index.js +6 -6
  335. package/dist/safe-bash-command-html-to-markdown/input.js +5 -5
  336. package/dist/safe-bash-command-html-to-markdown/parser.d.ts +1 -0
  337. package/dist/safe-bash-command-html-to-markdown/parser.js +4 -4
  338. package/dist/safe-bash-command-html-to-markdown/render.js +5 -5
  339. package/dist/safe-bash-command-html-to-markdown/text.js +2 -2
  340. package/dist/safe-bash-command-htmlq/index.d.ts +1 -0
  341. package/dist/safe-bash-command-htmlq/index.js +27 -9
  342. package/dist/safe-bash-command-iconv/codec.js +1 -1
  343. package/dist/safe-bash-command-iconv/command.js +2 -2
  344. package/dist/safe-bash-command-iconv/index.js +2 -2
  345. package/dist/safe-bash-command-imagemagick/index.js +24 -6
  346. package/dist/safe-bash-command-join/index.js +1 -1
  347. package/dist/safe-bash-command-join/join.js +1 -1
  348. package/dist/safe-bash-command-jq/index.js +1 -1
  349. package/dist/safe-bash-command-jq/jq.js +1 -1
  350. package/dist/safe-bash-command-less/index.js +43 -28
  351. package/dist/safe-bash-command-mmdc/index.d.ts +1 -0
  352. package/dist/safe-bash-command-nl/index.js +1 -1
  353. package/dist/safe-bash-command-nl/nl.js +1 -1
  354. package/dist/safe-bash-command-numfmt/index.js +0 -11
  355. package/dist/safe-bash-command-od/index.js +101 -68
  356. package/dist/safe-bash-command-pandoc/command.js +1 -1
  357. package/dist/safe-bash-command-pandoc/index.js +1 -1
  358. package/dist/safe-bash-command-paste/index.js +1 -1
  359. package/dist/safe-bash-command-paste/paste.js +1 -1
  360. package/dist/safe-bash-command-pathchk/index.js +3 -13
  361. package/dist/safe-bash-command-pdfimages/index.js +27 -11
  362. package/dist/safe-bash-command-pdfinfo/index.js +19 -10
  363. package/dist/safe-bash-command-pdftk/index.js +3 -3
  364. package/dist/safe-bash-command-pdftoppm/index.js +26 -10
  365. package/dist/safe-bash-command-pdftotext/index.js +27 -13
  366. package/dist/safe-bash-command-qpdf/index.js +5 -5
  367. package/dist/safe-bash-command-rg/index.js +1 -1
  368. package/dist/safe-bash-command-rg/rg-command.d.ts +0 -1
  369. package/dist/safe-bash-command-rg/rg-command.js +3 -5
  370. package/dist/safe-bash-command-sed/index.js +1 -1
  371. package/dist/safe-bash-command-sed/sed.js +1 -1
  372. package/dist/safe-bash-command-shuf/options.d.ts +1 -0
  373. package/dist/safe-bash-command-shuf/options.js +2 -4
  374. package/dist/safe-bash-command-shuf/shuf.js +2 -1
  375. package/dist/safe-bash-command-soffice/index.js +20 -16
  376. package/dist/safe-bash-command-split/index.js +3 -3
  377. package/dist/safe-bash-command-split/io.js +1 -1
  378. package/dist/safe-bash-command-split/outputs.js +2 -2
  379. package/dist/safe-bash-command-split/split.js +3 -3
  380. package/dist/safe-bash-command-sqlite3/btree.d.ts +1 -0
  381. package/dist/safe-bash-command-sqlite3/engine.d.ts +6 -0
  382. package/dist/safe-bash-command-sqlite3/index.js +284 -85
  383. package/dist/safe-bash-command-ssconvert/commands.js +9 -9
  384. package/dist/safe-bash-command-ssconvert/core.js +8 -8
  385. package/dist/safe-bash-command-ssconvert/formats/csv.js +9 -9
  386. package/dist/safe-bash-command-ssconvert/formats/ods.js +8 -8
  387. package/dist/safe-bash-command-ssconvert/formats/spreadsheetml.js +2 -2
  388. package/dist/safe-bash-command-ssconvert/formats/xls.js +9 -9
  389. package/dist/safe-bash-command-ssconvert/formats/xlsx.js +8 -8
  390. package/dist/safe-bash-command-ssconvert/index.js +20 -20
  391. package/dist/safe-bash-command-tar/extract.js +1 -1
  392. package/dist/safe-bash-command-tar/index.js +5 -4
  393. package/dist/safe-bash-command-tar/modes.js +2 -2
  394. package/dist/safe-bash-command-tree/arguments.js +3 -3
  395. package/dist/safe-bash-command-tree/charset.js +1 -1
  396. package/dist/safe-bash-command-tree/index.js +4 -4
  397. package/dist/safe-bash-command-tree/io.js +1 -1
  398. package/dist/safe-bash-command-tree/pattern.js +2 -2
  399. package/dist/safe-bash-command-tree/tree.js +4 -4
  400. package/dist/safe-bash-command-unexpand/index.js +1 -1
  401. package/dist/safe-bash-command-unexpand/unexpand.js +1 -1
  402. package/dist/safe-bash-command-unrtf/index.js +14 -7
  403. package/dist/safe-bash-command-unzip/index.js +1 -1
  404. package/dist/safe-bash-command-unzip/unzip.js +1 -1
  405. package/dist/safe-bash-command-wget/index.js +1 -1
  406. package/dist/safe-bash-command-wget/wget.js +1 -1
  407. package/dist/safe-bash-command-xan/argv.d.ts +1 -1
  408. package/dist/safe-bash-command-xan/argv.js +1 -1
  409. package/dist/safe-bash-command-xan/commands.js +5 -3
  410. package/dist/safe-bash-command-xan/csv.d.ts +1 -1
  411. package/dist/safe-bash-command-xan/csv.js +1 -1
  412. package/dist/safe-bash-command-xan/index.js +7 -7
  413. package/dist/safe-bash-command-xan/io.js +3 -3
  414. package/dist/safe-bash-command-xmllint/index.js +1 -1
  415. package/dist/safe-bash-command-xxd/index.js +105 -91
  416. package/dist/safe-bash-command-xz/command.d.ts +2 -0
  417. package/dist/safe-bash-command-xz/index.d.ts +1 -1
  418. package/dist/safe-bash-command-xz/index.js +8 -0
  419. package/dist/safe-bash-command-yq/query.js +1 -1
  420. package/dist/safe-bash-command-zip/index.js +1 -1
  421. package/dist/safe-bash-command-zip/zip.js +1 -1
  422. package/dist/safe-bash-contracts/escaping.js +3 -3
  423. package/dist/safe-bash-contracts/filesystem-output.js +2 -2
  424. package/dist/safe-bash-contracts/index.d.ts +1 -0
  425. package/dist/safe-bash-contracts/index.js +7 -3
  426. package/dist/safe-bash-contracts/io.d.ts +4 -1
  427. package/dist/safe-bash-contracts/io.js +3 -1
  428. package/dist/safe-bash-contracts/managed-abort.d.ts +10 -0
  429. package/dist/safe-bash-contracts/output.js +2 -2
  430. package/dist/safe-bash-diff-engine/index.js +1 -1
  431. package/dist/safe-bash-diff-engine/shared.d.ts +3 -2
  432. package/dist/safe-bash-diff-engine/shared.js +1 -1
  433. package/dist/safe-bash-io-engine/commands/archive/internal.js +5 -23
  434. package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
  435. package/dist/safe-bash-io-engine/commands/text-programs/shared.js +33 -44
  436. package/dist/safe-bash-io-engine/internal.js +1 -1
  437. package/dist/safe-bash-io-engine/shell/pattern.js +1 -1
  438. package/dist/safe-bash-io-engine/shell/string-operations.js +1 -1
  439. package/dist/safe-bash-mcp/index.browser.d.ts +155 -35
  440. package/dist/safe-bash-mcp/index.browser.js +416 -0
  441. package/dist/safe-bash-mcp/index.d.ts +54 -2
  442. package/dist/safe-bash-mcp/index.js +286 -90
  443. package/dist/safe-bash-network-engine/aggregate.js +2 -2
  444. package/dist/safe-bash-network-engine/args.js +4 -4
  445. package/dist/safe-bash-network-engine/authorizer.js +1 -1
  446. package/dist/safe-bash-network-engine/body.js +6 -6
  447. package/dist/safe-bash-network-engine/decode.d.ts +1 -1
  448. package/dist/safe-bash-network-engine/decode.js +3 -4
  449. package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
  450. package/dist/safe-bash-network-engine/form-content-type.js +2 -2
  451. package/dist/safe-bash-network-engine/form-headers.js +2 -2
  452. package/dist/safe-bash-network-engine/glob.js +1 -1
  453. package/dist/safe-bash-network-engine/index.js +4 -4
  454. package/dist/safe-bash-network-engine/input.js +6 -6
  455. package/dist/safe-bash-network-engine/output.js +2 -2
  456. package/dist/safe-bash-network-engine/platform-portable.js +3 -3
  457. package/dist/safe-bash-network-engine/shared.js +2 -2
  458. package/dist/safe-bash-network-engine/types.d.ts +7 -2
  459. package/dist/safe-bash-network-engine/types.js +1 -1
  460. package/dist/safe-bash-network-engine/url.js +2 -2
  461. package/dist/safe-bash-query-engine/capture.js +3 -3
  462. package/dist/safe-bash-query-engine/delpaths.js +3 -3
  463. package/dist/safe-bash-query-engine/formats.js +2 -2
  464. package/dist/safe-bash-query-engine/index.js +11 -11
  465. package/dist/safe-bash-query-engine/indices.js +3 -3
  466. package/dist/safe-bash-query-engine/input.js +1 -1
  467. package/dist/safe-bash-query-engine/interpreter.js +9 -9
  468. package/dist/safe-bash-query-engine/parser.js +1 -1
  469. package/dist/safe-bash-query-engine/query-core.js +11 -11
  470. package/dist/safe-bash-query-engine/regex.js +4 -4
  471. package/dist/safe-bash-query-engine/splits.js +5 -5
  472. package/dist/safe-bash-query-engine/values.js +2 -2
  473. package/dist/safe-bash-regex-engine/ere/matcher.js +102 -30
  474. package/dist/safe-bash-regex-engine/execution/bounded-provider.js +55 -67
  475. package/dist/safe-bash-regex-engine/execution/portable.d.ts +0 -1
  476. package/dist/safe-bash-regex-engine/execution/portable.js +6 -10
  477. package/dist/safe-bash-regex-engine/execution/protocol.d.ts +0 -5
  478. package/dist/safe-bash-regex-engine/execution/protocol.js +1 -3
  479. package/dist/safe-bash-regex-engine/index.js +6 -4
  480. package/dist/safe-bash-regex-engine/text/budget.d.ts +1 -1
  481. package/dist/safe-bash-regex-engine/text/budget.js +1 -1
  482. package/dist/safe-bash-regex-engine/text/regex.d.ts +14 -0
  483. package/dist/safe-bash-regex-engine/text/regex.js +6 -4
  484. package/dist/safe-bash-regex-engine/text/replacement-buffer.js +2 -2
  485. package/dist/safe-bash-regex-engine/text/rust-syntax.js +2 -2
  486. package/dist/safe-bash-search-engine/grep.js +189 -227
  487. package/dist/safe-bash-table-text-engine/table-text/internal.d.ts +7 -5
  488. package/dist/safe-bash-table-text-engine/table-text/internal.js +39 -21
  489. package/dist/safe-playwright-cloudflare/browser-trace-budget.js +6 -2
  490. package/dist/spreadsheet-engine/codecs/odf-hyperlinks.js +8 -2
  491. package/dist/spreadsheet-engine/formulas/functions/captured-bessel-phase.js +2 -2
  492. package/dist/spreadsheet-engine/formulas/label-references.js +54 -33
  493. package/dist/spreadsheet-engine/formulas/parser.js +3 -1
  494. package/dist/spreadsheet-engine/formulas/rewriting.js +13 -3
  495. package/dist/spreadsheet-format-xls/biff-data-tables.js +4 -6
  496. package/dist/spreadsheet-format-xls/biff-formulas.js +3 -0
  497. package/dist/spreadsheet-format-xls/biff-label-ranges.js +9 -6
  498. package/dist/spreadsheet-format-xls/biff.js +1 -1
  499. package/dist/xlsx-ast/xlsx.js +8 -5
  500. package/package.json +68 -12
  501. package/dist/safe-bash/command-chunks/chunk-KAGBORIC.js +0 -88
  502. /package/dist/safe-bash/command-chunks/{chunk-BWNXWI33.js → chunk-2LMZVE3I.js} +0 -0
@@ -35,6 +35,7 @@ import {
35
35
 
36
36
  // packages/safe-bash-command-imagemagick/src/index.ts
37
37
  init_buffer();
38
+ import { resolvePath } from "../safe-bash-contracts/path.js";
38
39
  import { yieldTurn, drainCooperativeSteps as drainSteps } from "../safe-bash-contracts/yield.js";
39
40
  import { InputByteBudget } from "../safe-bash-contracts/io.js";
40
41
  import { writeFileOutput } from "../safe-bash-contracts/filesystem-output-budget.js";
@@ -3323,10 +3324,22 @@ function parseMagickIndexSpec(spec, length) {
3323
3324
  function* evaluatePipelineTokensSteps(tokens, files, state, parentStack = [], stdinBytes, signal) {
3324
3325
  let cooperativeWork = 63;
3325
3326
  let stack = [];
3327
+ let operandsOnly = false;
3326
3328
  let i = 0;
3327
3329
  while (i < tokens.length) {
3328
3330
  yield;
3329
3331
  const t = tokens[i];
3332
+ if (!operandsOnly && t === "--") {
3333
+ operandsOnly = true;
3334
+ i++;
3335
+ continue;
3336
+ }
3337
+ if (operandsOnly) {
3338
+ const loaded = yield* parseInputOperandsSteps(t, files, state, stdinBytes);
3339
+ if (loaded) stack.push(...loaded);
3340
+ i++;
3341
+ continue;
3342
+ }
3330
3343
  if (t === "(") {
3331
3344
  let depth = 1;
3332
3345
  let j = i + 1;
@@ -4269,14 +4282,15 @@ function* evaluatePipelineTokensSteps(tokens, files, state, parentStack = [], st
4269
4282
  }
4270
4283
  function* runConvertCliSteps(argv, files, stdinBytes, signal) {
4271
4284
  let cooperativeWork = 63;
4272
- if (argv.length === 0 || argv.includes("--help") || argv.includes("-help") || argv.includes("-h")) {
4285
+ const optionArgs = argv.slice(0, argv.indexOf("--") < 0 ? argv.length : argv.indexOf("--"));
4286
+ if (argv.length === 0 || optionArgs.includes("--help") || optionArgs.includes("-help") || optionArgs.includes("-h")) {
4273
4287
  return {
4274
4288
  exitCode: 0,
4275
4289
  stdout: "Usage: magick [input-options] input-file [operators] output-file\n",
4276
4290
  stderr: ""
4277
4291
  };
4278
4292
  }
4279
- if (argv.includes("--version") || argv.includes("-version")) {
4293
+ if (optionArgs.includes("--version") || optionArgs.includes("-version")) {
4280
4294
  return {
4281
4295
  exitCode: 0,
4282
4296
  stdout: "Version: ImageMagick 7.1.1-safe-bash (@poe-code/image-ast)\n",
@@ -5040,7 +5054,6 @@ async function executeVfsMagickTool(context, runner, maxInputBytes) {
5040
5054
  const carrier = getCommandArguments(context);
5041
5055
  const argv = [...carrier.args];
5042
5056
  const vfsFiles = /* @__PURE__ */ new Map();
5043
- const resolveVfsPath = (p) => p.startsWith("/") ? p : `${context.cwd === "/" ? "" : context.cwd}/${p}`;
5044
5057
  const budget = new InputByteBudget(maxInputBytes);
5045
5058
  let accountedBytes = 0;
5046
5059
  const chargeInput = (bytes) => {
@@ -5050,13 +5063,18 @@ async function executeVfsMagickTool(context, runner, maxInputBytes) {
5050
5063
  };
5051
5064
  let needsStdin = false;
5052
5065
  const hasOutputOperand = runner !== runIdentifyCli && !(runner === runMagickCli && argv[0] === "identify");
5066
+ let operandsOnly = false;
5053
5067
  for (const [index, token] of argv.entries()) {
5054
5068
  if (++cooperativeWork % 64 === 0) await yieldTurn(context.signal);
5069
+ if (!operandsOnly && token === "--") {
5070
+ operandsOnly = true;
5071
+ continue;
5072
+ }
5055
5073
  if (token === "-" || token.endsWith(":-")) {
5056
5074
  if (!hasOutputOperand || index < argv.length - 1) needsStdin = true;
5057
5075
  continue;
5058
5076
  }
5059
- if (token.startsWith("-") || token.startsWith("+") || token === "(" || token === ")") continue;
5077
+ if (!operandsOnly && (token.startsWith("-") || token.startsWith("+") || token === "(" || token === ")")) continue;
5060
5078
  let candidate = token.toLowerCase().startsWith("tile:") ? token.slice(5) : token;
5061
5079
  const prefixMatch = /^([a-zA-Z0-9]+):(.*)$/.exec(candidate);
5062
5080
  if (prefixMatch && extToImageFormat(prefixMatch[1])) {
@@ -5068,7 +5086,7 @@ async function executeVfsMagickTool(context, runner, maxInputBytes) {
5068
5086
  }
5069
5087
  let bytes;
5070
5088
  try {
5071
- bytes = await context.fs.readFile(resolveVfsPath(candidate), {
5089
+ bytes = await context.fs.readFile(resolvePath(context.cwd, candidate), {
5072
5090
  signal: invocation.signal
5073
5091
  });
5074
5092
  } catch {
@@ -5111,7 +5129,7 @@ async function executeVfsMagickTool(context, runner, maxInputBytes) {
5111
5129
  for (const [key, val] of vfsFiles.entries()) {
5112
5130
  if (++cooperativeWork % 64 === 0) await yieldTurn(context.signal);
5113
5131
  if (existingSnap.get(key) !== val) {
5114
- const abs = resolveVfsPath(key);
5132
+ const abs = resolvePath(context.cwd, key);
5115
5133
  await writeFileOutput(context, val, (data) => context.fs.writeFile(abs, data, { signal: invocation.signal }));
5116
5134
  }
5117
5135
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createJoinCommand
3
- } from "../safe-bash/command-chunks/chunk-AO6Z5EQ7.js";
3
+ } from "../safe-bash/command-chunks/chunk-WVE64WM2.js";
4
4
  import {
5
5
  init_buffer
6
6
  } from "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createJoinCommand
3
- } from "../safe-bash/command-chunks/chunk-AO6Z5EQ7.js";
3
+ } from "../safe-bash/command-chunks/chunk-WVE64WM2.js";
4
4
  import "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
5
5
  export {
6
6
  createJoinCommand
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createJqCommand
3
- } from "../safe-bash/command-chunks/chunk-JQ74HC37.js";
3
+ } from "../safe-bash/command-chunks/chunk-MQFIPHIQ.js";
4
4
  import {
5
5
  init_buffer
6
6
  } from "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createJqCommand,
3
3
  executeJq
4
- } from "../safe-bash/command-chunks/chunk-JQ74HC37.js";
4
+ } from "../safe-bash/command-chunks/chunk-MQFIPHIQ.js";
5
5
  import "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
6
6
  export {
7
7
  createJqCommand,
@@ -4,6 +4,8 @@ import {
4
4
 
5
5
  // packages/safe-bash-command-less/src/index.ts
6
6
  init_buffer();
7
+ import { Pattern } from "../safe-bash-regex-engine/index.js";
8
+ import { Budget } from "../safe-bash-regex-engine/text/budget.js";
7
9
  import { FsError } from "../safe-bash-contracts/index.js";
8
10
  import { PublicDiagnostic } from "../safe-bash-contracts/diagnostics.js";
9
11
  import { yieldTurn } from "../safe-bash-contracts/yield.js";
@@ -89,6 +91,7 @@ function createPagerCommand(name, options = {}) {
89
91
  const args = getCommandArguments(context).args;
90
92
  let lineNumbers = false;
91
93
  let squeezeBlank = false;
94
+ let ignoreCase = false;
92
95
  let startLine = 1;
93
96
  let startSearch;
94
97
  const files = [];
@@ -121,6 +124,8 @@ function createPagerCommand(name, options = {}) {
121
124
  if (!endOfOptions && arg.startsWith("--")) {
122
125
  if (arg === "--LINE-NUMBERS" || arg === "--line-numbers") lineNumbers = true;
123
126
  else if (arg === "--squeeze-blank-lines") squeezeBlank = true;
127
+ else if (arg === "--ignore-case" || arg === "--IGNORE-CASE") ignoreCase = true;
128
+ else if (arg === "--pattern" || arg.startsWith("--pattern=")) startSearch = arg === "--pattern" ? args[++i] ?? "" : arg.slice(10);
124
129
  continue;
125
130
  }
126
131
  if (!endOfOptions && arg.startsWith("-") && arg.length > 1) {
@@ -129,12 +134,16 @@ function createPagerCommand(name, options = {}) {
129
134
  if (ch === "N") lineNumbers = true;
130
135
  else if (ch === "n") lineNumbers = false;
131
136
  else if (ch === "s") squeezeBlank = true;
137
+ else if (ch === "i" || ch === "I") ignoreCase = true;
132
138
  else if (ch === "p") {
133
139
  startSearch = j < arg.length - 1 ? arg.slice(j + 1) : args[++i] ?? "";
134
140
  break;
135
141
  } else if ("Pxz".includes(ch)) {
136
- if (j === arg.length - 1 && i + 1 < args.length && !args[i + 1].startsWith("-")) {
137
- i++;
142
+ const value = j < arg.length - 1 ? arg.slice(j + 1) : args[++i];
143
+ if (value === void 0 || ch !== "P" && !(ch === "x" ? /^\d+(,\d+)*$/u : /^[+-]?\d+$/u).test(value)) {
144
+ await writeText(context.stderr, `${name}: numeric value required after -${ch}
145
+ `);
146
+ return { exitCode: 1 };
138
147
  }
139
148
  break;
140
149
  }
@@ -166,6 +175,7 @@ function createPagerCommand(name, options = {}) {
166
175
  return { exitCode: 0 };
167
176
  }
168
177
  try {
178
+ const passThrough = !lineNumbers && !squeezeBlank && startLine === 1 && !startSearch;
169
179
  const texts = [];
170
180
  let exitCode = 0;
171
181
  if (files.length === 0) {
@@ -173,7 +183,15 @@ function createPagerCommand(name, options = {}) {
173
183
  } else {
174
184
  for (const file of files) {
175
185
  if (file === "-") {
176
- texts.push(await readSourceText(context.stdin, maxBytes, context.signal));
186
+ if (passThrough) {
187
+ let total = 0;
188
+ for await (const chunk of readBytes(context.stdin, context.signal)) {
189
+ total += chunk.byteLength;
190
+ if (total > maxBytes) throw new PublicDiagnostic(`input exceeds maximum size of ${maxBytes} bytes`);
191
+ await writeBytes(context.stdout, chunk, context.signal);
192
+ await yieldTurn(context.signal);
193
+ }
194
+ } else texts.push(await readSourceText(context.stdin, maxBytes, context.signal));
177
195
  } else {
178
196
  try {
179
197
  const targetPath = pathPosix.resolve(context.cwd, file);
@@ -184,7 +202,8 @@ function createPagerCommand(name, options = {}) {
184
202
  `);
185
203
  return { exitCode: 1 };
186
204
  }
187
- texts.push(new TextDecoder("utf-8", { fatal: false }).decode(raw));
205
+ if (passThrough) await writeBytes(context.stdout, raw, context.signal);
206
+ else texts.push(new TextDecoder("utf-8", { fatal: false }).decode(raw));
188
207
  } catch (err) {
189
208
  context.signal.throwIfAborted();
190
209
  if (!(err instanceof FsError)) throw err;
@@ -203,11 +222,13 @@ function createPagerCommand(name, options = {}) {
203
222
  if (hasTrailingNewline) rawLines.pop();
204
223
  let startIdx = Math.max(0, startLine - 1);
205
224
  if (startSearch) {
225
+ const pattern = new Pattern(startSearch, true, ignoreCase);
226
+ const budget = new Budget(context, { maxSteps: Infinity, maxBufferBytes: Infinity });
206
227
  let found = -1;
207
228
  for (let index = 0; index < rawLines.length; index++) {
208
229
  context.signal.throwIfAborted();
209
230
  if ((index & 127) === 0) await yieldTurn(context.signal);
210
- if (rawLines[index].includes(startSearch)) {
231
+ if (await pattern.find(rawLines[index], budget) !== void 0) {
211
232
  found = index;
212
233
  break;
213
234
  }
@@ -267,12 +288,11 @@ function lessCommands(options = {}) {
267
288
  };
268
289
  }
269
290
  var pagerCommands = lessCommands;
270
- var syncLessDecoder = new TextDecoder("utf-8", { fatal: false });
291
+ var syncLessDecoder = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
271
292
  var SYNC_LESS_SIMPLE_FLAGS = /* @__PURE__ */ new Set(["N", "s", "F", "R", "X", "S", "i", "I", "q", "Q", "e", "E", "m", "M", "w", "W", "c", "d", "f", "u", "n", "G", "g", "J", "K", "L", "r", "U", "V"]);
272
293
  function evalSyncLess(stdinBytes, args, readFile) {
273
294
  let lineNumbers = false;
274
295
  let squeezeBlank = false;
275
- let ignoreCase = false;
276
296
  let startLine = 1;
277
297
  let startSearch;
278
298
  const files = [];
@@ -297,7 +317,7 @@ function evalSyncLess(stdinBytes, args, readFile) {
297
317
  if (parsingFlags && arg.startsWith("--")) {
298
318
  if (arg === "--LINE-NUMBERS" || arg === "--line-numbers") lineNumbers = true;
299
319
  else if (arg === "--squeeze-blank-lines") squeezeBlank = true;
300
- else if (arg === "--ignore-case" || arg === "--IGNORE-CASE") ignoreCase = true;
320
+ else if (arg === "--ignore-case" || arg === "--IGNORE-CASE") continue;
301
321
  else if (arg === "--pattern" || arg.startsWith("--pattern=")) {
302
322
  const pat = arg === "--pattern" ? args[++i] : arg.slice(10);
303
323
  if (pat === void 0) return void 0;
@@ -316,17 +336,15 @@ function evalSyncLess(stdinBytes, args, readFile) {
316
336
  break;
317
337
  }
318
338
  if ("Pxz".includes(ch)) {
319
- if (j === arg.length - 1 && i + 1 < args.length && !args[i + 1].startsWith("-")) i++;
339
+ const value = j < arg.length - 1 ? arg.slice(j + 1) : args[++i];
340
+ if (value === void 0 || ch !== "P" && !(ch === "x" ? /^\d+(,\d+)*$/u : /^[+-]?\d+$/u).test(value)) return void 0;
320
341
  break;
321
342
  }
322
343
  if (ch === "n") {
323
344
  lineNumbers = false;
324
345
  continue;
325
346
  }
326
- if (ch === "i" || ch === "I") {
327
- ignoreCase = true;
328
- continue;
329
- }
347
+ if (ch === "i" || ch === "I") continue;
330
348
  if (!SYNC_LESS_SIMPLE_FLAGS.has(ch) || ch === "V") return void 0;
331
349
  if (ch === "N") lineNumbers = true;
332
350
  else if (ch === "s") squeezeBlank = true;
@@ -335,16 +353,25 @@ function evalSyncLess(stdinBytes, args, readFile) {
335
353
  }
336
354
  files.push(arg);
337
355
  }
356
+ if (startSearch) return void 0;
338
357
  const chunks = [];
339
358
  if (files.length === 0) {
340
359
  if (!stdinBytes) return void 0;
341
- chunks.push(syncLessDecoder.decode(stdinBytes));
360
+ try {
361
+ chunks.push(syncLessDecoder.decode(stdinBytes));
362
+ } catch {
363
+ return void 0;
364
+ }
342
365
  } else {
343
366
  for (let i = 0; i < files.length; i++) {
344
367
  const f = files[i];
345
368
  const b = f === "-" ? stdinBytes : readFile ? readFile(f) : void 0;
346
369
  if (!b) return void 0;
347
- chunks.push(syncLessDecoder.decode(b));
370
+ try {
371
+ chunks.push(syncLessDecoder.decode(b));
372
+ } catch {
373
+ return void 0;
374
+ }
348
375
  }
349
376
  }
350
377
  const combined = chunks.join("");
@@ -355,19 +382,7 @@ function evalSyncLess(stdinBytes, args, readFile) {
355
382
  const hasTrailingNewline = combined.endsWith("\n");
356
383
  const rawLines = combined.split("\n");
357
384
  if (hasTrailingNewline) rawLines.pop();
358
- let startIdx = Math.max(0, startLine - 1);
359
- if (startSearch) {
360
- let found = -1;
361
- const needle = ignoreCase ? startSearch.toLowerCase() : startSearch;
362
- for (let idx = 0; idx < rawLines.length; idx++) {
363
- const hay = ignoreCase ? rawLines[idx].toLowerCase() : rawLines[idx];
364
- if (hay.includes(needle)) {
365
- found = idx;
366
- break;
367
- }
368
- }
369
- if (found >= 0) startIdx = found;
370
- }
385
+ const startIdx = Math.max(0, startLine - 1);
371
386
  let out = "";
372
387
  let prevBlank = false;
373
388
  for (let idx = startIdx; idx < rawLines.length; idx++) {
@@ -11,3 +11,4 @@ export { serializeSceneToSvg } from "./svg.js";
11
11
  export { measureLineWidth, measureTextBlock, normalizeLabelText } from "./text.js";
12
12
  export { darkThemeTokens, lightThemeTokens, parseCssColor, resolveMermaidTheme } from "./theme.js";
13
13
  export { createMmdcCommands, type MmdcCommandsOptions } from "./command.js";
14
+ export type { MermaidLimits as MmdcLimits } from "./contracts.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createNlWithSettings
3
- } from "../safe-bash/command-chunks/chunk-EFANWIHL.js";
3
+ } from "../safe-bash/command-chunks/chunk-GY3BWK7K.js";
4
4
  import {
5
5
  init_buffer
6
6
  } from "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createNlWithSettings
3
- } from "../safe-bash/command-chunks/chunk-EFANWIHL.js";
3
+ } from "../safe-bash/command-chunks/chunk-GY3BWK7K.js";
4
4
  import "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
5
5
  export {
6
6
  createNlWithSettings
@@ -2319,17 +2319,6 @@ var Converter = class {
2319
2319
  lineOut += text;
2320
2320
  }
2321
2321
  if (end >= line.length) break;
2322
- if (onlyFirstField && field === 1n) {
2323
- if (settings2.delimiter !== void 0) {
2324
- if (this.tick((settings2.fields?.length ?? 0) + 1)) return bail();
2325
- lineOut += line.slice(end);
2326
- break;
2327
- } else if (line[end] === " " && !/[\t\n]| {2}| $/.test(line.slice(end))) {
2328
- if (this.tick((settings2.fields?.length ?? 0) + 1)) return bail();
2329
- lineOut += line.slice(end);
2330
- break;
2331
- }
2332
- }
2333
2322
  lineOut += settings2.delimiter ?? " ";
2334
2323
  start = end + 1;
2335
2324
  }
@@ -163,42 +163,48 @@ var ByteInputBudget = class {
163
163
  }
164
164
  }
165
165
  };
166
- async function* sources(context, operands, maxInputBytes) {
166
+ async function* sources(context, operands, maxInputBytes, onFileError) {
167
167
  const budget = new ByteInputBudget(maxInputBytes);
168
168
  let usedStdin = false;
169
169
  let emptyChunks = 0;
170
170
  for (const operand of operands.length ? operands : ["-"]) {
171
171
  budget.assertOpen(context.signal);
172
- let source;
173
- if (operand === "-") {
174
- if (usedStdin) continue;
175
- usedStdin = true;
176
- source = context.stdin;
177
- } else {
178
- const path = pathOf(context, operand);
179
- if (context.fs.readStream && context.fs.capabilities?.streamingRead !== false) {
180
- source = context.fs.readStream(path, { signal: context.signal, chunkSize: blockSize });
172
+ try {
173
+ let source;
174
+ if (operand === "-") {
175
+ if (usedStdin) continue;
176
+ usedStdin = true;
177
+ source = context.stdin;
181
178
  } else {
182
- const bytes = await context.fs.readFile(path, { signal: context.signal });
183
- source = (async function* () {
184
- yield bytes;
185
- })();
186
- }
187
- }
188
- let slicesSinceYield = 0;
189
- for await (const chunk of budget.read(source, context.signal)) {
190
- if (chunk.length === 0 && ++emptyChunks % 64 === 0) {
191
- await yieldTurn();
192
- context.signal.throwIfAborted();
179
+ const path = pathOf(context, operand);
180
+ if (context.fs.readStream && context.fs.capabilities?.streamingRead !== false) {
181
+ source = context.fs.readStream(path, { signal: context.signal, chunkSize: blockSize });
182
+ } else {
183
+ const bytes = await context.fs.readFile(path, { signal: context.signal });
184
+ source = (async function* () {
185
+ yield bytes;
186
+ })();
187
+ }
193
188
  }
194
- for (let offset = 0; offset < chunk.length; offset += blockSize) {
195
- if (++slicesSinceYield >= 32) {
196
- slicesSinceYield = 0;
189
+ let slicesSinceYield = 0;
190
+ for await (const chunk of budget.read(source, context.signal)) {
191
+ if (chunk.length === 0 && ++emptyChunks % 64 === 0) {
197
192
  await yieldTurn();
193
+ context.signal.throwIfAborted();
194
+ }
195
+ for (let offset = 0; offset < chunk.length; offset += blockSize) {
196
+ if (++slicesSinceYield >= 32) {
197
+ slicesSinceYield = 0;
198
+ await yieldTurn();
199
+ }
200
+ context.signal.throwIfAborted();
201
+ yield chunk.subarray(offset, offset + blockSize);
198
202
  }
199
- context.signal.throwIfAborted();
200
- yield chunk.subarray(offset, offset + blockSize);
201
203
  }
204
+ } catch (error) {
205
+ context.signal.throwIfAborted();
206
+ if (operand === "-" || !(error instanceof FsError) || !["ENOENT", "EACCES", "EISDIR", "ENOTDIR", "EIO"].includes(error.code)) throw error;
207
+ await onFileError(error);
202
208
  }
203
209
  }
204
210
  }
@@ -426,22 +432,36 @@ var OD_NAMES = [
426
432
  ];
427
433
  var OD_HEX1_TABLE = Array.from({ length: 256 }, (_, i) => " " + i.toString(16).padStart(2, "0"));
428
434
  var OD_OCT1_TABLE = Array.from({ length: 256 }, (_, i) => " " + i.toString(8).padStart(3, "0"));
429
- var OD_ASCII_CHAR = Array.from({ length: 256 }, (_, i) => i >= 32 && i <= 126 ? String.fromCharCode(i) : ".");
430
- function formatRow(row, format, bigEndian) {
431
- let text = "";
432
- if (format.size === 1 && (format.kind === "x" || format.kind === "o")) {
433
- const table = format.kind === "x" ? OD_HEX1_TABLE : OD_OCT1_TABLE;
434
- for (let i = 0; i < row.length; i++) text += table[row[i]];
435
- if (format.printable) {
436
- let ascii = "";
437
- for (let i = 0; i < row.length; i++) ascii += OD_ASCII_CHAR[row[i]];
438
- text += ` >${ascii}<`;
439
- }
440
- return text;
435
+ function fieldWidth(format) {
436
+ const bits = format.size * 8;
437
+ switch (format.kind) {
438
+ case "a":
439
+ case "c":
440
+ return 3;
441
+ case "f":
442
+ return format.size === 4 ? 15 : 24;
443
+ case "o":
444
+ return Math.ceil(bits / 3);
445
+ case "x":
446
+ return bits / 4;
447
+ case "d":
448
+ return (1n << BigInt(bits - 1)).toString().length + 1;
449
+ default:
450
+ return ((1n << BigInt(bits)) - 1n).toString().length;
441
451
  }
452
+ }
453
+ function formatRow(row, format, bigEndian, rowWidth, charsPerByte) {
454
+ let text = "";
442
455
  const escapes = OD_ESCAPES;
443
456
  const names = OD_NAMES;
457
+ const width = fieldWidth(format);
444
458
  for (let offset = 0; offset < row.length; offset += format.size) {
459
+ const columnWidth = Math.ceil((offset + format.size) * charsPerByte) - Math.ceil(offset * charsPerByte);
460
+ text += " ".repeat(columnWidth - width - 1);
461
+ if (format.size === 1 && (format.kind === "x" || format.kind === "o")) {
462
+ text += (format.kind === "x" ? OD_HEX1_TABLE : OD_OCT1_TABLE)[row[offset]];
463
+ continue;
464
+ }
445
465
  if (format.kind === "a") {
446
466
  const byte = row[offset] & 127;
447
467
  text += ` ${(names[byte] ?? (byte === 127 ? "del" : String.fromCharCode(byte))).padStart(3)}`;
@@ -470,13 +490,12 @@ function formatRow(row, format, bigEndian) {
470
490
  const bits = format.size * 8;
471
491
  if (format.kind === "d" && number >= 1n << BigInt(bits - 1)) number -= 1n << BigInt(bits);
472
492
  const base = format.kind === "o" ? 8 : format.kind === "x" ? 16 : 10;
473
- const width = format.kind === "o" ? Math.ceil(bits / 3) : format.kind === "x" ? bits / 4 : format.kind === "d" ? (1n << BigInt(bits - 1)).toString().length + 1 : ((1n << BigInt(bits)) - 1n).toString().length;
474
493
  text += ` ${number.toString(base).padStart(width, base === 10 ? " " : "0")}`;
475
494
  }
476
495
  if (format.printable) {
477
496
  let ascii = "";
478
497
  for (const byte of row) ascii += byte >= 32 && byte <= 126 ? String.fromCharCode(byte) : ".";
479
- text += ` >${ascii}<`;
498
+ text = text.padEnd(Math.ceil(rowWidth * charsPerByte)) + ` >${ascii}<`;
480
499
  }
481
500
  return text;
482
501
  }
@@ -505,6 +524,12 @@ function defineOdCommand(handler) {
505
524
  function createOdCommand(optionsOrMaxBytes) {
506
525
  const maxInputBytes = resolveMaxInputBytes(optionsOrMaxBytes);
507
526
  return defineOdCommand(async (context) => {
527
+ let exitCode = 0;
528
+ const onFileError = async (error) => {
529
+ exitCode = 1;
530
+ await writeDiagnostic(context.stderr, `${context.command}: ${error.message}
531
+ `, context.signal);
532
+ };
508
533
  const aliases = {
509
534
  a: "a",
510
535
  b: "o1",
@@ -624,6 +649,10 @@ function createOdCommand(optionsOrMaxBytes) {
624
649
  );
625
650
  const skip = validatedOption(parsed, "j", (text) => numeric(text, true), 0);
626
651
  const count = validatedOption(parsed, "N", (text) => numeric(text, true), Infinity);
652
+ if (count === 0 && skip === 0 && parsed.operands[0] && parsed.operands[0] !== "-") {
653
+ await context.fs.stat(pathOf(context, parsed.operands[0]), { signal: context.signal });
654
+ }
655
+ const charsPerByte = Math.max(...selected.map((format) => (fieldWidth(format) + 1) / format.size));
627
656
  const minimumStringLength = validatedOption(
628
657
  parsed,
629
658
  "S",
@@ -642,7 +671,7 @@ function createOdCommand(optionsOrMaxBytes) {
642
671
  let text = "";
643
672
  let length = 0;
644
673
  let start = "";
645
- for await (const chunk of range(sources(context, parsed.operands, maxInputBytes), skip, count)) {
674
+ for await (const chunk of range(sources(context, parsed.operands, maxInputBytes, onFileError), skip, count)) {
646
675
  for (const byte of chunk) {
647
676
  if (byte >= 32 && byte <= 126) {
648
677
  if (!length) start = address();
@@ -657,7 +686,7 @@ function createOdCommand(optionsOrMaxBytes) {
657
686
  offset = addOffset(offset, 1);
658
687
  }
659
688
  }
660
- return { exitCode: 0 };
689
+ return { exitCode };
661
690
  }
662
691
  const verbose = parsed.flags.has("v");
663
692
  const isBigEndian = endian === "big";
@@ -675,42 +704,46 @@ function createOdCommand(optionsOrMaxBytes) {
675
704
  outBuf += text;
676
705
  if (!flushedFirst || outBuf.length >= 16384) await flushOut();
677
706
  };
678
- for await (const batch of rows(range(sources(context, parsed.operands, maxInputBytes), skip, count), width)) {
679
- for (let rowStart = 0; rowStart < batch.length; rowStart += width) {
680
- const row = batch.subarray(rowStart, Math.min(batch.length, rowStart + width));
681
- let same = false;
682
- if (!verbose && previous !== void 0 && previous.length === row.length) {
683
- same = true;
684
- for (let i = 0; i < row.length; i++) {
685
- if (previous[i] !== row[i]) {
686
- same = false;
687
- break;
707
+ try {
708
+ for await (const batch of rows(range(sources(context, parsed.operands, maxInputBytes, onFileError), skip, count), width)) {
709
+ for (let rowStart = 0; rowStart < batch.length; rowStart += width) {
710
+ const row = batch.subarray(rowStart, Math.min(batch.length, rowStart + width));
711
+ let same = false;
712
+ if (!verbose && previous !== void 0 && previous.length === row.length) {
713
+ same = true;
714
+ for (let i = 0; i < row.length; i++) {
715
+ if (previous[i] !== row[i]) {
716
+ same = false;
717
+ break;
718
+ }
688
719
  }
689
720
  }
690
- }
691
- if (same) {
692
- if (!suppressed) outBuf += "*\n";
693
- suppressed = true;
694
- } else {
695
- const addr = address();
696
- const pad = selected.length > 1 ? " ".repeat(addr.length) : "";
697
- for (let index = 0; index < selected.length; index++) {
698
- const prefix = index === 0 ? addr : pad;
699
- outBuf += `${prefix}${formatRow(row, selected[index], isBigEndian)}
721
+ if (same) {
722
+ if (!suppressed) outBuf += "*\n";
723
+ suppressed = true;
724
+ } else {
725
+ const addr = address();
726
+ const pad = selected.length > 1 ? " ".repeat(addr.length) : "";
727
+ for (let index = 0; index < selected.length; index++) {
728
+ const prefix = index === 0 ? addr : pad;
729
+ outBuf += `${prefix}${formatRow(row, selected[index], isBigEndian, width, charsPerByte)}
700
730
  `;
731
+ }
732
+ if (previous === void 0 || previous.length !== row.length) previous = row.slice();
733
+ else previous.set(row);
734
+ suppressed = false;
701
735
  }
702
- if (previous === void 0 || previous.length !== row.length) previous = row.slice();
703
- else previous.set(row);
704
- suppressed = false;
736
+ offset = addOffset(offset, row.length);
737
+ if (!flushedFirst && outBuf || outBuf.length >= 16384) await flushOut();
705
738
  }
706
- offset = addOffset(offset, row.length);
707
- if (!flushedFirst && outBuf || outBuf.length >= 16384) await flushOut();
708
739
  }
740
+ } finally {
741
+ await flushOut();
709
742
  }
710
743
  if (radix !== "n") await writeOut(`${address()}
711
744
  `);
712
745
  if (outBuf) await output(context, outBuf);
713
- return { exitCode: 0 };
746
+ return { exitCode };
714
747
  });
715
748
  }
716
749
  function createOdCommands(options = {}) {
@@ -2,7 +2,7 @@ import {
2
2
  createPandocCommand,
3
3
  createPandocCommands,
4
4
  pandocCommands
5
- } from "../safe-bash/command-chunks/chunk-6HMX4CQS.js";
5
+ } from "../safe-bash/command-chunks/chunk-TGSNCQSR.js";
6
6
  import "../safe-bash/command-chunks/chunk-BAXU7B5Z.js";
7
7
  import "../safe-bash/command-chunks/chunk-QRRYN2KO.js";
8
8
  import "../safe-bash/command-chunks/chunk-5LU4UCBR.js";
@@ -21,7 +21,7 @@ import {
21
21
  readDocument,
22
22
  resolveConversionArgs,
23
23
  writeDocument
24
- } from "../safe-bash/command-chunks/chunk-6HMX4CQS.js";
24
+ } from "../safe-bash/command-chunks/chunk-TGSNCQSR.js";
25
25
  import "../safe-bash/command-chunks/chunk-BAXU7B5Z.js";
26
26
  import "../safe-bash/command-chunks/chunk-QRRYN2KO.js";
27
27
  import "../safe-bash/command-chunks/chunk-5LU4UCBR.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createPasteCommand
3
- } from "../safe-bash/command-chunks/chunk-PXYOWWMV.js";
3
+ } from "../safe-bash/command-chunks/chunk-W7RAD4EW.js";
4
4
  import {
5
5
  init_buffer
6
6
  } from "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createPasteCommand
3
- } from "../safe-bash/command-chunks/chunk-PXYOWWMV.js";
3
+ } from "../safe-bash/command-chunks/chunk-W7RAD4EW.js";
4
4
  import "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
5
5
  export {
6
6
  createPasteCommand