@poe-platform/safe-bash 0.1.816 → 0.1.818

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/dist/image-ast/index.js +2 -2
  2. package/dist/mp4-ast/index.d.ts +2 -1
  3. package/dist/mp4-ast/mp4-metadata-source.d.ts +10 -0
  4. package/dist/mp4-ast/mp4-packets-source.d.ts +8 -1
  5. package/dist/mp4-ast/types.d.ts +21 -3
  6. package/dist/pdf-ast/ast.d.ts +2 -0
  7. package/dist/pdf-ast/content/evaluator.d.ts +11 -0
  8. package/dist/pdf-ast/content/retained-evaluator.d.ts +2 -2
  9. package/dist/pdf-ast/content/retained-page.d.ts +2 -2
  10. package/dist/pdf-ast/cos/value-parser.d.ts +2 -0
  11. package/dist/pdf-ast/extract/html-text-stream.d.ts +14 -0
  12. package/dist/pdf-ast/extract/logical-text-stream.d.ts +14 -0
  13. package/dist/pdf-ast/extract/raw-text-index.d.ts +18 -4
  14. package/dist/pdf-ast/extract/retained-color.d.ts +6 -6
  15. package/dist/pdf-ast/extract/retained-decoded-image.d.ts +2 -2
  16. package/dist/pdf-ast/extract/stored-text-glyphs.d.ts +8 -0
  17. package/dist/pdf-ast/fonts/resolve.d.ts +5 -1
  18. package/dist/pdf-ast/fonts/retained.d.ts +2 -2
  19. package/dist/pdf-ast/image.d.ts +2 -0
  20. package/dist/pdf-ast/image.js +19 -0
  21. package/dist/pdf-ast/index.d.ts +3 -0
  22. package/dist/pdf-ast/index.js +264 -66845
  23. package/dist/pdf-ast/render/postscript.d.ts +6 -0
  24. package/dist/pdf-ast/render/raster.d.ts +21 -1
  25. package/dist/pdf-ast/retained-document.d.ts +16 -95
  26. package/dist/pdf-ast/retained-reader.d.ts +109 -0
  27. package/dist/safe-bash/command-chunks/biff-AYJZR2YV-JPESBEOO.js +5741 -0
  28. package/dist/safe-bash/command-chunks/{chunk-SL4LD25A.js → chunk-232N24HE.js} +9 -9
  29. package/dist/safe-bash/command-chunks/{chunk-ALD53QFL.js → chunk-2C4QMQQD.js} +42 -12
  30. package/dist/safe-bash/command-chunks/{chunk-3PM46VWH.js → chunk-2FEMMALH.js} +4 -4
  31. package/dist/safe-bash/command-chunks/chunk-2J4OQT3F.js +153 -0
  32. package/dist/safe-bash/command-chunks/{chunk-QDV2NIFR.js → chunk-2TMTGVJR.js} +1 -1
  33. package/dist/safe-bash/command-chunks/{chunk-ARE267HR.js → chunk-2WTDP3TP.js} +5 -5
  34. package/dist/safe-bash/command-chunks/{chunk-GEDO5V32.js → chunk-2XR7B6DY.js} +602 -211
  35. package/dist/safe-bash/command-chunks/{chunk-EY3UE26F.js → chunk-2YC6MWQB.js} +1 -1
  36. package/dist/safe-bash/command-chunks/{chunk-UPWLHHZ2.js → chunk-37KBCKDF.js} +13 -13
  37. package/dist/safe-bash/command-chunks/{chunk-DOVWHVHI.js → chunk-3B6554G6.js} +5 -5
  38. package/dist/safe-bash/command-chunks/{chunk-FB2WPI3M.js → chunk-3ZGO24WG.js} +1 -1
  39. package/dist/safe-bash/command-chunks/{chunk-GR4ONCQ5.js → chunk-424NYO35.js} +7 -7
  40. package/dist/safe-bash/command-chunks/{chunk-MQE77MEQ.js → chunk-45GTHPL5.js} +3 -3
  41. package/dist/safe-bash/command-chunks/{chunk-AF2IO57Q.js → chunk-4OHTYYNU.js} +8 -136
  42. package/dist/safe-bash/command-chunks/{chunk-ICJH6A73.js → chunk-4PMMJ45F.js} +3 -3
  43. package/dist/safe-bash/command-chunks/{chunk-57PK2QFX.js → chunk-4SFX6YGC.js} +6 -6
  44. package/dist/safe-bash/command-chunks/{chunk-G3LUT475.js → chunk-4WHTTCKY.js} +6 -6
  45. package/dist/safe-bash/command-chunks/{chunk-DBZCTL7C.js → chunk-4Z7PBIMP.js} +20 -18
  46. package/dist/safe-bash/command-chunks/{chunk-A4P37F3P.js → chunk-57SKL76U.js} +3 -3
  47. package/dist/safe-bash/command-chunks/{chunk-J6FNSVHT.js → chunk-5GP4A3TD.js} +5 -5
  48. package/dist/safe-bash/command-chunks/{chunk-OFONWWEZ.js → chunk-5IHJWBDR.js} +2 -2
  49. package/dist/safe-bash/command-chunks/{chunk-A2L3U7DW.js → chunk-5OS4Q3AX.js} +4 -4
  50. package/dist/safe-bash/command-chunks/{chunk-FUYZUETI.js → chunk-5PMLTSQ5.js} +2 -2
  51. package/dist/safe-bash/command-chunks/{chunk-TXU7MMHN.js → chunk-5RDS6CNQ.js} +13 -13
  52. package/dist/safe-bash/command-chunks/{chunk-FR63MJSO.js → chunk-5UGQGB5Y.js} +7 -7
  53. package/dist/safe-bash/command-chunks/{chunk-UKAGRRLZ.js → chunk-5VY5O37W.js} +1 -1
  54. package/dist/safe-bash/command-chunks/chunk-5WS6DXYE.js +68444 -0
  55. package/dist/safe-bash/command-chunks/{chunk-2ALHVXEM.js → chunk-6EK76ERE.js} +2 -2
  56. package/dist/safe-bash/command-chunks/{chunk-4772DJKS.js → chunk-6GCK2KSL.js} +61 -26
  57. package/dist/safe-bash/command-chunks/{chunk-T5OQ53XS.js → chunk-6IID5HTY.js} +1 -1
  58. package/dist/safe-bash/command-chunks/{chunk-EZDWPTYB.js → chunk-6LOAJOWK.js} +13 -13
  59. package/dist/safe-bash/command-chunks/{chunk-WMBELKPP.js → chunk-6PE2L522.js} +6 -6
  60. package/dist/safe-bash/command-chunks/{chunk-ZAYTFXUX.js → chunk-73KY3MZ3.js} +4 -4
  61. package/dist/safe-bash/command-chunks/{chunk-BOVDUJ3A.js → chunk-77WBFVZQ.js} +7 -7
  62. package/dist/safe-bash/command-chunks/{chunk-3DWFXESW.js → chunk-7GJJDM2F.js} +2 -2
  63. package/dist/safe-bash/command-chunks/{chunk-WIW3KDBS.js → chunk-7NFICYRU.js} +2 -2
  64. package/dist/safe-bash/command-chunks/{chunk-35DU6I2M.js → chunk-7ZEGARPB.js} +5 -5
  65. package/dist/safe-bash/command-chunks/{chunk-A5SPMSKD.js → chunk-A32PUWYE.js} +2 -2
  66. package/dist/safe-bash/command-chunks/{chunk-KYIGYYEY.js → chunk-A32ZROH5.js} +3 -3
  67. package/dist/safe-bash/command-chunks/{chunk-IOXMGD2H.js → chunk-ADVQZLLE.js} +2 -2
  68. package/dist/safe-bash/command-chunks/{chunk-CGJ7GMHO.js → chunk-AEZU6NZE.js} +2 -2
  69. package/dist/safe-bash/command-chunks/{chunk-KDDXLHN7.js → chunk-ATHU53C2.js} +3 -3
  70. package/dist/safe-bash/command-chunks/{chunk-R7LF4XQV.js → chunk-B6T2526I.js} +2 -2
  71. package/dist/safe-bash/command-chunks/{chunk-PPN53PX3.js → chunk-BB7HBO56.js} +2 -2
  72. package/dist/safe-bash/command-chunks/{chunk-ZM7HMBAJ.js → chunk-BDGNKRY4.js} +7 -7
  73. package/dist/safe-bash/command-chunks/{chunk-VMZIAFVJ.js → chunk-BFRSYJUC.js} +8 -8
  74. package/dist/safe-bash/command-chunks/{chunk-X42MJT2J.js → chunk-BJL7AGA5.js} +1 -1
  75. package/dist/safe-bash/command-chunks/{chunk-VZTVR3JI.js → chunk-C2QUG7IP.js} +3 -3
  76. package/dist/safe-bash/command-chunks/{chunk-IVKAFEPO.js → chunk-C34RLMAC.js} +9 -9
  77. package/dist/safe-bash/command-chunks/{chunk-5O45KGW5.js → chunk-C5VUJOUQ.js} +1 -1
  78. package/dist/safe-bash/command-chunks/{chunk-LQDANF2B.js → chunk-CCNOZKAK.js} +8 -8
  79. package/dist/safe-bash/command-chunks/{chunk-FEBTT5NH.js → chunk-CEHICGP6.js} +2 -2
  80. package/dist/safe-bash/command-chunks/{chunk-SICTBSLW.js → chunk-CODJMTSA.js} +6 -6
  81. package/dist/safe-bash/command-chunks/{chunk-LJ3UYESS.js → chunk-CP5EO5TT.js} +1 -1
  82. package/dist/safe-bash/command-chunks/{chunk-45DKGZYO.js → chunk-CSS5KXQC.js} +329 -152
  83. package/dist/safe-bash/command-chunks/{chunk-6RLWPB44.js → chunk-CZSLXQU2.js} +1 -1
  84. package/dist/safe-bash/command-chunks/{chunk-3ZWFE4CK.js → chunk-D2ZT2UUT.js} +3 -3
  85. package/dist/safe-bash/command-chunks/{chunk-WH624PKJ.js → chunk-D5XSGHXN.js} +2 -2
  86. package/dist/safe-bash/command-chunks/{chunk-NDALIHKK.js → chunk-D7UFAIBS.js} +18 -18
  87. package/dist/safe-bash/command-chunks/{chunk-ISFGPCED.js → chunk-DCKAY6HV.js} +6 -6
  88. package/dist/safe-bash/command-chunks/{chunk-LNAZ3E4Q.js → chunk-DGCJVZW6.js} +1 -1
  89. package/dist/safe-bash/command-chunks/{chunk-LFSWLJPR.js → chunk-DJB5RB6U.js} +288 -32
  90. package/dist/safe-bash/command-chunks/{chunk-FGHSE3RZ.js → chunk-DZ4ELL34.js} +1 -1
  91. package/dist/safe-bash/command-chunks/{chunk-LQX7RAF7.js → chunk-EBKKYRQJ.js} +5 -5
  92. package/dist/safe-bash/command-chunks/{chunk-QNETPOMH.js → chunk-EDBNI7WE.js} +14 -14
  93. package/dist/safe-bash/command-chunks/{chunk-5GDF5FAS.js → chunk-EEJ3YXVO.js} +1 -1
  94. package/dist/safe-bash/command-chunks/{chunk-RTHYAGKI.js → chunk-ETN25WCR.js} +2 -2
  95. package/dist/safe-bash/command-chunks/{chunk-ET6LMDEX.js → chunk-EV3DPRWE.js} +9 -9
  96. package/dist/safe-bash/command-chunks/{chunk-3MUFXGA2.js → chunk-F2JUB7JI.js} +1 -1
  97. package/dist/safe-bash/command-chunks/{chunk-345YBIHP.js → chunk-F42WV2YO.js} +19 -19
  98. package/dist/safe-bash/command-chunks/{chunk-FTZFCMVI.js → chunk-FAVWWMFW.js} +12 -12
  99. package/dist/safe-bash/command-chunks/{chunk-XBWD6SI3.js → chunk-FDRE535F.js} +16 -16
  100. package/dist/safe-bash/command-chunks/{chunk-WMV5224N.js → chunk-FILE5PBI.js} +3 -3
  101. package/dist/safe-bash/command-chunks/{chunk-XPQUUFQD.js → chunk-FPOM47UA.js} +2 -2
  102. package/dist/safe-bash/command-chunks/{chunk-QMBMZSJF.js → chunk-FQ2WRT4Q.js} +3 -3
  103. package/dist/safe-bash/command-chunks/{chunk-H56BSMFQ.js → chunk-FVAFISPY.js} +4 -4
  104. package/dist/safe-bash/command-chunks/{chunk-2QZUAZTH.js → chunk-GIQUIF6E.js} +1 -1
  105. package/dist/safe-bash/command-chunks/{chunk-2TWXRJPB.js → chunk-GNORF6RY.js} +13 -13
  106. package/dist/safe-bash/command-chunks/{chunk-K7VDCBXW.js → chunk-GPLN6JV2.js} +24 -24
  107. package/dist/safe-bash/command-chunks/{chunk-DZOKH5BL.js → chunk-GQ7BD75U.js} +3 -3
  108. package/dist/safe-bash/command-chunks/{chunk-N4HWOLGZ.js → chunk-GY2C555A.js} +2 -2
  109. package/dist/safe-bash/command-chunks/{chunk-N32AP43V.js → chunk-GZNX5SS4.js} +7 -7
  110. package/dist/safe-bash/command-chunks/{chunk-YPG55QTP.js → chunk-HCJWEB6P.js} +1 -1
  111. package/dist/safe-bash/command-chunks/{chunk-4ABR3KGK.js → chunk-HNY7LZ5P.js} +3 -3
  112. package/dist/safe-bash/command-chunks/{chunk-P462JTNT.js → chunk-HOBXZX23.js} +5 -5
  113. package/dist/safe-bash/command-chunks/{chunk-5KZMR6AJ.js → chunk-HW3IOXT6.js} +6 -6
  114. package/dist/safe-bash/command-chunks/{chunk-3VGQTLO6.js → chunk-HX7QQNWS.js} +4 -4
  115. package/dist/safe-bash/command-chunks/{chunk-TXWDR2P4.js → chunk-IBT3OWXB.js} +1 -1
  116. package/dist/safe-bash/command-chunks/{chunk-OHEZQ4QA.js → chunk-IFBLXBBM.js} +9 -9
  117. package/dist/safe-bash/command-chunks/{chunk-HOJ7WDTS.js → chunk-IJZUUXLL.js} +3 -3
  118. package/dist/safe-bash/command-chunks/{chunk-BZRWZ6GO.js → chunk-IKU7ZBF3.js} +2 -2
  119. package/dist/safe-bash/command-chunks/{chunk-CKIXC7AO.js → chunk-IPKYPADE.js} +3 -3
  120. package/dist/safe-bash/command-chunks/{chunk-IWVANZWH.js → chunk-JLPBGKVC.js} +3 -3
  121. package/dist/safe-bash/command-chunks/{chunk-6M3JTPKE.js → chunk-JNRX5EFF.js} +5 -5
  122. package/dist/safe-bash/command-chunks/{chunk-5YL453ZF.js → chunk-JSX5CFZY.js} +36 -36
  123. package/dist/safe-bash/command-chunks/{chunk-V6JPIZUW.js → chunk-JT656DKZ.js} +7 -7
  124. package/dist/safe-bash/command-chunks/{chunk-DM5WURQL.js → chunk-JY2T3KV2.js} +2 -2
  125. package/dist/safe-bash/command-chunks/{chunk-IZ3SD5S2.js → chunk-K2NV6H7E.js} +4 -4
  126. package/dist/safe-bash/command-chunks/{chunk-62RG3GHF.js → chunk-K6E56LND.js} +6 -6
  127. package/dist/safe-bash/command-chunks/{chunk-FLSXHLJG.js → chunk-KADQKXZE.js} +9 -9
  128. package/dist/safe-bash/command-chunks/{chunk-URQSUMMJ.js → chunk-KFFV7HBL.js} +4 -4
  129. package/dist/safe-bash/command-chunks/{chunk-ONQP4FNV.js → chunk-KZICRCQ7.js} +1 -1
  130. package/dist/safe-bash/command-chunks/{chunk-N35IJXBK.js → chunk-L6X4EEN6.js} +9 -9
  131. package/dist/safe-bash/command-chunks/{chunk-SHLT5R64.js → chunk-LF7YJ5VQ.js} +9 -9
  132. package/dist/safe-bash/command-chunks/{chunk-GMBUOYTN.js → chunk-LNHTLWIL.js} +4 -4
  133. package/dist/safe-bash/command-chunks/{chunk-A6OTPNNI.js → chunk-LPKMNCC5.js} +3 -3
  134. package/dist/safe-bash/command-chunks/{chunk-MUTARE5I.js → chunk-LSKA4IR4.js} +6 -6
  135. package/dist/safe-bash/command-chunks/{chunk-N3ZH4YYH.js → chunk-LTWX23FS.js} +3 -3
  136. package/dist/safe-bash/command-chunks/{chunk-JA36YOZI.js → chunk-LUJUYUOG.js} +1 -1
  137. package/dist/safe-bash/command-chunks/{chunk-4X2MPZXW.js → chunk-M42GCI5F.js} +2 -2
  138. package/dist/safe-bash/command-chunks/{chunk-AYQPJQJR.js → chunk-M5BFAMXD.js} +6 -6
  139. package/dist/safe-bash/command-chunks/{chunk-OFDJJRAD.js → chunk-M7DZ7COK.js} +9 -9
  140. package/dist/safe-bash/command-chunks/{chunk-RINR7XPR.js → chunk-MMSKDYK6.js} +234 -8
  141. package/dist/safe-bash/command-chunks/{chunk-NKK76B4V.js → chunk-MN7EEK6Y.js} +8 -8
  142. package/dist/safe-bash/command-chunks/{chunk-OBIXFO25.js → chunk-MOJQT6RW.js} +8 -8
  143. package/dist/safe-bash/command-chunks/{chunk-HOKPYTHQ.js → chunk-MPRUGL4W.js} +2 -2
  144. package/dist/safe-bash/command-chunks/{chunk-CORUUCS2.js → chunk-MRBX4KEP.js} +3 -3
  145. package/dist/safe-bash/command-chunks/chunk-MTWFSBNG.js +137 -0
  146. package/dist/safe-bash/command-chunks/{chunk-RRAQII52.js → chunk-MURNTGDL.js} +5 -5
  147. package/dist/safe-bash/command-chunks/{chunk-KDBU5Q2N.js → chunk-MWVELMXZ.js} +6 -6
  148. package/dist/safe-bash/command-chunks/{chunk-PRO7JOIH.js → chunk-N3MAYM6Y.js} +8 -8
  149. package/dist/safe-bash/command-chunks/{chunk-E22EAYJN.js → chunk-NFWLZDMY.js} +177 -34
  150. package/dist/safe-bash/command-chunks/{chunk-GAROGIVU.js → chunk-NP2QXF2X.js} +1 -1
  151. package/dist/safe-bash/command-chunks/{chunk-SNA2LVBX.js → chunk-NPVOYY2A.js} +1 -1
  152. package/dist/safe-bash/command-chunks/{chunk-ENMJHB2C.js → chunk-NTXRKJPZ.js} +3 -3
  153. package/dist/safe-bash/command-chunks/{chunk-3K5CVXUV.js → chunk-NZF56C25.js} +10 -10
  154. package/dist/safe-bash/command-chunks/{chunk-5MNQTHED.js → chunk-OA4MEWTN.js} +4 -4
  155. package/dist/safe-bash/command-chunks/{chunk-SWIF6BBY.js → chunk-OL75SBZL.js} +5 -5
  156. package/dist/safe-bash/command-chunks/{chunk-LT2YCGC5.js → chunk-OVQSILY3.js} +5 -5
  157. package/dist/safe-bash/command-chunks/{chunk-WDVPHDBH.js → chunk-P57V45F2.js} +2 -2
  158. package/dist/safe-bash/command-chunks/{chunk-OWCBX5M2.js → chunk-PAY4ULWY.js} +1 -1
  159. package/dist/safe-bash/command-chunks/{chunk-CHZE6FNT.js → chunk-PFUZPAXQ.js} +2 -2
  160. package/dist/safe-bash/command-chunks/{chunk-NLCUQD7Y.js → chunk-PX6E5MHY.js} +9 -9
  161. package/dist/safe-bash/command-chunks/{chunk-POGVOCOB.js → chunk-QCN7MRRU.js} +8 -8
  162. package/dist/safe-bash/command-chunks/{chunk-ZZERSKAR.js → chunk-QLE6JUR7.js} +5 -5
  163. package/dist/safe-bash/command-chunks/{chunk-LZY46GYY.js → chunk-QMWBKR4C.js} +5 -5
  164. package/dist/safe-bash/command-chunks/{chunk-BIJW6QWB.js → chunk-QNLX3CZH.js} +13 -13
  165. package/dist/safe-bash/command-chunks/{chunk-MDFNUNK5.js → chunk-QWX5IERU.js} +6 -6
  166. package/dist/safe-bash/command-chunks/{chunk-WOL3LBXE.js → chunk-R2N3E267.js} +1 -1
  167. package/dist/safe-bash/command-chunks/{chunk-ZNCPIZCN.js → chunk-R6X63VAO.js} +1 -1
  168. package/dist/safe-bash/command-chunks/{chunk-FGARVKAX.js → chunk-RNIFPFGC.js} +13 -11
  169. package/dist/safe-bash/command-chunks/{chunk-OIHQXURE.js → chunk-ROE6KD4C.js} +1 -1
  170. package/dist/safe-bash/command-chunks/{chunk-BKK4MS3V.js → chunk-RR6XG2I6.js} +1 -1
  171. package/dist/safe-bash/command-chunks/chunk-RYOHOS2I.js +398 -0
  172. package/dist/safe-bash/command-chunks/{chunk-4QEJPP3K.js → chunk-S5X7PBO4.js} +1 -1
  173. package/dist/safe-bash/command-chunks/{chunk-IHLZ6HNQ.js → chunk-TSKJNCKD.js} +3 -2
  174. package/dist/safe-bash/command-chunks/{chunk-U42WHQRH.js → chunk-TTTNFKT6.js} +5 -5
  175. package/dist/safe-bash/command-chunks/{chunk-EWC56JNI.js → chunk-TTVJJZOM.js} +5 -5
  176. package/dist/safe-bash/command-chunks/{chunk-TY7JXEWI.js → chunk-UBX5I5HY.js} +11 -11
  177. package/dist/safe-bash/command-chunks/{chunk-QOKFSYD5.js → chunk-UE34SQET.js} +9 -9
  178. package/dist/safe-bash/command-chunks/{chunk-DXOXUKQB.js → chunk-UH4CQIU3.js} +4 -4
  179. package/dist/safe-bash/command-chunks/{chunk-VNNNVT4C.js → chunk-UZZ2WJQV.js} +4 -4
  180. package/dist/safe-bash/command-chunks/{chunk-QNX5LZBK.js → chunk-V6NZVM7C.js} +7 -7
  181. package/dist/safe-bash/command-chunks/{chunk-KLAC2MIZ.js → chunk-VEZULAIA.js} +6 -6
  182. package/dist/safe-bash/command-chunks/{chunk-OCV5ZU35.js → chunk-VSTAHYCV.js} +3 -3
  183. package/dist/safe-bash/command-chunks/{chunk-UFLMOU3B.js → chunk-VUJCVXD4.js} +1 -1
  184. package/dist/safe-bash/command-chunks/{chunk-5V7WIQ2D.js → chunk-VW67MA53.js} +3 -3
  185. package/dist/safe-bash/command-chunks/{chunk-B2C3UPJS.js → chunk-W42SUPD6.js} +13 -1
  186. package/dist/safe-bash/command-chunks/{chunk-2IMIKROX.js → chunk-WI5NEHPD.js} +2 -2
  187. package/dist/safe-bash/command-chunks/{chunk-SBXS4S6Y.js → chunk-WJSU2UVG.js} +2 -2
  188. package/dist/safe-bash/command-chunks/{chunk-VVWHFNHD.js → chunk-WPEIOUJN.js} +415 -25
  189. package/dist/safe-bash/command-chunks/{chunk-YKODRSGT.js → chunk-WRCYZJNO.js} +1 -1
  190. package/dist/safe-bash/command-chunks/{chunk-TID5TSQW.js → chunk-WRJV7OVO.js} +1 -1
  191. package/dist/safe-bash/command-chunks/{chunk-T4SEQU66.js → chunk-X4TWJNW7.js} +3 -3
  192. package/dist/safe-bash/command-chunks/{chunk-CKA7ZROU.js → chunk-X6KFCAWZ.js} +7 -7
  193. package/dist/safe-bash/command-chunks/{chunk-ROQ3VNVX.js → chunk-X6KO7D6R.js} +8 -8
  194. package/dist/safe-bash/command-chunks/{chunk-S5ER73EA.js → chunk-XB5ZZHFD.js} +3 -3
  195. package/dist/safe-bash/command-chunks/{chunk-FHQOFEQK.js → chunk-XLFOLLUZ.js} +8 -8
  196. package/dist/safe-bash/command-chunks/{chunk-UJYXSLM6.js → chunk-XLPEPCQC.js} +2 -2
  197. package/dist/safe-bash/command-chunks/{chunk-UT5X6QRU.js → chunk-XQFEP43Y.js} +5 -5
  198. package/dist/safe-bash/command-chunks/chunk-Y7XL6CWB.js +771 -0
  199. package/dist/safe-bash/command-chunks/{chunk-RVWIEXR7.js → chunk-YKEMSPJZ.js} +4 -4
  200. package/dist/safe-bash/command-chunks/{chunk-ERWIJYCS.js → chunk-YN3OEJAZ.js} +7 -7
  201. package/dist/safe-bash/command-chunks/{chunk-6YF2QADH.js → chunk-YOYK2I4N.js} +2 -2
  202. package/dist/safe-bash/command-chunks/{chunk-26JE5JEB.js → chunk-YS5ZKMRJ.js} +4 -4
  203. package/dist/safe-bash/command-chunks/{chunk-LMLBQSAM.js → chunk-YW7WU7W2.js} +5 -5
  204. package/dist/safe-bash/command-chunks/{chunk-YXR4JE4U.js → chunk-Z33YS3DW.js} +3 -3
  205. package/dist/safe-bash/command-chunks/{chunk-T2FRXSQT.js → chunk-ZBXUAM34.js} +2 -2
  206. package/dist/safe-bash/command-chunks/{chunk-VVV45NLY.js → chunk-ZJUU5IAS.js} +1 -1
  207. package/dist/safe-bash/command-chunks/{chunk-7OCTMVYJ.js → chunk-ZNABMTV3.js} +1 -1
  208. package/dist/safe-bash/command-chunks/{chunk-6JGICYHP.js → chunk-ZSF2T5D4.js} +1 -1
  209. package/dist/safe-bash/command-chunks/{command-engine-GHE6QUHU.js → command-engine-PFYHL7GS.js} +14 -4
  210. package/dist/safe-bash/command-chunks/{engine-RG6HQCCB-FXYZS264.js → engine-5AVSKFBI-D7Q5VPUN.js} +1 -1
  211. package/dist/safe-bash/command-chunks/model-store-IIWQHSEZ.js +54 -0
  212. package/dist/safe-bash/command-chunks/odf-SL5TG4B3-XI3FNOTN.js +3041 -0
  213. package/dist/safe-bash/command-chunks/{xlsx-RE54MFCS-IQ6OXXKK.js → xlsx-RE54MFCS-4UZ5W3U7.js} +1 -1
  214. package/dist/safe-bash-command-apply-patch/apply.js +1 -1
  215. package/dist/safe-bash-command-apply-patch/index.js +1 -1
  216. package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
  217. package/dist/safe-bash-command-awk/awk.js +5 -5
  218. package/dist/safe-bash-command-awk/index.js +5 -5
  219. package/dist/safe-bash-command-cp/index.js +4 -4
  220. package/dist/safe-bash-command-csvkit/index.js +1 -1
  221. package/dist/safe-bash-command-diff/diff.js +2 -2
  222. package/dist/safe-bash-command-diff/index.js +2 -2
  223. package/dist/safe-bash-command-ffmpeg/index.js +1 -1
  224. package/dist/safe-bash-command-ffprobe/index.js +2 -2
  225. package/dist/safe-bash-command-ffprobe/media.js +2 -2
  226. package/dist/safe-bash-command-node/commands/node/browser.js +6 -6
  227. package/dist/safe-bash-command-node/commands/node/default-runtime.js +6 -6
  228. package/dist/safe-bash-command-node/commands/node/filesystem.js +2 -2
  229. package/dist/safe-bash-command-node/commands/node/safejs.js +6 -6
  230. package/dist/safe-bash-command-node/commands/node/timers.js +2 -2
  231. package/dist/safe-bash-command-patch/index.js +3 -3
  232. package/dist/safe-bash-command-patch/patch-formats.js +2 -2
  233. package/dist/safe-bash-command-patch/patch.js +3 -3
  234. package/dist/safe-bash-command-patch/unified.js +1 -1
  235. package/dist/safe-bash-command-pdftoppm/index.js +89 -124
  236. package/dist/safe-bash-command-pdftotext/index.d.ts +1 -1
  237. package/dist/safe-bash-command-pdftotext/index.js +538 -379
  238. package/dist/safe-bash-command-playwright-cli/index.js +19 -19
  239. package/dist/safe-bash-command-playwright-cli/playwright/abilities.js +6 -6
  240. package/dist/safe-bash-command-playwright-cli/playwright/adapter.js +3 -3
  241. package/dist/safe-bash-command-playwright-cli/playwright/controller.js +13 -13
  242. package/dist/safe-bash-command-playwright-cli/playwright/index.js +19 -19
  243. package/dist/safe-bash-command-playwright-cli/playwright/native-storage-replacement.js +2 -2
  244. package/dist/safe-bash-command-playwright-cli/playwright/open-options.js +2 -2
  245. package/dist/safe-bash-command-playwright-cli/playwright/profile.js +5 -5
  246. package/dist/safe-bash-command-playwright-cli/playwright/standard-capabilities.js +4 -4
  247. package/dist/safe-bash-command-playwright-cli/playwright/storage-capabilities.js +3 -3
  248. package/dist/safe-bash-command-pptx/engine.js +1 -1
  249. package/dist/safe-bash-command-python/executor.js +10 -10
  250. package/dist/safe-bash-command-python/index.js +10 -10
  251. package/dist/safe-bash-command-python/jspi.js +2 -2
  252. package/dist/safe-bash-command-safejs/index.js +2 -2
  253. package/dist/safe-bash-command-safejs/runtime.js +2 -2
  254. package/dist/safe-bash-command-ssconvert/index.js +16 -16
  255. package/dist/safe-bash-command-unzip/index.js +4 -4
  256. package/dist/safe-bash-docx-engine/ancillary-resources.js +10 -10
  257. package/dist/safe-bash-docx-engine/batch-operations.js +67 -67
  258. package/dist/safe-bash-docx-engine/batch-result-schema.js +79 -79
  259. package/dist/safe-bash-docx-engine/batch.js +78 -78
  260. package/dist/safe-bash-docx-engine/bookmarks.js +18 -18
  261. package/dist/safe-bash-docx-engine/charts.js +11 -11
  262. package/dist/safe-bash-docx-engine/command-option-rules.js +6 -6
  263. package/dist/safe-bash-docx-engine/command-properties.js +3 -3
  264. package/dist/safe-bash-docx-engine/comments.js +26 -26
  265. package/dist/safe-bash-docx-engine/control-bindings.js +21 -21
  266. package/dist/safe-bash-docx-engine/control-repeat.js +21 -21
  267. package/dist/safe-bash-docx-engine/controls.js +19 -19
  268. package/dist/safe-bash-docx-engine/create.js +11 -11
  269. package/dist/safe-bash-docx-engine/diagrams.js +11 -11
  270. package/dist/safe-bash-docx-engine/diff.js +13 -13
  271. package/dist/safe-bash-docx-engine/document-properties.js +16 -16
  272. package/dist/safe-bash-docx-engine/equations.js +17 -17
  273. package/dist/safe-bash-docx-engine/extract.js +14 -14
  274. package/dist/safe-bash-docx-engine/fields.js +23 -23
  275. package/dist/safe-bash-docx-engine/font-inventory.js +18 -18
  276. package/dist/safe-bash-docx-engine/font-resources.js +6 -6
  277. package/dist/safe-bash-docx-engine/image-batch-operations.js +14 -14
  278. package/dist/safe-bash-docx-engine/image-insertion.js +21 -21
  279. package/dist/safe-bash-docx-engine/image-layout.js +19 -19
  280. package/dist/safe-bash-docx-engine/image-replacement.js +22 -22
  281. package/dist/safe-bash-docx-engine/images.js +19 -19
  282. package/dist/safe-bash-docx-engine/index.js +111 -111
  283. package/dist/safe-bash-docx-engine/inspection.js +20 -20
  284. package/dist/safe-bash-docx-engine/invocation.js +9 -9
  285. package/dist/safe-bash-docx-engine/io.js +9 -9
  286. package/dist/safe-bash-docx-engine/links.js +21 -21
  287. package/dist/safe-bash-docx-engine/lists.js +20 -20
  288. package/dist/safe-bash-docx-engine/locations.js +15 -15
  289. package/dist/safe-bash-docx-engine/notes.js +22 -22
  290. package/dist/safe-bash-docx-engine/objects.js +19 -19
  291. package/dist/safe-bash-docx-engine/operation-json-schema.js +3 -3
  292. package/dist/safe-bash-docx-engine/operation-schema.js +2 -2
  293. package/dist/safe-bash-docx-engine/pack.js +14 -14
  294. package/dist/safe-bash-docx-engine/package-view-batch-operations.js +22 -22
  295. package/dist/safe-bash-docx-engine/pandoc-adapter.js +29 -29
  296. package/dist/safe-bash-docx-engine/paragraph-edit.js +25 -25
  297. package/dist/safe-bash-docx-engine/part-provider.js +3 -3
  298. package/dist/safe-bash-docx-engine/property-values.js +3 -3
  299. package/dist/safe-bash-docx-engine/publication.js +9 -9
  300. package/dist/safe-bash-docx-engine/removal.js +21 -21
  301. package/dist/safe-bash-docx-engine/revision-decisions.js +22 -22
  302. package/dist/safe-bash-docx-engine/revision-edit.js +20 -20
  303. package/dist/safe-bash-docx-engine/revisions.js +18 -18
  304. package/dist/safe-bash-docx-engine/run-format.js +20 -20
  305. package/dist/safe-bash-docx-engine/sanitize.js +34 -34
  306. package/dist/safe-bash-docx-engine/sections.js +19 -19
  307. package/dist/safe-bash-docx-engine/settings.js +11 -11
  308. package/dist/safe-bash-docx-engine/shape-edit.js +21 -21
  309. package/dist/safe-bash-docx-engine/signatures.js +15 -15
  310. package/dist/safe-bash-docx-engine/stories.js +22 -22
  311. package/dist/safe-bash-docx-engine/structure-model-batch-operations.js +38 -38
  312. package/dist/safe-bash-docx-engine/style-model-batch-operations.js +27 -27
  313. package/dist/safe-bash-docx-engine/style-model-result-schema.js +44 -44
  314. package/dist/safe-bash-docx-engine/styles.js +18 -18
  315. package/dist/safe-bash-docx-engine/table-edit.js +27 -27
  316. package/dist/safe-bash-docx-engine/table-read.js +16 -16
  317. package/dist/safe-bash-docx-engine/template.js +22 -22
  318. package/dist/safe-bash-docx-engine/text-replace.js +20 -20
  319. package/dist/safe-bash-docx-engine/text-resource-read.js +16 -16
  320. package/dist/safe-bash-docx-engine/text.js +16 -16
  321. package/dist/safe-bash-docx-engine/validation.js +7 -7
  322. package/dist/safe-bash-docx-engine/xml-parts.js +22 -22
  323. package/dist/safe-bash-network-engine/index.js +4 -4
  324. package/dist/safe-bash-network-engine/transfer.js +12 -12
  325. package/dist/safe-bash-presentation-engine/accessibility.js +15 -15
  326. package/dist/safe-bash-presentation-engine/animation-editing.js +5 -5
  327. package/dist/safe-bash-presentation-engine/animations.js +5 -5
  328. package/dist/safe-bash-presentation-engine/backgrounds.js +6 -6
  329. package/dist/safe-bash-presentation-engine/chart-editing.js +18 -18
  330. package/dist/safe-bash-presentation-engine/chart-object-operations.js +12 -12
  331. package/dist/safe-bash-presentation-engine/charts.js +15 -15
  332. package/dist/safe-bash-presentation-engine/command-placeholder.js +39 -38
  333. package/dist/safe-bash-presentation-engine/comments.js +6 -6
  334. package/dist/safe-bash-presentation-engine/connector-operations.js +16 -16
  335. package/dist/safe-bash-presentation-engine/connectors.js +13 -13
  336. package/dist/safe-bash-presentation-engine/diff.js +21 -20
  337. package/dist/safe-bash-presentation-engine/drawing-format.js +7 -7
  338. package/dist/safe-bash-presentation-engine/drawing-operations.js +15 -15
  339. package/dist/safe-bash-presentation-engine/drawing-schema.js +8 -8
  340. package/dist/safe-bash-presentation-engine/equations.js +6 -6
  341. package/dist/safe-bash-presentation-engine/fields.js +6 -6
  342. package/dist/safe-bash-presentation-engine/image-extraction.js +7 -7
  343. package/dist/safe-bash-presentation-engine/image-formatting.js +16 -16
  344. package/dist/safe-bash-presentation-engine/image-insertion.js +6 -6
  345. package/dist/safe-bash-presentation-engine/image-replacement.js +7 -7
  346. package/dist/safe-bash-presentation-engine/images.js +6 -6
  347. package/dist/safe-bash-presentation-engine/index.js +96 -95
  348. package/dist/safe-bash-presentation-engine/layouts.js +5 -5
  349. package/dist/safe-bash-presentation-engine/links.js +5 -5
  350. package/dist/safe-bash-presentation-engine/masters.js +4 -4
  351. package/dist/safe-bash-presentation-engine/media-editing.js +10 -10
  352. package/dist/safe-bash-presentation-engine/media-extraction.js +6 -6
  353. package/dist/safe-bash-presentation-engine/media.js +5 -5
  354. package/dist/safe-bash-presentation-engine/memberships.d.ts +1 -0
  355. package/dist/safe-bash-presentation-engine/memberships.js +12 -6
  356. package/dist/safe-bash-presentation-engine/notes.js +6 -6
  357. package/dist/safe-bash-presentation-engine/ole-insertion.js +6 -6
  358. package/dist/safe-bash-presentation-engine/opaque-objects.js +2 -2
  359. package/dist/safe-bash-presentation-engine/package-tools.js +6 -6
  360. package/dist/safe-bash-presentation-engine/presentation-model.js +38 -37
  361. package/dist/safe-bash-presentation-engine/presentation-settings.d.ts +1 -0
  362. package/dist/safe-bash-presentation-engine/presentation-settings.js +12 -5
  363. package/dist/safe-bash-presentation-engine/properties.js +7 -6
  364. package/dist/safe-bash-presentation-engine/retained-inspection.js +3 -3
  365. package/dist/safe-bash-presentation-engine/retained-memberships.d.ts +25 -0
  366. package/dist/safe-bash-presentation-engine/retained-presentation-settings.d.ts +25 -0
  367. package/dist/safe-bash-presentation-engine/retained-tags.d.ts +20 -0
  368. package/dist/safe-bash-presentation-engine/retained-text.d.ts +24 -4
  369. package/dist/safe-bash-presentation-engine/retained-text.js +17 -15
  370. package/dist/safe-bash-presentation-engine/sanitize.js +8 -7
  371. package/dist/safe-bash-presentation-engine/selectors.js +2 -2
  372. package/dist/safe-bash-presentation-engine/shape-groups.js +15 -15
  373. package/dist/safe-bash-presentation-engine/shape-operations.js +14 -14
  374. package/dist/safe-bash-presentation-engine/shape-path-operations.js +16 -16
  375. package/dist/safe-bash-presentation-engine/shape-paths.js +5 -5
  376. package/dist/safe-bash-presentation-engine/shape-selection.js +15 -15
  377. package/dist/safe-bash-presentation-engine/shape-transforms.js +5 -5
  378. package/dist/safe-bash-presentation-engine/shapes.js +11 -11
  379. package/dist/safe-bash-presentation-engine/slide-copy.js +7 -5
  380. package/dist/safe-bash-presentation-engine/slide-import.js +6 -6
  381. package/dist/safe-bash-presentation-engine/slide-merge-split.js +8 -8
  382. package/dist/safe-bash-presentation-engine/slide-model.js +24 -24
  383. package/dist/safe-bash-presentation-engine/slide-removal.js +7 -7
  384. package/dist/safe-bash-presentation-engine/slide-transfer-budget.js +2 -2
  385. package/dist/safe-bash-presentation-engine/slides.js +5 -5
  386. package/dist/safe-bash-presentation-engine/table-operations.js +17 -17
  387. package/dist/safe-bash-presentation-engine/table-spans.js +16 -16
  388. package/dist/safe-bash-presentation-engine/tables.js +15 -15
  389. package/dist/safe-bash-presentation-engine/tags.d.ts +2 -0
  390. package/dist/safe-bash-presentation-engine/tags.js +15 -7
  391. package/dist/safe-bash-presentation-engine/template-bindings.js +16 -16
  392. package/dist/safe-bash-presentation-engine/template-repeat.js +24 -22
  393. package/dist/safe-bash-presentation-engine/text-fitting.js +11 -11
  394. package/dist/safe-bash-presentation-engine/text-frames.js +11 -11
  395. package/dist/safe-bash-presentation-engine/text-paragraphs.js +11 -11
  396. package/dist/safe-bash-presentation-engine/text-reading.js +3 -3
  397. package/dist/safe-bash-presentation-engine/text-replacement.js +6 -6
  398. package/dist/safe-bash-presentation-engine/text-runs.js +8 -8
  399. package/dist/safe-bash-presentation-engine/themes.js +5 -5
  400. package/dist/safe-bash-presentation-engine/transitions.js +5 -5
  401. package/dist/safe-bash-presentation-engine/validation.js +2 -2
  402. package/dist/safe-bash-presentation-engine/xml-parts.js +5 -5
  403. package/dist/safe-bash-xml-engine/document.js +2 -2
  404. package/dist/safe-bash-xml-engine/index.js +2 -2
  405. package/dist/safe-bash-xml-engine/recovery.d.ts +6 -2
  406. package/dist/safe-bash-xml-engine/stored-document.d.ts +3 -0
  407. package/dist/safe-bash-xml-engine/stored-document.js +1 -1
  408. package/dist/safe-bash-xml-engine/stored-evaluate.js +2 -2
  409. package/dist/safe-bash-xml-engine/stored-map.d.ts +21 -0
  410. package/dist/safe-bash-zip-engine/index.js +3 -3
  411. package/dist/safe-bash-zip-engine/zip/repair.js +3 -3
  412. package/dist/safe-bash-zip-engine/zip/safety.js +1 -1
  413. package/dist/safe-bash-zip-engine/zip/sfx.js +3 -3
  414. package/dist/safe-bash-zip-engine/zip/volumes.js +1 -1
  415. package/dist/safe-bash-zip-engine/zip-format.js +3 -3
  416. package/dist/spreadsheet-engine/formatting/cell-text.js +1 -1
  417. package/dist/spreadsheet-engine/{rendering/print → formatting}/general-number.js +3 -3
  418. package/dist/spreadsheet-engine/formulas/functions/python-printf.js +9 -7
  419. package/dist/spreadsheet-engine/solver/program.js +3 -2
  420. package/dist/spreadsheet-engine/solver/run.js +8 -2
  421. package/dist/spreadsheet-engine/solver/sensitivity.d.ts +4 -2
  422. package/dist/spreadsheet-engine/solver/sensitivity.js +80 -42
  423. package/dist/spreadsheet-format-xls/biff-properties-merge.d.ts +2 -1
  424. package/dist/spreadsheet-format-xls/biff-properties-merge.js +36 -30
  425. package/dist/spreadsheet-format-xls/biff-properties-write.js +16 -7
  426. package/dist/spreadsheet-format-xls/biff-properties.d.ts +4 -2
  427. package/dist/spreadsheet-format-xls/biff-properties.js +141 -122
  428. package/dist/spreadsheet-format-xls/biff-property-names.d.ts +27 -0
  429. package/dist/spreadsheet-format-xls/biff-property-names.js +210 -0
  430. package/dist/spreadsheet-format-xls/biff-property-observations.d.ts +33 -0
  431. package/dist/spreadsheet-format-xls/biff-property-observations.js +160 -0
  432. package/dist/xlsx-ast/comment-geometry.js +1 -1
  433. package/package.json +7 -4
  434. package/third-party/pdf-ast/THIRD_PARTY_NOTICES.md +15 -0
  435. package/third-party/pdf-ast/licenses/PYTHON-PSF.txt +254 -0
  436. package/third-party/pdf-ast/licenses/V8-BSD.txt +61 -0
  437. package/dist/safe-bash/command-chunks/biff-UBP2BZLK-JPODPKS3.js +0 -5448
  438. package/dist/safe-bash/command-chunks/chunk-6EZWG56T.js +0 -455
  439. package/dist/safe-bash/command-chunks/chunk-O2HNOQQG.js +0 -161
  440. package/dist/safe-bash/command-chunks/chunk-ZUP5TBRG.js +0 -99
  441. package/dist/safe-bash/command-chunks/model-store-I7YAWL5V.js +0 -54
  442. package/dist/safe-bash/command-chunks/odf-3EA3EVSD-7B5GVNTC.js +0 -3097
  443. package/dist/safe-bash/command-chunks/{chunk-SRXARACJ.js → chunk-3TP4SSPS.js} +3 -3
  444. package/dist/safe-bash/command-chunks/{chunk-NCNHJRIY.js → chunk-3W3HLPCX.js} +3 -3
  445. package/dist/safe-bash/command-chunks/{chunk-P4OWVKMD.js → chunk-BQXKO3X7.js} +3 -3
  446. package/dist/safe-bash/command-chunks/{chunk-OCOJMKDP.js → chunk-CVMHDJ7J.js} +3 -3
  447. package/dist/safe-bash/command-chunks/{chunk-AV6N7DDA.js → chunk-DDYPQAXN.js} +3 -3
  448. package/dist/safe-bash/command-chunks/{chunk-FEKECRJP.js → chunk-EBTKM7KX.js} +3 -3
  449. package/dist/safe-bash/command-chunks/{chunk-WVD5WZXD.js → chunk-FPNUGKCX.js} +3 -3
  450. package/dist/safe-bash/command-chunks/{chunk-6W4RMBFH.js → chunk-N6VNHC3B.js} +3 -3
  451. package/dist/safe-bash/command-chunks/{chunk-M3OXQXCU.js → chunk-NBRXQUK7.js} +3 -3
  452. package/dist/safe-bash/command-chunks/{chunk-LECGQSQW.js → chunk-SF56V6QK.js} +3 -3
  453. package/dist/safe-bash/command-chunks/{chunk-2ANW3FXH.js → chunk-U33GIOUY.js} +3 -3
  454. package/dist/safe-bash/command-chunks/{chunk-5QXRIZSS.js → chunk-V3NKL42J.js} +3 -3
  455. package/dist/safe-bash/command-chunks/{chunk-OEKLEUUW.js → chunk-YZE7BKHC.js} +3 -3
  456. package/dist/safe-bash/command-chunks/{chunk-WXW665TV.js → chunk-ZSHXZ3XG.js} +6 -6
  457. package/dist/safe-bash/command-chunks/{dif-BXKPQOCO-4KB3RC6G.js → dif-BXKPQOCO-FVJYYGYB.js} +4 -4
  458. package/dist/safe-bash/command-chunks/{pln-DFS7VLVS-OVOBS4QX.js → pln-DFS7VLVS-JATX6FS7.js} +3 -3
  459. package/dist/safe-bash/command-chunks/{psion-YBI6JEQI-GY4S6ZLC.js → psion-YBI6JEQI-6OMC2PGC.js} +3 -3
  460. package/dist/safe-bash/command-chunks/{sylk-25D7TL2Y-RU6ANKGT.js → sylk-25D7TL2Y-NJKBZZTF.js} +4 -4
  461. /package/dist/spreadsheet-engine/{rendering/print → formatting}/general-number.d.ts +0 -0
