@poe-platform/safe-bash 0.1.815 → 0.1.817

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 (602) hide show
  1. package/dist/image-ast/index.js +1 -1
  2. package/dist/mp4-ast/codecs.d.ts +3 -0
  3. package/dist/mp4-ast/esds-source.d.ts +7 -0
  4. package/dist/mp4-ast/index.d.ts +5 -1
  5. package/dist/mp4-ast/mp4-codec-metadata.d.ts +48 -0
  6. package/dist/mp4-ast/mp4-codec-source.d.ts +8 -0
  7. package/dist/mp4-ast/mp4-packets-source.d.ts +11 -0
  8. package/dist/pdf-ast/ast.d.ts +6 -0
  9. package/dist/pdf-ast/content/evaluator.d.ts +8 -1
  10. package/dist/pdf-ast/content/stored-dictionary.d.ts +15 -1
  11. package/dist/pdf-ast/content/stored-record.d.ts +6 -0
  12. package/dist/pdf-ast/cos/retained-writer.d.ts +1 -0
  13. package/dist/pdf-ast/cos/value-parser.d.ts +7 -0
  14. package/dist/pdf-ast/edit/retained-graph.d.ts +1 -0
  15. package/dist/pdf-ast/edit/retained-page-copy.d.ts +10 -0
  16. package/dist/pdf-ast/extract/images.d.ts +2 -1
  17. package/dist/pdf-ast/fonts/resolve.d.ts +6 -1
  18. package/dist/pdf-ast/index.d.ts +2 -0
  19. package/dist/pdf-ast/index.js +1249 -473
  20. package/dist/pdf-ast/render/raster.d.ts +14 -0
  21. package/dist/pdf-ast/render/svg-image-stream.d.ts +6 -0
  22. package/dist/pdf-ast/render/svg-path-stream.d.ts +15 -0
  23. package/dist/pdf-ast/retained-document.d.ts +1 -1
  24. package/dist/safe-bash/chunks/{chunk-I6ECNJMR.js → chunk-AXGI5JVL.js} +1 -1
  25. package/dist/safe-bash/chunks/{chunk-TPG55BAQ.js → chunk-FQRI5AS5.js} +1 -1
  26. package/dist/safe-bash/chunks/{chunk-TWWGAW4M.js → chunk-HD6DWOAC.js} +1 -1
  27. package/dist/safe-bash/chunks/{chunk-5JCZEXEM.js → chunk-SXSEF5E2.js} +12 -7
  28. package/dist/safe-bash/command-chunks/biff-KLS4T7FP-UO3CXFFF.js +5581 -0
  29. package/dist/safe-bash/command-chunks/{chunk-S7HIOT7Z.js → chunk-26JE5JEB.js} +4 -4
  30. package/dist/safe-bash/command-chunks/{chunk-AG2SNMP5.js → chunk-2ALHVXEM.js} +2 -2
  31. package/dist/safe-bash/command-chunks/{chunk-4YLACJHE.js → chunk-2IMIKROX.js} +6 -6
  32. package/dist/safe-bash/command-chunks/chunk-2J4OQT3F.js +153 -0
  33. package/dist/safe-bash/command-chunks/{chunk-MYZ46FQL.js → chunk-2QZUAZTH.js} +1 -1
  34. package/dist/safe-bash/command-chunks/{chunk-YAD7EV4N.js → chunk-2TWXRJPB.js} +11 -11
  35. package/dist/safe-bash/command-chunks/{chunk-NYFYTL5G.js → chunk-345YBIHP.js} +27 -27
  36. package/dist/safe-bash/command-chunks/{chunk-3MG5EAMX.js → chunk-35DU6I2M.js} +5 -5
  37. package/dist/safe-bash/command-chunks/{chunk-FSVJ67G5.js → chunk-3DWFXESW.js} +2 -2
  38. package/dist/safe-bash/command-chunks/{chunk-TKCUGMRZ.js → chunk-3K5CVXUV.js} +18 -18
  39. package/dist/safe-bash/command-chunks/{chunk-6LPSKLLD.js → chunk-3MUFXGA2.js} +3 -3
  40. package/dist/safe-bash/command-chunks/{chunk-44F5TOHZ.js → chunk-3PM46VWH.js} +15 -15
  41. package/dist/safe-bash/command-chunks/{chunk-6QYSF7I2.js → chunk-3ZWFE4CK.js} +7 -7
  42. package/dist/safe-bash/command-chunks/{chunk-NEYITAAO.js → chunk-45DKGZYO.js} +744 -328
  43. package/dist/safe-bash/command-chunks/{chunk-U3C6IT2C.js → chunk-4772DJKS.js} +14 -10
  44. package/dist/safe-bash/command-chunks/{chunk-FOONI6BD.js → chunk-4ABR3KGK.js} +7 -7
  45. package/dist/safe-bash/command-chunks/{chunk-7KZ5LWV2.js → chunk-4IDV763L.js} +1 -1
  46. package/dist/safe-bash/command-chunks/{chunk-RV5AGXOV.js → chunk-4X2MPZXW.js} +2 -2
  47. package/dist/safe-bash/command-chunks/{chunk-LNTEV56A.js → chunk-4YFTJS5U.js} +2 -2
  48. package/dist/safe-bash/command-chunks/{chunk-6XES7Z4G.js → chunk-57PK2QFX.js} +12 -12
  49. package/dist/safe-bash/command-chunks/{chunk-42MEXZBJ.js → chunk-5GDF5FAS.js} +1 -1
  50. package/dist/safe-bash/command-chunks/{chunk-BS3ZEQGT.js → chunk-5KZMR6AJ.js} +18 -16
  51. package/dist/safe-bash/command-chunks/{chunk-ZU2KJMXO.js → chunk-5MNQTHED.js} +10 -10
  52. package/dist/safe-bash/command-chunks/{chunk-W25EIKDJ.js → chunk-5NC2IQMQ.js} +1 -1
  53. package/dist/safe-bash/command-chunks/{chunk-KY4LCHUF.js → chunk-5O45KGW5.js} +1 -1
  54. package/dist/safe-bash/command-chunks/{chunk-GYM5ICK4.js → chunk-5V7WIQ2D.js} +7 -7
  55. package/dist/safe-bash/command-chunks/{chunk-GPGLTWNR.js → chunk-5XUWGUGN.js} +16 -11
  56. package/dist/safe-bash/command-chunks/{chunk-SUTHGUD3.js → chunk-5YL453ZF.js} +34 -34
  57. package/dist/safe-bash/command-chunks/{chunk-IHXZMAMY.js → chunk-62RG3GHF.js} +6 -6
  58. package/dist/safe-bash/command-chunks/{chunk-P2LT6TGR.js → chunk-6EZWG56T.js} +9 -9
  59. package/dist/safe-bash/command-chunks/{chunk-CCMAHM3I.js → chunk-6JGICYHP.js} +2 -2
  60. package/dist/safe-bash/command-chunks/{chunk-AWPI4DZR.js → chunk-6KJDTKE4.js} +3 -3
  61. package/dist/safe-bash/command-chunks/{chunk-FUQMEUAT.js → chunk-6M3JTPKE.js} +8 -8
  62. package/dist/safe-bash/command-chunks/{chunk-H33D4R26.js → chunk-6RLWPB44.js} +4 -4
  63. package/dist/safe-bash/command-chunks/{chunk-3GRMU7TM.js → chunk-6W4RMBFH.js} +6 -6
  64. package/dist/safe-bash/command-chunks/{chunk-RIVKF77R.js → chunk-6YF2QADH.js} +6 -6
  65. package/dist/safe-bash/command-chunks/{chunk-LEO4VRIN.js → chunk-77ROD2TR.js} +5 -5
  66. package/dist/safe-bash/command-chunks/{chunk-XNGM3W5R.js → chunk-7B2MHKIW.js} +1 -1
  67. package/dist/safe-bash/command-chunks/{chunk-RFMHNTTF.js → chunk-7OCTMVYJ.js} +1 -1
  68. package/dist/safe-bash/command-chunks/{chunk-DBLQUZGN.js → chunk-7PYDVQPB.js} +2 -2
  69. package/dist/safe-bash/command-chunks/{chunk-AM5LANIE.js → chunk-A2L3U7DW.js} +7 -7
  70. package/dist/safe-bash/command-chunks/{chunk-UYGQEQIP.js → chunk-A4P37F3P.js} +5 -5
  71. package/dist/safe-bash/command-chunks/{chunk-ADHFF2IM.js → chunk-A5SPMSKD.js} +9 -9
  72. package/dist/safe-bash/command-chunks/{chunk-ENEIE44W.js → chunk-A6OTPNNI.js} +3 -3
  73. package/dist/safe-bash/command-chunks/{chunk-HQ2UN2L2.js → chunk-ABL2DPJI.js} +27 -27
  74. package/dist/safe-bash/command-chunks/chunk-AF2IO57Q.js +733 -0
  75. package/dist/safe-bash/command-chunks/{chunk-AFPXADZG.js → chunk-AHD3CGAY.js} +4 -4
  76. package/dist/safe-bash/command-chunks/{chunk-YW2VYN4V.js → chunk-ALD53QFL.js} +74 -27
  77. package/dist/safe-bash/command-chunks/{chunk-4B2ZUGLT.js → chunk-ARE267HR.js} +5 -5
  78. package/dist/safe-bash/command-chunks/{chunk-OTF2AJ5M.js → chunk-AYQPJQJR.js} +6 -6
  79. package/dist/safe-bash/command-chunks/{chunk-2VVJRVYM.js → chunk-B6XTAKKQ.js} +1 -1
  80. package/dist/safe-bash/command-chunks/{chunk-GCHB7VNX.js → chunk-BIJW6QWB.js} +17 -17
  81. package/dist/safe-bash/command-chunks/{chunk-OVEPYULA.js → chunk-BKK4MS3V.js} +1 -1
  82. package/dist/safe-bash/command-chunks/{chunk-3EB2FSAN.js → chunk-BOVDUJ3A.js} +7 -7
  83. package/dist/safe-bash/command-chunks/{chunk-SEPUP6TZ.js → chunk-BSTABZIK.js} +1 -1
  84. package/dist/safe-bash/command-chunks/{chunk-ATHHWPSE.js → chunk-BZRWZ6GO.js} +1 -1
  85. package/dist/safe-bash/command-chunks/{chunk-BZMNC7Q5.js → chunk-CGJ7GMHO.js} +7 -7
  86. package/dist/safe-bash/command-chunks/{chunk-RGDOYWOD.js → chunk-CHZE6FNT.js} +2 -2
  87. package/dist/safe-bash/command-chunks/{chunk-V7E3PZOK.js → chunk-CKA7ZROU.js} +7 -7
  88. package/dist/safe-bash/command-chunks/{chunk-MEM2ZPMI.js → chunk-CKIXC7AO.js} +3 -3
  89. package/dist/safe-bash/command-chunks/{chunk-Y54L4P4J.js → chunk-CORUUCS2.js} +5 -5
  90. package/dist/safe-bash/command-chunks/{chunk-6ZGCKUAM.js → chunk-DIRK47GT.js} +1 -1
  91. package/dist/safe-bash/command-chunks/{chunk-WYZG3DRR.js → chunk-DM5WURQL.js} +2 -2
  92. package/dist/safe-bash/command-chunks/{chunk-EBHOZIBS.js → chunk-DOVWHVHI.js} +6 -6
  93. package/dist/safe-bash/command-chunks/{chunk-ZIGENXGC.js → chunk-DXOXUKQB.js} +8 -8
  94. package/dist/safe-bash/command-chunks/{chunk-JR3Q6QNL.js → chunk-DZOKH5BL.js} +7 -7
  95. package/dist/safe-bash/command-chunks/{chunk-6EINUY5G.js → chunk-E22EAYJN.js} +54 -12
  96. package/dist/safe-bash/command-chunks/{chunk-3EASXF5D.js → chunk-E4TF5W6O.js} +2 -2
  97. package/dist/safe-bash/command-chunks/{chunk-6CDDKNNA.js → chunk-E64ZI2YB.js} +155 -12
  98. package/dist/safe-bash/command-chunks/{chunk-MLOYUXUV.js → chunk-EJ4UP7DA.js} +31 -9
  99. package/dist/safe-bash/command-chunks/{chunk-USGZN2KE.js → chunk-ENMJHB2C.js} +5 -5
  100. package/dist/safe-bash/command-chunks/{chunk-ZSQZHFWS.js → chunk-ERWIJYCS.js} +7 -7
  101. package/dist/safe-bash/command-chunks/{chunk-S2QNBAN6.js → chunk-ET6LMDEX.js} +12 -12
  102. package/dist/safe-bash/command-chunks/{chunk-6XGDWFNQ.js → chunk-EWC56JNI.js} +5 -5
  103. package/dist/safe-bash/command-chunks/{chunk-EQWFKNHJ.js → chunk-EZDWPTYB.js} +19 -19
  104. package/dist/safe-bash/command-chunks/{chunk-CQBACD2V.js → chunk-F2NF6FHV.js} +2 -2
  105. package/dist/safe-bash/command-chunks/{chunk-NFII726L.js → chunk-FAU2KL6I.js} +2 -2
  106. package/dist/safe-bash/command-chunks/{chunk-4EHY6J2Z.js → chunk-FB2WPI3M.js} +5 -5
  107. package/dist/safe-bash/command-chunks/{chunk-2PKBXGXD.js → chunk-FEBTT5NH.js} +5 -5
  108. package/dist/safe-bash/command-chunks/chunk-FGARVKAX.js +704 -0
  109. package/dist/safe-bash/command-chunks/{chunk-N4MUBJCT.js → chunk-FGHSE3RZ.js} +1 -1
  110. package/dist/safe-bash/command-chunks/{chunk-WBKB7HBZ.js → chunk-FHQOFEQK.js} +8 -8
  111. package/dist/safe-bash/command-chunks/{chunk-3ZRCL756.js → chunk-FJLSYX5P.js} +7 -7
  112. package/dist/safe-bash/command-chunks/{chunk-PMWW7KSB.js → chunk-FJSD43VF.js} +1 -1
  113. package/dist/safe-bash/command-chunks/{chunk-XKAUKLF7.js → chunk-FLSXHLJG.js} +9 -9
  114. package/dist/safe-bash/command-chunks/{chunk-3EW7GYHM.js → chunk-FR63MJSO.js} +7 -7
  115. package/dist/safe-bash/command-chunks/{chunk-KRRG4MGH.js → chunk-FSG6UC2N.js} +246 -108
  116. package/dist/safe-bash/command-chunks/{chunk-NRFTYZ2R.js → chunk-FUYZUETI.js} +6 -6
  117. package/dist/safe-bash/command-chunks/{chunk-JUHOL5KB.js → chunk-G3FK5VVG.js} +1 -1
  118. package/dist/safe-bash/command-chunks/{chunk-4UPKVQWH.js → chunk-G3LUT475.js} +6 -6
  119. package/dist/safe-bash/command-chunks/{chunk-Q7UZTMF4.js → chunk-GAROGIVU.js} +1 -1
  120. package/dist/safe-bash/command-chunks/{chunk-4RRYWHED.js → chunk-GMBUOYTN.js} +4 -4
  121. package/dist/safe-bash/command-chunks/{chunk-FYYFV6PW.js → chunk-GR4ONCQ5.js} +6 -6
  122. package/dist/safe-bash/command-chunks/{chunk-XTEIT5CI.js → chunk-GTOMW4VV.js} +1 -1
  123. package/dist/safe-bash/command-chunks/{chunk-OVQP6KH5.js → chunk-H56BSMFQ.js} +6 -6
  124. package/dist/safe-bash/command-chunks/{chunk-RQYPFLZJ.js → chunk-HOJ7WDTS.js} +6 -6
  125. package/dist/safe-bash/command-chunks/{chunk-BLIFGBIO.js → chunk-HOKPYTHQ.js} +2 -2
  126. package/dist/safe-bash/command-chunks/chunk-HQEYSSZV.js +152 -0
  127. package/dist/safe-bash/command-chunks/{chunk-NEMUPUUB.js → chunk-ICJH6A73.js} +7 -7
  128. package/dist/safe-bash/command-chunks/{chunk-CSE4VQKG.js → chunk-IJE65P52.js} +3 -3
  129. package/dist/safe-bash/command-chunks/{chunk-MKOIPOXX.js → chunk-IOXMGD2H.js} +3 -3
  130. package/dist/safe-bash/command-chunks/{chunk-LDW3RF7Y.js → chunk-ISFGPCED.js} +12 -12
  131. package/dist/safe-bash/command-chunks/{chunk-S43QRKDC.js → chunk-IVKAFEPO.js} +7 -7
  132. package/dist/safe-bash/command-chunks/{chunk-A347DLRB.js → chunk-IWVANZWH.js} +3 -3
  133. package/dist/safe-bash/command-chunks/{chunk-ZXELXF2H.js → chunk-IZ3SD5S2.js} +4 -4
  134. package/dist/safe-bash/command-chunks/{chunk-HGIMFVI2.js → chunk-J6FNSVHT.js} +5 -5
  135. package/dist/safe-bash/command-chunks/{chunk-GLAF45M7.js → chunk-JA36YOZI.js} +1 -1
  136. package/dist/safe-bash/command-chunks/{chunk-WHNYT34N.js → chunk-K2R7H3KO.js} +1 -1
  137. package/dist/safe-bash/command-chunks/{chunk-CKEMZUE3.js → chunk-KDBU5Q2N.js} +6 -6
  138. package/dist/safe-bash/command-chunks/{chunk-6VBDJC6V.js → chunk-KDDXLHN7.js} +6 -6
  139. package/dist/safe-bash/command-chunks/{chunk-NEVQWOU6.js → chunk-KLAC2MIZ.js} +10 -10
  140. package/dist/safe-bash/command-chunks/{chunk-QGD64UHJ.js → chunk-KLCHCSIV.js} +1 -1
  141. package/dist/safe-bash/command-chunks/{chunk-CXME4YHU.js → chunk-KM2SMMXZ.js} +59 -201
  142. package/dist/safe-bash/command-chunks/{chunk-RHU44OMN.js → chunk-KXM3HTAF.js} +1 -1
  143. package/dist/safe-bash/command-chunks/{chunk-AVOGFREX.js → chunk-KYIGYYEY.js} +3 -3
  144. package/dist/safe-bash/command-chunks/{chunk-5OM3UIK3.js → chunk-L2VLASZ4.js} +3 -3
  145. package/dist/safe-bash/command-chunks/{chunk-Z7QOSXQC.js → chunk-LECGQSQW.js} +7 -7
  146. package/dist/safe-bash/command-chunks/{chunk-RXQ2G2YK.js → chunk-LFSWLJPR.js} +9 -9
  147. package/dist/safe-bash/command-chunks/{chunk-OSYY6E23.js → chunk-LJ3UYESS.js} +1 -1
  148. package/dist/safe-bash/command-chunks/{chunk-MVLVIMJ6.js → chunk-LMLBQSAM.js} +6 -6
  149. package/dist/safe-bash/command-chunks/{chunk-MGMTRGKM.js → chunk-LNAZ3E4Q.js} +4 -4
  150. package/dist/safe-bash/command-chunks/{chunk-WJ2ERUCQ.js → chunk-LNKZVU5V.js} +1 -1
  151. package/dist/safe-bash/command-chunks/{chunk-WWHMI4S3.js → chunk-LQDANF2B.js} +8 -8
  152. package/dist/safe-bash/command-chunks/{chunk-CIRDVCAZ.js → chunk-LQX7RAF7.js} +7 -7
  153. package/dist/safe-bash/command-chunks/{chunk-SWAKALDJ.js → chunk-LT2YCGC5.js} +10 -10
  154. package/dist/safe-bash/command-chunks/{chunk-Y7AXMCFV.js → chunk-LZY46GYY.js} +8 -8
  155. package/dist/safe-bash/command-chunks/{chunk-VT2PHQ63.js → chunk-MDFNUNK5.js} +15 -15
  156. package/dist/safe-bash/command-chunks/{chunk-YP3WWV5N.js → chunk-MN3BB4WW.js} +4 -4
  157. package/dist/safe-bash/command-chunks/{chunk-WTVJLHMG.js → chunk-MOUCMZZP.js} +1 -1
  158. package/dist/safe-bash/command-chunks/{chunk-IB5QP4LF.js → chunk-MQE77MEQ.js} +3 -3
  159. package/dist/safe-bash/command-chunks/{chunk-FSYMSWJU.js → chunk-MUTARE5I.js} +6 -6
  160. package/dist/safe-bash/command-chunks/{chunk-F762XDNG.js → chunk-MZYQKH26.js} +3 -3
  161. package/dist/safe-bash/command-chunks/{chunk-N6G3345Q.js → chunk-N32AP43V.js} +7 -7
  162. package/dist/safe-bash/command-chunks/{chunk-XU6S3XUZ.js → chunk-N35IJXBK.js} +9 -9
  163. package/dist/safe-bash/command-chunks/{chunk-EVYKV3QI.js → chunk-N3ZH4YYH.js} +3 -3
  164. package/dist/safe-bash/command-chunks/{chunk-VUWXLH3E.js → chunk-N4HWOLGZ.js} +2 -2
  165. package/dist/safe-bash/command-chunks/{chunk-WAT2562G.js → chunk-N5J3IZZK.js} +8042 -7189
  166. package/dist/safe-bash/command-chunks/{chunk-W3ZSWK76.js → chunk-NCNHJRIY.js} +8 -8
  167. package/dist/safe-bash/command-chunks/{chunk-FXCSPPYE.js → chunk-NDALIHKK.js} +20 -20
  168. package/dist/safe-bash/command-chunks/{chunk-BS5JEUEW.js → chunk-NKK76B4V.js} +8 -8
  169. package/dist/safe-bash/command-chunks/{chunk-4EZJV4FZ.js → chunk-NLCUQD7Y.js} +1 -1
  170. package/dist/safe-bash/command-chunks/{chunk-G2COZLXX.js → chunk-OBIXFO25.js} +10 -10
  171. package/dist/safe-bash/command-chunks/{chunk-47IAU25U.js → chunk-OCV5ZU35.js} +3 -3
  172. package/dist/safe-bash/command-chunks/{chunk-3YEQI5B7.js → chunk-OFDJJRAD.js} +9 -9
  173. package/dist/safe-bash/command-chunks/{chunk-VDTFVRYX.js → chunk-OFONWWEZ.js} +2 -2
  174. package/dist/safe-bash/command-chunks/{chunk-F4YFTO2K.js → chunk-OHEZQ4QA.js} +9 -9
  175. package/dist/safe-bash/command-chunks/{chunk-JW6WVNTM.js → chunk-OIHQXURE.js} +1 -1
  176. package/dist/safe-bash/command-chunks/{chunk-ZTMZO4IT.js → chunk-ONQP4FNV.js} +1 -1
  177. package/dist/safe-bash/command-chunks/{chunk-K2WOMJOQ.js → chunk-OVUY46QF.js} +1 -1
  178. package/dist/safe-bash/command-chunks/{chunk-DGBQ7QDE.js → chunk-OWCBX5M2.js} +1 -1
  179. package/dist/safe-bash/command-chunks/{chunk-LKGTH2Q7.js → chunk-P462JTNT.js} +5 -5
  180. package/dist/safe-bash/command-chunks/{chunk-5LFGXN3D.js → chunk-P4OWVKMD.js} +6 -6
  181. package/dist/safe-bash/command-chunks/{chunk-46AMTJPE.js → chunk-POGVOCOB.js} +8 -8
  182. package/dist/safe-bash/command-chunks/{chunk-PLMF35XK.js → chunk-PPN53PX3.js} +4 -4
  183. package/dist/safe-bash/command-chunks/{chunk-V5XC43BX.js → chunk-PRO7JOIH.js} +8 -8
  184. package/dist/safe-bash/command-chunks/{chunk-UJERQEJB.js → chunk-PU5DMQGG.js} +1 -1
  185. package/dist/safe-bash/command-chunks/{chunk-IWHNRYER.js → chunk-Q65GWGQR.js} +3 -3
  186. package/dist/safe-bash/command-chunks/{chunk-BLGGAHQW.js → chunk-QCIAX6HZ.js} +1 -1
  187. package/dist/safe-bash/command-chunks/{chunk-ET5SFGRH.js → chunk-QDV2NIFR.js} +1 -1
  188. package/dist/safe-bash/command-chunks/{chunk-Y42KSX63.js → chunk-QMBMZSJF.js} +6 -6
  189. package/dist/safe-bash/command-chunks/{chunk-KUOCGGEU.js → chunk-QNETPOMH.js} +6 -5
  190. package/dist/safe-bash/command-chunks/{chunk-QB72X7FF.js → chunk-QNX5LZBK.js} +7 -7
  191. package/dist/safe-bash/command-chunks/{chunk-LZ2JFMKT.js → chunk-QOKFSYD5.js} +9 -9
  192. package/dist/safe-bash/command-chunks/{chunk-7DOLY7IV.js → chunk-R7LF4XQV.js} +2 -2
  193. package/dist/safe-bash/command-chunks/{chunk-MPXMRTMY.js → chunk-ROQ3VNVX.js} +8 -8
  194. package/dist/safe-bash/command-chunks/{chunk-6WNVGCXD.js → chunk-RRAQII52.js} +5 -5
  195. package/dist/safe-bash/command-chunks/{chunk-2BNGPR6Z.js → chunk-RTHYAGKI.js} +2 -2
  196. package/dist/safe-bash/command-chunks/chunk-RTKDZBJS.js +816 -0
  197. package/dist/safe-bash/command-chunks/{chunk-JVKE7YZN.js → chunk-RVWIEXR7.js} +4 -4
  198. package/dist/safe-bash/command-chunks/{chunk-XM5QJCPD.js → chunk-S5ER73EA.js} +8 -8
  199. package/dist/safe-bash/command-chunks/{chunk-FGGHYUWR.js → chunk-S5X7PBO4.js} +102 -7
  200. package/dist/safe-bash/command-chunks/{chunk-YRPXBGRX.js → chunk-SBXS4S6Y.js} +3 -3
  201. package/dist/safe-bash/command-chunks/{chunk-HI6ZYH3W.js → chunk-SHLT5R64.js} +9 -9
  202. package/dist/safe-bash/command-chunks/{chunk-Q5PWYPQV.js → chunk-SICTBSLW.js} +7 -7
  203. package/dist/safe-bash/command-chunks/{chunk-AXXZNB7U.js → chunk-SL4LD25A.js} +9 -9
  204. package/dist/safe-bash/command-chunks/{chunk-JGKSWDGP.js → chunk-SNA2LVBX.js} +1 -1
  205. package/dist/safe-bash/command-chunks/{chunk-TXPDKEGY.js → chunk-SWIF6BBY.js} +8 -8
  206. package/dist/safe-bash/command-chunks/{chunk-PS5GDFIP.js → chunk-T2FRXSQT.js} +2 -2
  207. package/dist/safe-bash/command-chunks/{chunk-HELAVGZH.js → chunk-T4SEQU66.js} +3 -3
  208. package/dist/safe-bash/command-chunks/{chunk-3SPLP2DB.js → chunk-T5OQ53XS.js} +1 -1
  209. package/dist/safe-bash/command-chunks/{chunk-KBAQHE5Y.js → chunk-TG2RVQLP.js} +2 -2
  210. package/dist/safe-bash/command-chunks/{chunk-IHLZ6HNQ.js → chunk-TSKJNCKD.js} +3 -2
  211. package/dist/safe-bash/command-chunks/{chunk-CZ5K2YPU.js → chunk-TXU7MMHN.js} +24 -24
  212. package/dist/safe-bash/command-chunks/{chunk-TYPS5MOU.js → chunk-TXWDR2P4.js} +1 -1
  213. package/dist/safe-bash/command-chunks/{chunk-ETXPMVR6.js → chunk-TY7JXEWI.js} +11 -11
  214. package/dist/safe-bash/command-chunks/{chunk-X6OHFKBL.js → chunk-U42WHQRH.js} +8 -8
  215. package/dist/safe-bash/command-chunks/{chunk-Z2WNYEPD.js → chunk-UFLMOU3B.js} +4 -4
  216. package/dist/safe-bash/command-chunks/{chunk-2BLTUQNK.js → chunk-UJYXSLM6.js} +2 -2
  217. package/dist/safe-bash/command-chunks/{chunk-Q7TVCBU2.js → chunk-UKAGRRLZ.js} +1 -1
  218. package/dist/safe-bash/command-chunks/{chunk-4GQKCUS5.js → chunk-UPWLHHZ2.js} +13 -13
  219. package/dist/safe-bash/command-chunks/{chunk-5L4YGRQU.js → chunk-URQSUMMJ.js} +4 -4
  220. package/dist/safe-bash/command-chunks/{chunk-KPHLESD4.js → chunk-UT5X6QRU.js} +5 -5
  221. package/dist/safe-bash/command-chunks/{chunk-QDVDBN2N.js → chunk-UYZ6EFZE.js} +164 -47
  222. package/dist/safe-bash/command-chunks/{chunk-T5S4SJGO.js → chunk-V6JPIZUW.js} +7 -7
  223. package/dist/safe-bash/command-chunks/{chunk-MKK6FM5H.js → chunk-VMZIAFVJ.js} +11 -11
  224. package/dist/safe-bash/command-chunks/{chunk-HK6MSB7Z.js → chunk-VNNNVT4C.js} +5 -5
  225. package/dist/safe-bash/command-chunks/{chunk-ROL5AEX6.js → chunk-VVV45NLY.js} +1 -1
  226. package/dist/safe-bash/command-chunks/chunk-VVWHFNHD.js +502 -0
  227. package/dist/safe-bash/command-chunks/{chunk-KCLJGRU7.js → chunk-VZTVR3JI.js} +12 -12
  228. package/dist/safe-bash/command-chunks/{chunk-B2C3UPJS.js → chunk-W42SUPD6.js} +13 -1
  229. package/dist/safe-bash/command-chunks/{chunk-PLR5IULU.js → chunk-WDVPHDBH.js} +5 -5
  230. package/dist/safe-bash/command-chunks/{chunk-MNK3DDH6.js → chunk-WH624PKJ.js} +2 -2
  231. package/dist/safe-bash/command-chunks/{chunk-TJLXSENN.js → chunk-WHZ6XK7Y.js} +1 -1
  232. package/dist/safe-bash/command-chunks/{chunk-DN6MSXY7.js → chunk-WIW3KDBS.js} +2 -2
  233. package/dist/safe-bash/command-chunks/{chunk-GXMPXMDP.js → chunk-WMBELKPP.js} +11 -11
  234. package/dist/safe-bash/command-chunks/{chunk-NHNZYWPW.js → chunk-WMV5224N.js} +3 -3
  235. package/dist/safe-bash/command-chunks/{chunk-RTNI47C5.js → chunk-WOL3LBXE.js} +4 -4
  236. package/dist/safe-bash/command-chunks/{chunk-7SOE7XIS.js → chunk-WVD5WZXD.js} +5 -5
  237. package/dist/safe-bash/command-chunks/{chunk-XMTR7QGL.js → chunk-X42MJT2J.js} +4 -4
  238. package/dist/safe-bash/command-chunks/{chunk-XUJAQA3S.js → chunk-XBWD6SI3.js} +33 -33
  239. package/dist/safe-bash/command-chunks/{chunk-ZQM37BGE.js → chunk-XFIDOCYH.js} +2 -2
  240. package/dist/safe-bash/command-chunks/{chunk-IBYMPAUW.js → chunk-XPQUUFQD.js} +2 -2
  241. package/dist/safe-bash/command-chunks/{chunk-NQINS4XY.js → chunk-XVEI4HZL.js} +1 -1
  242. package/dist/safe-bash/command-chunks/{chunk-KSBNZTAZ.js → chunk-YKODRSGT.js} +6 -6
  243. package/dist/safe-bash/command-chunks/{chunk-WZRFS5OY.js → chunk-YXR4JE4U.js} +4 -4
  244. package/dist/safe-bash/command-chunks/{chunk-DCMSPMMD.js → chunk-Z7UIOPHJ.js} +1 -1
  245. package/dist/safe-bash/command-chunks/{chunk-AY3KQ4EN.js → chunk-ZAYTFXUX.js} +7 -7
  246. package/dist/safe-bash/command-chunks/chunk-ZHHALBM7.js +398 -0
  247. package/dist/safe-bash/command-chunks/{chunk-DZH54L3F.js → chunk-ZM7HMBAJ.js} +10 -10
  248. package/dist/safe-bash/command-chunks/{chunk-NFGCBQN3.js → chunk-ZNCPIZCN.js} +2 -2
  249. package/dist/safe-bash/command-chunks/{chunk-HKGNBH7Z.js → chunk-ZRHKXN6W.js} +4 -4
  250. package/dist/safe-bash/command-chunks/{chunk-A45UG4KT.js → chunk-ZZERSKAR.js} +5 -5
  251. package/dist/safe-bash/command-chunks/{clipboard-BBDK33GP-QZ4ERNQX.js → clipboard-BBDK33GP-VB22F7GI.js} +2 -2
  252. package/dist/safe-bash/command-chunks/{command-engine-M7S4QIXV.js → command-engine-2QXVRRH3.js} +59 -23
  253. package/dist/safe-bash/command-chunks/{engine-YUYZJIB4-NZUDFEHL.js → engine-T4GP6QOK-ECFKMR5V.js} +1 -1
  254. package/dist/safe-bash/command-chunks/{gnumeric-UJPXWBVR-7VOHQAPM.js → gnumeric-UJPXWBVR-YPXTNEDZ.js} +2 -2
  255. package/dist/safe-bash/command-chunks/model-store-I7YAWL5V.js +54 -0
  256. package/dist/safe-bash/command-chunks/odf-SL5TG4B3-XI3FNOTN.js +3041 -0
  257. package/dist/safe-bash/command-chunks/{xlsx-RE54MFCS-DI3F765V.js → xlsx-RE54MFCS-4UZ5W3U7.js} +1 -1
  258. package/dist/safe-bash/commands/bc/index.browser.js +1 -1
  259. package/dist/safe-bash/full-core.browser.js +4 -4
  260. package/dist/safe-bash/plugins/index.browser.js +3 -3
  261. package/dist/safe-bash/registry-entry.browser.js +2 -2
  262. package/dist/safe-bash/search.browser.js +1 -1
  263. package/dist/safe-bash/shell/runtime.d.ts +1 -0
  264. package/dist/safe-bash/shell/runtime.js +12 -3
  265. package/dist/safe-bash/shell/sync-extra-evaluators.js +7 -4
  266. package/dist/safe-bash/shell-entry.browser.js +2 -2
  267. package/dist/safe-bash-command-apply-patch/apply.js +1 -1
  268. package/dist/safe-bash-command-apply-patch/index.js +1 -1
  269. package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
  270. package/dist/safe-bash-command-awk/awk.js +4 -4
  271. package/dist/safe-bash-command-awk/index.js +4 -4
  272. package/dist/safe-bash-command-cp/index.js +3 -3
  273. package/dist/safe-bash-command-csvkit/index.js +1 -1
  274. package/dist/safe-bash-command-diff/diff.js +2 -2
  275. package/dist/safe-bash-command-diff/index.js +3 -3
  276. package/dist/safe-bash-command-diff/sync.js +2 -2
  277. package/dist/safe-bash-command-factor/command.js +2 -2
  278. package/dist/safe-bash-command-factor/index.js +2 -2
  279. package/dist/safe-bash-command-ffmpeg/index.js +1 -1
  280. package/dist/safe-bash-command-ffprobe/index.js +2 -2
  281. package/dist/safe-bash-command-ffprobe/media.d.ts +5 -1
  282. package/dist/safe-bash-command-ffprobe/media.js +2 -2
  283. package/dist/safe-bash-command-getopt/command.js +2 -2
  284. package/dist/safe-bash-command-getopt/index.js +2 -2
  285. package/dist/safe-bash-command-html-to-markdown/index.js +51 -813
  286. package/dist/safe-bash-command-html-to-markdown/stored-destination.d.ts +8 -0
  287. package/dist/safe-bash-command-html-to-markdown/stored-destination.js +10 -0
  288. package/dist/safe-bash-command-html-to-markdown/stored-text.d.ts +4 -1
  289. package/dist/safe-bash-command-html-to-markdown/stored-text.js +1 -1
  290. package/dist/safe-bash-command-htmlq/index.js +1280 -419
  291. package/dist/safe-bash-command-iconv/command.js +2 -2
  292. package/dist/safe-bash-command-iconv/index.js +2 -2
  293. package/dist/safe-bash-command-llm/index.js +2 -2
  294. package/dist/safe-bash-command-llm/openai.js +2 -2
  295. package/dist/safe-bash-command-llm/providers/index.js +2 -2
  296. package/dist/safe-bash-command-llm/providers/openai.js +2 -2
  297. package/dist/safe-bash-command-node/commands/node/browser.js +4 -4
  298. package/dist/safe-bash-command-node/commands/node/default-runtime.js +4 -4
  299. package/dist/safe-bash-command-node/commands/node/safejs.js +4 -4
  300. package/dist/safe-bash-command-pandoc/command.js +10 -9
  301. package/dist/safe-bash-command-pandoc/index.js +60 -59
  302. package/dist/safe-bash-command-patch/index.js +6 -6
  303. package/dist/safe-bash-command-patch/patch-formats.js +3 -3
  304. package/dist/safe-bash-command-patch/patch-gnu-reject.js +1 -1
  305. package/dist/safe-bash-command-patch/patch.js +6 -6
  306. package/dist/safe-bash-command-patch/stored-patch.d.ts +7 -6
  307. package/dist/safe-bash-command-patch/unified.d.ts +5 -5
  308. package/dist/safe-bash-command-patch/unified.js +2 -2
  309. package/dist/safe-bash-command-pdftk/index.js +21 -108
  310. package/dist/safe-bash-command-pdftoppm/index.js +131 -27
  311. package/dist/safe-bash-command-playwright-cli/index.js +12 -12
  312. package/dist/safe-bash-command-playwright-cli/playwright/abilities.js +1 -1
  313. package/dist/safe-bash-command-playwright-cli/playwright/capability-events.js +1 -1
  314. package/dist/safe-bash-command-playwright-cli/playwright/capability-result.js +1 -1
  315. package/dist/safe-bash-command-playwright-cli/playwright/controller.js +7 -7
  316. package/dist/safe-bash-command-playwright-cli/playwright/download-capabilities.js +1 -1
  317. package/dist/safe-bash-command-playwright-cli/playwright/drop-capability.js +1 -1
  318. package/dist/safe-bash-command-playwright-cli/playwright/index.js +12 -12
  319. package/dist/safe-bash-command-playwright-cli/playwright/modal-capabilities.js +1 -1
  320. package/dist/safe-bash-command-playwright-cli/playwright/native-evaluation.js +1 -1
  321. package/dist/safe-bash-command-playwright-cli/playwright/native-json-snapshot.js +1 -1
  322. package/dist/safe-bash-command-playwright-cli/playwright/native-snapshot.js +1 -1
  323. package/dist/safe-bash-command-playwright-cli/playwright/open-options.js +2 -2
  324. package/dist/safe-bash-command-playwright-cli/playwright/profile.js +3 -3
  325. package/dist/safe-bash-command-playwright-cli/playwright/recording-capabilities.js +1 -1
  326. package/dist/safe-bash-command-playwright-cli/playwright/route-capabilities.js +1 -1
  327. package/dist/safe-bash-command-playwright-cli/playwright/snapshot.js +3 -3
  328. package/dist/safe-bash-command-playwright-cli/playwright/standard-capabilities.js +1 -1
  329. package/dist/safe-bash-command-playwright-cli/playwright/storage-capabilities.js +1 -1
  330. package/dist/safe-bash-command-playwright-cli/playwright/tracing-capabilities.js +1 -1
  331. package/dist/safe-bash-command-playwright-cli/playwright/webmcp-capabilities.js +1 -1
  332. package/dist/safe-bash-command-pptx/engine.js +1 -1
  333. package/dist/safe-bash-command-python/executor.js +11 -11
  334. package/dist/safe-bash-command-python/index.js +11 -11
  335. package/dist/safe-bash-command-python/jspi.js +2 -2
  336. package/dist/safe-bash-command-rg/index.js +3 -3
  337. package/dist/safe-bash-command-rg/rg-command.js +3 -3
  338. package/dist/safe-bash-command-safejs/index.js +4 -4
  339. package/dist/safe-bash-command-safejs/io.js +3 -3
  340. package/dist/safe-bash-command-safejs/render.js +2 -2
  341. package/dist/safe-bash-command-safejs/runtime.js +4 -4
  342. package/dist/safe-bash-command-soffice/index.js +5 -4
  343. package/dist/safe-bash-command-sort/index.js +3 -3
  344. package/dist/safe-bash-command-ssconvert/index.js +13 -13
  345. package/dist/safe-bash-command-tar/create.js +3 -3
  346. package/dist/safe-bash-command-tar/extract.js +3 -3
  347. package/dist/safe-bash-command-tar/index.js +7 -7
  348. package/dist/safe-bash-command-tar/modes.js +5 -5
  349. package/dist/safe-bash-command-unzip/index.js +2 -2
  350. package/dist/safe-bash-command-unzip/unzip.js +2 -2
  351. package/dist/safe-bash-command-xmllint/index.js +1 -1
  352. package/dist/safe-bash-command-xz/index.js +5 -5
  353. package/dist/safe-bash-compression-engine/files.js +5 -5
  354. package/dist/safe-bash-compression-engine/index.js +3 -3
  355. package/dist/safe-bash-compression-engine/operand.js +6 -6
  356. package/dist/safe-bash-compression-engine/stream.js +3 -3
  357. package/dist/safe-bash-compression-engine/zstd-decode.js +2 -2
  358. package/dist/safe-bash-contracts/escaping.js +3 -3
  359. package/dist/safe-bash-contracts/filesystem-output.js +3 -3
  360. package/dist/safe-bash-contracts/index.js +10 -10
  361. package/dist/safe-bash-docx-engine/ancillary-resources.js +9 -9
  362. package/dist/safe-bash-docx-engine/batch-operations.js +66 -66
  363. package/dist/safe-bash-docx-engine/batch-result-schema.js +78 -78
  364. package/dist/safe-bash-docx-engine/batch.js +77 -77
  365. package/dist/safe-bash-docx-engine/bookmarks.js +17 -17
  366. package/dist/safe-bash-docx-engine/charts.js +10 -10
  367. package/dist/safe-bash-docx-engine/command-option-rules.js +5 -5
  368. package/dist/safe-bash-docx-engine/command-properties.js +3 -3
  369. package/dist/safe-bash-docx-engine/comments.js +25 -25
  370. package/dist/safe-bash-docx-engine/control-bindings.js +20 -20
  371. package/dist/safe-bash-docx-engine/control-repeat.js +20 -20
  372. package/dist/safe-bash-docx-engine/controls.js +18 -18
  373. package/dist/safe-bash-docx-engine/create.js +10 -10
  374. package/dist/safe-bash-docx-engine/diagrams.js +10 -10
  375. package/dist/safe-bash-docx-engine/diff.js +12 -12
  376. package/dist/safe-bash-docx-engine/document-properties.js +15 -15
  377. package/dist/safe-bash-docx-engine/equations.js +16 -16
  378. package/dist/safe-bash-docx-engine/extract.js +13 -13
  379. package/dist/safe-bash-docx-engine/fields.js +22 -22
  380. package/dist/safe-bash-docx-engine/font-inventory.js +17 -17
  381. package/dist/safe-bash-docx-engine/font-resources.js +5 -5
  382. package/dist/safe-bash-docx-engine/image-batch-operations.js +13 -13
  383. package/dist/safe-bash-docx-engine/image-insertion.js +20 -20
  384. package/dist/safe-bash-docx-engine/image-layout.js +18 -18
  385. package/dist/safe-bash-docx-engine/image-replacement.js +21 -21
  386. package/dist/safe-bash-docx-engine/images.js +18 -18
  387. package/dist/safe-bash-docx-engine/index.js +113 -113
  388. package/dist/safe-bash-docx-engine/inspection.js +19 -19
  389. package/dist/safe-bash-docx-engine/invocation.js +8 -8
  390. package/dist/safe-bash-docx-engine/io.js +8 -8
  391. package/dist/safe-bash-docx-engine/links.js +20 -20
  392. package/dist/safe-bash-docx-engine/lists.js +19 -19
  393. package/dist/safe-bash-docx-engine/locations.js +14 -14
  394. package/dist/safe-bash-docx-engine/notes.js +21 -21
  395. package/dist/safe-bash-docx-engine/objects.js +18 -18
  396. package/dist/safe-bash-docx-engine/operation-json-schema.js +3 -3
  397. package/dist/safe-bash-docx-engine/operation-schema.js +2 -2
  398. package/dist/safe-bash-docx-engine/pack.js +13 -13
  399. package/dist/safe-bash-docx-engine/package-view-batch-operations.js +21 -21
  400. package/dist/safe-bash-docx-engine/pandoc-adapter.js +28 -28
  401. package/dist/safe-bash-docx-engine/paragraph-edit.js +24 -24
  402. package/dist/safe-bash-docx-engine/part-provider.js +3 -3
  403. package/dist/safe-bash-docx-engine/property-values.js +3 -3
  404. package/dist/safe-bash-docx-engine/publication.js +8 -8
  405. package/dist/safe-bash-docx-engine/removal.js +20 -20
  406. package/dist/safe-bash-docx-engine/revision-decisions.js +21 -21
  407. package/dist/safe-bash-docx-engine/revision-edit.js +19 -19
  408. package/dist/safe-bash-docx-engine/revisions.js +17 -17
  409. package/dist/safe-bash-docx-engine/run-format.js +19 -19
  410. package/dist/safe-bash-docx-engine/sanitize.js +33 -33
  411. package/dist/safe-bash-docx-engine/sections.js +18 -18
  412. package/dist/safe-bash-docx-engine/settings.js +10 -10
  413. package/dist/safe-bash-docx-engine/shape-edit.js +20 -20
  414. package/dist/safe-bash-docx-engine/signatures.js +14 -14
  415. package/dist/safe-bash-docx-engine/stories.js +21 -21
  416. package/dist/safe-bash-docx-engine/structure-model-batch-operations.js +37 -37
  417. package/dist/safe-bash-docx-engine/style-model-batch-operations.js +26 -26
  418. package/dist/safe-bash-docx-engine/style-model-result-schema.js +43 -43
  419. package/dist/safe-bash-docx-engine/styles.js +17 -17
  420. package/dist/safe-bash-docx-engine/table-edit.js +26 -26
  421. package/dist/safe-bash-docx-engine/table-read.js +15 -15
  422. package/dist/safe-bash-docx-engine/template.js +21 -21
  423. package/dist/safe-bash-docx-engine/text-replace.js +19 -19
  424. package/dist/safe-bash-docx-engine/text-resource-read.js +15 -15
  425. package/dist/safe-bash-docx-engine/text.js +15 -15
  426. package/dist/safe-bash-docx-engine/validation.js +6 -6
  427. package/dist/safe-bash-docx-engine/xml-parts.js +21 -21
  428. package/dist/safe-bash-line-ending-engine/command.js +4 -4
  429. package/dist/safe-bash-line-ending-engine/index.js +7 -7
  430. package/dist/safe-bash-markdown-engine/commonmark-blocks.js +3 -3
  431. package/dist/safe-bash-markdown-engine/commonmark-inlines.js +3 -3
  432. package/dist/safe-bash-markdown-engine/gfm-syntax.js +2 -2
  433. package/dist/safe-bash-markdown-engine/index.js +4 -4
  434. package/dist/safe-bash-network-engine/aggregate.js +3 -3
  435. package/dist/safe-bash-network-engine/args.js +3 -3
  436. package/dist/safe-bash-network-engine/body.js +4 -4
  437. package/dist/safe-bash-network-engine/decode.js +3 -3
  438. package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
  439. package/dist/safe-bash-network-engine/index.js +3 -3
  440. package/dist/safe-bash-network-engine/output.js +3 -3
  441. package/dist/safe-bash-network-engine/platform-portable.js +3 -3
  442. package/dist/safe-bash-network-engine/shared.js +2 -2
  443. package/dist/safe-bash-network-engine/transfer.js +9 -9
  444. package/dist/safe-bash-presentation-engine/accessibility.js +31 -30
  445. package/dist/safe-bash-presentation-engine/animation-editing.js +16 -15
  446. package/dist/safe-bash-presentation-engine/animations.js +16 -15
  447. package/dist/safe-bash-presentation-engine/backgrounds.js +17 -16
  448. package/dist/safe-bash-presentation-engine/bytes.js +4 -3
  449. package/dist/safe-bash-presentation-engine/chart-editing.js +34 -33
  450. package/dist/safe-bash-presentation-engine/chart-object-operations.js +25 -24
  451. package/dist/safe-bash-presentation-engine/charts.js +31 -30
  452. package/dist/safe-bash-presentation-engine/command-placeholder.js +60 -58
  453. package/dist/safe-bash-presentation-engine/comments.js +17 -16
  454. package/dist/safe-bash-presentation-engine/connector-operations.js +32 -31
  455. package/dist/safe-bash-presentation-engine/connectors.js +29 -28
  456. package/dist/safe-bash-presentation-engine/content-types.js +5 -4
  457. package/dist/safe-bash-presentation-engine/creation.js +7 -6
  458. package/dist/safe-bash-presentation-engine/diff.d.ts +1 -0
  459. package/dist/safe-bash-presentation-engine/diff.js +44 -33
  460. package/dist/safe-bash-presentation-engine/drawing-format.js +20 -19
  461. package/dist/safe-bash-presentation-engine/drawing-operations.js +31 -30
  462. package/dist/safe-bash-presentation-engine/drawing-schema.js +21 -20
  463. package/dist/safe-bash-presentation-engine/equations.js +17 -16
  464. package/dist/safe-bash-presentation-engine/errors.js +3 -2
  465. package/dist/safe-bash-presentation-engine/fields.js +17 -16
  466. package/dist/safe-bash-presentation-engine/font-metrics.js +4 -3
  467. package/dist/safe-bash-presentation-engine/image-extraction.js +20 -19
  468. package/dist/safe-bash-presentation-engine/image-formatting.js +32 -31
  469. package/dist/safe-bash-presentation-engine/image-insertion.js +18 -17
  470. package/dist/safe-bash-presentation-engine/image-replacement.js +21 -20
  471. package/dist/safe-bash-presentation-engine/image-value.js +5 -4
  472. package/dist/safe-bash-presentation-engine/images.js +19 -18
  473. package/dist/safe-bash-presentation-engine/index.js +135 -132
  474. package/dist/safe-bash-presentation-engine/layouts.js +16 -15
  475. package/dist/safe-bash-presentation-engine/length.js +4 -3
  476. package/dist/safe-bash-presentation-engine/links.js +16 -15
  477. package/dist/safe-bash-presentation-engine/masters.js +15 -14
  478. package/dist/safe-bash-presentation-engine/media-editing.js +24 -23
  479. package/dist/safe-bash-presentation-engine/media-extraction.js +17 -16
  480. package/dist/safe-bash-presentation-engine/media.js +16 -15
  481. package/dist/safe-bash-presentation-engine/memberships.js +15 -14
  482. package/dist/safe-bash-presentation-engine/notes.js +18 -17
  483. package/dist/safe-bash-presentation-engine/ole-enum.js +5 -4
  484. package/dist/safe-bash-presentation-engine/ole-insertion.js +20 -19
  485. package/dist/safe-bash-presentation-engine/opaque-objects.js +10 -9
  486. package/dist/safe-bash-presentation-engine/package-reader.js +6 -5
  487. package/dist/safe-bash-presentation-engine/package-tools.js +19 -18
  488. package/dist/safe-bash-presentation-engine/package-uri.js +4 -3
  489. package/dist/safe-bash-presentation-engine/package-writer.js +5 -4
  490. package/dist/safe-bash-presentation-engine/presentation-model.js +59 -57
  491. package/dist/safe-bash-presentation-engine/presentation-settings.js +14 -13
  492. package/dist/safe-bash-presentation-engine/properties.d.ts +2 -1
  493. package/dist/safe-bash-presentation-engine/properties.js +25 -15
  494. package/dist/safe-bash-presentation-engine/relationships.js +5 -4
  495. package/dist/safe-bash-presentation-engine/resource-limits.js +2 -1
  496. package/dist/safe-bash-presentation-engine/retained-diff.d.ts +56 -0
  497. package/dist/safe-bash-presentation-engine/retained-inspection.js +14 -13
  498. package/dist/safe-bash-presentation-engine/retained-package.js +6 -5
  499. package/dist/safe-bash-presentation-engine/retained-properties.d.ts +26 -0
  500. package/dist/safe-bash-presentation-engine/retained-tags.d.ts +20 -0
  501. package/dist/safe-bash-presentation-engine/retained-text.js +33 -517
  502. package/dist/safe-bash-presentation-engine/sanitize.js +20 -16
  503. package/dist/safe-bash-presentation-engine/selectors.js +11 -10
  504. package/dist/safe-bash-presentation-engine/shape-groups.js +31 -30
  505. package/dist/safe-bash-presentation-engine/shape-operations.js +30 -29
  506. package/dist/safe-bash-presentation-engine/shape-path-operations.js +32 -31
  507. package/dist/safe-bash-presentation-engine/shape-paths.js +16 -15
  508. package/dist/safe-bash-presentation-engine/shape-presets.js +4 -3
  509. package/dist/safe-bash-presentation-engine/shape-selection.js +31 -30
  510. package/dist/safe-bash-presentation-engine/shape-transforms.js +18 -17
  511. package/dist/safe-bash-presentation-engine/shapes.js +27 -26
  512. package/dist/safe-bash-presentation-engine/slide-copy.js +17 -16
  513. package/dist/safe-bash-presentation-engine/slide-import.js +18 -17
  514. package/dist/safe-bash-presentation-engine/slide-merge-split.js +20 -19
  515. package/dist/safe-bash-presentation-engine/slide-model.js +43 -42
  516. package/dist/safe-bash-presentation-engine/slide-removal.js +18 -17
  517. package/dist/safe-bash-presentation-engine/slide-transfer-budget.js +10 -9
  518. package/dist/safe-bash-presentation-engine/slides.js +19 -18
  519. package/dist/safe-bash-presentation-engine/table-operations.js +33 -32
  520. package/dist/safe-bash-presentation-engine/table-spans.js +32 -31
  521. package/dist/safe-bash-presentation-engine/tables.js +31 -30
  522. package/dist/safe-bash-presentation-engine/tags.d.ts +2 -0
  523. package/dist/safe-bash-presentation-engine/tags.js +26 -17
  524. package/dist/safe-bash-presentation-engine/template-bindings.js +33 -32
  525. package/dist/safe-bash-presentation-engine/template-repeat.js +40 -39
  526. package/dist/safe-bash-presentation-engine/text-fitting.js +27 -26
  527. package/dist/safe-bash-presentation-engine/text-frames.js +27 -26
  528. package/dist/safe-bash-presentation-engine/text-paragraphs.js +27 -26
  529. package/dist/safe-bash-presentation-engine/text-reading.js +12 -11
  530. package/dist/safe-bash-presentation-engine/text-replacement.js +17 -16
  531. package/dist/safe-bash-presentation-engine/text-runs.js +20 -19
  532. package/dist/safe-bash-presentation-engine/themes.js +16 -15
  533. package/dist/safe-bash-presentation-engine/transitions.js +16 -15
  534. package/dist/safe-bash-presentation-engine/validation.js +10 -9
  535. package/dist/safe-bash-presentation-engine/xml-parts.js +19 -18
  536. package/dist/safe-bash-presentation-engine/xml-view.js +4 -3
  537. package/dist/safe-bash-presentation-engine/xml.js +4 -3
  538. package/dist/safe-bash-query-engine/index.js +3 -3
  539. package/dist/safe-bash-query-engine/interpreter.js +2 -2
  540. package/dist/safe-bash-query-engine/query-core.js +3 -3
  541. package/dist/safe-bash-regex-engine/ere/matcher.js +3 -3
  542. package/dist/safe-bash-xml-engine/document.js +3 -3
  543. package/dist/safe-bash-xml-engine/evaluate.js +1 -1
  544. package/dist/safe-bash-xml-engine/index.js +4 -4
  545. package/dist/safe-bash-xml-engine/json.js +14 -10
  546. package/dist/safe-bash-xml-engine/query.js +2 -2
  547. package/dist/safe-bash-xml-engine/stored-document.d.ts +6 -0
  548. package/dist/safe-bash-xml-engine/stored-document.js +1 -1
  549. package/dist/safe-bash-xml-engine/stored-evaluate.js +4 -4
  550. package/dist/safe-bash-xml-engine/stored-namespaces.d.ts +21 -0
  551. package/dist/safe-bash-zip-engine/index.js +2 -2
  552. package/dist/safe-bash-zip-engine/zip/repair.js +2 -2
  553. package/dist/safe-bash-zip-engine/zip/safety.js +1 -1
  554. package/dist/safe-bash-zip-engine/zip/sfx.js +2 -2
  555. package/dist/safe-bash-zip-engine/zip/volumes.js +1 -1
  556. package/dist/safe-bash-zip-engine/zip-format.js +2 -2
  557. package/dist/spreadsheet-format-xls/biff-properties-merge.js +66 -70
  558. package/dist/spreadsheet-format-xls/biff-properties.d.ts +4 -2
  559. package/dist/spreadsheet-format-xls/biff-properties.js +141 -122
  560. package/dist/spreadsheet-format-xls/biff-property-names.d.ts +24 -0
  561. package/dist/spreadsheet-format-xls/biff-property-names.js +167 -0
  562. package/dist/spreadsheet-format-xls/biff-property-transcode.d.ts +6 -1
  563. package/dist/spreadsheet-format-xls/biff-property-transcode.js +15 -4
  564. package/dist/spreadsheet-format-xls/biff-property-values.d.ts +6 -1
  565. package/dist/spreadsheet-format-xls/biff-property-values.js +81 -12
  566. package/dist/xlsx-ast/comment-geometry.d.ts +12 -0
  567. package/dist/xlsx-ast/comment-geometry.js +71 -0
  568. package/dist/xlsx-ast/xlsx-metadata.d.ts +1 -1
  569. package/dist/xlsx-ast/xlsx-metadata.js +27 -2
  570. package/dist/xlsx-ast/xlsx-write-metadata.js +9 -1
  571. package/dist/xlsx-ast/xlsx.js +9 -4
  572. package/package.json +6 -3
  573. package/dist/safe-bash/command-chunks/biff-A7XPBWAK-DCLG5QKF.js +0 -5417
  574. package/dist/safe-bash/command-chunks/chunk-DBNJEXHK.js +0 -387
  575. package/dist/safe-bash/command-chunks/chunk-EV5G535P.js +0 -240
  576. package/dist/safe-bash/command-chunks/chunk-RHDERFMR.js +0 -161
  577. package/dist/safe-bash/command-chunks/chunk-ZUP5TBRG.js +0 -99
  578. package/dist/safe-bash/command-chunks/model-store-UB5DWMAP.js +0 -54
  579. package/dist/safe-bash/command-chunks/odf-3EA3EVSD-7B5GVNTC.js +0 -3097
  580. package/dist/safe-bash/command-chunks/{chunk-NGSO645G.js → chunk-3ZVK2OAY.js} +6 -6
  581. package/dist/safe-bash/command-chunks/{chunk-W2FKFEVY.js → chunk-4YSBUQPV.js} +3 -3
  582. package/dist/safe-bash/command-chunks/{chunk-UJSLBBQ7.js → chunk-5MFRN3CB.js} +4 -4
  583. package/dist/safe-bash/command-chunks/{chunk-AW4Q3GZW.js → chunk-5QXRIZSS.js} +3 -3
  584. package/dist/safe-bash/command-chunks/{chunk-KUGV3SSL.js → chunk-CZXYWGVO.js} +3 -3
  585. package/dist/safe-bash/command-chunks/{chunk-JWORWL72.js → chunk-DX7KU6YU.js} +3 -3
  586. package/dist/safe-bash/command-chunks/{chunk-Z37OM247.js → chunk-E3BL7W5C.js} +3 -3
  587. package/dist/safe-bash/command-chunks/{chunk-RIKNMBLZ.js → chunk-FEKECRJP.js} +3 -3
  588. package/dist/safe-bash/command-chunks/{chunk-D3HW7R2N.js → chunk-FTZFCMVI.js} +9 -9
  589. package/dist/safe-bash/command-chunks/{chunk-NBRXQUK7.js → chunk-M3OXQXCU.js} +3 -3
  590. package/dist/safe-bash/command-chunks/{chunk-JRSZ5IGD.js → chunk-OAM2SUUI.js} +6 -6
  591. package/dist/safe-bash/command-chunks/{chunk-HFKS6AET.js → chunk-OCOJMKDP.js} +4 -4
  592. package/dist/safe-bash/command-chunks/{chunk-FMJKCVSQ.js → chunk-OOB7YCFQ.js} +3 -3
  593. package/dist/safe-bash/command-chunks/{chunk-GGH376XQ.js → chunk-OU4VE5CR.js} +6 -6
  594. package/dist/safe-bash/command-chunks/{chunk-DYERIXPU.js → chunk-QGTQJCKW.js} +3 -3
  595. package/dist/safe-bash/command-chunks/{chunk-ZSQCROFE.js → chunk-RXXNLH7A.js} +3 -3
  596. package/dist/safe-bash/command-chunks/{chunk-TI52LKLL.js → chunk-UVM6QG2H.js} +3 -3
  597. package/dist/safe-bash/command-chunks/{chunk-BJXADHRT.js → chunk-WKU65Z3Q.js} +6 -6
  598. package/dist/safe-bash/command-chunks/{chunk-KGKF5NM2.js → chunk-WOXLPDO6.js} +3 -3
  599. package/dist/safe-bash/command-chunks/{chunk-Y5ADXWBQ.js → chunk-WXW665TV.js} +4 -4
  600. package/dist/safe-bash/command-chunks/{chunk-FWCUEZ3K.js → chunk-WYBCSJFG.js} +3 -3
  601. package/dist/safe-bash/command-chunks/{chunk-BXU5Y7I5.js → chunk-XI2LETBJ.js} +3 -3
  602. package/dist/safe-bash/command-chunks/{chunk-LNLACEAN.js → chunk-Y3ZRIZL7.js} +3 -3
