@poe-platform/safe-bash 0.1.817 → 0.1.818

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 (439) hide show
  1. package/dist/image-ast/index.js +2 -2
  2. package/dist/mp4-ast/index.d.ts +2 -1
  3. package/dist/mp4-ast/mp4-metadata-source.d.ts +10 -0
  4. package/dist/mp4-ast/mp4-packets-source.d.ts +8 -1
  5. package/dist/mp4-ast/types.d.ts +21 -3
  6. package/dist/pdf-ast/ast.d.ts +2 -0
  7. package/dist/pdf-ast/content/evaluator.d.ts +7 -0
  8. package/dist/pdf-ast/content/retained-evaluator.d.ts +2 -2
  9. package/dist/pdf-ast/content/retained-page.d.ts +2 -2
  10. package/dist/pdf-ast/extract/html-text-stream.d.ts +14 -0
  11. package/dist/pdf-ast/extract/logical-text-stream.d.ts +14 -0
  12. package/dist/pdf-ast/extract/raw-text-index.d.ts +18 -4
  13. package/dist/pdf-ast/extract/retained-color.d.ts +6 -6
  14. package/dist/pdf-ast/extract/retained-decoded-image.d.ts +2 -2
  15. package/dist/pdf-ast/extract/stored-text-glyphs.d.ts +8 -0
  16. package/dist/pdf-ast/fonts/retained.d.ts +2 -2
  17. package/dist/pdf-ast/image.d.ts +2 -0
  18. package/dist/pdf-ast/image.js +19 -0
  19. package/dist/pdf-ast/index.d.ts +3 -0
  20. package/dist/pdf-ast/index.js +264 -66852
  21. package/dist/pdf-ast/render/postscript.d.ts +6 -0
  22. package/dist/pdf-ast/render/raster.d.ts +21 -1
  23. package/dist/pdf-ast/retained-document.d.ts +16 -95
  24. package/dist/pdf-ast/retained-reader.d.ts +109 -0
  25. package/dist/safe-bash/command-chunks/biff-AYJZR2YV-JPESBEOO.js +5741 -0
  26. package/dist/safe-bash/command-chunks/{chunk-SL4LD25A.js → chunk-232N24HE.js} +9 -9
  27. package/dist/safe-bash/command-chunks/{chunk-ALD53QFL.js → chunk-2C4QMQQD.js} +42 -12
  28. package/dist/safe-bash/command-chunks/{chunk-3PM46VWH.js → chunk-2FEMMALH.js} +4 -4
  29. package/dist/safe-bash/command-chunks/{chunk-QDV2NIFR.js → chunk-2TMTGVJR.js} +1 -1
  30. package/dist/safe-bash/command-chunks/{chunk-ARE267HR.js → chunk-2WTDP3TP.js} +5 -5
  31. package/dist/safe-bash/command-chunks/{chunk-FSG6UC2N.js → chunk-2XR7B6DY.js} +420 -167
  32. package/dist/safe-bash/command-chunks/{chunk-EY3UE26F.js → chunk-2YC6MWQB.js} +1 -1
  33. package/dist/safe-bash/command-chunks/{chunk-UPWLHHZ2.js → chunk-37KBCKDF.js} +13 -13
  34. package/dist/safe-bash/command-chunks/{chunk-DOVWHVHI.js → chunk-3B6554G6.js} +5 -5
  35. package/dist/safe-bash/command-chunks/{chunk-FB2WPI3M.js → chunk-3ZGO24WG.js} +1 -1
  36. package/dist/safe-bash/command-chunks/{chunk-GR4ONCQ5.js → chunk-424NYO35.js} +7 -7
  37. package/dist/safe-bash/command-chunks/{chunk-MQE77MEQ.js → chunk-45GTHPL5.js} +3 -3
  38. package/dist/safe-bash/command-chunks/{chunk-AF2IO57Q.js → chunk-4OHTYYNU.js} +8 -136
  39. package/dist/safe-bash/command-chunks/{chunk-ICJH6A73.js → chunk-4PMMJ45F.js} +3 -3
  40. package/dist/safe-bash/command-chunks/{chunk-57PK2QFX.js → chunk-4SFX6YGC.js} +6 -6
  41. package/dist/safe-bash/command-chunks/{chunk-G3LUT475.js → chunk-4WHTTCKY.js} +6 -6
  42. package/dist/safe-bash/command-chunks/{chunk-UYZ6EFZE.js → chunk-4Z7PBIMP.js} +6 -6
  43. package/dist/safe-bash/command-chunks/{chunk-A4P37F3P.js → chunk-57SKL76U.js} +3 -3
  44. package/dist/safe-bash/command-chunks/{chunk-J6FNSVHT.js → chunk-5GP4A3TD.js} +5 -5
  45. package/dist/safe-bash/command-chunks/{chunk-OFONWWEZ.js → chunk-5IHJWBDR.js} +2 -2
  46. package/dist/safe-bash/command-chunks/{chunk-A2L3U7DW.js → chunk-5OS4Q3AX.js} +4 -4
  47. package/dist/safe-bash/command-chunks/{chunk-FUYZUETI.js → chunk-5PMLTSQ5.js} +2 -2
  48. package/dist/safe-bash/command-chunks/{chunk-TXU7MMHN.js → chunk-5RDS6CNQ.js} +13 -13
  49. package/dist/safe-bash/command-chunks/{chunk-FR63MJSO.js → chunk-5UGQGB5Y.js} +7 -7
  50. package/dist/safe-bash/command-chunks/{chunk-UKAGRRLZ.js → chunk-5VY5O37W.js} +1 -1
  51. package/dist/safe-bash/command-chunks/chunk-5WS6DXYE.js +68444 -0
  52. package/dist/safe-bash/command-chunks/{chunk-2ALHVXEM.js → chunk-6EK76ERE.js} +2 -2
  53. package/dist/safe-bash/command-chunks/{chunk-4772DJKS.js → chunk-6GCK2KSL.js} +61 -26
  54. package/dist/safe-bash/command-chunks/{chunk-T5OQ53XS.js → chunk-6IID5HTY.js} +1 -1
  55. package/dist/safe-bash/command-chunks/{chunk-EZDWPTYB.js → chunk-6LOAJOWK.js} +13 -13
  56. package/dist/safe-bash/command-chunks/{chunk-WMBELKPP.js → chunk-6PE2L522.js} +6 -6
  57. package/dist/safe-bash/command-chunks/{chunk-ZAYTFXUX.js → chunk-73KY3MZ3.js} +4 -4
  58. package/dist/safe-bash/command-chunks/{chunk-BOVDUJ3A.js → chunk-77WBFVZQ.js} +7 -7
  59. package/dist/safe-bash/command-chunks/{chunk-3DWFXESW.js → chunk-7GJJDM2F.js} +2 -2
  60. package/dist/safe-bash/command-chunks/{chunk-WIW3KDBS.js → chunk-7NFICYRU.js} +2 -2
  61. package/dist/safe-bash/command-chunks/{chunk-35DU6I2M.js → chunk-7ZEGARPB.js} +5 -5
  62. package/dist/safe-bash/command-chunks/{chunk-A5SPMSKD.js → chunk-A32PUWYE.js} +2 -2
  63. package/dist/safe-bash/command-chunks/{chunk-KYIGYYEY.js → chunk-A32ZROH5.js} +3 -3
  64. package/dist/safe-bash/command-chunks/{chunk-IOXMGD2H.js → chunk-ADVQZLLE.js} +2 -2
  65. package/dist/safe-bash/command-chunks/{chunk-CGJ7GMHO.js → chunk-AEZU6NZE.js} +2 -2
  66. package/dist/safe-bash/command-chunks/{chunk-KDDXLHN7.js → chunk-ATHU53C2.js} +3 -3
  67. package/dist/safe-bash/command-chunks/{chunk-R7LF4XQV.js → chunk-B6T2526I.js} +2 -2
  68. package/dist/safe-bash/command-chunks/{chunk-PPN53PX3.js → chunk-BB7HBO56.js} +2 -2
  69. package/dist/safe-bash/command-chunks/{chunk-ZM7HMBAJ.js → chunk-BDGNKRY4.js} +7 -7
  70. package/dist/safe-bash/command-chunks/{chunk-VMZIAFVJ.js → chunk-BFRSYJUC.js} +8 -8
  71. package/dist/safe-bash/command-chunks/{chunk-X42MJT2J.js → chunk-BJL7AGA5.js} +1 -1
  72. package/dist/safe-bash/command-chunks/{chunk-VZTVR3JI.js → chunk-C2QUG7IP.js} +3 -3
  73. package/dist/safe-bash/command-chunks/{chunk-IVKAFEPO.js → chunk-C34RLMAC.js} +9 -9
  74. package/dist/safe-bash/command-chunks/{chunk-5O45KGW5.js → chunk-C5VUJOUQ.js} +1 -1
  75. package/dist/safe-bash/command-chunks/{chunk-LQDANF2B.js → chunk-CCNOZKAK.js} +8 -8
  76. package/dist/safe-bash/command-chunks/{chunk-FEBTT5NH.js → chunk-CEHICGP6.js} +2 -2
  77. package/dist/safe-bash/command-chunks/{chunk-SICTBSLW.js → chunk-CODJMTSA.js} +6 -6
  78. package/dist/safe-bash/command-chunks/{chunk-LJ3UYESS.js → chunk-CP5EO5TT.js} +1 -1
  79. package/dist/safe-bash/command-chunks/{chunk-45DKGZYO.js → chunk-CSS5KXQC.js} +329 -152
  80. package/dist/safe-bash/command-chunks/{chunk-6RLWPB44.js → chunk-CZSLXQU2.js} +1 -1
  81. package/dist/safe-bash/command-chunks/{chunk-3ZWFE4CK.js → chunk-D2ZT2UUT.js} +3 -3
  82. package/dist/safe-bash/command-chunks/{chunk-WH624PKJ.js → chunk-D5XSGHXN.js} +2 -2
  83. package/dist/safe-bash/command-chunks/{chunk-NDALIHKK.js → chunk-D7UFAIBS.js} +18 -18
  84. package/dist/safe-bash/command-chunks/{chunk-ISFGPCED.js → chunk-DCKAY6HV.js} +6 -6
  85. package/dist/safe-bash/command-chunks/{chunk-LNAZ3E4Q.js → chunk-DGCJVZW6.js} +1 -1
  86. package/dist/safe-bash/command-chunks/{chunk-LFSWLJPR.js → chunk-DJB5RB6U.js} +288 -32
  87. package/dist/safe-bash/command-chunks/{chunk-FGHSE3RZ.js → chunk-DZ4ELL34.js} +1 -1
  88. package/dist/safe-bash/command-chunks/{chunk-LQX7RAF7.js → chunk-EBKKYRQJ.js} +5 -5
  89. package/dist/safe-bash/command-chunks/{chunk-QNETPOMH.js → chunk-EDBNI7WE.js} +14 -14
  90. package/dist/safe-bash/command-chunks/{chunk-5GDF5FAS.js → chunk-EEJ3YXVO.js} +1 -1
  91. package/dist/safe-bash/command-chunks/{chunk-RTHYAGKI.js → chunk-ETN25WCR.js} +2 -2
  92. package/dist/safe-bash/command-chunks/{chunk-ET6LMDEX.js → chunk-EV3DPRWE.js} +9 -9
  93. package/dist/safe-bash/command-chunks/{chunk-3MUFXGA2.js → chunk-F2JUB7JI.js} +1 -1
  94. package/dist/safe-bash/command-chunks/{chunk-345YBIHP.js → chunk-F42WV2YO.js} +19 -19
  95. package/dist/safe-bash/command-chunks/{chunk-FTZFCMVI.js → chunk-FAVWWMFW.js} +12 -12
  96. package/dist/safe-bash/command-chunks/{chunk-XBWD6SI3.js → chunk-FDRE535F.js} +16 -16
  97. package/dist/safe-bash/command-chunks/{chunk-WMV5224N.js → chunk-FILE5PBI.js} +3 -3
  98. package/dist/safe-bash/command-chunks/{chunk-XPQUUFQD.js → chunk-FPOM47UA.js} +2 -2
  99. package/dist/safe-bash/command-chunks/{chunk-QMBMZSJF.js → chunk-FQ2WRT4Q.js} +3 -3
  100. package/dist/safe-bash/command-chunks/{chunk-H56BSMFQ.js → chunk-FVAFISPY.js} +4 -4
  101. package/dist/safe-bash/command-chunks/{chunk-2QZUAZTH.js → chunk-GIQUIF6E.js} +1 -1
  102. package/dist/safe-bash/command-chunks/{chunk-2TWXRJPB.js → chunk-GNORF6RY.js} +13 -13
  103. package/dist/safe-bash/command-chunks/{chunk-ABL2DPJI.js → chunk-GPLN6JV2.js} +12 -12
  104. package/dist/safe-bash/command-chunks/{chunk-DZOKH5BL.js → chunk-GQ7BD75U.js} +3 -3
  105. package/dist/safe-bash/command-chunks/{chunk-N4HWOLGZ.js → chunk-GY2C555A.js} +2 -2
  106. package/dist/safe-bash/command-chunks/{chunk-N32AP43V.js → chunk-GZNX5SS4.js} +7 -7
  107. package/dist/safe-bash/command-chunks/{chunk-YPG55QTP.js → chunk-HCJWEB6P.js} +1 -1
  108. package/dist/safe-bash/command-chunks/{chunk-4ABR3KGK.js → chunk-HNY7LZ5P.js} +3 -3
  109. package/dist/safe-bash/command-chunks/{chunk-P462JTNT.js → chunk-HOBXZX23.js} +5 -5
  110. package/dist/safe-bash/command-chunks/{chunk-5KZMR6AJ.js → chunk-HW3IOXT6.js} +6 -6
  111. package/dist/safe-bash/command-chunks/{chunk-3VGQTLO6.js → chunk-HX7QQNWS.js} +4 -4
  112. package/dist/safe-bash/command-chunks/{chunk-TXWDR2P4.js → chunk-IBT3OWXB.js} +1 -1
  113. package/dist/safe-bash/command-chunks/{chunk-OHEZQ4QA.js → chunk-IFBLXBBM.js} +9 -9
  114. package/dist/safe-bash/command-chunks/{chunk-HOJ7WDTS.js → chunk-IJZUUXLL.js} +3 -3
  115. package/dist/safe-bash/command-chunks/{chunk-BZRWZ6GO.js → chunk-IKU7ZBF3.js} +2 -2
  116. package/dist/safe-bash/command-chunks/{chunk-CKIXC7AO.js → chunk-IPKYPADE.js} +3 -3
  117. package/dist/safe-bash/command-chunks/{chunk-IWVANZWH.js → chunk-JLPBGKVC.js} +3 -3
  118. package/dist/safe-bash/command-chunks/{chunk-6M3JTPKE.js → chunk-JNRX5EFF.js} +5 -5
  119. package/dist/safe-bash/command-chunks/{chunk-5YL453ZF.js → chunk-JSX5CFZY.js} +36 -36
  120. package/dist/safe-bash/command-chunks/{chunk-V6JPIZUW.js → chunk-JT656DKZ.js} +7 -7
  121. package/dist/safe-bash/command-chunks/{chunk-DM5WURQL.js → chunk-JY2T3KV2.js} +2 -2
  122. package/dist/safe-bash/command-chunks/{chunk-IZ3SD5S2.js → chunk-K2NV6H7E.js} +4 -4
  123. package/dist/safe-bash/command-chunks/{chunk-62RG3GHF.js → chunk-K6E56LND.js} +6 -6
  124. package/dist/safe-bash/command-chunks/{chunk-FLSXHLJG.js → chunk-KADQKXZE.js} +9 -9
  125. package/dist/safe-bash/command-chunks/{chunk-URQSUMMJ.js → chunk-KFFV7HBL.js} +4 -4
  126. package/dist/safe-bash/command-chunks/{chunk-ONQP4FNV.js → chunk-KZICRCQ7.js} +1 -1
  127. package/dist/safe-bash/command-chunks/{chunk-N35IJXBK.js → chunk-L6X4EEN6.js} +9 -9
  128. package/dist/safe-bash/command-chunks/{chunk-SHLT5R64.js → chunk-LF7YJ5VQ.js} +9 -9
  129. package/dist/safe-bash/command-chunks/{chunk-GMBUOYTN.js → chunk-LNHTLWIL.js} +4 -4
  130. package/dist/safe-bash/command-chunks/{chunk-A6OTPNNI.js → chunk-LPKMNCC5.js} +3 -3
  131. package/dist/safe-bash/command-chunks/{chunk-MUTARE5I.js → chunk-LSKA4IR4.js} +6 -6
  132. package/dist/safe-bash/command-chunks/{chunk-N3ZH4YYH.js → chunk-LTWX23FS.js} +3 -3
  133. package/dist/safe-bash/command-chunks/{chunk-JA36YOZI.js → chunk-LUJUYUOG.js} +1 -1
  134. package/dist/safe-bash/command-chunks/{chunk-4X2MPZXW.js → chunk-M42GCI5F.js} +2 -2
  135. package/dist/safe-bash/command-chunks/{chunk-AYQPJQJR.js → chunk-M5BFAMXD.js} +6 -6
  136. package/dist/safe-bash/command-chunks/{chunk-OFDJJRAD.js → chunk-M7DZ7COK.js} +9 -9
  137. package/dist/safe-bash/command-chunks/{chunk-E64ZI2YB.js → chunk-MMSKDYK6.js} +224 -115
  138. package/dist/safe-bash/command-chunks/{chunk-NKK76B4V.js → chunk-MN7EEK6Y.js} +8 -8
  139. package/dist/safe-bash/command-chunks/{chunk-OBIXFO25.js → chunk-MOJQT6RW.js} +8 -8
  140. package/dist/safe-bash/command-chunks/{chunk-HOKPYTHQ.js → chunk-MPRUGL4W.js} +2 -2
  141. package/dist/safe-bash/command-chunks/{chunk-CORUUCS2.js → chunk-MRBX4KEP.js} +3 -3
  142. package/dist/safe-bash/command-chunks/chunk-MTWFSBNG.js +137 -0
  143. package/dist/safe-bash/command-chunks/{chunk-RRAQII52.js → chunk-MURNTGDL.js} +5 -5
  144. package/dist/safe-bash/command-chunks/{chunk-KDBU5Q2N.js → chunk-MWVELMXZ.js} +6 -6
  145. package/dist/safe-bash/command-chunks/{chunk-PRO7JOIH.js → chunk-N3MAYM6Y.js} +8 -8
  146. package/dist/safe-bash/command-chunks/{chunk-E22EAYJN.js → chunk-NFWLZDMY.js} +177 -34
  147. package/dist/safe-bash/command-chunks/{chunk-GAROGIVU.js → chunk-NP2QXF2X.js} +1 -1
  148. package/dist/safe-bash/command-chunks/{chunk-SNA2LVBX.js → chunk-NPVOYY2A.js} +1 -1
  149. package/dist/safe-bash/command-chunks/{chunk-ENMJHB2C.js → chunk-NTXRKJPZ.js} +3 -3
  150. package/dist/safe-bash/command-chunks/{chunk-3K5CVXUV.js → chunk-NZF56C25.js} +10 -10
  151. package/dist/safe-bash/command-chunks/{chunk-5MNQTHED.js → chunk-OA4MEWTN.js} +4 -4
  152. package/dist/safe-bash/command-chunks/{chunk-SWIF6BBY.js → chunk-OL75SBZL.js} +5 -5
  153. package/dist/safe-bash/command-chunks/{chunk-LT2YCGC5.js → chunk-OVQSILY3.js} +5 -5
  154. package/dist/safe-bash/command-chunks/{chunk-WDVPHDBH.js → chunk-P57V45F2.js} +2 -2
  155. package/dist/safe-bash/command-chunks/{chunk-OWCBX5M2.js → chunk-PAY4ULWY.js} +1 -1
  156. package/dist/safe-bash/command-chunks/{chunk-CHZE6FNT.js → chunk-PFUZPAXQ.js} +2 -2
  157. package/dist/safe-bash/command-chunks/{chunk-NLCUQD7Y.js → chunk-PX6E5MHY.js} +9 -9
  158. package/dist/safe-bash/command-chunks/{chunk-POGVOCOB.js → chunk-QCN7MRRU.js} +8 -8
  159. package/dist/safe-bash/command-chunks/{chunk-ZZERSKAR.js → chunk-QLE6JUR7.js} +5 -5
  160. package/dist/safe-bash/command-chunks/{chunk-LZY46GYY.js → chunk-QMWBKR4C.js} +5 -5
  161. package/dist/safe-bash/command-chunks/{chunk-BIJW6QWB.js → chunk-QNLX3CZH.js} +13 -13
  162. package/dist/safe-bash/command-chunks/{chunk-MDFNUNK5.js → chunk-QWX5IERU.js} +6 -6
  163. package/dist/safe-bash/command-chunks/{chunk-WOL3LBXE.js → chunk-R2N3E267.js} +1 -1
  164. package/dist/safe-bash/command-chunks/{chunk-ZNCPIZCN.js → chunk-R6X63VAO.js} +1 -1
  165. package/dist/safe-bash/command-chunks/{chunk-FGARVKAX.js → chunk-RNIFPFGC.js} +13 -11
  166. package/dist/safe-bash/command-chunks/{chunk-OIHQXURE.js → chunk-ROE6KD4C.js} +1 -1
  167. package/dist/safe-bash/command-chunks/{chunk-BKK4MS3V.js → chunk-RR6XG2I6.js} +1 -1
  168. package/dist/safe-bash/command-chunks/{chunk-ZHHALBM7.js → chunk-RYOHOS2I.js} +4 -4
  169. package/dist/safe-bash/command-chunks/{chunk-U42WHQRH.js → chunk-TTTNFKT6.js} +5 -5
  170. package/dist/safe-bash/command-chunks/{chunk-EWC56JNI.js → chunk-TTVJJZOM.js} +5 -5
  171. package/dist/safe-bash/command-chunks/{chunk-TY7JXEWI.js → chunk-UBX5I5HY.js} +11 -11
  172. package/dist/safe-bash/command-chunks/{chunk-QOKFSYD5.js → chunk-UE34SQET.js} +9 -9
  173. package/dist/safe-bash/command-chunks/{chunk-DXOXUKQB.js → chunk-UH4CQIU3.js} +4 -4
  174. package/dist/safe-bash/command-chunks/{chunk-VNNNVT4C.js → chunk-UZZ2WJQV.js} +4 -4
  175. package/dist/safe-bash/command-chunks/{chunk-QNX5LZBK.js → chunk-V6NZVM7C.js} +7 -7
  176. package/dist/safe-bash/command-chunks/{chunk-KLAC2MIZ.js → chunk-VEZULAIA.js} +6 -6
  177. package/dist/safe-bash/command-chunks/{chunk-OCV5ZU35.js → chunk-VSTAHYCV.js} +3 -3
  178. package/dist/safe-bash/command-chunks/{chunk-UFLMOU3B.js → chunk-VUJCVXD4.js} +1 -1
  179. package/dist/safe-bash/command-chunks/{chunk-5V7WIQ2D.js → chunk-VW67MA53.js} +3 -3
  180. package/dist/safe-bash/command-chunks/{chunk-2IMIKROX.js → chunk-WI5NEHPD.js} +2 -2
  181. package/dist/safe-bash/command-chunks/{chunk-SBXS4S6Y.js → chunk-WJSU2UVG.js} +2 -2
  182. package/dist/safe-bash/command-chunks/{chunk-VVWHFNHD.js → chunk-WPEIOUJN.js} +415 -25
  183. package/dist/safe-bash/command-chunks/{chunk-YKODRSGT.js → chunk-WRCYZJNO.js} +1 -1
  184. package/dist/safe-bash/command-chunks/{chunk-TID5TSQW.js → chunk-WRJV7OVO.js} +1 -1
  185. package/dist/safe-bash/command-chunks/{chunk-T4SEQU66.js → chunk-X4TWJNW7.js} +3 -3
  186. package/dist/safe-bash/command-chunks/{chunk-CKA7ZROU.js → chunk-X6KFCAWZ.js} +7 -7
  187. package/dist/safe-bash/command-chunks/{chunk-ROQ3VNVX.js → chunk-X6KO7D6R.js} +8 -8
  188. package/dist/safe-bash/command-chunks/{chunk-S5ER73EA.js → chunk-XB5ZZHFD.js} +3 -3
  189. package/dist/safe-bash/command-chunks/{chunk-FHQOFEQK.js → chunk-XLFOLLUZ.js} +8 -8
  190. package/dist/safe-bash/command-chunks/{chunk-UJYXSLM6.js → chunk-XLPEPCQC.js} +2 -2
  191. package/dist/safe-bash/command-chunks/{chunk-UT5X6QRU.js → chunk-XQFEP43Y.js} +5 -5
  192. package/dist/safe-bash/command-chunks/chunk-Y7XL6CWB.js +771 -0
  193. package/dist/safe-bash/command-chunks/{chunk-RVWIEXR7.js → chunk-YKEMSPJZ.js} +4 -4
  194. package/dist/safe-bash/command-chunks/{chunk-ERWIJYCS.js → chunk-YN3OEJAZ.js} +7 -7
  195. package/dist/safe-bash/command-chunks/{chunk-6YF2QADH.js → chunk-YOYK2I4N.js} +2 -2
  196. package/dist/safe-bash/command-chunks/{chunk-26JE5JEB.js → chunk-YS5ZKMRJ.js} +4 -4
  197. package/dist/safe-bash/command-chunks/{chunk-LMLBQSAM.js → chunk-YW7WU7W2.js} +5 -5
  198. package/dist/safe-bash/command-chunks/{chunk-YXR4JE4U.js → chunk-Z33YS3DW.js} +3 -3
  199. package/dist/safe-bash/command-chunks/{chunk-T2FRXSQT.js → chunk-ZBXUAM34.js} +2 -2
  200. package/dist/safe-bash/command-chunks/{chunk-VVV45NLY.js → chunk-ZJUU5IAS.js} +1 -1
  201. package/dist/safe-bash/command-chunks/{chunk-7OCTMVYJ.js → chunk-ZNABMTV3.js} +1 -1
  202. package/dist/safe-bash/command-chunks/{chunk-6JGICYHP.js → chunk-ZSF2T5D4.js} +1 -1
  203. package/dist/safe-bash/command-chunks/{command-engine-2QXVRRH3.js → command-engine-PFYHL7GS.js} +10 -4
  204. package/dist/safe-bash/command-chunks/{engine-T4GP6QOK-ECFKMR5V.js → engine-5AVSKFBI-D7Q5VPUN.js} +1 -1
  205. package/dist/safe-bash/command-chunks/model-store-IIWQHSEZ.js +54 -0
  206. package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
  207. package/dist/safe-bash-command-awk/awk.js +5 -5
  208. package/dist/safe-bash-command-awk/index.js +5 -5
  209. package/dist/safe-bash-command-cp/index.js +4 -4
  210. package/dist/safe-bash-command-diff/diff.js +2 -2
  211. package/dist/safe-bash-command-diff/index.js +2 -2
  212. package/dist/safe-bash-command-ffmpeg/index.js +1 -1
  213. package/dist/safe-bash-command-ffprobe/index.js +2 -2
  214. package/dist/safe-bash-command-ffprobe/media.js +2 -2
  215. package/dist/safe-bash-command-node/commands/node/browser.js +6 -6
  216. package/dist/safe-bash-command-node/commands/node/default-runtime.js +6 -6
  217. package/dist/safe-bash-command-node/commands/node/filesystem.js +2 -2
  218. package/dist/safe-bash-command-node/commands/node/safejs.js +6 -6
  219. package/dist/safe-bash-command-node/commands/node/timers.js +2 -2
  220. package/dist/safe-bash-command-patch/index.js +3 -3
  221. package/dist/safe-bash-command-patch/patch-formats.js +2 -2
  222. package/dist/safe-bash-command-patch/patch.js +3 -3
  223. package/dist/safe-bash-command-patch/unified.js +1 -1
  224. package/dist/safe-bash-command-pdftoppm/index.js +89 -124
  225. package/dist/safe-bash-command-pdftotext/index.d.ts +1 -1
  226. package/dist/safe-bash-command-pdftotext/index.js +538 -379
  227. package/dist/safe-bash-command-playwright-cli/index.js +19 -19
  228. package/dist/safe-bash-command-playwright-cli/playwright/abilities.js +6 -6
  229. package/dist/safe-bash-command-playwright-cli/playwright/adapter.js +3 -3
  230. package/dist/safe-bash-command-playwright-cli/playwright/controller.js +13 -13
  231. package/dist/safe-bash-command-playwright-cli/playwright/index.js +19 -19
  232. package/dist/safe-bash-command-playwright-cli/playwright/native-storage-replacement.js +2 -2
  233. package/dist/safe-bash-command-playwright-cli/playwright/open-options.js +2 -2
  234. package/dist/safe-bash-command-playwright-cli/playwright/profile.js +5 -5
  235. package/dist/safe-bash-command-playwright-cli/playwright/standard-capabilities.js +4 -4
  236. package/dist/safe-bash-command-playwright-cli/playwright/storage-capabilities.js +3 -3
  237. package/dist/safe-bash-command-pptx/engine.js +1 -1
  238. package/dist/safe-bash-command-python/executor.js +10 -10
  239. package/dist/safe-bash-command-python/index.js +10 -10
  240. package/dist/safe-bash-command-python/jspi.js +2 -2
  241. package/dist/safe-bash-command-safejs/index.js +2 -2
  242. package/dist/safe-bash-command-safejs/runtime.js +2 -2
  243. package/dist/safe-bash-command-ssconvert/index.js +13 -13
  244. package/dist/safe-bash-command-unzip/index.js +4 -4
  245. package/dist/safe-bash-docx-engine/ancillary-resources.js +10 -10
  246. package/dist/safe-bash-docx-engine/batch-operations.js +67 -67
  247. package/dist/safe-bash-docx-engine/batch-result-schema.js +79 -79
  248. package/dist/safe-bash-docx-engine/batch.js +78 -78
  249. package/dist/safe-bash-docx-engine/bookmarks.js +18 -18
  250. package/dist/safe-bash-docx-engine/charts.js +11 -11
  251. package/dist/safe-bash-docx-engine/command-option-rules.js +6 -6
  252. package/dist/safe-bash-docx-engine/command-properties.js +3 -3
  253. package/dist/safe-bash-docx-engine/comments.js +26 -26
  254. package/dist/safe-bash-docx-engine/control-bindings.js +21 -21
  255. package/dist/safe-bash-docx-engine/control-repeat.js +21 -21
  256. package/dist/safe-bash-docx-engine/controls.js +19 -19
  257. package/dist/safe-bash-docx-engine/create.js +11 -11
  258. package/dist/safe-bash-docx-engine/diagrams.js +11 -11
  259. package/dist/safe-bash-docx-engine/diff.js +13 -13
  260. package/dist/safe-bash-docx-engine/document-properties.js +16 -16
  261. package/dist/safe-bash-docx-engine/equations.js +17 -17
  262. package/dist/safe-bash-docx-engine/extract.js +14 -14
  263. package/dist/safe-bash-docx-engine/fields.js +23 -23
  264. package/dist/safe-bash-docx-engine/font-inventory.js +18 -18
  265. package/dist/safe-bash-docx-engine/font-resources.js +6 -6
  266. package/dist/safe-bash-docx-engine/image-batch-operations.js +14 -14
  267. package/dist/safe-bash-docx-engine/image-insertion.js +21 -21
  268. package/dist/safe-bash-docx-engine/image-layout.js +19 -19
  269. package/dist/safe-bash-docx-engine/image-replacement.js +22 -22
  270. package/dist/safe-bash-docx-engine/images.js +19 -19
  271. package/dist/safe-bash-docx-engine/index.js +111 -111
  272. package/dist/safe-bash-docx-engine/inspection.js +20 -20
  273. package/dist/safe-bash-docx-engine/invocation.js +9 -9
  274. package/dist/safe-bash-docx-engine/io.js +9 -9
  275. package/dist/safe-bash-docx-engine/links.js +21 -21
  276. package/dist/safe-bash-docx-engine/lists.js +20 -20
  277. package/dist/safe-bash-docx-engine/locations.js +15 -15
  278. package/dist/safe-bash-docx-engine/notes.js +22 -22
  279. package/dist/safe-bash-docx-engine/objects.js +19 -19
  280. package/dist/safe-bash-docx-engine/operation-json-schema.js +3 -3
  281. package/dist/safe-bash-docx-engine/operation-schema.js +2 -2
  282. package/dist/safe-bash-docx-engine/pack.js +14 -14
  283. package/dist/safe-bash-docx-engine/package-view-batch-operations.js +22 -22
  284. package/dist/safe-bash-docx-engine/pandoc-adapter.js +29 -29
  285. package/dist/safe-bash-docx-engine/paragraph-edit.js +25 -25
  286. package/dist/safe-bash-docx-engine/part-provider.js +3 -3
  287. package/dist/safe-bash-docx-engine/property-values.js +3 -3
  288. package/dist/safe-bash-docx-engine/publication.js +9 -9
  289. package/dist/safe-bash-docx-engine/removal.js +21 -21
  290. package/dist/safe-bash-docx-engine/revision-decisions.js +22 -22
  291. package/dist/safe-bash-docx-engine/revision-edit.js +20 -20
  292. package/dist/safe-bash-docx-engine/revisions.js +18 -18
  293. package/dist/safe-bash-docx-engine/run-format.js +20 -20
  294. package/dist/safe-bash-docx-engine/sanitize.js +34 -34
  295. package/dist/safe-bash-docx-engine/sections.js +19 -19
  296. package/dist/safe-bash-docx-engine/settings.js +11 -11
  297. package/dist/safe-bash-docx-engine/shape-edit.js +21 -21
  298. package/dist/safe-bash-docx-engine/signatures.js +15 -15
  299. package/dist/safe-bash-docx-engine/stories.js +22 -22
  300. package/dist/safe-bash-docx-engine/structure-model-batch-operations.js +38 -38
  301. package/dist/safe-bash-docx-engine/style-model-batch-operations.js +27 -27
  302. package/dist/safe-bash-docx-engine/style-model-result-schema.js +44 -44
  303. package/dist/safe-bash-docx-engine/styles.js +18 -18
  304. package/dist/safe-bash-docx-engine/table-edit.js +27 -27
  305. package/dist/safe-bash-docx-engine/table-read.js +16 -16
  306. package/dist/safe-bash-docx-engine/template.js +22 -22
  307. package/dist/safe-bash-docx-engine/text-replace.js +20 -20
  308. package/dist/safe-bash-docx-engine/text-resource-read.js +16 -16
  309. package/dist/safe-bash-docx-engine/text.js +16 -16
  310. package/dist/safe-bash-docx-engine/validation.js +7 -7
  311. package/dist/safe-bash-docx-engine/xml-parts.js +22 -22
  312. package/dist/safe-bash-network-engine/index.js +4 -4
  313. package/dist/safe-bash-network-engine/transfer.js +12 -12
  314. package/dist/safe-bash-presentation-engine/accessibility.js +15 -15
  315. package/dist/safe-bash-presentation-engine/animation-editing.js +5 -5
  316. package/dist/safe-bash-presentation-engine/animations.js +5 -5
  317. package/dist/safe-bash-presentation-engine/backgrounds.js +6 -6
  318. package/dist/safe-bash-presentation-engine/chart-editing.js +18 -18
  319. package/dist/safe-bash-presentation-engine/chart-object-operations.js +12 -12
  320. package/dist/safe-bash-presentation-engine/charts.js +15 -15
  321. package/dist/safe-bash-presentation-engine/command-placeholder.js +39 -38
  322. package/dist/safe-bash-presentation-engine/comments.js +6 -6
  323. package/dist/safe-bash-presentation-engine/connector-operations.js +16 -16
  324. package/dist/safe-bash-presentation-engine/connectors.js +13 -13
  325. package/dist/safe-bash-presentation-engine/diff.js +21 -20
  326. package/dist/safe-bash-presentation-engine/drawing-format.js +7 -7
  327. package/dist/safe-bash-presentation-engine/drawing-operations.js +15 -15
  328. package/dist/safe-bash-presentation-engine/drawing-schema.js +8 -8
  329. package/dist/safe-bash-presentation-engine/equations.js +6 -6
  330. package/dist/safe-bash-presentation-engine/fields.js +6 -6
  331. package/dist/safe-bash-presentation-engine/image-extraction.js +7 -7
  332. package/dist/safe-bash-presentation-engine/image-formatting.js +16 -16
  333. package/dist/safe-bash-presentation-engine/image-insertion.js +6 -6
  334. package/dist/safe-bash-presentation-engine/image-replacement.js +7 -7
  335. package/dist/safe-bash-presentation-engine/images.js +6 -6
  336. package/dist/safe-bash-presentation-engine/index.js +96 -95
  337. package/dist/safe-bash-presentation-engine/layouts.js +5 -5
  338. package/dist/safe-bash-presentation-engine/links.js +5 -5
  339. package/dist/safe-bash-presentation-engine/masters.js +4 -4
  340. package/dist/safe-bash-presentation-engine/media-editing.js +10 -10
  341. package/dist/safe-bash-presentation-engine/media-extraction.js +6 -6
  342. package/dist/safe-bash-presentation-engine/media.js +5 -5
  343. package/dist/safe-bash-presentation-engine/memberships.d.ts +1 -0
  344. package/dist/safe-bash-presentation-engine/memberships.js +12 -6
  345. package/dist/safe-bash-presentation-engine/notes.js +6 -6
  346. package/dist/safe-bash-presentation-engine/ole-insertion.js +6 -6
  347. package/dist/safe-bash-presentation-engine/opaque-objects.js +2 -2
  348. package/dist/safe-bash-presentation-engine/package-tools.js +6 -6
  349. package/dist/safe-bash-presentation-engine/presentation-model.js +38 -37
  350. package/dist/safe-bash-presentation-engine/presentation-settings.d.ts +1 -0
  351. package/dist/safe-bash-presentation-engine/presentation-settings.js +12 -5
  352. package/dist/safe-bash-presentation-engine/properties.js +7 -6
  353. package/dist/safe-bash-presentation-engine/retained-inspection.js +3 -3
  354. package/dist/safe-bash-presentation-engine/retained-memberships.d.ts +25 -0
  355. package/dist/safe-bash-presentation-engine/retained-presentation-settings.d.ts +25 -0
  356. package/dist/safe-bash-presentation-engine/retained-text.d.ts +24 -4
  357. package/dist/safe-bash-presentation-engine/retained-text.js +17 -15
  358. package/dist/safe-bash-presentation-engine/sanitize.js +8 -7
  359. package/dist/safe-bash-presentation-engine/selectors.js +2 -2
  360. package/dist/safe-bash-presentation-engine/shape-groups.js +15 -15
  361. package/dist/safe-bash-presentation-engine/shape-operations.js +14 -14
  362. package/dist/safe-bash-presentation-engine/shape-path-operations.js +16 -16
  363. package/dist/safe-bash-presentation-engine/shape-paths.js +5 -5
  364. package/dist/safe-bash-presentation-engine/shape-selection.js +15 -15
  365. package/dist/safe-bash-presentation-engine/shape-transforms.js +5 -5
  366. package/dist/safe-bash-presentation-engine/shapes.js +11 -11
  367. package/dist/safe-bash-presentation-engine/slide-copy.js +7 -5
  368. package/dist/safe-bash-presentation-engine/slide-import.js +6 -6
  369. package/dist/safe-bash-presentation-engine/slide-merge-split.js +8 -8
  370. package/dist/safe-bash-presentation-engine/slide-model.js +24 -24
  371. package/dist/safe-bash-presentation-engine/slide-removal.js +7 -7
  372. package/dist/safe-bash-presentation-engine/slide-transfer-budget.js +2 -2
  373. package/dist/safe-bash-presentation-engine/slides.js +5 -5
  374. package/dist/safe-bash-presentation-engine/table-operations.js +17 -17
  375. package/dist/safe-bash-presentation-engine/table-spans.js +16 -16
  376. package/dist/safe-bash-presentation-engine/tables.js +15 -15
  377. package/dist/safe-bash-presentation-engine/tags.js +6 -6
  378. package/dist/safe-bash-presentation-engine/template-bindings.js +16 -16
  379. package/dist/safe-bash-presentation-engine/template-repeat.js +24 -22
  380. package/dist/safe-bash-presentation-engine/text-fitting.js +11 -11
  381. package/dist/safe-bash-presentation-engine/text-frames.js +11 -11
  382. package/dist/safe-bash-presentation-engine/text-paragraphs.js +11 -11
  383. package/dist/safe-bash-presentation-engine/text-reading.js +3 -3
  384. package/dist/safe-bash-presentation-engine/text-replacement.js +6 -6
  385. package/dist/safe-bash-presentation-engine/text-runs.js +8 -8
  386. package/dist/safe-bash-presentation-engine/themes.js +5 -5
  387. package/dist/safe-bash-presentation-engine/transitions.js +5 -5
  388. package/dist/safe-bash-presentation-engine/validation.js +2 -2
  389. package/dist/safe-bash-presentation-engine/xml-parts.js +5 -5
  390. package/dist/safe-bash-xml-engine/document.js +2 -2
  391. package/dist/safe-bash-xml-engine/index.js +2 -2
  392. package/dist/safe-bash-xml-engine/recovery.d.ts +6 -2
  393. package/dist/safe-bash-xml-engine/stored-document.d.ts +2 -1
  394. package/dist/safe-bash-xml-engine/stored-document.js +1 -1
  395. package/dist/safe-bash-xml-engine/{stored-namespaces.d.ts → stored-map.d.ts} +6 -6
  396. package/dist/safe-bash-zip-engine/index.js +3 -3
  397. package/dist/safe-bash-zip-engine/zip/repair.js +3 -3
  398. package/dist/safe-bash-zip-engine/zip/sfx.js +3 -3
  399. package/dist/safe-bash-zip-engine/zip-format.js +3 -3
  400. package/dist/spreadsheet-engine/formatting/cell-text.js +1 -1
  401. package/dist/spreadsheet-engine/{rendering/print → formatting}/general-number.js +3 -3
  402. package/dist/spreadsheet-engine/formulas/functions/python-printf.js +9 -7
  403. package/dist/spreadsheet-engine/solver/program.js +3 -2
  404. package/dist/spreadsheet-engine/solver/run.js +8 -2
  405. package/dist/spreadsheet-engine/solver/sensitivity.d.ts +4 -2
  406. package/dist/spreadsheet-engine/solver/sensitivity.js +80 -42
  407. package/dist/spreadsheet-format-xls/biff-properties-merge.d.ts +2 -1
  408. package/dist/spreadsheet-format-xls/biff-properties-merge.js +35 -29
  409. package/dist/spreadsheet-format-xls/biff-properties-write.js +16 -7
  410. package/dist/spreadsheet-format-xls/biff-property-names.d.ts +3 -0
  411. package/dist/spreadsheet-format-xls/biff-property-names.js +44 -1
  412. package/dist/spreadsheet-format-xls/biff-property-observations.d.ts +33 -0
  413. package/dist/spreadsheet-format-xls/biff-property-observations.js +160 -0
  414. package/package.json +6 -4
  415. package/third-party/pdf-ast/THIRD_PARTY_NOTICES.md +15 -0
  416. package/third-party/pdf-ast/licenses/PYTHON-PSF.txt +254 -0
  417. package/third-party/pdf-ast/licenses/V8-BSD.txt +61 -0
  418. package/dist/safe-bash/command-chunks/biff-KLS4T7FP-UO3CXFFF.js +0 -5581
  419. package/dist/safe-bash/command-chunks/chunk-6EZWG56T.js +0 -455
  420. package/dist/safe-bash/command-chunks/model-store-I7YAWL5V.js +0 -54
  421. package/dist/safe-bash/command-chunks/{chunk-SRXARACJ.js → chunk-3TP4SSPS.js} +3 -3
  422. package/dist/safe-bash/command-chunks/{chunk-NCNHJRIY.js → chunk-3W3HLPCX.js} +3 -3
  423. package/dist/safe-bash/command-chunks/{chunk-P4OWVKMD.js → chunk-BQXKO3X7.js} +3 -3
  424. package/dist/safe-bash/command-chunks/{chunk-OCOJMKDP.js → chunk-CVMHDJ7J.js} +3 -3
  425. package/dist/safe-bash/command-chunks/{chunk-AV6N7DDA.js → chunk-DDYPQAXN.js} +3 -3
  426. package/dist/safe-bash/command-chunks/{chunk-FEKECRJP.js → chunk-EBTKM7KX.js} +3 -3
  427. package/dist/safe-bash/command-chunks/{chunk-WVD5WZXD.js → chunk-FPNUGKCX.js} +3 -3
  428. package/dist/safe-bash/command-chunks/{chunk-6W4RMBFH.js → chunk-N6VNHC3B.js} +3 -3
  429. package/dist/safe-bash/command-chunks/{chunk-M3OXQXCU.js → chunk-NBRXQUK7.js} +3 -3
  430. package/dist/safe-bash/command-chunks/{chunk-LECGQSQW.js → chunk-SF56V6QK.js} +3 -3
  431. package/dist/safe-bash/command-chunks/{chunk-2ANW3FXH.js → chunk-U33GIOUY.js} +3 -3
  432. package/dist/safe-bash/command-chunks/{chunk-5QXRIZSS.js → chunk-V3NKL42J.js} +3 -3
  433. package/dist/safe-bash/command-chunks/{chunk-OEKLEUUW.js → chunk-YZE7BKHC.js} +3 -3
  434. package/dist/safe-bash/command-chunks/{chunk-WXW665TV.js → chunk-ZSHXZ3XG.js} +6 -6
  435. package/dist/safe-bash/command-chunks/{dif-BXKPQOCO-4KB3RC6G.js → dif-BXKPQOCO-FVJYYGYB.js} +4 -4
  436. package/dist/safe-bash/command-chunks/{pln-DFS7VLVS-OVOBS4QX.js → pln-DFS7VLVS-JATX6FS7.js} +3 -3
  437. package/dist/safe-bash/command-chunks/{psion-YBI6JEQI-GY4S6ZLC.js → psion-YBI6JEQI-6OMC2PGC.js} +3 -3
  438. package/dist/safe-bash/command-chunks/{sylk-25D7TL2Y-RU6ANKGT.js → sylk-25D7TL2Y-NJKBZZTF.js} +4 -4
  439. /package/dist/spreadsheet-engine/{rendering/print → formatting}/general-number.d.ts +0 -0
