@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
@@ -0,0 +1,167 @@
1
+ import { sha256 } from '@noble/hashes/sha2.js';
2
+ import { IntegerTable } from "@poe-platform/safe-fs/storage";
3
+ import { SsconvertError } from "../spreadsheet-engine/contracts.js";
4
+ /** Exact UTF-16 identity, including empty names and embedded NULs. Calls are sequential.
5
+ * A bounded hash index points to name records; collisions use exact bounded comparisons. */
6
+ export class BiffPropertyNames {
7
+ context;
8
+ charge;
9
+ storage;
10
+ index;
11
+ fallback;
12
+ initialized = false;
13
+ pending = Promise.resolve();
14
+ closed = false;
15
+ closing;
16
+ constructor(context, charge) {
17
+ this.context = context;
18
+ this.charge = charge;
19
+ this.storage = context.createWorkingStorage?.();
20
+ if (this.storage)
21
+ this.index = new IntegerTable({ allocate: length => this.allocate(length),
22
+ read: (at, length) => this.read(at, length),
23
+ write: async (at, bytes) => {
24
+ const owned = new Uint8Array(bytes);
25
+ try {
26
+ await this.io(() => this.storage.write(at, owned));
27
+ }
28
+ finally {
29
+ owned.fill(0);
30
+ }
31
+ }
32
+ }, 64);
33
+ else
34
+ this.fallback = new Set();
35
+ context.own(() => this.close());
36
+ }
37
+ check() {
38
+ this.context.signal.throwIfAborted();
39
+ if (this.closed)
40
+ throw new SsconvertError('invalid-request', 'BIFF property name index is closed');
41
+ }
42
+ io(action) {
43
+ const result = this.pending.then(async () => { this.check(); const value = await action(); this.check(); return value; });
44
+ this.pending = result.then(() => undefined, () => undefined);
45
+ return result;
46
+ }
47
+ allocate(length) {
48
+ this.check();
49
+ const position = this.storage.allocate(length);
50
+ this.check();
51
+ return position;
52
+ }
53
+ read(at, length) {
54
+ return this.io(async () => {
55
+ const bytes = await this.storage.read(at, length);
56
+ if (bytes.length !== length)
57
+ throw new SsconvertError('io', 'Truncated BIFF property name index');
58
+ return new Uint8Array(bytes);
59
+ });
60
+ }
61
+ fingerprint(name) {
62
+ const hash = sha256.create(), buffer = new Uint8Array(Math.min(16384, name.length * 2)), view = new DataView(buffer.buffer);
63
+ try {
64
+ for (let at = 0; at < name.length;) {
65
+ this.check();
66
+ const count = Math.min(buffer.length / 2, name.length - at);
67
+ for (let i = 0; i < count; i++)
68
+ view.setUint16(i * 2, name.charCodeAt(at + i), true);
69
+ hash.update(buffer.subarray(0, count * 2));
70
+ at += count;
71
+ }
72
+ const digest = hash.digest();
73
+ return new DataView(digest.buffer, digest.byteOffset, digest.byteLength).getBigUint64(0, true);
74
+ }
75
+ finally {
76
+ buffer.fill(0);
77
+ hash.destroy();
78
+ }
79
+ }
80
+ async contains(name, head) {
81
+ let position = Number(head ?? 0n);
82
+ while (position) {
83
+ this.charge(1);
84
+ const record = new DataView((await this.read(position, 24)).buffer);
85
+ position = record.getFloat64(0, true);
86
+ if (record.getFloat64(8, true) !== name.length)
87
+ continue;
88
+ const start = record.getFloat64(16, true);
89
+ let same = true;
90
+ for (let at = 0; at < name.length;) {
91
+ const count = Math.min(8192, name.length - at);
92
+ this.charge(count);
93
+ const bytes = await this.read(start + at * 2, count * 2);
94
+ const view = new DataView(bytes.buffer);
95
+ for (let i = 0; i < count; i++)
96
+ if (view.getUint16(i * 2, true) !== name.charCodeAt(at + i)) {
97
+ same = false;
98
+ break;
99
+ }
100
+ if (!same)
101
+ break;
102
+ at += count;
103
+ }
104
+ if (same)
105
+ return true;
106
+ }
107
+ return false;
108
+ }
109
+ async has(name) {
110
+ this.check();
111
+ this.charge(name.length + 1);
112
+ if (this.fallback)
113
+ return this.fallback.has(name);
114
+ const head = await this.index.get(this.fingerprint(name));
115
+ this.check();
116
+ return this.contains(name, head);
117
+ }
118
+ async add(name) {
119
+ this.check();
120
+ this.charge(name.length + 1);
121
+ if (this.fallback) {
122
+ this.fallback.add(name);
123
+ return;
124
+ }
125
+ if (!this.initialized) {
126
+ this.allocate(8);
127
+ this.check();
128
+ this.initialized = true;
129
+ }
130
+ const key = this.fingerprint(name), head = await this.index.get(key);
131
+ this.check();
132
+ if (await this.contains(name, head))
133
+ return;
134
+ const start = this.allocate(name.length * 2), buffer = new Uint8Array(Math.min(16384, name.length * 2));
135
+ const view = new DataView(buffer.buffer);
136
+ try {
137
+ for (let at = 0; at < name.length;) {
138
+ const count = Math.min(buffer.length / 2, name.length - at);
139
+ for (let i = 0; i < count; i++)
140
+ view.setUint16(i * 2, name.charCodeAt(at + i), true);
141
+ await this.io(() => this.storage.write(start + at * 2, buffer.subarray(0, count * 2)));
142
+ at += count;
143
+ }
144
+ }
145
+ finally {
146
+ buffer.fill(0);
147
+ }
148
+ const record = new Uint8Array(24), descriptor = new DataView(record.buffer);
149
+ descriptor.setFloat64(0, Number(head ?? 0n), true);
150
+ descriptor.setFloat64(8, name.length, true);
151
+ descriptor.setFloat64(16, start, true);
152
+ const position = this.allocate(record.length);
153
+ try {
154
+ await this.io(() => this.storage.write(position, record));
155
+ }
156
+ finally {
157
+ record.fill(0);
158
+ }
159
+ await this.index.set(key, BigInt(position));
160
+ this.check();
161
+ }
162
+ close() {
163
+ this.closed = true;
164
+ this.fallback?.clear();
165
+ return this.closing ??= this.pending.then(async () => { await this.storage?.close(); });
166
+ }
167
+ }
@@ -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", "Locked", "LockText"]) {
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
  }
