@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
package/README.md
CHANGED
|
@@ -75,6 +75,8 @@ the default registry’s GH/Git integration; add `ghCommands` explicitly where n
|
|
|
75
75
|
The registry subpath supports ESM splitting without visiting the full aggregate.
|
|
76
76
|
Its exports do not select the optional
|
|
77
77
|
`op`, `node` or `safejs` plugins; add those only through their command entrypoints.
|
|
78
|
+
Only registered commands are available; adding search commands does not enable unrelated tools.
|
|
79
|
+
Use `agentCommands({ muscleMemory: true })` or individual command plugins to enable tools such as `bc`, `fd`, `sponge`, and `less`.
|
|
78
80
|
Removing a registered command changes availability, while shared family code may
|
|
79
81
|
remain bundled. Splitting dynamic
|
|
80
82
|
imports changes initialization timing: every uploaded static chunk and Wasm asset
|
|
@@ -222,7 +224,7 @@ and other unsupported options remain unavailable.
|
|
|
222
224
|
| --- | --- |
|
|
223
225
|
| Browse | `pwd`, `ls` (including `-i`/`--inode` for provider-reported inode numbers, with `?` for unknown metadata; `-Q`/`--quote-name` and `--indicator-style=none/slash/file-type/classify`), `tree`, `find` (including `-H` to follow argument symlinks while keeping descendant links physical, and `-D tree` for virtual expression diagnostics; other debug modes are unsupported), `du`, `file`, `basename`, `dirname`, `realpath` (including lexical `-s`/`--strip`/`--no-symlinks`), `readlink` (including `-m`/`--canonicalize-missing`), `which` |
|
|
224
226
|
| Files | `mkdir`, `touch`, `cp`, `mv`, `rm`, `rmdir`, `ln`, `chmod`, `stat`, `mktemp`. `mkdir -m` accepts octal and symbolic permission modes; symbolic modes start from `0777` masked by the current umask. `rm --interactive=never` removes without prompting; `--interactive=always` / `-i` reads a confirmation from stdin for each removal. `--interactive=once` / `-I` prompts once for recursive removal or more than three operands. `cp -a` / `--archive` copies directory trees without dereferencing symbolic links (the virtual archive profile is `-RP`; add preservation flags for metadata and hard links). `cp -b` / `--backup[=simple\|numbered\|existing]` preserves replaced files; `-S` / `--suffix` sets the simple backup suffix. `cp -t DIR` / `--target-directory=DIR` copies sources into a directory; `-T` / `--no-target-directory` treats the destination as a single path. `mv -u` / `--update` moves files only when the destination is absent or older; directories retain normal move behavior. `mv -t DIR` / `--target-directory=DIR` moves sources into an existing directory; `-T` / `--no-target-directory` treats the destination as an exact path. `cp --remove-destination` removes destination entries before copying, preserving other hard links and leaving destination symlink referents untouched. `cp --preserve=mode` retains permissions; `-p` retains modes and access/modification times and requires matching reported owners. `-d` copies symlinks and preserves links between copied entries. `--attributes-only` leaves existing bytes intact and creates empty missing files; combine it with preservation flags to update metadata. Unsupported metadata operations fail explicitly; ownership changes and symlink timestamps are unavailable. `cp -v` reports paths using the original operand spelling, including relative paths. `ln -sr` / `--symbolic --relative` computes a relative symlink target from the link directory, resolving existing symlinks and allowing missing sources. `ln -v` / `--verbose` reports each successful link as 'target' => 'source' (hard) or 'target' -> 'source' (symbolic). `rmdir --ignore-fail-on-non-empty` leaves nonempty directories untouched without reporting a failure; with `-p`, removal stops at the first nonempty parent. `touch -h` / `--no-dereference` accepts ordinary files and reads reference symlink metadata; symlink targets fail explicitly because symlink timestamp mutation is unavailable. `touch -d` / `--date` accepts epoch seconds (`@0`), ISO/RFC dates and the virtual `date` relative-date profile; `-t [[CC]YY]MMDDhhmm[.ss]` sets a calendar timestamp. |
|
|
225
|
-
| Filter/search | `cat`, `head`, `tail`, `wc`, `tee`, `cut`, `tr`, `sort`, `uniq`, `sed`, `awk`, `grep`, `rg`, `egrep`, `fgrep`, `fd`. `fd` finds virtual files and directories with regex/glob patterns, extension/type/size/time filters, ignore files, and literal command execution; see [fd usage](../safe-bash-command-fd/README.md). `awk` accepts `--field-separator` (`-F`), `--source` (`-e`), and `--characters-as-bytes` (`-b`); its
|
|
227
|
+
| Filter/search | `cat`, `head`, `tail`, `wc`, `tee`, `cut`, `tr`, `sort`, `uniq`, `sed`, `awk`, `grep`, `rg`, `egrep`, `fgrep`, `fd`. `fd` finds virtual files and directories with regex/glob patterns, extension/type/size/time filters, ignore files, and literal command execution; see [fd usage](../safe-bash-command-fd/README.md). `awk` accepts `--field-separator` (`-F`), `--source` (`-e`), and `--characters-as-bytes` (`-b`); its string indexes and records are byte-oriented. `sed` and `awk` regexes count UTF-8 characters by default and in UTF-8 locales; C/POSIX locales and `awk -b` select byte matching (locale precedence: `LC_ALL`, `LC_CTYPE`, `LANG`). `cut -c` selects raw bytes in C/POSIX locales (`LC_ALL`, then `LC_CTYPE`, then `LANG`); otherwise it selects UTF-8 characters, including when no locale is set. `head` and `tail` accept `-z` / `--zero-terminated` for NUL-delimited records. `tail --follow[=descriptor\|name]` follows retained files; `--retry` retries inaccessible files (`-F` combines name following and retry). `-s` / `--sleep-interval` sets polling seconds, and `--max-unchanged-stats` controls name reopening after unchanged polls; `--max-idle=0` emits only the initial selection. Following requires retained-read filesystem support. `uniq -D` / `--all-repeated[=none\|prepend\|separate]` prints every repeated record; `--group[=separate\|prepend\|append\|both]` prints all records with group separators. `wc -L` / `--max-line-length` counts display columns with eight-column tab stops; UTF-8 widths use the frozen GNU/Linux C.UTF-8 profile. |
|
|
226
228
|
| Format/combine | `nl`, `seq`, `rev`, `tac`, `expand`, `unexpand`, `fold`, `fmt`, `strings`, `paste`, `comm`, `join`, `column`, `split`, `pr`. `pr --date-format=FORMAT` customizes the UTC header date using the virtual `date` format directives. |
|
|
227
229
|
| Structured text | `jq`, `html-to-markdown`, `xq`, `xmllint`, `mdq`. `mdq` extracts Markdown sections and elements, with Markdown, JSON and plain output; see the [query syntax and limits](../safe-bash-command-mdq/README.md). `xq` converts XML to JSON and applies jq filters. `xmllint` supports `--xpath`, `--noout` well-formedness checks, `--format`, `--noblanks`, `--output` / `-o`, `--recover`, `--encode`, and inclusive/exclusive canonicalization (`--c14n` / `--exc-c14n`) with comments; DTDs and schema validation are unsupported. [XML modes and limits](docs/XML_QUERY.md). `jq` supports ASCII escapes (`-a`), indentation (`--indent`, `--tab`), explicit color (`-C` / `-M`), NUL-delimited raw output (`--raw-output0`), and unbuffered writes. `jq -S` / `--sort-keys` sorts object keys recursively in JSON output; `--stream` / `--stream-errors` emit path events, and `--seq` handles JSON sequences within the same resource limits. `--rawfile NAME FILE` binds virtual-file text; `--slurpfile NAME FILE` binds its JSON values as an array. `--args` and `--jsonargs` expose string or JSON arguments through `$ARGS.positional`. `jq -L DIRECTORY` loads virtual `.jq` modules with zero-argument definitions; see [jq options and limits](src/commands/structured/README.md). |
|
|
228
230
|
| Bytes/checksums | `base64`, `base32`, `xxd`, `od`, `md5sum`, `sha1sum`, `sha256sum`, `cksum`. `od -a` prints ASCII character names, `-f` prints IEEE single-precision floats, and `-i` / `-l` print signed four/eight-byte integers. Explicit float types are `-tf4` and `-tf8`. `od --strings[=MIN]` / `-S[MIN]` prints NUL-terminated strings with at least MIN characters (default 3). |
|
|
@@ -390,7 +392,7 @@ unqualified.
|
|
|
390
392
|
| Command | Plugin and configuration |
|
|
391
393
|
| --- | --- |
|
|
392
394
|
| `dos2unix`, `unix2dos` | `lineEndingCommands({ limits?, replace? })` from `/commands/line-endings`: byte and UTF-16 line-ending conversion. Use `-e` / `--add-eol` to terminate the final line, `-O` / `--to-stdout` to convert without rewriting inputs, and `-i[FLAGS]` / `--info[=FLAGS]` to inspect line endings, BOM and text/binary status. `-v` prints conversion details. In-place conversion requires safe publication capabilities and preserves reported ownership; `--allow-chown` permits publication when ownership cannot be preserved, and `--no-allow-chown` restores the default. |
|
|
393
|
-
| `curl`, `wget` | `networkCommands({ authorize, transport?, limits?, replace? })`: required authorization on every request, redirect, and retry. Curl's `-r/--range` requests byte ranges. Wget supports `--header 'NAME: VALUE'`, `--user-agent`, `--referer`, `--post-data`/`--post-file` and `--method` with `--body-data`/`--body-file`; body files come from the VFS and retain their bytes. Repeated wget headers replace earlier values by name; `--header=''` clears custom headers, and `NAME:` sends an empty value.
|
|
395
|
+
| `curl`, `wget` | `networkCommands({ authorize, transport?, limits?, replace? })`: required authorization on every request, redirect, and retry. Curl's `-r/--range` requests byte ranges. Wget supports `--header 'NAME: VALUE'`, `--user-agent`, `--referer`, `--post-data`/`--post-file` and `--method` with `--body-data`/`--body-file`; body files come from the VFS and retain their bytes. Repeated wget headers replace earlier values by name; `--header=''` clears custom headers, and `NAME:` sends an empty value. Host, Connection, and Expect overrides are accepted; framing and proxy headers remain transport-controlled. Custom headers are dropped after crossing origins. Node uses the native HTTP transport and supports curl's `--connect-timeout` for DNS/TCP/TLS setup. Workers default to `createFetchTransport()`, which cannot enforce a separate connection timeout. Network registration without an authorizer denies requests. Quotas default to disabled in every runtime. `createOriginAuthorizer([...])` provides exact origin/hostname policy; its omitted allowlist is deliberately `*` (allow all). [Options and limits](src/commands/network/types.ts). |
|
|
394
396
|
| `node` | `nodeCommands({ runtime, limits?, replace? })`: runs JavaScript with an injected SafeJS runtime, virtual files, and shell streams. [Usage and supported subset](src/commands/node/README.md). |
|
|
395
397
|
| `python`, `python3` | `pythonCommands({ createExecutor })` from `@poe-platform/safe-bash/commands/python`: supply an explicit executor for invocation-local Python, filesystem I/O and shell streams. Open-file, directory, worker-capacity, input-fragment, package-download, cache and manifest-store quotas are unlimited by default; configure individual budgets when needed. [Executor and ownership contract](src/contracts/python-executor.md). Invocation capabilities include `createPythonLlmCapability(context, service)` for the same authorized model service and `createPythonShellCapability(context)` for enabled commands. The bundled [Python LLM client](docs/python-llm.md) supports canonical streamed attachments, shared named templates and a typed saved-configuration snapshot. |
|
|
396
398
|
| `llm` | `llmCommands({ providers, defaultModel?, replace? })` or `llmCommands({ service, replace? })`: opt-in model routing, sandbox attachments and streamed text/binary output. Includes injected-transport OpenAI and ElevenLabs reference providers. [Configuration and provider contract](src/commands/llm/README.md). |
|
|
@@ -639,6 +641,11 @@ one execution. `stdin` accepts a string, `Uint8Array`, or async byte source;
|
|
|
639
641
|
`stdout`/`stderr` accept byte sinks. Results still buffer output when sinks are
|
|
640
642
|
provided. Pass an `AbortSignal` as `signal` to cancel. [Option types](src/shell/types.ts).
|
|
641
643
|
|
|
644
|
+
`RANDOM` produces values from 0 through 32767 and accepts a seed for repeatable
|
|
645
|
+
sequences. `SECONDS` tracks elapsed whole seconds and accepts a new starting
|
|
646
|
+
value. Assignments through arithmetic, `read`, and `printf -v` retain these
|
|
647
|
+
behaviors; unsetting either variable removes its special behavior.
|
|
648
|
+
|
|
642
649
|
Execution quotas are unlimited by default. Set individual `limits` to opt in;
|
|
643
650
|
supplying one does not enable other quotas. Available quotas are `maxParseUnits`,
|
|
644
651
|
`maxInputBytes`, `maxOutputBytes`, `maxCommands`, `maxFileSystemOperations`,
|
|
@@ -725,7 +732,8 @@ time/environment commands, metadata, diff/patch, LLM providers, `yes`, `less`,
|
|
|
725
732
|
`sponge`, `bc`, `htmlq`, `which`, `getopt`, `factor`, and `tsort`
|
|
726
733
|
have unlimited resource budgets by default. Set individual family limits to opt
|
|
727
734
|
in; setting one limit leaves the others unlimited. Explicit `Infinity` also
|
|
728
|
-
disables a limit.
|
|
735
|
+
disables a limit. Standard and agent command factories accept `maxRecursiveDirectoryDepth`
|
|
736
|
+
for recursive filesystem traversal; it defaults to unlimited. Shell helpers expose `maxCdWork`, `maxCdProbes`,
|
|
729
737
|
`maxCdPathBytes`, `maxCdPathComponents`, `maxDirectoryStackEntries`,
|
|
730
738
|
`maxDirectoryStackBytes`, `maxDirectoryDiagnosticBytes`, `maxDirectoryStackOutputBytes`, `maxSyntaxDepth`, `maxAdmittedHandles`, `maxDescriptorOperations`, `maxDescriptorReadBytes`, `maxGlobstarStates`, `maxGlobstarDepth` and
|
|
731
739
|
`maxGlobstarEntries`. Env split limits are supplied through
|
|
@@ -737,7 +745,10 @@ navigation, and code execution deadlines are disabled by default; configure
|
|
|
737
745
|
`limits.actionTimeoutMs`, `limits.codeExecutionTimeoutMs`, or session timeouts
|
|
738
746
|
to bound them. `Infinity` disables host deadlines and maps to the native
|
|
739
747
|
Playwright timeout value `0`. `xargs -s Infinity` and `--max-chars=Infinity` explicitly remove
|
|
740
|
-
the command-size quota.
|
|
748
|
+
the command-size quota. Without `-n`, argument count does not split `xargs` batches;
|
|
749
|
+
command-size and explicit line limits still apply. `-I` followed by `-n 1` preserves
|
|
750
|
+
replacement mode; `-L` and other `-n` values select the last requested batching mode.
|
|
751
|
+
Stream chunk sizes and polling intervals control execution
|
|
741
752
|
independently of these quotas. `diff -u /dev/null FILE` and its reverse produce
|
|
742
753
|
creation/deletion patches; top-level readable character and FIFO inputs are
|
|
743
754
|
read to EOF. Regular files retain identity-checked reads.
|
|
@@ -803,7 +814,7 @@ and credential protections remain in effect.
|
|
|
803
814
|
background jobs/job control, `exec`, process substitution,
|
|
804
815
|
associative arrays, or C-style `for ((…))` loops. `shopt` supports `dotglob`,
|
|
805
816
|
`globstar`, `nullglob`, `nocaseglob`, and `nocasematch`, plus `-o` for supported
|
|
806
|
-
`set` options. `extglob`
|
|
817
|
+
`set` options. `shopt -s extglob` enables extended patterns, including parameter trimming.
|
|
807
818
|
- Utilities implement subsets of their native counterparts' flags and behavior.
|
|
808
819
|
There is no `git`, `npm`, `npx`, or fallback to installed host programs.
|
|
809
820
|
The opt-in `node` command is not a general Node.js runtime.
|
|
@@ -47901,6 +47901,7 @@ function formatExtractedPageText(page, options = {}) {
|
|
|
47901
47901
|
if (Math.abs(dy) > 4) return dy;
|
|
47902
47902
|
return a.bbox[0] - b.bbox[0];
|
|
47903
47903
|
});
|
|
47904
|
+
const leftMargin = allLines.reduce((left, line) => Math.min(left, line.bbox[0]), Infinity);
|
|
47904
47905
|
const rows = [];
|
|
47905
47906
|
for (const l of allLines) {
|
|
47906
47907
|
const lastRow = rows[rows.length - 1];
|
|
@@ -47914,17 +47915,17 @@ function formatExtractedPageText(page, options = {}) {
|
|
|
47914
47915
|
row.sort((a, b) => a.bbox[0] - b.bbox[0]);
|
|
47915
47916
|
const pitch = options.fixedPitch !== void 0 && options.fixedPitch > 0 ? options.fixedPitch : 6;
|
|
47916
47917
|
let lineStr = "";
|
|
47917
|
-
let curX =
|
|
47918
|
+
let curX = leftMargin;
|
|
47918
47919
|
if (options.fixedPitch !== void 0 && options.fixedPitch > 0) {
|
|
47919
47920
|
const words = row.flatMap((seg) => seg.words).sort((a, b) => a.bbox[0] - b.bbox[0]);
|
|
47920
47921
|
for (const w of words) {
|
|
47921
|
-
const spaces = Math.max(
|
|
47922
|
+
const spaces = Math.max(lineStr.length > 0 ? 1 : 0, Math.round((w.bbox[0] - curX) / pitch));
|
|
47922
47923
|
lineStr += " ".repeat(Math.min(spaces, 80)) + w.text;
|
|
47923
47924
|
curX = w.bbox[2];
|
|
47924
47925
|
}
|
|
47925
47926
|
} else {
|
|
47926
47927
|
for (const seg of row) {
|
|
47927
|
-
const spaces = Math.max(
|
|
47928
|
+
const spaces = Math.max(lineStr.length > 0 ? 2 : 0, Math.round((seg.bbox[0] - curX) / pitch));
|
|
47928
47929
|
lineStr += " ".repeat(Math.min(spaces, 40)) + seg.text;
|
|
47929
47930
|
curX = seg.bbox[2];
|
|
47930
47931
|
}
|
|
@@ -57693,16 +57694,31 @@ async function openFileDescriptor(path, options, capabilities, acquire) {
|
|
|
57693
57694
|
}
|
|
57694
57695
|
|
|
57695
57696
|
// ../safe-fs/dist/contracts/virtual-path.js
|
|
57696
|
-
|
|
57697
|
-
|
|
57698
|
-
|
|
57697
|
+
function pathByteLength(path) {
|
|
57698
|
+
let bytes = 0;
|
|
57699
|
+
for (const point of path) {
|
|
57700
|
+
const code = point.codePointAt(0);
|
|
57701
|
+
bytes += code <= 127 ? 1 : code <= 2047 ? 2 : code <= 65535 ? 3 : 4;
|
|
57702
|
+
}
|
|
57703
|
+
return bytes;
|
|
57704
|
+
}
|
|
57705
|
+
function validatePath(path, limits = {}) {
|
|
57706
|
+
const maxBytes = typeof limits === "number" ? Infinity : limits.maxPathBytes ?? Infinity;
|
|
57707
|
+
const maxComponents = typeof limits === "number" ? limits : limits.maxPathComponents ?? Infinity;
|
|
57708
|
+
for (const value of [maxBytes, maxComponents]) {
|
|
57709
|
+
if (value !== Infinity && (!Number.isSafeInteger(value) || value < 0)) {
|
|
57710
|
+
throw new RangeError("Path limits must be nonnegative safe integers or Infinity");
|
|
57711
|
+
}
|
|
57712
|
+
}
|
|
57699
57713
|
if (typeof path !== "string" || path.includes("\0")) {
|
|
57700
57714
|
throw new FsError("EINVAL", { syscall: "resolve", message: "paths must be strings without NUL bytes" });
|
|
57701
57715
|
}
|
|
57702
|
-
if (path
|
|
57716
|
+
if (maxBytes !== Infinity && pathByteLength(path) > maxBytes) {
|
|
57703
57717
|
throw new FsError("ENAMETOOLONG", { syscall: "resolve", path });
|
|
57704
57718
|
}
|
|
57705
|
-
|
|
57719
|
+
if (maxComponents === Infinity)
|
|
57720
|
+
return;
|
|
57721
|
+
const limit = maxComponents;
|
|
57706
57722
|
let components2 = 0;
|
|
57707
57723
|
let inComponent = false;
|
|
57708
57724
|
for (let i = 0; i < path.length; i++) {
|
|
@@ -58351,11 +58367,14 @@ function components(path, signal) {
|
|
|
58351
58367
|
}
|
|
58352
58368
|
return result;
|
|
58353
58369
|
}
|
|
58354
|
-
function resolveMissingTarget(root, path, signal) {
|
|
58370
|
+
function resolveMissingTarget(root, path, signal, limits = {}) {
|
|
58371
|
+
validatePath(path, limits);
|
|
58355
58372
|
const fail3 = (code, failedPath = path) => {
|
|
58356
58373
|
throw new FsError(code, { syscall: "realpath", path: failedPath });
|
|
58357
58374
|
};
|
|
58358
58375
|
const origin = components(path, signal);
|
|
58376
|
+
let remainingBytes = (limits.maxPathBytes ?? Infinity) - pathByteLength(path);
|
|
58377
|
+
let remainingComponents = (limits.maxPathComponents ?? Infinity) - origin.length;
|
|
58359
58378
|
const initial = { node: root, name: "" };
|
|
58360
58379
|
let position = initial;
|
|
58361
58380
|
let links = 0;
|
|
@@ -58408,7 +58427,10 @@ function resolveMissingTarget(root, path, signal) {
|
|
|
58408
58427
|
if (node.type === "symlink") {
|
|
58409
58428
|
if (++links > 40)
|
|
58410
58429
|
return fail3("ELOOP");
|
|
58430
|
+
validatePath(node.target, { maxPathBytes: remainingBytes, maxPathComponents: remainingComponents });
|
|
58411
58431
|
const names2 = components(node.target, signal);
|
|
58432
|
+
remainingBytes -= pathByteLength(node.target);
|
|
58433
|
+
remainingComponents -= names2.length;
|
|
58412
58434
|
if (node.target.endsWith("/"))
|
|
58413
58435
|
names2.push({ name: ".", start: node.target.length });
|
|
58414
58436
|
if (node.target.startsWith("/"))
|
|
@@ -58612,26 +58634,22 @@ function readConfigRecord(value, label, keys) {
|
|
|
58612
58634
|
|
|
58613
58635
|
// ../safe-fs/dist/fs/memory/limits.js
|
|
58614
58636
|
var defaultMemoryFileSystemLimits = Object.freeze({
|
|
58637
|
+
maxPathBytes: Infinity,
|
|
58638
|
+
maxPathComponents: Infinity,
|
|
58615
58639
|
maxFileBytes: Infinity,
|
|
58616
58640
|
maxRetainedBytes: Infinity,
|
|
58617
58641
|
maxMetadataUnits: Infinity
|
|
58618
58642
|
});
|
|
58619
58643
|
function normalizeMemoryFileSystemLimits(options) {
|
|
58620
|
-
const keys = ["maxFileBytes", "maxRetainedBytes", "maxMetadataUnits"];
|
|
58644
|
+
const keys = ["maxPathBytes", "maxPathComponents", "maxFileBytes", "maxRetainedBytes", "maxMetadataUnits"];
|
|
58621
58645
|
const record2 = readConfigRecord(options, "memory option", [...keys, "maxBytes"]);
|
|
58622
58646
|
const limits = { ...defaultMemoryFileSystemLimits };
|
|
58623
|
-
|
|
58624
|
-
if (typeof record2.maxBytes !== "number" || !Number.isSafeInteger(record2.maxBytes) || record2.maxBytes < 0) {
|
|
58625
|
-
throw new RangeError("maxBytes must be a nonnegative safe integer");
|
|
58626
|
-
}
|
|
58627
|
-
limits.maxBytes = record2.maxBytes;
|
|
58628
|
-
}
|
|
58629
|
-
for (const key of keys) {
|
|
58630
|
-
if (!Object.hasOwn(record2, key))
|
|
58631
|
-
continue;
|
|
58647
|
+
for (const key of [...keys, "maxBytes"]) {
|
|
58632
58648
|
const value = record2[key];
|
|
58649
|
+
if (value === void 0 || value === Infinity)
|
|
58650
|
+
continue;
|
|
58633
58651
|
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < (key === "maxMetadataUnits" ? 1 : 0)) {
|
|
58634
|
-
throw new RangeError(`${key} must be a ${key === "maxMetadataUnits" ? "positive" : "nonnegative"} safe integer`);
|
|
58652
|
+
throw new RangeError(`${key} must be a ${key === "maxMetadataUnits" ? "positive" : "nonnegative"} safe integer or Infinity`);
|
|
58635
58653
|
}
|
|
58636
58654
|
limits[key] = value;
|
|
58637
58655
|
}
|
|
@@ -58680,12 +58698,10 @@ var DUMMY_POOL_FILE_NODE = new MemoryFileNode(0, 0, null, 0, DUMMY_POOL_ALLOCATI
|
|
|
58680
58698
|
DUMMY_POOL_FILE_NODE.atimeMs = DUMMY_POOL_FILE_NODE.mtimeMs = DUMMY_POOL_FILE_NODE.ctimeMs = DUMMY_POOL_FILE_NODE.birthtimeMs = 17e11;
|
|
58681
58699
|
var defaultDateNow = Date.now;
|
|
58682
58700
|
var fastWriteCachedNow = Date.now();
|
|
58683
|
-
var lastFastMapMiss = {
|
|
58684
|
-
map: void 0,
|
|
58685
|
-
key: "",
|
|
58686
|
-
slot: -1
|
|
58687
|
-
};
|
|
58688
58701
|
var FastDirectoryEntriesMap = class {
|
|
58702
|
+
// Keep speculative slots local so a failed write cannot pin a tenant globally.
|
|
58703
|
+
_missKey = "";
|
|
58704
|
+
_missSlot = -1;
|
|
58689
58705
|
_table = new Int16Array(128).fill(-1);
|
|
58690
58706
|
_mask = 127;
|
|
58691
58707
|
_keys = new Array(64).fill("");
|
|
@@ -58722,9 +58738,8 @@ var FastDirectoryEntriesMap = class {
|
|
|
58722
58738
|
getForWriteWithHash(k, h) {
|
|
58723
58739
|
let slot = h & this._mask;
|
|
58724
58740
|
if (this.size === 0) {
|
|
58725
|
-
|
|
58726
|
-
|
|
58727
|
-
lastFastMapMiss.slot = slot;
|
|
58741
|
+
this._missKey = k;
|
|
58742
|
+
this._missSlot = slot;
|
|
58728
58743
|
return void 0;
|
|
58729
58744
|
}
|
|
58730
58745
|
const mask = this._mask;
|
|
@@ -58734,9 +58749,8 @@ var FastDirectoryEntriesMap = class {
|
|
|
58734
58749
|
while (true) {
|
|
58735
58750
|
const idx = table[slot];
|
|
58736
58751
|
if (idx === -1) {
|
|
58737
|
-
|
|
58738
|
-
|
|
58739
|
-
lastFastMapMiss.slot = firstDeleted !== -1 ? firstDeleted : slot;
|
|
58752
|
+
this._missKey = k;
|
|
58753
|
+
this._missSlot = firstDeleted !== -1 ? firstDeleted : slot;
|
|
58740
58754
|
return void 0;
|
|
58741
58755
|
}
|
|
58742
58756
|
if (idx === -2) {
|
|
@@ -58785,6 +58799,7 @@ var FastDirectoryEntriesMap = class {
|
|
|
58785
58799
|
return this.get(k) !== void 0;
|
|
58786
58800
|
}
|
|
58787
58801
|
_rebuild(newCap) {
|
|
58802
|
+
this._missKey = "";
|
|
58788
58803
|
const newTableLen = newCap * 2;
|
|
58789
58804
|
const newMask = newTableLen - 1;
|
|
58790
58805
|
const newTable = newCap <= 16384 ? new Int16Array(newTableLen).fill(-1) : new Int32Array(newTableLen).fill(-1);
|
|
@@ -58824,15 +58839,16 @@ var FastDirectoryEntriesMap = class {
|
|
|
58824
58839
|
this._next = writeIdx;
|
|
58825
58840
|
}
|
|
58826
58841
|
set(k, v) {
|
|
58827
|
-
if (
|
|
58842
|
+
if (k === this._missKey && this._next < this._keys.length) {
|
|
58828
58843
|
const entryIdx = this._next++;
|
|
58829
|
-
this._table[
|
|
58844
|
+
this._table[this._missSlot] = entryIdx;
|
|
58830
58845
|
this._keys[entryIdx] = k;
|
|
58831
58846
|
this._vals[entryIdx] = v;
|
|
58832
58847
|
this.size++;
|
|
58833
|
-
|
|
58848
|
+
this._missKey = "";
|
|
58834
58849
|
return this;
|
|
58835
58850
|
}
|
|
58851
|
+
this._missKey = "";
|
|
58836
58852
|
if (this._next >= this._keys.length) {
|
|
58837
58853
|
this._rebuild(this.size * 2 <= this._keys.length ? this._keys.length : this._keys.length * 2);
|
|
58838
58854
|
}
|
|
@@ -58863,6 +58879,7 @@ var FastDirectoryEntriesMap = class {
|
|
|
58863
58879
|
}
|
|
58864
58880
|
}
|
|
58865
58881
|
delete(k) {
|
|
58882
|
+
this._missKey = "";
|
|
58866
58883
|
if (this.size === 0)
|
|
58867
58884
|
return false;
|
|
58868
58885
|
let slot = this._hash(k);
|
|
@@ -58888,6 +58905,7 @@ var FastDirectoryEntriesMap = class {
|
|
|
58888
58905
|
}
|
|
58889
58906
|
}
|
|
58890
58907
|
clear() {
|
|
58908
|
+
this._missKey = "";
|
|
58891
58909
|
if (this._next > 0) {
|
|
58892
58910
|
this._table.fill(-1);
|
|
58893
58911
|
for (let i = 0; i < this._next; i++) {
|
|
@@ -59340,7 +59358,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
59340
59358
|
const owner = ownedStores.get(this);
|
|
59341
59359
|
if (path !== "")
|
|
59342
59360
|
this.validatePath(path, "realpath");
|
|
59343
|
-
return resolveMissingTarget(owner.root, path || ".", options.signal);
|
|
59361
|
+
return resolveMissingTarget(owner.root, path || ".", options.signal, this.ledger.limits);
|
|
59344
59362
|
}
|
|
59345
59363
|
async confineExtraction(roots, options = {}) {
|
|
59346
59364
|
options.signal?.throwIfAborted();
|
|
@@ -59593,6 +59611,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
59593
59611
|
this.fail("EINVAL", syscall, path);
|
|
59594
59612
|
if (path.length === 0)
|
|
59595
59613
|
this.fail("ENOENT", syscall, path);
|
|
59614
|
+
if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
|
|
59615
|
+
validatePath(path, this.ledger.limits);
|
|
59596
59616
|
}
|
|
59597
59617
|
permission(node, mask, syscall, path) {
|
|
59598
59618
|
if ((node.mode >> 6 & mask) !== mask)
|
|
@@ -59614,6 +59634,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
59614
59634
|
node.mtimeMs = node.ctimeMs = now;
|
|
59615
59635
|
}
|
|
59616
59636
|
resolveNode(path, syscall, followFinal = true) {
|
|
59637
|
+
if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
|
|
59638
|
+
validatePath(path, this.ledger.limits);
|
|
59617
59639
|
const cache = memoryCaches.get(this.ledger);
|
|
59618
59640
|
if (this.symlinkCount === 0 && isCleanAbsolutePath(path)) {
|
|
59619
59641
|
const fastDir = cache.lastFastDirNode;
|
|
@@ -59698,7 +59720,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
59698
59720
|
start = slash + 1;
|
|
59699
59721
|
}
|
|
59700
59722
|
}
|
|
59701
|
-
let remainingPathUnits =
|
|
59723
|
+
let remainingPathUnits = this.ledger.limits.maxPathBytes - pathByteLength(path);
|
|
59702
59724
|
if (remainingPathUnits < 0)
|
|
59703
59725
|
this.fail("ENAMETOOLONG", syscall, path);
|
|
59704
59726
|
let initialComponents = 0;
|
|
@@ -59708,12 +59730,12 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
59708
59730
|
inComp = false;
|
|
59709
59731
|
else if (!inComp) {
|
|
59710
59732
|
inComp = true;
|
|
59711
|
-
if (++initialComponents >
|
|
59733
|
+
if (++initialComponents > this.ledger.limits.maxPathComponents)
|
|
59712
59734
|
this.fail("ENAMETOOLONG", syscall, path);
|
|
59713
59735
|
}
|
|
59714
59736
|
}
|
|
59715
|
-
|
|
59716
|
-
let remainingComponents =
|
|
59737
|
+
let pending = path.split("/").filter(Boolean);
|
|
59738
|
+
let remainingComponents = this.ledger.limits.maxPathComponents - pending.length;
|
|
59717
59739
|
if (path.endsWith("/"))
|
|
59718
59740
|
pending.push("");
|
|
59719
59741
|
const stack = [{ node: this.root, name: "" }];
|
|
@@ -59763,9 +59785,9 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
59763
59785
|
if (node.type === "symlink" && (options.followFinal !== false || pending.length > 0)) {
|
|
59764
59786
|
if (++links > 40)
|
|
59765
59787
|
this.fail("ELOOP", syscall, path);
|
|
59766
|
-
if (node.target
|
|
59788
|
+
if (pathByteLength(node.target) > remainingPathUnits)
|
|
59767
59789
|
this.fail("ENAMETOOLONG", syscall, path);
|
|
59768
|
-
remainingPathUnits -= node.target
|
|
59790
|
+
remainingPathUnits -= pathByteLength(node.target);
|
|
59769
59791
|
const target = node.target.split("/").filter(Boolean);
|
|
59770
59792
|
if (target.length > remainingComponents)
|
|
59771
59793
|
this.fail("ENAMETOOLONG", syscall, path);
|
|
@@ -59774,7 +59796,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
59774
59796
|
target.push("");
|
|
59775
59797
|
if (options.resizeCreate !== void 0 && target.at(-1) === "" && pending[0] === "")
|
|
59776
59798
|
target.pop();
|
|
59777
|
-
pending.
|
|
59799
|
+
pending = target.concat(pending);
|
|
59778
59800
|
if (node.target.startsWith("/"))
|
|
59779
59801
|
stack.splice(1);
|
|
59780
59802
|
continue;
|
|
@@ -59790,6 +59812,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
59790
59812
|
};
|
|
59791
59813
|
}
|
|
59792
59814
|
file(path, syscall) {
|
|
59815
|
+
if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
|
|
59816
|
+
validatePath(path, this.ledger.limits);
|
|
59793
59817
|
if (this.symlinkCount === 0 && path.charCodeAt(0) === 47 && path.length > 1 && path.indexOf("/", 1) === -1 && !path.includes("\0")) {
|
|
59794
59818
|
const name = path === _lastFileSlice1Path ? _lastFileSlice1Name : (_lastFileSlice1Path = path, _lastFileSlice1Name = path.slice(1));
|
|
59795
59819
|
if (name !== "." && name !== "..") {
|
|
@@ -60064,6 +60088,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60064
60088
|
}, syscall, path);
|
|
60065
60089
|
}
|
|
60066
60090
|
writeData(path, data, options, syscall) {
|
|
60091
|
+
if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
|
|
60092
|
+
validatePath(path, this.ledger.limits);
|
|
60067
60093
|
if (!(data instanceof Uint8Array))
|
|
60068
60094
|
throw new TypeError("Memory files require Uint8Array data");
|
|
60069
60095
|
const target = this.prepareWrite(path, options, syscall);
|
|
@@ -60180,9 +60206,11 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60180
60206
|
this.changed(node, now);
|
|
60181
60207
|
}
|
|
60182
60208
|
writeMemoryFileFast(path, data, append, mode) {
|
|
60209
|
+
if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
|
|
60210
|
+
validatePath(path, this.ledger.limits);
|
|
60183
60211
|
const cache = memoryCaches.get(this.ledger);
|
|
60184
60212
|
const syscall = append ? "appendFile" : "writeFile";
|
|
60185
|
-
if (append && path === cache.lastFastFilePath && cache.lastFastFileNode !== void 0 && cache.lastFastFileNode.nlink !== 0 && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode &
|
|
60213
|
+
if (append && path === cache.lastFastFilePath && cache.lastFastFileNode !== void 0 && cache.lastFastFileNode.nlink !== 0 && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode & 64) !== 0 && (cache.lastFastFileNode.mode & 128) !== 0) {
|
|
60186
60214
|
const current2 = cache.lastFastFileNode;
|
|
60187
60215
|
const length2 = current2.byteLength + data.byteLength;
|
|
60188
60216
|
this.admitSize(current2, length2, syscall, path);
|
|
@@ -60196,7 +60224,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60196
60224
|
let name = "";
|
|
60197
60225
|
const cachedPrefix = cache.lastFastDirPrefix;
|
|
60198
60226
|
const cachedDir = cache.lastFastDirNode;
|
|
60199
|
-
if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode &
|
|
60227
|
+
if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 64) !== 0 && cachedPrefix.length > 1 && path.startsWith(cachedPrefix) && path.indexOf("/", cachedPrefix.length) === -1) {
|
|
60200
60228
|
parent = cachedDir;
|
|
60201
60229
|
name = path.slice(cachedPrefix.length);
|
|
60202
60230
|
if (exceedsComponentByteLimit2(name))
|
|
@@ -60209,7 +60237,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60209
60237
|
name = path.slice(start);
|
|
60210
60238
|
if (exceedsComponentByteLimit2(name))
|
|
60211
60239
|
this.fail("ENAMETOOLONG", syscall, path);
|
|
60212
|
-
if (start > 1 && (parent.mode &
|
|
60240
|
+
if (start > 1 && (parent.mode & 64) !== 0) {
|
|
60213
60241
|
cache.lastFastDirPrefix = path.slice(0, start);
|
|
60214
60242
|
cache.lastFastDirNode = parent;
|
|
60215
60243
|
}
|
|
@@ -60329,6 +60357,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60329
60357
|
let ino = this.nextInode;
|
|
60330
60358
|
this.nextInode = ino + batchCount;
|
|
60331
60359
|
let nextIdx = 1;
|
|
60360
|
+
entries2._missKey = "";
|
|
60332
60361
|
entries2._next = 1 + batchCount;
|
|
60333
60362
|
entries2.size = 1 + batchCount;
|
|
60334
60363
|
const table = entries2._table;
|
|
@@ -60378,6 +60407,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60378
60407
|
}
|
|
60379
60408
|
}
|
|
60380
60409
|
writeMemoryFileInDirFast(dirPrefix, name, data, append, mode, nameHash) {
|
|
60410
|
+
if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
|
|
60411
|
+
validatePath(dirPrefix + name, this.ledger.limits);
|
|
60381
60412
|
const cache = this._cache;
|
|
60382
60413
|
if (!append && dirPrefix === cache.lastFastDirPrefix && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode & 192) === 192 && name.length <= 85 && this.ledger.hasInfiniteRetained && this.ledger.hasInfiniteFileBytes && this.ledger.limits.maxBytes === void 0 && sharedFileNodePoolLen > 0) {
|
|
60383
60414
|
const parent = cache.lastFastDirNode;
|
|
@@ -60405,12 +60436,11 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60405
60436
|
node.allocation = DUMMY_POOL_ALLOCATION;
|
|
60406
60437
|
node.sourceRef = node.data.subarray(0);
|
|
60407
60438
|
const entryIdx = entries2._next++;
|
|
60408
|
-
entries2._table[
|
|
60439
|
+
entries2._table[entries2._missSlot] = entryIdx;
|
|
60409
60440
|
entries2._keys[entryIdx] = name;
|
|
60410
60441
|
entries2._vals[entryIdx] = node;
|
|
60411
60442
|
entries2.size++;
|
|
60412
|
-
|
|
60413
|
-
lastFastMapMiss.key = "";
|
|
60443
|
+
entries2._missKey = "";
|
|
60414
60444
|
this.ledger.reserve(name.length * 2, 2, "writeFile", name);
|
|
60415
60445
|
this.totalBytes += length;
|
|
60416
60446
|
this.mutationTick = this.mutationTick + 1 | 0;
|
|
@@ -60424,7 +60454,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60424
60454
|
}
|
|
60425
60455
|
const syscall = append ? "appendFile" : "writeFile";
|
|
60426
60456
|
try {
|
|
60427
|
-
if (append && dirPrefix === cache.lastFastDirPrefix && name === cache.lastFastFileName && cache.lastFastFileNode !== void 0 && cache.lastFastFileNode.nlink !== 0 && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode &
|
|
60457
|
+
if (append && dirPrefix === cache.lastFastDirPrefix && name === cache.lastFastFileName && cache.lastFastFileNode !== void 0 && cache.lastFastFileNode.nlink !== 0 && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode & 64) !== 0 && (cache.lastFastFileNode.mode & 128) !== 0) {
|
|
60428
60458
|
const current2 = cache.lastFastFileNode;
|
|
60429
60459
|
const length2 = current2.byteLength + data.byteLength;
|
|
60430
60460
|
this.admitSize(current2, length2, syscall, name);
|
|
@@ -60435,7 +60465,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60435
60465
|
}
|
|
60436
60466
|
let parent = this.root;
|
|
60437
60467
|
const cachedDir = cache.lastFastDirNode;
|
|
60438
|
-
if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode &
|
|
60468
|
+
if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 64) !== 0 && dirPrefix === cache.lastFastDirPrefix) {
|
|
60439
60469
|
parent = cachedDir;
|
|
60440
60470
|
if (exceedsComponentByteLimit2(name))
|
|
60441
60471
|
this.fail("ENAMETOOLONG", syscall, name);
|
|
@@ -60460,7 +60490,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60460
60490
|
this.permission(parent, 1, syscall, name);
|
|
60461
60491
|
if (exceedsComponentByteLimit2(name))
|
|
60462
60492
|
this.fail("ENAMETOOLONG", syscall, name);
|
|
60463
|
-
if (dirPrefix.length > 1 && (parent.mode &
|
|
60493
|
+
if (dirPrefix.length > 1 && (parent.mode & 64) !== 0) {
|
|
60464
60494
|
cache.lastFastDirPrefix = dirPrefix;
|
|
60465
60495
|
cache.lastFastDirNode = parent;
|
|
60466
60496
|
}
|
|
@@ -60536,11 +60566,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
60536
60566
|
cache.lastFastFilePath = "";
|
|
60537
60567
|
cache.lastFastFileName = name;
|
|
60538
60568
|
cache.lastFastFileNode = node;
|
|
60539
|
-
lastFastMapMiss.map = void 0;
|
|
60540
|
-
lastFastMapMiss.key = "";
|
|
60541
60569
|
} catch (error) {
|
|
60542
|
-
lastFastMapMiss.map = void 0;
|
|
60543
|
-
lastFastMapMiss.key = "";
|
|
60544
60570
|
this.ledger.release(nameBytes, 2);
|
|
60545
60571
|
throw error;
|
|
60546
60572
|
}
|
|
@@ -62534,27 +62560,42 @@ function* parseXmlSteps(input, limits = {}) {
|
|
|
62534
62560
|
throw new XmlLimitError("maxContentNodes", "XML content node limit exceeded");
|
|
62535
62561
|
};
|
|
62536
62562
|
let pendingWork = 0;
|
|
62537
|
-
const skipWhitespace = ()
|
|
62563
|
+
const skipWhitespace = function* () {
|
|
62538
62564
|
const start2 = offset;
|
|
62539
62565
|
while (offset < source.length) {
|
|
62540
62566
|
const c = source.charCodeAt(offset);
|
|
62541
62567
|
if (c !== 32 && c !== 9 && c !== 10 && c !== 13)
|
|
62542
62568
|
break;
|
|
62543
62569
|
offset++;
|
|
62570
|
+
pendingWork++;
|
|
62571
|
+
if (pendingWork >= 512) {
|
|
62572
|
+
yield 512;
|
|
62573
|
+
pendingWork -= 512;
|
|
62574
|
+
}
|
|
62544
62575
|
}
|
|
62545
62576
|
return offset - start2;
|
|
62546
62577
|
};
|
|
62547
|
-
const scanName = ()
|
|
62578
|
+
const scanName = function* () {
|
|
62548
62579
|
const start2 = offset;
|
|
62549
62580
|
while (offset < source.length) {
|
|
62550
62581
|
const c = source.charCodeAt(offset);
|
|
62551
62582
|
if (c === 32 || c === 9 || c === 13 || c === 10 || c === 47 || c === 61 || c === 62 || c === 63)
|
|
62552
62583
|
break;
|
|
62553
62584
|
offset++;
|
|
62585
|
+
pendingWork++;
|
|
62586
|
+
if (pendingWork >= 512) {
|
|
62587
|
+
yield 512;
|
|
62588
|
+
pendingWork -= 512;
|
|
62589
|
+
}
|
|
62554
62590
|
}
|
|
62555
62591
|
const name = source.slice(start2, offset);
|
|
62592
|
+
pendingWork += offset - start2;
|
|
62593
|
+
while (pendingWork >= 512) {
|
|
62594
|
+
yield 512;
|
|
62595
|
+
pendingWork -= 512;
|
|
62596
|
+
}
|
|
62556
62597
|
const [prefix, localName] = qualifiedNameSync(name, qualifiedNames);
|
|
62557
|
-
return [name, prefix, localName
|
|
62598
|
+
return [name, prefix, localName];
|
|
62558
62599
|
};
|
|
62559
62600
|
while (offset < source.length) {
|
|
62560
62601
|
pendingWork += 1;
|
|
@@ -62591,11 +62632,15 @@ function* parseXmlSteps(input, limits = {}) {
|
|
|
62591
62632
|
}
|
|
62592
62633
|
} else {
|
|
62593
62634
|
for (let index = 0; index < resolved.length; index++) {
|
|
62635
|
+
pendingWork++;
|
|
62636
|
+
if (pendingWork >= 512) {
|
|
62637
|
+
yield 512;
|
|
62638
|
+
pendingWork -= 512;
|
|
62639
|
+
}
|
|
62594
62640
|
const c = resolved.charCodeAt(index);
|
|
62595
62641
|
if (c !== 32 && c !== 9 && c !== 13 && c !== 10)
|
|
62596
62642
|
invalid("text outside the root");
|
|
62597
62643
|
}
|
|
62598
|
-
pendingWork += resolved.length;
|
|
62599
62644
|
while (pendingWork >= 512) {
|
|
62600
62645
|
yield 512;
|
|
62601
62646
|
pendingWork -= 512;
|
|
@@ -62637,8 +62682,7 @@ function* parseXmlSteps(input, limits = {}) {
|
|
|
62637
62682
|
} else if (source.startsWith("<?", offset)) {
|
|
62638
62683
|
const start2 = offset;
|
|
62639
62684
|
offset += 2;
|
|
62640
|
-
const [target
|
|
62641
|
-
pendingWork += wName;
|
|
62685
|
+
const [target] = yield* scanName();
|
|
62642
62686
|
while (pendingWork >= 512) {
|
|
62643
62687
|
yield 512;
|
|
62644
62688
|
pendingWork -= 512;
|
|
@@ -62677,8 +62721,8 @@ function* parseXmlSteps(input, limits = {}) {
|
|
|
62677
62721
|
invalid("DTD and entity declarations are forbidden");
|
|
62678
62722
|
} else if (source.charCodeAt(offset + 1) === 47) {
|
|
62679
62723
|
offset += 2;
|
|
62680
|
-
const [name
|
|
62681
|
-
|
|
62724
|
+
const [name] = yield* scanName();
|
|
62725
|
+
yield* skipWhitespace();
|
|
62682
62726
|
while (pendingWork >= 512) {
|
|
62683
62727
|
yield 512;
|
|
62684
62728
|
pendingWork -= 512;
|
|
@@ -62691,10 +62735,11 @@ function* parseXmlSteps(input, limits = {}) {
|
|
|
62691
62735
|
} else {
|
|
62692
62736
|
offset++;
|
|
62693
62737
|
const repeated = previousEmpty && source.startsWith(previousEmpty.suffix, offset) ? previousEmpty : void 0;
|
|
62694
|
-
const [name, prefix, localName
|
|
62738
|
+
const [name, prefix, localName] = repeated ? [repeated.name, repeated.prefix, repeated.localName] : yield* scanName();
|
|
62695
62739
|
if (repeated)
|
|
62696
62740
|
offset += name.length;
|
|
62697
|
-
|
|
62741
|
+
if (repeated)
|
|
62742
|
+
pendingWork += name.length * 2;
|
|
62698
62743
|
while (pendingWork >= 512) {
|
|
62699
62744
|
yield 512;
|
|
62700
62745
|
pendingWork -= 512;
|
|
@@ -62704,8 +62749,7 @@ function* parseXmlSteps(input, limits = {}) {
|
|
|
62704
62749
|
let namespaces = stack.at(-1)?.namespaces ?? /* @__PURE__ */ new Map([["xml", xmlNamespace]]);
|
|
62705
62750
|
let ownsNamespaces = stack.length === 0;
|
|
62706
62751
|
while (!repeated) {
|
|
62707
|
-
const ws = skipWhitespace();
|
|
62708
|
-
pendingWork += ws;
|
|
62752
|
+
const ws = yield* skipWhitespace();
|
|
62709
62753
|
while (pendingWork >= 512) {
|
|
62710
62754
|
yield 512;
|
|
62711
62755
|
pendingWork -= 512;
|
|
@@ -62715,8 +62759,7 @@ function* parseXmlSteps(input, limits = {}) {
|
|
|
62715
62759
|
break;
|
|
62716
62760
|
if (ws === 0)
|
|
62717
62761
|
invalid("attributes require whitespace");
|
|
62718
|
-
const [attribute, attrPrefix, attrLocal
|
|
62719
|
-
pendingWork += wAttr;
|
|
62762
|
+
const [attribute, attrPrefix, attrLocal] = yield* scanName();
|
|
62720
62763
|
while (pendingWork >= 512) {
|
|
62721
62764
|
yield 512;
|
|
62722
62765
|
pendingWork -= 512;
|
|
@@ -62727,10 +62770,10 @@ function* parseXmlSteps(input, limits = {}) {
|
|
|
62727
62770
|
throw new XmlLimitError("maxAttributes", "XML attribute limit exceeded");
|
|
62728
62771
|
if ((attributes?.size ?? 0) >= maxAttributesPerElement)
|
|
62729
62772
|
throw new XmlLimitError("maxAttributesPerElement", "XML attribute limit exceeded");
|
|
62730
|
-
|
|
62773
|
+
yield* skipWhitespace();
|
|
62731
62774
|
if (source[offset++] !== "=")
|
|
62732
62775
|
invalid("missing attribute equals");
|
|
62733
|
-
|
|
62776
|
+
yield* skipWhitespace();
|
|
62734
62777
|
const quote = source[offset++];
|
|
62735
62778
|
if (quote !== '"' && quote !== "'")
|
|
62736
62779
|
invalid("unquoted attribute");
|
|
@@ -62917,14 +62960,13 @@ function scalar(element) {
|
|
|
62917
62960
|
|
|
62918
62961
|
// ../safe-fs/dist/fs/webdav/webdav.js
|
|
62919
62962
|
var timestampNamespace = "urn:virtual-bash:metadata";
|
|
62920
|
-
|
|
62921
|
-
function preflightTimestamps(property) {
|
|
62963
|
+
function preflightTimestamps(property, maxTimestampPropertyBytes) {
|
|
62922
62964
|
let bytes = 0;
|
|
62923
62965
|
for (const point of property.text) {
|
|
62924
62966
|
const code = point.codePointAt(0);
|
|
62925
62967
|
bytes += code <= 127 ? 1 : code <= 2047 ? 2 : code <= 65535 ? 3 : 4;
|
|
62926
62968
|
if (bytes > maxTimestampPropertyBytes)
|
|
62927
|
-
throw new Error("timestamp property exceeds
|
|
62969
|
+
throw new Error("timestamp property exceeds byte limit");
|
|
62928
62970
|
}
|
|
62929
62971
|
const text = scalar(property);
|
|
62930
62972
|
let offset = 0;
|
|
@@ -63165,6 +63207,7 @@ var WebDavFileSystem = class {
|
|
|
63165
63207
|
headers;
|
|
63166
63208
|
maxResponseBytes;
|
|
63167
63209
|
maxXmlBytes;
|
|
63210
|
+
maxTimestampPropertyBytes;
|
|
63168
63211
|
maxEntries;
|
|
63169
63212
|
xmlLimits;
|
|
63170
63213
|
timeoutMs;
|
|
@@ -63234,6 +63277,7 @@ var WebDavFileSystem = class {
|
|
|
63234
63277
|
streamingAppend: this.requestStreamSupport !== false
|
|
63235
63278
|
});
|
|
63236
63279
|
this.maxResponseBytes = options.maxResponseBytes === void 0 ? Infinity : positive(options.maxResponseBytes, "maxResponseBytes", false, true);
|
|
63280
|
+
this.maxTimestampPropertyBytes = positive(options.maxTimestampPropertyBytes ?? Infinity, "maxTimestampPropertyBytes", true, true);
|
|
63237
63281
|
this.maxXmlBytes = options.maxXmlBytes === void 0 ? Infinity : positive(options.maxXmlBytes, "maxXmlBytes", false, true);
|
|
63238
63282
|
this.xmlLimits = Object.freeze({ ...options.xmlLimits });
|
|
63239
63283
|
for (const [name, value] of Object.entries(this.xmlLimits))
|
|
@@ -63669,7 +63713,7 @@ var WebDavFileSystem = class {
|
|
|
63669
63713
|
let mtimeMs = date("getlastmodified") ?? 0;
|
|
63670
63714
|
let atimeMs = 0;
|
|
63671
63715
|
if (timestampProperty) {
|
|
63672
|
-
const timestamps = JSON.parse(preflightTimestamps(timestampProperty));
|
|
63716
|
+
const timestamps = JSON.parse(preflightTimestamps(timestampProperty, this.maxTimestampPropertyBytes));
|
|
63673
63717
|
if (typeof timestamps !== "object" || timestamps === null || !("version" in timestamps) || timestamps.version !== 1 || !("etag" in timestamps) || typeof timestamps.etag !== "string" || !/^"[\x21\x23-\x7e\x80-\xff]*"$/.test(timestamps.etag) || !("type" in timestamps) || timestamps.type !== "file" && timestamps.type !== "directory" || !("atimeMs" in timestamps) || typeof timestamps.atimeMs !== "number" || !Number.isFinite(timestamps.atimeMs) || Math.abs(timestamps.atimeMs) > 864e13 || !("mtimeMs" in timestamps) || typeof timestamps.mtimeMs !== "number" || !Number.isFinite(timestamps.mtimeMs) || Math.abs(timestamps.mtimeMs) > 864e13)
|
|
63674
63718
|
throw new Error("invalid timestamp property");
|
|
63675
63719
|
if (timestamps.etag === validator && timestamps.type === (directory ? "directory" : "file")) {
|