@@ -1,7 +1,7 @@
1
1
  import { BiffMutablePropertyValues } from './biff-property-values.js';
2
2
  import { createBiffPropertyNameEncoder } from "./biff-property-name.js";
3
3
  import { readBiffPropertyText } from "./biff-property-text.js";
4
- import { stageWideBiffProperty } from './biff-property-transcode.js';
4
+ import { wideBiffPropertyBytes } from './biff-property-transcode.js';
5
5
  import { stagePropertyBytes, propertyChunks } from './biff-property-bytes.js';
6
6
  import { SsconvertError } from "../spreadsheet-engine/contracts.js";
7
7
  import { Binary, invalidBiff } from "./biff-binary.js";
@@ -121,8 +121,8 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
121
121
  const identity = (property) => `${property.stream}:${property.section}:${property.id}`;
122
122
  const readContext = { ...context, limits: { ...context.limits, inputBytes: context.limits.outputBytes } };
123
123
  // Reuse scalar decoding, but do not create another retained hexadecimal copy.
124
- await readBiffProperties(new Map([...snapshots].map(([name, value]) => [name, value.bytes])), readContext, accountText, charge, undefined, property => { admit(1); original.set(identity(property), property); });
125
- await readBiffProperties(streams, readContext, accountText, charge, undefined, property => { admit(1); pending.set(property.key, property); });
124
+ await readBiffProperties(new Map([...snapshots].map(([name, value]) => [name, value.bytes])), readContext, accountText, charge, undefined, property => { admit(1); original.set(identity(property), property); }, false);
125
+ await readBiffProperties(streams, readContext, accountText, charge, undefined, property => { admit(1); pending.set(property.key, property); }, false);
126
126
  const chunks = async function* (source) {
127
127
  for (let at = 0; at < source.size;) {
128
128
  const bytes = await source.read(at, source.size - at);
@@ -161,6 +161,12 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
161
161
  yield { id, name, bytes: data.slice(start, at - start) };
162
162
  }
163
163
  };
