@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
@@ -14,7 +14,7 @@ import {
14
14
 
15
15
  // packages/safe-bash-search-engine/src/grep.ts
16
16
  init_buffer();
17
- import { equalBytes, latin1Text } from "../safe-bash-io-engine/byte-encoding.js";
17
+ import { latin1Text } from "../safe-bash-io-engine/byte-encoding.js";
18
18
  import { shellValueByteLength } from "../safe-bash-contracts/value.js";
19
19
  import { tryReadMemoryFileViewSync } from "@poe-platform/safe-fs/core";
20
20
  import { assertCommandRequirements } from "../safe-bash-contracts/command-requirements.js";
@@ -51,15 +51,6 @@ var PooledGrepLine = class {
51
51
  };
52
52
  var EMPTY_GREP_ROWS = Object.freeze([]);
53
53
  trustedInputRows.add(EMPTY_GREP_ROWS);
54
- var sharedGrepOutBuffer = new Uint8Array(64 * 1024);
55
- var sharedGrepOutInUse = false;
56
- var cachedGrepOutBuffer = new Uint8Array(32768);
57
- var lastGrepRawBuf;
58
- var lastGrepPat = "";
59
- var lastGrepAnchored = false;
60
- var lastGrepMaxLineLen = 0;
61
- var lastGrepOutUsed = -1;
62
- var lastGrepAnySelected = false;
63
54
  var syncResolved = /* @__PURE__ */ Symbol.for("safe-bash.syncResolved");
64
55
  function isSyncResolved(promise) {
65
56
  return Boolean(promise && typeof promise === "object" && promise[syncResolved]);
@@ -265,7 +256,7 @@ function hasNulOrNonAscii(buf, start, end) {
265
256
  return false;
266
257
  }
267
258
  function tryFastGrepAscii(context, limits, pat, fileArg, anchoredStart) {
268
- if (fileArg !== void 0 && fileArg !== "-" && !sharedGrepOutInUse) {
259
+ if (fileArg !== void 0 && fileArg !== "-") {
269
260
  const fastBacking = context._fastMemoryBackingFs;
270
261
  const path = pathOf(context, fileArg);
271
262
  const backing = fastBacking ?? getRuntimeBackingFileSystem(context.fs) ?? context.fs;
@@ -276,29 +267,18 @@ function tryFastGrepAscii(context, limits, pat, fileArg, anchoredStart) {
276
267
  else chargeRuntimeFileSystemOperation(context.fs);
277
268
  const maxFileBytes = Number.isFinite(limits.maxFileBytes) ? limits.maxFileBytes : void 0;
278
269
  const raw = tryReadMemoryFileViewSync(backing, path, maxFileBytes, context.signal);
279
- if (raw !== void 0 && lastGrepOutUsed >= 0 && lastGrepRawBuf !== void 0 && raw.byteLength === lastGrepRawBuf.byteLength && pat === lastGrepPat && anchoredStart === lastGrepAnchored && lastGrepMaxLineLen <= Math.min(internalBufferLimit, limits.maxLineBytes ?? Infinity) && equalBytes(lastGrepRawBuf, raw)) {
280
- context.signal.throwIfAborted();
281
- if (!lastGrepOutUsed) {
282
- return lastGrepAnySelected ? RESOLVED_EXIT_ZERO : RESOLVED_EXIT_ONE;
283
- }
284
- const pending = outputRange(context, cachedGrepOutBuffer, lastGrepOutUsed);
285
- if (isSyncResolved(pending)) {
286
- return lastGrepAnySelected ? RESOLVED_EXIT_ZERO : RESOLVED_EXIT_ONE;
287
- }
288
- return pending.then(lastGrepAnySelected ? RETURN_EXIT_ZERO : RETURN_EXIT_ONE);
289
- }
290
- if (raw !== void 0 && raw.length < sharedGrepOutBuffer.length && !hasNulOrNonAscii(raw, 0, raw.length)) {
270
+ if (raw !== void 0) context.inputBudget?.check(raw.byteLength);
271
+ if (raw !== void 0 && raw.length < 65536 && !hasNulOrNonAscii(raw, 0, raw.length)) {
291
272
  const literalStart = anchoredStart ? 1 : 0;
292
273
  const litLen = pat.length - literalStart;
293
274
  const firstByte = pat.charCodeAt(literalStart);
294
275
  const lineLimit = Math.min(internalBufferLimit, limits.maxLineBytes ?? Infinity);
295
- const outBuffer = sharedGrepOutBuffer;
276
+ const outBuffer = new Uint8Array(64 * 1024);
296
277
  let outUsed = 0;
297
278
  let anySelected = false;
298
279
  let linesScanned = 0;
299
280
  let lineStart = 0;
300
281
  let exceededLines = false;
301
- let maxSeenLineLen = 0;
302
282
  while (lineStart < raw.length) {
303
283
  if ((linesScanned & 63) === 0) context.signal.throwIfAborted();
304
284
  if ((++linesScanned & 4095) === 0) {
@@ -308,7 +288,6 @@ function tryFastGrepAscii(context, limits, pat, fileArg, anchoredStart) {
308
288
  let lineEnd = raw.indexOf(10, lineStart);
309
289
  if (lineEnd < 0) lineEnd = raw.length;
310
290
  const lineLen = lineEnd - lineStart;
311
- if (lineLen > maxSeenLineLen) maxSeenLineLen = lineLen;
312
291
  if (lineLen > lineLimit) {
313
292
  throw new FsError("EFBIG", { message: "line buffer limit exceeded" });
314
293
  }
@@ -348,15 +327,6 @@ function tryFastGrepAscii(context, limits, pat, fileArg, anchoredStart) {
348
327
  lineStart = lineEnd + 1;
349
328
  }
350
329
  if (!exceededLines) {
351
- if (raw.byteLength >= 256 && outUsed <= 32768) {
352
- lastGrepRawBuf = new Uint8Array(raw);
353
- lastGrepPat = pat;
354
- lastGrepAnchored = anchoredStart;
355
- lastGrepMaxLineLen = maxSeenLineLen;
356
- lastGrepOutUsed = outUsed;
357
- lastGrepAnySelected = anySelected;
358
- cachedGrepOutBuffer.set(outBuffer.subarray(0, outUsed));
359
- }
360
330
  if (!outUsed) {
361
331
  return anySelected ? RESOLVED_EXIT_ZERO : RESOLVED_EXIT_ONE;
362
332
  }
@@ -367,6 +337,7 @@ function tryFastGrepAscii(context, limits, pat, fileArg, anchoredStart) {
367
337
  return pending.then(anySelected ? RETURN_EXIT_ZERO : RETURN_EXIT_ONE);
368
338
  }
369
339
  }
340
+ if (raw !== void 0) return tryFastGrepAsciiAsync(context, limits, pat, fileArg, anchoredStart, raw);
370
341
  } catch (error) {
371
342
  context.signal.throwIfAborted();
372
343
  if (error instanceof RegexExecutionError) return Promise.reject(error);
@@ -376,13 +347,11 @@ function tryFastGrepAscii(context, limits, pat, fileArg, anchoredStart) {
376
347
  }
377
348
  return tryFastGrepAsciiAsync(context, limits, pat, fileArg, anchoredStart);
378
349
  }
379
- async function tryFastGrepAsciiAsync(context, limits, pat, fileArg, anchoredStart) {
350
+ async function tryFastGrepAsciiAsync(context, limits, pat, fileArg, anchoredStart, admittedBytes) {
380
351
  const literalStart = anchoredStart ? 1 : 0;
381
352
  const litLen = pat.length - literalStart;
382
353
  const firstByte = pat.charCodeAt(literalStart);
383
- const ownsSharedOut = !sharedGrepOutInUse;
384
- if (ownsSharedOut) sharedGrepOutInUse = true;
385
- const outBuffer = ownsSharedOut ? sharedGrepOutBuffer : new Uint8Array(64 * 1024);
354
+ const outBuffer = new Uint8Array(64 * 1024);
386
355
  let outUsed = 0;
387
356
  let anySelected = false;
388
357
  let subjectLedger;
@@ -400,9 +369,10 @@ async function tryFastGrepAsciiAsync(context, limits, pat, fileArg, anchoredStar
400
369
  const backing = getRuntimeBackingFileSystem(context.fs) ?? context.fs;
401
370
  if (backing !== void 0 && backing.capabilitiesFor === void 0 && path !== "/dev" && !path.startsWith("/dev/") && context.fs.capabilities.streamingRead !== false && context.fs.capabilities.read !== false && Object.getPrototypeOf(backing)?.constructor?.name === "MemoryFileSystem" && !Object.prototype.hasOwnProperty.call(backing, "readStream") && !Object.prototype.hasOwnProperty.call(backing, "readFile")) {
402
371
  assertCommandRequirements(context, grepRequirements, ["file"]);
403
- chargeRuntimeFileSystemOperation(context.fs);
372
+ if (admittedBytes === void 0) chargeRuntimeFileSystemOperation(context.fs);
404
373
  const maxFileBytes = Number.isFinite(limits.maxFileBytes) ? limits.maxFileBytes : void 0;
405
- const raw = tryReadMemoryFileViewSync(backing, path, maxFileBytes, context.signal);
374
+ const raw = admittedBytes ?? tryReadMemoryFileViewSync(backing, path, maxFileBytes, context.signal);
375
+ if (admittedBytes === void 0 && raw !== void 0) context.inputBudget?.check(raw.byteLength);
406
376
  if (raw !== void 0) {
407
377
  const lineLimit = Math.min(internalBufferLimit, limits.maxLineBytes ?? Infinity);
408
378
  let lineStart = 0;
@@ -541,8 +511,6 @@ async function tryFastGrepAsciiAsync(context, limits, pat, fileArg, anchoredStar
541
511
  if (error instanceof RegexExecutionError) throw error;
542
512
  await diagnostic(context, error);
543
513
  return { exitCode: 2 };
544
- } finally {
545
- if (ownsSharedOut) sharedGrepOutInUse = false;
546
514
  }
547
515
  }
548
516
  async function executeGrepWithSession(context, session, limits, maxPatternCount, bufferLimit) {
@@ -787,8 +755,6 @@ inspect the resulting state before repeating the action.
787
755
  const delimiter = parsed.flags.has("z") ? "\0" : "\n";
788
756
  const delimiterBytes = parsed.flags.has("z") ? NUL_BYTES : NEWLINE_BYTES;
789
757
  const lineBuffered = parsed.flags.has("line-buffered") || parsed.flags.has("o");
790
- const ownsSharedOut = !sharedGrepOutInUse;
791
- if (ownsSharedOut) sharedGrepOutInUse = true;
792
758
  let outBuffer;
793
759
  let outStart = 0;
794
760
  let outUsed = 0;
@@ -821,7 +787,7 @@ inspect the resulting state before repeating the action.
821
787
  await output(context, bytes);
822
788
  return;
823
789
  }
824
- outBuffer ??= ownsSharedOut ? sharedGrepOutBuffer : new Uint8Array(64 * 1024);
790
+ outBuffer ??= new Uint8Array(64 * 1024);
825
791
  if (outUsed + bytes.length > outBuffer.length) {
826
792
  await flushOut();
827
793
  outBuffer = new Uint8Array(64 * 1024);
@@ -831,199 +797,195 @@ inspect the resulting state before repeating the action.
831
797
  outBuffer.set(bytes, outUsed);
832
798
  outUsed += bytes.length;
833
799
  };
834
- try {
835
- const extractMatches = parsed.flags.has("o") && !["c", "q", "l", "L", "v"].some((flag) => parsed.flags.has(flag));
836
- const displayLines = !["c", "q", "l", "L"].some((flag) => parsed.flags.has(flag));
837
- const withContext = (beforeContext > 0 || afterContext > 0) && displayLines && !(parsed.flags.has("o") && parsed.flags.has("v"));
838
- const before = withContext ? beforeContext : 0;
839
- const after = withContext ? afterContext : 0;
840
- let emittedGroup = false;
841
- let anySelected = false;
842
- let failed = false;
843
- const targets = parsed.operands.length === 0 && directoriesAction === void 0 && !parsed.flags.has("r") && !parsed.flags.has("R") && !parsed.values.has("d") && !parsed.values.has("D") && filters.length === 0 ? SINGLE_STDIN_FILE : grepFiles(context, parsed, filters, () => {
844
- failed = true;
845
- }, directoriesAction);
846
- for await (const { name, nested } of targets) {
847
- let count = 0;
848
- let number = 0;
849
- let byteOffset = 0;
850
- let nextOffset = 0;
851
- let lastCovered = 0;
852
- let remainingAfter = 0;
853
- let pendingBytes = 0;
854
- const pending = withContext ? /* @__PURE__ */ new Map() : void 0;
855
- const named = name === "-" ? value(parsed, "label") ?? "(standard input)" : name;
856
- const hasLinePrefix = !parsed.flags.has("h") && (parsed.flags.has("H") || multipleFiles || nested) || parsed.flags.has("n") || parsed.flags.has("b");
857
- const delimiterByte = delimiterBytes[0];
858
- const prefix = (lineNumber = false, position = number, separator = ":", offset = byteOffset) => `${!parsed.flags.has("h") && (parsed.flags.has("H") || multipleFiles || nested) ? `${named}${parsed.flags.has("Z") ? "\0" : separator}` : ""}${lineNumber && parsed.flags.has("n") ? `${position}${separator}` : ""}${lineNumber && parsed.flags.has("b") ? `${offset}${separator}` : ""}${lineNumber && parsed.flags.has("T") && (parsed.flags.has("n") || parsed.flags.has("b") || !parsed.flags.has("h") && (parsed.flags.has("H") || multipleFiles || nested)) ? " " : ""}`;
859
- const emitContext = async (line, position, offset = byteOffset) => {
860
- if (!parsed.flags.has("o")) {
861
- await writeOut(prefix(true, position, "-", offset));
862
- await writeOut(line.bytes);
863
- await writeOut(delimiterBytes);
864
- }
865
- lastCovered = position;
866
- };
867
- try {
868
- const source = name === "-" ? input(context) : requiredFileInput(context, grepRequirements, "file", name, limits.maxFileBytes ?? Infinity);
869
- let earlyExitZero = false;
870
- const invertMatch = parsed.flags.has("v");
871
- const isQuiet = parsed.flags.has("q");
872
- const isListFiles = parsed.flags.has("l") || parsed.flags.has("L");
873
- const isCountOnly = parsed.flags.has("c");
874
- const isOnlyMatching = parsed.flags.has("o");
875
- const canFastBufferLines = !isQuiet && !isListFiles && !isCountOnly && !withContext && !isOnlyMatching && !hasLinePrefix && !lineBuffered && binaryFiles.mode !== "without-match";
876
- const processBatchSlow = async (batch, endOfChunk, resultsPromise, startIdx = 0, precomputedResults) => {
877
- const results = precomputedResults ?? await resultsPromise;
878
- for (let index = startIdx; index < batch.length; index++) {
879
- const line = batch[index];
880
- context.signal.throwIfAborted();
881
- number++;
882
- byteOffset = nextOffset;
883
- const curLineLen = line.searchEnd !== void 0 ? line.searchEnd - line.start : line.bytes.length;
884
- nextOffset += curLineLen + (line.terminated ? 1 : 0);
885
- const found = results[index];
886
- const selected = count < maxCount && found.length > 0 !== invertMatch;
887
- if (!selected) {
888
- if (remainingAfter > 0) {
889
- await emitContext(line, number);
890
- remainingAfter--;
891
- if (count >= maxCount && remainingAfter === 0) return false;
892
- } else if (before > 0) {
893
- if (pending.size >= before) {
894
- const oldest = pending.keys().next().value;
895
- pendingBytes -= pending.get(oldest).bytes.length + 1;
896
- pending.delete(oldest);
897
- }
898
- const size = line.bytes.length + 1;
899
- if (size > (limits.maxContextBytes ?? Infinity) - pendingBytes) throw new UsageError(`context byte limit exceeded (${limits.maxContextBytes} bytes)`);
900
- pending.set(number, { bytes: Uint8Array.from(line.bytes), terminated: line.terminated, offset: byteOffset });
901
- pendingBytes += size;
800
+ const extractMatches = parsed.flags.has("o") && !["c", "q", "l", "L", "v"].some((flag) => parsed.flags.has(flag));
801
+ const displayLines = !["c", "q", "l", "L"].some((flag) => parsed.flags.has(flag));
802
+ const withContext = (beforeContext > 0 || afterContext > 0) && displayLines && !(parsed.flags.has("o") && parsed.flags.has("v"));
803
+ const before = withContext ? beforeContext : 0;
804
+ const after = withContext ? afterContext : 0;
805
+ let emittedGroup = false;
806
+ let anySelected = false;
807
+ let failed = false;
808
+ const targets = parsed.operands.length === 0 && directoriesAction === void 0 && !parsed.flags.has("r") && !parsed.flags.has("R") && !parsed.values.has("d") && !parsed.values.has("D") && filters.length === 0 ? SINGLE_STDIN_FILE : grepFiles(context, parsed, filters, () => {
809
+ failed = true;
810
+ }, directoriesAction);
811
+ for await (const { name, nested } of targets) {
812
+ let count = 0;
813
+ let number = 0;
814
+ let byteOffset = 0;
815
+ let nextOffset = 0;
816
+ let lastCovered = 0;
817
+ let remainingAfter = 0;
818
+ let pendingBytes = 0;
819
+ const pending = withContext ? /* @__PURE__ */ new Map() : void 0;
820
+ const named = name === "-" ? value(parsed, "label") ?? "(standard input)" : name;
821
+ const hasLinePrefix = !parsed.flags.has("h") && (parsed.flags.has("H") || multipleFiles || nested) || parsed.flags.has("n") || parsed.flags.has("b");
822
+ const delimiterByte = delimiterBytes[0];
823
+ const prefix = (lineNumber = false, position = number, separator = ":", offset = byteOffset) => `${!parsed.flags.has("h") && (parsed.flags.has("H") || multipleFiles || nested) ? `${named}${parsed.flags.has("Z") ? "\0" : separator}` : ""}${lineNumber && parsed.flags.has("n") ? `${position}${separator}` : ""}${lineNumber && parsed.flags.has("b") ? `${offset}${separator}` : ""}${lineNumber && parsed.flags.has("T") && (parsed.flags.has("n") || parsed.flags.has("b") || !parsed.flags.has("h") && (parsed.flags.has("H") || multipleFiles || nested)) ? " " : ""}`;
824
+ const emitContext = async (line, position, offset = byteOffset) => {
825
+ if (!parsed.flags.has("o")) {
826
+ await writeOut(prefix(true, position, "-", offset));
827
+ await writeOut(line.bytes);
828
+ await writeOut(delimiterBytes);
829
+ }
830
+ lastCovered = position;
831
+ };
832
+ try {
833
+ const source = name === "-" ? input(context) : requiredFileInput(context, grepRequirements, "file", name, limits.maxFileBytes ?? Infinity);
834
+ let earlyExitZero = false;
835
+ const invertMatch = parsed.flags.has("v");
836
+ const isQuiet = parsed.flags.has("q");
837
+ const isListFiles = parsed.flags.has("l") || parsed.flags.has("L");
838
+ const isCountOnly = parsed.flags.has("c");
839
+ const isOnlyMatching = parsed.flags.has("o");
840
+ const canFastBufferLines = !isQuiet && !isListFiles && !isCountOnly && !withContext && !isOnlyMatching && !hasLinePrefix && !lineBuffered && binaryFiles.mode !== "without-match";
841
+ const processBatchSlow = async (batch, endOfChunk, resultsPromise, startIdx = 0, precomputedResults) => {
842
+ const results = precomputedResults ?? await resultsPromise;
843
+ for (let index = startIdx; index < batch.length; index++) {
844
+ const line = batch[index];
845
+ context.signal.throwIfAborted();
846
+ number++;
847
+ byteOffset = nextOffset;
848
+ const curLineLen = line.searchEnd !== void 0 ? line.searchEnd - line.start : line.bytes.length;
849
+ nextOffset += curLineLen + (line.terminated ? 1 : 0);
850
+ const found = results[index];
851
+ const selected = count < maxCount && found.length > 0 !== invertMatch;
852
+ if (!selected) {
853
+ if (remainingAfter > 0) {
854
+ await emitContext(line, number);
855
+ remainingAfter--;
856
+ if (count >= maxCount && remainingAfter === 0) return false;
857
+ } else if (before > 0) {
858
+ if (pending.size >= before) {
859
+ const oldest = pending.keys().next().value;
860
+ pendingBytes -= pending.get(oldest).bytes.length + 1;
861
+ pending.delete(oldest);
902
862
  }
903
- continue;
863
+ const size = line.bytes.length + 1;
864
+ if (size > (limits.maxContextBytes ?? Infinity) - pendingBytes) throw new UsageError(`context byte limit exceeded (${limits.maxContextBytes} bytes)`);
865
+ pending.set(number, { bytes: Uint8Array.from(line.bytes), terminated: line.terminated, offset: byteOffset });
866
+ pendingBytes += size;
904
867
  }
905
- count++;
906
- anySelected = true;
907
- if (isQuiet) {
908
- earlyExitZero = true;
909
- return false;
868
+ continue;
869
+ }
870
+ count++;
871
+ anySelected = true;
872
+ if (isQuiet) {
873
+ earlyExitZero = true;
874
+ return false;
875
+ }
876
+ if (isListFiles) return false;
877
+ if (!isCountOnly) {
878
+ if (withContext) {
879
+ const first = pending.keys().next().value ?? number;
880
+ if (!parsed.flags.has("no-group-separator") && emittedGroup && (lastCovered === 0 || first > lastCovered + 1)) await writeOut((value(parsed, "group-separator") ?? "--") + delimiter);
881
+ for (const [position, previous] of pending) await emitContext(previous, position, previous.offset);
882
+ pending.clear();
883
+ pendingBytes = 0;
884
+ remainingAfter = after;
885
+ lastCovered = number;
886
+ emittedGroup = true;
910
887
  }
911
- if (isListFiles) return false;
912
- if (!isCountOnly) {
913
- if (withContext) {
914
- const first = pending.keys().next().value ?? number;
915
- if (!parsed.flags.has("no-group-separator") && emittedGroup && (lastCovered === 0 || first > lastCovered + 1)) await writeOut((value(parsed, "group-separator") ?? "--") + delimiter);
916
- for (const [position, previous] of pending) await emitContext(previous, position, previous.offset);
917
- pending.clear();
918
- pendingBytes = 0;
919
- remainingAfter = after;
920
- lastCovered = number;
921
- emittedGroup = true;
922
- }
923
- if (isOnlyMatching) {
924
- if (!invertMatch) {
925
- let end = -1;
926
- for (const match of found) {
927
- if (match.start === match.end || match.start < end) continue;
928
- await writeOut(prefix(true, number, ":", byteOffset + match.start));
929
- await writeOut(line.bytes.subarray(match.start, match.end));
930
- await writeOut(delimiterBytes);
931
- end = match.end;
932
- }
888
+ if (isOnlyMatching) {
889
+ if (!invertMatch) {
890
+ let end = -1;
891
+ for (const match of found) {
892
+ if (match.start === match.end || match.start < end) continue;
893
+ await writeOut(prefix(true, number, ":", byteOffset + match.start));
894
+ await writeOut(line.bytes.subarray(match.start, match.end));
895
+ await writeOut(delimiterBytes);
896
+ end = match.end;
933
897
  }
934
- } else {
935
- if (!hasLinePrefix && !lineBuffered && line.chunk !== void 0 && line.start !== void 0 && line.searchEnd !== void 0) {
936
- const lStart = line.start;
937
- const lEnd = line.searchEnd;
938
- const lLen = lEnd - lStart;
939
- outBuffer ??= ownsSharedOut ? sharedGrepOutBuffer : new Uint8Array(64 * 1024);
940
- if (outUsed + lLen + 1 <= outBuffer.length) {
941
- const c = line.chunk;
942
- let dst = outUsed;
943
- for (let i = lStart; i < lEnd; i++) outBuffer[dst++] = c[i];
944
- outBuffer[dst++] = delimiterByte;
945
- outUsed = dst;
946
- if (count >= maxCount && remainingAfter === 0) return false;
947
- continue;
948
- }
898
+ }
899
+ } else {
900
+ if (!hasLinePrefix && !lineBuffered && line.chunk !== void 0 && line.start !== void 0 && line.searchEnd !== void 0) {
901
+ const lStart = line.start;
902
+ const lEnd = line.searchEnd;
903
+ const lLen = lEnd - lStart;
904
+ outBuffer ??= new Uint8Array(64 * 1024);
905
+ if (outUsed + lLen + 1 <= outBuffer.length) {
906
+ const c = line.chunk;
907
+ let dst = outUsed;
908
+ for (let i = lStart; i < lEnd; i++) outBuffer[dst++] = c[i];
909
+ outBuffer[dst++] = delimiterByte;
910
+ outUsed = dst;
911
+ if (count >= maxCount && remainingAfter === 0) return false;
912
+ continue;
949
913
  }
950
- const p = hasLinePrefix ? prefix(true) : "";
951
- if (p) await writeOut(p);
952
- await writeOut(line.bytes);
953
- await writeOut(delimiterBytes);
954
914
  }
915
+ const p = hasLinePrefix ? prefix(true) : "";
916
+ if (p) await writeOut(p);
917
+ await writeOut(line.bytes);
918
+ await writeOut(delimiterBytes);
955
919
  }
956
- if (count >= maxCount && remainingAfter === 0) return false;
957
- }
958
- if (endOfChunk || lineBuffered || outUsed - outStart >= 8192) await flushOut();
959
- return true;
960
- };
961
- if (maxCount > 0) await forEachGrepLineBatch(source, parsed.flags.has("z") ? 0 : 10, limits.maxLineBytes ?? Infinity, () => batchSize, extractMatches, (batch, endOfChunk) => {
962
- if (binaryFiles.mode === "without-match" && batch.some((line) => line.bytes.includes(0))) {
963
- count = 0;
964
- return false;
965
920
  }
966
- const resOrPromise = runGrepBatch(batch);
967
- if (resOrPromise instanceof Promise || !canFastBufferLines) {
968
- return resOrPromise instanceof Promise ? processBatchSlow(batch, endOfChunk, resOrPromise) : processBatchSlow(batch, endOfChunk, void 0, 0, resOrPromise);
969
- }
970
- const results = resOrPromise;
971
- for (let index = 0; index < batch.length; index++) {
972
- const line = batch[index];
973
- context.signal.throwIfAborted();
974
- number++;
975
- byteOffset = nextOffset;
976
- const curLineLen = line.searchEnd !== void 0 ? line.searchEnd - line.start : line.bytes.length;
977
- nextOffset += curLineLen + (line.terminated ? 1 : 0);
978
- const found = results[index];
979
- const selected = count < maxCount && found.length > 0 !== invertMatch;
980
- if (!selected) continue;
981
- if (line.chunk !== void 0 && line.start !== void 0 && line.searchEnd !== void 0) {
982
- const lStart = line.start;
983
- const lEnd = line.searchEnd;
984
- const lLen = lEnd - lStart;
985
- outBuffer ??= ownsSharedOut ? sharedGrepOutBuffer : new Uint8Array(64 * 1024);
986
- if (outUsed + lLen + 1 <= outBuffer.length) {
987
- count++;
988
- anySelected = true;
989
- const c = line.chunk;
990
- let dst = outUsed;
991
- for (let i = lStart; i < lEnd; i++) outBuffer[dst++] = c[i];
992
- outBuffer[dst++] = delimiterByte;
993
- outUsed = dst;
994
- if (count >= maxCount) return false;
995
- continue;
996
- }
921
+ if (count >= maxCount && remainingAfter === 0) return false;
922
+ }
923
+ if (endOfChunk || lineBuffered || outUsed - outStart >= 8192) await flushOut();
924
+ return true;
925
+ };
926
+ if (maxCount > 0) await forEachGrepLineBatch(source, parsed.flags.has("z") ? 0 : 10, limits.maxLineBytes ?? Infinity, () => batchSize, extractMatches, (batch, endOfChunk) => {
927
+ if (binaryFiles.mode === "without-match" && batch.some((line) => line.bytes.includes(0))) {
928
+ count = 0;
929
+ return false;
930
+ }
931
+ const resOrPromise = runGrepBatch(batch);
932
+ if (resOrPromise instanceof Promise || !canFastBufferLines) {
933
+ return resOrPromise instanceof Promise ? processBatchSlow(batch, endOfChunk, resOrPromise) : processBatchSlow(batch, endOfChunk, void 0, 0, resOrPromise);
934
+ }
935
+ const results = resOrPromise;
936
+ for (let index = 0; index < batch.length; index++) {
937
+ const line = batch[index];
938
+ context.signal.throwIfAborted();
939
+ number++;
940
+ byteOffset = nextOffset;
941
+ const curLineLen = line.searchEnd !== void 0 ? line.searchEnd - line.start : line.bytes.length;
942
+ nextOffset += curLineLen + (line.terminated ? 1 : 0);
943
+ const found = results[index];
944
+ const selected = count < maxCount && found.length > 0 !== invertMatch;
945
+ if (!selected) continue;
946
+ if (line.chunk !== void 0 && line.start !== void 0 && line.searchEnd !== void 0) {
947
+ const lStart = line.start;
948
+ const lEnd = line.searchEnd;
949
+ const lLen = lEnd - lStart;
950
+ outBuffer ??= new Uint8Array(64 * 1024);
951
+ if (outUsed + lLen + 1 <= outBuffer.length) {
952
+ count++;
953
+ anySelected = true;
954
+ const c = line.chunk;
955
+ let dst = outUsed;
956
+ for (let i = lStart; i < lEnd; i++) outBuffer[dst++] = c[i];
957
+ outBuffer[dst++] = delimiterByte;
958
+ outUsed = dst;
959
+ if (count >= maxCount) return false;
960
+ continue;
997
961
  }
998
- number--;
999
- nextOffset = byteOffset;
1000
- return processBatchSlow(batch, endOfChunk, void 0, index, results);
1001
- }
1002
- if ((endOfChunk || outUsed - outStart >= 8192) && outUsed > outStart) {
1003
- const p = flushOutSyncOrAsync();
1004
- return p ? p.then(() => true) : true;
1005
962
  }
1006
- return true;
1007
- });
1008
- if (earlyExitZero) return { exitCode: 0 };
1009
- const finalFlush = flushOutSyncOrAsync();
1010
- if (finalFlush) await finalFlush;
1011
- if (parsed.flags.has("q")) continue;
1012
- if (parsed.flags.has("l") && count > 0 || parsed.flags.has("L") && count === 0) {
1013
- await output(context, named + (parsed.flags.has("Z") ? "\0" : "\n"));
1014
- } else if (parsed.flags.has("c") && !parsed.flags.has("l") && !parsed.flags.has("L")) await output(context, prefix() + count + delimiter);
1015
- } catch (error) {
1016
- await flushOut();
1017
- context.signal.throwIfAborted();
1018
- if (error instanceof RegexExecutionError) throw error;
1019
- failed = true;
1020
- if (!parsed.flags.has("s")) await diagnostic(context, error);
1021
- }
963
+ number--;
964
+ nextOffset = byteOffset;
965
+ return processBatchSlow(batch, endOfChunk, void 0, index, results);
966
+ }
967
+ if ((endOfChunk || outUsed - outStart >= 8192) && outUsed > outStart) {
968
+ const p = flushOutSyncOrAsync();
969
+ return p ? p.then(() => true) : true;
970
+ }
971
+ return true;
972
+ });
973
+ if (earlyExitZero) return { exitCode: 0 };
974
+ const finalFlush = flushOutSyncOrAsync();
975
+ if (finalFlush) await finalFlush;
976
+ if (parsed.flags.has("q")) continue;
977
+ if (parsed.flags.has("l") && count > 0 || parsed.flags.has("L") && count === 0) {
978
+ await output(context, named + (parsed.flags.has("Z") ? "\0" : "\n"));
979
+ } else if (parsed.flags.has("c") && !parsed.flags.has("l") && !parsed.flags.has("L")) await output(context, prefix() + count + delimiter);
980
+ } catch (error) {
981
+ await flushOut();
982
+ context.signal.throwIfAborted();
983
+ if (error instanceof RegexExecutionError) throw error;
984
+ failed = true;
985
+ if (!parsed.flags.has("s")) await diagnostic(context, error);
1022
986
  }
1023
- return { exitCode: failed ? 2 : anySelected ? 0 : 1 };
1024
- } finally {
1025
- if (ownsSharedOut) sharedGrepOutInUse = false;
1026
987
  }
988
+ return { exitCode: failed ? 2 : anySelected ? 0 : 1 };
1027
989
  } catch (error) {
1028
990
  context.signal.throwIfAborted();
1029
991
  await diagnostic(context, error);
@@ -19,7 +19,7 @@ export declare const empty: Uint8Array<ArrayBuffer>;
19
19
  export declare const encode: (value: string) => Uint8Array;
20
20
  export declare function settings(options: TableTextCommandsOptions): TableTextLimits;
21
21
  export declare function fail(message: string): never;
22
- export declare function command(name: string, handler: CommandHandler): CommandDefinition;
22
+ export declare function command(name: string, limits: TableTextLimits, handler: (context: CommandContext, budget: Budget) => ReturnType<CommandHandler>): CommandDefinition;
23
23
  export declare function compare(left: Uint8Array, right: Uint8Array, fold?: boolean): number;
24
24
  export declare class Budget {
25
25
  readonly context: CommandContext;
@@ -27,8 +27,6 @@ export declare class Budget {
27
27
  private inputBytes;
28
28
  private outputBytes;
29
29
  steps: number;
30
- private signalAborted;
31
- private readonly pollBaseSignal;
32
30
  constructor(context: CommandContext, limits: TableTextLimits, outputChunkBytes?: number);
33
31
  check(value: number | bigint, maximum: number, label: string): void;
34
32
  step(): void | Promise<void>;
@@ -73,10 +71,14 @@ export type OrderMode = "default" | "check" | "none";
73
71
  export declare class OrderCheck {
74
72
  readonly mode: OrderMode;
75
73
  readonly context: CommandContext;
76
- unpaired: boolean;
74
+ readonly budget: Budget;
75
+ private unpaired;
77
76
  failed: boolean;
78
77
  private warned;
79
- constructor(mode: OrderMode, context: CommandContext);
78
+ private pending;
79
+ constructor(mode: OrderMode, context: CommandContext, budget: Budget);
80
+ markUnpaired(): Promise<void>;
80
81
  check(previous: Uint8Array | undefined, next: Uint8Array | undefined, file: number, fold?: boolean): void | Promise<void>;
82
+ private report;
81
83
  finish(): Promise<void>;
82
84
  }