@poe-platform/safe-bash 0.1.815 → 0.1.816

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 (585) 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 +4 -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 +5 -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 +1 -0
  18. package/dist/pdf-ast/index.d.ts +2 -0
  19. package/dist/pdf-ast/index.js +1091 -322
  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-UBP2BZLK-JPODPKS3.js +5448 -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-MYZ46FQL.js → chunk-2QZUAZTH.js} +1 -1
  33. package/dist/safe-bash/command-chunks/{chunk-YAD7EV4N.js → chunk-2TWXRJPB.js} +11 -11
  34. package/dist/safe-bash/command-chunks/{chunk-NYFYTL5G.js → chunk-345YBIHP.js} +27 -27
  35. package/dist/safe-bash/command-chunks/{chunk-3MG5EAMX.js → chunk-35DU6I2M.js} +5 -5
  36. package/dist/safe-bash/command-chunks/{chunk-FSVJ67G5.js → chunk-3DWFXESW.js} +2 -2
  37. package/dist/safe-bash/command-chunks/{chunk-TKCUGMRZ.js → chunk-3K5CVXUV.js} +18 -18
  38. package/dist/safe-bash/command-chunks/{chunk-6LPSKLLD.js → chunk-3MUFXGA2.js} +3 -3
  39. package/dist/safe-bash/command-chunks/{chunk-44F5TOHZ.js → chunk-3PM46VWH.js} +15 -15
  40. package/dist/safe-bash/command-chunks/{chunk-6QYSF7I2.js → chunk-3ZWFE4CK.js} +7 -7
  41. package/dist/safe-bash/command-chunks/{chunk-NEYITAAO.js → chunk-45DKGZYO.js} +744 -328
  42. package/dist/safe-bash/command-chunks/{chunk-U3C6IT2C.js → chunk-4772DJKS.js} +14 -10
  43. package/dist/safe-bash/command-chunks/{chunk-FOONI6BD.js → chunk-4ABR3KGK.js} +7 -7
  44. package/dist/safe-bash/command-chunks/{chunk-7KZ5LWV2.js → chunk-4IDV763L.js} +1 -1
  45. package/dist/safe-bash/command-chunks/{chunk-FGGHYUWR.js → chunk-4QEJPP3K.js} +102 -7
  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-AF2IO57Q.js +733 -0
  74. package/dist/safe-bash/command-chunks/{chunk-AFPXADZG.js → chunk-AHD3CGAY.js} +4 -4
  75. package/dist/safe-bash/command-chunks/{chunk-YW2VYN4V.js → chunk-ALD53QFL.js} +74 -27
  76. package/dist/safe-bash/command-chunks/{chunk-4B2ZUGLT.js → chunk-ARE267HR.js} +5 -5
  77. package/dist/safe-bash/command-chunks/{chunk-OTF2AJ5M.js → chunk-AYQPJQJR.js} +6 -6
  78. package/dist/safe-bash/command-chunks/{chunk-2VVJRVYM.js → chunk-B6XTAKKQ.js} +1 -1
  79. package/dist/safe-bash/command-chunks/{chunk-GCHB7VNX.js → chunk-BIJW6QWB.js} +17 -17
  80. package/dist/safe-bash/command-chunks/{chunk-OVEPYULA.js → chunk-BKK4MS3V.js} +1 -1
  81. package/dist/safe-bash/command-chunks/{chunk-3EB2FSAN.js → chunk-BOVDUJ3A.js} +7 -7
  82. package/dist/safe-bash/command-chunks/{chunk-SEPUP6TZ.js → chunk-BSTABZIK.js} +1 -1
  83. package/dist/safe-bash/command-chunks/{chunk-ATHHWPSE.js → chunk-BZRWZ6GO.js} +1 -1
  84. package/dist/safe-bash/command-chunks/{chunk-BZMNC7Q5.js → chunk-CGJ7GMHO.js} +7 -7
  85. package/dist/safe-bash/command-chunks/{chunk-RGDOYWOD.js → chunk-CHZE6FNT.js} +2 -2
  86. package/dist/safe-bash/command-chunks/{chunk-V7E3PZOK.js → chunk-CKA7ZROU.js} +7 -7
  87. package/dist/safe-bash/command-chunks/{chunk-MEM2ZPMI.js → chunk-CKIXC7AO.js} +3 -3
  88. package/dist/safe-bash/command-chunks/{chunk-Y54L4P4J.js → chunk-CORUUCS2.js} +5 -5
  89. package/dist/safe-bash/command-chunks/{chunk-QDVDBN2N.js → chunk-DBZCTL7C.js} +150 -35
  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-MLOYUXUV.js → chunk-EJ4UP7DA.js} +31 -9
  98. package/dist/safe-bash/command-chunks/{chunk-USGZN2KE.js → chunk-ENMJHB2C.js} +5 -5
  99. package/dist/safe-bash/command-chunks/{chunk-ZSQZHFWS.js → chunk-ERWIJYCS.js} +7 -7
  100. package/dist/safe-bash/command-chunks/{chunk-S2QNBAN6.js → chunk-ET6LMDEX.js} +12 -12
  101. package/dist/safe-bash/command-chunks/{chunk-6XGDWFNQ.js → chunk-EWC56JNI.js} +5 -5
  102. package/dist/safe-bash/command-chunks/{chunk-EQWFKNHJ.js → chunk-EZDWPTYB.js} +19 -19
  103. package/dist/safe-bash/command-chunks/{chunk-CQBACD2V.js → chunk-F2NF6FHV.js} +2 -2
  104. package/dist/safe-bash/command-chunks/{chunk-NFII726L.js → chunk-FAU2KL6I.js} +2 -2
  105. package/dist/safe-bash/command-chunks/{chunk-4EHY6J2Z.js → chunk-FB2WPI3M.js} +5 -5
  106. package/dist/safe-bash/command-chunks/{chunk-2PKBXGXD.js → chunk-FEBTT5NH.js} +5 -5
  107. package/dist/safe-bash/command-chunks/chunk-FGARVKAX.js +704 -0
  108. package/dist/safe-bash/command-chunks/{chunk-N4MUBJCT.js → chunk-FGHSE3RZ.js} +1 -1
  109. package/dist/safe-bash/command-chunks/{chunk-WBKB7HBZ.js → chunk-FHQOFEQK.js} +8 -8
  110. package/dist/safe-bash/command-chunks/{chunk-3ZRCL756.js → chunk-FJLSYX5P.js} +7 -7
  111. package/dist/safe-bash/command-chunks/{chunk-PMWW7KSB.js → chunk-FJSD43VF.js} +1 -1
  112. package/dist/safe-bash/command-chunks/{chunk-XKAUKLF7.js → chunk-FLSXHLJG.js} +9 -9
  113. package/dist/safe-bash/command-chunks/{chunk-3EW7GYHM.js → chunk-FR63MJSO.js} +7 -7
  114. package/dist/safe-bash/command-chunks/{chunk-NRFTYZ2R.js → chunk-FUYZUETI.js} +6 -6
  115. package/dist/safe-bash/command-chunks/{chunk-JUHOL5KB.js → chunk-G3FK5VVG.js} +1 -1
  116. package/dist/safe-bash/command-chunks/{chunk-4UPKVQWH.js → chunk-G3LUT475.js} +6 -6
  117. package/dist/safe-bash/command-chunks/{chunk-Q7UZTMF4.js → chunk-GAROGIVU.js} +1 -1
  118. package/dist/safe-bash/command-chunks/{chunk-4RRYWHED.js → chunk-GMBUOYTN.js} +4 -4
  119. package/dist/safe-bash/command-chunks/{chunk-FYYFV6PW.js → chunk-GR4ONCQ5.js} +6 -6
  120. package/dist/safe-bash/command-chunks/{chunk-XTEIT5CI.js → chunk-GTOMW4VV.js} +1 -1
  121. package/dist/safe-bash/command-chunks/{chunk-OVQP6KH5.js → chunk-H56BSMFQ.js} +6 -6
  122. package/dist/safe-bash/command-chunks/{chunk-RQYPFLZJ.js → chunk-HOJ7WDTS.js} +6 -6
  123. package/dist/safe-bash/command-chunks/{chunk-BLIFGBIO.js → chunk-HOKPYTHQ.js} +2 -2
  124. package/dist/safe-bash/command-chunks/chunk-HQEYSSZV.js +152 -0
  125. package/dist/safe-bash/command-chunks/{chunk-NEMUPUUB.js → chunk-ICJH6A73.js} +7 -7
  126. package/dist/safe-bash/command-chunks/{chunk-CSE4VQKG.js → chunk-IJE65P52.js} +3 -3
  127. package/dist/safe-bash/command-chunks/{chunk-MKOIPOXX.js → chunk-IOXMGD2H.js} +3 -3
  128. package/dist/safe-bash/command-chunks/{chunk-LDW3RF7Y.js → chunk-ISFGPCED.js} +12 -12
  129. package/dist/safe-bash/command-chunks/{chunk-S43QRKDC.js → chunk-IVKAFEPO.js} +7 -7
  130. package/dist/safe-bash/command-chunks/{chunk-A347DLRB.js → chunk-IWVANZWH.js} +3 -3
  131. package/dist/safe-bash/command-chunks/{chunk-ZXELXF2H.js → chunk-IZ3SD5S2.js} +4 -4
  132. package/dist/safe-bash/command-chunks/{chunk-HGIMFVI2.js → chunk-J6FNSVHT.js} +5 -5
  133. package/dist/safe-bash/command-chunks/{chunk-GLAF45M7.js → chunk-JA36YOZI.js} +1 -1
  134. package/dist/safe-bash/command-chunks/{chunk-WHNYT34N.js → chunk-K2R7H3KO.js} +1 -1
  135. package/dist/safe-bash/command-chunks/{chunk-HQ2UN2L2.js → chunk-K7VDCBXW.js} +21 -21
  136. package/dist/safe-bash/command-chunks/{chunk-CKEMZUE3.js → chunk-KDBU5Q2N.js} +6 -6
  137. package/dist/safe-bash/command-chunks/{chunk-6VBDJC6V.js → chunk-KDDXLHN7.js} +6 -6
  138. package/dist/safe-bash/command-chunks/{chunk-NEVQWOU6.js → chunk-KLAC2MIZ.js} +10 -10
  139. package/dist/safe-bash/command-chunks/{chunk-QGD64UHJ.js → chunk-KLCHCSIV.js} +1 -1
  140. package/dist/safe-bash/command-chunks/{chunk-CXME4YHU.js → chunk-KM2SMMXZ.js} +59 -201
  141. package/dist/safe-bash/command-chunks/{chunk-RHU44OMN.js → chunk-KXM3HTAF.js} +1 -1
  142. package/dist/safe-bash/command-chunks/{chunk-AVOGFREX.js → chunk-KYIGYYEY.js} +3 -3
  143. package/dist/safe-bash/command-chunks/{chunk-5OM3UIK3.js → chunk-L2VLASZ4.js} +3 -3
  144. package/dist/safe-bash/command-chunks/{chunk-Z7QOSXQC.js → chunk-LECGQSQW.js} +7 -7
  145. package/dist/safe-bash/command-chunks/{chunk-RXQ2G2YK.js → chunk-LFSWLJPR.js} +9 -9
  146. package/dist/safe-bash/command-chunks/{chunk-OSYY6E23.js → chunk-LJ3UYESS.js} +1 -1
  147. package/dist/safe-bash/command-chunks/{chunk-MVLVIMJ6.js → chunk-LMLBQSAM.js} +6 -6
  148. package/dist/safe-bash/command-chunks/{chunk-MGMTRGKM.js → chunk-LNAZ3E4Q.js} +4 -4
  149. package/dist/safe-bash/command-chunks/{chunk-WJ2ERUCQ.js → chunk-LNKZVU5V.js} +1 -1
  150. package/dist/safe-bash/command-chunks/{chunk-WWHMI4S3.js → chunk-LQDANF2B.js} +8 -8
  151. package/dist/safe-bash/command-chunks/{chunk-CIRDVCAZ.js → chunk-LQX7RAF7.js} +7 -7
  152. package/dist/safe-bash/command-chunks/{chunk-SWAKALDJ.js → chunk-LT2YCGC5.js} +10 -10
  153. package/dist/safe-bash/command-chunks/{chunk-Y7AXMCFV.js → chunk-LZY46GYY.js} +8 -8
  154. package/dist/safe-bash/command-chunks/{chunk-VT2PHQ63.js → chunk-MDFNUNK5.js} +15 -15
  155. package/dist/safe-bash/command-chunks/{chunk-YP3WWV5N.js → chunk-MN3BB4WW.js} +4 -4
  156. package/dist/safe-bash/command-chunks/{chunk-WTVJLHMG.js → chunk-MOUCMZZP.js} +1 -1
  157. package/dist/safe-bash/command-chunks/{chunk-IB5QP4LF.js → chunk-MQE77MEQ.js} +3 -3
  158. package/dist/safe-bash/command-chunks/{chunk-FSYMSWJU.js → chunk-MUTARE5I.js} +6 -6
  159. package/dist/safe-bash/command-chunks/{chunk-F762XDNG.js → chunk-MZYQKH26.js} +3 -3
  160. package/dist/safe-bash/command-chunks/{chunk-N6G3345Q.js → chunk-N32AP43V.js} +7 -7
  161. package/dist/safe-bash/command-chunks/{chunk-XU6S3XUZ.js → chunk-N35IJXBK.js} +9 -9
  162. package/dist/safe-bash/command-chunks/{chunk-EVYKV3QI.js → chunk-N3ZH4YYH.js} +3 -3
  163. package/dist/safe-bash/command-chunks/{chunk-VUWXLH3E.js → chunk-N4HWOLGZ.js} +2 -2
  164. package/dist/safe-bash/command-chunks/{chunk-WAT2562G.js → chunk-N5J3IZZK.js} +8042 -7189
  165. package/dist/safe-bash/command-chunks/{chunk-W3ZSWK76.js → chunk-NCNHJRIY.js} +8 -8
  166. package/dist/safe-bash/command-chunks/{chunk-FXCSPPYE.js → chunk-NDALIHKK.js} +20 -20
  167. package/dist/safe-bash/command-chunks/{chunk-BS5JEUEW.js → chunk-NKK76B4V.js} +8 -8
  168. package/dist/safe-bash/command-chunks/{chunk-4EZJV4FZ.js → chunk-NLCUQD7Y.js} +1 -1
  169. package/dist/safe-bash/command-chunks/{chunk-RHDERFMR.js → chunk-O2HNOQQG.js} +5 -5
  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-6CDDKNNA.js → chunk-RINR7XPR.js} +36 -10
  194. package/dist/safe-bash/command-chunks/{chunk-MPXMRTMY.js → chunk-ROQ3VNVX.js} +8 -8
  195. package/dist/safe-bash/command-chunks/{chunk-6WNVGCXD.js → chunk-RRAQII52.js} +5 -5
  196. package/dist/safe-bash/command-chunks/{chunk-2BNGPR6Z.js → chunk-RTHYAGKI.js} +2 -2
  197. package/dist/safe-bash/command-chunks/chunk-RTKDZBJS.js +816 -0
  198. package/dist/safe-bash/command-chunks/{chunk-JVKE7YZN.js → chunk-RVWIEXR7.js} +4 -4
  199. package/dist/safe-bash/command-chunks/{chunk-XM5QJCPD.js → chunk-S5ER73EA.js} +8 -8
  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-CZ5K2YPU.js → chunk-TXU7MMHN.js} +24 -24
  211. package/dist/safe-bash/command-chunks/{chunk-TYPS5MOU.js → chunk-TXWDR2P4.js} +1 -1
  212. package/dist/safe-bash/command-chunks/{chunk-ETXPMVR6.js → chunk-TY7JXEWI.js} +11 -11
  213. package/dist/safe-bash/command-chunks/{chunk-X6OHFKBL.js → chunk-U42WHQRH.js} +8 -8
  214. package/dist/safe-bash/command-chunks/{chunk-Z2WNYEPD.js → chunk-UFLMOU3B.js} +4 -4
  215. package/dist/safe-bash/command-chunks/{chunk-2BLTUQNK.js → chunk-UJYXSLM6.js} +2 -2
  216. package/dist/safe-bash/command-chunks/{chunk-Q7TVCBU2.js → chunk-UKAGRRLZ.js} +1 -1
  217. package/dist/safe-bash/command-chunks/{chunk-4GQKCUS5.js → chunk-UPWLHHZ2.js} +13 -13
  218. package/dist/safe-bash/command-chunks/{chunk-5L4YGRQU.js → chunk-URQSUMMJ.js} +4 -4
  219. package/dist/safe-bash/command-chunks/{chunk-KPHLESD4.js → chunk-UT5X6QRU.js} +5 -5
  220. package/dist/safe-bash/command-chunks/{chunk-T5S4SJGO.js → chunk-V6JPIZUW.js} +7 -7
  221. package/dist/safe-bash/command-chunks/{chunk-MKK6FM5H.js → chunk-VMZIAFVJ.js} +11 -11
  222. package/dist/safe-bash/command-chunks/{chunk-HK6MSB7Z.js → chunk-VNNNVT4C.js} +5 -5
  223. package/dist/safe-bash/command-chunks/{chunk-ROL5AEX6.js → chunk-VVV45NLY.js} +1 -1
  224. package/dist/safe-bash/command-chunks/chunk-VVWHFNHD.js +502 -0
  225. package/dist/safe-bash/command-chunks/{chunk-KCLJGRU7.js → chunk-VZTVR3JI.js} +12 -12
  226. package/dist/safe-bash/command-chunks/{chunk-PLR5IULU.js → chunk-WDVPHDBH.js} +5 -5
  227. package/dist/safe-bash/command-chunks/{chunk-MNK3DDH6.js → chunk-WH624PKJ.js} +2 -2
  228. package/dist/safe-bash/command-chunks/{chunk-TJLXSENN.js → chunk-WHZ6XK7Y.js} +1 -1
  229. package/dist/safe-bash/command-chunks/{chunk-DN6MSXY7.js → chunk-WIW3KDBS.js} +2 -2
  230. package/dist/safe-bash/command-chunks/{chunk-GXMPXMDP.js → chunk-WMBELKPP.js} +11 -11
  231. package/dist/safe-bash/command-chunks/{chunk-NHNZYWPW.js → chunk-WMV5224N.js} +3 -3
  232. package/dist/safe-bash/command-chunks/{chunk-RTNI47C5.js → chunk-WOL3LBXE.js} +4 -4
  233. package/dist/safe-bash/command-chunks/{chunk-7SOE7XIS.js → chunk-WVD5WZXD.js} +5 -5
  234. package/dist/safe-bash/command-chunks/{chunk-XMTR7QGL.js → chunk-X42MJT2J.js} +4 -4
  235. package/dist/safe-bash/command-chunks/{chunk-XUJAQA3S.js → chunk-XBWD6SI3.js} +33 -33
  236. package/dist/safe-bash/command-chunks/{chunk-ZQM37BGE.js → chunk-XFIDOCYH.js} +2 -2
  237. package/dist/safe-bash/command-chunks/{chunk-IBYMPAUW.js → chunk-XPQUUFQD.js} +2 -2
  238. package/dist/safe-bash/command-chunks/{chunk-NQINS4XY.js → chunk-XVEI4HZL.js} +1 -1
  239. package/dist/safe-bash/command-chunks/{chunk-KSBNZTAZ.js → chunk-YKODRSGT.js} +6 -6
  240. package/dist/safe-bash/command-chunks/{chunk-WZRFS5OY.js → chunk-YXR4JE4U.js} +4 -4
  241. package/dist/safe-bash/command-chunks/{chunk-DCMSPMMD.js → chunk-Z7UIOPHJ.js} +1 -1
  242. package/dist/safe-bash/command-chunks/{chunk-AY3KQ4EN.js → chunk-ZAYTFXUX.js} +7 -7
  243. package/dist/safe-bash/command-chunks/{chunk-DZH54L3F.js → chunk-ZM7HMBAJ.js} +10 -10
  244. package/dist/safe-bash/command-chunks/{chunk-NFGCBQN3.js → chunk-ZNCPIZCN.js} +2 -2
  245. package/dist/safe-bash/command-chunks/{chunk-HKGNBH7Z.js → chunk-ZRHKXN6W.js} +4 -4
  246. package/dist/safe-bash/command-chunks/{chunk-A45UG4KT.js → chunk-ZZERSKAR.js} +5 -5
  247. package/dist/safe-bash/command-chunks/{clipboard-BBDK33GP-QZ4ERNQX.js → clipboard-BBDK33GP-VB22F7GI.js} +2 -2
  248. package/dist/safe-bash/command-chunks/{command-engine-M7S4QIXV.js → command-engine-GHE6QUHU.js} +53 -21
  249. package/dist/safe-bash/command-chunks/{engine-YUYZJIB4-NZUDFEHL.js → engine-RG6HQCCB-FXYZS264.js} +1 -1
  250. package/dist/safe-bash/command-chunks/{gnumeric-UJPXWBVR-7VOHQAPM.js → gnumeric-UJPXWBVR-YPXTNEDZ.js} +2 -2
  251. package/dist/safe-bash/command-chunks/model-store-I7YAWL5V.js +54 -0
  252. package/dist/safe-bash/command-chunks/{xlsx-RE54MFCS-DI3F765V.js → xlsx-RE54MFCS-IQ6OXXKK.js} +1 -1
  253. package/dist/safe-bash/commands/bc/index.browser.js +1 -1
  254. package/dist/safe-bash/full-core.browser.js +4 -4
  255. package/dist/safe-bash/plugins/index.browser.js +3 -3
  256. package/dist/safe-bash/registry-entry.browser.js +2 -2
  257. package/dist/safe-bash/search.browser.js +1 -1
  258. package/dist/safe-bash/shell/runtime.d.ts +1 -0
  259. package/dist/safe-bash/shell/runtime.js +12 -3
  260. package/dist/safe-bash/shell/sync-extra-evaluators.js +7 -4
  261. package/dist/safe-bash/shell-entry.browser.js +2 -2
  262. package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
  263. package/dist/safe-bash-command-awk/awk.js +4 -4
  264. package/dist/safe-bash-command-awk/index.js +4 -4
  265. package/dist/safe-bash-command-cp/index.js +3 -3
  266. package/dist/safe-bash-command-csvkit/index.js +1 -1
  267. package/dist/safe-bash-command-diff/diff.js +2 -2
  268. package/dist/safe-bash-command-diff/index.js +3 -3
  269. package/dist/safe-bash-command-diff/sync.js +2 -2
  270. package/dist/safe-bash-command-factor/command.js +2 -2
  271. package/dist/safe-bash-command-factor/index.js +2 -2
  272. package/dist/safe-bash-command-ffmpeg/index.js +1 -1
  273. package/dist/safe-bash-command-ffprobe/index.js +2 -2
  274. package/dist/safe-bash-command-ffprobe/media.d.ts +5 -1
  275. package/dist/safe-bash-command-ffprobe/media.js +2 -2
  276. package/dist/safe-bash-command-getopt/command.js +2 -2
  277. package/dist/safe-bash-command-getopt/index.js +2 -2
  278. package/dist/safe-bash-command-html-to-markdown/index.js +51 -813
  279. package/dist/safe-bash-command-html-to-markdown/stored-destination.d.ts +8 -0
  280. package/dist/safe-bash-command-html-to-markdown/stored-destination.js +10 -0
  281. package/dist/safe-bash-command-html-to-markdown/stored-text.d.ts +4 -1
  282. package/dist/safe-bash-command-html-to-markdown/stored-text.js +1 -1
  283. package/dist/safe-bash-command-htmlq/index.js +1280 -419
  284. package/dist/safe-bash-command-iconv/command.js +2 -2
  285. package/dist/safe-bash-command-iconv/index.js +2 -2
  286. package/dist/safe-bash-command-llm/index.js +2 -2
  287. package/dist/safe-bash-command-llm/openai.js +2 -2
  288. package/dist/safe-bash-command-llm/providers/index.js +2 -2
  289. package/dist/safe-bash-command-llm/providers/openai.js +2 -2
  290. package/dist/safe-bash-command-node/commands/node/browser.js +4 -4
  291. package/dist/safe-bash-command-node/commands/node/default-runtime.js +4 -4
  292. package/dist/safe-bash-command-node/commands/node/safejs.js +4 -4
  293. package/dist/safe-bash-command-pandoc/command.js +10 -9
  294. package/dist/safe-bash-command-pandoc/index.js +60 -59
  295. package/dist/safe-bash-command-patch/index.js +6 -6
  296. package/dist/safe-bash-command-patch/patch-formats.js +3 -3
  297. package/dist/safe-bash-command-patch/patch-gnu-reject.js +1 -1
  298. package/dist/safe-bash-command-patch/patch.js +6 -6
  299. package/dist/safe-bash-command-patch/stored-patch.d.ts +7 -6
  300. package/dist/safe-bash-command-patch/unified.d.ts +5 -5
  301. package/dist/safe-bash-command-patch/unified.js +2 -2
  302. package/dist/safe-bash-command-pdftk/index.js +21 -108
  303. package/dist/safe-bash-command-pdftoppm/index.js +131 -27
  304. package/dist/safe-bash-command-playwright-cli/index.js +12 -12
  305. package/dist/safe-bash-command-playwright-cli/playwright/abilities.js +1 -1
  306. package/dist/safe-bash-command-playwright-cli/playwright/capability-events.js +1 -1
  307. package/dist/safe-bash-command-playwright-cli/playwright/capability-result.js +1 -1
  308. package/dist/safe-bash-command-playwright-cli/playwright/controller.js +7 -7
  309. package/dist/safe-bash-command-playwright-cli/playwright/download-capabilities.js +1 -1
  310. package/dist/safe-bash-command-playwright-cli/playwright/drop-capability.js +1 -1
  311. package/dist/safe-bash-command-playwright-cli/playwright/index.js +12 -12
  312. package/dist/safe-bash-command-playwright-cli/playwright/modal-capabilities.js +1 -1
  313. package/dist/safe-bash-command-playwright-cli/playwright/native-evaluation.js +1 -1
  314. package/dist/safe-bash-command-playwright-cli/playwright/native-json-snapshot.js +1 -1
  315. package/dist/safe-bash-command-playwright-cli/playwright/native-snapshot.js +1 -1
  316. package/dist/safe-bash-command-playwright-cli/playwright/open-options.js +2 -2
  317. package/dist/safe-bash-command-playwright-cli/playwright/profile.js +3 -3
  318. package/dist/safe-bash-command-playwright-cli/playwright/recording-capabilities.js +1 -1
  319. package/dist/safe-bash-command-playwright-cli/playwright/route-capabilities.js +1 -1
  320. package/dist/safe-bash-command-playwright-cli/playwright/snapshot.js +3 -3
  321. package/dist/safe-bash-command-playwright-cli/playwright/standard-capabilities.js +1 -1
  322. package/dist/safe-bash-command-playwright-cli/playwright/storage-capabilities.js +1 -1
  323. package/dist/safe-bash-command-playwright-cli/playwright/tracing-capabilities.js +1 -1
  324. package/dist/safe-bash-command-playwright-cli/playwright/webmcp-capabilities.js +1 -1
  325. package/dist/safe-bash-command-pptx/engine.js +1 -1
  326. package/dist/safe-bash-command-python/executor.js +11 -11
  327. package/dist/safe-bash-command-python/index.js +11 -11
  328. package/dist/safe-bash-command-python/jspi.js +2 -2
  329. package/dist/safe-bash-command-rg/index.js +3 -3
  330. package/dist/safe-bash-command-rg/rg-command.js +3 -3
  331. package/dist/safe-bash-command-safejs/index.js +4 -4
  332. package/dist/safe-bash-command-safejs/io.js +3 -3
  333. package/dist/safe-bash-command-safejs/render.js +2 -2
  334. package/dist/safe-bash-command-safejs/runtime.js +4 -4
  335. package/dist/safe-bash-command-soffice/index.js +5 -4
  336. package/dist/safe-bash-command-sort/index.js +3 -3
  337. package/dist/safe-bash-command-ssconvert/index.js +13 -13
  338. package/dist/safe-bash-command-tar/create.js +3 -3
  339. package/dist/safe-bash-command-tar/extract.js +3 -3
  340. package/dist/safe-bash-command-tar/index.js +7 -7
  341. package/dist/safe-bash-command-tar/modes.js +5 -5
  342. package/dist/safe-bash-command-unzip/index.js +2 -2
  343. package/dist/safe-bash-command-unzip/unzip.js +2 -2
  344. package/dist/safe-bash-command-xmllint/index.js +1 -1
  345. package/dist/safe-bash-command-xz/index.js +5 -5
  346. package/dist/safe-bash-compression-engine/files.js +5 -5
  347. package/dist/safe-bash-compression-engine/index.js +3 -3
  348. package/dist/safe-bash-compression-engine/operand.js +6 -6
  349. package/dist/safe-bash-compression-engine/stream.js +3 -3
  350. package/dist/safe-bash-compression-engine/zstd-decode.js +2 -2
  351. package/dist/safe-bash-contracts/escaping.js +3 -3
  352. package/dist/safe-bash-contracts/filesystem-output.js +3 -3
  353. package/dist/safe-bash-contracts/index.js +10 -10
  354. package/dist/safe-bash-docx-engine/ancillary-resources.js +9 -9
  355. package/dist/safe-bash-docx-engine/batch-operations.js +66 -66
  356. package/dist/safe-bash-docx-engine/batch-result-schema.js +78 -78
  357. package/dist/safe-bash-docx-engine/batch.js +77 -77
  358. package/dist/safe-bash-docx-engine/bookmarks.js +17 -17
  359. package/dist/safe-bash-docx-engine/charts.js +10 -10
  360. package/dist/safe-bash-docx-engine/command-option-rules.js +5 -5
  361. package/dist/safe-bash-docx-engine/command-properties.js +3 -3
  362. package/dist/safe-bash-docx-engine/comments.js +25 -25
  363. package/dist/safe-bash-docx-engine/control-bindings.js +20 -20
  364. package/dist/safe-bash-docx-engine/control-repeat.js +20 -20
  365. package/dist/safe-bash-docx-engine/controls.js +18 -18
  366. package/dist/safe-bash-docx-engine/create.js +10 -10
  367. package/dist/safe-bash-docx-engine/diagrams.js +10 -10
  368. package/dist/safe-bash-docx-engine/diff.js +12 -12
  369. package/dist/safe-bash-docx-engine/document-properties.js +15 -15
  370. package/dist/safe-bash-docx-engine/equations.js +16 -16
  371. package/dist/safe-bash-docx-engine/extract.js +13 -13
  372. package/dist/safe-bash-docx-engine/fields.js +22 -22
  373. package/dist/safe-bash-docx-engine/font-inventory.js +17 -17
  374. package/dist/safe-bash-docx-engine/font-resources.js +5 -5
  375. package/dist/safe-bash-docx-engine/image-batch-operations.js +13 -13
  376. package/dist/safe-bash-docx-engine/image-insertion.js +20 -20
  377. package/dist/safe-bash-docx-engine/image-layout.js +18 -18
  378. package/dist/safe-bash-docx-engine/image-replacement.js +21 -21
  379. package/dist/safe-bash-docx-engine/images.js +18 -18
  380. package/dist/safe-bash-docx-engine/index.js +113 -113
  381. package/dist/safe-bash-docx-engine/inspection.js +19 -19
  382. package/dist/safe-bash-docx-engine/invocation.js +8 -8
  383. package/dist/safe-bash-docx-engine/io.js +8 -8
  384. package/dist/safe-bash-docx-engine/links.js +20 -20
  385. package/dist/safe-bash-docx-engine/lists.js +19 -19
  386. package/dist/safe-bash-docx-engine/locations.js +14 -14
  387. package/dist/safe-bash-docx-engine/notes.js +21 -21
  388. package/dist/safe-bash-docx-engine/objects.js +18 -18
  389. package/dist/safe-bash-docx-engine/operation-json-schema.js +3 -3
  390. package/dist/safe-bash-docx-engine/operation-schema.js +2 -2
  391. package/dist/safe-bash-docx-engine/pack.js +13 -13
  392. package/dist/safe-bash-docx-engine/package-view-batch-operations.js +21 -21
  393. package/dist/safe-bash-docx-engine/pandoc-adapter.js +28 -28
  394. package/dist/safe-bash-docx-engine/paragraph-edit.js +24 -24
  395. package/dist/safe-bash-docx-engine/part-provider.js +3 -3
  396. package/dist/safe-bash-docx-engine/property-values.js +3 -3
  397. package/dist/safe-bash-docx-engine/publication.js +8 -8
  398. package/dist/safe-bash-docx-engine/removal.js +20 -20
  399. package/dist/safe-bash-docx-engine/revision-decisions.js +21 -21
  400. package/dist/safe-bash-docx-engine/revision-edit.js +19 -19
  401. package/dist/safe-bash-docx-engine/revisions.js +17 -17
  402. package/dist/safe-bash-docx-engine/run-format.js +19 -19
  403. package/dist/safe-bash-docx-engine/sanitize.js +33 -33
  404. package/dist/safe-bash-docx-engine/sections.js +18 -18
  405. package/dist/safe-bash-docx-engine/settings.js +10 -10
  406. package/dist/safe-bash-docx-engine/shape-edit.js +20 -20
  407. package/dist/safe-bash-docx-engine/signatures.js +14 -14
  408. package/dist/safe-bash-docx-engine/stories.js +21 -21
  409. package/dist/safe-bash-docx-engine/structure-model-batch-operations.js +37 -37
  410. package/dist/safe-bash-docx-engine/style-model-batch-operations.js +26 -26
  411. package/dist/safe-bash-docx-engine/style-model-result-schema.js +43 -43
  412. package/dist/safe-bash-docx-engine/styles.js +17 -17
  413. package/dist/safe-bash-docx-engine/table-edit.js +26 -26
  414. package/dist/safe-bash-docx-engine/table-read.js +15 -15
  415. package/dist/safe-bash-docx-engine/template.js +21 -21
  416. package/dist/safe-bash-docx-engine/text-replace.js +19 -19
  417. package/dist/safe-bash-docx-engine/text-resource-read.js +15 -15
  418. package/dist/safe-bash-docx-engine/text.js +15 -15
  419. package/dist/safe-bash-docx-engine/validation.js +6 -6
  420. package/dist/safe-bash-docx-engine/xml-parts.js +21 -21
  421. package/dist/safe-bash-line-ending-engine/command.js +4 -4
  422. package/dist/safe-bash-line-ending-engine/index.js +7 -7
  423. package/dist/safe-bash-markdown-engine/commonmark-blocks.js +3 -3
  424. package/dist/safe-bash-markdown-engine/commonmark-inlines.js +3 -3
  425. package/dist/safe-bash-markdown-engine/gfm-syntax.js +2 -2
  426. package/dist/safe-bash-markdown-engine/index.js +4 -4
  427. package/dist/safe-bash-network-engine/aggregate.js +3 -3
  428. package/dist/safe-bash-network-engine/args.js +3 -3
  429. package/dist/safe-bash-network-engine/body.js +4 -4
  430. package/dist/safe-bash-network-engine/decode.js +3 -3
  431. package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
  432. package/dist/safe-bash-network-engine/index.js +3 -3
  433. package/dist/safe-bash-network-engine/output.js +3 -3
  434. package/dist/safe-bash-network-engine/platform-portable.js +3 -3
  435. package/dist/safe-bash-network-engine/shared.js +2 -2
  436. package/dist/safe-bash-network-engine/transfer.js +9 -9
  437. package/dist/safe-bash-presentation-engine/accessibility.js +31 -30
  438. package/dist/safe-bash-presentation-engine/animation-editing.js +16 -15
  439. package/dist/safe-bash-presentation-engine/animations.js +16 -15
  440. package/dist/safe-bash-presentation-engine/backgrounds.js +17 -16
  441. package/dist/safe-bash-presentation-engine/bytes.js +4 -3
  442. package/dist/safe-bash-presentation-engine/chart-editing.js +34 -33
  443. package/dist/safe-bash-presentation-engine/chart-object-operations.js +25 -24
  444. package/dist/safe-bash-presentation-engine/charts.js +31 -30
  445. package/dist/safe-bash-presentation-engine/command-placeholder.js +60 -58
  446. package/dist/safe-bash-presentation-engine/comments.js +17 -16
  447. package/dist/safe-bash-presentation-engine/connector-operations.js +32 -31
  448. package/dist/safe-bash-presentation-engine/connectors.js +29 -28
  449. package/dist/safe-bash-presentation-engine/content-types.js +5 -4
  450. package/dist/safe-bash-presentation-engine/creation.js +7 -6
  451. package/dist/safe-bash-presentation-engine/diff.d.ts +1 -0
  452. package/dist/safe-bash-presentation-engine/diff.js +44 -33
  453. package/dist/safe-bash-presentation-engine/drawing-format.js +20 -19
  454. package/dist/safe-bash-presentation-engine/drawing-operations.js +31 -30
  455. package/dist/safe-bash-presentation-engine/drawing-schema.js +21 -20
  456. package/dist/safe-bash-presentation-engine/equations.js +17 -16
  457. package/dist/safe-bash-presentation-engine/errors.js +3 -2
  458. package/dist/safe-bash-presentation-engine/fields.js +17 -16
  459. package/dist/safe-bash-presentation-engine/font-metrics.js +4 -3
  460. package/dist/safe-bash-presentation-engine/image-extraction.js +20 -19
  461. package/dist/safe-bash-presentation-engine/image-formatting.js +32 -31
  462. package/dist/safe-bash-presentation-engine/image-insertion.js +18 -17
  463. package/dist/safe-bash-presentation-engine/image-replacement.js +21 -20
  464. package/dist/safe-bash-presentation-engine/image-value.js +5 -4
  465. package/dist/safe-bash-presentation-engine/images.js +19 -18
  466. package/dist/safe-bash-presentation-engine/index.js +135 -132
  467. package/dist/safe-bash-presentation-engine/layouts.js +16 -15
  468. package/dist/safe-bash-presentation-engine/length.js +4 -3
  469. package/dist/safe-bash-presentation-engine/links.js +16 -15
  470. package/dist/safe-bash-presentation-engine/masters.js +15 -14
  471. package/dist/safe-bash-presentation-engine/media-editing.js +24 -23
  472. package/dist/safe-bash-presentation-engine/media-extraction.js +17 -16
  473. package/dist/safe-bash-presentation-engine/media.js +16 -15
  474. package/dist/safe-bash-presentation-engine/memberships.js +15 -14
  475. package/dist/safe-bash-presentation-engine/notes.js +18 -17
  476. package/dist/safe-bash-presentation-engine/ole-enum.js +5 -4
  477. package/dist/safe-bash-presentation-engine/ole-insertion.js +20 -19
  478. package/dist/safe-bash-presentation-engine/opaque-objects.js +10 -9
  479. package/dist/safe-bash-presentation-engine/package-reader.js +6 -5
  480. package/dist/safe-bash-presentation-engine/package-tools.js +19 -18
  481. package/dist/safe-bash-presentation-engine/package-uri.js +4 -3
  482. package/dist/safe-bash-presentation-engine/package-writer.js +5 -4
  483. package/dist/safe-bash-presentation-engine/presentation-model.js +59 -57
  484. package/dist/safe-bash-presentation-engine/presentation-settings.js +14 -13
  485. package/dist/safe-bash-presentation-engine/properties.d.ts +2 -1
  486. package/dist/safe-bash-presentation-engine/properties.js +25 -15
  487. package/dist/safe-bash-presentation-engine/relationships.js +5 -4
  488. package/dist/safe-bash-presentation-engine/resource-limits.js +2 -1
  489. package/dist/safe-bash-presentation-engine/retained-diff.d.ts +56 -0
  490. package/dist/safe-bash-presentation-engine/retained-inspection.js +14 -13
  491. package/dist/safe-bash-presentation-engine/retained-package.js +6 -5
  492. package/dist/safe-bash-presentation-engine/retained-properties.d.ts +26 -0
  493. package/dist/safe-bash-presentation-engine/retained-text.js +33 -517
  494. package/dist/safe-bash-presentation-engine/sanitize.js +20 -16
  495. package/dist/safe-bash-presentation-engine/selectors.js +11 -10
  496. package/dist/safe-bash-presentation-engine/shape-groups.js +31 -30
  497. package/dist/safe-bash-presentation-engine/shape-operations.js +30 -29
  498. package/dist/safe-bash-presentation-engine/shape-path-operations.js +32 -31
  499. package/dist/safe-bash-presentation-engine/shape-paths.js +16 -15
  500. package/dist/safe-bash-presentation-engine/shape-presets.js +4 -3
  501. package/dist/safe-bash-presentation-engine/shape-selection.js +31 -30
  502. package/dist/safe-bash-presentation-engine/shape-transforms.js +18 -17
  503. package/dist/safe-bash-presentation-engine/shapes.js +27 -26
  504. package/dist/safe-bash-presentation-engine/slide-copy.js +17 -16
  505. package/dist/safe-bash-presentation-engine/slide-import.js +18 -17
  506. package/dist/safe-bash-presentation-engine/slide-merge-split.js +20 -19
  507. package/dist/safe-bash-presentation-engine/slide-model.js +43 -42
  508. package/dist/safe-bash-presentation-engine/slide-removal.js +18 -17
  509. package/dist/safe-bash-presentation-engine/slide-transfer-budget.js +10 -9
  510. package/dist/safe-bash-presentation-engine/slides.js +19 -18
  511. package/dist/safe-bash-presentation-engine/table-operations.js +33 -32
  512. package/dist/safe-bash-presentation-engine/table-spans.js +32 -31
  513. package/dist/safe-bash-presentation-engine/tables.js +31 -30
  514. package/dist/safe-bash-presentation-engine/tags.js +16 -15
  515. package/dist/safe-bash-presentation-engine/template-bindings.js +33 -32
  516. package/dist/safe-bash-presentation-engine/template-repeat.js +40 -39
  517. package/dist/safe-bash-presentation-engine/text-fitting.js +27 -26
  518. package/dist/safe-bash-presentation-engine/text-frames.js +27 -26
  519. package/dist/safe-bash-presentation-engine/text-paragraphs.js +27 -26
  520. package/dist/safe-bash-presentation-engine/text-reading.js +12 -11
  521. package/dist/safe-bash-presentation-engine/text-replacement.js +17 -16
  522. package/dist/safe-bash-presentation-engine/text-runs.js +20 -19
  523. package/dist/safe-bash-presentation-engine/themes.js +16 -15
  524. package/dist/safe-bash-presentation-engine/transitions.js +16 -15
  525. package/dist/safe-bash-presentation-engine/validation.js +10 -9
  526. package/dist/safe-bash-presentation-engine/xml-parts.js +19 -18
  527. package/dist/safe-bash-presentation-engine/xml-view.js +4 -3
  528. package/dist/safe-bash-presentation-engine/xml.js +4 -3
  529. package/dist/safe-bash-query-engine/index.js +3 -3
  530. package/dist/safe-bash-query-engine/interpreter.js +2 -2
  531. package/dist/safe-bash-query-engine/query-core.js +3 -3
  532. package/dist/safe-bash-regex-engine/ere/matcher.js +3 -3
  533. package/dist/safe-bash-xml-engine/document.js +3 -3
  534. package/dist/safe-bash-xml-engine/evaluate.js +1 -1
  535. package/dist/safe-bash-xml-engine/index.js +4 -4
  536. package/dist/safe-bash-xml-engine/json.js +14 -10
  537. package/dist/safe-bash-xml-engine/query.js +2 -2
  538. package/dist/safe-bash-xml-engine/stored-document.d.ts +4 -0
  539. package/dist/safe-bash-xml-engine/stored-document.js +1 -1
  540. package/dist/safe-bash-xml-engine/stored-evaluate.js +3 -3
  541. package/dist/safe-bash-zip-engine/index.js +2 -2
  542. package/dist/safe-bash-zip-engine/zip/repair.js +2 -2
  543. package/dist/safe-bash-zip-engine/zip/sfx.js +2 -2
  544. package/dist/safe-bash-zip-engine/zip-format.js +2 -2
  545. package/dist/spreadsheet-format-xls/biff-properties-merge.js +63 -67
  546. package/dist/spreadsheet-format-xls/biff-properties.js +3 -3
  547. package/dist/spreadsheet-format-xls/biff-property-transcode.d.ts +6 -1
  548. package/dist/spreadsheet-format-xls/biff-property-transcode.js +15 -4
  549. package/dist/spreadsheet-format-xls/biff-property-values.d.ts +6 -1
  550. package/dist/spreadsheet-format-xls/biff-property-values.js +81 -12
  551. package/dist/xlsx-ast/comment-geometry.d.ts +12 -0
  552. package/dist/xlsx-ast/comment-geometry.js +71 -0
  553. package/dist/xlsx-ast/xlsx-metadata.d.ts +1 -1
  554. package/dist/xlsx-ast/xlsx-metadata.js +27 -2
  555. package/dist/xlsx-ast/xlsx-write-metadata.js +9 -1
  556. package/dist/xlsx-ast/xlsx.js +9 -4
  557. package/package.json +5 -3
  558. package/dist/safe-bash/command-chunks/biff-A7XPBWAK-DCLG5QKF.js +0 -5417
  559. package/dist/safe-bash/command-chunks/chunk-DBNJEXHK.js +0 -387
  560. package/dist/safe-bash/command-chunks/chunk-EV5G535P.js +0 -240
  561. package/dist/safe-bash/command-chunks/model-store-UB5DWMAP.js +0 -54
  562. package/dist/safe-bash/command-chunks/{chunk-NGSO645G.js → chunk-3ZVK2OAY.js} +6 -6
  563. package/dist/safe-bash/command-chunks/{chunk-W2FKFEVY.js → chunk-4YSBUQPV.js} +3 -3
  564. package/dist/safe-bash/command-chunks/{chunk-UJSLBBQ7.js → chunk-5MFRN3CB.js} +4 -4
  565. package/dist/safe-bash/command-chunks/{chunk-AW4Q3GZW.js → chunk-5QXRIZSS.js} +3 -3
  566. package/dist/safe-bash/command-chunks/{chunk-KUGV3SSL.js → chunk-CZXYWGVO.js} +3 -3
  567. package/dist/safe-bash/command-chunks/{chunk-JWORWL72.js → chunk-DX7KU6YU.js} +3 -3
  568. package/dist/safe-bash/command-chunks/{chunk-Z37OM247.js → chunk-E3BL7W5C.js} +3 -3
  569. package/dist/safe-bash/command-chunks/{chunk-RIKNMBLZ.js → chunk-FEKECRJP.js} +3 -3
  570. package/dist/safe-bash/command-chunks/{chunk-D3HW7R2N.js → chunk-FTZFCMVI.js} +9 -9
  571. package/dist/safe-bash/command-chunks/{chunk-KRRG4MGH.js → chunk-GEDO5V32.js} +3 -3
  572. package/dist/safe-bash/command-chunks/{chunk-NBRXQUK7.js → chunk-M3OXQXCU.js} +3 -3
  573. package/dist/safe-bash/command-chunks/{chunk-JRSZ5IGD.js → chunk-OAM2SUUI.js} +6 -6
  574. package/dist/safe-bash/command-chunks/{chunk-HFKS6AET.js → chunk-OCOJMKDP.js} +4 -4
  575. package/dist/safe-bash/command-chunks/{chunk-FMJKCVSQ.js → chunk-OOB7YCFQ.js} +3 -3
  576. package/dist/safe-bash/command-chunks/{chunk-GGH376XQ.js → chunk-OU4VE5CR.js} +6 -6
  577. package/dist/safe-bash/command-chunks/{chunk-DYERIXPU.js → chunk-QGTQJCKW.js} +3 -3
  578. package/dist/safe-bash/command-chunks/{chunk-ZSQCROFE.js → chunk-RXXNLH7A.js} +3 -3
  579. package/dist/safe-bash/command-chunks/{chunk-TI52LKLL.js → chunk-UVM6QG2H.js} +3 -3
  580. package/dist/safe-bash/command-chunks/{chunk-BJXADHRT.js → chunk-WKU65Z3Q.js} +6 -6
  581. package/dist/safe-bash/command-chunks/{chunk-KGKF5NM2.js → chunk-WOXLPDO6.js} +3 -3
  582. package/dist/safe-bash/command-chunks/{chunk-Y5ADXWBQ.js → chunk-WXW665TV.js} +4 -4
  583. package/dist/safe-bash/command-chunks/{chunk-FWCUEZ3K.js → chunk-WYBCSJFG.js} +3 -3
  584. package/dist/safe-bash/command-chunks/{chunk-BXU5Y7I5.js → chunk-XI2LETBJ.js} +3 -3
  585. 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";