@@ -1,3 +1,4 @@
1
+ import { readCommentGeometry } from "./comment-geometry.js";
1
2
  import { parseA1, formatA1 } from "../spreadsheet-ast/index.js";
2
3
  import { SsconvertError } from "../spreadsheet-engine/contracts.js";
3
4
  import { escapeXlsx, metadataNode, writeRichString } from "../spreadsheet-engine/codecs/xlsx-write-support.js";
@@ -176,11 +177,18 @@ export async function writeXlsxSheetMetadata(sheet, number, xml, context, namesp
176
177
  if (comments.length)
177
178
  parts.push({ name: `comments${number}.xml`, relation: "comments", type: "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",
178
179
  content: xml("comments", { xmlns: namespace }, xml("authors", {}, authors.map(a => xml("author", {}, escapeXlsx(encodeXlsxString(a)))).join("")) + xml("commentList", {}, comments.map(comment => xml("comment", { ref: comment.attributes.ObjectBound?.split(":")[0] ?? "A1", authorId: comment.attributes.Author === undefined ? undefined : authors.indexOf(comment.attributes.Author) }, commentText(comment))).join(""))) });
180
+ const geometries = readCommentGeometry(records.map(r => r.node), charge);
179
181
  if (comments.length)
180
182
  parts.push({ name: `drawings/vmlDrawing${number}.vml`, relation: "vmlDrawing", type: "application/vnd.openxmlformats-officedocument.vmlDrawing",
181
183
  content: xml("xml", { "xmlns:v": "urn:schemas-microsoft-com:vml", "xmlns:o": "urn:schemas-microsoft-com:office:office", "xmlns:x": "urn:schemas-microsoft-com:office:excel" }, xml("v:shapetype", { id: "_x0000_t202" }) + comments.map((comment, index) => {
182
184
  const position = parseA1(comment.attributes.ObjectBound?.split(":")[0] ?? "A1");
183
- return xml("v:shape", { type: "#_x0000_t202", fillcolor: "#ffffc0", style: `position:absolute;margin-left:${((position.column + 1) * 48).toFixed(2)}pt;margin-top:${(position.row * 12.75).toFixed(2)}pt;width:0.00pt;height:0.00pt;z-index:${index + 1};visibility:hidden;` }, xml("x:ClientData", { ObjectType: "Note" }, xml("x:Anchor", {}, `${position.column + 1}, 15, ${position.row}, 10, ${position.column + 3}, 15, ${position.row + 4}, 4`) + xml("x:MoveWithCells") + xml("x:SizeWithCells") + xml("x:AutoFill", {}, "False") +
185
+ const retained = position && (!comment.attributes.ObjectOffset || comment.attributes.ObjectOffset === "1 0 1 0")
186
+ ? geometries.get(`${position.row}:${position.column}`) : undefined;
187
+ const style = { position: "absolute", "margin-left": `${((position.column + 1) * 48).toFixed(2)}pt`,
188
+ "margin-top": `${(position.row * 12.75).toFixed(2)}pt`, width: "0.00pt", height: "0.00pt", "z-index": String(index + 1), visibility: "hidden", ...retained?.style };
189
+ return xml("v:shape", { type: "#_x0000_t202", fillcolor: "#ffffc0", style: Object.entries(style).map(([key, value]) => `${key}:${value};`).join("") }, xml("x:ClientData", { ObjectType: "Note" }, xml("x:Anchor", {}, retained?.anchor ?? `${position.column + 1}, 15, ${position.row}, 10, ${position.column + 3}, 15, ${position.row + 4}, 4`) +
190
+ (retained ? retained.flags.map(flag => xml(`x:${flag.name}`, {}, escapeXlsx(flag.text))).join("") : xml("x:MoveWithCells") + xml("x:SizeWithCells") + xml("x:AutoFill", {}, "False")) +
191
+ xml("x:PrintObject", {}, ["0", "false", "f"].includes((comment.attributes.Print ?? "1").toLowerCase()) ? "False" : "True") +
184
192
  xml("x:Row", {}, String(position.row)) + xml("x:Column", {}, String(position.column))));
185
193
  }).join("")) });
186
194
  if (objects.children.every(n => ["CellComment", "GnmCellComment"].includes(n.name)))
@@ -1006,8 +1006,7 @@ export async function readXlsx(bytes, context, sourceMode = false) {
1006
1006
  if (comments)
1007
1007
  comments = await recognize(comments, "xlsx_comments_dtd", context);
1008
1008
  records.push(...readXlsxMetadata(source));
1009
- if (comments)
1010
- records.push(readXlsxComments(comments, context));
1009
+ const noteDrawings = [];
1011
1010
  for (const extension of children(child(source, "extLst"), "ext")) {
1012
1011
  if (attr(extension, "uri") === undefined)
1013
1012
  await context.diagnostic?.({ severity: "warning", code: "xlsx-extension",
@@ -1023,9 +1022,15 @@ export async function readXlsx(bytes, context, sourceMode = false) {
1023
1022
  const referencedDrawing = ["drawing", "legacyDrawing", "legacyDrawingHF"].some(type => children(source, type)
1024
1023
  .some(node => attr(node, "id", relationships) === part.id));
1025
1024
  if (["comments", "pivotTable"].some(type => part.type === relationships + "/" + type)
1026
- || referencedDrawing && ["drawing", "vmlDrawing"].some(type => part.type === relationships + "/" + type))
1027
- records.push(record(await opc.document(part.target), part.target));
1025
+ || referencedDrawing && ["drawing", "vmlDrawing"].some(type => part.type === relationships + "/" + type)) {
1026
+ const document = await opc.document(part.target);
1027
+ records.push(record(document, part.target));
1028
+ if (part.type === relationships + "/vmlDrawing" && children(source, "legacyDrawing").some(node => attr(node, "id", relationships) === part.id))
1029
+ noteDrawings.push(document);
1030
+ }
1028
1031
  }
1032
+ if (comments)
1033
+ records.push(readXlsxComments(comments, context, noteDrawings));
1029
1034
  const visibility = attr(sheetNode, "state");
1030
1035
  const sheetView = child(child(source, "sheetViews"), "sheetView");
1031
1036
  const viewAttributes = {};