@poe-platform/safe-bash 0.1.800 → 0.1.801
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 +16 -5
- package/dist/image-ast/index.browser.js +119 -75
- package/dist/image-ast/index.js +119 -75
- package/dist/pdf-ast/index.js +4 -3
- package/dist/safe-bash/chunks/{chunk-LUOFIVNI.js → chunk-3NDIFSNM.js} +3 -3
- package/dist/safe-bash/chunks/{chunk-4SEW2Q6H.js → chunk-3R3AANOR.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-HHW7MGS2.js → chunk-45PK3NWI.js} +4 -4
- package/dist/safe-bash/chunks/{chunk-KHMGTPD6.js → chunk-46Z5E5EV.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-XB3B7KMM.js → chunk-6O77NL2S.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-T3JTVIEP.js → chunk-6PAVEFT3.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-PYVEAFJM.js → chunk-74GHTNJA.js} +3 -2
- package/dist/safe-bash/chunks/{chunk-LQHGH25W.js → chunk-7R5BDCG7.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-RMWLWH7Q.js → chunk-7VNF5BFF.js} +300 -737
- package/dist/safe-bash/chunks/{chunk-QVSRRNZT.js → chunk-A7XEHALN.js} +4 -4
- package/dist/safe-bash/chunks/{chunk-MHZ24KEI.js → chunk-AM5ESLPH.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-3L3T6LYV.js → chunk-AUSNDQTJ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-YG5WAHK7.js → chunk-B7TAL7S5.js} +1 -3
- package/dist/safe-bash/chunks/{chunk-K7IQZE7D.js → chunk-C5OWC2TL.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-F3RV2F72.js → chunk-CHYGPFVM.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-M4CFCXHN.js → chunk-CS4MNM6I.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-H6JW3E4F.js → chunk-CTVWDACF.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-BHJE5LPZ.js → chunk-D3ANYGMC.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-NLAW7KDI.js → chunk-E7OYNDGL.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-SOZK5JVX.js → chunk-FBUCWVTE.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-RKKRJ54E.js → chunk-FNDNHAGE.js} +30 -23
- package/dist/safe-bash/chunks/{chunk-KCVSVD65.js → chunk-I5HZ4FGE.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-JJSTTIEZ.js → chunk-ICFDYV64.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-TYD7EVUJ.js → chunk-IVRQ4BXL.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-KV7PKOHV.js → chunk-IWDICZVK.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-I4OAEOP6.js → chunk-J42RIHHJ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-K2VCOJ2B.js → chunk-K6VCD7IY.js} +7 -12
- package/dist/safe-bash/chunks/{chunk-63FXVDGF.js → chunk-LVOBFF4D.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-U5NUZPCC.js → chunk-MHMMRCYC.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-6HZYFL3H.js → chunk-NR3EM4LS.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-VYZTG3GV.js → chunk-NZQXYWA3.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-TFGRKY43.js → chunk-OQRVVGR6.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-PPYM75Z3.js → chunk-OV6IHKO6.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-KW24TAIU.js → chunk-PQRAK7HU.js} +920 -432
- package/dist/safe-bash/chunks/{chunk-K4YMYFRJ.js → chunk-SZH7EJLD.js} +116 -697
- package/dist/safe-bash/chunks/{chunk-7YSRXFEG.js → chunk-TFIBK2GI.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-I7L3G3NX.js → chunk-UE5KZDEK.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-QU3BVQ53.js → chunk-UTBUUFDM.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-JTLSUJ7V.js → chunk-VQDD3G76.js} +42 -25
- package/dist/safe-bash/chunks/{chunk-46UISJCK.js → chunk-VTH3MLDU.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-LLZCZ24K.js → chunk-XVOSKJE2.js} +1 -1
- package/dist/safe-bash/chunks/{csvkit-QGP3GAOB.js → csvkit-TACDU7FC.js} +3 -3
- package/dist/safe-bash/chunks/{ffmpeg-JTVH26MK.js → ffmpeg-WTC3TEFI.js} +2 -2
- package/dist/safe-bash/chunks/{gh-I7QX7N5C.js → gh-6WU6PXL4.js} +2 -2
- package/dist/safe-bash/chunks/{git-MA7NKYVP.js → git-EFZIGJW4.js} +2 -2
- package/dist/safe-bash/chunks/{imagemagick-Y4NPWX2Q.js → imagemagick-EIEYGWPF.js} +2 -2
- package/dist/safe-bash/chunks/{implementation-BWDKOVQJ.js → implementation-MLFHUQ5M.js} +2 -2
- package/dist/safe-bash/chunks/{mmdc-44PELHDG.js → mmdc-ROQJT5HQ.js} +2 -2
- package/dist/safe-bash/chunks/{pdfimages-635TRW4Q.js → pdfimages-DW7LWXFI.js} +2 -2
- package/dist/safe-bash/chunks/{pdfinfo-FSDAA2KY.js → pdfinfo-TIP6XLUQ.js} +2 -2
- package/dist/safe-bash/chunks/{pdftk-GQ5UH3VG.js → pdftk-DMG22ITZ.js} +2 -2
- package/dist/safe-bash/chunks/{pdftoppm-YTXQCAYT.js → pdftoppm-WNDYR72T.js} +2 -2
- package/dist/safe-bash/chunks/{pdftotext-CVA2G7FY.js → pdftotext-5IPZ4NI7.js} +2 -2
- package/dist/safe-bash/chunks/{qpdf-HZMIFG4A.js → qpdf-TTX2DIUA.js} +2 -2
- package/dist/safe-bash/chunks/{sips-E7UBDP33.js → sips-XYS46JPJ.js} +2 -2
- package/dist/safe-bash/chunks/{soffice-ELASUWUK.js → soffice-TU73E5KL.js} +2 -2
- package/dist/safe-bash/chunks/{wkhtmltopdf-EPO6YCMG.js → wkhtmltopdf-FSZ2CHGE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-QBGA56UH.js → chunk-2ELYGJDD.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-52PCQXD2.js → chunk-2NHI5F5S.js} +2 -1
- package/dist/safe-bash/command-chunks/{chunk-HDKVO47G.js → chunk-2SQEIUGJ.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-5LSGEIZY.js → chunk-3HHCU5YU.js} +4 -3
- package/dist/safe-bash/command-chunks/{chunk-TF6OA2GK.js → chunk-3NV3HYT2.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-2QHG43WJ.js → chunk-4BB2SWJ5.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IEXHHNOF.js → chunk-4J5CZ2DP.js} +2 -7
- package/dist/safe-bash/command-chunks/{chunk-WDHI3S6Y.js → chunk-4OOUQTQO.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-YMONDXET.js → chunk-4ZQWGOZB.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-L6DVEBW3.js → chunk-5BSTFCXG.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-Q3DII3Q7.js → chunk-5PWJG2UK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-JMPP4TCW.js → chunk-5UBXNSFZ.js} +3 -2
- package/dist/safe-bash/command-chunks/{chunk-3NG75MOB.js → chunk-67GQA75T.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-L6SU4S26.js → chunk-6B7WQIKB.js} +0 -7
- package/dist/safe-bash/command-chunks/{chunk-V6MSPQLA.js → chunk-6BNTBWIK.js} +4 -39
- package/dist/safe-bash/command-chunks/{chunk-JN7WIP6S.js → chunk-6KJ3LPI2.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-HLDTOR7M.js → chunk-6ZVI7LUY.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-X6NJC3IC.js → chunk-75OFBY5R.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-MRW5HD2D.js → chunk-7O3E4LPT.js} +4 -22
- package/dist/safe-bash/command-chunks/{chunk-TEVJJPTC.js → chunk-7U7EXOXX.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-6CYTRQ24.js → chunk-7VTKQUA5.js} +20 -17
- package/dist/safe-bash/command-chunks/{chunk-BZPAWTUL.js → chunk-AEF5BA3D.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-63R3FEZJ.js → chunk-AIV5BF5W.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-AYUTO323.js → chunk-AKJG2XD3.js} +2 -18
- package/dist/safe-bash/command-chunks/{chunk-J34TZVMW.js → chunk-ALDC4XP4.js} +0 -5
- package/dist/safe-bash/command-chunks/{chunk-CKXV2CLD.js → chunk-ARBYOQUZ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-44AHAB5O.js → chunk-BDSMROQZ.js} +1 -4
- package/dist/safe-bash/command-chunks/{chunk-53P53XFM.js → chunk-BPE5INLI.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-OT4LZMLB.js → chunk-BR73BIOW.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-WB5SVIG7.js → chunk-C5YYCQHW.js} +498 -88
- package/dist/safe-bash/command-chunks/{chunk-EUSPTFAX.js → chunk-CAP7ZJSY.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-DWFLVJC6.js → chunk-CCRHMAU5.js} +2 -1
- package/dist/safe-bash/command-chunks/{chunk-GI4CJED2.js → chunk-CQTRW45K.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-N2F74VRO.js → chunk-CZ7EN3JG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-KKG4BAFZ.js → chunk-DIEPXUM4.js} +6 -0
- package/dist/safe-bash/command-chunks/{chunk-QJAFJP2G.js → chunk-DZCY63VJ.js} +12 -10
- package/dist/safe-bash/command-chunks/{chunk-QUENU6GM.js → chunk-E55UKBIE.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-HLGKIZ25.js → chunk-F6OYH562.js} +2 -0
- package/dist/safe-bash/command-chunks/{chunk-MC3VWLIZ.js → chunk-FDBUV4HJ.js} +28 -19
- package/dist/safe-bash/command-chunks/{chunk-7FKUC34S.js → chunk-FPVUD6TH.js} +6 -3
- package/dist/safe-bash/command-chunks/{chunk-E2LB7FRT.js → chunk-FXOA7RBK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QWIDNAAK.js → chunk-FZTK4MFI.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-K543PB3I.js → chunk-G66QUHIZ.js} +6 -35
- package/dist/safe-bash/command-chunks/{chunk-YJDV76GL.js → chunk-GFQZCKO6.js} +29 -19
- package/dist/safe-bash/command-chunks/{chunk-FKKB5X5V.js → chunk-GOB777HR.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IYPAQ7PH.js → chunk-GRBWW4SG.js} +6 -0
- package/dist/safe-bash/command-chunks/{chunk-PPNBNFAU.js → chunk-GYQ2HAKQ.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-PJJUYO3R.js → chunk-II77KPZN.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-VL67NWNS.js → chunk-JDYXY44P.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4QJOYXVB.js → chunk-JV7LBUTP.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IKS2YXZQ.js → chunk-K67MWWWH.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-BKCNF5U3.js → chunk-KQLD3AED.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-UMDIOL3O.js → chunk-KXU3IRUO.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QZF3SINC.js → chunk-LAOM65EE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-HFII3QYO.js → chunk-LWS62ISU.js} +46 -32
- package/dist/safe-bash/command-chunks/{chunk-BZDDAPSV.js → chunk-LWSBAWLT.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-U6G67N23.js → chunk-MIXBO6U7.js} +18 -5
- package/dist/safe-bash/command-chunks/{chunk-JQ74HC37.js → chunk-MQFIPHIQ.js} +23 -50
- package/dist/safe-bash/command-chunks/{chunk-ZJBR5Q5I.js → chunk-MSFXC3OC.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-NI7MKJPN.js → chunk-MTQH74CF.js} +3 -55
- package/dist/safe-bash/command-chunks/chunk-MWUZZWXK.js +354 -0
- package/dist/safe-bash/command-chunks/{chunk-RVLO4DYT.js → chunk-N4PFUSRM.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-D4OP2BR3.js → chunk-NKFYQSES.js} +1 -2
- package/dist/safe-bash/command-chunks/{chunk-NGWB2YBL.js → chunk-O4JQSB7O.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-7L24L4UO.js → chunk-OQU6UT6X.js} +2 -20
- package/dist/safe-bash/command-chunks/{chunk-TYCGMRLM.js → chunk-OYYV7ZAF.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-SVULUDOP.js → chunk-P2N33UMN.js} +20 -81
- package/dist/safe-bash/command-chunks/{chunk-Q7Q5GM5S.js → chunk-P5APDEFB.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-SAMH7SQE.js → chunk-PCEFOYA3.js} +237 -145
- package/dist/safe-bash/command-chunks/{chunk-3HXDA5PT.js → chunk-PMBFZXTK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-4Y3WVMK4.js → chunk-PV66YWHB.js} +1 -0
- package/dist/safe-bash/command-chunks/{chunk-AXK3H4PX.js → chunk-QJ33BHI4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-3LSOYLNV.js → chunk-QKFSRZGQ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-JZSNU2MY.js → chunk-QKJLP53H.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-LC2MFKT4.js → chunk-RMWQAAO5.js} +24 -25
- package/dist/safe-bash/command-chunks/{chunk-QDTBMSBE.js → chunk-RO62EWX6.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4C6QI5BQ.js → chunk-RZZI24ZE.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-PFAADCB5.js → chunk-SDNBCQ3X.js} +10 -24
- package/dist/safe-bash/command-chunks/{chunk-36O5OT7E.js → chunk-T35Y7YQD.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-6HMX4CQS.js → chunk-TGSNCQSR.js} +44 -16
- package/dist/safe-bash/command-chunks/{chunk-5T7CRJHW.js → chunk-TIOCQVUQ.js} +4 -7
- package/dist/safe-bash/command-chunks/{chunk-T5H5UJQ3.js → chunk-TNOA7FCQ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-GN2TKLE7.js → chunk-TS65BJHG.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-7RGB363W.js → chunk-TSCGT46G.js} +3 -2
- package/dist/safe-bash/command-chunks/{chunk-KBEURXFF.js → chunk-UN6WS55J.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-SX2X3IH4.js → chunk-V2V5OCL3.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ERYJLO6G.js → chunk-V7A7DRTU.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-5SHGJ7NO.js → chunk-VA5ZHYYA.js} +73 -33
- package/dist/safe-bash/command-chunks/{chunk-XETLEHZP.js → chunk-VPR5LQYX.js} +3 -2
- package/dist/safe-bash/command-chunks/{chunk-3DT2YOGW.js → chunk-VSRGNQCP.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-J5SN3PZ3.js → chunk-VXSLJH7G.js} +53 -3
- package/dist/safe-bash/command-chunks/{chunk-PXYOWWMV.js → chunk-W7RAD4EW.js} +4 -3
- package/dist/safe-bash/command-chunks/{chunk-YGC6OS5O.js → chunk-WECIOOQB.js} +5 -8
- package/dist/safe-bash/command-chunks/{chunk-HHP343KT.js → chunk-WTECBRU4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-AO6Z5EQ7.js → chunk-WVE64WM2.js} +6 -5
- package/dist/safe-bash/command-chunks/{chunk-Z7RVSD5K.js → chunk-WVHONVZ4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QNIMV57G.js → chunk-XNLFHHOC.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-XAFSZDY2.js → chunk-XS72HTMA.js} +11 -0
- package/dist/safe-bash/command-chunks/{chunk-KYSPGS33.js → chunk-YIQACGEW.js} +2 -0
- package/dist/safe-bash/command-chunks/{chunk-NAY27PXB.js → chunk-YOFC45RK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QI7LGHJJ.js → chunk-Z45N42QC.js} +21 -6
- package/dist/safe-bash/command-chunks/{chunk-67IQF5GC.js → chunk-ZYHTWNAE.js} +23 -9
- package/dist/safe-bash/command-chunks/{chunk-STC3LEWJ.js → chunk-ZYXH3B66.js} +5 -3
- package/dist/safe-bash/commands/bytes/compression/index.js +3 -2
- package/dist/safe-bash/commands/copy-preserve.d.ts +1 -0
- package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
- package/dist/safe-bash/commands/docx/index.browser.js +1 -1
- package/dist/safe-bash/commands/execution.js +19 -13
- package/dist/safe-bash/commands/factor/index.browser.js +2 -2
- package/dist/safe-bash/commands/filesystem.d.ts +1 -1
- package/dist/safe-bash/commands/filesystem.js +17 -13
- package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
- package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
- package/dist/safe-bash/commands/htmlq/index.d.ts +1 -1
- package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
- package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
- package/dist/safe-bash/commands/llm/index.browser.js +2 -2
- package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
- package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
- package/dist/safe-bash/commands/media/index.browser.js +1 -1
- package/dist/safe-bash/commands/network/curl.d.ts +1 -1
- package/dist/safe-bash/commands/network/curl.js +1 -3
- package/dist/safe-bash/commands/network/index.browser.js +4 -4
- package/dist/safe-bash/commands/network/platform-portable.d.ts +1 -5
- package/dist/safe-bash/commands/network/platform-portable.js +1 -26
- package/dist/safe-bash/commands/network/public.d.ts +2 -2
- package/dist/safe-bash/commands/network/public.js +2 -2
- package/dist/safe-bash/commands/network/transport.js +2 -2
- package/dist/safe-bash/commands/network/wget.d.ts +1 -1
- package/dist/safe-bash/commands/network/wget.js +1 -3
- package/dist/safe-bash/commands/node/filesystem.js +3 -2
- package/dist/safe-bash/commands/node/index.browser.js +8 -8
- package/dist/safe-bash/commands/node/types.js +1 -1
- package/dist/safe-bash/commands/op/index.browser.js +3 -3
- package/dist/safe-bash/commands/pr/index.browser.js +2 -2
- package/dist/safe-bash/commands/python/host-capabilities.js +31 -14
- package/dist/safe-bash/commands/python/index.browser.js +11 -11
- package/dist/safe-bash/commands/python/manifest.d.ts +1 -0
- package/dist/safe-bash/commands/python/manifest.js +6 -3
- package/dist/safe-bash/commands/python/shell-capability.d.ts +1 -0
- package/dist/safe-bash/commands/python/shell-capability.js +3 -2
- package/dist/safe-bash/commands/python/worker.browser.js +3 -3
- package/dist/safe-bash/commands/regex-execution/public.browser.js +4 -4
- package/dist/safe-bash/commands/safejs/runtime.js +16 -7
- package/dist/safe-bash/commands/standard.d.ts +1 -0
- package/dist/safe-bash/commands/standard.js +2 -1
- package/dist/safe-bash/commands/streams.js +6 -24
- package/dist/safe-bash/commands/text.js +268 -364
- package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
- package/dist/safe-bash/commands/xml/index.browser.js +2 -2
- package/dist/safe-bash/commands/yq/index.browser.js +2 -2
- package/dist/safe-bash/core.browser.js +1 -1
- package/dist/safe-bash/core.d.ts +6 -1
- package/dist/safe-bash/core.js +1 -1
- package/dist/safe-bash/full-core.browser.js +108 -104
- package/dist/safe-bash/jobs.browser.js +5 -5
- package/dist/safe-bash/opt-in/commands/dd/index.js +2 -0
- package/dist/safe-bash/opt-in/optional/commands/shuf/options.d.ts +1 -0
- package/dist/safe-bash/opt-in/optional/commands/shuf/options.js +2 -4
- package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +2 -1
- package/dist/safe-bash/optional-host.browser.js +11 -11
- package/dist/safe-bash/plugins/composition.d.ts +1 -0
- package/dist/safe-bash/plugins/composition.js +3 -8
- package/dist/safe-bash/plugins/index.browser.js +27 -27
- package/dist/safe-bash/registry-entry.browser.js +28 -28
- package/dist/safe-bash/shell/arrays/bindings.js +1 -1
- package/dist/safe-bash/shell/arrays/state.js +4 -0
- package/dist/safe-bash/shell/brace-expansion.js +1 -1
- package/dist/safe-bash/shell/dynamic-variables.d.ts +10 -0
- package/dist/safe-bash/shell/dynamic-variables.js +25 -0
- package/dist/safe-bash/shell/parser.js +8 -1
- package/dist/safe-bash/shell/runtime.d.ts +4 -4
- package/dist/safe-bash/shell/runtime.js +291 -741
- package/dist/safe-bash/shell/shell.js +2 -31
- package/dist/safe-bash/shell-entry.browser.js +25 -25
- package/dist/safe-bash/trap.browser.js +4 -4
- package/dist/safe-bash/yq-browser/index.js +1 -1
- package/dist/safe-bash-base-encoding-engine/base.js +2 -2
- package/dist/safe-bash-base-encoding-engine/shared.js +1 -1
- package/dist/safe-bash-byte-input-engine/index.d.ts +3 -2
- package/dist/safe-bash-byte-input-engine/index.js +4 -1
- package/dist/safe-bash-checksum-engine/index.js +13 -6
- package/dist/safe-bash-command-apply-patch/apply.d.ts +1 -1
- package/dist/safe-bash-command-apply-patch/apply.js +4 -3
- package/dist/safe-bash-command-apply-patch/index.js +3 -3
- package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
- package/dist/safe-bash-command-apply-patch/parser.js +1 -1
- package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
- package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
- package/dist/safe-bash-command-awk/awk-syntax.d.ts +1 -1
- package/dist/safe-bash-command-awk/awk-syntax.js +2 -2
- package/dist/safe-bash-command-awk/awk-values.js +1 -1
- package/dist/safe-bash-command-awk/awk.js +5 -5
- package/dist/safe-bash-command-awk/index.js +5 -5
- package/dist/safe-bash-command-bc/index.d.ts +2 -0
- package/dist/safe-bash-command-bc/index.js +123 -92
- package/dist/safe-bash-command-column/column.js +5 -5
- package/dist/safe-bash-command-column/display.d.ts +1 -1
- package/dist/safe-bash-command-column/display.js +1 -1
- package/dist/safe-bash-command-column/index.js +5 -5
- package/dist/safe-bash-command-column/internal.d.ts +0 -2
- package/dist/safe-bash-command-column/internal.js +1 -1
- package/dist/safe-bash-command-column/layout.js +4 -4
- package/dist/safe-bash-command-column/table.js +2 -2
- package/dist/safe-bash-command-comm/comm.js +1 -1
- package/dist/safe-bash-command-comm/index.js +1 -1
- package/dist/safe-bash-command-csvcut/index.d.ts +1 -0
- package/dist/safe-bash-command-csvcut/index.js +1 -0
- package/dist/safe-bash-command-csvgrep/index.d.ts +1 -0
- package/dist/safe-bash-command-csvgrep/index.js +2 -2
- package/dist/safe-bash-command-csvkit/index.js +9 -9
- package/dist/safe-bash-command-csvkit/sync-support.js +1 -1
- package/dist/safe-bash-command-curl/curl.js +1 -1
- package/dist/safe-bash-command-curl/index.js +1 -1
- package/dist/safe-bash-command-dd/index.js +2 -0
- package/dist/safe-bash-command-diff/diff.js +1 -1
- package/dist/safe-bash-command-diff/index.js +1 -1
- package/dist/safe-bash-command-exiftool/index.d.ts +1 -0
- package/dist/safe-bash-command-fd/index.js +9 -9
- package/dist/safe-bash-command-ffmpeg/index.js +31 -8
- package/dist/safe-bash-command-file/index.js +1 -1
- package/dist/safe-bash-command-file/shared.js +1 -1
- package/dist/safe-bash-command-find/find.js +1 -1
- package/dist/safe-bash-command-find/index.js +1 -1
- package/dist/safe-bash-command-gzip/index.js +3 -2
- package/dist/safe-bash-command-hexdump/command.js +4 -4
- package/dist/safe-bash-command-hexdump/custom.d.ts +24 -0
- package/dist/safe-bash-command-hexdump/index.js +4 -4
- package/dist/safe-bash-command-hexdump/internal.d.ts +2 -0
- package/dist/safe-bash-command-hexdump/internal.js +1 -1
- package/dist/safe-bash-command-hexdump/io.js +2 -2
- package/dist/safe-bash-command-hexdump/options.d.ts +3 -0
- package/dist/safe-bash-command-hexdump/options.js +2 -2
- package/dist/safe-bash-command-hostname/index.js +1 -1
- package/dist/safe-bash-command-html-to-markdown/budget.js +1 -1
- package/dist/safe-bash-command-html-to-markdown/entities.js +3 -3
- package/dist/safe-bash-command-html-to-markdown/index.js +6 -6
- package/dist/safe-bash-command-html-to-markdown/input.js +5 -5
- package/dist/safe-bash-command-html-to-markdown/parser.d.ts +1 -0
- package/dist/safe-bash-command-html-to-markdown/parser.js +4 -4
- package/dist/safe-bash-command-html-to-markdown/render.js +5 -5
- package/dist/safe-bash-command-html-to-markdown/text.js +2 -2
- package/dist/safe-bash-command-htmlq/index.d.ts +1 -0
- package/dist/safe-bash-command-htmlq/index.js +27 -9
- package/dist/safe-bash-command-iconv/codec.js +1 -1
- package/dist/safe-bash-command-iconv/command.js +2 -2
- package/dist/safe-bash-command-iconv/index.js +2 -2
- package/dist/safe-bash-command-imagemagick/index.js +24 -6
- package/dist/safe-bash-command-join/index.js +1 -1
- package/dist/safe-bash-command-join/join.js +1 -1
- package/dist/safe-bash-command-jq/index.js +1 -1
- package/dist/safe-bash-command-jq/jq.js +1 -1
- package/dist/safe-bash-command-less/index.js +43 -28
- package/dist/safe-bash-command-mmdc/index.d.ts +1 -0
- package/dist/safe-bash-command-numfmt/index.js +0 -11
- package/dist/safe-bash-command-od/index.js +101 -68
- 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-paste/index.js +1 -1
- package/dist/safe-bash-command-paste/paste.js +1 -1
- package/dist/safe-bash-command-pathchk/index.js +3 -13
- package/dist/safe-bash-command-pdfimages/index.js +27 -11
- package/dist/safe-bash-command-pdfinfo/index.js +19 -10
- package/dist/safe-bash-command-pdftk/index.js +3 -3
- package/dist/safe-bash-command-pdftoppm/index.js +26 -10
- package/dist/safe-bash-command-pdftotext/index.js +27 -13
- package/dist/safe-bash-command-qpdf/index.js +5 -5
- package/dist/safe-bash-command-sed/index.js +1 -1
- package/dist/safe-bash-command-sed/sed.js +1 -1
- package/dist/safe-bash-command-shuf/options.d.ts +1 -0
- package/dist/safe-bash-command-shuf/options.js +2 -4
- package/dist/safe-bash-command-shuf/shuf.js +2 -1
- package/dist/safe-bash-command-soffice/index.js +20 -16
- package/dist/safe-bash-command-split/index.js +3 -3
- package/dist/safe-bash-command-split/io.js +1 -1
- package/dist/safe-bash-command-split/outputs.js +2 -2
- package/dist/safe-bash-command-split/split.js +3 -3
- package/dist/safe-bash-command-sqlite3/btree.d.ts +1 -0
- package/dist/safe-bash-command-sqlite3/engine.d.ts +6 -0
- package/dist/safe-bash-command-sqlite3/index.js +284 -85
- package/dist/safe-bash-command-ssconvert/commands.js +9 -9
- package/dist/safe-bash-command-ssconvert/core.js +8 -8
- package/dist/safe-bash-command-ssconvert/formats/csv.js +9 -9
- package/dist/safe-bash-command-ssconvert/formats/ods.js +8 -8
- package/dist/safe-bash-command-ssconvert/formats/spreadsheetml.js +2 -2
- package/dist/safe-bash-command-ssconvert/formats/xls.js +9 -9
- package/dist/safe-bash-command-ssconvert/formats/xlsx.js +8 -8
- package/dist/safe-bash-command-ssconvert/index.js +20 -20
- package/dist/safe-bash-command-tar/extract.js +1 -1
- package/dist/safe-bash-command-tar/index.js +5 -4
- package/dist/safe-bash-command-tar/modes.js +2 -2
- package/dist/safe-bash-command-tree/arguments.js +3 -3
- package/dist/safe-bash-command-tree/charset.js +1 -1
- package/dist/safe-bash-command-tree/index.js +4 -4
- package/dist/safe-bash-command-tree/io.js +1 -1
- package/dist/safe-bash-command-tree/pattern.js +2 -2
- package/dist/safe-bash-command-tree/tree.js +4 -4
- package/dist/safe-bash-command-unrtf/index.js +14 -7
- package/dist/safe-bash-command-unzip/index.js +1 -1
- package/dist/safe-bash-command-unzip/unzip.js +1 -1
- package/dist/safe-bash-command-wget/index.js +1 -1
- package/dist/safe-bash-command-wget/wget.js +1 -1
- package/dist/safe-bash-command-xan/argv.d.ts +1 -1
- package/dist/safe-bash-command-xan/argv.js +1 -1
- package/dist/safe-bash-command-xan/commands.js +5 -3
- package/dist/safe-bash-command-xan/csv.d.ts +1 -1
- package/dist/safe-bash-command-xan/csv.js +1 -1
- package/dist/safe-bash-command-xan/index.js +7 -7
- package/dist/safe-bash-command-xan/io.js +3 -3
- package/dist/safe-bash-command-xmllint/index.js +1 -1
- package/dist/safe-bash-command-xxd/index.js +105 -91
- package/dist/safe-bash-command-xz/command.d.ts +2 -0
- package/dist/safe-bash-command-xz/index.d.ts +1 -1
- package/dist/safe-bash-command-xz/index.js +8 -0
- package/dist/safe-bash-command-yq/query.js +1 -1
- package/dist/safe-bash-command-zip/index.js +1 -1
- package/dist/safe-bash-command-zip/zip.js +1 -1
- package/dist/safe-bash-contracts/escaping.js +3 -3
- package/dist/safe-bash-contracts/filesystem-output.js +2 -2
- package/dist/safe-bash-contracts/index.d.ts +1 -0
- package/dist/safe-bash-contracts/index.js +7 -3
- package/dist/safe-bash-contracts/io.d.ts +4 -1
- package/dist/safe-bash-contracts/io.js +3 -1
- package/dist/safe-bash-contracts/managed-abort.d.ts +10 -0
- package/dist/safe-bash-contracts/output.js +2 -2
- package/dist/safe-bash-diff-engine/index.js +1 -1
- package/dist/safe-bash-diff-engine/shared.d.ts +3 -2
- package/dist/safe-bash-diff-engine/shared.js +1 -1
- package/dist/safe-bash-io-engine/commands/archive/internal.js +5 -23
- package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
- package/dist/safe-bash-io-engine/commands/text-programs/shared.js +33 -44
- package/dist/safe-bash-io-engine/internal.js +1 -1
- package/dist/safe-bash-io-engine/shell/pattern.js +1 -1
- package/dist/safe-bash-io-engine/shell/string-operations.js +1 -1
- package/dist/safe-bash-mcp/index.browser.d.ts +155 -35
- package/dist/safe-bash-mcp/index.browser.js +416 -0
- package/dist/safe-bash-mcp/index.d.ts +54 -2
- package/dist/safe-bash-mcp/index.js +283 -89
- package/dist/safe-bash-network-engine/aggregate.js +2 -2
- package/dist/safe-bash-network-engine/args.js +4 -4
- package/dist/safe-bash-network-engine/authorizer.js +1 -1
- package/dist/safe-bash-network-engine/body.js +6 -6
- package/dist/safe-bash-network-engine/decode.d.ts +1 -1
- package/dist/safe-bash-network-engine/decode.js +3 -4
- package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
- package/dist/safe-bash-network-engine/form-content-type.js +2 -2
- package/dist/safe-bash-network-engine/form-headers.js +2 -2
- package/dist/safe-bash-network-engine/glob.js +1 -1
- package/dist/safe-bash-network-engine/index.js +4 -4
- package/dist/safe-bash-network-engine/input.js +6 -6
- package/dist/safe-bash-network-engine/output.js +2 -2
- 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/types.d.ts +7 -2
- package/dist/safe-bash-network-engine/types.js +1 -1
- package/dist/safe-bash-network-engine/url.js +2 -2
- package/dist/safe-bash-query-engine/capture.js +3 -3
- package/dist/safe-bash-query-engine/delpaths.js +3 -3
- package/dist/safe-bash-query-engine/formats.js +2 -2
- package/dist/safe-bash-query-engine/index.js +11 -11
- package/dist/safe-bash-query-engine/indices.js +3 -3
- package/dist/safe-bash-query-engine/input.js +1 -1
- package/dist/safe-bash-query-engine/interpreter.js +9 -9
- package/dist/safe-bash-query-engine/parser.js +1 -1
- package/dist/safe-bash-query-engine/query-core.js +11 -11
- package/dist/safe-bash-query-engine/regex.js +4 -4
- package/dist/safe-bash-query-engine/splits.js +5 -5
- package/dist/safe-bash-query-engine/values.js +2 -2
- package/dist/safe-bash-regex-engine/ere/matcher.js +102 -30
- package/dist/safe-bash-regex-engine/execution/bounded-provider.js +55 -67
- package/dist/safe-bash-regex-engine/execution/portable.d.ts +0 -1
- package/dist/safe-bash-regex-engine/execution/portable.js +6 -10
- package/dist/safe-bash-regex-engine/execution/protocol.d.ts +0 -5
- package/dist/safe-bash-regex-engine/execution/protocol.js +1 -3
- package/dist/safe-bash-regex-engine/index.js +6 -4
- package/dist/safe-bash-regex-engine/text/budget.d.ts +1 -0
- package/dist/safe-bash-regex-engine/text/budget.js +1 -1
- package/dist/safe-bash-regex-engine/text/regex.d.ts +14 -0
- package/dist/safe-bash-regex-engine/text/regex.js +6 -4
- package/dist/safe-bash-regex-engine/text/replacement-buffer.js +2 -2
- package/dist/safe-bash-regex-engine/text/rust-syntax.js +2 -2
- package/dist/safe-bash-search-engine/grep.js +189 -227
- package/dist/safe-bash-table-text-engine/table-text/internal.d.ts +7 -5
- package/dist/safe-bash-table-text-engine/table-text/internal.js +39 -21
- package/dist/safe-playwright-cloudflare/browser-trace-budget.js +6 -2
- package/dist/spreadsheet-engine/codecs/odf-hyperlinks.js +8 -2
- package/dist/spreadsheet-engine/formulas/functions/captured-bessel-phase.js +2 -2
- package/dist/spreadsheet-engine/formulas/label-references.js +54 -33
- package/dist/spreadsheet-engine/formulas/parser.js +3 -1
- package/dist/spreadsheet-engine/formulas/rewriting.js +13 -3
- package/dist/spreadsheet-format-xls/biff-data-tables.js +4 -6
- package/dist/spreadsheet-format-xls/biff-formulas.js +3 -0
- package/dist/spreadsheet-format-xls/biff-label-ranges.js +9 -6
- package/dist/spreadsheet-format-xls/biff.js +1 -1
- package/dist/xlsx-ast/xlsx.js +8 -5
- package/package.json +9 -8
- package/dist/safe-bash/command-chunks/chunk-KAGBORIC.js +0 -88
- /package/dist/safe-bash/command-chunks/{chunk-BWNXWI33.js → chunk-2LMZVE3I.js} +0 -0
|
@@ -34,18 +34,23 @@ function settings(options) {
|
|
|
34
34
|
function fail(message) {
|
|
35
35
|
throw new FsError("EINVAL", { message });
|
|
36
36
|
}
|
|
37
|
-
function command(name, handler) {
|
|
37
|
+
function command(name, limits, handler) {
|
|
38
38
|
return { name, async execute(context) {
|
|
39
39
|
context.signal.throwIfAborted();
|
|
40
|
+
let budget;
|
|
40
41
|
try {
|
|
41
42
|
const infoPromise = gnuInformation(name, context);
|
|
42
43
|
if (infoPromise) {
|
|
43
44
|
const info = await infoPromise;
|
|
44
45
|
if (info) return info;
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
+
budget = new Budget(context, limits);
|
|
48
|
+
const result = await handler(context, budget);
|
|
49
|
+
await budget.flushOutput();
|
|
50
|
+
return result;
|
|
47
51
|
} catch (error) {
|
|
48
52
|
context.signal.throwIfAborted();
|
|
53
|
+
if (budget?.hasPendingOutput()) await budget.flushOutput();
|
|
49
54
|
await diagnostic(context, error);
|
|
50
55
|
return { exitCode: 1 };
|
|
51
56
|
}
|
|
@@ -65,13 +70,6 @@ var Budget = class {
|
|
|
65
70
|
this.context = context;
|
|
66
71
|
this.limits = limits;
|
|
67
72
|
this.outBuf = new Uint8Array(outputChunkBytes);
|
|
68
|
-
this.signalAborted = context.signal.aborted;
|
|
69
|
-
this.pollBaseSignal = Object.prototype.hasOwnProperty.call(context.signal, "aborted");
|
|
70
|
-
if (!this.signalAborted && !this.pollBaseSignal) {
|
|
71
|
-
context.signal.addEventListener("abort", () => {
|
|
72
|
-
this.signalAborted = true;
|
|
73
|
-
}, { once: true });
|
|
74
|
-
}
|
|
75
73
|
this.check(context.args.reduce((size, value) => size + utf8ByteLength(value), 0), limits.maxArgumentBytes, "argument");
|
|
76
74
|
}
|
|
77
75
|
context;
|
|
@@ -79,13 +77,11 @@ var Budget = class {
|
|
|
79
77
|
inputBytes = 0;
|
|
80
78
|
outputBytes = 0;
|
|
81
79
|
steps = 0;
|
|
82
|
-
signalAborted;
|
|
83
|
-
pollBaseSignal;
|
|
84
80
|
check(value, maximum, label) {
|
|
85
81
|
if (value > maximum) throw new FsError("EFBIG", { message: `table-text ${label} limit exceeded` });
|
|
86
82
|
}
|
|
87
83
|
step() {
|
|
88
|
-
|
|
84
|
+
this.context.signal.throwIfAborted();
|
|
89
85
|
this.check(++this.steps, this.limits.maxSteps, "step");
|
|
90
86
|
if (this.steps % 1024 !== 0) return;
|
|
91
87
|
return yieldTurn(this.context.signal).then(() => {
|
|
@@ -95,6 +91,7 @@ var Budget = class {
|
|
|
95
91
|
input(size) {
|
|
96
92
|
this.check(size, this.limits.maxChunkBytes, "chunk");
|
|
97
93
|
this.inputBytes += size;
|
|
94
|
+
this.context.inputBudget?.check(this.inputBytes);
|
|
98
95
|
this.check(this.inputBytes, this.limits.maxInputBytes, "input");
|
|
99
96
|
}
|
|
100
97
|
admitOutput(size) {
|
|
@@ -314,27 +311,48 @@ function argument(args, index, attached, option) {
|
|
|
314
311
|
return [value, index + 1];
|
|
315
312
|
}
|
|
316
313
|
var OrderCheck = class {
|
|
317
|
-
constructor(mode, context) {
|
|
314
|
+
constructor(mode, context, budget) {
|
|
318
315
|
this.mode = mode;
|
|
319
316
|
this.context = context;
|
|
317
|
+
this.budget = budget;
|
|
320
318
|
}
|
|
321
319
|
mode;
|
|
322
320
|
context;
|
|
321
|
+
budget;
|
|
323
322
|
unpaired = false;
|
|
324
323
|
failed = false;
|
|
325
324
|
warned = /* @__PURE__ */ new Set();
|
|
325
|
+
// Only the transition into each current row matters when default checking starts.
|
|
326
|
+
pending = /* @__PURE__ */ new Set();
|
|
327
|
+
async markUnpaired() {
|
|
328
|
+
if (this.unpaired) return;
|
|
329
|
+
this.unpaired = true;
|
|
330
|
+
for (const file of this.pending) await this.report(file);
|
|
331
|
+
this.pending.clear();
|
|
332
|
+
}
|
|
326
333
|
check(previous, next, file, fold = false) {
|
|
327
|
-
if (this.mode === "none" || this.
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
if (this.
|
|
331
|
-
this.
|
|
332
|
-
|
|
333
|
-
return diagnostic(this.context, new PublicDiagnostic(message));
|
|
334
|
+
if (this.mode === "none" || this.warned.has(file)) return;
|
|
335
|
+
const disordered = previous !== void 0 && next !== void 0 && compare(previous, next, fold) > 0;
|
|
336
|
+
if (this.mode === "default" && !this.unpaired) {
|
|
337
|
+
if (disordered) this.pending.add(file);
|
|
338
|
+
else this.pending.delete(file);
|
|
339
|
+
return;
|
|
334
340
|
}
|
|
341
|
+
if (disordered) return this.report(file);
|
|
342
|
+
}
|
|
343
|
+
async report(file) {
|
|
344
|
+
const message = `file ${file} is not in sorted order`;
|
|
345
|
+
if (this.mode === "check") fail(message);
|
|
346
|
+
this.warned.add(file);
|
|
347
|
+
this.failed = true;
|
|
348
|
+
if (this.budget.hasPendingOutput()) await this.budget.flushOutput();
|
|
349
|
+
await diagnostic(this.context, new PublicDiagnostic(message));
|
|
335
350
|
}
|
|
336
351
|
async finish() {
|
|
337
|
-
if (this.failed)
|
|
352
|
+
if (this.failed) {
|
|
353
|
+
if (this.budget.hasPendingOutput()) await this.budget.flushOutput();
|
|
354
|
+
await diagnostic(this.context, new PublicDiagnostic("input is not in sorted order"));
|
|
355
|
+
}
|
|
338
356
|
}
|
|
339
357
|
};
|
|
340
358
|
export {
|
|
@@ -554,8 +554,10 @@ export function prepareBrowserTraceBudget(context, limits, fs) {
|
|
|
554
554
|
if (options.mode !== "discard")
|
|
555
555
|
return recording.run(() => recording.native.stopChunk(progress, options));
|
|
556
556
|
const result = await recording.stop(() => recording.native.stopChunk(progress, options));
|
|
557
|
-
if (recording.failure && active === recording)
|
|
557
|
+
if (recording.failure && active === recording) {
|
|
558
|
+
client._resetStackCounter?.();
|
|
558
559
|
active = undefined;
|
|
560
|
+
}
|
|
559
561
|
return result ?? {};
|
|
560
562
|
};
|
|
561
563
|
native.stop = async (progress) => {
|
|
@@ -563,8 +565,10 @@ export function prepareBrowserTraceBudget(context, limits, fs) {
|
|
|
563
565
|
return;
|
|
564
566
|
const recording = active;
|
|
565
567
|
await recording.stop(() => recording.native.stop(progress));
|
|
566
|
-
if (recording.failure && active === recording)
|
|
568
|
+
if (recording.failure && active === recording) {
|
|
569
|
+
client._resetStackCounter?.();
|
|
567
570
|
active = undefined;
|
|
571
|
+
}
|
|
568
572
|
recording.finish();
|
|
569
573
|
};
|
|
570
574
|
native.group = (...args) => { if (active) {
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { parseExpression } from "../formulas/parser.js";
|
|
2
2
|
import { excelGrammar, gnumericGrammar } from "../formulas/conventions.js";
|
|
3
|
-
import { quoteNativeSheet, serializeExpression } from "../formulas/serialization.js";
|
|
3
|
+
import { quoteFormulaString, quoteNativeSheet, serializeExpression } from "../formulas/serialization.js";
|
|
4
4
|
import { foldSheetName } from "../../spreadsheet-ast/case-fold.js";
|
|
5
5
|
// Calc hyperlink fragments use unbracketed addresses, not OpenFormula syntax.
|
|
6
|
-
const linkGrammar = { ...excelGrammar, id: "odf-hyperlink", sheetSeparator: ".", absoluteSheetReferences: true
|
|
6
|
+
const linkGrammar = { ...excelGrammar, id: "odf-hyperlink", sheetSeparator: ".", absoluteSheetReferences: true,
|
|
7
|
+
quoteSheetName(name) {
|
|
8
|
+
const letter = (c) => c >= "A" && c <= "Z" || c >= "a" && c <= "z" || c === "_";
|
|
9
|
+
return name.length > 0 && letter(name[0]) && [...name].every(c => letter(c) || c >= "0" && c <= "9")
|
|
10
|
+
? name : quoteFormulaString(name, "'", excelGrammar);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
7
13
|
// Calc getUTF32/WithCharset decodes valid characters independently, leaving
|
|
8
14
|
// malformed UTF-8 octets escaped and literal percent characters untouched.
|
|
9
15
|
function decodeFragment(source, charge) {
|
|
@@ -75,9 +75,10 @@ export function besselPhaseDomain(x, order) {
|
|
|
75
75
|
export function capturedBesselPhase(x, order, secondKind, host) {
|
|
76
76
|
let sum = 1, term = 1;
|
|
77
77
|
const x2 = x * x, n2 = order * order;
|
|
78
|
+
const inverse = divide([1, 0], product(x, x)), square = product(order, order);
|
|
78
79
|
// The source's paired inverse is NaN after square overflow, and every later
|
|
79
80
|
// phase term stays NaN. Preserve that result without its 399 wasted steps.
|
|
80
|
-
if (!Number.isFinite(x2) || !Number.isFinite(n2)) {
|
|
81
|
+
if (!Number.isFinite(x2) || !Number.isFinite(n2) || !Number.isFinite(inverse[0] + inverse[1]) || !Number.isFinite(square[0] + square[1])) {
|
|
81
82
|
if (x > 1 / Number.EPSILON)
|
|
82
83
|
host.diagnostic?.({ code: "numeric-warning", severity: "warning", message: "Reduced accuracy for very large trigonometric arguments" });
|
|
83
84
|
return NaN;
|
|
@@ -93,7 +94,6 @@ export function capturedBesselPhase(x, order, secondKind, host) {
|
|
|
93
94
|
break;
|
|
94
95
|
}
|
|
95
96
|
const amplitude = Math.sqrt(sum / (x * (Math.PI / 2)));
|
|
96
|
-
const inverse = divide([1, 0], product(x, x)), square = product(order, order);
|
|
97
97
|
const t = [[1, 0]], s = [[1, 0]];
|
|
98
98
|
let phase = [0, 0], last = Number.MAX_VALUE;
|
|
99
99
|
for (let n = 1; n < 400; n++) {
|
|
@@ -45,11 +45,15 @@ export function resolveLabelReference(book, node, position, read, tick, anchorOn
|
|
|
45
45
|
if (coordinate === undefined || coordinate < 0 || coordinate >= (axis === "row" ? size.rows : size.columns))
|
|
46
46
|
return error("#REF!");
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
const rowLabel = range.firstRow === range.lastRow && row === range.firstRow &&
|
|
49
|
+
(column === range.firstColumn - 1 || column === range.lastColumn + 1);
|
|
50
|
+
const columnLabel = range.firstColumn === range.lastColumn && column === range.firstColumn &&
|
|
51
|
+
(row === range.firstRow - 1 || row === range.lastRow + 1);
|
|
52
|
+
if (rowLabel === columnLabel || label.preceding && !columnLabel)
|
|
49
53
|
return error("#REF!");
|
|
50
|
-
if (!label.scalar
|
|
54
|
+
if (!label.scalar)
|
|
51
55
|
return { kind: "range", ...range };
|
|
52
|
-
if (
|
|
56
|
+
if (rowLabel)
|
|
53
57
|
return position.column < range.firstColumn || position.column > range.lastColumn ? error("#REF!") :
|
|
54
58
|
{ kind: "range", ...range, firstColumn: position.column, lastColumn: position.column };
|
|
55
59
|
return position.row < range.firstRow || position.row > range.lastRow ? error("#REF!") :
|
|
@@ -64,7 +68,7 @@ export function resolveLabelReference(book, node, position, read, tick, anchorOn
|
|
|
64
68
|
const columnLabel = label.axis === "column";
|
|
65
69
|
const maximum = (columnLabel ? size.rows : size.columns) - 1;
|
|
66
70
|
const ownAxis = columnLabel ? position.row : position.column;
|
|
67
|
-
const sameAxis = columnLabel ? position.column === column : position.row === row;
|
|
71
|
+
const sameAxis = position.sheet === sheet.id && (columnLabel ? position.column === column : position.row === row);
|
|
68
72
|
let start, end;
|
|
69
73
|
if (!declared && label.semantics === "openformula") {
|
|
70
74
|
if (!book.automaticLabelLookup)
|
|
@@ -130,11 +134,11 @@ export function resolveLabelReference(book, node, position, read, tick, anchorOn
|
|
|
130
134
|
const value = read(sheet, row, column);
|
|
131
135
|
if (value.kind !== "string" && value.kind !== "blank")
|
|
132
136
|
return error("#NAME?");
|
|
133
|
-
start =
|
|
137
|
+
start = (columnLabel ? row : column) + 1;
|
|
134
138
|
end = maximum;
|
|
135
139
|
if (sameAxis) {
|
|
136
140
|
if (ownAxis === start)
|
|
137
|
-
start
|
|
141
|
+
start++;
|
|
138
142
|
else if (ownAxis > start)
|
|
139
143
|
end = ownAxis - 1;
|
|
140
144
|
}
|
|
@@ -154,44 +158,61 @@ export function resolveLabelReference(book, node, position, read, tick, anchorOn
|
|
|
154
158
|
}
|
|
155
159
|
}
|
|
156
160
|
}
|
|
157
|
-
if (start
|
|
161
|
+
if (start > end)
|
|
162
|
+
return error("#REF!");
|
|
163
|
+
if (label.scalar) {
|
|
158
164
|
if (ownAxis < start || ownAxis > end)
|
|
159
165
|
return error("#REF!");
|
|
160
166
|
start = end = ownAxis;
|
|
161
167
|
}
|
|
162
168
|
else if (!declared && start !== end) {
|
|
163
|
-
// GetDataArea(includeOld=true, onlyDown=false)
|
|
164
|
-
//
|
|
169
|
+
// GetDataArea(includeOld=true, onlyDown=false), preserving the ordered
|
|
170
|
+
// horizontal/vertical perimeter expansion, including diagonal neighbors.
|
|
171
|
+
// Index occupied axes once so each perimeter query is logarithmic rather
|
|
172
|
+
// than scanning every cell at every step. Charge construction and queries.
|
|
173
|
+
const rows = new Map(), columns = new Map();
|
|
174
|
+
for (const cell of sheet.cells) {
|
|
175
|
+
tick();
|
|
176
|
+
if (cell.value.kind === "blank" && !cell.formula)
|
|
177
|
+
continue;
|
|
178
|
+
const rowCells = rows.get(cell.row) ?? [], columnCells = columns.get(cell.column) ?? [];
|
|
179
|
+
rowCells.push(cell.column);
|
|
180
|
+
columnCells.push(cell.row);
|
|
181
|
+
rows.set(cell.row, rowCells);
|
|
182
|
+
columns.set(cell.column, columnCells);
|
|
183
|
+
}
|
|
184
|
+
for (const index of [rows, columns])
|
|
185
|
+
for (const coordinates of index.values()) {
|
|
186
|
+
tick();
|
|
187
|
+
coordinates.sort((a, b) => { tick(); return a - b; });
|
|
188
|
+
}
|
|
189
|
+
const occupied = (index, axis, low, high) => {
|
|
190
|
+
tick();
|
|
191
|
+
const coordinates = index.get(axis);
|
|
192
|
+
if (!coordinates)
|
|
193
|
+
return false;
|
|
194
|
+
let first = 0, last = coordinates.length;
|
|
195
|
+
while (first < last) {
|
|
196
|
+
tick();
|
|
197
|
+
const middle = Math.floor((first + last) / 2);
|
|
198
|
+
if (coordinates[middle] < low)
|
|
199
|
+
first = middle + 1;
|
|
200
|
+
else
|
|
201
|
+
last = middle;
|
|
202
|
+
}
|
|
203
|
+
return first < coordinates.length && coordinates[first] <= high;
|
|
204
|
+
};
|
|
165
205
|
let left = columnLabel ? column : start, right = left;
|
|
166
206
|
let top = columnLabel ? start : row, bottom = top;
|
|
167
207
|
for (;;) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
tick();
|
|
171
|
-
if (cell.value.kind === "blank" && !cell.formula)
|
|
172
|
-
continue;
|
|
173
|
-
if (cell.row >= top - 1 && cell.row <= bottom + 1) {
|
|
174
|
-
if (cell.column === left - 1)
|
|
175
|
-
extendLeft = true;
|
|
176
|
-
if (cell.column === right + 1)
|
|
177
|
-
extendRight = true;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
208
|
+
const extendLeft = occupied(columns, left - 1, top - 1, bottom + 1);
|
|
209
|
+
const extendRight = occupied(columns, right + 1, top - 1, bottom + 1);
|
|
180
210
|
if (extendLeft)
|
|
181
211
|
left--;
|
|
182
212
|
if (extendRight)
|
|
183
213
|
right++;
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (cell.value.kind === "blank" && !cell.formula)
|
|
187
|
-
continue;
|
|
188
|
-
if (cell.column >= left && cell.column <= right) {
|
|
189
|
-
if (cell.row === top - 1)
|
|
190
|
-
extendTop = true;
|
|
191
|
-
if (cell.row === bottom + 1)
|
|
192
|
-
extendBottom = true;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
214
|
+
const extendTop = occupied(rows, top - 1, left, right);
|
|
215
|
+
const extendBottom = occupied(rows, bottom + 1, left, right);
|
|
195
216
|
if (extendTop)
|
|
196
217
|
top--;
|
|
197
218
|
if (extendBottom)
|
|
@@ -202,7 +223,7 @@ export function resolveLabelReference(book, node, position, read, tick, anchorOn
|
|
|
202
223
|
end = Math.min(end, columnLabel ? bottom : right);
|
|
203
224
|
if (sameAxis && ownAxis >= start && ownAxis <= end) {
|
|
204
225
|
if (ownAxis === start)
|
|
205
|
-
start
|
|
226
|
+
start++;
|
|
206
227
|
else
|
|
207
228
|
end = ownAxis - 1;
|
|
208
229
|
}
|
|
@@ -805,13 +805,15 @@ export function parseExpression(source, options) {
|
|
|
805
805
|
if (value.kind === "parentheses")
|
|
806
806
|
return { ...value, child: select(value.child, "other", "other") };
|
|
807
807
|
if (value.kind === "unary")
|
|
808
|
-
return { ...value, child: select(value.child, value.op === "%" ? before : "
|
|
808
|
+
return { ...value, child: select(value.child, value.op === "%" ? before : "binary", value.op === "%" ? "binary" : after) };
|
|
809
809
|
if (value.kind === "binary") {
|
|
810
810
|
const neighbor = value.op === "intersection" || value.op === "label-intersection" ? "intersection" : "binary";
|
|
811
811
|
return { ...value, left: select(value.left, before, neighbor), right: select(value.right, neighbor, after) };
|
|
812
812
|
}
|
|
813
813
|
if (value.kind === "call")
|
|
814
814
|
return { ...value, args: value.args.map(child => select(child, "other", "other")) };
|
|
815
|
+
if (value.kind === "array")
|
|
816
|
+
return { ...value, rows: value.rows.map(row => row.map(child => select(child, "other", "other"))) };
|
|
815
817
|
return value;
|
|
816
818
|
};
|
|
817
819
|
root = select(root, "binary", "binary");
|
|
@@ -48,8 +48,11 @@ export function rewriteReferences(document, edit) {
|
|
|
48
48
|
return { row: { value: -1, relative: false }, column: { value: 0, relative: false } };
|
|
49
49
|
next = { ...ref, sheet: document.sheetNames[id] };
|
|
50
50
|
}
|
|
51
|
-
if (edit.translation === "move" && target.sheet !== document.position.sheet && ref.workbook === undefined && ref.sheet === undefined)
|
|
52
|
-
|
|
51
|
+
if (edit.translation === "move" && target.sheet !== document.position.sheet && ref.workbook === undefined && ref.sheet === undefined) {
|
|
52
|
+
const { sheetOffset: ignoredOffset, ...anchored } = ref;
|
|
53
|
+
next = { ...anchored, sheet: document.sheetNames?.[document.position.sheet] ?? document.position.sheet,
|
|
54
|
+
...(ref.sheetRelative === undefined ? {} : { sheetRelative: false }) };
|
|
55
|
+
}
|
|
53
56
|
const renamed = next.workbook === undefined && next.sheet ? renamedSheet(next.sheet) : undefined;
|
|
54
57
|
if (renamed !== undefined)
|
|
55
58
|
next = { ...next, sheet: renamed };
|
|
@@ -88,7 +91,14 @@ export function rewriteReferences(document, edit) {
|
|
|
88
91
|
unchanged = false;
|
|
89
92
|
return next;
|
|
90
93
|
};
|
|
91
|
-
const first = rewrite(node.first)
|
|
94
|
+
const first = rewrite(node.first);
|
|
95
|
+
let last = node.last ? rewrite(node.last) : undefined;
|
|
96
|
+
// A newly anchored local ODF range inherits its first endpoint's sheet.
|
|
97
|
+
if (document.grammar.bracketReferences && node.first.sheet === undefined && node.last?.sheet === undefined &&
|
|
98
|
+
first.sheet !== undefined && last?.sheet === first.sheet && last.sheetRelative === first.sheetRelative) {
|
|
99
|
+
const { sheet: ignoredSheet, ...inherited } = last;
|
|
100
|
+
last = inherited;
|
|
101
|
+
}
|
|
92
102
|
// The parent replacement includes its explicit area's source span.
|
|
93
103
|
if (node.label?.kind === "radical") {
|
|
94
104
|
if (node.label.data)
|
|
@@ -14,8 +14,6 @@ export function readBiffDataTable(data, revision, opcode) {
|
|
|
14
14
|
const input = (offset, deleted) => {
|
|
15
15
|
const r = data.u16(offset), c = data.u16(offset + 2);
|
|
16
16
|
if (deleted) {
|
|
17
|
-
if (r !== 0xffff || c !== 0xffff)
|
|
18
|
-
invalidBiff("invalid deleted data-table input cell");
|
|
19
17
|
return "#REF!";
|
|
20
18
|
}
|
|
21
19
|
if (c >= 256 || r >= (revision === 8 ? 65536 : 16384))
|
|
@@ -44,18 +42,18 @@ export function writeBiffDataTable(group, sheet, book, context, maxRows) {
|
|
|
44
42
|
let marker = arg;
|
|
45
43
|
while (marker.kind === "parentheses")
|
|
46
44
|
marker = marker.child;
|
|
47
|
-
if (
|
|
45
|
+
if (marker.kind === "omitted" || marker.kind === "literal" && marker.value.kind === "blank")
|
|
48
46
|
return undefined;
|
|
49
47
|
if (marker.kind === "literal" && marker.value.kind === "error" && marker.value.value === "#REF!") {
|
|
50
48
|
if (maxRows < 65536)
|
|
51
49
|
throw new SsconvertError("unsupported-feature", "Cannot export deleted Excel data table input before BIFF8");
|
|
52
50
|
return { row: 0xffff, column: 0xffff, deleted: true };
|
|
53
51
|
}
|
|
54
|
-
if (
|
|
52
|
+
if (marker.kind !== "reference" || marker.label || marker.last || !marker.first.row || !marker.first.column)
|
|
55
53
|
throw new SsconvertError("unsupported-feature", "Cannot export Excel data table input expression");
|
|
56
54
|
// TABLE evaluates raw coordinates on its own sheet, including qualified inputs.
|
|
57
|
-
const row =
|
|
58
|
-
const column =
|
|
55
|
+
const row = marker.first.row.value + (marker.first.row.relative ? position.row : 0);
|
|
56
|
+
const column = marker.first.column.value + (marker.first.column.relative ? position.column : 0);
|
|
59
57
|
if (row < 0 || row >= maxRows || column < 0 || column >= 256)
|
|
60
58
|
throw new SsconvertError("unsupported-feature", "Cannot export Excel data table input outside version limits");
|
|
61
59
|
return { row, column };
|
|
@@ -91,6 +91,9 @@ export function translateBiffFormula(bytes, context) {
|
|
|
91
91
|
};
|
|
92
92
|
while (offset < bytes.length) {
|
|
93
93
|
const raw = data.u8(offset++), token = raw >= 0x20 ? (raw & 0x1f) | 0x20 : raw;
|
|
94
|
+
// MS-XLS SharedParsedFormula excludes ELF tokens, including radical labels.
|
|
95
|
+
if (context.shared && token === 0x18)
|
|
96
|
+
invalidBiff("ELF label in shared formula");
|
|
94
97
|
if (binaryOperators[token]) {
|
|
95
98
|
const [operator, precedence] = binaryOperators[token], right = pop(), left = pop();
|
|
96
99
|
push(protect(left, precedence) + operator + protect(right, precedence + (token === 4 || token === 6 || token === 7 ? 1 : 0)), precedence);
|
|
@@ -27,12 +27,11 @@ export function readBiffLabelRanges(parts, charge) {
|
|
|
27
27
|
const pairs = [];
|
|
28
28
|
for (const axis of ["row", "column"]) {
|
|
29
29
|
const count = word();
|
|
30
|
-
charge(count);
|
|
31
30
|
for (let i = 0; i < count; i++) {
|
|
32
|
-
charge(0);
|
|
33
31
|
const labels = { startRow: word(), endRow: word(), startColumn: word(), endColumn: word() };
|
|
34
32
|
if (labels.startRow > labels.endRow || labels.startColumn > labels.endColumn || labels.endColumn >= 256)
|
|
35
33
|
invalidBiff("invalid LABELRANGES rectangle");
|
|
34
|
+
charge(1);
|
|
36
35
|
pairs.push({ axis, labels, data: dataRange(labels, axis) });
|
|
37
36
|
}
|
|
38
37
|
}
|
|
@@ -64,22 +63,26 @@ export function writeBiffLabelRanges(sheet, revision, output, charge) {
|
|
|
64
63
|
throw new SsconvertError("unsupported-feature", "Excel BIFF8 label range count exceeds version limits");
|
|
65
64
|
list.push(labels);
|
|
66
65
|
}
|
|
67
|
-
//
|
|
66
|
+
// Keep each Ref8U intact; CONTINUE has no string-width byte.
|
|
68
67
|
let payload = new Uint8Array(output.maximumRecord), offset = 0, opcode = 0x15f;
|
|
69
|
-
const
|
|
70
|
-
if (offset
|
|
71
|
-
output.record(opcode, payload);
|
|
68
|
+
const reserve = (length) => {
|
|
69
|
+
if (offset + length > payload.length) {
|
|
70
|
+
output.record(opcode, payload.subarray(0, offset));
|
|
72
71
|
opcode = 0x3c;
|
|
73
72
|
payload = new Uint8Array(output.maximumRecord);
|
|
74
73
|
offset = 0;
|
|
75
74
|
}
|
|
75
|
+
};
|
|
76
|
+
const word = (value) => {
|
|
76
77
|
payload[offset++] = value & 255;
|
|
77
78
|
payload[offset++] = value >> 8;
|
|
78
79
|
};
|
|
79
80
|
for (const ranges of [rows, columns]) {
|
|
81
|
+
reserve(2);
|
|
80
82
|
word(ranges.length);
|
|
81
83
|
for (const range of ranges) {
|
|
82
84
|
charge(1);
|
|
85
|
+
reserve(8);
|
|
83
86
|
word(range.startRow);
|
|
84
87
|
word(range.endRow);
|
|
85
88
|
word(range.startColumn);
|
|
@@ -301,7 +301,7 @@ export async function readBiff(borrowed, context, encoding) {
|
|
|
301
301
|
if (opcode === 0x160 && ver === 8 && scope.type === 5) {
|
|
302
302
|
if (data.bytes.length !== 2)
|
|
303
303
|
invalidBiff("invalid USESELFS length");
|
|
304
|
-
automaticLabelLookup
|
|
304
|
+
automaticLabelLookup = data.u16(0) !== 0;
|
|
305
305
|
continue;
|
|
306
306
|
}
|
|
307
307
|
if (opcode === 0x15f && ver === 8 && sheet) {
|
package/dist/xlsx-ast/xlsx.js
CHANGED
|
@@ -473,7 +473,7 @@ export async function readXlsx(bytes, context) {
|
|
|
473
473
|
const si = attr(f, "si") ?? "0";
|
|
474
474
|
const existing = shared.get(si);
|
|
475
475
|
if (f.text) {
|
|
476
|
-
expression = readOpenFormula(f)?.source ?? formula(f.text, id, position.row, position.column, context, semantics.arrayStringLiterals);
|
|
476
|
+
expression = readOpenFormula(f)?.source ?? formula(decodeXlsxString(f.text), id, position.row, position.column, context, semantics.arrayStringLiterals);
|
|
477
477
|
groupId = `shared-${si}`;
|
|
478
478
|
shared.set(si, { expression, ...position, id: groupId, ...semantics });
|
|
479
479
|
if (attr(f, "ref"))
|
|
@@ -491,14 +491,15 @@ export async function readXlsx(bytes, context) {
|
|
|
491
491
|
invalid("shared formula has no preceding definition");
|
|
492
492
|
}
|
|
493
493
|
else {
|
|
494
|
-
expression = readOpenFormula(f)?.source ?? formula(f.text, id, position.row, position.column, context, semantics.arrayStringLiterals);
|
|
494
|
+
expression = readOpenFormula(f)?.source ?? formula(decodeXlsxString(f.text), id, position.row, position.column, context, semantics.arrayStringLiterals);
|
|
495
495
|
if (kind === "array") {
|
|
496
496
|
groupId = `array-${position.row}-${position.column}`;
|
|
497
497
|
groups.push({ id: groupId, kind: "array", expression, range: range(attr(f, "ref")), ...semantics });
|
|
498
498
|
}
|
|
499
499
|
}
|
|
500
500
|
}
|
|
501
|
-
const hasCache =
|
|
501
|
+
const hasCache = type === "inlineStr" ? child(node, "is") !== undefined
|
|
502
|
+
: raw !== undefined && (raw !== "" || type === "str");
|
|
502
503
|
cells.push({ ...position, value, ...(expression === undefined ? {} : { formula: expression, ...semantics, formulaDirty: !hasCache,
|
|
503
504
|
...(hasCache ? { cachedResult: value } : {}) }), ...(groupId ? { formulaGroup: groupId } : {}),
|
|
504
505
|
...(style ?? {}), ...(richText ? { richText } : {}) });
|
|
@@ -767,6 +768,7 @@ export function createXlsxWriter(edition) {
|
|
|
767
768
|
})).join(""));
|
|
768
769
|
const workbookRelations = [];
|
|
769
770
|
const shared = [], sharedIds = new Map(), stringCounts = new Map();
|
|
771
|
+
let sharedReferences = 0;
|
|
770
772
|
let totalCells = 0;
|
|
771
773
|
for (const sheet of book.sheets)
|
|
772
774
|
for (const cell of sheet.cells) {
|
|
@@ -884,13 +886,14 @@ export function createXlsxWriter(edition) {
|
|
|
884
886
|
const array = sheet.formulaGroups?.find(g => g.kind === "array" && g.range.startRow <= cell.row && g.range.endRow >= cell.row && g.range.startColumn <= cell.column && g.range.endColumn >= cell.column);
|
|
885
887
|
if (cell.formula && (!array || cell.row === array.range.startRow && cell.column === array.range.startColumn))
|
|
886
888
|
body += xml("f", { ...(array ? { t: "array", ref: rangeText(array.range) } : {}),
|
|
887
|
-
...formulaSemanticsAttributes(array?.arrayStringLiterals ?? cell.arrayStringLiterals, true, cell.formula) }, escapeXlsx(exportXlsxFormula(book, cell.formula, sheet, cell.row, cell.column, context, array?.arrayStringLiterals ?? cell.arrayStringLiterals)));
|
|
889
|
+
...formulaSemanticsAttributes(array?.arrayStringLiterals ?? cell.arrayStringLiterals, true, cell.formula) }, escapeXlsx(encodeXlsxString(exportXlsxFormula(book, cell.formula, sheet, cell.row, cell.column, context, array?.arrayStringLiterals ?? cell.arrayStringLiterals))));
|
|
888
890
|
if (value.kind === "string") {
|
|
889
891
|
if (cell.formula) {
|
|
890
892
|
type = "str";
|
|
891
893
|
body += xml("v", {}, escapeXlsx(encodeXlsxString(value.value)));
|
|
892
894
|
}
|
|
893
895
|
else if ((stringCounts.get(stringKey) ?? 0) > 1) {
|
|
896
|
+
sharedReferences++;
|
|
894
897
|
type = "s";
|
|
895
898
|
let id = sharedIds.get(stringKey);
|
|
896
899
|
if (id === undefined) {
|
|
@@ -981,7 +984,7 @@ export function createXlsxWriter(edition) {
|
|
|
981
984
|
sheetNodes.push(xml("sheet", { name: sheet.name, sheetId: index + 1, "r:id": id }));
|
|
982
985
|
}
|
|
983
986
|
if (shared.length) {
|
|
984
|
-
await add("xl/sharedStrings.xml", xml("sst", { xmlns: namespace, uniqueCount: shared.length, count:
|
|
987
|
+
await add("xl/sharedStrings.xml", xml("sst", { xmlns: namespace, uniqueCount: shared.length, count: sharedReferences }, shared.map(cell => xml("si", {}, writeRichString(cell.value.kind === "string" ? cell.value.value : "", cell.richText, xml, charge))).join("")), "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml");
|
|
985
988
|
workbookRelations.push({ id: `rId${workbookRelations.length + 1}`, type: relationships + "/sharedStrings", target: "sharedStrings.xml" });
|
|
986
989
|
}
|
|
987
990
|
await add("xl/styles.xml", styles.serialize(), "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@poe-platform/safe-bash",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.801",
|
|
4
4
|
"description": "Extensible virtual shell with pluggable filesystems and streaming commands",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -915,9 +915,10 @@
|
|
|
915
915
|
"access": "public"
|
|
916
916
|
},
|
|
917
917
|
"dependencies": {
|
|
918
|
-
"@poe-platform/safe-fs": "0.1.
|
|
918
|
+
"@poe-platform/safe-fs": "0.1.801",
|
|
919
919
|
"pdf-lib": "1.17.1",
|
|
920
920
|
"@noble/hashes": "2.4.0",
|
|
921
|
+
"decimal.js": "^10.6.0",
|
|
921
922
|
"@noble/ciphers": "2.4.0",
|
|
922
923
|
"pako": "3.0.1",
|
|
923
924
|
"@types/node": "^25.2.2",
|
|
@@ -1533,12 +1534,12 @@
|
|
|
1533
1534
|
"./dist/safe-bash-zip-engine/zip/test-command.js",
|
|
1534
1535
|
"./dist/safe-bash-zip-engine/zip/volumes.js",
|
|
1535
1536
|
"./dist/safe-bash-zip-engine/zip/zip64.js",
|
|
1536
|
-
"./dist/safe-bash/chunks/chunk-
|
|
1537
|
-
"./dist/safe-bash/chunks/chunk-
|
|
1538
|
-
"./dist/safe-bash/chunks/chunk-
|
|
1539
|
-
"./dist/safe-bash/chunks/chunk-
|
|
1540
|
-
"./dist/safe-bash/chunks/chunk-
|
|
1541
|
-
"./dist/safe-bash/chunks/chunk-
|
|
1537
|
+
"./dist/safe-bash/chunks/chunk-FNDNHAGE.js",
|
|
1538
|
+
"./dist/safe-bash/chunks/chunk-IWDICZVK.js",
|
|
1539
|
+
"./dist/safe-bash/chunks/chunk-K6VCD7IY.js",
|
|
1540
|
+
"./dist/safe-bash/chunks/chunk-PQRAK7HU.js",
|
|
1541
|
+
"./dist/safe-bash/chunks/chunk-SZH7EJLD.js",
|
|
1542
|
+
"./dist/safe-bash/chunks/chunk-VQDD3G76.js",
|
|
1542
1543
|
"./dist/safe-bash/commands/apply-patch/index.js",
|
|
1543
1544
|
"./dist/safe-bash/commands/archive/index.js",
|
|
1544
1545
|
"./dist/safe-bash/commands/column/index.js",
|