@poe-platform/safe-bash 0.1.815 → 0.1.816
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/image-ast/index.js +1 -1
- package/dist/mp4-ast/codecs.d.ts +3 -0
- package/dist/mp4-ast/esds-source.d.ts +7 -0
- package/dist/mp4-ast/index.d.ts +5 -1
- package/dist/mp4-ast/mp4-codec-metadata.d.ts +48 -0
- package/dist/mp4-ast/mp4-codec-source.d.ts +8 -0
- package/dist/mp4-ast/mp4-packets-source.d.ts +11 -0
- package/dist/pdf-ast/ast.d.ts +6 -0
- package/dist/pdf-ast/content/evaluator.d.ts +4 -1
- package/dist/pdf-ast/content/stored-dictionary.d.ts +15 -1
- package/dist/pdf-ast/content/stored-record.d.ts +6 -0
- package/dist/pdf-ast/cos/retained-writer.d.ts +1 -0
- package/dist/pdf-ast/cos/value-parser.d.ts +5 -0
- package/dist/pdf-ast/edit/retained-graph.d.ts +1 -0
- package/dist/pdf-ast/edit/retained-page-copy.d.ts +10 -0
- package/dist/pdf-ast/extract/images.d.ts +2 -1
- package/dist/pdf-ast/fonts/resolve.d.ts +1 -0
- package/dist/pdf-ast/index.d.ts +2 -0
- package/dist/pdf-ast/index.js +1091 -322
- package/dist/pdf-ast/render/raster.d.ts +14 -0
- package/dist/pdf-ast/render/svg-image-stream.d.ts +6 -0
- package/dist/pdf-ast/render/svg-path-stream.d.ts +15 -0
- package/dist/pdf-ast/retained-document.d.ts +1 -1
- package/dist/safe-bash/chunks/{chunk-I6ECNJMR.js → chunk-AXGI5JVL.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-TPG55BAQ.js → chunk-FQRI5AS5.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-TWWGAW4M.js → chunk-HD6DWOAC.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-5JCZEXEM.js → chunk-SXSEF5E2.js} +12 -7
- package/dist/safe-bash/command-chunks/biff-UBP2BZLK-JPODPKS3.js +5448 -0
- package/dist/safe-bash/command-chunks/{chunk-S7HIOT7Z.js → chunk-26JE5JEB.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-AG2SNMP5.js → chunk-2ALHVXEM.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4YLACJHE.js → chunk-2IMIKROX.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-MYZ46FQL.js → chunk-2QZUAZTH.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-YAD7EV4N.js → chunk-2TWXRJPB.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-NYFYTL5G.js → chunk-345YBIHP.js} +27 -27
- package/dist/safe-bash/command-chunks/{chunk-3MG5EAMX.js → chunk-35DU6I2M.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-FSVJ67G5.js → chunk-3DWFXESW.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-TKCUGMRZ.js → chunk-3K5CVXUV.js} +18 -18
- package/dist/safe-bash/command-chunks/{chunk-6LPSKLLD.js → chunk-3MUFXGA2.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-44F5TOHZ.js → chunk-3PM46VWH.js} +15 -15
- package/dist/safe-bash/command-chunks/{chunk-6QYSF7I2.js → chunk-3ZWFE4CK.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-NEYITAAO.js → chunk-45DKGZYO.js} +744 -328
- package/dist/safe-bash/command-chunks/{chunk-U3C6IT2C.js → chunk-4772DJKS.js} +14 -10
- package/dist/safe-bash/command-chunks/{chunk-FOONI6BD.js → chunk-4ABR3KGK.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-7KZ5LWV2.js → chunk-4IDV763L.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-FGGHYUWR.js → chunk-4QEJPP3K.js} +102 -7
- package/dist/safe-bash/command-chunks/{chunk-RV5AGXOV.js → chunk-4X2MPZXW.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-LNTEV56A.js → chunk-4YFTJS5U.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-6XES7Z4G.js → chunk-57PK2QFX.js} +12 -12
- package/dist/safe-bash/command-chunks/{chunk-42MEXZBJ.js → chunk-5GDF5FAS.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-BS3ZEQGT.js → chunk-5KZMR6AJ.js} +18 -16
- package/dist/safe-bash/command-chunks/{chunk-ZU2KJMXO.js → chunk-5MNQTHED.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-W25EIKDJ.js → chunk-5NC2IQMQ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-KY4LCHUF.js → chunk-5O45KGW5.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-GYM5ICK4.js → chunk-5V7WIQ2D.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-GPGLTWNR.js → chunk-5XUWGUGN.js} +16 -11
- package/dist/safe-bash/command-chunks/{chunk-SUTHGUD3.js → chunk-5YL453ZF.js} +34 -34
- package/dist/safe-bash/command-chunks/{chunk-IHXZMAMY.js → chunk-62RG3GHF.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-P2LT6TGR.js → chunk-6EZWG56T.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-CCMAHM3I.js → chunk-6JGICYHP.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-AWPI4DZR.js → chunk-6KJDTKE4.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-FUQMEUAT.js → chunk-6M3JTPKE.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-H33D4R26.js → chunk-6RLWPB44.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-3GRMU7TM.js → chunk-6W4RMBFH.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-RIVKF77R.js → chunk-6YF2QADH.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-LEO4VRIN.js → chunk-77ROD2TR.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-XNGM3W5R.js → chunk-7B2MHKIW.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-RFMHNTTF.js → chunk-7OCTMVYJ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-DBLQUZGN.js → chunk-7PYDVQPB.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-AM5LANIE.js → chunk-A2L3U7DW.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-UYGQEQIP.js → chunk-A4P37F3P.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-ADHFF2IM.js → chunk-A5SPMSKD.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-ENEIE44W.js → chunk-A6OTPNNI.js} +3 -3
- package/dist/safe-bash/command-chunks/chunk-AF2IO57Q.js +733 -0
- package/dist/safe-bash/command-chunks/{chunk-AFPXADZG.js → chunk-AHD3CGAY.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-YW2VYN4V.js → chunk-ALD53QFL.js} +74 -27
- package/dist/safe-bash/command-chunks/{chunk-4B2ZUGLT.js → chunk-ARE267HR.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-OTF2AJ5M.js → chunk-AYQPJQJR.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-2VVJRVYM.js → chunk-B6XTAKKQ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-GCHB7VNX.js → chunk-BIJW6QWB.js} +17 -17
- package/dist/safe-bash/command-chunks/{chunk-OVEPYULA.js → chunk-BKK4MS3V.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-3EB2FSAN.js → chunk-BOVDUJ3A.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-SEPUP6TZ.js → chunk-BSTABZIK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ATHHWPSE.js → chunk-BZRWZ6GO.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-BZMNC7Q5.js → chunk-CGJ7GMHO.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-RGDOYWOD.js → chunk-CHZE6FNT.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-V7E3PZOK.js → chunk-CKA7ZROU.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-MEM2ZPMI.js → chunk-CKIXC7AO.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-Y54L4P4J.js → chunk-CORUUCS2.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-QDVDBN2N.js → chunk-DBZCTL7C.js} +150 -35
- package/dist/safe-bash/command-chunks/{chunk-6ZGCKUAM.js → chunk-DIRK47GT.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-WYZG3DRR.js → chunk-DM5WURQL.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-EBHOZIBS.js → chunk-DOVWHVHI.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-ZIGENXGC.js → chunk-DXOXUKQB.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-JR3Q6QNL.js → chunk-DZOKH5BL.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-6EINUY5G.js → chunk-E22EAYJN.js} +54 -12
- package/dist/safe-bash/command-chunks/{chunk-3EASXF5D.js → chunk-E4TF5W6O.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-MLOYUXUV.js → chunk-EJ4UP7DA.js} +31 -9
- package/dist/safe-bash/command-chunks/{chunk-USGZN2KE.js → chunk-ENMJHB2C.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-ZSQZHFWS.js → chunk-ERWIJYCS.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-S2QNBAN6.js → chunk-ET6LMDEX.js} +12 -12
- package/dist/safe-bash/command-chunks/{chunk-6XGDWFNQ.js → chunk-EWC56JNI.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-EQWFKNHJ.js → chunk-EZDWPTYB.js} +19 -19
- package/dist/safe-bash/command-chunks/{chunk-CQBACD2V.js → chunk-F2NF6FHV.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-NFII726L.js → chunk-FAU2KL6I.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4EHY6J2Z.js → chunk-FB2WPI3M.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-2PKBXGXD.js → chunk-FEBTT5NH.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-FGARVKAX.js +704 -0
- package/dist/safe-bash/command-chunks/{chunk-N4MUBJCT.js → chunk-FGHSE3RZ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-WBKB7HBZ.js → chunk-FHQOFEQK.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-3ZRCL756.js → chunk-FJLSYX5P.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-PMWW7KSB.js → chunk-FJSD43VF.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-XKAUKLF7.js → chunk-FLSXHLJG.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-3EW7GYHM.js → chunk-FR63MJSO.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-NRFTYZ2R.js → chunk-FUYZUETI.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-JUHOL5KB.js → chunk-G3FK5VVG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-4UPKVQWH.js → chunk-G3LUT475.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-Q7UZTMF4.js → chunk-GAROGIVU.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-4RRYWHED.js → chunk-GMBUOYTN.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-FYYFV6PW.js → chunk-GR4ONCQ5.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-XTEIT5CI.js → chunk-GTOMW4VV.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-OVQP6KH5.js → chunk-H56BSMFQ.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-RQYPFLZJ.js → chunk-HOJ7WDTS.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-BLIFGBIO.js → chunk-HOKPYTHQ.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-HQEYSSZV.js +152 -0
- package/dist/safe-bash/command-chunks/{chunk-NEMUPUUB.js → chunk-ICJH6A73.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-CSE4VQKG.js → chunk-IJE65P52.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-MKOIPOXX.js → chunk-IOXMGD2H.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-LDW3RF7Y.js → chunk-ISFGPCED.js} +12 -12
- package/dist/safe-bash/command-chunks/{chunk-S43QRKDC.js → chunk-IVKAFEPO.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-A347DLRB.js → chunk-IWVANZWH.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-ZXELXF2H.js → chunk-IZ3SD5S2.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-HGIMFVI2.js → chunk-J6FNSVHT.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-GLAF45M7.js → chunk-JA36YOZI.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-WHNYT34N.js → chunk-K2R7H3KO.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-HQ2UN2L2.js → chunk-K7VDCBXW.js} +21 -21
- package/dist/safe-bash/command-chunks/{chunk-CKEMZUE3.js → chunk-KDBU5Q2N.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-6VBDJC6V.js → chunk-KDDXLHN7.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-NEVQWOU6.js → chunk-KLAC2MIZ.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-QGD64UHJ.js → chunk-KLCHCSIV.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-CXME4YHU.js → chunk-KM2SMMXZ.js} +59 -201
- package/dist/safe-bash/command-chunks/{chunk-RHU44OMN.js → chunk-KXM3HTAF.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-AVOGFREX.js → chunk-KYIGYYEY.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-5OM3UIK3.js → chunk-L2VLASZ4.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-Z7QOSXQC.js → chunk-LECGQSQW.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-RXQ2G2YK.js → chunk-LFSWLJPR.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-OSYY6E23.js → chunk-LJ3UYESS.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-MVLVIMJ6.js → chunk-LMLBQSAM.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-MGMTRGKM.js → chunk-LNAZ3E4Q.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-WJ2ERUCQ.js → chunk-LNKZVU5V.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-WWHMI4S3.js → chunk-LQDANF2B.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-CIRDVCAZ.js → chunk-LQX7RAF7.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-SWAKALDJ.js → chunk-LT2YCGC5.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-Y7AXMCFV.js → chunk-LZY46GYY.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-VT2PHQ63.js → chunk-MDFNUNK5.js} +15 -15
- package/dist/safe-bash/command-chunks/{chunk-YP3WWV5N.js → chunk-MN3BB4WW.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-WTVJLHMG.js → chunk-MOUCMZZP.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IB5QP4LF.js → chunk-MQE77MEQ.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-FSYMSWJU.js → chunk-MUTARE5I.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-F762XDNG.js → chunk-MZYQKH26.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-N6G3345Q.js → chunk-N32AP43V.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-XU6S3XUZ.js → chunk-N35IJXBK.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-EVYKV3QI.js → chunk-N3ZH4YYH.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-VUWXLH3E.js → chunk-N4HWOLGZ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-WAT2562G.js → chunk-N5J3IZZK.js} +8042 -7189
- package/dist/safe-bash/command-chunks/{chunk-W3ZSWK76.js → chunk-NCNHJRIY.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-FXCSPPYE.js → chunk-NDALIHKK.js} +20 -20
- package/dist/safe-bash/command-chunks/{chunk-BS5JEUEW.js → chunk-NKK76B4V.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-4EZJV4FZ.js → chunk-NLCUQD7Y.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-RHDERFMR.js → chunk-O2HNOQQG.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-G2COZLXX.js → chunk-OBIXFO25.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-47IAU25U.js → chunk-OCV5ZU35.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-3YEQI5B7.js → chunk-OFDJJRAD.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-VDTFVRYX.js → chunk-OFONWWEZ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-F4YFTO2K.js → chunk-OHEZQ4QA.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-JW6WVNTM.js → chunk-OIHQXURE.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ZTMZO4IT.js → chunk-ONQP4FNV.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-K2WOMJOQ.js → chunk-OVUY46QF.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-DGBQ7QDE.js → chunk-OWCBX5M2.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-LKGTH2Q7.js → chunk-P462JTNT.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-5LFGXN3D.js → chunk-P4OWVKMD.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-46AMTJPE.js → chunk-POGVOCOB.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-PLMF35XK.js → chunk-PPN53PX3.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-V5XC43BX.js → chunk-PRO7JOIH.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-UJERQEJB.js → chunk-PU5DMQGG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IWHNRYER.js → chunk-Q65GWGQR.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-BLGGAHQW.js → chunk-QCIAX6HZ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ET5SFGRH.js → chunk-QDV2NIFR.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-Y42KSX63.js → chunk-QMBMZSJF.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-KUOCGGEU.js → chunk-QNETPOMH.js} +6 -5
- package/dist/safe-bash/command-chunks/{chunk-QB72X7FF.js → chunk-QNX5LZBK.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-LZ2JFMKT.js → chunk-QOKFSYD5.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-7DOLY7IV.js → chunk-R7LF4XQV.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-6CDDKNNA.js → chunk-RINR7XPR.js} +36 -10
- package/dist/safe-bash/command-chunks/{chunk-MPXMRTMY.js → chunk-ROQ3VNVX.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-6WNVGCXD.js → chunk-RRAQII52.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-2BNGPR6Z.js → chunk-RTHYAGKI.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-RTKDZBJS.js +816 -0
- package/dist/safe-bash/command-chunks/{chunk-JVKE7YZN.js → chunk-RVWIEXR7.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-XM5QJCPD.js → chunk-S5ER73EA.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-YRPXBGRX.js → chunk-SBXS4S6Y.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-HI6ZYH3W.js → chunk-SHLT5R64.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-Q5PWYPQV.js → chunk-SICTBSLW.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-AXXZNB7U.js → chunk-SL4LD25A.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-JGKSWDGP.js → chunk-SNA2LVBX.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-TXPDKEGY.js → chunk-SWIF6BBY.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-PS5GDFIP.js → chunk-T2FRXSQT.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-HELAVGZH.js → chunk-T4SEQU66.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-3SPLP2DB.js → chunk-T5OQ53XS.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-KBAQHE5Y.js → chunk-TG2RVQLP.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-CZ5K2YPU.js → chunk-TXU7MMHN.js} +24 -24
- package/dist/safe-bash/command-chunks/{chunk-TYPS5MOU.js → chunk-TXWDR2P4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ETXPMVR6.js → chunk-TY7JXEWI.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-X6OHFKBL.js → chunk-U42WHQRH.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-Z2WNYEPD.js → chunk-UFLMOU3B.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-2BLTUQNK.js → chunk-UJYXSLM6.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-Q7TVCBU2.js → chunk-UKAGRRLZ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-4GQKCUS5.js → chunk-UPWLHHZ2.js} +13 -13
- package/dist/safe-bash/command-chunks/{chunk-5L4YGRQU.js → chunk-URQSUMMJ.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-KPHLESD4.js → chunk-UT5X6QRU.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-T5S4SJGO.js → chunk-V6JPIZUW.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-MKK6FM5H.js → chunk-VMZIAFVJ.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-HK6MSB7Z.js → chunk-VNNNVT4C.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-ROL5AEX6.js → chunk-VVV45NLY.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-VVWHFNHD.js +502 -0
- package/dist/safe-bash/command-chunks/{chunk-KCLJGRU7.js → chunk-VZTVR3JI.js} +12 -12
- package/dist/safe-bash/command-chunks/{chunk-PLR5IULU.js → chunk-WDVPHDBH.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-MNK3DDH6.js → chunk-WH624PKJ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-TJLXSENN.js → chunk-WHZ6XK7Y.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-DN6MSXY7.js → chunk-WIW3KDBS.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-GXMPXMDP.js → chunk-WMBELKPP.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-NHNZYWPW.js → chunk-WMV5224N.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-RTNI47C5.js → chunk-WOL3LBXE.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-7SOE7XIS.js → chunk-WVD5WZXD.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-XMTR7QGL.js → chunk-X42MJT2J.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-XUJAQA3S.js → chunk-XBWD6SI3.js} +33 -33
- package/dist/safe-bash/command-chunks/{chunk-ZQM37BGE.js → chunk-XFIDOCYH.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-IBYMPAUW.js → chunk-XPQUUFQD.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-NQINS4XY.js → chunk-XVEI4HZL.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-KSBNZTAZ.js → chunk-YKODRSGT.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-WZRFS5OY.js → chunk-YXR4JE4U.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-DCMSPMMD.js → chunk-Z7UIOPHJ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-AY3KQ4EN.js → chunk-ZAYTFXUX.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-DZH54L3F.js → chunk-ZM7HMBAJ.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-NFGCBQN3.js → chunk-ZNCPIZCN.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-HKGNBH7Z.js → chunk-ZRHKXN6W.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-A45UG4KT.js → chunk-ZZERSKAR.js} +5 -5
- package/dist/safe-bash/command-chunks/{clipboard-BBDK33GP-QZ4ERNQX.js → clipboard-BBDK33GP-VB22F7GI.js} +2 -2
- package/dist/safe-bash/command-chunks/{command-engine-M7S4QIXV.js → command-engine-GHE6QUHU.js} +53 -21
- package/dist/safe-bash/command-chunks/{engine-YUYZJIB4-NZUDFEHL.js → engine-RG6HQCCB-FXYZS264.js} +1 -1
- package/dist/safe-bash/command-chunks/{gnumeric-UJPXWBVR-7VOHQAPM.js → gnumeric-UJPXWBVR-YPXTNEDZ.js} +2 -2
- package/dist/safe-bash/command-chunks/model-store-I7YAWL5V.js +54 -0
- package/dist/safe-bash/command-chunks/{xlsx-RE54MFCS-DI3F765V.js → xlsx-RE54MFCS-IQ6OXXKK.js} +1 -1
- package/dist/safe-bash/commands/bc/index.browser.js +1 -1
- package/dist/safe-bash/full-core.browser.js +4 -4
- package/dist/safe-bash/plugins/index.browser.js +3 -3
- package/dist/safe-bash/registry-entry.browser.js +2 -2
- package/dist/safe-bash/search.browser.js +1 -1
- package/dist/safe-bash/shell/runtime.d.ts +1 -0
- package/dist/safe-bash/shell/runtime.js +12 -3
- package/dist/safe-bash/shell/sync-extra-evaluators.js +7 -4
- package/dist/safe-bash/shell-entry.browser.js +2 -2
- package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
- package/dist/safe-bash-command-awk/awk.js +4 -4
- package/dist/safe-bash-command-awk/index.js +4 -4
- package/dist/safe-bash-command-cp/index.js +3 -3
- package/dist/safe-bash-command-csvkit/index.js +1 -1
- package/dist/safe-bash-command-diff/diff.js +2 -2
- package/dist/safe-bash-command-diff/index.js +3 -3
- package/dist/safe-bash-command-diff/sync.js +2 -2
- package/dist/safe-bash-command-factor/command.js +2 -2
- package/dist/safe-bash-command-factor/index.js +2 -2
- package/dist/safe-bash-command-ffmpeg/index.js +1 -1
- package/dist/safe-bash-command-ffprobe/index.js +2 -2
- package/dist/safe-bash-command-ffprobe/media.d.ts +5 -1
- package/dist/safe-bash-command-ffprobe/media.js +2 -2
- package/dist/safe-bash-command-getopt/command.js +2 -2
- package/dist/safe-bash-command-getopt/index.js +2 -2
- package/dist/safe-bash-command-html-to-markdown/index.js +51 -813
- package/dist/safe-bash-command-html-to-markdown/stored-destination.d.ts +8 -0
- package/dist/safe-bash-command-html-to-markdown/stored-destination.js +10 -0
- package/dist/safe-bash-command-html-to-markdown/stored-text.d.ts +4 -1
- package/dist/safe-bash-command-html-to-markdown/stored-text.js +1 -1
- package/dist/safe-bash-command-htmlq/index.js +1280 -419
- package/dist/safe-bash-command-iconv/command.js +2 -2
- package/dist/safe-bash-command-iconv/index.js +2 -2
- package/dist/safe-bash-command-llm/index.js +2 -2
- package/dist/safe-bash-command-llm/openai.js +2 -2
- package/dist/safe-bash-command-llm/providers/index.js +2 -2
- package/dist/safe-bash-command-llm/providers/openai.js +2 -2
- package/dist/safe-bash-command-node/commands/node/browser.js +4 -4
- package/dist/safe-bash-command-node/commands/node/default-runtime.js +4 -4
- package/dist/safe-bash-command-node/commands/node/safejs.js +4 -4
- package/dist/safe-bash-command-pandoc/command.js +10 -9
- package/dist/safe-bash-command-pandoc/index.js +60 -59
- package/dist/safe-bash-command-patch/index.js +6 -6
- package/dist/safe-bash-command-patch/patch-formats.js +3 -3
- package/dist/safe-bash-command-patch/patch-gnu-reject.js +1 -1
- package/dist/safe-bash-command-patch/patch.js +6 -6
- package/dist/safe-bash-command-patch/stored-patch.d.ts +7 -6
- package/dist/safe-bash-command-patch/unified.d.ts +5 -5
- package/dist/safe-bash-command-patch/unified.js +2 -2
- package/dist/safe-bash-command-pdftk/index.js +21 -108
- package/dist/safe-bash-command-pdftoppm/index.js +131 -27
- package/dist/safe-bash-command-playwright-cli/index.js +12 -12
- package/dist/safe-bash-command-playwright-cli/playwright/abilities.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/capability-events.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/capability-result.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/controller.js +7 -7
- package/dist/safe-bash-command-playwright-cli/playwright/download-capabilities.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/drop-capability.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/index.js +12 -12
- package/dist/safe-bash-command-playwright-cli/playwright/modal-capabilities.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/native-evaluation.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/native-json-snapshot.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/native-snapshot.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/open-options.js +2 -2
- package/dist/safe-bash-command-playwright-cli/playwright/profile.js +3 -3
- package/dist/safe-bash-command-playwright-cli/playwright/recording-capabilities.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/route-capabilities.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/snapshot.js +3 -3
- package/dist/safe-bash-command-playwright-cli/playwright/standard-capabilities.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/storage-capabilities.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/tracing-capabilities.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/webmcp-capabilities.js +1 -1
- package/dist/safe-bash-command-pptx/engine.js +1 -1
- package/dist/safe-bash-command-python/executor.js +11 -11
- package/dist/safe-bash-command-python/index.js +11 -11
- package/dist/safe-bash-command-python/jspi.js +2 -2
- package/dist/safe-bash-command-rg/index.js +3 -3
- package/dist/safe-bash-command-rg/rg-command.js +3 -3
- package/dist/safe-bash-command-safejs/index.js +4 -4
- package/dist/safe-bash-command-safejs/io.js +3 -3
- package/dist/safe-bash-command-safejs/render.js +2 -2
- package/dist/safe-bash-command-safejs/runtime.js +4 -4
- package/dist/safe-bash-command-soffice/index.js +5 -4
- package/dist/safe-bash-command-sort/index.js +3 -3
- package/dist/safe-bash-command-ssconvert/index.js +13 -13
- package/dist/safe-bash-command-tar/create.js +3 -3
- package/dist/safe-bash-command-tar/extract.js +3 -3
- package/dist/safe-bash-command-tar/index.js +7 -7
- package/dist/safe-bash-command-tar/modes.js +5 -5
- package/dist/safe-bash-command-unzip/index.js +2 -2
- package/dist/safe-bash-command-unzip/unzip.js +2 -2
- package/dist/safe-bash-command-xmllint/index.js +1 -1
- package/dist/safe-bash-command-xz/index.js +5 -5
- package/dist/safe-bash-compression-engine/files.js +5 -5
- package/dist/safe-bash-compression-engine/index.js +3 -3
- package/dist/safe-bash-compression-engine/operand.js +6 -6
- package/dist/safe-bash-compression-engine/stream.js +3 -3
- package/dist/safe-bash-compression-engine/zstd-decode.js +2 -2
- package/dist/safe-bash-contracts/escaping.js +3 -3
- package/dist/safe-bash-contracts/filesystem-output.js +3 -3
- package/dist/safe-bash-contracts/index.js +10 -10
- package/dist/safe-bash-docx-engine/ancillary-resources.js +9 -9
- package/dist/safe-bash-docx-engine/batch-operations.js +66 -66
- package/dist/safe-bash-docx-engine/batch-result-schema.js +78 -78
- package/dist/safe-bash-docx-engine/batch.js +77 -77
- package/dist/safe-bash-docx-engine/bookmarks.js +17 -17
- package/dist/safe-bash-docx-engine/charts.js +10 -10
- package/dist/safe-bash-docx-engine/command-option-rules.js +5 -5
- package/dist/safe-bash-docx-engine/command-properties.js +3 -3
- package/dist/safe-bash-docx-engine/comments.js +25 -25
- package/dist/safe-bash-docx-engine/control-bindings.js +20 -20
- package/dist/safe-bash-docx-engine/control-repeat.js +20 -20
- package/dist/safe-bash-docx-engine/controls.js +18 -18
- package/dist/safe-bash-docx-engine/create.js +10 -10
- package/dist/safe-bash-docx-engine/diagrams.js +10 -10
- package/dist/safe-bash-docx-engine/diff.js +12 -12
- package/dist/safe-bash-docx-engine/document-properties.js +15 -15
- package/dist/safe-bash-docx-engine/equations.js +16 -16
- package/dist/safe-bash-docx-engine/extract.js +13 -13
- package/dist/safe-bash-docx-engine/fields.js +22 -22
- package/dist/safe-bash-docx-engine/font-inventory.js +17 -17
- package/dist/safe-bash-docx-engine/font-resources.js +5 -5
- package/dist/safe-bash-docx-engine/image-batch-operations.js +13 -13
- package/dist/safe-bash-docx-engine/image-insertion.js +20 -20
- package/dist/safe-bash-docx-engine/image-layout.js +18 -18
- package/dist/safe-bash-docx-engine/image-replacement.js +21 -21
- package/dist/safe-bash-docx-engine/images.js +18 -18
- package/dist/safe-bash-docx-engine/index.js +113 -113
- package/dist/safe-bash-docx-engine/inspection.js +19 -19
- package/dist/safe-bash-docx-engine/invocation.js +8 -8
- package/dist/safe-bash-docx-engine/io.js +8 -8
- package/dist/safe-bash-docx-engine/links.js +20 -20
- package/dist/safe-bash-docx-engine/lists.js +19 -19
- package/dist/safe-bash-docx-engine/locations.js +14 -14
- package/dist/safe-bash-docx-engine/notes.js +21 -21
- package/dist/safe-bash-docx-engine/objects.js +18 -18
- package/dist/safe-bash-docx-engine/operation-json-schema.js +3 -3
- package/dist/safe-bash-docx-engine/operation-schema.js +2 -2
- package/dist/safe-bash-docx-engine/pack.js +13 -13
- package/dist/safe-bash-docx-engine/package-view-batch-operations.js +21 -21
- package/dist/safe-bash-docx-engine/pandoc-adapter.js +28 -28
- package/dist/safe-bash-docx-engine/paragraph-edit.js +24 -24
- package/dist/safe-bash-docx-engine/part-provider.js +3 -3
- package/dist/safe-bash-docx-engine/property-values.js +3 -3
- package/dist/safe-bash-docx-engine/publication.js +8 -8
- package/dist/safe-bash-docx-engine/removal.js +20 -20
- package/dist/safe-bash-docx-engine/revision-decisions.js +21 -21
- package/dist/safe-bash-docx-engine/revision-edit.js +19 -19
- package/dist/safe-bash-docx-engine/revisions.js +17 -17
- package/dist/safe-bash-docx-engine/run-format.js +19 -19
- package/dist/safe-bash-docx-engine/sanitize.js +33 -33
- package/dist/safe-bash-docx-engine/sections.js +18 -18
- package/dist/safe-bash-docx-engine/settings.js +10 -10
- package/dist/safe-bash-docx-engine/shape-edit.js +20 -20
- package/dist/safe-bash-docx-engine/signatures.js +14 -14
- package/dist/safe-bash-docx-engine/stories.js +21 -21
- package/dist/safe-bash-docx-engine/structure-model-batch-operations.js +37 -37
- package/dist/safe-bash-docx-engine/style-model-batch-operations.js +26 -26
- package/dist/safe-bash-docx-engine/style-model-result-schema.js +43 -43
- package/dist/safe-bash-docx-engine/styles.js +17 -17
- package/dist/safe-bash-docx-engine/table-edit.js +26 -26
- package/dist/safe-bash-docx-engine/table-read.js +15 -15
- package/dist/safe-bash-docx-engine/template.js +21 -21
- package/dist/safe-bash-docx-engine/text-replace.js +19 -19
- package/dist/safe-bash-docx-engine/text-resource-read.js +15 -15
- package/dist/safe-bash-docx-engine/text.js +15 -15
- package/dist/safe-bash-docx-engine/validation.js +6 -6
- package/dist/safe-bash-docx-engine/xml-parts.js +21 -21
- package/dist/safe-bash-line-ending-engine/command.js +4 -4
- package/dist/safe-bash-line-ending-engine/index.js +7 -7
- package/dist/safe-bash-markdown-engine/commonmark-blocks.js +3 -3
- package/dist/safe-bash-markdown-engine/commonmark-inlines.js +3 -3
- package/dist/safe-bash-markdown-engine/gfm-syntax.js +2 -2
- package/dist/safe-bash-markdown-engine/index.js +4 -4
- package/dist/safe-bash-network-engine/aggregate.js +3 -3
- package/dist/safe-bash-network-engine/args.js +3 -3
- package/dist/safe-bash-network-engine/body.js +4 -4
- package/dist/safe-bash-network-engine/decode.js +3 -3
- package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
- package/dist/safe-bash-network-engine/index.js +3 -3
- package/dist/safe-bash-network-engine/output.js +3 -3
- package/dist/safe-bash-network-engine/platform-portable.js +3 -3
- package/dist/safe-bash-network-engine/shared.js +2 -2
- package/dist/safe-bash-network-engine/transfer.js +9 -9
- package/dist/safe-bash-presentation-engine/accessibility.js +31 -30
- package/dist/safe-bash-presentation-engine/animation-editing.js +16 -15
- package/dist/safe-bash-presentation-engine/animations.js +16 -15
- package/dist/safe-bash-presentation-engine/backgrounds.js +17 -16
- package/dist/safe-bash-presentation-engine/bytes.js +4 -3
- package/dist/safe-bash-presentation-engine/chart-editing.js +34 -33
- package/dist/safe-bash-presentation-engine/chart-object-operations.js +25 -24
- package/dist/safe-bash-presentation-engine/charts.js +31 -30
- package/dist/safe-bash-presentation-engine/command-placeholder.js +60 -58
- package/dist/safe-bash-presentation-engine/comments.js +17 -16
- package/dist/safe-bash-presentation-engine/connector-operations.js +32 -31
- package/dist/safe-bash-presentation-engine/connectors.js +29 -28
- package/dist/safe-bash-presentation-engine/content-types.js +5 -4
- package/dist/safe-bash-presentation-engine/creation.js +7 -6
- package/dist/safe-bash-presentation-engine/diff.d.ts +1 -0
- package/dist/safe-bash-presentation-engine/diff.js +44 -33
- package/dist/safe-bash-presentation-engine/drawing-format.js +20 -19
- package/dist/safe-bash-presentation-engine/drawing-operations.js +31 -30
- package/dist/safe-bash-presentation-engine/drawing-schema.js +21 -20
- package/dist/safe-bash-presentation-engine/equations.js +17 -16
- package/dist/safe-bash-presentation-engine/errors.js +3 -2
- package/dist/safe-bash-presentation-engine/fields.js +17 -16
- package/dist/safe-bash-presentation-engine/font-metrics.js +4 -3
- package/dist/safe-bash-presentation-engine/image-extraction.js +20 -19
- package/dist/safe-bash-presentation-engine/image-formatting.js +32 -31
- package/dist/safe-bash-presentation-engine/image-insertion.js +18 -17
- package/dist/safe-bash-presentation-engine/image-replacement.js +21 -20
- package/dist/safe-bash-presentation-engine/image-value.js +5 -4
- package/dist/safe-bash-presentation-engine/images.js +19 -18
- package/dist/safe-bash-presentation-engine/index.js +135 -132
- package/dist/safe-bash-presentation-engine/layouts.js +16 -15
- package/dist/safe-bash-presentation-engine/length.js +4 -3
- package/dist/safe-bash-presentation-engine/links.js +16 -15
- package/dist/safe-bash-presentation-engine/masters.js +15 -14
- package/dist/safe-bash-presentation-engine/media-editing.js +24 -23
- package/dist/safe-bash-presentation-engine/media-extraction.js +17 -16
- package/dist/safe-bash-presentation-engine/media.js +16 -15
- package/dist/safe-bash-presentation-engine/memberships.js +15 -14
- package/dist/safe-bash-presentation-engine/notes.js +18 -17
- package/dist/safe-bash-presentation-engine/ole-enum.js +5 -4
- package/dist/safe-bash-presentation-engine/ole-insertion.js +20 -19
- package/dist/safe-bash-presentation-engine/opaque-objects.js +10 -9
- package/dist/safe-bash-presentation-engine/package-reader.js +6 -5
- package/dist/safe-bash-presentation-engine/package-tools.js +19 -18
- package/dist/safe-bash-presentation-engine/package-uri.js +4 -3
- package/dist/safe-bash-presentation-engine/package-writer.js +5 -4
- package/dist/safe-bash-presentation-engine/presentation-model.js +59 -57
- package/dist/safe-bash-presentation-engine/presentation-settings.js +14 -13
- package/dist/safe-bash-presentation-engine/properties.d.ts +2 -1
- package/dist/safe-bash-presentation-engine/properties.js +25 -15
- package/dist/safe-bash-presentation-engine/relationships.js +5 -4
- package/dist/safe-bash-presentation-engine/resource-limits.js +2 -1
- package/dist/safe-bash-presentation-engine/retained-diff.d.ts +56 -0
- package/dist/safe-bash-presentation-engine/retained-inspection.js +14 -13
- package/dist/safe-bash-presentation-engine/retained-package.js +6 -5
- package/dist/safe-bash-presentation-engine/retained-properties.d.ts +26 -0
- package/dist/safe-bash-presentation-engine/retained-text.js +33 -517
- package/dist/safe-bash-presentation-engine/sanitize.js +20 -16
- package/dist/safe-bash-presentation-engine/selectors.js +11 -10
- package/dist/safe-bash-presentation-engine/shape-groups.js +31 -30
- package/dist/safe-bash-presentation-engine/shape-operations.js +30 -29
- package/dist/safe-bash-presentation-engine/shape-path-operations.js +32 -31
- package/dist/safe-bash-presentation-engine/shape-paths.js +16 -15
- package/dist/safe-bash-presentation-engine/shape-presets.js +4 -3
- package/dist/safe-bash-presentation-engine/shape-selection.js +31 -30
- package/dist/safe-bash-presentation-engine/shape-transforms.js +18 -17
- package/dist/safe-bash-presentation-engine/shapes.js +27 -26
- package/dist/safe-bash-presentation-engine/slide-copy.js +17 -16
- package/dist/safe-bash-presentation-engine/slide-import.js +18 -17
- package/dist/safe-bash-presentation-engine/slide-merge-split.js +20 -19
- package/dist/safe-bash-presentation-engine/slide-model.js +43 -42
- package/dist/safe-bash-presentation-engine/slide-removal.js +18 -17
- package/dist/safe-bash-presentation-engine/slide-transfer-budget.js +10 -9
- package/dist/safe-bash-presentation-engine/slides.js +19 -18
- package/dist/safe-bash-presentation-engine/table-operations.js +33 -32
- package/dist/safe-bash-presentation-engine/table-spans.js +32 -31
- package/dist/safe-bash-presentation-engine/tables.js +31 -30
- package/dist/safe-bash-presentation-engine/tags.js +16 -15
- package/dist/safe-bash-presentation-engine/template-bindings.js +33 -32
- package/dist/safe-bash-presentation-engine/template-repeat.js +40 -39
- package/dist/safe-bash-presentation-engine/text-fitting.js +27 -26
- package/dist/safe-bash-presentation-engine/text-frames.js +27 -26
- package/dist/safe-bash-presentation-engine/text-paragraphs.js +27 -26
- package/dist/safe-bash-presentation-engine/text-reading.js +12 -11
- package/dist/safe-bash-presentation-engine/text-replacement.js +17 -16
- package/dist/safe-bash-presentation-engine/text-runs.js +20 -19
- package/dist/safe-bash-presentation-engine/themes.js +16 -15
- package/dist/safe-bash-presentation-engine/transitions.js +16 -15
- package/dist/safe-bash-presentation-engine/validation.js +10 -9
- package/dist/safe-bash-presentation-engine/xml-parts.js +19 -18
- package/dist/safe-bash-presentation-engine/xml-view.js +4 -3
- package/dist/safe-bash-presentation-engine/xml.js +4 -3
- package/dist/safe-bash-query-engine/index.js +3 -3
- package/dist/safe-bash-query-engine/interpreter.js +2 -2
- package/dist/safe-bash-query-engine/query-core.js +3 -3
- package/dist/safe-bash-regex-engine/ere/matcher.js +3 -3
- package/dist/safe-bash-xml-engine/document.js +3 -3
- package/dist/safe-bash-xml-engine/evaluate.js +1 -1
- package/dist/safe-bash-xml-engine/index.js +4 -4
- package/dist/safe-bash-xml-engine/json.js +14 -10
- package/dist/safe-bash-xml-engine/query.js +2 -2
- package/dist/safe-bash-xml-engine/stored-document.d.ts +4 -0
- package/dist/safe-bash-xml-engine/stored-document.js +1 -1
- package/dist/safe-bash-xml-engine/stored-evaluate.js +3 -3
- package/dist/safe-bash-zip-engine/index.js +2 -2
- package/dist/safe-bash-zip-engine/zip/repair.js +2 -2
- package/dist/safe-bash-zip-engine/zip/sfx.js +2 -2
- package/dist/safe-bash-zip-engine/zip-format.js +2 -2
- package/dist/spreadsheet-format-xls/biff-properties-merge.js +63 -67
- package/dist/spreadsheet-format-xls/biff-properties.js +3 -3
- package/dist/spreadsheet-format-xls/biff-property-transcode.d.ts +6 -1
- package/dist/spreadsheet-format-xls/biff-property-transcode.js +15 -4
- package/dist/spreadsheet-format-xls/biff-property-values.d.ts +6 -1
- package/dist/spreadsheet-format-xls/biff-property-values.js +81 -12
- package/dist/xlsx-ast/comment-geometry.d.ts +12 -0
- package/dist/xlsx-ast/comment-geometry.js +71 -0
- package/dist/xlsx-ast/xlsx-metadata.d.ts +1 -1
- package/dist/xlsx-ast/xlsx-metadata.js +27 -2
- package/dist/xlsx-ast/xlsx-write-metadata.js +9 -1
- package/dist/xlsx-ast/xlsx.js +9 -4
- package/package.json +5 -3
- package/dist/safe-bash/command-chunks/biff-A7XPBWAK-DCLG5QKF.js +0 -5417
- package/dist/safe-bash/command-chunks/chunk-DBNJEXHK.js +0 -387
- package/dist/safe-bash/command-chunks/chunk-EV5G535P.js +0 -240
- package/dist/safe-bash/command-chunks/model-store-UB5DWMAP.js +0 -54
- package/dist/safe-bash/command-chunks/{chunk-NGSO645G.js → chunk-3ZVK2OAY.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-W2FKFEVY.js → chunk-4YSBUQPV.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-UJSLBBQ7.js → chunk-5MFRN3CB.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-AW4Q3GZW.js → chunk-5QXRIZSS.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-KUGV3SSL.js → chunk-CZXYWGVO.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-JWORWL72.js → chunk-DX7KU6YU.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-Z37OM247.js → chunk-E3BL7W5C.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-RIKNMBLZ.js → chunk-FEKECRJP.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-D3HW7R2N.js → chunk-FTZFCMVI.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-KRRG4MGH.js → chunk-GEDO5V32.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-NBRXQUK7.js → chunk-M3OXQXCU.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-JRSZ5IGD.js → chunk-OAM2SUUI.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-HFKS6AET.js → chunk-OCOJMKDP.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-FMJKCVSQ.js → chunk-OOB7YCFQ.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-GGH376XQ.js → chunk-OU4VE5CR.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-DYERIXPU.js → chunk-QGTQJCKW.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-ZSQCROFE.js → chunk-RXXNLH7A.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-TI52LKLL.js → chunk-UVM6QG2H.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-BJXADHRT.js → chunk-WKU65Z3Q.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-KGKF5NM2.js → chunk-WOXLPDO6.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-Y5ADXWBQ.js → chunk-WXW665TV.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-FWCUEZ3K.js → chunk-WYBCSJFG.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-BXU5Y7I5.js → chunk-XI2LETBJ.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-LNLACEAN.js → chunk-Y3ZRIZL7.js} +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BiffMutablePropertyValues } from './biff-property-values.js';
|
|
2
2
|
import { createBiffPropertyNameEncoder } from "./biff-property-name.js";
|
|
3
3
|
import { readBiffPropertyText } from "./biff-property-text.js";
|
|
4
|
-
import {
|
|
4
|
+
import { wideBiffPropertyBytes } from './biff-property-transcode.js';
|
|
5
5
|
import { stagePropertyBytes, propertyChunks } from './biff-property-bytes.js';
|
|
6
6
|
import { SsconvertError } from "../spreadsheet-engine/contracts.js";
|
|
7
7
|
import { Binary, invalidBiff } from "./biff-binary.js";
|
|
@@ -161,6 +161,12 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
|
|
|
161
161
|
yield { id, name, bytes: data.slice(start, at - start) };
|
|
162
162
|
}
|
|
163
163
|
};
|
|
164
|
+
const reserve = staged?.reserve ?? ((length) => {
|
|
165
|
+
charge(length);
|
|
166
|
+
if (length > 0xffffffff || length > context.limits.outputBytes)
|
|
167
|
+
throw new SsconvertError("resource-limit", "ssconvert BIFF property output bytes limit exceeded");
|
|
168
|
+
return length;
|
|
169
|
+
});
|
|
164
170
|
const writeDictionary = async (section, plan) => {
|
|
165
171
|
const output = { length: plan.length, async *chunks() {
|
|
166
172
|
const header = new Uint8Array(4);
|
|
@@ -172,15 +178,13 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
|
|
|
172
178
|
yield* chunks(entry.bytes);
|
|
173
179
|
}
|
|
174
180
|
if (plan.append) {
|
|
175
|
-
charge(plan.append.
|
|
176
|
-
yield*
|
|
181
|
+
charge(plan.append.length);
|
|
182
|
+
yield* propertyChunks(plan.append);
|
|
177
183
|
}
|
|
178
184
|
} };
|
|
179
185
|
if (staged) {
|
|
180
186
|
staged.reserve(plan.length);
|
|
181
|
-
|
|
182
|
-
temporarySources.push(source);
|
|
183
|
-
await section.values.set(0, propertyRange(source, context));
|
|
187
|
+
await section.values.set(0, { size: plan.length, chunks: output.chunks });
|
|
184
188
|
}
|
|
185
189
|
else {
|
|
186
190
|
const bytes = allocate(plan.length);
|
|
@@ -216,9 +220,7 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
|
|
|
216
220
|
if (await source.u32(0) !== 30 || (await (await section.values.get(1))?.u16(4) ?? 1252) === 65001)
|
|
217
221
|
return source;
|
|
218
222
|
if (staged) {
|
|
219
|
-
|
|
220
|
-
temporarySources.push(output);
|
|
221
|
-
return propertyRange(output, context);
|
|
223
|
+
return wideBiffPropertyBytes(source, context, charge, staged.reserve);
|
|
222
224
|
}
|
|
223
225
|
const data = await materialize(source);
|
|
224
226
|
const value = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(data.slice(8, data.u32(4) - 1));
|
|
@@ -238,9 +240,11 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
|
|
|
238
240
|
};
|
|
239
241
|
for (const [name, snapshot] of snapshots) {
|
|
240
242
|
const seen = new Set();
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
243
|
+
function* modeled() {
|
|
244
|
+
if (snapshot.modeled) {
|
|
245
|
+
yield* snapshot.modeled;
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
244
248
|
// SummaryInformation is read first. A legacy document-only snapshot lacks
|
|
245
249
|
// that earlier stream's ownership decisions: infer only unchanged values.
|
|
246
250
|
for (const property of original.values()) {
|
|
@@ -250,11 +254,11 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
|
|
|
250
254
|
if (name === "\u0005SummaryInformation" || snapshots.has("\u0005SummaryInformation") ||
|
|
251
255
|
Object.hasOwn(book.properties ?? {}, property.key) && same(property.value, book.properties?.[property.key])) {
|
|
252
256
|
admit(1);
|
|
253
|
-
|
|
257
|
+
yield [property.section, property.id, property.key];
|
|
254
258
|
}
|
|
255
259
|
}
|
|
256
260
|
}
|
|
257
|
-
for (const entry of modeled) {
|
|
261
|
+
for (const entry of modeled()) {
|
|
258
262
|
admit(1);
|
|
259
263
|
if (!Array.isArray(entry) || entry.length !== 3 || typeof entry[0] !== "number" || typeof entry[1] !== "number" || typeof entry[2] !== "string")
|
|
260
264
|
invalidBiff("invalid retained property identity");
|
|
@@ -333,23 +337,10 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
|
|
|
333
337
|
if (length > size)
|
|
334
338
|
yield new Uint8Array(length - size);
|
|
335
339
|
} };
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
temporarySources.push(source);
|
|
341
|
-
bytes = propertyRange(source, context);
|
|
342
|
-
}
|
|
343
|
-
else {
|
|
344
|
-
const data = allocate(length);
|
|
345
|
-
let at = 0;
|
|
346
|
-
for (const part of entry.chunks()) {
|
|
347
|
-
data.set(part, at);
|
|
348
|
-
at += part.length;
|
|
349
|
-
}
|
|
350
|
-
bytes = propertyRange(data, context);
|
|
351
|
-
}
|
|
352
|
-
await writeDictionary(target, { length: dictionaryLength + bytes.size, count: count + 1, append: bytes });
|
|
340
|
+
// Preserve admission for the entry while writing its chunks directly into
|
|
341
|
+
// the rebuilt dictionary, without a separate store per inserted name.
|
|
342
|
+
reserve(length);
|
|
343
|
+
await writeDictionary(target, { length: dictionaryLength + length, count: count + 1, append: entry });
|
|
353
344
|
}
|
|
354
345
|
else if (await values.get(id)) {
|
|
355
346
|
await warn(property.key, "opaque property ID collision");
|
|
@@ -357,21 +348,11 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
|
|
|
357
348
|
}
|
|
358
349
|
await values.set(id, await wide(value, target));
|
|
359
350
|
}
|
|
360
|
-
const
|
|
361
|
-
charge(length);
|
|
362
|
-
if (length > 0xffffffff || length > context.limits.outputBytes)
|
|
363
|
-
throw new SsconvertError("resource-limit", "ssconvert BIFF property output bytes limit exceeded");
|
|
364
|
-
return length;
|
|
365
|
-
});
|
|
366
|
-
const encodeSection = async (section) => {
|
|
351
|
+
const encodeSection = (section) => {
|
|
367
352
|
if (!section.values)
|
|
368
353
|
return { length: section.bytes.size, chunks: () => chunks(section.bytes) };
|
|
369
354
|
const values = section.values;
|
|
370
|
-
|
|
371
|
-
for await (const [, value] of values.entries())
|
|
372
|
-
length += Math.ceil(value.size / 4) * 4;
|
|
373
|
-
// Buffered output charges the section size here, as the old allocation did.
|
|
374
|
-
reserve(length);
|
|
355
|
+
const length = values.serializedSize;
|
|
375
356
|
return { length, async *chunks() {
|
|
376
357
|
const header = new Uint8Array(8), view = new DataView(header.buffer);
|
|
377
358
|
view.setUint32(0, length, true);
|
|
@@ -397,46 +378,61 @@ export async function mergeBiffProperties(book, streams, handled, context, charg
|
|
|
397
378
|
for (const name of new Set([...streams.keys(), ...snapshots.keys()])) {
|
|
398
379
|
for (const section of fresh.get(name) ?? [])
|
|
399
380
|
charge(1 + section.values.size);
|
|
400
|
-
const remaining =
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
381
|
+
const remaining = async function* () {
|
|
382
|
+
for (const section of fresh.get(name) ?? []) {
|
|
383
|
+
charge(1);
|
|
384
|
+
for await (const [id] of section.values.entries()) {
|
|
385
|
+
charge(1);
|
|
386
|
+
if (id >= 2) {
|
|
387
|
+
yield section;
|
|
388
|
+
break;
|
|
389
|
+
}
|
|
406
390
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
let custom = false, document = false;
|
|
394
|
+
if (!old.has(name))
|
|
395
|
+
for await (const section of remaining()) {
|
|
396
|
+
custom ||= section.guid === biffPropertyFormats.custom;
|
|
397
|
+
document ||= section.guid === biffPropertyFormats.document;
|
|
398
|
+
}
|
|
399
|
+
const builtin = custom && !document ? fresh.get(name)?.find(section => section.guid === biffPropertyFormats.document) : undefined;
|
|
400
|
+
const sections = async function* () {
|
|
401
|
+
yield* old.get(name) ?? [];
|
|
411
402
|
if (builtin)
|
|
412
|
-
|
|
403
|
+
yield builtin;
|
|
404
|
+
yield* remaining();
|
|
405
|
+
};
|
|
406
|
+
let count = 0, length = 28;
|
|
407
|
+
for await (const section of sections()) {
|
|
408
|
+
charge(1);
|
|
409
|
+
count++;
|
|
410
|
+
const size = section.values?.serializedSize ?? section.bytes.size;
|
|
411
|
+
if (section.values)
|
|
412
|
+
reserve(size);
|
|
413
|
+
length += 20 + size;
|
|
413
414
|
}
|
|
414
|
-
|
|
415
|
-
if (!sections.length) {
|
|
415
|
+
if (!count) {
|
|
416
416
|
streams.delete(name);
|
|
417
417
|
continue;
|
|
418
418
|
}
|
|
419
|
-
const bodies = [];
|
|
420
|
-
for (const section of sections)
|
|
421
|
-
bodies.push(await encodeSection(section));
|
|
422
|
-
const length = 28 + sections.length * 20 + bodies.reduce((sum, body) => sum + body.length, 0);
|
|
423
419
|
const originalHeader = await (snapshots.get(name)?.bytes ?? propertyRange(streams.get(name), context)).read(0, 28);
|
|
424
420
|
const output = { length, async *chunks() {
|
|
425
421
|
const header = new Uint8Array(originalHeader);
|
|
426
|
-
new DataView(header.buffer).setUint32(24,
|
|
422
|
+
new DataView(header.buffer).setUint32(24, count, true);
|
|
427
423
|
yield header;
|
|
428
|
-
let at = 28 +
|
|
429
|
-
for (
|
|
424
|
+
let at = 28 + count * 20;
|
|
425
|
+
for await (const section of sections()) {
|
|
430
426
|
charge(1);
|
|
431
427
|
const entry = new Uint8Array(20), view = new DataView(entry.buffer);
|
|
432
428
|
for (let j = 0; j < 16; j++)
|
|
433
|
-
entry[j] = parseInt(
|
|
429
|
+
entry[j] = parseInt(section.guid.slice(j * 2, j * 2 + 2), 16);
|
|
434
430
|
view.setUint32(16, at, true);
|
|
435
431
|
yield entry;
|
|
436
|
-
at +=
|
|
432
|
+
at += section.values?.serializedSize ?? section.bytes.size;
|
|
437
433
|
}
|
|
438
|
-
for (const
|
|
439
|
-
yield*
|
|
434
|
+
for await (const section of sections())
|
|
435
|
+
yield* encodeSection(section).chunks();
|
|
440
436
|
} };
|
|
441
437
|
if (staged) {
|
|
442
438
|
reserve(length);
|
|
@@ -46,7 +46,7 @@ export async function readBiffProperties(streams, context, accountText, accountW
|
|
|
46
46
|
accountWork(file.size);
|
|
47
47
|
const sections = readPropertySectionRanges(file, admit, accountWork, context);
|
|
48
48
|
let unknown = false;
|
|
49
|
-
const modeled = [];
|
|
49
|
+
const modeled = retained ? [] : undefined;
|
|
50
50
|
for await (const { guid, offset, end } of sections) {
|
|
51
51
|
if (!biffPropertyFields.has(guid) && guid !== custom) {
|
|
52
52
|
unknown = true;
|
|
@@ -140,7 +140,7 @@ export async function readBiffProperties(streams, context, accountText, accountW
|
|
|
140
140
|
}
|
|
141
141
|
accountText(key);
|
|
142
142
|
properties[key] = value;
|
|
143
|
-
modeled
|
|
143
|
+
modeled?.push([offset, id, key]);
|
|
144
144
|
observe?.({ stream: streamName, section: offset, id, key, value });
|
|
145
145
|
}
|
|
146
146
|
});
|
|
@@ -148,7 +148,7 @@ export async function readBiffProperties(streams, context, accountText, accountW
|
|
|
148
148
|
unknown = true;
|
|
149
149
|
});
|
|
150
150
|
}
|
|
151
|
-
if (unknown && retained) {
|
|
151
|
+
if (unknown && retained && modeled) {
|
|
152
152
|
if (file.size * 2 > (context.limits.workbookTextBytes ?? context.limits.inputBytes * 2))
|
|
153
153
|
throw new SsconvertError("resource-limit", "ssconvert BIFF property retention limit exceeded");
|
|
154
154
|
let encoded = "";
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { CapabilityContext } from "../spreadsheet-engine/contracts.js";
|
|
2
2
|
import type { BiffPropertyRange } from './biff-property-range.js';
|
|
3
3
|
import type { BiffPropertySource } from './biff-encrypted-properties-write.js';
|
|
4
|
-
/** Count UTF-16 units before
|
|
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
|
|
3
|
-
export async function
|
|
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
|
|
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
|
-
} }
|
|
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
|
|
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.
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
181
|
+
if (this.fallback) {
|
|
182
|
+
const previous = this.fallback.get(id);
|
|
183
|
+
if (!previous)
|
|
184
|
+
return false;
|
|
185
|
+
this.fallback.delete(id);
|
|
186
|
+
this.paddedSize -= Math.ceil(previous.size / 4) * 4;
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
122
189
|
const position = await this.index.get(BigInt(id));
|
|
123
190
|
this.check();
|
|
124
191
|
if (!position)
|
|
125
192
|
return false;
|
|
193
|
+
const previousSize = new Binary(await this.read(Number(position) + 16, 8)).f64(0);
|
|
126
194
|
await this.write(Number(position) + 28, new Uint8Array(4));
|
|
127
195
|
await this.index.set(BigInt(id), 0n);
|
|
128
196
|
this.check();
|
|
129
197
|
this.count--;
|
|
198
|
+
this.paddedSize -= Math.ceil(previousSize / 4) * 4;
|
|
130
199
|
return true;
|
|
131
200
|
}
|
|
132
201
|
async *entries() {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MetadataNode } from "../spreadsheet-engine/codecs/xlsx-write-support.js";
|
|
2
|
+
interface CommentGeometry {
|
|
3
|
+
readonly style: Readonly<Record<string, string>>;
|
|
4
|
+
readonly anchor: string;
|
|
5
|
+
readonly flags: readonly {
|
|
6
|
+
name: string;
|
|
7
|
+
text: string;
|
|
8
|
+
}[];
|
|
9
|
+
}
|
|
10
|
+
/** Retain only scalar geometry for uniquely identified VML notes, never shape relationships or executable markup. */
|
|
11
|
+
export declare function readCommentGeometry(roots: readonly (MetadataNode | undefined)[], charge: (amount?: number) => void): ReadonlyMap<string, CommentGeometry | undefined>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/** Retain only scalar geometry for uniquely identified VML notes, never shape relationships or executable markup. */
|
|
2
|
+
export function readCommentGeometry(roots, charge) {
|
|
3
|
+
const result = new Map();
|
|
4
|
+
const vml = "urn:schemas-microsoft-com:vml", excel = "urn:schemas-microsoft-com:office:excel";
|
|
5
|
+
for (const root of roots)
|
|
6
|
+
for (const shape of root?.children ?? []) {
|
|
7
|
+
charge();
|
|
8
|
+
if (shape.name !== "shape" || shape.namespace !== vml)
|
|
9
|
+
continue;
|
|
10
|
+
const data = shape.children.find(n => { charge(); return n.name === "ClientData" && n.namespace === excel && n.attributes.ObjectType === "Note"; });
|
|
11
|
+
if (!data)
|
|
12
|
+
continue;
|
|
13
|
+
const fields = new Map();
|
|
14
|
+
let duplicate = false;
|
|
15
|
+
for (const field of data.children) {
|
|
16
|
+
charge();
|
|
17
|
+
if (field.namespace !== excel)
|
|
18
|
+
continue;
|
|
19
|
+
duplicate ||= fields.has(field.name);
|
|
20
|
+
fields.set(field.name, field);
|
|
21
|
+
}
|
|
22
|
+
const rowText = fields.get("Row")?.text.trim(), columnText = fields.get("Column")?.text.trim();
|
|
23
|
+
if (!rowText || !columnText)
|
|
24
|
+
continue;
|
|
25
|
+
const row = Number(rowText), column = Number(columnText);
|
|
26
|
+
if (!Number.isInteger(row) || row < 0 || row >= 1048576 || !Number.isInteger(column) || column < 0 || column >= 16384)
|
|
27
|
+
continue;
|
|
28
|
+
const key = `${row}:${column}`;
|
|
29
|
+
if (result.has(key)) {
|
|
30
|
+
result.set(key, undefined);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// An invalid or duplicate source cannot lend its geometry to another note.
|
|
34
|
+
result.set(key, undefined);
|
|
35
|
+
const anchor = fields.get("Anchor")?.text, coordinates = anchor?.split(",").map(s => s.trim());
|
|
36
|
+
if (duplicate || !coordinates || coordinates.length !== 8 || coordinates.some(s => !s || !Number.isSafeInteger(Number(s)) || Number(s) < 0))
|
|
37
|
+
continue;
|
|
38
|
+
if ([0, 4].some(i => Number(coordinates[i]) >= 16384) || [2, 6].some(i => Number(coordinates[i]) >= 1048576))
|
|
39
|
+
continue;
|
|
40
|
+
const style = {};
|
|
41
|
+
for (const declaration of (shape.attributes.style ?? "").split(";")) {
|
|
42
|
+
charge();
|
|
43
|
+
const colon = declaration.indexOf(":");
|
|
44
|
+
if (colon < 0)
|
|
45
|
+
continue;
|
|
46
|
+
const name = declaration.slice(0, colon).trim().toLowerCase(), value = declaration.slice(colon + 1).trim().toLowerCase();
|
|
47
|
+
if (["margin-left", "margin-top", "width", "height"].includes(name)) {
|
|
48
|
+
const unit = ["pt", "px", "in", "cm", "mm", "pc"].find(u => value.endsWith(u));
|
|
49
|
+
const scalar = unit ? value.slice(0, -unit.length).trim() : value;
|
|
50
|
+
const number = Number(scalar);
|
|
51
|
+
if (scalar && Number.isFinite(number) && (unit || number === 0) && (!["width", "height"].includes(name) || number >= 0))
|
|
52
|
+
style[name] = `${number}${unit ?? ""}`;
|
|
53
|
+
}
|
|
54
|
+
else if (name === "visibility" && ["visible", "hidden"].includes(value))
|
|
55
|
+
style[name] = value;
|
|
56
|
+
else if (name === "z-index" && value && Number.isSafeInteger(Number(value)))
|
|
57
|
+
style[name] = value;
|
|
58
|
+
}
|
|
59
|
+
const flags = [];
|
|
60
|
+
for (const name of ["MoveWithCells", "SizeWithCells", "Visible", "AutoFill"]) {
|
|
61
|
+
const field = fields.get(name);
|
|
62
|
+
if (!field)
|
|
63
|
+
continue;
|
|
64
|
+
const text = field.text.trim();
|
|
65
|
+
if (["", "true", "false", "t", "f", "1", "0"].includes(text.toLowerCase()))
|
|
66
|
+
flags.push({ name, text });
|
|
67
|
+
}
|
|
68
|
+
result.set(key, { style, anchor: coordinates.join(", "), flags });
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
@@ -6,5 +6,5 @@ type SourceNode = XmlElement | MetadataNode;
|
|
|
6
6
|
export declare function gnode(name: string, attributes?: Readonly<Record<string, string | number>>, children?: readonly ImportedValue[], text?: string): ImportedValue;
|
|
7
7
|
/** Translate measured sheet metadata into the existing workbook codec model. */
|
|
8
8
|
export declare function readXlsxMetadata(sheet: SourceNode): readonly UnsupportedRecord[];
|
|
9
|
-
export declare function readXlsxComments(comments: XmlElement, context: CapabilityContext): UnsupportedRecord;
|
|
9
|
+
export declare function readXlsxComments(comments: XmlElement, context: CapabilityContext, drawings?: readonly XmlElement[]): UnsupportedRecord;
|
|
10
10
|
export {};
|
|
@@ -168,7 +168,31 @@ export function readXlsxMetadata(sheet) {
|
|
|
168
168
|
}
|
|
169
169
|
return records;
|
|
170
170
|
}
|
|
171
|
-
export function readXlsxComments(comments, context) {
|
|
171
|
+
export function readXlsxComments(comments, context, drawings = []) {
|
|
172
|
+
const printing = new Map();
|
|
173
|
+
const excel = "urn:schemas-microsoft-com:office:excel";
|
|
174
|
+
for (const drawing of drawings)
|
|
175
|
+
for (const shape of drawing.children) {
|
|
176
|
+
context.signal.throwIfAborted();
|
|
177
|
+
if (shape.namespace !== "urn:schemas-microsoft-com:vml" || shape.localName !== "shape")
|
|
178
|
+
continue;
|
|
179
|
+
for (const data of shape.children) {
|
|
180
|
+
if (data.namespace !== excel || data.localName !== "ClientData" || attribute(data, "ObjectType") !== "Note")
|
|
181
|
+
continue;
|
|
182
|
+
const fields = data.children.filter(n => n.namespace === excel);
|
|
183
|
+
const rowText = fields.find(n => n.localName === "Row")?.text.trim(), columnText = fields.find(n => n.localName === "Column")?.text.trim();
|
|
184
|
+
if (!rowText || !columnText)
|
|
185
|
+
continue;
|
|
186
|
+
const row = Number(rowText), column = Number(columnText);
|
|
187
|
+
if (!Number.isInteger(row) || row < 0 || row >= 1048576 || !Number.isInteger(column) || column < 0 || column >= 16384)
|
|
188
|
+
continue;
|
|
189
|
+
const key = formatA1(row, column);
|
|
190
|
+
const flags = fields.filter(n => n.localName === "PrintObject");
|
|
191
|
+
const ambiguous = printing.has(key) || flags.length > 1 || fields.filter(n => n.localName === "Row").length > 1 || fields.filter(n => n.localName === "Column").length > 1;
|
|
192
|
+
const value = flags[0]?.text.trim().toLowerCase();
|
|
193
|
+
printing.set(key, ambiguous ? undefined : ["false", "f", "0"].includes(value ?? "") ? 0 : 1);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
172
196
|
const authors = comments.children.find(c => c.localName === "authors")?.children
|
|
173
197
|
.filter(c => c.localName === "author").map(c => decodeXlsxString(c.text)) ?? [];
|
|
174
198
|
const objects = [];
|
|
@@ -179,13 +203,14 @@ export function readXlsxComments(comments, context) {
|
|
|
179
203
|
const ref = attribute(comment, "ref");
|
|
180
204
|
if (!ref)
|
|
181
205
|
continue;
|
|
206
|
+
const position = parseA1(ref.split(":")[0]);
|
|
182
207
|
const author = authors[numeric(attribute(comment, "authorId"), 0)];
|
|
183
208
|
const text = readXlsxString(comment.children.find(c => c.localName === "text"), context);
|
|
184
209
|
// The Gnumeric markup codec cannot carry colon-bearing font names.
|
|
185
210
|
// The original comments part retains those rich nodes for XLSX transport.
|
|
186
211
|
const representable = text.richText?.every(run => typeof run.attributes.family !== "string" ||
|
|
187
212
|
!run.attributes.family.includes(":"));
|
|
188
|
-
objects.push(gnode("CellComment", { ObjectBound: ref.split(":")[0], ObjectOffset: "1 0 1 0", Direction: 17, Print: 1,
|
|
213
|
+
objects.push(gnode("CellComment", { ObjectBound: ref.split(":")[0], ObjectOffset: "1 0 1 0", Direction: 17, Print: printing.get(formatA1(position.row, position.column)) ?? 1,
|
|
189
214
|
...(author !== undefined ? { Author: author } : {}), Text: text.value,
|
|
190
215
|
...(text.richText?.length && representable ? { TextFormat: writeGnumericRichText(text.richText) } : {}) }));
|
|
191
216
|
}
|