@@ -3,10 +3,10 @@ import {
3
3
  } from "../safe-bash/command-chunks/chunk-LNKZVU5V.js";
4
4
  import {
5
5
  serializeDocument
6
- } from "../safe-bash/command-chunks/chunk-DBZCTL7C.js";
6
+ } from "../safe-bash/command-chunks/chunk-4Z7PBIMP.js";
7
7
  import {
8
8
  parseStoredXml
9
- } from "../safe-bash/command-chunks/chunk-RINR7XPR.js";
9
+ } from "../safe-bash/command-chunks/chunk-MMSKDYK6.js";
10
10
  import {
11
11
  escape,
12
12
  evaluate,
@@ -1,7 +1,11 @@
1
- import { parseXmlSourceSteps, type XmlElement } from "@poe-platform/safe-fs/core";
1
+ import { parseXmlSourceSteps, type XmlElement, type XmlAttribute } from "@poe-platform/safe-fs/core";
2
2
  import { type PagedStorageContext } from "@poe-platform/safe-fs/storage";
3
3
  import { XmlBudget } from "./limits.js";
4
- type XmlEvent = Parameters<NonNullable<NonNullable<Parameters<typeof parseXmlSourceSteps>[1]>["events"]>>[0];
4
+ type XmlEvent = Parameters<NonNullable<NonNullable<Parameters<typeof parseXmlSourceSteps>[1]>["events"]>>[0] | {
5
+ type: "attribute";
6
+ attribute: XmlAttribute;
7
+ element: XmlElement;
8
+ };
5
9
  /** Parse lazy input, or prevalidated recovery input, through a shared 64 KiB source/frame cache.
6
10
  * The parser retains only its current source window, tokens and the current frame. */
7
11
  export declare function parseStoredXml(source: AsyncIterable<string> | Iterable<string>, context: PagedStorageContext & {
@@ -1,5 +1,6 @@
1
1
  import { type XmlAttribute, type XmlContent } from "@poe-platform/safe-fs/core";
2
2
  import { PagedStorage, type PagedStorageContext } from "@poe-platform/safe-fs/storage";
3
+ import { StoredStringMap as StoredNamespaces } from "./stored-map.js";
3
4
  import { XmlBudget } from "./limits.js";
4
5
  export type StoredXmlAttribute = {
5
6
  kind: "attribute";
@@ -24,6 +25,8 @@ export declare class StoredXmlDocument {
24
25
  private append;
25
26
  /** Buffering convenience API; engine traversal uses metadata and attribute links. */
26
27
  node(reference: number): Promise<XmlContent | StoredXmlAttribute>;
28
+ namespaceScope(reference: number): Promise<StoredNamespaces>;
29
+ /** Load scalar metadata only; attributes and namespace scopes have separate iterators. */
27
30
  metadata(reference: number): Promise<XmlContent | StoredXmlAttribute>;
28
31
  /** Content bodies may span parser fragments or coalesced text tokens.
29
32
  * Replay them without making a concatenated node value. */
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StoredXmlDocument
3
- } from "../safe-bash/command-chunks/chunk-RINR7XPR.js";
3
+ } from "../safe-bash/command-chunks/chunk-MMSKDYK6.js";
4
4
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
5
5
  export {
6
6
  StoredXmlDocument
@@ -82,7 +82,7 @@ var StoredXPath = class {
82
82
  } else yield* this.document.children(reference, attributes);
83
83
  }
84
84
  async select(query, context = this.document.document) {
85
- const root = await this.document.metadata(this.document.root);
85
+ const namespaces = await this.document.namespaceScope(this.document.root);
86
86
  const union = new StoredSelection(this);
87
87
  for (const path of query.paths) {
88
88
  let contexts = new StoredSelection(this);
@@ -90,7 +90,7 @@ var StoredXPath = class {
90
90
  for (const step of path) {
91
91
  const colon = step.name.indexOf(":");
92
92
  const prefix = colon < 0 ? "" : step.name.slice(0, colon);
93
- const namespace = colon < 0 ? "" : root.namespaces.get(prefix);
93
+ const namespace = colon < 0 ? "" : await namespaces.get(prefix);
94
94
  if (namespace === void 0) throw new XmlQueryError(`undefined XPath namespace prefix: ${prefix}`, 10);
95
95
  const localName = colon < 0 ? step.name : step.name.slice(colon + 1);
96
96
  const parents = new StoredSelection(this);
@@ -0,0 +1,21 @@
1
+ import type { PagedStorage } from "@poe-platform/safe-fs/storage";
2
+ import type { XmlBudget } from "./limits.js";
3
+ /** Immutable AVL maps share unchanged subtrees in caller storage. AVL ancestry
4
+ * is bounded by safe-integer storage addresses (fewer than 80 levels), rather
5
+ * than XML depth or the number of entries. Individual keys and values still have
6
+ * the parser's token cost. */
7
+ export declare class StoredStringMap {
8
+ private readonly storage;
9
+ private readonly budget;
10
+ readonly reference: number;
11
+ constructor(storage: PagedStorage, budget: XmlBudget, reference?: number);
12
+ private read;
13
+ private write;
14
+ get(key: string): Promise<string | undefined>;
15
+ private height;
16
+ private updated;
17
+ private rotate;
18
+ private balance;
19
+ set(key: string, value: string): Promise<StoredStringMap>;
20
+ [Symbol.asyncIterator](): AsyncGenerator<readonly [string, string]>;
21
+ }
@@ -9,14 +9,14 @@ import {
9
9
  streamZipArchive,
10
10
  updateZipExtras,
11
11
  writeZipArchive
12
- } from "../safe-bash/command-chunks/chunk-WXW665TV.js";
12
+ } from "../safe-bash/command-chunks/chunk-ZSHXZ3XG.js";
13
13
  import "../safe-bash/command-chunks/chunk-FVQFB7OD.js";
14
14
  import "../safe-bash/command-chunks/chunk-3I3PD6VU.js";
15
+ import "../safe-bash/command-chunks/chunk-CFK5CVU7.js";
15
16
  import "../safe-bash/command-chunks/chunk-ZNVKI6FP.js";
17
+ import "../safe-bash/command-chunks/chunk-RYNTNJMA.js";
16
18
  import "../safe-bash/command-chunks/chunk-ORHPC5DZ.js";
17
- import "../safe-bash/command-chunks/chunk-CFK5CVU7.js";
18
19
  import "../safe-bash/command-chunks/chunk-7OZAH3MX.js";
19
- import "../safe-bash/command-chunks/chunk-RYNTNJMA.js";
20
20
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
21
21
  export {
22
22
  crc32,
@@ -8,7 +8,7 @@ import {
8
8
  decodeZipEntry,
9
9
  readZipArchive,
10
10
  readZipIndexedArchive
11
- } from "../../safe-bash/command-chunks/chunk-WXW665TV.js";
11
+ } from "../../safe-bash/command-chunks/chunk-ZSHXZ3XG.js";
12
12
  import {
13
13
  ZipRanges,
14
14
  joinZipSources,
@@ -19,11 +19,11 @@ import {
19
19
  zip64Fields,
20
20
  zipEnd
21
21
  } from "../../safe-bash/command-chunks/chunk-3I3PD6VU.js";
22
+ import "../../safe-bash/command-chunks/chunk-CFK5CVU7.js";
22
23
  import "../../safe-bash/command-chunks/chunk-ZNVKI6FP.js";
24
+ import "../../safe-bash/command-chunks/chunk-RYNTNJMA.js";
23
25
  import "../../safe-bash/command-chunks/chunk-ORHPC5DZ.js";
24
- import "../../safe-bash/command-chunks/chunk-CFK5CVU7.js";
25
26
  import "../../safe-bash/command-chunks/chunk-7OZAH3MX.js";
26
- import "../../safe-bash/command-chunks/chunk-RYNTNJMA.js";
27
27
  import "../../safe-bash/command-chunks/chunk-65DS4IOB.js";
28
28
 
29
29
  // packages/safe-bash-zip-engine/src/zip/repair.ts
@@ -8,7 +8,7 @@ import {
8
8
  spoolZipSource,
9
9
  stageZip,
10
10
  unchangedZipSource
11
- } from "../../safe-bash/command-chunks/chunk-IHLZ6HNQ.js";
11
+ } from "../../safe-bash/command-chunks/chunk-TSKJNCKD.js";
12
12
  import "../../safe-bash/command-chunks/chunk-65DS4IOB.js";
13
13
  export {
14
14
  ZipScope,
@@ -2,16 +2,16 @@ import {
2
2
  decodeZipEntry,
3
3
  readZipArchive,
4
4
  readZipIndexedArchive
5
- } from "../../safe-bash/command-chunks/chunk-WXW665TV.js";
5
+ } from "../../safe-bash/command-chunks/chunk-ZSHXZ3XG.js";
6
6
  import {
7
7
  ZipRanges
8
8
  } from "../../safe-bash/command-chunks/chunk-FVQFB7OD.js";
9
9
  import "../../safe-bash/command-chunks/chunk-3I3PD6VU.js";
10
+ import "../../safe-bash/command-chunks/chunk-CFK5CVU7.js";
10
11
  import "../../safe-bash/command-chunks/chunk-ZNVKI6FP.js";
12
+ import "../../safe-bash/command-chunks/chunk-RYNTNJMA.js";
11
13
  import "../../safe-bash/command-chunks/chunk-ORHPC5DZ.js";
12
- import "../../safe-bash/command-chunks/chunk-CFK5CVU7.js";
13
14
  import "../../safe-bash/command-chunks/chunk-7OZAH3MX.js";
14
- import "../../safe-bash/command-chunks/chunk-RYNTNJMA.js";
15
15
  import "../../safe-bash/command-chunks/chunk-65DS4IOB.js";
16
16
 
17
17
  // packages/safe-bash-zip-engine/src/zip/sfx.ts
@@ -5,7 +5,7 @@ import {
5
5
  openZipSource,
6
6
  sameZipIdentity,
7
7
  stageZip
8
- } from "../../safe-bash/command-chunks/chunk-IHLZ6HNQ.js";
8
+ } from "../../safe-bash/command-chunks/chunk-TSKJNCKD.js";
9
9
  import {
10
10
  ZipFailure
11
11
  } from "../../safe-bash/command-chunks/chunk-4REP6ZW6.js";
@@ -9,14 +9,14 @@ import {
9
9
  streamZipArchive,
10
10
  updateZipExtras,
11
11
  writeZipArchive
12
- } from "../safe-bash/command-chunks/chunk-WXW665TV.js";
12
+ } from "../safe-bash/command-chunks/chunk-ZSHXZ3XG.js";
13
13
  import "../safe-bash/command-chunks/chunk-FVQFB7OD.js";
14
14
  import "../safe-bash/command-chunks/chunk-3I3PD6VU.js";
15
+ import "../safe-bash/command-chunks/chunk-CFK5CVU7.js";
15
16
  import "../safe-bash/command-chunks/chunk-ZNVKI6FP.js";
17
+ import "../safe-bash/command-chunks/chunk-RYNTNJMA.js";
16
18
  import "../safe-bash/command-chunks/chunk-ORHPC5DZ.js";
17
- import "../safe-bash/command-chunks/chunk-CFK5CVU7.js";
18
19
  import "../safe-bash/command-chunks/chunk-7OZAH3MX.js";
19
- import "../safe-bash/command-chunks/chunk-RYNTNJMA.js";
20
20
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
21
21
  export {
22
22
  crc32,
@@ -2,7 +2,7 @@ import { SsconvertError } from "../contracts.js";
2
2
  import { cellValueFormat } from "../workbook/value-format.js";
3
3
  import { formatText } from "./number-format.js";
4
4
  import { parseFormatSections, selectFormatSection } from "./sections.js";
5
- import { formatGeneralNumber } from "../rendering/print/general-number.js";
5
+ import { formatGeneralNumber } from "./general-number.js";
6
6
  import { scanFormat } from "./numeric.js";
7
7
  import { formattingLocale, localizedValueText } from "./locale.js";
8
8
  function checkedText(text, context) {
@@ -1,6 +1,6 @@
1
- import { SsconvertError } from "../../contracts.js";
2
- import { fixedNumber } from "../../formatting/number-format.js";
3
- import { formattingLocale } from "../../formatting/locale.js";
1
+ import { SsconvertError } from "../contracts.js";
2
+ import { fixedNumber } from "./number-format.js";
3
+ import { formattingLocale } from "./locale.js";
4
4
  /** Native General precision selection, measured in the caller's font units. */
5
5
  export function formatGeneralNumber(value, initial, width, measure, locale, tick, unicodeMinus = true) {
6
6
  const decimal = formattingLocale(locale).decimal;
@@ -37,9 +37,10 @@ function* pythonText(profile, value, repr, ascii, host) {
37
37
  }
38
38
  if (typeof value === "object") {
39
39
  if ("range" in value) {
40
- // Precision may stop before the address, whose native bytes are unstable.
41
- yield* "<RangeRef object at 0x";
42
- throw new SsconvertError("unsupported-feature", "Unsupported ssconvert feature: Python RangeRef object representation");
40
+ // CPython uses a process address. The portable loader uses an opaque,
41
+ // call-local identity for each newly allocated reference wrapper instead.
42
+ yield* "<RangeRef object at 0x" + value.range.toString(16) + ">";
43
+ return;
43
44
  }
44
45
  yield "[";
45
46
  for (let column = 0; column < value.columns.length; column++) {
@@ -82,7 +83,7 @@ function* pythonText(profile, value, repr, ascii, host) {
82
83
  }
83
84
  yield quote;
84
85
  }
85
- function pythonValue(value, host, argument = true) {
86
+ function pythonValue(value, host, references, argument = true) {
86
87
  host.tick();
87
88
  // The node loader evaluates arguments without PERMIT_EMPTY; array children
88
89
  // are converted directly and retain Python None for empty Gnumeric values.
@@ -93,10 +94,10 @@ function pythonValue(value, host, argument = true) {
93
94
  return null;
94
95
  }
95
96
  if (value.kind === "range")
96
- return { range: true };
97
+ return { range: ++references.count };
97
98
  if (value.kind === "matrix" || value.kind === "set") {
98
99
  const rows = host.matrix(value).rows;
99
- return { columns: Array.from({ length: rows[0]?.length ?? 0 }, (_, column) => rows.map(row => pythonValue(row[column], host, false))) };
100
+ return { columns: Array.from({ length: rows[0]?.length ?? 0 }, (_, column) => rows.map(row => pythonValue(row[column], host, references, false))) };
100
101
  }
101
102
  // Both Python C-string acquisition and returned Gnumeric strings stop at NUL.
102
103
  return typeof value.value === "string" ? rendered(value).split("\0", 1)[0] : value.value;
@@ -170,7 +171,8 @@ function decimalFloat(value, kind, precision, alternate, host) {
170
171
  export function pythonPrintf(profile, args, host) {
171
172
  if (!args.length)
172
173
  return { kind: "error", value: "Python exception (<class 'TypeError'>: func_printf() missing 1 required positional argument: 'format')" };
173
- const values = args.map(value => pythonValue(value, host)), format = values[0];
174
+ const references = { count: 0 };
175
+ const values = args.map(value => pythonValue(value, host, references)), format = values[0];
174
176
  // Activated 1.12.61 loaders on CPython 3.12 and 3.14 wrap the sample's
175
177
  // GnumericError rather than recognizing it in py_exc_to_string.
176
178
  if (typeof format !== "string")
@@ -136,9 +136,10 @@ export class SolverProgram {
136
136
  const columns = [];
137
137
  for (let i = 0; i < n; i++) {
138
138
  const lo = this.lower[i], hi = this.upper[i], start = origin[i];
139
- const end = lo === hi ? start : this.model.domains[i] !== 'continuous' && hi - lo === 1 ? hi : start + 1 <= hi ? start + 1 : start - 1 >= hi ? start - 1 : start !== hi ? (start + hi) / 2 : (start + lo) / 2;
139
+ const end = lo === hi ? start : this.model.domains[i] !== 'continuous' && hi - lo === 1 ? hi : start + 1 <= hi ? start + 1 : start - 1 >= lo ? start - 1 : start !== hi ? (start + hi) / 2 : (start + lo) / 2;
140
140
  const dx = end - start;
141
- if (!(dx > 0)) {
141
+ // A finite backward probe carries the same affine slope as a forward probe.
142
+ if (dx === 0) {
142
143
  columns.push(addresses.map(() => 0));
143
144
  continue;
144
145
  }
@@ -4,7 +4,7 @@ import { loadSolverParameters, validateSolverParametersSteps, selectSolverAlgori
4
4
  import { SolverBudget, solveLinearSteps } from "./linear.js";
5
5
  import { SolverProgram } from "./program.js";
6
6
  import { solveNonlinearSteps } from "./nonlinear.js";
7
- import { linearSensitivity } from "./sensitivity.js";
7
+ import { linearSensitivitySteps } from "./sensitivity.js";
8
8
  import { createProgramReport, createSensitivityReport } from "./report.js";
9
9
  export const solverAlgorithms = Object.freeze([
10
10
  Object.freeze({ id: 'glpk', modelType: 'linear', available: true }),
@@ -50,6 +50,12 @@ export async function runSolverValidation(book, context, registry = solverAlgori
50
50
  }
51
51
  const result = await runCooperatively(solveLinearSteps(linear.rows, linear.objective, model.domains, budget), context.signal);
52
52
  solution = result.quality === 'infeasible' || result.quality === 'unbounded' ? undefined : result.solution;
53
+ // Linearization substitutes fixed inputs into the affine constants, leaving
54
+ // zero columns. Restore those coordinates before recalculation and reports.
55
+ if (solution) {
56
+ budget.tick(model.variables.length);
57
+ solution = solution.map((value, i) => program.lower[i] === program.upper[i] ? program.lower[i] : value);
58
+ }
53
59
  if (algorithm.id === 'glpk' && model.options.sensitivityReport && (result.quality === 'infeasible' || result.quality === 'unbounded' || model.domains.some(d => d !== 'continuous'))) {
54
60
  await warning('Solver: Solver ran, but failed');
55
61
  return book;
@@ -65,7 +71,7 @@ export async function runSolverValidation(book, context, registry = solverAlgori
65
71
  else if (result.quality === 'optimal') {
66
72
  quality = algorithm.id === 'glpk' && model.domains.every(d => d === 'continuous') ? 'Feasible' : 'Optimal';
67
73
  if (model.options.sensitivityReport && solution && model.domains.every(d => d === 'continuous'))
68
- sensitivity = linearSensitivity(linear.rows, linear.objective, solution, budget);
74
+ sensitivity = await runCooperatively(linearSensitivitySteps(linear.rows, linear.objective, solution, budget), context.signal);
69
75
  }
70
76
  }
71
77
  }
@@ -1,4 +1,4 @@
1
- import type { LinearRow, SolverBudget } from "./linear.js";
1
+ import { type LinearRow, type SolverBudget } from "./linear.js";
2
2
  export interface SensitivityEntry {
3
3
  readonly low: number;
4
4
  readonly high: number;
@@ -9,4 +9,6 @@ export interface Sensitivity {
9
9
  readonly constraints: readonly SensitivityEntry[];
10
10
  }
11
11
  /** Active-basis sensitivity for continuous linear programs, with shared bounded arithmetic. */
12
- export declare function linearSensitivity(rows: readonly LinearRow[], objective: readonly number[], solution: readonly number[], budget: SolverBudget): Sensitivity;
12
+ export declare function linearSensitivitySteps(rows: readonly LinearRow[], objective: readonly number[], solution: readonly number[], budget: SolverBudget): Generator<void, Sensitivity>;
13
+ /** Synchronous sensitivity inspection; conversions use the cooperative steps. */
14
+ export declare function linearSensitivity(...args: Parameters<typeof linearSensitivitySteps>): Sensitivity;
@@ -1,53 +1,83 @@
1
+ import { simplexSteps } from "./linear.js";
1
2
  /** Active-basis sensitivity for continuous linear programs, with shared bounded arithmetic. */
2
- export function linearSensitivity(rows, objective, solution, budget) {
3
+ export function* linearSensitivitySteps(rows, objective, solution, budget) {
3
4
  const n = objective.length;
4
5
  budget.tick(n * n + rows.length * n);
5
- const basis = [], echelon = [];
6
- for (let i = 0; i < rows.length && basis.length < n; i++) {
7
- const row = rows[i];
8
- const activity = row.coefficients.reduce((sum, v, j) => sum + v * solution[j], 0);
9
- if (Math.abs(activity - row.upper) > 1e-7 * Math.max(1, Math.abs(row.upper)))
10
- continue;
11
- const vector = [...row.coefficients];
12
- for (const b of echelon) {
13
- const pivot = b.findIndex(v => Math.abs(v) > 1e-10), multiplier = vector[pivot];
14
- for (let j = 0; j < n; j++) {
15
- budget.tick();
16
- vector[j] = vector[j] - multiplier * b[j];
17
- }
18
- }
19
- const pivot = vector.findIndex(v => Math.abs(v) > 1e-10);
20
- if (pivot === -1)
21
- continue;
22
- const scale = vector[pivot];
23
- echelon.push(vector.map(v => v / scale));
24
- basis.push(i);
25
- }
26
6
  const missing = () => ({ low: NaN, high: NaN, shadow: NaN });
27
- if (basis.length !== n)
28
- return { variables: objective.map(missing), constraints: rows.map(missing) };
29
- const inverse = basis.map((i, j) => [...rows[i].coefficients, ...objective.map((_, k) => Number(j === k))]);
30
- for (let j = 0; j < n; j++) {
31
- let pivot = j;
32
- for (let i = j + 1; i < n; i++)
33
- if (Math.abs(inverse[i][j]) > Math.abs(inverse[pivot][j]))
34
- pivot = i;
35
- [inverse[j], inverse[pivot]] = [inverse[pivot], inverse[j]];
36
- const divisor = inverse[j][j];
37
- for (let k = 0; k < n * 2; k++) {
38
- budget.tick();
39
- inverse[j][k] = inverse[j][k] / divisor;
40
- }
41
- for (let i = 0; i < n; i++)
42
- if (i !== j) {
43
- const multiplier = inverse[i][j];
44
- for (let k = 0; k < n * 2; k++) {
7
+ const unavailable = () => ({ variables: objective.map(missing), constraints: rows.map(missing) });
8
+ const active = rows.flatMap((row, i) => {
9
+ const activity = row.coefficients.reduce((sum, v, j) => sum + v * solution[j], 0);
10
+ return Math.abs(activity - row.upper) <= 1e-7 * Math.max(1, Math.abs(row.upper)) ? [i] : [];
11
+ });
12
+ const makeBasis = (order) => {
13
+ const basis = [], echelon = [];
14
+ for (const i of order) {
15
+ if (basis.length === n)
16
+ break;
17
+ const vector = [...rows[i].coefficients];
18
+ for (const b of echelon) {
19
+ const pivot = b.findIndex(v => Math.abs(v) > 1e-10), multiplier = vector[pivot];
20
+ for (let j = 0; j < n; j++) {
45
21
  budget.tick();
46
- inverse[i][k] = inverse[i][k] - multiplier * inverse[j][k];
22
+ vector[j] = vector[j] - multiplier * b[j];
47
23
  }
48
24
  }
25
+ const pivot = vector.findIndex(v => Math.abs(v) > 1e-10);
26
+ if (pivot === -1)
27
+ continue;
28
+ const scale = vector[pivot];
29
+ echelon.push(vector.map(v => v / scale));
30
+ basis.push(i);
31
+ }
32
+ if (basis.length !== n)
33
+ return undefined;
34
+ budget.tick(n * n * 2);
35
+ const inverse = basis.map((i, j) => [...rows[i].coefficients, ...objective.map((_, k) => Number(j === k))]);
36
+ for (let j = 0; j < n; j++) {
37
+ let pivot = j;
38
+ for (let i = j + 1; i < n; i++)
39
+ if (Math.abs(inverse[i][j]) > Math.abs(inverse[pivot][j]))
40
+ pivot = i;
41
+ [inverse[j], inverse[pivot]] = [inverse[pivot], inverse[j]];
42
+ const divisor = inverse[j][j];
43
+ for (let k = 0; k < n * 2; k++) {
44
+ budget.tick();
45
+ inverse[j][k] = inverse[j][k] / divisor;
46
+ }
47
+ for (let i = 0; i < n; i++)
48
+ if (i !== j) {
49
+ const multiplier = inverse[i][j];
50
+ for (let k = 0; k < n * 2; k++) {
51
+ budget.tick();
52
+ inverse[i][k] = inverse[i][k] - multiplier * inverse[j][k];
53
+ }
54
+ }
55
+ }
56
+ const dual = basis.map((_, i) => objective.reduce((sum, c, j) => sum + c * inverse[j][n + i], 0));
57
+ return { basis, inverse, dual };
58
+ };
59
+ let selected = makeBasis(active);
60
+ if (!selected)
61
+ return unavailable();
62
+ if (!selected.dual.every(value => Number.isFinite(value) && value >= -1e-10)) {
63
+ // A degenerate vertex can have independent active rows whose dual is
64
+ // infeasible. Find nonnegative multipliers A' * lambda = c, then extend
65
+ // their independent support with zero-multiplier active rows.
66
+ budget.tick(2 * n * active.length);
67
+ const equations = objective.flatMap((value, column) => {
68
+ const coefficients = active.map(i => rows[i].coefficients[column]);
69
+ return [{ coefficients, upper: value }, { coefficients: coefficients.map(v => -v), upper: -value }];
70
+ });
71
+ const feasible = yield* simplexSteps(equations, active.map(() => 0), budget);
72
+ if (feasible.quality !== 'optimal' || !feasible.solution)
73
+ return unavailable();
74
+ const positive = active.filter((_, i) => feasible.solution[i] > 0);
75
+ const zero = active.filter((_, i) => feasible.solution[i] <= 0);
76
+ selected = makeBasis([...positive, ...zero]);
77
+ if (!selected || !selected.dual.every(value => Number.isFinite(value) && value >= -1e-10))
78
+ return unavailable();
49
79
  }
50
- const dual = basis.map((_, i) => objective.reduce((sum, c, j) => sum + c * inverse[j][n + i], 0));
80
+ const { basis, inverse, dual } = selected;
51
81
  const variables = objective.map((c, j) => {
52
82
  let low = -Infinity, high = Infinity;
53
83
  for (let i = 0; i < n; i++) {
@@ -80,3 +110,11 @@ export function linearSensitivity(rows, objective, solution, budget) {
80
110
  });
81
111
  return { variables, constraints };
82
112
  }
113
+ /** Synchronous sensitivity inspection; conversions use the cooperative steps. */
114
+ export function linearSensitivity(...args) {
115
+ const steps = linearSensitivitySteps(...args);
116
+ let result = steps.next();
117
+ while (!result.done)
118
+ result = steps.next();
119
+ return result.value;
120
+ }
@@ -1,3 +1,4 @@
1
+ import { BiffPropertyNames } from './biff-property-names.js';
1
2
  import type { BiffPropertySource } from './biff-encrypted-properties-write.js';
2
3
  import { type CapabilityContext, type RangeSource } from "../spreadsheet-engine/contracts.js";
3
4
  import type { UnsupportedRecord, Workbook } from "../spreadsheet-ast/index.js";
@@ -5,4 +6,4 @@ import type { UnsupportedRecord, Workbook } from "../spreadsheet-ast/index.js";
5
6
  export declare function mergeBiffProperties(book: Workbook, streams: Map<string, Uint8Array | RangeSource>, handled: Set<UnsupportedRecord>, context: CapabilityContext, charge: (amount: number) => void, allocate: (length: number) => Uint8Array, staged?: {
6
7
  sources: Map<string, BiffPropertySource>;
7
8
  reserve: (length: number) => number;
8
- }): Promise<ReadonlySet<string>>;
9
+ }, preserved?: Pick<BiffPropertyNames, "add">): Promise<void>;
@@ -1,3 +1,5 @@
1
+ import { BiffPropertyNames } from './biff-property-names.js';
2
+ import { BiffOriginalProperties } from './biff-property-observations.js';
1
3
  import { BiffMutablePropertyValues } from './biff-property-values.js';
2
4
  import { createBiffPropertyNameEncoder } from "./biff-property-name.js";
3
5
  import { readBiffPropertyText } from "./biff-property-text.js";
@@ -8,10 +10,9 @@ import { Binary, invalidBiff } from "./biff-binary.js";
8
10
  import { biffPropertyFields, biffPropertyFormats, readBiffProperties } from "./biff-properties.js";
9
11
  import { propertyRange, readPropertySectionRanges, withPropertyValueRanges } from "./biff-property-range.js";
10
12
  /** Rebuild offsets around original opaque spans. Never transcode their codepage. */
11
- export async function mergeBiffProperties(book, streams, handled, context, charge, allocate, staged) {
13
+ export async function mergeBiffProperties(book, streams, handled, context, charge, allocate, staged, preserved) {
12
14
  const canonical = (name) => ["\u0005SummaryInformation", "\u0005DocumentSummaryInformation"].find(target => target.toUpperCase() === name.toUpperCase());
13
15
  const snapshots = new Map(), duplicates = new Set();
14
- const preserved = new Set();
15
16
  let nodes = 0, textBytes = 0;
16
17
  const admit = (amount) => {
17
18
  charge(amount);
@@ -85,7 +86,7 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
85
86
  for (const name of duplicates)
86
87
  snapshots.delete(name);
87
88
  if (!snapshots.size)
88
- return preserved;
89
+ return;
89
90
  const parse = async (input) => {
90
91
  const file = propertyRange(input, context), sections = [];
91
92
  for await (const section of readPropertySectionRanges(file, admit, charge, context)) {
@@ -117,12 +118,22 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
117
118
  }
118
119
  return new Binary(bytes);
119
120
  };
120
- const original = new Map(), pending = new Map();
121
- const identity = (property) => `${property.stream}:${property.section}:${property.id}`;
121
+ const same = (a, b) => {
122
+ if (!Array.isArray(a) || !Array.isArray(b))
123
+ return Object.is(a, b);
124
+ charge(a.length + b.length);
125
+ return a.length === b.length && a.every((value, i) => Object.is(value, b[i]));
126
+ };
127
+ const original = new BiffOriginalProperties(context, charge), pending = new Map();
128
+ temporarySources.push(original);
122
129
  const readContext = { ...context, limits: { ...context.limits, inputBytes: context.limits.outputBytes } };
123
130
  // Reuse scalar decoding, but do not create another retained hexadecimal copy.
124
- await readBiffProperties(new Map([...snapshots].map(([name, value]) => [name, value.bytes])), readContext, accountText, charge, undefined, property => { admit(1); original.set(identity(property), property); });
125
- await readBiffProperties(streams, readContext, accountText, charge, undefined, property => { admit(1); pending.set(property.key, property); });
131
+ await readBiffProperties(new Map([...snapshots].map(([name, value]) => [name, value.bytes])), readContext, accountText, charge, undefined, async (property) => {
132
+ admit(1);
133
+ const { stream, section, id, key } = property;
134
+ await original.add({ stream, section, id, key, unchanged: same(property.value, book.properties?.[key]) });
135
+ }, false);
136
+ await readBiffProperties(streams, readContext, accountText, charge, undefined, property => { admit(1); const { stream, section, id, key } = property; pending.set(key, { stream, section, id, key }); }, false);
126
137
  const chunks = async function* (source) {
127
138
  for (let at = 0; at < source.size;) {
128
139
  const bytes = await source.read(at, source.size - at);
@@ -232,48 +243,43 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
232
243
  view.setUint16(8 + i * 2, value.charCodeAt(i), true);
233
244
  return propertyRange(bytes, context);
234
245
  };
235
- const same = (a, b) => {
236
- if (!Array.isArray(a) || !Array.isArray(b))
237
- return Object.is(a, b);
238
- charge(a.length + b.length);
239
- return a.length === b.length && a.every((value, i) => Object.is(value, b[i]));
240
- };
241
246
  for (const [name, snapshot] of snapshots) {
242
- const seen = new Set();
243
- function* modeled() {
247
+ const seen = new BiffPropertyNames(context, charge);
248
+ temporarySources.push(seen);
249
+ async function* modeled() {
244
250
  if (snapshot.modeled) {
245
251
  yield* snapshot.modeled;
246
252
  return;
247
253
  }
248
254
  // SummaryInformation is read first. A legacy document-only snapshot lacks
249
255
  // that earlier stream's ownership decisions: infer only unchanged values.
250
- for (const property of original.values()) {
256
+ for await (const property of original.values()) {
251
257
  charge(1);
252
258
  if (property.stream !== name)
253
259
  continue;
254
260
  if (name === "\u0005SummaryInformation" || snapshots.has("\u0005SummaryInformation") ||
255
- Object.hasOwn(book.properties ?? {}, property.key) && same(property.value, book.properties?.[property.key])) {
261
+ Object.hasOwn(book.properties ?? {}, property.key) && property.unchanged) {
256
262
  admit(1);
257
263
  yield [property.section, property.id, property.key];
258
264
  }
259
265
  }
260
266
  }
261
- for (const entry of modeled()) {
267
+ for await (const entry of modeled()) {
262
268
  admit(1);
263
269
  if (!Array.isArray(entry) || entry.length !== 3 || typeof entry[0] !== "number" || typeof entry[1] !== "number" || typeof entry[2] !== "string")
264
270
  invalidBiff("invalid retained property identity");
265
271
  const [offset, id, key] = entry;
266
- const property = original.get(identity({ stream: name, section: offset, id }));
267
- if (!property || property.key !== key || seen.has(key))
272
+ const property = await original.get(name, offset, id);
273
+ if (!property || property.key !== key || await seen.has(key))
268
274
  invalidBiff("invalid retained property identity");
269
- seen.add(key);
275
+ await seen.add(key);
270
276
  charge(old.get(name).length);
271
277
  const section = old.get(name).find(section => section.offset === offset);
272
- const value = book.properties?.[key], replacement = pending.get(key);
278
+ const replacement = pending.get(key);
273
279
  if (!Object.hasOwn(book.properties ?? {}, key))
274
280
  await remove(section, id);
275
- else if (same(property.value, value)) {
276
- preserved.add(key);
281
+ else if (property.unchanged) {
282
+ await preserved?.add(key);
277
283
  if (replacement)
278
284
  await take(replacement);
279
285
  }
@@ -451,13 +457,14 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
451
457
  if (snapshot)
452
458
  handled.add(snapshot.record);
453
459
  }
454
- const exposed = new Set();
455
- await readBiffProperties(staged?.sources ?? streams, readContext, accountText, charge, undefined, property => {
460
+ const exposed = new BiffPropertyNames(context, charge);
461
+ temporarySources.push(exposed);
462
+ await readBiffProperties(staged?.sources ?? streams, readContext, accountText, charge, undefined, async (property) => {
456
463
  admit(1);
457
464
  if (!Object.hasOwn(book.properties ?? {}, property.key))
458
- exposed.add(property.key);
459
- });
460
- for (const key of exposed)
465
+ await exposed.add(property.key);
466
+ }, false);
467
+ for await (const key of exposed.values())
461
468
  await warn(key, "opaque property exposes a field absent from the model");
462
469
  }
463
470
  catch (error) {
@@ -470,5 +477,4 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
470
477
  throw error;
471
478
  }
472
479
  await closeTemporary();
473
- return preserved;
474
480
  }