164
+ const reserve = staged?.reserve ?? ((length) => {
165
+ charge(length);
166
+ if (length > 0xffffffff || length > context.limits.outputBytes)
167
+ throw new SsconvertError("resource-limit", "ssconvert BIFF property output bytes limit exceeded");
168
+ return length;
169
+ });
164
170
  const writeDictionary = async (section, plan) => {
165
171
  const output = { length: plan.length, async *chunks() {
166
172
  const header = new Uint8Array(4);
@@ -172,15 +178,13 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
172
178
  yield* chunks(entry.bytes);
173
179
  }
174
180
  if (plan.append) {
175
- charge(plan.append.size);
176
- yield* chunks(plan.append);
181
+ charge(plan.append.length);
182
+ yield* propertyChunks(plan.append);
177
183
  }
178
184
  } };
179
185
  if (staged) {
180
186
  staged.reserve(plan.length);
181
- const source = await stagePropertyBytes(output, context);
182
- temporarySources.push(source);
183
- await section.values.set(0, propertyRange(source, context));
187
+ await section.values.set(0, { size: plan.length, chunks: output.chunks });
184
188
  }
185
189
  else {
186
190
  const bytes = allocate(plan.length);
@@ -216,9 +220,7 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
216
220
  if (await source.u32(0) !== 30 || (await (await section.values.get(1))?.u16(4) ?? 1252) === 65001)
217
221
  return source;
218
222
  if (staged) {
219
- const output = await stageWideBiffProperty(source, context, charge, staged.reserve);
220
- temporarySources.push(output);
221
- return propertyRange(output, context);
223
+ return wideBiffPropertyBytes(source, context, charge, staged.reserve);
222
224
  }
223
225
  const data = await materialize(source);
224
226
  const value = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(data.slice(8, data.u32(4) - 1));
@@ -238,9 +240,11 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
238
240
  };