@@ -1,10 +1,10 @@
1
- import {
2
- flags
3
- } from "./chunk-QFFJN22S.js";
4
1
  import {
5
2
  contextual,
6
3
  normal
7
4
  } from "./chunk-AHZ7UGNB.js";
5
+ import {
6
+ flags
7
+ } from "./chunk-QFFJN22S.js";
8
8
  import {
9
9
  colorText,
10
10
  expandTabs,
@@ -15,17 +15,367 @@ import {
15
15
  sideBySide
16
16
  } from "./chunk-VXIC7SS3.js";
17
17
 
18
- // packages/safe-bash-command-diff/src/stored-directory.ts
19
- import { PagedStorage, PagedStorageCache } from "@poe-platform/safe-fs/storage";
20
- import { closeDocumentResources } from "../../safe-bash-diff-engine/document.js";
21
- import { host, ToolError } from "../../safe-bash-diff-engine/shared.js";
18
+ // packages/safe-bash-command-diff/src/stored-exclusions.ts
19
+ import { PagedStorage as PagedStorage2, PagedStorageCache } from "@poe-platform/safe-fs/storage";
20
+ import { IndexedDocument, closeDocumentResources } from "../../safe-bash-diff-engine/document.js";
21
+ import { inspect, ToolError as ToolError2 } from "../../safe-bash-diff-engine/shared.js";
22
22
  import { pathOf } from "../../safe-bash-io-engine/internal.js";
23
+
24
+ // packages/safe-bash-command-diff/src/stored-glob.ts
25
+ import { PagedStorage } from "@poe-platform/safe-fs/storage";
26
+ import { ToolError } from "../../safe-bash-diff-engine/shared.js";
27
+ var GlobText = class {
28
+ constructor(storage, offset, length, budget) {
29
+ this.storage = storage;
30
+ this.offset = offset;
31
+ this.length = length;
32
+ this.budget = budget;
33
+ }
34
+ storage;
35
+ offset;
36
+ length;
37
+ budget;
38
+ start = -1;
39
+ bytes = new Uint8Array();
40
+ async at(index) {
41
+ if (index < 0 || index >= this.length) return "";
42
+ this.budget.step();
43
+ const pause = this.budget.checkpoint();
44
+ if (pause) await pause;
45
+ if (index < this.start || index >= this.start + this.bytes.length) {
46
+ this.start = Math.floor(index / 16384) * 16384;
47
+ this.bytes = await this.storage.read(this.offset + this.start, Math.min(16384, this.length - this.start));
48
+ }
49
+ return String.fromCharCode(this.bytes[index - this.start]);
50
+ }
51
+ async find(text, start) {
52
+ for (let index = start; index + text.length <= this.length; index++) {
53
+ let same = true;
54
+ for (let part = 0; part < text.length; part++) if (await this.at(index + part) !== text[part]) {
55
+ same = false;
56
+ break;
57
+ }
58
+ if (same) return index;
59
+ }
60
+ return -1;
61
+ }
62
+ };
63
+ var RegexWriter = class {
64
+ constructor(storage) {
65
+ this.storage = storage;
66
+ }
67
+ storage;
68
+ bytes = new Uint8Array(4096);
69
+ used = 0;
70
+ length = 0;
71
+ async add(text) {
72
+ for (let index = 0; index < text.length; index++) {
73
+ this.bytes[this.used++] = text.charCodeAt(index);
74
+ this.length++;
75
+ if (this.used === this.bytes.length) await this.flush();
76
+ }
77
+ }
78
+ async flush() {
79
+ if (this.used) {
80
+ await this.storage.append(this.bytes.subarray(0, this.used));
81
+ this.used = 0;
82
+ }
83
+ }
84
+ };
85
+ async function translate(source, ignoreCase, output) {
86
+ const opposite = (ch) => !ignoreCase ? "" : ch >= "A" && ch <= "Z" ? ch.toLowerCase() : ch >= "a" && ch <= "z" ? ch.toUpperCase() : "";
87
+ await output.add("^");
88
+ for (let index = 0; index < source.length; index++) {
89
+ const ch = await source.at(index);
90
+ if (ch === "\\" && index + 1 < source.length) {
91
+ const literal = await source.at(++index);
92
+ await output.add(opposite(literal) ? `[${literal}${opposite(literal)}]` : `\\${literal}`);
93
+ } else if (ch === "[") {
94
+ let end = index + 1;
95
+ const negated = "!^".includes(await source.at(end)) && end < source.length;
96
+ if (negated) end++;
97
+ if (await source.at(end) === "]") end++;
98
+ while (end < source.length && await source.at(end) !== "]") {
99
+ if (await source.at(end) === "\\" && end + 1 < source.length) end += 2;
100
+ else if (await source.at(end) === "[" && await source.at(end + 1) === ":") {
101
+ const closing = await source.find(":]", end + 2);
102
+ if (closing < 0) break;
103
+ end = closing + 2;
104
+ } else end++;
105
+ }
106
+ if (await source.at(end) !== "]") {
107
+ await output.add("\\[");
108
+ continue;
109
+ }
110
+ const literal = (value) => "\\]^-".includes(value) ? `\\${value}` : value;
111
+ const render = async (emit) => {
112
+ for (let scan = index + 1 + Number(negated); scan < end; scan++) {
113
+ if (await source.at(scan) === "[" && await source.at(scan + 1) === ":") {
114
+ const closing = await source.find(":]", scan + 2) + 1;
115
+ for (; scan <= closing; scan++) await emit(await source.at(scan));
116
+ scan--;
117
+ continue;
118
+ }
119
+ if (await source.at(scan) === "\\" && scan + 1 < end) scan++;
120
+ let first = await source.at(scan);
121
+ if (ignoreCase && first >= "A" && first <= "Z") first = first.toLowerCase();
122
+ if (await source.at(scan + 1) === "-" && scan + 2 < end) {
123
+ let last = await source.at(scan + 2);
124
+ if (ignoreCase && last >= "A" && last <= "Z") last = last.toLowerCase();
125
+ for (let code = first.charCodeAt(0); code <= last.charCodeAt(0); code++) {
126
+ const value = String.fromCharCode(code);
127
+ await emit(literal(value) + opposite(value));
128
+ }
129
+ scan += 2;
130
+ } else await emit(literal(first) + opposite(first));
131
+ }
132
+ };
133
+ let size = 0;
134
+ await render(async (text) => {
135
+ size += text.length;
136
+ });
137
+ if (size) {
138
+ await output.add(negated ? "[^" : "[");
139
+ await render((text) => output.add(text));
140
+ await output.add("]");
141
+ } else await output.add(negated ? "[\0-\xFF]" : "[^\0-\xFF]");
142
+ index = end;
143
+ } else if (ch === "*") await output.add(".*");
144
+ else if (ch === "?") await output.add(".");
145
+ else await output.add(opposite(ch) ? `[${ch}${opposite(ch)}]` : ".^$+(){}|]".includes(ch) ? `\\${ch}` : ch);
146
+ }
147
+ await output.add("$");
148
+ await output.flush();
149
+ }
150
+ var word = (byte) => byte !== void 0 && (byte >= 48 && byte <= 57 || byte >= 65 && byte <= 90 || byte >= 97 && byte <= 122 || byte === 95);
151
+ var classes = {
152
+ alpha: (byte) => byte >= 65 && byte <= 90 || byte >= 97 && byte <= 122,
153
+ alnum: (byte) => byte >= 48 && byte <= 57 || byte >= 65 && byte <= 90 || byte >= 97 && byte <= 122,
154
+ digit: (byte) => byte >= 48 && byte <= 57,
155
+ lower: (byte) => byte >= 97 && byte <= 122,
156
+ upper: (byte) => byte >= 65 && byte <= 90,
157
+ xdigit: (byte) => byte >= 48 && byte <= 57 || byte >= 65 && byte <= 70 || byte >= 97 && byte <= 102,
158
+ space: (byte) => " \n\r\v\f".includes(String.fromCharCode(byte)),
159
+ blank: (byte) => byte === 32 || byte === 9,
160
+ cntrl: (byte) => byte < 32 || byte === 127,
161
+ graph: (byte) => byte >= 33 && byte <= 126,
162
+ print: (byte) => byte >= 32 && byte <= 126,
163
+ punct: (byte) => byte >= 33 && byte <= 47 || byte >= 58 && byte <= 64 || byte >= 91 && byte <= 96 || byte >= 123 && byte <= 126
164
+ };
165
+ var shorthand = (reference, byte) => {
166
+ const lower = reference.toLowerCase(), accepted = lower === "d" ? classes.digit(byte) : lower === "s" ? classes.space(byte) : word(byte);
167
+ return reference === lower ? accepted : !accepted;
168
+ };
169
+ async function compileGlob(source, ignoreCase, tokens, budget, cache) {
170
+ const translated = new PagedStorage(budget.context, 16, cache), writer = new RegexWriter(translated);
171
+ try {
172
+ await translate(source, ignoreCase, writer);
173
+ const text = new GlobText(translated, 8, writer.length, budget);
174
+ let position = 0, count = 0;
175
+ const escaped = async () => {
176
+ const ch = await text.at(position++);
177
+ if (!ch) throw new ToolError("trailing backslash in regular expression");
178
+ const octal = "01234567".includes(ch);
179
+ if (octal || ch === "x") {
180
+ let digits = octal ? ch : "";
181
+ const alphabet = octal ? "01234567" : "0123456789abcdefABCDEF";
182
+ while (digits.length < (octal ? 3 : 2) && position < text.length && alphabet.includes(await text.at(position))) digits += await text.at(position++);
183
+ return digits ? parseInt(digits, octal ? 8 : 16) & 255 : ch.charCodeAt(0);
184
+ }
185
+ return { n: 10, t: 9, r: 13, f: 12, v: 11, a: 7, b: 8 }[ch] ?? ch.charCodeAt(0);
186
+ };
187
+ while (position < text.length) {
188
+ const cell = new Uint8Array(40), set = (byte) => {
189
+ cell[8 + (byte >>> 3)] |= 1 << (byte & 7);
190
+ };
191
+ const ch = await text.at(position++);
192
+ if (ch === "^") cell[0] = 2;
193
+ else if (ch === "$") cell[0] = 3;
194
+ else if (ch === ".") {
195
+ for (let byte = 0; byte < 256; byte++) if (byte !== 10) set(byte);
196
+ if (await text.at(position) === "*") {
197
+ cell[0] = 1;
198
+ position++;
199
+ }
200
+ } else if (ch === "[") {
201
+ const negate = await text.at(position) === "^";
202
+ if (negate) position++;
203
+ let first = true;
204
+ while (position < text.length && (await text.at(position) !== "]" || first)) {
205
+ first = false;
206
+ if (await text.at(position) === "[" && await text.at(position + 1) === ":") {
207
+ position += 2;
208
+ let name = "";
209
+ while (position < text.length && !(await text.at(position) === ":" && await text.at(position + 1) === "]")) {
210
+ const ch2 = await text.at(position++);
211
+ if (name.length < 1001) name += ch2;
212
+ }
213
+ if (!classes[name]) throw new ToolError(`unsupported character class '${name}'`);
214
+ for (let byte = 0; byte < 256; byte++) if (classes[name](byte)) set(byte);
215
+ position += 2;
216
+ continue;
217
+ }
218
+ if (await text.at(position) === "[" && [".", "="].includes(await text.at(position + 1))) throw new ToolError("collating and equivalence classes are not supported");
219
+ if (await text.at(position) === "\\" && "dDsSwW".includes(await text.at(position + 1)) && position + 1 < text.length) {
220
+ const reference = await text.at(position + 1);
221
+ position += 2;
222
+ for (let byte = 0; byte < 256; byte++) if (shorthand(reference, byte)) set(byte);
223
+ if (await text.at(position) === "-" && await text.at(position + 1) !== "]") throw new ToolError("character class cannot be a range endpoint");
224
+ continue;
225
+ }
226
+ const readChar = async () => await text.at(position++) === "\\" ? escaped() : (await text.at(position - 1)).charCodeAt(0);
227
+ const start = await readChar();
228
+ if (await text.at(position) === "-" && position + 1 < text.length && await text.at(position + 1) !== "]") {
229
+ position++;
230
+ const end = await readChar();
231
+ if (start > end) throw new ToolError("reversed character range");
232
+ for (let byte = start; byte <= end; byte++) set(byte);
233
+ } else set(start);
234
+ }
235
+ if (await text.at(position++) !== "]") throw new ToolError("unterminated bracket expression");
236
+ if (negate) for (let index = 8; index < 40; index++) cell[index] ^= 255;
237
+ } else if (ch === "\\") {
238
+ const reference = await text.at(position);
239
+ if (["B", "y", "Y", "<", ">"].includes(reference)) {
240
+ cell[0] = reference === "y" ? 4 : reference === "B" || reference === "Y" ? 5 : reference === "<" ? 6 : 7;
241
+ position++;
242
+ } else if ("dDsSwW".includes(reference) && reference) {
243
+ position++;
244
+ for (let byte = 0; byte < 256; byte++) if (shorthand(reference, byte)) set(byte);
245
+ } else set(await escaped());
246
+ } else set(ch.charCodeAt(0));
247
+ await tokens.append(cell);
248
+ count++;
249
+ }
250
+ return count;
251
+ } finally {
252
+ await translated.close();
253
+ }
254
+ }
255
+ async function matchesGlob(tokens, start, count, name, budget) {
256
+ let token = 0, position = 0, star = -1, retry = 0;
257
+ while (token < count) {
258
+ budget.step();
259
+ const pause = budget.checkpoint();
260
+ if (pause) await pause;
261
+ const cell = await tokens.read(start + token * 40, 40), kind = cell[0];
262
+ if (kind === 1) {
263
+ star = token++;
264
+ retry = position;
265
+ continue;
266
+ }
267
+ const before = word(name[position - 1]), after = word(name[position]);
268
+ const accepted = kind === 2 ? position === 0 : kind === 3 ? position === name.length : kind === 4 ? before !== after : kind === 5 ? before === after : kind === 6 ? !before && after : kind === 7 ? before && !after : position < name.length && !!(cell[8 + (name[position] >>> 3)] & 1 << (name[position] & 7));
269
+ if (accepted) {
270
+ if (kind === 0) position++;
271
+ token++;
272
+ } else if (star >= 0 && retry < name.length && name[retry] !== 10) {
273
+ position = ++retry;
274
+ token = star + 1;
275
+ } else return false;
276
+ }
277
+ return true;
278
+ }
279
+
280
+ // packages/safe-bash-command-diff/src/stored-exclusions.ts
281
+ var StoredExclusions = class {
282
+ constructor(budget) {
283
+ this.budget = budget;
284
+ this.tokens = new PagedStorage2(budget.context, 16, this.cache);
285
+ this.patterns = new PagedStorage2(budget.context, 16, this.cache);
286
+ }
287
+ budget;
288
+ cache = new PagedStorageCache(16);
289
+ tokens;
290
+ patterns;
291
+ count = 0;
292
+ bytes = 0;
293
+ document() {
294
+ return new IndexedDocument({
295
+ context: this.budget.context,
296
+ documentCache: this.cache,
297
+ step: this.budget.step.bind(this.budget),
298
+ checkpoint: this.budget.checkpoint.bind(this.budget)
299
+ });
300
+ }
301
+ async append(document, start, end, ignoreCase) {
302
+ if (this.count >= this.budget.limits.maxExcludePatterns) throw new ToolError2("exclusion pattern count limit exceeded");
303
+ if (end - start > this.budget.limits.maxExcludePatternBytes - this.bytes) throw new ToolError2("exclusion pattern byte limit exceeded");
304
+ this.bytes += end - start;
305
+ const position = this.tokens.allocate(0);
306
+ const count = await compileGlob(new GlobText(document.data, 8 + start, end - start, this.budget), ignoreCase, this.tokens, this.budget, this.cache);
307
+ const cell = new Uint8Array(16), view = new DataView(cell.buffer);
308
+ view.setFloat64(0, position, true);
309
+ view.setFloat64(8, count, true);
310
+ await this.patterns.append(cell);
311
+ this.count++;
312
+ }
313
+ async load(options) {
314
+ for (const { pattern, ignoreCase } of options.excludes) {
315
+ const document = this.document();
316
+ try {
317
+ await document.load({ async *[Symbol.asyncIterator]() {
318
+ for (let start = 0; start < pattern.length; ) {
319
+ let end = Math.min(start + 4096, pattern.length);
320
+ const last = pattern.charCodeAt(end - 1);
321
+ if (end < pattern.length && last >= 55296 && last <= 56319) end--;
322
+ yield new TextEncoder().encode(pattern.slice(start, end));
323
+ start = end;
324
+ }
325
+ } });
326
+ await this.append(document, 0, document.size, ignoreCase);
327
+ } finally {
328
+ await document.close();
329
+ }
330
+ }
331
+ for (const { path, ignoreCase } of options.excludeFiles) {
332
+ this.budget.inspected.clear();
333
+ if (path !== "-") await inspect(this.budget, path, "follow");
334
+ const document = this.document();
335
+ try {
336
+ await document.load(path === "-" ? this.budget.stdinSource() : this.budget.diffSource(pathOf(this.budget.context, path)));
337
+ if (document.binary) throw new ToolError2("binary input is unsupported (NUL byte)");
338
+ if (!document.validUtf8) throw new ToolError2("binary input is unsupported (invalid UTF-8)");
339
+ for (let index = 0; index < document.length; index++) {
340
+ const line2 = await document.line(index);
341
+ const end = (await document.data.read(8 + line2.end - 1, 1))[0] === 10 ? line2.end - 1 : line2.end;
342
+ if (end > line2.start) await this.append(document, line2.start, end, ignoreCase);
343
+ else {
344
+ this.budget.step();
345
+ const pause = this.budget.checkpoint();
346
+ if (pause) await pause;
347
+ }
348
+ }
349
+ } finally {
350
+ await document.close();
351
+ }
352
+ }
353
+ }
354
+ async matches(name) {
355
+ if (!this.count) return false;
356
+ const bytes = new TextEncoder().encode(name);
357
+ for (let index = 0; index < this.count; index++) {
358
+ const cell = await this.patterns.read(8 + index * 16, 16), view = new DataView(cell.buffer, cell.byteOffset, cell.byteLength);
359
+ if (await matchesGlob(this.tokens, view.getFloat64(0, true), view.getFloat64(8, true), bytes, this.budget)) return true;
360
+ }
361
+ return false;
362
+ }
363
+ close() {
364
+ return closeDocumentResources([this.tokens, this.patterns]);
365
+ }
366
+ };
367
+
368
+ // packages/safe-bash-command-diff/src/stored-directory.ts
369
+ import { PagedStorage as PagedStorage3, PagedStorageCache as PagedStorageCache2 } from "@poe-platform/safe-fs/storage";
370
+ import { closeDocumentResources as closeDocumentResources2 } from "../../safe-bash-diff-engine/document.js";
371
+ import { host, ToolError as ToolError3 } from "../../safe-bash-diff-engine/shared.js";
372
+ import { pathOf as pathOf2 } from "../../safe-bash-io-engine/internal.js";
23
373
  import { FsError } from "../../safe-bash-contracts/index.js";
24
374
  var Rows = class {
25
375
  constructor(budget, cache) {
26
376
  this.budget = budget;
27
- this.data = new PagedStorage(budget.context, 16, cache);
28
- this.index = new PagedStorage(budget.context, 16, cache);
377
+ this.data = new PagedStorage3(budget.context, 16, cache);
378
+ this.index = new PagedStorage3(budget.context, 16, cache);
29
379
  }
30
380
  budget;
31
381
  data;
@@ -86,12 +436,12 @@ var Rows = class {
86
436
  }
87
437
  }
88
438
  close() {
89
- return closeDocumentResources([this.data, this.index]);
439
+ return closeDocumentResources2([this.data, this.index]);
90
440
  }
91
441
  };
