@demicodes/just-bash 3.0.1-demi.2
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/CHANGELOG.md +53 -0
- package/LICENSE +201 -0
- package/README.md +620 -0
- package/dist/AGENTS.md +327 -0
- package/dist/Bash.d.ts +256 -0
- package/dist/ast/types.d.ts +609 -0
- package/dist/banned-patterns-test.d.ts +1 -0
- package/dist/bin/chunks/alias-YRVAW27Y.js +3 -0
- package/dist/bin/chunks/awk2-XSVZFGAA.js +3 -0
- package/dist/bin/chunks/base64-RZRLGMB3.js +3 -0
- package/dist/bin/chunks/basename-F3AQ4KAQ.js +3 -0
- package/dist/bin/chunks/bash-CLP24TE2.js +3 -0
- package/dist/bin/chunks/cat-LQH5FSAR.js +3 -0
- package/dist/bin/chunks/chmod-S564JCJW.js +3 -0
- package/dist/bin/chunks/chunk-22HCD466.js +3 -0
- package/dist/bin/chunks/chunk-2AIXTPH2.js +9 -0
- package/dist/bin/chunks/chunk-2ETT4ELS.js +4 -0
- package/dist/bin/chunks/chunk-2FCLTY3Z.js +15 -0
- package/dist/bin/chunks/chunk-2GG3NVC4.js +10 -0
- package/dist/bin/chunks/chunk-2NRAWO6E.js +7 -0
- package/dist/bin/chunks/chunk-2SVX7I5P.js +14 -0
- package/dist/bin/chunks/chunk-2TVVPMMT.js +34 -0
- package/dist/bin/chunks/chunk-3MRB66F4.js +3 -0
- package/dist/bin/chunks/chunk-3WIMLJM7.js +8 -0
- package/dist/bin/chunks/chunk-42Z7Z3TQ.js +288 -0
- package/dist/bin/chunks/chunk-4BNS566Q.js +4 -0
- package/dist/bin/chunks/chunk-52Z5MJO2.js +17 -0
- package/dist/bin/chunks/chunk-5WLKCCX7.js +6 -0
- package/dist/bin/chunks/chunk-5XSZHUEI.js +15 -0
- package/dist/bin/chunks/chunk-6FSBHK6H.js +22 -0
- package/dist/bin/chunks/chunk-6GSBC77G.js +22 -0
- package/dist/bin/chunks/chunk-6UL3WIEK.js +3 -0
- package/dist/bin/chunks/chunk-6WJQNLR2.js +7 -0
- package/dist/bin/chunks/chunk-77MLOOQS.js +11 -0
- package/dist/bin/chunks/chunk-7AYT3UKI.js +6 -0
- package/dist/bin/chunks/chunk-7GBHDJNC.js +34 -0
- package/dist/bin/chunks/chunk-7JZKVC3F.js +2 -0
- package/dist/bin/chunks/chunk-7NDRU2ZN.js +5 -0
- package/dist/bin/chunks/chunk-7UU7KPEM.js +7 -0
- package/dist/bin/chunks/chunk-7VCQWCSH.js +15 -0
- package/dist/bin/chunks/chunk-AGKL4LDL.js +4 -0
- package/dist/bin/chunks/chunk-AJF3OBTR.js +4 -0
- package/dist/bin/chunks/chunk-B2DRBHGQ.js +3 -0
- package/dist/bin/chunks/chunk-BE4PARL3.js +13 -0
- package/dist/bin/chunks/chunk-BGX3RW7H.js +10 -0
- package/dist/bin/chunks/chunk-BIJXTWZ4.js +3 -0
- package/dist/bin/chunks/chunk-BPZJYOUA.js +33 -0
- package/dist/bin/chunks/chunk-C7ISPH7Y.js +18 -0
- package/dist/bin/chunks/chunk-CAZ75E7E.js +3 -0
- package/dist/bin/chunks/chunk-DJAX3ZRG.js +8 -0
- package/dist/bin/chunks/chunk-DYIBFLS3.js +17 -0
- package/dist/bin/chunks/chunk-EDTBGO7F.js +37 -0
- package/dist/bin/chunks/chunk-F3GKANW3.js +12 -0
- package/dist/bin/chunks/chunk-F3WNDKOC.js +3 -0
- package/dist/bin/chunks/chunk-FKVQZWJQ.js +10 -0
- package/dist/bin/chunks/chunk-FX7BQD2Q.js +20 -0
- package/dist/bin/chunks/chunk-G4AUMZUY.js +4 -0
- package/dist/bin/chunks/chunk-H7JTIXAO.js +4 -0
- package/dist/bin/chunks/chunk-HADFAIPZ.js +17 -0
- package/dist/bin/chunks/chunk-HL4ZS7TX.js +6 -0
- package/dist/bin/chunks/chunk-HN2DCT7T.js +13 -0
- package/dist/bin/chunks/chunk-HSTAQAVQ.js +11 -0
- package/dist/bin/chunks/chunk-I4IRHQDW.js +3 -0
- package/dist/bin/chunks/chunk-IWXPUD2J.js +12 -0
- package/dist/bin/chunks/chunk-IZGLHVBB.js +8 -0
- package/dist/bin/chunks/chunk-J7TUF2VI.js +9 -0
- package/dist/bin/chunks/chunk-JXLDT4KX.js +4 -0
- package/dist/bin/chunks/chunk-KFMPGSUT.js +9 -0
- package/dist/bin/chunks/chunk-KI54R2QB.js +3 -0
- package/dist/bin/chunks/chunk-KRRM5UCC.js +3 -0
- package/dist/bin/chunks/chunk-KUMHQGUR.js +3 -0
- package/dist/bin/chunks/chunk-LNNWMRCB.js +3 -0
- package/dist/bin/chunks/chunk-LNVSXNT7.js +3 -0
- package/dist/bin/chunks/chunk-LZHWUYJZ.js +24 -0
- package/dist/bin/chunks/chunk-MLUOPG3W.js +3 -0
- package/dist/bin/chunks/chunk-MROECM42.js +3 -0
- package/dist/bin/chunks/chunk-MUFNRCMY.js +24 -0
- package/dist/bin/chunks/chunk-NE4R2FVV.js +5 -0
- package/dist/bin/chunks/chunk-NKAT2N47.js +7 -0
- package/dist/bin/chunks/chunk-NYIPFY36.js +3 -0
- package/dist/bin/chunks/chunk-O2BCKSMK.js +3 -0
- package/dist/bin/chunks/chunk-OLEQNRKX.js +8 -0
- package/dist/bin/chunks/chunk-OPMLWMNH.js +17 -0
- package/dist/bin/chunks/chunk-PAYQNSZN.js +18 -0
- package/dist/bin/chunks/chunk-PBOVSFTJ.js +3 -0
- package/dist/bin/chunks/chunk-PSGVOB5U.js +3 -0
- package/dist/bin/chunks/chunk-PXP4YYZA.js +13 -0
- package/dist/bin/chunks/chunk-PZQVSQX6.js +4 -0
- package/dist/bin/chunks/chunk-Q2GOPGDA.js +6 -0
- package/dist/bin/chunks/chunk-QL33F2W6.js +8 -0
- package/dist/bin/chunks/chunk-QPHXCMJV.js +80 -0
- package/dist/bin/chunks/chunk-RJUDCNEZ.js +29 -0
- package/dist/bin/chunks/chunk-RVPTAYDS.js +4 -0
- package/dist/bin/chunks/chunk-SAF4OIHD.js +20 -0
- package/dist/bin/chunks/chunk-SMLKRKMP.js +11 -0
- package/dist/bin/chunks/chunk-SMSELHIY.js +12 -0
- package/dist/bin/chunks/chunk-T74E2U4J.js +64 -0
- package/dist/bin/chunks/chunk-UO5LOD7U.js +12 -0
- package/dist/bin/chunks/chunk-UOMNSQEZ.js +10 -0
- package/dist/bin/chunks/chunk-UVKD35GR.js +9 -0
- package/dist/bin/chunks/chunk-V2RP73X4.js +15 -0
- package/dist/bin/chunks/chunk-VP3OTMHX.js +22 -0
- package/dist/bin/chunks/chunk-VZK4FHWJ.js +3 -0
- package/dist/bin/chunks/chunk-WDWNEHHE.js +9 -0
- package/dist/bin/chunks/chunk-X4MX6EHF.js +6 -0
- package/dist/bin/chunks/chunk-X5WRKSEU.js +101 -0
- package/dist/bin/chunks/chunk-XBB73LFB.js +5 -0
- package/dist/bin/chunks/chunk-XCUJL2AJ.js +141 -0
- package/dist/bin/chunks/chunk-XHCCSVP6.js +9 -0
- package/dist/bin/chunks/chunk-XJ37N3S5.js +7 -0
- package/dist/bin/chunks/chunk-XPTYN6UE.js +8 -0
- package/dist/bin/chunks/chunk-XRUDFQG5.js +7 -0
- package/dist/bin/chunks/chunk-YJ5OCPSK.js +7 -0
- package/dist/bin/chunks/chunk-YOIFOOGX.js +9 -0
- package/dist/bin/chunks/chunk-YOKQNNQO.js +6 -0
- package/dist/bin/chunks/chunk-YR32XGKD.js +3 -0
- package/dist/bin/chunks/chunk-YUZRUF5F.js +10 -0
- package/dist/bin/chunks/chunk-YY5PJR7O.js +7 -0
- package/dist/bin/chunks/chunk-ZAMAXG5K.js +85 -0
- package/dist/bin/chunks/chunk-ZFUVUYWG.js +15 -0
- package/dist/bin/chunks/clear-FGNEKYDU.js +3 -0
- package/dist/bin/chunks/column-AQB3A3PJ.js +3 -0
- package/dist/bin/chunks/comm-Q4VDF6ZO.js +3 -0
- package/dist/bin/chunks/cp-HYXTMN3D.js +3 -0
- package/dist/bin/chunks/curl-PLHETP4J.js +27 -0
- package/dist/bin/chunks/cut-ZI2HIAW7.js +3 -0
- package/dist/bin/chunks/date-OFYBOAUE.js +3 -0
- package/dist/bin/chunks/diff-TL7IV4S2.js +3 -0
- package/dist/bin/chunks/dirname-VCINTLPD.js +3 -0
- package/dist/bin/chunks/du-4LRQIGRG.js +3 -0
- package/dist/bin/chunks/echo-KCOHTNDF.js +3 -0
- package/dist/bin/chunks/env-NY32PQJM.js +3 -0
- package/dist/bin/chunks/expand-YYSO35NS.js +3 -0
- package/dist/bin/chunks/expansion-YT6DLHRE.js +3 -0
- package/dist/bin/chunks/expr-XNBNPKSF.js +3 -0
- package/dist/bin/chunks/file-U4GYVT3G.js +3 -0
- package/dist/bin/chunks/find-CZ6UMSZX.js +3 -0
- package/dist/bin/chunks/flag-coverage-MPBSMQIN.js +3 -0
- package/dist/bin/chunks/fold-5MF7QZWQ.js +3 -0
- package/dist/bin/chunks/grep-JCHLTP7S.js +3 -0
- package/dist/bin/chunks/gzip-UGBQQKIH.js +3 -0
- package/dist/bin/chunks/head-77V5O3RE.js +3 -0
- package/dist/bin/chunks/help-CGUEOGXQ.js +3 -0
- package/dist/bin/chunks/history-AQQWW3QB.js +3 -0
- package/dist/bin/chunks/hostname-USNWOQCK.js +3 -0
- package/dist/bin/chunks/html-to-markdown-PHASM44U.js +3 -0
- package/dist/bin/chunks/join-EJ73DYTK.js +3 -0
- package/dist/bin/chunks/jq-W6KOII4Y.js +3 -0
- package/dist/bin/chunks/js-exec-BC6NI55L.js +98 -0
- package/dist/bin/chunks/js-exec-worker.js +4639 -0
- package/dist/bin/chunks/ln-LP4HMCSM.js +3 -0
- package/dist/bin/chunks/ls-YGNSAGDK.js +3 -0
- package/dist/bin/chunks/md5sum-MCVDIB35.js +3 -0
- package/dist/bin/chunks/mkdir-P4DKRCDX.js +3 -0
- package/dist/bin/chunks/mv-QQK4FQX6.js +3 -0
- package/dist/bin/chunks/nl-KUPLVCTS.js +3 -0
- package/dist/bin/chunks/od-YQ5ZUI2H.js +3 -0
- package/dist/bin/chunks/paste-A5KKPWXX.js +3 -0
- package/dist/bin/chunks/printf-XXZMDRGE.js +3 -0
- package/dist/bin/chunks/pwd-FCNDA467.js +3 -0
- package/dist/bin/chunks/python3-BQWDPUBM.js +13 -0
- package/dist/bin/chunks/readlink-25V57VOL.js +3 -0
- package/dist/bin/chunks/rev-PYHOZ4D4.js +3 -0
- package/dist/bin/chunks/rg-OHJSRKFS.js +3 -0
- package/dist/bin/chunks/rm-ECNUFR66.js +3 -0
- package/dist/bin/chunks/rmdir-DLOHIA7Q.js +3 -0
- package/dist/bin/chunks/sed-4GRUPTAO.js +3 -0
- package/dist/bin/chunks/seq-UXDJE6FB.js +3 -0
- package/dist/bin/chunks/sha1sum-4KF52U3Y.js +3 -0
- package/dist/bin/chunks/sha256sum-6YEPULPX.js +3 -0
- package/dist/bin/chunks/sleep-QHAPNY3Q.js +3 -0
- package/dist/bin/chunks/sort-4C6WOKNK.js +3 -0
- package/dist/bin/chunks/split-TV7NL7LA.js +3 -0
- package/dist/bin/chunks/sqlite3-W777NCI4.js +3 -0
- package/dist/bin/chunks/sqlite3-worker.js +1728 -0
- package/dist/bin/chunks/stat-BD6KT3BP.js +3 -0
- package/dist/bin/chunks/strings-MDD72LR6.js +3 -0
- package/dist/bin/chunks/tac-C2N4NQ6S.js +3 -0
- package/dist/bin/chunks/tail-LGNECVQA.js +3 -0
- package/dist/bin/chunks/tar-K6HVPBVB.js +3 -0
- package/dist/bin/chunks/tee-UQHPO4OW.js +3 -0
- package/dist/bin/chunks/time-ZPY52VT2.js +3 -0
- package/dist/bin/chunks/timeout-5AX3ZS3X.js +3 -0
- package/dist/bin/chunks/touch-DFGSVIX7.js +3 -0
- package/dist/bin/chunks/tr-G7K6M6HP.js +3 -0
- package/dist/bin/chunks/tree-6D7SMPUR.js +3 -0
- package/dist/bin/chunks/true-SKL4L7JP.js +3 -0
- package/dist/bin/chunks/unexpand-QIR4EDPG.js +3 -0
- package/dist/bin/chunks/uniq-I7PVFJR4.js +3 -0
- package/dist/bin/chunks/wc-6NGWULAP.js +3 -0
- package/dist/bin/chunks/which-LCXKCLFC.js +3 -0
- package/dist/bin/chunks/whoami-TZDZDU7T.js +3 -0
- package/dist/bin/chunks/worker.js +3150 -0
- package/dist/bin/chunks/xan-LGEJUGOM.js +3 -0
- package/dist/bin/chunks/xan-view-L75WEJE2.js +3 -0
- package/dist/bin/chunks/xargs-UWHPYLY7.js +3 -0
- package/dist/bin/chunks/yq-V6YWS23E.js +3 -0
- package/dist/bin/just-bash.js +778 -0
- package/dist/bin/shell/chunks/alias-YRVAW27Y.js +3 -0
- package/dist/bin/shell/chunks/awk2-XSVZFGAA.js +3 -0
- package/dist/bin/shell/chunks/base64-RZRLGMB3.js +3 -0
- package/dist/bin/shell/chunks/basename-F3AQ4KAQ.js +3 -0
- package/dist/bin/shell/chunks/bash-CLP24TE2.js +3 -0
- package/dist/bin/shell/chunks/cat-LQH5FSAR.js +3 -0
- package/dist/bin/shell/chunks/chmod-S564JCJW.js +3 -0
- package/dist/bin/shell/chunks/chunk-22HCD466.js +3 -0
- package/dist/bin/shell/chunks/chunk-2AIXTPH2.js +9 -0
- package/dist/bin/shell/chunks/chunk-2ETT4ELS.js +4 -0
- package/dist/bin/shell/chunks/chunk-2FCLTY3Z.js +15 -0
- package/dist/bin/shell/chunks/chunk-2GG3NVC4.js +10 -0
- package/dist/bin/shell/chunks/chunk-2NRAWO6E.js +7 -0
- package/dist/bin/shell/chunks/chunk-2SVX7I5P.js +14 -0
- package/dist/bin/shell/chunks/chunk-2TVVPMMT.js +34 -0
- package/dist/bin/shell/chunks/chunk-3MRB66F4.js +3 -0
- package/dist/bin/shell/chunks/chunk-3WIMLJM7.js +8 -0
- package/dist/bin/shell/chunks/chunk-42Z7Z3TQ.js +288 -0
- package/dist/bin/shell/chunks/chunk-4BNS566Q.js +4 -0
- package/dist/bin/shell/chunks/chunk-52Z5MJO2.js +17 -0
- package/dist/bin/shell/chunks/chunk-5WLKCCX7.js +6 -0
- package/dist/bin/shell/chunks/chunk-5XSZHUEI.js +15 -0
- package/dist/bin/shell/chunks/chunk-6FSBHK6H.js +22 -0
- package/dist/bin/shell/chunks/chunk-6GSBC77G.js +22 -0
- package/dist/bin/shell/chunks/chunk-6UL3WIEK.js +3 -0
- package/dist/bin/shell/chunks/chunk-6WJQNLR2.js +7 -0
- package/dist/bin/shell/chunks/chunk-77MLOOQS.js +11 -0
- package/dist/bin/shell/chunks/chunk-7AYT3UKI.js +6 -0
- package/dist/bin/shell/chunks/chunk-7GBHDJNC.js +34 -0
- package/dist/bin/shell/chunks/chunk-7JZKVC3F.js +2 -0
- package/dist/bin/shell/chunks/chunk-7NDRU2ZN.js +5 -0
- package/dist/bin/shell/chunks/chunk-7UU7KPEM.js +7 -0
- package/dist/bin/shell/chunks/chunk-7VCQWCSH.js +15 -0
- package/dist/bin/shell/chunks/chunk-AGKL4LDL.js +4 -0
- package/dist/bin/shell/chunks/chunk-AJF3OBTR.js +4 -0
- package/dist/bin/shell/chunks/chunk-B2DRBHGQ.js +3 -0
- package/dist/bin/shell/chunks/chunk-BE4PARL3.js +13 -0
- package/dist/bin/shell/chunks/chunk-BGX3RW7H.js +10 -0
- package/dist/bin/shell/chunks/chunk-BIJXTWZ4.js +3 -0
- package/dist/bin/shell/chunks/chunk-BPZJYOUA.js +33 -0
- package/dist/bin/shell/chunks/chunk-C7ISPH7Y.js +18 -0
- package/dist/bin/shell/chunks/chunk-CAZ75E7E.js +3 -0
- package/dist/bin/shell/chunks/chunk-DJAX3ZRG.js +8 -0
- package/dist/bin/shell/chunks/chunk-DYIBFLS3.js +17 -0
- package/dist/bin/shell/chunks/chunk-EDTBGO7F.js +37 -0
- package/dist/bin/shell/chunks/chunk-F3GKANW3.js +12 -0
- package/dist/bin/shell/chunks/chunk-F3WNDKOC.js +3 -0
- package/dist/bin/shell/chunks/chunk-FKVQZWJQ.js +10 -0
- package/dist/bin/shell/chunks/chunk-FX7BQD2Q.js +20 -0
- package/dist/bin/shell/chunks/chunk-G4AUMZUY.js +4 -0
- package/dist/bin/shell/chunks/chunk-H7JTIXAO.js +4 -0
- package/dist/bin/shell/chunks/chunk-HADFAIPZ.js +17 -0
- package/dist/bin/shell/chunks/chunk-HL4ZS7TX.js +6 -0
- package/dist/bin/shell/chunks/chunk-HN2DCT7T.js +13 -0
- package/dist/bin/shell/chunks/chunk-HSTAQAVQ.js +11 -0
- package/dist/bin/shell/chunks/chunk-I4IRHQDW.js +3 -0
- package/dist/bin/shell/chunks/chunk-IWXPUD2J.js +12 -0
- package/dist/bin/shell/chunks/chunk-IZGLHVBB.js +8 -0
- package/dist/bin/shell/chunks/chunk-J7TUF2VI.js +9 -0
- package/dist/bin/shell/chunks/chunk-JXLDT4KX.js +4 -0
- package/dist/bin/shell/chunks/chunk-KFMPGSUT.js +9 -0
- package/dist/bin/shell/chunks/chunk-KI54R2QB.js +3 -0
- package/dist/bin/shell/chunks/chunk-KRRM5UCC.js +3 -0
- package/dist/bin/shell/chunks/chunk-KUMHQGUR.js +3 -0
- package/dist/bin/shell/chunks/chunk-LNNWMRCB.js +3 -0
- package/dist/bin/shell/chunks/chunk-LNVSXNT7.js +3 -0
- package/dist/bin/shell/chunks/chunk-LZHWUYJZ.js +24 -0
- package/dist/bin/shell/chunks/chunk-MLUOPG3W.js +3 -0
- package/dist/bin/shell/chunks/chunk-MROECM42.js +3 -0
- package/dist/bin/shell/chunks/chunk-MUFNRCMY.js +24 -0
- package/dist/bin/shell/chunks/chunk-NE4R2FVV.js +5 -0
- package/dist/bin/shell/chunks/chunk-NKAT2N47.js +7 -0
- package/dist/bin/shell/chunks/chunk-NYIPFY36.js +3 -0
- package/dist/bin/shell/chunks/chunk-O2BCKSMK.js +3 -0
- package/dist/bin/shell/chunks/chunk-OLEQNRKX.js +8 -0
- package/dist/bin/shell/chunks/chunk-OPMLWMNH.js +17 -0
- package/dist/bin/shell/chunks/chunk-PAYQNSZN.js +18 -0
- package/dist/bin/shell/chunks/chunk-PBOVSFTJ.js +3 -0
- package/dist/bin/shell/chunks/chunk-PSGVOB5U.js +3 -0
- package/dist/bin/shell/chunks/chunk-PXP4YYZA.js +13 -0
- package/dist/bin/shell/chunks/chunk-PZQVSQX6.js +4 -0
- package/dist/bin/shell/chunks/chunk-Q2GOPGDA.js +6 -0
- package/dist/bin/shell/chunks/chunk-QL33F2W6.js +8 -0
- package/dist/bin/shell/chunks/chunk-QPHXCMJV.js +80 -0
- package/dist/bin/shell/chunks/chunk-RJUDCNEZ.js +29 -0
- package/dist/bin/shell/chunks/chunk-RVPTAYDS.js +4 -0
- package/dist/bin/shell/chunks/chunk-SAF4OIHD.js +20 -0
- package/dist/bin/shell/chunks/chunk-SMLKRKMP.js +11 -0
- package/dist/bin/shell/chunks/chunk-SMSELHIY.js +12 -0
- package/dist/bin/shell/chunks/chunk-T74E2U4J.js +64 -0
- package/dist/bin/shell/chunks/chunk-UO5LOD7U.js +12 -0
- package/dist/bin/shell/chunks/chunk-UOMNSQEZ.js +10 -0
- package/dist/bin/shell/chunks/chunk-UVKD35GR.js +9 -0
- package/dist/bin/shell/chunks/chunk-V2RP73X4.js +15 -0
- package/dist/bin/shell/chunks/chunk-VP3OTMHX.js +22 -0
- package/dist/bin/shell/chunks/chunk-VZK4FHWJ.js +3 -0
- package/dist/bin/shell/chunks/chunk-WDWNEHHE.js +9 -0
- package/dist/bin/shell/chunks/chunk-X4MX6EHF.js +6 -0
- package/dist/bin/shell/chunks/chunk-X5WRKSEU.js +101 -0
- package/dist/bin/shell/chunks/chunk-XBB73LFB.js +5 -0
- package/dist/bin/shell/chunks/chunk-XCUJL2AJ.js +141 -0
- package/dist/bin/shell/chunks/chunk-XHCCSVP6.js +9 -0
- package/dist/bin/shell/chunks/chunk-XJ37N3S5.js +7 -0
- package/dist/bin/shell/chunks/chunk-XPTYN6UE.js +8 -0
- package/dist/bin/shell/chunks/chunk-XRUDFQG5.js +7 -0
- package/dist/bin/shell/chunks/chunk-YJ5OCPSK.js +7 -0
- package/dist/bin/shell/chunks/chunk-YOIFOOGX.js +9 -0
- package/dist/bin/shell/chunks/chunk-YOKQNNQO.js +6 -0
- package/dist/bin/shell/chunks/chunk-YR32XGKD.js +3 -0
- package/dist/bin/shell/chunks/chunk-YUZRUF5F.js +10 -0
- package/dist/bin/shell/chunks/chunk-YY5PJR7O.js +7 -0
- package/dist/bin/shell/chunks/chunk-ZAMAXG5K.js +85 -0
- package/dist/bin/shell/chunks/chunk-ZFUVUYWG.js +15 -0
- package/dist/bin/shell/chunks/clear-FGNEKYDU.js +3 -0
- package/dist/bin/shell/chunks/column-AQB3A3PJ.js +3 -0
- package/dist/bin/shell/chunks/comm-Q4VDF6ZO.js +3 -0
- package/dist/bin/shell/chunks/cp-HYXTMN3D.js +3 -0
- package/dist/bin/shell/chunks/curl-PLHETP4J.js +27 -0
- package/dist/bin/shell/chunks/cut-ZI2HIAW7.js +3 -0
- package/dist/bin/shell/chunks/date-OFYBOAUE.js +3 -0
- package/dist/bin/shell/chunks/diff-TL7IV4S2.js +3 -0
- package/dist/bin/shell/chunks/dirname-VCINTLPD.js +3 -0
- package/dist/bin/shell/chunks/du-4LRQIGRG.js +3 -0
- package/dist/bin/shell/chunks/echo-KCOHTNDF.js +3 -0
- package/dist/bin/shell/chunks/env-NY32PQJM.js +3 -0
- package/dist/bin/shell/chunks/expand-YYSO35NS.js +3 -0
- package/dist/bin/shell/chunks/expansion-YT6DLHRE.js +3 -0
- package/dist/bin/shell/chunks/expr-XNBNPKSF.js +3 -0
- package/dist/bin/shell/chunks/file-U4GYVT3G.js +3 -0
- package/dist/bin/shell/chunks/find-CZ6UMSZX.js +3 -0
- package/dist/bin/shell/chunks/flag-coverage-MPBSMQIN.js +3 -0
- package/dist/bin/shell/chunks/fold-5MF7QZWQ.js +3 -0
- package/dist/bin/shell/chunks/grep-JCHLTP7S.js +3 -0
- package/dist/bin/shell/chunks/gzip-UGBQQKIH.js +3 -0
- package/dist/bin/shell/chunks/head-77V5O3RE.js +3 -0
- package/dist/bin/shell/chunks/help-CGUEOGXQ.js +3 -0
- package/dist/bin/shell/chunks/history-AQQWW3QB.js +3 -0
- package/dist/bin/shell/chunks/hostname-USNWOQCK.js +3 -0
- package/dist/bin/shell/chunks/html-to-markdown-PHASM44U.js +3 -0
- package/dist/bin/shell/chunks/join-EJ73DYTK.js +3 -0
- package/dist/bin/shell/chunks/jq-W6KOII4Y.js +3 -0
- package/dist/bin/shell/chunks/js-exec-BC6NI55L.js +98 -0
- package/dist/bin/shell/chunks/ln-LP4HMCSM.js +3 -0
- package/dist/bin/shell/chunks/ls-YGNSAGDK.js +3 -0
- package/dist/bin/shell/chunks/md5sum-MCVDIB35.js +3 -0
- package/dist/bin/shell/chunks/mkdir-P4DKRCDX.js +3 -0
- package/dist/bin/shell/chunks/mv-QQK4FQX6.js +3 -0
- package/dist/bin/shell/chunks/nl-KUPLVCTS.js +3 -0
- package/dist/bin/shell/chunks/od-YQ5ZUI2H.js +3 -0
- package/dist/bin/shell/chunks/paste-A5KKPWXX.js +3 -0
- package/dist/bin/shell/chunks/printf-XXZMDRGE.js +3 -0
- package/dist/bin/shell/chunks/pwd-FCNDA467.js +3 -0
- package/dist/bin/shell/chunks/python3-BQWDPUBM.js +13 -0
- package/dist/bin/shell/chunks/readlink-25V57VOL.js +3 -0
- package/dist/bin/shell/chunks/rev-PYHOZ4D4.js +3 -0
- package/dist/bin/shell/chunks/rg-OHJSRKFS.js +3 -0
- package/dist/bin/shell/chunks/rm-ECNUFR66.js +3 -0
- package/dist/bin/shell/chunks/rmdir-DLOHIA7Q.js +3 -0
- package/dist/bin/shell/chunks/sed-4GRUPTAO.js +3 -0
- package/dist/bin/shell/chunks/seq-UXDJE6FB.js +3 -0
- package/dist/bin/shell/chunks/sha1sum-4KF52U3Y.js +3 -0
- package/dist/bin/shell/chunks/sha256sum-6YEPULPX.js +3 -0
- package/dist/bin/shell/chunks/sleep-QHAPNY3Q.js +3 -0
- package/dist/bin/shell/chunks/sort-4C6WOKNK.js +3 -0
- package/dist/bin/shell/chunks/split-TV7NL7LA.js +3 -0
- package/dist/bin/shell/chunks/sqlite3-W777NCI4.js +3 -0
- package/dist/bin/shell/chunks/stat-BD6KT3BP.js +3 -0
- package/dist/bin/shell/chunks/strings-MDD72LR6.js +3 -0
- package/dist/bin/shell/chunks/tac-C2N4NQ6S.js +3 -0
- package/dist/bin/shell/chunks/tail-LGNECVQA.js +3 -0
- package/dist/bin/shell/chunks/tar-K6HVPBVB.js +3 -0
- package/dist/bin/shell/chunks/tee-UQHPO4OW.js +3 -0
- package/dist/bin/shell/chunks/time-ZPY52VT2.js +3 -0
- package/dist/bin/shell/chunks/timeout-5AX3ZS3X.js +3 -0
- package/dist/bin/shell/chunks/touch-DFGSVIX7.js +3 -0
- package/dist/bin/shell/chunks/tr-G7K6M6HP.js +3 -0
- package/dist/bin/shell/chunks/tree-6D7SMPUR.js +3 -0
- package/dist/bin/shell/chunks/true-SKL4L7JP.js +3 -0
- package/dist/bin/shell/chunks/unexpand-QIR4EDPG.js +3 -0
- package/dist/bin/shell/chunks/uniq-I7PVFJR4.js +3 -0
- package/dist/bin/shell/chunks/wc-6NGWULAP.js +3 -0
- package/dist/bin/shell/chunks/which-LCXKCLFC.js +3 -0
- package/dist/bin/shell/chunks/whoami-TZDZDU7T.js +3 -0
- package/dist/bin/shell/chunks/xan-LGEJUGOM.js +3 -0
- package/dist/bin/shell/chunks/xan-view-L75WEJE2.js +3 -0
- package/dist/bin/shell/chunks/xargs-UWHPYLY7.js +3 -0
- package/dist/bin/shell/chunks/yq-V6YWS23E.js +3 -0
- package/dist/bin/shell/shell.js +757 -0
- package/dist/browser.d.ts +23 -0
- package/dist/bundle/browser.js +1546 -0
- package/dist/bundle/chunks/alias-RTYYYW3D.js +2 -0
- package/dist/bundle/chunks/awk2-GS47M5U7.js +2 -0
- package/dist/bundle/chunks/base64-C2AIWVNC.js +2 -0
- package/dist/bundle/chunks/basename-UB3CIYNI.js +2 -0
- package/dist/bundle/chunks/bash-YZ33HQZQ.js +2 -0
- package/dist/bundle/chunks/cat-TSFMZVYS.js +2 -0
- package/dist/bundle/chunks/chmod-TFEPA42X.js +2 -0
- package/dist/bundle/chunks/chunk-27JIFWUR.js +3 -0
- package/dist/bundle/chunks/chunk-2JIPICV3.js +13 -0
- package/dist/bundle/chunks/chunk-2SMD2AUA.js +3 -0
- package/dist/bundle/chunks/chunk-2VDTE5BV.js +14 -0
- package/dist/bundle/chunks/chunk-2VJJEDV2.js +8 -0
- package/dist/bundle/chunks/chunk-4JLVZKHC.js +8 -0
- package/dist/bundle/chunks/chunk-4MZPEZTU.js +3 -0
- package/dist/bundle/chunks/chunk-4N6J7B5P.js +6 -0
- package/dist/bundle/chunks/chunk-4WKZNNJK.js +2 -0
- package/dist/bundle/chunks/chunk-5A3ZCIHP.js +2 -0
- package/dist/bundle/chunks/chunk-5H5SCKJM.js +11 -0
- package/dist/bundle/chunks/chunk-5IFY2NZJ.js +19 -0
- package/dist/bundle/chunks/chunk-6LASZU3O.js +5 -0
- package/dist/bundle/chunks/chunk-6SHYIICL.js +4 -0
- package/dist/bundle/chunks/chunk-6VAT5Z2D.js +5 -0
- package/dist/bundle/chunks/chunk-7AISL3XV.js +12 -0
- package/dist/bundle/chunks/chunk-7EUWTCWK.js +2 -0
- package/dist/bundle/chunks/chunk-7F47ISLI.js +33 -0
- package/dist/bundle/chunks/chunk-7JHM3L42.js +6 -0
- package/dist/bundle/chunks/chunk-A4R2GWRF.js +9 -0
- package/dist/bundle/chunks/chunk-AA63C4TN.js +23 -0
- package/dist/bundle/chunks/chunk-ACSZB4FE.js +11 -0
- package/dist/bundle/chunks/chunk-BOZLBWPL.js +100 -0
- package/dist/bundle/chunks/chunk-BU36VZYL.js +4 -0
- package/dist/bundle/chunks/chunk-BVKWRAS6.js +12 -0
- package/dist/bundle/chunks/chunk-BXERNLCU.js +33 -0
- package/dist/bundle/chunks/chunk-BZUGFHVS.js +2 -0
- package/dist/bundle/chunks/chunk-CBJVD2XA.js +7 -0
- package/dist/bundle/chunks/chunk-CN5XGDNN.js +6 -0
- package/dist/bundle/chunks/chunk-DLL7UR66.js +2 -0
- package/dist/bundle/chunks/chunk-DVHZ434T.js +10 -0
- package/dist/bundle/chunks/chunk-EBAPSGAO.js +9 -0
- package/dist/bundle/chunks/chunk-EXLJT6MD.js +140 -0
- package/dist/bundle/chunks/chunk-FAXLQUCQ.js +10 -0
- package/dist/bundle/chunks/chunk-FE7TPM5F.js +79 -0
- package/dist/bundle/chunks/chunk-FHC24QSK.js +7 -0
- package/dist/bundle/chunks/chunk-FJK43EBQ.js +14 -0
- package/dist/bundle/chunks/chunk-FOCWZZDE.js +2 -0
- package/dist/bundle/chunks/chunk-FW54FHZR.js +2 -0
- package/dist/bundle/chunks/chunk-FX4RBUYU.js +5 -0
- package/dist/bundle/chunks/chunk-FZRQOL3C.js +7 -0
- package/dist/bundle/chunks/chunk-GGC5NEPZ.js +8 -0
- package/dist/bundle/chunks/chunk-GJC3WVOW.js +2 -0
- package/dist/bundle/chunks/chunk-GSPYNYZA.js +6 -0
- package/dist/bundle/chunks/chunk-HBVMHTO5.js +2 -0
- package/dist/bundle/chunks/chunk-HDRAUQK2.js +2 -0
- package/dist/bundle/chunks/chunk-HJBTD7PY.js +21 -0
- package/dist/bundle/chunks/chunk-ICIEVHY5.js +36 -0
- package/dist/bundle/chunks/chunk-J2XQNA2Z.js +8 -0
- package/dist/bundle/chunks/chunk-JYUAM3H7.js +16 -0
- package/dist/bundle/chunks/chunk-KD3KENL6.js +11 -0
- package/dist/bundle/chunks/chunk-KWGBQNTV.js +32 -0
- package/dist/bundle/chunks/chunk-KXUUKRXD.js +2 -0
- package/dist/bundle/chunks/chunk-L2UW7DWF.js +2 -0
- package/dist/bundle/chunks/chunk-L64BMZUV.js +2 -0
- package/dist/bundle/chunks/chunk-L66DE7G5.js +21 -0
- package/dist/bundle/chunks/chunk-LPJEKUCB.js +8 -0
- package/dist/bundle/chunks/chunk-LSLPJOYM.js +3 -0
- package/dist/bundle/chunks/chunk-LWXDWLMH.js +14 -0
- package/dist/bundle/chunks/chunk-MFDPAVC6.js +14 -0
- package/dist/bundle/chunks/chunk-MLIO3BK2.js +7 -0
- package/dist/bundle/chunks/chunk-MQKGGNPS.js +16 -0
- package/dist/bundle/chunks/chunk-NRSASXYY.js +2 -0
- package/dist/bundle/chunks/chunk-OGJ5CFPR.js +9 -0
- package/dist/bundle/chunks/chunk-OVGANXCG.js +8 -0
- package/dist/bundle/chunks/chunk-QAYAQNCG.js +23 -0
- package/dist/bundle/chunks/chunk-QIQMJJZ4.js +4 -0
- package/dist/bundle/chunks/chunk-R4IFXNY5.js +28 -0
- package/dist/bundle/chunks/chunk-R74UQCKX.js +5 -0
- package/dist/bundle/chunks/chunk-RBQG6ZUG.js +3 -0
- package/dist/bundle/chunks/chunk-S3LEJEPP.js +2 -0
- package/dist/bundle/chunks/chunk-S443BAN4.js +7 -0
- package/dist/bundle/chunks/chunk-SBBYKIYU.js +3 -0
- package/dist/bundle/chunks/chunk-SETW5JBN.js +9 -0
- package/dist/bundle/chunks/chunk-SHKOQWO4.js +3 -0
- package/dist/bundle/chunks/chunk-SJYEXC2Z.js +14 -0
- package/dist/bundle/chunks/chunk-STHBFACM.js +1 -0
- package/dist/bundle/chunks/chunk-SX2HC7SO.js +2 -0
- package/dist/bundle/chunks/chunk-T3EYGW4N.js +63 -0
- package/dist/bundle/chunks/chunk-T4TFLF3R.js +16 -0
- package/dist/bundle/chunks/chunk-TDD4NFYE.js +2 -0
- package/dist/bundle/chunks/chunk-TN7HHBQW.js +5 -0
- package/dist/bundle/chunks/chunk-U73A73IE.js +17 -0
- package/dist/bundle/chunks/chunk-UIJUTQPH.js +3 -0
- package/dist/bundle/chunks/chunk-UP6MSJGD.js +17 -0
- package/dist/bundle/chunks/chunk-UURAZSVT.js +10 -0
- package/dist/bundle/chunks/chunk-V6PSIUPR.js +11 -0
- package/dist/bundle/chunks/chunk-V77XGLKX.js +5 -0
- package/dist/bundle/chunks/chunk-VBRPS3D5.js +2 -0
- package/dist/bundle/chunks/chunk-VLCHOJWK.js +6 -0
- package/dist/bundle/chunks/chunk-W5DWRFSU.js +2 -0
- package/dist/bundle/chunks/chunk-WM5IJFMP.js +8 -0
- package/dist/bundle/chunks/chunk-WN7T6YIH.js +287 -0
- package/dist/bundle/chunks/chunk-WNH3HOQA.js +2 -0
- package/dist/bundle/chunks/chunk-WPGQVBSY.js +6 -0
- package/dist/bundle/chunks/chunk-XCQWV4AU.js +12 -0
- package/dist/bundle/chunks/chunk-XHLMAZX2.js +5 -0
- package/dist/bundle/chunks/chunk-XRFHFXFP.js +2 -0
- package/dist/bundle/chunks/chunk-Y4LIDHSD.js +7 -0
- package/dist/bundle/chunks/chunk-Y4SO5AJF.js +16 -0
- package/dist/bundle/chunks/chunk-YCLFEX4T.js +3 -0
- package/dist/bundle/chunks/chunk-YRXX457F.js +6 -0
- package/dist/bundle/chunks/chunk-YS4NUBYX.js +9 -0
- package/dist/bundle/chunks/chunk-ZDIT6ST5.js +7 -0
- package/dist/bundle/chunks/chunk-ZDPFA4L3.js +6 -0
- package/dist/bundle/chunks/chunk-ZLAEZD2P.js +21 -0
- package/dist/bundle/chunks/clear-HKGFEOF6.js +2 -0
- package/dist/bundle/chunks/column-XT6UFXNQ.js +2 -0
- package/dist/bundle/chunks/comm-VV2LDX2J.js +2 -0
- package/dist/bundle/chunks/cp-BISAAS7A.js +2 -0
- package/dist/bundle/chunks/curl-GRYA74XW.js +26 -0
- package/dist/bundle/chunks/cut-OKARJCCV.js +2 -0
- package/dist/bundle/chunks/date-XKUEQ4WF.js +2 -0
- package/dist/bundle/chunks/diff-MWJFIG7X.js +2 -0
- package/dist/bundle/chunks/dirname-MPHRFUTI.js +2 -0
- package/dist/bundle/chunks/du-572XNP42.js +2 -0
- package/dist/bundle/chunks/echo-NDWZZHPO.js +2 -0
- package/dist/bundle/chunks/env-36M5BO7M.js +2 -0
- package/dist/bundle/chunks/expand-JSPG6VOP.js +2 -0
- package/dist/bundle/chunks/expansion-2O6WLRBD.js +2 -0
- package/dist/bundle/chunks/expr-6MFJ5XZG.js +2 -0
- package/dist/bundle/chunks/file-55SY74D5.js +2 -0
- package/dist/bundle/chunks/find-BKC2BIAO.js +2 -0
- package/dist/bundle/chunks/flag-coverage-4GZNBF47.js +2 -0
- package/dist/bundle/chunks/fold-4TQNYMSW.js +2 -0
- package/dist/bundle/chunks/grep-2ILJFW6Y.js +2 -0
- package/dist/bundle/chunks/gzip-O5ASJAFY.js +2 -0
- package/dist/bundle/chunks/head-BALRBIDD.js +2 -0
- package/dist/bundle/chunks/help-HZ6M2CKN.js +2 -0
- package/dist/bundle/chunks/history-WYYKSLSZ.js +2 -0
- package/dist/bundle/chunks/hostname-C4HQXXUP.js +2 -0
- package/dist/bundle/chunks/html-to-markdown-JW4MSQZO.js +2 -0
- package/dist/bundle/chunks/join-TBRGI3LQ.js +2 -0
- package/dist/bundle/chunks/jq-QLLVLUWT.js +2 -0
- package/dist/bundle/chunks/js-exec-N5KEZBH7.js +97 -0
- package/dist/bundle/chunks/js-exec-worker.js +4639 -0
- package/dist/bundle/chunks/ln-4LGSXXGD.js +2 -0
- package/dist/bundle/chunks/ls-ZJGQER7M.js +2 -0
- package/dist/bundle/chunks/md5sum-SPU24VSG.js +2 -0
- package/dist/bundle/chunks/mkdir-MEPGZOB6.js +2 -0
- package/dist/bundle/chunks/mv-W5BIQ646.js +2 -0
- package/dist/bundle/chunks/nl-WSDW7I4O.js +2 -0
- package/dist/bundle/chunks/od-WOKFDJTP.js +2 -0
- package/dist/bundle/chunks/paste-7JC6S4DX.js +2 -0
- package/dist/bundle/chunks/printf-I2B4W2XW.js +2 -0
- package/dist/bundle/chunks/pwd-WE6EN5AV.js +2 -0
- package/dist/bundle/chunks/python3-POMOR4OA.js +12 -0
- package/dist/bundle/chunks/readlink-OPJF4DL5.js +2 -0
- package/dist/bundle/chunks/rev-5EHFX4EJ.js +2 -0
- package/dist/bundle/chunks/rg-X6MJUOKW.js +2 -0
- package/dist/bundle/chunks/rm-SSGETQVQ.js +2 -0
- package/dist/bundle/chunks/rmdir-OC4ZLPYA.js +2 -0
- package/dist/bundle/chunks/sed-JWIN756M.js +2 -0
- package/dist/bundle/chunks/seq-M5EC7Q57.js +2 -0
- package/dist/bundle/chunks/sha1sum-2PTOAFR6.js +2 -0
- package/dist/bundle/chunks/sha256sum-NS7D3IXX.js +2 -0
- package/dist/bundle/chunks/sleep-X22JJINO.js +2 -0
- package/dist/bundle/chunks/sort-SW2YEO5B.js +2 -0
- package/dist/bundle/chunks/split-4KKZZXXE.js +2 -0
- package/dist/bundle/chunks/sqlite3-CGOEFJAO.js +2 -0
- package/dist/bundle/chunks/sqlite3-worker.js +1728 -0
- package/dist/bundle/chunks/stat-CD34IZ4P.js +2 -0
- package/dist/bundle/chunks/strings-6WDHLGMX.js +2 -0
- package/dist/bundle/chunks/tac-2STMMJYW.js +2 -0
- package/dist/bundle/chunks/tail-3JSKDTET.js +2 -0
- package/dist/bundle/chunks/tar-WT6S4IJX.js +2 -0
- package/dist/bundle/chunks/tee-YUZ2FKCJ.js +2 -0
- package/dist/bundle/chunks/time-D4LNBSWX.js +2 -0
- package/dist/bundle/chunks/timeout-YDCRSLPQ.js +2 -0
- package/dist/bundle/chunks/touch-UA33VN3N.js +2 -0
- package/dist/bundle/chunks/tr-36LHWFRQ.js +2 -0
- package/dist/bundle/chunks/tree-YLD52CNT.js +2 -0
- package/dist/bundle/chunks/true-FHQXJXBE.js +2 -0
- package/dist/bundle/chunks/unexpand-CADSA4VO.js +2 -0
- package/dist/bundle/chunks/uniq-XSIZR6PB.js +2 -0
- package/dist/bundle/chunks/wc-LF7NU4LA.js +2 -0
- package/dist/bundle/chunks/which-XEM24D5D.js +2 -0
- package/dist/bundle/chunks/whoami-XMTX52VE.js +2 -0
- package/dist/bundle/chunks/worker.js +3150 -0
- package/dist/bundle/chunks/xan-5D7XBVRF.js +2 -0
- package/dist/bundle/chunks/xan-view-P7JTBY6N.js +2 -0
- package/dist/bundle/chunks/xargs-MGZPH7AX.js +2 -0
- package/dist/bundle/chunks/yq-6N2YNRZS.js +2 -0
- package/dist/bundle/index.cjs +2209 -0
- package/dist/bundle/index.js +733 -0
- package/dist/commands/alias/alias.d.ts +6 -0
- package/dist/commands/awk/ast.d.ts +202 -0
- package/dist/commands/awk/awk2.d.ts +9 -0
- package/dist/commands/awk/builtins.d.ts +17 -0
- package/dist/commands/awk/interpreter/context.d.ts +75 -0
- package/dist/commands/awk/interpreter/expressions.d.ts +17 -0
- package/dist/commands/awk/interpreter/fields.d.ts +25 -0
- package/dist/commands/awk/interpreter/index.d.ts +8 -0
- package/dist/commands/awk/interpreter/interpreter.d.ts +54 -0
- package/dist/commands/awk/interpreter/statements.d.ts +11 -0
- package/dist/commands/awk/interpreter/type-coercion.d.ts +32 -0
- package/dist/commands/awk/interpreter/types.d.ts +13 -0
- package/dist/commands/awk/interpreter/variables.d.ts +35 -0
- package/dist/commands/awk/lexer.d.ts +100 -0
- package/dist/commands/awk/parser2-print.d.ts +35 -0
- package/dist/commands/awk/parser2.d.ts +81 -0
- package/dist/commands/base64/base64.d.ts +7 -0
- package/dist/commands/basename/basename.d.ts +4 -0
- package/dist/commands/bash/bash.d.ts +6 -0
- package/dist/commands/browser-excluded.d.ts +16 -0
- package/dist/commands/cat/cat.d.ts +4 -0
- package/dist/commands/chmod/chmod.d.ts +4 -0
- package/dist/commands/clear/clear.d.ts +4 -0
- package/dist/commands/column/column.d.ts +11 -0
- package/dist/commands/comm/comm.d.ts +12 -0
- package/dist/commands/cp/cp.d.ts +4 -0
- package/dist/commands/curl/curl.d.ts +8 -0
- package/dist/commands/curl/form.d.ts +21 -0
- package/dist/commands/curl/help.d.ts +9 -0
- package/dist/commands/curl/parse.d.ts +9 -0
- package/dist/commands/curl/response-formatting.d.ts +20 -0
- package/dist/commands/curl/types.d.ts +60 -0
- package/dist/commands/cut/cut.d.ts +4 -0
- package/dist/commands/date/date.d.ts +7 -0
- package/dist/commands/diff/diff.d.ts +7 -0
- package/dist/commands/dirname/dirname.d.ts +4 -0
- package/dist/commands/du/du.d.ts +4 -0
- package/dist/commands/duration.d.ts +5 -0
- package/dist/commands/echo/echo.d.ts +4 -0
- package/dist/commands/env/env.d.ts +6 -0
- package/dist/commands/expand/expand.d.ts +12 -0
- package/dist/commands/expand/unexpand.d.ts +12 -0
- package/dist/commands/expr/expr.d.ts +9 -0
- package/dist/commands/file/file.d.ts +9 -0
- package/dist/commands/find/find.d.ts +4 -0
- package/dist/commands/find/matcher.d.ts +69 -0
- package/dist/commands/find/parser.d.ts +2 -0
- package/dist/commands/find/types.d.ts +88 -0
- package/dist/commands/flag-coverage.d.ts +2 -0
- package/dist/commands/fold/fold.d.ts +12 -0
- package/dist/commands/format-mode.d.ts +4 -0
- package/dist/commands/fuzz-flags-types.d.ts +17 -0
- package/dist/commands/fuzz-flags.d.ts +8 -0
- package/dist/commands/grep/grep.d.ts +8 -0
- package/dist/commands/gzip/gzip.d.ts +13 -0
- package/dist/commands/head/head-tail-shared.d.ts +38 -0
- package/dist/commands/head/head.d.ts +4 -0
- package/dist/commands/help/help.d.ts +4 -0
- package/dist/commands/help.d.ts +16 -0
- package/dist/commands/history/history.d.ts +4 -0
- package/dist/commands/hostname/hostname.d.ts +11 -0
- package/dist/commands/html-to-markdown/html-to-markdown.d.ts +9 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/join/join.d.ts +12 -0
- package/dist/commands/jq/jq.d.ts +9 -0
- package/dist/commands/js-exec/fetch-polyfill.d.ts +6 -0
- package/dist/commands/js-exec/js-exec-worker.d.ts +32 -0
- package/dist/commands/js-exec/js-exec.d.ts +11 -0
- package/dist/commands/js-exec/module-shims.d.ts +29 -0
- package/dist/commands/js-exec/path-polyfill.d.ts +6 -0
- package/dist/commands/ln/ln.d.ts +4 -0
- package/dist/commands/ls/ls.d.ts +4 -0
- package/dist/commands/md5sum/checksum.d.ts +7 -0
- package/dist/commands/md5sum/md5sum.d.ts +4 -0
- package/dist/commands/md5sum/sha1sum.d.ts +4 -0
- package/dist/commands/md5sum/sha256sum.d.ts +4 -0
- package/dist/commands/mkdir/mkdir.d.ts +4 -0
- package/dist/commands/mv/mv.d.ts +4 -0
- package/dist/commands/nl/nl.d.ts +12 -0
- package/dist/commands/od/od.d.ts +12 -0
- package/dist/commands/paste/paste.d.ts +4 -0
- package/dist/commands/printf/escapes.d.ts +25 -0
- package/dist/commands/printf/printf.d.ts +4 -0
- package/dist/commands/printf/strftime.d.ts +9 -0
- package/dist/commands/pwd/pwd.d.ts +4 -0
- package/dist/commands/python3/python3.d.ts +16 -0
- package/dist/commands/python3/worker.d.ts +28 -0
- package/dist/commands/query-engine/builtins/array-builtins.d.ts +20 -0
- package/dist/commands/query-engine/builtins/control-builtins.d.ts +18 -0
- package/dist/commands/query-engine/builtins/date-builtins.d.ts +15 -0
- package/dist/commands/query-engine/builtins/format-builtins.d.ts +11 -0
- package/dist/commands/query-engine/builtins/index-builtins.d.ts +16 -0
- package/dist/commands/query-engine/builtins/index.d.ts +17 -0
- package/dist/commands/query-engine/builtins/math-builtins.d.ts +15 -0
- package/dist/commands/query-engine/builtins/navigation-builtins.d.ts +18 -0
- package/dist/commands/query-engine/builtins/object-builtins.d.ts +15 -0
- package/dist/commands/query-engine/builtins/path-builtins.d.ts +20 -0
- package/dist/commands/query-engine/builtins/sql-builtins.d.ts +16 -0
- package/dist/commands/query-engine/builtins/string-builtins.d.ts +15 -0
- package/dist/commands/query-engine/builtins/type-builtins.d.ts +11 -0
- package/dist/commands/query-engine/evaluator.d.ts +40 -0
- package/dist/commands/query-engine/index.d.ts +8 -0
- package/dist/commands/query-engine/parser-types.d.ts +171 -0
- package/dist/commands/query-engine/parser.d.ts +9 -0
- package/dist/commands/query-engine/path-operations.d.ts +15 -0
- package/dist/commands/query-engine/safe-object.d.ts +83 -0
- package/dist/commands/query-engine/value-operations.d.ts +41 -0
- package/dist/commands/readlink/readlink.d.ts +4 -0
- package/dist/commands/registry.d.ts +56 -0
- package/dist/commands/rev/rev.d.ts +13 -0
- package/dist/commands/rg/file-types.d.ts +49 -0
- package/dist/commands/rg/gitignore.d.ts +98 -0
- package/dist/commands/rg/rg-options.d.ts +61 -0
- package/dist/commands/rg/rg-parser.d.ts +20 -0
- package/dist/commands/rg/rg-search.d.ts +15 -0
- package/dist/commands/rg/rg.d.ts +14 -0
- package/dist/commands/rm/rm.d.ts +4 -0
- package/dist/commands/rmdir/rmdir.d.ts +4 -0
- package/dist/commands/search-engine/index.d.ts +10 -0
- package/dist/commands/search-engine/matcher.d.ts +66 -0
- package/dist/commands/search-engine/regex.d.ts +46 -0
- package/dist/commands/sed/executor.d.ts +7 -0
- package/dist/commands/sed/lexer.d.ts +86 -0
- package/dist/commands/sed/parser.d.ts +18 -0
- package/dist/commands/sed/sed-regex.d.ts +23 -0
- package/dist/commands/sed/sed.d.ts +4 -0
- package/dist/commands/sed/types.d.ts +216 -0
- package/dist/commands/seq/seq.d.ts +16 -0
- package/dist/commands/sleep/sleep.d.ts +4 -0
- package/dist/commands/sort/comparator.d.ts +9 -0
- package/dist/commands/sort/parser.d.ts +11 -0
- package/dist/commands/sort/sort.d.ts +4 -0
- package/dist/commands/sort/types.d.ts +30 -0
- package/dist/commands/split/split.d.ts +12 -0
- package/dist/commands/sqlite3/formatters.d.ts +15 -0
- package/dist/commands/sqlite3/sqlite3.d.ts +23 -0
- package/dist/commands/sqlite3/worker.d.ts +45 -0
- package/dist/commands/sqlite3/worker.js +1728 -0
- package/dist/commands/stat/stat.d.ts +4 -0
- package/dist/commands/strings/strings.d.ts +12 -0
- package/dist/commands/tac/tac.d.ts +11 -0
- package/dist/commands/tail/tail.d.ts +4 -0
- package/dist/commands/tar/archive.d.ts +135 -0
- package/dist/commands/tar/bzip2-compress.d.ts +17 -0
- package/dist/commands/tar/tar-options.d.ts +37 -0
- package/dist/commands/tar/tar.d.ts +10 -0
- package/dist/commands/tee/tee.d.ts +4 -0
- package/dist/commands/time/time.d.ts +27 -0
- package/dist/commands/timeout/timeout.d.ts +4 -0
- package/dist/commands/touch/touch.d.ts +4 -0
- package/dist/commands/tr/tr.d.ts +4 -0
- package/dist/commands/tree/tree.d.ts +4 -0
- package/dist/commands/true/true.d.ts +6 -0
- package/dist/commands/uniq/uniq.d.ts +4 -0
- package/dist/commands/wc/wc.d.ts +4 -0
- package/dist/commands/which/which.d.ts +4 -0
- package/dist/commands/whoami/whoami.d.ts +11 -0
- package/dist/commands/worker-bridge/bridge-handler.d.ts +73 -0
- package/dist/commands/worker-bridge/protocol.d.ts +141 -0
- package/dist/commands/worker-bridge/sync-backend.d.ts +86 -0
- package/dist/commands/xan/aggregation.d.ts +20 -0
- package/dist/commands/xan/column-selection.d.ts +19 -0
- package/dist/commands/xan/csv.d.ts +37 -0
- package/dist/commands/xan/moonblade-parser.d.ts +80 -0
- package/dist/commands/xan/moonblade-to-jq.d.ts +12 -0
- package/dist/commands/xan/moonblade-tokenizer.d.ts +25 -0
- package/dist/commands/xan/subcommands.d.ts +15 -0
- package/dist/commands/xan/xan-agg.d.ts +8 -0
- package/dist/commands/xan/xan-columns.d.ts +8 -0
- package/dist/commands/xan/xan-core.d.ts +10 -0
- package/dist/commands/xan/xan-data.d.ts +52 -0
- package/dist/commands/xan/xan-filter.d.ts +8 -0
- package/dist/commands/xan/xan-map.d.ts +11 -0
- package/dist/commands/xan/xan-reshape.d.ts +40 -0
- package/dist/commands/xan/xan-simple.d.ts +40 -0
- package/dist/commands/xan/xan-view.d.ts +12 -0
- package/dist/commands/xan/xan.d.ts +10 -0
- package/dist/commands/xargs/xargs.d.ts +4 -0
- package/dist/commands/yq/formats.d.ts +64 -0
- package/dist/commands/yq/yq.d.ts +13 -0
- package/dist/custom-commands.d.ts +42 -0
- package/dist/encoding.d.ts +115 -0
- package/dist/fs/encoding.d.ts +17 -0
- package/dist/fs/in-memory-fs/in-memory-fs.d.ts +75 -0
- package/dist/fs/in-memory-fs/index.d.ts +1 -0
- package/dist/fs/init.d.ts +22 -0
- package/dist/fs/interface.d.ts +251 -0
- package/dist/fs/mountable-fs/index.d.ts +1 -0
- package/dist/fs/mountable-fs/mountable-fs.d.ts +118 -0
- package/dist/fs/overlay-fs/index.d.ts +1 -0
- package/dist/fs/overlay-fs/overlay-fs.d.ts +165 -0
- package/dist/fs/path-utils.d.ts +46 -0
- package/dist/fs/read-write-fs/index.d.ts +1 -0
- package/dist/fs/read-write-fs/read-write-fs.d.ts +98 -0
- package/dist/fs/real-fs-utils.d.ts +90 -0
- package/dist/fs/sanitize-error.d.ts +19 -0
- package/dist/index.d.cts +29 -0
- package/dist/index.d.ts +29 -0
- package/dist/interpreter/alias-expansion.d.ts +23 -0
- package/dist/interpreter/arithmetic.d.ts +24 -0
- package/dist/interpreter/assignment-expansion.d.ts +24 -0
- package/dist/interpreter/builtin-dispatch.d.ts +39 -0
- package/dist/interpreter/builtins/break.d.ts +6 -0
- package/dist/interpreter/builtins/cd.d.ts +6 -0
- package/dist/interpreter/builtins/compgen.d.ts +26 -0
- package/dist/interpreter/builtins/complete.d.ts +17 -0
- package/dist/interpreter/builtins/compopt.d.ts +28 -0
- package/dist/interpreter/builtins/continue.d.ts +6 -0
- package/dist/interpreter/builtins/declare-array-parsing.d.ts +14 -0
- package/dist/interpreter/builtins/declare-print.d.ts +39 -0
- package/dist/interpreter/builtins/declare.d.ts +35 -0
- package/dist/interpreter/builtins/dirs.d.ts +29 -0
- package/dist/interpreter/builtins/eval.d.ts +9 -0
- package/dist/interpreter/builtins/exit.d.ts +5 -0
- package/dist/interpreter/builtins/export.d.ts +14 -0
- package/dist/interpreter/builtins/getopts.d.ts +18 -0
- package/dist/interpreter/builtins/hash.d.ts +19 -0
- package/dist/interpreter/builtins/help.d.ts +12 -0
- package/dist/interpreter/builtins/index.d.ts +45 -0
- package/dist/interpreter/builtins/let.d.ts +18 -0
- package/dist/interpreter/builtins/local.d.ts +6 -0
- package/dist/interpreter/builtins/mapfile.d.ts +17 -0
- package/dist/interpreter/builtins/read.d.ts +6 -0
- package/dist/interpreter/builtins/return.d.ts +6 -0
- package/dist/interpreter/builtins/set.d.ts +9 -0
- package/dist/interpreter/builtins/shift.d.ts +15 -0
- package/dist/interpreter/builtins/shopt.d.ts +7 -0
- package/dist/interpreter/builtins/source.d.ts +6 -0
- package/dist/interpreter/builtins/unset.d.ts +16 -0
- package/dist/interpreter/builtins/variable-assignment.d.ts +66 -0
- package/dist/interpreter/command-resolution.d.ts +43 -0
- package/dist/interpreter/conditionals.d.ts +17 -0
- package/dist/interpreter/control-flow.d.ts +21 -0
- package/dist/interpreter/defense-aware-command-context.d.ts +6 -0
- package/dist/interpreter/errors.d.ts +167 -0
- package/dist/interpreter/expansion/analysis.d.ts +37 -0
- package/dist/interpreter/expansion/arith-text-expansion.d.ts +20 -0
- package/dist/interpreter/expansion/array-pattern-ops.d.ts +21 -0
- package/dist/interpreter/expansion/array-prefix-suffix.d.ts +46 -0
- package/dist/interpreter/expansion/array-slice-transform.d.ts +36 -0
- package/dist/interpreter/expansion/array-word-expansion.d.ts +39 -0
- package/dist/interpreter/expansion/brace-range.d.ts +20 -0
- package/dist/interpreter/expansion/command-substitution.d.ts +23 -0
- package/dist/interpreter/expansion/glob-escape.d.ts +32 -0
- package/dist/interpreter/expansion/indirect-expansion.d.ts +42 -0
- package/dist/interpreter/expansion/parameter-ops.d.ts +113 -0
- package/dist/interpreter/expansion/pattern-expansion.d.ts +23 -0
- package/dist/interpreter/expansion/pattern-removal.d.ts +18 -0
- package/dist/interpreter/expansion/pattern.d.ts +23 -0
- package/dist/interpreter/expansion/positional-params.d.ts +59 -0
- package/dist/interpreter/expansion/prompt.d.ts +39 -0
- package/dist/interpreter/expansion/quoting.d.ts +13 -0
- package/dist/interpreter/expansion/tilde.d.ts +12 -0
- package/dist/interpreter/expansion/unquoted-expansion.d.ts +76 -0
- package/dist/interpreter/expansion/variable-attrs.d.ts +19 -0
- package/dist/interpreter/expansion/variable.d.ts +36 -0
- package/dist/interpreter/expansion/word-glob-expansion.d.ts +33 -0
- package/dist/interpreter/expansion/word-split.d.ts +29 -0
- package/dist/interpreter/expansion.d.ts +53 -0
- package/dist/interpreter/functions.d.ts +12 -0
- package/dist/interpreter/helpers/array.d.ts +43 -0
- package/dist/interpreter/helpers/condition.d.ts +22 -0
- package/dist/interpreter/helpers/errors.d.ts +8 -0
- package/dist/interpreter/helpers/file-tests.d.ts +33 -0
- package/dist/interpreter/helpers/ifs.d.ts +104 -0
- package/dist/interpreter/helpers/loop.d.ts +24 -0
- package/dist/interpreter/helpers/nameref.d.ts +65 -0
- package/dist/interpreter/helpers/numeric-compare.d.ts +13 -0
- package/dist/interpreter/helpers/quoting.d.ts +24 -0
- package/dist/interpreter/helpers/readonly.d.ts +45 -0
- package/dist/interpreter/helpers/regex.d.ts +8 -0
- package/dist/interpreter/helpers/result.d.ts +60 -0
- package/dist/interpreter/helpers/shell-constants.d.ts +25 -0
- package/dist/interpreter/helpers/shellopts.d.ts +28 -0
- package/dist/interpreter/helpers/statements.d.ts +20 -0
- package/dist/interpreter/helpers/string-compare.d.ts +24 -0
- package/dist/interpreter/helpers/string-tests.d.ts +13 -0
- package/dist/interpreter/helpers/tilde.d.ts +13 -0
- package/dist/interpreter/helpers/variable-tests.d.ts +9 -0
- package/dist/interpreter/helpers/word-matching.d.ts +26 -0
- package/dist/interpreter/helpers/word-parts.d.ts +22 -0
- package/dist/interpreter/helpers/xtrace.d.ts +18 -0
- package/dist/interpreter/index.d.ts +4 -0
- package/dist/interpreter/interpreter.d.ts +91 -0
- package/dist/interpreter/pipeline-execution.d.ts +16 -0
- package/dist/interpreter/redirections.d.ts +60 -0
- package/dist/interpreter/simple-command-assignments.d.ts +29 -0
- package/dist/interpreter/subshell-group.d.ts +32 -0
- package/dist/interpreter/type-command.d.ts +37 -0
- package/dist/interpreter/types.d.ts +393 -0
- package/dist/limits.d.ts +52 -0
- package/dist/network/allow-list/shared.d.ts +59 -0
- package/dist/network/allow-list.d.ts +59 -0
- package/dist/network/dns-pin.d.ts +43 -0
- package/dist/network/fetch.d.ts +25 -0
- package/dist/network/index.d.ts +7 -0
- package/dist/network/types.d.ts +155 -0
- package/dist/parser/arithmetic-parser.d.ts +23 -0
- package/dist/parser/arithmetic-primaries.d.ts +45 -0
- package/dist/parser/command-parser.d.ts +10 -0
- package/dist/parser/compound-parser.d.ts +28 -0
- package/dist/parser/conditional-parser.d.ts +8 -0
- package/dist/parser/expansion-parser.d.ts +16 -0
- package/dist/parser/lexer.d.ts +197 -0
- package/dist/parser/parser-substitution.d.ts +76 -0
- package/dist/parser/parser.d.ts +136 -0
- package/dist/parser/types.d.ts +25 -0
- package/dist/parser/word-parser.d.ts +33 -0
- package/dist/sandbox/Command.d.ts +35 -0
- package/dist/sandbox/Sandbox.d.ts +90 -0
- package/dist/sandbox/index.d.ts +2 -0
- package/dist/shell-metadata.d.ts +25 -0
- package/dist/timers.d.ts +4 -0
- package/dist/types.d.ts +248 -0
- package/dist/utils/args.d.ts +55 -0
- package/dist/utils/constants.d.ts +15 -0
- package/dist/utils/file-reader.d.ts +74 -0
- package/dist/utils/glob.d.ts +25 -0
- package/dist/vitest-setup.d.ts +1 -0
- package/package.json +188 -0
- package/vendor/cpython-emscripten/python.cjs +2 -0
- package/vendor/cpython-emscripten/python.wasm +0 -0
- package/vendor/cpython-emscripten/python313.zip +0 -0
|
@@ -0,0 +1,733 @@
|
|
|
1
|
+
import{createRequire} from"node:module";const require=createRequire(import.meta.url);
|
|
2
|
+
import{B as hn,C as pn,D as me,E as st,F as se,G as ke,H as Yt,I as mn,J as x,K as yn,L as gn,M as Ie,N as Ks,O as ut,P as U,a as nn,b as js,c as on,d as Kt,e as ee,f as B,g as pe,h as ne,i as Re,j as Ge,k as Us,l as Xt,m as an,n as Hs,o as ln,p as $e,q as Be,r as cn,s as un,t as qs,u as Zs,v as Ke,w as fn,x as dn,y as Ae,z as Gs}from"./chunks/chunk-FE7TPM5F.js";import{a as ze,b as Ve,c as Ee}from"./chunks/chunk-WNH3HOQA.js";import{c as Bs}from"./chunks/chunk-HBVMHTO5.js";import{a as Vt,b as Bt}from"./chunks/chunk-XRFHFXFP.js";import{a as zs}from"./chunks/chunk-L2UW7DWF.js";import{a as Ze,b as be,c as xt}from"./chunks/chunk-DLL7UR66.js";import{a as Tt,b as Vs}from"./chunks/chunk-L64BMZUV.js";import{a as We,b as de}from"./chunks/chunk-TN7HHBQW.js";import{a as Ot}from"./chunks/chunk-BXERNLCU.js";import{a as _t,b as jt,c as co,d as Ue,e as uo,f as Ut,g as fo,h as Ht,i as ho,j as po}from"./chunks/chunk-NRSASXYY.js";import{a as ae,b as he,c as ue,d as we,e as Ws,f as G,g as He,h as Nt,i as qt,j as rn,k as Q,l as Zt,m as qe,n as Te,o as Gt,p as ve}from"./chunks/chunk-J2XQNA2Z.js";import"./chunks/chunk-STHBFACM.js";import{a as De}from"./chunks/chunk-FOCWZZDE.js";import{a as xe}from"./chunks/chunk-W5DWRFSU.js";import{a as Ms}from"./chunks/chunk-BZUGFHVS.js";var rt=[{name:"echo",load:async()=>(await import("./chunks/echo-NDWZZHPO.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-TSFMZVYS.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-I2B4W2XW.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-ZJGQER7M.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-MEPGZOB6.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-OC4ZLPYA.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-UA33VN3N.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-SSGETQVQ.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-BISAAS7A.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-W5BIQ646.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-4LGSXXGD.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-TFEPA42X.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-WE6EN5AV.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-OPJF4DL5.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-BALRBIDD.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-3JSKDTET.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-LF7NU4LA.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-CD34IZ4P.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-2ILJFW6Y.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-2ILJFW6Y.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-2ILJFW6Y.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-X6MJUOKW.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-JWIN756M.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-GS47M5U7.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-SW2YEO5B.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-XSIZR6PB.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-VV2LDX2J.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-OKARJCCV.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-7JC6S4DX.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-36LHWFRQ.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-5EHFX4EJ.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-WSDW7I4O.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-4TQNYMSW.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-JSPG6VOP.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-CADSA4VO.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-6WDHLGMX.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-4KKZZXXE.js")).split},{name:"column",load:async()=>(await import("./chunks/column-XT6UFXNQ.js")).column},{name:"join",load:async()=>(await import("./chunks/join-TBRGI3LQ.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-YUZ2FKCJ.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-BKC2BIAO.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-UB3CIYNI.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-MPHRFUTI.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-YLD52CNT.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-572XNP42.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-36M5BO7M.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-36M5BO7M.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-RTYYYW3D.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-RTYYYW3D.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-WYYKSLSZ.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-MGZPH7AX.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-FHQXJXBE.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-FHQXJXBE.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-HKGFEOF6.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-YZ33HQZQ.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-YZ33HQZQ.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-QLLVLUWT.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-C2AIWVNC.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-MWJFIG7X.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-XKUEQ4WF.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-X22JJINO.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-YDCRSLPQ.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-D4LNBSWX.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-M5EC7Q57.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-6MFJ5XZG.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-SPU24VSG.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-2PTOAFR6.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-NS7D3IXX.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-55SY74D5.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-JW4MSQZO.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-HZ6M2CKN.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-XEM24D5D.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-2STMMJYW.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-C4HQXXUP.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-XMTX52VE.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-WOKFDJTP.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-O5ASJAFY.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-O5ASJAFY.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-O5ASJAFY.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(rt.push({name:"tar",load:async()=>(await import("./chunks/tar-WT6S4IJX.js")).tarCommand}),rt.push({name:"yq",load:async()=>(await import("./chunks/yq-6N2YNRZS.js")).yqCommand}),rt.push({name:"xan",load:async()=>(await import("./chunks/xan-5D7XBVRF.js")).xanCommand}),rt.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-CGOEFJAO.js")).sqlite3Command}));var Qt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Qt.push({name:"python3",load:async()=>(await import("./chunks/python3-POMOR4OA.js")).python3Command}),Qt.push({name:"python",load:async()=>(await import("./chunks/python3-POMOR4OA.js")).pythonCommand}));var Jt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Jt.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-N5KEZBH7.js")).jsExecCommand}),Jt.push({name:"node",load:async()=>(await import("./chunks/js-exec-N5KEZBH7.js")).nodeStubCommand}));var vn=[{name:"curl",load:async()=>(await import("./chunks/curl-GRYA74XW.js")).curlCommand}],wn=new Map;function es(e){return{name:e.name,async execute(t,s){let r=wn.get(e.name);if(r||(r=await de.runTrustedAsync(()=>e.load()),wn.set(e.name,r)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:n}=await import("./chunks/flag-coverage-4GZNBF47.js");n(s.coverage,e.name,t)}return r.execute(t,s)}}}function mo(){return rt.map(e=>e.name)}function yo(){return vn.map(e=>e.name)}function bn(e){return(e?rt.filter(s=>e.includes(s.name)):rt).map(es)}function En(){return vn.map(es)}function go(){return Qt.map(e=>e.name)}function $n(){return Qt.map(es)}function wo(){return Jt.map(e=>e.name)}function Sn(){return Jt.map(es)}function Pn(e){return"load"in e&&typeof e.load=="function"}function vo(e,t){return{name:e,trusted:!0,execute:t}}function An(e){let t=null;return{name:e.name,trusted:!0,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}function D(e){if(!e||e==="/")return"/";let t=e.endsWith("/")&&e!=="/"?e.slice(0,-1):e;t.startsWith("/")||(t=`/${t}`);let s=t.split("/").filter(n=>n&&n!=="."),r=[];for(let n of s)n===".."?r.pop():r.push(n);return`/${r.join("/")}`||"/"}function R(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function nt(e){let t=D(e);if(t==="/")return"/";let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}function Xe(e,t){if(t.startsWith("/"))return D(t);let s=e==="/"?`/${t}`:`${e}/${t}`;return D(s)}function Ye(e,t){return e==="/"?`/${t}`:`${e}/${t}`}function ft(e,t){if(t.startsWith("/"))return D(t);let s=nt(e);return D(Ye(s,t))}var dt=new TextEncoder;function bo(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var je=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))typeof r=="function"?this.writeFileLazy(s,r):bo(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}ensureParentDirs(t){let s=nt(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,r,n){R(t,"write");let i=D(t);this.ensureParentDirs(i);let o=Ee(r),a=ze(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}writeFileLazy(t,s,r){R(t,"write");let n=D(t);this.ensureParentDirs(n),this.data.set(n,{type:"file",lazy:s,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(t,s){let r=await s.lazy(),i={type:"file",content:typeof r=="string"?dt.encode(r):r,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let r=await this.readFileBuffer(t),n=Ee(s);return Ve(r,n)}async readFileBytes(t){let s=await this.readFileBuffer(t);return Ve(s,"binary")}async readFileBuffer(t){R(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in r){let n=await this.materializeLazy(s,r);return n.content instanceof Uint8Array?n.content:dt.encode(n.content)}return r.content instanceof Uint8Array?r.content:dt.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){R(t,"append");let n=D(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=Ee(r),a=ze(s,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(n,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:dt.encode("content"in l?l.content:""),u=new Uint8Array(c.length+a.length);u.set(c),u.set(a,c.length),this.data.set(n,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){R(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=dt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){R(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=dt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveIntermediateSymlinks(t){let s=D(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=ft(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=D(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=ft(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){R(t,"mkdir");let r=D(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let n=nt(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){R(t,"scandir");let s=D(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=ft(s,r.target),r=this.data.get(s)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,s){R(t,"rm");let r=D(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=Ye(r,o);await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){R(t,"cp"),R(s,"cp");let n=D(t),i=D(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.data.set(i,{...o,content:a})}else this.data.set(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=Ye(n,l),u=Ye(i,l);await this.cp(c,u,r)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){return Xe(t,s)}async chmod(t,s){R(t,"chmod");let r=D(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){R(s,"symlink");let r=D(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){R(t,"link"),R(s,"link");let r=D(t),n=D(s),i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(n),this.data.set(n,{type:"file",content:o.content,mode:o.mode,mtime:o.mtime})}async readlink(t){R(t,"readlink");let s=D(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){R(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,r){R(t,"utimes");let n=D(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function Eo(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function $o(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function So(e){e.mkdirSync("/dev",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function Po(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${nn}
|
|
3
|
+
`),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
|
|
4
|
+
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>js(t)):e.writeFileSync("/proc/self/status",js(t)),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function kn(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Eo(e)&&($o(e,t),So(e),Po(e,s))}var Ao=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ko=["braceexpand","hashall","interactive-comments"];function Ys(e){let t=[],s=[...ko.map(r=>({name:r,enabled:!0})),...Ao.map(r=>({name:r,enabled:e[r]}))].sort((r,n)=>r.name.localeCompare(n.name));for(let r of s)r.enabled&&t.push(r.name);return t.join(":")}function pt(e){e.state.env.set("SHELLOPTS",Ys(e.state.options))}var Co=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Qs(e){let t=[];for(let s of Co)e[s]&&t.push(s);return t.join(":")}function Js(e){e.state.env.set("BASHOPTS",Qs(e.state.shoptOptions))}var _o="BASH_ALIAS_";function Cn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function _n(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Nn(e,t){return e.env.get(`${_o}${t}`)}function er(e,t,s){if(!t.name||!Cn(t.name))return t;let r=_n(t.name);if(!r)return t;let n=Nn(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new B,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=Tn(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof Kt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return On(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return On(t,n);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(a&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(Cn(f)){let d=_n(f);if(d&&Nn(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=er(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(r),i}}function On(e,t){let s=t;for(let o of e.args){let a=Tn(o);s+=` ${a}`}let r=new B,n=r.parseWordFromString("eval",!1,!1),i=r.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:n,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function Tn(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(r=>r.type==="Literal"?r.value:`$${r.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function xn(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),r=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!r||!s.endsWith(")"))return null;let n=r[1],i=[],o=!1,a="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!o){let d=f.indexOf("=(");d!==-1&&(o=!0,f=f.slice(d+2))}if(o){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(a||l)&&(i.push(a),a="",l=!1):h&&(a+=h)}}else if(o)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(a))a+=Xt({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await Ie(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await x(e,{type:"Word",parts:[u]});a+=f}(a||l)&&i.push(a);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${n}=(${c.join(" ")})`}async function Dn(e,t){let s=-1,r=-1,n=!1;for(let p=0;p<t.parts.length;p++){let y=t.parts[p];if(y.type==="Literal"){let b=y.value.indexOf("+=");if(b!==-1){let O=y.value.slice(0,b);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(O)){s=p,r=b,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(O)){s=p,r=b,n=!0;break}}let g=y.value.indexOf("=");if(g!==-1&&(g===0||y.value[g-1]!=="+")){let O=y.value.slice(0,g);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(O)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(O)){s=p,r=g;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),o=t.parts[s];if(o.type!=="Literal")return null;let a=n?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(s+1),f="";for(let p of i)f+=await x(e,{type:"Word",parts:[p]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await x(e,d):"";return`${f}${n?"+=":"="}${h}`}var No=["tar","yq","xan","sqlite3","python3","python"];function Rn(e){return No.includes(e)}var z=Object.freeze({stdout:"",stderr:"",exitCode:0});function W(e=""){return{stdout:e,stderr:"",exitCode:0}}function A(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function _(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function J(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Le(e,t,s="",r=""){throw new Q(e,t,s,r)}function ce(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new Q(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function tr(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new qe;return _("",`bash: break: only meaningful in a loop
|
|
5
|
+
`,0)}if(t.length>1)throw new Te(1,"",`bash: break: too many arguments
|
|
6
|
+
`);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r))throw new Te(128,"",`bash: break: ${t[0]}: numeric argument required
|
|
7
|
+
`);if(r<1)throw new ae(1,"",`bash: break: loop count out of range
|
|
8
|
+
`);s=r}throw new ae(s)}async function sr(e,t){let s,r=!1,n=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")n=!1,i++;else if(t[i]==="-P")n=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length>1)return A(`bash: cd: too many arguments
|
|
9
|
+
`,2);if(o.length===0||o[0]==="~"?s=e.state.env.get("HOME")||"/":o[0]==="-"?(s=e.state.previousDir,r=!0):s=o[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(h=>h);for(let h of d){let m=h.startsWith("/")?`${h}/${s}`:`${e.state.cwd}/${h}/${s}`;try{if((await e.fs.stat(m)).isDirectory){s=m,r=!0;break}}catch{}}}}let l=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return A(`bash: cd: ${s}: Not a directory
|
|
10
|
+
`)}catch{return A(`bash: cd: ${s}: No such file or directory
|
|
11
|
+
`)}}let u=c||"/";if(n)try{u=await e.fs.realpath(u)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=u,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),W(r?`${u}
|
|
12
|
+
`:"")}function rr(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Oo=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function ss(e){return Oo.includes(e)}async function rs(e,t,s){let r=rr(e,s);switch(t){case"-e":case"-a":return e.fs.exists(r);case"-f":return await e.fs.exists(r)?(await e.fs.stat(r)).isFile:!1;case"-d":return await e.fs.exists(r)?(await e.fs.stat(r)).isDirectory:!1;case"-r":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&256)!==0:!1;case"-w":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&128)!==0:!1;case"-x":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&64)!==0:!1;case"-s":return await e.fs.exists(r)?(await e.fs.stat(r)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(r)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&512)!==0:!1;case"-g":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(r);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(r);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var To=["-nt","-ot","-ef"];function ns(e){return To.includes(e)}async function is(e,t,s,r){let n=rr(e,s),i=rr(e,r);switch(t){case"-nt":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime>a.mtime}catch{return!1}case"-ot":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime<a.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(n)||!await e.fs.exists(i))return!1;let o=e.fs.resolvePath(e.state.cwd,n),a=e.fs.resolvePath(e.state.cwd,i);return o===a}catch{return!1}default:return!1}}var xo=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function os(e){return xo.has(e)}function as(e,t,s){switch(e){case"-eq":return t===s;case"-ne":return t!==s;case"-lt":return t<s;case"-le":return t<=s;case"-gt":return t>s;case"-ge":return t>=s}}function Dt(e){return e==="="||e==="=="||e==="!="}function ls(e,t,s,r=!1,n=!1,i=!1){if(r){let a=mt(t,s,n,i);return e==="!="?!a:a}if(n){let a=t.toLowerCase()===s.toLowerCase();return e==="!="?!a:a}let o=t===s;return e==="!="?!o:o}var Do=new Set(["-z","-n"]);function cs(e){return Do.has(e)}function us(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function fs(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let r=s[1],n=s[2];if(e.state.associativeArrays?.has(r)){let a=n;return(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),a=a.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),e.state.env.has(`${r}_${a}`)}let o;try{let a=new B,l=ee(a,n);o=await U(e,l.expression)}catch{if(/^-?\d+$/.test(n))o=Number.parseInt(n,10);else{let a=e.state.env.get(n);o=a?Number.parseInt(a,10):0}}if(o<0){let a=ne(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
|
|
13
|
+
`,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
|
|
14
|
+
`,!1}return e.state.env.has(`${r}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Ge(e,t).length>0:ne(e,t).length>0}async function Qe(e,t){switch(t.type){case"CondBinary":{let s=await x(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),n;if(t.operator==="=~")if(r){let i=await x(e,t.right);n=pn(i)}else n=await yn(e,t.right);else Dt(t.operator)&&!r?n=await gn(e,t.right):n=await x(e,t.right);if(Dt(t.operator)){let i=e.state.shoptOptions.nocasematch;return ls(t.operator,s,n,!r,i,!0)}if(os(t.operator))return as(t.operator,await Ln(e,s),await Ln(e,n));if(ns(t.operator))return is(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=Fo(n),l=Ot(o,i?"i":"").match(s);if(Re(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)e.state.env.set(`BASH_REMATCH_${c}`,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<n;case">":return s>n;default:return!1}}case"CondUnary":{let s=await x(e,t.operand);return ss(t.operator)?rs(e,t.operator,s):cs(t.operator)?us(t.operator,s):t.operator==="-v"?await fs(e,s):t.operator==="-o"?ir(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await x(e,t.operand.expression.word)})`!=="":!await Qe(e,t.operand);case"CondAnd":return await Qe(e,t.left)?await Qe(e,t.right):!1;case"CondOr":return await Qe(e,t.left)?!0:await Qe(e,t.right);case"CondGroup":return await Qe(e,t.expression);case"CondWord":return await x(e,t.word)!=="";default:return!1}}async function Rt(e,t){if(t.length===0)return _("","",1);if(t.length===1)return J(!!t[0]);if(t.length===2){let r=t[0],n=t[1];return r==="("?A(`test: '(' without matching ')'
|
|
15
|
+
`,2):ss(r)?J(await rs(e,r,n)):cs(r)?J(us(r,n)):r==="!"?J(!n):r==="-v"?J(await fs(e,n)):r==="-o"?J(ir(e,n)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?A(`test: ${r}: unary operator expected
|
|
16
|
+
`,2):_("","",1)}if(t.length===3){let r=t[0],n=t[1],i=t[2];if(Dt(n))return J(ls(n,r,i));if(os(n)){let o=ds(r),a=ds(i);return!o.valid||!a.valid?_("","",2):J(as(n,o.value,a.value))}if(ns(n))return J(await is(e,n,r,i));switch(n){case"-a":return J(r!==""&&i!=="");case"-o":return J(r!==""||i!=="");case">":return J(r>i);case"<":return J(r<i)}if(r==="!"){let o=await Rt(e,[n,i]);return _("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return J(n!=="")}if(t.length===4){if(t[0]==="!"){let r=await Rt(e,t.slice(1));return _("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return Rt(e,[t[1],t[2]])}let s=await Mn(e,t,0);return s.pos<t.length?A(`test: too many arguments
|
|
17
|
+
`,2):J(s.value)}async function Mn(e,t,s){return Ro(e,t,s)}async function Ro(e,t,s){let{value:r,pos:n}=await In(e,t,s);for(;t[n]==="-o";){let i=await In(e,t,n+1);r=r||i.value,n=i.pos}return{value:r,pos:n}}async function In(e,t,s){let{value:r,pos:n}=await nr(e,t,s);for(;t[n]==="-a";){let i=await nr(e,t,n+1);r=r&&i.value,n=i.pos}return{value:r,pos:n}}async function nr(e,t,s){if(t[s]==="!"){let{value:r,pos:n}=await nr(e,t,s+1);return{value:!r,pos:n}}return Io(e,t,s)}async function Io(e,t,s){let r=t[s];if(r==="("){let{value:i,pos:o}=await Mn(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let n=t[s+1];if(Dt(n)){let i=r,o=t[s+2]??"";return{value:ls(n,i,o),pos:s+3}}if(os(n)){let i=ds(r),o=ds(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:as(n,i.value,o.value),pos:s+3}}if(ns(n)){let i=r,o=t[s+2]??"";return{value:await is(e,n,i,o),pos:s+3}}if(ss(r)){let i=t[s+1]??"";return{value:await rs(e,r,i),pos:s+2}}if(cs(r)){let i=t[s+1]??"";return{value:us(r,i),pos:s+2}}if(r==="-v"){let i=t[s+1]??"";return{value:await fs(e,i),pos:s+2}}if(r==="-o"){let i=t[s+1]??"";return{value:ir(e,i),pos:s+2}}return{value:r!==void 0&&r!=="",pos:s+1}}function mt(e,t,s=!1,r=!1){let n=`^${Wn(t,r)}$`;return Ot(n,s?"is":"s").test(e)}function Wn(e,t){let s="";for(let r=0;r<e.length;r++){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=zn(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=Vn(o),l=a.map(u=>Wn(u,t)),c=l.length>0?l.join("|"):"(?:)";if(n==="@")s+=`(?:${c})`;else if(n==="*")s+=`(?:${c})*`;else if(n==="+")s+=`(?:${c})+`;else if(n==="?")s+=`(?:${c})?`;else if(n==="!")if(i<e.length-1){let f=a.map(h=>Bn(h,t));if(f.every(h=>h!==null)&&f.every(h=>h===f[0])&&f[0]!==null){let h=f[0];if(h===0)s+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${c})).{${h}}`),s+=`(?:${m.join("|")})`}}else s+=`(?:(?!(?:${c})).)*?`}else s+=`(?!(?:${c})$).*`;r=i;continue}}if(n==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,r++}else s+="\\\\";else if(n==="*")s+=".*";else if(n==="?")s+=".";else if(n==="["){let i=e.indexOf("]",r+1);if(i!==-1){let o=e.slice(r+1,i);o.startsWith("!")?s+=`[^${o.slice(1)}]`:s+=e.slice(r,i+1),r=i}else s+="\\["}else/[\\^$.|+(){}]/.test(n)?s+=`\\${n}`:s+=n}return s}function zn(e,t){let s=1,r=t+1;for(;r<e.length&&s>0;){let n=e[r];if(n==="\\"){r+=2;continue}if(n==="(")s++;else if(n===")"&&(s--,s===0))return r;r++}return-1}function Vn(e){let t=[],s="",r=0,n=0;for(;n<e.length;){let i=e[n];if(i==="\\"){s+=i,n+1<e.length?(s+=e[n+1],n+=2):n++;continue}i==="("?(r++,s+=i):i===")"?(r--,s+=i):i==="|"&&r===0?(t.push(s),s=""):s+=i,n++}return t.push(s),t}function Bn(e,t){let s=0,r=0;for(;r<e.length;){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=zn(e,r+1);if(i!==-1){if(n==="@"){let o=e.slice(r+2,i),l=Vn(o).map(c=>Bn(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],r=i+1;continue}return null}return null}}if(n==="*")return null;if(n==="?"){s+=1,r++;continue}if(n==="["){let i=e.indexOf("]",r+1);if(i!==-1){s+=1,r=i+1;continue}s+=1,r++;continue}if(n==="\\"){s+=1,r+=2;continue}s+=1,r++}return s}function ir(e,t){let r=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return r?r():!1}async function Ln(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return Fn(t);try{let s=new B,r=ee(s,t);return await U(e,r.expression)}catch{return Fn(t)}}function Lo(e,t){let s=0;for(let r of e){let n;if(r>="0"&&r<="9")n=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")n=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")n=r.charCodeAt(0)-65+36;else if(r==="@")n=62;else if(r==="_")n=63;else return Number.NaN;if(n>=t)return Number.NaN;s=s*t+n}return s}function Fn(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let n=Number.parseInt(r[1],10);n>=2&&n<=64?s=Lo(r[2],n):s=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?s=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?s=Number.parseInt(e,8):s=Number.parseInt(e,10);return Number.isNaN(s)&&(s=0),t?-s:s}function ds(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let s=Number.parseInt(e,10);return Number.isNaN(s)?{value:0,valid:!1}:{value:t?-s:s,valid:!0}}function Fo(e){let t="",s=0;for(;s<e.length;)if(e[s]==="\\"&&s+1<e.length)t+=e[s]+e[s+1],s+=2;else if(e[s]==="["){let r=Mo(e,s);t+=r.converted,s=r.endIndex}else t+=e[s],s++;return t}function Mo(e,t){let s=t+1,r="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(r+="^",s++);let n=!1;s<e.length&&e[s]==="]"&&(n=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let o="",a=!1;for(;s<e.length;){let l=e[s];if(l==="]"){a=!0,s++;break}if(l==="["&&s+1<e.length&&e[s+1]===":"){let c=e.indexOf(":]",s+2);if(c!==-1){let u=e.slice(s+2,c);o+=Wo(u),s=c+2;continue}}if(l==="["&&s+1<e.length){let c=e[s+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,s+2);if(f!==-1){let d=e.slice(s+2,f);o+=d,s=f+2;continue}}}if(l==="\\"&&s+1<e.length){o+=l+e[s+1],s+=2;continue}o+=l,s++}return a?(n&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:s}):{converted:"\\[",endIndex:t+1}}function Wo(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function Fe(e){let t=[],s="",r=!1,n=!1,i=!1,o=!1;for(let a of e){if(i){s+=a,i=!1,o=!0;continue}if(a==="\\"){i=!0;continue}if(a==="'"&&!n){r||(o=!0),r=!r;continue}if(a==='"'&&!r){n||(o=!0),n=!n;continue}if((a===" "||a===" "||a===`
|
|
18
|
+
`)&&!r&&!n){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function hs(e){let t=[],s=0;for(;s<e.length;){for(;s<e.length&&/\s/.test(e[s]);)s++;if(s>=e.length)break;if(e[s]!=="["){s++;continue}s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)r+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)n+=e[s],s++;t.push([r,n])}return t}function jn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Fe(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let r=e.indexOf("=");return{name:e.slice(0,r),isArray:!1,value:e.slice(r+1)}}return{name:e,isArray:!1}}async function zo(e,t){try{let s=new B,r=ee(s,t);return await U(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Un(e,t,s={}){let{name:r,isArray:n,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=se(e,r);if(u)return u}if(n&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${r}_${u}`,i[u]);e.state.env.set(`${r}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await zo(e,a);e.state.env.set(`${r}_${u}`,o);let f=parseInt(e.state.env.get(`${r}__length`)??"0",10);u>=f&&e.state.env.set(`${r}__length`,String(u+1))}else o!==void 0&&e.state.env.set(r,o);return l&&me(e,r),null}function Je(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function yt(e,t){return e.state.localVarDepth?.get(t)}function ps(e,t){e.state.localVarDepth?.delete(t)}function Hn(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function ms(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function qn(e,t){if(e.state.localVarStack)for(let[s,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(s)}}var or=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Zn(e){return or.has(e)}var ar=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),gt=new Set([":","true","false","cd","export","unset","exit","local","set","break","continue","return","eval","shift","getopts","compgen","complete","compopt","pushd","popd","dirs","source",".","read","mapfile","readarray","declare","typeset","readonly","let","command","shopt","exec","test","[","echo","printf","pwd","alias","unalias","type","hash","ulimit","umask","trap","times","wait","kill","jobs","fg","bg","disown","suspend","fc","history","help","enable","builtin","caller"]);async function et(e,t,s,r){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
|
|
19
|
+
`;if(r.checkNoclobber&&e.state.options.noclobber&&!r.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
|
|
20
|
+
`}catch{}return null}function Me(e){let s=Math.min(e.length,8192);for(let r=0;r<s;r++)if(e.charCodeAt(r)>127)return"utf8";return"binary"}function Vo(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}async function ys(e,t){let s=new Map;for(let r=0;r<t.length;r++){let n=t[r];if(n.target.type==="HereDoc")continue;if(n.operator===">&"||n.operator==="<&"){if(Ks(e,n.target))return{targets:s,error:`bash: $@: ambiguous redirect
|
|
21
|
+
`};s.set(r,await x(e,n.target))}else{let o=await ut(e,n.target);if("error"in o)return{targets:s,error:o.error};s.set(r,o.target)}}return{targets:s}}function Bo(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd,s=e.limits.maxFileDescriptors;if(t>=s)throw new Error(`bash: cannot allocate file descriptor: too many open files (max ${s})`);return e.state.nextFd++,t}async function gs(e,t){for(let s of t){if(!s.fdVariable)continue;if(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),(s.operator===">&"||s.operator==="<&")&&s.target.type==="Word"&&await x(e,s.target)==="-"){let i=e.state.env.get(s.fdVariable);if(i!==void 0){let o=Number.parseInt(i,10);Number.isNaN(o)||e.state.fileDescriptors.delete(o)}continue}let r=Bo(e);if(e.state.env.set(s.fdVariable,String(r)),s.target.type==="Word"){let n=await x(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(n,10);if(!Number.isNaN(i)){let o=e.state.fileDescriptors.get(i);o!==void 0&&(ce(e),e.state.fileDescriptors.set(r,o));continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,n);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),ce(e),e.state.fileDescriptors.set(r,`__file__:${i}`)}else if(s.operator==="<<<")ce(e),e.state.fileDescriptors.set(r,`${n}
|
|
22
|
+
`);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,n),o=await e.fs.readFile(i);ce(e),e.state.fileDescriptors.set(r,o)}catch{return _("",`bash: ${n}: No such file or directory
|
|
23
|
+
`,1)}}}return null}async function Ce(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let r=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!r)continue;let n;if(r){if(n=await x(e,s.target),n==="-"||!Number.isNaN(Number.parseInt(n,10))||s.fd!=null)continue}else{let a=await ut(e,s.target);if("error"in a)return _("",a.error,1);n=a.target}let i=e.fs.resolvePath(e.state.cwd,n),o=s.operator===">|";if(i.includes("\0"))return _("",`bash: ${n}: No such file or directory
|
|
24
|
+
`,1);try{let a=await e.fs.stat(i);if(a.isDirectory)return _("",`bash: ${n}: Is a directory
|
|
25
|
+
`,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&n!=="/dev/null")return _("",`bash: ${n}: cannot overwrite existing file
|
|
26
|
+
`,1)}catch{}if(n!=="/dev/null"&&n!=="/dev/stdout"&&n!=="/dev/stderr"&&n!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),n==="/dev/full")return _("",`bash: /dev/full: No space left on device
|
|
27
|
+
`,1)}return null}async function Gn(e,t,s){for(let r=0;r<t.length;r++){let n=t[r];if(n.target.type==="HereDoc")continue;let i=n.operator===">&";if(n.operator!==">"&&n.operator!==">|"&&n.operator!=="&>"&&!i)continue;let o,a=s?.get(r);if(a!==void 0)o=a;else if(i)o=await x(e,n.target);else{let u=await ut(e,n.target);if("error"in u)return _("",u.error,1);o=u.target}if(i&&(o==="-"||!Number.isNaN(Number.parseInt(o,10))||n.fd!=null))continue;let l=e.fs.resolvePath(e.state.cwd,o);if(l.includes("\0"))return _("",`bash: ${o}: No such file or directory
|
|
28
|
+
`,1);let c=await et(e,l,o,{checkNoclobber:!0,isClobber:n.operator===">|"});if(c)return _("",c,1)}return null}async function Z(e,t,s,r){let{stdout:n,stderr:i,exitCode:o}=t,a=n,l=i,u=t.stdoutKind==="bytes"||t.stdoutKind===void 0&&t.stdoutEncoding==="binary"?"binary":"utf8",f=y=>u,d=async y=>{let b=r?.get(y);if(b!==void 0)return b;let g=await ut(e,s[y].target);return"error"in g?(i+=g.error,o=1,n="",null):g.target};for(let y=0;y<s.length;y++){let b=s[y];if(b.target.type==="HereDoc")continue;let g,O=r?.get(y);if(O!==void 0)g=O;else if(b.operator===">&"||b.operator==="<&"){if(Ks(e,b.target)){i+=`bash: $@: ambiguous redirect
|
|
29
|
+
`,o=1,n="";continue}g=await x(e,b.target)}else{let $=await ut(e,b.target);if("error"in $){i+=$.error,o=1,n="";continue}g=$.target}if(!b.fdVariable){if(g.includes("\0")){i+=`bash: ${g.replace(/\0/g,"")}: No such file or directory
|
|
30
|
+
`,o=1,n="";continue}switch(b.operator){case">":case">|":{let v=b.fd??1,$=b.operator===">|";if(v===1){if(g==="/dev/stdout")break;if(g==="/dev/stderr"){i+=n,n="";break}if(g==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
31
|
+
`,o=1,n="";break}let w=e.fs.resolvePath(e.state.cwd,g),S=await et(e,w,g,{checkNoclobber:!0,isClobber:$});if(S){i+=S,o=1,n="";break}let C=s[y-1];if(C&&(C.operator===">&"||C.operator==="<&")&&(C.fd??1)===2){let N=r?.get(y-1)??await x(e,C.target);if(N==="1"||N==="&1"){await e.fs.writeFile(w,a,f(a)),n=l,i="";break}}let E=s[y+1];if(E&&(E.operator===">&"||E.operator==="<&")&&(E.fd??1)===2){let N=r?.get(y+1)??await x(e,E.target);if(N==="1"||N==="&1"){let P=n+i;await e.fs.writeFile(w,P,f(P)),n="",i="",y++;break}}await e.fs.writeFile(w,n,f(n)),n=""}else if(v===2){if(g==="/dev/stderr")break;if(g==="/dev/stdout"){n+=i,i="";break}if(g==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
32
|
+
`,o=1;break}if(g==="/dev/null")i="";else{let w=e.fs.resolvePath(e.state.cwd,g),S=await et(e,w,g,{checkNoclobber:!0,isClobber:$});if(S){i+=S,o=1;break}await e.fs.writeFile(w,i,Me(i)),i=""}}break}case">>":{let v=b.fd??1;if(v===1){if(g==="/dev/stdout")break;if(g==="/dev/stderr"){i+=n,n="";break}if(g==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
33
|
+
`,o=1,n="";break}let $=e.fs.resolvePath(e.state.cwd,g),w=await et(e,$,g,{});if(w){i+=w,o=1,n="";break}await e.fs.appendFile($,n,f(n)),n=""}else if(v===2){if(g==="/dev/stderr")break;if(g==="/dev/stdout"){n+=i,i="";break}if(g==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
34
|
+
`,o=1;break}let $=e.fs.resolvePath(e.state.cwd,g),w=await et(e,$,g,{});if(w){i+=w,o=1;break}await e.fs.appendFile($,i,Me(i)),i=""}break}case">&":case"<&":{let v=b.fd??1;if(g==="-"){if(v===1){let $=s[y-1];if($&&($.operator===">&"||$.operator==="<&")&&($.fd??1)===2){let w=r?.get(y-1)??await x(e,$.target);n=w==="1"||w==="&1"?l:""}else n=""}else v===2&&(i="");break}if(g.endsWith("-")){let $=g.slice(0,-1),w=Number.parseInt($,10);if(!Number.isNaN(w)){let S=e.state.fileDescriptors?.get(w);S!==void 0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(v,S),w>=3&&e.state.fileDescriptors?.delete(w)):w===1||w===2?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(v,`__dupout__:${w}`)):w===0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(v,`__dupin__:${w}`)):w>=3&&(i+=`bash: ${w}: Bad file descriptor
|
|
35
|
+
`,o=1)}break}if(g==="2"||g==="&2")v===1&&(i=n+i,n="");else if(g==="1"||g==="&1")n+=i,i="";else{let $=Number.parseInt(g,10);if(Number.isNaN($)){if(b.operator===">&"){let w=e.fs.resolvePath(e.state.cwd,g),S=await et(e,w,g,{checkNoclobber:!0});if(S){i=S,o=1,n="";break}if(b.fd==null){let C=n+i;await e.fs.writeFile(w,C,f(C)),n="",i=""}else v===1?(await e.fs.writeFile(w,n,f(n)),n=""):v===2&&(await e.fs.writeFile(w,i,Me(i)),i="")}}else{let w=e.state.fileDescriptors?.get($);if(w?.startsWith("__file__:")){let S=w.slice(9);v===1?(await e.fs.appendFile(S,n,f(n)),n=""):v===2&&(await e.fs.appendFile(S,i,Me(i)),i="")}else if(w?.startsWith("__rw__:")){let S=Vo(w);S&&(v===1?(await e.fs.appendFile(S.path,n,f(n)),n=""):v===2&&(await e.fs.appendFile(S.path,i,Me(i)),i=""))}else if(w?.startsWith("__dupout__:")){let S=Number.parseInt(w.slice(11),10);if(S!==1)if(S===2)v===1&&(i=n+i,n="");else{let C=e.state.fileDescriptors?.get(S);if(C?.startsWith("__file__:")){let E=C.slice(9);v===1?(await e.fs.appendFile(E,n,f(n)),n=""):v===2&&(await e.fs.appendFile(E,i,Me(i)),i="")}}}else w?.startsWith("__dupin__:")?(i+=`bash: ${$}: Bad file descriptor
|
|
36
|
+
`,o=1,n=""):$>=3&&(i+=`bash: ${$}: Bad file descriptor
|
|
37
|
+
`,o=1,n="")}}break}case"&>":{if(g==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
38
|
+
`,o=1,n="";break}let v=e.fs.resolvePath(e.state.cwd,g),$=await et(e,v,g,{checkNoclobber:!0});if($){i=$,o=1,n="";break}let w=s[y+1];if(w&&(w.operator===">"||w.operator===">|"||w.operator===">>")&&(w.fd??1)===1){let C=await d(y+1);if(C!==null){let E=e.fs.resolvePath(e.state.cwd,C);await e.fs.writeFile(v,i,Me(i)),w.operator===">>"?await e.fs.appendFile(E,n,f(n)):await e.fs.writeFile(E,n,f(n)),n="",i="",y++;break}}let S=n+i;await e.fs.writeFile(v,S,f(S)),n="",i="";break}case"&>>":{if(g==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
39
|
+
`,o=1,n="";break}let v=e.fs.resolvePath(e.state.cwd,g),$=await et(e,v,g,{});if($){i=$,o=1,n="";break}let w=s[y+1];if(w&&(w.operator===">"||w.operator===">|"||w.operator===">>")&&(w.fd??1)===1){let C=await d(y+1);if(C!==null){let E=e.fs.resolvePath(e.state.cwd,C);await e.fs.appendFile(v,i,Me(i)),w.operator===">>"?await e.fs.appendFile(E,n,f(n)):await e.fs.writeFile(E,n,f(n)),n="",i="",y++;break}}let S=n+i;await e.fs.appendFile(v,S,f(S)),n="",i="";break}}}}let h=e.state.fileDescriptors?.get(1);if(h){if(h==="__dupout__:2")i+=n,n="";else if(h.startsWith("__file__:")){let y=h.slice(9);await e.fs.appendFile(y,n,f(n)),n=""}else if(h.startsWith("__file_append__:")){let y=h.slice(16);await e.fs.appendFile(y,n,f(n)),n=""}}let m=e.state.fileDescriptors?.get(2);if(m){if(m==="__dupout__:1")n+=i,i="";else if(m.startsWith("__file__:")){let y=m.slice(9);await e.fs.appendFile(y,i,Me(i)),i=""}else if(m.startsWith("__file_append__:")){let y=m.slice(16);await e.fs.appendFile(y,i,Me(i)),i=""}}let p=_(n,i,o);return t.stdoutKind&&(p.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(p.stdoutEncoding="binary"),p}function Kn(e,t){if(e.state.options.posix&&or.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
|
|
40
|
+
`;throw new G(2,"",r)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),z}async function jo(e,t){let s="";for(let r of t)if((r.operator==="<<"||r.operator==="<<-")&&r.target.type==="HereDoc"){let n=r.target,i=await x(e,n.content);n.stripTabs&&(i=i.split(`
|
|
41
|
+
`).map(a=>a.replace(/^\t+/,"")).join(`
|
|
42
|
+
`)),(r.fd??0)===0&&(s=i)}else if(r.operator==="<<<"&&r.target.type==="Word")s=`${await x(e,r.target)}
|
|
43
|
+
`;else if(r.operator==="<"&&r.target.type==="Word"){let n=await x(e,r.target),i=e.fs.resolvePath(e.state.cwd,n);try{s=await e.fs.readFile(i)}catch{}}return s}async function ws(e,t,s,r="",n){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Le(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(n??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let c=0;c<s.length;c++)i.set(String(c+1),e.state.env.get(String(c+1))),e.state.env.set(String(c+1),s[c]);i.set("@",e.state.env.get("@")),i.set("#",e.state.env.get("#")),e.state.env.set("@",s.join(" ")),e.state.env.set("#",String(s.length));let o=()=>{let c=e.state.localScopes.length-1,u=e.state.localScopes.pop();if(u)for(let[f,d]of u)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);if(qn(e,c),e.state.fullyUnsetLocals)for(let[f,d]of e.state.fullyUnsetLocals.entries())d===c&&e.state.fullyUnsetLocals.delete(f);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let f=e.state.localExportedVars.pop();if(f)for(let d of f)e.state.exportedVars?.delete(d)}for(let[f,d]of i)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:a,error:l}=await ys(e,t.redirections);if(l)return o(),_("",l,1);try{let c=await jo(e,t.redirections),u=r||c,f=await e.executeCommand(t.body,u);return o(),Z(e,f,t.redirections,a)}catch(c){if(o(),c instanceof ue){let u=_(c.stdout,c.stderr,c.exitCode);return Z(e,u,t.redirections,a)}throw c}}var Yn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],cr=[".",":","[","alias","bg","bind","break","builtin","caller","cd","command","compgen","complete","compopt","continue","declare","dirs","disown","echo","enable","eval","exec","exit","export","false","fc","fg","getopts","hash","help","history","jobs","kill","let","local","logout","mapfile","popd","printf","pushd","pwd","read","readarray","readonly","return","set","shift","shopt","source","suspend","test","times","trap","true","type","typeset","ulimit","umask","unalias","unset","wait"],Uo=["autocd","assoc_expand_once","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","dotglob","execfail","expand_aliases","extdebug","extglob","extquote","failglob","force_fignore","globasciiranges","globstar","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lastpipe","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","nocaseglob","nocasematch","nullglob","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath","xpg_echo"],Ho=cr;async function ur(e,t){let s=[],r=null,n="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,h=[],m=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let v=0;v<t.length;v++){let $=t[v];if($==="-v")s.push("variable");else if($==="-e")s.push("export");else if($==="-f")s.push("file");else if($==="-d")s.push("directory");else if($==="-k")s.push("keyword");else if($==="-A"){if(v++,v>=t.length)return A(`compgen: -A: option requires an argument
|
|
44
|
+
`,2);let w=t[v];if(!m.includes(w))return A(`compgen: ${w}: invalid action name
|
|
45
|
+
`,2);s.push(w)}else if($==="-W"){if(v++,v>=t.length)return A(`compgen: -W: option requires an argument
|
|
46
|
+
`,2);r=t[v]}else if($==="-P"){if(v++,v>=t.length)return A(`compgen: -P: option requires an argument
|
|
47
|
+
`,2);n=t[v]}else if($==="-S"){if(v++,v>=t.length)return A(`compgen: -S: option requires an argument
|
|
48
|
+
`,2);i=t[v]}else if($==="-o"){if(v++,v>=t.length)return A(`compgen: -o: option requires an argument
|
|
49
|
+
`,2);let w=t[v];if(w==="plusdirs")a=!0;else if(w==="dirnames")l=!0;else if(w==="default")c=!0;else if(!(w==="filenames"||w==="nospace"||w==="bashdefault"||w==="noquote"))return A(`compgen: ${w}: invalid option name
|
|
50
|
+
`,2)}else if($==="-F"){if(v++,v>=t.length)return A(`compgen: -F: option requires an argument
|
|
51
|
+
`,2);f=t[v]}else if($==="-C"){if(v++,v>=t.length)return A(`compgen: -C: option requires an argument
|
|
52
|
+
`,2);d=t[v]}else if($==="-X"){if(v++,v>=t.length)return A(`compgen: -X: option requires an argument
|
|
53
|
+
`,2);u=t[v]}else if($==="-G"){if(v++,v>=t.length)return A(`compgen: -G: option requires an argument
|
|
54
|
+
`,2)}else if($==="--"){h.push(...t.slice(v+1));break}else $.startsWith("-")||h.push($)}o=h[0]??null;let p=[];if(l){let v=await lr(e,o);p.push(...v)}if(c){let v=await Xn(e,o);p.push(...v)}for(let v of s)if(v==="variable"){let $=qo(e,o);p.push(...$)}else if(v==="export"){let $=Zo(e,o);p.push(...$)}else if(v==="function"){let $=Go(e,o);p.push(...$)}else if(v==="builtin"){let $=Ko(o);p.push(...$)}else if(v==="keyword"){let $=Xo(o);p.push(...$)}else if(v==="alias"){let $=Yo(e,o);p.push(...$)}else if(v==="shopt"){let $=Qo(o);p.push(...$)}else if(v==="helptopic"){let $=Jo(o);p.push(...$)}else if(v==="directory"){let $=await lr(e,o);p.push(...$)}else if(v==="file"){let $=await Xn(e,o);p.push(...$)}else if(v==="user"){let $=ea(o);p.push(...$)}else if(v==="command"){let $=await ta(e,o);p.push(...$)}if(r!==null)try{let v=await sa(e,r),$=ra(e,v);for(let w of $)(o===null||w.startsWith(o))&&p.push(w)}catch{return _("","",1)}if(a){let v=await lr(e,o);for(let $ of v)p.includes($)||p.push($)}let y="";if(f!==null){let v=e.state.functions.get(f);if(v){let $=new Map;$.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),$.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),$.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),$.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let w=new Map;for(let C of e.state.env.keys())(C==="COMPREPLY"||C.startsWith("COMPREPLY_")||C==="COMPREPLY__length")&&(w.set(C,e.state.env.get(C)),e.state.env.delete(C));let S=["compgen",h[0]??"",""];try{let C=await ws(e,v,S,"");if(C.exitCode!==0)return wt(e,$),wt(e,w),_("",C.stderr,1);y=C.stdout;let E=na(e);p.push(...E)}catch{return wt(e,$),wt(e,w),_("","",1)}wt(e,$),wt(e,w)}}if(d!==null)try{let v=pe(d),$=await e.executeScript(v);if($.exitCode!==0)return _("",$.stderr,$.exitCode);if($.stdout){let w=$.stdout.split(`
|
|
55
|
+
`);for(let S of w)S.length>0&&p.push(S)}}catch(v){if(v.name==="ParseException")return A(`compgen: -C: ${v.message}
|
|
56
|
+
`,2);throw v}let b=p;if(u!==null){let v=u.startsWith("!"),$=v?u.slice(1):u;b=p.filter(w=>{let S=mt(w,$,!1,!0);return v?S:!S})}if(b.length===0&&o!==null)return _(y,"",1);let g=b.map(v=>`${n}${v}${i}`).join(`
|
|
57
|
+
`),O=y+(g?`${g}
|
|
58
|
+
`:"");return W(O)}function qo(e,t){let s=new Set;for(let n of e.state.env.keys()){if(n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length"))continue;let i=n.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)?s.add(n):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function Zo(e,t){let s=e.state.exportedVars??new Set,r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r=r.filter(n=>n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length")?!1:e.state.env.has(n)),r.sort()}function Go(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function Ko(e){let t=[...cr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Xo(e){let t=[...Yn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Yo(e,t){let s=[];for(let n of e.state.env.keys())if(n.startsWith("BASH_ALIAS_")){let i=n.slice(11);s.push(i)}let r=s;return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function Qo(e){let t=[...Uo];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Jo(e){let t=[...Ho];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function lr(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i){let a=`${r}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!n||o.startsWith(n)))if(t?.includes("/")){let c=t.lastIndexOf("/"),u=t.slice(0,c+1);s.push(u+o)}else s.push(o)}catch{}}}catch{}return s.sort()}async function Xn(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i)if(!n||o.startsWith(n))if(t?.includes("/")){let a=t.lastIndexOf("/"),l=t.slice(0,a+1);s.push(l+o)}else s.push(o)}catch{}return s.sort()}function ea(e){return["root","nobody"]}async function ta(e,t){let s=new Set;for(let i of cr)s.add(i);for(let i of e.state.functions.keys())s.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&s.add(i.slice(11));for(let i of Yn)s.add(i);let r=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of r.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let n=Array.from(s);return t!==null&&(n=n.filter(i=>i.startsWith(t))),n.sort()}async function sa(e,t){let r=new B().parseWordFromString(t,!1,!1);return await x(e,r)}function ra(e,t){let s=e.state.env.get("IFS")??`
|
|
59
|
+
`;if(s.length===0)return[t];let r=new Set(s.split("")),n=[],i="",o=0;for(;o<t.length;){let a=t[o];if(a==="\\"&&o+1<t.length){let l=t[o+1];i+=l,o+=2}else r.has(a)?(i.length>0&&(n.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&n.push(i),n}function wt(e,t){for(let[s,r]of t)r===void 0?e.state.env.delete(s):e.state.env.set(s,r)}function na(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let n=Ae(e,"COMPREPLY");for(let[,i]of n)t.push(i)}else{let n=e.state.env.get("COMPREPLY");n!==void 0&&t.push(n)}return t}var ia=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function dr(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")r=!0;else if(d==="-D")n=!0;else if(d==="-W"){if(f++,f>=t.length)return A(`complete: -W: option requires an argument
|
|
60
|
+
`,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return A(`complete: -F: option requires an argument
|
|
61
|
+
`,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return A(`complete: -o: option requires an argument
|
|
62
|
+
`,2);let h=t[f];if(!ia.includes(h))return A(`complete: ${h}: invalid option name
|
|
63
|
+
`,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return A(`complete: -A: option requires an argument
|
|
64
|
+
`,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return A(`complete: -C: option requires an argument
|
|
65
|
+
`,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return A(`complete: -G: option requires an argument
|
|
66
|
+
`,2)}else if(d==="-P"){if(f++,f>=t.length)return A(`complete: -P: option requires an argument
|
|
67
|
+
`,2)}else if(d==="-S"){if(f++,f>=t.length)return A(`complete: -S: option requires an argument
|
|
68
|
+
`,2)}else if(d==="-X"){if(f++,f>=t.length)return A(`complete: -X: option requires an argument
|
|
69
|
+
`,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),W("");for(let f of u)e.state.completionSpecs.delete(f);return W("")}if(s)return u.length===0?fr(e):fr(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return fr(e);if(o&&u.length===0&&!n)return A(`complete: -F: option requires a command name
|
|
70
|
+
`,2);if(n){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),o!==void 0&&(f.function=o),a!==void 0&&(f.command=a),l.length>0&&(f.options=l),c.length>0&&(f.actions=c),e.state.completionSpecs.set("__default__",f),W("")}for(let f of u){let d=Object.create(null);i!==void 0&&(d.wordlist=i),o!==void 0&&(d.function=o),a!==void 0&&(d.command=a),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return W("")}function fr(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
|
|
71
|
+
`;return _("",i,1)}return W("")}let r=[],n=t||Array.from(s.keys());for(let i of n){if(i==="__default__")continue;let o=s.get(i);if(!o){if(t)return _(r.join(`
|
|
72
|
+
`)+(r.length>0?`
|
|
73
|
+
`:""),`complete: ${i}: no completion specification
|
|
74
|
+
`,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${l}`;if(o.actions)for(let l of o.actions)a+=` -A ${l}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W '${o.wordlist}'`:a+=` -W ${o.wordlist}`),o.function!==void 0&&(a+=` -F ${o.function}`),o.isDefault&&(a+=" -D"),a+=` ${i}`,r.push(a)}return r.length===0?W(""):W(`${r.join(`
|
|
75
|
+
`)}
|
|
76
|
+
`)}var Qn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function hr(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return A(`compopt: -o: option requires an argument
|
|
77
|
+
`,2);let c=t[a];if(!Qn.includes(c))return A(`compopt: ${c}: invalid option name
|
|
78
|
+
`,2);n.push(c)}else if(l==="+o"){if(a++,a>=t.length)return A(`compopt: +o: option requires an argument
|
|
79
|
+
`,2);let c=t[a];if(!Qn.includes(c))return A(`compopt: ${c}: invalid option name
|
|
80
|
+
`,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(s){let a=e.state.completionSpecs.get("__default__")??{isDefault:!0},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",a),W("")}if(r){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",a),W("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of n)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return W("")}return A(`compopt: not currently executing completion function
|
|
81
|
+
`,1)}function pr(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new qe;return _("",`bash: continue: only meaningful in a loop
|
|
82
|
+
`,0)}if(t.length>1)throw new Te(1,"",`bash: continue: too many arguments
|
|
83
|
+
`);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r))throw new Te(128,"",`bash: continue: ${t[0]}: numeric argument required
|
|
84
|
+
`);if(r<1)throw new ae(1,"",`bash: continue: loop count out of range
|
|
85
|
+
`);s=r}throw new he(s)}function X(e,t){let s=e.state.env.get("HOME")||"/home/user";return t.split(":").map(i=>i==="~"?s:i==="~root"?"/root":i.startsWith("~/")?s+i.slice(1):i.startsWith("~root/")?`/root${i.slice(5)}`:i).join(":")}function mr(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function yr(e){let t="$'";for(let s=0;s<e.length;s++){let r=e[s],n=e.charCodeAt(s);n===7?t+="\\a":n===8?t+="\\b":n===9?t+="\\t":n===10?t+="\\n":n===11?t+="\\v":n===12?t+="\\f":n===13?t+="\\r":n===27?t+="\\e":n===39?t+="\\'":n===92?t+="\\\\":n<32||n===127?t+=`\\${n.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function vs(e){return mr(e)?yr(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function it(e){return mr(e)?yr(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function gr(e){return mr(e)?yr(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Jn(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),$e(e,t)&&(s+="n"),e.state.readonlyVars?.has(t)&&(s+="r"),e.state.uppercaseVars?.has(t)&&(s+="u"),e.state.exportedVars?.has(t)&&(s+="x"),s===""?"--":`-${s}`}function wr(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function ei(e,t){let s="",r="",n=!1;for(let i of t){let o=Jn(e,i);if(e.state.associativeArrays?.has(i)){let u=Ge(e,i);if(u.length===0)s+=`declare -A ${i}=()
|
|
86
|
+
`;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",m=wr(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${f.join(" ")})
|
|
87
|
+
`}continue}let l=ne(e,i);if(l.length>0){let u=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${it(d)}`});s+=`declare -a ${i}=(${u.join(" ")})
|
|
88
|
+
`;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
|
|
89
|
+
`;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${gr(c)}
|
|
90
|
+
`;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${o} ${i}
|
|
91
|
+
`:(r+=`bash: declare: ${i}: not found
|
|
92
|
+
`,n=!0)}}return _(s,r,n?1:0)}function ti(e,t){let{filterExport:s,filterReadonly:r,filterNameref:n,filterIndexedArray:i,filterAssocArray:o}=t,a=s||r||n||i||o,l="",c=new Set;for(let f of e.state.env.keys()){if(f.startsWith("BASH_"))continue;if(f.endsWith("__length")){let h=f.slice(0,-8);c.add(h);continue}let d=f.lastIndexOf("_");if(d>0){let h=f.slice(0,d),m=f.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(h)){c.add(h);continue}}c.add(f)}if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=Jn(e,f),h=e.state.associativeArrays?.has(f),m=ne(e,f),p=!h&&(m.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!h||i&&!p||s&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||n&&!$e(e,f)))continue;if(h){let b=Ge(e,f);if(b.length===0)l+=`declare -A ${f}=()
|
|
93
|
+
`;else{let g=b.map(O=>{let v=e.state.env.get(`${f}_${O}`)??"",$=wr(v);return`['${O}']=${$}`});l+=`declare -A ${f}=(${g.join(" ")})
|
|
94
|
+
`}continue}if(m.length>0){let b=m.map(g=>{let O=e.state.env.get(`${f}_${g}`)??"";return`[${g}]=${it(O)}`});l+=`declare -a ${f}=(${b.join(" ")})
|
|
95
|
+
`;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
|
|
96
|
+
`;continue}let y=e.state.env.get(f);y!==void 0&&(l+=`declare ${d} ${f}=${gr(y)}
|
|
97
|
+
`)}return W(l)}function si(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let r of s){let n=Ge(e,r);if(n.length===0)t+=`declare -A ${r}=()
|
|
98
|
+
`;else{let i=n.map(o=>{let a=e.state.env.get(`${r}_${o}`)??"",l=wr(a);return`['${o}']=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
|
|
99
|
+
`}}return W(t)}function ri(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let r=Array.from(s).sort();for(let n of r){let i=ne(e,n);if(i.length===0)t+=`declare -a ${n}=()
|
|
100
|
+
`;else{let o=i.map(a=>{let l=e.state.env.get(`${n}_${a}`)??"";return`[${a}]=${it(l)}`});t+=`declare -a ${n}=(${o.join(" ")})
|
|
101
|
+
`}}return W(t)}function ni(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(n)}let r=Array.from(s).sort();for(let n of r){if(e.state.associativeArrays?.has(n)||ne(e,n).length>0||e.state.env.has(`${n}__length`))continue;let a=e.state.env.get(n);a!==void 0&&(t+=`${n}=${vs(a)}
|
|
102
|
+
`)}return W(t)}function vr(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function It(e,t){return e.state.integerVars?.has(t)??!1}function br(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function oa(e,t){return e.state.lowercaseVars?.has(t)??!1}function Er(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function aa(e,t){return e.state.uppercaseVars?.has(t)??!1}function vt(e,t,s){return oa(e,t)?s.toLowerCase():aa(e,t)?s.toUpperCase():s}async function ii(e,t){try{let s=new B,r=ee(s,t),n=await U(e,r.expression);return String(n)}catch{return"0"}}function la(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],r=s.length;if(e[r]!=="[")return null;let n=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")n++;else if(e[r]==="]"&&(n--,n===0))break;if(n!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:s,indexExpr:o,value:a}}async function $r(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,h=!1,m=!1,p=!1,y=!1,b=[];for(let E=0;E<t.length;E++){let N=t[E];if(N==="-a")s=!0;else if(N==="-A")r=!0;else if(N==="-r")n=!0;else if(N==="-x")i=!0;else if(N==="-p")o=!0;else if(N==="-n")a=!0;else if(N==="+n")l=!0;else if(N==="+a")c=!0;else if(N==="+x")u=!0;else if(N==="--"){b.push(...t.slice(E+1));break}else if(N.startsWith("+")){for(let P of N.slice(1))if(P==="n")l=!0;else if(P==="a")c=!0;else if(P==="x")u=!0;else if(P!=="r"){if(P!=="i"){if(!(P==="f"||P==="F"))return _("",`bash: typeset: +${P}: invalid option
|
|
103
|
+
`,2)}}}else if(N==="-i")f=!0;else if(N==="-l")d=!0;else if(N==="-u")h=!0;else if(N==="-f")m=!0;else if(N==="-F")p=!0;else if(N==="-g")y=!0;else if(N.startsWith("-"))for(let P of N.slice(1))if(P==="a")s=!0;else if(P==="A")r=!0;else if(P==="r")n=!0;else if(P==="x")i=!0;else if(P==="p")o=!0;else if(P==="n")a=!0;else if(P==="i")f=!0;else if(P==="l")d=!0;else if(P==="u")h=!0;else if(P==="f")m=!0;else if(P==="F")p=!0;else if(P==="g")y=!0;else return _("",`bash: typeset: -${P}: invalid option
|
|
104
|
+
`,2);else b.push(N)}let O=e.state.localScopes.length>0&&!y,v=E=>{if(!O)return;let N=e.state.localScopes[e.state.localScopes.length-1];N.has(E)||N.set(E,e.state.env.get(E))},$=E=>{if(!O)return;let N=e.state.localScopes[e.state.localScopes.length-1];N.has(E)||N.set(E,e.state.env.get(E));let P=`${E}_`;for(let I of e.state.env.keys())I.startsWith(P)&&!I.includes("__")&&(N.has(I)||N.set(I,e.state.env.get(I)));let T=`${E}__length`;e.state.env.has(T)&&!N.has(T)&&N.set(T,e.state.env.get(T))},w=E=>{O&&Je(e,E)};if(p){if(b.length===0){let P=Array.from(e.state.functions.keys()).sort(),T="";for(let I of P)T+=`declare -f ${I}
|
|
105
|
+
`;return W(T)}let E=!0,N="";for(let P of b)e.state.functions.has(P)?N+=`${P}
|
|
106
|
+
`:E=!1;return _(N,"",E?0:1)}if(m){if(b.length===0){let N="",P=Array.from(e.state.functions.keys()).sort();for(let T of P)N+=`${T} ()
|
|
107
|
+
{
|
|
108
|
+
# function body
|
|
109
|
+
}
|
|
110
|
+
`;return W(N)}let E=!0;for(let N of b)e.state.functions.has(N)||(E=!1);return _("","",E?0:1)}if(o&&b.length>0)return ei(e,b);if(o&&b.length===0)return ti(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(b.length===0&&r&&!o)return si(e);if(b.length===0&&s&&!o)return ri(e);if(b.length===0&&!o)return ni(e);let S="",C=0;for(let E of b){let N=E.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(N&&!c){let k=N[1],L=N[2];if(r&&ne(e,k).length>0){S+=`bash: declare: ${k}: cannot convert indexed to associative array
|
|
111
|
+
`,C=1;continue}if((s||!r&&!s)&&e.state.associativeArrays?.has(k)){S+=`bash: declare: ${k}: cannot convert associative to indexed array
|
|
112
|
+
`,C=1;continue}if($(k),r&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(k)),Re(e,k),e.state.env.delete(k),e.state.env.delete(`${k}__length`),r&&L.includes("[")){let M=hs(L);for(let[te,V]of M){let Y=X(e,V);e.state.env.set(`${k}_${te}`,Y)}}else if(r){let M=Fe(L);for(let te=0;te<M.length;te+=2){let V=M[te],Y=te+1<M.length?X(e,M[te+1]):"";e.state.env.set(`${k}_${V}`,Y)}}else{let M=Fe(L);if(M.some(V=>/^\[[^\]]+\]=/.test(V))){let V=0;for(let Y of M){let oe=Y.match(/^\[([^\]]+)\]=(.*)$/);if(oe){let ge=oe[1],ct=oe[2],oo=X(e,ct),Ct;if(/^-?\d+$/.test(ge))Ct=Number.parseInt(ge,10);else try{let ao=new B,lo=ee(ao,ge);Ct=await U(e,lo.expression)}catch{Ct=0}e.state.env.set(`${k}_${Ct}`,oo),V=Ct+1}else{let ge=X(e,Y);e.state.env.set(`${k}_${V}`,ge),V++}}}else{for(let V=0;V<M.length;V++)e.state.env.set(`${k}_${V}`,M[V]);e.state.env.set(`${k}__length`,String(M.length))}}w(k),n&&me(e,k),i&&ke(e,k);continue}if(l){let k=E.includes("=")?E.slice(0,E.indexOf("=")):E;if(cn(e,k),!E.includes("="))continue}if(u){let k=E.includes("=")?E.slice(0,E.indexOf("=")):E;if(Yt(e,k),!E.includes("="))continue}let P=la(E);if(P){let{name:k,indexExpr:L,value:M}=P,te=se(e,k);if(te)return te;$(k);let V;try{let oe=new B,ge=ee(oe,L);V=await U(e,ge.expression)}catch{let oe=parseInt(L,10);V=Number.isNaN(oe)?0:oe}e.state.env.set(`${k}_${V}`,M);let Y=parseInt(e.state.env.get(`${k}__length`)??"0",10);V>=Y&&e.state.env.set(`${k}__length`,String(V+1)),w(k),n&&me(e,k),i&&ke(e,k);continue}let T=E.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(T&&!c){let k=T[1],L=T[2],M=se(e,k);if(M)return M;$(k);let te=Fe(L);if(e.state.associativeArrays?.has(k)){let V=hs(L);for(let[Y,oe]of V){let ge=X(e,oe);e.state.env.set(`${k}_${Y}`,ge)}}else{let V=ne(e,k),Y=0,oe=e.state.env.get(k);V.length===0&&oe!==void 0?(e.state.env.set(`${k}_0`,oe),e.state.env.delete(k),Y=1):V.length>0&&(Y=Math.max(...V)+1);for(let ct=0;ct<te.length;ct++)e.state.env.set(`${k}_${Y+ct}`,X(e,te[ct]));let ge=Y+te.length;e.state.env.set(`${k}__length`,String(ge))}w(k),n&&me(e,k),i&&ke(e,k);continue}let I=E.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(I){let k=I[1],L=X(e,I[2]),M=se(e,k);if(M)return M;v(k),f&&vr(e,k),d&&br(e,k),h&&Er(e,k);let V=ne(e,k).length>0||e.state.associativeArrays?.has(k);if(It(e,k)){let Y=e.state.env.get(k)??"0",oe=parseInt(Y,10)||0,ge=parseInt(await ii(e,L),10)||0;L=String(oe+ge),e.state.env.set(k,L)}else if(V){L=vt(e,k,L);let Y=`${k}_0`,oe=e.state.env.get(Y)??"";e.state.env.set(Y,oe+L)}else{L=vt(e,k,L);let Y=e.state.env.get(k)??"";e.state.env.set(k,Y+L)}w(k),n&&me(e,k),i&&ke(e,k),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(k));continue}if(E.includes("=")){let k=E.indexOf("="),L=E.slice(0,k),M=E.slice(k+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(L)){S+=`bash: typeset: \`${L}': not a valid identifier
|
|
113
|
+
`,C=1;continue}let te=se(e,L);if(te)return te;if(v(L),a){if(M!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(M)){S+=`bash: declare: \`${M}': invalid variable name for name reference
|
|
114
|
+
`,C=1;continue}e.state.env.set(L,M),Be(e,L),M!==""&&Zs(e,M)&&qs(e,L),w(L),n&&me(e,L),i&&ke(e,L);continue}if(f&&vr(e,L),d&&br(e,L),h&&Er(e,L),It(e,L)&&(M=await ii(e,M)),M=vt(e,L,M),$e(e,L)){let V=Ke(e,L);V&&V!==L?e.state.env.set(V,M):e.state.env.set(L,M)}else e.state.env.set(L,M);w(L),n&&me(e,L),i&&ke(e,L),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(L))}else{let k=E;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k)){S+=`bash: typeset: \`${k}': not a valid identifier
|
|
115
|
+
`,C=1;continue}if(s||r?$(k):v(k),a){Be(e,k);let M=e.state.env.get(k);M!==void 0&&M!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(M)?un(e,k):M&&Zs(e,M)&&qs(e,k),w(k),n&&me(e,k),i&&ke(e,k);continue}if(f&&vr(e,k),d&&br(e,k),h&&Er(e,k),r){if(ne(e,k).length>0){S+=`bash: declare: ${k}: cannot convert indexed to associative array
|
|
116
|
+
`,C=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(k)}let L=Array.from(e.state.env.keys()).some(M=>M.startsWith(`${k}_`)&&!M.startsWith(`${k}__length`));!e.state.env.has(k)&&!L&&(s||r?e.state.env.set(`${k}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(k))),w(k),n&&me(e,k),i&&ke(e,k)}}return _("",S,C)}async function Sr(e,t){let s=!1,r=!1,n=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")r=!0;else if(a==="-p")n=!0;else if(a==="--"){i.push(...t.slice(o+1));break}else a.startsWith("-")||i.push(a)}if(i.length===0){let o="",a=Array.from(e.state.readonlyVars||[]).sort();for(let l of a){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -r ${l}="${u}"
|
|
117
|
+
`}}return W(o)}for(let o of i){let a=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(a){let f=a[1],d=a[2],h=se(e,f);if(h)return h;let m=Fe(d);if(e.state.associativeArrays?.has(f)){let p=hs(d);for(let[y,b]of p){let g=X(e,b);e.state.env.set(`${f}_${y}`,g)}}else{let p=ne(e,f),y=0,b=e.state.env.get(f);p.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),y=1):p.length>0&&(y=Math.max(...p)+1);for(let O=0;O<m.length;O++)e.state.env.set(`${f}_${y+O}`,X(e,m[O]));let g=y+m.length;e.state.env.set(`${f}__length`,String(g))}me(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=X(e,l[2]),h=se(e,f);if(h)return h;let m=e.state.env.get(f)??"";e.state.env.set(f,m+d),me(e,f);continue}let c=jn(o);if(c.value===void 0&&!c.isArray){me(e,c.name);continue}let u=await Un(e,c,{makeReadonly:!0});if(u)return u}return z}function Pr(e){return e.state.directoryStack??=[],e.state.directoryStack}function bt(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function ca(e){let t=e.split("/").filter(r=>r&&r!=="."),s=[];for(let r of t)r===".."?s.pop():s.push(r);return`/${s.join("/")}`}async function Ar(e,t){let s=Pr(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return A(`bash: pushd: too many arguments
|
|
118
|
+
`,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return A(`bash: pushd: ${l}: invalid option
|
|
119
|
+
`,2);if(r!==void 0)return A(`bash: pushd: too many arguments
|
|
120
|
+
`,2);r=l}}if(r===void 0){if(s.length<1)return A(`bash: pushd: no other directory
|
|
121
|
+
`,1);let a=s.shift();if(!a)return A(`bash: pushd: no other directory
|
|
122
|
+
`,1);let l=e.state.cwd;s.unshift(l),e.state.previousDir=l,e.state.cwd=a,e.state.env.set("PWD",a),e.state.env.set("OLDPWD",l);let c=e.state.env.get("HOME")||"",u=`${[a,...s].map(f=>bt(f,c)).join(" ")}
|
|
123
|
+
`;return W(u)}let n;if(r.startsWith("/"))n=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),n=`/${a.join("/")}`}else r==="."?n=e.state.cwd:r.startsWith("~")?n=(e.state.env.get("HOME")||"/")+r.slice(1):n=`${e.state.cwd}/${r}`;n=ca(n);try{if(!(await e.fs.stat(n)).isDirectory)return A(`bash: pushd: ${r}: Not a directory
|
|
124
|
+
`,1)}catch{return A(`bash: pushd: ${r}: No such file or directory
|
|
125
|
+
`,1)}s.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=n,e.state.env.set("PWD",n),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[n,...s].map(a=>bt(a,i)).join(" ")}
|
|
126
|
+
`;return W(o)}function kr(e,t){let s=Pr(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?A(`bash: popd: ${o}: invalid option
|
|
127
|
+
`,2):A(`bash: popd: too many arguments
|
|
128
|
+
`,2);if(s.length===0)return A(`bash: popd: directory stack empty
|
|
129
|
+
`,1);let r=s.shift();if(!r)return A(`bash: popd: directory stack empty
|
|
130
|
+
`,1);e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let n=e.state.env.get("HOME")||"",i=`${[r,...s].map(o=>bt(o,n)).join(" ")}
|
|
131
|
+
`;return W(i)}function Cr(e,t){let s=Pr(e),r=!1,n=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")n=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return A(`bash: dirs: -${f}: invalid option
|
|
132
|
+
`,2);else return A(`bash: dirs: too many arguments
|
|
133
|
+
`,1);if(r)return e.state.directoryStack=[],z;let a=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=n?u:bt(u,l);return` ${f} ${d}`}).join(`
|
|
134
|
+
`),c+=`
|
|
135
|
+
`):i?c=a.map(u=>n?u:bt(u,l)).join(`
|
|
136
|
+
`)+`
|
|
137
|
+
`:c=a.map(u=>n?u:bt(u,l)).join(" ")+`
|
|
138
|
+
`,W(c)}async function bs(e,t,s){let r=t;if(r.length>0){let a=r[0];if(a==="--")r=r.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return A(`bash: eval: ${a}: invalid option
|
|
139
|
+
eval: usage: eval [arg ...]
|
|
140
|
+
`,2)}if(r.length===0)return z;let n=r.join(" ");if(n.trim()==="")return z;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=pe(n);return await e.executeScript(a)}catch(a){if(a instanceof ae||a instanceof he||a instanceof ue||a instanceof G)throw a;if(a.name==="ParseException")return A(`bash: eval: ${a.message}
|
|
141
|
+
`);if(a.message?.startsWith("Unsupported shell syntax:"))return A(`bash: eval: ${a.message}
|
|
142
|
+
`,2);throw a}finally{e.state.groupStdin=i}}function _r(e,t){let s,r="";if(t.length===0)s=e.state.lastExitCode;else{let n=t[0],i=Number.parseInt(n,10);n===""||Number.isNaN(i)||!/^-?\d+$/.test(n)?(r=`bash: exit: ${n}: numeric argument required
|
|
143
|
+
`,s=2):t.length>1?(r=`bash: exit: too many arguments
|
|
144
|
+
`,s=1):s=(i%256+256)%256}throw new G(s,"",r)}function Nr(e,t){let s=!1,r=[];for(let o of t)o==="-n"?s=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!s){let o="",a=e.state.exportedVars??new Set,l=Array.from(a).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -x ${c}="${f}"
|
|
145
|
+
`}}return W(o)}if(s){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=X(e,o.slice(c+1)),e.state.env.set(a,l)}else a=o;Yt(e,a)}return z}let n="",i=0;for(let o of r){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=X(e,u[2]),c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=X(e,o.slice(f+1))}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){n+=`bash: export: \`${o}': not a valid identifier
|
|
146
|
+
`,i=1;continue}if(l!==void 0)if(c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");ke(e,a)}return _("",n,i)}function Es(e,t){if(t.length<2)return A(`bash: getopts: usage: getopts optstring name [arg ...]
|
|
147
|
+
`);let s=t[0],r=t[1],n=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=s.startsWith(":"),o=i?s.slice(1):s,a;if(t.length>2)a=t.slice(2);else{let p=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let y=1;y<=p;y++)a.push(e.state.env.get(String(y))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let c=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),l>a.length)return n||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};let f=c===0?1:c,d=u[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),Es(e,t);let h=o.indexOf(d);if(h===-1){let p="";return i?e.state.env.set("OPTARG",d):p=`bash: illegal option -- ${d}
|
|
148
|
+
`,n||e.state.env.set(r,"?"),f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0")),{exitCode:n?2:0,stdout:"",stderr:p}}if(h+1<o.length&&o[h+1]===":")if(f+1<u.length)e.state.env.set("OPTARG",u.slice(f+1)),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(l>=a.length){let p="";return i?(e.state.env.set("OPTARG",d),n||e.state.env.set(r,":")):(p=`bash: option requires an argument -- ${d}
|
|
149
|
+
`,n||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:0,stdout:"",stderr:p}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return n||e.state.env.set(r,d),{exitCode:n?2:0,stdout:"",stderr:""}}async function Or(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,r=!1,n=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let m=t[c];if(m==="--"){c++,l.push(...t.slice(c));break}if(m==="-r")s=!0,c++;else if(m==="-d")r=!0,c++;else if(m==="-l")n=!0,c++;else if(m==="-t")o=!0,c++;else if(m==="-p"){if(i=!0,c++,c>=t.length)return A(`bash: hash: -p: option requires an argument
|
|
150
|
+
`,1);a=t[c],c++}else if(m.startsWith("-")&&m.length>1){for(let p of m.slice(1))if(p==="r")s=!0;else if(p==="d")r=!0;else if(p==="l")n=!0;else if(p==="t")o=!0;else return p==="p"?A(`bash: hash: -p: option requires an argument
|
|
151
|
+
`,1):A(`bash: hash: -${p}: invalid option
|
|
152
|
+
`,1);c++}else l.push(m),c++}if(s)return e.state.hashTable.clear(),z;if(r){if(l.length===0)return A(`bash: hash: -d: option requires an argument
|
|
153
|
+
`,1);let m=!1,p="";for(let y of l)e.state.hashTable.has(y)?e.state.hashTable.delete(y):(p+=`bash: hash: ${y}: not found
|
|
154
|
+
`,m=!0);return m?A(p,1):z}if(o){if(l.length===0)return A(`bash: hash: -t: option requires an argument
|
|
155
|
+
`,1);let m="",p=!1,y="";for(let b of l){let g=e.state.hashTable.get(b);g?l.length>1?m+=`${b} ${g}
|
|
156
|
+
`:m+=`${g}
|
|
157
|
+
`:(y+=`bash: hash: ${b}: not found
|
|
158
|
+
`,p=!0)}return p?{exitCode:1,stdout:m,stderr:y}:W(m)}if(i){if(l.length===0)return A(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
|
|
159
|
+
`,1);let m=l[0];return e.state.hashTable.set(m,a),z}if(l.length===0){if(e.state.hashTable.size===0)return W(`hash: hash table empty
|
|
160
|
+
`);let m="";if(n)for(let[p,y]of e.state.hashTable)m+=`builtin hash -p ${y} ${p}
|
|
161
|
+
`;else{m=`hits command
|
|
162
|
+
`;for(let[,p]of e.state.hashTable)m+=` 1 ${p}
|
|
163
|
+
`}return W(m)}let u=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let m of l){if(m.includes("/")){f+=`bash: hash: ${m}: cannot use / in name
|
|
164
|
+
`,u=!0;continue}let p=!1;for(let y of h){if(!y)continue;let b=`${y}/${m}`;if(await e.fs.exists(b)){e.state.hashTable.set(m,b),p=!0;break}}p||(f+=`bash: hash: ${m}: not found
|
|
165
|
+
`,u=!0)}return u?A(f,1):z}var oi=new Map([[":",[": [arguments]",`Null command.
|
|
166
|
+
No effect; the command does nothing.
|
|
167
|
+
Exit Status:
|
|
168
|
+
Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
|
|
169
|
+
Read and execute commands from FILENAME in the current shell.
|
|
170
|
+
The entries in $PATH are used to find the directory containing FILENAME.
|
|
171
|
+
Exit Status:
|
|
172
|
+
Returns the status of the last command executed in FILENAME.`]],["[",["[ arg... ]",`Evaluate conditional expression.
|
|
173
|
+
This is a synonym for the "test" builtin, but the last argument must
|
|
174
|
+
be a literal \`]', to match the opening \`['.`]],["alias",["alias [-p] [name[=value] ... ]",`Define or display aliases.
|
|
175
|
+
Without arguments, \`alias' prints the list of aliases in the reusable
|
|
176
|
+
form \`alias NAME=VALUE' on standard output.
|
|
177
|
+
Exit Status:
|
|
178
|
+
alias returns true unless a NAME is supplied for which no alias has been
|
|
179
|
+
defined.`]],["bg",["bg [job_spec ...]",`Move jobs to the background.
|
|
180
|
+
Place the jobs identified by each JOB_SPEC in the background, as if they
|
|
181
|
+
had been started with \`&'.`]],["break",["break [n]",`Exit for, while, or until loops.
|
|
182
|
+
Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing
|
|
183
|
+
loops.
|
|
184
|
+
Exit Status:
|
|
185
|
+
The exit status is 0 unless N is not greater than or equal to 1.`]],["builtin",["builtin [shell-builtin [arg ...]]",`Execute shell builtins.
|
|
186
|
+
Execute SHELL-BUILTIN with arguments ARGs without performing command
|
|
187
|
+
lookup. This is useful when you wish to reimplement a shell builtin
|
|
188
|
+
as a shell function, but need to execute the builtin within the function.
|
|
189
|
+
Exit Status:
|
|
190
|
+
Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is
|
|
191
|
+
not a shell builtin.`]],["caller",["caller [expr]",`Return the context of the current subroutine call.
|
|
192
|
+
Without EXPR, returns "$line $filename". With EXPR, returns
|
|
193
|
+
"$line $subroutine $filename"; this extra information can be used to
|
|
194
|
+
provide a stack trace.
|
|
195
|
+
Exit Status:
|
|
196
|
+
Returns 0 unless the shell is not executing a subroutine call or
|
|
197
|
+
EXPR is invalid.`]],["cd",["cd [-L|-P] [dir]",`Change the shell working directory.
|
|
198
|
+
Change the current directory to DIR. The default DIR is the value of the
|
|
199
|
+
HOME shell variable.
|
|
200
|
+
|
|
201
|
+
The variable CDPATH defines the search path for the directory containing
|
|
202
|
+
DIR. Alternative directory names in CDPATH are separated by a colon (:).
|
|
203
|
+
A null directory name is the same as the current directory. If DIR begins
|
|
204
|
+
with a slash (/), then CDPATH is not used.
|
|
205
|
+
|
|
206
|
+
If the directory is not found, and the shell option \`cdable_vars' is set,
|
|
207
|
+
the word is assumed to be a variable name. If that variable has a value,
|
|
208
|
+
its value is used for DIR.
|
|
209
|
+
|
|
210
|
+
Options:
|
|
211
|
+
-L force symbolic links to be followed
|
|
212
|
+
-P use the physical directory structure without following symbolic
|
|
213
|
+
links
|
|
214
|
+
|
|
215
|
+
The default is to follow symbolic links, as if \`-L' were specified.
|
|
216
|
+
|
|
217
|
+
Exit Status:
|
|
218
|
+
Returns 0 if the directory is changed; non-zero otherwise.`]],["command",["command [-pVv] command [arg ...]",`Execute a simple command or display information about commands.
|
|
219
|
+
Runs COMMAND with ARGS suppressing shell function lookup, or display
|
|
220
|
+
information about the specified COMMANDs.
|
|
221
|
+
|
|
222
|
+
Options:
|
|
223
|
+
-p use a default value for PATH that is guaranteed to find all of
|
|
224
|
+
the standard utilities
|
|
225
|
+
-v print a description of COMMAND similar to the \`type' builtin
|
|
226
|
+
-V print a more verbose description of each COMMAND
|
|
227
|
+
|
|
228
|
+
Exit Status:
|
|
229
|
+
Returns exit status of COMMAND, or failure if COMMAND is not found.`]],["compgen",["compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]",`Display possible completions depending on the options.
|
|
230
|
+
Intended to be used from within a shell function generating possible
|
|
231
|
+
completions. If the optional WORD argument is supplied, matches against
|
|
232
|
+
WORD are generated.
|
|
233
|
+
Exit Status:
|
|
234
|
+
Returns success unless an invalid option is supplied or an error occurs.`]],["complete",["complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]",`Specify how arguments are to be completed.
|
|
235
|
+
For each NAME, specify how arguments are to be completed.
|
|
236
|
+
Exit Status:
|
|
237
|
+
Returns success unless an invalid option is supplied or an error occurs.`]],["continue",["continue [n]",`Resume for, while, or until loops.
|
|
238
|
+
Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.
|
|
239
|
+
If N is specified, resumes the Nth enclosing loop.
|
|
240
|
+
Exit Status:
|
|
241
|
+
The exit status is 0 unless N is not greater than or equal to 1.`]],["declare",["declare [-aAfFgilnrtux] [-p] [name[=value] ...]",`Set variable values and attributes.
|
|
242
|
+
Declare variables and give them attributes. If no NAMEs are given,
|
|
243
|
+
display the attributes and values of all variables.
|
|
244
|
+
|
|
245
|
+
Options:
|
|
246
|
+
-a to make NAMEs indexed arrays (if supported)
|
|
247
|
+
-A to make NAMEs associative arrays (if supported)
|
|
248
|
+
-i to make NAMEs have the \`integer' attribute
|
|
249
|
+
-l to convert the value of each NAME to lower case on assignment
|
|
250
|
+
-n make NAME a reference to the variable named by its value
|
|
251
|
+
-r to make NAMEs readonly
|
|
252
|
+
-t to make NAMEs have the \`trace' attribute
|
|
253
|
+
-u to convert the value of each NAME to upper case on assignment
|
|
254
|
+
-x to make NAMEs export
|
|
255
|
+
|
|
256
|
+
Exit Status:
|
|
257
|
+
Returns success unless an invalid option is supplied or a variable
|
|
258
|
+
assignment error occurs.`]],["dirs",["dirs [-clpv] [+N] [-N]",`Display directory stack.
|
|
259
|
+
Display the list of currently remembered directories. Directories
|
|
260
|
+
find their way onto the list with the \`pushd' command; you can get
|
|
261
|
+
back up through the list with the \`popd' command.
|
|
262
|
+
Exit Status:
|
|
263
|
+
Returns success unless an invalid option is supplied or an error occurs.`]],["disown",["disown [-h] [-ar] [jobspec ...]",`Remove jobs from current shell.
|
|
264
|
+
Without any JOBSPECs, remove the current job.`]],["echo",["echo [-neE] [arg ...]",`Write arguments to the standard output.
|
|
265
|
+
Display the ARGs, separated by a single space character and followed by a
|
|
266
|
+
newline, on the standard output.
|
|
267
|
+
|
|
268
|
+
Options:
|
|
269
|
+
-n do not append a newline
|
|
270
|
+
-e enable interpretation of the following backslash escapes
|
|
271
|
+
-E explicitly suppress interpretation of backslash escapes
|
|
272
|
+
|
|
273
|
+
Exit Status:
|
|
274
|
+
Returns success unless a write error occurs.`]],["enable",["enable [-a] [-dnps] [-f filename] [name ...]",`Enable and disable shell builtins.
|
|
275
|
+
Enables and disables builtin shell commands.
|
|
276
|
+
Exit Status:
|
|
277
|
+
Returns success unless NAME is not a shell builtin or an error occurs.`]],["eval",["eval [arg ...]",`Execute arguments as a shell command.
|
|
278
|
+
Combine ARGs into a single string, use the result as input to the shell,
|
|
279
|
+
and execute the resulting commands.
|
|
280
|
+
Exit Status:
|
|
281
|
+
Returns exit status of command or success if command is null.`]],["exec",["exec [-cl] [-a name] [command [arguments ...]] [redirection ...]",`Replace the shell with the given command.
|
|
282
|
+
Execute COMMAND, replacing this shell with the specified program.
|
|
283
|
+
ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,
|
|
284
|
+
any redirections take effect in the current shell.
|
|
285
|
+
Exit Status:
|
|
286
|
+
Returns success unless COMMAND is not found or a redirection error occurs.`]],["exit",["exit [n]",`Exit the shell.
|
|
287
|
+
Exits the shell with a status of N. If N is omitted, the exit status
|
|
288
|
+
is that of the last command executed.`]],["export",["export [-fn] [name[=value] ...] or export -p",`Set export attribute for shell variables.
|
|
289
|
+
Marks each NAME for automatic export to the environment of subsequently
|
|
290
|
+
executed commands. If VALUE is supplied, assign VALUE before exporting.
|
|
291
|
+
|
|
292
|
+
Options:
|
|
293
|
+
-f refer to shell functions
|
|
294
|
+
-n remove the export property from each NAME
|
|
295
|
+
-p display a list of all exported variables and functions
|
|
296
|
+
|
|
297
|
+
Exit Status:
|
|
298
|
+
Returns success unless an invalid option is given or NAME is invalid.`]],["false",["false",`Return an unsuccessful result.
|
|
299
|
+
Exit Status:
|
|
300
|
+
Always fails.`]],["fc",["fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]",`Display or execute commands from the history list.
|
|
301
|
+
Exit Status:
|
|
302
|
+
Returns success or status of executed command.`]],["fg",["fg [job_spec]",`Move job to the foreground.
|
|
303
|
+
Place the job identified by JOB_SPEC in the foreground, making it the
|
|
304
|
+
current job.`]],["getopts",["getopts optstring name [arg]",`Parse option arguments.
|
|
305
|
+
Getopts is used by shell procedures to parse positional parameters
|
|
306
|
+
as options.
|
|
307
|
+
|
|
308
|
+
OPTSTRING contains the option letters to be recognized; if a letter
|
|
309
|
+
is followed by a colon, the option is expected to have an argument,
|
|
310
|
+
which should be separated from it by white space.
|
|
311
|
+
Exit Status:
|
|
312
|
+
Returns success if an option is found; fails if the end of options is
|
|
313
|
+
encountered or an error occurs.`]],["hash",["hash [-lr] [-p pathname] [-dt] [name ...]",`Remember or display program locations.
|
|
314
|
+
Determine and remember the full pathname of each command NAME.
|
|
315
|
+
Exit Status:
|
|
316
|
+
Returns success unless NAME is not found or an invalid option is given.`]],["help",["help [-s] [pattern ...]",`Display information about builtin commands.
|
|
317
|
+
Displays brief summaries of builtin commands. If PATTERN is
|
|
318
|
+
specified, gives detailed help on all commands matching PATTERN,
|
|
319
|
+
otherwise the list of help topics is printed.
|
|
320
|
+
|
|
321
|
+
Options:
|
|
322
|
+
-s output only a short usage synopsis for each topic matching
|
|
323
|
+
PATTERN
|
|
324
|
+
|
|
325
|
+
Exit Status:
|
|
326
|
+
Returns success unless PATTERN is not found.`]],["history",["history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]",`Display or manipulate the history list.
|
|
327
|
+
Display the history list with line numbers, prefixing each modified
|
|
328
|
+
entry with a \`*'.
|
|
329
|
+
Exit Status:
|
|
330
|
+
Returns success unless an invalid option is given or an error occurs.`]],["jobs",["jobs [-lnprs] [jobspec ...] or jobs -x command [args]",`Display status of jobs.
|
|
331
|
+
Lists the active jobs.
|
|
332
|
+
Exit Status:
|
|
333
|
+
Returns success unless an invalid option is given or an error occurs.`]],["kill",["kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]",`Send a signal to a job.
|
|
334
|
+
Send the processes identified by PID or JOBSPEC the signal named by
|
|
335
|
+
SIGSPEC or SIGNUM.
|
|
336
|
+
Exit Status:
|
|
337
|
+
Returns success unless an invalid option is given or an error occurs.`]],["let",["let arg [arg ...]",`Evaluate arithmetic expressions.
|
|
338
|
+
Evaluate each ARG as an arithmetic expression. Evaluation is done in
|
|
339
|
+
fixed-width integers with no check for overflow, though division by 0
|
|
340
|
+
is trapped and flagged as an error.
|
|
341
|
+
Exit Status:
|
|
342
|
+
If the last ARG evaluates to 0, let returns 1; 0 is returned otherwise.`]],["local",["local [option] name[=value] ...",`Define local variables.
|
|
343
|
+
Create a local variable called NAME, and give it VALUE. OPTION can
|
|
344
|
+
be any option accepted by \`declare'.
|
|
345
|
+
|
|
346
|
+
Local can only be used within a function; it makes the variable NAME
|
|
347
|
+
have a visible scope restricted to that function and its children.
|
|
348
|
+
Exit Status:
|
|
349
|
+
Returns success unless an invalid option is supplied, a variable
|
|
350
|
+
assignment error occurs, or the shell is not executing a function.`]],["logout",["logout [n]",`Exit a login shell.
|
|
351
|
+
Exits a login shell with exit status N. Returns an error if not executed
|
|
352
|
+
in a login shell.`]],["mapfile",["mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]",`Read lines from the standard input into an indexed array variable.
|
|
353
|
+
Read lines from the standard input into the indexed array variable ARRAY,
|
|
354
|
+
or from file descriptor FD if the -u option is supplied.
|
|
355
|
+
|
|
356
|
+
Options:
|
|
357
|
+
-d delim Use DELIM to terminate lines, instead of newline
|
|
358
|
+
-n count Copy at most COUNT lines
|
|
359
|
+
-O origin Begin assigning to ARRAY at index ORIGIN
|
|
360
|
+
-s count Discard the first COUNT lines read
|
|
361
|
+
-t Remove a trailing DELIM from each line read (default newline)
|
|
362
|
+
-u fd Read lines from file descriptor FD instead of standard input
|
|
363
|
+
|
|
364
|
+
Exit Status:
|
|
365
|
+
Returns success unless an invalid option is given or ARRAY is readonly.`]],["popd",["popd [-n] [+N | -N]",`Remove directories from stack.
|
|
366
|
+
Removes entries from the directory stack.
|
|
367
|
+
Exit Status:
|
|
368
|
+
Returns success unless an invalid argument is supplied or the directory
|
|
369
|
+
change fails.`]],["printf",["printf [-v var] format [arguments]",`Formats and prints ARGUMENTS under control of the FORMAT.
|
|
370
|
+
|
|
371
|
+
Options:
|
|
372
|
+
-v var assign the output to shell variable VAR rather than
|
|
373
|
+
display it on the standard output
|
|
374
|
+
|
|
375
|
+
FORMAT is a character string which contains three types of objects: plain
|
|
376
|
+
characters, which are simply copied to standard output; character escape
|
|
377
|
+
sequences, which are converted and copied to the standard output; and
|
|
378
|
+
format specifications, each of which causes printing of the next successive
|
|
379
|
+
argument.
|
|
380
|
+
Exit Status:
|
|
381
|
+
Returns success unless an invalid option is given or a write or assignment
|
|
382
|
+
error occurs.`]],["pushd",["pushd [-n] [+N | -N | dir]",`Add directories to stack.
|
|
383
|
+
Adds a directory to the top of the directory stack, or rotates
|
|
384
|
+
the stack, making the new top of the stack the current working
|
|
385
|
+
directory.
|
|
386
|
+
Exit Status:
|
|
387
|
+
Returns success unless an invalid argument is supplied or the directory
|
|
388
|
+
change fails.`]],["pwd",["pwd [-LP]",`Print the name of the current working directory.
|
|
389
|
+
|
|
390
|
+
Options:
|
|
391
|
+
-L print the value of $PWD if it names the current working
|
|
392
|
+
directory
|
|
393
|
+
-P print the physical directory, without any symbolic links
|
|
394
|
+
|
|
395
|
+
By default, \`pwd' behaves as if \`-L' were specified.
|
|
396
|
+
Exit Status:
|
|
397
|
+
Returns 0 unless an invalid option is given or the current directory
|
|
398
|
+
cannot be read.`]],["read",["read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]",`Read a line from the standard input and split it into fields.
|
|
399
|
+
Reads a single line from the standard input, or from file descriptor FD
|
|
400
|
+
if the -u option is supplied. The line is split into fields as with word
|
|
401
|
+
splitting, and the first word is assigned to the first NAME, the second
|
|
402
|
+
word to the second NAME, and so on, with any leftover words assigned to
|
|
403
|
+
the last NAME.
|
|
404
|
+
Exit Status:
|
|
405
|
+
The return code is zero, unless end-of-file is encountered, read times out,
|
|
406
|
+
or an invalid file descriptor is supplied as the argument to -u.`]],["readarray",["readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]","Read lines from a file into an array variable.\n A synonym for `mapfile'."]],["readonly",["readonly [-aAf] [name[=value] ...] or readonly -p",`Mark shell variables as unchangeable.
|
|
407
|
+
Mark each NAME as read-only; the values of these NAMEs may not be
|
|
408
|
+
changed by subsequent assignment.
|
|
409
|
+
Exit Status:
|
|
410
|
+
Returns success unless an invalid option is given or NAME is invalid.`]],["return",["return [n]",`Return from a shell function.
|
|
411
|
+
Causes a function or sourced script to exit with the return value
|
|
412
|
+
specified by N. If N is omitted, the return status is that of the
|
|
413
|
+
last command executed within the function or script.
|
|
414
|
+
Exit Status:
|
|
415
|
+
Returns N, or failure if the shell is not executing a function or script.`]],["set",["set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]",`Set or unset values of shell options and positional parameters.
|
|
416
|
+
Change the value of shell attributes and positional parameters, or
|
|
417
|
+
display the names and values of shell variables.
|
|
418
|
+
|
|
419
|
+
Options:
|
|
420
|
+
-e Exit immediately if a command exits with a non-zero status.
|
|
421
|
+
-u Treat unset variables as an error when substituting.
|
|
422
|
+
-x Print commands and their arguments as they are executed.
|
|
423
|
+
-o option-name
|
|
424
|
+
Set the variable corresponding to option-name
|
|
425
|
+
|
|
426
|
+
Exit Status:
|
|
427
|
+
Returns success unless an invalid option is given.`]],["shift",["shift [n]",`Shift positional parameters.
|
|
428
|
+
Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is
|
|
429
|
+
not given, it is assumed to be 1.
|
|
430
|
+
Exit Status:
|
|
431
|
+
Returns success unless N is negative or greater than $#.`]],["shopt",["shopt [-pqsu] [-o] [optname ...]",`Set and unset shell options.
|
|
432
|
+
Change the setting of each shell option OPTNAME. Without any option
|
|
433
|
+
arguments, list each supplied OPTNAME, or all shell options if no
|
|
434
|
+
OPTNAMEs are given, with an indication of whether or not each is set.
|
|
435
|
+
|
|
436
|
+
Options:
|
|
437
|
+
-o restrict OPTNAMEs to those defined for use with \`set -o'
|
|
438
|
+
-p print each shell option with an indication of its status
|
|
439
|
+
-q suppress output
|
|
440
|
+
-s enable (set) each OPTNAME
|
|
441
|
+
-u disable (unset) each OPTNAME
|
|
442
|
+
|
|
443
|
+
Exit Status:
|
|
444
|
+
Returns success if OPTNAME is enabled; fails if an invalid option is
|
|
445
|
+
given or OPTNAME is disabled.`]],["source",["source filename [arguments]",`Execute commands from a file in the current shell.
|
|
446
|
+
Read and execute commands from FILENAME in the current shell.
|
|
447
|
+
The entries in $PATH are used to find the directory containing FILENAME.
|
|
448
|
+
Exit Status:
|
|
449
|
+
Returns the status of the last command executed in FILENAME.`]],["suspend",["suspend [-f]",`Suspend shell execution.
|
|
450
|
+
Suspend the execution of this shell until it receives a SIGCONT signal.`]],["test",["test [expr]",`Evaluate conditional expression.
|
|
451
|
+
Exits with a status of 0 (true) or 1 (false) depending on
|
|
452
|
+
the evaluation of EXPR. Expressions may be unary or binary.
|
|
453
|
+
Exit Status:
|
|
454
|
+
Returns success if EXPR evaluates to true; fails if EXPR evaluates to
|
|
455
|
+
false or an invalid argument is given.`]],["times",["times",`Display process times.
|
|
456
|
+
Prints the accumulated user and system times for the shell and all of its
|
|
457
|
+
child processes.
|
|
458
|
+
Exit Status:
|
|
459
|
+
Always succeeds.`]],["trap",["trap [-lp] [[arg] signal_spec ...]",`Trap signals and other events.
|
|
460
|
+
Defines and activates handlers to be run when the shell receives signals
|
|
461
|
+
or other conditions.
|
|
462
|
+
Exit Status:
|
|
463
|
+
Returns success unless a SIGSPEC is invalid or an invalid option is given.`]],["true",["true",`Return a successful result.
|
|
464
|
+
Exit Status:
|
|
465
|
+
Always succeeds.`]],["type",["type [-afptP] name [name ...]",`Display information about command type.
|
|
466
|
+
For each NAME, indicate how it would be interpreted if used as a
|
|
467
|
+
command name.
|
|
468
|
+
|
|
469
|
+
Options:
|
|
470
|
+
-a display all locations containing an executable named NAME
|
|
471
|
+
-f suppress shell function lookup
|
|
472
|
+
-P force a PATH search for each NAME, even if it is an alias,
|
|
473
|
+
builtin, or function, and returns the name of the disk file
|
|
474
|
+
that would be executed
|
|
475
|
+
-p returns either the name of the disk file that would be executed,
|
|
476
|
+
or nothing if \`type -t NAME' would not return \`file'
|
|
477
|
+
-t output a single word which is one of \`alias', \`keyword',
|
|
478
|
+
\`function', \`builtin', \`file' or \`', if NAME is an alias,
|
|
479
|
+
shell reserved word, shell function, shell builtin, disk file,
|
|
480
|
+
or not found, respectively
|
|
481
|
+
|
|
482
|
+
Exit Status:
|
|
483
|
+
Returns success if all of the NAMEs are found; fails if any are not found.`]],["typeset",["typeset [-aAfFgilnrtux] [-p] name[=value] ...","Set variable values and attributes.\n A synonym for `declare'."]],["ulimit",["ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]",`Modify shell resource limits.
|
|
484
|
+
Provides control over the resources available to the shell and processes
|
|
485
|
+
it creates, on systems that allow such control.
|
|
486
|
+
Exit Status:
|
|
487
|
+
Returns success unless an invalid option is supplied or an error occurs.`]],["umask",["umask [-p] [-S] [mode]",`Display or set file mode mask.
|
|
488
|
+
Sets the user file-creation mask to MODE. If MODE is omitted, prints
|
|
489
|
+
the current value of the mask.
|
|
490
|
+
Exit Status:
|
|
491
|
+
Returns success unless MODE is invalid or an invalid option is given.`]],["unalias",["unalias [-a] name [name ...]",`Remove each NAME from the list of defined aliases.
|
|
492
|
+
Exit Status:
|
|
493
|
+
Returns success unless a NAME is not an existing alias.`]],["unset",["unset [-f] [-v] [-n] [name ...]",`Unset values and attributes of shell variables and functions.
|
|
494
|
+
For each NAME, remove the corresponding variable or function.
|
|
495
|
+
|
|
496
|
+
Options:
|
|
497
|
+
-f treat each NAME as a shell function
|
|
498
|
+
-v treat each NAME as a shell variable
|
|
499
|
+
-n treat each NAME as a name reference and unset the variable itself
|
|
500
|
+
rather than the variable it references
|
|
501
|
+
|
|
502
|
+
Without options, unset first tries to unset a variable, and if that fails,
|
|
503
|
+
tries to unset a function.
|
|
504
|
+
Exit Status:
|
|
505
|
+
Returns success unless an invalid option is given or a NAME is read-only.`]],["wait",["wait [-fn] [id ...]",`Wait for job completion and return exit status.
|
|
506
|
+
Waits for each process identified by an ID, which may be a process ID or a
|
|
507
|
+
job specification, and reports its termination status.
|
|
508
|
+
Exit Status:
|
|
509
|
+
Returns the status of the last ID; fails if ID is invalid or an invalid
|
|
510
|
+
option is given.`]]]),ai=[...oi.keys()].sort();function Tr(e,t){let s=!1,r=[],n=0;for(;n<t.length;){let l=t[n];if(l==="--"){for(n++;n<t.length;)r.push(t[n]),n++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")s=!0;else return A(`bash: help: -${u}: invalid option
|
|
511
|
+
`,2)}n++}else r.push(l),n++}if(r.length===0)return fa();let i="",o=!1,a="";for(let l of r){let c=ua(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
|
|
512
|
+
`,o=!0;continue}for(let u of c){let f=oi.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
|
|
513
|
+
`:i+=`${u}: ${d}
|
|
514
|
+
${h}
|
|
515
|
+
`}}return{exitCode:o?1:0,stdout:i,stderr:a}}function ua(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=Ot(`^${t}$`);return ai.filter(r=>s.test(r))}function fa(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,s=ai.slice(),r=Math.ceil(s.length/2);for(let n=0;n<r;n++){let i=s[n]||"",o=s[n+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return W(`${e.join(`
|
|
516
|
+
`)}
|
|
517
|
+
`)}function da(e){let t=[],s="",r=0;for(let n of e){for(let i of n)i==="("?r++:i===")"&&r--;s?s+=` ${n}`:s=n,r===0&&(t.push(s),s="")}return s&&t.push(s),t}async function xr(e,t){if(t.length===0)return A(`bash: let: expression expected
|
|
518
|
+
`);let s=da(t),r=0;for(let n of s)try{let o=pe(`(( ${n} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await U(e,a.expression.expression))}}catch(i){return A(`bash: let: ${n}: ${i.message}
|
|
519
|
+
`)}return _("","",r===0?1:0)}async function Dr(e,t){if(e.state.localScopes.length===0)return A(`bash: local: can only be used in a function
|
|
520
|
+
`);let s=e.state.localScopes[e.state.localScopes.length-1],r="",n=0,i=!1,o=!1,a=!1,l=[];for(let c of t)if(c==="-n")i=!0;else if(c==="-a")o=!0;else if(c==="-p")a=!0;else if(c.startsWith("-")&&!c.includes("="))for(let u of c.slice(1))u==="n"?i=!0:u==="a"?o=!0:u==="p"&&(a=!0);else l.push(c);if(l.length===0){let c="",u=Array.from(s.keys()).filter(f=>!f.includes("_")||!f.match(/_\d+$/)).filter(f=>!f.includes("__length")).sort();for(let f of u){let d=e.state.env.get(f);d!==void 0&&(c+=`${f}=${d}
|
|
521
|
+
`)}return _(c,"",0)}for(let c of l){let u,f,d=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){u=d[1];let b=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
|
|
522
|
+
`,n=1;continue}if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let v=`${u}_`;for(let $ of e.state.env.keys())$.startsWith(v)&&!$.includes("__")&&(s.has($)||s.set($,e.state.env.get($)))}let g=`${u}_`;for(let v of e.state.env.keys())v.startsWith(g)&&!v.includes("__")&&e.state.env.delete(v);let O=Fe(b);for(let v=0;v<O.length;v++)e.state.env.set(`${u}_${v}`,O[v]);e.state.env.set(`${u}__length`,String(O.length)),Je(e,u),i&&Be(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){u=h[1];let b=h[2];if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let S=`${u}_`;for(let E of e.state.env.keys())E.startsWith(S)&&!E.includes("__")&&(s.has(E)||s.set(E,e.state.env.get(E)));let C=`${u}__length`;e.state.env.has(C)&&!s.has(C)&&s.set(C,e.state.env.get(C))}let g=Fe(b),O=ne(e,u),v=0,$=e.state.env.get(u);O.length===0&&$!==void 0?(e.state.env.set(`${u}_0`,$),e.state.env.delete(u),v=1):O.length>0&&(v=Math.max(...O)+1);for(let S=0;S<g.length;S++)e.state.env.set(`${u}_${v+S}`,X(e,g[S]));let w=v+g.length;e.state.env.set(`${u}__length`,String(w)),Je(e,u),i&&Be(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let b=X(e,m[2]);se(e,u,"bash"),s.has(u)||s.set(u,e.state.env.get(u));let g=e.state.env.get(u)??"";e.state.env.set(u,g+b),Je(e,u),i&&Be(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){u=p[1];let b=p[2],g=X(e,p[3]);if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let $=`${u}_`;for(let S of e.state.env.keys())S.startsWith($)&&!S.includes("__")&&(s.has(S)||s.set(S,e.state.env.get(S)));let w=`${u}__length`;e.state.env.has(w)&&!s.has(w)&&s.set(w,e.state.env.get(w))}let O;try{let $=new B,w=ee($,b);O=await U(e,w.expression)}catch{let $=parseInt(b,10);O=Number.isNaN($)?0:$}e.state.env.set(`${u}_${O}`,g);let v=parseInt(e.state.env.get(`${u}__length`)??"0",10);O>=v&&e.state.env.set(`${u}__length`,String(O+1)),Je(e,u),i&&Be(e,u);continue}if(c.includes("=")){let b=c.indexOf("=");u=c.slice(0,b),f=X(e,c.slice(b+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
|
|
523
|
+
`,n=1;continue}let y=s.has(u);if(f!==void 0){let b=e.state.env.get(u);if(e.state.tempEnvBindings){let g=e.state.accessedTempEnvVars?.has(u),O=e.state.mutatedTempEnvVars?.has(u);if(!g&&!O)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let $=e.state.tempEnvBindings[v];if($.has(u)){b=$.get(u);break}}}Hn(e,u,b)}if(!y){let b=e.state.env.get(u);if(e.state.tempEnvBindings)for(let g=e.state.tempEnvBindings.length-1;g>=0;g--){let O=e.state.tempEnvBindings[g];if(O.has(u)){b=O.get(u);break}}if(s.set(u,b),o){let g=`${u}_`;for(let v of e.state.env.keys())v.startsWith(g)&&!v.includes("__")&&(s.has(v)||s.set(v,e.state.env.get(v)));let O=`${u}__length`;e.state.env.has(O)&&!s.has(O)&&s.set(O,e.state.env.get(O))}}if(o&&f===void 0){let b=`${u}_`;for(let g of e.state.env.keys())g.startsWith(b)&&!g.includes("__")&&e.state.env.delete(g);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(se(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){r+=`bash: local: \`${f}': invalid variable name for name reference
|
|
524
|
+
`,n=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let b=e.state.tempEnvBindings?.some(g=>g.has(u));!y&&!b&&e.state.env.delete(u)}Je(e,u),i&&Be(e,u)}return _("",r,n)}function Rr(e,t,s){let r=`
|
|
525
|
+
`,n=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let g=t[c];g==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
|
|
526
|
+
`,c+=2):g==="-n"&&c+1<t.length?(n=Number.parseInt(t[c+1],10)||0,c+=2):g==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):g==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):g==="-t"?(a=!0,c++):g==="-u"||g==="-C"||g==="-c"?c+=2:(g.startsWith("-")||(l=g),c++)}let u=s;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=u,h=0,m=0,p=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let g=d.indexOf(r);if(g===-1){if(d.length>0){if(m<o)m++;else if(n===0||h<n){if(i+h>=p)return _("",`mapfile: array element limit exceeded (${p})
|
|
527
|
+
`,1);let $=d,w=$.indexOf("\0");w!==-1&&($=$.substring(0,w)),f.push($),h++}}break}let O=d.substring(0,g),v=O.indexOf("\0");if(v!==-1&&(O=O.substring(0,v)),!a&&r!=="\0"&&(O+=r),d=d.substring(g+r.length),m<o){m++;continue}if(n>0&&h>=n)break;if(i+h>=p)return _("",`mapfile: array element limit exceeded (${p})
|
|
528
|
+
`,1);f.push(O),h++}i===0&&Re(e,l);for(let g=0;g<f.length;g++)e.state.env.set(`${l}_${i+g}`,f[g]);let y=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(y,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),_("","",0)}function ha(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}function pa(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Ir(e,t,s,r=-1){let n=!1,i=`
|
|
529
|
+
`,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,m=!1,p=(P,T)=>{let I=1;for(;I<P.length;){let k=P[I];if(k==="r")n=!0,I++;else if(k==="s")I++;else{if(k==="d")return I+1<P.length?(i=P.substring(I+1),{nextArgIndex:T+1}):T+1<t.length?(i=t[T+1],{nextArgIndex:T+2}):{nextArgIndex:T+1};if(k==="n"){if(I+1<P.length){let L=P.substring(I+1);return a=Number.parseInt(L,10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:T+1}}else if(T+1<t.length)return a=Number.parseInt(t[T+1],10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:T+2};return{nextArgIndex:T+1}}else if(k==="N"){if(I+1<P.length){let L=P.substring(I+1);return l=Number.parseInt(L,10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:T+1}}else if(T+1<t.length)return l=Number.parseInt(t[T+1],10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:T+2};return{nextArgIndex:T+1}}else{if(k==="a")return I+1<P.length?(c=P.substring(I+1),{nextArgIndex:T+1}):T+1<t.length?(c=t[T+1],{nextArgIndex:T+2}):{nextArgIndex:T+1};if(k==="p")return I+1<P.length?(o=P.substring(I+1),{nextArgIndex:T+1}):T+1<t.length?(o=t[T+1],{nextArgIndex:T+2}):{nextArgIndex:T+1};if(k==="u"){if(I+1<P.length){let L=P.substring(I+1);return u=Number.parseInt(L,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:T+1}}else if(T+1<t.length)return u=Number.parseInt(t[T+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:T+2};return{nextArgIndex:T+1}}else if(k==="t"){if(I+1<P.length){let L=P.substring(I+1);return f=Number.parseFloat(L),Number.isNaN(f)&&(f=0),{nextArgIndex:T+1}}else if(T+1<t.length)return f=Number.parseFloat(t[T+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:T+2};return{nextArgIndex:T+1}}else if(k==="e"||k==="i"||k==="P"){if(k==="i"&&T+1<t.length)return{nextArgIndex:T+2};I++}else I++}}}return{nextArgIndex:T+1}};for(;h<t.length;){let P=t[h];if(P.startsWith("-")&&P.length>1&&P!=="--"){let T=p(P,h);if(T.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(T.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=T.nextArgIndex}else if(P==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(P),h++}if(m)return _("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)Re(e,c);else{for(let P of d)e.state.env.set(P,"");d.length===0&&e.state.env.set("REPLY","")}return _("","",0)}if(f<0&&f!==-1)return _("","",1);let y=s;u>=0?e.state.fileDescriptors?y=e.state.fileDescriptors.get(u)||"":y="":!y&&e.state.groupStdin!==void 0&&(y=e.state.groupStdin);let b=i===""?"\0":i,g="",O=0,v=!0,$=P=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,y.substring(P));else if(r>=0&&e.state.fileDescriptors){let T=e.state.fileDescriptors.get(r);if(T?.startsWith("__rw__:")){let I=ha(T);if(I){let k=I.position+P;e.state.fileDescriptors.set(r,pa(I.path,k,I.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=y.substring(P))};if(l>=0){let P=Math.min(l,y.length);g=y.substring(0,P),O=P,v=P>=l,$(O);let T=d[0]||"REPLY";e.state.env.set(T,g);for(let I=1;I<d.length;I++)e.state.env.set(d[I],"");return _("","",v?0:1)}else if(a>=0){let P=0,T=0,I=!1;for(;T<y.length&&P<a;){let k=y[T];if(k===b){O=T+1,I=!0;break}if(!n&&k==="\\"&&T+1<y.length){let L=y[T+1];if(L===b&&b===`
|
|
530
|
+
`){T+=2,O=T;continue}if(L===b){T+=2,P++,g+=L,O=T;continue}g+=L,T+=2,P++,O=T}else g+=k,T++,P++,O=T}v=P>=a||I,$(O)}else{O=0;let P=0;for(;P<y.length;){let T=y[P];if(T===b){O=P+b.length,v=!0;break}if(!n&&T==="\\"&&P+1<y.length){let I=y[P+1];if(I===`
|
|
531
|
+
`){P+=2;continue}if(I===b){g+=I,P+=2;continue}g+=T,g+=I,P+=2;continue}g+=T,P++}if(P>=y.length&&(v=!1,O=P,g.length===0&&y.length===0)){for(let T of d)e.state.env.set(T,"");return c&&Re(e,c),_("","",1)}$(O)}b===`
|
|
532
|
+
`&&g.endsWith(`
|
|
533
|
+
`)&&(g=g.slice(0,-1));let w=P=>n?P:P.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",w(g)),_("","",v?0:1);let S=an(e.state.env);if(c){let{words:P}=Hs(g,S,void 0,n),T=e.limits?.maxArrayElements??1e5;if(P.length>T)return _("",`read: array element limit exceeded (${T})
|
|
534
|
+
`,1);Re(e,c);for(let I=0;I<P.length;I++)e.state.env.set(`${c}_${I}`,w(P[I]));return _("","",v?0:1)}let C=d.length,{words:E,wordStarts:N}=Hs(g,S,C,n);for(let P=0;P<d.length;P++){let T=d[P];if(P<d.length-1)e.state.env.set(T,w(E[P]??""));else if(P<N.length){let I=g.substring(N[P]);I=ln(I,S,n),I=w(I),e.state.env.set(T,I)}else e.state.env.set(T,"")}return _("","",v?0:1)}function Lr(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return A("bash: return: can only 'return' from a function or sourced script (can only `return' from a function or sourced script)\n");let s=e.state.lastExitCode;if(t.length>0){let r=t[0],n=Number.parseInt(r,10);if(r===""||Number.isNaN(n)||!/^-?\d+$/.test(r))return A(`bash: return: ${r}: numeric argument required
|
|
535
|
+
`,2);s=(n%256+256)%256}throw new ue(s)}var Lt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
|
|
536
|
+
Options:
|
|
537
|
+
-e Exit immediately if a command exits with non-zero status
|
|
538
|
+
+e Disable -e
|
|
539
|
+
-u Treat unset variables as an error when substituting
|
|
540
|
+
+u Disable -u
|
|
541
|
+
-x Print commands and their arguments as they are executed
|
|
542
|
+
+x Disable -x
|
|
543
|
+
-o errexit Same as -e
|
|
544
|
+
+o errexit Disable errexit
|
|
545
|
+
-o nounset Same as -u
|
|
546
|
+
+o nounset Disable nounset
|
|
547
|
+
-o pipefail Return status of last failing command in pipeline
|
|
548
|
+
+o pipefail Disable pipefail
|
|
549
|
+
-o xtrace Same as -x
|
|
550
|
+
+o xtrace Disable xtrace
|
|
551
|
+
`,li=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),$s=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),fi=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],di=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Fr(e,t,s){t!==null&&(s&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=s,pt(e))}function ma(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function ya(e,t){let s=ne(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${n}]=${it(i)}`});return`${t}=(${r.join(" ")})`}function ga(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function wa(e,t){let s=Ge(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${ga(n)}]=${it(i)}`});return`${t}=(${r.join(" ")} )`}function va(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let r of e.state.env.keys()){let n=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(n){let i=n[1];s.has(i)||t.add(i)}}return t}function ba(e){return e.state.associativeArrays??new Set}function ci(e){let t=fi.map(r=>`${r.padEnd(16)}${e.state.options[r]?"on":"off"}`),s=di.map(r=>`${r.padEnd(16)}off`);return`${[...t,...s].sort().join(`
|
|
552
|
+
`)}
|
|
553
|
+
`}function ui(e){let t=fi.map(r=>`set ${e.state.options[r]?"-o":"+o"} ${r}`),s=di.map(r=>`set +o ${r}`);return`${[...t,...s].sort().join(`
|
|
554
|
+
`)}
|
|
555
|
+
`}function Wr(e,t){if(t.includes("--help"))return W(Lt);if(t.length===0){let i=va(e),o=ba(e),a=u=>{for(let f of o){let d=`${f}_`,h=`${f}__length`;if(u!==h&&u.startsWith(d)){if(u.slice(d.length).startsWith("_length"))continue;return!0}}return!1},l=[];for(let[u,f]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)||i.has(u)||o.has(u))continue;let d=u.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(d&&i.has(d[1]))continue;let h=u.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);h&&i.has(h[1])||a(u)||h&&o.has(h[1])||l.push([u,f])}let c=[];for(let[u,f]of l.sort(([d],[h])=>d<h?-1:d>h?1:0))c.push(`${u}=${vs(f)}`);for(let u of[...i].sort((f,d)=>f<d?-1:f>d?1:0))c.push(ya(e,u));for(let u of[...o].sort((f,d)=>f<d?-1:f>d?1:0))c.push(wa(e,u));return c.sort((u,f)=>{let d=u.split("=")[0],h=f.split("=")[0];return d<h?-1:d>h?1:0}),W(c.length>0?`${c.join(`
|
|
556
|
+
`)}
|
|
557
|
+
`:"")}let s=[],r=()=>s.length>0?W(s.join("")):z,n=0;for(;n<t.length;){let i=t[n];if((i==="-o"||i==="+o")&&ma(t,n)){let o=t[n+1];if(!$s.has(o)){let a=`bash: set: ${o}: invalid option name
|
|
558
|
+
${Lt}`;if(e.state.options.posix)throw new ve(1,"",a);return A(a,2)}Fr(e,$s.get(o)??null,i==="-o"),n+=2;continue}if(i==="-o"){s.push(ci(e)),n++;continue}if(i==="+o"){s.push(ui(e)),n++;continue}if(i.length>1&&(i[0]==="-"||i[0]==="+")&&i[1]!=="-"){let o=i[0]==="-",a=0;for(let l=1;l<i.length;l++){let c=i[l];if(c==="o"){let u=n+1+a;if(u<t.length&&!t[u].startsWith("-")&&!t[u].startsWith("+")){let d=t[u];if(!$s.has(d)){let h=`bash: set: ${d}: invalid option name
|
|
559
|
+
${Lt}`;if(e.state.options.posix)throw new ve(1,"",h);return A(h,2)}Fr(e,$s.get(d)??null,o),a++;continue}s.push(o?ci(e):ui(e));continue}if(!li.has(c)){let u=`bash: set: ${i[0]}${c}: invalid option
|
|
560
|
+
${Lt}`;if(e.state.options.posix)throw new ve(1,"",u);return A(u,2)}Fr(e,li.get(c)??null,o)}n+=1+a;continue}if(i==="--")return Mr(e,t.slice(n+1)),r();if(i==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,pt(e),n+1<t.length)return Mr(e,t.slice(n+1)),r();n++;continue}if(i==="+"){n++;continue}if(i.startsWith("-")||i.startsWith("+")){let o=`bash: set: ${i}: invalid option
|
|
561
|
+
${Lt}`;if(e.state.options.posix)throw new ve(1,"",o);return A(o,2)}return Mr(e,t.slice(n)),r()}return r()}function Mr(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function zr(e,t){let s=1;if(t.length>1)return A(`bash: shift: too many arguments
|
|
562
|
+
`);if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)){let a=`bash: shift: ${t[0]}: numeric argument required
|
|
563
|
+
`;if(e.state.options.posix)throw new ve(1,"",a);return A(a)}if(o<0){let a=`bash: shift: shift count out of range
|
|
564
|
+
`;if(e.state.options.posix)throw new ve(1,"",a);return A(a)}s=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(s>r){let o=`bash: shift: shift count out of range
|
|
565
|
+
`;if(e.state.options.posix)throw new ve(1,"",o);return A(o)}if(s===0)return z;let n=[];for(let o=1;o<=r;o++)n.push(e.state.env.get(String(o))||"");let i=n.slice(s);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),z}async function Vr(e,t,s=""){let r=t;if(r.length>0&&r[0]==="--"&&(r=r.slice(1)),r.length===0)return _("",`bash: source: filename argument required
|
|
566
|
+
`,2);let n=r[0],i=null,o=null;if(n.includes("/")){let d=e.fs.resolvePath(e.state.cwd,n);try{o=await e.fs.readFile(d),i=d}catch{}}else{let h=(e.state.env.get("PATH")||"").split(":").filter(m=>m);for(let m of h){let p=e.fs.resolvePath(e.state.cwd,`${m}/${n}`);try{if((await e.fs.stat(p)).isDirectory)continue;o=await e.fs.readFile(p),i=p;break}catch{}}if(o===null){let m=e.fs.resolvePath(e.state.cwd,n);try{o=await e.fs.readFile(m),i=m}catch{}}}if(o===null)return A(`bash: ${n}: No such file or directory
|
|
567
|
+
`);let a=new Map;if(r.length>1){for(let h=1;h<=9;h++)a.set(String(h),e.state.env.get(String(h)));a.set("#",e.state.env.get("#")),a.set("@",e.state.env.get("@"));let d=r.slice(1);e.state.env.set("#",String(d.length)),e.state.env.set("@",d.join(" "));for(let h=0;h<d.length&&h<9;h++)e.state.env.set(String(h+1),d[h]);for(let h=d.length+1;h<=9;h++)e.state.env.delete(String(h))}let l=e.state.currentSource,c=s!=="",u=e.state.groupStdin,f=()=>{if(e.state.sourceDepth--,e.state.currentSource=l,c&&(e.state.groupStdin=u),r.length>1)for(let[d,h]of a)h===void 0?e.state.env.delete(d):e.state.env.set(d,h)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new Q(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=n,c&&(e.state.groupStdin=s);try{let d=pe(o),h=await e.executeScript(d);return f(),h}catch(d){if(f(),d instanceof G)throw d;if(d instanceof ue)return _(d.stdout,d.stderr,d.exitCode);if(d.name==="ParseException")return A(`bash: ${n}: ${d.message}
|
|
568
|
+
`);throw d}}function hi(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Ea(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function pi(e,t){if(Ea(t))return null;try{let s=new B,r=ee(s,t);return await U(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function mi(e,t){if(e.state.localVarStack?.has(t)){let r=ms(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let n=e.state.localVarStack?.get(t);if(!n||n.length===0)ps(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),Br(e,t);else{let i=n[n.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),ps(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let n=e.state.localScopes[r];if(n.has(t)){let i=n.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),n.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||ps(e,t),!0}}return!1}function Br(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let r=e.state.tempEnvBindings[s];if(r.has(t)){let n=r.get(t);return n===void 0?e.state.env.delete(t):e.state.env.set(t,n),r.delete(t),!0}}return!1}async function yi(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),n=new B().parseWordFromString(s,!0,!1);return x(e,n)}if(t.includes("$")){let r=new B().parseWordFromString(t,!1,!1);return x(e,r)}return t}async function jr(e,t){let s="both",r="",n=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(h==="@"||h==="*"){let O=Ae(e,d);for(let[v]of O)e.state.env.delete(`${d}_${v}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let O=await yi(e,h);e.state.env.delete(`${d}_${O}`);continue}let p=Gs(e,d),y=e.state.declaredVars?.has(d);if((e.state.env.has(d)||y)&&!p&&!m){r+=`bash: unset: ${d}: not an array variable
|
|
569
|
+
`,n=1;continue}let g=await pi(e,h);if(g===null&&p){r+=`bash: unset: ${h}: not a valid identifier
|
|
570
|
+
`,n=1;continue}if(g===null)continue;if(g<0){let O=Ae(e,d),v=O.length,$=e.state.currentLine;if(v===0){r+=`bash: line ${$}: unset: [${g}]: bad array subscript
|
|
571
|
+
`,n=1;continue}let w=v+g;if(w<0){r+=`bash: line ${$}: unset: [${g}]: bad array subscript
|
|
572
|
+
`,n=1;continue}let S=O[w][0];e.state.env.delete(`${d}_${S}`);continue}e.state.env.delete(`${d}_${g}`);continue}if(!hi(i)){r+=`bash: unset: ${i}: not a valid identifier
|
|
573
|
+
`,n=1;continue}let u=i;if($e(e,i)){let d=Ke(e,i);d&&d!==i&&(u=d)}if(st(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
|
|
574
|
+
`,n=1;continue}let f=yt(e,u);if(f!==void 0&&f!==e.state.callDepth)mi(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),h=e.state.mutatedTempEnvVars?.has(u);if((d||h)&&e.state.localVarStack?.has(u)){let m=ms(e,u);m?m.value===void 0?e.state.env.delete(u):e.state.env.set(u,m.value):e.state.env.delete(u)}else e.state.env.delete(u)}else Br(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(u==="@"||u==="*"){let p=Ae(e,c);for(let[y]of p)e.state.env.delete(`${c}_${y}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let p=await yi(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=Gs(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
|
|
575
|
+
`,n=1;continue}let m=await pi(e,u);if(m===null&&d){r+=`bash: unset: ${u}: not a valid identifier
|
|
576
|
+
`,n=1;continue}if(m===null)continue;if(m<0){let p=Ae(e,c),y=p.length,b=e.state.currentLine;if(y===0){r+=`bash: line ${b}: unset: [${m}]: bad array subscript
|
|
577
|
+
`,n=1;continue}let g=y+m;if(g<0){r+=`bash: line ${b}: unset: [${m}]: bad array subscript
|
|
578
|
+
`,n=1;continue}let O=p[g][0];e.state.env.delete(`${c}_${O}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!hi(i)){r+=`bash: unset: ${i}: not a valid identifier
|
|
579
|
+
`,n=1;continue}let a=i;if($e(e,i)){let c=Ke(e,i);c&&c!==i&&(a=c)}if(st(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
|
|
580
|
+
`,n=1;continue}let l=yt(e,a);if(l!==void 0&&l!==e.state.callDepth)mi(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=ms(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else Br(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return _("",r,n)}var Ur=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],$a=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"];function Ss(e){return Ur.includes(e)}function Sa(e){return $a.includes(e)}function gi(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=[],l=0;for(;l<t.length;){let d=t[l];if(d==="--"){l++;break}if(d.startsWith("-")&&d.length>1){for(let h=1;h<d.length;h++){let m=d[h];switch(m){case"s":s=!0;break;case"u":r=!0;break;case"p":n=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
|
|
581
|
+
`}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return Pa(e,a,s,r,n,i);if(s&&r)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
|
|
582
|
+
`};if(a.length===0){if(s||r){let h=[];for(let m of Ur){let p=e.state.shoptOptions[m];s&&p?h.push(n?`shopt -s ${m}`:`${m} on`):r&&!p&&h.push(n?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
|
|
583
|
+
`)}
|
|
584
|
+
`:"",stderr:""}}let d=[];for(let h of Ur){let m=e.state.shoptOptions[h];d.push(n?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
|
|
585
|
+
`)}
|
|
586
|
+
`,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!Ss(d)&&!Sa(d)){u+=`shopt: ${d}: invalid shell option name
|
|
587
|
+
`,c=!0;continue}if(s)Ss(d)&&(e.state.shoptOptions[d]=!0,Js(e));else if(r)Ss(d)&&(e.state.shoptOptions[d]=!1,Js(e));else if(Ss(d)){let h=e.state.shoptOptions[d];i?h||(c=!0):n?(f.push(`shopt ${h?"-s":"-u"} ${d}`),h||(c=!0)):(f.push(`${d} ${h?"on":"off"}`),h||(c=!0))}else i?c=!0:n?(f.push(`shopt -u ${d}`),c=!0):(f.push(`${d} off`),c=!0)}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
|
|
588
|
+
`)}
|
|
589
|
+
`:"",stderr:u}}function Pa(e,t,s,r,n,i){let o=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),a=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],l=[...o.keys(),...a].sort();if(t.length===0){let d=[];for(let h of l){let m=a.includes(h),p=o.get(h),y=m||!p?!1:e.state.options[p];s&&!y||r&&y||d.push(n?`set ${y?"-o":"+o"} ${h}`:`${h} ${y?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
|
|
590
|
+
`)}
|
|
591
|
+
`:"",stderr:""}}let c=!1,u="",f=[];for(let d of t){let h=o.has(d),m=a.includes(d);if(!h&&!m){u+=`shopt: ${d}: invalid option name
|
|
592
|
+
`,c=!0;continue}if(m){s||r||(i?c=!0:n?(f.push(`set +o ${d}`),c=!0):(f.push(`${d} off`),c=!0));continue}let p=o.get(d);if(p)if(s)p==="vi"?e.state.options.emacs=!1:p==="emacs"&&(e.state.options.vi=!1),e.state.options[p]=!0,pt(e);else if(r)e.state.options[p]=!1,pt(e);else{let y=e.state.options[p];i?y||(c=!0):n?(f.push(`set ${y?"-o":"+o"} ${d}`),y||(c=!0)):(f.push(`${d} ${y?"on":"off"}`),y||(c=!0))}}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
|
|
593
|
+
`)}
|
|
594
|
+
`:"",stderr:u}}async function wi(e,t,s){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};let a=o.split("/").pop()||t,l=e.commands.get(a);try{let c=await e.fs.stat(o);return c.isDirectory?{error:"permission_denied",path:o}:l?{cmd:l,path:o}:(c.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!s&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o)if(await e.fs.exists(o)){let a=e.commands.get(t);if(a)return{cmd:a,path:o};try{let l=await e.fs.stat(o);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:o}}catch{}}else e.state.hashTable.delete(t)}let n=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of n){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=o==="/bin"||o==="/usr/bin";if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function Ps(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&s.push(t)}catch{}return s}let n=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of n){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?a:`${i}/${t}`)}}return s}function Aa(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function K(e,t,s,r){return((...n)=>{Tt(t,s,`${r} call`);let i=e(...n);return Aa(i)?i.then(o=>(Tt(t,s,`${r} post-await`),o),o=>{throw Tt(t,s,`${r} post-await`),o}):(Tt(t,s,`${r} return`),i)})}function ka(e,t,s){let r={readFile:K(e.readFile.bind(e),t,s,"fs.readFile"),...typeof e.readFileBytes=="function"?{readFileBytes:K(e.readFileBytes.bind(e),t,s,"fs.readFileBytes")}:Object.create(null),readFileBuffer:K(e.readFileBuffer.bind(e),t,s,"fs.readFileBuffer"),writeFile:K(e.writeFile.bind(e),t,s,"fs.writeFile"),appendFile:K(e.appendFile.bind(e),t,s,"fs.appendFile"),exists:K(e.exists.bind(e),t,s,"fs.exists"),stat:K(e.stat.bind(e),t,s,"fs.stat"),mkdir:K(e.mkdir.bind(e),t,s,"fs.mkdir"),readdir:K(e.readdir.bind(e),t,s,"fs.readdir"),rm:K(e.rm.bind(e),t,s,"fs.rm"),cp:K(e.cp.bind(e),t,s,"fs.cp"),mv:K(e.mv.bind(e),t,s,"fs.mv"),resolvePath:K(e.resolvePath.bind(e),t,s,"fs.resolvePath"),getAllPaths:K(e.getAllPaths.bind(e),t,s,"fs.getAllPaths"),chmod:K(e.chmod.bind(e),t,s,"fs.chmod"),symlink:K(e.symlink.bind(e),t,s,"fs.symlink"),link:K(e.link.bind(e),t,s,"fs.link"),readlink:K(e.readlink.bind(e),t,s,"fs.readlink"),lstat:K(e.lstat.bind(e),t,s,"fs.lstat"),realpath:K(e.realpath.bind(e),t,s,"fs.realpath"),utimes:K(e.utimes.bind(e),t,s,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=K(e.readdirWithFileTypes.bind(e),t,s,"fs.readdirWithFileTypes")),r}function Hr(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,r={...e,fs:ka(e.fs,e.requireDefenseContext,s)};return e.exec&&(r.exec=K(e.exec,e.requireDefenseContext,s,"exec")),e.fetch&&(r.fetch=K(e.fetch,e.requireDefenseContext,s,"fetch")),e.sleep&&(r.sleep=K(e.sleep,e.requireDefenseContext,s,"sleep")),e.getRegisteredCommands&&(r.getRegisteredCommands=K(e.getRegisteredCommands,e.requireDefenseContext,s,"getRegisteredCommands")),r}async function bi(e,t,s,r){let n=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let y of p.slice(1))if(y==="t")n=!0;else if(y==="p")i=!0;else if(y==="P")o=!0;else if(y==="a")a=!0;else if(y==="f")l=!0;else return _("",`type: -${y}: unsupported option
|
|
595
|
+
`,2);else c.push(p);let u="",f="",d=0,h=!1,m=!1;for(let p of c){let y=!1;if(o){if(a){let S=await r(p);if(S.length>0){for(let C of S)u+=`${C}
|
|
596
|
+
`;h=!0,y=!0}}else{let S=await s(p);S&&(u+=`${S}
|
|
597
|
+
`,h=!0,y=!0)}y||(m=!0);continue}let b=!l&&e.state.functions.has(p);if(a&&b){if(!i)if(n)u+=`function
|
|
598
|
+
`;else{let S=e.state.functions.get(p),C=S?vi(p,S):`${p} is a shell function
|
|
599
|
+
`;u+=C}y=!0}let g=e.state.env.get(`BASH_ALIAS_${p}`);if(g!==void 0&&(a||!y)&&(i||(n?u+=`alias
|
|
600
|
+
`:u+=`${p} is aliased to \`${g}'
|
|
601
|
+
`),y=!0,!a)||ar.has(p)&&(a||!y)&&(i||(n?u+=`keyword
|
|
602
|
+
`:u+=`${p} is a shell keyword
|
|
603
|
+
`),y=!0,!a)||e.commands.has(p)&&(a||!y)&&(i||(n?u+=`registered
|
|
604
|
+
`:u+=`${p} is a registered command
|
|
605
|
+
`),y=!0,!a))continue;if(!a&&b&&!y){if(!i)if(n)u+=`function
|
|
606
|
+
`;else{let S=e.state.functions.get(p),C=S?vi(p,S):`${p} is a shell function
|
|
607
|
+
`;u+=C}y=!0;continue}if(!(gt.has(p)&&(a||!y)&&(i||(n?u+=`builtin
|
|
608
|
+
`:u+=`${p} is a shell builtin
|
|
609
|
+
`),y=!0,!a))){if(a){let S=await r(p);for(let C of S)i?u+=`${C}
|
|
610
|
+
`:n?u+=`file
|
|
611
|
+
`:u+=`${p} is ${C}
|
|
612
|
+
`,h=!0,y=!0}else if(!y){let S=await s(p);S&&(i?u+=`${S}
|
|
613
|
+
`:n?u+=`file
|
|
614
|
+
`:u+=`${p} is ${S}
|
|
615
|
+
`,h=!0,y=!0)}if(!y&&(m=!0,!n&&!i)){let S=!0;if(p.includes("/")){let C=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(C)&&(S=!1)}S&&(f+=`bash: type: ${p}: not found
|
|
616
|
+
`)}}}return i?d=m&&!h?1:0:d=m?1:0,_(u,f,d)}function vi(e,t){return`${e} is a shell function
|
|
617
|
+
`}async function Ei(e,t,s,r){let n="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?n+=`${a} is an alias for "${l}"
|
|
618
|
+
`:n+=`alias ${a}='${l}'
|
|
619
|
+
`;else if(ar.has(a))r?n+=`${a} is a shell keyword
|
|
620
|
+
`:n+=`${a}
|
|
621
|
+
`;else if(gt.has(a))r?n+=`${a} is a shell builtin
|
|
622
|
+
`:n+=`${a}
|
|
623
|
+
`;else if(e.commands.has(a))r?n+=`${a} is a registered command
|
|
624
|
+
`:n+=`${a}
|
|
625
|
+
`;else if(e.state.functions.has(a))r?n+=`${a} is a function
|
|
626
|
+
`:n+=`${a}
|
|
627
|
+
`;else if(a.includes("/")){let c=e.fs.resolvePath(e.state.cwd,a),u=!1;if(await e.fs.exists(c))try{let f=await e.fs.stat(c);f.isDirectory||(f.mode&73)!==0&&(r?n+=`${a} is ${a}
|
|
628
|
+
`:n+=`${a}
|
|
629
|
+
`,u=!0)}catch{}u||(r&&(i+=`${a}: not found
|
|
630
|
+
`),o=1)}else{let c=await qr(e,a);c?r?n+=`${a} is ${c}
|
|
631
|
+
`:n+=`${c}
|
|
632
|
+
`:(r&&(i+=`${a}: not found
|
|
633
|
+
`),o=1)}}return _(n,i,o)}async function qr(e,t){if(t.includes("/")){let n=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(n)){try{if((await e.fs.stat(n)).isDirectory)return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let n of r){if(!n)continue;let o=`${n.startsWith("/")?n:e.fs.resolvePath(e.state.cwd,n)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${n}/${t}`}}if(e.commands.has(t)){for(let n of r)if(n==="/usr/bin"||n==="/bin")return`${n}/${t}`;return`/usr/bin/${t}`}return null}var Ca=new Set(["awk","cat","cut","grep","head","jq","mapfile","read","readarray","sed","sort","tail","tee","tr","uniq","wc","xargs"]);function Zr(e){return Ca.has(e)}async function $i(e,t,s,r,n,i,o,a){let{ctx:l,runCommand:c}=e;if(l.coverage&>.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return Nr(l,s);if(t==="unset")return jr(l,s);if(t==="exit")return _r(l,s);if(t==="local")return Dr(l,s);if(t==="set")return Wr(l,s);if(t==="break")return tr(l,s);if(t==="continue")return pr(l,s);if(t==="return")return Lr(l,s);if(t==="eval"&&l.state.options.posix)return bs(l,s,n);if(t==="shift")return zr(l,s);if(t==="getopts")return Es(l,s);if(t==="compgen")return ur(l,s);if(t==="complete")return dr(l,s);if(t==="compopt")return hr(l,s);if(t==="pushd")return await Ar(l,s);if(t==="popd")return kr(l,s);if(t==="dirs")return Cr(l,s);if(t==="source"||t===".")return Vr(l,s,n);if(t==="read")return Ir(l,s,n,a);if(t==="mapfile"||t==="readarray")return Rr(l,s,n);if(t==="declare"||t==="typeset")return $r(l,s);if(t==="readonly")return Sr(l,s);if(l.commands.has(t))return null;if(!i){let u=l.state.functions.get(t);if(u)return ws(l,u,s,n)}if(t==="eval")return bs(l,s,n);if(t==="cd")return await sr(l,s);if(t===":"||t==="true")return z;if(t==="false")return J(!1);if(t==="let")return xr(l,s);if(t==="command")return _a(e,s,n);if(t==="builtin")return Na(e,s,n);if(t==="shopt")return gi(l,s);if(t==="exec"){if(s.length===0)return z;let[u,...f]=s;return c(u,f,[],n,!1,!1,-1)}if(t==="jobs")return l.jobControl?.jobs?l.jobControl.jobs(s):z;if(t==="wait")return l.jobControl?.wait?l.jobControl.wait(s):z;if(t==="type")return await bi(l,s,u=>qr(l,u),u=>Ps(l,u));if(t==="hash")return Or(l,s);if(t==="help")return Tr(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return A("[: missing `]'\n",2);u=s.slice(0,-1)}return Rt(l,u)}return null}async function _a(e,t,s){let{ctx:r,runCommand:n}=e;if(t.length===0)return z;let i=!1,o=!1,a=!1,l=t;for(;l.length>0&&l[0].startsWith("-");){let f=l[0];if(f==="--"){l=l.slice(1);break}for(let d of f.slice(1))d==="p"?i=!0:d==="V"?o=!0:d==="v"&&(a=!0);l=l.slice(1)}if(l.length===0)return z;if(a||o)return await Ei(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function Na(e,t,s){let{runCommand:r}=e;if(t.length===0)return z;let n=t;if(n[0]==="--"&&(n=n.slice(1),n.length===0))return z;let i=n[0];if(!gt.has(i))return A(`bash: builtin: ${i}: not a shell builtin
|
|
634
|
+
`);let[,...o]=n;return r(i,o,[],s,!0,!1,-1)}async function Si(e,t,s,r,n){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e;if(i.hostSpawn){let b=i.commands.get(t);if(b){let $=o(),w=r===""&&i.state.groupStdin!==void 0,S=r||i.state.groupStdin||"",C={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:$,stdin:S,limits:i.limits,exec:i.execFn,fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext,jsBootstrapCode:i.jsBootstrapCode,invokeTool:i.invokeTool},E=Hr(C,t);try{let N=()=>Vs(i.requireDefenseContext,"command",`${t} execution`,()=>b.execute(s,E));return b.trusted?await de.runTrustedAsync(()=>N()):await N()}catch(N){if(N instanceof Q||N instanceof We)throw N;return A(`${t}: ${De(xe(N))}
|
|
635
|
+
`)}finally{w&&(b.consumesStdin||Zr(t))&&(i.state.groupStdin="")}}let g=o(),O=r===""&&i.state.groupStdin!==void 0,v=r||i.state.groupStdin||"";try{return await i.hostSpawn(t,s,{cwd:i.state.cwd,env:g,stdin:v,stdinProvided:r!==""||O||i.state.pipelineStdinProvided,redirections:i.currentRedirections})}finally{O&&Zr(t)&&(i.state.groupStdin="")}}let c=await wi(i,t,n?"/usr/bin:/bin":void 0);if(!c)return Rn(t)?A(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
|
|
636
|
+
`,127):A(`bash: ${t}: command not found
|
|
637
|
+
`,127);if("error"in c)return c.error==="permission_denied"?A(`bash: ${t}: Permission denied
|
|
638
|
+
`,126):A(`bash: ${t}: No such file or directory
|
|
639
|
+
`,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,s,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r===""&&i.state.groupStdin!==void 0,h=r||i.state.groupStdin||"",m=o(),p={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:m,stdin:h,limits:i.limits,exec:i.execFn,fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext,jsBootstrapCode:i.jsBootstrapCode,invokeTool:i.invokeTool},y=Hr(p,t);try{let b=()=>Vs(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(s,y));return u.trusted?await de.runTrustedAsync(()=>b()):await b()}catch(b){if(b instanceof Q||b instanceof We)throw b;return A(`${t}: ${De(xe(b))}
|
|
640
|
+
`)}finally{d&&(u.consumesStdin||Zr(t))&&(i.state.groupStdin="")}}async function Gr(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let r="",n="",i=0;try{for(let o of t){let a=await e.executeStatement(o);r+=a.stdout,n+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:r,stderr:n,exitCode:i}}function Ft(e,t,s,r){if(e instanceof ae)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};if(e instanceof he)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"continue",stdout:t,stderr:s};if(e instanceof ue||e instanceof Te||e instanceof we||e instanceof G||e instanceof Q)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let n=xe(e);return{action:"error",stdout:t,stderr:`${s}${n}
|
|
641
|
+
`,exitCode:1}}async function As(e,t,s="",r=""){let n=s,i=r,o=0;try{for(let a of t){let l=await e.executeStatement(a);n+=l.stdout,i+=l.stderr,o=l.exitCode}}catch(a){if(Gt(a)||a instanceof we||a instanceof G||a instanceof Q||a instanceof qe)throw a.prependOutput(n,i),a;return{stdout:n,stderr:`${i}${xe(a)}
|
|
642
|
+
`,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function Pi(e,t){let s=await Ce(e,t.redirections);if(s)return s;let r="",n="",i=!1,o="";for(let c of t.redirections)if((c.operator==="<<"||c.operator==="<<-")&&c.target.type==="HereDoc"){let u=c.target,f=await x(e,u.content);u.stripTabs&&(f=f.split(`
|
|
643
|
+
`).map(d=>d.replace(/^\t+/,"")).join(`
|
|
644
|
+
`)),o=f,i=!0}else if(c.operator==="<<<"&&c.target.type==="Word")o=`${await x(e,c.target)}
|
|
645
|
+
`,i=!0;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await x(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);o=await e.fs.readFile(f),i=!0}catch{let u=await x(e,c.target);return A(`bash: ${u}: No such file or directory
|
|
646
|
+
`)}let a=e.state.groupStdin;i&&(e.state.groupStdin=o);let l;try{for(let c of t.clauses){let u=await Gr(e,c.condition);if(r+=u.stdout,n+=u.stderr,u.exitCode===0)return l=await As(e,c.body,r,n),Z(e,l,t.redirections)}t.elseBody?l=await As(e,t.elseBody,r,n):l=_(r,n,0)}finally{i&&(e.state.groupStdin=a)}return Z(e,l,t.redirections)}async function Ai(e,t){let s=await Ce(e,t.redirections);if(s)return s;let r="",n="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return A(`bash: \`${t.variable}': not a valid identifier
|
|
647
|
+
`);let a=[];if(t.words===null)a=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)a=[];else try{for(let c of t.words){let u=await Ie(e,c);a.push(...u.values)}}catch(c){if(c instanceof qt)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&Le(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);r+=f.stdout,n+=f.stderr,i=f.exitCode}}catch(u){let f=Ft(u,r,n,e.state.loopDepth);if(r=f.stdout,n=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=_(r,n,f.exitCode??1);return Z(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=_(r,n,i);return Z(e,l,t.redirections)}async function ki(e,t){let s=await Ce(e,t.redirections);if(s)return s;let r=t.line;r!==void 0&&(e.state.currentLine=r);let n="",i="",o=0,a=0;t.init&&await U(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&Le(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,i),!(t.condition&&(r!==void 0&&(e.state.currentLine=r),await U(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);n+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=Ft(c,n,i,e.state.loopDepth);if(n=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await U(e,t.update.expression);continue}if(u.action==="error"){let f=_(n,i,u.exitCode??1);return Z(e,f,t.redirections)}throw u.error}t.update&&await U(e,t.update.expression)}}finally{e.state.loopDepth--}let l=_(n,i,o);return Z(e,l,t.redirections)}async function Ci(e,t,s=""){let r="",n="",i=0,o=0,a=s;for(let c of t.redirections)if((c.operator==="<<"||c.operator==="<<-")&&c.target.type==="HereDoc"){let u=c.target,f=await x(e,u.content);u.stripTabs&&(f=f.split(`
|
|
648
|
+
`).map(d=>d.replace(/^\t+/,"")).join(`
|
|
649
|
+
`)),a=f}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${await x(e,c.target)}
|
|
650
|
+
`;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await x(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await x(e,c.target);return A(`bash: ${u}: No such file or directory
|
|
651
|
+
`)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&Le(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,c=m.exitCode}}catch(h){if(h instanceof ae){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;u=!0}else if(h instanceof he){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;f=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let h of t.body){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,i=m.exitCode}}catch(h){let m=Ft(h,r,n,e.state.loopDepth);if(r=m.stdout,n=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return _(r,n,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return _(r,n,i)}async function _i(e,t){let s="",r="",n=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Le(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,r);let o=await Gr(e,t.condition);if(s+=o.stdout,r+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,r+=l.stderr,n=l.exitCode}}catch(a){let l=Ft(a,s,r,e.state.loopDepth);if(s=l.stdout,r=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return _(s,r,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return _(s,r,n)}async function Ni(e,t){let s=await Ce(e,t.redirections);if(s)return s;let r="",n="",i=0,o=await x(e,t.word),a=!1;for(let c=0;c<t.items.length;c++){let u=t.items[c],f=a;if(!a)for(let d of u.patterns){let h=await x(e,d);mn(d)&&(h=hn(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(mt(o,h,m,p)){f=!0;break}}if(f){let d=await As(e,u.body,r,n);if(r=d.stdout,n=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=_(r,n,i);return Z(e,l,t.redirections)}function Kr(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function Oi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}var Ti="+ ";async function xi(e){let t=e.state.env.get("PS4");if(t===void 0)return Ti;if(t==="")return"";try{let r=new B().parseWordFromString(t,!1,!1);return await x(e,r)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
|
|
652
|
+
`,t||Ti}}function Oa(e){return e.map(t=>Ta(t)).join(" ")}function Ta(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
|
|
653
|
+
`),n=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(s||r||n||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
|
|
654
|
+
`?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function Di(e,t,s){if(!e.state.options.xtrace)return"";let r=await xi(e),n=[t,...s],i=Oa(n);return`${r}${i}
|
|
655
|
+
`}async function Ri(e,t,s){return e.state.options.xtrace?`${await xi(e)}${t}=${s}
|
|
656
|
+
`:""}function xa(e){return e.type==="SimpleCommand"&&e.name===null&&e.assignments.length>0&&e.args.length===0}async function Ii(e,t,s){let r=t.timed?Bs():0,n="",i=z,o=0,a=[],l="",c=t.commands.length>1,u=e.state.lastArg;for(let d=0;d<t.commands.length;d++){let h=t.commands[d],m=d===t.commands.length-1,p=d===0;c&&(e.state.lastArg="",p||(e.state.groupStdin=void 0));let b=c&&(!m||!e.state.shoptOptions.lastpipe&&!xa(h))?new Map(e.state.env):null,g,O=e.state.pipelineStdinProvided;e.state.pipelineStdinProvided=c&&!p;try{g=await s(h,n)}catch(v){if(v instanceof Nt){if(t.commands.length===1)throw v;g={stdout:v.stdout,stderr:v.stderr,exitCode:1}}else if(v instanceof G&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else if(v instanceof we&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else throw b&&(e.state.env=b),v}finally{e.state.pipelineStdinProvided=O}b&&(e.state.env=b),a.push(g.exitCode),g.exitCode!==0&&(o=g.exitCode),m?i=g:(t.pipeStderr?.[d]??!1?n=Ue(g.stderr)+Ht(g):(n=Ht(g),l+=g.stderr),i={stdout:"",stderr:"",exitCode:g.exitCode})}if(l&&(i={...i,stderr:l+i.stderr}),t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let d of e.state.env.keys())d.startsWith("PIPESTATUS_")&&e.state.env.delete(d);for(let d=0;d<a.length;d++)e.state.env.set(`PIPESTATUS_${d}`,String(a[d]));e.state.env.set("PIPESTATUS__length",String(a.length))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let h=(Bs()-r)/1e3,m=Math.floor(h/60),p=h%60,y;t.timePosix?y=`real ${h.toFixed(2)}
|
|
657
|
+
user 0.00
|
|
658
|
+
sys 0.00
|
|
659
|
+
`:y=`
|
|
660
|
+
real ${`${m}m${p.toFixed(3)}s`}
|
|
661
|
+
user 0m0.000s
|
|
662
|
+
sys 0m0.000s
|
|
663
|
+
`,i={...i,stderr:i.stderr+y}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=u),i}async function Li(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await Da(e,t,i,n.array,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=n.value?await x(e,n.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:_("",`bash: ${i}: bad array subscript
|
|
664
|
+
`,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await Ma(e,t,l[1],l[2],o,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await za(e,t,i,o,n.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:s}}async function Da(e,t,s,r,n,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
|
|
665
|
+
`,1)};if($e(e,s)){let u=fn(e,s);if(u===void 0||u==="")throw new G(1,"","");let f=Ke(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
|
|
666
|
+
`,1)}}if(st(e,s)){if(t.name)return o+=`bash: ${s}: readonly variable
|
|
667
|
+
`,{continueToNext:!0,xtraceOutput:o};let u=se(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let a=e.state.associativeArrays?.has(s),l=Ra(r),c=()=>{let u=`${s}_`;for(let f of e.state.env.keys())f.startsWith(u)&&!f.includes("__")&&e.state.env.delete(f);e.state.env.delete(s)};if(a&&l?await Ia(e,t,s,r,n,c,u=>{o+=u}):l?await La(e,s,r,n,c):await Fa(e,s,r,n,c),t.name){i.set(s,e.state.env.get(s));let f=`(${r.map(d=>Xt(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function Ra(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],r=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let n=t.parts[2];return n.type!=="Literal"?!1:n.value.startsWith("]=")||n.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):s.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function Ia(e,t,s,r,n,i,o){let a=[];for(let l of r){let c=Us(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?h=await x(e,{type:"Word",parts:f}):h="",h=X(e,h),a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await x(e,l);a.push({type:"invalid",expandedValue:u})}}n||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=e.state.env.get(`${s}_${l.key}`)??"";e.state.env.set(`${s}_${l.key}`,c+l.value)}else e.state.env.set(`${s}_${l.key}`,l.value);else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${s}: ${l.expandedValue}: must use subscript when assigning associative array
|
|
668
|
+
`)}}async function La(e,t,s,r,n){let i=[];for(let a of s){let l=Us(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await x(e,{type:"Word",parts:u}):d="",d=X(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await Ie(e,a);i.push({type:"non-keyed",values:c.values})}}r||n();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new B,u=ee(c,a.indexExpr);l=await U(e,u.expression,!1)}catch{if(/^-?\d+$/.test(a.indexExpr))l=Number.parseInt(a.indexExpr,10);else{let c=e.state.env.get(a.indexExpr);l=c?Number.parseInt(c,10):0,Number.isNaN(l)&&(l=0)}}if(a.append){let c=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,c+a.value)}else e.state.env.set(`${t}_${l}`,a.value);o=l+1}else for(let l of a.values)e.state.env.set(`${t}_${o++}`,l)}async function Fa(e,t,s,r,n){let i=[];for(let a of s){let l=await Ie(e,a);i.push(...l.values)}let o=0;if(r){let a=Ae(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(e.state.env.set(`${t}_0`,l),e.state.env.delete(t),o=1)}}else n();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);r||e.state.env.set(`${t}__length`,String(i.length))}async function Ma(e,t,s,r,n,i,o){let a=s;if($e(e,s)){let f=Ke(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: \`${f}': not a valid identifier
|
|
669
|
+
`,1)};a=f}}if(st(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=se(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Fi(e,a,r);else{let f=await Wa(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+n:n;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=yt(e,a);if(f!==void 0&&f===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(c)||d.set(c,e.state.env.get(c))}e.state.env.set(c,u)}return{continueToNext:!0,xtraceOutput:""}}async function Fi(e,t,s){let r;if(s.startsWith("'")&&s.endsWith("'"))r=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let n=s.slice(1,-1),o=new B().parseWordFromString(n,!0,!1);r=await x(e,o)}else if(s.includes("$")){let i=new B().parseWordFromString(s,!1,!1);r=await x(e,i)}else r=s;return`${t}_${r}`}async function Wa(e,t,s){let r=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(r=s.slice(1,-1));let n;if(/^-?\d+$/.test(r))n=Number.parseInt(r,10);else{try{let i=new B,o=ee(i,r);n=await U(e,o.expression,!1)}catch(i){if(i instanceof He){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
|
|
670
|
+
`;if(i.fatal)throw new G(1,"",l);return{index:0,error:_("",l,1)}}let o=e.state.env.get(s);n=o?Number.parseInt(o,10):0}Number.isNaN(n)&&(n=0)}if(n<0){let i=Ae(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
|
|
671
|
+
`,1)}}if(n=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+n,n<0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
|
|
672
|
+
`,1)}}}return{index:n}}async function za(e,t,s,r,n,i){let o="",a=s,l=null;if($e(e,s)){let f=dn(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: circular name reference
|
|
673
|
+
`,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};a=f;let d=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},a=d[1])}if(st(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
|
|
674
|
+
`,{continueToNext:!0,xtraceOutput:o};let f=se(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(It(e,a))try{let f=new B;if(n){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,m=ee(f,h);c=String(await U(e,m.expression))}else{let d=ee(f,r);c=String(await U(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-2O6WLRBD.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=vt(e,a,c),o+=await Ri(e,a,c);let u=a;if(l)u=await Va(e,l);else{let{isArray:f}=await import("./chunks/expansion-2O6WLRBD.js");f(e,a)&&(u=`${a}_0`)}return t.name?(i.set(u,e.state.env.get(u)),e.state.env.set(u,c)):(e.state.env.set(u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function Va(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return Fi(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new B,a=ee(o,r);i=await U(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=Ae(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Mi(e,t,s,r){let n=await Ce(e,t.redirections);if(n)return n;let i=new Map(e.state.env),o=e.state.cwd,a={...e.state.options},l=new Map(e.state.functions),c=e.state.localScopes,u=e.state.localVarStack,f=e.state.localVarDepth,d=e.state.fullyUnsetLocals;if(e.state.localScopes=c.map(E=>new Map(E)),u){e.state.localVarStack=new Map;for(let[E,N]of u.entries())e.state.localVarStack.set(E,N.map(P=>({...P})))}f&&(e.state.localVarDepth=new Map(f)),d&&(e.state.fullyUnsetLocals=new Map(d));let h=e.state.loopDepth,m=e.state.parentHasLoopContext;e.state.parentHasLoopContext=h>0,e.state.loopDepth=0;let p=e.state.lastArg,y=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let b=s,g=!1;for(let E of t.redirections)if((E.operator==="<<"||E.operator==="<<-")&&E.target.type==="HereDoc"){let N=E.target,P=await x(e,N.content);N.stripTabs&&(P=P.split(`
|
|
675
|
+
`).map(T=>T.replace(/^\t+/,"")).join(`
|
|
676
|
+
`)),b=P,g=!0}else if(E.operator==="<<<"&&E.target.type==="Word")b=`${await x(e,E.target)}
|
|
677
|
+
`,g=!0;else if(E.operator==="<"&&E.target.type==="Word")try{let N=await x(e,E.target),P=e.fs.resolvePath(e.state.cwd,N);b=await e.fs.readFile(P),g=!0}catch{let N=await x(e,E.target);return _("",`bash: ${N}: No such file or directory
|
|
678
|
+
`,1)}let O=e.state.groupStdin;(b||g)&&(e.state.groupStdin=b);let v="",$="",w=0,S=()=>{e.state.env=i,e.state.cwd=o,e.state.options=a,e.state.functions=l,e.state.localScopes=c,e.state.localVarStack=u,e.state.localVarDepth=f,e.state.fullyUnsetLocals=d,e.state.loopDepth=h,e.state.parentHasLoopContext=m,e.state.groupStdin=O,e.state.bashPid=y,e.state.lastArg=p};try{for(let E of t.body){let N=await r(E);v+=N.stdout,$+=N.stderr,w=N.exitCode}}catch(E){if(S(),E instanceof Q)throw E;if(E instanceof qe){v+=E.stdout,$+=E.stderr;let P=_(v,$,0);return Z(e,P,t.redirections)}if(E instanceof ae||E instanceof he){v+=E.stdout,$+=E.stderr;let P=_(v,$,0);return Z(e,P,t.redirections)}if(E instanceof G){v+=E.stdout,$+=E.stderr;let P=_(v,$,E.exitCode);return Z(e,P,t.redirections)}if(E instanceof ue){v+=E.stdout,$+=E.stderr;let P=_(v,$,E.exitCode);return Z(e,P,t.redirections)}if(E instanceof we){let P=_(v+E.stdout,$+E.stderr,E.exitCode);return Z(e,P,t.redirections)}let N=_(v,`${$}${xe(E)}
|
|
679
|
+
`,1);return Z(e,N,t.redirections)}S();let C=_(v,$,w);return Z(e,C,t.redirections)}async function Wi(e,t,s,r){let n="",i="",o=0,a=await gs(e,t.redirections);if(a)return a;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,h=await x(e,d.content);d.stripTabs&&(h=h.split(`
|
|
680
|
+
`).map(p=>p.replace(/^\t+/,"")).join(`
|
|
681
|
+
`));let m=f.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),ce(e),e.state.fileDescriptors.set(m,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await x(e,f.target)}
|
|
682
|
+
`;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await x(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await x(e,f.target);return _("",`bash: ${d}: No such file or directory
|
|
683
|
+
`,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await r(f);n+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof Q)throw f;if(Gt(f)||f instanceof we||f instanceof G)throw f.prependOutput(n,i),f;return _(n,`${i}${xe(f)}
|
|
684
|
+
`,1)}e.state.groupStdin=c;let u=_(n,i,o);return Z(e,u,t.redirections)}async function zi(e,t,s,r,n){let i;try{i=await e.fs.readFile(t)}catch{return A(`bash: ${t}: No such file or directory
|
|
685
|
+
`,127)}if(i.startsWith("#!")){let y=i.indexOf(`
|
|
686
|
+
`);y!==-1&&(i=i.slice(y+1))}let o=new Map(e.state.env),a=e.state.cwd,l={...e.state.options},c=e.state.loopDepth,u=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=c>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(s.length)),e.state.env.set("@",s.join(" ")),e.state.env.set("*",s.join(" "));for(let y=0;y<s.length&&y<9;y++)e.state.env.set(String(y+1),s[y]);for(let y=s.length+1;y<=9;y++)e.state.env.delete(String(y));let p=()=>{e.state.env=o,e.state.cwd=a,e.state.options=l,e.state.loopDepth=c,e.state.parentHasLoopContext=u,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=m};try{let b=new B().parse(i),g=await n(b);return p(),g}catch(y){if(p(),y instanceof G||y instanceof Q)throw y;if(y.name==="ParseException")return A(`bash: ${t}: ${y.message}
|
|
687
|
+
`);throw y}}function ks(e){return e?e.parts.some(Vi):!1}function Vi(e){if(e.type==="CommandSubstitution")return!0;if(e.type==="DoubleQuoted")return e.parts.some(Vi);if(e.type==="ParameterExpansion"){let t=e.operation;if(t&&"word"in t)return ks(t.word);if(t&&"replacement"in t)return ks(t.replacement)}return!1}var Mt=class{ctx;constructor(t,s){this.ctx={state:s,fs:t.fs,commands:t.commands,limits:t.limits,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace,coverage:t.coverage,requireDefenseContext:t.requireDefenseContext??!1,jsBootstrapCode:t.jsBootstrapCode,invokeTool:t.invokeTool,rejectTimedPipelines:t.rejectTimedPipelines??!1,hostSpawn:t.hostSpawn,hostResolveCommand:t.hostResolveCommand,jobControl:t.jobControl}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||de.isInSandboxedContext())return;let s=`interpreter ${t} attempted outside defense context`;throw new We(s,{timestamp:Date.now(),type:"missing_defense_context",message:s,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:de.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(s)for(let i of s)r.add(i);if(r.size===0)return Object.create(null);let n=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(n[i]=o)}return n}async executeScript(t){this.assertDefenseContext("execution");let s="",r="",n=0,i=this.ctx.limits.maxOutputSize,o=(a,l)=>{s.length+r.length+a.length+l.length>i&&Le(`total output size exceeded (>${i} bytes), increase executionLimits.maxOutputSize`,"output_size"),s+=a,r+=l};for(let a of t.statements)try{let l=await this.executeStatement(a);o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(l){if(l instanceof G)throw l.prependOutput(s,r),l;if(l instanceof ve)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ze(this.ctx.state.env)};if(l instanceof Te)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ze(this.ctx.state.env)};if(l instanceof Q)throw l;if(l instanceof we)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ze(this.ctx.state.env)};if(l instanceof Ws)return o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ze(this.ctx.state.env)};if(l instanceof Nt)throw l.prependOutput(s,r),l;if(l instanceof He){if(l.message.includes("substring expression < 0"))throw l.prependOutput(s,r),l;o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof rn){o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof ae||l instanceof he){if(this.ctx.state.loopDepth>0)throw l.prependOutput(s,r),l;o(l.stdout,l.stderr);continue}throw l instanceof ue&&l.prependOutput(s,r),l}return{stdout:s,stderr:r,exitCode:n,env:Ze(this.ctx.state.env)}}async executeUserScript(t,s,r=""){return zi(this.ctx,t,s,r,n=>this.executeScript(n))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Zt;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Le(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new Kt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return z;if(t.background&&this.ctx.jobControl?.startBackground){let c=await this.ctx.jobControl.startBackground(t);if(c)return c}this.ctx.state.errexitSafe=!1;let s="",r="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(r+=`${t.sourceText}
|
|
688
|
+
`);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new we(n,s,r);return _(s,r,n)}async executePipeline(t){if(t.timed&&this.ctx.rejectTimedPipelines)throw new Error("Unsupported shell syntax: timed pipelines");return Ii(this.ctx,t,(s,r)=>this.executeCommand(s,r))}async executeCommand(t,s){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return Pi(this.ctx,t);case"For":return Ai(this.ctx,t);case"CStyleFor":return ki(this.ctx,t);case"While":return Ci(this.ctx,t,s);case"Until":return _i(this.ctx,t);case"Case":return Ni(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Kn(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return z}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(r){if(r instanceof qt)return A(r.stderr);throw r}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let w=t,S=100;for(;S>0;){let C=this.expandAlias(w);if(C===w)break;w=C,S--}this.aliasExpansionStack.clear(),w!==t&&(t=w)}this.ctx.state.expansionStderr="";let r=await Li(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let C=await Ce(this.ctx,t.redirections);if(C)return C;let E=_("",i,0);return Z(this.ctx,E,t.redirections)}this.ctx.state.lastArg="";let w=(this.ctx.state.expansionStderr||"")+i;this.ctx.state.expansionStderr="";let S=t.assignments.some(C=>ks(C.value)||C.array?.some(E=>ks(E)));return _("",w,S?this.ctx.state.lastExitCode:0)}let o=t.name&&Kr(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(n.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let w of a)this.ctx.state.tempExportedVars.add(w)}let l=await gs(this.ctx,t.redirections);if(l){for(let[w,S]of n)S===void 0?this.ctx.state.env.delete(w):this.ctx.state.env.set(w,S);return l}let c=-1;for(let w of t.redirections){if((w.operator==="<<"||w.operator==="<<-")&&w.target.type==="HereDoc"){let S=w.target,C=await x(this.ctx,S.content);S.stripTabs&&(C=C.split(`
|
|
689
|
+
`).map(N=>N.replace(/^\t+/,"")).join(`
|
|
690
|
+
`)),C=Ue(C);let E=w.fd??0;E!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),ce(this.ctx),this.ctx.state.fileDescriptors.set(E,C)):s=C;continue}if(w.operator==="<<<"&&w.target.type==="Word"){s=Ue(`${await x(this.ctx,w.target)}
|
|
691
|
+
`);continue}if(w.operator==="<"&&w.target.type==="Word")try{let S=await x(this.ctx,w.target),C=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);s=await Ut(this.ctx.fs,C)}catch{let S=await x(this.ctx,w.target);for(let[C,E]of n)E===void 0?this.ctx.state.env.delete(C):this.ctx.state.env.set(C,E);return A(`bash: ${S}: No such file or directory
|
|
692
|
+
`)}if(w.operator==="<&"&&w.target.type==="Word"){let S=await x(this.ctx,w.target),C=Number.parseInt(S,10);if(!Number.isNaN(C)&&this.ctx.state.fileDescriptors){let E=this.ctx.state.fileDescriptors.get(C);if(E!==void 0)if(E.startsWith("__rw__:")){let N=Oi(E);N&&(s=N.content.slice(N.position),c=C)}else E.startsWith("__file__:")||E.startsWith("__file_append__:")||(s=E)}}}let u=await x(this.ctx,t.name),f=[],d=[];if(Kr(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let w of t.args){let S=await xn(this.ctx,w);if(S)f.push(S),d.push(!0);else{let C=await Dn(this.ctx,w);if(C!==null)f.push(C),d.push(!0);else{let E=await Ie(this.ctx,w);for(let N of E.values)f.push(N),d.push(E.quoted)}}}else for(let w of t.args){let S=await Ie(this.ctx,w);for(let C of S.values)f.push(C),d.push(S.quoted)}if(!u){if(t.name.parts.every(S=>S.type==="CommandSubstitution"||S.type==="ParameterExpansion"||S.type==="ArithmeticExpansion")){if(f.length>0){let S=f.shift();return d.shift(),await this.runCommand(S,f,d,s,!1,!1,c)}return _("","",this.ctx.state.lastExitCode)}return A(`bash: : command not found
|
|
693
|
+
`,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let w of t.redirections){if(w.target.type==="HereDoc"||w.fdVariable)continue;let S=await x(this.ctx,w.target),C=w.fd??(w.operator==="<"||w.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),w.operator){case">":case">|":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);await this.ctx.fs.writeFile(E,"","utf8"),ce(this.ctx),this.ctx.state.fileDescriptors.set(C,`__file__:${E}`);break}case">>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);ce(this.ctx),this.ctx.state.fileDescriptors.set(C,`__file_append__:${E}`);break}case"<":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);try{let N=await this.ctx.fs.readFile(E);ce(this.ctx),this.ctx.state.fileDescriptors.set(C,N)}catch{return A(`bash: ${S}: No such file or directory
|
|
694
|
+
`)}break}case"<>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);try{let N=await this.ctx.fs.readFile(E);ce(this.ctx),this.ctx.state.fileDescriptors.set(C,`__rw__:${E.length}:${E}:0:${N}`)}catch{await this.ctx.fs.writeFile(E,"","utf8"),ce(this.ctx),this.ctx.state.fileDescriptors.set(C,`__rw__:${E.length}:${E}:0:`)}break}case">&":{if(S==="-")this.ctx.state.fileDescriptors.delete(C);else if(S.endsWith("-")){let E=S.slice(0,-1),N=Number.parseInt(E,10);if(!Number.isNaN(N)){let P=this.ctx.state.fileDescriptors.get(N);P!==void 0?this.ctx.state.fileDescriptors.set(C,P):this.ctx.state.fileDescriptors.set(C,`__dupout__:${N}`),this.ctx.state.fileDescriptors.delete(N)}}else{let E=Number.parseInt(S,10);Number.isNaN(E)||(ce(this.ctx),this.ctx.state.fileDescriptors.set(C,`__dupout__:${E}`))}break}case"<&":{if(S==="-")this.ctx.state.fileDescriptors.delete(C);else if(S.endsWith("-")){let E=S.slice(0,-1),N=Number.parseInt(E,10);if(!Number.isNaN(N)){let P=this.ctx.state.fileDescriptors.get(N);P!==void 0?this.ctx.state.fileDescriptors.set(C,P):this.ctx.state.fileDescriptors.set(C,`__dupin__:${N}`),this.ctx.state.fileDescriptors.delete(N)}}else{let E=Number.parseInt(S,10);Number.isNaN(E)||(ce(this.ctx),this.ctx.state.fileDescriptors.set(C,`__dupin__:${E}`))}break}}}for(let[w,S]of n)S===void 0?this.ctx.state.env.delete(w):this.ctx.state.env.set(w,S);if(this.ctx.state.tempExportedVars)for(let w of n.keys())this.ctx.state.tempExportedVars.delete(w);return z}if(this.ctx.state.extraArgs){f.push(...this.ctx.state.extraArgs);for(let w=0;w<this.ctx.state.extraArgs.length;w++)d.push(!0);this.ctx.state.extraArgs=void 0}let m=await Di(this.ctx,u,f);n.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(n)));let p=z,y=null,b,g=this.ctx.currentRedirections;try{let w=!0;if(t.redirections.length>0){let S=await ys(this.ctx,t.redirections);if(S.error)p=A(S.error),w=!1;else{b=S.targets;let C=await Gn(this.ctx,t.redirections,b);C?(p=C,w=!1):this.ctx.currentRedirections=Ba(t.redirections,b)}}w&&(p=await this.runCommand(u,f,d,s,!1,!1,c))}catch(w){if(w instanceof ae||w instanceof he)y=w,p=z;else throw w}finally{this.ctx.currentRedirections=g}let O=i+m;if(O&&(p={...p,stderr:O+p.stderr}),p=await Z(this.ctx,p,t.redirections,b),y)throw y;if(f.length>0){let w=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(w)){let S=w.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);S&&(w=S[1])}this.ctx.state.lastArg=w}else this.ctx.state.lastArg=u;let v=Zn(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!v)for(let[w,S]of n)this.ctx.state.fullyUnsetLocals?.has(w)||(S===void 0?this.ctx.state.env.delete(w):this.ctx.state.env.set(w,S));if(this.ctx.state.tempExportedVars)for(let w of n.keys())this.ctx.state.tempExportedVars.delete(w);return n.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(p={...p,stderr:this.ctx.state.expansionStderr+p.stderr},this.ctx.state.expansionStderr=""),p}async runCommand(t,s,r,n,i=!1,o=!1,a=-1){let l={ctx:this.ctx,runCommand:(u,f,d,h,m,p,y)=>this.runCommand(u,f,d,h,m,p,y),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await $i(l,t,s,r,n,i,o,a);return c!==null?c:Si(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return er(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Ps(this.ctx,t)}async executeSubshell(t,s=""){return Mi(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return Wi(this.ctx,t,s,r=>this.executeStatement(r))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Ce(this.ctx,t.redirections);if(s)return s;try{let r=await U(this.ctx,t.expression.expression),n=J(r!==0);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),Z(this.ctx,n,t.redirections)}catch(r){let n=A(`bash: arithmetic expression: ${r.message}
|
|
695
|
+
`);return Z(this.ctx,n,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Ce(this.ctx,t.redirections);if(s)return s;try{let r=await Qe(this.ctx,t.expression),n=J(r);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),Z(this.ctx,n,t.redirections)}catch(r){let n=r instanceof He?1:2,i=A(`bash: conditional expression: ${r.message}
|
|
696
|
+
`,n);return Z(this.ctx,i,t.redirections)}}};function Ba(e,t){let s=[];for(let r=0;r<e.length;r++){let n=e[r],i=t.get(r);i!==void 0&&s.push({fd:n.fd,operator:n.operator,target:i})}return s}var re={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:1e4,maxJsTimeoutMs:1e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50,maxBraceExpansionResults:1e4,maxOutputSize:10485760,maxFileDescriptors:1024,maxSourceDepth:100};function Bi(e){return e?{maxCallDepth:e.maxCallDepth??re.maxCallDepth,maxCommandCount:e.maxCommandCount??re.maxCommandCount,maxLoopIterations:e.maxLoopIterations??re.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??re.maxAwkIterations,maxSedIterations:e.maxSedIterations??re.maxSedIterations,maxJqIterations:e.maxJqIterations??re.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??re.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??re.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??re.maxJsTimeoutMs,maxGlobOperations:e.maxGlobOperations??re.maxGlobOperations,maxStringLength:e.maxStringLength??re.maxStringLength,maxArrayElements:e.maxArrayElements??re.maxArrayElements,maxHeredocSize:e.maxHeredocSize??re.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??re.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??re.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??re.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??re.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??re.maxSourceDepth}:{...re}}import{lookup as Qa}from"node:dns";function Xr(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function ja(e){let t=Xr(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function ji(e){if(e.includes("\\"))return!0;let t=e.toLowerCase();return t.includes("%2f")||t.includes("%5c")}function Ua(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function Yr(e,t){let s=Xr(e);if(!s)return!1;let r=ja(t);return!r||s.origin!==r.origin||r.pathPrefix!=="/"&&r.pathPrefix!==""&&ji(s.pathname)?!1:Ua(s.pathname,r.pathPrefix)}function Ui(e){return typeof e=="string"?e:e.url}function Hi(e,t){return!t||t.length===0?!1:t.some(s=>Yr(e,Ui(s)))}function Qr(e){let t=Ha(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=qi(t);if(s)return Cs(s);let r=Za(t);return r?Ga(r):!1}function Ha(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function qa(e){if(!e)return null;let t=10,s=e;if(s.startsWith("0x")||s.startsWith("0X")?(t=16,s=s.slice(2)):s.length>1&&s.startsWith("0")&&(t=8),!s||t===16&&!/^[0-9a-fA-F]+$/.test(s)||t===10&&!/^\d+$/.test(s)||t===8&&!/^[0-7]+$/.test(s))return null;let r=Number.parseInt(s,t);return!Number.isFinite(r)||r<0?null:r}function qi(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>qa(l));if(s.some(l=>l===null))return null;let r=s;if(t.length===1){let l=r[0];return l>4294967295?null:[l>>>24&255,l>>>16&255,l>>>8&255,l&255]}if(t.length===2){let[l,c]=r;return l>255||c>16777215?null:[l,c>>>16&255,c>>>8&255,c&255]}if(t.length===3){let[l,c,u]=r;return l>255||c>255||u>65535?null:[l,c,u>>>8&255,u&255]}let[n,i,o,a]=r;return n>255||i>255||o>255||a>255?null:[n,i,o,a]}function Za(e){let t=e,s=null;if(t.includes(".")){let p=t.lastIndexOf(":");if(p<0)return null;let y=t.slice(p+1),b=qi(y);if(!b)return null;s=b,t=t.slice(0,p)}let r=t.includes("::")?t.split("::").length-1:0;if(r>1)return null;let[n,i]=t.split("::"),o=n?n.split(":").filter(Boolean):[],a=i?i.split(":").filter(Boolean):[],l=p=>/^[0-9a-f]{1,4}$/i.test(p)?Number.parseInt(p,16):null,c=o.map(l),u=a.map(l);if(c.some(p=>p===null)||u.some(p=>p===null))return null;let f=s?2:0,d=c.length+u.length+f,h=0;if(r===1){if(h=8-d,h<0)return null}else if(d!==8)return null;let m=[...c,...new Array(h).fill(0),...u];return s&&(m.push(s[0]<<8|s[1]),m.push(s[2]<<8|s[3])),m.length===8?m:null}function Cs(e){let[t,s]=e;return t===127||t===10||t===172&&s>=16&&s<=31||t===192&&s===168||t===169&&s===254||t===0||t===100&&s>=64&&s<=127||t===198&&(s===18||s===19)||t===192&&s===0&&e[2]===0||t===192&&s===0&&e[2]===2||t===198&&s===51&&e[2]===100||t===203&&s===0&&e[2]===113||t>=240}function Ga(e){if(e.every(n=>n===0)||e.slice(0,7).every(n=>n===0)&&e[7]===1||(e[0]&65472)===65152||(e[0]&65024)===64512)return!0;if(e[0]===0&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===65535){let n=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return Cs(n)}if(e[0]===8193&&e[1]===3512)return!0;if(e[0]===100&&e[1]===65435&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===0){let n=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return Cs(n)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let n=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return Cs(n)}return!1}function Zi(e){let t=[];for(let s of e){if(typeof s!="string"&&(s===null||typeof s!="object"||!("url"in s)||typeof s.url!="string")){t.push('Invalid allow-list entry: must be a string URL or an object with a "url" string property');continue}let r=Ui(s);if(!Xr(r)){t.push(`Invalid URL in allow-list: "${r}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let i=new URL(r);if(i.protocol!=="http:"&&i.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${r}"`);continue}if(!i.hostname){t.push(`Allow-list entry must include a hostname: "${r}"`);continue}if(i.pathname!=="/"&&i.pathname!==""&&ji(i.pathname)){t.push(`Allow-list entry contains ambiguous path separators: "${r}"`);continue}(i.search||i.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${r}"`)}return t}var Ka=typeof __BROWSER__<"u"&&__BROWSER__,Et=null,_s=null,Gi=!1;function Xa(){if(Et===null&&!Ka)try{let e=Ms("node:async_hooks");_s=Ms("node:dns"),Et=new e.AsyncLocalStorage}catch{}}function Ya(){if(Gi||(Xa(),!Et||!_s))return;Gi=!0;let e=Et,t=_s.lookup;function s(...r){let n=r[0],i=e.getStore();if(typeof n!="string"||!i||i.hostname.toLowerCase()!==n.toLowerCase())return t.apply(this,r);let o={},a;if(r.length===2)a=r[1];else if(r.length>=3){let c=r[1];typeof c=="number"?o={family:c}:c&&typeof c=="object"&&(o=c),a=r[2]}if(typeof a!="function")return t.apply(this,r);let l=a;if(o.family!==void 0&&o.family!==0&&o.family!==i.family){let c=new Error(`ENOTFOUND ${n}`);c.code="ENOTFOUND",c.errno=-3008,c.syscall="getaddrinfo",c.hostname=n,process.nextTick(()=>l(c));return}process.nextTick(()=>{o.all?l(null,[{address:i.address,family:i.family}]):l(null,i.address,i.family)})}Object.defineProperty(_s,"lookup",{value:s,writable:!0,configurable:!0})}function Ki(e,t){return Ya(),Et?Et.run(e,t):t()}var _e=class extends Error{constructor(t,s){let r=s??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},$t=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},St=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},Ns=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}},Pt=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};function Ja(e){return new Promise((t,s)=>{Qa(e,{all:!0},(r,n)=>{r?s(r):t(n)})})}var el=20,tl=3e4,sl=10485760,rl=["GET","HEAD"],nl=new Set(["GET","HEAD","OPTIONS"]),il=new Set([301,302,303,307,308]);function Jr(e){let t=e.allowedUrlPrefixes??[];if(!e.dangerouslyAllowFullInternetAccess){let h=Zi(t);if(h.length>0)throw new Error(`Invalid network allow-list:
|
|
697
|
+
${h.join(`
|
|
698
|
+
`)}`)}let s=[];for(let h of t)typeof h=="object"&&h.transform&&h.transform.length>0&&s.push(h);function r(h){if(s.length===0)return null;let m=null;for(let p of s)if(Yr(h,p.url)&&p.transform){m||(m=new Headers);for(let y of p.transform)for(let[b,g]of Object.entries(y.headers))m.set(b,g)}return m}let n=e.maxRedirects??el,i=e.timeoutMs??tl,o=e.maxResponseSize??sl,a=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??rl,l=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),c=e._dnsResolve??Ja;async function u(h){if(!e.dangerouslyAllowFullInternetAccess&&!Hi(h,t))throw new _e(h);if(l)try{let m=new URL(h);if(Qr(m.hostname))throw new _e(h,"private/loopback IP address blocked");let p=m.hostname;if(/[a-zA-Z]/.test(p))try{let b=await c(p);for(let{address:O}of b)if(Qr(O))throw new _e(h,"hostname resolves to private/loopback IP address");let g=b[0];if(g)return{hostname:p,address:g.address,family:g.family===6?6:4}}catch(b){if(b instanceof _e)throw b;let g=b?.code;if(!(g==="ENOTFOUND"||g==="ENODATA"))throw new _e(h,"DNS resolution failed for private IP check")}}catch(m){if(m instanceof _e)throw m}return null}function f(h){if(e.dangerouslyAllowFullInternetAccess)return;let m=h.toUpperCase();if(!a.includes(m))throw new Ns(m,a)}async function d(h,m={}){let p=m.method?.toUpperCase()??"GET",y=await u(h);f(p);let b=h,g=0,O=m.followRedirects??!0,v=m.timeoutMs!==void 0?Math.min(m.timeoutMs,i):i;for(;;){let $=new AbortController,w=Vt(()=>$.abort(),v);try{let S=await de.runTrustedAsync(()=>{let C=r(b),E=ol(m.headers,C),N={method:p,headers:E,signal:$.signal,redirect:"manual"};return m.body&&!nl.has(p)&&(N.body=m.body),y?Ki(y,()=>fetch(b,N)):fetch(b,N)});if(il.has(S.status)&&O){let C=S.headers.get("location");if(!C)return await Xi(S,b,o);let E=new URL(C,b).href;try{y=await u(E)}catch{throw new St(E)}if(g++,g>n)throw new $t(n);b=E;continue}return await Xi(S,b,o)}finally{Bt(w)}}}return d}function ol(e,t){if(!e&&!t)return;if(!t)return e;let s=e instanceof Headers?new Headers(e):new Headers(e);for(let[r,n]of t)s.set(r,n);return s}async function Xi(e,t,s){let r=Object.create(null);if(e.headers.forEach((i,o)=>{r[o.toLowerCase()]=i}),s>0){let i=e.headers.get("content-length");if(i){let o=parseInt(i,10);if(!Number.isNaN(o)&&o>s)throw new Pt(s)}}let n;if(s>0&&e.body){let i=e.body.getReader(),o=[],a=0;for(;;){let{done:c,value:u}=await i.read();if(c)break;if(u){if(a+=u.byteLength,a>s)throw i.cancel(),new Pt(s);o.push(u)}}n=new Uint8Array(a);let l=0;for(let c of o)n.set(c,l),l+=c.byteLength}else{let i=await e.arrayBuffer();if(s>0&&i.byteLength>s)throw new Pt(s);n=new Uint8Array(i)}return{status:e.status,statusText:e.statusText,headers:r,body:n,url:t}}function Wt(e){return at(e)}function at(e){return e.statements.map(Yi).join(`
|
|
699
|
+
`)}function Yi(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(al(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let s=t.join(" ");return e.background&&(s+=" &"),s}function al(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let s=[];for(let n=0;n<e.commands.length;n++)if(s.push(Qi(e.commands[n])),n<e.commands.length-1){let i=e.pipeStderr?.[n];s.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+s.join(" ")}function Qi(e){switch(e.type){case"SimpleCommand":return ll(e);case"If":return gl(e);case"For":return wl(e);case"CStyleFor":return vl(e);case"While":return bl(e);case"Until":return El(e);case"Case":return $l(e);case"Subshell":return Pl(e);case"Group":return Al(e);case"ArithmeticCommand":return kl(e);case"ConditionalCommand":return Cl(e);case"FunctionDef":return _l(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function ll(e){let t=[];for(let s of e.assignments)t.push(cl(s));e.name&&t.push(ie(e.name));for(let s of e.args)t.push(ie(s));for(let s of e.redirections)t.push(to(s));return t.join(" ")}function cl(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(ie).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${ie(e.value)}`:`${e.name}${t}`}function ie(e){return e.parts.map(t=>Os(t,!1)).join("")}function tt(e){return e.parts.map(t=>Os(t,!0)).join("")}function Os(e,t){switch(e.type){case"Literal":return t?fl(e.value):ul(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>Os(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Ji(e);case"CommandSubstitution":return e.legacy?`\`${at(e.body)}\``:`$(${at(e.body)})`;case"ArithmeticExpansion":return`$((${H(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${at(e.body)})`:`>(${at(e.body)})`;case"BraceExpansion":return ml(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let s=e;throw new Error(`Unsupported word part type: ${s.type}`)}}}function ul(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function fl(e){return e.replace(/[$`"\\]/g,"\\$&")}function dl(e,t){return e.parts.map(s=>hl(s,t)).join("")}function hl(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Ji(e);case"CommandSubstitution":return e.legacy?`\`${at(e.body)}\``:`$(${at(e.body)})`;case"ArithmeticExpansion":return`$((${H(e.expression.expression)}))`;default:return Os(e,!1)}}function Ji(e){return e.operation?`\${${eo(e.parameter,e.operation)}}`:pl(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function pl(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function eo(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${tt(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${tt(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?tt(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${tt(t.word)}`;case"Substring":{let s=H(t.offset.expression);return t.length?`${e}:${s}:${H(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",r=t.greedy?`${s}${s}`:s;return`${e}${r}${tt(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let r=t.replacement?`/${tt(t.replacement)}`:"";return`${e}${s}${tt(t.pattern)}${r}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",r=t.all?`${s}${s}`:s,n=t.pattern?tt(t.pattern):"";return`${e}${r}${n}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${eo(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let s=t;throw new Error(`Unsupported parameter operation type: ${s.type}`)}}}function ml(e){return`{${e.items.map(yl).join(",")}}`}function yl(e){if(e.type==="Word")return ie(e.word);let t=e.startStr??String(e.start),s=e.endStr??String(e.end);return e.step!==void 0?`${t}..${s}..${e.step}`:`${t}..${s}`}function to(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let s=e.target,r=s.quoted?`'${s.delimiter}'`:s.delimiter,n=dl(s.content,s.quoted);return`${t}${e.operator}${r}
|
|
700
|
+
${n}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${ie(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${ie(e.target)}`:`${t}${e.operator} ${ie(e.target)}`}function Ne(e){return e.length===0?"":` ${e.map(to).join(" ")}`}function Se(e){return e.map(Yi).join(`
|
|
701
|
+
`)}function gl(e){let t=[];for(let s=0;s<e.clauses.length;s++){let r=e.clauses[s],n=s===0?"if":"elif";t.push(`${n} ${Se(r.condition)}; then
|
|
702
|
+
${Se(r.body)}`)}return e.elseBody&&t.push(`else
|
|
703
|
+
${Se(e.elseBody)}`),`${t.join(`
|
|
704
|
+
`)}
|
|
705
|
+
fi${Ne(e.redirections)}`}function wl(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(ie).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
|
|
706
|
+
${Se(e.body)}
|
|
707
|
+
done${Ne(e.redirections)}`}function vl(e){let t=e.init?H(e.init.expression):"",s=e.condition?H(e.condition.expression):"",r=e.update?H(e.update.expression):"";return`for ((${t}; ${s}; ${r})); do
|
|
708
|
+
${Se(e.body)}
|
|
709
|
+
done${Ne(e.redirections)}`}function bl(e){return`while ${Se(e.condition)}; do
|
|
710
|
+
${Se(e.body)}
|
|
711
|
+
done${Ne(e.redirections)}`}function El(e){return`until ${Se(e.condition)}; do
|
|
712
|
+
${Se(e.body)}
|
|
713
|
+
done${Ne(e.redirections)}`}function $l(e){let t=e.items.map(Sl).join(`
|
|
714
|
+
`);return`case ${ie(e.word)} in
|
|
715
|
+
${t}
|
|
716
|
+
esac${Ne(e.redirections)}`}function Sl(e){let t=e.patterns.map(ie).join(" | "),s=Se(e.body);return s?`${t})
|
|
717
|
+
${s}
|
|
718
|
+
${e.terminator}`:`${t})
|
|
719
|
+
${e.terminator}`}function Pl(e){return`(${Se(e.body)})${Ne(e.redirections)}`}function Al(e){return`{ ${Se(e.body)}; }${Ne(e.redirections)}`}function kl(e){return`((${H(e.expression.expression)}))${Ne(e.redirections)}`}function Cl(e){return`[[ ${ot(e.expression)} ]]${Ne(e.redirections)}`}function _l(e){let t=Qi(e.body);return`${e.name}() ${t}${Ne(e.redirections)}`}function H(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${H(e.left)} ${e.operator} ${H(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${H(e.operand)}`:`${H(e.operand)}${e.operator}`;case"ArithTernary":return`${H(e.condition)} ? ${H(e.consequent)} : ${H(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${H(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${H(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${H(e.target)}[${H(e.subscript)}]`:H(e.target)} ${e.operator} ${H(e.value)}`;case"ArithDynamicElement":return`${H(e.nameExpr)}[${H(e.subscript)}]`;case"ArithGroup":return`(${H(e.expression)})`;case"ArithNested":return`$((${H(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${H(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(H).join("");case"ArithDoubleSubscript":return`${e.array}[${H(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function ot(e){switch(e.type){case"CondBinary":return`${ie(e.left)} ${e.operator} ${ie(e.right)}`;case"CondUnary":return`${e.operator} ${ie(e.operand)}`;case"CondNot":return`! ${ot(e.operand)}`;case"CondAnd":return`${ot(e.left)} && ${ot(e.right)}`;case"CondOr":return`${ot(e.left)} || ${ot(e.right)}`;case"CondGroup":return`( ${ot(e.expression)} )`;case"CondWord":return ie(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var zt=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(t={}){let s=t.fs??new je(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),n=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
|
|
720
|
+
`],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Bi({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Jr(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:n,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Ys(this.state.options)),this.state.env.set("BASHOPTS",Qs(this.state.shoptOptions)),kn(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&s instanceof je)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let o of bn(t.commands))this.registerCommand(o);if(t.fetch||t.network)for(let o of En())this.registerCommand(o);if(t.python)for(let o of $n())this.registerCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of Sn())this.registerCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)Pn(o)?this.registerCommand(An(o)):this.registerCommand({...o,trusted:o.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let r=`#!/bin/bash
|
|
721
|
+
# Built-in command: ${t.name}
|
|
722
|
+
`;try{s.writeFileSync(`/bin/${t.name}`,r)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,r)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=ro(t.stdout),t.stderr=ro(t.stderr),t}async exec(t,s){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
|
|
723
|
+
`,exitCode:1,env:be(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:be(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let r=s?.cwd??this.state.cwd,n,i=r;if(s?.cwd)if(s.env&&"PWD"in s.env)n=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{n=await this.fs.realpath(r),i=n}catch{n=r}else n=r;let o=s?.replaceEnv?new Map:new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))o.set(f,d);n!==void 0&&o.set("PWD",n);let a={...this.state,env:o,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:Ol(s?.stdin,s?.stdinKind),signal:s?.signal,extraArgs:s?.args},l=t;s?.rawScript||(l=so(t));let c=this.defenseInDepthConfig?de.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let d=pe(l,{maxHeredocSize:this.limits.maxHeredocSize}),h;if(this.transformPlugins.length>0){let g=Object.create(null);for(let O of this.transformPlugins){let v=O.transform({ast:d,metadata:g});d=v.ast,v.metadata&&(g=xt(g,v.metadata))}h=g}let m={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:c?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},b=await new Mt(m,a).executeScript(d);return h&&(b.metadata=h),this.logResult(b)};return u?await u.run(f):await f()}catch(f){if(f instanceof G)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:be(this.state.env,s?.env)});if(f instanceof ve)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:be(this.state.env,s?.env)});if(f instanceof He)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:be(this.state.env,s?.env)});if(f instanceof Zt)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:be(this.state.env,s?.env)});if(f instanceof Q)return this.logResult({stdout:f.stdout,stderr:De(f.stderr),exitCode:Q.EXIT_CODE,env:be(this.state.env,s?.env)});if(f instanceof We)return this.logResult({stdout:"",stderr:`bash: security violation: ${De(f.message)}
|
|
724
|
+
`,exitCode:1,env:be(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${De(f.message)}
|
|
725
|
+
`,exitCode:2,env:be(this.state.env,s?.env)});if(f instanceof on)return this.logResult({stdout:"",stderr:`bash: ${De(f.message)}
|
|
726
|
+
`,exitCode:2,env:be(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${De(f.message)}
|
|
727
|
+
`,exitCode:1,env:be(this.state.env,s?.env)});throw f}finally{u?.deactivate()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,s){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),s)}getCwd(){return this.state.cwd}getEnv(){return Ze(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=so(t),r=pe(s,{maxHeredocSize:this.limits.maxHeredocSize}),n=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:r,metadata:n});r=o.ast,o.metadata&&(n=xt(n,o.metadata))}return{script:Wt(r),ast:r,metadata:n}}};function so(e){let t=e.split(`
|
|
728
|
+
`),s=[],r=[];for(let n=0;n<t.length;n++){let i=t[n];if(r.length>0){let l=r[r.length-1];if((l.stripTabs?i.replace(/^\t+/,""):i)===l.delimiter){s.push(i.trimStart()),r.pop();continue}s.push(i);continue}let o=i.trimStart();s.push(o);let a=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let l of o.matchAll(a)){let c=l[1]==="-",u=l[3];r.push({delimiter:u,stripTabs:c})}}return s.join(`
|
|
729
|
+
`)}var Nl=new TextDecoder("utf-8",{fatal:!0});function ro(e){if(!e)return e;let t=!1;for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>255)return e;n>127&&(t=!0)}if(!t)return e;let s=new Uint8Array(e.length);for(let r=0;r<e.length;r++)s[r]=e.charCodeAt(r);try{return Nl.decode(s)}catch{return e}}function Ol(e,t){if(e!==void 0)return t==="bytes"?e:Ue(e)}var Ts=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new je,t?.mounts)for(let{mountPoint:s,filesystem:r}of t.mounts)this.mount(s,r)}mount(t,s){this.validateMountPath(t);let r=D(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,filesystem:s})}unmount(t){let s=D(t);if(!this.mounts.has(s))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(s)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}isMountPoint(t){let s=D(t);return this.mounts.has(s)}validateMountPath(t){let s=t.split("/");for(let r of s)if(r==="."||r==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let s of this.mounts.keys())if(s!==t){if(t.startsWith(`${s}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${s}'`);if(s.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${s}'`)}}routePath(t){R(t,"access");let s=D(t),r=null,n=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(s===o)return{fs:i.filesystem,relativePath:"/"};s.startsWith(`${o}/`)&&o.length>n&&(r=i,n=o.length)}if(r){let i=s.slice(n);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:s}}getChildMountPoints(t){let s=D(t),r=s==="/"?"/":`${s}/`,n=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!n.includes(a)&&n.push(a)}return n}async readFile(t,s){let{fs:r,relativePath:n}=this.routePath(t);return r.readFile(n,s)}async readFileBytes(t){let{fs:s,relativePath:r}=this.routePath(t);return Ut(s,r)}async readFileBuffer(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readFileBuffer(r)}async writeFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.writeFile(i,s,r)}async appendFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.appendFile(i,s,r)}async exists(t){let s=D(t);if(this.mounts.has(s)||this.getChildMountPoints(s).length>0)return!0;let{fs:n,relativePath:i}=this.routePath(t);return n.exists(i)}async stat(t){let s=D(t),r=this.mounts.get(s);if(r)try{return await r.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.stat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.stat(o)}async lstat(t){let s=D(t),r=this.mounts.get(s);if(r)try{return await r.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.lstat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,s){let r=D(t);if(this.mounts.has(r)){if(s?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&s?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,s)}async readdir(t){let s=D(t),r=new Set,n=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){let c=l.code,u=l.message||"";if(c!=="ENOENT"&&!u.includes("ENOENT"))throw l;n=l}let a=this.getChildMountPoints(s);for(let l of a)r.add(l);if(r.size===0&&n&&!this.mounts.has(s))throw n;return Array.from(r).sort()}async rm(t,s){let r=D(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,s)}async cp(t,s,r){let n=this.routePath(t),i=this.routePath(s);return n.fs===i.fs?n.fs.cp(n.relativePath,i.relativePath,r):this.crossMountCopy(t,s,r)}async mv(t,s){let r=D(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let n=this.routePath(t),i=this.routePath(s);if(n.fs===i.fs)return n.fs.mv(n.relativePath,i.relativePath);await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){return Xe(t,s)}getAllPaths(){let t=new Set;for(let s of this.baseFs.getAllPaths())t.add(s);for(let s of this.mounts.keys()){let r=s.split("/").filter(Boolean),n="";for(let o of r)n=`${n}/${o}`,t.add(n);let i=this.mounts.get(s);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(s):t.add(`${s}${o}`)}return Array.from(t).sort()}async chmod(t,s){let r=D(t),n=this.mounts.get(r);if(n)return n.filesystem.chmod("/",s);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,s)}async symlink(t,s){let{fs:r,relativePath:n}=this.routePath(s);return r.symlink(t,n)}async link(t,s){let r=this.routePath(t),n=this.routePath(s);if(r.fs!==n.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${s}'`);return r.fs.link(r.relativePath,n.relativePath)}async readlink(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readlink(r)}async realpath(t){let s=D(t);if(this.mounts.get(s))return s;let{fs:n,relativePath:i}=this.routePath(t),o=await n.realpath(i);for(let[a,l]of this.mounts)if(s===a||s.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,s,r){let n=await this.lstat(t);if(n.isFile){let i=await this.readFileBuffer(t);await this.writeFile(s,i),await this.chmod(s,n.mode)}else if(n.isDirectory){if(!r?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(s,{recursive:!0});let i=await this.readdir(t);for(let o of i){let a=Ye(t,o),l=Ye(s,o);await this.crossMountCopy(a,l,r)}}else if(n.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,s)}}async utimes(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.utimes(i,s,r)}};import*as q from"node:fs";import*as le from"node:path";import*as Pe from"node:fs";import*as fe from"node:path";function Oe(e,t){if(e===t)return!0;let s=e[t.length];return(s==="/"||s==="\\")&&e.startsWith(t)}function lt(e,t){try{let s=Pe.realpathSync(e);return Oe(s,t)?s:null}catch(s){if(s.code==="ENOENT"){let r=fe.dirname(e);if(r===e)return null;let n=lt(r,t);if(n===null)return null;try{if(Pe.lstatSync(e).isSymbolicLink()){let o=Pe.readlinkSync(e),a=fe.isAbsolute(o)?o:fe.resolve(fe.dirname(e),o);if(lt(a,t)===null)return null}}catch{}return fe.join(n,fe.basename(e))}return null}}function xs(e,t,s){let r=lt(e,s);if(r===null)return null;let n=fe.resolve(e),i=n.slice(t.length),o=r.slice(s.length);if(i!==o)return null;try{if(Pe.lstatSync(n).isSymbolicLink())return null}catch{}return r}function Ds(e,t){if(!Pe.existsSync(e))throw new Error(`${t} root does not exist`);if(!Pe.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function no(e,t){if(!fe.isAbsolute(e))return{withinRoot:!0,relativePath:e};let s;try{s=Pe.realpathSync(e)}catch{s=fe.resolve(e)}return Oe(s,t)?{withinRoot:!0,relativePath:s.slice(t.length).replace(/\\/g,"/")||"/"}:{withinRoot:!1,safeName:fe.basename(e)}}function Rs(e,t,s,r){let n=e;if(n.path===void 0){for(let o of r)if(n.message?.includes(o))throw e}let i=n.code||"EIO";throw new Error(`${i}: ${s} '${t}'`)}var Tl=["ELOOP","EFBIG","EPERM"],xl="/home/user/project",At=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=le.resolve(t.root);let s=t.mountPoint??xl;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.allowSymlinks=t.allowSymlinks??!1,Ds(this.root,"OverlayFs"),this.canonicalRoot=q.realpathSync(this.root),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let r of t)s+=`/${r}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let n=D(t).split("/").filter(Boolean),i="";for(let o of n)i+=`/${o}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let r=D(t),n=this.getDirname(r);n!=="/"&&this.mkdirSync(n);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(r,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=D(t),r=this.getRelativeToMount(s);if(r===null)return null;let n=le.join(this.root,r),i=le.resolve(n);return Oe(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?lt(t,this.canonicalRoot):xs(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=le.dirname(t),r=this.resolveRealPath_(s);return r===null?null:le.join(r,le.basename(t))}sanitizeError(t,s,r){Rs(t,s,r,Tl)}ensureParentDirs(t){let s=nt(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=D(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)return!1;try{return await q.promises.lstat(r),!0}catch{return!1}}async readFile(t,s){let r=await this.readFileBuffer(t),n=Ee(s);return Ve(r,n)}async readFileBytes(t){let s=await this.readFileBuffer(t);return Ve(s,"binary")}async readFileBuffer(t,s=new Set){R(t,"open");let r=D(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let o=this.resolveSymlink(r,n.target);return this.readFileBuffer(o,s)}if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let o=await q.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let c=await q.promises.readlink(i),u=this.realTargetToVirtual(r,c),f=this.resolveSymlink(r,u);return this.readFileBuffer(f,s)}if(o.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&o.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${o.size} bytes, max ${this.maxFileReadSize})`);let a=this.allowSymlinks?q.constants.O_RDONLY:q.constants.O_RDONLY|q.constants.O_NOFOLLOW,l=await q.promises.open(i,a);try{let c=await l.readFile();return new Uint8Array(c)}finally{await l.close()}}catch(o){let a=o.code;if(a==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(a==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${t}'`);this.sanitizeError(o,t,"open")}}async writeFile(t,s,r){R(t,"write"),this.assertWritable(`write '${t}'`);let n=D(t);this.ensureParentDirs(n);let i=Ee(r),o=ze(s,i);this.memory.set(n,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(n)}async appendFile(t,s,r){R(t,"append"),this.assertWritable(`append '${t}'`);let n=D(t),i=Ee(r),o=ze(s,i),a;try{a=await this.readFileBuffer(n)}catch{a=new Uint8Array(0)}let l=new Uint8Array(a.length+o.length);l.set(a),l.set(o,a.length),this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(n)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){R(t,"stat");let r=D(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let a=this.resolveSymlink(r,n.target);return this.stat(a,s)}let o=0;return n.type==="file"&&(o=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:o,mtime:n.mtime}}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await q.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await q.promises.readlink(i),l=this.realTargetToVirtual(r,a),c=this.resolveSymlink(r,l);return this.stat(c,s)}return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime}}catch(o){if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(o,t,"stat")}}async lstat(t){R(t,"lstat");let s=D(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let r=this.memory.get(s);if(r){if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime};let i=0;return r.type==="file"&&(i=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:i,mtime:r.mtime}}let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await q.promises.lstat(n);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}resolveSymlink(t,s){return ft(t,s)}realTargetToVirtual(t,s){let r=no(s,this.canonicalRoot);if(r.withinRoot){if(!le.isAbsolute(s))return s;let n=r.relativePath;return this.mountPoint==="/"?n:`${this.mountPoint}${n}`}return r.safeName}async mkdir(t,s){R(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=D(t);if(await this.existsInOverlay(r)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=nt(r);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(r,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(r)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Map,n=new Set,i=s==="/"?"/":`${s}/`;for(let a of this.deleted)if(a.startsWith(i)){let l=a.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&n.add(c)}for(let[a,l]of this.memory)if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!n.has(u)&&!c.includes("/",1)&&r.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let o=this.resolveRealPath_(this.toRealPath(s));if(o)try{if(!this.allowSymlinks&&(await q.promises.lstat(o)).isSymbolicLink()){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);return r}let a=await q.promises.readdir(o,{withFileTypes:!0});for(let l of a)!n.has(l.name)&&!r.has(l.name)&&r.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(a){if(a.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else a.code!=="ENOTDIR"&&this.sanitizeError(a,t,"scandir")}return r}async resolveForReaddir(t,s=!1){let r=D(t),n=new Set,i=s,o=this.memory.get(r);for(;o&&o.type==="symlink";){if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(r),i=!0,r=this.resolveSymlink(r,o.target),o=this.memory.get(r)}if(o)return{normalized:r,outsideOverlay:!1};if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let l=this.resolveRealPath_(this.toRealPath(r));if(!l)return{normalized:r,outsideOverlay:!0};try{if((await q.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let u=await q.promises.readlink(l),f=this.realTargetToVirtual(r,u),d=this.resolveSymlink(r,f);return this.resolveForReaddir(d,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){R(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){R(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,s){R(t,"rm"),this.assertWritable(`rm '${t}'`);let r=D(t);if(!await this.existsInOverlay(r)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(r)).isDirectory){let o=await this.readdir(r);if(o.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of o){let l=r==="/"?`/${a}`:`${r}/${a}`;await this.rm(l,s)}}}}catch(i){if(i instanceof Error&&(i.message.includes("ENOTEMPTY")||i.message.includes("EISDIR")))throw i}this.memory.delete(r),this.existsOnRealFs(r)&&this.deleted.add(r)}existsOnRealFs(t){let s=this.toRealPath(t),r=this.resolveRealPathParent_(s);if(!r)return!1;try{return q.lstatSync(r),!0}catch{return!1}}async cp(t,s,r){R(t,"cp"),R(s,"cp"),this.assertWritable(`cp '${s}'`);let n=D(t),i=D(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(n);for(let c of l){let u=n==="/"?`/${c}`:`${n}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){return Xe(t,s)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let r=this.resolveRealPath_(this.toRealPath(t));if(r)try{let n=q.readdirSync(r);for(let i of n){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=le.join(r,i);q.lstatSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){R(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=D(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(r);if(i){i.mode=s;return}let o=await this.stat(r);if(o.isFile){let a=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:a,mode:s,mtime:new Date})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);R(s,"symlink"),this.assertWritable(`symlink '${s}'`);let r=D(s);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.memory.set(r,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(r)}async link(t,s){R(t,"link"),R(s,"link"),this.assertWritable(`link '${s}'`);let r=D(t),n=D(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:o.mode,mtime:new Date}),this.deleted.delete(n)}async readlink(t){R(t,"readlink");let s=D(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let r=this.memory.get(s);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await q.promises.readlink(n);if(!le.isAbsolute(i)){let o=le.resolve(le.dirname(n),i),a;try{a=q.realpathSync(o)}catch{a=o}if(!Oe(a,this.canonicalRoot))return le.basename(i)}return this.realTargetToVirtual(s,i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){R(t,"realpath");let s=D(t),r=new Set,n=async a=>{let l=a==="/"?[]:a.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(c),d=0,h=40;for(;f&&f.type==="symlink"&&d<h;){if(r.add(c),c=this.resolveSymlink(c,f.target),d++,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(c)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let m=this.toRealPath(c),p=this.resolveRealPath_(m);if(p)try{if((await q.promises.lstat(p)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let b=await q.promises.readlink(p),g=this.realTargetToVirtual(c,b);return r.add(c),c=this.resolveSymlink(c,g),n(c)}}catch(y){if(y.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(y,t,"realpath")}else if(!this.allowSymlinks){let y=this.resolveRealPathParent_(m);if(y)try{if((await q.promises.lstat(y)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(b){if(b.message?.includes("ENOENT")||b.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(b,t,"realpath")}}}}return c||"/"},i=await n(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,r){R(t,"utimes"),this.assertWritable(`utimes '${t}'`);let n=D(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.memory.get(n);if(o){o.mtime=r;return}let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:l,mode:a.mode,mtime:r})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:a.mode,mtime:r})}};import*as F from"node:fs";import*as j from"node:path";var Dl=["EACCES","escaping sandbox","EFBIG"],Is=class{root;canonicalRoot;maxFileReadSize;allowSymlinks;constructor(t){this.root=j.resolve(t.root),this.maxFileReadSize=t.maxFileReadSize??10485760,this.allowSymlinks=t.allowSymlinks??!1,Ds(this.root,"ReadWriteFs"),this.canonicalRoot=F.realpathSync(this.root)}resolveAndValidate(t,s){let r=this.allowSymlinks?lt(t,this.canonicalRoot):xs(t,this.root,this.canonicalRoot);if(r===null)throw new Error(`EACCES: permission denied, '${s}' resolves outside sandbox`);return r}validateParent(t,s){let r=j.dirname(t),n=this.resolveAndValidate(r,s);return j.join(n,j.basename(t))}toRealPath(t){let s=D(t),r=j.join(this.root,s);return j.resolve(r)}async readFile(t,s){let r=await this.readFileBuffer(t),n=Ee(s);return Ve(r,n)}async readFileBytes(t){let s=await this.readFileBuffer(t);return Ve(s,"binary")}async readFileBuffer(t){R(t,"open");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{let n=this.allowSymlinks?F.constants.O_RDONLY:F.constants.O_RDONLY|F.constants.O_NOFOLLOW,i=await F.promises.open(r,n);try{if(this.maxFileReadSize>0){let a=await i.stat();if(a.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`)}let o=await i.readFile();return new Uint8Array(o)}finally{await i.close()}}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(i.code==="EISDIR")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(i.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(n,t,"open")}}async writeFile(t,s,r){R(t,"write");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t),o=Ee(r),a=ze(s,o),l=j.dirname(i);try{await F.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(n,t);let c=this.allowSymlinks?0:F.constants.O_NOFOLLOW,u=F.constants.O_WRONLY|F.constants.O_CREAT|F.constants.O_TRUNC|c,f=await F.promises.open(i,u,438);try{await f.writeFile(a)}finally{await f.close()}}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"write")}}async appendFile(t,s,r){R(t,"append");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t),o=Ee(r),a=ze(s,o),l=j.dirname(i);try{await F.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(n,t);let c=this.allowSymlinks?0:F.constants.O_NOFOLLOW,u=F.constants.O_WRONLY|F.constants.O_CREAT|F.constants.O_APPEND|c,f=await F.promises.open(i,u,438);try{await f.writeFile(a)}finally{await f.close()}}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"append")}}async exists(t){if(t.includes("\0"))return!1;let s=this.toRealPath(t);try{let r=this.resolveAndValidate(s,t);return await F.promises.access(r),!0}catch{return!1}}async stat(t){R(t,"stat");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{let n=await F.promises.lstat(r);if(!this.allowSymlinks&&n.isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink(),mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){if(n.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(n,t,"stat")}}async lstat(t){R(t,"lstat");let s=this.toRealPath(t),r=this.validateParent(s,t);try{let n=await F.promises.lstat(r);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink(),mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){if(n.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(n,t,"lstat")}}async mkdir(t,s){R(t,"mkdir");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{await F.promises.mkdir(n,{recursive:s?.recursive})}catch(i){let o=i;if(o.code==="EEXIST")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.sanitizeError(i,t,"mkdir")}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){R(t,"scandir");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{if(!this.allowSymlinks&&(await F.promises.lstat(r)).isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return(await F.promises.readdir(r,{withFileTypes:!0})).map(i=>({name:i.name,isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink()})).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(i.code==="ENOTDIR")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);this.sanitizeError(n,t,"scandir")}}async rm(t,s){R(t,"rm");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{await F.promises.rm(n,{recursive:s?.recursive??!1,force:s?.force??!1})}catch(i){let o=i;if(o.code==="ENOENT"&&!s?.force)throw new Error(`ENOENT: no such file or directory, rm '${t}'`);if(o.code==="ENOTEMPTY")throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);this.sanitizeError(i,t,"rm")}}async cp(t,s,r){R(t,"cp"),R(s,"cp");let n=this.toRealPath(t),i=this.toRealPath(s),o=this.resolveAndValidate(n,t),a=this.resolveAndValidate(i,s);try{await F.promises.cp(o,a,{recursive:r?.recursive??!1,filter:async l=>{try{if(F.lstatSync(l).isSymbolicLink()){let u=await F.promises.realpath(l).catch(()=>null);return u===null?!1:Oe(u,this.canonicalRoot)}return!0}catch(c){return c.code==="ENOENT"}}})}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(c.code==="EISDIR")throw new Error(`EISDIR: is a directory, cp '${t}'`);this.sanitizeError(l,t,"cp")}}async mv(t,s){R(t,"mv"),R(s,"mv");let r=this.toRealPath(t),n=this.toRealPath(s),i=this.validateParent(r,t),o=this.validateParent(n,s);try{if((await F.promises.lstat(i)).isSymbolicLink()){let c=await F.promises.readlink(i),u=j.resolve(j.dirname(o),c),f=await F.promises.realpath(u).catch(()=>u);if(!Oe(f,this.canonicalRoot))throw new Error(`EACCES: permission denied, mv '${t}' -> '${s}' would create symlink escaping sandbox`)}}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(c.message?.includes("EACCES")||c.message?.includes("escaping sandbox"))throw l}let a=j.dirname(o);try{await F.promises.mkdir(a,{recursive:!0})}catch(l){this.sanitizeError(l,s,"mv")}try{await F.promises.rename(i,o)}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(c.code==="EXDEV"){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0});return}this.sanitizeError(l,t,"mv")}try{if(F.lstatSync(o).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw await F.promises.rename(o,i),new Error(`EACCES: permission denied, mv '${t}' -> '${s}' would create symlinks escaping sandbox`)}catch(l){if(l.message?.includes("EACCES")||l.message?.includes("escaping sandbox"))throw l}}resolvePath(t,s){return Xe(t,s)}getAllPaths(){let t=[];return this.scanDir("/",t),t}sanitizeError(t,s,r){Rs(t,s,r,Dl)}findEscapingSymlinks(t){let s=[];try{let r=F.readdirSync(t);for(let n of r){let i=j.join(t,n);try{let o=F.lstatSync(i);if(o.isSymbolicLink()){let a=F.readlinkSync(i),l=j.resolve(t,a),c;try{c=F.realpathSync(l)}catch{c=l}Oe(c,this.canonicalRoot)||s.push(i)}else o.isDirectory()&&s.push(...this.findEscapingSymlinks(i))}catch{}}}catch{}return s}scanDir(t,s){let r=this.toRealPath(t),n;try{n=this.resolveAndValidate(r,t)}catch{return}try{let i=F.readdirSync(n);for(let o of i){let a=t==="/"?`/${o}`:`${t}/${o}`;s.push(a);let l=j.join(n,o);F.lstatSync(l).isDirectory()&&this.scanDir(a,s)}}catch{}}async chmod(t,s){R(t,"chmod");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{let i=this.allowSymlinks?F.constants.O_RDONLY:F.constants.O_RDONLY|F.constants.O_NOFOLLOW,o=await F.promises.open(n,i);try{await o.chmod(s)}finally{await o.close()}}catch(i){let o=i;if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);if(o.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(i,t,"chmod")}}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);R(s,"symlink");let r=this.toRealPath(s),n=this.validateParent(r,s),i=D(s),o=D(j.dirname(i)),a=t.startsWith("/")?D(t):D(o==="/"?`/${t}`:`${o}/${t}`),l=j.join(this.canonicalRoot,a),c=j.dirname(n),u=t.startsWith("/")?l:j.relative(c,l)||".";try{await F.promises.symlink(u,n)}catch(f){if(f.code==="EEXIST")throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.sanitizeError(f,s,"symlink")}}async link(t,s){R(t,"link"),R(s,"link");let r=this.toRealPath(t),n=this.toRealPath(s),i=this.resolveAndValidate(r,t),o=this.resolveAndValidate(n,s);try{await F.promises.link(i,o)}catch(a){let l=a;if(l.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(l.code==="EEXIST")throw new Error(`EEXIST: file already exists, link '${s}'`);if(l.code==="EPERM")throw new Error(`EPERM: operation not permitted, link '${t}'`);this.sanitizeError(a,t,"link")}}async readlink(t){R(t,"readlink");let s=this.toRealPath(t),r=this.validateParent(s,t);try{let n=await F.promises.readlink(r),i=D(t),o=j.dirname(i),a=j.isAbsolute(n)?n:j.resolve(j.dirname(r),n),l=await F.promises.realpath(a).catch(()=>a);if(Oe(l,this.canonicalRoot)){let c=l.slice(this.canonicalRoot.length)||"/";return o==="/"?c.startsWith("/")?c.slice(1)||".":c:j.relative(o,c)}return j.basename(n)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(n,t,"readlink")}}async realpath(t){R(t,"realpath");let s=this.toRealPath(t);try{this.resolveAndValidate(s,t)}catch{throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}let r;try{r=await F.promises.realpath(s)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);if(i.code==="ELOOP")throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);this.sanitizeError(n,t,"realpath")}if(Oe(r,this.canonicalRoot))return r.slice(this.canonicalRoot.length)||"/";throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}async utimes(t,s,r){R(t,"utimes");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t);try{let o=this.allowSymlinks?F.constants.O_RDONLY:F.constants.O_RDONLY|F.constants.O_NOFOLLOW,a=await F.promises.open(i,o);try{await a.utimes(s,r)}finally{await a.close()}}catch(o){let a=o;if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);if(a.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(o,t,"utimes")}}};var kt=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;signal;timeoutMs;abortController=new AbortController;timeoutId;externalAbortListener;resultPromise;constructor(t,s,r,n,i=!1,o,a){this.cmdId=crypto.randomUUID(),this.cwd=r,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=s,this.env=n,this.explicitCwd=i,this.signal=o,this.timeoutMs=a,this.setupCancellation(),this.resultPromise=this.execute()}setupCancellation(){if(this.signal&&(this.signal.aborted?this.abortController.abort(this.signal.reason):(this.externalAbortListener=()=>{this.abortController.abort(this.signal?.reason)},this.signal.addEventListener("abort",this.externalAbortListener,{once:!0}))),this.timeoutMs!==void 0){let t=Math.max(0,this.timeoutMs);this.timeoutId=Vt(()=>{this.abortController.abort(new Error(`sandbox command timeout after ${t}ms`))},t)}}cleanupCancellation(){this.timeoutId!==void 0&&(Bt(this.timeoutId),this.timeoutId=void 0),this.signal&&this.externalAbortListener&&(this.signal.removeEventListener("abort",this.externalAbortListener),this.externalAbortListener=void 0)}async execute(){let t={cwd:this.explicitCwd?this.cwd:void 0,env:this.env,signal:this.abortController.signal};try{let s=await this.bashEnv.exec(this.cmdLine,t);return this.exitCode=s.exitCode,s}finally{this.cleanupCancellation()}}async*logs(){let t=await this.resultPromise;t.stdout&&(yield{type:"stdout",data:t.stdout,timestamp:new Date}),t.stderr&&(yield{type:"stderr",data:t.stderr,timestamp:new Date})}async wait(){return await this.resultPromise,this}async output(){let t=await this.resultPromise;return t.stdout+t.stderr}async stdout(){return(await this.resultPromise).stdout}async stderr(){return(await this.resultPromise).stderr}async kill(){this.abortController.abort(new Error("command killed"))}};var Ls=class e{bashEnv;timeoutMs;constructor(t,s){this.bashEnv=t,this.timeoutMs=s}static async create(t){let s=t?.fs;if(t?.overlayRoot){if(t?.fs)throw new Error("Cannot specify both 'fs' and 'overlayRoot' options");s=new At({root:t.overlayRoot})}let r=new zt({env:t?.env,cwd:t?.cwd,fs:s,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network,defenseInDepth:t?.defenseInDepth});return new e(r,t?.timeoutMs)}async runCommand(t,s,r){let n,i,o,a,l=!1,c,u;if(typeof t=="object"){let p=t,y=[p.cmd,...p.args??[]];n=zs(y),i=p.cwd,o=p.env,a=p.signal,l=p.detached??!1,c=p.stdout,u=p.stderr}else if(Array.isArray(s)){let p=r;n=zs([t,...s]),a=p?.signal}else{n=t;let p=s;i=p?.cwd,o=p?.env}let f=i??this.bashEnv.getCwd(),d=i!==void 0,h=new kt(this.bashEnv,n,f,o,d,a,this.timeoutMs);if(l)return h;let m=await h.wait();if(c){let p=await h.stdout();p&&c.write(p)}if(u){let p=await h.stderr();p&&u.write(p)}return m}async writeFiles(t){let s=this.bashEnv.getCwd();for(let[r,n]of Object.entries(t)){let i;typeof n=="string"?i=n:n.encoding==="base64"?i=Buffer.from(n.content,"base64").toString("utf-8"):i=n.content;let o=this.bashEnv.fs.resolvePath(s,r),a=o.substring(0,o.lastIndexOf("/"))||"/";a!=="/"&&await this.bashEnv.fs.mkdir(a,{recursive:!0}),await this.bashEnv.writeFile(o,i)}}async readFile(t,s){let r=await this.bashEnv.readFile(t);return s==="base64"?Buffer.from(r).toString("base64"):r}async mkDir(t,s){let r=this.bashEnv.fs.resolvePath(this.bashEnv.getCwd(),t);await this.bashEnv.fs.mkdir(r,{recursive:s?.recursive??!1})}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};var Fs=class{violations=[];violationsByType=new Map;options;constructor(t={}){this.options={maxViolationsPerType:t.maxViolationsPerType??100,maxViolationsTotal:t.maxViolationsTotal??1e3,includeStackTraces:t.includeStackTraces??!0,onViolation:t.onViolation??(()=>{}),logToConsole:t.logToConsole??!1}}record(t){let s=this.options.includeStackTraces?t:{...t,stack:void 0};this.violations.unshift(s),this.violations.length>this.options.maxViolationsTotal&&(this.violations.length=this.options.maxViolationsTotal);let r=this.violationsByType.get(t.type);r||(r=[],this.violationsByType.set(t.type,r)),r.length<this.options.maxViolationsPerType&&r.push(s),this.options.logToConsole&&console.warn(`[SecurityViolation] ${t.type}: ${t.message}`,t.path),this.options.onViolation(s)}getViolations(){return[...this.violations]}getViolationsByType(t){return[...this.violationsByType.get(t)??[]]}getSummary(){let t=[];for(let[s,r]of this.violationsByType){if(r.length===0)continue;let n=new Set,i=Number.POSITIVE_INFINITY,o=0;for(let a of r)n.add(a.path),i=Math.min(i,a.timestamp),o=Math.max(o,a.timestamp);t.push({type:s,count:r.length,firstSeen:i,lastSeen:o,paths:Array.from(n)})}return t.sort((s,r)=>r.count-s.count),t}getTotalCount(){return this.violations.length}hasViolations(){return this.violations.length>0}clear(){this.violations=[],this.violationsByType.clear()}createCallback(){return t=>this.record(t)}};function io(){return e=>{console.warn("[DefenseInDepth] Security violation detected:",`
|
|
730
|
+
Type: ${e.type}`,`
|
|
731
|
+
Path: ${e.path}`,`
|
|
732
|
+
Message: ${e.message}`,e.executionId?`
|
|
733
|
+
ExecutionId: ${e.executionId}`:"")}}var en=class{plugins=[];use(t){return this.plugins.push(t),this}transform(t){let s=pe(t),r=Object.create(null);for(let n of this.plugins){let i=n.transform({ast:s,metadata:r});s=i.ast,i.metadata&&(r=xt(r,i.metadata))}return{script:Wt(s),ast:s,metadata:r}}};var tn=class{name="command-collector";transform(t){let s=new Set;return this.walkScript(t.ast,s),{ast:t.ast,metadata:{commands:[...s].sort()}}}walkScript(t,s){for(let r of t.statements)this.walkStatement(r,s)}walkStatement(t,s){for(let r of t.pipelines)this.walkPipeline(r,s)}walkPipeline(t,s){for(let r of t.commands)this.walkCommand(r,s)}walkCommand(t,s){switch(t.type){case"SimpleCommand":if(t.name){let r=this.extractName(t.name);r&&s.add(r)}t.name&&this.walkWordParts(t.name.parts,s);for(let r of t.args)this.walkWordParts(r.parts,s);for(let r of t.assignments)if(r.value&&this.walkWordParts(r.value.parts,s),r.array)for(let n of r.array)this.walkWordParts(n.parts,s);break;case"If":for(let r of t.clauses){for(let n of r.condition)this.walkStatement(n,s);for(let n of r.body)this.walkStatement(n,s)}if(t.elseBody)for(let r of t.elseBody)this.walkStatement(r,s);break;case"For":if(t.words)for(let r of t.words)this.walkWordParts(r.parts,s);for(let r of t.body)this.walkStatement(r,s);break;case"CStyleFor":for(let r of t.body)this.walkStatement(r,s);break;case"While":case"Until":for(let r of t.condition)this.walkStatement(r,s);for(let r of t.body)this.walkStatement(r,s);break;case"Case":this.walkWordParts(t.word.parts,s);for(let r of t.items)for(let n of r.body)this.walkStatement(n,s);break;case"Subshell":case"Group":for(let r of t.body)this.walkStatement(r,s);break;case"ArithmeticCommand":case"ConditionalCommand":break;case"FunctionDef":this.walkCommand(t.body,s);break}}walkWordParts(t,s){for(let r of t)switch(r.type){case"CommandSubstitution":this.walkScript(r.body,s);break;case"ProcessSubstitution":this.walkScript(r.body,s);break;case"DoubleQuoted":this.walkWordParts(r.parts,s);break;case"ParameterExpansion":r.operation&&this.walkParameterOp(r.operation,s);break}}walkParameterOp(t,s){switch(t.type){case"DefaultValue":case"AssignDefault":case"UseAlternative":this.walkWordParts(t.word.parts,s);break;case"ErrorIfUnset":t.word&&this.walkWordParts(t.word.parts,s);break;case"PatternRemoval":this.walkWordParts(t.pattern.parts,s);break;case"PatternReplacement":this.walkWordParts(t.pattern.parts,s),t.replacement&&this.walkWordParts(t.replacement.parts,s);break;case"CaseModification":t.pattern&&this.walkWordParts(t.pattern.parts,s);break;case"Indirection":t.innerOp&&this.walkParameterOp(t.innerOp,s);break}}extractName(t){return t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}};var sn=class{name="tee";options;counter=0;constructor(t){this.options=t}transform(t){let s=[],r=this.options.timestamp??new Date;return{ast:this.transformScript(t.ast,s,r),metadata:{teeFiles:s}}}formatTimestamp(t){return t.toISOString().replace(/:/g,"-")}generateStdoutPath(t,s,r){let n=this.formatTimestamp(r),i=String(t).padStart(3,"0");return`${this.options.outputDir}/${n}-${i}-${s}.stdout.txt`}transformScript(t,s,r){return{...t,statements:t.statements.map(n=>this.transformStatement(n,s,r))}}transformStatement(t,s,r){let n=[],i=[];for(let o=0;o<t.pipelines.length;o++){let a=t.pipelines[o];o>0&&i.push(t.operators[o-1]);let l=this.transformPipeline(a,s,r);if(n.push(l.pipeline),l.origCmdNewIndices!==null){let c=l.origCmdNewIndices;i.push(";"),n.push(this.makePipestatusSave(c)),i.push(";"),n.push(this.makePipestatusRestore(c.length,l.negated))}}return{...t,pipelines:n,operators:i}}transformPipeline(t,s,r){if(t.commands.length<=1)return{pipeline:t,origCmdNewIndices:null,negated:!1};let n=[],i=[],o=[],a=!1;for(let l=0;l<t.commands.length;l++){let c=t.commands[l],u=l===t.commands.length-1;if(c.type!=="SimpleCommand"||!c.name||!this.shouldTarget(c)){o.push(n.length),n.push(c),u||i.push(t.pipeStderr?.[l]??!1);continue}let f=this.getCommandName(c.name)??"unknown",d=this.counter++,h=this.generateStdoutPath(d,f,r),m=this.makeTeeCommand(h),p=this.serializeCommand(c);s.push({commandIndex:d,commandName:f,command:p,stdoutFile:h}),o.push(n.length),n.push(c),i.push(t.pipeStderr?.[l]??!1),n.push(m),u||i.push(!1),a=!0}return a?{pipeline:{...t,negated:!1,commands:n,pipeStderr:i.length>0?i:void 0},origCmdNewIndices:o,negated:t.negated}:{pipeline:t,origCmdNewIndices:null,negated:!1}}makePipestatusSave(t){return{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:t.map((s,r)=>({type:"Assignment",name:`__tps${r}`,value:{type:"Word",parts:[{type:"ParameterExpansion",parameter:`PIPESTATUS[${s}]`,operation:null}]},append:!1,array:null})),name:null,args:[],redirections:[]}],negated:!1}}makePipestatusRestore(t,s){let r=[];for(let n=0;n<t;n++)r.push({type:"Subshell",body:[{type:"Statement",pipelines:[{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"exit"}]},args:[{type:"Word",parts:[{type:"ParameterExpansion",parameter:`__tps${n}`,operation:null}]}],redirections:[]}],negated:!1}],operators:[],background:!1}],redirections:[]});return{type:"Pipeline",commands:r,negated:s}}shouldTarget(t){if(!this.options.targetCommandPattern)return!0;let s=this.getCommandName(t.name);return s!==null&&this.options.targetCommandPattern.test(s)}getCommandName(t){return t&&t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}serializeCommand(t){let s=[];t.name&&s.push(ie(t.name));for(let r of t.args)s.push(ie(r));return s.join(" ")}makeTeeCommand(t){return{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"tee"}]},args:[{type:"Word",parts:[{type:"Literal",value:t}]}],redirections:[]}}};export{zt as Bash,en as BashTransformPipeline,tn as CommandCollectorPlugin,de as DefenseInDepthBox,uo as EMPTY_BYTES,je as InMemoryFs,Ts as MountableFs,_e as NetworkAccessDeniedError,At as OverlayFs,Is as ReadWriteFs,St as RedirectNotAllowedError,Ls as Sandbox,kt as SandboxCommand,We as SecurityViolationError,Fs as SecurityViolationLogger,sn as TeePlugin,$t as TooManyRedirectsError,po as bytesOutput,io as createConsoleViolationCallback,co as decodeBytesToUtf8,vo as defineCommand,Ue as encodeUtf8ToBytes,mo as getCommandNames,wo as getJavaScriptCommandNames,yo as getNetworkCommandNames,go as getPythonCommandNames,jt as latin1FromBytes,pe as parse,Wt as serialize,Ht as stdoutAsBytes,fo as stdoutKind,ho as textOutput,_t as unsafeBytesFromLatin1};
|