239
241
  for (const [name, snapshot] of snapshots) {
240
242
  const seen = new Set();
241
- let modeled = snapshot.modeled;
242
- if (!modeled) {
243
- modeled = [];
243
+ function* modeled() {
244
+ if (snapshot.modeled) {
245
+ yield* snapshot.modeled;
246
+ return;
247
+ }
244
248
  // SummaryInformation is read first. A legacy document-only snapshot lacks
245
249
  // that earlier stream's ownership decisions: infer only unchanged values.
246
250
  for (const property of original.values()) {
@@ -250,11 +254,11 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
250
254
  if (name === "\u0005SummaryInformation" || snapshots.has("\u0005SummaryInformation") ||
251
255
  Object.hasOwn(book.properties ?? {}, property.key) && same(property.value, book.properties?.[property.key])) {
252
256
  admit(1);
253
- modeled.push([property.section, property.id, property.key]);
257
+ yield [property.section, property.id, property.key];
254
258
  }
255
259
  }
256
260
  }
257
- for (const entry of modeled) {
261
+ for (const entry of modeled()) {
258
262
  admit(1);
259
263
  if (!Array.isArray(entry) || entry.length !== 3 || typeof entry[0] !== "number" || typeof entry[1] !== "number" || typeof entry[2] !== "string")
260
264
  invalidBiff("invalid retained property identity");
@@ -333,23 +337,10 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
333
337
  if (length > size)
334
338
  yield new Uint8Array(length - size);
335
339
  } };
336
- let bytes;
337
- if (staged) {
338
- staged.reserve(length);
339
- const source = await stagePropertyBytes(entry, context);
340
- temporarySources.push(source);
341
- bytes = propertyRange(source, context);
342
- }
343
- else {
344
- const data = allocate(length);
345
- let at = 0;
346
- for (const part of entry.chunks()) {
347
- data.set(part, at);
348
- at += part.length;
349
- }
350
- bytes = propertyRange(data, context);
351
- }
352
- await writeDictionary(target, { length: dictionaryLength + bytes.size, count: count + 1, append: bytes });
340
+ // Preserve admission for the entry while writing its chunks directly into
341
+ // the rebuilt dictionary, without a separate store per inserted name.
342
+ reserve(length);
343
+ await writeDictionary(target, { length: dictionaryLength + length, count: count + 1, append: entry });
353
344
  }
354
345
  else if (await values.get(id)) {
355
346
  await warn(property.key, "opaque property ID collision");
@@ -357,21 +348,11 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
357
348
  }
358
349
  await values.set(id, await wide(value, target));
359
350
  }