92
442
  var compareText = (a, b) => a < b ? -1 : a > b ? 1 : 0;
93
443
  async function* directoryMatches(left, right, budget, ignoreCase, maxEntries, excluded, startingFile) {
94
- const cache = new PagedStorageCache(16), matches = new Rows(budget, cache);
444
+ const cache = new PagedStorageCache2(16), matches = new Rows(budget, cache);
95
445
  let entries = new Rows(budget, cache);
96
446
  const context = budget.context, key = (name) => ignoreCase ? name.replace(/[A-Z]/gu, (letter) => letter.toLowerCase()) : name;
97
447
  try {
@@ -101,7 +451,7 @@ async function* directoryMatches(left, right, budget, ignoreCase, maxEntries, ex
101
451
  try {
102
452
  for (const [side, path] of [["left", left], ["right", right]]) {
103
453
  if (path === void 0) continue;
104
- const absolute = pathOf(context, path);
454
+ const absolute = pathOf2(context, path);
105
455
  if (Number.isFinite(maxEntries) && (!Number.isSafeInteger(maxEntries) || maxEntries < 0))
106
456
  throw new FsError("EINVAL", { syscall: "readdir", path: absolute, message: "directory entry limit must be a nonnegative safe integer or Infinity" });
107
457
  const source = context.fs.iterateDirectory ? context.fs.iterateDirectory(absolute, { signal: context.signal }) : await host(context, () => context.fs.readdir(absolute, { signal: context.signal, ...Number.isFinite(maxEntries) ? { maxEntries } : {} }));
@@ -116,7 +466,7 @@ async function* directoryMatches(left, right, budget, ignoreCase, maxEntries, ex
116
466
  budget.step();
117
467
  const pause = budget.checkpoint();
118
468
  if (pause) await pause;
119
- if (!entry.name || entry.name === "." || entry.name === ".." || /[/\\\0\r\n\t]/u.test(entry.name)) throw new ToolError("unsafe directory entry name");
469
+ if (!entry.name || entry.name === "." || entry.name === ".." || /[/\\\0\r\n\t]/u.test(entry.name)) throw new ToolError3("unsafe directory entry name");
120
470
  if (!await excluded(entry.name)) {
121
471
  admittedBytes += entry.name.length * 6 + 128;
122
472
  if (!prepared && admittedBytes > 128 * 1024) throw restart;
@@ -149,7 +499,7 @@ async function* directoryMatches(left, right, budget, ignoreCase, maxEntries, ex
149
499
  end++;
150
500
  }
151
501
  count += Math.max(leftCount, rightCount);
152
- if (count > maxEntries) throw new ToolError("file/entry limit exceeded");
502
+ if (count > maxEntries) throw new ToolError3("file/entry limit exceeded");
153
503
  if (startingFile === void 0 || group >= key(startingFile)) {
154
504
  const next = async (position, side, unmatched = false) => {
155
505
  while (position < end) {
@@ -189,23 +539,23 @@ async function* directoryMatches(left, right, budget, ignoreCase, maxEntries, ex
189
539
  });
190
540
  for (let index = matches.length - 1; index >= 0; index--) yield await matches.read(index);
191
541
  } finally {
192
- await closeDocumentResources([entries, matches]);
542
+ await closeDocumentResources2([entries, matches]);
193
543
  }
194
544
  }
195
545
 
196
546
  // packages/safe-bash-command-diff/src/diff.ts
197
- import { closeDocumentResources as closeDocumentResources4 } from "../../safe-bash-diff-engine/document.js";
198
- import { PagedStorage as PagedStorage5 } from "@poe-platform/safe-fs/storage";
547
+ import { closeDocumentResources as closeDocumentResources5 } from "../../safe-bash-diff-engine/document.js";
548
+ import { PagedStorage as PagedStorage7 } from "@poe-platform/safe-fs/storage";
199
549
 
200
550
  // packages/safe-bash-command-diff/src/indexed.ts
201
551
  import { writeDiagnostic } from "../../safe-bash-contracts/escaping.js";
202
552
 
203
553
  // packages/safe-bash-command-diff/src/indexed-output.ts
204
- import { ToolError as ToolError2 } from "../../safe-bash-diff-engine/shared.js";
554
+ import { ToolError as ToolError4 } from "../../safe-bash-diff-engine/shared.js";
205
555
  import { encodeBytes as encodeBytes2 } from "../../safe-bash-io-engine/byte-encoding.js";
206
556
 
207
557
  // packages/safe-bash-command-diff/src/indexed-normalization.ts
208
- import { PagedStorage as PagedStorage2 } from "@poe-platform/safe-fs/storage";
558
+ import { PagedStorage as PagedStorage4 } from "@poe-platform/safe-fs/storage";
209
559
  import { readBytes } from "../../safe-bash-contracts/index.js";
210
560
  import { decodeBytes, encodeBytes } from "../../safe-bash-io-engine/byte-encoding.js";
211
561
  async function* stripTrailingCr(source, signal) {
@@ -266,7 +616,7 @@ async function* expandedSource(document, start, end, utf8) {
266
616
  if (pending) yield encodeBytes(pending, utf8 ? "utf8" : "latin1");
267
617
  }
268
618
  async function* comparisonSource(document, options, utf8) {
269
- const storage = new PagedStorage2(document.budget.context, 16);
619
+ const storage = new PagedStorage4(document.budget.context, 16);
270
620
  document.budget.context.registerCleanup?.(() => storage.close());
271
621
  const encoder2 = new TextEncoder();
272
622
  let position = 0;
@@ -399,7 +749,7 @@ async function renderSideBySide(old, next, count, group, options, budget, append
399
749
  };
400
750
  const row = async (left, right, common) => {
401
751
  if (common && left !== void 0 && right !== void 0 && options.suppressCommon) return;
402
- if (options.width > budget.limits.maxOutputBytes) throw new ToolError2("output byte limit exceeded");
752
+ if (options.width > budget.limits.maxOutputBytes) throw new ToolError4("output byte limit exceeded");
403
753
  const leftLf = await terminated(old, left), rightLf = await terminated(next, right);
404
754
  const marker = common ? left === void 0 ? ")" : right === void 0 ? "(" : " " : left === void 0 ? ">" : right === void 0 ? "<" : !leftLf && rightLf ? "\\" : leftLf && !rightLf ? "/" : "|";
405
755
  const colored = options.color && (marker === "<" || marker === ">");
@@ -456,14 +806,14 @@ async function renderSideBySide(old, next, count, group, options, budget, append
456
806
  import { encodeBytes as encodeBytes3 } from "../../safe-bash-io-engine/byte-encoding.js";
457
807
 
458
808
  // packages/safe-bash-command-diff/src/indexed-pattern.ts
459
- import { IntegerTable, PagedStorage as PagedStorage3, PagedStorageCache as PagedStorageCache2 } from "@poe-platform/safe-fs/storage";
460
- import { closeDocumentResources as closeDocumentResources2 } from "../../safe-bash-diff-engine/document.js";
809
+ import { IntegerTable, PagedStorage as PagedStorage5, PagedStorageCache as PagedStorageCache3 } from "@poe-platform/safe-fs/storage";
810
+ import { closeDocumentResources as closeDocumentResources3 } from "../../safe-bash-diff-engine/document.js";
461
811
  async function matchesPattern(pattern, document, start, end, utf8, budget) {
462
812
  if (await pattern.supportsStreamTest(budget)) return pattern.testStream(documentText(document, start, end, utf8), budget);
463
- const cache = new PagedStorageCache2(16);
464
- const text = new PagedStorage3(budget.context, 16, cache);
465
- const records = new PagedStorage3(budget.context, 16, cache);
466
- const index = new PagedStorage3(budget.context, 16, cache);
813
+ const cache = new PagedStorageCache3(16);
814
+ const text = new PagedStorage5(budget.context, 16, cache);
815
+ const records = new PagedStorage5(budget.context, 16, cache);
816
+ const index = new PagedStorage5(budget.context, 16, cache);
467
817
  const hashes = new IntegerTable(index, 256);
468
818
  let length = 0, cursor = 8, tail = 8;
469
819
  const record = async (offset) => {
@@ -522,14 +872,14 @@ async function matchesPattern(pattern, document, start, end, utf8, budget) {
522
872
  }
523
873
  }, budget);
524
874
  } finally {
525
- await closeDocumentResources2([text, records, index]);
875
+ await closeDocumentResources3([text, records, index]);
526
876
  }
527
877
  }
528
878
 
529
879
  // packages/safe-bash-command-diff/src/indexed.ts
530
- import { PagedStorage as PagedStorage4 } from "@poe-platform/safe-fs/storage";
531
- import { IndexedDocument, closeDocumentResources as closeDocumentResources3 } from "../../safe-bash-diff-engine/document.js";
532
- import { ToolError as ToolError3 } from "../../safe-bash-diff-engine/shared.js";
880
+ import { PagedStorage as PagedStorage6 } from "@poe-platform/safe-fs/storage";
881
+ import { IndexedDocument as IndexedDocument2, closeDocumentResources as closeDocumentResources4 } from "../../safe-bash-diff-engine/document.js";
882
+ import { ToolError as ToolError5 } from "../../safe-bash-diff-engine/shared.js";
533
883
  var encoder = new TextEncoder();
534
884
  async function buildGroups(old, next, matrix, groups, budget, admitLines = true) {
535
885
  let prefix = 0, suffix = 0, count = 0;
@@ -539,7 +889,7 @@ async function buildGroups(old, next, matrix, groups, budget, admitLines = true)
539
889
  while (suffix < Math.min(old.length, next.length) - prefix && await old.equal(old.length - suffix - 1, next, next.length - suffix - 1)) suffix++;
540
890
  const oldCount = old.length - prefix - suffix, newCount = next.length - prefix - suffix;
541
891
  const width = newCount + 1, cells = (oldCount + 1) * width;
542
- if (oldCount && newCount && (cells > budget.limits.maxMatrixCells || !Number.isSafeInteger(cells * 4))) throw new ToolError3("diff matrix cell limit exceeded");
892
+ if (oldCount && newCount && (cells > budget.limits.maxMatrixCells || !Number.isSafeInteger(cells * 4))) throw new ToolError5("diff matrix cell limit exceeded");
543
893
  const base = oldCount && newCount ? matrix.allocate(cells * 4) : 0;
544
894
  const get = async (row2, column2) => {
545
895
  const bytes = await matrix.read(base + (row2 * width + column2) * 4, 4);
@@ -627,7 +977,7 @@ async function line(document, position, prefix, output, color) {
627
977
  }
628
978
  async function indexedDiff(budget, options, left, right, nested, append, sources, stdin) {
629
979
  let trouble = false;
630
- const acquire = (source) => source === "-" ? stdin.document ??= new IndexedDocument(budget) : new IndexedDocument(budget);
980
+ const acquire = (source) => source === "-" ? stdin.document ??= new IndexedDocument2(budget) : new IndexedDocument2(budget);
631
981
  const rawOld = acquire(sources.left), rawNext = acquire(sources.right);
632
982
  let old = rawOld, next = rawNext;
633
983
  const load = async (document, source) => {
@@ -637,7 +987,7 @@ async function indexedDiff(budget, options, left, right, nested, append, sources
637
987
  else await document.load(input);
638
988
  };
639
989
  const keys = [];
640
- const matrix = new PagedStorage4(budget.context, 8), groups = new PagedStorage4(budget.context, 16);
990
+ const matrix = new PagedStorage6(budget.context, 8), groups = new PagedStorage6(budget.context, 16);
641
991
  budget.context.registerCleanup?.(() => matrix.close());
642
992
  budget.context.registerCleanup?.(() => groups.close());
643
993
  const text = async (value, color) => {
@@ -670,16 +1020,16 @@ async function indexedDiff(budget, options, left, right, nested, append, sources
670
1020
  }
671
1021
  }
672
1022
  if (options.stripTrailingCr) {
673
- old = new IndexedDocument(budget);
674
- next = new IndexedDocument(budget);
1023
+ old = new IndexedDocument2(budget);
1024
+ next = new IndexedDocument2(budget);
675
1025
  keys.push(old, next);
676
1026
  await old.load(stripTrailingCr(rawOld.range(0, rawOld.size), budget.context.signal));
677
1027
  await next.load(stripTrailingCr(rawNext.range(0, rawNext.size), budget.context.signal));
678
1028
  }
679
1029
  if (options.format === "ed" && !options.brief && trouble) {
680
1030
  const before = old, after = next;
681
- old = new IndexedDocument(budget);
682
- next = new IndexedDocument(budget);
1031
+ old = new IndexedDocument2(budget);
1032
+ next = new IndexedDocument2(budget);
683
1033
  keys.push(old, next);
684
1034
  await old.load(terminatedSource(before));
685
1035
  await next.load(terminatedSource(after));
@@ -694,8 +1044,8 @@ async function indexedDiff(budget, options, left, right, nested, append, sources
694
1044
  const counted = options.format === "ifdef" || options.format === "side" || normalize && !sameRaw;
695
1045
  if (counted) budget.countLines(old.length + next.length);
696
1046
  if (normalize && !sameRaw) {
697
- oldKeys = new IndexedDocument(budget);
698
- nextKeys = new IndexedDocument(budget);
1047
+ oldKeys = new IndexedDocument2(budget);
1048
+ nextKeys = new IndexedDocument2(budget);
699
1049
  keys.push(oldKeys, nextKeys);
700
1050
  const utf8 = old.validUtf8 && next.validUtf8;
701
1051
  await oldKeys.load(comparisonSource(old, options, utf8));
@@ -911,7 +1261,7 @@ async function indexedDiff(budget, options, left, right, nested, append, sources
911
1261
  }
912
1262
  return { different: true, trouble };
913
1263
  } finally {
914
- await closeDocumentResources3([
1264
+ await closeDocumentResources4([
915
1265
  ...rawOld === stdin.document ? [] : [rawOld],
916
1266
  ...rawNext === stdin.document ? [] : [rawNext],
917
1267
  ...keys,
@@ -984,10 +1334,9 @@ import { createPrCommand } from "../../safe-bash-command-pr/index.js";
984
1334
  import { basename, createCommandArguments, isFsError, writeBytes } from "../../safe-bash-contracts/index.js";
985
1335
  import { publicDiagnosticMessage } from "../../safe-bash-contracts/diagnostics.js";
986
1336
  import { writeDiagnostic as writeDiagnostic2 } from "../../safe-bash-contracts/escaping.js";
987
- import { ToolError as ToolError4, definition, host as host2, inspect, sameIdentity } from "../../safe-bash-diff-engine/shared.js";
988
- import { byteLength, decodeBytes as decodeBytes2, encodeBytes as encodeBytes4 } from "../../safe-bash-io-engine/byte-encoding.js";
989
- import { pathOf as pathOf2 } from "../../safe-bash-io-engine/internal.js";
990
- import { Pattern } from "../../safe-bash-regex-engine/text/regex.js";
1337
+ import { ToolError as ToolError6, definition, host as host2, inspect as inspect2, sameIdentity } from "../../safe-bash-diff-engine/shared.js";
1338
+ import { decodeBytes as decodeBytes2, encodeBytes as encodeBytes4 } from "../../safe-bash-io-engine/byte-encoding.js";
1339
+ import { pathOf as pathOf3 } from "../../safe-bash-io-engine/internal.js";
991
1340
  async function comparisonLines(lines, options, budget) {
992
1341
  const whitespace = options.whitespace;
993
1342
  if (whitespace === "exact" && !options.ignoreCase && !options.ignoreTabs && !options.ignoreTrailing) return lines;
@@ -1038,7 +1387,7 @@ async function edits(oldLines, newLines, oldKeys, newKeys, budget) {
1038
1387
  const oldCount = oldLines.length - prefix - suffix;
1039
1388
  const newCount = newLines.length - prefix - suffix;
1040
1389
  const cells = (oldCount + 1) * (newCount + 1);
1041
- if (oldCount && newCount && cells > budget.limits.maxMatrixCells) throw new ToolError4("diff matrix cell limit exceeded");
1390
+ if (oldCount && newCount && cells > budget.limits.maxMatrixCells) throw new ToolError6("diff matrix cell limit exceeded");
1042
1391
  const width = newCount + 1;
1043
1392
  const matrix = oldCount && newCount ? new Uint32Array(cells) : void 0;
1044
1393
  const ids = /* @__PURE__ */ new Map();
@@ -1106,63 +1455,25 @@ async function edits(oldLines, newLines, oldKeys, newKeys, budget) {
1106
1455
  }
1107
1456
  return result;
1108
1457
  }
1109
- async function exclusionPatterns(options, budget) {
1110
- const exclusions = [];
1111
- let patternBytes = 0;
1112
- const append = async (source, ignoreCase, start = 0, end = source.length) => {
1113
- budget.step(1 + end - start);
1114
- {
1115
- const c = budget.checkpoint();
1116
- if (c) await c;
1117
- }
1118
- if (exclusions.length >= budget.limits.maxExcludePatterns) throw new ToolError4("exclusion pattern count limit exceeded");
1119
- const remaining = budget.limits.maxExcludePatternBytes - patternBytes;
1120
- if (end - start > remaining) throw new ToolError4("exclusion pattern byte limit exceeded");
1121
- const sourcePattern = source.slice(start, end);
1122
- const bytes = byteLength(sourcePattern);
1123
- if (bytes > remaining) throw new ToolError4("exclusion pattern byte limit exceeded");
1124
- patternBytes += bytes;
1125
- exclusions.push(globPattern(sourcePattern, ignoreCase));
1126
- };
1127
- for (const { pattern, ignoreCase } of options.excludes) await append(pattern, ignoreCase);
1128
- for (const { path, ignoreCase } of options.excludeFiles) {
1129
- if (path !== "-") await inspect(budget, path, "follow");
1130
- const contents = await (path === "-" ? budget.read("-") : budget.readDiff(pathOf2(budget.context, path)));
1131
- let start = 0;
1132
- while (start < contents.length) {
1133
- const newline = contents.indexOf("\n", start);
1134
- const end = newline < 0 ? contents.length : newline;
1135
- if (end > start) await append(contents, ignoreCase, start, end);
1136
- else {
1137
- budget.step();
1138
- {
1139
- const c = budget.checkpoint();
1140
- if (c) await c;
1141
- }
1142
- }
1143
- start = end + 1;
1144
- }
1145
- }
1146
- return exclusions;
1147
- }
1148
1458
  function childPath(directory, name) {
1149
1459
  let end = directory.length;
1150
1460
  while (end > 0 && directory[end - 1] === "/") end--;
1151
1461
  return `${directory.slice(0, end)}/${name}`;
1152
1462
  }
1153
1463
  async function run(context, budget) {
1154
- const storage = new PagedStorage5(context, 32);
1464
+ const storage = new PagedStorage7(context, 32);
1155
1465
  const stdin = {};
1156
- context.registerCleanup?.(() => storage.close());
1466
+ const exclusions = new StoredExclusions(budget);
1467
+ context.registerCleanup?.(() => closeDocumentResources5([storage, exclusions]));
1157
1468
  try {
1158
- return await runStored(context, budget, storage, stdin);
1469
+ return await runStored(context, budget, storage, stdin, exclusions);
1159
1470
  } finally {
1160
- await closeDocumentResources4([storage, ...stdin.document ? [stdin.document] : []]);
1471
+ await closeDocumentResources5([storage, exclusions, ...stdin.document ? [stdin.document] : []]);
1161
1472
  }
1162
1473
  }
1163
- async function runStored(context, budget, storage, stdinDocument) {
1474
+ async function runStored(context, budget, storage, stdinDocument, exclusions) {
1164
1475
  const options = flags(context.args);
1165
- const exclusions = await exclusionPatterns(options, budget);
1476
+ await exclusions.load(options);
1166
1477
  let outputSize = 0;
1167
1478
  let encoding = "utf8";
1168
1479
  const appendBytes = async (bytes) => {
@@ -1180,7 +1491,7 @@ async function runStored(context, budget, storage, stdinDocument) {
1180
1491
  let inspectionFailed = false;
1181
1492
  const inspectOperand = async (path) => {
1182
1493
  try {
1183
- return await inspect(budget, path, symlinks);
1494
+ return await inspect2(budget, path, symlinks);
1184
1495
  } catch (error) {
1185
1496
  if (isFsError(error, "ENOENT")) return void 0;
1186
1497
  if (!isFsError(error)) throw error;
@@ -1193,6 +1504,7 @@ async function runStored(context, budget, storage, stdinDocument) {
1193
1504
  const pairs = options.fromFile !== void 0 ? options.files.map((right) => ({ left: options.fromFile, right })) : options.toFile !== void 0 ? options.files.map((left) => ({ left, right: options.toFile })) : [{ left: options.files[0], right: options.files[1] }];
1194
1505
  const pending = pairs.reverse().map((pair) => ({ ...pair, nested: false, leftParents: [], rightParents: [] }));
1195
1506
  while (pending.length) {
1507
+ budget.inspected.clear();
1196
1508
  encoding = "utf8";
1197
1509
  inspectionFailed = false;
1198
1510
  budget.file();
@@ -1203,15 +1515,15 @@ async function runStored(context, budget, storage, stdinDocument) {
1203
1515
  const pair = pending.pop();
1204
1516
  let left = pair.left;
1205
1517
  let right = pair.right;
1206
- const isStdin = (path) => path === "-" || !options.noDereference && (pathOf2(context, path) === "/dev/stdin" || pathOf2(context, path) === "/dev/fd/0");
1518
+ const isStdin = (path) => path === "-" || !options.noDereference && (pathOf3(context, path) === "/dev/stdin" || pathOf3(context, path) === "/dev/fd/0");
1207
1519
  let leftStat = pair.leftEntry === false ? void 0 : isStdin(left) ? { type: "file" } : await inspectOperand(left);
1208
1520
  let rightStat = pair.rightEntry === false ? void 0 : isStdin(right) ? { type: "file" } : await inspectOperand(right);
1209
1521
  if (inspectionFailed) continue;
1210
1522
  if (options.format === "ifdef" && (leftStat?.type === "directory" || rightStat?.type === "directory")) {
1211
- throw new ToolError4("-D option not supported with directories");
1523
+ throw new ToolError6("-D option not supported with directories");
1212
1524
  }
1213
1525
  if (!pair.nested && leftStat && rightStat && leftStat.type === "directory" !== (rightStat.type === "directory")) {
1214
- if (isStdin(left) || isStdin(right)) throw new ToolError4("cannot compare stdin with a directory");
1526
+ if (isStdin(left) || isStdin(right)) throw new ToolError6("cannot compare stdin with a directory");
1215
1527
  if (leftStat.type === "directory") {
1216
1528
  left = childPath(left, basename(right));
1217
1529
  leftStat = await inspectOperand(left);
@@ -1248,10 +1560,10 @@ async function runStored(context, budget, storage, stdinDocument) {
1248
1560
  continue;
1249
1561
  }
1250
1562
  if (leftStat?.type === "symlink" || rightStat?.type === "symlink") {
1251
- if (!context.fs.readlink) throw new ToolError4("filesystem cannot read symbolic links");
1563
+ if (!context.fs.readlink) throw new ToolError6("filesystem cannot read symbolic links");
1252
1564
  const readlink = context.fs.readlink.bind(context.fs);
1253
- const oldTarget = await host2(context, () => readlink(pathOf2(context, left), { signal: context.signal }));
1254
- const newTarget = await host2(context, () => readlink(pathOf2(context, right), { signal: context.signal }));
1565
+ const oldTarget = await host2(context, () => readlink(pathOf3(context, left), { signal: context.signal }));
1566
+ const newTarget = await host2(context, () => readlink(pathOf3(context, right), { signal: context.signal }));
1255
1567
  if (!budget.equal(oldTarget, newTarget)) {
1256
1568
  await append(`Symbolic links ${left} and ${right} differ
1257
1569
  `);
@@ -1266,8 +1578,8 @@ async function runStored(context, budget, storage, stdinDocument) {
1266
1578
  `);
1267
1579
  continue;
1268
1580
  }
1269
- const leftIdentity = leftStat?.type !== "directory" ? void 0 : sameIdentity(leftStat, leftStat) ? leftStat : await host2(context, () => context.fs.realpath(pathOf2(context, left), { signal: context.signal }));
1270
- const rightIdentity = rightStat?.type !== "directory" ? void 0 : sameIdentity(rightStat, rightStat) ? rightStat : await host2(context, () => context.fs.realpath(pathOf2(context, right), { signal: context.signal }));
1581
+ const leftIdentity = leftStat?.type !== "directory" ? void 0 : sameIdentity(leftStat, leftStat) ? leftStat : await host2(context, () => context.fs.realpath(pathOf3(context, left), { signal: context.signal }));
1582
+ const rightIdentity = rightStat?.type !== "directory" ? void 0 : sameIdentity(rightStat, rightStat) ? rightStat : await host2(context, () => context.fs.realpath(pathOf3(context, right), { signal: context.signal }));
1271
1583
  const isLoop = (identity, parents) => identity !== void 0 && parents.some((parent) => typeof identity === "string" ? parent === identity : typeof parent !== "string" && sameIdentity(identity, parent));
1272
1584
  const cycle = isLoop(leftIdentity, pair.leftParents) ? left : isLoop(rightIdentity, pair.rightParents) ? right : void 0;
1273
1585
  if (cycle !== void 0) {
@@ -1278,18 +1590,13 @@ async function runStored(context, budget, storage, stdinDocument) {
1278
1590
  }
1279
1591
  const leftParents = leftIdentity === void 0 ? pair.leftParents : [...pair.leftParents, leftIdentity];
1280
1592
  const rightParents = rightIdentity === void 0 ? pair.rightParents : [...pair.rightParents, rightIdentity];
1281
- const excluded = async (name) => {
1282
- const byteName = exclusions.length ? decodeBytes2(encodeBytes4(name), "latin1") : name;
1283
- for (const pattern of exclusions) if (await pattern.find(byteName, budget)) return true;
1284
- return false;
1285
- };
1286
1593
  for await (const match of directoryMatches(
1287
1594
  leftStat ? left : void 0,
1288
1595
  rightStat ? right : void 0,
1289
1596
  budget,
1290
1597
  options.ignoreFileNameCase,
1291
1598
  budget.remainingFiles - pending.length,
1292
- excluded,
1599
+ (name) => exclusions.matches(name),
1293
1600
  pair.nested ? void 0 : options.startingFile
1294
1601
  )) {
1295
1602
  pending.push({
@@ -1305,7 +1612,7 @@ async function runStored(context, budget, storage, stdinDocument) {
1305
1612
  continue;
1306
1613
  }
1307
1614
  if (options.brief && options.whitespace === "exact" && !options.ignoreCase && !options.ignoreTabs && !options.ignoreTrailing && !options.stripTrailingCr && !options.ignoreBlank && options.ignorePatterns.length === 0 && leftStat?.type === "file" && rightStat?.type === "file" && !isStdin(left) && !isStdin(right)) {
1308
- const same2 = await compareBrief(budget, pathOf2(context, left), pathOf2(context, right), options.text, options.format === "side" || options.format === "ifdef");
1615
+ const same2 = await compareBrief(budget, pathOf3(context, left), pathOf3(context, right), options.text, options.format === "side" || options.format === "ifdef");
1309
1616
  if (!same2) {
1310
1617
  different = true;
1311
1618
  await append(`Files ${options.labels[0] ?? left} and ${options.labels[1] ?? right} differ
@@ -1317,7 +1624,7 @@ async function runStored(context, budget, storage, stdinDocument) {
1317
1624
  const canIndex = async (path, stat) => {
1318
1625
  if (!stat || stat.type === "file") return true;
1319
1626
  if (pair.nested || !streamType(stat.type) || !context.fs.readStream) return false;
1320
- const capabilities = await host2(context, async () => await context.fs.capabilitiesFor?.(pathOf2(context, path), { signal: context.signal }) ?? context.fs.capabilities);
1627
+ const capabilities = await host2(context, async () => await context.fs.capabilitiesFor?.(pathOf3(context, path), { signal: context.signal }) ?? context.fs.capabilities);
1321
1628
  return capabilities.streamingRead !== false;
1322
1629
  };
1323
1630
  let storedPatterns = true;
@@ -1329,8 +1636,8 @@ async function runStored(context, budget, storage, stdinDocument) {
1329
1636
  }
1330
1637
  if (storedPatterns && await canIndex(left, leftStat) && await canIndex(right, rightStat)) {
1331
1638
  const result = await indexedDiff(budget, options, left, right, pair.nested, appendBytes, {
1332
- left: !leftStat ? void 0 : isStdin(left) ? "-" : streamType(leftStat.type) ? { stream: pathOf2(context, left) } : pathOf2(context, left),
1333
- right: !rightStat ? void 0 : isStdin(right) ? "-" : streamType(rightStat.type) ? { stream: pathOf2(context, right) } : pathOf2(context, right)
1639
+ left: !leftStat ? void 0 : isStdin(left) ? "-" : streamType(leftStat.type) ? { stream: pathOf3(context, left) } : pathOf3(context, left),
1640
+ right: !rightStat ? void 0 : isStdin(right) ? "-" : streamType(rightStat.type) ? { stream: pathOf3(context, right) } : pathOf3(context, right)
1334
1641
  }, stdinDocument);
1335
1642
  different ||= result.different;
1336
1643
  trouble ||= result.trouble;
@@ -1339,8 +1646,8 @@ async function runStored(context, budget, storage, stdinDocument) {
1339
1646
  const read = async (path, stat) => {
1340
1647
  if (!stat) return "";
1341
1648
  if (isStdin(path)) return stdin ??= await budget.read("-", "latin1");
1342
- if (!pair.nested && streamType(stat.type)) return budget.read(pathOf2(context, path), "latin1");
1343
- return budget.readDiff(pathOf2(context, path), "latin1");
1649
+ if (!pair.nested && streamType(stat.type)) return budget.read(pathOf3(context, path), "latin1");
1650
+ return budget.readDiff(pathOf3(context, path), "latin1");
1344
1651
  };
1345
1652
  const oldBytes = await read(left, leftStat);
1346
1653
  const newBytes = await read(right, rightStat);
@@ -1455,7 +1762,7 @@ async function runStored(context, budget, storage, stdinDocument) {
1455
1762
  if (options.paginate && outputSize) {
1456
1763
  const title = ["diff", ...context.args].join(" ");
1457
1764
  const argumentValues = createCommandArguments(["-f", "-h", title]);
1458
- const pages = new PagedStorage5(context, 16);
1765
+ const pages = new PagedStorage7(context, 16);
1459
1766
  context.registerCleanup?.(() => pages.close());
1460
1767
  let pageBytes = 0;
1461
1768
  try {
@@ -1484,60 +1791,6 @@ async function runStored(context, budget, storage, stdinDocument) {
1484
1791
  } else for await (const bytes of output) await writeBytes(context.stdout, bytes, context.signal);
1485
1792
  return trouble ? 2 : different ? 1 : 0;
1486
1793
  }
1487
- function globPattern(source, ignoreCase) {
1488
- source = decodeBytes2(encodeBytes4(source), "latin1");
1489
- let result = "^";
1490
- const oppositeCase = (character) => !ignoreCase ? "" : character >= "A" && character <= "Z" ? character.toLowerCase() : character >= "a" && character <= "z" ? character.toUpperCase() : "";
1491
- for (let index = 0; index < source.length; index++) {
1492
- const character = source[index];
1493
- if (character === "\\" && index + 1 < source.length) {
1494
- const literal = source[++index];
1495
- result += oppositeCase(literal) ? `[${literal}${oppositeCase(literal)}]` : `\\${literal}`;
1496
- } else if (character === "[") {
1497
- let end = index + 1;
1498
- const negated = source[end] === "!" || source[end] === "^";
1499
- if (negated) end++;
1500
- if (source[end] === "]") end++;
1501
- while (end < source.length && source[end] !== "]") {
1502
- if (source[end] === "\\" && end + 1 < source.length) end += 2;
1503
- else if (source[end] === "[" && source[end + 1] === ":") {
1504
- const classEnd = source.indexOf(":]", end + 2);
1505
- if (classEnd < 0) break;
1506
- end = classEnd + 2;
1507
- } else end++;
1508
- }
1509
- if (source[end] === "]") {
1510
- let body = "";
1511
- const literal = (value) => "\\]^-".includes(value) ? `\\${value}` : value;
1512
- for (let scan = index + 1 + Number(negated); scan < end; scan++) {
1513
- if (source[scan] === "[" && source[scan + 1] === ":") {
1514
- const closing = source.indexOf(":]", scan + 2) + 1;
1515
- body += source.slice(scan, closing + 1);
1516
- scan = closing;
1517
- continue;
1518
- }
1519
- if (source[scan] === "\\" && scan + 1 < end) scan++;
1520
- let first = source[scan];
1521
- if (ignoreCase && first >= "A" && first <= "Z") first = first.toLowerCase();
1522
- if (source[scan + 1] === "-" && scan + 2 < end) {
1523
- let last = source[scan + 2];
1524
- if (ignoreCase && last >= "A" && last <= "Z") last = last.toLowerCase();
1525
- for (let code = first.charCodeAt(0); code <= last.charCodeAt(0); code++) {
1526
- const value = String.fromCharCode(code);
1527
- body += literal(value) + oppositeCase(value);
1528
- }
1529
- scan += 2;
1530
- } else body += literal(first) + oppositeCase(first);
1531
- }
1532
- result += body ? "[" + (negated ? "^" : "") + body + "]" : negated ? "[\0-\xFF]" : "[^\0-\xFF]";
1533
- index = end;
1534
- } else result += "\\[";
1535
- } else if (character === "*") result += ".*";
1536
- else if (character === "?") result += ".";
1537
- else result += oppositeCase(character) ? `[${character}${oppositeCase(character)}]` : ".^$+(){}|]".includes(character) ? `\\${character}` : character;
1538
- }
1539
- return new Pattern(result + "$", true, false, "awk");
1540
- }
1541
1794
  async function ignoreChanges(changes, options, budget) {
1542
1795
  if (!options.ignoreBlank && !options.ignorePatterns.length) return;
1543
1796
  let scan = 0;