@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,778 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{createRequire} from"node:module";const require=createRequire(import.meta.url);
|
|
3
|
+
import{B as Kr,C as Xr,D as de,E as Ge,F as ee,G as Se,H as Wt,I as Yr,J as T,K as Qr,L as Jr,M as Ne,N as Ns,O as st,P as B,a as Vr,b as Ss,c as Br,d as Lt,e as Q,f as V,g as $e,h as se,i as ke,j as ze,k as As,l as Ft,m as jr,n as _s,o as Hr,p as we,q as xe,r as Ur,s as Zr,t as Cs,u as Ps,v as Ve,w as qr,x as Gr,y as Ee,z as ks}from"./chunks/chunk-QPHXCMJV.js";import{a as et,b as tt,c as Me}from"./chunks/chunk-O2BCKSMK.js";import{c as Es}from"./chunks/chunk-NYIPFY36.js";import{a as Fr,b as Wr}from"./chunks/chunk-KRRM5UCC.js";import{a as We,b as ge,c as $s}from"./chunks/chunk-MROECM42.js";import{a as bt,b as bs}from"./chunks/chunk-LNNWMRCB.js";import{a as Ze,b as ye}from"./chunks/chunk-HL4ZS7TX.js";import{a as vt}from"./chunks/chunk-7GBHDJNC.js";import{b as qe,d as Mr,e as ws}from"./chunks/chunk-VZK4FHWJ.js";import{a as ne,b as ue,c as ae,d as pe,e as vs,f as Z,g as Le,h as wt,i as It,j as zr,k as X,l as xt,m as Fe,n as Ce,o as Rt,p as me}from"./chunks/chunk-UVKD35GR.js";import"./chunks/chunk-7JZKVC3F.js";import{a as fe}from"./chunks/chunk-PBOVSFTJ.js";import{a as Pe}from"./chunks/chunk-I4IRHQDW.js";import{a as Lr}from"./chunks/chunk-LNVSXNT7.js";import{resolve as qi}from"node:path";var rt=[{name:"echo",load:async()=>(await import("./chunks/echo-KCOHTNDF.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-LQH5FSAR.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-XXZMDRGE.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-YGNSAGDK.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-P4DKRCDX.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DLOHIA7Q.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DFGSVIX7.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-ECNUFR66.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-HYXTMN3D.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-QQK4FQX6.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-LP4HMCSM.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-S564JCJW.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-FCNDA467.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-25V57VOL.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-77V5O3RE.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-LGNECVQA.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-6NGWULAP.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-BD6KT3BP.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-JCHLTP7S.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-JCHLTP7S.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-JCHLTP7S.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-OHJSRKFS.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-4GRUPTAO.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-XSVZFGAA.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-4C6WOKNK.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-I7PVFJR4.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-Q4VDF6ZO.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-ZI2HIAW7.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-A5KKPWXX.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-G7K6M6HP.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-PYHOZ4D4.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-KUPLVCTS.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-5MF7QZWQ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-YYSO35NS.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-QIR4EDPG.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-MDD72LR6.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-TV7NL7LA.js")).split},{name:"column",load:async()=>(await import("./chunks/column-AQB3A3PJ.js")).column},{name:"join",load:async()=>(await import("./chunks/join-EJ73DYTK.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-UQHPO4OW.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-CZ6UMSZX.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-F3AQ4KAQ.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-VCINTLPD.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-6D7SMPUR.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-4LRQIGRG.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-NY32PQJM.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-NY32PQJM.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YRVAW27Y.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YRVAW27Y.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-AQQWW3QB.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-UWHPYLY7.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-SKL4L7JP.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-SKL4L7JP.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-FGNEKYDU.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-CLP24TE2.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-CLP24TE2.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-W6KOII4Y.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-RZRLGMB3.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-TL7IV4S2.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-OFYBOAUE.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-QHAPNY3Q.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-5AX3ZS3X.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-ZPY52VT2.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-UXDJE6FB.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-XNBNPKSF.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-MCVDIB35.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-4KF52U3Y.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-6YEPULPX.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-U4GYVT3G.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-PHASM44U.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-CGUEOGXQ.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-LCXKCLFC.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-C2N4NQ6S.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-USNWOQCK.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-TZDZDU7T.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-YQ5ZUI2H.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-UGBQQKIH.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-UGBQQKIH.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-UGBQQKIH.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(rt.push({name:"tar",load:async()=>(await import("./chunks/tar-K6HVPBVB.js")).tarCommand}),rt.push({name:"yq",load:async()=>(await import("./chunks/yq-V6YWS23E.js")).yqCommand}),rt.push({name:"xan",load:async()=>(await import("./chunks/xan-LGEJUGOM.js")).xanCommand}),rt.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-W777NCI4.js")).sqlite3Command}));var Os=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Os.push({name:"python3",load:async()=>(await import("./chunks/python3-BQWDPUBM.js")).python3Command}),Os.push({name:"python",load:async()=>(await import("./chunks/python3-BQWDPUBM.js")).pythonCommand}));var Ds=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ds.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-BC6NI55L.js")).jsExecCommand}),Ds.push({name:"node",load:async()=>(await import("./chunks/js-exec-BC6NI55L.js")).nodeStubCommand}));var Qi=[{name:"curl",load:async()=>(await import("./chunks/curl-PLHETP4J.js")).curlCommand}],en=new Map;function Mt(e){return{name:e.name,async execute(t,s){let r=en.get(e.name);if(r||(r=await ye.runTrustedAsync(()=>e.load()),en.set(e.name,r)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:n}=await import("./chunks/flag-coverage-MPBSMQIN.js");n(s.coverage,e.name,t)}return r.execute(t,s)}}}function tn(e){return(e?rt.filter(s=>e.includes(s.name)):rt).map(Mt)}function sn(){return Qi.map(Mt)}function rn(){return Os.map(Mt)}function nn(){return Ds.map(Mt)}function on(e){return"load"in e&&typeof e.load=="function"}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 L(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 W(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function Ke(e){let t=L(e);if(t==="/")return"/";let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}function zt(e,t){if(t.startsWith("/"))return L(t);let s=e==="/"?`/${t}`:`${e}/${t}`;return L(s)}function $t(e,t){return e==="/"?`/${t}`:`${e}/${t}`}function nt(e,t){if(t.startsWith("/"))return L(t);let s=Ke(e);return L($t(s,t))}var it=new TextEncoder;function Ji(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var Et=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):Ji(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}ensureParentDirs(t){let s=Ke(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){W(t,"write");let i=L(t);this.ensureParentDirs(i);let o=Me(r),a=et(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}writeFileLazy(t,s,r){W(t,"write");let n=L(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"?it.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=Me(s);return tt(r,n)}async readFileBytes(t){let s=await this.readFileBuffer(t);return tt(s,"binary")}async readFileBuffer(t){W(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:it.encode(n.content)}return r.content instanceof Uint8Array?r.content:it.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){W(t,"append");let n=L(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=Me(r),a=et(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:it.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){W(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=it.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){W(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=it.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=L(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=nt(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=L(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=nt(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){W(t,"mkdir");let r=L(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=Ke(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){W(t,"scandir");let s=L(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=nt(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){W(t,"rm");let r=L(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=$t(r,o);await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){W(t,"cp"),W(s,"cp");let n=L(t),i=L(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=$t(n,l),u=$t(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 zt(t,s)}async chmod(t,s){W(t,"chmod");let r=L(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){W(s,"symlink");let r=L(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){W(t,"link"),W(s,"link");let r=L(t),n=L(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){W(t,"readlink");let s=L(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){W(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){W(t,"utimes");let n=L(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 to(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 ro(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Vr}
|
|
4
|
+
`),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
|
|
5
|
+
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>Ss(t)):e.writeFileSync("/proc/self/status",Ss(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 cn(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){eo(e)&&(to(e,t),so(e),ro(e,s))}var no=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],io=["braceexpand","hashall","interactive-comments"];function Is(e){let t=[],s=[...io.map(r=>({name:r,enabled:!0})),...no.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 at(e){e.state.env.set("SHELLOPTS",Is(e.state.options))}var oo=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function xs(e){let t=[];for(let s of oo)e[s]&&t.push(s);return t.join(":")}function Rs(e){e.state.env.set("BASHOPTS",xs(e.state.shoptOptions))}var ao="BASH_ALIAS_";function un(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function fn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function dn(e,t){return e.env.get(`${ao}${t}`)}function Ls(e,t,s){if(!t.name||!un(t.name))return t;let r=fn(t.name);if(!r)return t;let n=dn(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new V,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=pn(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof Lt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return hn(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return hn(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(un(f)){let d=fn(f);if(d&&dn(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},p=Ls(e,h,s);p!==h&&(u={...u,name:p.name,args:[...p.args]})}}}return u}catch(i){throw s.delete(r),i}}function hn(e,t){let s=t;for(let o of e.args){let a=pn(o);s+=` ${a}`}let r=new V,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 pn(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 mn(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+=Ft({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await Ne(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await T(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 yn(e,t){let s=-1,r=-1,n=!1;for(let m=0;m<t.parts.length;m++){let y=t.parts[m];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=m,r=b,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(O)){s=m,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=m,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 m of i)f+=await T(e,{type:"Word",parts:[m]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await T(e,d):"";return`${f}${n?"+=":"="}${h}`}var lo=["tar","yq","xan","sqlite3","python3","python"];function gn(e){return lo.includes(e)}var M=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function _(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function k(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function Y(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Oe(e,t,s="",r=""){throw new X(e,t,s,r)}function oe(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new X(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function Fs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Fe;return k("",`bash: break: only meaningful in a loop
|
|
6
|
+
`,0)}if(t.length>1)throw new Ce(1,"",`bash: break: too many arguments
|
|
7
|
+
`);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r))throw new Ce(128,"",`bash: break: ${t[0]}: numeric argument required
|
|
8
|
+
`);if(r<1)throw new ne(1,"",`bash: break: loop count out of range
|
|
9
|
+
`);s=r}throw new ne(s)}async function Ws(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 _(`bash: cd: too many arguments
|
|
10
|
+
`,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 p=h.startsWith("/")?`${h}/${s}`:`${e.state.cwd}/${h}/${s}`;try{if((await e.fs.stat(p)).isDirectory){s=p,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 _(`bash: cd: ${s}: Not a directory
|
|
11
|
+
`)}catch{return _(`bash: cd: ${s}: No such file or directory
|
|
12
|
+
`)}}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),F(r?`${u}
|
|
13
|
+
`:"")}function Ms(e,t){return e.fs.resolvePath(e.state.cwd,t)}var co=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function Bt(e){return co.includes(e)}async function jt(e,t,s){let r=Ms(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 uo=["-nt","-ot","-ef"];function Ht(e){return uo.includes(e)}async function Ut(e,t,s,r){let n=Ms(e,s),i=Ms(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 fo=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Zt(e){return fo.has(e)}function qt(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 St(e){return e==="="||e==="=="||e==="!="}function Gt(e,t,s,r=!1,n=!1,i=!1){if(r){let a=lt(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 ho=new Set(["-z","-n"]);function Kt(e){return ho.has(e)}function Xt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Yt(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 V,l=Q(a,n);o=await B(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=se(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
|
|
14
|
+
`,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
|
|
15
|
+
`,!1}return e.state.env.has(`${r}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?ze(e,t).length>0:se(e,t).length>0}async function Be(e,t){switch(t.type){case"CondBinary":{let s=await T(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 T(e,t.right);n=Xr(i)}else n=await Qr(e,t.right);else St(t.operator)&&!r?n=await Jr(e,t.right):n=await T(e,t.right);if(St(t.operator)){let i=e.state.shoptOptions.nocasematch;return Gt(t.operator,s,n,!r,i,!0)}if(Zt(t.operator))return qt(t.operator,await vn(e,s),await vn(e,n));if(Ht(t.operator))return Ut(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=go(n),l=vt(o,i?"i":"").match(s);if(ke(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 T(e,t.operand);return Bt(t.operator)?jt(e,t.operator,s):Kt(t.operator)?Xt(t.operator,s):t.operator==="-v"?await Yt(e,s):t.operator==="-o"?Vs(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await T(e,t.operand.expression.word)})`!=="":!await Be(e,t.operand);case"CondAnd":return await Be(e,t.left)?await Be(e,t.right):!1;case"CondOr":return await Be(e,t.left)?!0:await Be(e,t.right);case"CondGroup":return await Be(e,t.expression);case"CondWord":return await T(e,t.word)!=="";default:return!1}}async function At(e,t){if(t.length===0)return k("","",1);if(t.length===1)return Y(!!t[0]);if(t.length===2){let r=t[0],n=t[1];return r==="("?_(`test: '(' without matching ')'
|
|
16
|
+
`,2):Bt(r)?Y(await jt(e,r,n)):Kt(r)?Y(Xt(r,n)):r==="!"?Y(!n):r==="-v"?Y(await Yt(e,n)):r==="-o"?Y(Vs(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"?_(`test: ${r}: unary operator expected
|
|
17
|
+
`,2):k("","",1)}if(t.length===3){let r=t[0],n=t[1],i=t[2];if(St(n))return Y(Gt(n,r,i));if(Zt(n)){let o=Qt(r),a=Qt(i);return!o.valid||!a.valid?k("","",2):Y(qt(n,o.value,a.value))}if(Ht(n))return Y(await Ut(e,n,r,i));switch(n){case"-a":return Y(r!==""&&i!=="");case"-o":return Y(r!==""||i!=="");case">":return Y(r>i);case"<":return Y(r<i)}if(r==="!"){let o=await At(e,[n,i]);return k("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return Y(n!=="")}if(t.length===4){if(t[0]==="!"){let r=await At(e,t.slice(1));return k("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return At(e,[t[1],t[2]])}let s=await $n(e,t,0);return s.pos<t.length?_(`test: too many arguments
|
|
18
|
+
`,2):Y(s.value)}async function $n(e,t,s){return po(e,t,s)}async function po(e,t,s){let{value:r,pos:n}=await wn(e,t,s);for(;t[n]==="-o";){let i=await wn(e,t,n+1);r=r||i.value,n=i.pos}return{value:r,pos:n}}async function wn(e,t,s){let{value:r,pos:n}=await zs(e,t,s);for(;t[n]==="-a";){let i=await zs(e,t,n+1);r=r&&i.value,n=i.pos}return{value:r,pos:n}}async function zs(e,t,s){if(t[s]==="!"){let{value:r,pos:n}=await zs(e,t,s+1);return{value:!r,pos:n}}return mo(e,t,s)}async function mo(e,t,s){let r=t[s];if(r==="("){let{value:i,pos:o}=await $n(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let n=t[s+1];if(St(n)){let i=r,o=t[s+2]??"";return{value:Gt(n,i,o),pos:s+3}}if(Zt(n)){let i=Qt(r),o=Qt(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:qt(n,i.value,o.value),pos:s+3}}if(Ht(n)){let i=r,o=t[s+2]??"";return{value:await Ut(e,n,i,o),pos:s+3}}if(Bt(r)){let i=t[s+1]??"";return{value:await jt(e,r,i),pos:s+2}}if(Kt(r)){let i=t[s+1]??"";return{value:Xt(r,i),pos:s+2}}if(r==="-v"){let i=t[s+1]??"";return{value:await Yt(e,i),pos:s+2}}if(r==="-o"){let i=t[s+1]??"";return{value:Vs(e,i),pos:s+2}}return{value:r!==void 0&&r!=="",pos:s+1}}function lt(e,t,s=!1,r=!1){let n=`^${En(t,r)}$`;return vt(n,s?"is":"s").test(e)}function En(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=Sn(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=An(o),l=a.map(u=>En(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=>_n(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 p=[];h>0&&p.push(`.{0,${h-1}}`),p.push(`.{${h+1},}`),p.push(`(?!(?:${c})).{${h}}`),s+=`(?:${p.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 Sn(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 An(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 _n(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=Sn(e,r+1);if(i!==-1){if(n==="@"){let o=e.slice(r+2,i),l=An(o).map(c=>_n(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 Vs(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 vn(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 bn(t);try{let s=new V,r=Q(s,t);return await B(e,r.expression)}catch{return bn(t)}}function yo(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 bn(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=yo(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 Qt(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 go(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=wo(e,s);t+=r.converted,s=r.endIndex}else t+=e[s],s++;return t}function wo(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+=vo(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 vo(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 De(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===`
|
|
19
|
+
`)&&!r&&!n){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function Jt(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 Cn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:De(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 bo(e,t){try{let s=new V,r=Q(s,t);return await B(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Pn(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=ee(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 bo(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&&de(e,r),null}function je(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function ct(e,t){return e.state.localVarDepth?.get(t)}function es(e,t){e.state.localVarDepth?.delete(t)}function kn(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 ts(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Nn(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 Bs=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function On(e){return Bs.has(e)}var js=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),ut=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 He(e,t,s,r){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
|
|
20
|
+
`;if(r.checkNoclobber&&e.state.options.noclobber&&!r.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
|
|
21
|
+
`}catch{}return null}function Te(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 $o(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 ss(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(Ns(e,n.target))return{targets:s,error:`bash: $@: ambiguous redirect
|
|
22
|
+
`};s.set(r,await T(e,n.target))}else{let o=await st(e,n.target);if("error"in o)return{targets:s,error:o.error};s.set(r,o.target)}}return{targets:s}}function Eo(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 rs(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 T(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=Eo(e);if(e.state.env.set(s.fdVariable,String(r)),s.target.type==="Word"){let n=await T(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&&(oe(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"),oe(e),e.state.fileDescriptors.set(r,`__file__:${i}`)}else if(s.operator==="<<<")oe(e),e.state.fileDescriptors.set(r,`${n}
|
|
23
|
+
`);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,n),o=await e.fs.readFile(i);oe(e),e.state.fileDescriptors.set(r,o)}catch{return k("",`bash: ${n}: No such file or directory
|
|
24
|
+
`,1)}}}return null}async function Ae(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 T(e,s.target),n==="-"||!Number.isNaN(Number.parseInt(n,10))||s.fd!=null)continue}else{let a=await st(e,s.target);if("error"in a)return k("",a.error,1);n=a.target}let i=e.fs.resolvePath(e.state.cwd,n),o=s.operator===">|";if(i.includes("\0"))return k("",`bash: ${n}: No such file or directory
|
|
25
|
+
`,1);try{let a=await e.fs.stat(i);if(a.isDirectory)return k("",`bash: ${n}: Is a directory
|
|
26
|
+
`,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&n!=="/dev/null")return k("",`bash: ${n}: cannot overwrite existing file
|
|
27
|
+
`,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 k("",`bash: /dev/full: No space left on device
|
|
28
|
+
`,1)}return null}async function Dn(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 T(e,n.target);else{let u=await st(e,n.target);if("error"in u)return k("",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 k("",`bash: ${o}: No such file or directory
|
|
29
|
+
`,1);let c=await He(e,l,o,{checkNoclobber:!0,isClobber:n.operator===">|"});if(c)return k("",c,1)}return null}async function U(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 st(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(Ns(e,b.target)){i+=`bash: $@: ambiguous redirect
|
|
30
|
+
`,o=1,n="";continue}g=await T(e,b.target)}else{let E=await st(e,b.target);if("error"in E){i+=E.error,o=1,n="";continue}g=E.target}if(!b.fdVariable){if(g.includes("\0")){i+=`bash: ${g.replace(/\0/g,"")}: No such file or directory
|
|
31
|
+
`,o=1,n="";continue}switch(b.operator){case">":case">|":{let v=b.fd??1,E=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
|
|
32
|
+
`,o=1,n="";break}let w=e.fs.resolvePath(e.state.cwd,g),S=await He(e,w,g,{checkNoclobber:!0,isClobber:E});if(S){i+=S,o=1,n="";break}let P=s[y-1];if(P&&(P.operator===">&"||P.operator==="<&")&&(P.fd??1)===2){let N=r?.get(y-1)??await T(e,P.target);if(N==="1"||N==="&1"){await e.fs.writeFile(w,a,f(a)),n=l,i="";break}}let $=s[y+1];if($&&($.operator===">&"||$.operator==="<&")&&($.fd??1)===2){let N=r?.get(y+1)??await T(e,$.target);if(N==="1"||N==="&1"){let A=n+i;await e.fs.writeFile(w,A,f(A)),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
|
|
33
|
+
`,o=1;break}if(g==="/dev/null")i="";else{let w=e.fs.resolvePath(e.state.cwd,g),S=await He(e,w,g,{checkNoclobber:!0,isClobber:E});if(S){i+=S,o=1;break}await e.fs.writeFile(w,i,Te(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
|
|
34
|
+
`,o=1,n="";break}let E=e.fs.resolvePath(e.state.cwd,g),w=await He(e,E,g,{});if(w){i+=w,o=1,n="";break}await e.fs.appendFile(E,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
|
|
35
|
+
`,o=1;break}let E=e.fs.resolvePath(e.state.cwd,g),w=await He(e,E,g,{});if(w){i+=w,o=1;break}await e.fs.appendFile(E,i,Te(i)),i=""}break}case">&":case"<&":{let v=b.fd??1;if(g==="-"){if(v===1){let E=s[y-1];if(E&&(E.operator===">&"||E.operator==="<&")&&(E.fd??1)===2){let w=r?.get(y-1)??await T(e,E.target);n=w==="1"||w==="&1"?l:""}else n=""}else v===2&&(i="");break}if(g.endsWith("-")){let E=g.slice(0,-1),w=Number.parseInt(E,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
|
|
36
|
+
`,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 E=Number.parseInt(g,10);if(Number.isNaN(E)){if(b.operator===">&"){let w=e.fs.resolvePath(e.state.cwd,g),S=await He(e,w,g,{checkNoclobber:!0});if(S){i=S,o=1,n="";break}if(b.fd==null){let P=n+i;await e.fs.writeFile(w,P,f(P)),n="",i=""}else v===1?(await e.fs.writeFile(w,n,f(n)),n=""):v===2&&(await e.fs.writeFile(w,i,Te(i)),i="")}}else{let w=e.state.fileDescriptors?.get(E);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,Te(i)),i="")}else if(w?.startsWith("__rw__:")){let S=$o(w);S&&(v===1?(await e.fs.appendFile(S.path,n,f(n)),n=""):v===2&&(await e.fs.appendFile(S.path,i,Te(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 P=e.state.fileDescriptors?.get(S);if(P?.startsWith("__file__:")){let $=P.slice(9);v===1?(await e.fs.appendFile($,n,f(n)),n=""):v===2&&(await e.fs.appendFile($,i,Te(i)),i="")}}}else w?.startsWith("__dupin__:")?(i+=`bash: ${E}: Bad file descriptor
|
|
37
|
+
`,o=1,n=""):E>=3&&(i+=`bash: ${E}: Bad file descriptor
|
|
38
|
+
`,o=1,n="")}}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),E=await He(e,v,g,{checkNoclobber:!0});if(E){i=E,o=1,n="";break}let w=s[y+1];if(w&&(w.operator===">"||w.operator===">|"||w.operator===">>")&&(w.fd??1)===1){let P=await d(y+1);if(P!==null){let $=e.fs.resolvePath(e.state.cwd,P);await e.fs.writeFile(v,i,Te(i)),w.operator===">>"?await e.fs.appendFile($,n,f(n)):await e.fs.writeFile($,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
|
|
40
|
+
`,o=1,n="";break}let v=e.fs.resolvePath(e.state.cwd,g),E=await He(e,v,g,{});if(E){i=E,o=1,n="";break}let w=s[y+1];if(w&&(w.operator===">"||w.operator===">|"||w.operator===">>")&&(w.fd??1)===1){let P=await d(y+1);if(P!==null){let $=e.fs.resolvePath(e.state.cwd,P);await e.fs.appendFile(v,i,Te(i)),w.operator===">>"?await e.fs.appendFile($,n,f(n)):await e.fs.writeFile($,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 p=e.state.fileDescriptors?.get(2);if(p){if(p==="__dupout__:1")n+=i,i="";else if(p.startsWith("__file__:")){let y=p.slice(9);await e.fs.appendFile(y,i,Te(i)),i=""}else if(p.startsWith("__file_append__:")){let y=p.slice(16);await e.fs.appendFile(y,i,Te(i)),i=""}}let m=k(n,i,o);return t.stdoutKind&&(m.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(m.stdoutEncoding="binary"),m}function Tn(e,t){if(e.state.options.posix&&Bs.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
|
|
41
|
+
`;throw new Z(2,"",r)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),M}async function So(e,t){let s="";for(let r of t)if((r.operator==="<<"||r.operator==="<<-")&&r.target.type==="HereDoc"){let n=r.target,i=await T(e,n.content);n.stripTabs&&(i=i.split(`
|
|
42
|
+
`).map(a=>a.replace(/^\t+/,"")).join(`
|
|
43
|
+
`)),(r.fd??0)===0&&(s=i)}else if(r.operator==="<<<"&&r.target.type==="Word")s=`${await T(e,r.target)}
|
|
44
|
+
`;else if(r.operator==="<"&&r.target.type==="Word"){let n=await T(e,r.target),i=e.fs.resolvePath(e.state.cwd,n);try{s=await e.fs.readFile(i)}catch{}}return s}async function ns(e,t,s,r="",n){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Oe(`${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(Nn(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 ss(e,t.redirections);if(l)return o(),k("",l,1);try{let c=await So(e,t.redirections),u=r||c,f=await e.executeCommand(t.body,u);return o(),U(e,f,t.redirections,a)}catch(c){if(o(),c instanceof ae){let u=k(c.stdout,c.stderr,c.exitCode);return U(e,u,t.redirections,a)}throw c}}var xn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],Us=[".",":","[","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"],Ao=["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"],_o=Us;async function Zs(e,t){let s=[],r=null,n="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,h=[],p=["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 E=t[v];if(E==="-v")s.push("variable");else if(E==="-e")s.push("export");else if(E==="-f")s.push("file");else if(E==="-d")s.push("directory");else if(E==="-k")s.push("keyword");else if(E==="-A"){if(v++,v>=t.length)return _(`compgen: -A: option requires an argument
|
|
45
|
+
`,2);let w=t[v];if(!p.includes(w))return _(`compgen: ${w}: invalid action name
|
|
46
|
+
`,2);s.push(w)}else if(E==="-W"){if(v++,v>=t.length)return _(`compgen: -W: option requires an argument
|
|
47
|
+
`,2);r=t[v]}else if(E==="-P"){if(v++,v>=t.length)return _(`compgen: -P: option requires an argument
|
|
48
|
+
`,2);n=t[v]}else if(E==="-S"){if(v++,v>=t.length)return _(`compgen: -S: option requires an argument
|
|
49
|
+
`,2);i=t[v]}else if(E==="-o"){if(v++,v>=t.length)return _(`compgen: -o: option requires an argument
|
|
50
|
+
`,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 _(`compgen: ${w}: invalid option name
|
|
51
|
+
`,2)}else if(E==="-F"){if(v++,v>=t.length)return _(`compgen: -F: option requires an argument
|
|
52
|
+
`,2);f=t[v]}else if(E==="-C"){if(v++,v>=t.length)return _(`compgen: -C: option requires an argument
|
|
53
|
+
`,2);d=t[v]}else if(E==="-X"){if(v++,v>=t.length)return _(`compgen: -X: option requires an argument
|
|
54
|
+
`,2);u=t[v]}else if(E==="-G"){if(v++,v>=t.length)return _(`compgen: -G: option requires an argument
|
|
55
|
+
`,2)}else if(E==="--"){h.push(...t.slice(v+1));break}else E.startsWith("-")||h.push(E)}o=h[0]??null;let m=[];if(l){let v=await Hs(e,o);m.push(...v)}if(c){let v=await In(e,o);m.push(...v)}for(let v of s)if(v==="variable"){let E=Co(e,o);m.push(...E)}else if(v==="export"){let E=Po(e,o);m.push(...E)}else if(v==="function"){let E=ko(e,o);m.push(...E)}else if(v==="builtin"){let E=No(o);m.push(...E)}else if(v==="keyword"){let E=Oo(o);m.push(...E)}else if(v==="alias"){let E=Do(e,o);m.push(...E)}else if(v==="shopt"){let E=To(o);m.push(...E)}else if(v==="helptopic"){let E=Io(o);m.push(...E)}else if(v==="directory"){let E=await Hs(e,o);m.push(...E)}else if(v==="file"){let E=await In(e,o);m.push(...E)}else if(v==="user"){let E=xo(o);m.push(...E)}else if(v==="command"){let E=await Ro(e,o);m.push(...E)}if(r!==null)try{let v=await Lo(e,r),E=Fo(e,v);for(let w of E)(o===null||w.startsWith(o))&&m.push(w)}catch{return k("","",1)}if(a){let v=await Hs(e,o);for(let E of v)m.includes(E)||m.push(E)}let y="";if(f!==null){let v=e.state.functions.get(f);if(v){let E=new Map;E.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),E.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),E.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),E.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let w=new Map;for(let P of e.state.env.keys())(P==="COMPREPLY"||P.startsWith("COMPREPLY_")||P==="COMPREPLY__length")&&(w.set(P,e.state.env.get(P)),e.state.env.delete(P));let S=["compgen",h[0]??"",""];try{let P=await ns(e,v,S,"");if(P.exitCode!==0)return ft(e,E),ft(e,w),k("",P.stderr,1);y=P.stdout;let $=Wo(e);m.push(...$)}catch{return ft(e,E),ft(e,w),k("","",1)}ft(e,E),ft(e,w)}}if(d!==null)try{let v=$e(d),E=await e.executeScript(v);if(E.exitCode!==0)return k("",E.stderr,E.exitCode);if(E.stdout){let w=E.stdout.split(`
|
|
56
|
+
`);for(let S of w)S.length>0&&m.push(S)}}catch(v){if(v.name==="ParseException")return _(`compgen: -C: ${v.message}
|
|
57
|
+
`,2);throw v}let b=m;if(u!==null){let v=u.startsWith("!"),E=v?u.slice(1):u;b=m.filter(w=>{let S=lt(w,E,!1,!0);return v?S:!S})}if(b.length===0&&o!==null)return k(y,"",1);let g=b.map(v=>`${n}${v}${i}`).join(`
|
|
58
|
+
`),O=y+(g?`${g}
|
|
59
|
+
`:"");return F(O)}function Co(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 Po(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 ko(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function No(e){let t=[...Us];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Oo(e){let t=[...xn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Do(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 To(e){let t=[...Ao];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Io(e){let t=[..._o];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Hs(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 In(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 xo(e){return["root","nobody"]}async function Ro(e,t){let s=new Set;for(let i of Us)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 xn)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 Lo(e,t){let r=new V().parseWordFromString(t,!1,!1);return await T(e,r)}function Fo(e,t){let s=e.state.env.get("IFS")??`
|
|
60
|
+
`;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 ft(e,t){for(let[s,r]of t)r===void 0?e.state.env.delete(s):e.state.env.set(s,r)}function Wo(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let n=Ee(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 Mo=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Gs(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 _(`complete: -W: option requires an argument
|
|
61
|
+
`,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return _(`complete: -F: option requires an argument
|
|
62
|
+
`,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return _(`complete: -o: option requires an argument
|
|
63
|
+
`,2);let h=t[f];if(!Mo.includes(h))return _(`complete: ${h}: invalid option name
|
|
64
|
+
`,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return _(`complete: -A: option requires an argument
|
|
65
|
+
`,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return _(`complete: -C: option requires an argument
|
|
66
|
+
`,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return _(`complete: -G: option requires an argument
|
|
67
|
+
`,2)}else if(d==="-P"){if(f++,f>=t.length)return _(`complete: -P: option requires an argument
|
|
68
|
+
`,2)}else if(d==="-S"){if(f++,f>=t.length)return _(`complete: -S: option requires an argument
|
|
69
|
+
`,2)}else if(d==="-X"){if(f++,f>=t.length)return _(`complete: -X: option requires an argument
|
|
70
|
+
`,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(),F("");for(let f of u)e.state.completionSpecs.delete(f);return F("")}if(s)return u.length===0?qs(e):qs(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return qs(e);if(o&&u.length===0&&!n)return _(`complete: -F: option requires a command name
|
|
71
|
+
`,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),F("")}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 F("")}function qs(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
|
|
72
|
+
`;return k("",i,1)}return F("")}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 k(r.join(`
|
|
73
|
+
`)+(r.length>0?`
|
|
74
|
+
`:""),`complete: ${i}: no completion specification
|
|
75
|
+
`,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?F(""):F(`${r.join(`
|
|
76
|
+
`)}
|
|
77
|
+
`)}var Rn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ks(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 _(`compopt: -o: option requires an argument
|
|
78
|
+
`,2);let c=t[a];if(!Rn.includes(c))return _(`compopt: ${c}: invalid option name
|
|
79
|
+
`,2);n.push(c)}else if(l==="+o"){if(a++,a>=t.length)return _(`compopt: +o: option requires an argument
|
|
80
|
+
`,2);let c=t[a];if(!Rn.includes(c))return _(`compopt: ${c}: invalid option name
|
|
81
|
+
`,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),F("")}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),F("")}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 F("")}return _(`compopt: not currently executing completion function
|
|
82
|
+
`,1)}function Xs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Fe;return k("",`bash: continue: only meaningful in a loop
|
|
83
|
+
`,0)}if(t.length>1)throw new Ce(1,"",`bash: continue: too many arguments
|
|
84
|
+
`);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r))throw new Ce(128,"",`bash: continue: ${t[0]}: numeric argument required
|
|
85
|
+
`);if(r<1)throw new ne(1,"",`bash: continue: loop count out of range
|
|
86
|
+
`);s=r}throw new ue(s)}function G(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 Ys(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Qs(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 is(e){return Ys(e)?Qs(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Xe(e){return Ys(e)?Qs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Js(e){return Ys(e)?Qs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ln(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),we(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 er(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Fn(e,t){let s="",r="",n=!1;for(let i of t){let o=Ln(e,i);if(e.state.associativeArrays?.has(i)){let u=ze(e,i);if(u.length===0)s+=`declare -A ${i}=()
|
|
87
|
+
`;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",p=er(h);return`['${d}']=${p}`});s+=`declare -A ${i}=(${f.join(" ")})
|
|
88
|
+
`}continue}let l=se(e,i);if(l.length>0){let u=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${Xe(d)}`});s+=`declare -a ${i}=(${u.join(" ")})
|
|
89
|
+
`;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
|
|
90
|
+
`;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${Js(c)}
|
|
91
|
+
`;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${o} ${i}
|
|
92
|
+
`:(r+=`bash: declare: ${i}: not found
|
|
93
|
+
`,n=!0)}}return k(s,r,n?1:0)}function Wn(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),p=f.slice(d+1);if(/^\d+$/.test(p)||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=Ln(e,f),h=e.state.associativeArrays?.has(f),p=se(e,f),m=!h&&(p.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!h||i&&!m||s&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||n&&!we(e,f)))continue;if(h){let b=ze(e,f);if(b.length===0)l+=`declare -A ${f}=()
|
|
94
|
+
`;else{let g=b.map(O=>{let v=e.state.env.get(`${f}_${O}`)??"",E=er(v);return`['${O}']=${E}`});l+=`declare -A ${f}=(${g.join(" ")})
|
|
95
|
+
`}continue}if(p.length>0){let b=p.map(g=>{let O=e.state.env.get(`${f}_${g}`)??"";return`[${g}]=${Xe(O)}`});l+=`declare -a ${f}=(${b.join(" ")})
|
|
96
|
+
`;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
|
|
97
|
+
`;continue}let y=e.state.env.get(f);y!==void 0&&(l+=`declare ${d} ${f}=${Js(y)}
|
|
98
|
+
`)}return F(l)}function Mn(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let r of s){let n=ze(e,r);if(n.length===0)t+=`declare -A ${r}=()
|
|
99
|
+
`;else{let i=n.map(o=>{let a=e.state.env.get(`${r}_${o}`)??"",l=er(a);return`['${o}']=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
|
|
100
|
+
`}}return F(t)}function zn(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=se(e,n);if(i.length===0)t+=`declare -a ${n}=()
|
|
101
|
+
`;else{let o=i.map(a=>{let l=e.state.env.get(`${n}_${a}`)??"";return`[${a}]=${Xe(l)}`});t+=`declare -a ${n}=(${o.join(" ")})
|
|
102
|
+
`}}return F(t)}function Vn(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)||se(e,n).length>0||e.state.env.has(`${n}__length`))continue;let a=e.state.env.get(n);a!==void 0&&(t+=`${n}=${is(a)}
|
|
103
|
+
`)}return F(t)}function tr(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function _t(e,t){return e.state.integerVars?.has(t)??!1}function sr(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function zo(e,t){return e.state.lowercaseVars?.has(t)??!1}function rr(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Vo(e,t){return e.state.uppercaseVars?.has(t)??!1}function dt(e,t,s){return zo(e,t)?s.toLowerCase():Vo(e,t)?s.toUpperCase():s}async function Bn(e,t){try{let s=new V,r=Q(s,t),n=await B(e,r.expression);return String(n)}catch{return"0"}}function Bo(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 nr(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,p=!1,m=!1,y=!1,b=[];for(let $=0;$<t.length;$++){let N=t[$];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($+1));break}else if(N.startsWith("+")){for(let A of N.slice(1))if(A==="n")l=!0;else if(A==="a")c=!0;else if(A==="x")u=!0;else if(A!=="r"){if(A!=="i"){if(!(A==="f"||A==="F"))return k("",`bash: typeset: +${A}: invalid option
|
|
104
|
+
`,2)}}}else if(N==="-i")f=!0;else if(N==="-l")d=!0;else if(N==="-u")h=!0;else if(N==="-f")p=!0;else if(N==="-F")m=!0;else if(N==="-g")y=!0;else if(N.startsWith("-"))for(let A of N.slice(1))if(A==="a")s=!0;else if(A==="A")r=!0;else if(A==="r")n=!0;else if(A==="x")i=!0;else if(A==="p")o=!0;else if(A==="n")a=!0;else if(A==="i")f=!0;else if(A==="l")d=!0;else if(A==="u")h=!0;else if(A==="f")p=!0;else if(A==="F")m=!0;else if(A==="g")y=!0;else return k("",`bash: typeset: -${A}: invalid option
|
|
105
|
+
`,2);else b.push(N)}let O=e.state.localScopes.length>0&&!y,v=$=>{if(!O)return;let N=e.state.localScopes[e.state.localScopes.length-1];N.has($)||N.set($,e.state.env.get($))},E=$=>{if(!O)return;let N=e.state.localScopes[e.state.localScopes.length-1];N.has($)||N.set($,e.state.env.get($));let A=`${$}_`;for(let I of e.state.env.keys())I.startsWith(A)&&!I.includes("__")&&(N.has(I)||N.set(I,e.state.env.get(I)));let D=`${$}__length`;e.state.env.has(D)&&!N.has(D)&&N.set(D,e.state.env.get(D))},w=$=>{O&&je(e,$)};if(m){if(b.length===0){let A=Array.from(e.state.functions.keys()).sort(),D="";for(let I of A)D+=`declare -f ${I}
|
|
106
|
+
`;return F(D)}let $=!0,N="";for(let A of b)e.state.functions.has(A)?N+=`${A}
|
|
107
|
+
`:$=!1;return k(N,"",$?0:1)}if(p){if(b.length===0){let N="",A=Array.from(e.state.functions.keys()).sort();for(let D of A)N+=`${D} ()
|
|
108
|
+
{
|
|
109
|
+
# function body
|
|
110
|
+
}
|
|
111
|
+
`;return F(N)}let $=!0;for(let N of b)e.state.functions.has(N)||($=!1);return k("","",$?0:1)}if(o&&b.length>0)return Fn(e,b);if(o&&b.length===0)return Wn(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(b.length===0&&r&&!o)return Mn(e);if(b.length===0&&s&&!o)return zn(e);if(b.length===0&&!o)return Vn(e);let S="",P=0;for(let $ of b){let N=$.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(N&&!c){let C=N[1],x=N[2];if(r&&se(e,C).length>0){S+=`bash: declare: ${C}: cannot convert indexed to associative array
|
|
112
|
+
`,P=1;continue}if((s||!r&&!s)&&e.state.associativeArrays?.has(C)){S+=`bash: declare: ${C}: cannot convert associative to indexed array
|
|
113
|
+
`,P=1;continue}if(E(C),r&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(C)),ke(e,C),e.state.env.delete(C),e.state.env.delete(`${C}__length`),r&&x.includes("[")){let R=Jt(x);for(let[J,z]of R){let K=G(e,z);e.state.env.set(`${C}_${J}`,K)}}else if(r){let R=De(x);for(let J=0;J<R.length;J+=2){let z=R[J],K=J+1<R.length?G(e,R[J+1]):"";e.state.env.set(`${C}_${z}`,K)}}else{let R=De(x);if(R.some(z=>/^\[[^\]]+\]=/.test(z))){let z=0;for(let K of R){let re=K.match(/^\[([^\]]+)\]=(.*)$/);if(re){let he=re[1],Je=re[2],Ki=G(e,Je),gt;if(/^-?\d+$/.test(he))gt=Number.parseInt(he,10);else try{let Xi=new V,Yi=Q(Xi,he);gt=await B(e,Yi.expression)}catch{gt=0}e.state.env.set(`${C}_${gt}`,Ki),z=gt+1}else{let he=G(e,K);e.state.env.set(`${C}_${z}`,he),z++}}}else{for(let z=0;z<R.length;z++)e.state.env.set(`${C}_${z}`,R[z]);e.state.env.set(`${C}__length`,String(R.length))}}w(C),n&&de(e,C),i&&Se(e,C);continue}if(l){let C=$.includes("=")?$.slice(0,$.indexOf("=")):$;if(Ur(e,C),!$.includes("="))continue}if(u){let C=$.includes("=")?$.slice(0,$.indexOf("=")):$;if(Wt(e,C),!$.includes("="))continue}let A=Bo($);if(A){let{name:C,indexExpr:x,value:R}=A,J=ee(e,C);if(J)return J;E(C);let z;try{let re=new V,he=Q(re,x);z=await B(e,he.expression)}catch{let re=parseInt(x,10);z=Number.isNaN(re)?0:re}e.state.env.set(`${C}_${z}`,R);let K=parseInt(e.state.env.get(`${C}__length`)??"0",10);z>=K&&e.state.env.set(`${C}__length`,String(z+1)),w(C),n&&de(e,C),i&&Se(e,C);continue}let D=$.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(D&&!c){let C=D[1],x=D[2],R=ee(e,C);if(R)return R;E(C);let J=De(x);if(e.state.associativeArrays?.has(C)){let z=Jt(x);for(let[K,re]of z){let he=G(e,re);e.state.env.set(`${C}_${K}`,he)}}else{let z=se(e,C),K=0,re=e.state.env.get(C);z.length===0&&re!==void 0?(e.state.env.set(`${C}_0`,re),e.state.env.delete(C),K=1):z.length>0&&(K=Math.max(...z)+1);for(let Je=0;Je<J.length;Je++)e.state.env.set(`${C}_${K+Je}`,G(e,J[Je]));let he=K+J.length;e.state.env.set(`${C}__length`,String(he))}w(C),n&&de(e,C),i&&Se(e,C);continue}let I=$.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(I){let C=I[1],x=G(e,I[2]),R=ee(e,C);if(R)return R;v(C),f&&tr(e,C),d&&sr(e,C),h&&rr(e,C);let z=se(e,C).length>0||e.state.associativeArrays?.has(C);if(_t(e,C)){let K=e.state.env.get(C)??"0",re=parseInt(K,10)||0,he=parseInt(await Bn(e,x),10)||0;x=String(re+he),e.state.env.set(C,x)}else if(z){x=dt(e,C,x);let K=`${C}_0`,re=e.state.env.get(K)??"";e.state.env.set(K,re+x)}else{x=dt(e,C,x);let K=e.state.env.get(C)??"";e.state.env.set(C,K+x)}w(C),n&&de(e,C),i&&Se(e,C),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(C));continue}if($.includes("=")){let C=$.indexOf("="),x=$.slice(0,C),R=$.slice(C+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(x)){S+=`bash: typeset: \`${x}': not a valid identifier
|
|
114
|
+
`,P=1;continue}let J=ee(e,x);if(J)return J;if(v(x),a){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){S+=`bash: declare: \`${R}': invalid variable name for name reference
|
|
115
|
+
`,P=1;continue}e.state.env.set(x,R),xe(e,x),R!==""&&Ps(e,R)&&Cs(e,x),w(x),n&&de(e,x),i&&Se(e,x);continue}if(f&&tr(e,x),d&&sr(e,x),h&&rr(e,x),_t(e,x)&&(R=await Bn(e,R)),R=dt(e,x,R),we(e,x)){let z=Ve(e,x);z&&z!==x?e.state.env.set(z,R):e.state.env.set(x,R)}else e.state.env.set(x,R);w(x),n&&de(e,x),i&&Se(e,x),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(x))}else{let C=$;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(C)){S+=`bash: typeset: \`${C}': not a valid identifier
|
|
116
|
+
`,P=1;continue}if(s||r?E(C):v(C),a){xe(e,C);let R=e.state.env.get(C);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?Zr(e,C):R&&Ps(e,R)&&Cs(e,C),w(C),n&&de(e,C),i&&Se(e,C);continue}if(f&&tr(e,C),d&&sr(e,C),h&&rr(e,C),r){if(se(e,C).length>0){S+=`bash: declare: ${C}: cannot convert indexed to associative array
|
|
117
|
+
`,P=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(C)}let x=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${C}_`)&&!R.startsWith(`${C}__length`));!e.state.env.has(C)&&!x&&(s||r?e.state.env.set(`${C}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(C))),w(C),n&&de(e,C),i&&Se(e,C)}}return k("",S,P)}async function ir(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}"
|
|
118
|
+
`}}return F(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=ee(e,f);if(h)return h;let p=De(d);if(e.state.associativeArrays?.has(f)){let m=Jt(d);for(let[y,b]of m){let g=G(e,b);e.state.env.set(`${f}_${y}`,g)}}else{let m=se(e,f),y=0,b=e.state.env.get(f);m.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),y=1):m.length>0&&(y=Math.max(...m)+1);for(let O=0;O<p.length;O++)e.state.env.set(`${f}_${y+O}`,G(e,p[O]));let g=y+p.length;e.state.env.set(`${f}__length`,String(g))}de(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=G(e,l[2]),h=ee(e,f);if(h)return h;let p=e.state.env.get(f)??"";e.state.env.set(f,p+d),de(e,f);continue}let c=Cn(o);if(c.value===void 0&&!c.isArray){de(e,c.name);continue}let u=await Pn(e,c,{makeReadonly:!0});if(u)return u}return M}function or(e){return e.state.directoryStack??=[],e.state.directoryStack}function ht(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function jo(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=or(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 _(`bash: pushd: too many arguments
|
|
119
|
+
`,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return _(`bash: pushd: ${l}: invalid option
|
|
120
|
+
`,2);if(r!==void 0)return _(`bash: pushd: too many arguments
|
|
121
|
+
`,2);r=l}}if(r===void 0){if(s.length<1)return _(`bash: pushd: no other directory
|
|
122
|
+
`,1);let a=s.shift();if(!a)return _(`bash: pushd: no other directory
|
|
123
|
+
`,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=>ht(f,c)).join(" ")}
|
|
124
|
+
`;return F(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=jo(n);try{if(!(await e.fs.stat(n)).isDirectory)return _(`bash: pushd: ${r}: Not a directory
|
|
125
|
+
`,1)}catch{return _(`bash: pushd: ${r}: No such file or directory
|
|
126
|
+
`,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=>ht(a,i)).join(" ")}
|
|
127
|
+
`;return F(o)}function lr(e,t){let s=or(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?_(`bash: popd: ${o}: invalid option
|
|
128
|
+
`,2):_(`bash: popd: too many arguments
|
|
129
|
+
`,2);if(s.length===0)return _(`bash: popd: directory stack empty
|
|
130
|
+
`,1);let r=s.shift();if(!r)return _(`bash: popd: directory stack empty
|
|
131
|
+
`,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=>ht(o,n)).join(" ")}
|
|
132
|
+
`;return F(i)}function cr(e,t){let s=or(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 _(`bash: dirs: -${f}: invalid option
|
|
133
|
+
`,2);else return _(`bash: dirs: too many arguments
|
|
134
|
+
`,1);if(r)return e.state.directoryStack=[],M;let a=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=n?u:ht(u,l);return` ${f} ${d}`}).join(`
|
|
135
|
+
`),c+=`
|
|
136
|
+
`):i?c=a.map(u=>n?u:ht(u,l)).join(`
|
|
137
|
+
`)+`
|
|
138
|
+
`:c=a.map(u=>n?u:ht(u,l)).join(" ")+`
|
|
139
|
+
`,F(c)}async function os(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 _(`bash: eval: ${a}: invalid option
|
|
140
|
+
eval: usage: eval [arg ...]
|
|
141
|
+
`,2)}if(r.length===0)return M;let n=r.join(" ");if(n.trim()==="")return M;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=$e(n);return await e.executeScript(a)}catch(a){if(a instanceof ne||a instanceof ue||a instanceof ae||a instanceof Z)throw a;if(a.name==="ParseException")return _(`bash: eval: ${a.message}
|
|
142
|
+
`);if(a.message?.startsWith("Unsupported shell syntax:"))return _(`bash: eval: ${a.message}
|
|
143
|
+
`,2);throw a}finally{e.state.groupStdin=i}}function ur(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
|
|
144
|
+
`,s=2):t.length>1?(r=`bash: exit: too many arguments
|
|
145
|
+
`,s=1):s=(i%256+256)%256}throw new Z(s,"",r)}function fr(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}"
|
|
146
|
+
`}}return F(o)}if(s){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=G(e,o.slice(c+1)),e.state.env.set(a,l)}else a=o;Wt(e,a)}return M}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=G(e,u[2]),c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=G(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
|
|
147
|
+
`,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,"");Se(e,a)}return k("",n,i)}function as(e,t){if(t.length<2)return _(`bash: getopts: usage: getopts optstring name [arg ...]
|
|
148
|
+
`);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 m=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let y=1;y<=m;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"),as(e,t);let h=o.indexOf(d);if(h===-1){let m="";return i?e.state.env.set("OPTARG",d):m=`bash: illegal option -- ${d}
|
|
149
|
+
`,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:m}}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 m="";return i?(e.state.env.set("OPTARG",d),n||e.state.env.set(r,":")):(m=`bash: option requires an argument -- ${d}
|
|
150
|
+
`,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:m}}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 dr(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 p=t[c];if(p==="--"){c++,l.push(...t.slice(c));break}if(p==="-r")s=!0,c++;else if(p==="-d")r=!0,c++;else if(p==="-l")n=!0,c++;else if(p==="-t")o=!0,c++;else if(p==="-p"){if(i=!0,c++,c>=t.length)return _(`bash: hash: -p: option requires an argument
|
|
151
|
+
`,1);a=t[c],c++}else if(p.startsWith("-")&&p.length>1){for(let m of p.slice(1))if(m==="r")s=!0;else if(m==="d")r=!0;else if(m==="l")n=!0;else if(m==="t")o=!0;else return m==="p"?_(`bash: hash: -p: option requires an argument
|
|
152
|
+
`,1):_(`bash: hash: -${m}: invalid option
|
|
153
|
+
`,1);c++}else l.push(p),c++}if(s)return e.state.hashTable.clear(),M;if(r){if(l.length===0)return _(`bash: hash: -d: option requires an argument
|
|
154
|
+
`,1);let p=!1,m="";for(let y of l)e.state.hashTable.has(y)?e.state.hashTable.delete(y):(m+=`bash: hash: ${y}: not found
|
|
155
|
+
`,p=!0);return p?_(m,1):M}if(o){if(l.length===0)return _(`bash: hash: -t: option requires an argument
|
|
156
|
+
`,1);let p="",m=!1,y="";for(let b of l){let g=e.state.hashTable.get(b);g?l.length>1?p+=`${b} ${g}
|
|
157
|
+
`:p+=`${g}
|
|
158
|
+
`:(y+=`bash: hash: ${b}: not found
|
|
159
|
+
`,m=!0)}return m?{exitCode:1,stdout:p,stderr:y}:F(p)}if(i){if(l.length===0)return _(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
|
|
160
|
+
`,1);let p=l[0];return e.state.hashTable.set(p,a),M}if(l.length===0){if(e.state.hashTable.size===0)return F(`hash: hash table empty
|
|
161
|
+
`);let p="";if(n)for(let[m,y]of e.state.hashTable)p+=`builtin hash -p ${y} ${m}
|
|
162
|
+
`;else{p=`hits command
|
|
163
|
+
`;for(let[,m]of e.state.hashTable)p+=` 1 ${m}
|
|
164
|
+
`}return F(p)}let u=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let p of l){if(p.includes("/")){f+=`bash: hash: ${p}: cannot use / in name
|
|
165
|
+
`,u=!0;continue}let m=!1;for(let y of h){if(!y)continue;let b=`${y}/${p}`;if(await e.fs.exists(b)){e.state.hashTable.set(p,b),m=!0;break}}m||(f+=`bash: hash: ${p}: not found
|
|
166
|
+
`,u=!0)}return u?_(f,1):M}var jn=new Map([[":",[": [arguments]",`Null command.
|
|
167
|
+
No effect; the command does nothing.
|
|
168
|
+
Exit Status:
|
|
169
|
+
Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
|
|
170
|
+
Read and execute commands from FILENAME in the current shell.
|
|
171
|
+
The entries in $PATH are used to find the directory containing FILENAME.
|
|
172
|
+
Exit Status:
|
|
173
|
+
Returns the status of the last command executed in FILENAME.`]],["[",["[ arg... ]",`Evaluate conditional expression.
|
|
174
|
+
This is a synonym for the "test" builtin, but the last argument must
|
|
175
|
+
be a literal \`]', to match the opening \`['.`]],["alias",["alias [-p] [name[=value] ... ]",`Define or display aliases.
|
|
176
|
+
Without arguments, \`alias' prints the list of aliases in the reusable
|
|
177
|
+
form \`alias NAME=VALUE' on standard output.
|
|
178
|
+
Exit Status:
|
|
179
|
+
alias returns true unless a NAME is supplied for which no alias has been
|
|
180
|
+
defined.`]],["bg",["bg [job_spec ...]",`Move jobs to the background.
|
|
181
|
+
Place the jobs identified by each JOB_SPEC in the background, as if they
|
|
182
|
+
had been started with \`&'.`]],["break",["break [n]",`Exit for, while, or until loops.
|
|
183
|
+
Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing
|
|
184
|
+
loops.
|
|
185
|
+
Exit Status:
|
|
186
|
+
The exit status is 0 unless N is not greater than or equal to 1.`]],["builtin",["builtin [shell-builtin [arg ...]]",`Execute shell builtins.
|
|
187
|
+
Execute SHELL-BUILTIN with arguments ARGs without performing command
|
|
188
|
+
lookup. This is useful when you wish to reimplement a shell builtin
|
|
189
|
+
as a shell function, but need to execute the builtin within the function.
|
|
190
|
+
Exit Status:
|
|
191
|
+
Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is
|
|
192
|
+
not a shell builtin.`]],["caller",["caller [expr]",`Return the context of the current subroutine call.
|
|
193
|
+
Without EXPR, returns "$line $filename". With EXPR, returns
|
|
194
|
+
"$line $subroutine $filename"; this extra information can be used to
|
|
195
|
+
provide a stack trace.
|
|
196
|
+
Exit Status:
|
|
197
|
+
Returns 0 unless the shell is not executing a subroutine call or
|
|
198
|
+
EXPR is invalid.`]],["cd",["cd [-L|-P] [dir]",`Change the shell working directory.
|
|
199
|
+
Change the current directory to DIR. The default DIR is the value of the
|
|
200
|
+
HOME shell variable.
|
|
201
|
+
|
|
202
|
+
The variable CDPATH defines the search path for the directory containing
|
|
203
|
+
DIR. Alternative directory names in CDPATH are separated by a colon (:).
|
|
204
|
+
A null directory name is the same as the current directory. If DIR begins
|
|
205
|
+
with a slash (/), then CDPATH is not used.
|
|
206
|
+
|
|
207
|
+
If the directory is not found, and the shell option \`cdable_vars' is set,
|
|
208
|
+
the word is assumed to be a variable name. If that variable has a value,
|
|
209
|
+
its value is used for DIR.
|
|
210
|
+
|
|
211
|
+
Options:
|
|
212
|
+
-L force symbolic links to be followed
|
|
213
|
+
-P use the physical directory structure without following symbolic
|
|
214
|
+
links
|
|
215
|
+
|
|
216
|
+
The default is to follow symbolic links, as if \`-L' were specified.
|
|
217
|
+
|
|
218
|
+
Exit Status:
|
|
219
|
+
Returns 0 if the directory is changed; non-zero otherwise.`]],["command",["command [-pVv] command [arg ...]",`Execute a simple command or display information about commands.
|
|
220
|
+
Runs COMMAND with ARGS suppressing shell function lookup, or display
|
|
221
|
+
information about the specified COMMANDs.
|
|
222
|
+
|
|
223
|
+
Options:
|
|
224
|
+
-p use a default value for PATH that is guaranteed to find all of
|
|
225
|
+
the standard utilities
|
|
226
|
+
-v print a description of COMMAND similar to the \`type' builtin
|
|
227
|
+
-V print a more verbose description of each COMMAND
|
|
228
|
+
|
|
229
|
+
Exit Status:
|
|
230
|
+
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.
|
|
231
|
+
Intended to be used from within a shell function generating possible
|
|
232
|
+
completions. If the optional WORD argument is supplied, matches against
|
|
233
|
+
WORD are generated.
|
|
234
|
+
Exit Status:
|
|
235
|
+
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.
|
|
236
|
+
For each NAME, specify how arguments are to be completed.
|
|
237
|
+
Exit Status:
|
|
238
|
+
Returns success unless an invalid option is supplied or an error occurs.`]],["continue",["continue [n]",`Resume for, while, or until loops.
|
|
239
|
+
Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.
|
|
240
|
+
If N is specified, resumes the Nth enclosing loop.
|
|
241
|
+
Exit Status:
|
|
242
|
+
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.
|
|
243
|
+
Declare variables and give them attributes. If no NAMEs are given,
|
|
244
|
+
display the attributes and values of all variables.
|
|
245
|
+
|
|
246
|
+
Options:
|
|
247
|
+
-a to make NAMEs indexed arrays (if supported)
|
|
248
|
+
-A to make NAMEs associative arrays (if supported)
|
|
249
|
+
-i to make NAMEs have the \`integer' attribute
|
|
250
|
+
-l to convert the value of each NAME to lower case on assignment
|
|
251
|
+
-n make NAME a reference to the variable named by its value
|
|
252
|
+
-r to make NAMEs readonly
|
|
253
|
+
-t to make NAMEs have the \`trace' attribute
|
|
254
|
+
-u to convert the value of each NAME to upper case on assignment
|
|
255
|
+
-x to make NAMEs export
|
|
256
|
+
|
|
257
|
+
Exit Status:
|
|
258
|
+
Returns success unless an invalid option is supplied or a variable
|
|
259
|
+
assignment error occurs.`]],["dirs",["dirs [-clpv] [+N] [-N]",`Display directory stack.
|
|
260
|
+
Display the list of currently remembered directories. Directories
|
|
261
|
+
find their way onto the list with the \`pushd' command; you can get
|
|
262
|
+
back up through the list with the \`popd' command.
|
|
263
|
+
Exit Status:
|
|
264
|
+
Returns success unless an invalid option is supplied or an error occurs.`]],["disown",["disown [-h] [-ar] [jobspec ...]",`Remove jobs from current shell.
|
|
265
|
+
Without any JOBSPECs, remove the current job.`]],["echo",["echo [-neE] [arg ...]",`Write arguments to the standard output.
|
|
266
|
+
Display the ARGs, separated by a single space character and followed by a
|
|
267
|
+
newline, on the standard output.
|
|
268
|
+
|
|
269
|
+
Options:
|
|
270
|
+
-n do not append a newline
|
|
271
|
+
-e enable interpretation of the following backslash escapes
|
|
272
|
+
-E explicitly suppress interpretation of backslash escapes
|
|
273
|
+
|
|
274
|
+
Exit Status:
|
|
275
|
+
Returns success unless a write error occurs.`]],["enable",["enable [-a] [-dnps] [-f filename] [name ...]",`Enable and disable shell builtins.
|
|
276
|
+
Enables and disables builtin shell commands.
|
|
277
|
+
Exit Status:
|
|
278
|
+
Returns success unless NAME is not a shell builtin or an error occurs.`]],["eval",["eval [arg ...]",`Execute arguments as a shell command.
|
|
279
|
+
Combine ARGs into a single string, use the result as input to the shell,
|
|
280
|
+
and execute the resulting commands.
|
|
281
|
+
Exit Status:
|
|
282
|
+
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.
|
|
283
|
+
Execute COMMAND, replacing this shell with the specified program.
|
|
284
|
+
ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,
|
|
285
|
+
any redirections take effect in the current shell.
|
|
286
|
+
Exit Status:
|
|
287
|
+
Returns success unless COMMAND is not found or a redirection error occurs.`]],["exit",["exit [n]",`Exit the shell.
|
|
288
|
+
Exits the shell with a status of N. If N is omitted, the exit status
|
|
289
|
+
is that of the last command executed.`]],["export",["export [-fn] [name[=value] ...] or export -p",`Set export attribute for shell variables.
|
|
290
|
+
Marks each NAME for automatic export to the environment of subsequently
|
|
291
|
+
executed commands. If VALUE is supplied, assign VALUE before exporting.
|
|
292
|
+
|
|
293
|
+
Options:
|
|
294
|
+
-f refer to shell functions
|
|
295
|
+
-n remove the export property from each NAME
|
|
296
|
+
-p display a list of all exported variables and functions
|
|
297
|
+
|
|
298
|
+
Exit Status:
|
|
299
|
+
Returns success unless an invalid option is given or NAME is invalid.`]],["false",["false",`Return an unsuccessful result.
|
|
300
|
+
Exit Status:
|
|
301
|
+
Always fails.`]],["fc",["fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]",`Display or execute commands from the history list.
|
|
302
|
+
Exit Status:
|
|
303
|
+
Returns success or status of executed command.`]],["fg",["fg [job_spec]",`Move job to the foreground.
|
|
304
|
+
Place the job identified by JOB_SPEC in the foreground, making it the
|
|
305
|
+
current job.`]],["getopts",["getopts optstring name [arg]",`Parse option arguments.
|
|
306
|
+
Getopts is used by shell procedures to parse positional parameters
|
|
307
|
+
as options.
|
|
308
|
+
|
|
309
|
+
OPTSTRING contains the option letters to be recognized; if a letter
|
|
310
|
+
is followed by a colon, the option is expected to have an argument,
|
|
311
|
+
which should be separated from it by white space.
|
|
312
|
+
Exit Status:
|
|
313
|
+
Returns success if an option is found; fails if the end of options is
|
|
314
|
+
encountered or an error occurs.`]],["hash",["hash [-lr] [-p pathname] [-dt] [name ...]",`Remember or display program locations.
|
|
315
|
+
Determine and remember the full pathname of each command NAME.
|
|
316
|
+
Exit Status:
|
|
317
|
+
Returns success unless NAME is not found or an invalid option is given.`]],["help",["help [-s] [pattern ...]",`Display information about builtin commands.
|
|
318
|
+
Displays brief summaries of builtin commands. If PATTERN is
|
|
319
|
+
specified, gives detailed help on all commands matching PATTERN,
|
|
320
|
+
otherwise the list of help topics is printed.
|
|
321
|
+
|
|
322
|
+
Options:
|
|
323
|
+
-s output only a short usage synopsis for each topic matching
|
|
324
|
+
PATTERN
|
|
325
|
+
|
|
326
|
+
Exit Status:
|
|
327
|
+
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.
|
|
328
|
+
Display the history list with line numbers, prefixing each modified
|
|
329
|
+
entry with a \`*'.
|
|
330
|
+
Exit Status:
|
|
331
|
+
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.
|
|
332
|
+
Lists the active jobs.
|
|
333
|
+
Exit Status:
|
|
334
|
+
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.
|
|
335
|
+
Send the processes identified by PID or JOBSPEC the signal named by
|
|
336
|
+
SIGSPEC or SIGNUM.
|
|
337
|
+
Exit Status:
|
|
338
|
+
Returns success unless an invalid option is given or an error occurs.`]],["let",["let arg [arg ...]",`Evaluate arithmetic expressions.
|
|
339
|
+
Evaluate each ARG as an arithmetic expression. Evaluation is done in
|
|
340
|
+
fixed-width integers with no check for overflow, though division by 0
|
|
341
|
+
is trapped and flagged as an error.
|
|
342
|
+
Exit Status:
|
|
343
|
+
If the last ARG evaluates to 0, let returns 1; 0 is returned otherwise.`]],["local",["local [option] name[=value] ...",`Define local variables.
|
|
344
|
+
Create a local variable called NAME, and give it VALUE. OPTION can
|
|
345
|
+
be any option accepted by \`declare'.
|
|
346
|
+
|
|
347
|
+
Local can only be used within a function; it makes the variable NAME
|
|
348
|
+
have a visible scope restricted to that function and its children.
|
|
349
|
+
Exit Status:
|
|
350
|
+
Returns success unless an invalid option is supplied, a variable
|
|
351
|
+
assignment error occurs, or the shell is not executing a function.`]],["logout",["logout [n]",`Exit a login shell.
|
|
352
|
+
Exits a login shell with exit status N. Returns an error if not executed
|
|
353
|
+
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.
|
|
354
|
+
Read lines from the standard input into the indexed array variable ARRAY,
|
|
355
|
+
or from file descriptor FD if the -u option is supplied.
|
|
356
|
+
|
|
357
|
+
Options:
|
|
358
|
+
-d delim Use DELIM to terminate lines, instead of newline
|
|
359
|
+
-n count Copy at most COUNT lines
|
|
360
|
+
-O origin Begin assigning to ARRAY at index ORIGIN
|
|
361
|
+
-s count Discard the first COUNT lines read
|
|
362
|
+
-t Remove a trailing DELIM from each line read (default newline)
|
|
363
|
+
-u fd Read lines from file descriptor FD instead of standard input
|
|
364
|
+
|
|
365
|
+
Exit Status:
|
|
366
|
+
Returns success unless an invalid option is given or ARRAY is readonly.`]],["popd",["popd [-n] [+N | -N]",`Remove directories from stack.
|
|
367
|
+
Removes entries from the directory stack.
|
|
368
|
+
Exit Status:
|
|
369
|
+
Returns success unless an invalid argument is supplied or the directory
|
|
370
|
+
change fails.`]],["printf",["printf [-v var] format [arguments]",`Formats and prints ARGUMENTS under control of the FORMAT.
|
|
371
|
+
|
|
372
|
+
Options:
|
|
373
|
+
-v var assign the output to shell variable VAR rather than
|
|
374
|
+
display it on the standard output
|
|
375
|
+
|
|
376
|
+
FORMAT is a character string which contains three types of objects: plain
|
|
377
|
+
characters, which are simply copied to standard output; character escape
|
|
378
|
+
sequences, which are converted and copied to the standard output; and
|
|
379
|
+
format specifications, each of which causes printing of the next successive
|
|
380
|
+
argument.
|
|
381
|
+
Exit Status:
|
|
382
|
+
Returns success unless an invalid option is given or a write or assignment
|
|
383
|
+
error occurs.`]],["pushd",["pushd [-n] [+N | -N | dir]",`Add directories to stack.
|
|
384
|
+
Adds a directory to the top of the directory stack, or rotates
|
|
385
|
+
the stack, making the new top of the stack the current working
|
|
386
|
+
directory.
|
|
387
|
+
Exit Status:
|
|
388
|
+
Returns success unless an invalid argument is supplied or the directory
|
|
389
|
+
change fails.`]],["pwd",["pwd [-LP]",`Print the name of the current working directory.
|
|
390
|
+
|
|
391
|
+
Options:
|
|
392
|
+
-L print the value of $PWD if it names the current working
|
|
393
|
+
directory
|
|
394
|
+
-P print the physical directory, without any symbolic links
|
|
395
|
+
|
|
396
|
+
By default, \`pwd' behaves as if \`-L' were specified.
|
|
397
|
+
Exit Status:
|
|
398
|
+
Returns 0 unless an invalid option is given or the current directory
|
|
399
|
+
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.
|
|
400
|
+
Reads a single line from the standard input, or from file descriptor FD
|
|
401
|
+
if the -u option is supplied. The line is split into fields as with word
|
|
402
|
+
splitting, and the first word is assigned to the first NAME, the second
|
|
403
|
+
word to the second NAME, and so on, with any leftover words assigned to
|
|
404
|
+
the last NAME.
|
|
405
|
+
Exit Status:
|
|
406
|
+
The return code is zero, unless end-of-file is encountered, read times out,
|
|
407
|
+
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.
|
|
408
|
+
Mark each NAME as read-only; the values of these NAMEs may not be
|
|
409
|
+
changed by subsequent assignment.
|
|
410
|
+
Exit Status:
|
|
411
|
+
Returns success unless an invalid option is given or NAME is invalid.`]],["return",["return [n]",`Return from a shell function.
|
|
412
|
+
Causes a function or sourced script to exit with the return value
|
|
413
|
+
specified by N. If N is omitted, the return status is that of the
|
|
414
|
+
last command executed within the function or script.
|
|
415
|
+
Exit Status:
|
|
416
|
+
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.
|
|
417
|
+
Change the value of shell attributes and positional parameters, or
|
|
418
|
+
display the names and values of shell variables.
|
|
419
|
+
|
|
420
|
+
Options:
|
|
421
|
+
-e Exit immediately if a command exits with a non-zero status.
|
|
422
|
+
-u Treat unset variables as an error when substituting.
|
|
423
|
+
-x Print commands and their arguments as they are executed.
|
|
424
|
+
-o option-name
|
|
425
|
+
Set the variable corresponding to option-name
|
|
426
|
+
|
|
427
|
+
Exit Status:
|
|
428
|
+
Returns success unless an invalid option is given.`]],["shift",["shift [n]",`Shift positional parameters.
|
|
429
|
+
Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is
|
|
430
|
+
not given, it is assumed to be 1.
|
|
431
|
+
Exit Status:
|
|
432
|
+
Returns success unless N is negative or greater than $#.`]],["shopt",["shopt [-pqsu] [-o] [optname ...]",`Set and unset shell options.
|
|
433
|
+
Change the setting of each shell option OPTNAME. Without any option
|
|
434
|
+
arguments, list each supplied OPTNAME, or all shell options if no
|
|
435
|
+
OPTNAMEs are given, with an indication of whether or not each is set.
|
|
436
|
+
|
|
437
|
+
Options:
|
|
438
|
+
-o restrict OPTNAMEs to those defined for use with \`set -o'
|
|
439
|
+
-p print each shell option with an indication of its status
|
|
440
|
+
-q suppress output
|
|
441
|
+
-s enable (set) each OPTNAME
|
|
442
|
+
-u disable (unset) each OPTNAME
|
|
443
|
+
|
|
444
|
+
Exit Status:
|
|
445
|
+
Returns success if OPTNAME is enabled; fails if an invalid option is
|
|
446
|
+
given or OPTNAME is disabled.`]],["source",["source filename [arguments]",`Execute commands from a file in the current shell.
|
|
447
|
+
Read and execute commands from FILENAME in the current shell.
|
|
448
|
+
The entries in $PATH are used to find the directory containing FILENAME.
|
|
449
|
+
Exit Status:
|
|
450
|
+
Returns the status of the last command executed in FILENAME.`]],["suspend",["suspend [-f]",`Suspend shell execution.
|
|
451
|
+
Suspend the execution of this shell until it receives a SIGCONT signal.`]],["test",["test [expr]",`Evaluate conditional expression.
|
|
452
|
+
Exits with a status of 0 (true) or 1 (false) depending on
|
|
453
|
+
the evaluation of EXPR. Expressions may be unary or binary.
|
|
454
|
+
Exit Status:
|
|
455
|
+
Returns success if EXPR evaluates to true; fails if EXPR evaluates to
|
|
456
|
+
false or an invalid argument is given.`]],["times",["times",`Display process times.
|
|
457
|
+
Prints the accumulated user and system times for the shell and all of its
|
|
458
|
+
child processes.
|
|
459
|
+
Exit Status:
|
|
460
|
+
Always succeeds.`]],["trap",["trap [-lp] [[arg] signal_spec ...]",`Trap signals and other events.
|
|
461
|
+
Defines and activates handlers to be run when the shell receives signals
|
|
462
|
+
or other conditions.
|
|
463
|
+
Exit Status:
|
|
464
|
+
Returns success unless a SIGSPEC is invalid or an invalid option is given.`]],["true",["true",`Return a successful result.
|
|
465
|
+
Exit Status:
|
|
466
|
+
Always succeeds.`]],["type",["type [-afptP] name [name ...]",`Display information about command type.
|
|
467
|
+
For each NAME, indicate how it would be interpreted if used as a
|
|
468
|
+
command name.
|
|
469
|
+
|
|
470
|
+
Options:
|
|
471
|
+
-a display all locations containing an executable named NAME
|
|
472
|
+
-f suppress shell function lookup
|
|
473
|
+
-P force a PATH search for each NAME, even if it is an alias,
|
|
474
|
+
builtin, or function, and returns the name of the disk file
|
|
475
|
+
that would be executed
|
|
476
|
+
-p returns either the name of the disk file that would be executed,
|
|
477
|
+
or nothing if \`type -t NAME' would not return \`file'
|
|
478
|
+
-t output a single word which is one of \`alias', \`keyword',
|
|
479
|
+
\`function', \`builtin', \`file' or \`', if NAME is an alias,
|
|
480
|
+
shell reserved word, shell function, shell builtin, disk file,
|
|
481
|
+
or not found, respectively
|
|
482
|
+
|
|
483
|
+
Exit Status:
|
|
484
|
+
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.
|
|
485
|
+
Provides control over the resources available to the shell and processes
|
|
486
|
+
it creates, on systems that allow such control.
|
|
487
|
+
Exit Status:
|
|
488
|
+
Returns success unless an invalid option is supplied or an error occurs.`]],["umask",["umask [-p] [-S] [mode]",`Display or set file mode mask.
|
|
489
|
+
Sets the user file-creation mask to MODE. If MODE is omitted, prints
|
|
490
|
+
the current value of the mask.
|
|
491
|
+
Exit Status:
|
|
492
|
+
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.
|
|
493
|
+
Exit Status:
|
|
494
|
+
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.
|
|
495
|
+
For each NAME, remove the corresponding variable or function.
|
|
496
|
+
|
|
497
|
+
Options:
|
|
498
|
+
-f treat each NAME as a shell function
|
|
499
|
+
-v treat each NAME as a shell variable
|
|
500
|
+
-n treat each NAME as a name reference and unset the variable itself
|
|
501
|
+
rather than the variable it references
|
|
502
|
+
|
|
503
|
+
Without options, unset first tries to unset a variable, and if that fails,
|
|
504
|
+
tries to unset a function.
|
|
505
|
+
Exit Status:
|
|
506
|
+
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.
|
|
507
|
+
Waits for each process identified by an ID, which may be a process ID or a
|
|
508
|
+
job specification, and reports its termination status.
|
|
509
|
+
Exit Status:
|
|
510
|
+
Returns the status of the last ID; fails if ID is invalid or an invalid
|
|
511
|
+
option is given.`]]]),Hn=[...jn.keys()].sort();function hr(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 _(`bash: help: -${u}: invalid option
|
|
512
|
+
`,2)}n++}else r.push(l),n++}if(r.length===0)return Uo();let i="",o=!1,a="";for(let l of r){let c=Ho(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
|
|
513
|
+
`,o=!0;continue}for(let u of c){let f=jn.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
|
|
514
|
+
`:i+=`${u}: ${d}
|
|
515
|
+
${h}
|
|
516
|
+
`}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Ho(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=vt(`^${t}$`);return Hn.filter(r=>s.test(r))}function Uo(){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=Hn.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 F(`${e.join(`
|
|
517
|
+
`)}
|
|
518
|
+
`)}function Zo(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 pr(e,t){if(t.length===0)return _(`bash: let: expression expected
|
|
519
|
+
`);let s=Zo(t),r=0;for(let n of s)try{let o=$e(`(( ${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 B(e,a.expression.expression))}}catch(i){return _(`bash: let: ${n}: ${i.message}
|
|
520
|
+
`)}return k("","",r===0?1:0)}async function mr(e,t){if(e.state.localScopes.length===0)return _(`bash: local: can only be used in a function
|
|
521
|
+
`);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}
|
|
522
|
+
`)}return k(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
|
|
523
|
+
`,n=1;continue}if(ee(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let v=`${u}_`;for(let E of e.state.env.keys())E.startsWith(v)&&!E.includes("__")&&(s.has(E)||s.set(E,e.state.env.get(E)))}let g=`${u}_`;for(let v of e.state.env.keys())v.startsWith(g)&&!v.includes("__")&&e.state.env.delete(v);let O=De(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&&xe(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(ee(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let S=`${u}_`;for(let $ of e.state.env.keys())$.startsWith(S)&&!$.includes("__")&&(s.has($)||s.set($,e.state.env.get($)));let P=`${u}__length`;e.state.env.has(P)&&!s.has(P)&&s.set(P,e.state.env.get(P))}let g=De(b),O=se(e,u),v=0,E=e.state.env.get(u);O.length===0&&E!==void 0?(e.state.env.set(`${u}_0`,E),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}`,G(e,g[S]));let w=v+g.length;e.state.env.set(`${u}__length`,String(w)),je(e,u),i&&xe(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(p){u=p[1];let b=G(e,p[2]);ee(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&&xe(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(m){u=m[1];let b=m[2],g=G(e,m[3]);if(ee(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let E=`${u}_`;for(let S of e.state.env.keys())S.startsWith(E)&&!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 E=new V,w=Q(E,b);O=await B(e,w.expression)}catch{let E=parseInt(b,10);O=Number.isNaN(E)?0:E}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&&xe(e,u);continue}if(c.includes("=")){let b=c.indexOf("=");u=c.slice(0,b),f=G(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
|
|
524
|
+
`,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=e.state.tempEnvBindings[v];if(E.has(u)){b=E.get(u);break}}}kn(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(ee(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){r+=`bash: local: \`${f}': invalid variable name for name reference
|
|
525
|
+
`,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&&xe(e,u)}return k("",r,n)}function yr(e,t,s){let r=`
|
|
526
|
+
`,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]||`
|
|
527
|
+
`,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,p=0,m=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let g=d.indexOf(r);if(g===-1){if(d.length>0){if(p<o)p++;else if(n===0||h<n){if(i+h>=m)return k("",`mapfile: array element limit exceeded (${m})
|
|
528
|
+
`,1);let E=d,w=E.indexOf("\0");w!==-1&&(E=E.substring(0,w)),f.push(E),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),p<o){p++;continue}if(n>0&&h>=n)break;if(i+h>=m)return k("",`mapfile: array element limit exceeded (${m})
|
|
529
|
+
`,1);f.push(O),h++}i===0&&ke(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=""),k("","",0)}function qo(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 Go(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function gr(e,t,s,r=-1){let n=!1,i=`
|
|
530
|
+
`,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,p=!1,m=(A,D)=>{let I=1;for(;I<A.length;){let C=A[I];if(C==="r")n=!0,I++;else if(C==="s")I++;else{if(C==="d")return I+1<A.length?(i=A.substring(I+1),{nextArgIndex:D+1}):D+1<t.length?(i=t[D+1],{nextArgIndex:D+2}):{nextArgIndex:D+1};if(C==="n"){if(I+1<A.length){let x=A.substring(I+1);return a=Number.parseInt(x,10),(Number.isNaN(a)||a<0)&&(p=!0,a=0),{nextArgIndex:D+1}}else if(D+1<t.length)return a=Number.parseInt(t[D+1],10),(Number.isNaN(a)||a<0)&&(p=!0,a=0),{nextArgIndex:D+2};return{nextArgIndex:D+1}}else if(C==="N"){if(I+1<A.length){let x=A.substring(I+1);return l=Number.parseInt(x,10),(Number.isNaN(l)||l<0)&&(p=!0,l=0),{nextArgIndex:D+1}}else if(D+1<t.length)return l=Number.parseInt(t[D+1],10),(Number.isNaN(l)||l<0)&&(p=!0,l=0),{nextArgIndex:D+2};return{nextArgIndex:D+1}}else{if(C==="a")return I+1<A.length?(c=A.substring(I+1),{nextArgIndex:D+1}):D+1<t.length?(c=t[D+1],{nextArgIndex:D+2}):{nextArgIndex:D+1};if(C==="p")return I+1<A.length?(o=A.substring(I+1),{nextArgIndex:D+1}):D+1<t.length?(o=t[D+1],{nextArgIndex:D+2}):{nextArgIndex:D+1};if(C==="u"){if(I+1<A.length){let x=A.substring(I+1);return u=Number.parseInt(x,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:D+1}}else if(D+1<t.length)return u=Number.parseInt(t[D+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:D+2};return{nextArgIndex:D+1}}else if(C==="t"){if(I+1<A.length){let x=A.substring(I+1);return f=Number.parseFloat(x),Number.isNaN(f)&&(f=0),{nextArgIndex:D+1}}else if(D+1<t.length)return f=Number.parseFloat(t[D+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:D+2};return{nextArgIndex:D+1}}else if(C==="e"||C==="i"||C==="P"){if(C==="i"&&D+1<t.length)return{nextArgIndex:D+2};I++}else I++}}}return{nextArgIndex:D+1}};for(;h<t.length;){let A=t[h];if(A.startsWith("-")&&A.length>1&&A!=="--"){let D=m(A,h);if(D.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(D.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=D.nextArgIndex}else if(A==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(A),h++}if(p)return k("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)ke(e,c);else{for(let A of d)e.state.env.set(A,"");d.length===0&&e.state.env.set("REPLY","")}return k("","",0)}if(f<0&&f!==-1)return k("","",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,E=A=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,y.substring(A));else if(r>=0&&e.state.fileDescriptors){let D=e.state.fileDescriptors.get(r);if(D?.startsWith("__rw__:")){let I=qo(D);if(I){let C=I.position+A;e.state.fileDescriptors.set(r,Go(I.path,C,I.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=y.substring(A))};if(l>=0){let A=Math.min(l,y.length);g=y.substring(0,A),O=A,v=A>=l,E(O);let D=d[0]||"REPLY";e.state.env.set(D,g);for(let I=1;I<d.length;I++)e.state.env.set(d[I],"");return k("","",v?0:1)}else if(a>=0){let A=0,D=0,I=!1;for(;D<y.length&&A<a;){let C=y[D];if(C===b){O=D+1,I=!0;break}if(!n&&C==="\\"&&D+1<y.length){let x=y[D+1];if(x===b&&b===`
|
|
531
|
+
`){D+=2,O=D;continue}if(x===b){D+=2,A++,g+=x,O=D;continue}g+=x,D+=2,A++,O=D}else g+=C,D++,A++,O=D}v=A>=a||I,E(O)}else{O=0;let A=0;for(;A<y.length;){let D=y[A];if(D===b){O=A+b.length,v=!0;break}if(!n&&D==="\\"&&A+1<y.length){let I=y[A+1];if(I===`
|
|
532
|
+
`){A+=2;continue}if(I===b){g+=I,A+=2;continue}g+=D,g+=I,A+=2;continue}g+=D,A++}if(A>=y.length&&(v=!1,O=A,g.length===0&&y.length===0)){for(let D of d)e.state.env.set(D,"");return c&&ke(e,c),k("","",1)}E(O)}b===`
|
|
533
|
+
`&&g.endsWith(`
|
|
534
|
+
`)&&(g=g.slice(0,-1));let w=A=>n?A:A.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",w(g)),k("","",v?0:1);let S=jr(e.state.env);if(c){let{words:A}=_s(g,S,void 0,n),D=e.limits?.maxArrayElements??1e5;if(A.length>D)return k("",`read: array element limit exceeded (${D})
|
|
535
|
+
`,1);ke(e,c);for(let I=0;I<A.length;I++)e.state.env.set(`${c}_${I}`,w(A[I]));return k("","",v?0:1)}let P=d.length,{words:$,wordStarts:N}=_s(g,S,P,n);for(let A=0;A<d.length;A++){let D=d[A];if(A<d.length-1)e.state.env.set(D,w($[A]??""));else if(A<N.length){let I=g.substring(N[A]);I=Hr(I,S,n),I=w(I),e.state.env.set(D,I)}else e.state.env.set(D,"")}return k("","",v?0:1)}function wr(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return _("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 _(`bash: return: ${r}: numeric argument required
|
|
536
|
+
`,2);s=(n%256+256)%256}throw new ae(s)}var Ct=`set: usage: set [-eux] [+eux] [-o option] [+o option]
|
|
537
|
+
Options:
|
|
538
|
+
-e Exit immediately if a command exits with non-zero status
|
|
539
|
+
+e Disable -e
|
|
540
|
+
-u Treat unset variables as an error when substituting
|
|
541
|
+
+u Disable -u
|
|
542
|
+
-x Print commands and their arguments as they are executed
|
|
543
|
+
+x Disable -x
|
|
544
|
+
-o errexit Same as -e
|
|
545
|
+
+o errexit Disable errexit
|
|
546
|
+
-o nounset Same as -u
|
|
547
|
+
+o nounset Disable nounset
|
|
548
|
+
-o pipefail Return status of last failing command in pipeline
|
|
549
|
+
+o pipefail Disable pipefail
|
|
550
|
+
-o xtrace Same as -x
|
|
551
|
+
+o xtrace Disable xtrace
|
|
552
|
+
`,Un=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]]),ls=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]]),Gn=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Kn=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function vr(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,at(e))}function Ko(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Xo(e,t){let s=se(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${n}]=${Xe(i)}`});return`${t}=(${r.join(" ")})`}function Yo(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Qo(e,t){let s=ze(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${Yo(n)}]=${Xe(i)}`});return`${t}=(${r.join(" ")} )`}function Jo(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 ea(e){return e.state.associativeArrays??new Set}function Zn(e){let t=Gn.map(r=>`${r.padEnd(16)}${e.state.options[r]?"on":"off"}`),s=Kn.map(r=>`${r.padEnd(16)}off`);return`${[...t,...s].sort().join(`
|
|
553
|
+
`)}
|
|
554
|
+
`}function qn(e){let t=Gn.map(r=>`set ${e.state.options[r]?"-o":"+o"} ${r}`),s=Kn.map(r=>`set +o ${r}`);return`${[...t,...s].sort().join(`
|
|
555
|
+
`)}
|
|
556
|
+
`}function $r(e,t){if(t.includes("--help"))return F(Ct);if(t.length===0){let i=Jo(e),o=ea(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}=${is(f)}`);for(let u of[...i].sort((f,d)=>f<d?-1:f>d?1:0))c.push(Xo(e,u));for(let u of[...o].sort((f,d)=>f<d?-1:f>d?1:0))c.push(Qo(e,u));return c.sort((u,f)=>{let d=u.split("=")[0],h=f.split("=")[0];return d<h?-1:d>h?1:0}),F(c.length>0?`${c.join(`
|
|
557
|
+
`)}
|
|
558
|
+
`:"")}let s=[],r=()=>s.length>0?F(s.join("")):M,n=0;for(;n<t.length;){let i=t[n];if((i==="-o"||i==="+o")&&Ko(t,n)){let o=t[n+1];if(!ls.has(o)){let a=`bash: set: ${o}: invalid option name
|
|
559
|
+
${Ct}`;if(e.state.options.posix)throw new me(1,"",a);return _(a,2)}vr(e,ls.get(o)??null,i==="-o"),n+=2;continue}if(i==="-o"){s.push(Zn(e)),n++;continue}if(i==="+o"){s.push(qn(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(!ls.has(d)){let h=`bash: set: ${d}: invalid option name
|
|
560
|
+
${Ct}`;if(e.state.options.posix)throw new me(1,"",h);return _(h,2)}vr(e,ls.get(d)??null,o),a++;continue}s.push(o?Zn(e):qn(e));continue}if(!Un.has(c)){let u=`bash: set: ${i[0]}${c}: invalid option
|
|
561
|
+
${Ct}`;if(e.state.options.posix)throw new me(1,"",u);return _(u,2)}vr(e,Un.get(c)??null,o)}n+=1+a;continue}if(i==="--")return br(e,t.slice(n+1)),r();if(i==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,at(e),n+1<t.length)return br(e,t.slice(n+1)),r();n++;continue}if(i==="+"){n++;continue}if(i.startsWith("-")||i.startsWith("+")){let o=`bash: set: ${i}: invalid option
|
|
562
|
+
${Ct}`;if(e.state.options.posix)throw new me(1,"",o);return _(o,2)}return br(e,t.slice(n)),r()}return r()}function br(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 Er(e,t){let s=1;if(t.length>1)return _(`bash: shift: too many arguments
|
|
563
|
+
`);if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)){let a=`bash: shift: ${t[0]}: numeric argument required
|
|
564
|
+
`;if(e.state.options.posix)throw new me(1,"",a);return _(a)}if(o<0){let a=`bash: shift: shift count out of range
|
|
565
|
+
`;if(e.state.options.posix)throw new me(1,"",a);return _(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
|
|
566
|
+
`;if(e.state.options.posix)throw new me(1,"",o);return _(o)}if(s===0)return M;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(" ")),M}async function Sr(e,t,s=""){let r=t;if(r.length>0&&r[0]==="--"&&(r=r.slice(1)),r.length===0)return k("",`bash: source: filename argument required
|
|
567
|
+
`,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(p=>p);for(let p of h){let m=e.fs.resolvePath(e.state.cwd,`${p}/${n}`);try{if((await e.fs.stat(m)).isDirectory)continue;o=await e.fs.readFile(m),i=m;break}catch{}}if(o===null){let p=e.fs.resolvePath(e.state.cwd,n);try{o=await e.fs.readFile(p),i=p}catch{}}}if(o===null)return _(`bash: ${n}: No such file or directory
|
|
568
|
+
`);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 X(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=n,c&&(e.state.groupStdin=s);try{let d=$e(o),h=await e.executeScript(d);return f(),h}catch(d){if(f(),d instanceof Z)throw d;if(d instanceof ae)return k(d.stdout,d.stderr,d.exitCode);if(d.name==="ParseException")return _(`bash: ${n}: ${d.message}
|
|
569
|
+
`);throw d}}function Xn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function ta(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Yn(e,t){if(ta(t))return null;try{let s=new V,r=Q(s,t);return await B(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function Qn(e,t){if(e.state.localVarStack?.has(t)){let r=ts(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)es(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),Ar(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),es(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||es(e,t),!0}}return!1}function Ar(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 Jn(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 V().parseWordFromString(s,!0,!1);return T(e,n)}if(t.includes("$")){let r=new V().parseWordFromString(t,!1,!1);return T(e,r)}return t}async function _r(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=Ee(e,d);for(let[v]of O)e.state.env.delete(`${d}_${v}`);e.state.env.delete(d);continue}let p=e.state.associativeArrays?.has(d);if(p){let O=await Jn(e,h);e.state.env.delete(`${d}_${O}`);continue}let m=ks(e,d),y=e.state.declaredVars?.has(d);if((e.state.env.has(d)||y)&&!m&&!p){r+=`bash: unset: ${d}: not an array variable
|
|
570
|
+
`,n=1;continue}let g=await Yn(e,h);if(g===null&&m){r+=`bash: unset: ${h}: not a valid identifier
|
|
571
|
+
`,n=1;continue}if(g===null)continue;if(g<0){let O=Ee(e,d),v=O.length,E=e.state.currentLine;if(v===0){r+=`bash: line ${E}: unset: [${g}]: bad array subscript
|
|
572
|
+
`,n=1;continue}let w=v+g;if(w<0){r+=`bash: line ${E}: unset: [${g}]: bad array subscript
|
|
573
|
+
`,n=1;continue}let S=O[w][0];e.state.env.delete(`${d}_${S}`);continue}e.state.env.delete(`${d}_${g}`);continue}if(!Xn(i)){r+=`bash: unset: ${i}: not a valid identifier
|
|
574
|
+
`,n=1;continue}let u=i;if(we(e,i)){let d=Ve(e,i);d&&d!==i&&(u=d)}if(Ge(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
|
|
575
|
+
`,n=1;continue}let f=ct(e,u);if(f!==void 0&&f!==e.state.callDepth)Qn(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 p=ts(e,u);p?p.value===void 0?e.state.env.delete(u):e.state.env.set(u,p.value):e.state.env.delete(u)}else e.state.env.delete(u)}else Ar(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 m=Ee(e,c);for(let[y]of m)e.state.env.delete(`${c}_${y}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let m=await Jn(e,u);e.state.env.delete(`${c}_${m}`);continue}let d=ks(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
|
|
576
|
+
`,n=1;continue}let p=await Yn(e,u);if(p===null&&d){r+=`bash: unset: ${u}: not a valid identifier
|
|
577
|
+
`,n=1;continue}if(p===null)continue;if(p<0){let m=Ee(e,c),y=m.length,b=e.state.currentLine;if(y===0){r+=`bash: line ${b}: unset: [${p}]: bad array subscript
|
|
578
|
+
`,n=1;continue}let g=y+p;if(g<0){r+=`bash: line ${b}: unset: [${p}]: bad array subscript
|
|
579
|
+
`,n=1;continue}let O=m[g][0];e.state.env.delete(`${c}_${O}`);continue}e.state.env.delete(`${c}_${p}`);continue}if(!Xn(i)){r+=`bash: unset: ${i}: not a valid identifier
|
|
580
|
+
`,n=1;continue}let a=i;if(we(e,i)){let c=Ve(e,i);c&&c!==i&&(a=c)}if(Ge(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
|
|
581
|
+
`,n=1;continue}let l=ct(e,a);if(l!==void 0&&l!==e.state.callDepth)Qn(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=ts(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 Ar(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return k("",r,n)}var Cr=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],sa=["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 cs(e){return Cr.includes(e)}function ra(e){return sa.includes(e)}function ei(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 p=d[h];switch(p){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: -${p}: invalid option
|
|
582
|
+
`}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return na(e,a,s,r,n,i);if(s&&r)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
|
|
583
|
+
`};if(a.length===0){if(s||r){let h=[];for(let p of Cr){let m=e.state.shoptOptions[p];s&&m?h.push(n?`shopt -s ${p}`:`${p} on`):r&&!m&&h.push(n?`shopt -u ${p}`:`${p} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
|
|
584
|
+
`)}
|
|
585
|
+
`:"",stderr:""}}let d=[];for(let h of Cr){let p=e.state.shoptOptions[h];d.push(n?`shopt ${p?"-s":"-u"} ${h}`:`${h} ${p?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
|
|
586
|
+
`)}
|
|
587
|
+
`,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!cs(d)&&!ra(d)){u+=`shopt: ${d}: invalid shell option name
|
|
588
|
+
`,c=!0;continue}if(s)cs(d)&&(e.state.shoptOptions[d]=!0,Rs(e));else if(r)cs(d)&&(e.state.shoptOptions[d]=!1,Rs(e));else if(cs(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(`
|
|
589
|
+
`)}
|
|
590
|
+
`:"",stderr:u}}function na(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 p=a.includes(h),m=o.get(h),y=p||!m?!1:e.state.options[m];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(`
|
|
591
|
+
`)}
|
|
592
|
+
`:"",stderr:""}}let c=!1,u="",f=[];for(let d of t){let h=o.has(d),p=a.includes(d);if(!h&&!p){u+=`shopt: ${d}: invalid option name
|
|
593
|
+
`,c=!0;continue}if(p){s||r||(i?c=!0:n?(f.push(`set +o ${d}`),c=!0):(f.push(`${d} off`),c=!0));continue}let m=o.get(d);if(m)if(s)m==="vi"?e.state.options.emacs=!1:m==="emacs"&&(e.state.options.vi=!1),e.state.options[m]=!0,at(e);else if(r)e.state.options[m]=!1,at(e);else{let y=e.state.options[m];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(`
|
|
594
|
+
`)}
|
|
595
|
+
`:"",stderr:u}}async function ti(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 us(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 ia(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function q(e,t,s,r){return((...n)=>{bt(t,s,`${r} call`);let i=e(...n);return ia(i)?i.then(o=>(bt(t,s,`${r} post-await`),o),o=>{throw bt(t,s,`${r} post-await`),o}):(bt(t,s,`${r} return`),i)})}function oa(e,t,s){let r={readFile:q(e.readFile.bind(e),t,s,"fs.readFile"),...typeof e.readFileBytes=="function"?{readFileBytes:q(e.readFileBytes.bind(e),t,s,"fs.readFileBytes")}:Object.create(null),readFileBuffer:q(e.readFileBuffer.bind(e),t,s,"fs.readFileBuffer"),writeFile:q(e.writeFile.bind(e),t,s,"fs.writeFile"),appendFile:q(e.appendFile.bind(e),t,s,"fs.appendFile"),exists:q(e.exists.bind(e),t,s,"fs.exists"),stat:q(e.stat.bind(e),t,s,"fs.stat"),mkdir:q(e.mkdir.bind(e),t,s,"fs.mkdir"),readdir:q(e.readdir.bind(e),t,s,"fs.readdir"),rm:q(e.rm.bind(e),t,s,"fs.rm"),cp:q(e.cp.bind(e),t,s,"fs.cp"),mv:q(e.mv.bind(e),t,s,"fs.mv"),resolvePath:q(e.resolvePath.bind(e),t,s,"fs.resolvePath"),getAllPaths:q(e.getAllPaths.bind(e),t,s,"fs.getAllPaths"),chmod:q(e.chmod.bind(e),t,s,"fs.chmod"),symlink:q(e.symlink.bind(e),t,s,"fs.symlink"),link:q(e.link.bind(e),t,s,"fs.link"),readlink:q(e.readlink.bind(e),t,s,"fs.readlink"),lstat:q(e.lstat.bind(e),t,s,"fs.lstat"),realpath:q(e.realpath.bind(e),t,s,"fs.realpath"),utimes:q(e.utimes.bind(e),t,s,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=q(e.readdirWithFileTypes.bind(e),t,s,"fs.readdirWithFileTypes")),r}function Pr(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,r={...e,fs:oa(e.fs,e.requireDefenseContext,s)};return e.exec&&(r.exec=q(e.exec,e.requireDefenseContext,s,"exec")),e.fetch&&(r.fetch=q(e.fetch,e.requireDefenseContext,s,"fetch")),e.sleep&&(r.sleep=q(e.sleep,e.requireDefenseContext,s,"sleep")),e.getRegisteredCommands&&(r.getRegisteredCommands=q(e.getRegisteredCommands,e.requireDefenseContext,s,"getRegisteredCommands")),r}async function ri(e,t,s,r){let n=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let m of t)if(m.startsWith("-")&&m.length>1)for(let y of m.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 k("",`type: -${y}: unsupported option
|
|
596
|
+
`,2);else c.push(m);let u="",f="",d=0,h=!1,p=!1;for(let m of c){let y=!1;if(o){if(a){let S=await r(m);if(S.length>0){for(let P of S)u+=`${P}
|
|
597
|
+
`;h=!0,y=!0}}else{let S=await s(m);S&&(u+=`${S}
|
|
598
|
+
`,h=!0,y=!0)}y||(p=!0);continue}let b=!l&&e.state.functions.has(m);if(a&&b){if(!i)if(n)u+=`function
|
|
599
|
+
`;else{let S=e.state.functions.get(m),P=S?si(m,S):`${m} is a shell function
|
|
600
|
+
`;u+=P}y=!0}let g=e.state.env.get(`BASH_ALIAS_${m}`);if(g!==void 0&&(a||!y)&&(i||(n?u+=`alias
|
|
601
|
+
`:u+=`${m} is aliased to \`${g}'
|
|
602
|
+
`),y=!0,!a)||js.has(m)&&(a||!y)&&(i||(n?u+=`keyword
|
|
603
|
+
`:u+=`${m} is a shell keyword
|
|
604
|
+
`),y=!0,!a)||e.commands.has(m)&&(a||!y)&&(i||(n?u+=`registered
|
|
605
|
+
`:u+=`${m} is a registered command
|
|
606
|
+
`),y=!0,!a))continue;if(!a&&b&&!y){if(!i)if(n)u+=`function
|
|
607
|
+
`;else{let S=e.state.functions.get(m),P=S?si(m,S):`${m} is a shell function
|
|
608
|
+
`;u+=P}y=!0;continue}if(!(ut.has(m)&&(a||!y)&&(i||(n?u+=`builtin
|
|
609
|
+
`:u+=`${m} is a shell builtin
|
|
610
|
+
`),y=!0,!a))){if(a){let S=await r(m);for(let P of S)i?u+=`${P}
|
|
611
|
+
`:n?u+=`file
|
|
612
|
+
`:u+=`${m} is ${P}
|
|
613
|
+
`,h=!0,y=!0}else if(!y){let S=await s(m);S&&(i?u+=`${S}
|
|
614
|
+
`:n?u+=`file
|
|
615
|
+
`:u+=`${m} is ${S}
|
|
616
|
+
`,h=!0,y=!0)}if(!y&&(p=!0,!n&&!i)){let S=!0;if(m.includes("/")){let P=e.fs.resolvePath(e.state.cwd,m);await e.fs.exists(P)&&(S=!1)}S&&(f+=`bash: type: ${m}: not found
|
|
617
|
+
`)}}}return i?d=p&&!h?1:0:d=p?1:0,k(u,f,d)}function si(e,t){return`${e} is a shell function
|
|
618
|
+
`}async function ni(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}"
|
|
619
|
+
`:n+=`alias ${a}='${l}'
|
|
620
|
+
`;else if(js.has(a))r?n+=`${a} is a shell keyword
|
|
621
|
+
`:n+=`${a}
|
|
622
|
+
`;else if(ut.has(a))r?n+=`${a} is a shell builtin
|
|
623
|
+
`:n+=`${a}
|
|
624
|
+
`;else if(e.commands.has(a))r?n+=`${a} is a registered command
|
|
625
|
+
`:n+=`${a}
|
|
626
|
+
`;else if(e.state.functions.has(a))r?n+=`${a} is a function
|
|
627
|
+
`:n+=`${a}
|
|
628
|
+
`;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}
|
|
629
|
+
`:n+=`${a}
|
|
630
|
+
`,u=!0)}catch{}u||(r&&(i+=`${a}: not found
|
|
631
|
+
`),o=1)}else{let c=await kr(e,a);c?r?n+=`${a} is ${c}
|
|
632
|
+
`:n+=`${c}
|
|
633
|
+
`:(r&&(i+=`${a}: not found
|
|
634
|
+
`),o=1)}}return k(n,i,o)}async function kr(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 aa=new Set(["awk","cat","cut","grep","head","jq","mapfile","read","readarray","sed","sort","tail","tee","tr","uniq","wc","xargs"]);function Nr(e){return aa.has(e)}async function ii(e,t,s,r,n,i,o,a){let{ctx:l,runCommand:c}=e;if(l.coverage&&ut.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return fr(l,s);if(t==="unset")return _r(l,s);if(t==="exit")return ur(l,s);if(t==="local")return mr(l,s);if(t==="set")return $r(l,s);if(t==="break")return Fs(l,s);if(t==="continue")return Xs(l,s);if(t==="return")return wr(l,s);if(t==="eval"&&l.state.options.posix)return os(l,s,n);if(t==="shift")return Er(l,s);if(t==="getopts")return as(l,s);if(t==="compgen")return Zs(l,s);if(t==="complete")return Gs(l,s);if(t==="compopt")return Ks(l,s);if(t==="pushd")return await ar(l,s);if(t==="popd")return lr(l,s);if(t==="dirs")return cr(l,s);if(t==="source"||t===".")return Sr(l,s,n);if(t==="read")return gr(l,s,n,a);if(t==="mapfile"||t==="readarray")return yr(l,s,n);if(t==="declare"||t==="typeset")return nr(l,s);if(t==="readonly")return ir(l,s);if(l.commands.has(t))return null;if(!i){let u=l.state.functions.get(t);if(u)return ns(l,u,s,n)}if(t==="eval")return os(l,s,n);if(t==="cd")return await Ws(l,s);if(t===":"||t==="true")return M;if(t==="false")return Y(!1);if(t==="let")return pr(l,s);if(t==="command")return la(e,s,n);if(t==="builtin")return ca(e,s,n);if(t==="shopt")return ei(l,s);if(t==="exec"){if(s.length===0)return M;let[u,...f]=s;return c(u,f,[],n,!1,!1,-1)}if(t==="jobs")return l.jobControl?.jobs?l.jobControl.jobs(s):M;if(t==="wait")return l.jobControl?.wait?l.jobControl.wait(s):M;if(t==="type")return await ri(l,s,u=>kr(l,u),u=>us(l,u));if(t==="hash")return dr(l,s);if(t==="help")return hr(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return _("[: missing `]'\n",2);u=s.slice(0,-1)}return At(l,u)}return null}async function la(e,t,s){let{ctx:r,runCommand:n}=e;if(t.length===0)return M;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 M;if(a||o)return await ni(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function ca(e,t,s){let{runCommand:r}=e;if(t.length===0)return M;let n=t;if(n[0]==="--"&&(n=n.slice(1),n.length===0))return M;let i=n[0];if(!ut.has(i))return _(`bash: builtin: ${i}: not a shell builtin
|
|
635
|
+
`);let[,...o]=n;return r(i,o,[],s,!0,!1,-1)}async function oi(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 E=o(),w=r===""&&i.state.groupStdin!==void 0,S=r||i.state.groupStdin||"",P={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:E,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},$=Pr(P,t);try{let N=()=>bs(i.requireDefenseContext,"command",`${t} execution`,()=>b.execute(s,$));return b.trusted?await ye.runTrustedAsync(()=>N()):await N()}catch(N){if(N instanceof X||N instanceof Ze)throw N;return _(`${t}: ${fe(Pe(N))}
|
|
636
|
+
`)}finally{w&&(b.consumesStdin||Nr(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&&Nr(t)&&(i.state.groupStdin="")}}let c=await ti(i,t,n?"/usr/bin:/bin":void 0);if(!c)return gn(t)?_(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
|
|
637
|
+
`,127):_(`bash: ${t}: command not found
|
|
638
|
+
`,127);if("error"in c)return c.error==="permission_denied"?_(`bash: ${t}: Permission denied
|
|
639
|
+
`,126):_(`bash: ${t}: No such file or directory
|
|
640
|
+
`,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||"",p=o(),m={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:p,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=Pr(m,t);try{let b=()=>bs(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(s,y));return u.trusted?await ye.runTrustedAsync(()=>b()):await b()}catch(b){if(b instanceof X||b instanceof Ze)throw b;return _(`${t}: ${fe(Pe(b))}
|
|
641
|
+
`)}finally{d&&(u.consumesStdin||Nr(t))&&(i.state.groupStdin="")}}async function Or(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 Pt(e,t,s,r){if(e instanceof ne)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 ue)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 ae||e instanceof Ce||e instanceof pe||e instanceof Z||e instanceof X)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let n=Pe(e);return{action:"error",stdout:t,stderr:`${s}${n}
|
|
642
|
+
`,exitCode:1}}async function fs(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(Rt(a)||a instanceof pe||a instanceof Z||a instanceof X||a instanceof Fe)throw a.prependOutput(n,i),a;return{stdout:n,stderr:`${i}${Pe(a)}
|
|
643
|
+
`,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function ai(e,t){let s=await Ae(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 T(e,u.content);u.stripTabs&&(f=f.split(`
|
|
644
|
+
`).map(d=>d.replace(/^\t+/,"")).join(`
|
|
645
|
+
`)),o=f,i=!0}else if(c.operator==="<<<"&&c.target.type==="Word")o=`${await T(e,c.target)}
|
|
646
|
+
`,i=!0;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await T(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);o=await e.fs.readFile(f),i=!0}catch{let u=await T(e,c.target);return _(`bash: ${u}: No such file or directory
|
|
647
|
+
`)}let a=e.state.groupStdin;i&&(e.state.groupStdin=o);let l;try{for(let c of t.clauses){let u=await Or(e,c.condition);if(r+=u.stdout,n+=u.stderr,u.exitCode===0)return l=await fs(e,c.body,r,n),U(e,l,t.redirections)}t.elseBody?l=await fs(e,t.elseBody,r,n):l=k(r,n,0)}finally{i&&(e.state.groupStdin=a)}return U(e,l,t.redirections)}async function li(e,t){let s=await Ae(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 _(`bash: \`${t.variable}': not a valid identifier
|
|
648
|
+
`);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 Ne(e,c);a.push(...u.values)}}catch(c){if(c instanceof It)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&Oe(`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=Pt(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=k(r,n,f.exitCode??1);return U(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=k(r,n,i);return U(e,l,t.redirections)}async function ci(e,t){let s=await Ae(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 B(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&Oe(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,i),!(t.condition&&(r!==void 0&&(e.state.currentLine=r),await B(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=Pt(c,n,i,e.state.loopDepth);if(n=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await B(e,t.update.expression);continue}if(u.action==="error"){let f=k(n,i,u.exitCode??1);return U(e,f,t.redirections)}throw u.error}t.update&&await B(e,t.update.expression)}}finally{e.state.loopDepth--}let l=k(n,i,o);return U(e,l,t.redirections)}async function ui(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 T(e,u.content);u.stripTabs&&(f=f.split(`
|
|
649
|
+
`).map(d=>d.replace(/^\t+/,"")).join(`
|
|
650
|
+
`)),a=f}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${await T(e,c.target)}
|
|
651
|
+
`;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await T(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await T(e,c.target);return _(`bash: ${u}: No such file or directory
|
|
652
|
+
`)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&Oe(`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 p=await e.executeStatement(h);r+=p.stdout,n+=p.stderr,c=p.exitCode}}catch(h){if(h instanceof ne){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 ue){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 p=await e.executeStatement(h);r+=p.stdout,n+=p.stderr,i=p.exitCode}}catch(h){let p=Pt(h,r,n,e.state.loopDepth);if(r=p.stdout,n=p.stderr,p.action==="break")break;if(p.action==="continue")continue;if(p.action==="error")return k(r,n,p.exitCode??1);throw p.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return k(r,n,i)}async function fi(e,t){let s="",r="",n=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Oe(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,r);let o=await Or(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=Pt(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 k(s,r,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return k(s,r,n)}async function di(e,t){let s=await Ae(e,t.redirections);if(s)return s;let r="",n="",i=0,o=await T(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 T(e,d);Yr(d)&&(h=Kr(h));let p=e.state.shoptOptions.nocasematch,m=e.state.shoptOptions.extglob;if(lt(o,h,p,m)){f=!0;break}}if(f){let d=await fs(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=k(r,n,i);return U(e,l,t.redirections)}function Dr(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function hi(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 pi="+ ";async function mi(e){let t=e.state.env.get("PS4");if(t===void 0)return pi;if(t==="")return"";try{let r=new V().parseWordFromString(t,!1,!1);return await T(e,r)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
|
|
653
|
+
`,t||pi}}function ua(e){return e.map(t=>fa(t)).join(" ")}function fa(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
|
|
654
|
+
`),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===`
|
|
655
|
+
`?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 yi(e,t,s){if(!e.state.options.xtrace)return"";let r=await mi(e),n=[t,...s],i=ua(n);return`${r}${i}
|
|
656
|
+
`}async function gi(e,t,s){return e.state.options.xtrace?`${await mi(e)}${t}=${s}
|
|
657
|
+
`:""}function da(e){return e.type==="SimpleCommand"&&e.name===null&&e.assignments.length>0&&e.args.length===0}async function vi(e,t,s){let r=t.timed?Es():0,n="",i=M,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],p=d===t.commands.length-1,m=d===0;c&&(e.state.lastArg="",m||(e.state.groupStdin=void 0));let b=c&&(!p||!e.state.shoptOptions.lastpipe&&!da(h))?new Map(e.state.env):null,g,O=e.state.pipelineStdinProvided;e.state.pipelineStdinProvided=c&&!m;try{g=await s(h,n)}catch(v){if(v instanceof wt){if(t.commands.length===1)throw v;g={stdout:v.stdout,stderr:v.stderr,exitCode:1}}else if(v instanceof Z&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else if(v instanceof pe&&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),p?i=g:(t.pipeStderr?.[d]??!1?n=qe(g.stderr)+ws(g):(n=ws(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=(Es()-r)/1e3,p=Math.floor(h/60),m=h%60,y;t.timePosix?y=`real ${h.toFixed(2)}
|
|
658
|
+
user 0.00
|
|
659
|
+
sys 0.00
|
|
660
|
+
`:y=`
|
|
661
|
+
real ${`${p}m${m.toFixed(3)}s`}
|
|
662
|
+
user 0m0.000s
|
|
663
|
+
sys 0m0.000s
|
|
664
|
+
`,i={...i,stderr:i.stderr+y}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=u),i}async function bi(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await ha(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 T(e,n.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:k("",`bash: ${i}: bad array subscript
|
|
665
|
+
`,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await wa(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 ba(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 ha(e,t,s,r,n,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: ${s}: cannot assign list to array member
|
|
666
|
+
`,1)};if(we(e,s)){let u=qr(e,s);if(u===void 0||u==="")throw new Z(1,"","");let f=Ve(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: ${s}: cannot assign list to array member
|
|
667
|
+
`,1)}}if(Ge(e,s)){if(t.name)return o+=`bash: ${s}: readonly variable
|
|
668
|
+
`,{continueToNext:!0,xtraceOutput:o};let u=ee(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let a=e.state.associativeArrays?.has(s),l=pa(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 ma(e,t,s,r,n,c,u=>{o+=u}):l?await ya(e,s,r,n,c):await ga(e,s,r,n,c),t.name){i.set(s,e.state.env.get(s));let f=`(${r.map(d=>Ft(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function pa(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 ma(e,t,s,r,n,i,o){let a=[];for(let l of r){let c=As(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?h=await T(e,{type:"Word",parts:f}):h="",h=G(e,h),a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await T(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
|
|
669
|
+
`)}}async function ya(e,t,s,r,n){let i=[];for(let a of s){let l=As(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await T(e,{type:"Word",parts:u}):d="",d=G(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await Ne(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 V,u=Q(c,a.indexExpr);l=await B(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 ga(e,t,s,r,n){let i=[];for(let a of s){let l=await Ne(e,a);i.push(...l.values)}let o=0;if(r){let a=Ee(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 wa(e,t,s,r,n,i,o){let a=s;if(we(e,s)){let f=Ve(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: \`${f}': not a valid identifier
|
|
670
|
+
`,1)};a=f}}if(Ge(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=ee(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await $i(e,a,r);else{let f=await va(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=ct(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 $i(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 V().parseWordFromString(n,!0,!1);r=await T(e,o)}else if(s.includes("$")){let i=new V().parseWordFromString(s,!1,!1);r=await T(e,i)}else r=s;return`${t}_${r}`}async function va(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 V,o=Q(i,r);n=await B(e,o.expression,!1)}catch(i){if(i instanceof Le){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
|
|
671
|
+
`;if(i.fatal)throw new Z(1,"",l);return{index:0,error:k("",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=Ee(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:k("",`bash: line ${a}: ${t}[${s}]: bad array subscript
|
|
672
|
+
`,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:k("",`bash: line ${a}: ${t}[${s}]: bad array subscript
|
|
673
|
+
`,1)}}}return{index:n}}async function ba(e,t,s,r,n,i){let o="",a=s,l=null;if(we(e,s)){let f=Gr(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: ${s}: circular name reference
|
|
674
|
+
`,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(Ge(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
|
|
675
|
+
`,{continueToNext:!0,xtraceOutput:o};let f=ee(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(_t(e,a))try{let f=new V;if(n){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,p=Q(f,h);c=String(await B(e,p.expression))}else{let d=Q(f,r);c=String(await B(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-YT6DLHRE.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=dt(e,a,c),o+=await gi(e,a,c);let u=a;if(l)u=await $a(e,l);else{let{isArray:f}=await import("./chunks/expansion-YT6DLHRE.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 $a(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return $i(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new V,a=Q(o,r);i=await B(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=Ee(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Ei(e,t,s,r){let n=await Ae(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($=>new Map($)),u){e.state.localVarStack=new Map;for(let[$,N]of u.entries())e.state.localVarStack.set($,N.map(A=>({...A})))}f&&(e.state.localVarDepth=new Map(f)),d&&(e.state.fullyUnsetLocals=new Map(d));let h=e.state.loopDepth,p=e.state.parentHasLoopContext;e.state.parentHasLoopContext=h>0,e.state.loopDepth=0;let m=e.state.lastArg,y=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let b=s,g=!1;for(let $ of t.redirections)if(($.operator==="<<"||$.operator==="<<-")&&$.target.type==="HereDoc"){let N=$.target,A=await T(e,N.content);N.stripTabs&&(A=A.split(`
|
|
676
|
+
`).map(D=>D.replace(/^\t+/,"")).join(`
|
|
677
|
+
`)),b=A,g=!0}else if($.operator==="<<<"&&$.target.type==="Word")b=`${await T(e,$.target)}
|
|
678
|
+
`,g=!0;else if($.operator==="<"&&$.target.type==="Word")try{let N=await T(e,$.target),A=e.fs.resolvePath(e.state.cwd,N);b=await e.fs.readFile(A),g=!0}catch{let N=await T(e,$.target);return k("",`bash: ${N}: No such file or directory
|
|
679
|
+
`,1)}let O=e.state.groupStdin;(b||g)&&(e.state.groupStdin=b);let v="",E="",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=p,e.state.groupStdin=O,e.state.bashPid=y,e.state.lastArg=m};try{for(let $ of t.body){let N=await r($);v+=N.stdout,E+=N.stderr,w=N.exitCode}}catch($){if(S(),$ instanceof X)throw $;if($ instanceof Fe){v+=$.stdout,E+=$.stderr;let A=k(v,E,0);return U(e,A,t.redirections)}if($ instanceof ne||$ instanceof ue){v+=$.stdout,E+=$.stderr;let A=k(v,E,0);return U(e,A,t.redirections)}if($ instanceof Z){v+=$.stdout,E+=$.stderr;let A=k(v,E,$.exitCode);return U(e,A,t.redirections)}if($ instanceof ae){v+=$.stdout,E+=$.stderr;let A=k(v,E,$.exitCode);return U(e,A,t.redirections)}if($ instanceof pe){let A=k(v+$.stdout,E+$.stderr,$.exitCode);return U(e,A,t.redirections)}let N=k(v,`${E}${Pe($)}
|
|
680
|
+
`,1);return U(e,N,t.redirections)}S();let P=k(v,E,w);return U(e,P,t.redirections)}async function Si(e,t,s,r){let n="",i="",o=0,a=await rs(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 T(e,d.content);d.stripTabs&&(h=h.split(`
|
|
681
|
+
`).map(m=>m.replace(/^\t+/,"")).join(`
|
|
682
|
+
`));let p=f.fd??0;p!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),oe(e),e.state.fileDescriptors.set(p,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await T(e,f.target)}
|
|
683
|
+
`;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await T(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await T(e,f.target);return k("",`bash: ${d}: No such file or directory
|
|
684
|
+
`,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 X)throw f;if(Rt(f)||f instanceof pe||f instanceof Z)throw f.prependOutput(n,i),f;return k(n,`${i}${Pe(f)}
|
|
685
|
+
`,1)}e.state.groupStdin=c;let u=k(n,i,o);return U(e,u,t.redirections)}async function Ai(e,t,s,r,n){let i;try{i=await e.fs.readFile(t)}catch{return _(`bash: ${t}: No such file or directory
|
|
686
|
+
`,127)}if(i.startsWith("#!")){let y=i.indexOf(`
|
|
687
|
+
`);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,p=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 m=()=>{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=p};try{let b=new V().parse(i),g=await n(b);return m(),g}catch(y){if(m(),y instanceof Z||y instanceof X)throw y;if(y.name==="ParseException")return _(`bash: ${t}: ${y.message}
|
|
688
|
+
`);throw y}}function ds(e){return e?e.parts.some(_i):!1}function _i(e){if(e.type==="CommandSubstitution")return!0;if(e.type==="DoubleQuoted")return e.parts.some(_i);if(e.type==="ParameterExpansion"){let t=e.operation;if(t&&"word"in t)return ds(t.word);if(t&&"replacement"in t)return ds(t.replacement)}return!1}var kt=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||ye.isInSandboxedContext())return;let s=`interpreter ${t} attempted outside defense context`;throw new Ze(s,{timestamp:Date.now(),type:"missing_defense_context",message:s,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:ye.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&&Oe(`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 Z)throw l.prependOutput(s,r),l;if(l instanceof me)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:We(this.ctx.state.env)};if(l instanceof Ce)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:We(this.ctx.state.env)};if(l instanceof X)throw l;if(l instanceof pe)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:We(this.ctx.state.env)};if(l instanceof vs)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:We(this.ctx.state.env)};if(l instanceof wt)throw l.prependOutput(s,r),l;if(l instanceof Le){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 zr){o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof ne||l instanceof ue){if(this.ctx.state.loopDepth>0)throw l.prependOutput(s,r),l;o(l.stdout,l.stderr);continue}throw l instanceof ae&&l.prependOutput(s,r),l}return{stdout:s,stderr:r,exitCode:n,env:We(this.ctx.state.env)}}async executeUserScript(t,s,r=""){return Ai(this.ctx,t,s,r,n=>this.executeScript(n))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new xt;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Oe(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new Lt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return M;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}
|
|
689
|
+
`);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 pe(n,s,r);return k(s,r,n)}async executePipeline(t){if(t.timed&&this.ctx.rejectTimedPipelines)throw new Error("Unsupported shell syntax: timed pipelines");return vi(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 ai(this.ctx,t);case"For":return li(this.ctx,t);case"CStyleFor":return ci(this.ctx,t);case"While":return ui(this.ctx,t,s);case"Until":return fi(this.ctx,t);case"Case":return di(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Tn(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return M}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(r){if(r instanceof It)return _(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 P=this.expandAlias(w);if(P===w)break;w=P,S--}this.aliasExpansionStack.clear(),w!==t&&(t=w)}this.ctx.state.expansionStderr="";let r=await bi(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 P=await Ae(this.ctx,t.redirections);if(P)return P;let $=k("",i,0);return U(this.ctx,$,t.redirections)}this.ctx.state.lastArg="";let w=(this.ctx.state.expansionStderr||"")+i;this.ctx.state.expansionStderr="";let S=t.assignments.some(P=>ds(P.value)||P.array?.some($=>ds($)));return k("",w,S?this.ctx.state.lastExitCode:0)}let o=t.name&&Dr(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 rs(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,P=await T(this.ctx,S.content);S.stripTabs&&(P=P.split(`
|
|
690
|
+
`).map(N=>N.replace(/^\t+/,"")).join(`
|
|
691
|
+
`)),P=qe(P);let $=w.fd??0;$!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),oe(this.ctx),this.ctx.state.fileDescriptors.set($,P)):s=P;continue}if(w.operator==="<<<"&&w.target.type==="Word"){s=qe(`${await T(this.ctx,w.target)}
|
|
692
|
+
`);continue}if(w.operator==="<"&&w.target.type==="Word")try{let S=await T(this.ctx,w.target),P=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);s=await Mr(this.ctx.fs,P)}catch{let S=await T(this.ctx,w.target);for(let[P,$]of n)$===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,$);return _(`bash: ${S}: No such file or directory
|
|
693
|
+
`)}if(w.operator==="<&"&&w.target.type==="Word"){let S=await T(this.ctx,w.target),P=Number.parseInt(S,10);if(!Number.isNaN(P)&&this.ctx.state.fileDescriptors){let $=this.ctx.state.fileDescriptors.get(P);if($!==void 0)if($.startsWith("__rw__:")){let N=hi($);N&&(s=N.content.slice(N.position),c=P)}else $.startsWith("__file__:")||$.startsWith("__file_append__:")||(s=$)}}}let u=await T(this.ctx,t.name),f=[],d=[];if(Dr(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 mn(this.ctx,w);if(S)f.push(S),d.push(!0);else{let P=await yn(this.ctx,w);if(P!==null)f.push(P),d.push(!0);else{let $=await Ne(this.ctx,w);for(let N of $.values)f.push(N),d.push($.quoted)}}}else for(let w of t.args){let S=await Ne(this.ctx,w);for(let P of S.values)f.push(P),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 k("","",this.ctx.state.lastExitCode)}return _(`bash: : command not found
|
|
694
|
+
`,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 T(this.ctx,w.target),P=w.fd??(w.operator==="<"||w.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),w.operator){case">":case">|":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);await this.ctx.fs.writeFile($,"","utf8"),oe(this.ctx),this.ctx.state.fileDescriptors.set(P,`__file__:${$}`);break}case">>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);oe(this.ctx),this.ctx.state.fileDescriptors.set(P,`__file_append__:${$}`);break}case"<":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);try{let N=await this.ctx.fs.readFile($);oe(this.ctx),this.ctx.state.fileDescriptors.set(P,N)}catch{return _(`bash: ${S}: No such file or directory
|
|
695
|
+
`)}break}case"<>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,S);try{let N=await this.ctx.fs.readFile($);oe(this.ctx),this.ctx.state.fileDescriptors.set(P,`__rw__:${$.length}:${$}:0:${N}`)}catch{await this.ctx.fs.writeFile($,"","utf8"),oe(this.ctx),this.ctx.state.fileDescriptors.set(P,`__rw__:${$.length}:${$}:0:`)}break}case">&":{if(S==="-")this.ctx.state.fileDescriptors.delete(P);else if(S.endsWith("-")){let $=S.slice(0,-1),N=Number.parseInt($,10);if(!Number.isNaN(N)){let A=this.ctx.state.fileDescriptors.get(N);A!==void 0?this.ctx.state.fileDescriptors.set(P,A):this.ctx.state.fileDescriptors.set(P,`__dupout__:${N}`),this.ctx.state.fileDescriptors.delete(N)}}else{let $=Number.parseInt(S,10);Number.isNaN($)||(oe(this.ctx),this.ctx.state.fileDescriptors.set(P,`__dupout__:${$}`))}break}case"<&":{if(S==="-")this.ctx.state.fileDescriptors.delete(P);else if(S.endsWith("-")){let $=S.slice(0,-1),N=Number.parseInt($,10);if(!Number.isNaN(N)){let A=this.ctx.state.fileDescriptors.get(N);A!==void 0?this.ctx.state.fileDescriptors.set(P,A):this.ctx.state.fileDescriptors.set(P,`__dupin__:${N}`),this.ctx.state.fileDescriptors.delete(N)}}else{let $=Number.parseInt(S,10);Number.isNaN($)||(oe(this.ctx),this.ctx.state.fileDescriptors.set(P,`__dupin__:${$}`))}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 M}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 p=await yi(this.ctx,u,f);n.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(n)));let m=M,y=null,b,g=this.ctx.currentRedirections;try{let w=!0;if(t.redirections.length>0){let S=await ss(this.ctx,t.redirections);if(S.error)m=_(S.error),w=!1;else{b=S.targets;let P=await Dn(this.ctx,t.redirections,b);P?(m=P,w=!1):this.ctx.currentRedirections=Ea(t.redirections,b)}}w&&(m=await this.runCommand(u,f,d,s,!1,!1,c))}catch(w){if(w instanceof ne||w instanceof ue)y=w,m=M;else throw w}finally{this.ctx.currentRedirections=g}let O=i+p;if(O&&(m={...m,stderr:O+m.stderr}),m=await U(this.ctx,m,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=On(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&&(m={...m,stderr:this.ctx.state.expansionStderr+m.stderr},this.ctx.state.expansionStderr=""),m}async runCommand(t,s,r,n,i=!1,o=!1,a=-1){let l={ctx:this.ctx,runCommand:(u,f,d,h,p,m,y)=>this.runCommand(u,f,d,h,p,m,y),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await ii(l,t,s,r,n,i,o,a);return c!==null?c:oi(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return Ls(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return us(this.ctx,t)}async executeSubshell(t,s=""){return Ei(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return Si(this.ctx,t,s,r=>this.executeStatement(r))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Ae(this.ctx,t.redirections);if(s)return s;try{let r=await B(this.ctx,t.expression.expression),n=Y(r!==0);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),U(this.ctx,n,t.redirections)}catch(r){let n=_(`bash: arithmetic expression: ${r.message}
|
|
696
|
+
`);return U(this.ctx,n,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Ae(this.ctx,t.redirections);if(s)return s;try{let r=await Be(this.ctx,t.expression),n=Y(r);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),U(this.ctx,n,t.redirections)}catch(r){let n=r instanceof Le?1:2,i=_(`bash: conditional expression: ${r.message}
|
|
697
|
+
`,n);return U(this.ctx,i,t.redirections)}}};function Ea(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 te={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 Ci(e){return e?{maxCallDepth:e.maxCallDepth??te.maxCallDepth,maxCommandCount:e.maxCommandCount??te.maxCommandCount,maxLoopIterations:e.maxLoopIterations??te.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??te.maxAwkIterations,maxSedIterations:e.maxSedIterations??te.maxSedIterations,maxJqIterations:e.maxJqIterations??te.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??te.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??te.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??te.maxJsTimeoutMs,maxGlobOperations:e.maxGlobOperations??te.maxGlobOperations,maxStringLength:e.maxStringLength??te.maxStringLength,maxArrayElements:e.maxArrayElements??te.maxArrayElements,maxHeredocSize:e.maxHeredocSize??te.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??te.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??te.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??te.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??te.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??te.maxSourceDepth}:{...te}}import{lookup as Ta}from"node:dns";function Tr(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Sa(e){let t=Tr(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function Pi(e){if(e.includes("\\"))return!0;let t=e.toLowerCase();return t.includes("%2f")||t.includes("%5c")}function Aa(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function Ir(e,t){let s=Tr(e);if(!s)return!1;let r=Sa(t);return!r||s.origin!==r.origin||r.pathPrefix!=="/"&&r.pathPrefix!==""&&Pi(s.pathname)?!1:Aa(s.pathname,r.pathPrefix)}function ki(e){return typeof e=="string"?e:e.url}function Ni(e,t){return!t||t.length===0?!1:t.some(s=>Ir(e,ki(s)))}function xr(e){let t=_a(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=Oi(t);if(s)return hs(s);let r=Pa(t);return r?ka(r):!1}function _a(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function Ca(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 Oi(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>Ca(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 Pa(e){let t=e,s=null;if(t.includes(".")){let m=t.lastIndexOf(":");if(m<0)return null;let y=t.slice(m+1),b=Oi(y);if(!b)return null;s=b,t=t.slice(0,m)}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=m=>/^[0-9a-f]{1,4}$/i.test(m)?Number.parseInt(m,16):null,c=o.map(l),u=a.map(l);if(c.some(m=>m===null)||u.some(m=>m===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 p=[...c,...new Array(h).fill(0),...u];return s&&(p.push(s[0]<<8|s[1]),p.push(s[2]<<8|s[3])),p.length===8?p:null}function hs(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 ka(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 hs(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 hs(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 hs(n)}return!1}function Di(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=ki(s);if(!Tr(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!==""&&Pi(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 Na=typeof __BROWSER__<"u"&&__BROWSER__,pt=null,ps=null,Ti=!1;function Oa(){if(pt===null&&!Na)try{let e=Lr("node:async_hooks");ps=Lr("node:dns"),pt=new e.AsyncLocalStorage}catch{}}function Da(){if(Ti||(Oa(),!pt||!ps))return;Ti=!0;let e=pt,t=ps.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(ps,"lookup",{value:s,writable:!0,configurable:!0})}function Ii(e,t){return Da(),pt?pt.run(e,t):t()}var Ie=class extends Error{constructor(t,s){let r=s??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},Nt=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Ot=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},ms=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}},mt=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};function Ia(e){return new Promise((t,s)=>{Ta(e,{all:!0},(r,n)=>{r?s(r):t(n)})})}var xa=20,Ra=3e4,La=10485760,Fa=["GET","HEAD"],Wa=new Set(["GET","HEAD","OPTIONS"]),Ma=new Set([301,302,303,307,308]);function Rr(e){let t=e.allowedUrlPrefixes??[];if(!e.dangerouslyAllowFullInternetAccess){let h=Di(t);if(h.length>0)throw new Error(`Invalid network allow-list:
|
|
698
|
+
${h.join(`
|
|
699
|
+
`)}`)}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 p=null;for(let m of s)if(Ir(h,m.url)&&m.transform){p||(p=new Headers);for(let y of m.transform)for(let[b,g]of Object.entries(y.headers))p.set(b,g)}return p}let n=e.maxRedirects??xa,i=e.timeoutMs??Ra,o=e.maxResponseSize??La,a=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??Fa,l=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),c=e._dnsResolve??Ia;async function u(h){if(!e.dangerouslyAllowFullInternetAccess&&!Ni(h,t))throw new Ie(h);if(l)try{let p=new URL(h);if(xr(p.hostname))throw new Ie(h,"private/loopback IP address blocked");let m=p.hostname;if(/[a-zA-Z]/.test(m))try{let b=await c(m);for(let{address:O}of b)if(xr(O))throw new Ie(h,"hostname resolves to private/loopback IP address");let g=b[0];if(g)return{hostname:m,address:g.address,family:g.family===6?6:4}}catch(b){if(b instanceof Ie)throw b;let g=b?.code;if(!(g==="ENOTFOUND"||g==="ENODATA"))throw new Ie(h,"DNS resolution failed for private IP check")}}catch(p){if(p instanceof Ie)throw p}return null}function f(h){if(e.dangerouslyAllowFullInternetAccess)return;let p=h.toUpperCase();if(!a.includes(p))throw new ms(p,a)}async function d(h,p={}){let m=p.method?.toUpperCase()??"GET",y=await u(h);f(m);let b=h,g=0,O=p.followRedirects??!0,v=p.timeoutMs!==void 0?Math.min(p.timeoutMs,i):i;for(;;){let E=new AbortController,w=Fr(()=>E.abort(),v);try{let S=await ye.runTrustedAsync(()=>{let P=r(b),$=za(p.headers,P),N={method:m,headers:$,signal:E.signal,redirect:"manual"};return p.body&&!Wa.has(m)&&(N.body=p.body),y?Ii(y,()=>fetch(b,N)):fetch(b,N)});if(Ma.has(S.status)&&O){let P=S.headers.get("location");if(!P)return await xi(S,b,o);let $=new URL(P,b).href;try{y=await u($)}catch{throw new Ot($)}if(g++,g>n)throw new Nt(n);b=$;continue}return await xi(S,b,o)}finally{Wr(w)}}}return d}function za(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 mt(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 mt(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 mt(s);n=new Uint8Array(i)}return{status:e.status,statusText:e.statusText,headers:r,body:n,url:t}}function Ri(e){return Qe(e)}function Qe(e){return e.statements.map(Li).join(`
|
|
700
|
+
`)}function Li(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(Va(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let s=t.join(" ");return e.background&&(s+=" &"),s}function Va(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(Fi(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 Fi(e){switch(e.type){case"SimpleCommand":return Ba(e);case"If":return Ya(e);case"For":return Qa(e);case"CStyleFor":return Ja(e);case"While":return el(e);case"Until":return tl(e);case"Case":return sl(e);case"Subshell":return nl(e);case"Group":return il(e);case"ArithmeticCommand":return ol(e);case"ConditionalCommand":return al(e);case"FunctionDef":return ll(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Ba(e){let t=[];for(let s of e.assignments)t.push(ja(s));e.name&&t.push(le(e.name));for(let s of e.args)t.push(le(s));for(let s of e.redirections)t.push(zi(s));return t.join(" ")}function ja(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(le).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${le(e.value)}`:`${e.name}${t}`}function le(e){return e.parts.map(t=>ys(t,!1)).join("")}function Ue(e){return e.parts.map(t=>ys(t,!0)).join("")}function ys(e,t){switch(e.type){case"Literal":return t?Ua(e.value):Ha(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>ys(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Wi(e);case"CommandSubstitution":return e.legacy?`\`${Qe(e.body)}\``:`$(${Qe(e.body)})`;case"ArithmeticExpansion":return`$((${j(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${Qe(e.body)})`:`>(${Qe(e.body)})`;case"BraceExpansion":return Ka(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 Ha(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function Ua(e){return e.replace(/[$`"\\]/g,"\\$&")}function Za(e,t){return e.parts.map(s=>qa(s,t)).join("")}function qa(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Wi(e);case"CommandSubstitution":return e.legacy?`\`${Qe(e.body)}\``:`$(${Qe(e.body)})`;case"ArithmeticExpansion":return`$((${j(e.expression.expression)}))`;default:return ys(e,!1)}}function Wi(e){return e.operation?`\${${Mi(e.parameter,e.operation)}}`:Ga(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Ga(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Mi(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${Ue(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${Ue(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?Ue(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${Ue(t.word)}`;case"Substring":{let s=j(t.offset.expression);return t.length?`${e}:${s}:${j(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",r=t.greedy?`${s}${s}`:s;return`${e}${r}${Ue(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let r=t.replacement?`/${Ue(t.replacement)}`:"";return`${e}${s}${Ue(t.pattern)}${r}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",r=t.all?`${s}${s}`:s,n=t.pattern?Ue(t.pattern):"";return`${e}${r}${n}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Mi(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 Ka(e){return`{${e.items.map(Xa).join(",")}}`}function Xa(e){if(e.type==="Word")return le(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 zi(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=Za(s.content,s.quoted);return`${t}${e.operator}${r}
|
|
701
|
+
${n}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${le(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${le(e.target)}`:`${t}${e.operator} ${le(e.target)}`}function _e(e){return e.length===0?"":` ${e.map(zi).join(" ")}`}function ve(e){return e.map(Li).join(`
|
|
702
|
+
`)}function Ya(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} ${ve(r.condition)}; then
|
|
703
|
+
${ve(r.body)}`)}return e.elseBody&&t.push(`else
|
|
704
|
+
${ve(e.elseBody)}`),`${t.join(`
|
|
705
|
+
`)}
|
|
706
|
+
fi${_e(e.redirections)}`}function Qa(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(le).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
|
|
707
|
+
${ve(e.body)}
|
|
708
|
+
done${_e(e.redirections)}`}function Ja(e){let t=e.init?j(e.init.expression):"",s=e.condition?j(e.condition.expression):"",r=e.update?j(e.update.expression):"";return`for ((${t}; ${s}; ${r})); do
|
|
709
|
+
${ve(e.body)}
|
|
710
|
+
done${_e(e.redirections)}`}function el(e){return`while ${ve(e.condition)}; do
|
|
711
|
+
${ve(e.body)}
|
|
712
|
+
done${_e(e.redirections)}`}function tl(e){return`until ${ve(e.condition)}; do
|
|
713
|
+
${ve(e.body)}
|
|
714
|
+
done${_e(e.redirections)}`}function sl(e){let t=e.items.map(rl).join(`
|
|
715
|
+
`);return`case ${le(e.word)} in
|
|
716
|
+
${t}
|
|
717
|
+
esac${_e(e.redirections)}`}function rl(e){let t=e.patterns.map(le).join(" | "),s=ve(e.body);return s?`${t})
|
|
718
|
+
${s}
|
|
719
|
+
${e.terminator}`:`${t})
|
|
720
|
+
${e.terminator}`}function nl(e){return`(${ve(e.body)})${_e(e.redirections)}`}function il(e){return`{ ${ve(e.body)}; }${_e(e.redirections)}`}function ol(e){return`((${j(e.expression.expression)}))${_e(e.redirections)}`}function al(e){return`[[ ${Ye(e.expression)} ]]${_e(e.redirections)}`}function ll(e){let t=Fi(e.body);return`${e.name}() ${t}${_e(e.redirections)}`}function j(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`${j(e.left)} ${e.operator} ${j(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${j(e.operand)}`:`${j(e.operand)}${e.operator}`;case"ArithTernary":return`${j(e.condition)} ? ${j(e.consequent)} : ${j(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${j(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${j(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${j(e.target)}[${j(e.subscript)}]`:j(e.target)} ${e.operator} ${j(e.value)}`;case"ArithDynamicElement":return`${j(e.nameExpr)}[${j(e.subscript)}]`;case"ArithGroup":return`(${j(e.expression)})`;case"ArithNested":return`$((${j(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}[${j(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(j).join("");case"ArithDoubleSubscript":return`${e.array}[${j(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 Ye(e){switch(e.type){case"CondBinary":return`${le(e.left)} ${e.operator} ${le(e.right)}`;case"CondUnary":return`${e.operator} ${le(e.operand)}`;case"CondNot":return`! ${Ye(e.operand)}`;case"CondAnd":return`${Ye(e.left)} && ${Ye(e.right)}`;case"CondOr":return`${Ye(e.left)} || ${Ye(e.right)}`;case"CondGroup":return`( ${Ye(e.expression)} )`;case"CondWord":return le(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var gs=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 Et(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",`
|
|
721
|
+
`],["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=Ci({...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=Rr(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",Is(this.state.options)),this.state.env.set("BASHOPTS",xs(this.state.shoptOptions)),cn(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&s instanceof Et)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let o of tn(t.commands))this.registerCommand(o);if(t.fetch||t.network)for(let o of sn())this.registerCommand(o);if(t.python)for(let o of rn())this.registerCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of nn())this.registerCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)on(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
|
|
722
|
+
# Built-in command: ${t.name}
|
|
723
|
+
`;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=Bi(t.stdout),t.stderr=Bi(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.
|
|
724
|
+
`,exitCode:1,env:ge(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:ge(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:ul(s?.stdin,s?.stdinKind),signal:s?.signal,extraArgs:s?.args},l=t;s?.rawScript||(l=Vi(t));let c=this.defenseInDepthConfig?ye.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let d=$e(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=$s(g,v.metadata))}h=g}let p={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 kt(p,a).executeScript(d);return h&&(b.metadata=h),this.logResult(b)};return u?await u.run(f):await f()}catch(f){if(f instanceof Z)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:ge(this.state.env,s?.env)});if(f instanceof me)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:ge(this.state.env,s?.env)});if(f instanceof Le)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:ge(this.state.env,s?.env)});if(f instanceof xt)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:ge(this.state.env,s?.env)});if(f instanceof X)return this.logResult({stdout:f.stdout,stderr:fe(f.stderr),exitCode:X.EXIT_CODE,env:ge(this.state.env,s?.env)});if(f instanceof Ze)return this.logResult({stdout:"",stderr:`bash: security violation: ${fe(f.message)}
|
|
725
|
+
`,exitCode:1,env:ge(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${fe(f.message)}
|
|
726
|
+
`,exitCode:2,env:ge(this.state.env,s?.env)});if(f instanceof Br)return this.logResult({stdout:"",stderr:`bash: ${fe(f.message)}
|
|
727
|
+
`,exitCode:2,env:ge(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${fe(f.message)}
|
|
728
|
+
`,exitCode:1,env:ge(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 We(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=Vi(t),r=$e(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=$s(n,o.metadata))}return{script:Ri(r),ast:r,metadata:n}}};function Vi(e){let t=e.split(`
|
|
729
|
+
`),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(`
|
|
730
|
+
`)}var cl=new TextDecoder("utf-8",{fatal:!0});function Bi(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 cl.decode(s)}catch{return e}}function ul(e,t){if(e!==void 0)return t==="bytes"?e:qe(e)}import*as H from"node:fs";import*as ie from"node:path";import*as be from"node:fs";import*as ce from"node:path";function Tt(e,t){if(e===t)return!0;let s=e[t.length];return(s==="/"||s==="\\")&&e.startsWith(t)}function Dt(e,t){try{let s=be.realpathSync(e);return Tt(s,t)?s:null}catch(s){if(s.code==="ENOENT"){let r=ce.dirname(e);if(r===e)return null;let n=Dt(r,t);if(n===null)return null;try{if(be.lstatSync(e).isSymbolicLink()){let o=be.readlinkSync(e),a=ce.isAbsolute(o)?o:ce.resolve(ce.dirname(e),o);if(Dt(a,t)===null)return null}}catch{}return ce.join(n,ce.basename(e))}return null}}function ji(e,t,s){let r=Dt(e,s);if(r===null)return null;let n=ce.resolve(e),i=n.slice(t.length),o=r.slice(s.length);if(i!==o)return null;try{if(be.lstatSync(n).isSymbolicLink())return null}catch{}return r}function Hi(e,t){if(!be.existsSync(e))throw new Error(`${t} root does not exist`);if(!be.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function Ui(e,t){if(!ce.isAbsolute(e))return{withinRoot:!0,relativePath:e};let s;try{s=be.realpathSync(e)}catch{s=ce.resolve(e)}return Tt(s,t)?{withinRoot:!0,relativePath:s.slice(t.length).replace(/\\/g,"/")||"/"}:{withinRoot:!1,safeName:ce.basename(e)}}function Zi(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 fl=["ELOOP","EFBIG","EPERM"],dl="/home/user/project",yt=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=ie.resolve(t.root);let s=t.mountPoint??dl;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,Hi(this.root,"OverlayFs"),this.canonicalRoot=H.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=L(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=L(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=L(t),r=this.getRelativeToMount(s);if(r===null)return null;let n=ie.join(this.root,r),i=ie.resolve(n);return Tt(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Dt(t,this.canonicalRoot):ji(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=ie.dirname(t),r=this.resolveRealPath_(s);return r===null?null:ie.join(r,ie.basename(t))}sanitizeError(t,s,r){Zi(t,s,r,fl)}ensureParentDirs(t){let s=Ke(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=L(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 H.promises.lstat(r),!0}catch{return!1}}async readFile(t,s){let r=await this.readFileBuffer(t),n=Me(s);return tt(r,n)}async readFileBytes(t){let s=await this.readFileBuffer(t);return tt(s,"binary")}async readFileBuffer(t,s=new Set){W(t,"open");let r=L(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 H.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let c=await H.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?H.constants.O_RDONLY:H.constants.O_RDONLY|H.constants.O_NOFOLLOW,l=await H.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){W(t,"write"),this.assertWritable(`write '${t}'`);let n=L(t);this.ensureParentDirs(n);let i=Me(r),o=et(s,i);this.memory.set(n,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(n)}async appendFile(t,s,r){W(t,"append"),this.assertWritable(`append '${t}'`);let n=L(t),i=Me(r),o=et(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){W(t,"stat");let r=L(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 H.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await H.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){W(t,"lstat");let s=L(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 H.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 nt(t,s)}realTargetToVirtual(t,s){let r=Ui(s,this.canonicalRoot);if(r.withinRoot){if(!ie.isAbsolute(s))return s;let n=r.relativePath;return this.mountPoint==="/"?n:`${this.mountPoint}${n}`}return r.safeName}async mkdir(t,s){W(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=L(t);if(await this.existsInOverlay(r)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=Ke(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 H.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 H.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=L(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 H.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let u=await H.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){W(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){W(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){W(t,"rm"),this.assertWritable(`rm '${t}'`);let r=L(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 H.lstatSync(r),!0}catch{return!1}}async cp(t,s,r){W(t,"cp"),W(s,"cp"),this.assertWritable(`cp '${s}'`);let n=L(t),i=L(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 zt(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=H.readdirSync(r);for(let i of n){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=ie.join(r,i);H.lstatSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){W(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=L(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}'`);W(s,"symlink"),this.assertWritable(`symlink '${s}'`);let r=L(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){W(t,"link"),W(s,"link"),this.assertWritable(`link '${s}'`);let r=L(t),n=L(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){W(t,"readlink");let s=L(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 H.promises.readlink(n);if(!ie.isAbsolute(i)){let o=ie.resolve(ie.dirname(n),i),a;try{a=H.realpathSync(o)}catch{a=o}if(!Tt(a,this.canonicalRoot))return ie.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){W(t,"realpath");let s=L(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 p=this.toRealPath(c),m=this.resolveRealPath_(p);if(m)try{if((await H.promises.lstat(m)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let b=await H.promises.readlink(m),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_(p);if(y)try{if((await H.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){W(t,"utimes"),this.assertWritable(`utimes '${t}'`);let n=L(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})}};function Gi(){console.log(`just-bash - A secure bash environment for AI agents
|
|
731
|
+
|
|
732
|
+
Usage:
|
|
733
|
+
just-bash [options] [script-file]
|
|
734
|
+
just-bash -c 'script' [options]
|
|
735
|
+
echo 'script' | just-bash [options]
|
|
736
|
+
|
|
737
|
+
Options:
|
|
738
|
+
-c <script> Execute the script from command line argument
|
|
739
|
+
-e, --errexit Exit immediately if a command exits with non-zero status
|
|
740
|
+
--root <path> Root directory for OverlayFS (default: current directory)
|
|
741
|
+
--cwd <path> Working directory within the sandbox (default: project mount point)
|
|
742
|
+
--allow-write Allow write operations (default: read-only)
|
|
743
|
+
--python Enable python3/python commands (disabled by default)
|
|
744
|
+
--javascript Enable js-exec command (disabled by default)
|
|
745
|
+
--json Output results as JSON (stdout, stderr, exitCode)
|
|
746
|
+
-h, --help Show this help message
|
|
747
|
+
-v, --version Show version
|
|
748
|
+
|
|
749
|
+
Security:
|
|
750
|
+
- Reads from the real filesystem (read-only via OverlayFS)
|
|
751
|
+
- Write operations are blocked by default (use --allow-write to enable)
|
|
752
|
+
- Cannot escape the root directory
|
|
753
|
+
- No network access
|
|
754
|
+
|
|
755
|
+
Filesystem:
|
|
756
|
+
The root directory is mounted at /home/user/project in the virtual filesystem.
|
|
757
|
+
The working directory starts at this mount point.
|
|
758
|
+
|
|
759
|
+
Examples:
|
|
760
|
+
# List files in current directory
|
|
761
|
+
just-bash -c 'ls -la'
|
|
762
|
+
|
|
763
|
+
# Execute with specific root
|
|
764
|
+
just-bash -c 'cat package.json' --root /path/to/project
|
|
765
|
+
|
|
766
|
+
# Pipe script from stdin
|
|
767
|
+
echo 'find . -name "*.ts" | head -5' | just-bash
|
|
768
|
+
|
|
769
|
+
# Execute a script file
|
|
770
|
+
just-bash ./scripts/build.sh
|
|
771
|
+
|
|
772
|
+
# Get JSON output for programmatic use
|
|
773
|
+
just-bash -c 'echo hello' --json
|
|
774
|
+
|
|
775
|
+
# Allow write operations (writes stay in memory)
|
|
776
|
+
just-bash -c 'echo test > /tmp/file.txt && cat /tmp/file.txt' --allow-write
|
|
777
|
+
`)}function hl(){console.log("just-bash 1.0.0")}function pl(e){let t={root:process.cwd(),cwd:"/",cwdOverridden:!1,errexit:!1,allowWrite:!1,python:!1,javascript:!1,json:!1,help:!1,version:!1},s=0;for(;s<e.length;){let r=e[s];if(r==="-h"||r==="--help")t.help=!0,s++;else if(r==="-v"||r==="--version")t.version=!0,s++;else if(r==="-c")s+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[s+1],s+=2;else if(r==="-e"||r==="--errexit")t.errexit=!0,s++;else if(r==="--root")s+1>=e.length&&(console.error("Error: --root requires a path argument"),process.exit(1)),t.root=qi(e[s+1]),s+=2;else if(r==="--cwd")s+1>=e.length&&(console.error("Error: --cwd requires a path argument"),process.exit(1)),t.cwd=e[s+1],t.cwdOverridden=!0,s+=2;else if(r==="--json")t.json=!0,s++;else if(r==="--allow-write")t.allowWrite=!0,s++;else if(r==="--python")t.python=!0,s++;else if(r==="--javascript")t.javascript=!0,s++;else if(r.startsWith("-"))if(r.length>2&&!r.startsWith("--")){let n=r.slice(1);for(let i of n)if(i==="e")t.errexit=!0;else if(i==="h")t.help=!0;else if(i==="v")t.version=!0;else if(i==="c"){s+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[s+1],s++;break}else console.error(`Error: Unknown option: -${i}`),process.exit(1);s++}else console.error(`Error: Unknown option: ${r}`),process.exit(1);else!t.scriptFile&&!t.script?t.scriptFile=r:t.scriptFile&&t.root===process.cwd()&&(t.root=qi(r)),s++}return t}function ml(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("/")}`||"/"}async function yl(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}async function gl(){let e=process.argv.slice(2),t=pl(e);t.help&&(Gi(),process.exit(0)),t.version&&(hl(),process.exit(0));let s;if(t.script)s=t.script;else if(t.scriptFile){let a=new yt({root:t.root}),l=a.getMountPoint();try{let c=t.scriptFile.startsWith("/")?t.scriptFile:`${l}/${t.scriptFile}`;s=await a.readFile(c,"utf-8")}catch(c){console.error(`Error: Cannot read script file: ${t.scriptFile}`),console.error(fe(c instanceof Error?c.message:String(c))),process.exit(1)}}else process.stdin.isTTY?(Gi(),process.exit(1)):s=await yl();s.trim()||(t.json&&console.log(JSON.stringify({stdout:"",stderr:"",exitCode:0})),process.exit(0));let r=new yt({root:t.root,readOnly:!t.allowWrite}),n=r.getMountPoint(),i=t.cwdOverridden?ml(t.cwd):n,o=new gs({fs:r,cwd:i,python:t.python,javascript:t.javascript});t.errexit&&(s=`set -e
|
|
778
|
+
${s}`);try{let a=await o.exec(s);t.json?console.log(JSON.stringify({stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode})):(a.stdout&&process.stdout.write(a.stdout),a.stderr&&process.stderr.write(a.stderr)),process.exit(a.exitCode)}catch(a){let l=fe(a instanceof Error?a.message:String(a));t.json?console.log(JSON.stringify({stdout:"",stderr:l,exitCode:1})):console.error(l),process.exit(1)}}gl().catch(e=>{console.error("Fatal error:",fe(e instanceof Error?e.message:String(e))),process.exit(1)});
|