360
- const reserve = staged?.reserve ?? ((length) => {
361
- charge(length);
362
- if (length > 0xffffffff || length > context.limits.outputBytes)
363
- throw new SsconvertError("resource-limit", "ssconvert BIFF property output bytes limit exceeded");
364
- return length;
365
- });
366
- const encodeSection = async (section) => {
351
+ const encodeSection = (section) => {
367
352
  if (!section.values)
368
353
  return { length: section.bytes.size, chunks: () => chunks(section.bytes) };
369
354
  const values = section.values;
370
- let length = 8 + values.size * 8;
371
- for await (const [, value] of values.entries())
372
- length += Math.ceil(value.size / 4) * 4;
373
- // Buffered output charges the section size here, as the old allocation did.
374
- reserve(length);
355
+ const length = values.serializedSize;
375
356
  return { length, async *chunks() {
376
357
  const header = new Uint8Array(8), view = new DataView(header.buffer);
377
358
  view.setUint32(0, length, true);
@@ -397,46 +378,61 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
397
378
  for (const name of new Set([...streams.keys(), ...snapshots.keys()])) {
398
379
  for (const section of fresh.get(name) ?? [])
399
380
  charge(1 + section.values.size);
400
- const remaining = [];
401
- for (const section of fresh.get(name) ?? []) {
402
- for await (const [id] of section.values.entries())
403
- if (id >= 2) {
404
- remaining.push(section);
405
- break;
381
+ const remaining = async function* () {
382
+ for (const section of fresh.get(name) ?? []) {
383
+ charge(1);
384
+ for await (const [id] of section.values.entries()) {
385
+ charge(1);
386
+ if (id >= 2) {
387
+ yield section;
388
+ break;
389
+ }
406
390
  }
407
- }
408
- if (!old.has(name) && remaining.some(section => section.guid === biffPropertyFormats.custom) &&
409
- !remaining.some(section => section.guid === biffPropertyFormats.document)) {
410
- const builtin = fresh.get(name)?.find(section => section.guid === biffPropertyFormats.document);
391
+ }
392
+ };
393
+ let custom = false, document = false;
394
+ if (!old.has(name))
395
+ for await (const section of remaining()) {
396
+ custom ||= section.guid === biffPropertyFormats.custom;
397
+ document ||= section.guid === biffPropertyFormats.document;
398
+ }
399
+ const builtin = custom && !document ? fresh.get(name)?.find(section => section.guid === biffPropertyFormats.document) : undefined;
400
+ const sections = async function* () {
401
+ yield* old.get(name) ?? [];
411
402
  if (builtin)
412
- remaining.unshift(builtin);
403
+ yield builtin;
404
+ yield* remaining();
405
+ };
406
+ let count = 0, length = 28;
407
+ for await (const section of sections()) {
408
+ charge(1);
409
+ count++;
410
+ const size = section.values?.serializedSize ?? section.bytes.size;
411
+ if (section.values)
412
+ reserve(size);
413
+ length += 20 + size;
413
414
  }
414
- const sections = [...old.get(name) ?? [], ...remaining];
415
- if (!sections.length) {
415
+ if (!count) {
416
416
  streams.delete(name);
417
417
  continue;
418
418
  }
419
- const bodies = [];
420
- for (const section of sections)
421
- bodies.push(await encodeSection(section));
422
- const length = 28 + sections.length * 20 + bodies.reduce((sum, body) => sum + body.length, 0);
423
419
  const originalHeader = await (snapshots.get(name)?.bytes ?? propertyRange(streams.get(name), context)).read(0, 28);
424
420
  const output = { length, async *chunks() {
425
421
  const header = new Uint8Array(originalHeader);
426
- new DataView(header.buffer).setUint32(24, sections.length, true);
422
+ new DataView(header.buffer).setUint32(24, count, true);
427
423
  yield header;
428
- let at = 28 + sections.length * 20;
429
- for (let i = 0; i < sections.length; i++) {
424
+ let at = 28 + count * 20;
425
+ for await (const section of sections()) {
430
426
  charge(1);
431
427
  const entry = new Uint8Array(20), view = new DataView(entry.buffer);
432
428
  for (let j = 0; j < 16; j++)
433
- entry[j] = parseInt(sections[i].guid.slice(j * 2, j * 2 + 2), 16);
429
+ entry[j] = parseInt(section.guid.slice(j * 2, j * 2 + 2), 16);
434
430
  view.setUint32(16, at, true);
435
431
  yield entry;
436
- at += bodies[i].length;
432
+ at += section.values?.serializedSize ?? section.bytes.size;
437
433
  }
438
- for (const body of bodies)
439
- yield* body.chunks();
434
+ for await (const section of sections())
435
+ yield* encodeSection(section).chunks();
440
436
  } };
441
437
  if (staged) {
442
438
  reserve(length);
@@ -460,7 +456,7 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
460
456
  admit(1);
461
457
  if (!Object.hasOwn(book.properties ?? {}, property.key))
462
458
  exposed.add(property.key);
463
- });
459
+ }, false);
464
460
  for (const key of exposed)
465
461
  await warn(key, "opaque property exposes a field absent from the model");
466
462
  }
@@ -7,11 +7,13 @@ export declare const biffPropertyFormats: {
7
7
  };
8
8
  export declare const biffPropertyFields: Map<string, ReadonlyMap<number, string>>;
9
9
  export declare function isBiffKeywordSpace(code: number): boolean;
10
- /** Property offsets are section-relative; dictionaries have no variant header. */
10
+ /** Property offsets are section-relative; dictionaries have no variant header.
11
+ * With collect=false, await observations without retaining a result record; exact
12
+ * duplicate-name checks use bounded caller storage when available. */
11
13
  export declare function readBiffProperties(streams: ReadonlyMap<string, Uint8Array | RangeSource>, context: CapabilityContext, accountText: (text: string) => string, accountWork: (amount: number) => void, retained: UnsupportedRecord[] | undefined, observe?: (property: {
12
14
  stream: string;
13
15
  section: number;
14
16
  id: number;
15
17
  key: string;
16
18
  value: ImportedValue;
17
- }) => void): Promise<Readonly<Record<string, ImportedValue>>>;
19
+ }) => void | Promise<void>, collect?: boolean): Promise<Readonly<Record<string, ImportedValue>>>;
@@ -1,3 +1,4 @@
1
+ import { BiffPropertyNames } from './biff-property-names.js';
1
2
  import { visitBiffPropertyDictionary } from './biff-property-dictionary.js';
2
3
  import { SsconvertError } from "../spreadsheet-engine/contracts.js";
3
4
  import { invalidBiff } from "./biff-binary.js";
@@ -19,9 +20,12 @@ export const biffPropertyFields = new Map([
19
20
  export function isBiffKeywordSpace(code) {
20
21
  return code > 0 && code <= 32 || code >= 0x2000 && code <= 0x200b || code === 0x2028 || code === 0x2029;
21
22
  }
22
- /** Property offsets are section-relative; dictionaries have no variant header. */
23
- export async function readBiffProperties(streams, context, accountText, accountWork, retained, observe) {
23
+ /** Property offsets are section-relative; dictionaries have no variant header.
24
+ * With collect=false, await observations without retaining a result record; exact
25
+ * duplicate-name checks use bounded caller storage when available. */
26
+ export async function readBiffProperties(streams, context, accountText, accountWork, retained, observe, collect = true) {
24
27
  const properties = Object.create(null);
28
+ let names;
25
29
  let nodes = 0;
26
30
  const admit = (count) => {
27
31
  accountWork(count);
@@ -29,138 +33,153 @@ export async function readBiffProperties(streams, context, accountText, accountW
29
33
  if (nodes > (context.limits.workbookNodes ?? context.limits.inputBytes))
30
34
  throw new SsconvertError("resource-limit", "ssconvert BIFF property node limit exceeded");
31
35
  };
32
- for (const target of ["\u0005SummaryInformation", "\u0005DocumentSummaryInformation"]) {
33
- let streamName = target, bytes = streams.get(target);
34
- if (!bytes)
35
- for (const [name, data] of streams) {
36
- accountWork(1);
37
- if (name.toUpperCase() === target.toUpperCase()) {
38
- streamName = name;
39
- bytes = data;
40
- break;
36
+ try {
37
+ for (const target of ["\u0005SummaryInformation", "\u0005DocumentSummaryInformation"]) {
38
+ let streamName = target, bytes = streams.get(target);
39
+ if (!bytes)
40
+ for (const [name, data] of streams) {
41
+ accountWork(1);
42
+ if (name.toUpperCase() === target.toUpperCase()) {
43
+ streamName = name;
44
+ bytes = data;
45
+ break;
46
+ }
41
47
  }
42
- }
43
- if (!bytes)
44
- continue;
45
- const file = propertyRange(bytes, context);
46
- accountWork(file.size);
47
- const sections = readPropertySectionRanges(file, admit, accountWork, context);
48
- let unknown = false;
49
- const modeled = [];
50
- for await (const { guid, offset, end } of sections) {
51
- if (!biffPropertyFields.has(guid) && guid !== custom) {
52
- unknown = true;
48
+ if (!bytes)
53
49
  continue;
54
- }
55
- await withPropertyValueRanges(file.slice(offset, end - offset), admit, accountWork, context, async (values) => {
56
- const cp = await values.get(1);
57
- let codepage = 1252;
58
- if (cp) {
59
- if ((await cp.u32(0)) !== 2)
60
- invalidBiff("invalid property codepage type");
61
- codepage = await cp.u16(4);
50
+ const file = propertyRange(bytes, context);
51
+ accountWork(file.size);
52
+ const sections = readPropertySectionRanges(file, admit, accountWork, context);
53
+ let unknown = false;
54
+ const modeled = retained ? [] : undefined;
55
+ for await (const { guid, offset, end } of sections) {
56
+ if (!biffPropertyFields.has(guid) && guid !== custom) {
57
+ unknown = true;
58
+ continue;
62
59
  }
63
- const dictionary = guid === custom ? await values.get(0) : undefined;
64
- const supported = await visitBiffPropertyDictionary(dictionary, codepage, context, admit, accountText, accountWork, async (getName) => {
65
- for await (const [id, data] of values.entries()) {
66
- context.signal.throwIfAborted();
67
- if (id < 2)
68
- continue;
69
- const key = guid === custom ? await getName(id) : biffPropertyFields.get(guid)?.get(id);
70
- if (key === undefined || Object.hasOwn(properties, key)) {
71
- unknown = true;
72
- continue;
73
- }
74
- let value;
75
- const type = await data.u32(0);
76
- try {
77
- if (type === 30 || type === 31)
78
- value = (await readBiffPropertyText(data, 4, type === 31 ? 1200 : codepage, context, accountText, accountWork)).value;
79
- else if (type === 3)
80
- value = (await data.u32(4)) | 0;
81
- else if (type === 5) {
82
- value = await data.f64(4);
83
- if (!Number.isFinite(value))
84
- invalidBiff("nonfinite property value");
60
+ await withPropertyValueRanges(file.slice(offset, end - offset), admit, accountWork, context, async (values) => {
61
+ const cp = await values.get(1);
62
+ let codepage = 1252;
63
+ if (cp) {
64
+ if ((await cp.u32(0)) !== 2)
65
+ invalidBiff("invalid property codepage type");
66
+ codepage = await cp.u16(4);
67
+ }
68
+ const dictionary = guid === custom ? await values.get(0) : undefined;
69
+ const supported = await visitBiffPropertyDictionary(dictionary, codepage, context, admit, accountText, accountWork, async (getName) => {
70
+ for await (const [id, data] of values.entries()) {
71
+ context.signal.throwIfAborted();
72
+ if (id < 2)
73
+ continue;
74
+ const key = guid === custom ? await getName(id) : biffPropertyFields.get(guid)?.get(id);
75
+ if (key === undefined || (collect ? Object.hasOwn(properties, key) : await (names ??= new BiffPropertyNames(context, accountWork)).has(key))) {
76
+ unknown = true;
77
+ continue;
85
78
  }
86
- else if (type === 11)
87
- value = (await data.u16(4)) !== 0;
88
- else if (type === 64) {
89
- const ticks = BigInt(await data.u32(4)) + (BigInt(await data.u32(8)) << 32n);
90
- if (guid === summary && id === 10) {
91
- const fraction = (ticks % 10000000n).toString().padStart(7, "0");
92
- let end = fraction.length;
93
- while (end && fraction[end - 1] === "0")
94
- end--;
95
- value = `PT${ticks / 600000000n}M${ticks / 10000000n % 60n}${end ? "." + fraction.slice(0, end) : ""}S`;
79
+ let value;
80
+ const type = await data.u32(0);
81
+ try {
82
+ if (type === 30 || type === 31)
83
+ value = (await readBiffPropertyText(data, 4, type === 31 ? 1200 : codepage, context, accountText, accountWork)).value;
84
+ else if (type === 3)
85
+ value = (await data.u32(4)) | 0;
86
+ else if (type === 5) {
87
+ value = await data.f64(4);
88
+ if (!Number.isFinite(value))
89
+ invalidBiff("nonfinite property value");
90
+ }
91
+ else if (type === 11)
92
+ value = (await data.u16(4)) !== 0;
93
+ else if (type === 64) {
94
+ const ticks = BigInt(await data.u32(4)) + (BigInt(await data.u32(8)) << 32n);
95
+ if (guid === summary && id === 10) {
96
+ const fraction = (ticks % 10000000n).toString().padStart(7, "0");
97
+ let end = fraction.length;
98
+ while (end && fraction[end - 1] === "0")
99
+ end--;
100
+ value = `PT${ticks / 600000000n}M${ticks / 10000000n % 60n}${end ? "." + fraction.slice(0, end) : ""}S`;
101
+ }
102
+ else {
103
+ value = new Date(Number(ticks / 10000n) - 11644473600000).toISOString();
104
+ // The workbook model stores timestamps as strings; retain the
105
+ // original property bytes when Date's millisecond precision loses ticks.
106
+ if (ticks % 10000n)
107
+ unknown = true;
108
+ }
109
+ accountText(value);
96
110
  }
97
- else {
98
- value = new Date(Number(ticks / 10000n) - 11644473600000).toISOString();
99
- // The workbook model stores timestamps as strings; retain the
100
- // original property bytes when Date's millisecond precision loses ticks.
101
- if (ticks % 10000n)
102
- unknown = true;
111
+ else if (type === 7) {
112
+ const days = await data.f64(4);
113
+ if (!Number.isFinite(days) || days <= -657435 || days >= 2958466)
114
+ invalidBiff("invalid OLE property date");
115
+ // OLE Automation uses 1899-12-30 and the absolute fractional day.
116
+ // LibreOffice's oleprops DATE path truncates it and uses 1899-12-31;
117
+ // the documented Automation representation governs the stored value.
118
+ value = new Date(-2209161600000 + Math.round((Math.trunc(days) + Math.abs(days % 1)) * 86400000)).toISOString();
119
+ accountText(value);
103
120
  }
104
- accountText(value);
105
121
  }
106
- else if (type === 7) {
107
- const days = await data.f64(4);
108
- if (!Number.isFinite(days) || days <= -657435 || days >= 2958466)
109
- invalidBiff("invalid OLE property date");
110
- // OLE Automation uses 1899-12-30 and the absolute fractional day.
111
- // LibreOffice's oleprops DATE path truncates it and uses 1899-12-31;
112
- // the documented Automation representation governs the stored value.
113
- value = new Date(-2209161600000 + Math.round((Math.trunc(days) + Math.abs(days % 1)) * 86400000)).toISOString();
114
- accountText(value);
122
+ catch (error) {
123
+ if (!(error instanceof SsconvertError) || error.code !== "unsupported-feature")
124
+ throw error;
115
125
  }
126
+ if (value === undefined) {
127
+ unknown = true;
128
+ continue;
129
+ }
130
+ if (guid === summary && id === 5 && typeof value === "string") {
131
+ let count = 1;
132
+ for (const character of value)
133
+ if (character === ",")
134
+ count++;
135
+ admit(count);
136
+ accountWork(value.length);
137
+ value = value.split(",").map(keyword => {
138
+ let start = 0, end = keyword.length;
139
+ while (start < end && isBiffKeywordSpace(keyword.charCodeAt(start)))
140
+ start++;
141
+ while (end > start && isBiffKeywordSpace(keyword.charCodeAt(end - 1)))
142
+ end--;
143
+ return keyword.slice(start, end);
144
+ }).filter(Boolean);
145
+ }
146
+ accountText(key);
147
+ if (collect)
148
+ properties[key] = value;
149
+ else
150
+ await names.add(key);
151
+ modeled?.push([offset, id, key]);
152
+ await observe?.({ stream: streamName, section: offset, id, key, value });
116
153
  }
117
- catch (error) {
118
- if (!(error instanceof SsconvertError) || error.code !== "unsupported-feature")
119
- throw error;
120
- }
121
- if (value === undefined) {
122
- unknown = true;
123
- continue;
124
- }
125
- if (guid === summary && id === 5 && typeof value === "string") {
126
- let count = 1;
127
- for (const character of value)
128
- if (character === ",")
129
- count++;
130
- admit(count);
131
- accountWork(value.length);
132
- value = value.split(",").map(keyword => {
133
- let start = 0, end = keyword.length;
134
- while (start < end && isBiffKeywordSpace(keyword.charCodeAt(start)))
135
- start++;
136
- while (end > start && isBiffKeywordSpace(keyword.charCodeAt(end - 1)))
137
- end--;
138
- return keyword.slice(start, end);
139
- }).filter(Boolean);
140
- }
141
- accountText(key);
142
- properties[key] = value;
143
- modeled.push([offset, id, key]);
144
- observe?.({ stream: streamName, section: offset, id, key, value });
145
- }
154
+ });
155
+ if (!supported)
156
+ unknown = true;
146
157
  });
147
- if (!supported)
148
- unknown = true;
149
- });
150
- }
151
- if (unknown && retained) {
152
- if (file.size * 2 > (context.limits.workbookTextBytes ?? context.limits.inputBytes * 2))
153
- throw new SsconvertError("resource-limit", "ssconvert BIFF property retention limit exceeded");
154
- let encoded = "";
155
- for (let at = 0; at < file.size;) {
156
- const chunk = await file.read(at, Math.min(16384, file.size - at));
157
- encoded += Array.from(chunk, byte => byte.toString(16).padStart(2, "0")).join("");
158
- at += chunk.length;
159
158
  }
160
- const hex = accountText(encoded);
161
- retained.push({ source: "biff", kind: "ole-properties", disposition: "retained", data: { stream: streamName, bytes: hex, modeled } });
162
- await context.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `BIFF property stream ${streamName.slice(1)} retained with uninterpreted values` });
159
+ if (unknown && retained && modeled) {
160
+ if (file.size * 2 > (context.limits.workbookTextBytes ?? context.limits.inputBytes * 2))
161
+ throw new SsconvertError("resource-limit", "ssconvert BIFF property retention limit exceeded");
162
+ let encoded = "";
163
+ for (let at = 0; at < file.size;) {
164
+ const chunk = await file.read(at, Math.min(16384, file.size - at));
165
+ encoded += Array.from(chunk, byte => byte.toString(16).padStart(2, "0")).join("");
166
+ at += chunk.length;
167
+ }
168
+ const hex = accountText(encoded);
169
+ retained.push({ source: "biff", kind: "ole-properties", disposition: "retained", data: { stream: streamName, bytes: hex, modeled } });
170
+ await context.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `BIFF property stream ${streamName.slice(1)} retained with uninterpreted values` });
171
+ }
172
+ }
173
+ }
174
+ catch (error) {
175
+ try {
176
+ await names?.close();
177
+ }
178
+ catch (cleanup) {
179
+ throw new AggregateError([error, cleanup], 'BIFF property observation cleanup failed');
163
180
  }
181
+ throw error;
164
182
  }
183
+ await names?.close();
165
184
  return properties;
166
185
  }
@@ -0,0 +1,24 @@
1
+ import { type CapabilityContext } from "../spreadsheet-engine/contracts.js";
2
+ /** Exact UTF-16 identity, including empty names and embedded NULs. Calls are sequential.
3
+ * A bounded hash index points to name records; collisions use exact bounded comparisons. */
4
+ export declare class BiffPropertyNames {
5
+ private readonly context;
6
+ private readonly charge;
7
+ private readonly storage;
8
+ private readonly index;
9
+ private readonly fallback;
10
+ private initialized;
11
+ private pending;
12
+ private closed;
13
+ private closing;
14
+ constructor(context: CapabilityContext, charge: (amount: number) => void);
15
+ private check;
16
+ private io;
17
+ private allocate;
18
+ private read;
19
+ private fingerprint;
20
+ private contains;
21
+ has(name: string): Promise<boolean>;
22
+ add(name: string): Promise<void>;
23
+ close(): Promise<void>;
24
+ }