@@ -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);
@@ -46,7 +46,7 @@ export async function readBiffProperties(streams, context, accountText, accountW
46
46
  accountWork(file.size);
47
47
  const sections = readPropertySectionRanges(file, admit, accountWork, context);
48
48
  let unknown = false;
49
- const modeled = [];
49
+ const modeled = retained ? [] : undefined;
50
50
  for await (const { guid, offset, end } of sections) {
51
51
  if (!biffPropertyFields.has(guid) && guid !== custom) {
52
52
  unknown = true;
@@ -140,7 +140,7 @@ export async function readBiffProperties(streams, context, accountText, accountW
140
140
  }
141
141
  accountText(key);
142
142
  properties[key] = value;
143
- modeled.push([offset, id, key]);
143
+ modeled?.push([offset, id, key]);
144
144
  observe?.({ stream: streamName, section: offset, id, key, value });
145
145
  }
146
146
  });
@@ -148,7 +148,7 @@ export async function readBiffProperties(streams, context, accountText, accountW
148
148
  unknown = true;
149
149
  });
150
150
  }
151
- if (unknown && retained) {
151
+ if (unknown && retained && modeled) {
152
152
  if (file.size * 2 > (context.limits.workbookTextBytes ?? context.limits.inputBytes * 2))
153
153
  throw new SsconvertError("resource-limit", "ssconvert BIFF property retention limit exceeded");
154
154
  let encoded = "";
@@ -1,5 +1,10 @@
1
1
  import type { CapabilityContext } from "../spreadsheet-engine/contracts.js";
2
2
  import type { BiffPropertyRange } from './biff-property-range.js';
3
3
  import type { BiffPropertySource } from './biff-encrypted-properties-write.js';
4
- /** Count UTF-16 units before staging; both passes retain only a bounded decoder window. */
4
+ /** Count UTF-16 units before serialization; both passes retain only a bounded decoder window. */
5
+ export declare function wideBiffPropertyBytes(source: BiffPropertyRange, context: CapabilityContext, charge: (amount: number) => void, reserve: (length: number) => number): Promise<{
6
+ size: number;
7
+ chunks(): AsyncIterable<Uint8Array>;
8
+ }>;
9
+ /** Convenience API for callers that need an independently owned range source. */
5
10
  export declare function stageWideBiffProperty(source: BiffPropertyRange, context: CapabilityContext, charge: (amount: number) => void, reserve: (length: number) => number): Promise<BiffPropertySource>;
@@ -1,20 +1,24 @@
1
1
  import { stagePropertyBytes } from './biff-property-bytes.js';
2
- /** Count UTF-16 units before staging; both passes retain only a bounded decoder window. */
3
- export async function stageWideBiffProperty(source, context, charge, reserve) {
2
+ /** Count UTF-16 units before serialization; both passes retain only a bounded decoder window. */
3
+ export async function wideBiffPropertyBytes(source, context, charge, reserve) {
4
4
  reserve(source.size);
5
5
  const text = source.slice(8, await source.u32(4) - 1);
6
6
  const parts = async function* () {
7
+ context.signal.throwIfAborted();
7
8
  const decoder = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true });
8
9
  for (let at = 0; at < text.size;) {
10
+ context.signal.throwIfAborted();
9
11
  const bytes = await text.read(at, Math.min(8192, text.size - at));
10
12
  at += bytes.length;
11
13
  try {
14
+ context.signal.throwIfAborted();
12
15
  yield decoder.decode(bytes, { stream: true });
13
16
  }
14
17
  finally {
15
18
  bytes.fill(0);
16
19
  }
17
20
  }
21
+ context.signal.throwIfAborted();
18
22
  yield decoder.decode();
19
23
  };
20
24
  let units = 0;
@@ -22,7 +26,8 @@ export async function stageWideBiffProperty(source, context, charge, reserve) {
22
26
  units += part.length;
23
27
  charge(units);
24
28
  const length = reserve(8 + (units + 1) * 2);
25
- return stagePropertyBytes({ length, async *chunks() {
29
+ return { size: length, async *chunks() {
30
+ context.signal.throwIfAborted();
26
31
  const header = new Uint8Array(8), view = new DataView(header.buffer);
27
32
  view.setUint32(0, 31, true);
28
33
  view.setUint32(4, units + 1, true);
@@ -36,10 +41,16 @@ export async function stageWideBiffProperty(source, context, charge, reserve) {
36
41
  output.setUint16(i * 2, part.charCodeAt(at + i), true);
37
42
  yield buffer.subarray(0, size * 2);
38
43
  }
44
+ context.signal.throwIfAborted();
39
45
  yield new Uint8Array(2);
40
46
  }
41
47
  finally {
42
48
  buffer.fill(0);
43
49
  }
44
- } }, context);
50
+ } };
51
+ }
52
+ /** Convenience API for callers that need an independently owned range source. */
53
+ export async function stageWideBiffProperty(source, context, charge, reserve) {
54
+ const output = await wideBiffPropertyBytes(source, context, charge, reserve);
55
+ return stagePropertyBytes({ length: output.size, chunks: output.chunks }, context);
45
56
  }
@@ -15,16 +15,21 @@ export declare class BiffMutablePropertyValues {
15
15
  private first;
16
16
  private last;
17
17
  private count;
18
+ private paddedSize;
18
19
  private readonly root;
19
20
  constructor(context: CapabilityContext, charge: (amount: number) => void);
20
21
  get size(): number;
22
+ get serializedSize(): number;
21
23
  private check;
22
24
  private allocate;
23
25
  private io;
24
26
  private read;
25
27
  private write;
26
28
  get(id: number): Promise<BiffPropertyRange | undefined>;
27
- set(id: number, value: BiffPropertyRange): Promise<void>;
29
+ set(id: number, value: BiffPropertyRange | {
30
+ readonly size: number;
31
+ chunks(): AsyncIterable<Uint8Array>;
32
+ }): Promise<void>;
28
33
  delete(id: number): Promise<boolean>;
29
34
  entries(): AsyncGenerator<readonly [number, BiffPropertyRange]>;
30
35
  close(): Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import { IntegerTable } from "@poe-platform/safe-fs/storage";
2
2
  import { SsconvertError } from "../spreadsheet-engine/contracts.js";
3
3
  import { Binary, invalidBiff } from './biff-binary.js';
4
- import { BiffPropertyRange } from './biff-property-range.js';
4
+ import { BiffPropertyRange, propertyRange } from './biff-property-range.js';
5
5
  /** Mutable insertion order with immutable payload snapshots. Deleted payloads remain
6
6
  * readable until close, so values can be moved between independently edited sections. */
7
7
  export class BiffMutablePropertyValues {
@@ -17,6 +17,7 @@ export class BiffMutablePropertyValues {
17
17
  first = 0;
18
18
  last = 0;
19
19
  count = 0;
20
+ paddedSize = 0;
20
21
  root = { read: (at, count) => this.read(at, count), check: () => this.check() };
21
22
  constructor(context, charge) {
22
23
  this.context = context;
@@ -30,6 +31,7 @@ export class BiffMutablePropertyValues {
30
31
  context.own(() => this.close());
31
32
  }
32
33
  get size() { this.check(); return this.fallback?.size ?? this.count; }
34
+ get serializedSize() { return 8 + this.size * 8 + this.paddedSize; }
33
35
  check() {
34
36
  this.context.signal.throwIfAborted();
35
37
  if (this.closed)
@@ -71,8 +73,46 @@ export class BiffMutablePropertyValues {
71
73
  }
72
74
  async set(id, value) {
73
75
  this.check();
74
- if (this.fallback) {
76
+ if (!(value instanceof BiffPropertyRange) && (!Number.isSafeInteger(value.size) || value.size < 0 || value.size > this.context.limits.outputBytes))
77
+ throw new SsconvertError('resource-limit', 'Invalid BIFF mutable property serialization size');
78
+ if (this.fallback && value instanceof BiffPropertyRange) {
79
+ const previous = this.fallback.get(id);
75
80
  this.fallback.set(id, value);
81
+ this.paddedSize += Math.ceil(value.size / 4) * 4 - Math.ceil((previous?.size ?? 0) / 4) * 4;
82
+ return;
83
+ }
84
+ const chunks = async function* () {
85
+ if (!(value instanceof BiffPropertyRange)) {
86
+ yield* value.chunks();
87
+ return;
88
+ }
89
+ for (let at = 0; at < value.size;) {
90
+ const bytes = await value.read(at, Math.min(16384, value.size - at));
91
+ try {
92
+ at += bytes.length;
93
+ yield bytes;
94
+ }
95
+ finally {
96
+ bytes.fill(0);
97
+ }
98
+ }
99
+ };
100
+ if (this.fallback) {
101
+ const bytes = new Uint8Array(value.size);
102
+ let at = 0;
103
+ for await (const part of chunks()) {
104
+ this.check();
105
+ if (part.length > bytes.length - at)
106
+ invalidBiff('invalid mutable property serialization size');
107
+ bytes.set(part, at);
108
+ at += part.length;
109
+ }
110
+ this.check();
111
+ if (at !== bytes.length)
112
+ invalidBiff('truncated mutable property serialization');
113
+ const previous = this.fallback.get(id);
114
+ this.fallback.set(id, propertyRange(bytes, this.context));
115
+ this.paddedSize += Math.ceil(bytes.length / 4) * 4 - Math.ceil((previous?.size ?? 0) / 4) * 4;
76
116
  return;
77
117
  }
78
118
  this.charge(value.size);
@@ -82,16 +122,35 @@ export class BiffMutablePropertyValues {
82
122
  }
83
123
  const existing = await this.index.get(BigInt(id));
84
124
  this.check();
125
+ const previousSize = existing ? new Binary(await this.read(Number(existing) + 16, 8)).f64(0) : 0;
85
126
  const data = this.allocate(value.size);
86
- for (let at = 0; at < value.size;) {
87
- const bytes = await value.read(at, Math.min(16384, value.size - at));
88
- try {
89
- await this.write(data + at, bytes);
90
- at += bytes.length;
91
- }
92
- finally {
93
- bytes.fill(0);
127
+ const buffer = new Uint8Array(Math.min(16384, value.size));
128
+ let written = 0, used = 0;
129
+ try {
130
+ for await (const part of chunks()) {
131
+ this.check();
132
+ if (part.length > value.size - written - used)
133
+ invalidBiff('invalid mutable property serialization size');
134
+ for (let at = 0; at < part.length;) {
135
+ const count = Math.min(buffer.length - used, part.length - at);
136
+ buffer.set(part.subarray(at, at + count), used);
137
+ used += count;
138
+ at += count;
139
+ if (used === buffer.length) {
140
+ await this.write(data + written, buffer);
141
+ written += used;
142
+ used = 0;
143
+ }
144
+ }
94
145
  }
146
+ this.check();
147
+ if (written + used !== value.size)
148
+ invalidBiff('truncated mutable property serialization');
149
+ if (used)
150
+ await this.write(data + written, buffer.subarray(0, used));
151
+ }
152
+ finally {
153
+ buffer.fill(0);
95
154
  }
96
155
  const record = new Uint8Array(32), view = new DataView(record.buffer);
97
156
  view.setFloat64(8, data, true);
@@ -100,6 +159,7 @@ export class BiffMutablePropertyValues {
100
159
  view.setUint32(28, 1, true);
101
160
  if (existing) {
102
161
  await this.write(Number(existing) + 8, record.subarray(8, 24));
162
+ this.paddedSize += Math.ceil(value.size / 4) * 4 - Math.ceil(previousSize / 4) * 4;
103
163
  return;
104
164
  }
105
165
  const position = this.allocate(32);
@@ -114,19 +174,28 @@ export class BiffMutablePropertyValues {
114
174
  await this.index.set(BigInt(id), BigInt(position));
115
175
  this.check();
116
176
  this.count++;
177
+ this.paddedSize += Math.ceil(value.size / 4) * 4;
117
178
  }
118
179
  async delete(id) {
119
180
  this.check();
120
- if (this.fallback)
121
- return this.fallback.delete(id);
181
+ if (this.fallback) {
182
+ const previous = this.fallback.get(id);
183
+ if (!previous)
184
+ return false;
185
+ this.fallback.delete(id);
186
+ this.paddedSize -= Math.ceil(previous.size / 4) * 4;
187
+ return true;
188
+ }
122
189
  const position = await this.index.get(BigInt(id));
123
190
  this.check();
124
191
  if (!position)
125
192
  return false;
193
+ const previousSize = new Binary(await this.read(Number(position) + 16, 8)).f64(0);
126
194
  await this.write(Number(position) + 28, new Uint8Array(4));
127
195
  await this.index.set(BigInt(id), 0n);
128
196
  this.check();
129
197
  this.count--;
198
+ this.paddedSize -= Math.ceil(previousSize / 4) * 4;
130
199
  return true;
131
200
  }
132
201
  async *entries() {
@@ -0,0 +1,12 @@
1
+ import type { MetadataNode } from "../spreadsheet-engine/codecs/xlsx-write-support.js";
2
+ interface CommentGeometry {
3
+ readonly style: Readonly<Record<string, string>>;
4
+ readonly anchor: string;
5
+ readonly flags: readonly {
6
+ name: string;
7
+ text: string;
8
+ }[];
9
+ }
10
+ /** Retain only scalar geometry for uniquely identified VML notes, never shape relationships or executable markup. */
11
+ export declare function readCommentGeometry(roots: readonly (MetadataNode | undefined)[], charge: (amount?: number) => void): ReadonlyMap<string, CommentGeometry | undefined>;
12
+ export {};
@@ -0,0 +1,71 @@
1
+ /** Retain only scalar geometry for uniquely identified VML notes, never shape relationships or executable markup. */
2
+ export function readCommentGeometry(roots, charge) {
3
+ const result = new Map();
4
+ const vml = "urn:schemas-microsoft-com:vml", excel = "urn:schemas-microsoft-com:office:excel";
5
+ for (const root of roots)
6
+ for (const shape of root?.children ?? []) {
7
+ charge();
8
+ if (shape.name !== "shape" || shape.namespace !== vml)
9
+ continue;
10
+ const data = shape.children.find(n => { charge(); return n.name === "ClientData" && n.namespace === excel && n.attributes.ObjectType === "Note"; });
11
+ if (!data)
12
+ continue;
13
+ const fields = new Map();
14
+ let duplicate = false;
15
+ for (const field of data.children) {
16
+ charge();
17
+ if (field.namespace !== excel)
18
+ continue;
19
+ duplicate ||= fields.has(field.name);
20
+ fields.set(field.name, field);
21
+ }
22
+ const rowText = fields.get("Row")?.text.trim(), columnText = fields.get("Column")?.text.trim();
23
+ if (!rowText || !columnText)
24
+ continue;
25
+ const row = Number(rowText), column = Number(columnText);
26
+ if (!Number.isInteger(row) || row < 0 || row >= 1048576 || !Number.isInteger(column) || column < 0 || column >= 16384)
27
+ continue;
28
+ const key = `${row}:${column}`;
29
+ if (result.has(key)) {
30
+ result.set(key, undefined);
31
+ continue;
32
+ }
33
+ // An invalid or duplicate source cannot lend its geometry to another note.
34
+ result.set(key, undefined);
35
+ const anchor = fields.get("Anchor")?.text, coordinates = anchor?.split(",").map(s => s.trim());
36
+ if (duplicate || !coordinates || coordinates.length !== 8 || coordinates.some(s => !s || !Number.isSafeInteger(Number(s)) || Number(s) < 0))
37
+ continue;
38
+ if ([0, 4].some(i => Number(coordinates[i]) >= 16384) || [2, 6].some(i => Number(coordinates[i]) >= 1048576))
39
+ continue;
40
+ const style = {};
41
+ for (const declaration of (shape.attributes.style ?? "").split(";")) {
42
+ charge();
43
+ const colon = declaration.indexOf(":");
44
+ if (colon < 0)
45
+ continue;
46
+ const name = declaration.slice(0, colon).trim().toLowerCase(), value = declaration.slice(colon + 1).trim().toLowerCase();
47
+ if (["margin-left", "margin-top", "width", "height"].includes(name)) {
48
+ const unit = ["pt", "px", "in", "cm", "mm", "pc"].find(u => value.endsWith(u));
49
+ const scalar = unit ? value.slice(0, -unit.length).trim() : value;
50
+ const number = Number(scalar);
51
+ if (scalar && Number.isFinite(number) && (unit || number === 0) && (!["width", "height"].includes(name) || number >= 0))
52
+ style[name] = `${number}${unit ?? ""}`;
53
+ }
54
+ else if (name === "visibility" && ["visible", "hidden"].includes(value))
55
+ style[name] = value;
56
+ else if (name === "z-index" && value && Number.isSafeInteger(Number(value)))
57
+ style[name] = value;
58
+ }
59
+ const flags = [];
60
+ for (const name of ["MoveWithCells", "SizeWithCells", "Visible", "AutoFill"]) {
61
+ const field = fields.get(name);
62
+ if (!field)
63
+ continue;
64
+ const text = field.text.trim();
65
+ if (["", "true", "false", "t", "f", "1", "0"].includes(text.toLowerCase()))
66
+ flags.push({ name, text });
67
+ }
68
+ result.set(key, { style, anchor: coordinates.join(", "), flags });
69
+ }
70
+ return result;
71
+ }
@@ -6,5 +6,5 @@ type SourceNode = XmlElement | MetadataNode;
6
6
  export declare function gnode(name: string, attributes?: Readonly<Record<string, string | number>>, children?: readonly ImportedValue[], text?: string): ImportedValue;
7
7
  /** Translate measured sheet metadata into the existing workbook codec model. */
8
8
  export declare function readXlsxMetadata(sheet: SourceNode): readonly UnsupportedRecord[];
9
- export declare function readXlsxComments(comments: XmlElement, context: CapabilityContext): UnsupportedRecord;
9
+ export declare function readXlsxComments(comments: XmlElement, context: CapabilityContext, drawings?: readonly XmlElement[]): UnsupportedRecord;
10
10
  export {};
@@ -168,7 +168,31 @@ export function readXlsxMetadata(sheet) {
168
168
  }
169
169
  return records;
170
170
  }
171
- export function readXlsxComments(comments, context) {
171
+ export function readXlsxComments(comments, context, drawings = []) {
172
+ const printing = new Map();
173
+ const excel = "urn:schemas-microsoft-com:office:excel";
174
+ for (const drawing of drawings)
175
+ for (const shape of drawing.children) {
176
+ context.signal.throwIfAborted();
177
+ if (shape.namespace !== "urn:schemas-microsoft-com:vml" || shape.localName !== "shape")
178
+ continue;
179
+ for (const data of shape.children) {
180
+ if (data.namespace !== excel || data.localName !== "ClientData" || attribute(data, "ObjectType") !== "Note")
181
+ continue;
182
+ const fields = data.children.filter(n => n.namespace === excel);
183
+ const rowText = fields.find(n => n.localName === "Row")?.text.trim(), columnText = fields.find(n => n.localName === "Column")?.text.trim();
184
+ if (!rowText || !columnText)
185
+ continue;
186
+ const row = Number(rowText), column = Number(columnText);
187
+ if (!Number.isInteger(row) || row < 0 || row >= 1048576 || !Number.isInteger(column) || column < 0 || column >= 16384)
188
+ continue;
189
+ const key = formatA1(row, column);
190
+ const flags = fields.filter(n => n.localName === "PrintObject");
191
+ const ambiguous = printing.has(key) || flags.length > 1 || fields.filter(n => n.localName === "Row").length > 1 || fields.filter(n => n.localName === "Column").length > 1;
192
+ const value = flags[0]?.text.trim().toLowerCase();
193
+ printing.set(key, ambiguous ? undefined : ["false", "f", "0"].includes(value ?? "") ? 0 : 1);
194
+ }
195
+ }
172
196
  const authors = comments.children.find(c => c.localName === "authors")?.children
173
197
  .filter(c => c.localName === "author").map(c => decodeXlsxString(c.text)) ?? [];
174
198
  const objects = [];
@@ -179,13 +203,14 @@ export function readXlsxComments(comments, context) {
179
203
  const ref = attribute(comment, "ref");
180
204
  if (!ref)
181
205
  continue;
206
+ const position = parseA1(ref.split(":")[0]);
182
207
  const author = authors[numeric(attribute(comment, "authorId"), 0)];
183
208
  const text = readXlsxString(comment.children.find(c => c.localName === "text"), context);
184
209
  // The Gnumeric markup codec cannot carry colon-bearing font names.
185
210
  // The original comments part retains those rich nodes for XLSX transport.
186
211
  const representable = text.richText?.every(run => typeof run.attributes.family !== "string" ||
187
212
  !run.attributes.family.includes(":"));
188
- objects.push(gnode("CellComment", { ObjectBound: ref.split(":")[0], ObjectOffset: "1 0 1 0", Direction: 17, Print: 1,
213
+ objects.push(gnode("CellComment", { ObjectBound: ref.split(":")[0], ObjectOffset: "1 0 1 0", Direction: 17, Print: printing.get(formatA1(position.row, position.column)) ?? 1,
189
214
  ...(author !== undefined ? { Author: author } : {}), Text: text.value,
190
215
  ...(text.richText?.length && representable ? { TextFormat: writeGnumericRichText(text.richText) } : {}) }));
191
216
  }