@poe-platform/safe-bash 0.1.806 → 0.1.807
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/README.md +4 -0
- package/dist/image-ast/portable.d.ts +8 -0
- package/dist/image-ast/portable.js +2 -0
- package/dist/safe-bash/chunks/{chunk-KRA6WK4Z.js → chunk-3Y54SR4R.js} +6 -6
- package/dist/safe-bash/chunks/{chunk-OYJI4L4J.js → chunk-PPAA3LJS.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-SCROOJV7.js → chunk-XZ2Y4RWC.js} +2 -2
- package/dist/safe-bash/command-chunks/{biff-AU4VGVMD-6EQ64QPG.js → biff-YBHP7ZES-M7TU7NA5.js} +1211 -1205
- package/dist/safe-bash/command-chunks/chunk-2A6TBB4F.js +14 -0
- package/dist/safe-bash/command-chunks/chunk-2AF7J6FE.js +372 -0
- package/dist/safe-bash/command-chunks/{chunk-AITNVBXO.js → chunk-2ANW3FXH.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-2B6XWO6A.js +730 -0
- package/dist/safe-bash/command-chunks/chunk-2BKOSQD3.js +11 -0
- package/dist/safe-bash/command-chunks/chunk-2EUH5B6A.js +127 -0
- package/dist/safe-bash/command-chunks/chunk-2FOLUJLI.js +400 -0
- package/dist/safe-bash/command-chunks/{chunk-CZLX3KVF.js → chunk-2GILUQJY.js} +4 -6
- package/dist/safe-bash/command-chunks/chunk-2HHGDJ7J.js +280 -0
- package/dist/safe-bash/command-chunks/chunk-2NE2GPSF.js +546 -0
- package/dist/safe-bash/command-chunks/chunk-2P7BLWWI.js +272 -0
- package/dist/safe-bash/command-chunks/chunk-2PSVE7I5.js +101 -0
- package/dist/safe-bash/command-chunks/chunk-2UUFZMOH.js +503 -0
- package/dist/safe-bash/command-chunks/chunk-2VGAC6S6.js +393 -0
- package/dist/safe-bash/command-chunks/chunk-2W54TAGI.js +162 -0
- package/dist/safe-bash/command-chunks/chunk-326A5G42.js +328 -0
- package/dist/safe-bash/command-chunks/chunk-36KIT4DU.js +218 -0
- package/dist/safe-bash/command-chunks/chunk-3CHQG25N.js +455 -0
- package/dist/safe-bash/command-chunks/chunk-3JQ3RF2O.js +72 -0
- package/dist/safe-bash/command-chunks/chunk-3MLJWSYL.js +92 -0
- package/dist/safe-bash/command-chunks/{chunk-ASYR2LU7.js → chunk-3RQCLLQA.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-3SEQG5JH.js +521 -0
- package/dist/safe-bash/command-chunks/chunk-3SWT2KYH.js +78 -0
- package/dist/safe-bash/command-chunks/chunk-3VETFXYR.js +170 -0
- package/dist/safe-bash/command-chunks/chunk-3W6PTHHB.js +65 -0
- package/dist/safe-bash/command-chunks/chunk-457CU3IC.js +8 -0
- package/dist/safe-bash/command-chunks/chunk-45BW6MGM.js +250 -0
- package/dist/safe-bash/command-chunks/chunk-47MFDPH4.js +419 -0
- package/dist/safe-bash/command-chunks/chunk-4ATHODCG.js +444 -0
- package/dist/safe-bash/command-chunks/chunk-4DJICIFV.js +227 -0
- package/dist/safe-bash/command-chunks/chunk-4FNQPK7C.js +385 -0
- package/dist/safe-bash/command-chunks/chunk-4LXDJES2.js +65 -0
- package/dist/safe-bash/command-chunks/chunk-4QRXKUD2.js +662 -0
- package/dist/safe-bash/command-chunks/chunk-4QYNOBWZ.js +455 -0
- package/dist/safe-bash/command-chunks/{chunk-MWNWT6HG.js → chunk-4XFFIKA3.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-5AU5ENL5.js +180 -0
- package/dist/safe-bash/command-chunks/chunk-5DFZAJHL.js +324 -0
- package/dist/safe-bash/command-chunks/chunk-5GEFJROP.js +270 -0
- package/dist/safe-bash/command-chunks/chunk-5HWX4XYW.js +263 -0
- package/dist/safe-bash/command-chunks/chunk-5LKNP4IF.js +872 -0
- package/dist/safe-bash/command-chunks/chunk-5OEHUIVE.js +240 -0
- package/dist/safe-bash/command-chunks/chunk-6EHVFKM7.js +171 -0
- package/dist/safe-bash/command-chunks/chunk-6JTPLJ3B.js +155 -0
- package/dist/safe-bash/command-chunks/chunk-6KLUPQ65.js +496 -0
- package/dist/safe-bash/command-chunks/chunk-6NS5RXQ7.js +285 -0
- package/dist/safe-bash/command-chunks/chunk-6PJIQEH4.js +3472 -0
- package/dist/safe-bash/command-chunks/chunk-763ECQWB.js +566 -0
- package/dist/safe-bash/command-chunks/chunk-7DADVPKN.js +23 -0
- package/dist/safe-bash/command-chunks/chunk-7LEADSSA.js +164 -0
- package/dist/safe-bash/command-chunks/chunk-7MMSBVUP.js +732 -0
- package/dist/safe-bash/command-chunks/chunk-7OXNWLSL.js +35 -0
- package/dist/safe-bash/command-chunks/chunk-7PZASWL6.js +354 -0
- package/dist/safe-bash/command-chunks/{chunk-ZBR3UH4P.js → chunk-7QH3WAMQ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-CB3HTIDK.js → chunk-7SOE7XIS.js} +11 -11
- package/dist/safe-bash/command-chunks/chunk-7Y3ZQ6FE.js +56 -0
- package/dist/safe-bash/command-chunks/chunk-A2YEQYCC.js +289 -0
- package/dist/safe-bash/command-chunks/chunk-A3XE767Q.js +502 -0
- package/dist/safe-bash/command-chunks/{chunk-MWY75E3F.js → chunk-A6LCBGE6.js} +187 -187
- package/dist/safe-bash/command-chunks/{chunk-HFUL6E5I.js → chunk-A7CE4EIU.js} +33 -151
- package/dist/safe-bash/command-chunks/chunk-A7EMM3SB.js +297 -0
- package/dist/safe-bash/command-chunks/{chunk-G3YO3JIN.js → chunk-ABH5FMMA.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-AEJZEGW7.js +1376 -0
- package/dist/safe-bash/command-chunks/chunk-AELXRNM6.js +207 -0
- package/dist/safe-bash/command-chunks/chunk-AEZIPWRI.js +260 -0
- package/dist/safe-bash/command-chunks/{chunk-AHD3CGAY.js → chunk-AFPXADZG.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-AIOB34IX.js +201 -0
- package/dist/safe-bash/command-chunks/chunk-AJEYCC4X.js +262 -0
- package/dist/safe-bash/command-chunks/chunk-ALMHXDKZ.js +321 -0
- package/dist/safe-bash/command-chunks/chunk-AQ6RTM2M.js +309 -0
- package/dist/safe-bash/command-chunks/chunk-AQNFEGMZ.js +481 -0
- package/dist/safe-bash/command-chunks/{chunk-2AKKYY5G.js → chunk-ASZ4EMKE.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-AYJGINE5.js +144 -0
- package/dist/safe-bash/command-chunks/{chunk-MRFW2E6B.js → chunk-B4UWZCQR.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-BDYKJTBQ.js +43 -0
- package/dist/safe-bash/command-chunks/chunk-BERVTMQB.js +41 -0
- package/dist/safe-bash/command-chunks/chunk-BZOY2UMP.js +275 -0
- package/dist/safe-bash/command-chunks/{chunk-W47KIMSP.js → chunk-C2EYJT4S.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-CK5Q6RDE.js +342 -0
- package/dist/safe-bash/command-chunks/chunk-CKEODJVT.js +992 -0
- package/dist/safe-bash/command-chunks/{chunk-Z7UIOPHJ.js → chunk-DCMSPMMD.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-DE66JRWJ.js +352 -0
- package/dist/safe-bash/command-chunks/chunk-DKNNYPOI.js +409 -0
- package/dist/safe-bash/command-chunks/chunk-DV745GFU.js +294 -0
- package/dist/safe-bash/command-chunks/chunk-DXX2Z2QA.js +33 -0
- package/dist/safe-bash/command-chunks/chunk-E7AYF54A.js +473 -0
- package/dist/safe-bash/command-chunks/chunk-EDSFQJAU.js +159 -0
- package/dist/safe-bash/command-chunks/{chunk-UQ3KEUCF.js → chunk-ESD5ZD74.js} +7 -1
- package/dist/safe-bash/command-chunks/chunk-EUXUCRCI.js +1739 -0
- package/dist/safe-bash/command-chunks/chunk-F2ORFLCH.js +3669 -0
- package/dist/safe-bash/command-chunks/chunk-FANIWOBM.js +311 -0
- package/dist/safe-bash/command-chunks/chunk-FOO3AXFK.js +47 -0
- package/dist/safe-bash/command-chunks/chunk-FRZ5P5AB.js +131 -0
- package/dist/safe-bash/command-chunks/chunk-FZSQMMYV.js +276 -0
- package/dist/safe-bash/command-chunks/{chunk-P6NUIMMX.js → chunk-G5F2VSQ7.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-GGOZXIGH.js +299 -0
- package/dist/safe-bash/command-chunks/chunk-GIESJLR2.js +241 -0
- package/dist/safe-bash/command-chunks/chunk-GLPIFP7N.js +385 -0
- package/dist/safe-bash/command-chunks/chunk-GZ2N24A2.js +342 -0
- package/dist/safe-bash/command-chunks/chunk-H2NWPMNW.js +216 -0
- package/dist/safe-bash/command-chunks/chunk-HHLVI2CB.js +3949 -0
- package/dist/safe-bash/command-chunks/chunk-HJDE7ZNV.js +82 -0
- package/dist/safe-bash/command-chunks/chunk-HOAM3F5I.js +124 -0
- package/dist/safe-bash/command-chunks/chunk-HPKUFWHW.js +482 -0
- package/dist/safe-bash/command-chunks/chunk-HPMVMOD2.js +109 -0
- package/dist/safe-bash/command-chunks/chunk-HQAHDJPX.js +8 -0
- package/dist/safe-bash/command-chunks/chunk-HR2Y6YEP.js +12 -0
- package/dist/safe-bash/command-chunks/chunk-HUNXIAOL.js +62 -0
- package/dist/safe-bash/command-chunks/chunk-I4JWZOSP.js +244 -0
- package/dist/safe-bash/command-chunks/chunk-I6AMDG2T.js +85 -0
- package/dist/safe-bash/command-chunks/chunk-IB2Q5CL3.js +288 -0
- package/dist/safe-bash/command-chunks/chunk-IFNLDOJ4.js +316 -0
- package/dist/safe-bash/command-chunks/chunk-IKHBXETN.js +174 -0
- package/dist/safe-bash/command-chunks/chunk-IOSWG5JS.js +228 -0
- package/dist/safe-bash/command-chunks/chunk-IQFRPIXH.js +317 -0
- package/dist/safe-bash/command-chunks/chunk-IR6ZKAUH.js +582 -0
- package/dist/safe-bash/command-chunks/chunk-IW7PEB4I.js +297 -0
- package/dist/safe-bash/command-chunks/chunk-JGGRMERW.js +36 -0
- package/dist/safe-bash/command-chunks/chunk-JHAY3KYC.js +520 -0
- package/dist/safe-bash/command-chunks/{chunk-UO25D4WG.js → chunk-JITDS55R.js} +22 -22
- package/dist/safe-bash/command-chunks/chunk-JJK3CU7Z.js +6 -0
- package/dist/safe-bash/command-chunks/{chunk-XKZWUMH4.js → chunk-JN7GNI2C.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-JQ3EJKHF.js +160 -0
- package/dist/safe-bash/command-chunks/chunk-JQE256UO.js +292 -0
- package/dist/safe-bash/command-chunks/chunk-JQZ3BXWY.js +382 -0
- package/dist/safe-bash/command-chunks/{chunk-7DLR4HCC.js → chunk-JWSOFSGI.js} +22 -22
- package/dist/safe-bash/command-chunks/chunk-K3CDZMUN.js +168 -0
- package/dist/safe-bash/command-chunks/{chunk-SUYSZJI3.js → chunk-K5COUQAQ.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-K7HUXUN2.js +489 -0
- package/dist/safe-bash/command-chunks/chunk-KB3CY3QO.js +62 -0
- package/dist/safe-bash/command-chunks/chunk-KCBVOYAY.js +92 -0
- package/dist/safe-bash/command-chunks/chunk-KD25ICP4.js +366 -0
- package/dist/safe-bash/command-chunks/chunk-KDKQ5D55.js +180 -0
- package/dist/safe-bash/command-chunks/chunk-KNKDUEDW.js +521 -0
- package/dist/safe-bash/command-chunks/chunk-KR2PQ7GD.js +174 -0
- package/dist/safe-bash/command-chunks/chunk-KS6WUDPM.js +153 -0
- package/dist/safe-bash/command-chunks/{chunk-XFHUSZBM.js → chunk-KUGV3SSL.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-L2JAP5KO.js +249 -0
- package/dist/safe-bash/command-chunks/chunk-L2KEA6SN.js +271 -0
- package/dist/safe-bash/command-chunks/chunk-L3WY5ASN.js +526 -0
- package/dist/safe-bash/command-chunks/chunk-L4XEXXVQ.js +399 -0
- package/dist/safe-bash/command-chunks/chunk-LDTUZIJK.js +90 -0
- package/dist/safe-bash/command-chunks/chunk-LHDB4QO5.js +479 -0
- package/dist/safe-bash/command-chunks/chunk-LHL6RWGJ.js +548 -0
- package/dist/safe-bash/command-chunks/chunk-LHRXDH45.js +164 -0
- package/dist/safe-bash/command-chunks/chunk-LQOKYG3O.js +153 -0
- package/dist/safe-bash/command-chunks/chunk-LRDME6WV.js +12 -0
- package/dist/safe-bash/command-chunks/chunk-LWVDJB5S.js +305 -0
- package/dist/safe-bash/command-chunks/chunk-M57GLLK4.js +27 -0
- package/dist/safe-bash/command-chunks/chunk-MAHX3IW3.js +108 -0
- package/dist/safe-bash/command-chunks/{chunk-LQZSR6DT.js → chunk-MDV7W5AS.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-MG7AJD5E.js +168 -0
- package/dist/safe-bash/command-chunks/chunk-MHJ3DQUE.js +213 -0
- package/dist/safe-bash/command-chunks/chunk-MLGNBD7V.js +552 -0
- package/dist/safe-bash/command-chunks/chunk-MN2M33JK.js +237 -0
- package/dist/safe-bash/command-chunks/chunk-MOL3TRBT.js +32 -0
- package/dist/safe-bash/command-chunks/chunk-MQFXMBGD.js +75 -0
- package/dist/safe-bash/command-chunks/chunk-MQPWE22J.js +171 -0
- package/dist/safe-bash/command-chunks/chunk-MQU6Q75R.js +523 -0
- package/dist/safe-bash/command-chunks/chunk-MWAAMNAM.js +353 -0
- package/dist/safe-bash/command-chunks/chunk-MZ4BTMTI.js +240 -0
- package/dist/safe-bash/command-chunks/chunk-N4DY4FPA.js +679 -0
- package/dist/safe-bash/command-chunks/chunk-N74TJL6X.js +183 -0
- package/dist/safe-bash/command-chunks/chunk-NA5Q4V2H.js +304 -0
- package/dist/safe-bash/command-chunks/chunk-NSM366N6.js +22 -0
- package/dist/safe-bash/command-chunks/chunk-NY4ZPV3N.js +523 -0
- package/dist/safe-bash/command-chunks/chunk-NYBF2BVE.js +17 -0
- package/dist/safe-bash/command-chunks/chunk-OBK24KGM.js +24 -0
- package/dist/safe-bash/command-chunks/{chunk-GDAS4LY7.js → chunk-OEKLEUUW.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-OGWJD5QP.js +404 -0
- package/dist/safe-bash/command-chunks/chunk-OIPATOZW.js +154 -0
- package/dist/safe-bash/command-chunks/chunk-OP6J3OLL.js +243 -0
- package/dist/safe-bash/command-chunks/chunk-OTTMIB3C.js +266 -0
- package/dist/safe-bash/command-chunks/{chunk-OZHPB4KD.js → chunk-OU4VE5CR.js} +12 -12
- package/dist/safe-bash/command-chunks/chunk-P42REFYL.js +228 -0
- package/dist/safe-bash/command-chunks/{chunk-YJ3TFZB2.js → chunk-PQOAM5SC.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-PQOIOVF2.js +444 -0
- package/dist/safe-bash/command-chunks/chunk-PRQEVUNE.js +205 -0
- package/dist/safe-bash/command-chunks/{chunk-W5OR7COJ.js → chunk-PVLPWVRH.js} +21 -21
- package/dist/safe-bash/command-chunks/{chunk-BNG4ZMZ3.js → chunk-PXL4NBYP.js} +1 -78
- package/dist/safe-bash/command-chunks/chunk-Q6W5FRZG.js +41 -0
- package/dist/safe-bash/command-chunks/{chunk-KLCHCSIV.js → chunk-QGD64UHJ.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-QHS7PDG3.js +188 -0
- package/dist/safe-bash/command-chunks/chunk-QXCSASIE.js +151 -0
- package/dist/safe-bash/command-chunks/chunk-QYCBVKFT.js +255 -0
- package/dist/safe-bash/command-chunks/chunk-R4TYL2G6.js +1529 -0
- package/dist/safe-bash/command-chunks/chunk-RAXJVM4U.js +625 -0
- package/dist/safe-bash/command-chunks/chunk-RBFZYSZZ.js +207 -0
- package/dist/safe-bash/command-chunks/chunk-RJHVJZ4H.js +185 -0
- package/dist/safe-bash/command-chunks/chunk-RKPPUYZE.js +213 -0
- package/dist/safe-bash/command-chunks/chunk-RMJNV6Q7.js +23 -0
- package/dist/safe-bash/command-chunks/{chunk-MR2RLUPV.js → chunk-RQHQCJMV.js} +11 -9
- package/dist/safe-bash/command-chunks/chunk-RR6QQ25D.js +71 -0
- package/dist/safe-bash/command-chunks/{chunk-JW3KIZU6.js → chunk-RUXY7GN5.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-RZC7QHL6.js +112 -0
- package/dist/safe-bash/command-chunks/chunk-RZJRR4UJ.js +1677 -0
- package/dist/safe-bash/command-chunks/chunk-S4OBYRNI.js +639 -0
- package/dist/safe-bash/command-chunks/{chunk-DQNDEWCI.js → chunk-S65T5JJO.js} +12 -12
- package/dist/safe-bash/command-chunks/chunk-S6PPBBXX.js +77 -0
- package/dist/safe-bash/command-chunks/chunk-SCG4LK5U.js +265 -0
- package/dist/safe-bash/command-chunks/chunk-SDTC2BLK.js +143 -0
- package/dist/safe-bash/command-chunks/chunk-SEK43FRN.js +357 -0
- package/dist/safe-bash/command-chunks/chunk-SH45NZ2P.js +194 -0
- package/dist/safe-bash/command-chunks/chunk-SM733XRT.js +250 -0
- package/dist/safe-bash/command-chunks/chunk-SSRGI476.js +116 -0
- package/dist/safe-bash/command-chunks/chunk-SUUD352U.js +127 -0
- package/dist/safe-bash/command-chunks/{chunk-B5F2KQYA.js → chunk-SWUVHT7G.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-TBAH4XGI.js +38 -0
- package/dist/safe-bash/command-chunks/chunk-TBVWTZTR.js +469 -0
- package/dist/safe-bash/command-chunks/chunk-TGHQGJNR.js +144 -0
- package/dist/safe-bash/command-chunks/{chunk-Q6JLT2EY.js → chunk-TL3KDYEM.js} +8 -110
- package/dist/safe-bash/command-chunks/chunk-TVAEX4WQ.js +473 -0
- package/dist/safe-bash/command-chunks/chunk-TZ2J6LGM.js +163 -0
- package/dist/safe-bash/command-chunks/chunk-UICO7H6S.js +186 -0
- package/dist/safe-bash/command-chunks/chunk-UJTJFMIN.js +501 -0
- package/dist/safe-bash/command-chunks/chunk-UMWWCLBG.js +109 -0
- package/dist/safe-bash/command-chunks/chunk-UPXFSGQG.js +134 -0
- package/dist/safe-bash/command-chunks/chunk-UWUYSXYT.js +272 -0
- package/dist/safe-bash/command-chunks/{chunk-5FMXQUDY.js → chunk-UZOGSYJP.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-V3RGA5PS.js +125 -0
- package/dist/safe-bash/command-chunks/chunk-VEUQWV2V.js +287 -0
- package/dist/safe-bash/command-chunks/chunk-VGKYTZT5.js +161 -0
- package/dist/safe-bash/command-chunks/chunk-VQUEIEVP.js +410 -0
- package/dist/safe-bash/command-chunks/chunk-VU3YUC3U.js +169 -0
- package/dist/safe-bash/command-chunks/chunk-W32KW66B.js +27 -0
- package/dist/safe-bash/command-chunks/chunk-W543LSYH.js +899 -0
- package/dist/safe-bash/command-chunks/chunk-W5YFDYHO.js +387 -0
- package/dist/safe-bash/command-chunks/chunk-W6DV2CLS.js +267 -0
- package/dist/safe-bash/command-chunks/chunk-WAKYUXVQ.js +215 -0
- package/dist/safe-bash/command-chunks/chunk-WGOL3MM6.js +125 -0
- package/dist/safe-bash/command-chunks/{chunk-N2A7V3WY.js → chunk-WHNYT34N.js} +3 -3
- package/dist/safe-bash/command-chunks/chunk-WOZCIRJ5.js +169 -0
- package/dist/safe-bash/command-chunks/chunk-WVB6ONZS.js +232 -0
- package/dist/safe-bash/command-chunks/chunk-WVESNAND.js +25 -0
- package/dist/safe-bash/command-chunks/chunk-XDEA3TL5.js +322 -0
- package/dist/safe-bash/command-chunks/chunk-XFEUWSYG.js +357 -0
- package/dist/safe-bash/command-chunks/chunk-XFMJ4RMS.js +2849 -0
- package/dist/safe-bash/command-chunks/chunk-XH6DXJHX.js +196 -0
- package/dist/safe-bash/command-chunks/chunk-XNJ67APB.js +6 -0
- package/dist/safe-bash/command-chunks/chunk-XP6BHGZ6.js +227 -0
- package/dist/safe-bash/command-chunks/chunk-XXFHTGV2.js +142 -0
- package/dist/safe-bash/command-chunks/chunk-Y5GI5PVT.js +139 -0
- package/dist/safe-bash/command-chunks/chunk-Y6KHC3JB.js +177 -0
- package/dist/safe-bash/command-chunks/{chunk-2UWPMSME.js → chunk-Y72LPXST.js} +8 -8
- package/dist/safe-bash/command-chunks/chunk-YDRWQZNB.js +69 -0
- package/dist/safe-bash/command-chunks/{chunk-P4OJBL2B.js → chunk-YFZ6FPIC.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-YH4DC4RP.js +171 -0
- package/dist/safe-bash/command-chunks/chunk-YH7KKMMN.js +463 -0
- package/dist/safe-bash/command-chunks/{chunk-MN3BB4WW.js → chunk-YP3WWV5N.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-YPVBU7QF.js +2817 -0
- package/dist/safe-bash/command-chunks/chunk-YQYVEVUE.js +1621 -0
- package/dist/safe-bash/command-chunks/chunk-YRNBIU5U.js +175 -0
- package/dist/safe-bash/command-chunks/chunk-Z7ESJVFP.js +10 -0
- package/dist/safe-bash/command-chunks/chunk-ZTAFAHY3.js +653 -0
- package/dist/safe-bash/command-chunks/chunk-ZXKOMB24.js +85 -0
- package/dist/safe-bash/command-chunks/{clipboard-XCSQACOK-SHFXT53F.js → clipboard-6SDGQGC3-TVJ3CG7A.js} +4 -4
- package/dist/safe-bash/command-chunks/{command-engine-4TEGTXCQ.js → command-engine-KMLHVFMA.js} +356 -316
- package/dist/safe-bash/command-chunks/{engine-QDC5VCGO-LYAAFESF.js → engine-EOYR2WTY-KUFLFTDE.js} +2 -4
- package/dist/safe-bash/command-chunks/{gnumeric-OCFH63UT-YI7SG7TN.js → gnumeric-ABKSRBZJ-MPIIPXKP.js} +3 -3
- package/dist/safe-bash/command-chunks/inspection-command-ULEU7ZVV.js +7 -0
- package/dist/safe-bash/command-chunks/model-store-JUFU3RSW.js +54 -0
- package/dist/safe-bash/command-chunks/pdf-22JDKKAR-UDWNSWYB.js +338 -0
- package/dist/safe-bash/command-chunks/{pptx-XG3YSXWZ-XAG36NAB.js → pptx-YDKHIGCD-H7FU4VMJ.js} +2 -2
- package/dist/safe-bash/commands/bc/index.browser.js +2 -2
- package/dist/safe-bash/commands/diffpdf/index.d.ts +2 -0
- package/dist/safe-bash/commands/diffpdf/index.js +2 -0
- package/dist/safe-bash/commands/dot/index.d.ts +2 -0
- package/dist/safe-bash/commands/dot/index.js +2 -0
- package/dist/safe-bash/commands/llm/collections.browser.js +6 -0
- package/dist/safe-bash/commands/llm/collections.d.ts +2 -0
- package/dist/safe-bash/commands/llm/collections.js +2 -0
- package/dist/safe-bash/commands/pandoc/index.browser.js +1 -1
- package/dist/safe-bash/commands/rsvg-convert/index.d.ts +2 -0
- package/dist/safe-bash/commands/rsvg-convert/index.js +2 -0
- package/dist/safe-bash/commands/safejs/io.d.ts +1 -1
- package/dist/safe-bash/commands/safejs/io.js +1 -1
- package/dist/safe-bash/commands/safejs/options.d.ts +1 -1
- package/dist/safe-bash/commands/safejs/options.js +1 -1
- package/dist/safe-bash/commands/safejs/render.d.ts +1 -1
- package/dist/safe-bash/commands/safejs/render.js +1 -1
- package/dist/safe-bash/commands/safejs/runtime.d.ts +1 -1
- package/dist/safe-bash/commands/safejs/runtime.js +1 -1
- package/dist/safe-bash/commands/safejs/types.d.ts +1 -1
- package/dist/safe-bash/commands/safejs/types.js +1 -1
- package/dist/safe-bash/commands/wdiff/index.d.ts +2 -0
- package/dist/safe-bash/commands/wdiff/index.js +2 -0
- package/dist/safe-bash/core.d.ts +4 -0
- package/dist/safe-bash/core.js +4 -0
- package/dist/safe-bash/full-core.browser.js +59 -35
- package/dist/safe-bash/optional-host.browser.js +7 -7
- package/dist/safe-bash/plugins/index.browser.js +7 -7
- package/dist/safe-bash/registry-entry.browser.js +6 -6
- package/dist/safe-bash/search.browser.js +2 -2
- package/dist/safe-bash/shell-entry.browser.js +3 -3
- package/dist/safe-bash-checksum-engine/index.js +83 -40
- package/dist/safe-bash-checksum-engine/md5.d.ts +2 -0
- package/dist/safe-bash-checksum-engine/md5.js +7 -0
- package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
- package/dist/safe-bash-command-awk/awk-runtime.js +2 -2
- package/dist/safe-bash-command-awk/awk.js +7 -7
- package/dist/safe-bash-command-awk/index.js +7 -7
- package/dist/safe-bash-command-chmod/command.js +1 -1
- package/dist/safe-bash-command-chmod/index.js +1 -1
- package/dist/safe-bash-command-csvkit/index.js +6 -6
- package/dist/safe-bash-command-diff/index.js +3 -3
- package/dist/safe-bash-command-diffpdf/LICENSE +21 -0
- package/dist/safe-bash-command-diffpdf/index.d.ts +12 -0
- package/dist/safe-bash-command-diffpdf/index.js +107 -0
- package/dist/safe-bash-command-docx/command.d.ts +36 -0
- package/dist/{safe-bash-docx-engine → safe-bash-command-docx}/discovery.d.ts +4 -4
- package/dist/safe-bash-command-docx/index.js +1 -1
- package/dist/{safe-bash-docx-engine → safe-bash-command-docx}/inspection-command.d.ts +6 -6
- package/dist/safe-bash-command-docx/sdk.d.ts +4 -0
- package/dist/safe-bash-command-docx/sdk.js +24 -0
- package/dist/safe-bash-command-dot/LICENSE +21 -0
- package/dist/safe-bash-command-dot/index.d.ts +14 -0
- package/dist/safe-bash-command-dot/index.js +1298 -0
- package/dist/safe-bash-command-du/arguments.d.ts +1 -1
- package/dist/safe-bash-command-du/arguments.js +1 -1
- package/dist/safe-bash-command-du/du.js +2 -2
- package/dist/safe-bash-command-du/index.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 +16 -16
- package/dist/safe-bash-command-imagemagick/index.js +21 -53
- package/dist/safe-bash-command-llm/collections-embed.d.ts +23 -0
- package/dist/safe-bash-command-llm/collections.d.ts +38 -0
- package/dist/safe-bash-command-llm/collections.js +423 -0
- package/dist/safe-bash-command-llm/command.js +4 -2
- package/dist/safe-bash-command-llm/index.js +12 -8
- package/dist/safe-bash-command-llm/openai.js +4 -3
- package/dist/safe-bash-command-llm/providers/index.js +6 -4
- package/dist/safe-bash-command-llm/providers/openai.js +4 -3
- package/dist/safe-bash-command-node/commands/node/browser.js +9 -12
- package/dist/safe-bash-command-node/commands/node/buffer.js +2 -2
- package/dist/safe-bash-command-node/commands/node/default-runtime.js +9 -12
- package/dist/safe-bash-command-node/commands/node/filesystem.js +3 -3
- package/dist/safe-bash-command-node/commands/node/safejs.js +9 -12
- package/dist/safe-bash-command-node/commands/node/source-maps.js +2 -2
- package/dist/safe-bash-command-node/commands/node/timers.js +3 -3
- package/dist/safe-bash-command-node/commands/safejs/io.d.ts +1 -35
- package/dist/safe-bash-command-node/commands/safejs/io.js +3 -7
- package/dist/safe-bash-command-node/commands/safejs/options.d.ts +2 -22
- package/dist/safe-bash-command-node/commands/safejs/options.js +1 -1
- package/dist/safe-bash-command-node/commands/safejs/render.d.ts +1 -1
- package/dist/safe-bash-command-node/commands/safejs/render.js +3 -5
- package/dist/safe-bash-command-node/commands/safejs/runtime.d.ts +2 -25
- package/dist/safe-bash-command-node/commands/safejs/runtime.js +1 -7
- package/dist/safe-bash-command-node/commands/safejs/types.d.ts +2 -85
- package/dist/safe-bash-command-node/commands/safejs/types.js +1 -1
- package/dist/safe-bash-command-node/integrations/safejs/filesystem.d.ts +2 -5
- package/dist/safe-bash-command-node/integrations/safejs/filesystem.js +3 -3
- package/dist/safe-bash-command-node/integrations/safejs/shell.js +1 -1
- package/dist/safe-bash-command-node/integrations/safejs/values.d.ts +1 -7
- package/dist/safe-bash-command-node/integrations/safejs/values.js +1 -1
- package/dist/safe-bash-command-openssl/index.js +15452 -420
- package/dist/safe-bash-command-pandoc/command.js +1 -1
- package/dist/safe-bash-command-pandoc/index.js +1 -1
- package/dist/safe-bash-command-patch/index.js +5 -5
- package/dist/safe-bash-command-patch/patch.js +4 -4
- package/dist/safe-bash-command-playwright-cli/index.js +25 -25
- package/dist/safe-bash-command-playwright-cli/playwright/abilities.js +8 -8
- package/dist/safe-bash-command-playwright-cli/playwright/controller.js +16 -16
- package/dist/safe-bash-command-playwright-cli/playwright/index.js +25 -25
- package/dist/safe-bash-command-playwright-cli/playwright/standard-capabilities.js +4 -4
- package/dist/{safe-bash-pptx-engine → safe-bash-command-pptx}/command-engine.d.ts +5 -13
- package/dist/safe-bash-command-pptx/engine.d.ts +4 -0
- package/dist/safe-bash-command-pptx/engine.js +37 -0
- package/dist/safe-bash-command-pptx/index.js +1 -1
- package/dist/safe-bash-command-python/executor.js +15 -15
- package/dist/safe-bash-command-python/index.js +15 -15
- package/dist/safe-bash-command-python/jspi.js +4 -4
- package/dist/safe-bash-command-qrencode/index.js +1 -4
- package/dist/safe-bash-command-rsvg-convert/LICENSE +21 -0
- package/dist/safe-bash-command-rsvg-convert/index.d.ts +13 -0
- package/dist/safe-bash-command-rsvg-convert/index.js +84 -0
- package/dist/safe-bash-command-safejs/LICENSE +21 -0
- package/dist/safe-bash-command-safejs/filesystem.d.ts +5 -0
- package/dist/safe-bash-command-safejs/filesystem.js +7 -0
- package/dist/safe-bash-command-safejs/index.d.ts +4 -0
- package/dist/safe-bash-command-safejs/index.js +19 -0
- package/dist/safe-bash-command-safejs/io.d.ts +35 -0
- package/dist/safe-bash-command-safejs/io.js +12 -0
- package/dist/safe-bash-command-safejs/options.d.ts +22 -0
- package/dist/safe-bash-command-safejs/options.js +11 -0
- package/dist/safe-bash-command-safejs/render.d.ts +1 -0
- package/dist/safe-bash-command-safejs/render.js +9 -0
- package/dist/safe-bash-command-safejs/runtime.d.ts +25 -0
- package/dist/safe-bash-command-safejs/runtime.js +13 -0
- package/dist/safe-bash-command-safejs/types.d.ts +85 -0
- package/dist/safe-bash-command-safejs/types.js +7 -0
- package/dist/safe-bash-command-safejs/values.d.ts +7 -0
- package/dist/safe-bash-command-safejs/values.js +19 -0
- package/dist/safe-bash-command-sips/index.js +1 -14
- package/dist/safe-bash-command-ssconvert/index.js +413 -546
- package/dist/safe-bash-command-ssconvert/rendering/chart/axis.d.ts +1 -26
- package/dist/safe-bash-command-ssconvert/rendering/chart/error-bar.d.ts +1 -39
- package/dist/safe-bash-command-ssconvert/rendering/chart/layout.d.ts +1 -24
- package/dist/safe-bash-command-ssconvert/rendering/chart/line.d.ts +1 -23
- package/dist/safe-bash-command-ssconvert/rendering/chart/marker.d.ts +1 -35
- package/dist/safe-bash-command-ssconvert/rendering/chart/pie.d.ts +1 -32
- package/dist/safe-bash-command-ssconvert/rendering/images/index.d.ts +1 -26
- package/dist/safe-bash-command-ssconvert/rendering/print/header-footer.d.ts +1 -16
- package/dist/safe-bash-command-ssconvert/rendering/print/layout.d.ts +1 -65
- package/dist/safe-bash-command-ssconvert/rendering/print/pagination.d.ts +1 -34
- package/dist/safe-bash-command-tar/create.js +4 -4
- package/dist/safe-bash-command-tar/extract.js +4 -4
- package/dist/safe-bash-command-tar/index.js +16 -14
- package/dist/safe-bash-command-tar/modes.js +6 -6
- package/dist/safe-bash-command-tar/options.d.ts +3 -1
- package/dist/safe-bash-command-tar/options.js +1 -1
- package/dist/safe-bash-command-unzip/index.js +4 -4
- package/dist/safe-bash-command-wdiff/LICENSE +21 -0
- package/dist/safe-bash-command-wdiff/index.d.ts +12 -0
- package/dist/safe-bash-command-wdiff/index.js +123 -0
- package/dist/safe-bash-compression-engine/bounded-codec.js +2 -2
- package/dist/safe-bash-compression-engine/codec-loader.js +1 -1
- package/dist/safe-bash-compression-engine/files.js +5 -5
- package/dist/safe-bash-compression-engine/index.js +4 -4
- package/dist/safe-bash-compression-engine/operand.js +5 -5
- package/dist/safe-bash-compression-engine/stream.js +4 -4
- package/dist/safe-bash-compression-engine/zstd-decode.js +3 -3
- package/dist/safe-bash-contracts/escaping.js +2 -2
- package/dist/safe-bash-contracts/index.js +15 -15
- package/dist/safe-bash-docx-engine/admission.js +31 -0
- package/dist/safe-bash-docx-engine/ancillary-resources.js +38 -0
- package/dist/safe-bash-docx-engine/archive.js +24 -0
- package/dist/safe-bash-docx-engine/argument-json.js +25 -0
- package/dist/safe-bash-docx-engine/batch-operations.d.ts +7 -0
- package/dist/safe-bash-docx-engine/batch-operations.js +95 -0
- package/dist/safe-bash-docx-engine/batch-result-schema.d.ts +2 -0
- package/dist/safe-bash-docx-engine/batch-result-schema.js +145 -0
- package/dist/safe-bash-docx-engine/batch.js +106 -0
- package/dist/safe-bash-docx-engine/bookmarks.js +43 -0
- package/dist/safe-bash-docx-engine/budget.js +18 -0
- package/dist/safe-bash-docx-engine/charts.js +35 -0
- package/dist/safe-bash-docx-engine/command-option-rules.d.ts +1 -0
- package/dist/safe-bash-docx-engine/command-option-rules.js +24 -0
- package/dist/safe-bash-docx-engine/command-properties.d.ts +1 -0
- package/dist/safe-bash-docx-engine/command-properties.js +18 -0
- package/dist/safe-bash-docx-engine/command-selection.d.ts +1 -0
- package/dist/safe-bash-docx-engine/command-selection.js +15 -0
- package/dist/safe-bash-docx-engine/comments.js +53 -0
- package/dist/safe-bash-docx-engine/control-bindings.js +45 -0
- package/dist/safe-bash-docx-engine/control-repeat.js +46 -0
- package/dist/safe-bash-docx-engine/controls.js +52 -0
- package/dist/safe-bash-docx-engine/create.js +36 -0
- package/dist/safe-bash-docx-engine/diagrams.js +43 -0
- package/dist/safe-bash-docx-engine/diff.js +33 -0
- package/dist/safe-bash-docx-engine/discovery-result-schema.d.ts +72 -0
- package/dist/safe-bash-docx-engine/discovery-result-schema.js +36 -0
- package/dist/safe-bash-docx-engine/document-properties.js +43 -0
- package/dist/safe-bash-docx-engine/equations.js +53 -0
- package/dist/safe-bash-docx-engine/extract.js +40 -0
- package/dist/safe-bash-docx-engine/fields.js +48 -0
- package/dist/safe-bash-docx-engine/font-inventory.js +40 -0
- package/dist/safe-bash-docx-engine/font-resources.js +33 -0
- package/dist/safe-bash-docx-engine/image-batch-operations.d.ts +4 -0
- package/dist/safe-bash-docx-engine/image-batch-operations.js +35 -0
- package/dist/safe-bash-docx-engine/image-insertion.js +46 -0
- package/dist/safe-bash-docx-engine/image-layout.js +43 -0
- package/dist/safe-bash-docx-engine/image-replacement.js +48 -0
- package/dist/safe-bash-docx-engine/images.js +49 -0
- package/dist/safe-bash-docx-engine/index.d.ts +1 -3
- package/dist/safe-bash-docx-engine/index.js +369 -19350
- package/dist/safe-bash-docx-engine/inspection.js +49 -0
- package/dist/safe-bash-docx-engine/invocation.d.ts +50 -0
- package/dist/safe-bash-docx-engine/invocation.js +66 -0
- package/dist/safe-bash-docx-engine/io-errors.js +11 -0
- package/dist/safe-bash-docx-engine/io.js +29 -0
- package/dist/safe-bash-docx-engine/links.js +47 -0
- package/dist/safe-bash-docx-engine/lists.js +46 -0
- package/dist/safe-bash-docx-engine/location-token.js +27 -0
- package/dist/safe-bash-docx-engine/locations.js +39 -0
- package/dist/safe-bash-docx-engine/model-context.js +15 -0
- package/dist/safe-bash-docx-engine/model-errors.js +13 -0
- package/dist/safe-bash-docx-engine/notes.js +48 -0
- package/dist/safe-bash-docx-engine/objects.js +49 -0
- package/dist/safe-bash-docx-engine/operation-json-schema.js +21 -0
- package/dist/safe-bash-docx-engine/operation-schema.js +29 -0
- package/dist/safe-bash-docx-engine/pack-uri-batch-operations.d.ts +3 -0
- package/dist/safe-bash-docx-engine/pack-uri-batch-operations.js +15 -0
- package/dist/safe-bash-docx-engine/pack.js +38 -0
- package/dist/safe-bash-docx-engine/package-view-batch-operations.d.ts +4 -0
- package/dist/safe-bash-docx-engine/package-view-batch-operations.js +47 -0
- package/dist/safe-bash-docx-engine/package-xml.js +25 -0
- package/dist/safe-bash-docx-engine/pandoc-adapter.js +55 -6
- package/dist/safe-bash-docx-engine/paragraph-edit.js +52 -0
- package/dist/safe-bash-docx-engine/part-provider.js +18 -0
- package/dist/safe-bash-docx-engine/property-values.js +46 -0
- package/dist/safe-bash-docx-engine/publication.js +40 -0
- package/dist/safe-bash-docx-engine/removal.js +44 -0
- package/dist/safe-bash-docx-engine/revision-decisions.js +46 -0
- package/dist/safe-bash-docx-engine/revision-edit.js +43 -0
- package/dist/safe-bash-docx-engine/revisions.js +42 -0
- package/dist/safe-bash-docx-engine/run-format.js +43 -0
- package/dist/safe-bash-docx-engine/sanitize.js +59 -0
- package/dist/safe-bash-docx-engine/sections.js +47 -0
- package/dist/safe-bash-docx-engine/settings.js +36 -0
- package/dist/safe-bash-docx-engine/shape-edit.js +47 -0
- package/dist/safe-bash-docx-engine/signatures.js +42 -0
- package/dist/safe-bash-docx-engine/simple-selection.d.ts +1 -1
- package/dist/safe-bash-docx-engine/stories.js +48 -0
- package/dist/safe-bash-docx-engine/structure-model-batch-operations.d.ts +3 -0
- package/dist/safe-bash-docx-engine/structure-model-batch-operations.js +64 -0
- package/dist/safe-bash-docx-engine/style-model-batch-operations.js +57 -0
- package/dist/safe-bash-docx-engine/style-model-result-schema.d.ts +4 -0
- package/dist/safe-bash-docx-engine/style-model-result-schema.js +76 -0
- package/dist/safe-bash-docx-engine/styles.js +44 -0
- package/dist/safe-bash-docx-engine/table-edit.js +52 -0
- package/dist/safe-bash-docx-engine/table-read.js +38 -0
- package/dist/safe-bash-docx-engine/template.js +45 -0
- package/dist/safe-bash-docx-engine/text-replace.js +47 -0
- package/dist/safe-bash-docx-engine/text-resource-read.js +42 -0
- package/dist/safe-bash-docx-engine/text.js +36 -0
- package/dist/safe-bash-docx-engine/validation.js +30 -0
- package/dist/safe-bash-docx-engine/xml-parts.js +48 -0
- package/dist/safe-bash-markdown-engine/index.js +3 -3
- 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 +20 -20
- package/dist/safe-bash-pptx-engine/bytes.d.ts +1 -4
- package/dist/safe-bash-pptx-engine/bytes.js +2 -11
- package/dist/safe-bash-pptx-engine/index.d.ts +1 -103
- package/dist/safe-bash-pptx-engine/index.js +1 -662
- package/dist/safe-bash-presentation-engine/LICENSE +21 -0
- package/dist/safe-bash-presentation-engine/accessibility.js +43 -0
- package/dist/safe-bash-presentation-engine/animation-editing.js +29 -0
- package/dist/safe-bash-presentation-engine/animations.js +23 -0
- package/dist/safe-bash-presentation-engine/backgrounds.js +26 -0
- package/dist/safe-bash-presentation-engine/bytes.d.ts +4 -0
- package/dist/safe-bash-presentation-engine/bytes.js +13 -0
- package/dist/safe-bash-presentation-engine/chart-editing.js +60 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-enums.d.ts +2 -2
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-object-operations.d.ts +1 -1
- package/dist/safe-bash-presentation-engine/chart-object-operations.js +35 -0
- package/dist/safe-bash-presentation-engine/charts.js +41 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/color-enums.d.ts +5 -5
- package/dist/safe-bash-presentation-engine/command-placeholder.js +64 -0
- package/dist/safe-bash-presentation-engine/comments.js +32 -0
- package/dist/safe-bash-presentation-engine/connector-operations.js +50 -0
- package/dist/safe-bash-presentation-engine/connectors.js +49 -0
- package/dist/safe-bash-presentation-engine/content-types.js +9 -0
- package/dist/safe-bash-presentation-engine/contracts.js +0 -0
- package/dist/safe-bash-presentation-engine/creation.js +15 -0
- package/dist/safe-bash-presentation-engine/diff.js +40 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/drawing-enums.d.ts +20 -20
- package/dist/safe-bash-presentation-engine/drawing-format.js +44 -0
- package/dist/safe-bash-presentation-engine/drawing-operations.js +41 -0
- package/dist/safe-bash-presentation-engine/drawing-schema.d.ts +1549 -0
- package/dist/safe-bash-presentation-engine/drawing-schema.js +33 -0
- package/dist/safe-bash-presentation-engine/equations.js +30 -0
- package/dist/safe-bash-presentation-engine/errors.js +23 -0
- package/dist/safe-bash-presentation-engine/fields.js +32 -0
- package/dist/safe-bash-presentation-engine/font-metrics.js +12 -0
- package/dist/safe-bash-presentation-engine/image-extraction.js +29 -0
- package/dist/safe-bash-presentation-engine/image-formatting.js +43 -0
- package/dist/safe-bash-presentation-engine/image-insertion.js +26 -0
- package/dist/safe-bash-presentation-engine/image-metadata.d.ts +9 -0
- package/dist/safe-bash-presentation-engine/image-metadata.js +9 -0
- package/dist/safe-bash-presentation-engine/image-replacement.js +30 -0
- package/dist/safe-bash-presentation-engine/image-value.js +15 -0
- package/dist/safe-bash-presentation-engine/images.js +30 -0
- package/dist/safe-bash-presentation-engine/index.d.ts +100 -0
- package/dist/safe-bash-presentation-engine/index.js +791 -0
- package/dist/safe-bash-presentation-engine/layouts.js +31 -0
- package/dist/safe-bash-presentation-engine/length.js +21 -0
- package/dist/safe-bash-presentation-engine/links.js +33 -0
- package/dist/safe-bash-presentation-engine/masters.js +54 -0
- package/dist/safe-bash-presentation-engine/media-editing.js +35 -0
- package/dist/safe-bash-presentation-engine/media-extraction.js +24 -0
- package/dist/safe-bash-presentation-engine/media.js +23 -0
- package/dist/safe-bash-presentation-engine/memberships.js +24 -0
- package/dist/safe-bash-presentation-engine/notes.js +27 -0
- package/dist/safe-bash-presentation-engine/ole-enum.js +10 -0
- package/dist/safe-bash-presentation-engine/ole-insertion.js +29 -0
- package/dist/safe-bash-presentation-engine/opaque-objects.js +21 -0
- package/dist/safe-bash-presentation-engine/package-reader.js +13 -0
- package/dist/safe-bash-presentation-engine/package-tools.js +25 -0
- package/dist/safe-bash-presentation-engine/package-uri.d.ts +13 -0
- package/dist/safe-bash-presentation-engine/package-uri.js +16 -0
- package/dist/safe-bash-presentation-engine/package-writer.js +13 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/presentation-model.d.ts +1 -1
- package/dist/safe-bash-presentation-engine/presentation-model.js +63 -0
- package/dist/safe-bash-presentation-engine/presentation-settings.js +25 -0
- package/dist/safe-bash-presentation-engine/properties.js +37 -0
- package/dist/safe-bash-presentation-engine/publication.d.ts +10 -0
- package/dist/safe-bash-presentation-engine/publication.js +0 -0
- package/dist/safe-bash-presentation-engine/relationships.js +16 -0
- package/dist/safe-bash-presentation-engine/resource-limits.js +8 -0
- package/dist/safe-bash-presentation-engine/sanitize.js +24 -0
- package/dist/safe-bash-presentation-engine/selector-schema.js +7 -0
- package/dist/safe-bash-presentation-engine/selectors.js +26 -0
- package/dist/safe-bash-presentation-engine/shape-groups.js +47 -0
- package/dist/safe-bash-presentation-engine/shape-operations.js +48 -0
- package/dist/safe-bash-presentation-engine/shape-path-operations.js +44 -0
- package/dist/safe-bash-presentation-engine/shape-paths.js +31 -0
- package/dist/safe-bash-presentation-engine/shape-presets.js +11 -0
- package/dist/safe-bash-presentation-engine/shape-selection.js +43 -0
- package/dist/safe-bash-presentation-engine/shape-transforms.js +28 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-types.d.ts +1 -1
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shapes.d.ts +1 -1
- package/dist/safe-bash-presentation-engine/shapes.js +66 -0
- package/dist/safe-bash-presentation-engine/slide-copy.js +24 -0
- package/dist/safe-bash-presentation-engine/slide-import.js +27 -0
- package/dist/safe-bash-presentation-engine/slide-merge-split.js +33 -0
- package/dist/safe-bash-presentation-engine/slide-model.js +74 -0
- package/dist/safe-bash-presentation-engine/slide-removal.js +25 -0
- package/dist/safe-bash-presentation-engine/slide-transfer-budget.js +17 -0
- package/dist/safe-bash-presentation-engine/slides.js +26 -0
- package/dist/safe-bash-presentation-engine/table-operations.js +51 -0
- package/dist/safe-bash-presentation-engine/table-spans.js +42 -0
- package/dist/safe-bash-presentation-engine/tables.js +45 -0
- package/dist/safe-bash-presentation-engine/tags.js +25 -0
- package/dist/safe-bash-presentation-engine/template-bindings.js +44 -0
- package/dist/safe-bash-presentation-engine/template-repeat.js +51 -0
- package/dist/safe-bash-presentation-engine/text-fitting.js +39 -0
- package/dist/safe-bash-presentation-engine/text-frames.js +52 -0
- package/dist/safe-bash-presentation-engine/text-paragraphs.js +58 -0
- package/dist/safe-bash-presentation-engine/text-reading.js +23 -0
- package/dist/safe-bash-presentation-engine/text-replacement.js +24 -0
- package/dist/safe-bash-presentation-engine/text-runs.js +45 -0
- package/dist/safe-bash-presentation-engine/themes.js +31 -0
- package/dist/safe-bash-presentation-engine/transitions.js +27 -0
- package/dist/safe-bash-presentation-engine/validation.js +14 -0
- package/dist/safe-bash-presentation-engine/xml-parts.js +25 -0
- package/dist/safe-bash-presentation-engine/xml-view.js +8 -0
- package/dist/safe-bash-presentation-engine/xml.js +8 -0
- package/dist/safe-bash-sqlite-engine/sqlite-edit-snapshot.d.ts +15 -0
- package/dist/safe-bash-sqlite-engine/sqlite-finalization.d.ts +7 -0
- package/dist/safe-bash-sqlite-engine/sqlite-pages.d.ts +18 -0
- package/dist/safe-bash-sqlite-engine/sqlite-record-read.d.ts +8 -0
- package/dist/safe-bash-sqlite-engine/sqlite-record-write.d.ts +20 -0
- package/dist/safe-bash-sqlite-engine/storage.d.ts +2 -0
- package/dist/safe-bash-sqlite-engine/storage.js +236 -55
- package/dist/safe-bash-svg-engine/LICENSE +21 -0
- package/dist/safe-bash-svg-engine/index.d.ts +8 -0
- package/dist/safe-bash-svg-engine/index.js +477 -0
- package/dist/safe-bash-zip-engine/index.js +3 -3
- package/dist/safe-bash-zip-engine/zip/repair.js +3 -3
- package/dist/safe-bash-zip-engine/zip/sfx.js +3 -3
- package/dist/safe-bash-zip-engine/zip-format.js +3 -3
- package/dist/safe-playwright-cloudflare/browser-provider.generated.js +55 -18
- package/dist/safe-playwright-cloudflare/browser-run-code-guest.generated.js +1 -1
- package/dist/spreadsheet-engine/datasource.js +4 -1
- package/dist/spreadsheet-engine/formulas/functions/math.js +3 -1
- package/dist/spreadsheet-engine/rendering/chart/axis.d.ts +26 -0
- package/dist/spreadsheet-engine/rendering/chart/axis.js +61 -0
- package/dist/spreadsheet-engine/rendering/chart/error-bar.d.ts +39 -0
- package/dist/spreadsheet-engine/rendering/chart/error-bar.js +59 -0
- package/dist/spreadsheet-engine/rendering/chart/layout.d.ts +24 -0
- package/dist/spreadsheet-engine/rendering/chart/layout.js +54 -0
- package/dist/spreadsheet-engine/rendering/chart/line.d.ts +23 -0
- package/dist/spreadsheet-engine/rendering/chart/line.js +56 -0
- package/dist/spreadsheet-engine/rendering/chart/marker.d.ts +35 -0
- package/dist/spreadsheet-engine/rendering/chart/marker.js +52 -0
- package/dist/spreadsheet-engine/rendering/chart/pie.d.ts +32 -0
- package/dist/spreadsheet-engine/rendering/chart/pie.js +47 -0
- package/dist/{safe-bash-command-ssconvert → spreadsheet-engine}/rendering/images/codecs.d.ts +0 -1
- package/dist/spreadsheet-engine/rendering/images/codecs.js +253 -0
- package/dist/spreadsheet-engine/rendering/images/index.d.ts +26 -0
- package/dist/spreadsheet-engine/rendering/images/index.js +144 -0
- package/dist/spreadsheet-engine/rendering/images/profile-raster.d.ts +4 -0
- package/dist/spreadsheet-engine/rendering/images/profile-raster.js +72 -0
- package/dist/spreadsheet-engine/rendering/images/scene.d.ts +3 -0
- package/dist/spreadsheet-engine/rendering/images/scene.js +34 -0
- package/dist/spreadsheet-engine/rendering/print/cell-style.d.ts +10 -0
- package/dist/spreadsheet-engine/rendering/print/cell-style.js +52 -0
- package/dist/spreadsheet-engine/rendering/print/font-normalization-data.d.ts +43 -0
- package/dist/spreadsheet-engine/rendering/print/font-normalization-data.js +1558 -0
- package/dist/spreadsheet-engine/rendering/print/font-normalization.d.ts +3 -0
- package/dist/spreadsheet-engine/rendering/print/font-normalization.js +113 -0
- package/dist/spreadsheet-engine/rendering/print/font-shaping.d.ts +18 -0
- package/dist/spreadsheet-engine/rendering/print/font-shaping.js +271 -0
- package/dist/spreadsheet-engine/rendering/print/harfbuzz/data.d.ts +1 -0
- package/dist/spreadsheet-engine/rendering/print/harfbuzz/data.js +2 -0
- package/dist/spreadsheet-engine/rendering/print/header-footer.d.ts +16 -0
- package/dist/spreadsheet-engine/rendering/print/header-footer.js +92 -0
- package/dist/spreadsheet-engine/rendering/print/layout.d.ts +65 -0
- package/dist/spreadsheet-engine/rendering/print/layout.js +75 -0
- package/dist/spreadsheet-engine/rendering/print/pagination.d.ts +34 -0
- package/dist/spreadsheet-engine/rendering/print/pagination.js +126 -0
- package/dist/spreadsheet-engine/rendering/print/settings.d.ts +42 -0
- package/dist/spreadsheet-engine/rendering/print/settings.js +159 -0
- package/dist/spreadsheet-format-xls/biff-metadata.js +3 -3
- package/dist/spreadsheet-format-xls/biff-write-metadata.d.ts +1 -1
- package/dist/spreadsheet-format-xls/biff-write-metadata.js +20 -3
- package/dist/spreadsheet-format-xls/biff-write.js +1 -1
- package/package.json +239 -12
- package/third-party/spreadsheet-engine/scripts/harfbuzz/README.md +39 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/allocator.cc +18 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/build.mjs +94 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/completion.patch +98 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/config-override.h +19 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/exports.json +29 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/sources.json +274 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/verify.d.mts +10 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/verify.mjs +96 -0
- package/third-party/spreadsheet-engine/scripts/harfbuzz/verify.test.mjs +60 -0
- package/third-party/spreadsheet-engine/src/rendering/images/NOTICE.md +22 -0
- package/third-party/spreadsheet-engine/src/rendering/print/NOTICE.md +30 -0
- package/third-party/spreadsheet-engine/src/rendering/print/font-normalization-NOTICE.md +64 -0
- package/third-party/spreadsheet-engine/src/rendering/print/font-normalization-data.ts +1558 -0
- package/third-party/spreadsheet-engine/src/rendering/print/font-normalization.ts +91 -0
- package/third-party/spreadsheet-engine/src/rendering/print/harfbuzz/EMSCRIPTEN-LICENSE.txt +102 -0
- package/third-party/spreadsheet-engine/src/rendering/print/harfbuzz/HARFBUZZ-LICENSE.txt +42 -0
- package/third-party/spreadsheet-engine/src/rendering/print/harfbuzz/LIBCXX-LICENSE.txt +311 -0
- package/third-party/spreadsheet-engine/src/rendering/print/harfbuzz/LIBCXXABI-LICENSE.txt +311 -0
- package/third-party/spreadsheet-engine/src/rendering/print/harfbuzz/MUSL-LICENSE.txt +193 -0
- package/third-party/spreadsheet-engine/src/rendering/print/harfbuzz/NOTICE.md +41 -0
- package/third-party/spreadsheet-engine/src/rendering/print/harfbuzz/data.ts +2 -0
- package/dist/safe-bash/command-chunks/chunk-C5TUE2FE.js +0 -169
- package/dist/safe-bash/command-chunks/chunk-CVKW2YIC.js +0 -13631
- package/dist/safe-bash/command-chunks/chunk-JBGGUHQY.js +0 -17617
- package/dist/safe-bash/command-chunks/chunk-S4R2JDPL.js +0 -35
- package/dist/safe-bash/command-chunks/chunk-TU5IFVCX.js +0 -33708
- package/dist/safe-bash/command-chunks/chunk-TUWGIF22.js +0 -328
- package/dist/safe-bash/command-chunks/data-2FJOPYXA-PDKMLCGR.js +0 -8
- package/dist/safe-bash/command-chunks/index.browser-2NLML6H4.js +0 -269
- package/dist/safe-bash/command-chunks/model-store-EEI3QS4G.js +0 -10
- package/dist/safe-bash/command-chunks/pdf-M2GFAR2A-FCJMJCAP.js +0 -683
- package/dist/safe-bash-command-ssconvert/rendering/images/formats.d.ts +0 -2
- package/dist/safe-bash-docx-engine/command.d.ts +0 -65
- package/dist/safe-bash/chunks/{chunk-4T4RQYRI.js → chunk-5HRGBHZH.js} +10 -10
- package/dist/safe-bash/chunks/{chunk-QUS6X4MS.js → chunk-EOQMDRTY.js} +0 -0
- package/dist/safe-bash/command-chunks/{chunk-2L3JKGUH.js → chunk-4LYZBDZF.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-EMMSXKEJ.js → chunk-4Q4R3VZU.js} +0 -0
- package/dist/safe-bash/command-chunks/{chunk-5RLK2QSY.js → chunk-7JEIWA3A.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-AV6N7DDA.js → chunk-DDYPQAXN.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-OOB7YCFQ.js → chunk-FMJKCVSQ.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-FUL2C4EX.js → chunk-HFKS6AET.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-2M3WUEDX.js → chunk-J6K5Q53O.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-ATWMLV75.js → chunk-RJXZYDSN.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-JD3NSHFT.js → chunk-TVGIJ56E.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-3I33KPQH.js → chunk-X2HVVMTW.js} +6 -6
- package/dist/safe-bash/command-chunks/{odf-UKSXPNOZ-NCL5P7YL.js → odf-UKSXPNOZ-BV2LCKTB.js} +0 -0
- package/dist/{safe-bash/command-chunks/chunk-3SVT5VB7.js → safe-bash-docx-engine/operation-types.js} +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/accessibility.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/animation-editing.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/animations.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/backgrounds.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-data-model.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-editing.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-font-operations.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-model-axes.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-model-core.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-model-series.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-model.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-objects.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/chart-workbook.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/charts.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/command-placeholder.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/comments.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/connector-operations.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/connectors-model.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/connectors.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/content-types.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/contracts.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/creation.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/diagram-resources.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/diff.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/drawing-format.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/drawing-operations.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/equations.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/errors.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/fields.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/font-metrics.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/freeform-builder.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/group-model.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/image-extraction.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/image-formatting.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/image-insertion.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/image-replacement.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/image-value.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/images.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/inventory.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/language-enum.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/layouts.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/length.d.ts +0 -0
- package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/links-model.d.ts +4 -4
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/links.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/masters.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/media-editing.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/media-enum.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/media-extraction.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/media.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/memberships.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/modern-comments.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/notes.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/ole-enum.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/ole-insertion.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/opaque-objects.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/package-reader.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/package-tools.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/package-view.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/package-writer.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/paragraph-alignment.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/presentation-settings.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/properties.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/relationships.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/resource-limits.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/sanitize.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/selector-schema.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/selectors.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-adjustments.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-groups.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-operations.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-path-operations.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-paths.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-placeholder-types.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-presets.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-selection.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/shape-transforms.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/slide-copy.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/slide-import.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/slide-layout-model.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/slide-merge-split.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/slide-model.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/slide-removal.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/slide-transfer-budget.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/slides.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/table-operations.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/table-spans.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/tables-model.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/tables.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/tags.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/template-bindings.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/template-repeat.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-fitting.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-frame-enums.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-frames.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-paragraphs.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-reading.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-replacement.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-run-color.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-runs.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/text-style-resolution.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/themes.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/transitions.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/validation.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/xml-parts.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/xml-view.d.ts +0 -0
- /package/dist/{safe-bash-pptx-engine → safe-bash-presentation-engine}/xml.d.ts +0 -0
package/dist/safe-bash/command-chunks/{biff-AU4VGVMD-6EQ64QPG.js → biff-YBHP7ZES-M7TU7NA5.js}
RENAMED
|
@@ -18,81 +18,81 @@ import {
|
|
|
18
18
|
import "./chunk-WHWIZ2B7.js";
|
|
19
19
|
import "./chunk-65DS4IOB.js";
|
|
20
20
|
|
|
21
|
-
// packages/safe-bash-command-ssconvert/dist/chunks/biff-
|
|
21
|
+
// packages/safe-bash-command-ssconvert/dist/chunks/biff-YBHP7ZES.js
|
|
22
22
|
import { SsconvertError as be } from "../../spreadsheet-engine/contracts.js";
|
|
23
23
|
import { SsconvertError as Fe } from "../../spreadsheet-engine/contracts.js";
|
|
24
|
-
import { SsconvertError as
|
|
25
|
-
import { SsconvertError as
|
|
26
|
-
import { SsconvertError as
|
|
24
|
+
import { SsconvertError as De } from "../../spreadsheet-engine/contracts.js";
|
|
25
|
+
import { SsconvertError as Ke } from "../../spreadsheet-engine/contracts.js";
|
|
26
|
+
import { SsconvertError as Yt } from "../../spreadsheet-engine/contracts.js";
|
|
27
27
|
import { SsconvertError as Ee } from "../../spreadsheet-engine/contracts.js";
|
|
28
|
-
import { SsconvertError as
|
|
29
|
-
import { exportOptionPairs as
|
|
28
|
+
import { SsconvertError as rt } from "../../spreadsheet-engine/contracts.js";
|
|
29
|
+
import { exportOptionPairs as fr } from "../../spreadsheet-engine/cli/export-options.js";
|
|
30
30
|
import { SsconvertError as ke } from "../../spreadsheet-engine/contracts.js";
|
|
31
|
-
import { parseExpression as
|
|
32
|
-
import { functionDescriptors as
|
|
33
|
-
import { excelGrammar as
|
|
34
|
-
import { quoteFormulaString as
|
|
35
|
-
import { SsconvertError as
|
|
36
|
-
import { SsconvertError as
|
|
37
|
-
import { gnumericGrammar as
|
|
38
|
-
import { quoteFormulaString as
|
|
39
|
-
import { SsconvertError as We } from "../../spreadsheet-engine/contracts.js";
|
|
40
|
-
import { formatA1 as _n } from "../../spreadsheet-ast/model.js";
|
|
41
|
-
import { parseExpression as Pn } from "../../spreadsheet-engine/formulas/parser.js";
|
|
31
|
+
import { parseExpression as Jt } from "../../spreadsheet-engine/formulas/parser.js";
|
|
32
|
+
import { functionDescriptors as On } from "../../spreadsheet-engine/formulas/function-descriptors.js";
|
|
33
|
+
import { excelGrammar as Mn, gnumericGrammar as st } from "../../spreadsheet-engine/formulas/conventions.js";
|
|
34
|
+
import { quoteFormulaString as ot } from "../../spreadsheet-engine/formulas/serialization.js";
|
|
35
|
+
import { SsconvertError as vt } from "../../spreadsheet-engine/contracts.js";
|
|
36
|
+
import { SsconvertError as ft } from "../../spreadsheet-engine/contracts.js";
|
|
37
|
+
import { gnumericGrammar as Dn } from "../../spreadsheet-engine/formulas/conventions.js";
|
|
38
|
+
import { quoteFormulaString as _n } from "../../spreadsheet-engine/formulas/serialization.js";
|
|
42
39
|
import { SsconvertError as je } from "../../spreadsheet-engine/contracts.js";
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
40
|
+
import { formatA1 as Pn } from "../../spreadsheet-ast/model.js";
|
|
41
|
+
import { parseExpression as Gn } from "../../spreadsheet-engine/formulas/parser.js";
|
|
42
|
+
import { SsconvertError as ze } from "../../spreadsheet-engine/contracts.js";
|
|
43
|
+
import { DEFAULT_SHEET_SIZE as lt } from "../../spreadsheet-ast/index.js";
|
|
44
|
+
import { SsconvertError as Hn } from "../../spreadsheet-engine/contracts.js";
|
|
45
|
+
import { parseExpression as Vn } from "../../spreadsheet-engine/formulas/parser.js";
|
|
46
|
+
import { gnumericGrammar as Xn } from "../../spreadsheet-engine/formulas/conventions.js";
|
|
47
|
+
import { quoteFormulaString as Wn } from "../../spreadsheet-engine/formulas/serialization.js";
|
|
48
|
+
import { SsconvertError as cn } from "../../spreadsheet-engine/contracts.js";
|
|
49
|
+
import { formatA1 as ut } from "../../spreadsheet-ast/index.js";
|
|
50
|
+
import { SsconvertError as Ue } from "../../spreadsheet-engine/contracts.js";
|
|
51
51
|
import { SsconvertError as Ie } from "../../spreadsheet-engine/contracts.js";
|
|
52
|
-
import { encodeText as
|
|
52
|
+
import { encodeText as Jn } from "../../spreadsheet-engine/encoding/encode.js";
|
|
53
53
|
import { SsconvertError as le } from "../../spreadsheet-engine/contracts.js";
|
|
54
|
-
import { parseExpression as
|
|
55
|
-
import { parseNamedExpression as
|
|
56
|
-
import { foldSheetName as
|
|
57
|
-
import { expandIndexSheetAreas as
|
|
58
|
-
import { SsconvertError as
|
|
59
|
-
import { cellValueFormat as
|
|
60
|
-
import { metadataNode as
|
|
61
|
-
import { SsconvertError as
|
|
62
|
-
import { parseA1 as
|
|
63
|
-
import { metadataNode as
|
|
64
|
-
import { singleByteTables as
|
|
65
|
-
import { SsconvertError as
|
|
66
|
-
import { SsconvertError as
|
|
67
|
-
import { singleByteTables as
|
|
68
|
-
import { biffDbcsTables as
|
|
69
|
-
function
|
|
70
|
-
let
|
|
71
|
-
|
|
72
|
-
let t =
|
|
73
|
-
|
|
54
|
+
import { parseExpression as jn } from "../../spreadsheet-engine/formulas/parser.js";
|
|
55
|
+
import { parseNamedExpression as zn } from "../../spreadsheet-engine/formulas/named-expressions.js";
|
|
56
|
+
import { foldSheetName as Oe } from "../../spreadsheet-ast/case-fold.js";
|
|
57
|
+
import { expandIndexSheetAreas as $n } from "../../spreadsheet-engine/formulas/index-sheet-areas.js";
|
|
58
|
+
import { SsconvertError as pn } from "../../spreadsheet-engine/contracts.js";
|
|
59
|
+
import { cellValueFormat as Qn } from "../../spreadsheet-engine/workbook/value-format.js";
|
|
60
|
+
import { metadataNode as Zn } from "../../spreadsheet-engine/codecs/xlsx-write-support.js";
|
|
61
|
+
import { SsconvertError as pt } from "../../spreadsheet-engine/contracts.js";
|
|
62
|
+
import { parseA1 as wt } from "../../spreadsheet-ast/index.js";
|
|
63
|
+
import { metadataNode as wn } from "../../spreadsheet-engine/codecs/xlsx-write-support.js";
|
|
64
|
+
import { singleByteTables as er } from "../../spreadsheet-engine/encoding/tables.js";
|
|
65
|
+
import { SsconvertError as Me } from "../../spreadsheet-engine/contracts.js";
|
|
66
|
+
import { SsconvertError as xt } from "../../spreadsheet-engine/contracts.js";
|
|
67
|
+
import { singleByteTables as ir } from "../../spreadsheet-engine/encoding/tables.js";
|
|
68
|
+
import { biffDbcsTables as sr } from "../../spreadsheet-engine/encoding/biff-dbcs-tables.js";
|
|
69
|
+
function He(s, e, n2) {
|
|
70
|
+
let r = new h(s);
|
|
71
|
+
r.check(0, 28), (r.u16(0) !== 65534 || r.u16(2) > 1) && n("invalid property-set header");
|
|
72
|
+
let t = r.u32(24), u = 28 + t * 20;
|
|
73
|
+
r.check(28, t * 20), e(t);
|
|
74
74
|
let i = [];
|
|
75
75
|
for (let h2 = 0; h2 < t; h2++) {
|
|
76
|
-
let g = 28 + h2 * 20, a =
|
|
76
|
+
let g = 28 + h2 * 20, a = r.u32(g + 16);
|
|
77
77
|
(a < u || a % 4) && n("invalid property section offset");
|
|
78
|
-
let l =
|
|
79
|
-
(l < 8 || l % 4) && n("invalid property section size"),
|
|
80
|
-
let d = Array.from(
|
|
78
|
+
let l = r.u32(a);
|
|
79
|
+
(l < 8 || l % 4) && n("invalid property section size"), r.check(a, l);
|
|
80
|
+
let d = Array.from(r.slice(g, 16), (m2) => m2.toString(16).padStart(2, "0")).join("");
|
|
81
81
|
i.push({ guid: d, offset: a, end: a + l });
|
|
82
82
|
}
|
|
83
|
-
|
|
83
|
+
n2(t * Math.ceil(Math.log2(t + 1))), i.sort((h2, g) => h2.offset - g.offset);
|
|
84
84
|
for (let h2 = 1; h2 < i.length; h2++) i[h2].offset < i[h2 - 1].end && n("overlapping property sections");
|
|
85
85
|
return i;
|
|
86
86
|
}
|
|
87
|
-
function
|
|
88
|
-
let
|
|
89
|
-
s.check(8,
|
|
87
|
+
function Ve(s, e, n2) {
|
|
88
|
+
let r = s.u32(4);
|
|
89
|
+
s.check(8, r * 8), e(r);
|
|
90
90
|
let t = [], u = /* @__PURE__ */ new Set();
|
|
91
|
-
for (let h2 = 0; h2 <
|
|
91
|
+
for (let h2 = 0; h2 < r; h2++) {
|
|
92
92
|
let g = s.u32(8 + h2 * 8), a = s.u32(12 + h2 * 8);
|
|
93
|
-
(a < 8 +
|
|
93
|
+
(a < 8 + r * 8 || a % 4 || a > s.bytes.length - 4) && n("invalid property offset"), u.has(g) && n("duplicate property ID"), u.add(g), t.push({ id: g, at: a });
|
|
94
94
|
}
|
|
95
|
-
r
|
|
95
|
+
n2(r * Math.ceil(Math.log2(r + 1))), t.sort((h2, g) => h2.at - g.at);
|
|
96
96
|
let i = /* @__PURE__ */ new Map();
|
|
97
97
|
for (let h2 = 0; h2 < t.length; h2++) {
|
|
98
98
|
let { id: g, at: a } = t[h2], l = t[h2 + 1]?.at ?? s.bytes.length;
|
|
@@ -101,153 +101,153 @@ function He(s, e, r) {
|
|
|
101
101
|
return i;
|
|
102
102
|
}
|
|
103
103
|
var me = { summary: "e0859ff2f94f6810ab9108002b27b3d9", document: "02d5cdd59c2e1b10939708002b2cf9ae", custom: "05d5cdd59c2e1b10939708002b2cf9ae" };
|
|
104
|
-
var { summary:
|
|
105
|
-
var
|
|
106
|
-
function
|
|
104
|
+
var { summary: Rt, document: vn, custom: It } = me;
|
|
105
|
+
var Xe = /* @__PURE__ */ new Map([[Rt, /* @__PURE__ */ new Map([[2, "dc:title"], [3, "dc:subject"], [4, "meta:initial-creator"], [5, "dc:keywords"], [6, "dc:description"], [7, "meta:template"], [8, "dc:creator"], [9, "meta:editing-cycles"], [10, "meta:editing-duration"], [11, "meta:print-date"], [12, "meta:creation-date"], [13, "dc:date"], [14, "gsf:page-count"], [15, "gsf:word-count"], [16, "gsf:character-count"], [18, "meta:generator"], [19, "gsf:security"]])], [vn, /* @__PURE__ */ new Map([[2, "gsf:category"], [14, "gsf:manager"], [15, "dc:publisher"]])]]);
|
|
106
|
+
function Ye(s) {
|
|
107
107
|
return s > 0 && s <= 32 || s >= 8192 && s <= 8203 || s === 8232 || s === 8233;
|
|
108
108
|
}
|
|
109
|
-
async function
|
|
109
|
+
async function We(s, e, n2, r, t, u) {
|
|
110
110
|
let i = /* @__PURE__ */ Object.create(null), h2 = 0, g = (l) => {
|
|
111
|
-
if (
|
|
111
|
+
if (r(l), h2 += l, h2 > (e.limits.workbookNodes ?? e.limits.inputBytes)) throw new Ke("resource-limit", "ssconvert BIFF property node limit exceeded");
|
|
112
112
|
}, a = (l, d, m2) => {
|
|
113
113
|
let f = l.u32(d), o = m2 === 1200 ? 2 : 1, E = f * o;
|
|
114
|
-
if (f || n("empty property string buffer"), l.check(d + 4, E), (f - 1) * 3 > (e.limits.workbookTextBytes ?? e.limits.inputBytes)) throw new
|
|
115
|
-
|
|
114
|
+
if (f || n("empty property string buffer"), l.check(d + 4, E), (f - 1) * 3 > (e.limits.workbookTextBytes ?? e.limits.inputBytes)) throw new Ke("resource-limit", "ssconvert BIFF property text limit exceeded");
|
|
115
|
+
r(E);
|
|
116
116
|
let k = d + 4 + E;
|
|
117
|
-
for (let
|
|
118
|
-
let
|
|
117
|
+
for (let S = k - o; S < k; S++) l.u8(S) && n("unterminated property string");
|
|
118
|
+
let N = l.slice(d + 4, E - o), A;
|
|
119
119
|
if (m2 === 1200 || m2 === 65001) try {
|
|
120
|
-
A = new TextDecoder(m2 === 1200 ? "utf-16le" : "utf-8", { fatal: true, ignoreBOM: true }).decode(
|
|
120
|
+
A = new TextDecoder(m2 === 1200 ? "utf-16le" : "utf-8", { fatal: true, ignoreBOM: true }).decode(N);
|
|
121
121
|
} catch {
|
|
122
122
|
n("invalid property string encoding");
|
|
123
123
|
}
|
|
124
|
-
else A = m(
|
|
125
|
-
return { value:
|
|
124
|
+
else A = m(N, m2);
|
|
125
|
+
return { value: n2(A), end: o === 2 ? Math.ceil(k / 4) * 4 : k };
|
|
126
126
|
};
|
|
127
127
|
for (let l of ["SummaryInformation", "DocumentSummaryInformation"]) {
|
|
128
128
|
let d = l, m2 = s.get(l);
|
|
129
129
|
if (!m2) {
|
|
130
|
-
for (let [
|
|
131
|
-
d =
|
|
130
|
+
for (let [N, A] of s) if (r(1), N.toUpperCase() === l.toUpperCase()) {
|
|
131
|
+
d = N, m2 = A;
|
|
132
132
|
break;
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
if (!m2) continue;
|
|
136
|
-
|
|
137
|
-
let f = new h(m2), o =
|
|
138
|
-
for (let { guid:
|
|
139
|
-
if (!
|
|
136
|
+
r(m2.length);
|
|
137
|
+
let f = new h(m2), o = He(m2, g, r), E = false, k = [];
|
|
138
|
+
for (let { guid: N, offset: A, end: S } of o) {
|
|
139
|
+
if (!Xe.has(N) && N !== It) {
|
|
140
140
|
E = true;
|
|
141
141
|
continue;
|
|
142
142
|
}
|
|
143
|
-
let B =
|
|
144
|
-
|
|
143
|
+
let B = Ve(new h(f.slice(A, S - A)), g, r), F = B.get(1), p = 1252;
|
|
144
|
+
F && (F.u32(0) !== 2 && n("invalid property codepage type"), p = F.u16(4));
|
|
145
145
|
let D = /* @__PURE__ */ new Map(), x = B.get(0);
|
|
146
146
|
try {
|
|
147
|
-
if (x &&
|
|
147
|
+
if (x && N === It) {
|
|
148
148
|
let b = x.u32(0);
|
|
149
149
|
x.check(4, b * 9), g(b);
|
|
150
150
|
let O = 4;
|
|
151
151
|
for (let C2 = 0; C2 < b; C2++) {
|
|
152
|
-
let v = x.u32(O),
|
|
153
|
-
(v < 2 || D.has(v) || !
|
|
152
|
+
let v = x.u32(O), R2 = a(x, O + 4, p);
|
|
153
|
+
(v < 2 || D.has(v) || !R2.value) && n("invalid property dictionary entry"), D.set(v, R2.value), O = R2.end;
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
} catch (b) {
|
|
157
|
-
if (!(b instanceof
|
|
157
|
+
if (!(b instanceof Ke) || b.code !== "unsupported-feature") throw b;
|
|
158
158
|
E = true;
|
|
159
159
|
continue;
|
|
160
160
|
}
|
|
161
161
|
for (let [b, O] of B) {
|
|
162
162
|
if (e.signal.throwIfAborted(), b < 2) continue;
|
|
163
|
-
let C2 =
|
|
163
|
+
let C2 = N === It ? D.get(b) : Xe.get(N)?.get(b);
|
|
164
164
|
if (C2 === void 0 || Object.hasOwn(i, C2)) {
|
|
165
165
|
E = true;
|
|
166
166
|
continue;
|
|
167
167
|
}
|
|
168
|
-
let v,
|
|
168
|
+
let v, R2 = O.u32(0);
|
|
169
169
|
try {
|
|
170
|
-
if (
|
|
171
|
-
else if (
|
|
172
|
-
else if (
|
|
173
|
-
else if (
|
|
174
|
-
else if (
|
|
170
|
+
if (R2 === 30 || R2 === 31) v = a(O, 4, R2 === 31 ? 1200 : p).value;
|
|
171
|
+
else if (R2 === 3) v = O.u32(4) | 0;
|
|
172
|
+
else if (R2 === 5) v = O.f64(4), Number.isFinite(v) || n("nonfinite property value");
|
|
173
|
+
else if (R2 === 11) v = O.u16(4) !== 0;
|
|
174
|
+
else if (R2 === 64) {
|
|
175
175
|
let M = BigInt(O.u32(4)) + (BigInt(O.u32(8)) << 32n);
|
|
176
|
-
if (
|
|
177
|
-
let _ = (M % 10000000n).toString().padStart(7, "0"),
|
|
178
|
-
for (;
|
|
179
|
-
v = `PT${M / 600000000n}M${M / 10000000n % 60n}${
|
|
176
|
+
if (N === Rt && b === 10) {
|
|
177
|
+
let _ = (M % 10000000n).toString().padStart(7, "0"), w2 = _.length;
|
|
178
|
+
for (; w2 && _[w2 - 1] === "0"; ) w2--;
|
|
179
|
+
v = `PT${M / 600000000n}M${M / 10000000n % 60n}${w2 ? "." + _.slice(0, w2) : ""}S`;
|
|
180
180
|
} else v = new Date(Number(M / 10000n) - 116444736e5).toISOString(), M % 10000n && (E = true);
|
|
181
|
-
|
|
182
|
-
} else if (
|
|
181
|
+
n2(v);
|
|
182
|
+
} else if (R2 === 7) {
|
|
183
183
|
let M = O.f64(4);
|
|
184
|
-
(!Number.isFinite(M) || M <= -657435 || M >= 2958466) && n("invalid OLE property date"), v = new Date(-22091616e5 + Math.round((Math.trunc(M) + Math.abs(M % 1)) * 864e5)).toISOString(),
|
|
184
|
+
(!Number.isFinite(M) || M <= -657435 || M >= 2958466) && n("invalid OLE property date"), v = new Date(-22091616e5 + Math.round((Math.trunc(M) + Math.abs(M % 1)) * 864e5)).toISOString(), n2(v);
|
|
185
185
|
}
|
|
186
186
|
} catch (M) {
|
|
187
|
-
if (!(M instanceof
|
|
187
|
+
if (!(M instanceof Ke) || M.code !== "unsupported-feature") throw M;
|
|
188
188
|
}
|
|
189
189
|
if (v === void 0) {
|
|
190
190
|
E = true;
|
|
191
191
|
continue;
|
|
192
192
|
}
|
|
193
|
-
if (
|
|
193
|
+
if (N === Rt && b === 5 && typeof v == "string") {
|
|
194
194
|
let M = 1;
|
|
195
195
|
for (let _ of v) _ === "," && M++;
|
|
196
|
-
g(M),
|
|
197
|
-
let
|
|
198
|
-
for (;
|
|
199
|
-
for (; c >
|
|
200
|
-
return _.slice(
|
|
196
|
+
g(M), r(v.length), v = v.split(",").map((_) => {
|
|
197
|
+
let w2 = 0, c = _.length;
|
|
198
|
+
for (; w2 < c && Ye(_.charCodeAt(w2)); ) w2++;
|
|
199
|
+
for (; c > w2 && Ye(_.charCodeAt(c - 1)); ) c--;
|
|
200
|
+
return _.slice(w2, c);
|
|
201
201
|
}).filter(Boolean);
|
|
202
202
|
}
|
|
203
|
-
|
|
203
|
+
n2(C2), i[C2] = v, k.push([A, b, C2]), u?.({ stream: d, section: A, id: b, key: C2, value: v });
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
if (E && t) {
|
|
207
|
-
if (m2.length * 2 > (e.limits.workbookTextBytes ?? e.limits.inputBytes * 2)) throw new
|
|
208
|
-
let
|
|
209
|
-
t.push({ source: "biff", kind: "ole-properties", disposition: "retained", data: { stream: d, bytes:
|
|
207
|
+
if (m2.length * 2 > (e.limits.workbookTextBytes ?? e.limits.inputBytes * 2)) throw new Ke("resource-limit", "ssconvert BIFF property retention limit exceeded");
|
|
208
|
+
let N = n2(Array.from(m2, (A) => A.toString(16).padStart(2, "0")).join(""));
|
|
209
|
+
t.push({ source: "biff", kind: "ole-properties", disposition: "retained", data: { stream: d, bytes: N, modeled: k } }), await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `BIFF property stream ${d.slice(1)} retained with uninterpreted values` });
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
return i;
|
|
213
213
|
}
|
|
214
|
-
function
|
|
215
|
-
let
|
|
216
|
-
if (
|
|
214
|
+
function Wt(s, e, n2) {
|
|
215
|
+
let r, t = 0, u = /* @__PURE__ */ new Set(), i = (h2) => {
|
|
216
|
+
if (n2(h2), t += h2, t > (e.limits.workbookNodes ?? e.limits.inputBytes)) throw new De("resource-limit", "ssconvert encrypted BIFF property node limit exceeded");
|
|
217
217
|
};
|
|
218
218
|
for (let [h2, g] of s ?? []) {
|
|
219
|
-
|
|
219
|
+
n2(h2.length);
|
|
220
220
|
let a = h2.toUpperCase();
|
|
221
221
|
if (["ENCRYPTION", "SUMMARYINFORMATION", "DOCUMENTSUMMARYINFORMATION"].includes(a)) {
|
|
222
222
|
if (u.has(a) && n("duplicate encrypted property stream"), u.add(a), a === "ENCRYPTION") {
|
|
223
|
-
|
|
223
|
+
r = g;
|
|
224
224
|
continue;
|
|
225
225
|
}
|
|
226
226
|
if (g.length) {
|
|
227
|
-
a === "SUMMARYINFORMATION" && n("ambiguous plaintext document properties"),
|
|
228
|
-
for (let l of
|
|
227
|
+
a === "SUMMARYINFORMATION" && n("ambiguous plaintext document properties"), n2(g.length);
|
|
228
|
+
for (let l of He(g, i, n2)) {
|
|
229
229
|
[me.document, me.custom].includes(l.guid) || n("ambiguous plaintext document properties");
|
|
230
|
-
let d =
|
|
230
|
+
let d = Ve(new h(g.subarray(l.offset, l.end)), i, n2);
|
|
231
231
|
for (let [m2, f] of d) (m2 > 1 || m2 === 0 && f.u32(0) !== 0 || m2 === 1 && f.u32(0) !== 2) && n("ambiguous plaintext document properties");
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
|
-
if (!
|
|
237
|
-
if (
|
|
238
|
-
return new h(
|
|
236
|
+
if (!r) throw new De("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook ancillary properties require the encryption stream");
|
|
237
|
+
if (r.length > e.limits.inputBytes) throw new De("resource-limit", "ssconvert encrypted BIFF property input limit exceeded");
|
|
238
|
+
return new h(r).check(0, 8), r;
|
|
239
239
|
}
|
|
240
|
-
function
|
|
240
|
+
function jt(s, e, n2, r) {
|
|
241
241
|
let t = [], u = /* @__PURE__ */ new Map(), i = false, h2 = () => {
|
|
242
242
|
i = true;
|
|
243
243
|
for (let l of t) l.fill(0);
|
|
244
244
|
u.clear();
|
|
245
245
|
};
|
|
246
|
-
|
|
246
|
+
n2.own(h2);
|
|
247
247
|
let g = () => {
|
|
248
|
-
if (
|
|
248
|
+
if (n2.signal.throwIfAborted(), i) throw new De("invalid-request", "Encrypted BIFF property reader disposed");
|
|
249
249
|
}, a = (l, d) => {
|
|
250
|
-
g(),
|
|
250
|
+
g(), r(l.length * 2 + 320);
|
|
251
251
|
let m2 = l.slice();
|
|
252
252
|
t.push(m2);
|
|
253
253
|
let f = e(d, l.length);
|
|
@@ -260,129 +260,129 @@ function Wt(s, e, r, n2) {
|
|
|
260
260
|
return m2;
|
|
261
261
|
};
|
|
262
262
|
try {
|
|
263
|
-
if (g(), s.length >
|
|
263
|
+
if (g(), s.length > n2.limits.inputBytes) throw new De("resource-limit", "ssconvert encrypted BIFF property input limit exceeded");
|
|
264
264
|
let l = new h(s), d = new h(a(l.slice(0, 8), 0)), m2 = d.u32(0), f = d.u32(4);
|
|
265
265
|
d.bytes.fill(0), (m2 < 8 || f < 4) && n("invalid encrypted property descriptor range"), l.check(m2, f);
|
|
266
266
|
let o = new h(a(l.slice(m2, f), 0)), E = o.u32(0);
|
|
267
|
-
if (E > Math.floor((f - 4) / 18) && n("invalid encrypted property descriptor count"), E > (
|
|
268
|
-
|
|
269
|
-
let k = 4,
|
|
270
|
-
for (let
|
|
271
|
-
|
|
272
|
-
let
|
|
273
|
-
if ((o.u8(k + 11) !== 1 || o.u32(k + 12) !== 0) && n("invalid encrypted property descriptor flags"), k += 16, (!b || b > 31) && n("invalid encrypted property stream name"), o.check(k, (b + 1) * 2),
|
|
267
|
+
if (E > Math.floor((f - 4) / 18) && n("invalid encrypted property descriptor count"), E > (n2.limits.workbookNodes ?? n2.limits.inputBytes)) throw new De("resource-limit", "ssconvert encrypted BIFF property node limit exceeded");
|
|
268
|
+
r(E);
|
|
269
|
+
let k = 4, N = 0, A = [], S = /* @__PURE__ */ new Set();
|
|
270
|
+
for (let F = 0; F < E; F++) {
|
|
271
|
+
n2.signal.throwIfAborted(), o.check(k, 18);
|
|
272
|
+
let p = o.u32(k), D = o.u32(k + 4), x = o.u16(k + 8), b = o.u8(k + 10);
|
|
273
|
+
if ((o.u8(k + 11) !== 1 || o.u32(k + 12) !== 0) && n("invalid encrypted property descriptor flags"), k += 16, (!b || b > 31) && n("invalid encrypted property stream name"), o.check(k, (b + 1) * 2), r(b), o.u16(k + b * 2) !== 0 && n("unterminated encrypted property stream name"), N += b * 3, N > (n2.limits.workbookTextBytes ?? n2.limits.inputBytes)) throw new De("resource-limit", "ssconvert encrypted BIFF property text limit exceeded");
|
|
274
274
|
let C2;
|
|
275
275
|
try {
|
|
276
276
|
C2 = new TextDecoder("utf-16le", { fatal: true, ignoreBOM: true }).decode(o.slice(k, b * 2));
|
|
277
277
|
} catch {
|
|
278
278
|
n("invalid encrypted property stream name");
|
|
279
279
|
}
|
|
280
|
-
(C2.includes("\0") ||
|
|
280
|
+
(C2.includes("\0") || S.has(C2.toUpperCase())) && n("duplicate or invalid encrypted property stream name"), S.add(C2.toUpperCase()), k += (b + 1) * 2, l.check(p, D), (p < 8 || p < m2 + f && p + D > m2) && n("overlapping encrypted property ranges"), A.push({ offset: p, size: D, block: x, name: C2 });
|
|
281
281
|
}
|
|
282
|
-
k !== f && n("invalid encrypted property descriptor size"), o.bytes.fill(0),
|
|
283
|
-
let B = [...A].sort((
|
|
284
|
-
for (let
|
|
285
|
-
for (let
|
|
282
|
+
k !== f && n("invalid encrypted property descriptor size"), o.bytes.fill(0), r(E * Math.ceil(Math.log2(E + 1)));
|
|
283
|
+
let B = [...A].sort((F, p) => F.offset - p.offset);
|
|
284
|
+
for (let F = 1; F < B.length; F++) B[F].offset < B[F - 1].offset + B[F - 1].size && n("overlapping encrypted property payloads");
|
|
285
|
+
for (let F of A) u.set(F.name, a(l.slice(F.offset, F.size), F.block));
|
|
286
286
|
return u;
|
|
287
287
|
} catch (l) {
|
|
288
288
|
throw h2(), l;
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
|
-
function
|
|
292
|
-
let
|
|
293
|
-
for (let h2 = 0; h2 < 256; h2++) t = t +
|
|
291
|
+
function Ft(s, e, n2) {
|
|
292
|
+
let r = Uint8Array.from({ length: 256 }, (h2, g) => g), t = 0;
|
|
293
|
+
for (let h2 = 0; h2 < 256; h2++) t = t + r[h2] + s[h2 % s.length] & 255, [r[h2], r[t]] = [r[t], r[h2]];
|
|
294
294
|
let u = new Uint8Array(e), i = 0;
|
|
295
295
|
t = 0;
|
|
296
296
|
try {
|
|
297
|
-
for (let h2 = 0; h2 < e; h2++) (h2 & 255) === 0 &&
|
|
297
|
+
for (let h2 = 0; h2 < e; h2++) (h2 & 255) === 0 && n2.signal.throwIfAborted(), i = i + 1 & 255, t = t + r[i] & 255, [r[i], r[t]] = [r[t], r[i]], u[h2] = r[r[i] + r[t] & 255];
|
|
298
298
|
return u;
|
|
299
299
|
} catch (h2) {
|
|
300
300
|
throw u.fill(0), h2;
|
|
301
301
|
} finally {
|
|
302
|
-
|
|
302
|
+
r.fill(0);
|
|
303
303
|
}
|
|
304
304
|
}
|
|
305
|
-
async function
|
|
305
|
+
async function zt(s, e, n2, r) {
|
|
306
306
|
let t, u, i = 0, h2 = -1, g, a = false, l = 128, d, m2 = [], f = false;
|
|
307
|
-
|
|
307
|
+
n2.own(() => {
|
|
308
308
|
f = true;
|
|
309
309
|
for (let B of m2) B.fill(0);
|
|
310
310
|
});
|
|
311
311
|
let o = R, E = (B) => {
|
|
312
|
-
if (
|
|
313
|
-
if (i += B, i > (
|
|
312
|
+
if (n2.signal.throwIfAborted(), f) throw new Fe("invalid-request", "BIFF decryptor disposed");
|
|
313
|
+
if (i += B, i > (n2.limits.workbookWork ?? n2.limits.inputBytes * 8)) throw new Fe("resource-limit", "ssconvert BIFF decryption work limit exceeded");
|
|
314
314
|
}, k = 0;
|
|
315
|
-
for (let B = 0; B < s.length; B++) (B & 1023) === 0 &&
|
|
316
|
-
let
|
|
317
|
-
if (!
|
|
318
|
-
|
|
319
|
-
let
|
|
315
|
+
for (let B = 0; B < s.length; B++) (B & 1023) === 0 && n2.signal.throwIfAborted(), s[B].opcode === 47 && ++k > 1 && n("duplicate FILEPASS");
|
|
316
|
+
let N = async (B) => {
|
|
317
|
+
if (!n2.password) return;
|
|
318
|
+
n2.signal.throwIfAborted();
|
|
319
|
+
let F = B === "xor", p = F ? 15 : 510, D;
|
|
320
320
|
try {
|
|
321
|
-
D = await
|
|
321
|
+
D = await n2.password.read(Object.freeze({ format: "biff", algorithm: B, revision: e, encoding: F ? "bytes" : "utf16le", maxBytes: p, signal: n2.signal, ...n2.inputFilename === void 0 ? {} : { inputFilename: n2.inputFilename } }));
|
|
322
322
|
} catch {
|
|
323
|
-
throw
|
|
323
|
+
throw n2.signal.throwIfAborted(), new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook password acquisition failed");
|
|
324
324
|
}
|
|
325
|
-
if (
|
|
326
|
-
if (typeof D == "string" && !
|
|
325
|
+
if (n2.signal.throwIfAborted(), D !== void 0) {
|
|
326
|
+
if (typeof D == "string" && !F && D.length <= 255) {
|
|
327
327
|
let x = new Uint8Array(D.length * 2), b = new DataView(x.buffer);
|
|
328
328
|
for (let O = 0; O < D.length; O++) b.setUint16(O * 2, D.charCodeAt(O), true);
|
|
329
329
|
return x;
|
|
330
330
|
}
|
|
331
|
-
if (D instanceof Uint8Array && D.byteLength <=
|
|
331
|
+
if (D instanceof Uint8Array && D.byteLength <= p && (F || D.byteLength % 2 === 0)) return new Uint8Array(D);
|
|
332
332
|
throw new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook password encoding or length");
|
|
333
333
|
}
|
|
334
334
|
}, A = (B) => {
|
|
335
|
-
let
|
|
336
|
-
|
|
337
|
-
let D = o(
|
|
338
|
-
if (
|
|
335
|
+
let F = a ? 20 : 5, p = new Uint8Array(F + 4);
|
|
336
|
+
p.set(u.subarray(0, F)), new DataView(p.buffer).setUint32(F, B, true);
|
|
337
|
+
let D = o(p);
|
|
338
|
+
if (p.fill(0), !a) return D;
|
|
339
339
|
let x = new Uint8Array(l === 40 ? 16 : l / 8);
|
|
340
340
|
return x.set(D.subarray(0, l / 8)), D.fill(0), x;
|
|
341
|
-
},
|
|
342
|
-
let
|
|
341
|
+
}, S = (B, F) => {
|
|
342
|
+
let p = A(B);
|
|
343
343
|
try {
|
|
344
|
-
return
|
|
344
|
+
return Ft(p, F, n2);
|
|
345
345
|
} finally {
|
|
346
|
-
|
|
346
|
+
p.fill(0);
|
|
347
347
|
}
|
|
348
348
|
};
|
|
349
349
|
try {
|
|
350
350
|
for (let B = 0; B < s.length; B++) {
|
|
351
|
-
|
|
352
|
-
let
|
|
351
|
+
n2.signal.throwIfAborted();
|
|
352
|
+
let F = s[B], p = F.data, D = F.opcode;
|
|
353
353
|
if (D === 47) {
|
|
354
|
-
let
|
|
354
|
+
let R2 = e >= 8 ? 2 : 0, M = R2 ? p.u16(0) : 0;
|
|
355
355
|
if (M === 1) {
|
|
356
|
-
|
|
357
|
-
let c =
|
|
356
|
+
p.check(0, 6);
|
|
357
|
+
let c = p.u16(2), I = p.u16(4), L2 = 6, X2 = 22, z = 38, W = 16;
|
|
358
358
|
if (c >= 2 && c <= 4 && I === 2) {
|
|
359
359
|
a = true, o = L, W = 20;
|
|
360
|
-
let re =
|
|
361
|
-
if (
|
|
362
|
-
if (re & 8 || (d =
|
|
360
|
+
let re = p.u32(6), oe = p.u32(10);
|
|
361
|
+
if (p.check(14, oe), (oe < 34 || oe % 2) && n("invalid CryptoAPI header size"), (re !== p.u32(14) || p.u32(18) !== 0) && n("invalid CryptoAPI header fields"), (re & 52) !== 4 || p.u32(22) !== 26625 || p.u32(26) !== 32772 || p.u32(34) !== 1) throw new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook method");
|
|
362
|
+
if (re & 8 || (d = Wt(r, n2, E)), l = p.u32(30) || 40, l < 40 || l > 128 || l % 8) throw new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook key size");
|
|
363
363
|
E(oe);
|
|
364
|
-
for (let Se = 46; Se < 14 + oe; Se += 2) (Se & 1023) === 0 &&
|
|
365
|
-
|
|
364
|
+
for (let Se = 46; Se < 14 + oe; Se += 2) (Se & 1023) === 0 && n2.signal.throwIfAborted(), p.u16(Se) || Se !== 12 + oe && n("invalid CryptoAPI provider terminator");
|
|
365
|
+
p.u16(12 + oe) !== 0 && n("unterminated CryptoAPI provider");
|
|
366
366
|
let he = 14 + oe;
|
|
367
|
-
|
|
367
|
+
p.check(he, 60), (p.bytes.length !== he + 60 || p.u32(he) !== 16 || p.u32(he + 36) !== 20) && n("invalid CryptoAPI verifier size"), L2 = he + 4, X2 = he + 20, z = he + 40;
|
|
368
368
|
} else {
|
|
369
369
|
if (c !== 1 || I !== 1) throw new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook method");
|
|
370
|
-
|
|
370
|
+
p.bytes.length !== 54 && n("invalid RC4 FILEPASS size");
|
|
371
371
|
}
|
|
372
372
|
let q = (re) => {
|
|
373
373
|
if (E(800 + Math.max(0, re.length - 30)), u?.fill(0), a) {
|
|
374
374
|
let de = new Uint8Array(16 + re.length);
|
|
375
|
-
de.set(
|
|
375
|
+
de.set(p.bytes.subarray(L2, L2 + 16)), de.set(re, 16), u = o(de), de.fill(0);
|
|
376
376
|
} else {
|
|
377
|
-
let de = o(re),
|
|
378
|
-
for (let Ne = 0; Ne < 16; Ne++)
|
|
379
|
-
u = o(
|
|
377
|
+
let de = o(re), Ge = new Uint8Array(336);
|
|
378
|
+
for (let Ne = 0; Ne < 16; Ne++) Ge.set(de.subarray(0, 5), Ne * 21), Ge.set(p.bytes.subarray(L2, L2 + 16), Ne * 21 + 5);
|
|
379
|
+
u = o(Ge), de.fill(0), Ge.fill(0);
|
|
380
380
|
}
|
|
381
|
-
let oe =
|
|
382
|
-
for (let de = 0; de < he.length; de++) he[de] =
|
|
383
|
-
let Se = o(he.subarray(0, 16)),
|
|
384
|
-
for (let de = 0; de < W; de++)
|
|
385
|
-
return oe.fill(0), he.fill(0), Se.fill(0),
|
|
381
|
+
let oe = S(0, 16 + W), he = new Uint8Array(16 + W);
|
|
382
|
+
for (let de = 0; de < he.length; de++) he[de] = p.bytes[de < 16 ? X2 + de : z + de - 16] ^ oe[de];
|
|
383
|
+
let Se = o(he.subarray(0, 16)), Pe = 0;
|
|
384
|
+
for (let de = 0; de < W; de++) Pe |= Se[de] ^ he[de + 16];
|
|
385
|
+
return oe.fill(0), he.fill(0), Se.fill(0), Pe && (u?.fill(0), u = void 0), Pe === 0;
|
|
386
386
|
}, Q2 = "VelvetSweatshop", te = new Uint8Array(Q2.length * 2);
|
|
387
387
|
for (let re = 0; re < Q2.length; re++) te[re * 2] = Q2.charCodeAt(re);
|
|
388
388
|
let ie;
|
|
@@ -392,7 +392,7 @@ async function jt(s, e, r, n2) {
|
|
|
392
392
|
te.fill(0);
|
|
393
393
|
}
|
|
394
394
|
if (!ie) {
|
|
395
|
-
let re = await
|
|
395
|
+
let re = await N(a ? "rc4-cryptoapi" : "rc4");
|
|
396
396
|
try {
|
|
397
397
|
if (re === void 0 || !q(re)) throw new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook password required");
|
|
398
398
|
} finally {
|
|
@@ -401,106 +401,106 @@ async function jt(s, e, r, n2) {
|
|
|
401
401
|
}
|
|
402
402
|
continue;
|
|
403
403
|
}
|
|
404
|
-
if (M !== 0 || !
|
|
405
|
-
|
|
404
|
+
if (M !== 0 || !R2 && p.bytes.length !== 4) throw new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook");
|
|
405
|
+
p.check(0, R2 + 4), p.bytes.length !== R2 + 4 && n("invalid XOR FILEPASS size");
|
|
406
406
|
let _ = (c) => {
|
|
407
407
|
E(c.length + 1);
|
|
408
408
|
let I = 0;
|
|
409
409
|
for (let L2 = c.length - 1; L2 >= -1; L2--) I = (I << 1 & 32767 | I >> 14) ^ (L2 < 0 ? c.length : c[L2]);
|
|
410
|
-
return (I ^ 52811) ===
|
|
411
|
-
},
|
|
410
|
+
return (I ^ 52811) === p.u16(R2 + 2);
|
|
411
|
+
}, w2 = new TextEncoder().encode("VelvetSweatshop");
|
|
412
412
|
try {
|
|
413
|
-
if (!_(
|
|
414
|
-
let L2 = await
|
|
415
|
-
if (
|
|
416
|
-
if (
|
|
413
|
+
if (!_(w2)) {
|
|
414
|
+
let L2 = await N("xor");
|
|
415
|
+
if (w2.fill(0), L2 === void 0) throw new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook password required");
|
|
416
|
+
if (w2 = L2, !_(w2)) throw w2.fill(0), new Fe("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook password required");
|
|
417
417
|
}
|
|
418
|
-
let c =
|
|
418
|
+
let c = p.u16(R2), I = [187, 255, 255, 186, 255, 255, 185, 128, 0, 190, 15, 0, 191, 15, 0, 0];
|
|
419
419
|
t = Uint8Array.from({ length: 16 }, (L2, X2) => {
|
|
420
|
-
let W = (X2 <
|
|
420
|
+
let W = (X2 < w2.length ? w2[X2] : I[X2 - w2.length]) ^ (X2 % 2 ? c >> 8 : c & 255);
|
|
421
421
|
return W >> 1 | W << 7;
|
|
422
422
|
});
|
|
423
423
|
} finally {
|
|
424
|
-
|
|
424
|
+
w2.fill(0);
|
|
425
425
|
}
|
|
426
426
|
continue;
|
|
427
427
|
}
|
|
428
428
|
if (!t && !u || [9, 521, 1033, 2057, 404, 405, 225, 406, 312].includes(D)) continue;
|
|
429
429
|
let x = D === 133 ? 4 : 0;
|
|
430
|
-
|
|
431
|
-
let b =
|
|
430
|
+
p.check(0, x);
|
|
431
|
+
let b = p.bytes.length - x, O = 0;
|
|
432
432
|
if (u && b) {
|
|
433
|
-
let
|
|
434
|
-
O = Math.floor((
|
|
433
|
+
let R2 = Math.floor((F.offset + 4 + x) / 1024);
|
|
434
|
+
O = Math.floor((F.offset + 3 + p.bytes.length) / 1024) - R2 + 1 - (R2 === h2 ? 1 : 0);
|
|
435
435
|
}
|
|
436
436
|
E(b + O * 1344);
|
|
437
|
-
let C2 =
|
|
437
|
+
let C2 = p.bytes.slice(), v = F.offset + 4 + C2.length;
|
|
438
438
|
m2.push(C2);
|
|
439
|
-
for (let
|
|
440
|
-
let M =
|
|
441
|
-
_ !== h2 && (g?.fill(0), g =
|
|
439
|
+
for (let R2 = x; R2 < C2.length; R2++) if ((R2 & 1023) === 0 && n2.signal.throwIfAborted(), u) {
|
|
440
|
+
let M = F.offset + 4 + R2, _ = Math.floor(M / 1024);
|
|
441
|
+
_ !== h2 && (g?.fill(0), g = S(_, 1024), h2 = _), C2[R2] = C2[R2] ^ g[M % 1024];
|
|
442
442
|
} else {
|
|
443
|
-
let M = C2[
|
|
444
|
-
C2[
|
|
443
|
+
let M = C2[R2] ^ t[(v + R2) % 16];
|
|
444
|
+
C2[R2] = M >> 5 | M << 3;
|
|
445
445
|
}
|
|
446
|
-
s[B] = { ...
|
|
446
|
+
s[B] = { ...F, data: new h(C2) };
|
|
447
447
|
}
|
|
448
|
-
return d ?
|
|
448
|
+
return d ? jt(d, S, n2, E) : void 0;
|
|
449
449
|
} catch (B) {
|
|
450
|
-
for (let
|
|
450
|
+
for (let F of m2) F.fill(0);
|
|
451
451
|
throw B;
|
|
452
452
|
} finally {
|
|
453
453
|
t?.fill(0), u?.fill(0), g?.fill(0);
|
|
454
454
|
}
|
|
455
455
|
}
|
|
456
|
-
function
|
|
456
|
+
function $t(s, e, n2, r) {
|
|
457
457
|
let t = 0, u = 0, i = 0, h2 = 0, g = false, a = [], l = () => {
|
|
458
458
|
g = true;
|
|
459
459
|
for (let f of a) f.fill(0);
|
|
460
460
|
};
|
|
461
|
-
|
|
461
|
+
r.own(l);
|
|
462
462
|
let d = (f) => {
|
|
463
|
-
if (
|
|
464
|
-
if (t += f, t > (
|
|
463
|
+
if (r.signal.throwIfAborted(), g) throw new Ee("invalid-request", "Encrypted BIFF ancillary writer disposed");
|
|
464
|
+
if (t += f, t > (r.limits.workbookWork ?? r.limits.outputBytes * 8)) throw new Ee("resource-limit", "ssconvert BIFF ancillary work limit exceeded");
|
|
465
465
|
}, m2 = /* @__PURE__ */ new Set(["SUMMARYINFORMATION", "DOCUMENTSUMMARYINFORMATION"]);
|
|
466
466
|
try {
|
|
467
467
|
for (let [f, o] of e) d(1), m2.add(f.toUpperCase()), h2 += o.length;
|
|
468
468
|
for (let f of s.unsupportedRecords ?? []) {
|
|
469
|
-
if (d(1), ++u > (
|
|
469
|
+
if (d(1), ++u > (r.limits.workbookNodes ?? r.limits.outputBytes)) throw new Ee("resource-limit", "ssconvert BIFF ancillary node limit exceeded");
|
|
470
470
|
if (f.source !== "biff" || f.kind !== "encrypted-ancillary" || f.disposition !== "retained") continue;
|
|
471
471
|
let o = f.data;
|
|
472
472
|
if (!o || typeof o != "object" || Array.isArray(o)) continue;
|
|
473
473
|
let E = o;
|
|
474
|
-
if (d(Object.keys(E).length), Object.keys(E).some((
|
|
475
|
-
if (d(E.stream.length + E.bytes.length), i += E.stream.length * 3 + E.bytes.length, i > (
|
|
474
|
+
if (d(Object.keys(E).length), Object.keys(E).some((N) => !["stream", "bytes"].includes(N)) || typeof E.stream != "string" || typeof E.bytes != "string") continue;
|
|
475
|
+
if (d(E.stream.length + E.bytes.length), i += E.stream.length * 3 + E.bytes.length, i > (r.limits.workbookTextBytes ?? r.limits.outputBytes * 2)) throw new Ee("resource-limit", "ssconvert BIFF ancillary text limit exceeded");
|
|
476
476
|
if (m2.has(E.stream.toUpperCase())) throw new Ee("unsupported-feature", "Ambiguous encrypted BIFF ancillary stream name");
|
|
477
477
|
if (m2.add(E.stream.toUpperCase()), E.bytes.length % 2) throw new Ee("invalid-request", "Invalid retained BIFF ancillary bytes");
|
|
478
|
-
if (h2 += E.bytes.length / 2, h2 >
|
|
478
|
+
if (h2 += E.bytes.length / 2, h2 > r.limits.outputBytes || h2 > 4294967295) throw new Ee("resource-limit", "ssconvert BIFF ancillary output bytes limit exceeded");
|
|
479
479
|
let k = new Uint8Array(E.bytes.length / 2);
|
|
480
480
|
a.push(k);
|
|
481
|
-
for (let
|
|
482
|
-
|
|
483
|
-
let A = "0123456789abcdef".indexOf(E.bytes[
|
|
484
|
-
if (A < 0 ||
|
|
485
|
-
k[
|
|
481
|
+
for (let N = 0; N < k.length; N++) {
|
|
482
|
+
N % 1024 || d(1);
|
|
483
|
+
let A = "0123456789abcdef".indexOf(E.bytes[N * 2].toLowerCase()), S = "0123456789abcdef".indexOf(E.bytes[N * 2 + 1].toLowerCase());
|
|
484
|
+
if (A < 0 || S < 0) throw new Ee("invalid-request", "Invalid retained BIFF ancillary bytes");
|
|
485
|
+
k[N] = A * 16 + S;
|
|
486
486
|
}
|
|
487
|
-
e.set(E.stream, k),
|
|
487
|
+
e.set(E.stream, k), n2.add(f);
|
|
488
488
|
}
|
|
489
489
|
} catch (f) {
|
|
490
490
|
throw l(), f;
|
|
491
491
|
}
|
|
492
492
|
}
|
|
493
|
-
function
|
|
493
|
+
function Kt(s, e, n2) {
|
|
494
494
|
if (e.signal.throwIfAborted(), s.size > 65536 || s.size > (e.limits.workbookNodes ?? e.limits.outputBytes)) throw new Ee("resource-limit", "ssconvert encrypted BIFF property node limit exceeded");
|
|
495
|
-
let
|
|
495
|
+
let r = 0, t = 4, u = 0, i = /* @__PURE__ */ new Set(), h2 = [...s];
|
|
496
496
|
for (let [o, E] of h2) {
|
|
497
|
-
if (
|
|
498
|
-
i.add(o.toUpperCase()), u += o.length * 3,
|
|
497
|
+
if (n2(1 + o.length), !o.length || o.length > 31 || [...o].some((k) => ["\0", "/", "\\", ":", "!"].includes(k) || k.codePointAt(0) >= 55296 && k.codePointAt(0) <= 57343) || i.has(o.toUpperCase())) throw new Ee("unsupported-feature", "Invalid encrypted BIFF property stream name");
|
|
498
|
+
i.add(o.toUpperCase()), u += o.length * 3, r += E.length, t += 18 + o.length * 2;
|
|
499
499
|
}
|
|
500
500
|
if (u > (e.limits.workbookTextBytes ?? e.limits.outputBytes)) throw new Ee("resource-limit", "ssconvert encrypted BIFF property text limit exceeded");
|
|
501
|
-
let g = 8 +
|
|
501
|
+
let g = 8 + r, a = g + t;
|
|
502
502
|
if (a > 4294967295 || a > e.limits.outputBytes) throw new Ee("resource-limit", "ssconvert encrypted BIFF property output bytes limit exceeded");
|
|
503
|
-
|
|
503
|
+
n2(a * 2 + (h2.length + 2) * 320);
|
|
504
504
|
let l = false, d, m2 = () => {
|
|
505
505
|
l = true, d?.fill(0);
|
|
506
506
|
};
|
|
@@ -510,133 +510,133 @@ function $t(s, e, r) {
|
|
|
510
510
|
};
|
|
511
511
|
return (o) => {
|
|
512
512
|
f(), d = new Uint8Array(a);
|
|
513
|
-
let E = new DataView(d.buffer), k = (
|
|
513
|
+
let E = new DataView(d.buffer), k = (N, A, S) => {
|
|
514
514
|
f();
|
|
515
|
-
let B = o(
|
|
515
|
+
let B = o(S, A);
|
|
516
516
|
try {
|
|
517
517
|
f();
|
|
518
|
-
for (let
|
|
518
|
+
for (let F = 0; F < A; F++) F % 1024 || f(), d[N + F] = d[N + F] ^ B[F];
|
|
519
519
|
} finally {
|
|
520
520
|
B.fill(0);
|
|
521
521
|
}
|
|
522
522
|
};
|
|
523
523
|
try {
|
|
524
524
|
E.setUint32(0, g, true), E.setUint32(4, t, true), E.setUint32(g, h2.length, true);
|
|
525
|
-
let
|
|
526
|
-
for (let [B,
|
|
527
|
-
f(), d.set(
|
|
528
|
-
for (let
|
|
529
|
-
k(
|
|
525
|
+
let N = 8, A = g + 4, S = 0;
|
|
526
|
+
for (let [B, F] of h2) {
|
|
527
|
+
f(), d.set(F, N), E.setUint32(A, N, true), E.setUint32(A + 4, F.length, true), E.setUint16(A + 8, S, true), d[A + 10] = B.length, d[A + 11] = 1;
|
|
528
|
+
for (let p = 0; p < B.length; p++) E.setUint16(A + 16 + p * 2, B.charCodeAt(p), true);
|
|
529
|
+
k(N, F.length, S++), N += F.length, A += 18 + B.length * 2;
|
|
530
530
|
}
|
|
531
531
|
return k(g, t, 0), k(0, 8, 0), d;
|
|
532
|
-
} catch (
|
|
533
|
-
throw m2(),
|
|
532
|
+
} catch (N) {
|
|
533
|
+
throw m2(), N;
|
|
534
534
|
}
|
|
535
535
|
};
|
|
536
536
|
}
|
|
537
|
-
var
|
|
538
|
-
var
|
|
539
|
-
function
|
|
537
|
+
var Tt = new Map([["xor", { algorithm: "xor" }], ["rc4", { algorithm: "rc4" }], ...[false, true].flatMap((s) => [40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128].map((e) => [`rc4-cryptoapi-${e}${s ? "-properties" : ""}`, { algorithm: "rc4-cryptoapi", keyBits: e, encryptedProperties: s }]))]);
|
|
538
|
+
var Mr = [...Tt].filter(([, s]) => s.algorithm === "xor").map(([s]) => s);
|
|
539
|
+
function St(s, e = 8) {
|
|
540
540
|
if (s.algorithm === "xor") return new Uint8Array(e === 8 ? 6 : 4);
|
|
541
541
|
if (s.algorithm === "rc4") return new Uint8Array(54);
|
|
542
|
-
let
|
|
542
|
+
let n2 = "Microsoft Enhanced Cryptographic Provider v1.0", r = 32 + (n2.length + 1) * 2, t = new Uint8Array(14 + r + 60), u = new DataView(t.buffer);
|
|
543
543
|
u.setUint16(0, 1, true), u.setUint16(2, 4, true), u.setUint16(4, 2, true);
|
|
544
544
|
let i = s.encryptedProperties ? 4 : 12;
|
|
545
|
-
u.setUint32(6, i, true), u.setUint32(10,
|
|
546
|
-
for (let h2 = 0; h2 <
|
|
547
|
-
return u.setUint32(14 +
|
|
545
|
+
u.setUint32(6, i, true), u.setUint32(10, r, true), u.setUint32(14, i, true), u.setUint32(22, 26625, true), u.setUint32(26, 32772, true), u.setUint32(30, s.keyBits, true), u.setUint32(34, 1, true);
|
|
546
|
+
for (let h2 = 0; h2 < n2.length; h2++) u.setUint16(46 + h2 * 2, n2.charCodeAt(h2), true);
|
|
547
|
+
return u.setUint32(14 + r, 16, true), u.setUint32(50 + r, 20, true), t;
|
|
548
548
|
}
|
|
549
|
-
function
|
|
550
|
-
throw new
|
|
549
|
+
function _e(s) {
|
|
550
|
+
throw new Yt("unsupported-feature", `Unsupported ssconvert feature: encrypted Excel workbook ${s}`);
|
|
551
551
|
}
|
|
552
|
-
async function
|
|
553
|
-
e.signal.throwIfAborted(), (!e.password || !e.entropy) &&
|
|
554
|
-
let t =
|
|
555
|
-
if (e.signal.throwIfAborted(), g +=
|
|
552
|
+
async function qt(s, e, n2 = { algorithm: "rc4" }, r = /* @__PURE__ */ new Map()) {
|
|
553
|
+
e.signal.throwIfAborted(), (!e.password || !e.entropy) && _e("export requires password and cryptographic entropy capabilities");
|
|
554
|
+
let t = n2.algorithm === "rc4-cryptoapi", u = t ? L : R, i = n2.algorithm === "rc4-cryptoapi" ? n2.keyBits : 128, h2 = t ? 20 : 16, g = 0, a = (p) => {
|
|
555
|
+
if (e.signal.throwIfAborted(), g += p, g > (e.limits.workbookWork ?? e.limits.inputBytes * 8)) throw new Yt("resource-limit", "ssconvert BIFF encryption work limit exceeded");
|
|
556
556
|
};
|
|
557
557
|
a(1296 + h2 + s.length + Math.ceil(s.length / 1024) * 1344);
|
|
558
|
-
let l =
|
|
558
|
+
let l = n2.algorithm === "rc4-cryptoapi" && n2.encryptedProperties ? Kt(r, e, a) : void 0, d;
|
|
559
559
|
try {
|
|
560
|
-
d = await e.password.read(Object.freeze({ purpose: "encrypt", format: "biff", algorithm:
|
|
560
|
+
d = await e.password.read(Object.freeze({ purpose: "encrypt", format: "biff", algorithm: n2.algorithm, revision: 8, encoding: "utf16le", maxBytes: 510, signal: e.signal, ...e.outputFilename === void 0 ? {} : { outputFilename: e.outputFilename } }));
|
|
561
561
|
} catch {
|
|
562
|
-
e.signal.throwIfAborted(),
|
|
562
|
+
e.signal.throwIfAborted(), _e("password acquisition failed");
|
|
563
563
|
}
|
|
564
|
-
e.signal.throwIfAborted(), d === void 0 &&
|
|
564
|
+
e.signal.throwIfAborted(), d === void 0 && _e("password required"), (typeof d == "string" ? d.length > 255 : !(d instanceof Uint8Array) || d.length > 510 || d.length % 2 !== 0) && _e("password encoding or length");
|
|
565
565
|
let m2 = typeof d == "string" ? new Uint8Array(d.length * 2) : new Uint8Array(d);
|
|
566
566
|
if (typeof d == "string") {
|
|
567
|
-
let
|
|
568
|
-
for (let D = 0; D < d.length; D++)
|
|
567
|
+
let p = new DataView(m2.buffer);
|
|
568
|
+
for (let D = 0; D < d.length; D++) p.setUint16(D * 2, d.charCodeAt(D), true);
|
|
569
569
|
}
|
|
570
|
-
let f, o, E, k,
|
|
571
|
-
B.set(E.subarray(0,
|
|
570
|
+
let f, o, E, k, N, A = new Uint8Array(t ? 16 + m2.length : 336), S = t ? 20 : 5, B = new Uint8Array(S + 4), F = (p, D) => {
|
|
571
|
+
B.set(E.subarray(0, S)), new DataView(B.buffer).setUint32(S, p, true);
|
|
572
572
|
let x = u(B), b = t ? new Uint8Array(i === 40 ? 16 : i / 8) : x;
|
|
573
573
|
t && b.set(x.subarray(0, i / 8));
|
|
574
574
|
try {
|
|
575
|
-
return
|
|
575
|
+
return Ft(b, D, e);
|
|
576
576
|
} finally {
|
|
577
577
|
b.fill(0), x.fill(0);
|
|
578
578
|
}
|
|
579
579
|
};
|
|
580
580
|
try {
|
|
581
|
-
let
|
|
581
|
+
let p;
|
|
582
582
|
try {
|
|
583
|
-
|
|
583
|
+
p = await e.entropy.read(Object.freeze({ length: 32, signal: e.signal }));
|
|
584
584
|
} catch {
|
|
585
|
-
e.signal.throwIfAborted(),
|
|
585
|
+
e.signal.throwIfAborted(), _e("entropy acquisition failed");
|
|
586
586
|
}
|
|
587
|
-
if (e.signal.throwIfAborted(), (!(
|
|
587
|
+
if (e.signal.throwIfAborted(), (!(p instanceof Uint8Array) || p.length !== 32) && _e("entropy must provide exactly 32 bytes"), f = new Uint8Array(p), t) f.subarray(0, 16).every((M, _) => M === f[_ + 16]) && _e("salt and verifier must differ"), A.set(f.subarray(0, 16)), A.set(m2, 16);
|
|
588
588
|
else {
|
|
589
589
|
o = R(m2);
|
|
590
590
|
for (let M = 0; M < 16; M++) A.set(o.subarray(0, 5), M * 21), A.set(f.subarray(0, 16), M * 21 + 5);
|
|
591
591
|
}
|
|
592
|
-
E = u(A),
|
|
592
|
+
E = u(A), N = u(f.subarray(16)), k = F(0, 16 + h2);
|
|
593
593
|
let D = new DataView(s.buffer, s.byteOffset, s.byteLength), x = 4 + D.getUint16(2, true), b = t ? D.getUint32(x + 14, true) : 0;
|
|
594
594
|
if (D.getUint16(x, true) !== 47 || D.getUint16(x + 2, true) !== (t ? 74 + b : 54)) throw new TypeError("Missing BIFF8 encryption header slot");
|
|
595
595
|
t || s.set([1, 0, 1, 0, 1, 0], x + 4);
|
|
596
596
|
let O = t ? x + 22 + b : x + 10, C2 = O + 16, v = C2 + 16 + (t ? 4 : 0);
|
|
597
597
|
s.set(f.subarray(0, 16), O);
|
|
598
598
|
for (let M = 0; M < 16; M++) s[C2 + M] = f[16 + M] ^ k[M];
|
|
599
|
-
for (let M = 0; M < h2; M++) s[v + M] =
|
|
599
|
+
for (let M = 0; M < h2; M++) s[v + M] = N[M] ^ k[M + 16];
|
|
600
600
|
k.fill(0), k = void 0;
|
|
601
|
-
let
|
|
601
|
+
let R2 = -1;
|
|
602
602
|
for (let M = 0; M < s.length; ) {
|
|
603
603
|
e.signal.throwIfAborted();
|
|
604
|
-
let _ = D.getUint16(M, true),
|
|
604
|
+
let _ = D.getUint16(M, true), w2 = D.getUint16(M + 2, true), c = M + 4 + w2;
|
|
605
605
|
if (![2057, 47, 404, 405, 225, 406, 312].includes(_)) for (let I = M + 4 + (_ === 133 ? 4 : 0); I < c; I++) {
|
|
606
606
|
let L2 = Math.floor(I / 1024);
|
|
607
|
-
L2 !==
|
|
607
|
+
L2 !== R2 && (k?.fill(0), k = F(L2, 1024), R2 = L2), s[I] = s[I] ^ k[I % 1024];
|
|
608
608
|
}
|
|
609
609
|
M = c;
|
|
610
610
|
}
|
|
611
|
-
return l?.(
|
|
611
|
+
return l?.(F);
|
|
612
612
|
} finally {
|
|
613
|
-
m2.fill(0), f?.fill(0), o?.fill(0), E?.fill(0), A.fill(0), B.fill(0), k?.fill(0),
|
|
613
|
+
m2.fill(0), f?.fill(0), o?.fill(0), E?.fill(0), A.fill(0), B.fill(0), k?.fill(0), N?.fill(0);
|
|
614
614
|
}
|
|
615
615
|
}
|
|
616
|
-
var
|
|
617
|
-
var
|
|
618
|
-
var
|
|
619
|
-
async function
|
|
620
|
-
if (
|
|
621
|
-
if (256 + s.reduce((h2, g) => h2 + g.length, 0) > (
|
|
616
|
+
var Bn = [57840, 7439, 52380, 33984, 4364, 3600, 61902, 12606, 6258, 57657, 54287, 34041, 10252, 43370, 20163];
|
|
617
|
+
var Cn = [44796, 19929, 39858, 10053, 20106, 40212, 10761, 31585, 63170, 64933, 60267, 50935, 40399, 11199, 17763, 35526, 1453, 2906, 5812, 11624, 23248, 885, 1770, 3540, 7080, 14160, 28320, 56640, 55369, 41139, 20807, 41614, 21821, 43642, 17621, 28485, 56970, 44341, 19019, 38038, 14605, 29210, 60195, 50791, 40175, 10751, 21502, 43004, 24537, 18387, 36774, 3949, 7898, 15796, 31592, 63184, 47201, 24803, 49606, 37805, 14203, 28406, 56812, 17824, 35648, 1697, 3394, 6788, 13576, 27152, 43601, 17539, 35078, 557, 1114, 2228, 4456, 30388, 60776, 51953, 34243, 7079, 14158, 28316, 14128, 28256, 56512, 43425, 17251, 34502, 7597, 13105, 26210, 52420, 35241, 883, 1766, 3532, 4129, 8258, 16516, 33032, 4657, 9314, 18628];
|
|
618
|
+
var Un = [187, 255, 255, 186, 255, 255, 185, 128, 0, 190, 15, 0, 191, 15, 0];
|
|
619
|
+
async function Qt(s, e, n2) {
|
|
620
|
+
if (n2.signal.throwIfAborted(), !n2.password) throw new rt("unsupported-feature", "Unsupported ssconvert feature: XOR export requires a password capability");
|
|
621
|
+
if (256 + s.reduce((h2, g) => h2 + g.length, 0) > (n2.limits.workbookWork ?? n2.limits.inputBytes * 8)) throw new rt("resource-limit", "ssconvert BIFF encryption work limit exceeded");
|
|
622
622
|
let t;
|
|
623
623
|
try {
|
|
624
|
-
t = await
|
|
624
|
+
t = await n2.password.read(Object.freeze({ purpose: "encrypt", format: "biff", algorithm: "xor", revision: e, encoding: "bytes", maxBytes: 15, signal: n2.signal, ...n2.outputFilename === void 0 ? {} : { outputFilename: n2.outputFilename } }));
|
|
625
625
|
} catch {
|
|
626
|
-
throw
|
|
626
|
+
throw n2.signal.throwIfAborted(), new rt("unsupported-feature", "Unsupported ssconvert feature: encrypted Excel workbook password acquisition failed");
|
|
627
627
|
}
|
|
628
|
-
if (
|
|
628
|
+
if (n2.signal.throwIfAborted(), !(t instanceof Uint8Array) || !t.length || t.length > 15) throw new rt("unsupported-feature", "Unsupported ssconvert feature: XOR export requires 1 to 15 explicitly encoded password bytes");
|
|
629
629
|
let u = new Uint8Array(t), i = new Uint8Array(16);
|
|
630
630
|
try {
|
|
631
|
-
let h2 =
|
|
631
|
+
let h2 = Bn[u.length - 1], g = 104, a = 0;
|
|
632
632
|
for (let l = u.length - 1; l >= 0; l--) {
|
|
633
633
|
let d = u[l];
|
|
634
|
-
for (let m2 = 0; m2 < 7; m2++, g--, d <<= 1) d & 64 && (h2 ^=
|
|
634
|
+
for (let m2 = 0; m2 < 7; m2++, g--, d <<= 1) d & 64 && (h2 ^= Cn[g]);
|
|
635
635
|
}
|
|
636
636
|
for (let l = u.length - 1; l >= -1; l--) a = (a << 1 & 32767 | a >> 14) ^ (l < 0 ? u.length : u[l]);
|
|
637
637
|
a ^= 52811;
|
|
638
638
|
for (let l = 0; l < i.length; l++) {
|
|
639
|
-
let d = (l < u.length ? u[l] :
|
|
639
|
+
let d = (l < u.length ? u[l] : Un[l - u.length]) ^ (l % 2 ? h2 >> 8 : h2 & 255);
|
|
640
640
|
i[l] = d >> 1 | d << 7;
|
|
641
641
|
}
|
|
642
642
|
for (let l of s) {
|
|
@@ -644,69 +644,69 @@ async function qt(s, e, r) {
|
|
|
644
644
|
if (d.getUint16(m2, true) !== 47 || f !== (d.getUint16(4, true) === 1536 ? 6 : 4)) throw new TypeError("Missing BIFF XOR encryption header slot");
|
|
645
645
|
d.setUint16(m2 + f, h2, true), d.setUint16(m2 + f + 2, a, true);
|
|
646
646
|
for (let o = 0; o < l.length; ) {
|
|
647
|
-
|
|
648
|
-
let E = d.getUint16(o, true), k = d.getUint16(o + 2, true),
|
|
647
|
+
n2.signal.throwIfAborted();
|
|
648
|
+
let E = d.getUint16(o, true), k = d.getUint16(o + 2, true), N = o + 4 + k;
|
|
649
649
|
if (![9, 521, 1033, 2057, 47, 404, 405, 225, 406, 312].includes(E)) for (let A = E === 133 ? 4 : 0; A < k; A++) {
|
|
650
|
-
(A & 1023) === 0 &&
|
|
651
|
-
let
|
|
652
|
-
l[
|
|
650
|
+
(A & 1023) === 0 && n2.signal.throwIfAborted();
|
|
651
|
+
let S = o + 4 + A, B = l[S];
|
|
652
|
+
l[S] = (B << 5 | B >> 3) ^ i[(N + A) % 16];
|
|
653
653
|
}
|
|
654
|
-
o =
|
|
654
|
+
o = N;
|
|
655
655
|
}
|
|
656
656
|
}
|
|
657
657
|
} finally {
|
|
658
658
|
u.fill(0), i.fill(0);
|
|
659
659
|
}
|
|
660
660
|
}
|
|
661
|
-
var
|
|
662
|
-
var
|
|
663
|
-
var
|
|
664
|
-
var
|
|
665
|
-
var
|
|
666
|
-
function
|
|
667
|
-
let i =
|
|
668
|
-
return
|
|
661
|
+
var Zt = { 0: ["DIMENSIONS_v0"], 512: ["DIMENSIONS_v2"], 1: ["BLANK_v0"], 513: ["BLANK_v2"], 2: ["INTEGER"], 3: ["NUMBER_v0"], 515: ["NUMBER_v2"], 4: ["LABEL_v0"], 516: ["LABEL_v2"], 5: ["BOOLERR_v0"], 517: ["BOOLERR_v2"], 6: ["FORMULA_v0"], 518: ["FORMULA_v2"], 1030: ["FORMULA_v4"], 7: ["STRING_v0"], 519: ["STRING_v2"], 8: ["ROW_v0"], 520: ["ROW_v2"], 9: ["BOF_v0"], 521: ["BOF_v2"], 1033: ["BOF_v4"], 2057: ["BOF_v8"], 10: ["EOF"], 11: ["INDEX_v0"], 523: ["INDEX_v2"], 12: ["CALCCOUNT"], 13: ["CALCMODE"], 14: ["PRECISION"], 15: ["REFMODE"], 16: ["DELTA"], 17: ["ITERATION"], 18: ["PROTECT"], 19: ["PASSWORD"], 20: ["HEADER"], 21: ["FOOTER"], 22: ["EXTERNCOUNT"], 23: ["EXTERNSHEET"], 24: ["NAME_v0"], 536: ["NAME_v2"], 25: ["WINDOWPROTECT"], 26: ["VERTICALPAGEBREAKS"], 27: ["HORIZONTALPAGEBREAKS"], 28: ["NOTE"], 29: ["SELECTION"], 30: ["FORMAT_v0"], 1054: ["FORMAT_v4"], 31: ["FORMATCOUNT"], 32: ["COLUMNDEFAULT"], 33: ["ARRAY_v0"], 545: ["ARRAY_v2"], 34: ["1904"], 35: ["EXTERNNAME_v0"], 547: ["EXTERNNAME_v2"], 36: ["COLWIDTH"], 37: ["DEFAULTROWHEIGHT_v0"], 549: ["DEFAULTROWHEIGHT_v2"], 38: ["LEFT_MARGIN"], 39: ["RIGHT_MARGIN"], 40: ["TOP_MARGIN"], 41: ["BOTTOM_MARGIN"], 42: ["PRINTHEADERS"], 43: ["PRINTGRIDLINES"], 47: ["FILEPASS"], 49: ["FONT_v0"], 561: ["FONT_v2"], 50: ["FONTCOUNT"], 51: ["PRINTSIZE"], 54: ["TABLE_v0"], 566: ["TABLE_v2"], 55: ["TABLE2"], 56: ["WNDESK"], 57: ["ZOOM"], 58: ["BEGINPREF"], 59: ["ENDPREF"], 60: ["CONTINUE"], 61: ["WINDOW1"], 62: ["WINDOW2_v0"], 574: ["WINDOW2_v2"], 63: ["PANE_V2"], 64: ["BACKUP"], 65: ["PANE"], 66: ["CODEPAGE"], 67: ["XF_OLD_v0"], 579: ["XF_OLD_v2"], 1091: ["XF_OLD_v4"], 68: ["XF_INDEX"], 69: ["FONT_COLOR"], 77: ["PLS"], 80: ["DCON"], 81: ["DCONREF"], 82: ["DCONNAME"], 85: ["DEFCOLWIDTH"], 89: ["XCT"], 90: ["CRN"], 91: ["FILESHARING"], 92: ["WRITEACCESS"], 93: ["OBJ"], 94: ["UNCALCED"], 95: ["SAVERECALC"], 96: ["TEMPLATE"], 97: ["INTL"], 2146: ["TAB_COLOR", "SHEETEXT"], 99: ["OBJPROTECT"], 125: ["COLINFO"], 638: ["RK"], 127: ["IMDATA"], 128: ["GUTS"], 129: ["WSBOOL"], 130: ["GRIDSET"], 131: ["HCENTER"], 132: ["VCENTER"], 133: ["BOUNDSHEET"], 134: ["WRITEPROT"], 135: ["ADDIN"], 136: ["EDG"], 137: ["PUB"], 140: ["COUNTRY"], 141: ["HIDEOBJ"], 142: ["BUNDLESOFFSET"], 143: ["BUNDLEHEADER"], 144: ["SORT"], 145: ["SUB"], 146: ["PALETTE"], 659: ["STYLE"], 148: ["LHRECORD"], 149: ["LHNGRAPH"], 150: ["SOUND"], 151: ["SYNC"], 152: ["LPR"], 153: ["STANDARDWIDTH"], 154: ["FNGROUPNAME"], 155: ["FILTERMODE"], 156: ["FNGROUPCOUNT"], 157: ["AUTOFILTERINFO"], 158: ["AUTOFILTER"], 160: ["SCL"], 161: ["SETUP"], 164: ["TOOLBARVER"], 169: ["COORDLIST"], 171: ["GCW"], 174: ["SCENMAN"], 175: ["SCENARIO"], 176: ["SXVIEW"], 177: ["SXVD"], 178: ["SXVI"], 179: ["SXSI"], 180: ["SXIVD"], 181: ["SXLI"], 182: ["SXPI"], 183: ["FACENUM"], 184: ["DOCROUTE"], 185: ["RECIPNAME"], 186: ["SSLIST"], 187: ["MASKIMDATA"], 1212: ["SHRFMLA"], 189: ["MULRK"], 190: ["MULBLANK"], 191: ["TOOLBARHDR"], 192: ["TOOLBAREND"], 193: ["MMS"], 194: ["ADDMENU"], 195: ["DELMENU"], 196: ["TIPHISTORY"], 197: ["SXDI"], 198: ["SXDB"], 199: ["SXFDB"], 200: ["SXDDB"], 201: ["SXNUM"], 202: ["SXBOOL"], 203: ["SXERR"], 204: ["SXINT"], 205: ["SXSTRING"], 206: ["SXDTR"], 207: ["SXNIL"], 208: ["SXTBL"], 209: ["SXTBRGIITM"], 210: ["SXTBPG"], 211: ["OBPROJ"], 213: ["SXStreamID"], 214: ["RSTRING"], 215: ["DBCELL"], 216: ["SXNUMGROUP"], 218: ["BOOKBOOL"], 220: ["PARAMQRY", "SXEXT"], 221: ["SCENPROTECT"], 222: ["OLESIZE"], 223: ["UDDESC"], 224: ["XF"], 225: ["INTERFACEHDR"], 226: ["INTERFACEEND"], 227: ["SXVS"], 229: ["MERGECELLS"], 233: ["BG_PIC"], 234: ["TABIDCONF"], 235: ["MS_O_DRAWING_GROUP"], 236: ["MS_O_DRAWING"], 237: ["MS_O_DRAWING_SELECTION"], 239: ["PHONETIC"], 240: ["SXRULE"], 241: ["SXEX"], 242: ["SXFILT"], 246: ["SXNAME"], 247: ["SXSELECT"], 248: ["SXPAIR"], 249: ["SXFMLA"], 251: ["SXFORMAT"], 252: ["SST"], 253: ["LABELSST"], 255: ["EXTSST"], 256: ["SXVDEX"], 259: ["SXFORMULA"], 290: ["SXDBEX"], 311: ["CHTRINSERT"], 312: ["CHTRINFO"], 315: ["CHTRCELLCONTENT"], 317: ["TABID"], 320: ["CHTRMOVERANGE"], 333: ["CHTRINSERTTAB"], 351: ["LABELRANGES"], 352: ["USESELFS"], 353: ["DSF"], 354: ["XL5MODIFY"], 406: ["CHTRHEADER"], 421: ["FILESHARING2"], 425: ["USERDBVIEW"], 426: ["USERSVIEWBEGIN"], 427: ["USERSVIEWEND"], 429: ["QSI"], 430: ["SUPBOOK"], 431: ["PROT4REV"], 432: ["CONDFMT"], 433: ["CF"], 434: ["DVAL"], 437: ["DCONBIN"], 438: ["TXO"], 439: ["REFRESHALL"], 440: ["HLINK"], 442: ["CODENAME"], 443: ["SXFDBTYPE"], 444: ["PROT4REVPASS"], 446: ["DV"], 448: ["XL9FILE"], 449: ["RECALCID"], 2048: ["LINK_TIP"], 2049: ["WEBPUB"], 2050: ["QSISXTAG"], 2051: ["DBQUERYEXT"], 2052: ["EXTSTRING"], 2053: ["TXTQUERY"], 2054: ["QSIR"], 2055: ["QSIF"], 2058: ["OLEDBCONN"], 2059: ["WOPT"], 2060: ["SXVIEWEX"], 2061: ["SXTH"], 2062: ["SXPIEX"], 2063: ["SXVDTEX"], 2064: ["SXVIEWEX9"], 2066: ["CONTINUEFRT"], 2067: ["REALTIMEDATA"], 2147: ["BOOKEXT"], 2148: ["SXADDL"], 2149: ["CRASHRECERR"], 2150: ["HFPICTURE"], 2151: ["SHEETPROTECTION"], 2152: ["RANGEPROTECTION"], 4097: ["CHART_units"], 4098: ["CHART_chart"], 4099: ["CHART_series"], 4102: ["CHART_dataformat"], 4103: ["CHART_lineformat"], 4105: ["CHART_markerformat"], 4106: ["CHART_areaformat"], 4107: ["CHART_pieformat"], 4108: ["CHART_attachedlabel"], 4109: ["CHART_seriestext"], 4116: ["CHART_chartformat"], 4117: ["CHART_legend"], 4118: ["CHART_serieslist"], 4119: ["CHART_bar"], 4120: ["CHART_line"], 4121: ["CHART_pie"], 4122: ["CHART_area"], 4123: ["CHART_scatter"], 4124: ["CHART_chartline"], 4125: ["CHART_axis"], 4126: ["CHART_tick"], 4127: ["CHART_valuerange"], 4128: ["CHART_catserrange"], 4129: ["CHART_axislineformat"], 4130: ["CHART_chartformatlink"], 4132: ["CHART_defaulttext"], 4133: ["CHART_text"], 4134: ["CHART_fontx"], 4135: ["CHART_objectlink"], 4146: ["CHART_frame"], 4147: ["CHART_begin"], 4148: ["CHART_end"], 4149: ["CHART_plotarea"], 4154: ["CHART_3d"], 4156: ["CHART_picf"], 4157: ["CHART_dropbar"], 4158: ["CHART_radar"], 4159: ["CHART_surf"], 4160: ["CHART_radararea"], 4161: ["CHART_axisparent"], 4163: ["CHART_legendxn"], 4164: ["CHART_shtprops"], 4165: ["CHART_sertocrt"], 4166: ["CHART_axesused"], 4168: ["CHART_sbaseref"], 4170: ["CHART_serparent"], 4171: ["CHART_serauxtrend"], 4174: ["CHART_ifmt"], 4175: ["CHART_pos"], 4176: ["CHART_alruns"], 4177: ["CHART_ai"], 4187: ["CHART_serauxerrbar"], 4188: ["CHART_clrtclient"], 4189: ["CHART_serfmt"], 4191: ["CHART_3dbarshape"], 4192: ["CHART_fbi"], 4193: ["CHART_boppop"], 4194: ["CHART_axcext"], 4195: ["CHART_dat"], 4196: ["CHART_plotgrowth"], 4197: ["CHART_siindex"], 4198: ["CHART_gelframe"], 4199: ["CHART_boppopcustom"], 4288: ["CHART_trendlimits"] };
|
|
662
|
+
var it = { 0: ["COUNT", 0, 30], 1: ["IF", 2, 3], 2: ["ISNA", 1, 1], 3: ["ISERROR", 1, 1], 4: ["SUM", 0, 30], 5: ["AVERAGE", 1, 30], 6: ["MIN", 1, 30], 7: ["MAX", 1, 30], 8: ["ROW", 0, 1], 9: ["COLUMN", 0, 1], 10: ["NA", 0, 0], 11: ["NPV", 2, 30], 12: ["STDEV", 1, 30], 13: ["DOLLAR", 1, 2], 14: ["FIXED", 2, 3], 15: ["SIN", 1, 1], 16: ["COS", 1, 1], 17: ["TAN", 1, 1], 18: ["ATAN", 1, 1], 19: ["PI", 0, 0], 20: ["SQRT", 1, 1], 21: ["EXP", 1, 1], 22: ["LN", 1, 1], 23: ["LOG10", 1, 1], 24: ["ABS", 1, 1], 25: ["INT", 1, 1], 26: ["SIGN", 1, 1], 27: ["ROUND", 2, 2], 28: ["LOOKUP", 2, 3], 29: ["INDEX", 2, 4], 30: ["REPT", 2, 2], 31: ["MID", 3, 3], 32: ["LEN", 1, 1], 33: ["VALUE", 1, 1], 34: ["TRUE", 0, 0], 35: ["FALSE", 0, 0], 36: ["AND", 1, 30], 37: ["OR", 1, 30], 38: ["NOT", 1, 1], 39: ["MOD", 2, 2], 40: ["DCOUNT", 3, 3], 41: ["DSUM", 3, 3], 42: ["DAVERAGE", 3, 3], 43: ["DMIN", 3, 3], 44: ["DMAX", 3, 3], 45: ["DSTDEV", 3, 3], 46: ["VAR", 1, 30], 47: ["DVAR", 3, 3], 48: ["TEXT", 2, 2], 49: ["LINEST", 1, 4], 50: ["TREND", 1, 4], 51: ["LOGEST", 1, 4], 52: ["GROWTH", 1, 4], 53: ["GOTO", -1, -1], 54: ["HALT", -1, -1], 55: ["RETURN", -1, -1], 56: ["PV", 3, 5], 57: ["FV", 3, 5], 58: ["NPER", 3, 5], 59: ["PMT", 3, 5], 60: ["RATE", 3, 6], 61: ["MIRR", 3, 3], 62: ["IRR", 1, 2], 63: ["RAND", 0, 0], 64: ["MATCH", 2, 3], 65: ["DATE", 3, 3], 66: ["TIME", 3, 3], 67: ["DAY", 1, 1], 68: ["MONTH", 1, 1], 69: ["YEAR", 1, 1], 70: ["WEEKDAY", 1, 2], 71: ["HOUR", 1, 1], 72: ["MINUTE", 1, 1], 73: ["SECOND", 1, 1], 74: ["NOW", 0, 0], 75: ["AREAS", 1, 1], 76: ["ROWS", 1, 1], 77: ["COLUMNS", 1, 1], 78: ["OFFSET", 3, 5], 79: ["ABSREF", -1, -1], 80: ["RELREF", -1, -1], 81: ["ARGUMENT", -1, -1], 82: ["SEARCH", 2, 3], 83: ["TRANSPOSE", 1, 1], 84: ["ERROR", -1, -1], 85: ["STEP", -1, -1], 86: ["TYPE", 1, 1], 87: ["ECHO", -1, -1], 88: ["SETNAME", -1, -1], 89: ["CALLER", -1, -1], 90: ["DEREF", -1, -1], 91: ["WINDOWS", -1, -1], 92: ["SERIES", 4, 4], 93: ["DOCUMENTS", -1, -1], 94: ["ACTIVE.CELL", -1, -1], 95: ["SELECTION", -1, -1], 96: ["RESULT", -1, -1], 97: ["ATAN2", 2, 2], 98: ["ASIN", 1, 1], 99: ["ACOS", 1, 1], 100: ["CHOOSE", 2, 30], 101: ["HLOOKUP", 3, 4], 102: ["VLOOKUP", 3, 4], 103: ["LINKS", -1, -1], 104: ["INPUT", -1, -1], 105: ["ISREF", 1, 1], 106: ["GET.FORMULA", 1, 1], 107: ["GET.NAME", 1, 1], 108: ["SET.VALUE", -1, -1], 109: ["LOG", 1, 2], 110: ["EXEC", -1, -1], 111: ["CHAR", 1, 1], 112: ["LOWER", 1, 1], 113: ["UPPER", 1, 1], 114: ["PROPER", 1, 1], 115: ["LEFT", 1, 2], 116: ["RIGHT", 1, 2], 117: ["EXACT", 2, 2], 118: ["TRIM", 1, 1], 119: ["REPLACE", 4, 4], 120: ["SUBSTITUTE", 3, 4], 121: ["CODE", 1, 1], 122: ["NAMES", -1, -1], 123: ["DIRECTORY", -1, -1], 124: ["FIND", 2, 3], 125: ["CELL", 1, 2], 126: ["ISERR", 1, 1], 127: ["ISTEXT", 1, 1], 128: ["ISNUMBER", 1, 1], 129: ["ISBLANK", 1, 1], 130: ["T", 1, 1], 131: ["N", 1, 1], 132: ["FOPEN", -1, -1], 133: ["FCLOSE", -1, -1], 134: ["FSIZE", -1, -1], 135: ["FREADLN", -1, -1], 136: ["FREAD", -1, -1], 137: ["FWRITELN", -1, -1], 138: ["FWRITE", -1, -1], 139: ["FPOS", -1, -1], 140: ["DATEVALUE", 1, 1], 141: ["TIMEVALUE", 1, 1], 142: ["SLN", 3, 3], 143: ["SYD", 4, 4], 144: ["DDB", 4, 5], 145: ["GET.DEF", -1, -1], 146: ["REFTEXT", -1, -1], 147: ["TEXTREF", -1, -1], 148: ["INDIRECT", 1, 2], 149: ["REGISTER", -1, -1], 150: ["CALL", -1, -1], 151: ["ADD.BAR", -1, -1], 152: ["ADD.MENU", -1, -1], 153: ["ADD.COMMAND", -1, -1], 154: ["ENABLE.COMMAND", -1, -1], 155: ["CHECK.COMMAND", -1, -1], 156: ["RENAME.COMMAND", -1, -1], 157: ["SHOW.BAR", -1, -1], 158: ["DELETE.MENU", -1, -1], 159: ["DELETE.COMMAND", -1, -1], 160: ["GET.CHART.ITEM", -1, -1], 161: ["DIALOG.BOX", -1, -1], 162: ["CLEAN", 1, 1], 163: ["MDETERM", 1, 1], 164: ["MINVERSE", 1, 1], 165: ["MMULT", 2, 2], 166: ["FILES", -1, -1], 167: ["IPMT", 4, 6], 168: ["PPMT", 4, 6], 169: ["COUNTA", 0, 30], 170: ["CANCELKEY", -1, -1], 171: ["FOR", -1, -1], 172: ["WHILE", -1, -1], 173: ["BREAK", -1, -1], 174: ["NEXT", -1, -1], 175: ["INITIATE", -1, -1], 176: ["REQUEST", -1, -1], 177: ["POKE", -1, -1], 178: ["EXECUTE", -1, -1], 179: ["TERMINATE", -1, -1], 180: ["RESTART", -1, -1], 181: ["HELP", -1, -1], 182: ["GET.BAR", -1, -1], 183: ["PRODUCT", 0, 30], 184: ["FACT", 1, 1], 185: ["GET.CELL", -1, -1], 186: ["GET.WORKSPACE", -1, -1], 187: ["GET.WINDOW", -1, -1], 188: ["GET.DOCUMENT", -1, -1], 189: ["DPRODUCT", 3, 3], 190: ["ISNONTEXT", 1, 1], 191: ["GET.NOTE", -1, -1], 192: ["NOTE", -1, -1], 193: ["STDEVP", 1, 30], 194: ["VARP", 1, 30], 195: ["DSTDEVP", 3, 3], 196: ["DVARP", 3, 3], 197: ["TRUNC", 1, 2], 198: ["ISLOGICAL", 1, 1], 199: ["DCOUNTA", 3, 3], 200: ["DELETE.BAR", -1, -1], 201: ["UNREGISTER", -1, -1], 202: ["EXCELFUNC202", -1, -1], 203: ["EXCELFUNC203", -1, -1], 204: ["USDOLLAR", 1, 2], 205: ["FINDB", 2, 3], 206: ["SEARCHB", 2, 3], 207: ["REPLACEB", 4, 4], 208: ["LEFTB", 1, 2], 209: ["RIGHTB", 1, 2], 210: ["MIDB", 3, 3], 211: ["LENB", 1, 1], 212: ["ROUNDUP", 2, 2], 213: ["ROUNDDOWN", 2, 2], 214: ["ASC", 1, 1], 215: ["DBCS", 1, 1], 216: ["RANK", 2, 3], 217: ["EXCELFUNC217", -1, -1], 218: ["EXCELFUNC218", -1, -1], 219: ["ADDRESS", 2, 5], 220: ["DAYS360", 2, 3], 221: ["TODAY", 0, 0], 222: ["VDB", 5, 7], 223: ["ELSE", -1, -1], 224: ["ELSE.IF", -1, -1], 225: ["END.IF", -1, -1], 226: ["FOR.CELL", -1, -1], 227: ["MEDIAN", 1, 30], 228: ["SUMPRODUCT", 1, 30], 229: ["SINH", 1, 1], 230: ["COSH", 1, 1], 231: ["TANH", 1, 1], 232: ["ASINH", 1, 1], 233: ["ACOSH", 1, 1], 234: ["ATANH", 1, 1], 235: ["DGET", 3, 3], 236: ["CREATE.OBJECT", -1, -1], 237: ["VOLATILE", -1, -1], 238: ["LAST.ERROR", -1, -1], 239: ["CUSTOM.UNDO", -1, -1], 240: ["CUSTOM.REPEAT", -1, -1], 241: ["FORMULA.CONVERT", -1, -1], 242: ["GET.LINK.INFO", -1, -1], 243: ["TEXT.BOX", -1, -1], 244: ["INFO", 1, 1], 245: ["GROUP", -1, -1], 246: ["GET.OBJECT", -1, -1], 247: ["DB", 4, 5], 248: ["PAUSE", -1, -1], 249: ["EXCELFUNC249", -1, -1], 250: ["EXCELFUNC250", -1, -1], 251: ["RESUME", -1, -1], 252: ["FREQUENCY", 2, 2], 253: ["ADD.TOOLBAR", -1, -1], 254: ["DELETE.TOOLBAR", -1, -1], 255: ["extension slot", -1, -1], 256: ["RESET.TOOLBAR", -1, -1], 257: ["EVALUATE", -1, -1], 258: ["GET.TOOLBAR", -1, -1], 259: ["GET.TOOL", -1, -1], 260: ["SPELLING.CHECK", -1, -1], 261: ["ERROR.TYPE", 1, 1], 262: ["APP.TITLE", -1, -1], 263: ["WINDOW.TITLE", -1, -1], 264: ["SAVE.TOOLBAR", -1, -1], 265: ["ENABLE.TOOL", -1, -1], 266: ["PRESS.TOOL", -1, -1], 267: ["REGISTER.ID", -1, -1], 268: ["GET.WORKBOOK", -1, -1], 269: ["AVEDEV", 1, 30], 270: ["BETADIST", 3, 5], 271: ["GAMMALN", 1, 1], 272: ["BETAINV", 3, 5], 273: ["BINOMDIST", 4, 4], 274: ["CHIDIST", 2, 2], 275: ["CHIINV", 2, 2], 276: ["COMBIN", 2, 2], 277: ["CONFIDENCE", 3, 3], 278: ["CRITBINOM", 3, 3], 279: ["EVEN", 1, 1], 280: ["EXPONDIST", 3, 3], 281: ["FDIST", 3, 3], 282: ["FINV", 3, 3], 283: ["FISHER", 1, 1], 284: ["FISHERINV", 1, 1], 285: ["FLOOR", 2, 2], 286: ["GAMMADIST", 4, 4], 287: ["GAMMAINV", 3, 3], 288: ["CEILING", 2, 2], 289: ["HYPGEOMDIST", 4, 4], 290: ["LOGNORMDIST", 3, 3], 291: ["LOGINV", 3, 3], 292: ["NEGBINOMDIST", 3, 3], 293: ["NORMDIST", 4, 4], 294: ["NORMSDIST", 1, 1], 295: ["NORMINV", 3, 3], 296: ["NORMSINV", 1, 1], 297: ["STANDARDIZE", 3, 3], 298: ["ODD", 1, 1], 299: ["PERMUT", 2, 2], 300: ["POISSON", 3, 3], 301: ["TDIST", 3, 3], 302: ["WEIBULL", 4, 4], 303: ["SUMXMY2", 2, 2], 304: ["SUMX2MY2", 2, 2], 305: ["SUMX2PY2", 2, 2], 306: ["CHITEST", 2, 2], 307: ["CORREL", 2, 2], 308: ["COVAR", 2, 2], 309: ["FORECAST", 3, 3], 310: ["FTEST", 2, 2], 311: ["INTERCEPT", 2, 2], 312: ["PEARSON", 2, 2], 313: ["RSQ", 2, 2], 314: ["STEYX", 2, 2], 315: ["SLOPE", 2, 2], 316: ["TTEST", 4, 4], 317: ["PROB", 3, 4], 318: ["DEVSQ", 1, 30], 319: ["GEOMEAN", 1, 30], 320: ["HARMEAN", 1, 30], 321: ["SUMSQ", 0, 30], 322: ["KURT", 1, 30], 323: ["SKEW", 1, 30], 324: ["ZTEST", 2, 3], 325: ["LARGE", 2, 2], 326: ["SMALL", 2, 2], 327: ["QUARTILE", 2, 2], 328: ["PERCENTILE", 2, 2], 329: ["PERCENTRANK", 2, 3], 330: ["MODE", 1, 30], 331: ["TRIMMEAN", 2, 2], 332: ["TINV", 2, 2], 333: ["EXCELFUNC333", -1, -1], 334: ["MOVIE.COMMAND", -1, -1], 335: ["GET.MOVIE", -1, -1], 336: ["CONCATENATE", 0, 30], 337: ["POWER", 2, 2], 338: ["PIVOT.ADD.DATA", -1, -1], 339: ["GET.PIVOT.TABLE", -1, -1], 340: ["GET.PIVOT.FIELD", -1, -1], 341: ["GET.PIVOT.ITEM", -1, -1], 342: ["RADIANS", 1, 1], 343: ["DEGREES", 1, 1], 344: ["SUBTOTAL", 2, 30], 345: ["SUMIF", 2, 3], 346: ["COUNTIF", 2, 2], 347: ["COUNTBLANK", 1, 1], 348: ["SCENARIO.GET", -1, -1], 349: ["OPTIONS.LISTS.GET", -1, -1], 350: ["ISPMT", 4, 4], 351: ["DATEDIF", 3, 3], 352: ["DATESTRING", 1, 1], 353: ["NUMBERSTRING", 2, 2], 354: ["ROMAN", 1, 2], 355: ["OPEN.DIALOG", -1, -1], 356: ["SAVE.DIALOG", -1, -1], 357: ["VIEW.GET", -1, -1], 358: ["GETPIVOTDATA", 2, 30], 359: ["HYPERLINK", 1, 2], 360: ["PHONETIC", 1, 1], 361: ["AVERAGEA", 1, 30], 362: ["MAXA", 1, 30], 363: ["MINA", 1, 30], 364: ["STDEVPA", 1, 30], 365: ["VARPA", 1, 30], 366: ["STDEVA", 1, 30], 367: ["VARA", 1, 30], 368: ["BAHTTEXT", 1, 1], 369: ["THAIDAYOFWEEK", 1, 1], 370: ["THAIDIGIT", 1, 1], 371: ["THAIMONTHOFYEAR", 1, 1], 372: ["THAINUMSOUND", 1, 1], 373: ["THAINUMSTRING", 1, 1], 374: ["THAISTRINGLENGTH", 1, 1], 375: ["ISTHAIDIGIT", 1, 1], 376: ["ROUNDBAHTDOWN", 1, 1], 377: ["ROUNDBAHTUP", 1, 1], 378: ["THAIYEAR", 1, 1], 379: ["RTD", 2, 5], 380: ["ISHYPERLINK", 1, 1] };
|
|
663
|
+
var en = { 3: ["+", 3], 4: ["-", 3], 5: ["*", 4], 6: ["/", 4], 7: ["^", 5], 8: ["&", 2], 9: ["<", 1], 10: ["<=", 1], 11: ["=", 1], 12: [">=", 1], 13: [">", 1], 14: ["<>", 1], 15: [" ", 7], 16: [",", 6], 17: [":", 8] };
|
|
664
|
+
var Ce = { 0: "#NULL!", 7: "#DIV/0!", 15: "#VALUE!", 23: "#REF!", 29: "#NAME?", 36: "#NUM!", 42: "#N/A" };
|
|
665
|
+
var Ln = { 14: [2, 3, 2], 70: [2, 4, 1], 101: [2, 4, 3], 102: [2, 4, 3], 197: [2, 2, 1], 220: [3, 4, 2] };
|
|
666
|
+
function Nt(s, e, [n2, r, t, u]) {
|
|
667
|
+
let i = n2 === r && s === n2 && (e === t - 1 || e === u + 1), h2 = t === u && e === t && (s === n2 - 1 || s === r + 1);
|
|
668
|
+
return n2 <= r && t <= u && u < 256 && i !== h2;
|
|
669
669
|
}
|
|
670
|
-
function
|
|
671
|
-
let
|
|
670
|
+
function at(s, e) {
|
|
671
|
+
let n2 = new h(s), r = [], t = 0, u = 0, i = (m2, f = 99, o) => {
|
|
672
672
|
if (u += m2.length, u > e.limit) throw new ke("resource-limit", "ssconvert BIFF formula work limit exceeded");
|
|
673
|
-
e.accountWork?.(m2.length),
|
|
673
|
+
e.accountWork?.(m2.length), r.push({ text: m2, precedence: f, ...o === void 0 ? {} : { functionName: o } });
|
|
674
674
|
};
|
|
675
675
|
function h2(m2, f) {
|
|
676
676
|
let o = e.names[m2 - 1], E = e.nameSheets === void 0 ? f : e.nameSheets[m2 - 1];
|
|
677
677
|
if (E !== void 0) return "'" + E.split("'").join("''") + "'!" + o;
|
|
678
678
|
if (e.globalNameDefinition) return o;
|
|
679
679
|
if (e.nameSheets !== void 0) for (let k = 0; k < e.names.length; k++) {
|
|
680
|
-
let
|
|
681
|
-
if (u +=
|
|
682
|
-
if (e.accountWork?.(
|
|
680
|
+
let N = e.names[k];
|
|
681
|
+
if (u += N.length + 1, u > e.limit) throw new ke("resource-limit", "ssconvert BIFF formula work limit exceeded");
|
|
682
|
+
if (e.accountWork?.(N.length + 1), e.nameSheets[k] !== void 0 && N.toUpperCase() === o.toUpperCase()) return "[]" + o;
|
|
683
683
|
}
|
|
684
684
|
return o;
|
|
685
685
|
}
|
|
686
686
|
let g = () => {
|
|
687
|
-
let m2 =
|
|
687
|
+
let m2 = r.pop();
|
|
688
688
|
return m2 || n("formula stack underflow"), m2;
|
|
689
689
|
}, a = (m2, f) => m2.precedence < f ? `(${m2.text})` : m2.text, l = (m2, f) => {
|
|
690
|
-
let o =
|
|
690
|
+
let o = n2.u16(m2), E = e.revision >= 8 ? n2.u16(m2 + 2) : n2.u8(m2 + 2), k = e.revision >= 8 ? !!(E & 32768) : !!(o & 32768), N = e.revision >= 8 ? !!(E & 16384) : !!(o & 16384), A = e.revision >= 8 ? o : o & 16383, S = E & 255;
|
|
691
691
|
if (f && k) {
|
|
692
|
-
let
|
|
693
|
-
A = (e.row + (A >=
|
|
692
|
+
let F = e.revision >= 8 ? 65536 : 16384;
|
|
693
|
+
A = (e.row + (A >= F / 2 ? A - F : A) + F) % F;
|
|
694
694
|
}
|
|
695
|
-
f &&
|
|
695
|
+
f && N && (S = (e.column + (S >= 128 ? S - 256 : S) + 256) % 256);
|
|
696
696
|
let B = "";
|
|
697
|
-
for (let
|
|
698
|
-
return `${
|
|
697
|
+
for (let F = S + 1; F; F = Math.floor((F - 1) / 26)) B = String.fromCharCode(65 + (F - 1) % 26) + B;
|
|
698
|
+
return `${N ? "" : "$"}${B}${k ? "" : "$"}${A + 1}`;
|
|
699
699
|
}, d = (m2, f) => {
|
|
700
700
|
let o = e.revision >= 8 ? 2 : 1, E = new Uint8Array(2 + o), k = new Uint8Array(2 + o);
|
|
701
|
-
E.set(
|
|
702
|
-
let
|
|
703
|
-
return
|
|
701
|
+
E.set(n2.slice(m2, 2)), E.set(n2.slice(m2 + 4, o), 2), k.set(n2.slice(m2 + 2, 2)), k.set(n2.slice(m2 + 4 + o, o), 2);
|
|
702
|
+
let N = { ...e }, A = f ? 44 : 36;
|
|
703
|
+
return at(new Uint8Array([A, ...E]), N).slice(1) + ":" + at(new Uint8Array([A, ...k]), N).slice(1);
|
|
704
704
|
};
|
|
705
705
|
for (; t < s.length; ) {
|
|
706
|
-
let m2 =
|
|
707
|
-
if (e.shared && f === 24 && n("ELF label in shared formula"),
|
|
708
|
-
let [o, E] =
|
|
709
|
-
i(a(
|
|
706
|
+
let m2 = n2.u8(t++), f = m2 >= 32 ? m2 & 31 | 32 : m2;
|
|
707
|
+
if (e.shared && f === 24 && n("ELF label in shared formula"), en[f]) {
|
|
708
|
+
let [o, E] = en[f], k = g(), N = g();
|
|
709
|
+
i(a(N, E) + o + a(k, E + (f === 4 || f === 6 || f === 7 ? 1 : 0)), E);
|
|
710
710
|
} else if (f === 18 || f === 19) {
|
|
711
711
|
let o = g();
|
|
712
712
|
i((f === 18 ? "+" : "-") + a(o, 5), 5);
|
|
@@ -716,87 +716,87 @@ function ot(s, e) {
|
|
|
716
716
|
} else if (f === 21) i("(" + g().text + ")");
|
|
717
717
|
else if (f === 22) i("");
|
|
718
718
|
else if (f === 23) {
|
|
719
|
-
let o =
|
|
719
|
+
let o = n2.u8(t++), E;
|
|
720
720
|
if (e.revision >= 8) {
|
|
721
|
-
let k =
|
|
721
|
+
let k = n2.u8(t++);
|
|
722
722
|
if (k > 1 && n("invalid formula string flags"), k) {
|
|
723
|
-
|
|
724
|
-
for (let
|
|
725
|
-
} else E = m(
|
|
723
|
+
n2.check(t, o * 2), E = "";
|
|
724
|
+
for (let N = 0; N < o; N++) E += String.fromCharCode(n2.u16(t + N * 2));
|
|
725
|
+
} else E = m(n2.slice(t, o), 1200);
|
|
726
726
|
t += o * (k ? 2 : 1);
|
|
727
|
-
} else E = m(
|
|
727
|
+
} else E = m(n2.slice(t, o), e.codepage), t += o;
|
|
728
728
|
i('"' + E.split('"').join('""') + '"', 99, E);
|
|
729
|
-
} else if (f === 24 && e.revision === 8 && [1, 16].includes(
|
|
730
|
-
else if (f === 24 && e.revision === 8 && [2, 3, 6, 7, 10, 11].includes(
|
|
731
|
-
|
|
732
|
-
let o =
|
|
729
|
+
} else if (f === 24 && e.revision === 8 && [1, 16].includes(n2.u8(t))) n2.check(t, 5), t += 5, i("#NAME?");
|
|
730
|
+
else if (f === 24 && e.revision === 8 && [2, 3, 6, 7, 10, 11].includes(n2.u8(t))) {
|
|
731
|
+
n2.check(t, 5);
|
|
732
|
+
let o = n2.u8(t), E = o === 11 ? e.readLabels?.() : void 0;
|
|
733
733
|
o === 11 && !E?.cells.length && n("missing multiple label references");
|
|
734
|
-
let k = E?.cells[E.cells.length - 1],
|
|
735
|
-
|
|
736
|
-
let B = A & 32768 ? "" : "$",
|
|
737
|
-
for (let x =
|
|
738
|
-
let D = (A & 16384 ? ".quoted" : "") + ":" + B +
|
|
734
|
+
let k = E?.cells[E.cells.length - 1], N = k?.row ?? n2.u16(t + 1), A = k ? k.column | (E.relative ? 32768 : 0) : n2.u16(t + 3), S = A & 16383;
|
|
735
|
+
S > 255 && n("invalid label column");
|
|
736
|
+
let B = A & 32768 ? "" : "$", F = o === 2 || o === 6 ? "row" : "column", p = "";
|
|
737
|
+
for (let x = S + 1; x; x = Math.floor((x - 1) / 26)) p = String.fromCharCode(65 + (x - 1) % 26) + p;
|
|
738
|
+
let D = (A & 16384 ? ".quoted" : "") + ":" + B + p + B + (N + 1);
|
|
739
739
|
if (t += 5, o === 10 || o === 11) {
|
|
740
|
-
|
|
741
|
-
let x =
|
|
740
|
+
n2.check(t, 9);
|
|
741
|
+
let x = n2.u8(t);
|
|
742
742
|
[37, 69, 101, 43, 75, 107].includes(x) || n("radical label requires Area or AreaErr");
|
|
743
743
|
let b = (x & 31) === 11;
|
|
744
|
-
!b && (!
|
|
744
|
+
!b && (!Nt(N, S, [n2.u16(t + 1), n2.u16(t + 3), n2.u16(t + 5) & 16383, n2.u16(t + 7) & 16383]) || E && (S !== (n2.u16(t + 5) & 16383) || (n2.u16(t + 5) & 16383) !== (n2.u16(t + 7) & 16383))) && n("invalid radical label area");
|
|
745
745
|
let O = E?.cells.map((C2) => {
|
|
746
746
|
let v = "";
|
|
747
|
-
for (let
|
|
747
|
+
for (let R2 = C2.column + 1; R2; R2 = Math.floor((R2 - 1) / 26)) v = String.fromCharCode(65 + (R2 - 1) % 26) + v;
|
|
748
748
|
return B + v + B + (C2.row + 1);
|
|
749
749
|
});
|
|
750
750
|
i("@range" + ((x & 96) === 64 ? ".value" : (x & 96) === 96 ? ".array" : "") + (O ? ".multi:{" + O.join(";") + "}" : D) + "->" + (b ? "#REF!" : d(t + 1, false))), t += 9;
|
|
751
|
-
} else i("@" +
|
|
751
|
+
} else i("@" + F + (o >= 6 ? ".value" : "") + D);
|
|
752
752
|
} else if (f === 25) {
|
|
753
|
-
let o = e.revision === 2 ? 1 : 2, E =
|
|
754
|
-
t += 1 + o, E & 4 ? (
|
|
755
|
-
} else if (f === 28) i(
|
|
756
|
-
else if (f === 29) i(
|
|
757
|
-
else if (f === 30) i(String(
|
|
753
|
+
let o = e.revision === 2 ? 1 : 2, E = n2.u8(t), k = o === 1 ? n2.u8(t + 1) : n2.u16(t + 1);
|
|
754
|
+
t += 1 + o, E & 4 ? (n2.check(t, (k + 1) * o), t += (k + 1) * o) : E & 16 && i("SUM(" + g().text + ")");
|
|
755
|
+
} else if (f === 28) i(Ce[n2.u8(t++)] ?? "#UNKNOWN!");
|
|
756
|
+
else if (f === 29) i(n2.u8(t++) ? "TRUE" : "FALSE");
|
|
757
|
+
else if (f === 30) i(String(n2.u16(t))), t += 2;
|
|
758
758
|
else if (f === 31) {
|
|
759
|
-
let o =
|
|
759
|
+
let o = n2.f64(t);
|
|
760
760
|
Number.isFinite(o) || n("invalid formula number"), i(String(o)), t += 8;
|
|
761
761
|
} else if (f === 32 && e.readArray) {
|
|
762
762
|
let o = e.revision === 2 ? 6 : 7;
|
|
763
|
-
|
|
763
|
+
n2.check(t, o), t += o, i(e.readArray());
|
|
764
764
|
} else if (f === 33 || f === 34) {
|
|
765
|
-
let o = f === 34 ?
|
|
765
|
+
let o = f === 34 ? n2.u8(t++) & 127 : void 0, E = e.revision >= 4 ? n2.u16(t) : n2.u8(t);
|
|
766
766
|
if (t += e.revision >= 4 ? 2 : 1, (E & 32767) === 255) {
|
|
767
767
|
if (o === void 0) throw new ke("unsupported-feature", "Unsupported ssconvert feature: fixed-arity BIFF custom function");
|
|
768
|
-
(o < 1 || o >
|
|
769
|
-
let
|
|
770
|
-
if (
|
|
771
|
-
for (let x of ["_xlfn.", "_xlfnodf."]) if (
|
|
772
|
-
let b =
|
|
773
|
-
|
|
768
|
+
(o < 1 || o > r.length) && n("invalid custom function argument count");
|
|
769
|
+
let F = r.splice(r.length - o + 1).map((x) => x.text), p = g().functionName;
|
|
770
|
+
if (p === void 0) return i('#"#Unknown!"'), "=" + g().text;
|
|
771
|
+
for (let x of ["_xlfn.", "_xlfnodf."]) if (p.startsWith(x)) {
|
|
772
|
+
let b = p.slice(x.length).toUpperCase(), O = x === "_xlfn." ? Mn.functionPrefixAliases?.["_XLFN."]?.[b] ?? b : b;
|
|
773
|
+
On[O] && (p = O);
|
|
774
774
|
break;
|
|
775
775
|
}
|
|
776
|
-
let D =
|
|
777
|
-
if (!D.ok || D.document.root.kind !== "call" || D.document.root.spelling !==
|
|
778
|
-
i(
|
|
776
|
+
let D = Jt("=" + p + "()", { position: { sheet: "", row: e.row, column: e.column }, maximumLength: e.limit, maximumNodes: 1 });
|
|
777
|
+
if (!D.ok || D.document.root.kind !== "call" || D.document.root.spelling !== p) throw new ke("unsupported-feature", "Unsupported ssconvert feature: BIFF custom function name");
|
|
778
|
+
i(p + "(" + F.join(",") + ")");
|
|
779
779
|
continue;
|
|
780
780
|
}
|
|
781
|
-
let k =
|
|
782
|
-
if (!k ||
|
|
783
|
-
(
|
|
784
|
-
let B =
|
|
781
|
+
let k = it[E & 32767], N = Ln[E & 32767], A = N && e.revision >= N[0] && e.revision <= N[1] ? N[2] : k && k[1] === k[2] ? k[1] : void 0, S = o ?? A;
|
|
782
|
+
if (!k || S === void 0) throw new ke("unsupported-feature", `Unsupported ssconvert feature: BIFF function ${E}`);
|
|
783
|
+
(S < 0 || S > r.length) && n("invalid function argument count");
|
|
784
|
+
let B = r.splice(r.length - S, S).map((F) => F.text);
|
|
785
785
|
i(k[0] + "(" + B.join(",") + ")");
|
|
786
786
|
} else if (f === 57) {
|
|
787
787
|
let o = e.revision >= 8 ? 6 : 24;
|
|
788
|
-
|
|
789
|
-
let E =
|
|
788
|
+
n2.check(t, o);
|
|
789
|
+
let E = n2.u16(t), k = E >= 32768 ? E - 65536 : E, N = e.revision >= 8 ? n2.u32(t + 2) : n2.u16(t + 10);
|
|
790
790
|
t += o;
|
|
791
|
-
let A = e.revision >= 8 ? E : k > 0 ? k - 1 : void 0,
|
|
792
|
-
if (
|
|
793
|
-
let b =
|
|
791
|
+
let A = e.revision >= 8 ? E : k > 0 ? k - 1 : void 0, S = A === void 0 ? void 0 : e.externalNames?.[A];
|
|
792
|
+
if (S !== void 0) {
|
|
793
|
+
let b = S[N - 1];
|
|
794
794
|
if (!b) {
|
|
795
795
|
i("#REF!");
|
|
796
796
|
continue;
|
|
797
797
|
}
|
|
798
798
|
if (b.workbook !== void 0) {
|
|
799
|
-
let O = "[" +
|
|
799
|
+
let O = "[" + ot(b.workbook, "'", st) + "]" + (b.sheet === void 0 ? "" : ot(b.sheet, "'", st) + "!") + b.name, C2 = Jt("=" + O, { position: { sheet: e.currentSheet ?? "", row: e.row, column: e.column }, maximumNodes: e.limit, maximumLength: e.limit }), v = C2.ok ? C2.document.root : void 0;
|
|
800
800
|
if (v?.kind !== "name" || v.name !== b.name || v.workbook !== b.workbook || v.sheet !== b.sheet) throw new ke("unsupported-feature", "Unsupported ssconvert feature: invalid external BIFF name");
|
|
801
801
|
i(O);
|
|
802
802
|
continue;
|
|
@@ -808,92 +808,92 @@ function ot(s, e) {
|
|
|
808
808
|
if (e.revision < 8 && k >= 0) throw new ke("unsupported-feature", "Unsupported ssconvert feature: external BIFF workbook reference");
|
|
809
809
|
let B = e.revision >= 8 ? (e.externalNameSheets ?? e.externalSheets)[E] : e.externalSheets[-k - 1];
|
|
810
810
|
if (B === void 0) throw new ke("unsupported-feature", "Unsupported ssconvert feature: external BIFF workbook reference");
|
|
811
|
-
let
|
|
812
|
-
if (typeof
|
|
813
|
-
i(
|
|
811
|
+
let F = e.resolveName?.(N, true), p = F?.value ?? N;
|
|
812
|
+
if (typeof p == "string") {
|
|
813
|
+
i(p, 99, F?.functionName);
|
|
814
814
|
continue;
|
|
815
815
|
}
|
|
816
|
-
let D = e.names[
|
|
816
|
+
let D = e.names[p - 1];
|
|
817
817
|
if (!D) {
|
|
818
818
|
i("#REF!");
|
|
819
819
|
continue;
|
|
820
820
|
}
|
|
821
|
-
let x = B === null ? e.nameSheets?.[
|
|
822
|
-
i(h2(
|
|
821
|
+
let x = B === null ? e.nameSheets?.[p - 1] ?? e.currentSheet : typeof B == "string" ? B : B[0];
|
|
822
|
+
i(h2(p, x), 99, F === void 0 ? D : F.functionName);
|
|
823
823
|
} else if (f === 35) {
|
|
824
|
-
let o = e.revision >= 8 ?
|
|
825
|
-
|
|
826
|
-
let k = e.resolveName?.(o, false),
|
|
827
|
-
if (typeof
|
|
828
|
-
i(
|
|
824
|
+
let o = e.revision >= 8 ? n2.u32(t) : n2.u16(t), E = e.revision >= 8 ? 4 : e.revision >= 5 ? 14 : e.revision === 2 ? 7 : 10;
|
|
825
|
+
n2.check(t, E), t += E;
|
|
826
|
+
let k = e.resolveName?.(o, false), N = k?.value ?? o;
|
|
827
|
+
if (typeof N == "string") {
|
|
828
|
+
i(N, 99, k?.functionName);
|
|
829
829
|
continue;
|
|
830
830
|
}
|
|
831
|
-
let A = e.names[
|
|
832
|
-
A || n("invalid formula name index"), i(h2(
|
|
831
|
+
let A = e.names[N - 1];
|
|
832
|
+
A || n("invalid formula name index"), i(h2(N), 99, k === void 0 ? A : k.functionName);
|
|
833
833
|
} else if (f === 36 || f === 44) i(l(t, f === 44)), t += e.revision >= 8 ? 4 : 3;
|
|
834
834
|
else if (f === 37 || f === 45) i(d(t, f === 45)), t += e.revision >= 8 ? 8 : 6;
|
|
835
835
|
else if (f === 42 || f === 43) {
|
|
836
836
|
let o = e.revision >= 8 ? f === 42 ? 4 : 8 : f === 42 ? 3 : 6;
|
|
837
|
-
|
|
837
|
+
n2.check(t, o), t += o, i("#REF!");
|
|
838
838
|
} else if (f === 60 || f === 61) {
|
|
839
839
|
let o = e.revision >= 8 ? f === 60 ? 6 : 10 : f === 60 ? 17 : 20;
|
|
840
|
-
|
|
840
|
+
n2.check(t, o), t += o, i("#REF!");
|
|
841
841
|
} else if (f === 58 || f === 59) {
|
|
842
842
|
let o, E;
|
|
843
843
|
if (e.revision >= 8) {
|
|
844
844
|
let B = f === 58 ? 6 : 10;
|
|
845
|
-
|
|
846
|
-
let
|
|
847
|
-
if (E = e.externalWorkbooks?.[
|
|
845
|
+
n2.check(t, B);
|
|
846
|
+
let F = n2.u16(t);
|
|
847
|
+
if (E = e.externalWorkbooks?.[F], e.deletedExternalSheets?.[F] || !E && e.unavailableExternalSheets?.[F]) {
|
|
848
848
|
t += B, i("#REF!");
|
|
849
849
|
continue;
|
|
850
850
|
}
|
|
851
|
-
o = E ? E.first === E.last ? E.first : [E.first, E.last] : e.externalSheets[
|
|
851
|
+
o = E ? E.first === E.last ? E.first : [E.first, E.last] : e.externalSheets[F], t += 2;
|
|
852
852
|
} else {
|
|
853
853
|
let B = f === 58 ? 17 : 20;
|
|
854
|
-
|
|
855
|
-
let
|
|
856
|
-
let O =
|
|
854
|
+
n2.check(t, B);
|
|
855
|
+
let F = (b) => {
|
|
856
|
+
let O = n2.u16(b);
|
|
857
857
|
return O >= 32768 ? O - 65536 : O;
|
|
858
|
-
},
|
|
859
|
-
if (E =
|
|
858
|
+
}, p = F(t), D = F(t + 10), x = F(t + 12);
|
|
859
|
+
if (E = p > 0 ? e.externalWorkbooks?.[p - 1] : void 0, E) o = E.first;
|
|
860
860
|
else {
|
|
861
|
-
if (
|
|
861
|
+
if (p <= 0 && (D < 0 || x < 0)) {
|
|
862
862
|
t += B, i("#REF!");
|
|
863
863
|
continue;
|
|
864
864
|
}
|
|
865
|
-
let b = e.externalSheets[Math.abs(
|
|
865
|
+
let b = e.externalSheets[Math.abs(p) - 1], C2 = p < 0 && D === -p - 1 && typeof b == "string" && e.localSheets?.[D] === b ? e.localSheets?.[x] : p < 0 && D === x ? b : p < 0 && x === 0 ? e.currentSheet ?? null : e.externalSheets[x - 1];
|
|
866
866
|
if (b === void 0 || C2 === void 0 || typeof b == "object" && b !== null || typeof C2 == "object" && C2 !== null) throw new ke("unsupported-feature", "Unsupported ssconvert feature: external BIFF workbook reference");
|
|
867
867
|
o = b === null ? null : C2 === null || b === C2 ? b : [b, C2];
|
|
868
868
|
}
|
|
869
869
|
t += 14;
|
|
870
870
|
}
|
|
871
871
|
if (o === void 0) throw new ke("unsupported-feature", "Unsupported ssconvert feature: external BIFF workbook reference");
|
|
872
|
-
let k = e.revision < 8 && !!e.shared,
|
|
872
|
+
let k = e.revision < 8 && !!e.shared, N = f === 58 ? l(t, k) : d(t, k);
|
|
873
873
|
t += e.revision >= 8 ? f === 58 ? 4 : 8 : f === 58 ? 3 : 6;
|
|
874
|
-
let
|
|
875
|
-
i((E ? "[" +
|
|
874
|
+
let S = (o === null ? [] : typeof o == "string" ? [o] : o).map((B) => E ? ot(B, "'", st) : "'" + B.split("'").join("''") + "'").join(":");
|
|
875
|
+
i((E ? "[" + ot(E.workbook, "'", st) + "]" : "") + (S ? S + "!" : "") + N);
|
|
876
876
|
} else if (f === 38 || f === 39 || f === 40) {
|
|
877
877
|
let o = e.revision === 2 ? 4 : 6;
|
|
878
|
-
|
|
878
|
+
n2.check(t, o), t += o, f === 38 && e.readMemory?.();
|
|
879
879
|
} else if (f === 41 || f === 46 || f === 47) {
|
|
880
880
|
let o = e.revision === 2 ? 1 : 2;
|
|
881
|
-
|
|
881
|
+
n2.check(t, o), t += o;
|
|
882
882
|
} else throw new ke("unsupported-feature", `Unsupported ssconvert feature: BIFF formula token 0x${m2.toString(16)}`);
|
|
883
883
|
}
|
|
884
|
-
return
|
|
884
|
+
return r.length !== 1 && n("formula stack did not resolve"), "=" + r[0].text;
|
|
885
885
|
}
|
|
886
|
-
function
|
|
887
|
-
let
|
|
886
|
+
function tn(s, e, n2) {
|
|
887
|
+
let r = "", t = 0;
|
|
888
888
|
if (s[0] === 1) for (let l = 1; l < s.length; l++) {
|
|
889
889
|
if (s[l] !== 5) continue;
|
|
890
890
|
let d = s[l + 1];
|
|
891
891
|
(d === void 0 || d > s.length - l - 2) && n("truncated external workbook URL");
|
|
892
892
|
let m2 = m(s.subarray(l + 2, l + 2 + d), e);
|
|
893
|
-
|
|
893
|
+
r += m(s.subarray(t, l), e) + "" + String.fromCharCode(m2.length) + m2, l += d + 1, t = l + 1;
|
|
894
894
|
}
|
|
895
|
-
|
|
896
|
-
let u =
|
|
895
|
+
r += m(s.subarray(t), e);
|
|
896
|
+
let u = Bt(n2(r));
|
|
897
897
|
if (u === void 0) return;
|
|
898
898
|
let i = u.indexOf("["), h2 = u.indexOf("]");
|
|
899
899
|
if (i < 0) return h2 < 0 ? { workbook: u } : void 0;
|
|
@@ -901,302 +901,302 @@ function en(s, e, r) {
|
|
|
901
901
|
let g = u.slice(0, i) + u.slice(i + 1, h2), a = u.slice(h2 + 1);
|
|
902
902
|
if (!(!a || Array.from(a).some((l) => l.charCodeAt(0) < 32))) return { workbook: g, sheet: a };
|
|
903
903
|
}
|
|
904
|
-
function
|
|
905
|
-
if (s.length > 254) throw new
|
|
906
|
-
if (!s || Array.from(s).some((
|
|
907
|
-
let
|
|
908
|
-
if (
|
|
909
|
-
return
|
|
904
|
+
function nn(s) {
|
|
905
|
+
if (s.length > 254) throw new vt("unsupported-feature", "Excel BIFF external workbook path is too long");
|
|
906
|
+
if (!s || Array.from(s).some((r) => r.charCodeAt(0) < 32)) throw new vt("unsupported-feature", "Excel BIFF external workbook path contains control characters");
|
|
907
|
+
let n2 = Array.from(s).some((r) => "/\\:[]".includes(r)) ? "" + String.fromCharCode(s.length) + s : "" + s;
|
|
908
|
+
if (n2.length > 255) throw new vt("unsupported-feature", "Excel BIFF external workbook path is too long");
|
|
909
|
+
return n2;
|
|
910
910
|
}
|
|
911
|
-
function
|
|
911
|
+
function Bt(s) {
|
|
912
912
|
if (!s || s === "\0" || s[0] === "" || s[0] === "") return;
|
|
913
|
-
if (s.length > 255 && n("external workbook path is too long"), s[0] !== "") return Array.from(s).some((
|
|
913
|
+
if (s.length > 255 && n("external workbook path is too long"), s[0] !== "") return Array.from(s).some((n2) => n2.charCodeAt(0) < 32) ? void 0 : s;
|
|
914
914
|
let e = "";
|
|
915
|
-
for (let
|
|
916
|
-
let
|
|
917
|
-
if (
|
|
918
|
-
let t = s[++
|
|
915
|
+
for (let n2 = 1; n2 < s.length; n2++) {
|
|
916
|
+
let r = s[n2];
|
|
917
|
+
if (r === "") {
|
|
918
|
+
let t = s[++n2];
|
|
919
919
|
if (t === void 0 && n("truncated external workbook drive"), t !== "@" && !(t >= "A" && t <= "Z" || t >= "a" && t <= "z")) return;
|
|
920
920
|
e += t === "@" ? "\\\\" : t + ":\\";
|
|
921
|
-
} else if (
|
|
922
|
-
else if (
|
|
923
|
-
else if (
|
|
924
|
-
let t = s.charCodeAt(++
|
|
925
|
-
(!Number.isFinite(t) || t > s.length -
|
|
921
|
+
} else if (r === "" || r === "") e += "\\";
|
|
922
|
+
else if (r === "") e += "..\\";
|
|
923
|
+
else if (r === "") {
|
|
924
|
+
let t = s.charCodeAt(++n2);
|
|
925
|
+
(!Number.isFinite(t) || t > s.length - n2 - 1) && n("truncated external workbook URL"), e += s.slice(n2 + 1, n2 + 1 + t), n2 += t;
|
|
926
926
|
} else {
|
|
927
|
-
if (
|
|
928
|
-
e +=
|
|
927
|
+
if (r.charCodeAt(0) < 32) return;
|
|
928
|
+
e += r;
|
|
929
929
|
}
|
|
930
930
|
}
|
|
931
931
|
return e || void 0;
|
|
932
932
|
}
|
|
933
|
-
function
|
|
934
|
-
let u = new w(s,
|
|
933
|
+
function rn(s, e, n2, r, t) {
|
|
934
|
+
let u = new w(s, r, n2), i = new Uint8Array(8), h2 = new DataView(i.buffer), g = new TextEncoder(), a = r.limits.workbookWork ?? r.limits.inputBytes * 8, l = r.limits.workbookTextBytes ?? r.limits.inputBytes, d = 0, m2 = 0;
|
|
935
935
|
return { readArray: () => {
|
|
936
|
-
|
|
937
|
-
let k = u.byte(),
|
|
938
|
-
if (d += A *
|
|
939
|
-
t?.(A *
|
|
940
|
-
let B = [],
|
|
941
|
-
if (m2 += g.encode(
|
|
942
|
-
B.push(
|
|
936
|
+
r.signal.throwIfAborted();
|
|
937
|
+
let k = u.byte(), N = u.word(), A = e >= 8 ? k + 1 : k || 256, S = e >= 8 ? N + 1 : N || 1;
|
|
938
|
+
if (d += A * S, d > a) throw new ft("resource-limit", "ssconvert BIFF array work limit exceeded");
|
|
939
|
+
t?.(A * S);
|
|
940
|
+
let B = [], F = (p) => {
|
|
941
|
+
if (m2 += g.encode(p).length, m2 > l) throw new ft("resource-limit", "ssconvert BIFF array text limit exceeded");
|
|
942
|
+
B.push(p);
|
|
943
943
|
};
|
|
944
|
-
|
|
945
|
-
for (let
|
|
946
|
-
|
|
944
|
+
F("{");
|
|
945
|
+
for (let p = 0; p < S; p++) {
|
|
946
|
+
p && F(";");
|
|
947
947
|
for (let D = 0; D < A; D++) {
|
|
948
|
-
|
|
948
|
+
r.signal.throwIfAborted(), D && F(",");
|
|
949
949
|
let x = u.byte();
|
|
950
950
|
if (x === 2) {
|
|
951
951
|
let b = e >= 8 ? u.word() : u.byte(), O = e >= 8 ? u.unicode(b).text : u.legacy(b);
|
|
952
|
-
|
|
952
|
+
F(_n(O, '"', Dn));
|
|
953
953
|
} else {
|
|
954
954
|
[0, 1, 4, 16].includes(x) || n("invalid array value type");
|
|
955
955
|
for (let b = 0; b < 8; b++) i[b] = u.byte();
|
|
956
956
|
if (x === 1) {
|
|
957
957
|
let b = h2.getFloat64(0, true);
|
|
958
|
-
Number.isFinite(b) || n("nonfinite array number"),
|
|
959
|
-
} else
|
|
958
|
+
Number.isFinite(b) || n("nonfinite array number"), F(String(b));
|
|
959
|
+
} else F(x === 0 ? "" : x === 4 ? i[0] ? "TRUE" : "FALSE" : Ce[i[0]] ?? '#"#UNKNOWN!"');
|
|
960
960
|
}
|
|
961
961
|
}
|
|
962
962
|
}
|
|
963
|
-
return
|
|
963
|
+
return F("}"), B.join("");
|
|
964
964
|
}, readMemory: () => {
|
|
965
|
-
|
|
966
|
-
let k = u.word(),
|
|
967
|
-
if (d += k *
|
|
968
|
-
t?.(k *
|
|
965
|
+
r.signal.throwIfAborted();
|
|
966
|
+
let k = u.word(), N = e >= 8 ? 8 : 6;
|
|
967
|
+
if (d += k * N, d > a) throw new ft("resource-limit", "ssconvert BIFF cached area work limit exceeded");
|
|
968
|
+
t?.(k * N);
|
|
969
969
|
for (let A = 0; A < k; A++) {
|
|
970
|
-
|
|
971
|
-
for (let
|
|
970
|
+
r.signal.throwIfAborted();
|
|
971
|
+
for (let S = 0; S < N; S++) u.byte();
|
|
972
972
|
}
|
|
973
973
|
}, readLabels: () => {
|
|
974
|
-
|
|
975
|
-
let k = u.word(),
|
|
974
|
+
r.signal.throwIfAborted();
|
|
975
|
+
let k = u.word(), N = u.word(), A = k + (N & 16383) * 65536;
|
|
976
976
|
A || n("empty multiple label references");
|
|
977
|
-
let
|
|
977
|
+
let S = [];
|
|
978
978
|
for (let B = 0; B < A; B++) {
|
|
979
|
-
if (
|
|
979
|
+
if (r.signal.throwIfAborted(), d += 4, d > a) throw new ft("resource-limit", "ssconvert BIFF label work limit exceeded");
|
|
980
980
|
t?.(4);
|
|
981
|
-
let
|
|
982
|
-
|
|
981
|
+
let F = u.word(), p = u.word() & 16383;
|
|
982
|
+
p > 255 && n("invalid multiple label column"), S.push({ row: F, column: p });
|
|
983
983
|
}
|
|
984
|
-
return { relative: !!(
|
|
984
|
+
return { relative: !!(N & 32768), cells: S };
|
|
985
985
|
} };
|
|
986
986
|
}
|
|
987
|
-
function
|
|
988
|
-
let
|
|
989
|
-
s.check(0, e === 2 && !
|
|
987
|
+
function sn(s, e, n2) {
|
|
988
|
+
let r = e === 2 ? n2 === 55 : !!(s.u16(6) & 8);
|
|
989
|
+
s.check(0, e === 2 && !r ? 12 : 16);
|
|
990
990
|
let t = e === 2 ? s.u8(7) : s.u16(6);
|
|
991
|
-
if (e === 2 ? !
|
|
991
|
+
if (e === 2 ? !r && t > 1 : e < 8 && t & -16) return;
|
|
992
992
|
let u = e === 2 ? !!t : !!(t & 4), i = (g, a) => {
|
|
993
993
|
let l = s.u16(g), d = s.u16(g + 2);
|
|
994
|
-
return a ? "#REF!" : ((d >= 256 || l >= (e === 8 ? 65536 : 16384)) && n("invalid data-table input cell"),
|
|
994
|
+
return a ? "#REF!" : ((d >= 256 || l >= (e === 8 ? 65536 : 16384)) && n("invalid data-table input cell"), Pn(l, d));
|
|
995
995
|
}, h2 = i(8, e >= 8 && !!(t & 16));
|
|
996
|
-
return `=TABLE(${
|
|
996
|
+
return `=TABLE(${r || u ? h2 : ""},${r ? i(12, e >= 8 && !!(t & 32)) : u ? "" : h2})`;
|
|
997
997
|
}
|
|
998
|
-
function
|
|
999
|
-
let u = { sheet: e, row: s.range.startRow, column: s.range.startColumn }, i =
|
|
998
|
+
function on(s, e, n2, r, t) {
|
|
999
|
+
let u = { sheet: e, row: s.range.startRow, column: s.range.startColumn }, i = Gn(s.expression, { maximumDepth: r.limits.formulaDepth, workbook: n2, position: u, signal: r.signal, maximumNodes: r.limits.workbookNodes ?? r.limits.cells, maximumLength: r.limits.workbookTextBytes ?? r.limits.outputBytes });
|
|
1000
1000
|
if (!i.ok) return;
|
|
1001
1001
|
let h2 = i.document.root;
|
|
1002
1002
|
for (; h2.kind === "parentheses"; ) h2 = h2.child;
|
|
1003
1003
|
if (h2.kind !== "call" || h2.name !== "TABLE") return;
|
|
1004
|
-
if (h2.args.length !== 2 || u.row < 1 || u.column < 1) throw new
|
|
1004
|
+
if (h2.args.length !== 2 || u.row < 1 || u.column < 1) throw new je("unsupported-feature", "Cannot export Excel data table without its border or two input slots");
|
|
1005
1005
|
let g = h2.args.map((m2) => {
|
|
1006
1006
|
let f = m2;
|
|
1007
1007
|
for (; f.kind === "parentheses"; ) f = f.child;
|
|
1008
1008
|
if (f.kind === "omitted" || f.kind === "literal" && f.value.kind === "blank") return;
|
|
1009
1009
|
if (f.kind === "literal" && f.value.kind === "error" && f.value.value === "#REF!") {
|
|
1010
|
-
if (t < 65536) throw new
|
|
1010
|
+
if (t < 65536) throw new je("unsupported-feature", "Cannot export deleted Excel data table input before BIFF8");
|
|
1011
1011
|
return { row: 65535, column: 65535, deleted: true };
|
|
1012
1012
|
}
|
|
1013
|
-
if (f.kind !== "reference" || f.label || f.last || !f.first.row || !f.first.column) throw new
|
|
1013
|
+
if (f.kind !== "reference" || f.label || f.last || !f.first.row || !f.first.column) throw new je("unsupported-feature", "Cannot export Excel data table input expression");
|
|
1014
1014
|
let o = f.first.row.value + (f.first.row.relative ? u.row : 0), E = f.first.column.value + (f.first.column.relative ? u.column : 0);
|
|
1015
|
-
if (o < 0 || o >= t || E < 0 || E >= 256) throw new
|
|
1015
|
+
if (o < 0 || o >= t || E < 0 || E >= 256) throw new je("unsupported-feature", "Cannot export Excel data table input outside version limits");
|
|
1016
1016
|
return { row: o, column: E };
|
|
1017
1017
|
});
|
|
1018
|
-
if (!g[0] && !g[1]) throw new
|
|
1019
|
-
if (
|
|
1018
|
+
if (!g[0] && !g[1]) throw new je("unsupported-feature", "Cannot export Excel data table without an input cell");
|
|
1019
|
+
if (r.limits.outputBytes < 16) throw new je("resource-limit", "ssconvert BIFF data-table bytes limit exceeded");
|
|
1020
1020
|
let a = new Uint8Array(16), l = new DataView(a.buffer);
|
|
1021
1021
|
l.setUint16(0, u.row, true), l.setUint16(2, Math.min(s.range.endRow, t - 1), true), a[4] = u.column, a[5] = Math.min(s.range.endColumn, 255);
|
|
1022
1022
|
let d = g[0] ?? g[1];
|
|
1023
1023
|
return l.setUint16(6, (g[0] && g[1] ? 12 : g[0] ? 4 : 0) | (d.deleted ? 16 : 0) | (g[0] && g[1]?.deleted ? 32 : 0), true), l.setUint16(8, d.row, true), l.setUint16(10, d.column, true), g[0] && g[1] && (l.setUint16(12, g[1].row, true), l.setUint16(14, g[1].column, true)), a;
|
|
1024
1024
|
}
|
|
1025
|
-
function on(s, e) {
|
|
1026
|
-
return e === "row" ? s.endColumn < ft.columns - 1 ? { ...s, startColumn: s.endColumn + 1, endColumn: ft.columns - 1 } : s.startColumn > 0 ? { ...s, startColumn: 0, endColumn: s.startColumn - 1 } : { ...s } : s.endRow < ft.rows - 1 ? { ...s, startRow: s.endRow + 1, endRow: ft.rows - 1 } : s.startRow > 0 ? { ...s, startRow: 0, endRow: s.startRow - 1 } : { ...s };
|
|
1027
|
-
}
|
|
1028
1025
|
function an(s, e) {
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1026
|
+
return e === "row" ? s.endColumn < lt.columns - 1 ? { ...s, startColumn: s.endColumn + 1, endColumn: lt.columns - 1 } : s.startColumn > 0 ? { ...s, startColumn: 0, endColumn: s.startColumn - 1 } : { ...s } : s.endRow < lt.rows - 1 ? { ...s, startRow: s.endRow + 1, endRow: lt.rows - 1 } : s.startRow > 0 ? { ...s, startRow: 0, endRow: s.startRow - 1 } : { ...s };
|
|
1027
|
+
}
|
|
1028
|
+
function fn(s, e) {
|
|
1029
|
+
let n2 = 0, r = 0, t = () => {
|
|
1030
|
+
for (; n2 < s.length && r === s[n2].bytes.length; ) n2++, r = 0;
|
|
1031
|
+
return n2 === s.length && n("truncated LABELRANGES"), s[n2].u8(r++);
|
|
1032
1032
|
}, u = () => t() | t() << 8, i = [];
|
|
1033
1033
|
for (let h2 of ["row", "column"]) {
|
|
1034
1034
|
let g = u();
|
|
1035
1035
|
for (let a = 0; a < g; a++) {
|
|
1036
1036
|
let l = { startRow: u(), endRow: u(), startColumn: u(), endColumn: u() };
|
|
1037
|
-
(l.startRow > l.endRow || l.startColumn > l.endColumn || l.endColumn >= 256) && n("invalid LABELRANGES rectangle"), e(1), i.push({ axis: h2, labels: l, data:
|
|
1037
|
+
(l.startRow > l.endRow || l.startColumn > l.endColumn || l.endColumn >= 256) && n("invalid LABELRANGES rectangle"), e(1), i.push({ axis: h2, labels: l, data: an(l, h2) });
|
|
1038
1038
|
}
|
|
1039
1039
|
}
|
|
1040
|
-
return s.some((h2, g) => g >
|
|
1040
|
+
return s.some((h2, g) => g > n2 ? h2.bytes.length !== 0 : g === n2 && r !== h2.bytes.length) && n("trailing LABELRANGES bytes"), i;
|
|
1041
1041
|
}
|
|
1042
|
-
function
|
|
1042
|
+
function ln(s, e, n2, r) {
|
|
1043
1043
|
let t = s.labelRanges ?? [];
|
|
1044
1044
|
if (!t.length) return;
|
|
1045
|
-
if (e !== 8) throw new
|
|
1045
|
+
if (e !== 8) throw new ze("unsupported-feature", "Excel BIFF7 cannot encode label ranges");
|
|
1046
1046
|
let u = [], i = [];
|
|
1047
1047
|
for (let m2 of t) {
|
|
1048
|
-
if (
|
|
1049
|
-
if (m2.dataSheet !== void 0 && m2.dataSheet !== s.id) throw new
|
|
1050
|
-
let f = m2.labels, o =
|
|
1051
|
-
for (let [k,
|
|
1052
|
-
if (f.startRow > f.endRow || f.startColumn > f.endColumn) throw new
|
|
1048
|
+
if (r(1), m2.axis !== "row" && m2.axis !== "column") throw new ze("invalid-request", "Invalid label range axis");
|
|
1049
|
+
if (m2.dataSheet !== void 0 && m2.dataSheet !== s.id) throw new ze("unsupported-feature", "Excel BIFF8 cannot preserve label data on another sheet");
|
|
1050
|
+
let f = m2.labels, o = an(f, m2.axis);
|
|
1051
|
+
for (let [k, N] of [["startRow", 65536], ["endRow", 65536], ["startColumn", 256], ["endColumn", 256]]) if (!Number.isSafeInteger(f[k]) || f[k] < 0 || f[k] >= N || m2.data[k] !== o[k]) throw new ze("unsupported-feature", "Excel BIFF8 cannot preserve these label/data ranges");
|
|
1052
|
+
if (f.startRow > f.endRow || f.startColumn > f.endColumn) throw new ze("invalid-request", "Reversed label range");
|
|
1053
1053
|
let E = m2.axis === "row" ? u : i;
|
|
1054
|
-
if (E.length >= 65535) throw new
|
|
1054
|
+
if (E.length >= 65535) throw new ze("unsupported-feature", "Excel BIFF8 label range count exceeds version limits");
|
|
1055
1055
|
E.push(f);
|
|
1056
1056
|
}
|
|
1057
|
-
let h2 = new Uint8Array(
|
|
1058
|
-
g + m2 > h2.length && (
|
|
1057
|
+
let h2 = new Uint8Array(n2.maximumRecord), g = 0, a = 351, l = (m2) => {
|
|
1058
|
+
g + m2 > h2.length && (n2.record(a, h2.subarray(0, g)), a = 60, h2 = new Uint8Array(n2.maximumRecord), g = 0);
|
|
1059
1059
|
}, d = (m2) => {
|
|
1060
1060
|
h2[g++] = m2 & 255, h2[g++] = m2 >> 8;
|
|
1061
1061
|
};
|
|
1062
1062
|
for (let m2 of [u, i]) {
|
|
1063
1063
|
l(2), d(m2.length);
|
|
1064
|
-
for (let f of m2)
|
|
1064
|
+
for (let f of m2) r(1), l(8), d(f.startRow), d(f.endRow), d(f.startColumn), d(f.endColumn);
|
|
1065
1065
|
}
|
|
1066
|
-
|
|
1066
|
+
n2.record(a, h2.subarray(0, g));
|
|
1067
1067
|
}
|
|
1068
|
-
var
|
|
1068
|
+
var ct = class {
|
|
1069
1069
|
context;
|
|
1070
1070
|
slots = /* @__PURE__ */ new Map();
|
|
1071
1071
|
scopes = /* @__PURE__ */ new Map();
|
|
1072
1072
|
definitions = /* @__PURE__ */ new Map();
|
|
1073
1073
|
work = 0;
|
|
1074
|
-
constructor(e,
|
|
1074
|
+
constructor(e, n2) {
|
|
1075
1075
|
this.context = e;
|
|
1076
|
-
for (let
|
|
1076
|
+
for (let r of n2) this.tick(), this.scopes.set(r.name, /* @__PURE__ */ new Map([["Sheet_Title", { name: "Sheet_Title", dependencies: [], permanent: true, defaultExpression: "=" + Wn(r.name, '"', Xn) }], ["Print_Area", { name: "Print_Area", dependencies: [], permanent: true, defaultExpression: "=#REF!" }]]));
|
|
1077
1077
|
}
|
|
1078
1078
|
tick() {
|
|
1079
|
-
if (this.context.signal.throwIfAborted(), ++this.work > (this.context.limits.workbookWork ?? this.context.limits.inputBytes * 8)) throw new
|
|
1079
|
+
if (this.context.signal.throwIfAborted(), ++this.work > (this.context.limits.workbookWork ?? this.context.limits.inputBytes * 8)) throw new Hn("resource-limit", "ssconvert BIFF name binding work limit exceeded");
|
|
1080
1080
|
}
|
|
1081
|
-
reference(e,
|
|
1081
|
+
reference(e, n2) {
|
|
1082
1082
|
this.tick();
|
|
1083
|
-
let
|
|
1084
|
-
if (
|
|
1085
|
-
if (
|
|
1083
|
+
let r = this.slots.get(e);
|
|
1084
|
+
if (r) return r;
|
|
1085
|
+
if (n2) return "#REF!";
|
|
1086
1086
|
if (e < 1 || e >= 256) return "#NAME?";
|
|
1087
1087
|
let t = { name: `FwdDecl${e}`, dependencies: [] };
|
|
1088
1088
|
return this.slots.set(e, t), t;
|
|
1089
1089
|
}
|
|
1090
|
-
resolve = (e,
|
|
1091
|
-
let
|
|
1092
|
-
return typeof
|
|
1090
|
+
resolve = (e, n2) => {
|
|
1091
|
+
let r = this.reference(e, n2);
|
|
1092
|
+
return typeof r == "string" ? { value: r, functionName: void 0 } : { value: r.index ?? "#REF!", functionName: r.name };
|
|
1093
1093
|
};
|
|
1094
|
-
define(e,
|
|
1094
|
+
define(e, n2, r, t) {
|
|
1095
1095
|
this.tick();
|
|
1096
|
-
let u = this.slots.get(e), i = [], h2 = t((
|
|
1097
|
-
let
|
|
1098
|
-
return i.push({ target:
|
|
1099
|
-
}), g = i.map((
|
|
1096
|
+
let u = this.slots.get(e), i = [], h2 = t((N, A) => {
|
|
1097
|
+
let S = this.reference(N, A), B = typeof S == "string" ? void 0 : S.name;
|
|
1098
|
+
return i.push({ target: S, functionName: B }), { value: typeof S == "string" ? S : N, functionName: B };
|
|
1099
|
+
}), g = i.map((N) => N.target), a = [...g], l = /* @__PURE__ */ new Set();
|
|
1100
1100
|
for (; a.length; ) {
|
|
1101
1101
|
this.tick();
|
|
1102
|
-
let
|
|
1103
|
-
if (!(typeof
|
|
1104
|
-
if (
|
|
1102
|
+
let N = a.pop();
|
|
1103
|
+
if (!(typeof N == "string" || l.has(N))) {
|
|
1104
|
+
if (N.name === n2 || u !== void 0 && N.name === u.name) {
|
|
1105
1105
|
this.slots.delete(e);
|
|
1106
1106
|
return;
|
|
1107
1107
|
}
|
|
1108
|
-
l.add(
|
|
1109
|
-
for (let A of
|
|
1108
|
+
l.add(N);
|
|
1109
|
+
for (let A of N.dependencies) this.tick(), a.push(A);
|
|
1110
1110
|
}
|
|
1111
1111
|
}
|
|
1112
|
-
let d = this.scopes.get(
|
|
1112
|
+
let d = this.scopes.get(r) ?? /* @__PURE__ */ new Map(), m2 = d.get(n2);
|
|
1113
1113
|
if (m2 && !m2.placeholder && !m2.permanent) {
|
|
1114
1114
|
this.slots.delete(e);
|
|
1115
1115
|
return;
|
|
1116
1116
|
}
|
|
1117
|
-
let f =
|
|
1117
|
+
let f = Vn(h2, { maximumDepth: this.context.limits.formulaDepth, position: { sheet: "", row: 0, column: 0 }, signal: this.context.signal, maximumLength: this.context.limits.inputBytes, ...this.context.limits.workbookNodes === void 0 ? {} : { maximumNodes: this.context.limits.workbookNodes } }), o = f.ok ? f.document.root : void 0;
|
|
1118
1118
|
for (; o?.kind === "parentheses"; ) this.tick(), o = o.child;
|
|
1119
|
-
let E = o?.kind === "literal" && o.value.kind === "error" && o.value.value === "#NAME?", k = m2 ?? u ?? { name:
|
|
1120
|
-
k.index !== void 0 && this.definitions.delete(k.index), k.name =
|
|
1119
|
+
let E = o?.kind === "literal" && o.value.kind === "error" && o.value.value === "#NAME?", k = m2 ?? u ?? { name: n2, dependencies: [] };
|
|
1120
|
+
k.index !== void 0 && this.definitions.delete(k.index), k.name = n2, k.index = e, k.dependencies = g, k.placeholder = E, delete k.defaultExpression, this.slots.set(e, k), d.set(n2, k), this.scopes.set(r, d), this.definitions.set(e, { translate: t, references: i, placeholder: E });
|
|
1121
1121
|
}
|
|
1122
1122
|
finish() {
|
|
1123
|
-
for (let [
|
|
1123
|
+
for (let [n2, r] of Array.from(this.definitions).reverse()) this.tick(), r.placeholder && (delete this.slots.get(n2).index, this.definitions.delete(n2));
|
|
1124
1124
|
let e = [];
|
|
1125
|
-
for (let [
|
|
1125
|
+
for (let [n2, r] of this.scopes) for (let t of r.values()) this.tick(), t.defaultExpression !== void 0 && e.push({ name: t.name, expression: t.defaultExpression, ...n2 === void 0 ? {} : { sheet: n2 } });
|
|
1126
1126
|
return { indices: Array.from(this.definitions.keys()), defaults: e };
|
|
1127
1127
|
}
|
|
1128
1128
|
expression(e) {
|
|
1129
1129
|
this.tick();
|
|
1130
|
-
let
|
|
1131
|
-
return
|
|
1130
|
+
let n2 = this.definitions.get(e), r = 0;
|
|
1131
|
+
return n2.translate(() => {
|
|
1132
1132
|
this.tick();
|
|
1133
|
-
let { target: t, functionName: u } =
|
|
1133
|
+
let { target: t, functionName: u } = n2.references[r++];
|
|
1134
1134
|
return { value: typeof t == "string" ? t : t.index ?? "#REF!", functionName: u };
|
|
1135
1135
|
});
|
|
1136
1136
|
}
|
|
1137
1137
|
};
|
|
1138
|
-
function fe(s, e,
|
|
1139
|
-
return { name: s, namespace: "http://www.gnumeric.org/v10.dtd", attributes: Object.entries(e).map(([t, u]) => ({ name: t, namespace: "", value: String(u) })), text:
|
|
1138
|
+
function fe(s, e, n2 = "", r = []) {
|
|
1139
|
+
return { name: s, namespace: "http://www.gnumeric.org/v10.dtd", attributes: Object.entries(e).map(([t, u]) => ({ name: t, namespace: "", value: String(u) })), text: n2, children: r };
|
|
1140
1140
|
}
|
|
1141
|
-
var
|
|
1142
|
-
function
|
|
1143
|
-
let e = { Left: "", Middle: "", Right: "" },
|
|
1141
|
+
var dn = /* @__PURE__ */ new Set([42, 43, 37, 549, 129, 131, 132, 161, 85, 574, 62, 29, 26, 27, 65, 160, 2151, 28, 438]);
|
|
1142
|
+
function un(s) {
|
|
1143
|
+
let e = { Left: "", Middle: "", Right: "" }, n2 = { P: "&[PAGE]", N: "&[PAGES]", D: "&[DATE]", T: "&[TIME]", F: "&[FILE]", A: "&[TAB]", Z: "&[PATH]" }, r = "Middle";
|
|
1144
1144
|
for (let t = 0; t < s.length; t++) {
|
|
1145
1145
|
let u = s[t];
|
|
1146
1146
|
if (u !== "&" || t + 1 >= s.length) {
|
|
1147
|
-
e[
|
|
1147
|
+
e[r] += u;
|
|
1148
1148
|
continue;
|
|
1149
1149
|
}
|
|
1150
1150
|
let i = s[++t];
|
|
1151
|
-
["L", "C", "R"].includes(i) ?
|
|
1151
|
+
["L", "C", "R"].includes(i) ? r = i === "L" ? "Left" : i === "R" ? "Right" : "Middle" : e[r] += n2[i] ?? (i === "&" ? "&" : "&" + i);
|
|
1152
1152
|
}
|
|
1153
1153
|
return e;
|
|
1154
1154
|
}
|
|
1155
|
-
function
|
|
1156
|
-
let t = { vcenter: 0, hcenter: 0, grid: 0, titles: 0, monochrome: 0, draft: 0 }, u = { top: 120, bottom: 120, left: 72, right: 72, header: 72, footer: 72 }, i = { type: "percentage", percentage: 100 }, h2 = "portrait", g = "iso_a4", a = "d_then_r", l = false, d = 1, m2 = 1, f = "&A", o = "Page &P", E = "GNM_PRINT_COMMENTS_NONE", k = "GNM_PRINT_ERRORS_AS_DISPLAYED",
|
|
1157
|
-
if (O += new TextEncoder().encode(
|
|
1155
|
+
function mn(s, e, n2, r) {
|
|
1156
|
+
let t = { vcenter: 0, hcenter: 0, grid: 0, titles: 0, monochrome: 0, draft: 0 }, u = { top: 120, bottom: 120, left: 72, right: 72, header: 72, footer: 72 }, i = { type: "percentage", percentage: 100 }, h2 = "portrait", g = "iso_a4", a = "d_then_r", l = false, d = 1, m2 = 1, f = "&A", o = "Page &P", E = "GNM_PRINT_COMMENTS_NONE", k = "GNM_PRINT_ERRORS_AS_DISPLAYED", N = [], A = [], S = {}, B = false, F = false, p, D, x = /* @__PURE__ */ new Map(), b, O = 0, C2 = (R2) => {
|
|
1157
|
+
if (O += new TextEncoder().encode(R2).length, O > (r.limits.workbookTextBytes ?? r.limits.inputBytes)) throw new cn("resource-limit", "ssconvert BIFF metadata text limit exceeded");
|
|
1158
1158
|
};
|
|
1159
|
-
for (let
|
|
1160
|
-
|
|
1161
|
-
let M = s[
|
|
1162
|
-
if (
|
|
1159
|
+
for (let R2 = 0; R2 < s.length; R2++) {
|
|
1160
|
+
r.signal.throwIfAborted();
|
|
1161
|
+
let M = s[R2], _ = M.data, w2 = M.opcode;
|
|
1162
|
+
if (w2 === 93) {
|
|
1163
1163
|
b = void 0;
|
|
1164
1164
|
for (let c = 0; c + 4 <= _.bytes.length; ) {
|
|
1165
1165
|
let I = _.u16(c), L2 = _.u16(c + 2);
|
|
1166
1166
|
if (_.check(c + 4, L2), I === 21 && L2 >= 6 && (b = _.u16(c + 6)), c += 4 + L2, !I) break;
|
|
1167
1167
|
}
|
|
1168
|
-
} else if (
|
|
1168
|
+
} else if (w2 === 438 && b !== void 0) {
|
|
1169
1169
|
let c = _.u16(10), I = [];
|
|
1170
|
-
for (; s[
|
|
1171
|
-
c && x.set(b, new w(I,
|
|
1172
|
-
} else if (
|
|
1170
|
+
for (; s[R2 + 1]?.opcode === 60; ) I.push(s[++R2].data);
|
|
1171
|
+
c && x.set(b, new w(I, r, n2).unicode(c).text);
|
|
1172
|
+
} else if (w2 === 28) {
|
|
1173
1173
|
let c = _.u16(0), I = _.u16(2);
|
|
1174
1174
|
I > 255 && n("invalid comment position");
|
|
1175
1175
|
let L2 = "", X2 = "";
|
|
1176
1176
|
if (e >= 8) {
|
|
1177
1177
|
let z = _.u16(6), W = _.u16(8);
|
|
1178
|
-
X2 = W ? new w([new h(_.slice(10, _.bytes.length - 10))],
|
|
1178
|
+
X2 = W ? new w([new h(_.slice(10, _.bytes.length - 10))], r, n2).unicode(W).text : "", L2 = x.get(z) ?? "";
|
|
1179
1179
|
} else {
|
|
1180
1180
|
let z = _.u16(4), W = _;
|
|
1181
|
-
if (z > (
|
|
1181
|
+
if (z > (r.limits.workbookTextBytes ?? r.limits.inputBytes)) throw new cn("resource-limit", "ssconvert BIFF metadata text limit exceeded");
|
|
1182
1182
|
for (; z; ) {
|
|
1183
|
-
|
|
1183
|
+
r.signal.throwIfAborted();
|
|
1184
1184
|
let q = Math.min(2048, z);
|
|
1185
|
-
if (L2 += m(W.slice(6, q),
|
|
1186
|
-
let Q2 = s[++
|
|
1185
|
+
if (L2 += m(W.slice(6, q), n2), z -= q, !z) break;
|
|
1186
|
+
let Q2 = s[++R2];
|
|
1187
1187
|
(!Q2 || Q2.opcode !== 28 || Q2.data.u16(0) !== 65535 || Q2.data.u16(2) !== 0) && n("missing NOTE continuation"), W = Q2.data;
|
|
1188
1188
|
}
|
|
1189
1189
|
}
|
|
1190
|
-
C2(L2), C2(X2),
|
|
1191
|
-
} else if (
|
|
1190
|
+
C2(L2), C2(X2), N.push(fe("CellComment", { ObjectBound: ut(c, I), ObjectOffset: "1 0 1 0", Direction: 17, Print: 1, Author: X2, Text: L2 }));
|
|
1191
|
+
} else if (w2 >= 38 && w2 <= 41) {
|
|
1192
1192
|
let c = _.f64(0) * 72;
|
|
1193
|
-
Number.isFinite(c) || n("invalid print margin"), u[["left", "right", "top", "bottom"][
|
|
1194
|
-
} else if (
|
|
1193
|
+
Number.isFinite(c) || n("invalid print margin"), u[["left", "right", "top", "bottom"][w2 - 38]] = c, F = true;
|
|
1194
|
+
} else if (w2 === 20 || w2 === 21) {
|
|
1195
1195
|
if (!_.bytes.length) continue;
|
|
1196
|
-
let c = e >= 8 ? 2 : 1, I = e >= 8 ? _.u16(0) : _.u8(0), L2 = new w([new h(_.slice(c, _.bytes.length - c))],
|
|
1197
|
-
C2(X2),
|
|
1198
|
-
} else if (
|
|
1199
|
-
else if (
|
|
1196
|
+
let c = e >= 8 ? 2 : 1, I = e >= 8 ? _.u16(0) : _.u8(0), L2 = new w([new h(_.slice(c, _.bytes.length - c))], r, n2), X2 = I ? e >= 8 ? L2.unicode(I).text : L2.legacy(I) : "";
|
|
1197
|
+
C2(X2), w2 === 20 ? f = X2 : o = X2, F = true;
|
|
1198
|
+
} else if (w2 === 42 || w2 === 43 || w2 === 131 || w2 === 132) t[w2 === 42 ? "titles" : w2 === 43 ? "grid" : w2 === 131 ? "hcenter" : "vcenter"] = _.u16(0) ? 1 : 0, F = true;
|
|
1199
|
+
else if (w2 === 161) {
|
|
1200
1200
|
_.check(0, e > 4 ? 34 : 12);
|
|
1201
1201
|
let c = _.u16(10);
|
|
1202
1202
|
if (d = _.u16(6), m2 = _.u16(8), t.monochrome = c & 8 ? 1 : 0, t.draft = c & 16 ? 1 : 0, h2 = c & 2 ? "portrait" : "landscape", a = c & 1 ? "r_then_d" : "d_then_r", E = c & 32 ? e >= 8 && c & 512 ? "GNM_PRINT_COMMENTS_AT_END" : "GNM_PRINT_COMMENTS_IN_PLACE" : "GNM_PRINT_COMMENTS_NONE", k = ["GNM_PRINT_ERRORS_AS_DISPLAYED", "GNM_PRINT_ERRORS_AS_BLANK", "GNM_PRINT_ERRORS_AS_DASHES", "GNM_PRINT_ERRORS_AS_NA"][e >= 8 ? c >> 10 & 3 : 0], !(c & 4)) {
|
|
@@ -1204,51 +1204,51 @@ function dn(s, e, r, n2) {
|
|
|
1204
1204
|
let I = _.u16(2);
|
|
1205
1205
|
i = { type: "percentage", percentage: I >= 1 && I <= 1e3 ? I : 100 };
|
|
1206
1206
|
}
|
|
1207
|
-
e > 4 && (u.header = _.f64(16) * 72, u.footer = _.f64(24) * 72, (!Number.isFinite(u.header) || !Number.isFinite(u.footer)) && n("invalid print margin")),
|
|
1208
|
-
} else if (
|
|
1207
|
+
e > 4 && (u.header = _.f64(16) * 72, u.footer = _.f64(24) * 72, (!Number.isFinite(u.header) || !Number.isFinite(u.footer)) && n("invalid print margin")), F = true;
|
|
1208
|
+
} else if (w2 === 129) {
|
|
1209
1209
|
let c = _.u16(0);
|
|
1210
|
-
|
|
1211
|
-
} else if (
|
|
1210
|
+
S.gnumeric = { ...S.gnumeric, OutlineSymbolsBelow: c & 64 ? "1" : "0", OutlineSymbolsRight: c & 128 ? "1" : "0" }, l = !!(c & 256);
|
|
1211
|
+
} else if (w2 === 574) {
|
|
1212
1212
|
let c = _.u16(0);
|
|
1213
|
-
B = !!(c &
|
|
1214
|
-
} else if (
|
|
1215
|
-
else if (
|
|
1213
|
+
B = !!(c & 1024), p = { row: _.u16(2), column: _.u16(4), frozen: !!(c & 8) }, (p.column > 255 || p.row >= (e >= 8 ? 65536 : 16384)) && n("invalid sheet layout position"), S.gnumeric = { ...S.gnumeric, DisplayFormulas: c & 1 ? "1" : "0", HideGrid: c & 2 ? "0" : "1", HideColHeader: c & 4 ? "0" : "1", HideRowHeader: c & 4 ? "0" : "1", HideZero: c & 16 ? "0" : "1", RTL_Layout: c & 64 ? "1" : "0", DisplayOutlines: c & 128 ? "1" : "0" }, e >= 8 && _.bytes.length >= 14 && (S.zoom = _.u16(12) ? _.u16(12) / 100 : 1);
|
|
1214
|
+
} else if (w2 === 65) _.check(0, e >= 5 ? 10 : 9), D = { x: _.u16(0), y: _.u16(2), row: _.u16(4), column: _.u16(6) };
|
|
1215
|
+
else if (w2 === 160) {
|
|
1216
1216
|
let c = _.u16(2);
|
|
1217
|
-
c || n("invalid sheet zoom"),
|
|
1218
|
-
} else if (
|
|
1217
|
+
c || n("invalid sheet zoom"), S.zoom = _.u16(0) / c;
|
|
1218
|
+
} else if (w2 === 26 || w2 === 27) {
|
|
1219
1219
|
let c = _.u16(0), I = e >= 8 ? 6 : 2;
|
|
1220
|
-
_.check(2, c * I), A.push(fe(
|
|
1220
|
+
_.check(2, c * I), A.push(fe(w2 === 27 ? "hPageBreaks" : "vPageBreaks", { count: c }, "", Array.from({ length: c }, (L2, X2) => fe("break", { pos: _.u16(2 + X2 * I), type: "manual" })))), F = true;
|
|
1221
1221
|
}
|
|
1222
1222
|
}
|
|
1223
1223
|
let v = [];
|
|
1224
|
-
if (
|
|
1225
|
-
let
|
|
1226
|
-
|
|
1224
|
+
if (p) {
|
|
1225
|
+
let R2 = p.frozen && D && (D.x || D.y) ? D : void 0;
|
|
1226
|
+
R2 && (R2.column > 255 || p.column + R2.x > 255 || R2.row >= (e >= 8 ? 65536 : 16384) || p.row + R2.y >= (e >= 8 ? 65536 : 16384)) && n("invalid frozen sheet layout"), v.push({ source: "Gnumeric_XmlIO:sax", kind: "SheetLayout", disposition: "retained", data: fe("SheetLayout", { TopLeft: ut(R2?.y ? R2.row : p.row, R2?.x ? R2.column : p.column) }, "", R2 ? [fe("FreezePanes", { FrozenTopLeft: ut(R2.y ? p.row : 0, R2.x ? p.column : 0), UnfrozenTopLeft: ut(R2.y ? p.row + R2.y : 0, R2.x ? p.column + R2.x : 0) })] : []) });
|
|
1227
1227
|
}
|
|
1228
|
-
return
|
|
1228
|
+
return F && v.push({ source: "Gnumeric_XmlIO:sax", kind: "PrintInformation", disposition: "retained", data: fe("PrintInformation", {}, "", [fe("Margins", {}, "", Object.entries(u).map(([R2, M]) => fe(R2, { Points: M, PrefUnit: "mm" }))), fe("Scale", l ? { type: "fit", cols: d, rows: m2 } : i), ...Object.entries(t).map(([R2, M]) => fe(R2, { value: M })), fe("order", {}, a), fe("orientation", {}, h2), fe("Header", un(f)), fe("Footer", un(o)), fe("paper", {}, g), fe("comments", { placement: E }), fe("errors", { PrintErrorsAs: k }), ...A]) }), N.length && v.push({ source: "Gnumeric_XmlIO:sax", kind: "Objects", disposition: "retained", data: fe("Objects", {}, "", N) }), { records: v, view: S, active: B };
|
|
1229
1229
|
}
|
|
1230
|
-
var
|
|
1230
|
+
var dt = class {
|
|
1231
1231
|
context;
|
|
1232
1232
|
maximumRecord;
|
|
1233
1233
|
parts = [];
|
|
1234
1234
|
length = 0;
|
|
1235
|
-
constructor(e,
|
|
1236
|
-
this.context = e, this.maximumRecord =
|
|
1235
|
+
constructor(e, n2) {
|
|
1236
|
+
this.context = e, this.maximumRecord = n2;
|
|
1237
1237
|
}
|
|
1238
|
-
record(e,
|
|
1239
|
-
if (this.context.signal.throwIfAborted(),
|
|
1240
|
-
if (
|
|
1241
|
-
if (this.parts.length >= (this.context.limits.workbookNodes ?? this.context.limits.outputBytes / 4)) throw new
|
|
1242
|
-
let
|
|
1243
|
-
return u.setUint16(0, e, true), u.setUint16(2,
|
|
1238
|
+
record(e, n2 = new Uint8Array()) {
|
|
1239
|
+
if (this.context.signal.throwIfAborted(), n2.length > this.maximumRecord) throw new Ue("unsupported-feature", "Excel BIFF record is too large");
|
|
1240
|
+
if (n2.length + 4 > this.context.limits.outputBytes - this.length) throw new Ue("resource-limit", "ssconvert BIFF output bytes limit exceeded");
|
|
1241
|
+
if (this.parts.length >= (this.context.limits.workbookNodes ?? this.context.limits.outputBytes / 4)) throw new Ue("resource-limit", "ssconvert BIFF record limit exceeded");
|
|
1242
|
+
let r = this.length, t = new Uint8Array(n2.length + 4), u = new DataView(t.buffer);
|
|
1243
|
+
return u.setUint16(0, e, true), u.setUint16(2, n2.length, true), t.set(n2, 4), this.parts.push(t), this.length += t.length, r;
|
|
1244
1244
|
}
|
|
1245
|
-
continuedRecord(e,
|
|
1245
|
+
continuedRecord(e, n2, r, t = []) {
|
|
1246
1246
|
let u = this.length, i = 0, h2 = 0, g = 0;
|
|
1247
1247
|
do {
|
|
1248
1248
|
for (; t[g] && t[g].end <= i; ) g++;
|
|
1249
|
-
let l = t[g] && t[g].start < i ? 1 : 0, d = Math.min(
|
|
1250
|
-
if (
|
|
1251
|
-
for (m2 = i; h2 <
|
|
1249
|
+
let l = t[g] && t[g].start < i ? 1 : 0, d = Math.min(n2.length, i + this.maximumRecord - l), m2 = d;
|
|
1250
|
+
if (r && d < n2.length) {
|
|
1251
|
+
for (m2 = i; h2 < r.length && r[h2] <= d; ) m2 = r[h2++];
|
|
1252
1252
|
let o = g;
|
|
1253
1253
|
for (; t[o] && t[o].end <= d; ) o++;
|
|
1254
1254
|
let E = t[o];
|
|
@@ -1256,92 +1256,92 @@ var ut = class {
|
|
|
1256
1256
|
let k = d - (d - E.start) % 2;
|
|
1257
1257
|
k > E.start && (m2 = Math.max(m2, k));
|
|
1258
1258
|
}
|
|
1259
|
-
if (m2 <= i) throw new
|
|
1259
|
+
if (m2 <= i) throw new Ue("unsupported-feature", "Excel BIFF formula token is too large");
|
|
1260
1260
|
}
|
|
1261
|
-
let f =
|
|
1261
|
+
let f = n2.subarray(i, m2);
|
|
1262
1262
|
if (l) {
|
|
1263
1263
|
let o = new Uint8Array(f.length + 1);
|
|
1264
1264
|
o[0] = 1, o.set(f, 1), f = o;
|
|
1265
1265
|
}
|
|
1266
1266
|
this.record(i === 0 ? e : 60, f), i = m2;
|
|
1267
|
-
} while (i <
|
|
1267
|
+
} while (i < n2.length);
|
|
1268
1268
|
return u;
|
|
1269
1269
|
}
|
|
1270
1270
|
finish() {
|
|
1271
1271
|
this.context.signal.throwIfAborted();
|
|
1272
|
-
let e = new Uint8Array(this.length),
|
|
1273
|
-
for (let
|
|
1272
|
+
let e = new Uint8Array(this.length), n2 = 0;
|
|
1273
|
+
for (let r of this.parts) e.set(r, n2), n2 += r.length;
|
|
1274
1274
|
return e;
|
|
1275
1275
|
}
|
|
1276
1276
|
};
|
|
1277
1277
|
function K2(...s) {
|
|
1278
|
-
let e = new Uint8Array(s.length * 2),
|
|
1279
|
-
return s.forEach((
|
|
1278
|
+
let e = new Uint8Array(s.length * 2), n2 = new DataView(e.buffer);
|
|
1279
|
+
return s.forEach((r, t) => n2.setUint16(t * 2, r, true)), e;
|
|
1280
1280
|
}
|
|
1281
|
-
function
|
|
1282
|
-
if (e.signal.throwIfAborted(), s.size + 1 > (e.limits.workbookNodes ?? 1 / 0)) throw new
|
|
1283
|
-
if ((s.size + 1) * 128 > e.limits.outputBytes) throw new
|
|
1284
|
-
let
|
|
1285
|
-
if (e.signal.throwIfAborted(), ++
|
|
1286
|
-
}, t = [...s].sort(([c], [I]) => (
|
|
1281
|
+
function hn(s, e) {
|
|
1282
|
+
if (e.signal.throwIfAborted(), s.size + 1 > (e.limits.workbookNodes ?? 1 / 0)) throw new Ue("resource-limit", "ssconvert CFB directory node limit exceeded");
|
|
1283
|
+
if ((s.size + 1) * 128 > e.limits.outputBytes) throw new Ue("resource-limit", "ssconvert CFB output bytes limit exceeded");
|
|
1284
|
+
let n2 = 0, r = () => {
|
|
1285
|
+
if (e.signal.throwIfAborted(), ++n2 > (e.limits.workbookWork ?? 1 / 0)) throw new Ue("resource-limit", "ssconvert CFB directory work limit exceeded");
|
|
1286
|
+
}, t = [...s].sort(([c], [I]) => (r(), c.length - I.length || (c.toUpperCase() < I.toUpperCase() ? -1 : 1))), u = t.map(([, c]) => c.length >= 4096 ? Math.ceil(c.length / 512) : 0), i = t.map(([, c]) => c.length < 4096 ? Math.ceil(c.length / 64) : 0), h2 = i.reduce((c, I) => c + I, 0), g = h2 * 64, a = Math.ceil(g / 512), l = Math.ceil(h2 / 128), d = u.reduce((c, I) => c + I, 0), m2 = d + a, f = m2 + l, o = Math.ceil((t.length + 1) / 4), E = 0, k = 0;
|
|
1287
1287
|
for (; ; ) {
|
|
1288
1288
|
let c = Math.ceil((f + o + E + k) / 128), I = Math.ceil(Math.max(0, c - 109) / 127);
|
|
1289
1289
|
if (c === E && I === k) break;
|
|
1290
1290
|
E = c, k = I;
|
|
1291
1291
|
}
|
|
1292
|
-
let
|
|
1293
|
-
if (A > e.limits.outputBytes) throw new
|
|
1294
|
-
let
|
|
1295
|
-
|
|
1296
|
-
for (let c = 0; c < 109; c++)
|
|
1292
|
+
let N = f + o + E + k, A = (N + 1) * 512;
|
|
1293
|
+
if (A > e.limits.outputBytes) throw new Ue("resource-limit", "ssconvert CFB output bytes limit exceeded");
|
|
1294
|
+
let S = new Uint8Array(A), B = new DataView(S.buffer), F = (c, I) => B.setUint16(c, I, true), p = (c, I) => B.setUint32(c, I, true), D = (c) => (c + 1) * 512, x = f, b = x + o, O = b + E;
|
|
1295
|
+
S.set([208, 207, 17, 224, 161, 177, 26, 225]), F(24, 62), F(26, 3), F(28, 65534), F(30, 9), F(32, 6), p(44, E), p(48, x), p(56, 4096), p(60, l ? m2 : 4294967294), p(64, l), p(68, k ? O : 4294967294), p(72, k);
|
|
1296
|
+
for (let c = 0; c < 109; c++) p(76 + c * 4, c < E ? b + c : 4294967295);
|
|
1297
1297
|
for (let c = 0; c < k; c++) {
|
|
1298
1298
|
e.signal.throwIfAborted();
|
|
1299
1299
|
for (let I = 0; I < 127; I++) {
|
|
1300
1300
|
let L2 = 109 + c * 127 + I;
|
|
1301
|
-
|
|
1301
|
+
p(D(O + c) + I * 4, L2 < E ? b + L2 : 4294967295);
|
|
1302
1302
|
}
|
|
1303
|
-
|
|
1303
|
+
p(D(O + c) + 508, c + 1 < k ? O + c + 1 : 4294967294);
|
|
1304
1304
|
}
|
|
1305
|
-
for (let c = 0; c < E * 128; c++)
|
|
1306
|
-
let C2 = (c, I) =>
|
|
1307
|
-
for (let c = 0; c < l * 128; c++)
|
|
1305
|
+
for (let c = 0; c < E * 128; c++) p(D(b) + c * 4, 4294967295);
|
|
1306
|
+
let C2 = (c, I) => p(D(b) + c * 4, I);
|
|
1307
|
+
for (let c = 0; c < l * 128; c++) p(D(m2) + c * 4, 4294967295);
|
|
1308
1308
|
let v = (c, I, L2, X2, z) => {
|
|
1309
|
-
|
|
1309
|
+
r();
|
|
1310
1310
|
let W = D(x) + c * 128;
|
|
1311
|
-
for (let q = 0; q < I.length; q++)
|
|
1312
|
-
|
|
1311
|
+
for (let q = 0; q < I.length; q++) F(W + q * 2, I.charCodeAt(q));
|
|
1312
|
+
F(W + 64, (I.length + 1) * 2), S[W + 66] = L2, S[W + 67] = 1, p(W + 68, 4294967295), p(W + 72, 4294967295), p(W + 76, 4294967295), p(W + 116, X2), p(W + 120, z);
|
|
1313
1313
|
};
|
|
1314
1314
|
v(0, "Root Entry", 5, g ? d : 4294967294, g);
|
|
1315
|
-
let
|
|
1315
|
+
let R2 = 0, M = 0;
|
|
1316
1316
|
t.forEach(([c, I], L2) => {
|
|
1317
1317
|
e.signal.throwIfAborted();
|
|
1318
|
-
let X2 = I.length < 4096, z = X2 ? i[L2] : u[L2], W = X2 ? M :
|
|
1319
|
-
I.length &&
|
|
1318
|
+
let X2 = I.length < 4096, z = X2 ? i[L2] : u[L2], W = X2 ? M : R2;
|
|
1319
|
+
I.length && S.set(I, X2 ? D(d) + M * 64 : D(R2)), v(L2 + 1, c, 2, z ? W : 4294967294, I.length);
|
|
1320
1320
|
for (let q = W; q < W + z; q++) {
|
|
1321
1321
|
(q & 1023) === 0 && e.signal.throwIfAborted();
|
|
1322
1322
|
let Q2 = q + 1 < W + z ? q + 1 : 4294967294;
|
|
1323
|
-
X2 ?
|
|
1323
|
+
X2 ? p(D(m2) + q * 4, Q2) : C2(q, Q2);
|
|
1324
1324
|
}
|
|
1325
|
-
X2 ? M += z :
|
|
1325
|
+
X2 ? M += z : R2 += z;
|
|
1326
1326
|
});
|
|
1327
|
-
let _ = Math.floor(Math.log2(t.length + 1)),
|
|
1327
|
+
let _ = Math.floor(Math.log2(t.length + 1)), w2 = (c, I, L2) => {
|
|
1328
1328
|
if (c > I) return 4294967295;
|
|
1329
|
-
|
|
1329
|
+
r();
|
|
1330
1330
|
let X2 = Math.floor((c + I) / 2), z = D(x) + X2 * 128;
|
|
1331
|
-
return
|
|
1331
|
+
return S[z + 67] = L2 === _ ? 0 : 1, p(z + 68, w2(c, X2 - 1, L2 + 1)), p(z + 72, w2(X2 + 1, I, L2 + 1)), X2;
|
|
1332
1332
|
};
|
|
1333
|
-
|
|
1333
|
+
p(D(x) + 76, w2(1, t.length, 0));
|
|
1334
1334
|
for (let c = 0; c < a; c++) C2(d + c, c + 1 < a ? d + c + 1 : 4294967294);
|
|
1335
1335
|
for (let c = 0; c < l; c++) C2(m2 + c, c + 1 < l ? m2 + c + 1 : 4294967294);
|
|
1336
|
-
for (let c = 0; c < o; c++)
|
|
1336
|
+
for (let c = 0; c < o; c++) r(), C2(x + c, c + 1 < o ? x + c + 1 : 4294967294);
|
|
1337
1337
|
for (let c = 0; c < E; c++) C2(b + c, 4294967293);
|
|
1338
1338
|
for (let c = 0; c < k; c++) C2(O + c, 4294967292);
|
|
1339
|
-
return
|
|
1339
|
+
return S;
|
|
1340
1340
|
}
|
|
1341
|
-
var
|
|
1342
|
-
var
|
|
1343
|
-
var
|
|
1344
|
-
var
|
|
1341
|
+
var Kn = { "+": 3, "-": 4, "*": 5, "/": 6, "^": 7, "&": 8, "<": 9, "<=": 10, "=": 11, ">=": 12, ">": 13, "<>": 14, intersection: 15, union: 16, ":": 17 };
|
|
1342
|
+
var Yn = new Map(Object.entries(it).map(([s, e]) => [e[0], { id: Number(s), min: e[1], max: e[2] }]));
|
|
1343
|
+
var qn = /* @__PURE__ */ new Set(["AVERAGEIF", "AVERAGEIFS", "CUBEKPIMEMBER", "CUBEMEMBER", "CUBEMEMBERPROPERTY", "CUBERANKEDMEMBER", "CUBESET", "CUBESETCOUNT", "CUBEVALUE", "COUNTIFS", "IFERROR", "SUMIFS"]);
|
|
1344
|
+
var mt = class {
|
|
1345
1345
|
book;
|
|
1346
1346
|
revision;
|
|
1347
1347
|
context;
|
|
@@ -1352,50 +1352,50 @@ var dt = class {
|
|
|
1352
1352
|
workbookIndices = /* @__PURE__ */ new Map();
|
|
1353
1353
|
linkIndices = /* @__PURE__ */ new Map();
|
|
1354
1354
|
relocations = [];
|
|
1355
|
-
constructor(e,
|
|
1356
|
-
this.book = e, this.revision =
|
|
1355
|
+
constructor(e, n2, r) {
|
|
1356
|
+
this.book = e, this.revision = n2, this.context = r;
|
|
1357
1357
|
}
|
|
1358
1358
|
externalBook(e) {
|
|
1359
|
-
let
|
|
1360
|
-
return
|
|
1359
|
+
let n2 = this.workbookIndices.get(e);
|
|
1360
|
+
return n2 === void 0 && (n2 = this.externalBooks.length, this.externalBooks.push({ workbook: e, sheets: [], names: [] }), this.workbookIndices.set(e, n2)), n2;
|
|
1361
1361
|
}
|
|
1362
|
-
externalScope(e,
|
|
1363
|
-
if (!
|
|
1364
|
-
let
|
|
1362
|
+
externalScope(e, n2) {
|
|
1363
|
+
if (!n2 || n2.length > 31) throw new le("unsupported-feature", "Excel BIFF external sheet name exceeds version limits");
|
|
1364
|
+
let r = this.externalBooks[e].sheets, t = r.indexOf(n2);
|
|
1365
1365
|
if (t < 0) {
|
|
1366
|
-
if (t =
|
|
1367
|
-
|
|
1366
|
+
if (t = r.length, t >= 65534) throw new le("unsupported-feature", "Excel BIFF external sheet index exceeds version limits");
|
|
1367
|
+
r.push(n2);
|
|
1368
1368
|
}
|
|
1369
1369
|
return t;
|
|
1370
1370
|
}
|
|
1371
|
-
sheetLink(e,
|
|
1372
|
-
let t = `${e ?? -1}:${
|
|
1373
|
-
return u === void 0 && (u = this.externalSheets.length, this.externalSheets.push({ ...e === void 0 ? {} : { book: e }, first:
|
|
1371
|
+
sheetLink(e, n2, r) {
|
|
1372
|
+
let t = `${e ?? -1}:${n2}:${r}`, u = this.linkIndices.get(t);
|
|
1373
|
+
return u === void 0 && (u = this.externalSheets.length, this.externalSheets.push({ ...e === void 0 ? {} : { book: e }, first: n2, last: r }), this.linkIndices.set(t, u)), u;
|
|
1374
1374
|
}
|
|
1375
1375
|
finalize(e = []) {
|
|
1376
|
-
let
|
|
1377
|
-
for (let m2 = 0; m2 <
|
|
1378
|
-
if (
|
|
1376
|
+
let n2 = (this.book.names?.length ?? 0) + this.macroNames.length, r = new Int32Array(n2).fill(-1), t = new Int32Array(n2), u = new Uint8Array(n2), i = [], h2 = [], g = 0;
|
|
1377
|
+
for (let m2 = 0; m2 < n2; m2++) {
|
|
1378
|
+
if (r[m2] !== -1) continue;
|
|
1379
1379
|
let f = [{ index: m2, next: 0 }];
|
|
1380
1380
|
for (; f.length; ) {
|
|
1381
1381
|
this.context.signal.throwIfAborted();
|
|
1382
1382
|
let o = f[f.length - 1];
|
|
1383
|
-
|
|
1383
|
+
r[o.index] === -1 && (r[o.index] = t[o.index] = g++, u[o.index] = 1, i.push(o.index));
|
|
1384
1384
|
let E = e[o.index]?.nameDependencies ?? [];
|
|
1385
1385
|
if (o.next < E.length) {
|
|
1386
1386
|
let k = E[o.next++];
|
|
1387
|
-
|
|
1387
|
+
r[k] === -1 ? f.push({ index: k, next: 0 }) : u[k] && (t[o.index] = Math.min(t[o.index], r[k]));
|
|
1388
1388
|
} else {
|
|
1389
1389
|
if (f.pop(), f.length) {
|
|
1390
1390
|
let k = f[f.length - 1].index;
|
|
1391
1391
|
t[k] = Math.min(t[k], t[o.index]);
|
|
1392
1392
|
}
|
|
1393
|
-
if (t[o.index] ===
|
|
1394
|
-
let k = [],
|
|
1393
|
+
if (t[o.index] === r[o.index]) {
|
|
1394
|
+
let k = [], N;
|
|
1395
1395
|
do
|
|
1396
|
-
this.context.signal.throwIfAborted(),
|
|
1397
|
-
while (
|
|
1398
|
-
k.sort((A,
|
|
1396
|
+
this.context.signal.throwIfAborted(), N = i.pop(), u[N] = 0, k.push(N);
|
|
1397
|
+
while (N !== o.index);
|
|
1398
|
+
k.sort((A, S) => A - S);
|
|
1399
1399
|
for (let A of k) h2.push(A);
|
|
1400
1400
|
}
|
|
1401
1401
|
}
|
|
@@ -1422,56 +1422,56 @@ var dt = class {
|
|
|
1422
1422
|
}
|
|
1423
1423
|
return h2;
|
|
1424
1424
|
}
|
|
1425
|
-
compile(e,
|
|
1425
|
+
compile(e, n2, r, t, u, i) {
|
|
1426
1426
|
let h2 = (x, b, O = i ?? false) => {
|
|
1427
|
-
let C2 =
|
|
1427
|
+
let C2 = jn(x, { maximumDepth: this.context.limits.formulaDepth, workbook: this.book, position: b, arrayStringLiterals: O, signal: this.context.signal, maximumNodes: this.context.limits.workbookNodes ?? this.context.limits.cells, maximumLength: this.context.limits.workbookTextBytes ?? this.context.limits.outputBytes });
|
|
1428
1428
|
if (!C2.ok) throw new le("unsupported-feature", `Cannot export Excel formula: ${x}`);
|
|
1429
1429
|
let v = 0;
|
|
1430
|
-
return
|
|
1430
|
+
return $n(C2.document, () => {
|
|
1431
1431
|
if (this.context.signal.throwIfAborted(), ++v > (this.context.limits.workbookNodes ?? this.context.limits.cells)) throw new le("resource-limit", "ssconvert BIFF formula node limit exceeded");
|
|
1432
1432
|
}).root;
|
|
1433
|
-
}, g = u !== void 0, a = u ?
|
|
1433
|
+
}, g = u !== void 0, a = u ? zn(u, this.book, h2, () => this.context.signal.throwIfAborted()) : h2(e, { sheet: n2, row: r, column: t }), l = [], d = [], m2 = [], f = [], o = [], E = [], k = () => {
|
|
1434
1434
|
l.length && f.at(-1) !== l.length && f.push(l.length);
|
|
1435
|
-
},
|
|
1435
|
+
}, N = false, A = [], S = (x, b = l) => {
|
|
1436
1436
|
if (x.length > this.context.limits.outputBytes - l.length - d.length) throw new le("resource-limit", "ssconvert BIFF formula bytes limit exceeded");
|
|
1437
1437
|
for (let O of x) b.push(O);
|
|
1438
1438
|
}, B = (x) => {
|
|
1439
|
-
let b = x.row, O = x.column, C2 = b.value + (b.relative ?
|
|
1439
|
+
let b = x.row, O = x.column, C2 = b.value + (b.relative ? r : 0), v = O.value + (O.relative ? t : 0);
|
|
1440
1440
|
if (C2 < 0 || C2 >= (this.revision === 8 ? 65536 : 16384) || v < 0 || v >= 256) throw new le("unsupported-feature", "Excel BIFF formula reference exceeds version limits");
|
|
1441
|
-
let
|
|
1442
|
-
return this.revision === 8 ? K2(
|
|
1443
|
-
},
|
|
1444
|
-
if (x.kind === "number") if (x.value >= 0 && x.value <= 65535 && Number.isInteger(x.value))
|
|
1441
|
+
let R2 = g && b.relative ? b.value : C2, M = g && O.relative ? O.value : v;
|
|
1442
|
+
return this.revision === 8 ? K2(R2, M & 255 | (b.relative ? 32768 : 0) | (O.relative ? 16384 : 0)) : new Uint8Array([R2 & 255, R2 >> 8 & 63 | (b.relative ? 128 : 0) | (O.relative ? 64 : 0), M & 255]);
|
|
1443
|
+
}, F = (x) => {
|
|
1444
|
+
if (x.kind === "number") if (x.value >= 0 && x.value <= 65535 && Number.isInteger(x.value)) S([30, ...K2(x.value)]);
|
|
1445
1445
|
else {
|
|
1446
1446
|
let b = new Uint8Array(9);
|
|
1447
|
-
b[0] = 31, new DataView(b.buffer).setFloat64(1, x.value, true),
|
|
1447
|
+
b[0] = 31, new DataView(b.buffer).setFloat64(1, x.value, true), S(b);
|
|
1448
1448
|
}
|
|
1449
|
-
else if (x.kind === "boolean")
|
|
1450
|
-
else if (x.kind === "error")
|
|
1451
|
-
else if (x.kind === "blank")
|
|
1449
|
+
else if (x.kind === "boolean") S([29, Number(x.value)]);
|
|
1450
|
+
else if (x.kind === "error") S([28, qe(x.value)]);
|
|
1451
|
+
else if (x.kind === "blank") S([22]);
|
|
1452
1452
|
else {
|
|
1453
1453
|
let b = [], O = "";
|
|
1454
1454
|
for (let C2 of x.value) O.length + C2.length > 255 && (b.push(O), O = ""), O += C2;
|
|
1455
1455
|
b.push(O), b.forEach((C2, v) => {
|
|
1456
|
-
|
|
1457
|
-
}), b.length > 1 &&
|
|
1458
|
-
}
|
|
1459
|
-
},
|
|
1460
|
-
if (this.context.signal.throwIfAborted(), k(), x.kind === "literal")
|
|
1461
|
-
else if (x.kind === "omitted")
|
|
1462
|
-
else if (x.kind === "parentheses")
|
|
1463
|
-
else if (x.kind === "unary")
|
|
1456
|
+
S([23]), S(ce(C2, this.revision, this.context, 1)), v && S([8]), k();
|
|
1457
|
+
}), b.length > 1 && S([21]);
|
|
1458
|
+
}
|
|
1459
|
+
}, p = (x) => {
|
|
1460
|
+
if (this.context.signal.throwIfAborted(), k(), x.kind === "literal") F(x.value);
|
|
1461
|
+
else if (x.kind === "omitted") S([22]);
|
|
1462
|
+
else if (x.kind === "parentheses") p(x.child), S([21]);
|
|
1463
|
+
else if (x.kind === "unary") p(x.child), S([x.op === "+" ? 18 : x.op === "-" ? 19 : 20]);
|
|
1464
1464
|
else if (x.kind === "binary") {
|
|
1465
|
-
let b =
|
|
1465
|
+
let b = Kn[x.op];
|
|
1466
1466
|
if (b === void 0) throw new le("unsupported-feature", `Unsupported Excel operator '${x.op}'`);
|
|
1467
|
-
|
|
1467
|
+
p(x.left), p(x.right), S([b]);
|
|
1468
1468
|
} else if (x.kind === "reference") {
|
|
1469
1469
|
if (x.label) {
|
|
1470
1470
|
if (x.label.kind !== "radical" && x.label.semantics === "openformula") throw new le("unsupported-feature", "Excel BIFF live label reference cannot retain OpenFormula automatic-range semantics");
|
|
1471
1471
|
if (u) throw new le("unsupported-feature", "Excel BIFF live label reference in a named expression is not yet supported");
|
|
1472
|
-
let
|
|
1473
|
-
if (this.revision !== 8 || x.last || !c || !I || c.relative !== I.relative ||
|
|
1474
|
-
let L2 = c.value + (c.relative ?
|
|
1472
|
+
let w2 = x.first, c = w2.row, I = w2.column;
|
|
1473
|
+
if (this.revision !== 8 || x.last || !c || !I || c.relative !== I.relative || w2.workbook !== void 0 || w2.sheet !== void 0) throw new le("unsupported-feature", "Excel BIFF live label reference requires a local BIFF8 anchor with matching row/column relativity");
|
|
1474
|
+
let L2 = c.value + (c.relative ? r : 0), X2 = I.value + (I.relative ? t : 0);
|
|
1475
1475
|
if (L2 < 0 || L2 >= 65536 || X2 < 0 || X2 >= 256) throw new le("unsupported-feature", "Excel BIFF live label reference exceeds version limits");
|
|
1476
1476
|
let z = X2 | (c.relative ? 32768 : 0) | (x.label.quoted ? 16384 : 0);
|
|
1477
1477
|
if (x.label.kind === "radical") {
|
|
@@ -1479,122 +1479,122 @@ var dt = class {
|
|
|
1479
1479
|
if (Q2) {
|
|
1480
1480
|
if (x.label.quoted || Q2.length >= 1073741823) throw new le("unsupported-feature", "Excel BIFF multiple label flags or count cannot be represented");
|
|
1481
1481
|
let te = Q2.length + 1;
|
|
1482
|
-
|
|
1483
|
-
for (let ie of [...Q2.map((re) => re.first),
|
|
1482
|
+
S([24, 11, 0, 0, 0, 0]), S(K2(te & 65535, Math.floor(te / 65536) | (c.relative ? 32768 : 0)), d);
|
|
1483
|
+
for (let ie of [...Q2.map((re) => re.first), w2]) {
|
|
1484
1484
|
if (this.context.signal.throwIfAborted(), !ie.row || !ie.column || ie.row.relative !== c.relative || ie.column.relative !== c.relative || ie.sheet !== void 0 || ie.workbook !== void 0) throw new le("unsupported-feature", "Excel BIFF multiple labels require local cells with matching relativity");
|
|
1485
1485
|
let re = B(ie);
|
|
1486
|
-
|
|
1486
|
+
S([re[0], re[1], re[2], 0], d);
|
|
1487
1487
|
}
|
|
1488
|
-
} else
|
|
1489
|
-
if (!W)
|
|
1488
|
+
} else S([24, 10, ...K2(L2, z)]);
|
|
1489
|
+
if (!W) S([q | 11, ...new Uint8Array(8)]);
|
|
1490
1490
|
else {
|
|
1491
1491
|
if ([W.first, W.last].some((he) => !he.row || !he.column || he.sheet !== void 0 || he.workbook !== void 0)) throw new le("unsupported-feature", "Excel BIFF radical label requires a local explicit area");
|
|
1492
1492
|
let te = B(W.first), ie = B(W.last), re = new DataView(te.buffer), oe = new DataView(ie.buffer);
|
|
1493
|
-
if (!
|
|
1494
|
-
|
|
1493
|
+
if (!Nt(L2, X2, [re.getUint16(0, true), oe.getUint16(0, true), re.getUint16(2, true) & 255, oe.getUint16(2, true) & 255]) || Q2 && (X2 !== te[2] || te[2] !== ie[2])) throw new le("unsupported-feature", "Excel BIFF radical label must adjoin its explicit area");
|
|
1494
|
+
S([q | 5]), S(te.subarray(0, 2)), S(ie.subarray(0, 2)), S(te.subarray(2)), S(ie.subarray(2));
|
|
1495
1495
|
}
|
|
1496
|
-
} else
|
|
1496
|
+
} else S([24, (x.label.axis === "row" ? 2 : 3) + (x.label.referenceClass === "value" ? 4 : 0), ...K2(L2, z)]);
|
|
1497
1497
|
return;
|
|
1498
1498
|
}
|
|
1499
|
-
if (!
|
|
1500
|
-
let
|
|
1501
|
-
m2.push({ code: "biff-loss-warning", severity: "warning", message: `Excel BIFF exports relative sheet references in ${
|
|
1499
|
+
if (!N && (x.first.sheetRelative && (x.first.sheet || x.last?.sheet) || x.last?.sheet && x.last.sheetRelative)) {
|
|
1500
|
+
let w2 = u ? `name '${u.name}'` : `cell '${this.book.sheets.find((c) => c.id === n2)?.name ?? n2}' R${r + 1}C${t + 1}`;
|
|
1501
|
+
m2.push({ code: "biff-loss-warning", severity: "warning", message: `Excel BIFF exports relative sheet references in ${w2} as fixed sheet references; copying across sheets or evaluating names from another sheet can change results` }), N = true;
|
|
1502
1502
|
}
|
|
1503
1503
|
if (x.last?.workbook && x.last.workbook !== x.first.workbook) throw new le("unsupported-feature", "Excel BIFF range spans different workbooks");
|
|
1504
|
-
let b = (
|
|
1504
|
+
let b = (w2, c) => ({ ...w2, row: w2.row ?? { value: c ? this.revision === 8 ? 65535 : 16383 : 0, relative: false }, column: w2.column ?? { value: c ? 255 : 0, relative: false } }), O = B(b(x.first, false)), C2 = x.last ? B(b(x.last, true)) : void 0, v = x.first.sheet !== void 0 || x.last?.sheet !== void 0 || !!x.first.workbook, R2 = 0, M = 0, _ = 0;
|
|
1505
1505
|
if (v) if (x.first.workbook) {
|
|
1506
1506
|
if (x.first.sheet === void 0) throw new le("unsupported-feature", "Excel BIFF external reference requires a sheet");
|
|
1507
|
-
let
|
|
1508
|
-
if (M = this.externalScope(
|
|
1509
|
-
|
|
1510
|
-
} else M = x.first.sheet === void 0 ? this.book.sheets.findIndex((
|
|
1511
|
-
if (
|
|
1507
|
+
let w2 = this.externalBook(x.first.workbook);
|
|
1508
|
+
if (M = this.externalScope(w2, x.first.sheet), _ = x.last?.sheet === void 0 ? M : this.externalScope(w2, x.last.sheet), this.revision === 7 && M !== _) throw new le("unsupported-feature", "Excel BIFF7 external range cannot span sheets");
|
|
1509
|
+
R2 = this.sheetLink(w2, M, _);
|
|
1510
|
+
} else M = x.first.sheet === void 0 ? this.book.sheets.findIndex((w2) => w2.id === n2) : this.book.sheets.findIndex((w2) => Oe(w2.name) === Oe(x.first.sheet)), _ = x.last?.sheet !== void 0 ? this.book.sheets.findIndex((w2) => Oe(w2.name) === Oe(x.last.sheet)) : M, M < 0 && (M = 65535), _ < 0 && (_ = 65535), R2 = this.sheetLink(void 0, M, _);
|
|
1511
|
+
if (S([v ? C2 ? 91 : 90 : C2 ? g ? 77 : 69 : g ? 76 : 68]), v) if (this.revision === 8) A.push({ offset: l.length, index: R2, kind: "sheet" }), S(K2(R2));
|
|
1512
1512
|
else {
|
|
1513
|
-
let
|
|
1514
|
-
if (x.first.workbook) A.push({ offset: l.length, index:
|
|
1513
|
+
let w2 = new Uint8Array(14), c = new DataView(w2.buffer);
|
|
1514
|
+
if (x.first.workbook) A.push({ offset: l.length, index: R2, kind: "sheet" });
|
|
1515
1515
|
else {
|
|
1516
1516
|
let I = M === 65535 ? this.book.sheets.length + 2 : M + 1;
|
|
1517
1517
|
c.setInt16(0, -I, true), c.setUint16(10, M, true), c.setUint16(12, _, true);
|
|
1518
1518
|
}
|
|
1519
|
-
|
|
1519
|
+
S(w2);
|
|
1520
1520
|
}
|
|
1521
|
-
C2 ? (
|
|
1521
|
+
C2 ? (S(O.subarray(0, 2)), S(C2.subarray(0, 2)), S(O.subarray(2)), S(C2.subarray(2))) : S(O);
|
|
1522
1522
|
} else if (x.kind === "name") {
|
|
1523
1523
|
if (x.relocation) throw new le("unsupported-feature", "Unsupported ssconvert feature: live name relocation in BIFF output");
|
|
1524
1524
|
if (x.workbook) {
|
|
1525
|
-
let
|
|
1526
|
-
|
|
1527
|
-
let c = this.sheetLink(
|
|
1528
|
-
if (I[0] = 89, this.revision === 8) L2.setUint32(3,
|
|
1525
|
+
let R2 = this.externalBook(x.workbook), M = this.externalBooks[R2], _ = x.sheet === void 0 ? void 0 : this.externalScope(R2, x.sheet), w2 = M.names.findIndex((X2) => X2.name === x.name && X2.sheet === _);
|
|
1526
|
+
w2 < 0 && (w2 = M.names.length, M.names.push({ name: x.name, ..._ === void 0 ? {} : { sheet: _ } }));
|
|
1527
|
+
let c = this.sheetLink(R2, this.revision === 7 ? 65534 : _ ?? 65534, this.revision === 7 ? 65534 : _ ?? 65534), I = new Uint8Array(this.revision === 8 ? 7 : 25), L2 = new DataView(I.buffer);
|
|
1528
|
+
if (I[0] = 89, this.revision === 8) L2.setUint32(3, w2 + 1, true);
|
|
1529
1529
|
else {
|
|
1530
|
-
if (
|
|
1531
|
-
L2.setUint16(11,
|
|
1530
|
+
if (w2 >= 65535) throw new le("unsupported-feature", "Excel BIFF external name index exceeds version limits");
|
|
1531
|
+
L2.setUint16(11, w2 + 1, true);
|
|
1532
1532
|
}
|
|
1533
|
-
A.push({ offset: l.length + 1, index: c, kind: "sheet" }),
|
|
1533
|
+
A.push({ offset: l.length + 1, index: c, kind: "sheet" }), S(I);
|
|
1534
1534
|
return;
|
|
1535
1535
|
}
|
|
1536
|
-
let b = this.book.sheets.find((
|
|
1537
|
-
if (v < 0 && (x.sheet === void 0 || O !== void 0) && (v = this.book.names?.findIndex((
|
|
1538
|
-
|
|
1536
|
+
let b = this.book.sheets.find((R2) => R2.id === n2) ?? this.book.sheets.find((R2) => Oe(R2.name) === Oe(n2)), O = x.sheet === void 0 ? b : this.book.sheets.find((R2) => Oe(R2.name) === Oe(x.sheet)), C2 = (R2) => R2.name === x.name, v = x.workbook === "" && x.sheet === void 0 ? -1 : this.book.names?.findIndex((R2) => C2(R2) && R2.sheet !== void 0 && O !== void 0 && R2.sheet === O.id) ?? -1;
|
|
1537
|
+
if (v < 0 && (x.sheet === void 0 || O !== void 0) && (v = this.book.names?.findIndex((R2) => C2(R2) && R2.sheet === void 0) ?? -1), v < 0) {
|
|
1538
|
+
S([28, 29]);
|
|
1539
1539
|
return;
|
|
1540
1540
|
}
|
|
1541
1541
|
if (x.sheet !== void 0 && O !== void 0 && this.revision === 8) {
|
|
1542
|
-
let
|
|
1543
|
-
|
|
1544
|
-
let _ = this.book.sheets.indexOf(O),
|
|
1545
|
-
A.push({ offset: l.length + 1, index:
|
|
1542
|
+
let R2 = new Uint8Array(7), M = new DataView(R2.buffer);
|
|
1543
|
+
R2[0] = 89;
|
|
1544
|
+
let _ = this.book.sheets.indexOf(O), w2 = this.sheetLink(void 0, _, _);
|
|
1545
|
+
A.push({ offset: l.length + 1, index: w2, kind: "sheet" }), M.setUint16(1, w2, true), M.setUint16(3, v + 1, true), A.push({ offset: l.length + 3, index: v, kind: "name" }), S(R2);
|
|
1546
1546
|
} else {
|
|
1547
|
-
let
|
|
1548
|
-
|
|
1547
|
+
let R2 = new Uint8Array(this.revision === 8 ? 5 : 15);
|
|
1548
|
+
R2[0] = 67, new DataView(R2.buffer).setUint16(1, v + 1, true), A.push({ offset: l.length + 1, index: v, kind: "name" }), S(R2);
|
|
1549
1549
|
}
|
|
1550
1550
|
} else if (x.kind === "call") {
|
|
1551
|
-
let b = x.name.toUpperCase(), O =
|
|
1551
|
+
let b = x.name.toUpperCase(), O = Yn.get(b), C2 = qn.has(b), v = !O || O.id === 255, R2 = C2 && b === "IFERROR" ? { id: 255, min: 2, max: 2 } : v ? { id: 255, min: x.args.length, max: x.args.length } : O;
|
|
1552
1552
|
if (v || C2) {
|
|
1553
|
-
let _ = new Uint8Array(C2 ? this.revision === 8 ? 5 : 15 : this.revision === 8 ? 7 : 25),
|
|
1553
|
+
let _ = new Uint8Array(C2 ? this.revision === 8 ? 5 : 15 : this.revision === 8 ? 7 : 25), w2 = new DataView(_.buffer);
|
|
1554
1554
|
if (C2) {
|
|
1555
1555
|
let c = `_xlfn.${b}`, I = this.macroNames.indexOf(c);
|
|
1556
|
-
I < 0 && (I = this.macroNames.length, this.macroNames.push(c)), _[0] = 35, A.push({ offset: l.length + 1, index: (this.book.names?.length ?? 0) + I, kind: "name" }),
|
|
1556
|
+
I < 0 && (I = this.macroNames.length, this.macroNames.push(c)), _[0] = 35, A.push({ offset: l.length + 1, index: (this.book.names?.length ?? 0) + I, kind: "name" }), w2.setUint16(1, (this.book.names?.length ?? 0) + I + 1, true);
|
|
1557
1557
|
} else {
|
|
1558
1558
|
let c = this.externNames.indexOf(b);
|
|
1559
|
-
if (c < 0 && (c = this.externNames.length, this.externNames.push(b)), _[0] = 57,
|
|
1559
|
+
if (c < 0 && (c = this.externNames.length, this.externNames.push(b)), _[0] = 57, w2.setUint16(1, this.revision === 8 ? 0 : this.book.sheets.length + 1, true), this.revision === 8) w2.setUint32(3, c + 1, true);
|
|
1560
1560
|
else {
|
|
1561
1561
|
if (c >= 65535) throw new le("unsupported-feature", "Excel BIFF formula index exceeds version limits");
|
|
1562
|
-
|
|
1562
|
+
w2.setUint16(11, c + 1, true);
|
|
1563
1563
|
}
|
|
1564
1564
|
}
|
|
1565
|
-
|
|
1565
|
+
S(_);
|
|
1566
1566
|
}
|
|
1567
|
-
let M = Math.min(x.args.length,
|
|
1568
|
-
x.args.length >
|
|
1569
|
-
for (let _ of x.args.slice(0, M))
|
|
1570
|
-
for (let _ = M; _ <
|
|
1571
|
-
v || C2 ?
|
|
1567
|
+
let M = Math.min(x.args.length, R2.max);
|
|
1568
|
+
x.args.length > R2.max && m2.push({ code: "biff-loss-warning", severity: "warning", message: `Too many arguments for function '${x.name}', MS Excel can only handle ${R2.max} not ${x.args.length}` });
|
|
1569
|
+
for (let _ of x.args.slice(0, M)) p(_);
|
|
1570
|
+
for (let _ = M; _ < R2.min; _++) S([22]);
|
|
1571
|
+
v || C2 ? S([66, Math.max(M, R2.min) + 1, ...K2(255)]) : R2.min === R2.max ? S([65, ...K2(R2.id)]) : S([66, Math.max(M, R2.min), ...K2(R2.id)]);
|
|
1572
1572
|
} else {
|
|
1573
1573
|
let b = x.rows[0]?.length ?? 0;
|
|
1574
1574
|
if (!b || b > 256 || x.rows.length > 65536) throw new le("unsupported-feature", "Excel BIFF array dimensions exceed limits");
|
|
1575
|
-
|
|
1575
|
+
S([64, ...new Uint8Array(7)]), S([this.revision === 8 ? b - 1 : b & 255, ...K2(x.rows.length - (this.revision === 8 ? 1 : 0))], d), o.push(d.length);
|
|
1576
1576
|
for (let O of x.rows) for (let C2 of O) {
|
|
1577
1577
|
if (C2.kind !== "literal") throw new le("unsupported-feature", "Excel BIFF array requires literals");
|
|
1578
1578
|
let v = C2.value;
|
|
1579
1579
|
if (v.kind === "string") {
|
|
1580
|
-
let
|
|
1581
|
-
|
|
1580
|
+
let R2 = d.length + 4;
|
|
1581
|
+
S([2], d), S(ce(v.value, this.revision, this.context, this.revision === 8 ? 2 : 1), d), this.revision === 8 && d.length > R2 && E.push({ start: R2, end: d.length });
|
|
1582
1582
|
} else {
|
|
1583
|
-
let
|
|
1584
|
-
|
|
1583
|
+
let R2 = new Uint8Array(9), M = new DataView(R2.buffer);
|
|
1584
|
+
R2[0] = v.kind === "number" ? 1 : v.kind === "boolean" ? 4 : v.kind === "error" ? 16 : 0, v.kind === "number" ? M.setFloat64(1, v.value, true) : v.kind === "boolean" ? R2[1] = Number(v.value) : v.kind === "error" && (R2[1] = qe(v.value)), S(R2, d);
|
|
1585
1585
|
}
|
|
1586
1586
|
o.push(d.length);
|
|
1587
1587
|
}
|
|
1588
1588
|
}
|
|
1589
1589
|
k();
|
|
1590
1590
|
};
|
|
1591
|
-
if (
|
|
1591
|
+
if (p(a), k(), l.length > 65535) throw new le("unsupported-feature", "Excel BIFF formula token length exceeds version limits");
|
|
1592
1592
|
let D = new Uint8Array(l);
|
|
1593
1593
|
for (let x of A) this.relocations.push({ ...x, tokens: D });
|
|
1594
1594
|
return { tokens: D, tokenBoundaries: f, arrays: new Uint8Array(d), arrayBoundaries: o, arrayStrings: E, diagnostics: m2, nameDependencies: A.filter((x) => x.kind === "name").map((x) => x.index) };
|
|
1595
1595
|
}
|
|
1596
1596
|
};
|
|
1597
|
-
var
|
|
1597
|
+
var ht = class {
|
|
1598
1598
|
context;
|
|
1599
1599
|
diagnostics = [];
|
|
1600
1600
|
styles = [{ format: "General" }];
|
|
@@ -1603,22 +1603,22 @@ var mt = class {
|
|
|
1603
1603
|
this.context = e;
|
|
1604
1604
|
}
|
|
1605
1605
|
register(e) {
|
|
1606
|
-
let
|
|
1607
|
-
if (!
|
|
1606
|
+
let n2 = Zn(e.style?.gnumeric, (g) => this.charge(g)), r = e.format ?? n2?.attributes.Format ?? n2?.children.find((g) => g.name === "Format")?.text ?? "General", t = { format: r === "General" ? Qn(e) ?? r : r, ...n2 ? { node: n2 } : {} };
|
|
1607
|
+
if (!n2 && t.format === "General") return 15;
|
|
1608
1608
|
let u = JSON.stringify(t);
|
|
1609
1609
|
this.charge(u.length);
|
|
1610
1610
|
let i = this.ids.get(u);
|
|
1611
1611
|
if (i !== void 0) return i;
|
|
1612
|
-
if (this.styles.length >= 4080) throw new
|
|
1612
|
+
if (this.styles.length >= 4080) throw new pn("unsupported-feature", "Excel BIFF XF limit exceeded");
|
|
1613
1613
|
let h2 = 15 + this.styles.length;
|
|
1614
1614
|
return this.ids.set(u, h2), this.styles.push(t), h2;
|
|
1615
1615
|
}
|
|
1616
1616
|
work = 0;
|
|
1617
1617
|
charge(e = 1) {
|
|
1618
|
-
if (this.context.signal.throwIfAborted(), this.work += e, this.work > (this.context.limits.workbookWork ?? this.context.limits.outputBytes * 8)) throw new
|
|
1618
|
+
if (this.context.signal.throwIfAborted(), this.work += e, this.work > (this.context.limits.workbookWork ?? this.context.limits.outputBytes * 8)) throw new pn("resource-limit", "ssconvert BIFF style work limit exceeded");
|
|
1619
1619
|
}
|
|
1620
|
-
serialize(e,
|
|
1621
|
-
let
|
|
1620
|
+
serialize(e, n2) {
|
|
1621
|
+
let r = [], t = /* @__PURE__ */ new Map(), u = [], i = /* @__PURE__ */ new Map(), h2 = /* @__PURE__ */ new Map(), g = (l, d) => {
|
|
1622
1622
|
if (!l) return d;
|
|
1623
1623
|
let m2 = l.split(":").map((E) => (parseInt(E, 16) >>> 8).toString(16).padStart(2, "0")).join("").toUpperCase(), f = ["000000", "FFFFFF", "FF0000", "00FF00", "0000FF", "FFFF00", "FF00FF", "00FFFF"].indexOf(m2);
|
|
1624
1624
|
if (f >= 0) return f;
|
|
@@ -1636,32 +1636,32 @@ var mt = class {
|
|
|
1636
1636
|
}, a = [];
|
|
1637
1637
|
for (let l of this.styles) {
|
|
1638
1638
|
this.charge();
|
|
1639
|
-
let d = l.node?.attributes ?? {}, m2 = l.node?.children.find((
|
|
1639
|
+
let d = l.node?.attributes ?? {}, m2 = l.node?.children.find((R2) => R2.name === "Font"), f = m2?.attributes ?? {}, o = g(d.Fore, 32767), E = JSON.stringify({ font: m2, fore: o }), k = t.get(E);
|
|
1640
1640
|
if (k === void 0) {
|
|
1641
|
-
k =
|
|
1642
|
-
let
|
|
1643
|
-
_.setUint16(0, Math.round(Number(f.Unit ?? 10) * 20), true), _.setUint16(2, (Number(f.Bold) ? 1 : 0) | (Number(f.Italic) ? 2 : 0) | (Number(f.StrikeThrough) ? 8 : 0), true), _.setUint16(4, o, true), _.setUint16(6, Number(f.Bold) ? 700 : 400, true), _.setUint16(8, Number(f.Script) > 0 ? 1 : Number(f.Script) < 0 ? 2 : 0, true), M[10] = [0, 1, 2, 33, 34][Number(f.Underline ?? 0)] ?? 0, M.set(
|
|
1641
|
+
k = r.length + (r.length >= 4 ? 1 : 0), t.set(E, k);
|
|
1642
|
+
let R2 = ce(m2?.text || "Sans", n2, this.context, 1), M = new Uint8Array(14 + R2.length), _ = new DataView(M.buffer);
|
|
1643
|
+
_.setUint16(0, Math.round(Number(f.Unit ?? 10) * 20), true), _.setUint16(2, (Number(f.Bold) ? 1 : 0) | (Number(f.Italic) ? 2 : 0) | (Number(f.StrikeThrough) ? 8 : 0), true), _.setUint16(4, o, true), _.setUint16(6, Number(f.Bold) ? 700 : 400, true), _.setUint16(8, Number(f.Script) > 0 ? 1 : Number(f.Script) < 0 ? 2 : 0, true), M[10] = [0, 1, 2, 33, 34][Number(f.Underline ?? 0)] ?? 0, M.set(R2, 14), r.push(M);
|
|
1644
1644
|
}
|
|
1645
1645
|
l.format !== "General" && !i.has(l.format) && i.set(l.format, 164 + i.size);
|
|
1646
|
-
let
|
|
1646
|
+
let N = new Uint8Array(n2 === 8 ? 20 : 16), A = new DataView(N.buffer);
|
|
1647
1647
|
A.setUint16(0, k, true), A.setUint16(2, i.get(l.format) ?? 0, true), A.setUint16(4, (Number(d.Locked ?? 1) ? 1 : 0) | (Number(d.Hidden) ? 2 : 0), true);
|
|
1648
|
-
let
|
|
1649
|
-
|
|
1650
|
-
let
|
|
1651
|
-
let M = D.find((_) => _.name ===
|
|
1648
|
+
let S = ["GENERAL", "LEFT", "CENTER", "RIGHT", "FILL", "JUSTIFY", "CENTER_ACROSS_SELECTION", "DISTRIBUTED"].indexOf((d.HAlign ?? "GNM_HALIGN_GENERAL").slice(11)), B = ["TOP", "CENTER", "BOTTOM", "JUSTIFY", "DISTRIBUTED"].indexOf((d.VAlign ?? "GNM_VALIGN_BOTTOM").slice(11));
|
|
1649
|
+
N[6] = Math.max(0, S) | (Number(d.WrapText) ? 8 : 0) | Math.max(0, B) << 4;
|
|
1650
|
+
let F = Number(d.Rotation ?? 0), p = g(d.PatternColor, 64) | g(d.Back, 65) << 7, D = l.node?.children.find((R2) => R2.name === "StyleBorder")?.children ?? [], x = (R2) => {
|
|
1651
|
+
let M = D.find((_) => _.name === R2);
|
|
1652
1652
|
return { style: Number(M?.attributes.Style ?? 0), color: g(M?.attributes.Color, 64) };
|
|
1653
1653
|
}, b = x("Left"), O = x("Right"), C2 = x("Top"), v = x("Bottom");
|
|
1654
|
-
if (
|
|
1655
|
-
let
|
|
1656
|
-
|
|
1657
|
-
let M = x("Diagonal"), _ = x("RevDiagonal"),
|
|
1658
|
-
A.setUint16(12, b.color | O.color << 7 | (M.style ? 16384 : 0) | (_.style ? 32768 : 0), true), A.setUint32(14, C2.color | v.color << 7 |
|
|
1659
|
-
} else
|
|
1660
|
-
a.push(
|
|
1661
|
-
}
|
|
1662
|
-
for (let l of
|
|
1654
|
+
if (n2 === 8) {
|
|
1655
|
+
let R2 = F % 360;
|
|
1656
|
+
N[7] = F < 0 ? 255 : R2 > 90 ? 450 - R2 : R2, N[8] = Number(d.Indent ?? 0) & 15 | (Number(d.ShrinkToFit) ? 16 : 0), N[9] = 252, A.setUint16(10, b.style | O.style << 4 | C2.style << 8 | v.style << 12, true);
|
|
1657
|
+
let M = x("Diagonal"), _ = x("RevDiagonal"), w2 = M.style ? M : _;
|
|
1658
|
+
A.setUint16(12, b.color | O.color << 7 | (M.style ? 16384 : 0) | (_.style ? 32768 : 0), true), A.setUint32(14, C2.color | v.color << 7 | w2.color << 14 | w2.style << 21 | Number(d.Shade ?? 0) << 26, true), A.setUint16(18, p, true);
|
|
1659
|
+
} else N[7] = 252 | (F < 0 ? 1 : F > 45 && F <= 135 ? 2 : F > 225 && F <= 315 ? 3 : 0), A.setUint16(8, p, true), A.setUint16(10, Number(d.Shade ?? 0) | (v.style & 7) << 6 | v.color << 9, true), A.setUint16(12, C2.style & 7 | (b.style & 7) << 3 | (O.style & 7) << 6 | C2.color << 9, true), A.setUint16(14, b.color | O.color << 7, true);
|
|
1660
|
+
a.push(N);
|
|
1661
|
+
}
|
|
1662
|
+
for (let l of r) e.record(49, l);
|
|
1663
1663
|
for (let [l, d] of i) {
|
|
1664
|
-
let m2 = ce(l,
|
|
1664
|
+
let m2 = ce(l, n2, this.context, n2 === 8 ? 2 : 1), f = new Uint8Array(2 + m2.length);
|
|
1665
1665
|
f.set(K2(d)), f.set(m2, 2), e.record(1054, f);
|
|
1666
1666
|
}
|
|
1667
1667
|
for (let l = 0; l < 15; l++) {
|
|
@@ -1678,19 +1678,23 @@ var mt = class {
|
|
|
1678
1678
|
}
|
|
1679
1679
|
};
|
|
1680
1680
|
function Ae(...s) {
|
|
1681
|
-
let e = new Uint8Array(s.reduce((
|
|
1682
|
-
for (let
|
|
1681
|
+
let e = new Uint8Array(s.reduce((r, t) => r + t.length, 0)), n2 = 0;
|
|
1682
|
+
for (let r of s) e.set(r, n2), n2 += r.length;
|
|
1683
1683
|
return e;
|
|
1684
1684
|
}
|
|
1685
|
-
function Te(s, e,
|
|
1685
|
+
function Te(s, e, n2, r) {
|
|
1686
1686
|
let t = new Uint8Array(8), u = new DataView(t.buffer);
|
|
1687
|
-
return u.setUint16(0, e << 4 |
|
|
1687
|
+
return u.setUint16(0, e << 4 | n2, true), u.setUint16(2, s, true), u.setUint32(4, r.length, true), Ae(t, r);
|
|
1688
1688
|
}
|
|
1689
1689
|
function ve(...s) {
|
|
1690
|
-
let e = new Uint8Array(s.length * 4),
|
|
1691
|
-
return s.forEach((
|
|
1690
|
+
let e = new Uint8Array(s.length * 4), n2 = new DataView(e.buffer);
|
|
1691
|
+
return s.forEach((r, t) => n2.setUint32(t * 4, r, true)), e;
|
|
1692
|
+
}
|
|
1693
|
+
function Be(s, e, n2 = false) {
|
|
1694
|
+
let r = s.view?.gnumeric, t = r && typeof r == "object" && !Array.isArray(r) ? r[e] : void 0;
|
|
1695
|
+
return t === void 0 ? n2 : t === true || t === 1 || t === "1" || t === "true";
|
|
1692
1696
|
}
|
|
1693
|
-
var
|
|
1697
|
+
var gt = class {
|
|
1694
1698
|
book;
|
|
1695
1699
|
context;
|
|
1696
1700
|
maxRows;
|
|
@@ -1698,107 +1702,109 @@ var wt = class {
|
|
|
1698
1702
|
records = /* @__PURE__ */ new Map();
|
|
1699
1703
|
comments = /* @__PURE__ */ new Map();
|
|
1700
1704
|
exported = /* @__PURE__ */ new Set();
|
|
1701
|
-
constructor(e,
|
|
1702
|
-
this.book = e, this.context =
|
|
1705
|
+
constructor(e, n2, r) {
|
|
1706
|
+
this.book = e, this.context = n2, this.maxRows = r;
|
|
1703
1707
|
for (let t of e.sheets) {
|
|
1704
|
-
let u = (t.unsupportedRecords ?? []).map((i) => ({ record: i, ...i.data === void 0 ? {} : { node:
|
|
1708
|
+
let u = (t.unsupportedRecords ?? []).map((i) => ({ record: i, ...i.data === void 0 ? {} : { node: wn(i.data, (h2) => this.charge(h2)) } }));
|
|
1705
1709
|
this.records.set(t, u), this.comments.set(t, u.flatMap((i) => i.record.kind === "Objects" ? i.node?.children.filter((h2) => ["CellComment", "GnmCellComment"].includes(h2.name)) ?? [] : []));
|
|
1706
1710
|
}
|
|
1707
1711
|
}
|
|
1708
1712
|
charge(e = 1) {
|
|
1709
|
-
if (this.context.signal.throwIfAborted(), this.work += e, this.work > (this.context.limits.workbookWork ?? this.context.limits.outputBytes * 8)) throw new
|
|
1713
|
+
if (this.context.signal.throwIfAborted(), this.work += e, this.work > (this.context.limits.workbookWork ?? this.context.limits.outputBytes * 8)) throw new pt("resource-limit", "ssconvert BIFF metadata work limit exceeded");
|
|
1710
1714
|
}
|
|
1711
1715
|
async prepare() {
|
|
1712
1716
|
for (let e of this.book.sheets) {
|
|
1713
|
-
let
|
|
1714
|
-
for (let
|
|
1717
|
+
let n2 = [];
|
|
1718
|
+
for (let r of this.comments.get(e)) {
|
|
1715
1719
|
this.charge();
|
|
1716
|
-
let t =
|
|
1717
|
-
t.row >= this.maxRows || t.column >= 256 ? await this.context.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `Unsupported Excel BIFF comment anchor: ${
|
|
1720
|
+
let t = wt(r.attributes.ObjectBound?.split(":")[0] ?? "A1");
|
|
1721
|
+
t.row >= this.maxRows || t.column >= 256 ? await this.context.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `Unsupported Excel BIFF comment anchor: ${r.attributes.ObjectBound}` }) : n2.push(r);
|
|
1718
1722
|
}
|
|
1719
|
-
this.comments.set(e,
|
|
1723
|
+
this.comments.set(e, n2);
|
|
1720
1724
|
}
|
|
1721
1725
|
}
|
|
1722
|
-
async loss(e,
|
|
1723
|
-
let
|
|
1726
|
+
async loss(e, n2) {
|
|
1727
|
+
let r = /* @__PURE__ */ new Map(), t = new DataView(e.buffer, e.byteOffset, e.byteLength);
|
|
1724
1728
|
for (let h2 = 0; h2 + 4 <= e.length; ) {
|
|
1725
1729
|
this.charge();
|
|
1726
|
-
let g = t.getUint16(h2, true), a = t.getUint16(h2 + 2, true), l = Array.from(e.subarray(h2 + 4, h2 + 4 + a), (m2) => m2.toString(16).padStart(2, "0")).join(""), d =
|
|
1727
|
-
d.add(l),
|
|
1730
|
+
let g = t.getUint16(h2, true), a = t.getUint16(h2 + 2, true), l = Array.from(e.subarray(h2 + 4, h2 + 4 + a), (m2) => m2.toString(16).padStart(2, "0")).join(""), d = r.get(g) ?? /* @__PURE__ */ new Set();
|
|
1731
|
+
d.add(l), r.set(g, d), h2 += a + 4;
|
|
1728
1732
|
}
|
|
1729
|
-
let u =
|
|
1733
|
+
let u = n2 ? n2.unsupportedRecords ?? [] : this.book.unsupportedRecords ?? [], i = { headings: 42, gridLines: 43, horizontalCentered: 131, verticalCentered: 132 };
|
|
1730
1734
|
for (let h2 of u) {
|
|
1731
1735
|
if (this.charge(), this.exported.has(h2)) continue;
|
|
1732
1736
|
if (h2.source === "biff" && h2.data && typeof h2.data == "object" && !Array.isArray(h2.data)) {
|
|
1733
1737
|
let a = h2.data;
|
|
1734
|
-
if (typeof a.opcode == "number" && typeof a.bytes == "string" &&
|
|
1738
|
+
if (typeof a.opcode == "number" && typeof a.bytes == "string" && r.get(a.opcode)?.has(a.bytes)) continue;
|
|
1735
1739
|
}
|
|
1736
1740
|
if (["PrintInformation", "Styles", "Rows", "Cols"].includes(h2.kind)) continue;
|
|
1737
|
-
let g =
|
|
1738
|
-
h2.kind === "printOptions" && g?.namespace === "http://schemas.openxmlformats.org/spreadsheetml/2006/main" && !g.text.trim() && !g.children.length && Object.entries(g.attributes).every(([a, l]) => Object.hasOwn(i, a) && ["0", "1", "false", "true"].includes(l) &&
|
|
1741
|
+
let g = n2 ? this.records.get(n2)?.find((a) => a.record === h2)?.node : void 0;
|
|
1742
|
+
h2.kind === "printOptions" && g?.namespace === "http://schemas.openxmlformats.org/spreadsheetml/2006/main" && !g.text.trim() && !g.children.length && Object.entries(g.attributes).every(([a, l]) => Object.hasOwn(i, a) && ["0", "1", "false", "true"].includes(l) && r.get(i[a])?.has(l === "1" || l === "true" ? "0100" : "0000")) || h2.kind === "Objects" && g?.children.every((a) => ["CellComment", "GnmCellComment"].includes(a.name)) || await this.context.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `Unsupported Excel BIFF export metadata: ${h2.kind}` });
|
|
1739
1743
|
}
|
|
1740
1744
|
}
|
|
1741
1745
|
global(e) {
|
|
1742
|
-
let
|
|
1743
|
-
if (!
|
|
1744
|
-
let
|
|
1746
|
+
let n2 = this.book.sheets.filter((i) => this.comments.get(i).length);
|
|
1747
|
+
if (!n2.length) return;
|
|
1748
|
+
let r = n2.map((i) => this.comments.get(i).length + 1), t = n2.length * 1024 + r.at(-1), u = Ae(ve(t, n2.length + 1, r.reduce((i, h2) => i + h2, 0), n2.length), ...r.map((i, h2) => ve(h2 + 1, i)));
|
|
1745
1749
|
e.record(235, Te(61440, 0, 15, Te(61446, 0, 0, u)));
|
|
1746
1750
|
}
|
|
1747
|
-
view(e,
|
|
1748
|
-
|
|
1749
|
-
let u = this.records.get(
|
|
1750
|
-
let
|
|
1751
|
-
if (
|
|
1752
|
-
return
|
|
1751
|
+
async view(e, n2, r, t) {
|
|
1752
|
+
ln(n2, r, e, (F) => this.charge(F));
|
|
1753
|
+
let u = this.records.get(n2).filter((F) => F.record.kind === "SheetLayout"), i = u[0]?.node, h2 = i?.children.find((F) => F.name === "FreezePanes"), g = (F) => {
|
|
1754
|
+
let p = wt(F);
|
|
1755
|
+
if (p.row >= this.maxRows || p.column >= 256) throw new pt("unsupported-feature", "Unsupported Excel BIFF sheet layout position");
|
|
1756
|
+
return p;
|
|
1753
1757
|
}, a = g(i?.attributes.TopLeft ?? "A1"), l = h2 ? g(h2.attributes.FrozenTopLeft ?? "A1") : a, d = h2 ? g(h2.attributes.UnfrozenTopLeft ?? "A1") : l, m2 = d.column - l.column, f = d.row - l.row;
|
|
1754
|
-
if (m2 < 0 || f < 0) throw new
|
|
1755
|
-
let o = !!(m2 || f), E = Math.round(Number(
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1758
|
+
if (m2 < 0 || f < 0) throw new pt("unsupported-feature", "Unsupported Excel BIFF reversed frozen layout");
|
|
1759
|
+
let o = !!(m2 || f), E = Math.round(Number(n2.view?.zoom ?? 1) * 100), k = Be(n2, "HideColHeader"), N = Be(n2, "HideRowHeader");
|
|
1760
|
+
k !== N && (await this.context.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: "Excel BIFF combines row and column header visibility; both headers are shown" }), this.charge());
|
|
1761
|
+
let A = 32 | (t ? 1536 : 0) | (o ? 264 : 0) | (Be(n2, "DisplayFormulas") ? 1 : 0) | (Be(n2, "HideGrid") ? 0 : 2) | (!k || !N ? 4 : 0) | (Be(n2, "HideZero") ? 0 : 16) | (Be(n2, "RTL_Layout") ? 64 : 0) | (Be(n2, "DisplayOutlines", true) ? 128 : 0), S = f ? l.row : a.row, B = m2 ? l.column : a.column;
|
|
1762
|
+
e.record(574, r === 8 ? K2(A, S, B, 64, 0, 0, E, E, 0) : K2(A, S, B, 64, 0)), e.record(160, K2(E, 100)), o && e.record(65, K2(m2, f, a.row, a.column, m2 ? f ? 0 : 1 : 2)), u.length === 1 && i && !i.text && Object.keys(i.attributes).every((F) => F === "TopLeft") && i.children.length <= 1 && i.children.every((F) => F === h2 && !F.text && !F.children.length && Object.keys(F.attributes).every((p) => p === "FrozenTopLeft" || p === "UnfrozenTopLeft")) && this.exported.add(u[0].record);
|
|
1763
|
+
}
|
|
1764
|
+
async sheet(e, n2, r) {
|
|
1765
|
+
let t = this.records.get(n2), u = t.find((o) => o.record.kind === "PrintInformation")?.node, i = (o) => u?.children.find((E) => E.name === o), h2 = (o) => Number(i(o)?.attributes.value ?? 0);
|
|
1766
|
+
e.record(129, K2(1 | (Be(n2, "OutlineSymbolsBelow", true) ? 64 : 0) | (Be(n2, "OutlineSymbolsRight", true) ? 128 : 0) | (Be(n2, "DisplayOutlines", true) ? 1024 : 0) | (["fit", "size_fit"].includes(i("Scale")?.attributes.type ?? "") ? 256 : 0))), e.record(42, K2(h2("titles"))), e.record(43, K2(h2("grid"))), e.record(131, K2(h2("hcenter"))), e.record(132, K2(h2("vcenter")));
|
|
1761
1767
|
for (let [o, E, k] of [["left", 38, 72], ["right", 39, 72], ["top", 40, 120], ["bottom", 41, 120]]) {
|
|
1762
|
-
let
|
|
1763
|
-
new DataView(
|
|
1768
|
+
let N = new Uint8Array(8);
|
|
1769
|
+
new DataView(N.buffer).setFloat64(0, Number(i("Margins")?.children.find((A) => A.name === o)?.attributes.Points ?? k) / 72, true), e.record(E, N);
|
|
1764
1770
|
}
|
|
1765
1771
|
let g = new Uint8Array(34), a = new DataView(g.buffer), l = i("Scale")?.attributes;
|
|
1766
1772
|
a.setUint16(0, { na_letter: 1, na_legal: 5, iso_a3: 8, iso_a4: 9, iso_a5: 11 }[i("paper")?.text ?? "iso_a4"] ?? 9, true), a.setUint16(2, Number(l?.percentage ?? 100), true), a.setUint16(4, 1, true), a.setUint16(6, Number(l?.cols ?? 1), true), a.setUint16(8, Number(l?.rows ?? 1), true);
|
|
1767
1773
|
let d = i("comments")?.attributes.placement, m2 = Math.max(0, ["GNM_PRINT_ERRORS_AS_DISPLAYED", "GNM_PRINT_ERRORS_AS_BLANK", "GNM_PRINT_ERRORS_AS_DASHES", "GNM_PRINT_ERRORS_AS_NA"].indexOf(i("errors")?.attributes.PrintErrorsAs ?? "GNM_PRINT_ERRORS_AS_DISPLAYED"));
|
|
1768
|
-
|
|
1774
|
+
r === 7 && d === "GNM_PRINT_COMMENTS_AT_END" && await this.context.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: "Excel BIFF7 cannot print comments at the end; using in-place comments" }), r === 7 && m2 && await this.context.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: "Excel BIFF7 cannot change printed error values; using displayed errors" }), a.setUint16(10, (i("orientation")?.text === "landscape" ? 0 : 2) | (i("order")?.text === "r_then_d" ? 1 : 0) | (h2("monochrome") ? 8 : 0) | (h2("draft") ? 16 : 0) | (["GNM_PRINT_COMMENTS_IN_PLACE", "GNM_PRINT_COMMENTS_AT_END"].includes(d ?? "") ? 32 : 0) | (r === 8 ? (d === "GNM_PRINT_COMMENTS_AT_END" ? 512 : 0) | m2 << 10 : 0), true), a.setUint16(12, 600, true), a.setUint16(14, 600, true), a.setFloat64(16, Number(i("Margins")?.children.find((o) => o.name === "header")?.attributes.Points ?? 72) / 72, true), a.setFloat64(24, Number(i("Margins")?.children.find((o) => o.name === "footer")?.attributes.Points ?? 72) / 72, true), a.setUint16(32, 1, true), e.record(161, g);
|
|
1769
1775
|
let f = { PAGE: "P", PAGES: "N", DATE: "D", TIME: "T", FILE: "F", TAB: "A", PATH: "Z" };
|
|
1770
1776
|
for (let [o, E, k] of [["Header", 20, "&A"], ["Footer", 21, "Page &P"]]) {
|
|
1771
|
-
let
|
|
1772
|
-
for (let [
|
|
1773
|
-
let
|
|
1774
|
-
if (
|
|
1775
|
-
(
|
|
1776
|
-
for (let
|
|
1777
|
-
if (
|
|
1778
|
-
let D =
|
|
1777
|
+
let N = i(o), A = N ? "" : k;
|
|
1778
|
+
for (let [S, B] of [["Left", "L"], ["Middle", "C"], ["Right", "R"]]) {
|
|
1779
|
+
let F = N?.attributes[S];
|
|
1780
|
+
if (F) {
|
|
1781
|
+
(S !== "Middle" || N?.attributes.Left || N?.attributes.Right) && (A += "&" + B);
|
|
1782
|
+
for (let p = 0; p < F.length; p++) {
|
|
1783
|
+
if (F[p] === "&" && F[p + 1] === "[") {
|
|
1784
|
+
let D = F.indexOf("]", p + 2), x = f[F.slice(p + 2, D)];
|
|
1779
1785
|
if (D >= 0 && x) {
|
|
1780
|
-
A += "&" + x,
|
|
1786
|
+
A += "&" + x, p = D;
|
|
1781
1787
|
continue;
|
|
1782
1788
|
}
|
|
1783
1789
|
}
|
|
1784
|
-
A +=
|
|
1790
|
+
A += F[p] === "&" ? "&&" : F[p];
|
|
1785
1791
|
}
|
|
1786
1792
|
}
|
|
1787
1793
|
}
|
|
1788
|
-
e.record(E, ce(A,
|
|
1794
|
+
e.record(E, ce(A, r, this.context, r === 8 ? 2 : 1));
|
|
1789
1795
|
}
|
|
1790
1796
|
for (let [o, E] of [["hPageBreaks", 27], ["vPageBreaks", 26]]) {
|
|
1791
|
-
let k =
|
|
1792
|
-
A.length && e.record(E, K2(A.length, ...A.flatMap((
|
|
1797
|
+
let k = r === 8 ? 6 : 2, N = Math.floor((e.maximumRecord - 4) / k), A = (i(o)?.children.filter((S) => S.name === "break" && S.attributes.type !== "auto") ?? []).slice(0, N);
|
|
1798
|
+
A.length && e.record(E, K2(A.length, ...A.flatMap((S) => r === 8 ? [Number(S.attributes.pos), 0, o === "hPageBreaks" ? 256 : 65536] : [Number(S.attributes.pos)])));
|
|
1793
1799
|
}
|
|
1794
|
-
for (let o of
|
|
1795
|
-
for (let o of
|
|
1796
|
-
|
|
1800
|
+
for (let o of n2.rows ?? []) o.index < this.maxRows && e.record(520, K2(o.index, 0, 256, Math.round((o.sizePoints ?? 12.75) * 20), 0, 0, 320 | (o.hidden ? 32 : 0) | (o.collapsed ? 16 : 0) | (o.outlineLevel ?? 0), 15));
|
|
1801
|
+
for (let o of n2.columns ?? []) o.index < 256 && e.record(125, K2(o.index, o.index, Math.round(((o.sizePoints ?? 48) / 0.75 - 64) * 36.5 + 2340), 15, (o.hidden ? 1 : 0) | (o.collapsed ? 4096 : 0) | (o.outlineLevel ?? 0) << 8, 0));
|
|
1802
|
+
r === 7 ? this.legacyComments(e, n2) : this.drawComments(e, n2);
|
|
1797
1803
|
}
|
|
1798
|
-
async links(e,
|
|
1799
|
-
if (
|
|
1804
|
+
async links(e, n2, r) {
|
|
1805
|
+
if (r === 8) for (let t of n2.cells) {
|
|
1800
1806
|
if (t.row >= this.maxRows || t.column >= 256) continue;
|
|
1801
|
-
let u =
|
|
1807
|
+
let u = wn(t.style?.gnumeric, (m2) => this.charge(m2)), i = u?.children.find((m2) => m2.name === "HyperLink");
|
|
1802
1808
|
if (!i) continue;
|
|
1803
1809
|
let h2 = ce(i.attributes.target ?? "", 8, this.context).subarray(3), g = new Uint8Array(2), a = K2(t.row, t.row, t.column, t.column), l = new Uint8Array([208, 201, 234, 121, 249, 186, 206, 17, 140, 130, 0, 170, 0, 75, 169, 11]), d = i.attributes.type;
|
|
1804
1810
|
if (d === "GnmHLinkCurWB") e.record(440, Ae(a, l, ve(2, 8, h2.length / 2 + 1), h2, g));
|
|
@@ -1812,21 +1818,21 @@ var wt = class {
|
|
|
1812
1818
|
i.attributes.tip !== void 0 && e.record(2048, Ae(K2(2048), a, ce(i.attributes.tip, 8, this.context).subarray(3), g));
|
|
1813
1819
|
}
|
|
1814
1820
|
}
|
|
1815
|
-
legacyComments(e,
|
|
1816
|
-
for (let
|
|
1821
|
+
legacyComments(e, n2) {
|
|
1822
|
+
for (let r of this.comments.get(n2)) {
|
|
1817
1823
|
this.charge();
|
|
1818
|
-
let t =
|
|
1824
|
+
let t = wt(r.attributes.ObjectBound?.split(":")[0] ?? "A1");
|
|
1819
1825
|
if (!t || t.row >= this.maxRows || t.column >= 256) continue;
|
|
1820
|
-
let u = ce(
|
|
1826
|
+
let u = ce(r.attributes.Text ?? "", 7, this.context).subarray(2);
|
|
1821
1827
|
for (let i = 0; i < u.length; i += 2048) e.record(28, Ae(K2(i ? 65535 : t.row, i ? 0 : t.column, i ? Math.min(2048, u.length - i) : u.length), u.subarray(i, i + 2048)));
|
|
1822
1828
|
}
|
|
1823
1829
|
}
|
|
1824
|
-
drawComments(e,
|
|
1825
|
-
let
|
|
1826
|
-
if (!
|
|
1827
|
-
let t = this.book.sheets.filter((d) => this.comments.get(d).length).indexOf(
|
|
1828
|
-
let f =
|
|
1829
|
-
if (!f) throw new
|
|
1830
|
+
drawComments(e, n2) {
|
|
1831
|
+
let r = this.comments.get(n2);
|
|
1832
|
+
if (!r.length) return;
|
|
1833
|
+
let t = this.book.sheets.filter((d) => this.comments.get(d).length).indexOf(n2) + 1, u = t * 1024, i = r.map((d, m2) => {
|
|
1834
|
+
let f = wt(d.attributes.ObjectBound?.split(":")[0] ?? "A1");
|
|
1835
|
+
if (!f) throw new pt("unsupported-feature", "Invalid Excel comment anchor");
|
|
1830
1836
|
let o = K2(0, Math.min(f.column + 1, 255), 512, Math.max(0, f.row - 1), 128, Math.min(f.column + 3, 255), 512, Math.min(f.row + 3, this.maxRows - 1), 128), E = Ae(Te(61450, 202, 2, ve(u + m2 + 1, 2560)), Te(61456, 0, 0, o), Te(61457, 0, 0, new Uint8Array())), k = Te(61444, 0, 15, E);
|
|
1831
1837
|
return new DataView(k.buffer).setUint32(4, E.length + 8, true), { comment: d, pos: f, shape: k };
|
|
1832
1838
|
}), h2 = Te(61444, 0, 15, Ae(Te(61449, 0, 1, new Uint8Array(16)), Te(61450, 0, 2, ve(u, 5)))), g = i.reduce((d, m2) => d + m2.shape.length + 8, 0), a = Te(61448, t, 0, ve(i.length + 1, u + i.length)), l = Ae(K2(15, 61442), ve(a.length + 8 + h2.length + g), a, K2(15, 61443), ve(h2.length + g), h2);
|
|
@@ -1836,199 +1842,199 @@ var wt = class {
|
|
|
1836
1842
|
E.set(K2(21, 18, 25, o + 1, 16401));
|
|
1837
1843
|
let k = new Uint8Array(26);
|
|
1838
1844
|
k.set(K2(13, 22)), e.record(93, Ae(E, k, K2(0, 0))), e.record(236, Te(61453, 0, 0, new Uint8Array()));
|
|
1839
|
-
let
|
|
1840
|
-
A.set(K2(530)), new DataView(A.buffer).setUint16(10, (
|
|
1841
|
-
for (let B = 3; B <
|
|
1842
|
-
let
|
|
1843
|
-
new DataView(
|
|
1845
|
+
let N = ce(d.attributes.Text || " ", 8, this.context), A = new Uint8Array(18);
|
|
1846
|
+
A.set(K2(530)), new DataView(A.buffer).setUint16(10, (N.length - 3) / 2, true), new DataView(A.buffer).setUint16(12, 16, true), e.record(438, A);
|
|
1847
|
+
for (let B = 3; B < N.length; B += 8222) e.record(60, Ae(new Uint8Array([1]), N.subarray(B, B + 8222)));
|
|
1848
|
+
let S = new Uint8Array(16);
|
|
1849
|
+
new DataView(S.buffer).setUint16(8, (N.length - 3) / 2, true), e.record(60, S), e.record(28, Ae(K2(m2.row, m2.column, 0, o + 1), ce(d.attributes.Author ?? "", 8, this.context), new Uint8Array([0])));
|
|
1844
1850
|
});
|
|
1845
1851
|
}
|
|
1846
1852
|
};
|
|
1847
|
-
function ce(s, e,
|
|
1848
|
-
let t =
|
|
1849
|
-
if (
|
|
1850
|
-
let u = e === 8 ?
|
|
1853
|
+
function ce(s, e, n2, r = 2) {
|
|
1854
|
+
let t = er["windows-1252"];
|
|
1855
|
+
if (n2.signal.throwIfAborted(), s.length > n2.limits.outputBytes) throw new Ie("resource-limit", "ssconvert BIFF string bytes limit exceeded");
|
|
1856
|
+
let u = e === 8 ? Jn(s, "UTF-16LE", false, n2) : new Uint8Array(Array.from(s, (a) => {
|
|
1851
1857
|
let l = t.indexOf(a);
|
|
1852
1858
|
return l < 0 ? 63 : l;
|
|
1853
1859
|
})), i = e === 8 ? u.length / 2 : u.length;
|
|
1854
|
-
if (i > (
|
|
1855
|
-
let h2 = new Uint8Array(
|
|
1856
|
-
return
|
|
1860
|
+
if (i > (r === 1 ? 255 : 65535)) throw new Ie("unsupported-feature", "Excel BIFF string is too long");
|
|
1861
|
+
let h2 = new Uint8Array(r + (e === 8 ? 1 : 0) + u.length), g = new DataView(h2.buffer);
|
|
1862
|
+
return r === 1 ? h2[0] = i : g.setUint16(0, i, true), e === 8 && (h2[r] = 1), h2.set(u, r + (e === 8 ? 1 : 0)), h2;
|
|
1857
1863
|
}
|
|
1858
|
-
function
|
|
1859
|
-
return Number(Object.entries(
|
|
1864
|
+
function qe(s) {
|
|
1865
|
+
return Number(Object.entries(Ce).find(([, e]) => e === s)?.[0] ?? 15);
|
|
1860
1866
|
}
|
|
1861
|
-
function
|
|
1867
|
+
function gn(s, e) {
|
|
1862
1868
|
return s === 8 ? K2(1536, e, 7093, 1997, 193, 0, 6, 0) : K2(1280, e, 2412, 1993);
|
|
1863
1869
|
}
|
|
1864
1870
|
function ye(s, e) {
|
|
1865
|
-
let
|
|
1866
|
-
return
|
|
1871
|
+
let n2 = new Uint8Array(s.length + e.length);
|
|
1872
|
+
return n2.set(s), n2.set(e, s.length), n2;
|
|
1867
1873
|
}
|
|
1868
|
-
function
|
|
1869
|
-
let
|
|
1874
|
+
function tr(s, e, n2) {
|
|
1875
|
+
let r = new Uint8Array(8224), t = 8, u = 252, i = new DataView(r.buffer);
|
|
1870
1876
|
i.setUint32(0, e.length, true), i.setUint32(4, e.length, true);
|
|
1871
1877
|
let h2 = () => {
|
|
1872
|
-
s.record(u,
|
|
1878
|
+
s.record(u, r.subarray(0, t)), u = 60, r = new Uint8Array(8224), t = 0;
|
|
1873
1879
|
};
|
|
1874
1880
|
for (let g of e) {
|
|
1875
|
-
|
|
1876
|
-
let a = ce(g, 8,
|
|
1877
|
-
8224 - t < 5 && h2(),
|
|
1881
|
+
n2.signal.throwIfAborted();
|
|
1882
|
+
let a = ce(g, 8, n2);
|
|
1883
|
+
8224 - t < 5 && h2(), r.set(a.subarray(0, 3), t), t += 3;
|
|
1878
1884
|
for (let l = 3; l < a.length; ) {
|
|
1879
|
-
8224 - t < 2 && (h2(),
|
|
1885
|
+
8224 - t < 2 && (h2(), r[t++] = 1);
|
|
1880
1886
|
let d = Math.min(a.length - l, Math.floor((8224 - t) / 2) * 2);
|
|
1881
|
-
|
|
1887
|
+
r.set(a.subarray(l, l + d), t), t += d, l += d;
|
|
1882
1888
|
}
|
|
1883
1889
|
}
|
|
1884
|
-
s.record(u,
|
|
1890
|
+
s.record(u, r.subarray(0, t));
|
|
1885
1891
|
}
|
|
1886
|
-
function
|
|
1887
|
-
let t = ce(e,
|
|
1892
|
+
function nr(s, e, n2, r) {
|
|
1893
|
+
let t = ce(e, n2, r), u = 0;
|
|
1888
1894
|
for (; u < t.length; ) {
|
|
1889
|
-
let i = u &&
|
|
1895
|
+
let i = u && n2 === 8 ? 1 : 0, h2 = !u && n2 === 8 ? 3 : 0, g = s.maximumRecord - i - h2, a = Math.min(t.length - u, h2 + (n2 === 8 ? Math.floor(g / 2) * 2 : g)), l = new Uint8Array(i + a);
|
|
1890
1896
|
i && (l[0] = 1), l.set(t.subarray(u, u + a), i), s.record(u ? 60 : 519, l), u += a;
|
|
1891
1897
|
}
|
|
1892
1898
|
}
|
|
1893
|
-
async function
|
|
1894
|
-
if (
|
|
1895
|
-
if (s.sheets.length >
|
|
1899
|
+
async function Ct(s, e, n2, r, t) {
|
|
1900
|
+
if (r.signal.throwIfAborted(), e !== 8 && s.automaticLabelLookup) throw new Ie("unsupported-feature", "Excel BIFF7 cannot enable automatic label lookup");
|
|
1901
|
+
if (s.sheets.length > r.limits.sheets) throw new Ie("resource-limit", "ssconvert BIFF sheets limit exceeded");
|
|
1896
1902
|
let u = 0;
|
|
1897
|
-
for (let b of s.sheets) if (
|
|
1898
|
-
let i = new
|
|
1903
|
+
for (let b of s.sheets) if (r.signal.throwIfAborted(), u += b.cells.length, u > r.limits.cells) throw new Ie("resource-limit", "ssconvert BIFF cells limit exceeded");
|
|
1904
|
+
let i = new dt(r, e === 8 ? 8224 : 2080), h2 = s.sheets.find((b) => b.id === s.activeSheet || b.name === s.activeSheet) ?? s.sheets[0], g = e === 7 || n2 ? 16384 : 65536, a = new gt(s, r, g);
|
|
1899
1905
|
await a.prepare();
|
|
1900
|
-
let l = [], d = /* @__PURE__ */ new Map(), m2 = new
|
|
1901
|
-
for (let { formula: b } of A) for (let O of b.diagnostics) await
|
|
1902
|
-
let
|
|
1906
|
+
let l = [], d = /* @__PURE__ */ new Map(), m2 = new ht(r), f = /* @__PURE__ */ new Map(), o = new mt(s, e, r), E = /* @__PURE__ */ new Map(), k = /* @__PURE__ */ new Map(), N = /* @__PURE__ */ new Map(), A = (s.names ?? []).map((b) => ({ name: b, formula: o.compile(b.expression, b.position?.sheet ?? b.sheet ?? s.sheets[0].id, b.position?.row ?? 0, b.position?.column ?? 0, b) }));
|
|
1907
|
+
for (let { formula: b } of A) for (let O of b.diagnostics) await r.diagnostic?.(O);
|
|
1908
|
+
let S = false;
|
|
1903
1909
|
for (let b of s.sheets) {
|
|
1904
1910
|
for (let v of b.formulaGroups ?? []) if (v.kind === "array" && v.range.startRow < g && v.range.startColumn < 256) {
|
|
1905
|
-
let
|
|
1906
|
-
if (
|
|
1907
|
-
|
|
1911
|
+
let R2 = on(v, b.id, s, r, g);
|
|
1912
|
+
if (R2) {
|
|
1913
|
+
N.set(v, R2);
|
|
1908
1914
|
continue;
|
|
1909
1915
|
}
|
|
1910
1916
|
let M = o.compile(v.expression, b.id, v.range.startRow, v.range.startColumn, void 0, v.arrayStringLiterals);
|
|
1911
1917
|
k.set(v, M);
|
|
1912
|
-
for (let _ of M.diagnostics) await
|
|
1918
|
+
for (let _ of M.diagnostics) await r.diagnostic?.(_);
|
|
1913
1919
|
}
|
|
1914
1920
|
let O = 0, C2 = 0;
|
|
1915
1921
|
for (let v of b.cells) O = Math.max(O, v.column), C2 = Math.max(C2, v.row);
|
|
1916
|
-
for (let [v,
|
|
1922
|
+
for (let [v, R2, M] of [["columns", 256, O], ["rows", g, C2]]) M >= R2 && !(n2 && e === 8) && !S && (S = true, await r.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `W Some content will be lost when saving. This format only supports ${R2} ${v}, and this workbook has ${M}` }));
|
|
1917
1923
|
for (let v of b.cells) {
|
|
1918
|
-
if (
|
|
1924
|
+
if (r.signal.throwIfAborted(), v.row >= g || v.column >= 256) continue;
|
|
1919
1925
|
v.value.kind === "string" && !v.formula && !d.has(v.value.value) && (d.set(v.value.value, l.length), l.push(v.value.value)), f.set(v, m2.register(v));
|
|
1920
|
-
let
|
|
1921
|
-
if (
|
|
1926
|
+
let R2 = b.formulaGroups?.find((M) => M.id === v.formulaGroup && M.kind === "array");
|
|
1927
|
+
if (R2) E.set(v, { tokens: new Uint8Array([N.has(R2) ? 2 : 1, ...K2(R2.range.startRow, R2.range.startColumn)]), tokenBoundaries: [5], arrays: new Uint8Array(), arrayBoundaries: [], arrayStrings: [], diagnostics: [], nameDependencies: [] });
|
|
1922
1928
|
else if (v.formula) {
|
|
1923
1929
|
let M = o.compile(v.formula, b.id, v.row, v.column, void 0, v.arrayStringLiterals);
|
|
1924
1930
|
E.set(v, M);
|
|
1925
|
-
for (let _ of M.diagnostics) await
|
|
1931
|
+
for (let _ of M.diagnostics) await r.diagnostic?.(_);
|
|
1926
1932
|
}
|
|
1927
1933
|
}
|
|
1928
1934
|
}
|
|
1929
1935
|
let B = o.finalize(A.map((b) => b.formula));
|
|
1930
|
-
i.record(2057,
|
|
1931
|
-
for (let b of m2.diagnostics) await
|
|
1932
|
-
let
|
|
1936
|
+
i.record(2057, gn(e, 5)), t && i.record(47, t), i.record(225, e === 8 ? K2(1200) : new Uint8Array()), i.record(193, K2(0)), i.record(226), i.record(66, K2(e === 8 ? 1200 : 1252)), e === 8 && s.automaticLabelLookup && i.record(352, K2(1)), e === 8 && (i.record(353, K2(n2 ? 1 : 0)), i.record(448), i.record(317, K2(...s.sheets.map((b, O) => O + 1)))), i.record(156, K2(14)), i.record(25, K2(0)), i.record(18, K2(0)), i.record(19, K2(0)), i.record(61, K2(0, 0, 16335, 10830, 56, Math.max(0, s.sheets.findIndex((b) => b.id === s.activeSheet)), 0, 1, 600)), i.record(64, K2(0)), i.record(141, K2(0)), i.record(34, K2(s.dateSystem === "1904" ? 1 : 0)), i.record(14, K2(1)), i.record(439, K2(0)), i.record(218, K2(0)), m2.serialize(i, e);
|
|
1937
|
+
for (let b of m2.diagnostics) await r.diagnostic?.(b);
|
|
1938
|
+
let F = [];
|
|
1933
1939
|
for (let b of s.sheets) {
|
|
1934
|
-
let O = ce(b.name.slice(0, 31), e,
|
|
1935
|
-
C2[4] = b.visibility === "hidden" ? 1 : b.visibility === "very-hidden" ? 2 : 0, C2.set(O, 6),
|
|
1940
|
+
let O = ce(b.name.slice(0, 31), e, r, 1), C2 = new Uint8Array(6 + O.length);
|
|
1941
|
+
C2[4] = b.visibility === "hidden" ? 1 : b.visibility === "very-hidden" ? 2 : 0, C2.set(O, 6), F.push(i.record(133, C2));
|
|
1936
1942
|
}
|
|
1937
|
-
if (e === 7 &&
|
|
1943
|
+
if (e === 7 && xn(i, o, r), e === 8) {
|
|
1938
1944
|
i.record(140, K2(1, 1));
|
|
1939
1945
|
let b = o.externNames.length > 0;
|
|
1940
1946
|
if (o.externalBooks.length + Number(b) > 65535) throw new Ie("unsupported-feature", "Excel BIFF external workbook index exceeds version limits");
|
|
1941
1947
|
if (b) {
|
|
1942
1948
|
i.record(430, new Uint8Array([1, 0, 1, 58]));
|
|
1943
|
-
for (let O of o.externNames) i.record(35, ye(ye(new Uint8Array(6), ce(O, e,
|
|
1949
|
+
for (let O of o.externNames) i.record(35, ye(ye(new Uint8Array(6), ce(O, e, r, 1)), new Uint8Array([2, 0, 28, 23])));
|
|
1944
1950
|
}
|
|
1945
1951
|
i.record(430, K2(s.sheets.length, 1025));
|
|
1946
1952
|
for (let O of o.externalBooks) {
|
|
1947
|
-
let C2 = ye(K2(O.sheets.length), ce(
|
|
1953
|
+
let C2 = ye(K2(O.sheets.length), ce(nn(O.workbook), e, r));
|
|
1948
1954
|
for (let v of O.sheets) {
|
|
1949
|
-
let
|
|
1950
|
-
if (C2.length +
|
|
1951
|
-
if (C2.length +
|
|
1952
|
-
C2 = ye(C2,
|
|
1955
|
+
let R2 = ce(v, e, r);
|
|
1956
|
+
if (C2.length + R2.length > i.maximumRecord) throw new Ie("unsupported-feature", "Excel BIFF external workbook record is too large");
|
|
1957
|
+
if (C2.length + R2.length + 4 > r.limits.outputBytes - i.length) throw new Ie("resource-limit", "ssconvert BIFF output bytes limit exceeded");
|
|
1958
|
+
C2 = ye(C2, R2);
|
|
1953
1959
|
}
|
|
1954
1960
|
i.record(430, C2);
|
|
1955
|
-
for (let v of O.names) i.record(35, ye(ye(K2(0, v.sheet === void 0 ? 0 : v.sheet + 1, 0), ce(v.name, e,
|
|
1961
|
+
for (let v of O.names) i.record(35, ye(ye(K2(0, v.sheet === void 0 ? 0 : v.sheet + 1, 0), ce(v.name, e, r, 1)), new Uint8Array([2, 0, 28, 23])));
|
|
1956
1962
|
}
|
|
1957
1963
|
i.record(23, K2(o.externalSheets.length + Number(b), ...b ? [0, 65534, 65534] : [], ...o.externalSheets.flatMap((O) => [Number(b) + (O.book === void 0 ? 0 : O.book + 1), O.first, O.last])));
|
|
1958
1964
|
}
|
|
1959
1965
|
for (let b of B) {
|
|
1960
1966
|
let O = A[b];
|
|
1961
1967
|
if (!O) {
|
|
1962
|
-
let I = ce(o.macroNames[b - A.length], e,
|
|
1968
|
+
let I = ce(o.macroNames[b - A.length], e, r, 1), L2 = new Uint8Array(14);
|
|
1963
1969
|
L2[0] = 14, L2[3] = I[0], i.record(24, ye(L2, I.subarray(1)));
|
|
1964
1970
|
continue;
|
|
1965
1971
|
}
|
|
1966
|
-
let { name: C2, formula: v } = O,
|
|
1967
|
-
M[3] =
|
|
1968
|
-
let
|
|
1969
|
-
e === 7 &&
|
|
1970
|
-
let c = M.length +
|
|
1971
|
-
i.continuedRecord(24, ye(ye(M,
|
|
1972
|
+
let { name: C2, formula: v } = O, R2 = ce(C2.name, e, r, 1), M = new Uint8Array(14), _ = new DataView(M.buffer);
|
|
1973
|
+
M[3] = R2[0], _.setUint16(4, v.tokens.length, true);
|
|
1974
|
+
let w2 = C2.sheet === void 0 ? 0 : s.sheets.findIndex((I) => I.id === C2.sheet) + 1;
|
|
1975
|
+
e === 7 && w2 && _.setUint16(6, w2 - 1, true), _.setUint16(8, w2, true);
|
|
1976
|
+
let c = M.length + R2.length - 1;
|
|
1977
|
+
i.continuedRecord(24, ye(ye(M, R2.subarray(1)), ye(v.tokens, v.arrays)), [c, ...v.tokenBoundaries.map((I) => I + c), ...v.arrayBoundaries.map((I) => I + c + v.tokens.length)], v.arrayStrings.map((I) => ({ start: c + v.tokens.length + I.start, end: c + v.tokens.length + I.end })));
|
|
1972
1978
|
}
|
|
1973
|
-
e === 8 && (a.global(i),
|
|
1974
|
-
let
|
|
1979
|
+
e === 8 && (a.global(i), tr(i, l, r)), i.record(10);
|
|
1980
|
+
let p = [];
|
|
1975
1981
|
for (let b of s.sheets) {
|
|
1976
|
-
|
|
1982
|
+
p.push(i.length), i.record(2057, gn(e, 16)), i.record(13, K2(s.calculationMode === "manual" ? 0 : 1)), i.record(12, K2(s.iteration?.maximum ?? 100)), i.record(15, K2(1)), i.record(17, K2(s.iteration?.enabled ? 1 : 0));
|
|
1977
1983
|
let O = new Uint8Array(8);
|
|
1978
|
-
new DataView(O.buffer).setFloat64(0, s.iteration?.tolerance ?? 1e-3, true), i.record(16, O), e === 7 &&
|
|
1979
|
-
let C2 = b.cells.filter((
|
|
1980
|
-
for (let
|
|
1984
|
+
new DataView(O.buffer).setFloat64(0, s.iteration?.tolerance ?? 1e-3, true), i.record(16, O), e === 7 && xn(i, o, r), i.record(95, K2(1)), i.record(130, K2(1)), i.record(128, K2(0, 0, 0, 0)), i.record(549, K2(0, 255));
|
|
1985
|
+
let C2 = b.cells.filter((w2) => w2.row < g && w2.column < 256).sort((w2, c) => w2.row - c.row || w2.column - c.column), v = 0, R2 = 0;
|
|
1986
|
+
for (let w2 of C2) v = Math.max(v, w2.row + 1), R2 = Math.max(R2, w2.column + 1);
|
|
1981
1987
|
let M = new Uint8Array(e === 8 ? 14 : 10), _ = new DataView(M.buffer);
|
|
1982
|
-
e === 8 ? (_.setUint32(4, v, true), _.setUint16(10,
|
|
1983
|
-
for (let
|
|
1984
|
-
await
|
|
1985
|
-
let c = b.formulaGroups?.find((L2) => L2.id ===
|
|
1986
|
-
if (c &&
|
|
1987
|
-
let L2 =
|
|
1988
|
+
e === 8 ? (_.setUint32(4, v, true), _.setUint16(10, R2, true)) : (_.setUint16(2, v, true), _.setUint16(6, R2, true)), i.record(512, M), await a.sheet(i, b, e);
|
|
1989
|
+
for (let w2 of C2) {
|
|
1990
|
+
await rr(i, w2, f.get(w2) ?? 15, e, d, r, E.get(w2));
|
|
1991
|
+
let c = b.formulaGroups?.find((L2) => L2.id === w2.formulaGroup && L2.kind === "array");
|
|
1992
|
+
if (c && w2.row === c.range.startRow && w2.column === c.range.startColumn) {
|
|
1993
|
+
let L2 = N.get(c);
|
|
1988
1994
|
if (L2) i.record(566, L2);
|
|
1989
1995
|
else {
|
|
1990
1996
|
let X2 = k.get(c), z = new Uint8Array(14 + X2.tokens.length + X2.arrays.length), W = new DataView(z.buffer);
|
|
1991
1997
|
W.setUint16(0, c.range.startRow, true), W.setUint16(2, Math.min(c.range.endRow, g - 1), true), z[4] = c.range.startColumn, z[5] = Math.min(c.range.endColumn, 255), W.setUint16(12, X2.tokens.length, true), z.set(X2.tokens, 14), z.set(X2.arrays, 14 + X2.tokens.length), i.continuedRecord(545, z, [14, ...X2.tokenBoundaries.map((q) => q + 14), ...X2.arrayBoundaries.map((q) => q + 14 + X2.tokens.length)], X2.arrayStrings.map((q) => ({ start: 14 + X2.tokens.length + q.start, end: 14 + X2.tokens.length + q.end })));
|
|
1992
1998
|
}
|
|
1993
1999
|
}
|
|
1994
|
-
let I =
|
|
1995
|
-
E.has(
|
|
2000
|
+
let I = w2.cachedResult ?? w2.value;
|
|
2001
|
+
E.has(w2) && I.kind === "string" && nr(i, I.value, e, r);
|
|
1996
2002
|
}
|
|
1997
|
-
if (await a.links(i, b, e), a.view(i, b, e, b === h2), b.merges?.length) {
|
|
1998
|
-
let
|
|
1999
|
-
for (let I = 0; I <
|
|
2000
|
-
let L2 =
|
|
2003
|
+
if (await a.links(i, b, e), await a.view(i, b, e, b === h2), b.merges?.length) {
|
|
2004
|
+
let w2 = b.merges.filter((I) => I.startRow < g && I.startColumn < 256), c = Math.floor((i.maximumRecord - 2) / 8);
|
|
2005
|
+
for (let I = 0; I < w2.length; I += c) {
|
|
2006
|
+
let L2 = w2.slice(I, I + c);
|
|
2001
2007
|
i.record(229, K2(L2.length, ...L2.flatMap((X2) => [X2.startRow, Math.min(X2.endRow, g - 1), X2.startColumn, Math.min(X2.endColumn, 255)])));
|
|
2002
2008
|
}
|
|
2003
2009
|
}
|
|
2004
2010
|
i.record(10);
|
|
2005
2011
|
}
|
|
2006
2012
|
let D = i.finish(), x = new DataView(D.buffer);
|
|
2007
|
-
|
|
2008
|
-
for (let b = 0; b < s.sheets.length; b++) await a.loss(D.subarray(
|
|
2013
|
+
F.forEach((b, O) => x.setUint32(b + 4, p[O], true)), await a.loss(D.subarray(0, p[0]));
|
|
2014
|
+
for (let b = 0; b < s.sheets.length; b++) await a.loss(D.subarray(p[b], p[b + 1]), s.sheets[b]);
|
|
2009
2015
|
return D;
|
|
2010
2016
|
}
|
|
2011
|
-
function
|
|
2012
|
-
let { book:
|
|
2013
|
-
s.record(22, K2(
|
|
2014
|
-
for (let a of
|
|
2015
|
-
let l = ce(a.name, 7,
|
|
2017
|
+
function xn(s, e, n2) {
|
|
2018
|
+
let { book: r, externNames: t, externalBooks: u } = e;
|
|
2019
|
+
s.record(22, K2(r.sheets.length + 2 + u.reduce((a, l) => a + l.sheets.length + 1, 0)));
|
|
2020
|
+
for (let a of r.sheets) {
|
|
2021
|
+
let l = ce(a.name, 7, n2, 1);
|
|
2016
2022
|
s.record(23, new Uint8Array([l[0], 3, ...l.subarray(1)]));
|
|
2017
2023
|
}
|
|
2018
2024
|
s.record(23, new Uint8Array([1, 58]));
|
|
2019
|
-
for (let a of t) s.record(35, ye(ye(new Uint8Array(6), ce(a, 7,
|
|
2025
|
+
for (let a of t) s.record(35, ye(ye(new Uint8Array(6), ce(a, 7, n2, 1)), new Uint8Array([2, 0, 28, 23])));
|
|
2020
2026
|
s.record(23, new Uint8Array([1, 4]));
|
|
2021
2027
|
let i = (a) => {
|
|
2022
|
-
let l = ce(a, 7,
|
|
2028
|
+
let l = ce(a, 7, n2, 1);
|
|
2023
2029
|
if (m(l.subarray(1), 1252) !== a) throw new Ie("unsupported-feature", "Excel BIFF7 external identity is not representable in Windows-1252");
|
|
2024
2030
|
return l;
|
|
2025
2031
|
}, h2 = (a, l) => {
|
|
2026
|
-
if (!a || Array.from(a + (l ?? "")).some((
|
|
2032
|
+
if (!a || Array.from(a + (l ?? "")).some((N) => N.charCodeAt(0) < 32 || "[]".includes(N))) throw new Ie("unsupported-feature", "Excel BIFF7 external path is not representable");
|
|
2027
2033
|
let d = Math.max(a.lastIndexOf("/"), a.lastIndexOf("\\")) + 1, m2 = l === void 0 ? a : a.slice(0, d), f = l === void 0 ? "" : "[" + a.slice(d) + "]" + l, o = 1 + m2.length + f.length + (m2 ? 2 : 0);
|
|
2028
2034
|
if (o > 255) throw new Ie("unsupported-feature", "Excel BIFF7 external path is too long");
|
|
2029
2035
|
let E = i(m2), k = i(f);
|
|
2030
2036
|
return new Uint8Array([o, 1, ...m2 ? [5, E[0], ...E.subarray(1)] : [], ...k.subarray(1)]);
|
|
2031
|
-
}, g =
|
|
2037
|
+
}, g = r.sheets.length + 2;
|
|
2032
2038
|
for (let a of u) {
|
|
2033
2039
|
for (let l of a.sheets) s.record(23, h2(a.workbook, l));
|
|
2034
2040
|
s.record(23, h2(a.workbook));
|
|
@@ -2036,19 +2042,19 @@ function gn(s, e, r) {
|
|
|
2036
2042
|
g += a.sheets.length + 1;
|
|
2037
2043
|
}
|
|
2038
2044
|
}
|
|
2039
|
-
async function
|
|
2040
|
-
let h2 = K2(e.row, e.column,
|
|
2045
|
+
async function rr(s, e, n2, r, t, u, i) {
|
|
2046
|
+
let h2 = K2(e.row, e.column, n2), g = e.value;
|
|
2041
2047
|
if (i) {
|
|
2042
2048
|
let a = new Uint8Array(22 + i.tokens.length + i.arrays.length), l = new DataView(a.buffer);
|
|
2043
2049
|
a.set(h2);
|
|
2044
2050
|
let d = e.cachedResult ?? e.value;
|
|
2045
|
-
d.kind === "number" ? l.setFloat64(6, d.value, true) : (a[6] = d.kind === "string" ? 0 : d.kind === "boolean" ? 1 : d.kind === "error" ? 2 : 3, a[8] = d.kind === "boolean" ? Number(d.value) : d.kind === "error" ?
|
|
2051
|
+
d.kind === "number" ? l.setFloat64(6, d.value, true) : (a[6] = d.kind === "string" ? 0 : d.kind === "boolean" ? 1 : d.kind === "error" ? 2 : 3, a[8] = d.kind === "boolean" ? Number(d.value) : d.kind === "error" ? qe(d.value) : 0, a[12] = 255, a[13] = 255), l.setUint16(14, e.formulaDirty ? 3 : 0, true), l.setUint16(20, i.tokens.length, true), a.set(i.tokens, 22), a.set(i.arrays, 22 + i.tokens.length), s.continuedRecord(6, a, [22, ...i.tokenBoundaries.map((m2) => m2 + 22), ...i.arrayBoundaries.map((m2) => m2 + 22 + i.tokens.length)], i.arrayStrings.map((m2) => ({ start: 22 + i.tokens.length + m2.start, end: 22 + i.tokens.length + m2.end })));
|
|
2046
2052
|
return;
|
|
2047
2053
|
}
|
|
2048
2054
|
if (g.kind === "number") {
|
|
2049
2055
|
let a = new Uint8Array(14);
|
|
2050
2056
|
a.set(h2), new DataView(a.buffer).setFloat64(6, g.value, true), s.record(515, a);
|
|
2051
|
-
} else if (g.kind === "string") if (
|
|
2057
|
+
} else if (g.kind === "string") if (r === 8) {
|
|
2052
2058
|
let a = new Uint8Array(10);
|
|
2053
2059
|
a.set(h2), new DataView(a.buffer).setUint32(6, t.get(g.value), true), s.record(253, a);
|
|
2054
2060
|
} else {
|
|
@@ -2058,26 +2064,26 @@ async function nr(s, e, r, n2, t, u, i) {
|
|
|
2058
2064
|
let d = Array.from(a);
|
|
2059
2065
|
d.length > 65535 && (await u.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `Truncating string of ${d.length} bytes` }), u.signal.throwIfAborted(), a = d.slice(0, 65535).join(""));
|
|
2060
2066
|
}
|
|
2061
|
-
let l = ye(h2, ce(a,
|
|
2067
|
+
let l = ye(h2, ce(a, r, u));
|
|
2062
2068
|
for (let d = 0; d < l.length; d += 2080) s.record(d ? 60 : 516, l.subarray(d, d + 2080));
|
|
2063
2069
|
}
|
|
2064
|
-
else g.kind === "boolean" || g.kind === "error" ? s.record(517, ye(h2, new Uint8Array([g.kind === "boolean" ? Number(g.value) :
|
|
2070
|
+
else g.kind === "boolean" || g.kind === "error" ? s.record(517, ye(h2, new Uint8Array([g.kind === "boolean" ? Number(g.value) : qe(g.value), g.kind === "error" ? 1 : 0]))) : s.record(513, h2);
|
|
2065
2071
|
}
|
|
2066
|
-
async function
|
|
2067
|
-
let i = (
|
|
2068
|
-
if (t(
|
|
2069
|
-
}, f = (
|
|
2070
|
-
t(
|
|
2071
|
-
for (let c of
|
|
2072
|
+
async function yn(s, e, n2, r, t, u) {
|
|
2073
|
+
let i = (w2) => ["SummaryInformation", "DocumentSummaryInformation"].find((c) => c.toUpperCase() === w2.toUpperCase()), h2 = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), l = 0, d = 0, m2 = (w2) => {
|
|
2074
|
+
if (t(w2), l += w2, l > (r.limits.workbookNodes ?? r.limits.outputBytes)) throw new xt("resource-limit", "ssconvert BIFF property node limit exceeded");
|
|
2075
|
+
}, f = (w2) => {
|
|
2076
|
+
t(w2.length);
|
|
2077
|
+
for (let c of w2) {
|
|
2072
2078
|
let I = c.codePointAt(0);
|
|
2073
2079
|
d += I < 128 ? 1 : I < 2048 ? 2 : I < 65536 ? 3 : 4;
|
|
2074
2080
|
}
|
|
2075
|
-
if (d > (
|
|
2076
|
-
return
|
|
2081
|
+
if (d > (r.limits.workbookTextBytes ?? r.limits.outputBytes)) throw new xt("resource-limit", "ssconvert BIFF property text limit exceeded");
|
|
2082
|
+
return w2;
|
|
2077
2083
|
};
|
|
2078
|
-
for (let
|
|
2079
|
-
if (m2(1),
|
|
2080
|
-
let c =
|
|
2084
|
+
for (let w2 of s.unsupportedRecords ?? []) {
|
|
2085
|
+
if (m2(1), w2.source !== "biff" || w2.kind !== "ole-properties" || w2.disposition !== "retained") continue;
|
|
2086
|
+
let c = w2.data;
|
|
2081
2087
|
if (!c || typeof c != "object" || Array.isArray(c)) continue;
|
|
2082
2088
|
let I = c;
|
|
2083
2089
|
if (t(Object.keys(I).length), Object.keys(I).some((z) => !["stream", "bytes", "modeled"].includes(z)) || typeof I.stream != "string" || typeof I.bytes != "string" || I.modeled !== void 0 && !Array.isArray(I.modeled)) continue;
|
|
@@ -2094,23 +2100,23 @@ async function xn(s, e, r, n2, t, u) {
|
|
|
2094
2100
|
let W = "0123456789abcdef".indexOf(I.bytes[z * 2].toLowerCase()), q = "0123456789abcdef".indexOf(I.bytes[z * 2 + 1].toLowerCase());
|
|
2095
2101
|
(W < 0 || q < 0) && n("invalid retained property bytes"), X2[z] = W * 16 + q;
|
|
2096
2102
|
}
|
|
2097
|
-
h2.set(L2, { record:
|
|
2103
|
+
h2.set(L2, { record: w2, bytes: X2, modeled: I.modeled });
|
|
2098
2104
|
}
|
|
2099
|
-
for (let
|
|
2105
|
+
for (let w2 of g) h2.delete(w2);
|
|
2100
2106
|
if (!h2.size) return a;
|
|
2101
|
-
let o = (
|
|
2102
|
-
let I =
|
|
2103
|
-
return { ...c, bytes: I, ...
|
|
2104
|
-
}), E = new Map([...h2].map(([
|
|
2105
|
-
await
|
|
2106
|
-
m2(1),
|
|
2107
|
-
}), await
|
|
2108
|
-
m2(1), A.set(
|
|
2107
|
+
let o = (w2) => He(w2, m2, t).map((c) => {
|
|
2108
|
+
let I = w2.subarray(c.offset, c.end);
|
|
2109
|
+
return { ...c, bytes: I, ...Xe.has(c.guid) || c.guid === me.custom ? { values: Ve(new h(I), m2, t) } : {} };
|
|
2110
|
+
}), E = new Map([...h2].map(([w2, c]) => [w2, o(c.bytes)])), k = new Map([...e].map(([w2, c]) => [w2, o(c)])), N = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Map(), S = (w2) => `${w2.stream}:${w2.section}:${w2.id}`, B = { ...r, limits: { ...r.limits, inputBytes: r.limits.outputBytes } };
|
|
2111
|
+
await We(new Map([...h2].map(([w2, c]) => [w2, c.bytes])), B, f, t, void 0, (w2) => {
|
|
2112
|
+
m2(1), N.set(S(w2), w2);
|
|
2113
|
+
}), await We(e, B, f, t, void 0, (w2) => {
|
|
2114
|
+
m2(1), A.set(w2.key, w2);
|
|
2109
2115
|
});
|
|
2110
|
-
let
|
|
2111
|
-
let c =
|
|
2116
|
+
let F = (w2) => {
|
|
2117
|
+
let c = w2.values?.get(0);
|
|
2112
2118
|
if (!c) return [];
|
|
2113
|
-
let I =
|
|
2119
|
+
let I = w2.values?.get(1)?.u16(4) ?? 1252, L2 = I === 1200 ? 2 : 1, X2 = c.u32(0);
|
|
2114
2120
|
c.check(4, X2 * 9), m2(X2);
|
|
2115
2121
|
let z = 4, W = [];
|
|
2116
2122
|
for (let q = 0; q < X2; q++) {
|
|
@@ -2120,127 +2126,127 @@ async function xn(s, e, r, n2, t, u) {
|
|
|
2120
2126
|
f(oe), z += ie * L2, L2 === 2 && (z = Math.ceil(z / 4) * 4), W.push({ id: te, name: oe, bytes: c.slice(Q2, z - Q2) });
|
|
2121
2127
|
}
|
|
2122
2128
|
return W;
|
|
2123
|
-
},
|
|
2129
|
+
}, p = (w2, c) => {
|
|
2124
2130
|
let I = u(4 + c.reduce((X2, z) => X2 + z.bytes.length, 0));
|
|
2125
2131
|
new DataView(I.buffer).setUint32(0, c.length, true);
|
|
2126
2132
|
let L2 = 4;
|
|
2127
2133
|
for (let X2 of c) t(X2.bytes.length), I.set(X2.bytes, L2), L2 += X2.bytes.length;
|
|
2128
|
-
|
|
2129
|
-
}, D = (
|
|
2130
|
-
|
|
2131
|
-
}, x = (
|
|
2132
|
-
t(k.get(
|
|
2133
|
-
let c = k.get(
|
|
2134
|
-
return D(c,
|
|
2135
|
-
}, b = (
|
|
2136
|
-
if (
|
|
2137
|
-
let I = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(
|
|
2134
|
+
w2.values.set(0, new h(I));
|
|
2135
|
+
}, D = (w2, c) => {
|
|
2136
|
+
w2.values.delete(c), w2.guid === me.custom && p(w2, F(w2).filter((I) => I.id !== c));
|
|
2137
|
+
}, x = (w2) => {
|
|
2138
|
+
t(k.get(w2.stream).length);
|
|
2139
|
+
let c = k.get(w2.stream).find((L2) => L2.offset === w2.section), I = c.values.get(w2.id);
|
|
2140
|
+
return D(c, w2.id), A.delete(w2.key), I;
|
|
2141
|
+
}, b = (w2, c) => {
|
|
2142
|
+
if (w2.u32(0) !== 30 || (c.values.get(1)?.u16(4) ?? 1252) === 65001) return w2;
|
|
2143
|
+
let I = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(w2.slice(8, w2.u32(4) - 1));
|
|
2138
2144
|
t(I.length);
|
|
2139
2145
|
let L2 = u(8 + (I.length + 1) * 2), X2 = new DataView(L2.buffer);
|
|
2140
2146
|
X2.setUint32(0, 31, true), X2.setUint32(4, I.length + 1, true);
|
|
2141
2147
|
for (let z = 0; z < I.length; z++) X2.setUint16(8 + z * 2, I.charCodeAt(z), true);
|
|
2142
2148
|
return new h(L2);
|
|
2143
|
-
}, O = (
|
|
2144
|
-
for (let [
|
|
2149
|
+
}, O = (w2, c) => !Array.isArray(w2) || !Array.isArray(c) ? Object.is(w2, c) : (t(w2.length + c.length), w2.length === c.length && w2.every((I, L2) => Object.is(I, c[L2])));
|
|
2150
|
+
for (let [w2, c] of h2) {
|
|
2145
2151
|
let I = /* @__PURE__ */ new Set(), L2 = c.modeled;
|
|
2146
2152
|
if (!L2) {
|
|
2147
2153
|
L2 = [];
|
|
2148
|
-
for (let X2 of
|
|
2154
|
+
for (let X2 of N.values()) t(1), X2.stream === w2 && (w2 === "SummaryInformation" || h2.has("SummaryInformation") || Object.hasOwn(s.properties ?? {}, X2.key) && O(X2.value, s.properties?.[X2.key])) && (m2(1), L2.push([X2.section, X2.id, X2.key]));
|
|
2149
2155
|
}
|
|
2150
2156
|
for (let X2 of L2) {
|
|
2151
2157
|
m2(1), (!Array.isArray(X2) || X2.length !== 3 || typeof X2[0] != "number" || typeof X2[1] != "number" || typeof X2[2] != "string") && n("invalid retained property identity");
|
|
2152
|
-
let [z, W, q] = X2, Q2 =
|
|
2153
|
-
(!Q2 || Q2.key !== q || I.has(q)) && n("invalid retained property identity"), I.add(q), t(E.get(
|
|
2154
|
-
let te = E.get(
|
|
2158
|
+
let [z, W, q] = X2, Q2 = N.get(S({ stream: w2, section: z, id: W }));
|
|
2159
|
+
(!Q2 || Q2.key !== q || I.has(q)) && n("invalid retained property identity"), I.add(q), t(E.get(w2).length);
|
|
2160
|
+
let te = E.get(w2).find((oe) => oe.offset === z), ie = s.properties?.[q], re = A.get(q);
|
|
2155
2161
|
Object.hasOwn(s.properties ?? {}, q) ? O(Q2.value, ie) ? (a.add(q), re && x(re)) : re && te.values.set(W, b(x(re), te)) : D(te, W);
|
|
2156
2162
|
}
|
|
2157
2163
|
}
|
|
2158
|
-
let C2 = /* @__PURE__ */ new Map(), v = (
|
|
2159
|
-
if (f(
|
|
2164
|
+
let C2 = /* @__PURE__ */ new Map(), v = (w2, c) => {
|
|
2165
|
+
if (f(w2), c === 65001) return new TextEncoder().encode(w2 + "\0");
|
|
2160
2166
|
if (c === 1200) {
|
|
2161
|
-
let z = u((
|
|
2162
|
-
for (let q = 0; q <
|
|
2167
|
+
let z = u((w2.length + 1) * 2), W = new DataView(z.buffer);
|
|
2168
|
+
for (let q = 0; q < w2.length; q++) W.setUint16(q * 2, w2.charCodeAt(q), true);
|
|
2163
2169
|
return z;
|
|
2164
2170
|
}
|
|
2165
2171
|
let I = C2.get(c);
|
|
2166
2172
|
if (!I) {
|
|
2167
2173
|
I = /* @__PURE__ */ new Map(), C2.set(c, I);
|
|
2168
|
-
let z =
|
|
2174
|
+
let z = sr[c], W = z?.single ?? ir[c === 1201 ? "iso-8859-1" : c === 1e4 ? "macintosh" : c >= 1250 && c <= 1258 ? `windows-${c}` : `cp${c}`];
|
|
2169
2175
|
if (!W) return;
|
|
2170
2176
|
for (let q = 0; q < W.length; q++) t(1), W[q] !== "\uFFFF" && !I.has(W[q]) && I.set(W[q], [q]);
|
|
2171
2177
|
if (z) for (let [q, Q2] of Object.entries(z.double)) for (let te = 0; te < Q2.length; te++) t(1), Q2[te] !== "\uFFFF" && !I.has(Q2[te]) && I.set(Q2[te], [Number(q), te]);
|
|
2172
2178
|
}
|
|
2173
2179
|
let L2 = [];
|
|
2174
|
-
for (let z of
|
|
2180
|
+
for (let z of w2 + "\0") {
|
|
2175
2181
|
t(1);
|
|
2176
2182
|
let W = I.get(z);
|
|
2177
2183
|
if (!W) return;
|
|
2178
|
-
if (L2.push(...W), L2.length >
|
|
2184
|
+
if (L2.push(...W), L2.length > r.limits.outputBytes) throw new xt("resource-limit", "ssconvert BIFF property output bytes limit exceeded");
|
|
2179
2185
|
}
|
|
2180
2186
|
let X2 = Uint8Array.from(L2);
|
|
2181
|
-
return m(X2, c) ===
|
|
2182
|
-
},
|
|
2183
|
-
for (let
|
|
2184
|
-
t(k.get(
|
|
2185
|
-
let c = k.get(
|
|
2187
|
+
return m(X2, c) === w2 + "\0" ? X2 : void 0;
|
|
2188
|
+
}, R2 = async (w2, c) => r.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `Unsupported Excel BIFF document property: ${w2} (${c}; original property bytes retained)` });
|
|
2189
|
+
for (let w2 of [...A.values()]) {
|
|
2190
|
+
t(k.get(w2.stream).length + (E.get(w2.stream)?.length ?? 0));
|
|
2191
|
+
let c = k.get(w2.stream).find((W) => W.offset === w2.section), I = E.get(w2.stream)?.find((W) => W.guid === c.guid);
|
|
2186
2192
|
if (!I) continue;
|
|
2187
|
-
let L2 = x(
|
|
2193
|
+
let L2 = x(w2), X2 = I.values, z = w2.id;
|
|
2188
2194
|
if (I.guid === me.custom) {
|
|
2189
2195
|
let W;
|
|
2190
2196
|
try {
|
|
2191
|
-
W =
|
|
2197
|
+
W = F(I);
|
|
2192
2198
|
} catch (oe) {
|
|
2193
|
-
if (!(oe instanceof
|
|
2194
|
-
await
|
|
2199
|
+
if (!(oe instanceof xt) || oe.code !== "unsupported-feature") throw oe;
|
|
2200
|
+
await R2(w2.key, "unknown dictionary encoding");
|
|
2195
2201
|
continue;
|
|
2196
2202
|
}
|
|
2197
|
-
if (t(W.length + X2.size), W.some((oe) => oe.name ===
|
|
2198
|
-
await
|
|
2203
|
+
if (t(W.length + X2.size), W.some((oe) => oe.name === w2.key)) {
|
|
2204
|
+
await R2(w2.key, "opaque name collision");
|
|
2199
2205
|
continue;
|
|
2200
2206
|
}
|
|
2201
|
-
let q = X2.get(1)?.u16(4) ?? 1252, Q2 = v(
|
|
2207
|
+
let q = X2.get(1)?.u16(4) ?? 1252, Q2 = v(w2.key, q);
|
|
2202
2208
|
if (!Q2) {
|
|
2203
|
-
await
|
|
2209
|
+
await R2(w2.key, "name cannot be encoded in the original codepage");
|
|
2204
2210
|
continue;
|
|
2205
2211
|
}
|
|
2206
2212
|
z = 1;
|
|
2207
2213
|
for (let oe of X2.keys()) z = Math.max(z, oe);
|
|
2208
2214
|
for (let oe of W) z = Math.max(z, oe.id);
|
|
2209
2215
|
if (z++, z > 4294967295) {
|
|
2210
|
-
await
|
|
2216
|
+
await R2(w2.key, "no free property ID");
|
|
2211
2217
|
continue;
|
|
2212
2218
|
}
|
|
2213
2219
|
let te = 8 + Q2.length, ie = u(q === 1200 ? Math.ceil(te / 4) * 4 : te), re = new DataView(ie.buffer);
|
|
2214
|
-
re.setUint32(0, z, true), re.setUint32(4, Q2.length / (q === 1200 ? 2 : 1), true), ie.set(Q2, 8),
|
|
2220
|
+
re.setUint32(0, z, true), re.setUint32(4, Q2.length / (q === 1200 ? 2 : 1), true), ie.set(Q2, 8), p(I, [...W, { id: z, name: w2.key, bytes: ie }]);
|
|
2215
2221
|
} else if (X2.has(z)) {
|
|
2216
|
-
await
|
|
2222
|
+
await R2(w2.key, "opaque property ID collision");
|
|
2217
2223
|
continue;
|
|
2218
2224
|
}
|
|
2219
2225
|
X2.set(z, b(L2, I));
|
|
2220
2226
|
}
|
|
2221
|
-
let M = (
|
|
2222
|
-
if (!
|
|
2223
|
-
let c = [...
|
|
2227
|
+
let M = (w2) => {
|
|
2228
|
+
if (!w2.values) return w2.bytes;
|
|
2229
|
+
let c = [...w2.values], I = u(8 + c.length * 8 + c.reduce((z, [, W]) => z + Math.ceil(W.bytes.length / 4) * 4, 0)), L2 = new DataView(I.buffer);
|
|
2224
2230
|
L2.setUint32(0, I.length, true), L2.setUint32(4, c.length, true);
|
|
2225
2231
|
let X2 = 8 + c.length * 8;
|
|
2226
2232
|
return c.forEach(([z, W], q) => {
|
|
2227
2233
|
t(W.bytes.length), L2.setUint32(8 + q * 8, z, true), L2.setUint32(12 + q * 8, X2, true), I.set(W.bytes, X2), X2 += Math.ceil(W.bytes.length / 4) * 4;
|
|
2228
2234
|
}), I;
|
|
2229
2235
|
};
|
|
2230
|
-
for (let
|
|
2231
|
-
for (let Q2 of k.get(
|
|
2232
|
-
let c = k.get(
|
|
2233
|
-
if (!E.has(
|
|
2234
|
-
let Q2 = k.get(
|
|
2236
|
+
for (let w2 of /* @__PURE__ */ new Set([...e.keys(), ...h2.keys()])) {
|
|
2237
|
+
for (let Q2 of k.get(w2) ?? []) t(1 + Q2.values.size);
|
|
2238
|
+
let c = k.get(w2)?.filter((Q2) => [...Q2.values.keys()].some((te) => te >= 2)) ?? [];
|
|
2239
|
+
if (!E.has(w2) && c.some((Q2) => Q2.guid === me.custom) && !c.some((Q2) => Q2.guid === me.document)) {
|
|
2240
|
+
let Q2 = k.get(w2)?.find((te) => te.guid === me.document);
|
|
2235
2241
|
Q2 && c.unshift(Q2);
|
|
2236
2242
|
}
|
|
2237
|
-
let I = [...E.get(
|
|
2243
|
+
let I = [...E.get(w2) ?? [], ...c];
|
|
2238
2244
|
if (!I.length) {
|
|
2239
|
-
e.delete(
|
|
2245
|
+
e.delete(w2);
|
|
2240
2246
|
continue;
|
|
2241
2247
|
}
|
|
2242
2248
|
let L2 = I.map(M), X2 = u(28 + I.length * 20 + L2.reduce((Q2, te) => Q2 + te.length, 0));
|
|
2243
|
-
X2.set((h2.get(
|
|
2249
|
+
X2.set((h2.get(w2)?.bytes ?? e.get(w2)).subarray(0, 28));
|
|
2244
2250
|
let z = new DataView(X2.buffer);
|
|
2245
2251
|
z.setUint32(24, I.length, true);
|
|
2246
2252
|
let W = 28 + I.length * 20;
|
|
@@ -2248,34 +2254,34 @@ async function xn(s, e, r, n2, t, u) {
|
|
|
2248
2254
|
t(1);
|
|
2249
2255
|
for (let ie = 0; ie < 16; ie++) X2[28 + te * 20 + ie] = parseInt(Q2.guid.slice(ie * 2, ie * 2 + 2), 16);
|
|
2250
2256
|
z.setUint32(44 + te * 20, W, true), X2.set(L2[te], W), W += L2[te].length;
|
|
2251
|
-
}), e.set(
|
|
2252
|
-
let q = h2.get(
|
|
2253
|
-
q &&
|
|
2257
|
+
}), e.set(w2, X2);
|
|
2258
|
+
let q = h2.get(w2);
|
|
2259
|
+
q && n2.add(q.record);
|
|
2254
2260
|
}
|
|
2255
2261
|
let _ = /* @__PURE__ */ new Set();
|
|
2256
|
-
await
|
|
2257
|
-
m2(1), Object.hasOwn(s.properties ?? {},
|
|
2262
|
+
await We(e, B, f, t, void 0, (w2) => {
|
|
2263
|
+
m2(1), Object.hasOwn(s.properties ?? {}, w2.key) || _.add(w2.key);
|
|
2258
2264
|
});
|
|
2259
|
-
for (let
|
|
2265
|
+
for (let w2 of _) await R2(w2, "opaque property exposes a field absent from the model");
|
|
2260
2266
|
return a;
|
|
2261
2267
|
}
|
|
2262
|
-
var
|
|
2263
|
-
var
|
|
2264
|
-
function
|
|
2268
|
+
var Ut = new Map([...Xe].flatMap(([s, e]) => [...e].map(([n2, r]) => [r, { guid: s, id: n2 }])));
|
|
2269
|
+
var Ot = 0xffffffffffffffffn;
|
|
2270
|
+
function or(s, e, n2) {
|
|
2265
2271
|
if (s.disposition !== "retained" || s.source !== "Gnumeric_XmlIO:sax" || s.kind !== "document-meta") return false;
|
|
2266
|
-
let
|
|
2267
|
-
if (
|
|
2272
|
+
let r = "urn:oasis:names:tc:opendocument:xmlns:office:1.0", t = "urn:oasis:names:tc:opendocument:xmlns:meta:1.0", u = (m2) => {
|
|
2273
|
+
if (n2(1), !m2 || typeof m2 != "object" || Array.isArray(m2)) return;
|
|
2268
2274
|
let f = m2;
|
|
2269
|
-
for (let o in f) if (Object.hasOwn(f, o) && (
|
|
2270
|
-
if (!(typeof f.name != "string" || typeof f.namespace != "string" || typeof f.text != "string" || !Array.isArray(f.attributes) || !Array.isArray(f.children))) return
|
|
2275
|
+
for (let o in f) if (Object.hasOwn(f, o) && (n2(1), !["name", "namespace", "text", "attributes", "children"].includes(o))) return;
|
|
2276
|
+
if (!(typeof f.name != "string" || typeof f.namespace != "string" || typeof f.text != "string" || !Array.isArray(f.attributes) || !Array.isArray(f.children))) return n2(f.name.length + f.namespace.length + f.text.length + f.attributes.length + f.children.length), f;
|
|
2271
2277
|
}, i = (m2, f, o) => {
|
|
2272
2278
|
let E = /* @__PURE__ */ new Map();
|
|
2273
2279
|
for (let k of m2.attributes) {
|
|
2274
|
-
if (
|
|
2275
|
-
let
|
|
2276
|
-
for (let A in
|
|
2277
|
-
if (typeof
|
|
2278
|
-
|
|
2280
|
+
if (n2(1), !k || typeof k != "object" || Array.isArray(k)) return;
|
|
2281
|
+
let N = k;
|
|
2282
|
+
for (let A in N) if (Object.hasOwn(N, A) && (n2(1), !["name", "namespace", "value"].includes(A))) return;
|
|
2283
|
+
if (typeof N.name != "string" || N.namespace !== f || typeof N.value != "string" || !o.includes(N.name) || E.has(N.name)) return;
|
|
2284
|
+
n2(N.name.length + f.length + N.value.length), E.set(N.name, N.value);
|
|
2279
2285
|
}
|
|
2280
2286
|
return E;
|
|
2281
2287
|
}, h2 = (m2) => {
|
|
@@ -2283,11 +2289,11 @@ function sr(s, e, r) {
|
|
|
2283
2289
|
`].includes(f)) return false;
|
|
2284
2290
|
return true;
|
|
2285
2291
|
}, g = u(s.data);
|
|
2286
|
-
if (!g || g.name !== "document-meta" || g.namespace !==
|
|
2287
|
-
let a = i(g,
|
|
2292
|
+
if (!g || g.name !== "document-meta" || g.namespace !== r || !h2(g.text) || g.children.length !== 1) return false;
|
|
2293
|
+
let a = i(g, r, ["version"]);
|
|
2288
2294
|
if (!a || a.has("version") && !["1.0", "1.1", "1.2", "1.3"].includes(a.get("version"))) return false;
|
|
2289
2295
|
let l = u(g.children[0]);
|
|
2290
|
-
if (!l || l.name !== "meta" || l.namespace !==
|
|
2296
|
+
if (!l || l.name !== "meta" || l.namespace !== r || !h2(l.text) || l.attributes.length) return false;
|
|
2291
2297
|
let d = /* @__PURE__ */ new Map();
|
|
2292
2298
|
for (let m2 of l.children) {
|
|
2293
2299
|
let f = u(m2);
|
|
@@ -2296,21 +2302,21 @@ function sr(s, e, r) {
|
|
|
2296
2302
|
if (f.namespace === t && f.name === "user-defined") {
|
|
2297
2303
|
let k = i(f, t, ["name", "value-type", "type"]);
|
|
2298
2304
|
if (!k?.has("name") || k.has("type") && k.has("value-type")) return false;
|
|
2299
|
-
let
|
|
2300
|
-
if (!["string", "float", "boolean"].includes(
|
|
2305
|
+
let N = k.get("value-type") ?? k.get("type") ?? "string";
|
|
2306
|
+
if (!["string", "float", "boolean"].includes(N) || N === "boolean" && !["true", "false"].includes(f.text) || N === "float" && (!f.text.trim() || !Number.isFinite(Number(f.text)))) return false;
|
|
2301
2307
|
o = k.get("name");
|
|
2302
|
-
} else if (f.attributes.length || (o = f.namespace === t ? f.name === "keyword" ? "dc:keywords" : "meta:" + f.name : f.namespace === "http://purl.org/dc/elements/1.1/" ? "dc:" + f.name : void 0, o === void 0 || !
|
|
2308
|
+
} else if (f.attributes.length || (o = f.namespace === t ? f.name === "keyword" ? "dc:keywords" : "meta:" + f.name : f.namespace === "http://purl.org/dc/elements/1.1/" ? "dc:" + f.name : void 0, o === void 0 || !Ut.has(o))) return false;
|
|
2303
2309
|
let E = f.namespace === t && f.name === "keyword";
|
|
2304
2310
|
if (o === void 0 || !e.has(o) || d.has(o) && !(E && d.get(o))) return false;
|
|
2305
2311
|
d.set(o, E);
|
|
2306
2312
|
}
|
|
2307
2313
|
return true;
|
|
2308
2314
|
}
|
|
2309
|
-
function
|
|
2315
|
+
function ar(s) {
|
|
2310
2316
|
if (!s.startsWith("P")) return;
|
|
2311
|
-
let e = 1,
|
|
2317
|
+
let e = 1, n2 = false, r = -1, t = 0n;
|
|
2312
2318
|
for (; e < s.length; ) {
|
|
2313
|
-
if (s[e] === "T" && !
|
|
2319
|
+
if (s[e] === "T" && !n2 && (n2 = true, e++, e === s.length)) return;
|
|
2314
2320
|
let u = 0n, i = 0, h2 = 0n, g = false, a = 0;
|
|
2315
2321
|
for (; e < s.length; ) {
|
|
2316
2322
|
let f = s.charCodeAt(e) - 48;
|
|
@@ -2319,174 +2325,174 @@ function or(s) {
|
|
|
2319
2325
|
if (a < 7) h2 = h2 * 10n + BigInt(f);
|
|
2320
2326
|
else if (f) return;
|
|
2321
2327
|
a++;
|
|
2322
|
-
} else if (u = u * 10n + BigInt(f), i++, u >
|
|
2328
|
+
} else if (u = u * 10n + BigInt(f), i++, u > Ot) return;
|
|
2323
2329
|
e++;
|
|
2324
2330
|
} else if (s[e] === "." && !g) g = true, e++;
|
|
2325
2331
|
else break;
|
|
2326
2332
|
}
|
|
2327
|
-
let l = s[e++], d = l === "D" && !
|
|
2328
|
-
if (!i || d <=
|
|
2333
|
+
let l = s[e++], d = l === "D" && !n2 ? 0 : n2 ? ["H", "M", "S"].indexOf(l ?? "") + 1 : -1;
|
|
2334
|
+
if (!i || d <= r || d < 0 || n2 && d === 0 || g && (l !== "S" || !a) || (r = d, t += u * [864000000000n, 36000000000n, 600000000n, 10000000n][d] + h2 * 10n ** BigInt(Math.max(0, 7 - a)), t > Ot)) return;
|
|
2329
2335
|
}
|
|
2330
|
-
return
|
|
2336
|
+
return r < 0 ? void 0 : t;
|
|
2331
2337
|
}
|
|
2332
|
-
async function
|
|
2333
|
-
let
|
|
2334
|
-
if (e.signal.throwIfAborted(), i += A, i > (e.limits.workbookWork ?? e.limits.outputBytes * 8)) throw new
|
|
2338
|
+
async function bn(s, e) {
|
|
2339
|
+
let n2 = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Set(), u = [], i = 0, h2 = 0, g = 0, a = 0, l = (A) => {
|
|
2340
|
+
if (e.signal.throwIfAborted(), i += A, i > (e.limits.workbookWork ?? e.limits.outputBytes * 8)) throw new Me("resource-limit", "ssconvert BIFF property work limit exceeded");
|
|
2335
2341
|
}, d = (A) => {
|
|
2336
|
-
if (l(A), A > 4294967295 || A > e.limits.outputBytes) throw new
|
|
2342
|
+
if (l(A), A > 4294967295 || A > e.limits.outputBytes) throw new Me("resource-limit", "ssconvert BIFF property output bytes limit exceeded");
|
|
2337
2343
|
return new Uint8Array(A);
|
|
2338
2344
|
}, m2 = (A) => {
|
|
2339
|
-
let
|
|
2340
|
-
for (let
|
|
2345
|
+
let S = 0;
|
|
2346
|
+
for (let F = 0; F < A.length; F++) {
|
|
2341
2347
|
l(1);
|
|
2342
|
-
let
|
|
2343
|
-
if (
|
|
2344
|
-
|
|
2345
|
-
}
|
|
2346
|
-
if (h2 +=
|
|
2347
|
-
let B = d(5 +
|
|
2348
|
-
return new DataView(B.buffer).setUint32(0,
|
|
2349
|
-
}, f = (A,
|
|
2350
|
-
let B = ["meta:creation-date", "meta:print-date", "dc:date"].includes(
|
|
2351
|
-
if (B ||
|
|
2348
|
+
let p = A.codePointAt(F);
|
|
2349
|
+
if (p >= 55296 && p <= 57343) throw new Me("unsupported-feature", "Excel BIFF property text contains an unpaired surrogate");
|
|
2350
|
+
S += p < 128 ? 1 : p < 2048 ? 2 : p < 65536 ? 3 : 4, p >= 65536 && F++;
|
|
2351
|
+
}
|
|
2352
|
+
if (h2 += S, h2 > (e.limits.workbookTextBytes ?? e.limits.outputBytes)) throw new Me("resource-limit", "ssconvert BIFF property text limit exceeded");
|
|
2353
|
+
let B = d(5 + S);
|
|
2354
|
+
return new DataView(B.buffer).setUint32(0, S + 1, true), new TextEncoder().encodeInto(A, B.subarray(4, 4 + S)), B;
|
|
2355
|
+
}, f = (A, S) => {
|
|
2356
|
+
let B = ["meta:creation-date", "meta:print-date", "dc:date"].includes(S);
|
|
2357
|
+
if (B || S === "meta:editing-duration") {
|
|
2352
2358
|
if (typeof A != "string") return;
|
|
2353
2359
|
l(A.length);
|
|
2354
|
-
let
|
|
2360
|
+
let p;
|
|
2355
2361
|
if (B) {
|
|
2356
2362
|
let b = A.slice(-6), C2 = A.endsWith("Z") || (b[0] === "+" || b[0] === "-") && b[3] === ":" ? Date.parse(A) + 116444736e5 : NaN;
|
|
2357
2363
|
if (Number.isSafeInteger(C2) && C2 >= 0) {
|
|
2358
|
-
|
|
2364
|
+
p = BigInt(C2) * 10000n;
|
|
2359
2365
|
let v = A.indexOf(".", A.indexOf("T"));
|
|
2360
2366
|
if (v >= 0) {
|
|
2361
|
-
let
|
|
2362
|
-
for (;
|
|
2363
|
-
let M = A.slice(v + 1,
|
|
2367
|
+
let R2 = v + 1;
|
|
2368
|
+
for (; R2 < A.length && A[R2] >= "0" && A[R2] <= "9"; ) R2++;
|
|
2369
|
+
let M = A.slice(v + 1, R2);
|
|
2364
2370
|
if ([...M.slice(7)].some((_) => _ !== "0")) return;
|
|
2365
|
-
|
|
2371
|
+
p += BigInt(M.slice(3, 7).padEnd(4, "0"));
|
|
2366
2372
|
}
|
|
2367
2373
|
}
|
|
2368
|
-
} else
|
|
2369
|
-
if (
|
|
2374
|
+
} else p = ar(A);
|
|
2375
|
+
if (p === void 0 || p > Ot) return;
|
|
2370
2376
|
let D = d(12), x = new DataView(D.buffer);
|
|
2371
|
-
return x.setUint32(0, 64, true), x.setBigUint64(4,
|
|
2377
|
+
return x.setUint32(0, 64, true), x.setBigUint64(4, p, true), D;
|
|
2372
2378
|
}
|
|
2373
|
-
let
|
|
2374
|
-
if (
|
|
2375
|
-
if (
|
|
2379
|
+
let F = Ut.get(S);
|
|
2380
|
+
if (F) {
|
|
2381
|
+
if (F.guid === me.summary && [14, 15, 16, 19].includes(F.id)) {
|
|
2376
2382
|
if (typeof A != "number" || !Number.isInteger(A) || A < -2147483648 || A > 2147483647) return;
|
|
2377
2383
|
Object.is(A, -0) && (A = 0);
|
|
2378
2384
|
} else if (typeof A == "number" && Number.isFinite(A) && (A = String(A)), typeof A != "string") return;
|
|
2379
2385
|
}
|
|
2380
2386
|
if (typeof A == "string") {
|
|
2381
|
-
let
|
|
2382
|
-
return new DataView(D.buffer).setUint32(0, 30, true), D.set(
|
|
2387
|
+
let p = m2(A), D = d(4 + p.length);
|
|
2388
|
+
return new DataView(D.buffer).setUint32(0, 30, true), D.set(p, 4), D;
|
|
2383
2389
|
}
|
|
2384
2390
|
if (typeof A == "boolean") {
|
|
2385
|
-
let
|
|
2386
|
-
return D.setUint32(0, 11, true), D.setUint16(4, A ? 65535 : 0, true),
|
|
2391
|
+
let p = d(8), D = new DataView(p.buffer);
|
|
2392
|
+
return D.setUint32(0, 11, true), D.setUint16(4, A ? 65535 : 0, true), p;
|
|
2387
2393
|
}
|
|
2388
2394
|
if (typeof A == "number" && Number.isFinite(A)) {
|
|
2389
|
-
let
|
|
2390
|
-
return x.setUint32(0,
|
|
2395
|
+
let p = Number.isInteger(A) && A >= -2147483648 && A <= 2147483647 && !Object.is(A, -0), D = d(p ? 8 : 12), x = new DataView(D.buffer);
|
|
2396
|
+
return x.setUint32(0, p ? 3 : 5, true), p ? x.setInt32(4, A, true) : x.setFloat64(4, A, true), D;
|
|
2391
2397
|
}
|
|
2392
2398
|
}, o = [];
|
|
2393
2399
|
for (let A in s.properties) if (Object.hasOwn(s.properties, A)) {
|
|
2394
|
-
if (l(1), ++g > (e.limits.workbookNodes ?? e.limits.outputBytes)) throw new
|
|
2395
|
-
let
|
|
2400
|
+
if (l(1), ++g > (e.limits.workbookNodes ?? e.limits.outputBytes)) throw new Me("resource-limit", "ssconvert BIFF property node limit exceeded");
|
|
2401
|
+
let S = Ut.get(A);
|
|
2396
2402
|
t.add(A);
|
|
2397
2403
|
let B = s.properties[A];
|
|
2398
2404
|
if (A === "dc:keywords" && Array.isArray(B)) {
|
|
2399
|
-
if (l(B.length), g += B.length, g > (e.limits.workbookNodes ?? e.limits.outputBytes)) throw new
|
|
2405
|
+
if (l(B.length), g += B.length, g > (e.limits.workbookNodes ?? e.limits.outputBytes)) throw new Me("resource-limit", "ssconvert BIFF property node limit exceeded");
|
|
2400
2406
|
let O = true, C2 = Math.max(0, B.length - 1) * 2;
|
|
2401
2407
|
for (let v of B) {
|
|
2402
|
-
if (typeof v != "string" || v.includes(",") || !v.length ||
|
|
2408
|
+
if (typeof v != "string" || v.includes(",") || !v.length || Ye(v.charCodeAt(0)) || Ye(v.charCodeAt(v.length - 1))) {
|
|
2403
2409
|
O = false;
|
|
2404
2410
|
break;
|
|
2405
2411
|
}
|
|
2406
|
-
if (C2 += v.length, C2 > (e.limits.workbookTextBytes ?? e.limits.outputBytes) - h2) throw new
|
|
2412
|
+
if (C2 += v.length, C2 > (e.limits.workbookTextBytes ?? e.limits.outputBytes) - h2) throw new Me("resource-limit", "ssconvert BIFF property text limit exceeded");
|
|
2407
2413
|
}
|
|
2408
2414
|
O && (B = B.join(", "));
|
|
2409
2415
|
}
|
|
2410
|
-
let
|
|
2411
|
-
if (!
|
|
2416
|
+
let F = A ? f(B, A) : void 0;
|
|
2417
|
+
if (!F) {
|
|
2412
2418
|
u.push(A);
|
|
2413
2419
|
continue;
|
|
2414
2420
|
}
|
|
2415
|
-
let
|
|
2416
|
-
if (!
|
|
2421
|
+
let p = S?.guid ?? me.custom, D = S?.id ?? o.length + 2, x = 0;
|
|
2422
|
+
if (!S) {
|
|
2417
2423
|
let O = m2(A);
|
|
2418
2424
|
x = O.length, o.push({ id: D, bytes: O });
|
|
2419
2425
|
}
|
|
2420
|
-
if (a +=
|
|
2421
|
-
let b =
|
|
2422
|
-
b.set(D,
|
|
2426
|
+
if (a += F.length + x, a > e.limits.outputBytes) throw new Me("resource-limit", "ssconvert BIFF property output bytes limit exceeded");
|
|
2427
|
+
let b = r.get(p) ?? /* @__PURE__ */ new Map();
|
|
2428
|
+
b.set(D, F), r.set(p, b);
|
|
2423
2429
|
}
|
|
2424
2430
|
let E = /* @__PURE__ */ new Set();
|
|
2425
|
-
for (let A of s.unsupportedRecords ?? []) l(1),
|
|
2431
|
+
for (let A of s.unsupportedRecords ?? []) l(1), or(A, t, l) && E.add(A);
|
|
2426
2432
|
if (o.length) {
|
|
2427
|
-
let A = d(4 + o.reduce((
|
|
2428
|
-
|
|
2433
|
+
let A = d(4 + o.reduce((F, p) => F + 4 + p.bytes.length, 0)), S = new DataView(A.buffer);
|
|
2434
|
+
S.setUint32(0, o.length, true);
|
|
2429
2435
|
let B = 4;
|
|
2430
|
-
for (let
|
|
2431
|
-
|
|
2436
|
+
for (let F of o) l(1), S.setUint32(B, F.id, true), A.set(F.bytes, B + 4), B += 4 + F.bytes.length;
|
|
2437
|
+
r.get(me.custom).set(0, A), r.has(me.document) || r.set(me.document, /* @__PURE__ */ new Map());
|
|
2432
2438
|
}
|
|
2433
2439
|
let k = /* @__PURE__ */ new Map();
|
|
2434
|
-
for (let [A,
|
|
2435
|
-
let B = d(8),
|
|
2436
|
-
|
|
2437
|
-
let
|
|
2438
|
-
l(
|
|
2439
|
-
let D = 8 +
|
|
2440
|
-
b.setUint32(0, D, true), b.setUint32(4,
|
|
2441
|
-
let O = 8 +
|
|
2442
|
-
for (let C2 = 0; C2 <
|
|
2440
|
+
for (let [A, S] of r) {
|
|
2441
|
+
let B = d(8), F = new DataView(B.buffer);
|
|
2442
|
+
F.setUint32(0, 2, true), F.setUint16(4, 65001, true), S.set(1, B);
|
|
2443
|
+
let p = [...S].sort(([C2], [v]) => C2 - v);
|
|
2444
|
+
l(p.length * Math.ceil(Math.log2(p.length + 1)));
|
|
2445
|
+
let D = 8 + p.length * 8 + p.reduce((C2, [, v]) => C2 + Math.ceil(v.length / 4) * 4, 0), x = d(D), b = new DataView(x.buffer);
|
|
2446
|
+
b.setUint32(0, D, true), b.setUint32(4, p.length, true);
|
|
2447
|
+
let O = 8 + p.length * 8;
|
|
2448
|
+
for (let C2 = 0; C2 < p.length; C2++) {
|
|
2443
2449
|
l(1);
|
|
2444
|
-
let [v,
|
|
2445
|
-
b.setUint32(8 + C2 * 8, v, true), b.setUint32(12 + C2 * 8, O, true), x.set(
|
|
2450
|
+
let [v, R2] = p[C2];
|
|
2451
|
+
b.setUint32(8 + C2 * 8, v, true), b.setUint32(12 + C2 * 8, O, true), x.set(R2, O), O += Math.ceil(R2.length / 4) * 4;
|
|
2446
2452
|
}
|
|
2447
2453
|
k.set(A, x);
|
|
2448
2454
|
}
|
|
2449
|
-
for (let [A,
|
|
2450
|
-
let B =
|
|
2455
|
+
for (let [A, S] of [["SummaryInformation", [me.summary]], ["DocumentSummaryInformation", [me.document, me.custom]]]) {
|
|
2456
|
+
let B = S.filter((x) => k.has(x));
|
|
2451
2457
|
if (!B.length) continue;
|
|
2452
|
-
let
|
|
2453
|
-
|
|
2458
|
+
let F = d(28 + B.length * 20 + B.reduce((x, b) => x + k.get(b).length, 0)), p = new DataView(F.buffer);
|
|
2459
|
+
p.setUint16(0, 65534, true), p.setUint32(4, 131073, true), p.setUint32(24, B.length, true);
|
|
2454
2460
|
let D = 28 + B.length * 20;
|
|
2455
2461
|
for (let x = 0; x < B.length; x++) {
|
|
2456
2462
|
l(1);
|
|
2457
2463
|
let b = B[x], O = k.get(b);
|
|
2458
|
-
for (let C2 = 0; C2 < 16; C2++)
|
|
2459
|
-
|
|
2464
|
+
for (let C2 = 0; C2 < 16; C2++) F[28 + x * 20 + C2] = parseInt(b.slice(C2 * 2, C2 * 2 + 2), 16);
|
|
2465
|
+
p.setUint32(44 + x * 20, D, true), F.set(O, D), D += O.length;
|
|
2460
2466
|
}
|
|
2461
|
-
|
|
2467
|
+
n2.set(A, F);
|
|
2462
2468
|
}
|
|
2463
|
-
let
|
|
2464
|
-
for (let A of u)
|
|
2465
|
-
return { streams:
|
|
2469
|
+
let N = await yn(s, n2, E, e, l, d);
|
|
2470
|
+
for (let A of u) N.has(A) || await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `Unsupported Excel BIFF document property: ${A}` });
|
|
2471
|
+
return { streams: n2, handledMetadata: E };
|
|
2466
2472
|
}
|
|
2467
|
-
function
|
|
2468
|
-
return async (e,
|
|
2469
|
-
|
|
2473
|
+
function Gs(s) {
|
|
2474
|
+
return async (e, n2, r) => {
|
|
2475
|
+
r.signal.throwIfAborted();
|
|
2470
2476
|
let t;
|
|
2471
|
-
for (let a of
|
|
2472
|
-
let u = await
|
|
2477
|
+
for (let a of n2) for (let [l, d] of fr(a)) if (l === "encryption" && (t = Tt.get(d), !t || s !== 8 && t.algorithm !== "xor")) throw new be("invalid-request", "Invalid Excel BIFF encryption profile");
|
|
2478
|
+
let u = await bn(e, r), i = new Map(u.streams), h2 = new Set(u.handledMetadata), g = /* @__PURE__ */ new Map();
|
|
2473
2479
|
try {
|
|
2474
|
-
t?.algorithm === "rc4-cryptoapi" && t.encryptedProperties &&
|
|
2480
|
+
t?.algorithm === "rc4-cryptoapi" && t.encryptedProperties && $t(e, i, h2, r);
|
|
2475
2481
|
let a = h2.size ? { ...e, unsupportedRecords: (e.unsupportedRecords ?? []).filter((l) => !h2.has(l)) } : e;
|
|
2476
|
-
if ((s === 7 || s === "dsf") && g.set("Book", await
|
|
2477
|
-
let l = await
|
|
2482
|
+
if ((s === 7 || s === "dsf") && g.set("Book", await Ct(a, 7, s === "dsf", r, t ? St(t, 7) : void 0)), s === 8 || s === "dsf") {
|
|
2483
|
+
let l = await Ct(a, 8, s === "dsf", r, t ? St(t) : void 0);
|
|
2478
2484
|
if (g.set("Workbook", l), t && t.algorithm !== "xor") {
|
|
2479
|
-
let d = await
|
|
2485
|
+
let d = await qt(l, r, t, i);
|
|
2480
2486
|
d && g.set("encryption", d);
|
|
2481
2487
|
}
|
|
2482
2488
|
}
|
|
2483
|
-
if (t?.algorithm === "xor" && await
|
|
2489
|
+
if (t?.algorithm === "xor" && await Qt([...g.values()], s === 7 ? 7 : 8, r), g.has("encryption")) {
|
|
2484
2490
|
let l = new Uint8Array(56), d = new DataView(l.buffer);
|
|
2485
2491
|
d.setUint16(0, 65534, true), d.setUint32(24, 1, true), d.setUint32(44, 48, true), d.setUint32(48, 8, true);
|
|
2486
2492
|
for (let m2 = 0; m2 < 16; m2++) l[28 + m2] = parseInt(me.document.slice(m2 * 2, m2 * 2 + 2), 16);
|
|
2487
2493
|
g.set("DocumentSummaryInformation", l);
|
|
2488
2494
|
} else for (let [l, d] of i) g.set(l, d);
|
|
2489
|
-
return
|
|
2495
|
+
return hn(g, r);
|
|
2490
2496
|
} finally {
|
|
2491
2497
|
if (t) {
|
|
2492
2498
|
for (let a of g.values()) a.fill(0);
|
|
@@ -2495,51 +2501,51 @@ function Ps(s) {
|
|
|
2495
2501
|
}
|
|
2496
2502
|
};
|
|
2497
2503
|
}
|
|
2498
|
-
var
|
|
2499
|
-
var
|
|
2500
|
-
var
|
|
2501
|
-
var
|
|
2502
|
-
var
|
|
2503
|
-
function
|
|
2504
|
+
var In = ["Workbook", "WORKBOOK", "workbook", "Book", "BOOK", "book"];
|
|
2505
|
+
var Mt = /* @__PURE__ */ new Set([9, 521, 1033, 2057]);
|
|
2506
|
+
var lr = { 0: "General", 1: "0", 2: "0.00", 3: "#,##0", 4: "#,##0.00", 5: "$#,##0_);($#,##0)", 6: "$#,##0_);[Red]($#,##0)", 7: "$#,##0.00_);($#,##0.00)", 8: "$#,##0.00_);[Red]($#,##0.00)", 9: "0%", 10: "0.00%", 11: "0.00E+00", 12: "# ?/?", 13: "# ??/??", 14: "m/d/yy", 15: "d-mmm-yy", 16: "d-mmm", 17: "mmm-yy", 18: "h:mm AM/PM", 19: "h:mm:ss AM/PM", 20: "h:mm", 21: "h:mm:ss", 22: "m/d/yy h:mm", 37: "#,##0_);(#,##0)", 38: "#,##0_);[Red](#,##0)", 39: "#,##0.00_);(#,##0.00)", 40: "#,##0.00_);[Red](#,##0.00)", 45: "mm:ss", 46: "[h]:mm:ss", 47: "mm:ss.0", 48: "##0.0E+0", 49: "@" };
|
|
2507
|
+
var En = ["000000", "FFFFFF", "FF0000", "00FF00", "0000FF", "FFFF00", "FF00FF", "00FFFF", "800000", "008000", "000080", "808000", "800080", "008080", "C0C0C0", "808080", "9999FF", "993366", "FFFFCC", "CCFFFF", "660066", "FF8080", "0066CC", "CCCCFF", "000080", "FF00FF", "FFFF00", "00FFFF", "800080", "800000", "008080", "0000FF", "00CCFF", "CCFFFF", "CCFFCC", "FFFF99", "99CCFF", "FF99CC", "CC99FF", "FFCC99", "3366FF", "33CCCC", "99CC00", "FFCC00", "FF9900", "FF6600", "666699", "969696", "003366", "339966", "003300", "333300", "993300", "993366", "333399", "333333"];
|
|
2508
|
+
var cr = /* @__PURE__ */ new Set([11, 523, 215, 255, 22, 31, 91, 92, 192, 193, 225, 226, 64, 140, 156, 191, 218, 352, 353, 317, 448, 449, 450, 134, 135, 155, 128, 130, 141, 95, 139, 142, 1070, 431, 14, 659, 439, 444]);
|
|
2509
|
+
function An(s) {
|
|
2504
2510
|
if (s.data.check(0, 4), s.opcode !== 2057) return s.opcode === 9 ? 2 : s.opcode === 521 ? 3 : 4;
|
|
2505
|
-
let e = s.data.u16(0),
|
|
2506
|
-
return
|
|
2511
|
+
let e = s.data.u16(0), r = { 1536: 8, 1280: 7, 1024: 4, 768: 3, 512: 2, 7: 2, 0: 2 }[e];
|
|
2512
|
+
return r || n("unknown BIFF revision"), r;
|
|
2507
2513
|
}
|
|
2508
|
-
function
|
|
2514
|
+
function ur(s, e) {
|
|
2509
2515
|
if (!K(s)) return s;
|
|
2510
|
-
let
|
|
2511
|
-
for (let
|
|
2512
|
-
let t =
|
|
2516
|
+
let n2 = Q(s, e);
|
|
2517
|
+
for (let r of In) {
|
|
2518
|
+
let t = n2.get(r);
|
|
2513
2519
|
if (t) return t;
|
|
2514
2520
|
}
|
|
2515
2521
|
}
|
|
2516
|
-
async function
|
|
2522
|
+
async function Hs(s, e) {
|
|
2517
2523
|
if (e.signal.throwIfAborted(), !K(s)) return s[0] === 9 && (s[1] & 241) === 0;
|
|
2518
2524
|
try {
|
|
2519
|
-
return
|
|
2520
|
-
} catch (
|
|
2521
|
-
if (e.signal.throwIfAborted(),
|
|
2522
|
-
throw
|
|
2525
|
+
return ur(s, e) !== void 0;
|
|
2526
|
+
} catch (n2) {
|
|
2527
|
+
if (e.signal.throwIfAborted(), n2 instanceof be && n2.code === "io") return false;
|
|
2528
|
+
throw n2;
|
|
2523
2529
|
}
|
|
2524
2530
|
}
|
|
2525
|
-
async function
|
|
2531
|
+
async function Vs(s, e, n2) {
|
|
2526
2532
|
if (e.signal.throwIfAborted(), s.length > e.limits.inputBytes) throw new be("resource-limit", "ssconvert input bytes limit exceeded");
|
|
2527
|
-
let
|
|
2533
|
+
let r = new Uint8Array(s), t = K(r) ? Q(r, e) : void 0, u = t ? In.map((T) => t.get(T)).find((T) => T !== void 0) : r;
|
|
2528
2534
|
if (!u) throw new be("io", "E No Workbook or Book streams found.");
|
|
2529
2535
|
let i = X(u, e);
|
|
2530
|
-
(!i[0] || !
|
|
2531
|
-
let h2 = C(
|
|
2536
|
+
(!i[0] || !Mt.has(i[0].opcode)) && n("missing BOF");
|
|
2537
|
+
let h2 = C(n2), g = h2 ?? 1252, a = An(i[0]), l = "1900", d = await zt(i, a, e, t), m2 = "automatic", f = 100, o = 1e-3, E = false, k = false, N = 0, A = 0, S = 0, B = 0, F = [], p = [], D = [], x = [], b = [], O = /* @__PURE__ */ new Map(), C2 = [], v = [], R2 = [], M = [], _ = [...En], w2 = new Map(Object.entries(lr).map(([T, G]) => [Number(T), G])), c = [], I = [], L2, X2 = 0, z = 0, W = (T) => {
|
|
2532
2538
|
if (A += new TextEncoder().encode(T).length, A > (e.limits.workbookTextBytes ?? e.limits.inputBytes)) throw new be("resource-limit", "ssconvert BIFF text limit exceeded");
|
|
2533
2539
|
return T;
|
|
2534
2540
|
}, q = (T) => {
|
|
2535
2541
|
if (e.signal.throwIfAborted(), B += T, B > (e.limits.workbookWork ?? e.limits.inputBytes * 8)) throw new be("resource-limit", "ssconvert BIFF formula work limit exceeded");
|
|
2536
2542
|
}, Q2 = async (T, G, y = true) => {
|
|
2537
|
-
if (
|
|
2538
|
-
let P =
|
|
2543
|
+
if (S += T.data.bytes.length * 2, S > (e.limits.workbookTextBytes ?? e.limits.inputBytes * 2)) throw new be("resource-limit", "ssconvert BIFF metadata limit exceeded");
|
|
2544
|
+
let P = Zt[T.opcode]?.join("/") ?? `opcode-0x${T.opcode.toString(16)}`;
|
|
2539
2545
|
G.push({ source: "biff", kind: P, disposition: "retained", data: { opcode: T.opcode, offset: T.offset, bytes: Array.from(T.data.bytes, (Z) => Z.toString(16).padStart(2, "0")).join("") } }), y && await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `BIFF ${P} retained without semantic interpretation` });
|
|
2540
2546
|
}, te = (T, G, y, P = {}) => {
|
|
2541
2547
|
let Z = G.u16(0), j = G.u16(2);
|
|
2542
|
-
if ((j > 255 || Z >= (a >= 8 ? 65536 : 16384)) && n("cell outside worksheet"), ++
|
|
2548
|
+
if ((j > 255 || Z >= (a >= 8 ? 65536 : 16384)) && n("cell outside worksheet"), ++N > e.limits.cells) throw new be("resource-limit", "ssconvert cells limit exceeded");
|
|
2543
2549
|
let U = a === 2 ? G.u8(4) & 63 : G.u16(4), V = { cell: { row: Z, column: j, value: y, ...P }, xf: U, revision: a, codepage: g };
|
|
2544
2550
|
return T.cells.push(V), V;
|
|
2545
2551
|
}, ie = (T, G) => {
|
|
@@ -2564,13 +2570,13 @@ async function Hs(s, e, r) {
|
|
|
2564
2570
|
for (let T = 0; T < i.length; T++) {
|
|
2565
2571
|
e.signal.throwIfAborted();
|
|
2566
2572
|
let G = i[T], y = G.data, P = G.opcode;
|
|
2567
|
-
if (
|
|
2568
|
-
a =
|
|
2569
|
-
let U = y.u16(2), V =
|
|
2573
|
+
if (Mt.has(P)) {
|
|
2574
|
+
a = An(G);
|
|
2575
|
+
let U = y.u16(2), V = F.find((Y) => Y.offset === G.offset), $;
|
|
2570
2576
|
if (U === 16 || U === 64 || U === 32 && !I.length) {
|
|
2571
|
-
if (
|
|
2572
|
-
let Y = W(V?.name ?? (
|
|
2573
|
-
|
|
2577
|
+
if (p.length >= e.limits.sheets) throw new be("resource-limit", "ssconvert sheets limit exceeded");
|
|
2578
|
+
let Y = W(V?.name ?? (p.length ? `Worksheet${p.length + 1}` : "Worksheet"));
|
|
2579
|
+
p.some((J) => J.name === Y) && n("duplicate worksheet name"), $ = { id: Y, name: Y, offset: G.offset, visibility: V?.visibility ?? "visible", cells: [], merges: [], rows: [], columns: [], labelRanges: [], unsupportedRecords: [], view: {}, records: [], revision: a, codepage: g, groups: [], legacyExternalSheets: [], legacyExternalLinks: /* @__PURE__ */ new Map() }, p.push($);
|
|
2574
2580
|
}
|
|
2575
2581
|
I.push({ type: U, ...$ ? { sheet: $ } : {}, revision: a }), L2 = void 0, [5, 16, 64, 256].includes(U) || await Q2(G, $?.unsupportedRecords ?? D);
|
|
2576
2582
|
continue;
|
|
@@ -2618,14 +2624,14 @@ async function Hs(s, e, r) {
|
|
|
2618
2624
|
if (P === 351 && a === 8 && j) {
|
|
2619
2625
|
let U = [y];
|
|
2620
2626
|
for (; i[T + 1]?.opcode === 60; ) U.push(i[++T].data);
|
|
2621
|
-
for (let V of
|
|
2627
|
+
for (let V of fn(U, q)) j.labelRanges.push(V);
|
|
2622
2628
|
continue;
|
|
2623
2629
|
}
|
|
2624
2630
|
if (P === 133) {
|
|
2625
2631
|
let U = y.u32(0), V = y.u8(4), $ = y.u8(5), Y = y.u8(6);
|
|
2626
2632
|
(V > 2 || U >= u.length) && n("invalid BOUNDSHEET");
|
|
2627
2633
|
let J = new w([new h(y.slice(7, y.bytes.length - 7))], e, g), ee = W(a >= 8 ? J.unicode(Y).text : J.legacy(Y));
|
|
2628
|
-
|
|
2634
|
+
F.push({ offset: U, name: ee, type: $, visibility: V === 0 ? "visible" : V === 1 ? "hidden" : "very-hidden" });
|
|
2629
2635
|
continue;
|
|
2630
2636
|
}
|
|
2631
2637
|
if (P === 252) {
|
|
@@ -2644,7 +2650,7 @@ async function Hs(s, e, r) {
|
|
|
2644
2650
|
let U = a >= 7 ? y.u16(0) : z++, V = a >= 4 ? 2 : 0, $ = a >= 8 ? y.u16(V) : y.u8(V), Y = V + (a >= 8 ? 2 : 1), J = ie(T, Y);
|
|
2645
2651
|
T = J.next;
|
|
2646
2652
|
let ee = new w(J.parts, e, g);
|
|
2647
|
-
|
|
2653
|
+
w2.set(U, W(a >= 8 ? ee.unicode($).text : ee.legacy($)));
|
|
2648
2654
|
continue;
|
|
2649
2655
|
}
|
|
2650
2656
|
if ([224, 67, 579, 1091].includes(P)) {
|
|
@@ -2653,9 +2659,9 @@ async function Hs(s, e, r) {
|
|
|
2653
2659
|
}
|
|
2654
2660
|
if ([49, 561].includes(P)) {
|
|
2655
2661
|
let U = y.u16(2), V = a >= 5, $ = V ? 15 : a >= 3 ? 7 : 5, Y = y.u8($ - 1), J = new w([new h(y.slice($, y.bytes.length - $))], e, g);
|
|
2656
|
-
|
|
2662
|
+
R2.length === 4 && R2.push(R2[0]);
|
|
2657
2663
|
let ee = V ? y.u8(12) : 1, ne = { 0: h2 ?? 1252, 1: 1252, 255: 1252, 77: 1e4, 128: 932, 129: 949, 130: 1361, 134: 936, 136: 950, 161: 1253, 162: 1254, 163: 1258, 177: 1255, 178: 1256, 186: 1257, 204: 1251, 222: 874, 238: 1250 };
|
|
2658
|
-
|
|
2664
|
+
R2.push({ name: W(a >= 8 ? J.unicode(Y).text : J.legacy(Y)), color: a >= 3 ? y.u16(4) : 32767, codepage: ne[ee] ?? 1252, attributes: { Unit: y.u16(0) / 20, Bold: V ? y.u16(6) >= 700 ? 1 : 0 : U & 1 ? 1 : 0, Italic: U & 2 ? 1 : 0, StrikeThrough: U & 8 ? 1 : 0, Underline: V ? { 1: 1, 2: 2, 33: 3, 34: 4 }[y.u8(10)] ?? 0 : U & 4 ? 1 : 0, Script: V ? y.u16(8) === 1 ? 1 : y.u16(8) === 2 ? -1 : 0 : 0 } });
|
|
2659
2665
|
continue;
|
|
2660
2666
|
}
|
|
2661
2667
|
if (P === 146) {
|
|
@@ -2673,7 +2679,7 @@ async function Hs(s, e, r) {
|
|
|
2673
2679
|
let J = new w(Y.parts, e, g), ee = W(J.unicode(y.u16(2)).text);
|
|
2674
2680
|
if (ee === "\0") U = "local";
|
|
2675
2681
|
else {
|
|
2676
|
-
V =
|
|
2682
|
+
V = Bt(ee);
|
|
2677
2683
|
for (let ne = 0; ne < y.u16(0); ne++) $.push(W(J.unicode(J.word()).text));
|
|
2678
2684
|
}
|
|
2679
2685
|
}
|
|
@@ -2700,7 +2706,7 @@ async function Hs(s, e, r) {
|
|
|
2700
2706
|
else if (V === 2) $.push(j?.name);
|
|
2701
2707
|
else if (V === 4) $.push(null);
|
|
2702
2708
|
else {
|
|
2703
|
-
let Y = V === 58 && U === 1 && y.bytes.length === 2, J = y.slice(1, U), ee = Y ? void 0 :
|
|
2709
|
+
let Y = V === 58 && U === 1 && y.bytes.length === 2, J = y.slice(1, U), ee = Y ? void 0 : tn(J, g, W);
|
|
2704
2710
|
(j?.legacyExternalLinks ?? O).set($.length, { ...ee, addin: Y, names: [] }), $.push(void 0), Y || await Q2(G, j?.unsupportedRecords ?? D, ee === void 0);
|
|
2705
2711
|
}
|
|
2706
2712
|
continue;
|
|
@@ -2715,7 +2721,7 @@ async function Hs(s, e, r) {
|
|
|
2715
2721
|
T = ge.next, x.push({ name: W(pe), flags: U, tokens: ge.tokens, arrays: ge.arrays, sheetIndex: ee, scopeIsWorksheet: J, revision: a, codepage: g, record: G, ...j ? { owner: j } : {} });
|
|
2716
2722
|
continue;
|
|
2717
2723
|
}
|
|
2718
|
-
if (!
|
|
2724
|
+
if (!cr.has(P)) {
|
|
2719
2725
|
if (P === 15) {
|
|
2720
2726
|
j && (j.view.referenceMode = y.u16(0) ? "A1" : "R1C1");
|
|
2721
2727
|
continue;
|
|
@@ -2739,15 +2745,15 @@ async function Hs(s, e, r) {
|
|
|
2739
2745
|
else if (P === 3 || P === 515) {
|
|
2740
2746
|
let V = y.f64(U);
|
|
2741
2747
|
Number.isFinite(V) || n("nonfinite cell number"), te(j, y, { kind: "number", value: V });
|
|
2742
|
-
} else if (P === 5 || P === 517) te(j, y, y.u8(U + 1) ? { kind: "error", value:
|
|
2743
|
-
else if (P === 638) te(j, y, { kind: "number", value:
|
|
2748
|
+
} else if (P === 5 || P === 517) te(j, y, y.u8(U + 1) ? { kind: "error", value: Ce[y.u8(U)] ?? "#UNKNOWN!" } : { kind: "boolean", value: !!y.u8(U) });
|
|
2749
|
+
else if (P === 638) te(j, y, { kind: "number", value: kn(y.u32(6)) });
|
|
2744
2750
|
else if (P === 253) {
|
|
2745
2751
|
let V = c[y.u32(6)];
|
|
2746
2752
|
V || n("invalid shared string index"), te(j, y, { kind: "string", value: V.text }, V.richText ? { richText: V.richText } : {});
|
|
2747
2753
|
} else {
|
|
2748
2754
|
let V = P === 4 ? y.u8(7) : y.u16(6), $ = ie(T, 8);
|
|
2749
2755
|
T = $.next;
|
|
2750
|
-
let Y = M[a === 2 ? y.u8(4) & 63 : y.u16(4)], J = Y ?
|
|
2756
|
+
let Y = M[a === 2 ? y.u8(4) & 63 : y.u16(4)], J = Y ? R2[Y.revision >= 5 ? Y.data.u16(0) : Y.data.u8(0)] : void 0, ee = new w($.parts, e, J?.codepage ?? g), ne = a >= 8 ? ee.unicode(V) : { text: ee.legacy(V) };
|
|
2751
2757
|
te(j, y, { kind: "string", value: W(ne.text) }, ne.richText ? { richText: ne.richText } : {}), P === 214 && await Q2(G, j.unsupportedRecords);
|
|
2752
2758
|
}
|
|
2753
2759
|
L2 = void 0;
|
|
@@ -2758,7 +2764,7 @@ async function Hs(s, e, r) {
|
|
|
2758
2764
|
(V < U || V > 255 || y.bytes.length !== 6 + (V - U + 1) * $) && n("invalid multiple-cell record");
|
|
2759
2765
|
for (let Y = U; Y <= V; Y++) {
|
|
2760
2766
|
let J = new Uint8Array(6), ee = new DataView(J.buffer);
|
|
2761
|
-
ee.setUint16(0, y.u16(0), true), ee.setUint16(2, Y, true), ee.setUint16(4, y.u16(4 + (Y - U) * $), true), te(j, new h(J), P === 189 ? { kind: "number", value:
|
|
2767
|
+
ee.setUint16(0, y.u16(0), true), ee.setUint16(2, Y, true), ee.setUint16(4, y.u16(4 + (Y - U) * $), true), te(j, new h(J), P === 189 ? { kind: "number", value: kn(y.u32(6 + (Y - U) * $)) } : { kind: "blank" });
|
|
2762
2768
|
}
|
|
2763
2769
|
continue;
|
|
2764
2770
|
}
|
|
@@ -2769,7 +2775,7 @@ async function Hs(s, e, r) {
|
|
|
2769
2775
|
Number.isFinite(ue) || n("nonfinite formula cache"), Y = { kind: "number", value: ue };
|
|
2770
2776
|
} else {
|
|
2771
2777
|
let ue = y.u8(U);
|
|
2772
|
-
J = ue === 0, Y = ue === 1 ? { kind: "boolean", value: !!y.u8(U + 2) } : ue === 2 ? { kind: "error", value:
|
|
2778
|
+
J = ue === 0, Y = ue === 1 ? { kind: "boolean", value: !!y.u8(U + 2) } : ue === 2 ? { kind: "error", value: Ce[y.u8(U + 2)] ?? "#UNKNOWN!" } : { kind: "blank" }, ue > 3 && n("invalid formula cache tag");
|
|
2773
2779
|
}
|
|
2774
2780
|
L2 = te(j, y, Y, { cachedResult: Y, formulaDirty: !!(y.u16(14) & 3) });
|
|
2775
2781
|
let ee = re(T, V, $);
|
|
@@ -2780,9 +2786,9 @@ async function Hs(s, e, r) {
|
|
|
2780
2786
|
if (J && ae !== 7 && ae !== 519) {
|
|
2781
2787
|
let ue = { kind: "error", value: "MISSING STRING" };
|
|
2782
2788
|
L2.cell = { ...L2.cell, value: ue, cachedResult: ue };
|
|
2783
|
-
let
|
|
2784
|
-
for (let
|
|
2785
|
-
await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `EXCEL: missing STRING record for ${
|
|
2789
|
+
let Le = "";
|
|
2790
|
+
for (let et = L2.cell.column + 1; et; et = Math.floor((et - 1) / 26)) Le = String.fromCharCode(65 + (et - 1) % 26) + Le;
|
|
2791
|
+
await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `EXCEL: missing STRING record for ${Le}${L2.cell.row + 1}` }), pe || (L2 = void 0);
|
|
2786
2792
|
}
|
|
2787
2793
|
continue;
|
|
2788
2794
|
}
|
|
@@ -2791,7 +2797,7 @@ async function Hs(s, e, r) {
|
|
|
2791
2797
|
if ((U.endRow < U.startRow || U.endColumn < U.startColumn || !L2) && n("invalid shared/array formula group"), (L2.cell.row < U.startRow || L2.cell.row > U.endRow || L2.cell.column < U.startColumn || L2.cell.column > U.endColumn || U.endRow >= (a >= 8 ? 65536 : 16384)) && n("invalid shared/array formula group"), ++X2 > e.limits.operations) throw new be("resource-limit", "ssconvert BIFF formula group limit exceeded");
|
|
2792
2798
|
if (P === 54 || P === 55 || P === 566) {
|
|
2793
2799
|
(a === 2 != (P !== 566) || U.startRow < 1 || U.startColumn < 1 || L2.cell.row !== U.startRow || L2.cell.column !== U.startColumn) && n("invalid data-table anchor or version");
|
|
2794
|
-
let J =
|
|
2800
|
+
let J = sn(y, a, P);
|
|
2795
2801
|
J === void 0 && await Q2(G, j.unsupportedRecords), j.groups.push({ id: `biff-${j.offset}-${G.offset}`, kind: "table", range: U, tokens: Uint8Array.of(2), arrays: [], ...J === void 0 ? {} : { expression: J }, keyRow: U.startRow, keyColumn: U.startColumn });
|
|
2796
2802
|
continue;
|
|
2797
2803
|
}
|
|
@@ -2856,7 +2862,7 @@ async function Hs(s, e, r) {
|
|
|
2856
2862
|
Number.isFinite(U) || n("invalid print margin"), j.view[["marginLeft", "marginRight", "marginTop", "marginBottom"][P - 38]] = U, await Q2(G, j.unsupportedRecords, false);
|
|
2857
2863
|
continue;
|
|
2858
2864
|
}
|
|
2859
|
-
if (
|
|
2865
|
+
if (dn.has(P)) {
|
|
2860
2866
|
await Q2(G, j.unsupportedRecords, false);
|
|
2861
2867
|
continue;
|
|
2862
2868
|
}
|
|
@@ -2865,29 +2871,29 @@ async function Hs(s, e, r) {
|
|
|
2865
2871
|
}
|
|
2866
2872
|
}
|
|
2867
2873
|
I.length && n("missing EOF");
|
|
2868
|
-
for (let T of
|
|
2869
|
-
|
|
2870
|
-
let y =
|
|
2874
|
+
for (let T of F) i.some((G) => G.offset === T.offset && Mt.has(G.opcode)) || n("BOUNDSHEET offset is not a BOF"), T.type === 0 && !p.some((G) => G.offset === T.offset) && n("missing declared worksheet");
|
|
2875
|
+
p.sort((T, G) => {
|
|
2876
|
+
let y = F.findIndex((Z) => Z.offset === T.offset), P = F.findIndex((Z) => Z.offset === G.offset);
|
|
2871
2877
|
return y < 0 || P < 0 ? T.offset - G.offset : y - P;
|
|
2872
2878
|
});
|
|
2873
2879
|
let oe = v.map((T) => {
|
|
2874
2880
|
if (C2[T.book]?.kind !== "local") return;
|
|
2875
|
-
let G =
|
|
2881
|
+
let G = p[T.first]?.name, y = p[T.last]?.name;
|
|
2876
2882
|
if (!(G === void 0 || y === void 0)) return T.first === T.last ? G : [G, y];
|
|
2877
|
-
}), he = v.map((T) => C2[T.book]?.kind !== "local" ? void 0 : T.first >= 65534 ? null :
|
|
2883
|
+
}), he = v.map((T) => C2[T.book]?.kind !== "local" ? void 0 : T.first >= 65534 ? null : p[T.first]?.name), Se = v.map((T) => {
|
|
2878
2884
|
let G = C2[T.book], y = G?.sheets[T.first], P = G?.sheets[T.last];
|
|
2879
2885
|
return G?.workbook === void 0 || y === void 0 || P === void 0 ? void 0 : { workbook: G.workbook, first: y, last: P };
|
|
2880
|
-
}),
|
|
2881
|
-
if (T.sheetIndex) return (T.scopeIsWorksheet ?
|
|
2882
|
-
}),
|
|
2883
|
-
let J =
|
|
2884
|
-
return
|
|
2886
|
+
}), Pe = v.map((T) => C2[T.book]?.kind === "local" && (T.first === 65535 || T.last === 65535)), de = v.map((T) => C2[T.book]?.kind === "external"), Ge = p.map((T) => T.name), Ne = x.map((T) => {
|
|
2887
|
+
if (T.sheetIndex) return (T.scopeIsWorksheet ? p[T.sheetIndex - 1]?.name : (T.owner?.legacyExternalSheets ?? b)[T.sheetIndex - 1]) ?? void 0;
|
|
2888
|
+
}), yt = /* @__PURE__ */ new Map(), Lt = x.map((T) => T.name), Qe = new ct(e, p), Ze = /* @__PURE__ */ new WeakSet(), bt = (T, G, y, P, Z = 0, j = 0, U, V = false, $ = Qe.resolve, Y = false) => {
|
|
2889
|
+
let J = rn(G ?? [], y, P, { ...e, limits: { ...e.limits, workbookTextBytes: (e.limits.workbookTextBytes ?? e.limits.inputBytes) - A } }, q);
|
|
2890
|
+
return at(T, { revision: y, codepage: P, row: Z, column: j, accountWork: q, ...J, readArray() {
|
|
2885
2891
|
let ee = J.readArray();
|
|
2886
|
-
return
|
|
2887
|
-
}, names:
|
|
2888
|
-
},
|
|
2889
|
-
for (let T of
|
|
2890
|
-
let G = [], y =
|
|
2892
|
+
return Ze.add(T), ee;
|
|
2893
|
+
}, names: Lt, resolveName: $, externalSheets: y >= 8 ? oe : U?.legacyExternalSheets ?? b, ...U ? { currentSheet: U.name } : {}, shared: V, globalNameDefinition: Y, localSheets: Ge, nameSheets: Ne, deletedExternalSheets: Pe, unavailableExternalSheets: de, externalNameSheets: he, externalWorkbooks: y >= 8 ? Se : _t.get(U), externalNames: y >= 8 ? Sn : Dt.get(U), limit: e.limits.workbookWork ?? e.limits.inputBytes * 8 });
|
|
2894
|
+
}, Rn = [...C2.filter((T) => T.kind !== "local").map((T) => T.names), ...[O, ...p.map((T) => T.legacyExternalLinks)].flatMap((T) => [...T.values()].filter((G) => G.addin).map((G) => G.names))], Fn = new Map(x.filter((T) => T.sheetIndex === 0).map((T) => [T.name, T])), Tn = new Map(C2.filter((T) => T.kind === "external").map((T) => [T.names, T]));
|
|
2895
|
+
for (let T of Rn) {
|
|
2896
|
+
let G = [], y = Tn.get(T);
|
|
2891
2897
|
for (let P of T) {
|
|
2892
2898
|
if (!P.supported) {
|
|
2893
2899
|
G.push({ name: P.name });
|
|
@@ -2902,7 +2908,7 @@ async function Hs(s, e, r) {
|
|
|
2902
2908
|
G.push(P.sheetIndex && j === void 0 ? void 0 : { name: P.name, workbook: y.workbook, ...j === void 0 ? {} : { sheet: j } });
|
|
2903
2909
|
continue;
|
|
2904
2910
|
}
|
|
2905
|
-
let Z =
|
|
2911
|
+
let Z = Fn.get(P.name);
|
|
2906
2912
|
if (Z && Z.record.offset < P.record.offset) {
|
|
2907
2913
|
if (!(Z.tokens.length === 0 || Z.tokens.length === 2 && Z.tokens[0] === 28 && Z.tokens[1] === 29)) {
|
|
2908
2914
|
G.push(void 0);
|
|
@@ -2911,55 +2917,55 @@ async function Hs(s, e, r) {
|
|
|
2911
2917
|
Z.tokens = P.tokens, Z.arrays = P.arrays ?? [], Z.revision = P.revision, Z.codepage = P.codepage, G.push({ name: P.name, expression: "=[]" + P.name });
|
|
2912
2918
|
} else G.push({ name: P.name, expression: "=#REF!" });
|
|
2913
2919
|
}
|
|
2914
|
-
|
|
2920
|
+
yt.set(T, G);
|
|
2915
2921
|
}
|
|
2916
|
-
let
|
|
2922
|
+
let Sn = v.map((T) => {
|
|
2917
2923
|
let G = C2[T.book];
|
|
2918
|
-
return G ?
|
|
2919
|
-
}),
|
|
2920
|
-
for (let T of [void 0, ...
|
|
2924
|
+
return G ? yt.get(G.names) : void 0;
|
|
2925
|
+
}), Dt = /* @__PURE__ */ new Map(), _t = /* @__PURE__ */ new Map();
|
|
2926
|
+
for (let T of [void 0, ...p]) {
|
|
2921
2927
|
let G = T?.legacyExternalLinks ?? O, y = T?.legacyExternalSheets ?? b;
|
|
2922
|
-
|
|
2928
|
+
_t.set(T, y.map((P, Z) => {
|
|
2923
2929
|
let j = G.get(Z);
|
|
2924
2930
|
return j?.workbook !== void 0 && j.sheet !== void 0 ? { workbook: j.workbook, first: j.sheet, last: j.sheet } : void 0;
|
|
2925
|
-
})),
|
|
2931
|
+
})), Dt.set(T, y.map((P, Z) => {
|
|
2926
2932
|
let j = G.get(Z);
|
|
2927
|
-
if (j) return j.addin ?
|
|
2933
|
+
if (j) return j.addin ? yt.get(j.names) : j.names.map((U) => {
|
|
2928
2934
|
if (!U.supported || j.workbook === void 0 || j.sheet !== void 0) return { name: U.name };
|
|
2929
2935
|
let V = U.sheetIndex ? G.get(U.sheetIndex - 1) : void 0;
|
|
2930
2936
|
if (!(U.sheetIndex && (U.sheetIndex > Z || V?.workbook !== j.workbook || V?.sheet === void 0))) return { name: U.name, workbook: j.workbook, ...V?.sheet === void 0 ? {} : { sheet: V.sheet } };
|
|
2931
2937
|
});
|
|
2932
2938
|
}));
|
|
2933
2939
|
}
|
|
2934
|
-
let
|
|
2940
|
+
let Je = [];
|
|
2935
2941
|
for (let [T, G] of x.entries()) {
|
|
2936
2942
|
G.sheetIndex && Ne[T] === void 0 && n("invalid name sheet scope");
|
|
2937
2943
|
try {
|
|
2938
|
-
|
|
2944
|
+
Qe.define(T + 1, G.name, Ne[T], (y) => G.tokens.length ? bt(G.tokens, G.arrays, G.revision, G.codepage, 0, 0, G.owner, false, y, !G.sheetIndex) : "=#NAME?");
|
|
2939
2945
|
} catch (y) {
|
|
2940
2946
|
if (!(y instanceof be) || y.code !== "unsupported-feature") throw y;
|
|
2941
2947
|
await Q2(G.record, D, false), D.push({ source: "biff", kind: "untranslated-name", disposition: "retained", data: { name: G.name } }), await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: y.message });
|
|
2942
2948
|
}
|
|
2943
2949
|
}
|
|
2944
|
-
let
|
|
2945
|
-
for (let T of
|
|
2946
|
-
for (let T of
|
|
2950
|
+
let Et = Qe.finish();
|
|
2951
|
+
for (let T of Et.defaults) Lt.push(T.name), Ne.push(T.sheet);
|
|
2952
|
+
for (let T of Et.indices) {
|
|
2947
2953
|
let G = T - 1, y = x[G];
|
|
2948
|
-
|
|
2954
|
+
Je.push({ name: y.name, expression: W(Qe.expression(G + 1)), ...Ze.has(y.tokens) ? { arrayStringLiterals: true } : {}, ...y.sheetIndex ? { sheet: Ne[G] ?? n("invalid name sheet scope") } : {} });
|
|
2949
2955
|
}
|
|
2950
|
-
for (let T of
|
|
2956
|
+
for (let T of Et.defaults) W(T.name), W(T.expression), Je.push(T);
|
|
2951
2957
|
let Re = (T) => {
|
|
2952
|
-
let G = T === 32767 || T === 64 ? "000000" : T === 65 ? "FFFFFF" : T < 8 ?
|
|
2958
|
+
let G = T === 32767 || T === 64 ? "000000" : T === 65 ? "FFFFFF" : T < 8 ? En[T] ?? "000000" : _[T - 8] ?? "000000";
|
|
2953
2959
|
return [0, 2, 4].map((y) => {
|
|
2954
2960
|
let P = G.slice(y, y + 2);
|
|
2955
2961
|
return P === "00" ? "0" : (P + P).toUpperCase();
|
|
2956
2962
|
}).join(":");
|
|
2957
|
-
},
|
|
2963
|
+
}, Nn = (T) => {
|
|
2958
2964
|
let G = M[T];
|
|
2959
2965
|
if (!G) return {};
|
|
2960
2966
|
let y = G.data, P = G.revision < 5;
|
|
2961
2967
|
y.check(0, P ? G.revision >= 3 ? 12 : 4 : G.revision >= 8 ? 20 : 16);
|
|
2962
|
-
let Z =
|
|
2968
|
+
let Z = R2[P ? y.u8(0) : y.u16(0)], j = w2.get(P ? G.revision >= 3 ? y.u8(1) : y.u8(2) & 63 : y.u16(2)) ?? "General", U = P ? G.revision >= 3 ? y.u8(2) : y.u8(1) >> 6 : y.u16(4), V = y.u8(P ? G.revision >= 3 ? 4 : 3 : 6), $ = { Locked: U & 1 ? 1 : 0, Hidden: U & 2 ? 1 : 0, WrapText: V & 8 ? 1 : 0, HAlign: ["GNM_HALIGN_GENERAL", "GNM_HALIGN_LEFT", "GNM_HALIGN_CENTER", "GNM_HALIGN_RIGHT", "GNM_HALIGN_FILL", "GNM_HALIGN_JUSTIFY", "GNM_HALIGN_CENTER_ACROSS_SELECTION", "GNM_HALIGN_DISTRIBUTED"][V & 7], VAlign: ["GNM_VALIGN_TOP", "GNM_VALIGN_CENTER", "GNM_VALIGN_BOTTOM", "GNM_VALIGN_JUSTIFY", "GNM_VALIGN_DISTRIBUTED"][V >> 4 & 7] ?? "GNM_VALIGN_BOTTOM", Fore: Re(Z?.color ?? 32767) };
|
|
2963
2969
|
if (G.revision >= 8) {
|
|
2964
2970
|
let J = y.u8(7), ee = y.u8(8), ne = y.u16(18);
|
|
2965
2971
|
$.Rotation = J === 255 ? -1 : J > 90 ? 450 - J : J, $.Indent = ee & 15, $.ShrinkToFit = ee & 16 ? 1 : 0, $.PatternColor = Re(ne & 127), $.Back = Re(ne >> 7 & 127), $.Shade = y.u32(14) >>> 26;
|
|
@@ -2974,8 +2980,8 @@ async function Hs(s, e, r) {
|
|
|
2974
2980
|
if (G.revision >= 8) {
|
|
2975
2981
|
let J = y.u16(10), ee = y.u16(12), ne = y.u32(14);
|
|
2976
2982
|
for (let [ge, ae, ue] of [["Left", 0, ee & 127], ["Right", 4, ee >> 7 & 127], ["Top", 8, ne & 127], ["Bottom", 12, ne >>> 7 & 127]]) {
|
|
2977
|
-
let
|
|
2978
|
-
|
|
2983
|
+
let Le = J >> ae & 15;
|
|
2984
|
+
Le && Y.push(fe(ge, { Style: Le, Color: Re(ue) }));
|
|
2979
2985
|
}
|
|
2980
2986
|
let pe = ne >>> 21 & 15;
|
|
2981
2987
|
pe && ee & 16384 && Y.push(fe("Diagonal", { Style: pe, Color: Re(ne >>> 14 & 127) })), pe && ee & 32768 && Y.push(fe("RevDiagonal", { Style: pe, Color: Re(ne >>> 14 & 127) }));
|
|
@@ -2984,13 +2990,13 @@ async function Hs(s, e, r) {
|
|
|
2984
2990
|
for (let [pe, ge, ae] of [["Bottom", J >> 6 & 7, J >> 9 & 127], ["Top", ee & 7, ee >> 9 & 127], ["Left", ee >> 3 & 7, ne & 127], ["Right", ee >> 6 & 7, ne >> 7 & 127]]) ge && Y.push(fe(pe, { Style: ge, Color: Re(ae) }));
|
|
2985
2991
|
}
|
|
2986
2992
|
return { format: j, style: { biff: { xf: T, revision: G.revision }, gnumeric: fe("Style", $, "", [...Z ? [fe("Font", Z.attributes, Z.name)] : [], ...Y.length ? [fe("StyleBorder", {}, "", Y)] : []]) } };
|
|
2987
|
-
},
|
|
2988
|
-
for (let T of
|
|
2989
|
-
let G =
|
|
2990
|
-
T.unsupportedRecords.push(...G.records), Object.assign(T.view, G.view), G.active && (
|
|
2993
|
+
}, Pt = [], At;
|
|
2994
|
+
for (let T of p) {
|
|
2995
|
+
let G = mn(T.records, T.revision, T.codepage, e);
|
|
2996
|
+
T.unsupportedRecords.push(...G.records), Object.assign(T.view, G.view), G.active && (At = T.id);
|
|
2991
2997
|
let y = [], P = [];
|
|
2992
2998
|
for (let Z of T.groups) try {
|
|
2993
|
-
P.push({ id: Z.id, kind: Z.kind === "table" ? "array" : Z.kind, range: Z.range, expression: W(Z.expression ??
|
|
2999
|
+
P.push({ id: Z.id, kind: Z.kind === "table" ? "array" : Z.kind, range: Z.range, expression: W(Z.expression ?? bt(Z.tokens, Z.arrays, T.revision, T.codepage, Z.range.startRow, Z.range.startColumn, T, Z.kind === "shared")), ...Ze.has(Z.tokens) ? { arrayStringLiterals: true } : {} });
|
|
2994
3000
|
} catch (j) {
|
|
2995
3001
|
if (!(j instanceof be) || j.code !== "unsupported-feature") throw j;
|
|
2996
3002
|
await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: j.message });
|
|
@@ -3005,34 +3011,34 @@ async function Hs(s, e, r) {
|
|
|
3005
3011
|
let ne = new h(U), pe = ne.u16(1), ge = Z.revision >= 3 ? ne.u16(3) : ne.u8(3), ae = T.groups.find((ue) => ue.keyRow === pe && ue.keyColumn === ge && ue.kind === "table" == (U[0] === 2));
|
|
3006
3012
|
ae || n(U[0] === 2 ? "unresolved data-table formula" : "unresolved shared/array formula"), (j.row < ae.range.startRow || j.row > ae.range.endRow || j.column < ae.range.startColumn || j.column > ae.range.endColumn) && n("formula outside group range"), U = ae.tokens, V = ae.arrays, ee = ae.expression, J = ae.kind === "shared", P.some((ue) => ue.id === ae.id) && (j = { ...j, formulaGroup: ae.id }), ae.kind !== "shared" && ($ = ae.range.startRow, Y = ae.range.startColumn);
|
|
3007
3013
|
}
|
|
3008
|
-
j = { ...j, formula: W(ee ??
|
|
3014
|
+
j = { ...j, formula: W(ee ?? bt(U, V, Z.revision, Z.codepage, $, Y, T, J)), ...Ze.has(U) ? { arrayStringLiterals: true } : {} };
|
|
3009
3015
|
} catch (U) {
|
|
3010
3016
|
if (!(U instanceof be) || U.code !== "unsupported-feature") throw U;
|
|
3011
3017
|
T.unsupportedRecords.push({ source: "biff", kind: "untranslated-formula", disposition: "retained", data: { row: j.row, column: j.column, tokens: Array.from(Z.tokens, (V) => V.toString(16).padStart(2, "0")).join("") } }), await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: U.message });
|
|
3012
3018
|
}
|
|
3013
|
-
y.push({ ...j, ...
|
|
3019
|
+
y.push({ ...j, ...Nn(Z.xf) });
|
|
3014
3020
|
}
|
|
3015
|
-
|
|
3021
|
+
Pt.push({ id: T.id, name: T.name, cells: y, visibility: T.visibility, size: { rows: T.cells.some((Z) => Z.revision >= 8) || a >= 8 ? 65536 : 16384, columns: 256 }, ...T.merges.length ? { merges: T.merges } : {}, ...T.rows.length ? { rows: T.rows } : {}, ...T.columns.length ? { columns: T.columns } : {}, ...Object.keys(T.view).length ? { view: T.view } : {}, ...P.length ? { formulaGroups: P } : {}, ...T.labelRanges.length ? { labelRanges: T.labelRanges } : {}, ...T.unsupportedRecords.length ? { unsupportedRecords: T.unsupportedRecords } : {} });
|
|
3016
3022
|
}
|
|
3017
|
-
let
|
|
3023
|
+
let Gt = d ?? t;
|
|
3018
3024
|
for (let [T, G] of d ?? []) if (!["SUMMARYINFORMATION", "DOCUMENTSUMMARYINFORMATION"].includes(T.toUpperCase())) {
|
|
3019
|
-
if (q(G.length * 2),
|
|
3025
|
+
if (q(G.length * 2), S += G.length * 2, S > (e.limits.workbookTextBytes ?? e.limits.inputBytes * 2)) throw new be("resource-limit", "ssconvert BIFF metadata byte limit exceeded");
|
|
3020
3026
|
D.push({ source: "biff", kind: "encrypted-ancillary", disposition: "retained", data: { stream: W(T), bytes: W(Array.from(G, (y) => y.toString(16).padStart(2, "0")).join("")) } }), await e.diagnostic?.({ code: "biff-loss-warning", severity: "warning", message: `BIFF encrypted ancillary stream ${T} retained without interpretation` });
|
|
3021
3027
|
}
|
|
3022
|
-
let
|
|
3023
|
-
return { sheets:
|
|
3028
|
+
let Ht = Gt ? await We(Gt, e, W, q, D) : {};
|
|
3029
|
+
return { sheets: Pt, dateSystem: l, calculationMode: m2, automaticLabelLookup: k, iteration: { enabled: E, maximum: f, tolerance: o }, ...Object.keys(Ht).length ? { properties: Ht } : {}, ...At === void 0 ? {} : { activeSheet: At }, ...Je.length ? { names: Je } : {}, ...D.length ? { unsupportedRecords: D } : {} };
|
|
3024
3030
|
}
|
|
3025
|
-
function
|
|
3031
|
+
function kn(s) {
|
|
3026
3032
|
let e;
|
|
3027
3033
|
if (s & 2) e = s >> 2;
|
|
3028
3034
|
else {
|
|
3029
|
-
let
|
|
3030
|
-
|
|
3035
|
+
let n2 = new Uint8Array(8), r = new DataView(n2.buffer);
|
|
3036
|
+
r.setUint32(4, s & 4294967292, true), e = r.getFloat64(0, true);
|
|
3031
3037
|
}
|
|
3032
3038
|
return Number.isFinite(e) || n("nonfinite RK number"), s & 1 ? e / 100 : e;
|
|
3033
3039
|
}
|
|
3034
3040
|
export {
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3041
|
+
Gs as createBiffWriter,
|
|
3042
|
+
Hs as probeBiff,
|
|
3043
|
+
Vs as readBiff
|
|
3038
3044
|
};
|