@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,757 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{createRequire} from"node:module";const require=createRequire(import.meta.url);
|
|
3
|
+
import{B as Qn,C as Jn,D as de,E as Ke,F as ee,G as Ae,H as Mt,I as er,J as T,K as tr,L as sr,M as Oe,N as Os,O as nt,P as B,a as Hn,b as As,c as Un,d as Lt,e as Q,f as V,g as Ee,h as ne,i as Ne,j as Ve,k as _s,l as Ft,m as Zn,n as Cs,o as qn,p as ve,q as xe,r as Gn,s as Kn,t as Ps,u as ks,v as Be,w as Xn,x as Yn,y as Se,z as Ns}from"./chunks/chunk-QPHXCMJV.js";import{a as tt,b as st,c as ze}from"./chunks/chunk-O2BCKSMK.js";import{c as Ss}from"./chunks/chunk-NYIPFY36.js";import{a as zn,b as Vn}from"./chunks/chunk-KRRM5UCC.js";import{a as We,b as we,c as Es}from"./chunks/chunk-MROECM42.js";import{a as bt,b as $s}from"./chunks/chunk-LNNWMRCB.js";import{a as qe,b as ye}from"./chunks/chunk-HL4ZS7TX.js";import{a as vt}from"./chunks/chunk-7GBHDJNC.js";import{b as Ge,d as Bn,e as vs}from"./chunks/chunk-VZK4FHWJ.js";import{a as ie,b as fe,c as le,d as pe,e as bs,f as Z,g as Fe,h as wt,i as It,j as jn,k as X,l as Rt,m as Me,n as Pe,o as xt,p as me}from"./chunks/chunk-UVKD35GR.js";import"./chunks/chunk-7JZKVC3F.js";import{a as ke}from"./chunks/chunk-PBOVSFTJ.js";import{a as ge}from"./chunks/chunk-I4IRHQDW.js";import{a as Wn}from"./chunks/chunk-LNVSXNT7.js";import*as Ki from"node:fs";import*as Xi from"node:readline";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 Ds=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ds.push({name:"python3",load:async()=>(await import("./chunks/python3-BQWDPUBM.js")).python3Command}),Ds.push({name:"python",load:async()=>(await import("./chunks/python3-BQWDPUBM.js")).pythonCommand}));var Ts=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ts.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-BC6NI55L.js")).jsExecCommand}),Ts.push({name:"node",load:async()=>(await import("./chunks/js-exec-BC6NI55L.js")).nodeStubCommand}));var ea=[{name:"curl",load:async()=>(await import("./chunks/curl-PLHETP4J.js")).curlCommand}],nr=new Map;function Wt(e){return{name:e.name,async execute(t,s){let n=nr.get(e.name);if(n||(n=await ye.runTrustedAsync(()=>e.load()),nr.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-MPBSMQIN.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function rr(e){return(e?rt.filter(s=>e.includes(s.name)):rt).map(Wt)}function ir(){return ea.map(Wt)}function ar(){return Ds.map(Wt)}function or(){return Ts.map(Wt)}function lr(e){return"load"in e&&typeof e.load=="function"}function cr(e){let t=null;return{name:e.name,trusted:!0,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}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(r=>r&&r!=="."),n=[];for(let r of s)r===".."?n.pop():n.push(r);return`/${n.join("/")}`||"/"}function M(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function Xe(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 it(e,t){if(t.startsWith("/"))return L(t);let s=Xe(e);return L($t(s,t))}var at=new TextEncoder;function ta(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,n]of Object.entries(t))typeof n=="function"?this.writeFileLazy(s,n):ta(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}ensureParentDirs(t){let s=Xe(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,n,r){M(t,"write");let i=L(t);this.ensureParentDirs(i);let a=ze(n),o=tt(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}writeFileLazy(t,s,n){M(t,"write");let r=L(t);this.ensureParentDirs(r),this.data.set(r,{type:"file",lazy:s,mode:n?.mode??420,mtime:n?.mtime??new Date})}async materializeLazy(t,s){let n=await s.lazy(),i={type:"file",content:typeof n=="string"?at.encode(n):n,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let n=await this.readFileBuffer(t),r=ze(s);return st(n,r)}async readFileBytes(t){let s=await this.readFileBuffer(t);return st(s,"binary")}async readFileBuffer(t){M(t,"open");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in n){let r=await this.materializeLazy(s,n);return r.content instanceof Uint8Array?r.content:at.encode(r.content)}return n.content instanceof Uint8Array?n.content:at.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){M(t,"append");let r=L(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let a=ze(n),o=tt(s,a);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(r,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:at.encode("content"in l?l.content:""),u=new Uint8Array(c.length+o.length);u.set(c),u.set(o,c.length),this.data.set(r,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}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){M(t,"stat");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=at.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){M(t,"lstat");let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=at.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveIntermediateSymlinks(t){let s=L(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let a=0;a<n.length-1;a++){let o=n[a];r=`${r}/${o}`;let l=this.data.get(r),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=it(r,l.target),l=this.data.get(r),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=L(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let a of n){r=`${r}/${a}`;let o=this.data.get(r),l=0,c=40;for(;o&&o.type==="symlink"&&l<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=it(r,o.target),o=this.data.get(r),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){M(t,"mkdir");let n=L(t);if(this.data.has(n)){if(this.data.get(n)?.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 r=Xe(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){M(t,"scandir");let s=L(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=it(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,a=new Map;for(let[o,l]of this.data.entries())if(o!==s&&o.startsWith(i)){let c=o.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!a.has(u)&&a.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(a.values()).sort((o,l)=>o.name<l.name?-1:o.name>l.name?1:0)}async rm(t,s){M(t,"rm");let n=L(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of i){let o=$t(n,a);await this.rm(o,s)}}}this.data.delete(n)}async cp(t,s,n){M(t,"cp"),M(s,"cp");let r=L(t),i=L(s),a=this.data.get(r);if(!a)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(a.type==="file")if(this.ensureParentDirs(i),"content"in a){let o=a.content instanceof Uint8Array?new Uint8Array(a.content):a.content;this.data.set(i,{...a,content:o})}else this.data.set(i,{...a});else if(a.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...a});else if(a.type==="directory"){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let o=await this.readdir(r);for(let l of o){let c=$t(r,l),u=$t(i,l);await this.cp(c,u,n)}}}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){M(t,"chmod");let n=L(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);r.mode=s}async symlink(t,s){M(s,"symlink");let n=L(s);if(this.data.has(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){M(t,"link"),M(s,"link");let n=L(t),r=L(s),i=this.data.get(n);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(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let a=i;"lazy"in a&&(a=await this.materializeLazy(n,a)),this.ensureParentDirs(r),this.data.set(r,{type:"file",content:a.content,mode:a.mode,mtime:a.mtime})}async readlink(t){M(t,"readlink");let s=L(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}async realpath(t){M(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,n){M(t,"utimes");let r=L(t),i=this.resolvePathWithSymlinks(r),a=this.data.get(i);if(!a)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);a.mtime=n}};function sa(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function na(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 ra(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 ia(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Hn}
|
|
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",()=>As(t)):e.writeFileSync("/proc/self/status",As(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 fr(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){sa(e)&&(na(e,t),ra(e),ia(e,s))}var aa=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],oa=["braceexpand","hashall","interactive-comments"];function Rs(e){let t=[],s=[...oa.map(n=>({name:n,enabled:!0})),...aa.map(n=>({name:n,enabled:e[n]}))].sort((n,r)=>n.name.localeCompare(r.name));for(let n of s)n.enabled&&t.push(n.name);return t.join(":")}function lt(e){e.state.env.set("SHELLOPTS",Rs(e.state.options))}var la=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function xs(e){let t=[];for(let s of la)e[s]&&t.push(s);return t.join(":")}function Ls(e){e.state.env.set("BASHOPTS",xs(e.state.shoptOptions))}var ca="BASH_ALIAS_";function dr(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function hr(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function pr(e,t){return e.env.get(`${ca}${t}`)}function Fs(e,t,s){if(!t.name||!dr(t.name))return t;let n=hr(t.name);if(!n)return t;let r=pr(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new V,a=r,o=r.endsWith(" ");if(!o)for(let f of t.args){let d=yr(f);a+=` ${d}`}let l;try{l=i.parse(a)}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 mr(t,r);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return mr(t,r);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(o&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(dr(f)){let d=hr(f);if(d&&pr(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},p=Fs(e,h,s);p!==h&&(u={...u,name:p.name,args:[...p.args]})}}}return u}catch(i){throw s.delete(n),i}}function mr(e,t){let s=t;for(let a of e.args){let o=yr(a);s+=` ${o}`}let n=new V,r=n.parseWordFromString("eval",!1,!1),i=n.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:r,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function yr(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(n=>n.type==="Literal"?n.value:`$${n.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 gr(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),n=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!n||!s.endsWith(")"))return null;let r=n[1],i=[],a=!1,o="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!a){let d=f.indexOf("=(");d!==-1&&(a=!0,f=f.slice(d+2))}if(a){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(o||l)&&(i.push(o),o="",l=!1):h&&(o+=h)}}else if(a)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(o))o+=Ft({type:"Word",parts:[u]});else{(o||l)&&(i.push(o),o="",l=!1);let d=await Oe(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]});o+=f}(o||l)&&i.push(o);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${r}=(${c.join(" ")})`}async function wr(e,t){let s=-1,n=-1,r=!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,n=b,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(O)){s=m,n=b,r=!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,n=g;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),a=t.parts[s];if(a.type!=="Literal")return null;let o=r?2:1,l=a.value.slice(0,n),c=a.value.slice(n+o),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}${r?"+=":"="}${h}`}var ua=["tar","yq","xan","sqlite3","python3","python"];function vr(e){return ua.includes(e)}var W=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 De(e,t,s="",n=""){throw new X(e,t,s,n)}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 Ms(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Me;return k("",`bash: break: only meaningful in a loop
|
|
6
|
+
`,0)}if(t.length>1)throw new Pe(1,"",`bash: break: too many arguments
|
|
7
|
+
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n))throw new Pe(128,"",`bash: break: ${t[0]}: numeric argument required
|
|
8
|
+
`);if(n<1)throw new ie(1,"",`bash: break: loop count out of range
|
|
9
|
+
`);s=n}throw new ie(s)}async function Ws(e,t){let s,n=!1,r=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")r=!1,i++;else if(t[i]==="-P")r=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let a=t.slice(i);if(a.length>1)return _(`bash: cd: too many arguments
|
|
10
|
+
`,2);if(a.length===0||a[0]==="~"?s=e.state.env.get("HOME")||"/":a[0]==="-"?(s=e.state.previousDir,n=!0):s=a[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,n=!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(r)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(n?`${u}
|
|
13
|
+
`:"")}function zs(e,t){return e.fs.resolvePath(e.state.cwd,t)}var fa=["-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 fa.includes(e)}async function jt(e,t,s){let n=zs(e,s);switch(t){case"-e":case"-a":return e.fs.exists(n);case"-f":return await e.fs.exists(n)?(await e.fs.stat(n)).isFile:!1;case"-d":return await e.fs.exists(n)?(await e.fs.stat(n)).isDirectory:!1;case"-r":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&256)!==0:!1;case"-w":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&128)!==0:!1;case"-x":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&64)!==0:!1;case"-s":return await e.fs.exists(n)?(await e.fs.stat(n)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(n)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&512)!==0:!1;case"-g":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(n);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(n);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(n);default:return!1}}var da=["-nt","-ot","-ef"];function Ht(e){return da.includes(e)}async function Ut(e,t,s,n){let r=zs(e,s),i=zs(e,n);switch(t){case"-nt":try{let a=await e.fs.stat(r),o=await e.fs.stat(i);return a.mtime>o.mtime}catch{return!1}case"-ot":try{let a=await e.fs.stat(r),o=await e.fs.stat(i);return a.mtime<o.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(r)||!await e.fs.exists(i))return!1;let a=e.fs.resolvePath(e.state.cwd,r),o=e.fs.resolvePath(e.state.cwd,i);return a===o}catch{return!1}default:return!1}}var ha=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Zt(e){return ha.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,n=!1,r=!1,i=!1){if(n){let o=ct(t,s,r,i);return e==="!="?!o:o}if(r){let o=t.toLowerCase()===s.toLowerCase();return e==="!="?!o:o}let a=t===s;return e==="!="?!a:a}var pa=new Set(["-z","-n"]);function Kt(e){return pa.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 n=s[1],r=s[2];if(e.state.associativeArrays?.has(n)){let o=r;return(o.startsWith("'")&&o.endsWith("'")||o.startsWith('"')&&o.endsWith('"'))&&(o=o.slice(1,-1)),o=o.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),e.state.env.has(`${n}_${o}`)}let a;try{let o=new V,l=Q(o,r);a=await B(e,l.expression)}catch{if(/^-?\d+$/.test(r))a=Number.parseInt(r,10);else{let o=e.state.env.get(r);a=o?Number.parseInt(o,10):0}}if(a<0){let o=ne(e,n),l=e.state.currentLine;if(o.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
|
|
14
|
+
`,!1;if(a=Math.max(...o)+1+a,a<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
|
|
15
|
+
`,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Ve(e,t).length>0:ne(e,t).length>0}async function je(e,t){switch(t.type){case"CondBinary":{let s=await T(e,t.left),n=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),r;if(t.operator==="=~")if(n){let i=await T(e,t.right);r=Jn(i)}else r=await tr(e,t.right);else St(t.operator)&&!n?r=await sr(e,t.right):r=await T(e,t.right);if(St(t.operator)){let i=e.state.shoptOptions.nocasematch;return Gt(t.operator,s,r,!n,i,!0)}if(Zt(t.operator))return qt(t.operator,await $r(e,s),await $r(e,r));if(Ht(t.operator))return Ut(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,a=wa(r),l=vt(a,i?"i":"").match(s);if(Ne(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<r;case">":return s>r;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"?Bs(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 je(e,t.operand);case"CondAnd":return await je(e,t.left)?await je(e,t.right):!1;case"CondOr":return await je(e,t.left)?!0:await je(e,t.right);case"CondGroup":return await je(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 n=t[0],r=t[1];return n==="("?_(`test: '(' without matching ')'
|
|
16
|
+
`,2):Bt(n)?Y(await jt(e,n,r)):Kt(n)?Y(Xt(n,r)):n==="!"?Y(!r):n==="-v"?Y(await Yt(e,r)):n==="-o"?Y(Bs(e,r)):n==="="||n==="=="||n==="!="||n==="<"||n===">"||n==="-eq"||n==="-ne"||n==="-lt"||n==="-le"||n==="-gt"||n==="-ge"||n==="-nt"||n==="-ot"||n==="-ef"?_(`test: ${n}: unary operator expected
|
|
17
|
+
`,2):k("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(St(r))return Y(Gt(r,n,i));if(Zt(r)){let a=Qt(n),o=Qt(i);return!a.valid||!o.valid?k("","",2):Y(qt(r,a.value,o.value))}if(Ht(r))return Y(await Ut(e,r,n,i));switch(r){case"-a":return Y(n!==""&&i!=="");case"-o":return Y(n!==""||i!=="");case">":return Y(n>i);case"<":return Y(n<i)}if(n==="!"){let a=await At(e,[r,i]);return k("",a.stderr,a.exitCode===0?1:a.exitCode===1?0:a.exitCode)}if(n==="("&&i===")")return Y(r!=="")}if(t.length===4){if(t[0]==="!"){let n=await At(e,t.slice(1));return k("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return At(e,[t[1],t[2]])}let s=await Sr(e,t,0);return s.pos<t.length?_(`test: too many arguments
|
|
18
|
+
`,2):Y(s.value)}async function Sr(e,t,s){return ma(e,t,s)}async function ma(e,t,s){let{value:n,pos:r}=await br(e,t,s);for(;t[r]==="-o";){let i=await br(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function br(e,t,s){let{value:n,pos:r}=await Vs(e,t,s);for(;t[r]==="-a";){let i=await Vs(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function Vs(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await Vs(e,t,s+1);return{value:!n,pos:r}}return ya(e,t,s)}async function ya(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await Sr(e,t,s+1);return{value:i,pos:t[a]===")"?a+1:a}}let r=t[s+1];if(St(r)){let i=n,a=t[s+2]??"";return{value:Gt(r,i,a),pos:s+3}}if(Zt(r)){let i=Qt(n),a=Qt(t[s+2]??"0");return!i.valid||!a.valid?{value:!1,pos:s+3}:{value:qt(r,i.value,a.value),pos:s+3}}if(Ht(r)){let i=n,a=t[s+2]??"";return{value:await Ut(e,r,i,a),pos:s+3}}if(Bt(n)){let i=t[s+1]??"";return{value:await jt(e,n,i),pos:s+2}}if(Kt(n)){let i=t[s+1]??"";return{value:Xt(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await Yt(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:Bs(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function ct(e,t,s=!1,n=!1){let r=`^${Ar(t,n)}$`;return vt(r,s?"is":"s").test(e)}function Ar(e,t){let s="";for(let n=0;n<e.length;n++){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=_r(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=Cr(a),l=o.map(u=>Ar(u,t)),c=l.length>0?l.join("|"):"(?:)";if(r==="@")s+=`(?:${c})`;else if(r==="*")s+=`(?:${c})*`;else if(r==="+")s+=`(?:${c})+`;else if(r==="?")s+=`(?:${c})?`;else if(r==="!")if(i<e.length-1){let f=o.map(h=>Pr(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})$).*`;n=i;continue}}if(r==="\\")if(n+1<e.length){let i=e[n+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,n++}else s+="\\\\";else if(r==="*")s+=".*";else if(r==="?")s+=".";else if(r==="["){let i=e.indexOf("]",n+1);if(i!==-1){let a=e.slice(n+1,i);a.startsWith("!")?s+=`[^${a.slice(1)}]`:s+=e.slice(n,i+1),n=i}else s+="\\["}else/[\\^$.|+(){}]/.test(r)?s+=`\\${r}`:s+=r}return s}function _r(e,t){let s=1,n=t+1;for(;n<e.length&&s>0;){let r=e[n];if(r==="\\"){n+=2;continue}if(r==="(")s++;else if(r===")"&&(s--,s===0))return n;n++}return-1}function Cr(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function Pr(e,t){let s=0,n=0;for(;n<e.length;){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=_r(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),l=Cr(a).map(c=>Pr(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],n=i+1;continue}return null}return null}}if(r==="*")return null;if(r==="?"){s+=1,n++;continue}if(r==="["){let i=e.indexOf("]",n+1);if(i!==-1){s+=1,n=i+1;continue}s+=1,n++;continue}if(r==="\\"){s+=1,n+=2;continue}s+=1,n++}return s}function Bs(e,t){let n=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 n?n():!1}async function $r(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 Er(t);try{let s=new V,n=Q(s,t);return await B(e,n.expression)}catch{return Er(t)}}function ga(e,t){let s=0;for(let n of e){let r;if(n>="0"&&n<="9")r=n.charCodeAt(0)-48;else if(n>="a"&&n<="z")r=n.charCodeAt(0)-97+10;else if(n>="A"&&n<="Z")r=n.charCodeAt(0)-65+36;else if(n==="@")r=62;else if(n==="_")r=63;else return Number.NaN;if(r>=t)return Number.NaN;s=s*t+r}return s}function Er(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,n=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(n){let r=Number.parseInt(n[1],10);r>=2&&r<=64?s=ga(n[2],r):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 wa(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 n=va(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function va(e,t){let s=t+1,n="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(n+="^",s++);let r=!1;s<e.length&&e[s]==="]"&&(r=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let a="",o=!1;for(;s<e.length;){let l=e[s];if(l==="]"){o=!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);a+=ba(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);a+=d,s=f+2;continue}}}if(l==="\\"&&s+1<e.length){a+=l+e[s+1],s+=2;continue}a+=l,s++}return o?(r&&(n+="\\]"),i&&(n+="\\["),n+=a,n+="]",{converted:n,endIndex:s}):{converted:"\\[",endIndex:t+1}}function ba(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 Te(e){let t=[],s="",n=!1,r=!1,i=!1,a=!1;for(let o of e){if(i){s+=o,i=!1,a=!0;continue}if(o==="\\"){i=!0;continue}if(o==="'"&&!r){n||(a=!0),n=!n;continue}if(o==='"'&&!n){r||(a=!0),r=!r;continue}if((o===" "||o===" "||o===`
|
|
19
|
+
`)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&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 n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)n+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)r+=e[s],s++;t.push([n,r])}return t}function kr(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Te(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 n=e.indexOf("=");return{name:e.slice(0,n),isArray:!1,value:e.slice(n+1)}}return{name:e,isArray:!1}}async function $a(e,t){try{let s=new V,n=Q(s,t);return await B(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Nr(e,t,s={}){let{name:n,isArray:r,arrayElements:i,value:a,arrayIndex:o}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=ee(e,n);if(u)return u}if(r&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${n}_${u}`,i[u]);e.state.env.set(`${n}__length`,String(i.length))}else if(o!==void 0&&a!==void 0){let u=await $a(e,o);e.state.env.set(`${n}_${u}`,a);let f=parseInt(e.state.env.get(`${n}__length`)??"0",10);u>=f&&e.state.env.set(`${n}__length`,String(u+1))}else a!==void 0&&e.state.env.set(n,a);return l&&de(e,n),null}function He(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function ut(e,t){return e.state.localVarDepth?.get(t)}function es(e,t){e.state.localVarDepth?.delete(t)}function Or(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let n=e.state.localVarStack.get(t)||[];n.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,n)}function ts(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Dr(e,t){if(e.state.localVarStack)for(let[s,n]of e.state.localVarStack.entries()){for(;n.length>0&&n[n.length-1].scopeIndex===t;)n.pop();n.length===0&&e.state.localVarStack.delete(s)}}var js=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Tr(e){return js.has(e)}var Hs=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),ft=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 Ue(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
|
|
20
|
+
`;if(n.checkNoclobber&&e.state.options.noclobber&&!n.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
|
|
21
|
+
`}catch{}return null}function Ie(e){let s=Math.min(e.length,8192);for(let n=0;n<s;n++)if(e.charCodeAt(n)>127)return"utf8";return"binary"}function Ea(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),l=o.indexOf(":");if(l===-1)return null;let c=Number.parseInt(o.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=o.slice(l+1);return{path:i,position:c,content:u}}async function ss(e,t){let s=new Map;for(let n=0;n<t.length;n++){let r=t[n];if(r.target.type==="HereDoc")continue;if(r.operator===">&"||r.operator==="<&"){if(Os(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
|
|
22
|
+
`};s.set(n,await T(e,r.target))}else{let a=await nt(e,r.target);if("error"in a)return{targets:s,error:a.error};s.set(n,a.target)}}return{targets:s}}function Sa(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 ns(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 a=Number.parseInt(i,10);Number.isNaN(a)||e.state.fileDescriptors.delete(a)}continue}let n=Sa(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await T(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(r,10);if(!Number.isNaN(i)){let a=e.state.fileDescriptors.get(i);a!==void 0&&(oe(e),e.state.fileDescriptors.set(n,a));continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,r);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),oe(e),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")oe(e),e.state.fileDescriptors.set(n,`${r}
|
|
23
|
+
`);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,r),a=await e.fs.readFile(i);oe(e),e.state.fileDescriptors.set(n,a)}catch{return k("",`bash: ${r}: No such file or directory
|
|
24
|
+
`,1)}}}return null}async function _e(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let n=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!n)continue;let r;if(n){if(r=await T(e,s.target),r==="-"||!Number.isNaN(Number.parseInt(r,10))||s.fd!=null)continue}else{let o=await nt(e,s.target);if("error"in o)return k("",o.error,1);r=o.target}let i=e.fs.resolvePath(e.state.cwd,r),a=s.operator===">|";if(i.includes("\0"))return k("",`bash: ${r}: No such file or directory
|
|
25
|
+
`,1);try{let o=await e.fs.stat(i);if(o.isDirectory)return k("",`bash: ${r}: Is a directory
|
|
26
|
+
`,1);if(e.state.options.noclobber&&!a&&!o.isDirectory&&r!=="/dev/null")return k("",`bash: ${r}: cannot overwrite existing file
|
|
27
|
+
`,1)}catch{}if(r!=="/dev/null"&&r!=="/dev/stdout"&&r!=="/dev/stderr"&&r!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),r==="/dev/full")return k("",`bash: /dev/full: No space left on device
|
|
28
|
+
`,1)}return null}async function Ir(e,t,s){for(let n=0;n<t.length;n++){let r=t[n];if(r.target.type==="HereDoc")continue;let i=r.operator===">&";if(r.operator!==">"&&r.operator!==">|"&&r.operator!=="&>"&&!i)continue;let a,o=s?.get(n);if(o!==void 0)a=o;else if(i)a=await T(e,r.target);else{let u=await nt(e,r.target);if("error"in u)return k("",u.error,1);a=u.target}if(i&&(a==="-"||!Number.isNaN(Number.parseInt(a,10))||r.fd!=null))continue;let l=e.fs.resolvePath(e.state.cwd,a);if(l.includes("\0"))return k("",`bash: ${a}: No such file or directory
|
|
29
|
+
`,1);let c=await Ue(e,l,a,{checkNoclobber:!0,isClobber:r.operator===">|"});if(c)return k("",c,1)}return null}async function U(e,t,s,n){let{stdout:r,stderr:i,exitCode:a}=t,o=r,l=i,u=t.stdoutKind==="bytes"||t.stdoutKind===void 0&&t.stdoutEncoding==="binary"?"binary":"utf8",f=y=>u,d=async y=>{let b=n?.get(y);if(b!==void 0)return b;let g=await nt(e,s[y].target);return"error"in g?(i+=g.error,a=1,r="",null):g.target};for(let y=0;y<s.length;y++){let b=s[y];if(b.target.type==="HereDoc")continue;let g,O=n?.get(y);if(O!==void 0)g=O;else if(b.operator===">&"||b.operator==="<&"){if(Os(e,b.target)){i+=`bash: $@: ambiguous redirect
|
|
30
|
+
`,a=1,r="";continue}g=await T(e,b.target)}else{let E=await nt(e,b.target);if("error"in E){i+=E.error,a=1,r="";continue}g=E.target}if(!b.fdVariable){if(g.includes("\0")){i+=`bash: ${g.replace(/\0/g,"")}: No such file or directory
|
|
31
|
+
`,a=1,r="";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+=r,r="";break}if(g==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
32
|
+
`,a=1,r="";break}let w=e.fs.resolvePath(e.state.cwd,g),S=await Ue(e,w,g,{checkNoclobber:!0,isClobber:E});if(S){i+=S,a=1,r="";break}let P=s[y-1];if(P&&(P.operator===">&"||P.operator==="<&")&&(P.fd??1)===2){let N=n?.get(y-1)??await T(e,P.target);if(N==="1"||N==="&1"){await e.fs.writeFile(w,o,f(o)),r=l,i="";break}}let $=s[y+1];if($&&($.operator===">&"||$.operator==="<&")&&($.fd??1)===2){let N=n?.get(y+1)??await T(e,$.target);if(N==="1"||N==="&1"){let A=r+i;await e.fs.writeFile(w,A,f(A)),r="",i="",y++;break}}await e.fs.writeFile(w,r,f(r)),r=""}else if(v===2){if(g==="/dev/stderr")break;if(g==="/dev/stdout"){r+=i,i="";break}if(g==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
33
|
+
`,a=1;break}if(g==="/dev/null")i="";else{let w=e.fs.resolvePath(e.state.cwd,g),S=await Ue(e,w,g,{checkNoclobber:!0,isClobber:E});if(S){i+=S,a=1;break}await e.fs.writeFile(w,i,Ie(i)),i=""}}break}case">>":{let v=b.fd??1;if(v===1){if(g==="/dev/stdout")break;if(g==="/dev/stderr"){i+=r,r="";break}if(g==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
34
|
+
`,a=1,r="";break}let E=e.fs.resolvePath(e.state.cwd,g),w=await Ue(e,E,g,{});if(w){i+=w,a=1,r="";break}await e.fs.appendFile(E,r,f(r)),r=""}else if(v===2){if(g==="/dev/stderr")break;if(g==="/dev/stdout"){r+=i,i="";break}if(g==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
35
|
+
`,a=1;break}let E=e.fs.resolvePath(e.state.cwd,g),w=await Ue(e,E,g,{});if(w){i+=w,a=1;break}await e.fs.appendFile(E,i,Ie(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=n?.get(y-1)??await T(e,E.target);r=w==="1"||w==="&1"?l:""}else r=""}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
|
+
`,a=1)}break}if(g==="2"||g==="&2")v===1&&(i=r+i,r="");else if(g==="1"||g==="&1")r+=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 Ue(e,w,g,{checkNoclobber:!0});if(S){i=S,a=1,r="";break}if(b.fd==null){let P=r+i;await e.fs.writeFile(w,P,f(P)),r="",i=""}else v===1?(await e.fs.writeFile(w,r,f(r)),r=""):v===2&&(await e.fs.writeFile(w,i,Ie(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,r,f(r)),r=""):v===2&&(await e.fs.appendFile(S,i,Ie(i)),i="")}else if(w?.startsWith("__rw__:")){let S=Ea(w);S&&(v===1?(await e.fs.appendFile(S.path,r,f(r)),r=""):v===2&&(await e.fs.appendFile(S.path,i,Ie(i)),i=""))}else if(w?.startsWith("__dupout__:")){let S=Number.parseInt(w.slice(11),10);if(S!==1)if(S===2)v===1&&(i=r+i,r="");else{let P=e.state.fileDescriptors?.get(S);if(P?.startsWith("__file__:")){let $=P.slice(9);v===1?(await e.fs.appendFile($,r,f(r)),r=""):v===2&&(await e.fs.appendFile($,i,Ie(i)),i="")}}}else w?.startsWith("__dupin__:")?(i+=`bash: ${E}: Bad file descriptor
|
|
37
|
+
`,a=1,r=""):E>=3&&(i+=`bash: ${E}: Bad file descriptor
|
|
38
|
+
`,a=1,r="")}}break}case"&>":{if(g==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
39
|
+
`,a=1,r="";break}let v=e.fs.resolvePath(e.state.cwd,g),E=await Ue(e,v,g,{checkNoclobber:!0});if(E){i=E,a=1,r="";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,Ie(i)),w.operator===">>"?await e.fs.appendFile($,r,f(r)):await e.fs.writeFile($,r,f(r)),r="",i="",y++;break}}let S=r+i;await e.fs.writeFile(v,S,f(S)),r="",i="";break}case"&>>":{if(g==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
40
|
+
`,a=1,r="";break}let v=e.fs.resolvePath(e.state.cwd,g),E=await Ue(e,v,g,{});if(E){i=E,a=1,r="";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,Ie(i)),w.operator===">>"?await e.fs.appendFile($,r,f(r)):await e.fs.writeFile($,r,f(r)),r="",i="",y++;break}}let S=r+i;await e.fs.appendFile(v,S,f(S)),r="",i="";break}}}}let h=e.state.fileDescriptors?.get(1);if(h){if(h==="__dupout__:2")i+=r,r="";else if(h.startsWith("__file__:")){let y=h.slice(9);await e.fs.appendFile(y,r,f(r)),r=""}else if(h.startsWith("__file_append__:")){let y=h.slice(16);await e.fs.appendFile(y,r,f(r)),r=""}}let p=e.state.fileDescriptors?.get(2);if(p){if(p==="__dupout__:1")r+=i,i="";else if(p.startsWith("__file__:")){let y=p.slice(9);await e.fs.appendFile(y,i,Ie(i)),i=""}else if(p.startsWith("__file_append__:")){let y=p.slice(16);await e.fs.appendFile(y,i,Ie(i)),i=""}}let m=k(r,i,a);return t.stdoutKind&&(m.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(m.stdoutEncoding="binary"),m}function Rr(e,t){if(e.state.options.posix&&js.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
|
|
41
|
+
`;throw new Z(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),W}async function Aa(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await T(e,r.content);r.stripTabs&&(i=i.split(`
|
|
42
|
+
`).map(o=>o.replace(/^\t+/,"")).join(`
|
|
43
|
+
`)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await T(e,n.target)}
|
|
44
|
+
`;else if(n.operator==="<"&&n.target.type==="Word"){let r=await T(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function rs(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,De(`${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(r??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 a=()=>{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(Dr(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:o,error:l}=await ss(e,t.redirections);if(l)return a(),k("",l,1);try{let c=await Aa(e,t.redirections),u=n||c,f=await e.executeCommand(t.body,u);return a(),U(e,f,t.redirections,o)}catch(c){if(a(),c instanceof le){let u=k(c.stdout,c.stderr,c.exitCode);return U(e,u,t.redirections,o)}throw c}}var Lr=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],Zs=[".",":","[","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"],_a=["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"],Ca=Zs;async function qs(e,t){let s=[],n=null,r="",i="",a=null,o=!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);n=t[v]}else if(E==="-P"){if(v++,v>=t.length)return _(`compgen: -P: option requires an argument
|
|
48
|
+
`,2);r=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")o=!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)}a=h[0]??null;let m=[];if(l){let v=await Us(e,a);m.push(...v)}if(c){let v=await xr(e,a);m.push(...v)}for(let v of s)if(v==="variable"){let E=Pa(e,a);m.push(...E)}else if(v==="export"){let E=ka(e,a);m.push(...E)}else if(v==="function"){let E=Na(e,a);m.push(...E)}else if(v==="builtin"){let E=Oa(a);m.push(...E)}else if(v==="keyword"){let E=Da(a);m.push(...E)}else if(v==="alias"){let E=Ta(e,a);m.push(...E)}else if(v==="shopt"){let E=Ia(a);m.push(...E)}else if(v==="helptopic"){let E=Ra(a);m.push(...E)}else if(v==="directory"){let E=await Us(e,a);m.push(...E)}else if(v==="file"){let E=await xr(e,a);m.push(...E)}else if(v==="user"){let E=xa(a);m.push(...E)}else if(v==="command"){let E=await La(e,a);m.push(...E)}if(n!==null)try{let v=await Fa(e,n),E=Ma(e,v);for(let w of E)(a===null||w.startsWith(a))&&m.push(w)}catch{return k("","",1)}if(o){let v=await Us(e,a);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 rs(e,v,S,"");if(P.exitCode!==0)return dt(e,E),dt(e,w),k("",P.stderr,1);y=P.stdout;let $=Wa(e);m.push(...$)}catch{return dt(e,E),dt(e,w),k("","",1)}dt(e,E),dt(e,w)}}if(d!==null)try{let v=Ee(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=ct(w,E,!1,!0);return v?S:!S})}if(b.length===0&&a!==null)return k(y,"",1);let g=b.map(v=>`${r}${v}${i}`).join(`
|
|
58
|
+
`),O=y+(g?`${g}
|
|
59
|
+
`:"");return F(O)}function Pa(e,t){let s=new Set;for(let r of e.state.env.keys()){if(r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length"))continue;let i=r.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?s.add(r):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function ka(e,t){let s=e.state.exportedVars??new Set,n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n=n.filter(r=>r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length")?!1:e.state.env.has(r)),n.sort()}function Na(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function Oa(e){let t=[...Zs];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Da(e){let t=[...Lr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ta(e,t){let s=[];for(let r of e.state.env.keys())if(r.startsWith("BASH_ALIAS_")){let i=r.slice(11);s.push(i)}let n=s;return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function Ia(e){let t=[..._a];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ra(e){let t=[...Ca];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Us(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let o=t.slice(0,a)||"/";r=t.slice(a+1),o.startsWith("/")?n=o:n=`${e.state.cwd}/${o}`}}let i=await e.fs.readdir(n);for(let a of i){let o=`${n}/${a}`;try{if((await e.fs.stat(o)).isDirectory&&(!r||a.startsWith(r)))if(t?.includes("/")){let c=t.lastIndexOf("/"),u=t.slice(0,c+1);s.push(u+a)}else s.push(a)}catch{}}}catch{}return s.sort()}async function xr(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let o=t.slice(0,a)||"/";r=t.slice(a+1),o.startsWith("/")?n=o:n=`${e.state.cwd}/${o}`}}let i=await e.fs.readdir(n);for(let a of i)if(!r||a.startsWith(r))if(t?.includes("/")){let o=t.lastIndexOf("/"),l=t.slice(0,o+1);s.push(l+a)}else s.push(a)}catch{}return s.sort()}function xa(e){return["root","nobody"]}async function La(e,t){let s=new Set;for(let i of Zs)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 Lr)s.add(i);let n=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of n.split(":"))if(i)try{let a=await e.fs.readdir(i);for(let o of a)s.add(o)}catch{}let r=Array.from(s);return t!==null&&(r=r.filter(i=>i.startsWith(t))),r.sort()}async function Fa(e,t){let n=new V().parseWordFromString(t,!1,!1);return await T(e,n)}function Ma(e,t){let s=e.state.env.get("IFS")??`
|
|
60
|
+
`;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],i="",a=0;for(;a<t.length;){let o=t[a];if(o==="\\"&&a+1<t.length){let l=t[a+1];i+=l,a+=2}else n.has(o)?(i.length>0&&(r.push(i),i=""),a++):(i+=o,a++)}return i.length>0&&r.push(i),r}function dt(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function Wa(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=Se(e,"COMPREPLY");for(let[,i]of r)t.push(i)}else{let r=e.state.env.get("COMPREPLY");r!==void 0&&t.push(r)}return t}var za=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ks(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=!1,i,a,o,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")n=!0;else if(d==="-D")r=!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);a=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(!za.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);o=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(n){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?Gs(e):Gs(e,u);if(t.length===0||u.length===0&&!i&&!a&&!o&&l.length===0&&c.length===0&&!r)return Gs(e);if(a&&u.length===0&&!r)return _(`complete: -F: option requires a command name
|
|
71
|
+
`,2);if(r){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),a!==void 0&&(f.function=a),o!==void 0&&(f.command=o),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),a!==void 0&&(d.function=a),o!==void 0&&(d.command=o),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return F("")}function Gs(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let a of t)i+=`complete: ${a}: no completion specification
|
|
72
|
+
`;return k("",i,1)}return F("")}let n=[],r=t||Array.from(s.keys());for(let i of r){if(i==="__default__")continue;let a=s.get(i);if(!a){if(t)return k(n.join(`
|
|
73
|
+
`)+(n.length>0?`
|
|
74
|
+
`:""),`complete: ${i}: no completion specification
|
|
75
|
+
`,1);continue}let o="complete";if(a.options)for(let l of a.options)o+=` -o ${l}`;if(a.actions)for(let l of a.actions)o+=` -A ${l}`;a.wordlist!==void 0&&(a.wordlist.includes(" ")||a.wordlist.includes("'")?o+=` -W '${a.wordlist}'`:o+=` -W ${a.wordlist}`),a.function!==void 0&&(o+=` -F ${a.function}`),a.isDefault&&(o+=" -D"),o+=` ${i}`,n.push(o)}return n.length===0?F(""):F(`${n.join(`
|
|
76
|
+
`)}
|
|
77
|
+
`)}var Fr=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Xs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=[],i=[],a=[];for(let o=0;o<t.length;o++){let l=t[o];if(l==="-D")s=!0;else if(l==="-E")n=!0;else if(l==="-o"){if(o++,o>=t.length)return _(`compopt: -o: option requires an argument
|
|
78
|
+
`,2);let c=t[o];if(!Fr.includes(c))return _(`compopt: ${c}: invalid option name
|
|
79
|
+
`,2);r.push(c)}else if(l==="+o"){if(o++,o>=t.length)return _(`compopt: +o: option requires an argument
|
|
80
|
+
`,2);let c=t[o];if(!Fr.includes(c))return _(`compopt: ${c}: invalid option name
|
|
81
|
+
`,2);i.push(c)}else if(l==="--"){a.push(...t.slice(o+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&a.push(l)}if(s){let o=e.state.completionSpecs.get("__default__")??{isDefault:!0},l=new Set(o.options??[]);for(let c of r)l.add(c);for(let c of i)l.delete(c);return o.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",o),F("")}if(n){let o=e.state.completionSpecs.get("__empty__")??{},l=new Set(o.options??[]);for(let c of r)l.add(c);for(let c of i)l.delete(c);return o.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",o),F("")}if(a.length>0){for(let o of a){let l=e.state.completionSpecs.get(o)??{},c=new Set(l.options??[]);for(let u of r)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(o,l)}return F("")}return _(`compopt: not currently executing completion function
|
|
82
|
+
`,1)}function Ys(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Me;return k("",`bash: continue: only meaningful in a loop
|
|
83
|
+
`,0)}if(t.length>1)throw new Pe(1,"",`bash: continue: too many arguments
|
|
84
|
+
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n))throw new Pe(128,"",`bash: continue: ${t[0]}: numeric argument required
|
|
85
|
+
`);if(n<1)throw new ie(1,"",`bash: continue: loop count out of range
|
|
86
|
+
`);s=n}throw new fe(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 Qs(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Js(e){let t="$'";for(let s=0;s<e.length;s++){let n=e[s],r=e.charCodeAt(s);r===7?t+="\\a":r===8?t+="\\b":r===9?t+="\\t":r===10?t+="\\n":r===11?t+="\\v":r===12?t+="\\f":r===13?t+="\\r":r===27?t+="\\e":r===39?t+="\\'":r===92?t+="\\\\":r<32||r===127?t+=`\\${r.toString(8).padStart(3,"0")}`:t+=n}return t+="'",t}function is(e){return Qs(e)?Js(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Ye(e){return Qs(e)?Js(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function en(e){return Qs(e)?Js(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Mr(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),ve(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 tn(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Wr(e,t){let s="",n="",r=!1;for(let i of t){let a=Mr(e,i);if(e.state.associativeArrays?.has(i)){let u=Ve(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=tn(h);return`['${d}']=${p}`});s+=`declare -A ${i}=(${f.join(" ")})
|
|
88
|
+
`}continue}let l=ne(e,i);if(l.length>0){let u=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${Ye(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 ${a} ${i}=${en(c)}
|
|
91
|
+
`;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${a} ${i}
|
|
92
|
+
`:(n+=`bash: declare: ${i}: not found
|
|
93
|
+
`,r=!0)}}return k(s,n,r?1:0)}function zr(e,t){let{filterExport:s,filterReadonly:n,filterNameref:r,filterIndexedArray:i,filterAssocArray:a}=t,o=s||n||r||i||a,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=Mr(e,f),h=e.state.associativeArrays?.has(f),p=ne(e,f),m=!h&&(p.length>0||e.state.env.has(`${f}__length`));if(o&&(a&&!h||i&&!m||s&&!e.state.exportedVars?.has(f)||n&&!e.state.readonlyVars?.has(f)||r&&!ve(e,f)))continue;if(h){let b=Ve(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=tn(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}]=${Ye(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}=${en(y)}
|
|
98
|
+
`)}return F(l)}function Vr(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Ve(e,n);if(r.length===0)t+=`declare -A ${n}=()
|
|
99
|
+
`;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",l=tn(o);return`['${a}']=${l}`});t+=`declare -A ${n}=(${i.join(" ")})
|
|
100
|
+
`}}return F(t)}function Br(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);e.state.associativeArrays?.has(a)||s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);/^\d+$/.test(o)&&(e.state.associativeArrays?.has(a)||s.add(a))}}let n=Array.from(s).sort();for(let r of n){let i=ne(e,r);if(i.length===0)t+=`declare -a ${r}=()
|
|
101
|
+
`;else{let a=i.map(o=>{let l=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${Ye(l)}`});t+=`declare -a ${r}=(${a.join(" ")})
|
|
102
|
+
`}}return F(t)}function jr(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);if(/^\d+$/.test(o)||e.state.associativeArrays?.has(a)){s.add(a);continue}}s.add(r)}let n=Array.from(s).sort();for(let r of n){if(e.state.associativeArrays?.has(r)||ne(e,r).length>0||e.state.env.has(`${r}__length`))continue;let o=e.state.env.get(r);o!==void 0&&(t+=`${r}=${is(o)}
|
|
103
|
+
`)}return F(t)}function sn(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function _t(e,t){return e.state.integerVars?.has(t)??!1}function nn(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Va(e,t){return e.state.lowercaseVars?.has(t)??!1}function rn(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Ba(e,t){return e.state.uppercaseVars?.has(t)??!1}function ht(e,t,s){return Va(e,t)?s.toLowerCase():Ba(e,t)?s.toUpperCase():s}async function Hr(e,t){try{let s=new V,n=Q(s,t),r=await B(e,n.expression);return String(r)}catch{return"0"}}function ja(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],n=s.length;if(e[n]!=="[")return null;let r=0,i=n+1;for(;n<e.length;n++)if(e[n]==="[")r++;else if(e[n]==="]"&&(r--,r===0))break;if(r!==0)return null;let a=e.slice(i,n);if(n++,e[n]!=="=")return null;n++;let o=e.slice(n);return{name:s,indexExpr:a,value:o}}async function an(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=!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")n=!0;else if(N==="-r")r=!0;else if(N==="-x")i=!0;else if(N==="-p")a=!0;else if(N==="-n")o=!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")n=!0;else if(A==="r")r=!0;else if(A==="x")i=!0;else if(A==="p")a=!0;else if(A==="n")o=!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&&He(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(a&&b.length>0)return Wr(e,b);if(a&&b.length===0)return zr(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if(b.length===0&&n&&!a)return Vr(e);if(b.length===0&&s&&!a)return Br(e);if(b.length===0&&!a)return jr(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],R=N[2];if(n&&ne(e,C).length>0){S+=`bash: declare: ${C}: cannot convert indexed to associative array
|
|
112
|
+
`,P=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has(C)){S+=`bash: declare: ${C}: cannot convert associative to indexed array
|
|
113
|
+
`,P=1;continue}if(E(C),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(C)),Ne(e,C),e.state.env.delete(C),e.state.env.delete(`${C}__length`),n&&R.includes("[")){let x=Jt(R);for(let[J,z]of x){let K=G(e,z);e.state.env.set(`${C}_${J}`,K)}}else if(n){let x=Te(R);for(let J=0;J<x.length;J+=2){let z=x[J],K=J+1<x.length?G(e,x[J+1]):"";e.state.env.set(`${C}_${z}`,K)}}else{let x=Te(R);if(x.some(z=>/^\[[^\]]+\]=/.test(z))){let z=0;for(let K of x){let re=K.match(/^\[([^\]]+)\]=(.*)$/);if(re){let he=re[1],et=re[2],Yi=G(e,et),gt;if(/^-?\d+$/.test(he))gt=Number.parseInt(he,10);else try{let Qi=new V,Ji=Q(Qi,he);gt=await B(e,Ji.expression)}catch{gt=0}e.state.env.set(`${C}_${gt}`,Yi),z=gt+1}else{let he=G(e,K);e.state.env.set(`${C}_${z}`,he),z++}}}else{for(let z=0;z<x.length;z++)e.state.env.set(`${C}_${z}`,x[z]);e.state.env.set(`${C}__length`,String(x.length))}}w(C),r&&de(e,C),i&&Ae(e,C);continue}if(l){let C=$.includes("=")?$.slice(0,$.indexOf("=")):$;if(Gn(e,C),!$.includes("="))continue}if(u){let C=$.includes("=")?$.slice(0,$.indexOf("=")):$;if(Mt(e,C),!$.includes("="))continue}let A=ja($);if(A){let{name:C,indexExpr:R,value:x}=A,J=ee(e,C);if(J)return J;E(C);let z;try{let re=new V,he=Q(re,R);z=await B(e,he.expression)}catch{let re=parseInt(R,10);z=Number.isNaN(re)?0:re}e.state.env.set(`${C}_${z}`,x);let K=parseInt(e.state.env.get(`${C}__length`)??"0",10);z>=K&&e.state.env.set(`${C}__length`,String(z+1)),w(C),r&&de(e,C),i&&Ae(e,C);continue}let D=$.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(D&&!c){let C=D[1],R=D[2],x=ee(e,C);if(x)return x;E(C);let J=Te(R);if(e.state.associativeArrays?.has(C)){let z=Jt(R);for(let[K,re]of z){let he=G(e,re);e.state.env.set(`${C}_${K}`,he)}}else{let z=ne(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 et=0;et<J.length;et++)e.state.env.set(`${C}_${K+et}`,G(e,J[et]));let he=K+J.length;e.state.env.set(`${C}__length`,String(he))}w(C),r&&de(e,C),i&&Ae(e,C);continue}let I=$.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(I){let C=I[1],R=G(e,I[2]),x=ee(e,C);if(x)return x;v(C),f&&sn(e,C),d&&nn(e,C),h&&rn(e,C);let z=ne(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 Hr(e,R),10)||0;R=String(re+he),e.state.env.set(C,R)}else if(z){R=ht(e,C,R);let K=`${C}_0`,re=e.state.env.get(K)??"";e.state.env.set(K,re+R)}else{R=ht(e,C,R);let K=e.state.env.get(C)??"";e.state.env.set(C,K+R)}w(C),r&&de(e,C),i&&Ae(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("="),R=$.slice(0,C),x=$.slice(C+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(R)){S+=`bash: typeset: \`${R}': not a valid identifier
|
|
114
|
+
`,P=1;continue}let J=ee(e,R);if(J)return J;if(v(R),o){if(x!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(x)){S+=`bash: declare: \`${x}': invalid variable name for name reference
|
|
115
|
+
`,P=1;continue}e.state.env.set(R,x),xe(e,R),x!==""&&ks(e,x)&&Ps(e,R),w(R),r&&de(e,R),i&&Ae(e,R);continue}if(f&&sn(e,R),d&&nn(e,R),h&&rn(e,R),_t(e,R)&&(x=await Hr(e,x)),x=ht(e,R,x),ve(e,R)){let z=Be(e,R);z&&z!==R?e.state.env.set(z,x):e.state.env.set(R,x)}else e.state.env.set(R,x);w(R),r&&de(e,R),i&&Ae(e,R),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(R))}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||n?E(C):v(C),o){xe(e,C);let x=e.state.env.get(C);x!==void 0&&x!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(x)?Kn(e,C):x&&ks(e,x)&&Ps(e,C),w(C),r&&de(e,C),i&&Ae(e,C);continue}if(f&&sn(e,C),d&&nn(e,C),h&&rn(e,C),n){if(ne(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 R=Array.from(e.state.env.keys()).some(x=>x.startsWith(`${C}_`)&&!x.startsWith(`${C}__length`));!e.state.env.has(C)&&!R&&(s||n?e.state.env.set(`${C}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(C))),w(C),r&&de(e,C),i&&Ae(e,C)}}return k("",S,P)}async function on(e,t){let s=!1,n=!1,r=!1,i=[];for(let a=0;a<t.length;a++){let o=t[a];if(o==="-a")s=!0;else if(o==="-A")n=!0;else if(o==="-p")r=!0;else if(o==="--"){i.push(...t.slice(a+1));break}else o.startsWith("-")||i.push(o)}if(i.length===0){let a="",o=Array.from(e.state.readonlyVars||[]).sort();for(let l of o){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${l}="${u}"
|
|
118
|
+
`}}return F(a)}for(let a of i){let o=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(o){let f=o[1],d=o[2],h=ee(e,f);if(h)return h;let p=Te(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=ne(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=a.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=kr(a);if(c.value===void 0&&!c.isArray){de(e,c.name);continue}let u=await Nr(e,c,{makeReadonly:!0});if(u)return u}return W}function ln(e){return e.state.directoryStack??=[],e.state.directoryStack}function pt(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Ha(e){let t=e.split("/").filter(n=>n&&n!=="."),s=[];for(let n of t)n===".."?s.pop():s.push(n);return`/${s.join("/")}`}async function cn(e,t){let s=ln(e),n;for(let o=0;o<t.length;o++){let l=t[o];if(l==="--"){if(o+1<t.length){if(n!==void 0)return _(`bash: pushd: too many arguments
|
|
119
|
+
`,2);n=t[o+1],o++}}else{if(l.startsWith("-")&&l!=="-")return _(`bash: pushd: ${l}: invalid option
|
|
120
|
+
`,2);if(n!==void 0)return _(`bash: pushd: too many arguments
|
|
121
|
+
`,2);n=l}}if(n===void 0){if(s.length<1)return _(`bash: pushd: no other directory
|
|
122
|
+
`,1);let o=s.shift();if(!o)return _(`bash: pushd: no other directory
|
|
123
|
+
`,1);let l=e.state.cwd;s.unshift(l),e.state.previousDir=l,e.state.cwd=o,e.state.env.set("PWD",o),e.state.env.set("OLDPWD",l);let c=e.state.env.get("HOME")||"",u=`${[o,...s].map(f=>pt(f,c)).join(" ")}
|
|
124
|
+
`;return F(u)}let r;if(n.startsWith("/"))r=n;else if(n===".."){let o=e.state.cwd.split("/").filter(l=>l);o.pop(),r=`/${o.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=Ha(r);try{if(!(await e.fs.stat(r)).isDirectory)return _(`bash: pushd: ${n}: Not a directory
|
|
125
|
+
`,1)}catch{return _(`bash: pushd: ${n}: No such file or directory
|
|
126
|
+
`,1)}s.unshift(e.state.cwd),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 i=e.state.env.get("HOME")||"",a=`${[r,...s].map(o=>pt(o,i)).join(" ")}
|
|
127
|
+
`;return F(a)}function un(e,t){let s=ln(e);for(let a of t)if(a!=="--")return a.startsWith("-")&&a!=="-"?_(`bash: popd: ${a}: invalid option
|
|
128
|
+
`,2):_(`bash: popd: too many arguments
|
|
129
|
+
`,2);if(s.length===0)return _(`bash: popd: directory stack empty
|
|
130
|
+
`,1);let n=s.shift();if(!n)return _(`bash: popd: directory stack empty
|
|
131
|
+
`,1);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 r=e.state.env.get("HOME")||"",i=`${[n,...s].map(a=>pt(a,r)).join(" ")}
|
|
132
|
+
`;return F(i)}function fn(e,t){let s=ln(e),n=!1,r=!1,i=!1,a=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")n=!0;else if(f==="l")r=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,a=!0;else return _(`bash: dirs: -${f}: invalid option
|
|
133
|
+
`,2);else return _(`bash: dirs: too many arguments
|
|
134
|
+
`,1);if(n)return e.state.directoryStack=[],W;let o=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",c;return a?(c=o.map((u,f)=>{let d=r?u:pt(u,l);return` ${f} ${d}`}).join(`
|
|
135
|
+
`),c+=`
|
|
136
|
+
`):i?c=o.map(u=>r?u:pt(u,l)).join(`
|
|
137
|
+
`)+`
|
|
138
|
+
`:c=o.map(u=>r?u:pt(u,l)).join(" ")+`
|
|
139
|
+
`,F(c)}async function as(e,t,s){let n=t;if(n.length>0){let o=n[0];if(o==="--")n=n.slice(1);else if(o.startsWith("-")&&o!=="-"&&o.length>1)return _(`bash: eval: ${o}: invalid option
|
|
140
|
+
eval: usage: eval [arg ...]
|
|
141
|
+
`,2)}if(n.length===0)return W;let r=n.join(" ");if(r.trim()==="")return W;let i=e.state.groupStdin,a=s??e.state.groupStdin;a!==void 0&&(e.state.groupStdin=a);try{let o=Ee(r);return await e.executeScript(o)}catch(o){if(o instanceof ie||o instanceof fe||o instanceof le||o instanceof Z)throw o;if(o.name==="ParseException")return _(`bash: eval: ${o.message}
|
|
142
|
+
`);if(o.message?.startsWith("Unsupported shell syntax:"))return _(`bash: eval: ${o.message}
|
|
143
|
+
`,2);throw o}finally{e.state.groupStdin=i}}function dn(e,t){let s,n="";if(t.length===0)s=e.state.lastExitCode;else{let r=t[0],i=Number.parseInt(r,10);r===""||Number.isNaN(i)||!/^-?\d+$/.test(r)?(n=`bash: exit: ${r}: numeric argument required
|
|
144
|
+
`,s=2):t.length>1?(n=`bash: exit: too many arguments
|
|
145
|
+
`,s=1):s=(i%256+256)%256}throw new Z(s,"",n)}function hn(e,t){let s=!1,n=[];for(let a of t)a==="-n"?s=!0:a==="-p"||a==="--"||n.push(a);if(n.length===0&&!s){let a="",o=e.state.exportedVars??new Set,l=Array.from(o).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -x ${c}="${f}"
|
|
146
|
+
`}}return F(a)}if(s){for(let a of n){let o,l;if(a.includes("=")){let c=a.indexOf("=");o=a.slice(0,c),l=G(e,a.slice(c+1)),e.state.env.set(o,l)}else o=a;Mt(e,o)}return W}let r="",i=0;for(let a of n){let o,l,c=!1,u=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)o=u[1],l=G(e,u[2]),c=!0;else if(a.includes("=")){let f=a.indexOf("=");o=a.slice(0,f),l=G(e,a.slice(f+1))}else o=a;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){r+=`bash: export: \`${a}': not a valid identifier
|
|
147
|
+
`,i=1;continue}if(l!==void 0)if(c){let f=e.state.env.get(o)??"";e.state.env.set(o,f+l)}else e.state.env.set(o,l);else e.state.env.has(o)||e.state.env.set(o,"");Ae(e,o)}return k("",r,i)}function os(e,t){if(t.length<2)return _(`bash: getopts: usage: getopts optstring name [arg ...]
|
|
148
|
+
`);let s=t[0],n=t[1],r=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n),i=s.startsWith(":"),a=i?s.slice(1):s,o;if(t.length>2)o=t.slice(2);else{let m=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let y=1;y<=m;y++)o.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>o.length)return r||e.state.env.set(n,"?"),e.state.env.set("OPTIND",String(o.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:1,stdout:"",stderr:""};let u=o[l-1];if(!u||u==="-"||!u.startsWith("-"))return r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),r||e.state.env.set(n,"?"),{exitCode:r?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"),os(e,t);let h=a.indexOf(d);if(h===-1){let m="";return i?e.state.env.set("OPTARG",d):m=`bash: illegal option -- ${d}
|
|
149
|
+
`,r||e.state.env.set(n,"?"),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:r?2:0,stdout:"",stderr:m}}if(h+1<a.length&&a[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>=o.length){let m="";return i?(e.state.env.set("OPTARG",d),r||e.state.env.set(n,":")):(m=`bash: option requires an argument -- ${d}
|
|
150
|
+
`,r||e.state.env.set(n,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:0,stdout:"",stderr:m}}e.state.env.set("OPTARG",o[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 r||e.state.env.set(n,d),{exitCode:r?2:0,stdout:"",stderr:""}}async function pn(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,n=!1,r=!1,i=!1,a=!1,o="",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")n=!0,c++;else if(p==="-l")r=!0,c++;else if(p==="-t")a=!0,c++;else if(p==="-p"){if(i=!0,c++,c>=t.length)return _(`bash: hash: -p: option requires an argument
|
|
151
|
+
`,1);o=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")n=!0;else if(m==="l")r=!0;else if(m==="t")a=!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(),W;if(n){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):W}if(a){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,o),W}if(l.length===0){if(e.state.hashTable.size===0)return F(`hash: hash table empty
|
|
161
|
+
`);let p="";if(r)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):W}var Ur=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.`]]]),Zr=[...Ur.keys()].sort();function mn(e,t){let s=!1,n=[],r=0;for(;r<t.length;){let l=t[r];if(l==="--"){for(r++;r<t.length;)n.push(t[r]),r++;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)}r++}else n.push(l),r++}if(n.length===0)return Za();let i="",a=!1,o="";for(let l of n){let c=Ua(l);if(c.length===0){o+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
|
|
513
|
+
`,a=!0;continue}for(let u of c){let f=Ur.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
|
|
514
|
+
`:i+=`${u}: ${d}
|
|
515
|
+
${h}
|
|
516
|
+
`}}return{exitCode:a?1:0,stdout:i,stderr:o}}function Ua(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=vt(`^${t}$`);return Zr.filter(n=>s.test(n))}function Za(){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=Zr.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",a=s[r+n]||"",o=i.padEnd(t);e.push(a?`${o}${a}`:i)}return F(`${e.join(`
|
|
517
|
+
`)}
|
|
518
|
+
`)}function qa(e){let t=[],s="",n=0;for(let r of e){for(let i of r)i==="("?n++:i===")"&&n--;s?s+=` ${r}`:s=r,n===0&&(t.push(s),s="")}return s&&t.push(s),t}async function yn(e,t){if(t.length===0)return _(`bash: let: expression expected
|
|
519
|
+
`);let s=qa(t),n=0;for(let r of s)try{let a=Ee(`(( ${r} ))`).statements[0];if(a&&a.pipelines.length>0&&a.pipelines[0].commands.length>0){let o=a.pipelines[0].commands[0];o.type==="ArithmeticCommand"&&(n=await B(e,o.expression.expression))}}catch(i){return _(`bash: let: ${r}: ${i.message}
|
|
520
|
+
`)}return k("","",n===0?1:0)}async function gn(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],n="",r=0,i=!1,a=!1,o=!1,l=[];for(let c of t)if(c==="-n")i=!0;else if(c==="-a")a=!0;else if(c==="-p")o=!0;else if(c.startsWith("-")&&!c.includes("="))for(let u of c.slice(1))u==="n"?i=!0:u==="a"?a=!0:u==="p"&&(o=!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)){n+=`bash: local: \`${c}': not a valid identifier
|
|
523
|
+
`,r=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=Te(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)),He(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=Te(b),O=ne(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)),He(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),He(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)),He(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)){n+=`bash: local: \`${c}': not a valid identifier
|
|
524
|
+
`,r=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}}}Or(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),a){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(a&&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)){n+=`bash: local: \`${f}': invalid variable name for name reference
|
|
525
|
+
`,r=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)}He(e,u),i&&xe(e,u)}return k("",n,r)}function wn(e,t,s){let n=`
|
|
526
|
+
`,r=0,i=0,a=0,o=!1,l="MAPFILE",c=0;for(;c<t.length;){let g=t[c];g==="-d"&&c+1<t.length?(n=t[c+1]===""?"\0":t[c+1]||`
|
|
527
|
+
`,c+=2):g==="-n"&&c+1<t.length?(r=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?(a=Number.parseInt(t[c+1],10)||0,c+=2):g==="-t"?(o=!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(n);if(g===-1){if(d.length>0){if(p<a)p++;else if(r===0||h<r){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)),!o&&n!=="\0"&&(O+=n),d=d.substring(g+n.length),p<a){p++;continue}if(r>0&&h>=r)break;if(i+h>=m)return k("",`mapfile: array element limit exceeded (${m})
|
|
529
|
+
`,1);f.push(O),h++}i===0&&Ne(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 Ga(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),l=o.indexOf(":");if(l===-1)return null;let c=Number.parseInt(o.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=o.slice(l+1);return{path:i,position:c,content:u}}function Ka(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function vn(e,t,s,n=-1){let r=!1,i=`
|
|
530
|
+
`,a="",o=-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")r=!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 R=A.substring(I+1);return o=Number.parseInt(R,10),(Number.isNaN(o)||o<0)&&(p=!0,o=0),{nextArgIndex:D+1}}else if(D+1<t.length)return o=Number.parseInt(t[D+1],10),(Number.isNaN(o)||o<0)&&(p=!0,o=0),{nextArgIndex:D+2};return{nextArgIndex:D+1}}else if(C==="N"){if(I+1<A.length){let R=A.substring(I+1);return l=Number.parseInt(R,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?(a=A.substring(I+1),{nextArgIndex:D+1}):D+1<t.length?(a=t[D+1],{nextArgIndex:D+2}):{nextArgIndex:D+1};if(C==="u"){if(I+1<A.length){let R=A.substring(I+1);return u=Number.parseInt(R,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 R=A.substring(I+1);return f=Number.parseFloat(R),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)Ne(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(n>=0&&e.state.fileDescriptors){let D=e.state.fileDescriptors.get(n);if(D?.startsWith("__rw__:")){let I=Ga(D);if(I){let C=I.position+A;e.state.fileDescriptors.set(n,Ka(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(o>=0){let A=0,D=0,I=!1;for(;D<y.length&&A<o;){let C=y[D];if(C===b){O=D+1,I=!0;break}if(!r&&C==="\\"&&D+1<y.length){let R=y[D+1];if(R===b&&b===`
|
|
531
|
+
`){D+=2,O=D;continue}if(R===b){D+=2,A++,g+=R,O=D;continue}g+=R,D+=2,A++,O=D}else g+=C,D++,A++,O=D}v=A>=o||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(!r&&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&&Ne(e,c),k("","",1)}E(O)}b===`
|
|
533
|
+
`&&g.endsWith(`
|
|
534
|
+
`)&&(g=g.slice(0,-1));let w=A=>r?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=Zn(e.state.env);if(c){let{words:A}=Cs(g,S,void 0,r),D=e.limits?.maxArrayElements??1e5;if(A.length>D)return k("",`read: array element limit exceeded (${D})
|
|
535
|
+
`,1);Ne(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}=Cs(g,S,P,r);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=qn(I,S,r),I=w(I),e.state.env.set(D,I)}else e.state.env.set(D,"")}return k("","",v?0:1)}function bn(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 n=t[0],r=Number.parseInt(n,10);if(n===""||Number.isNaN(r)||!/^-?\d+$/.test(n))return _(`bash: return: ${n}: numeric argument required
|
|
536
|
+
`,2);s=(r%256+256)%256}throw new le(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
|
+
`,qr=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]]),Xr=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Yr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function $n(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,lt(e))}function Xa(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Ya(e,t){let s=ne(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${Ye(i)}`});return`${t}=(${n.join(" ")})`}function Qa(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ja(e,t){let s=Ve(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${Qa(r)}]=${Ye(i)}`});return`${t}=(${n.join(" ")} )`}function eo(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let n of e.state.env.keys()){let r=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(r){let i=r[1];s.has(i)||t.add(i)}}return t}function to(e){return e.state.associativeArrays??new Set}function Gr(e){let t=Xr.map(n=>`${n.padEnd(16)}${e.state.options[n]?"on":"off"}`),s=Yr.map(n=>`${n.padEnd(16)}off`);return`${[...t,...s].sort().join(`
|
|
553
|
+
`)}
|
|
554
|
+
`}function Kr(e){let t=Xr.map(n=>`set ${e.state.options[n]?"-o":"+o"} ${n}`),s=Yr.map(n=>`set +o ${n}`);return`${[...t,...s].sort().join(`
|
|
555
|
+
`)}
|
|
556
|
+
`}function Sn(e,t){if(t.includes("--help"))return F(Ct);if(t.length===0){let i=eo(e),a=to(e),o=u=>{for(let f of a){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)||a.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])||o(u)||h&&a.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(Ya(e,u));for(let u of[...a].sort((f,d)=>f<d?-1:f>d?1:0))c.push(Ja(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=[],n=()=>s.length>0?F(s.join("")):W,r=0;for(;r<t.length;){let i=t[r];if((i==="-o"||i==="+o")&&Xa(t,r)){let a=t[r+1];if(!ls.has(a)){let o=`bash: set: ${a}: invalid option name
|
|
559
|
+
${Ct}`;if(e.state.options.posix)throw new me(1,"",o);return _(o,2)}$n(e,ls.get(a)??null,i==="-o"),r+=2;continue}if(i==="-o"){s.push(Gr(e)),r++;continue}if(i==="+o"){s.push(Kr(e)),r++;continue}if(i.length>1&&(i[0]==="-"||i[0]==="+")&&i[1]!=="-"){let a=i[0]==="-",o=0;for(let l=1;l<i.length;l++){let c=i[l];if(c==="o"){let u=r+1+o;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)}$n(e,ls.get(d)??null,a),o++;continue}s.push(a?Gr(e):Kr(e));continue}if(!qr.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)}$n(e,qr.get(c)??null,a)}r+=1+o;continue}if(i==="--")return En(e,t.slice(r+1)),n();if(i==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,lt(e),r+1<t.length)return En(e,t.slice(r+1)),n();r++;continue}if(i==="+"){r++;continue}if(i.startsWith("-")||i.startsWith("+")){let a=`bash: set: ${i}: invalid option
|
|
562
|
+
${Ct}`;if(e.state.options.posix)throw new me(1,"",a);return _(a,2)}return En(e,t.slice(r)),n()}return n()}function En(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let n=0;n<t.length;n++)e.state.env.set(String(n+1),t[n]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function An(e,t){let s=1;if(t.length>1)return _(`bash: shift: too many arguments
|
|
563
|
+
`);if(t.length>0){let a=Number.parseInt(t[0],10);if(Number.isNaN(a)){let o=`bash: shift: ${t[0]}: numeric argument required
|
|
564
|
+
`;if(e.state.options.posix)throw new me(1,"",o);return _(o)}if(a<0){let o=`bash: shift: shift count out of range
|
|
565
|
+
`;if(e.state.options.posix)throw new me(1,"",o);return _(o)}s=a}let n=Number.parseInt(e.state.env.get("#")||"0",10);if(s>n){let a=`bash: shift: shift count out of range
|
|
566
|
+
`;if(e.state.options.posix)throw new me(1,"",a);return _(a)}if(s===0)return W;let r=[];for(let a=1;a<=n;a++)r.push(e.state.env.get(String(a))||"");let i=r.slice(s);for(let a=1;a<=n;a++)e.state.env.delete(String(a));for(let a=0;a<i.length;a++)e.state.env.set(String(a+1),i[a]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),W}async function _n(e,t,s=""){let n=t;if(n.length>0&&n[0]==="--"&&(n=n.slice(1)),n.length===0)return k("",`bash: source: filename argument required
|
|
567
|
+
`,2);let r=n[0],i=null,a=null;if(r.includes("/")){let d=e.fs.resolvePath(e.state.cwd,r);try{a=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}/${r}`);try{if((await e.fs.stat(m)).isDirectory)continue;a=await e.fs.readFile(m),i=m;break}catch{}}if(a===null){let p=e.fs.resolvePath(e.state.cwd,r);try{a=await e.fs.readFile(p),i=p}catch{}}}if(a===null)return _(`bash: ${r}: No such file or directory
|
|
568
|
+
`);let o=new Map;if(n.length>1){for(let h=1;h<=9;h++)o.set(String(h),e.state.env.get(String(h)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let d=n.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),n.length>1)for(let[d,h]of o)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=r,c&&(e.state.groupStdin=s);try{let d=Ee(a),h=await e.executeScript(d);return f(),h}catch(d){if(f(),d instanceof Z)throw d;if(d instanceof le)return k(d.stdout,d.stderr,d.exitCode);if(d.name==="ParseException")return _(`bash: ${r}: ${d.message}
|
|
569
|
+
`);throw d}}function Qr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function so(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Jr(e,t){if(so(t))return null;try{let s=new V,n=Q(s,t);return await B(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function ei(e,t){if(e.state.localVarStack?.has(t)){let n=ts(e,t);if(n){n.value===void 0?e.state.env.delete(t):e.state.env.set(t,n.value);let r=e.state.localVarStack?.get(t);if(!r||r.length===0)es(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),Cn(e,t);else{let i=r[r.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 n=e.state.localScopes.length-1;n>=0;n--){let r=e.state.localScopes[n];if(r.has(t)){let i=r.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),r.delete(t);let a=!1;for(let o=n-1;o>=0;o--)if(e.state.localScopes[o].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,o+1),a=!0;break}return a||es(e,t),!0}}return!1}function Cn(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 n=e.state.tempEnvBindings[s];if(n.has(t)){let r=n.get(t);return r===void 0?e.state.env.delete(t):e.state.env.set(t,r),n.delete(t),!0}}return!1}async function ti(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),r=new V().parseWordFromString(s,!0,!1);return T(e,r)}if(t.includes("$")){let n=new V().parseWordFromString(t,!1,!1);return T(e,n)}return t}async function Pn(e,t){let s="both",n="",r=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=Se(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 ti(e,h);e.state.env.delete(`${d}_${O}`);continue}let m=Ns(e,d),y=e.state.declaredVars?.has(d);if((e.state.env.has(d)||y)&&!m&&!p){n+=`bash: unset: ${d}: not an array variable
|
|
570
|
+
`,r=1;continue}let g=await Jr(e,h);if(g===null&&m){n+=`bash: unset: ${h}: not a valid identifier
|
|
571
|
+
`,r=1;continue}if(g===null)continue;if(g<0){let O=Se(e,d),v=O.length,E=e.state.currentLine;if(v===0){n+=`bash: line ${E}: unset: [${g}]: bad array subscript
|
|
572
|
+
`,r=1;continue}let w=v+g;if(w<0){n+=`bash: line ${E}: unset: [${g}]: bad array subscript
|
|
573
|
+
`,r=1;continue}let S=O[w][0];e.state.env.delete(`${d}_${S}`);continue}e.state.env.delete(`${d}_${g}`);continue}if(!Qr(i)){n+=`bash: unset: ${i}: not a valid identifier
|
|
574
|
+
`,r=1;continue}let u=i;if(ve(e,i)){let d=Be(e,i);d&&d!==i&&(u=d)}if(Ke(e,u)){n+=`bash: unset: ${u}: cannot unset: readonly variable
|
|
575
|
+
`,r=1;continue}let f=ut(e,u);if(f!==void 0&&f!==e.state.callDepth)ei(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 Cn(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let a=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let c=a[1],u=a[2];if(u==="@"||u==="*"){let m=Se(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 ti(e,u);e.state.env.delete(`${c}_${m}`);continue}let d=Ns(e,c);if(e.state.env.has(c)&&!d&&!f){n+=`bash: unset: ${c}: not an array variable
|
|
576
|
+
`,r=1;continue}let p=await Jr(e,u);if(p===null&&d){n+=`bash: unset: ${u}: not a valid identifier
|
|
577
|
+
`,r=1;continue}if(p===null)continue;if(p<0){let m=Se(e,c),y=m.length,b=e.state.currentLine;if(y===0){n+=`bash: line ${b}: unset: [${p}]: bad array subscript
|
|
578
|
+
`,r=1;continue}let g=y+p;if(g<0){n+=`bash: line ${b}: unset: [${p}]: bad array subscript
|
|
579
|
+
`,r=1;continue}let O=m[g][0];e.state.env.delete(`${c}_${O}`);continue}e.state.env.delete(`${c}_${p}`);continue}if(!Qr(i)){n+=`bash: unset: ${i}: not a valid identifier
|
|
580
|
+
`,r=1;continue}let o=i;if(ve(e,i)){let c=Be(e,i);c&&c!==i&&(o=c)}if(Ke(e,o)){n+=`bash: unset: ${o}: cannot unset: readonly variable
|
|
581
|
+
`,r=1;continue}let l=ut(e,o);if(l!==void 0&&l!==e.state.callDepth)ei(e,o);else if(e.state.fullyUnsetLocals?.has(o))e.state.env.delete(o);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(o),u=e.state.mutatedTempEnvVars?.has(o);if((c||u)&&e.state.localVarStack?.has(o)){let f=ts(e,o);f?f.value===void 0?e.state.env.delete(o):e.state.env.set(o,f.value):e.state.env.delete(o)}else e.state.env.delete(o)}else Cn(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return k("",n,r)}var kn=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],no=["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 kn.includes(e)}function ro(e){return no.includes(e)}function si(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=[],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":n=!0;break;case"p":r=!0;break;case"q":i=!0;break;case"o":a=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${p}: invalid option
|
|
582
|
+
`}}}l++}else break}for(;l<t.length;)o.push(t[l]),l++;if(a)return io(e,o,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
|
|
583
|
+
`};if(o.length===0){if(s||n){let h=[];for(let p of kn){let m=e.state.shoptOptions[p];s&&m?h.push(r?`shopt -s ${p}`:`${p} on`):n&&!m&&h.push(r?`shopt -u ${p}`:`${p} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
|
|
584
|
+
`)}
|
|
585
|
+
`:"",stderr:""}}let d=[];for(let h of kn){let p=e.state.shoptOptions[h];d.push(r?`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 o){if(!cs(d)&&!ro(d)){u+=`shopt: ${d}: invalid shell option name
|
|
588
|
+
`,c=!0;continue}if(s)cs(d)&&(e.state.shoptOptions[d]=!0,Ls(e));else if(n)cs(d)&&(e.state.shoptOptions[d]=!1,Ls(e));else if(cs(d)){let h=e.state.shoptOptions[d];i?h||(c=!0):r?(f.push(`shopt ${h?"-s":"-u"} ${d}`),h||(c=!0)):(f.push(`${d} ${h?"on":"off"}`),h||(c=!0))}else i?c=!0:r?(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 io(e,t,s,n,r,i){let a=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"]]),o=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],l=[...a.keys(),...o].sort();if(t.length===0){let d=[];for(let h of l){let p=o.includes(h),m=a.get(h),y=p||!m?!1:e.state.options[m];s&&!y||n&&y||d.push(r?`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=a.has(d),p=o.includes(d);if(!h&&!p){u+=`shopt: ${d}: invalid option name
|
|
593
|
+
`,c=!0;continue}if(p){s||n||(i?c=!0:r?(f.push(`set +o ${d}`),c=!0):(f.push(`${d} off`),c=!0));continue}let m=a.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,lt(e);else if(n)e.state.options[m]=!1,lt(e);else{let y=e.state.options[m];i?y||(c=!0):r?(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 ni(e,t,s){if(t.includes("/")){let a=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(a))return{error:"not_found",path:a};let o=a.split("/").pop()||t,l=e.commands.get(o);try{let c=await e.fs.stat(a);return c.isDirectory?{error:"permission_denied",path:a}:l?{cmd:l,path:a}:(c.mode&73)!==0?{script:!0,path:a}:{error:"permission_denied",path:a}}catch{return{error:"not_found",path:a}}}if(!s&&e.state.hashTable){let a=e.state.hashTable.get(t);if(a)if(await e.fs.exists(a)){let o=e.commands.get(t);if(o)return{cmd:o,path:a};try{let l=await e.fs.stat(a);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:a}}catch{}}else e.state.hashTable.delete(t)}let r=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let a of r){if(!a)continue;let l=`${a.startsWith("/")?a:e.fs.resolvePath(e.state.cwd,a)}/${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=a==="/bin"||a==="/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 a=e.commands.get(t);if(a)return{cmd:a,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 a=await e.fs.stat(i);a.isDirectory||(a.mode&73)!==0&&s.push(t)}catch{}return s}let r=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of r){if(!i)continue;let o=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?o:`${i}/${t}`)}}return s}function ao(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function q(e,t,s,n){return((...r)=>{bt(t,s,`${n} call`);let i=e(...r);return ao(i)?i.then(a=>(bt(t,s,`${n} post-await`),a),a=>{throw bt(t,s,`${n} post-await`),a}):(bt(t,s,`${n} return`),i)})}function oo(e,t,s){let n={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&&(n.readdirWithFileTypes=q(e.readdirWithFileTypes.bind(e),t,s,"fs.readdirWithFileTypes")),n}function Nn(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,n={...e,fs:oo(e.fs,e.requireDefenseContext,s)};return e.exec&&(n.exec=q(e.exec,e.requireDefenseContext,s,"exec")),e.fetch&&(n.fetch=q(e.fetch,e.requireDefenseContext,s,"fetch")),e.sleep&&(n.sleep=q(e.sleep,e.requireDefenseContext,s,"sleep")),e.getRegisteredCommands&&(n.getRegisteredCommands=q(e.getRegisteredCommands,e.requireDefenseContext,s,"getRegisteredCommands")),n}async function ii(e,t,s,n){let r=!1,i=!1,a=!1,o=!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")r=!0;else if(y==="p")i=!0;else if(y==="P")a=!0;else if(y==="a")o=!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(a){if(o){let S=await n(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(o&&b){if(!i)if(r)u+=`function
|
|
599
|
+
`;else{let S=e.state.functions.get(m),P=S?ri(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&&(o||!y)&&(i||(r?u+=`alias
|
|
601
|
+
`:u+=`${m} is aliased to \`${g}'
|
|
602
|
+
`),y=!0,!o)||Hs.has(m)&&(o||!y)&&(i||(r?u+=`keyword
|
|
603
|
+
`:u+=`${m} is a shell keyword
|
|
604
|
+
`),y=!0,!o)||e.commands.has(m)&&(o||!y)&&(i||(r?u+=`registered
|
|
605
|
+
`:u+=`${m} is a registered command
|
|
606
|
+
`),y=!0,!o))continue;if(!o&&b&&!y){if(!i)if(r)u+=`function
|
|
607
|
+
`;else{let S=e.state.functions.get(m),P=S?ri(m,S):`${m} is a shell function
|
|
608
|
+
`;u+=P}y=!0;continue}if(!(ft.has(m)&&(o||!y)&&(i||(r?u+=`builtin
|
|
609
|
+
`:u+=`${m} is a shell builtin
|
|
610
|
+
`),y=!0,!o))){if(o){let S=await n(m);for(let P of S)i?u+=`${P}
|
|
611
|
+
`:r?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
|
+
`:r?u+=`file
|
|
615
|
+
`:u+=`${m} is ${S}
|
|
616
|
+
`,h=!0,y=!0)}if(!y&&(p=!0,!r&&!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 ri(e,t){return`${e} is a shell function
|
|
618
|
+
`}async function ai(e,t,s,n){let r="",i="",a=0;for(let o of t){if(!o){a=1;continue}let l=e.state.env.get(`BASH_ALIAS_${o}`);if(l!==void 0)n?r+=`${o} is an alias for "${l}"
|
|
619
|
+
`:r+=`alias ${o}='${l}'
|
|
620
|
+
`;else if(Hs.has(o))n?r+=`${o} is a shell keyword
|
|
621
|
+
`:r+=`${o}
|
|
622
|
+
`;else if(ft.has(o))n?r+=`${o} is a shell builtin
|
|
623
|
+
`:r+=`${o}
|
|
624
|
+
`;else if(e.commands.has(o))n?r+=`${o} is a registered command
|
|
625
|
+
`:r+=`${o}
|
|
626
|
+
`;else if(e.state.functions.has(o))n?r+=`${o} is a function
|
|
627
|
+
`:r+=`${o}
|
|
628
|
+
`;else if(o.includes("/")){let c=e.fs.resolvePath(e.state.cwd,o),u=!1;if(await e.fs.exists(c))try{let f=await e.fs.stat(c);f.isDirectory||(f.mode&73)!==0&&(n?r+=`${o} is ${o}
|
|
629
|
+
`:r+=`${o}
|
|
630
|
+
`,u=!0)}catch{}u||(n&&(i+=`${o}: not found
|
|
631
|
+
`),a=1)}else{let c=await On(e,o);c?n?r+=`${o} is ${c}
|
|
632
|
+
`:r+=`${c}
|
|
633
|
+
`:(n&&(i+=`${o}: not found
|
|
634
|
+
`),a=1)}}return k(r,i,a)}async function On(e,t){if(t.includes("/")){let r=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(r)){try{if((await e.fs.stat(r)).isDirectory)return null}catch{return null}return t}return null}let n=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let r of n){if(!r)continue;let a=`${r.startsWith("/")?r:e.fs.resolvePath(e.state.cwd,r)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}return`${r}/${t}`}}if(e.commands.has(t)){for(let r of n)if(r==="/usr/bin"||r==="/bin")return`${r}/${t}`;return`/usr/bin/${t}`}return null}var lo=new Set(["awk","cat","cut","grep","head","jq","mapfile","read","readarray","sed","sort","tail","tee","tr","uniq","wc","xargs"]);function Dn(e){return lo.has(e)}async function oi(e,t,s,n,r,i,a,o){let{ctx:l,runCommand:c}=e;if(l.coverage&&ft.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return hn(l,s);if(t==="unset")return Pn(l,s);if(t==="exit")return dn(l,s);if(t==="local")return gn(l,s);if(t==="set")return Sn(l,s);if(t==="break")return Ms(l,s);if(t==="continue")return Ys(l,s);if(t==="return")return bn(l,s);if(t==="eval"&&l.state.options.posix)return as(l,s,r);if(t==="shift")return An(l,s);if(t==="getopts")return os(l,s);if(t==="compgen")return qs(l,s);if(t==="complete")return Ks(l,s);if(t==="compopt")return Xs(l,s);if(t==="pushd")return await cn(l,s);if(t==="popd")return un(l,s);if(t==="dirs")return fn(l,s);if(t==="source"||t===".")return _n(l,s,r);if(t==="read")return vn(l,s,r,o);if(t==="mapfile"||t==="readarray")return wn(l,s,r);if(t==="declare"||t==="typeset")return an(l,s);if(t==="readonly")return on(l,s);if(l.commands.has(t))return null;if(!i){let u=l.state.functions.get(t);if(u)return rs(l,u,s,r)}if(t==="eval")return as(l,s,r);if(t==="cd")return await Ws(l,s);if(t===":"||t==="true")return W;if(t==="false")return Y(!1);if(t==="let")return yn(l,s);if(t==="command")return co(e,s,r);if(t==="builtin")return uo(e,s,r);if(t==="shopt")return si(l,s);if(t==="exec"){if(s.length===0)return W;let[u,...f]=s;return c(u,f,[],r,!1,!1,-1)}if(t==="jobs")return l.jobControl?.jobs?l.jobControl.jobs(s):W;if(t==="wait")return l.jobControl?.wait?l.jobControl.wait(s):W;if(t==="type")return await ii(l,s,u=>On(l,u),u=>us(l,u));if(t==="hash")return pn(l,s);if(t==="help")return mn(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 co(e,t,s){let{ctx:n,runCommand:r}=e;if(t.length===0)return W;let i=!1,a=!1,o=!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"?a=!0:d==="v"&&(o=!0);l=l.slice(1)}if(l.length===0)return W;if(o||a)return await ai(n,l,o,a);let[c,...u]=l;return r(c,u,[],s,!0,i,-1)}async function uo(e,t,s){let{runCommand:n}=e;if(t.length===0)return W;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return W;let i=r[0];if(!ft.has(i))return _(`bash: builtin: ${i}: not a shell builtin
|
|
635
|
+
`);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function li(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e;if(i.hostSpawn){let b=i.commands.get(t);if(b){let E=a(),w=n===""&&i.state.groupStdin!==void 0,S=n||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},$=Nn(P,t);try{let N=()=>$s(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 qe)throw N;return _(`${t}: ${ke(ge(N))}
|
|
636
|
+
`)}finally{w&&(b.consumesStdin||Dn(t))&&(i.state.groupStdin="")}}let g=a(),O=n===""&&i.state.groupStdin!==void 0,v=n||i.state.groupStdin||"";try{return await i.hostSpawn(t,s,{cwd:i.state.cwd,env:g,stdin:v,stdinProvided:n!==""||O||i.state.pipelineStdinProvided,redirections:i.currentRedirections})}finally{O&&Dn(t)&&(i.state.groupStdin="")}}let c=await ni(i,t,r?"/usr/bin:/bin":void 0);if(!c)return vr(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 o(c.path,s,n);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=n===""&&i.state.groupStdin!==void 0,h=n||i.state.groupStdin||"",p=a(),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=Nn(m,t);try{let b=()=>$s(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 qe)throw b;return _(`${t}: ${ke(ge(b))}
|
|
641
|
+
`)}finally{d&&(u.consumesStdin||Dn(t))&&(i.state.groupStdin="")}}async function Tn(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let n="",r="",i=0;try{for(let a of t){let o=await e.executeStatement(a);n+=o.stdout,r+=o.stderr,i=o.exitCode}}finally{e.state.inCondition=s}return{stdout:n,stderr:r,exitCode:i}}function Pt(e,t,s,n){if(e instanceof ie)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>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 fe)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>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 le||e instanceof Pe||e instanceof pe||e instanceof Z||e instanceof X)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=ge(e);return{action:"error",stdout:t,stderr:`${s}${r}
|
|
642
|
+
`,exitCode:1}}async function fs(e,t,s="",n=""){let r=s,i=n,a=0;try{for(let o of t){let l=await e.executeStatement(o);r+=l.stdout,i+=l.stderr,a=l.exitCode}}catch(o){if(xt(o)||o instanceof pe||o instanceof Z||o instanceof X||o instanceof Me)throw o.prependOutput(r,i),o;return{stdout:r,stderr:`${i}${ge(o)}
|
|
643
|
+
`,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function ci(e,t){let s=await _e(e,t.redirections);if(s)return s;let n="",r="",i=!1,a="";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
|
+
`)),a=f,i=!0}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${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);a=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 o=e.state.groupStdin;i&&(e.state.groupStdin=a);let l;try{for(let c of t.clauses){let u=await Tn(e,c.condition);if(n+=u.stdout,r+=u.stderr,u.exitCode===0)return l=await fs(e,c.body,n,r),U(e,l,t.redirections)}t.elseBody?l=await fs(e,t.elseBody,n,r):l=k(n,r,0)}finally{i&&(e.state.groupStdin=o)}return U(e,l,t.redirections)}async function ui(e,t){let s=await _e(e,t.redirections);if(s)return s;let n="",r="",i=0,a=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return _(`bash: \`${t.variable}': not a valid identifier
|
|
648
|
+
`);let o=[];if(t.words===null)o=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)o=[];else try{for(let c of t.words){let u=await Oe(e,c);o.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 o){a++,a>e.limits.maxLoopIterations&&De(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);n+=f.stdout,r+=f.stderr,i=f.exitCode}}catch(u){let f=Pt(u,n,r,e.state.loopDepth);if(n=f.stdout,r=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=k(n,r,f.exitCode??1);return U(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=k(n,r,i);return U(e,l,t.redirections)}async function fi(e,t){let s=await _e(e,t.redirections);if(s)return s;let n=t.line;n!==void 0&&(e.state.currentLine=n);let r="",i="",a=0,o=0;t.init&&await B(e,t.init.expression),e.state.loopDepth++;try{for(;o++,o>e.limits.maxLoopIterations&&De(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await B(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);r+=u.stdout,i+=u.stderr,a=u.exitCode}}catch(c){let u=Pt(c,r,i,e.state.loopDepth);if(r=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(r,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(r,i,a);return U(e,l,t.redirections)}async function di(e,t,s=""){let n="",r="",i=0,a=0,o=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
|
+
`)),o=f}else if(c.operator==="<<<"&&c.target.type==="Word")o=`${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);o=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;o&&(e.state.groupStdin=o),e.state.loopDepth++;try{for(;;){a++,a>e.limits.maxLoopIterations&&De(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r);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);n+=p.stdout,r+=p.stderr,c=p.exitCode}}catch(h){if(h instanceof ie){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;u=!0}else if(h instanceof fe){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,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);n+=p.stdout,r+=p.stderr,i=p.exitCode}}catch(h){let p=Pt(h,n,r,e.state.loopDepth);if(n=p.stdout,r=p.stderr,p.action==="break")break;if(p.action==="continue")continue;if(p.action==="error")return k(n,r,p.exitCode??1);throw p.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return k(n,r,i)}async function hi(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&De(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let a=await Tn(e,t.condition);if(s+=a.stdout,n+=a.stderr,a.exitCode===0)break;try{for(let o of t.body){let l=await e.executeStatement(o);s+=l.stdout,n+=l.stderr,r=l.exitCode}}catch(o){let l=Pt(o,s,n,e.state.loopDepth);if(s=l.stdout,n=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return k(s,n,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return k(s,n,r)}async function pi(e,t){let s=await _e(e,t.redirections);if(s)return s;let n="",r="",i=0,a=await T(e,t.word),o=!1;for(let c=0;c<t.items.length;c++){let u=t.items[c],f=o;if(!o)for(let d of u.patterns){let h=await T(e,d);er(d)&&(h=Qn(h));let p=e.state.shoptOptions.nocasematch,m=e.state.shoptOptions.extglob;if(ct(a,h,p,m)){f=!0;break}}if(f){let d=await fs(e,u.body,n,r);if(n=d.stdout,r=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?o=!0:o=!1}else o=!1}let l=k(n,r,i);return U(e,l,t.redirections)}function In(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function mi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),l=o.indexOf(":");if(l===-1)return null;let c=Number.parseInt(o.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=o.slice(l+1);return{path:i,position:c,content:u}}var yi="+ ";async function gi(e){let t=e.state.env.get("PS4");if(t===void 0)return yi;if(t==="")return"";try{let n=new V().parseWordFromString(t,!1,!1);return await T(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
|
|
653
|
+
`,t||yi}}function fo(e){return e.map(t=>ho(t)).join(" ")}function ho(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
|
|
654
|
+
`),r=e.includes(" "),i=e.includes("\\"),a=e.includes("'");if(s||n||r||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 a?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function wi(e,t,s){if(!e.state.options.xtrace)return"";let n=await gi(e),r=[t,...s],i=fo(r);return`${n}${i}
|
|
656
|
+
`}async function vi(e,t,s){return e.state.options.xtrace?`${await gi(e)}${t}=${s}
|
|
657
|
+
`:""}function po(e){return e.type==="SimpleCommand"&&e.name===null&&e.assignments.length>0&&e.args.length===0}async function $i(e,t,s){let n=t.timed?Ss():0,r="",i=W,a=0,o=[],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&&!po(h))?new Map(e.state.env):null,g,O=e.state.pipelineStdinProvided;e.state.pipelineStdinProvided=c&&!m;try{g=await s(h,r)}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),o.push(g.exitCode),g.exitCode!==0&&(a=g.exitCode),p?i=g:(t.pipeStderr?.[d]??!1?r=Ge(g.stderr)+vs(g):(r=vs(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<o.length;d++)e.state.env.set(`PIPESTATUS_${d}`,String(o[d]));e.state.env.set("PIPESTATUS__length",String(o.length))}if(e.state.options.pipefail&&a!==0&&(i={...i,exitCode:a}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let h=(Ss()-n)/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 Ei(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let u=await mo(e,t,i,r.array,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};if(n+=u.xtraceOutput,u.continueToNext)continue}let a=r.value?await T(e,r.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:n,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 bo(e,t,l[1],l[2],a,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await Eo(e,t,i,a,r.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:c.error};n+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:n,tempAssignments:s}}async function mo(e,t,s,n,r,i){let a="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: ${s}: cannot assign list to array member
|
|
666
|
+
`,1)};if(ve(e,s)){let u=Xn(e,s);if(u===void 0||u==="")throw new Z(1,"","");let f=Be(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(Ke(e,s)){if(t.name)return a+=`bash: ${s}: readonly variable
|
|
668
|
+
`,{continueToNext:!0,xtraceOutput:a};let u=ee(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let o=e.state.associativeArrays?.has(s),l=yo(n),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(o&&l?await go(e,t,s,n,r,c,u=>{a+=u}):l?await wo(e,s,n,r,c):await vo(e,s,n,r,c),t.name){i.set(s,e.state.env.get(s));let f=`(${n.map(d=>Ft(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:a}}function yo(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],n=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(t.parts.length<3)return!1;let r=t.parts[2];return r.type!=="Literal"?!1:r.value.startsWith("]=")||r.value.startsWith("]+=")}return n.type!=="Literal"?!1:n.value.startsWith("]")?n.value.startsWith("]=")||n.value.startsWith("]+="):s.pattern.endsWith("]")?n.value.startsWith("=")||n.value.startsWith("+="):!1}return!1})}async function go(e,t,s,n,r,i,a){let o=[];for(let l of n){let c=_s(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),o.push({type:"keyed",key:u,value:h,append:d})}else{let u=await T(e,l);o.push({type:"invalid",expandedValue:u})}}r||i();for(let l of o)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;a(`bash: line ${c}: ${s}: ${l.expandedValue}: must use subscript when assigning associative array
|
|
669
|
+
`)}}async function wo(e,t,s,n,r){let i=[];for(let o of s){let l=_s(o);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 Oe(e,o);i.push({type:"non-keyed",values:c.values})}}n||r();let a=0;for(let o of i)if(o.type==="keyed"){let l;try{let c=new V,u=Q(c,o.indexExpr);l=await B(e,u.expression,!1)}catch{if(/^-?\d+$/.test(o.indexExpr))l=Number.parseInt(o.indexExpr,10);else{let c=e.state.env.get(o.indexExpr);l=c?Number.parseInt(c,10):0,Number.isNaN(l)&&(l=0)}}if(o.append){let c=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,c+o.value)}else e.state.env.set(`${t}_${l}`,o.value);a=l+1}else for(let l of o.values)e.state.env.set(`${t}_${a++}`,l)}async function vo(e,t,s,n,r){let i=[];for(let o of s){let l=await Oe(e,o);i.push(...l.values)}let a=0;if(n){let o=Se(e,t);if(o.length>0)a=Math.max(...o.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),a=1)}}else r();for(let o=0;o<i.length;o++)e.state.env.set(`${t}_${a+o}`,i[o]);n||e.state.env.set(`${t}__length`,String(i.length))}async function bo(e,t,s,n,r,i,a){let o=s;if(ve(e,s)){let f=Be(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: \`${f}': not a valid identifier
|
|
670
|
+
`,1)};o=f}}if(Ke(e,o)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=ee(e,o);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(o),c;if(l)c=await Si(e,o,n);else{let f=await $o(e,o,n);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${o}_${f.index}`}let u=i?(e.state.env.get(c)||"")+r:r;if(t.name)a.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=ut(e,o);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 Si(e,t,s){let n;if(s.startsWith("'")&&s.endsWith("'"))n=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let r=s.slice(1,-1),a=new V().parseWordFromString(r,!0,!1);n=await T(e,a)}else if(s.includes("$")){let i=new V().parseWordFromString(s,!1,!1);n=await T(e,i)}else n=s;return`${t}_${n}`}async function $o(e,t,s){let n=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(n=s.slice(1,-1));let r;if(/^-?\d+$/.test(n))r=Number.parseInt(n,10);else{try{let i=new V,a=Q(i,n);r=await B(e,a.expression,!1)}catch(i){if(i instanceof Fe){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 a=e.state.env.get(s);r=a?Number.parseInt(a,10):0}Number.isNaN(r)&&(r=0)}if(r<0){let i=Se(e,t);if(i.length===0){let o=e.state.currentLine;return{index:0,error:k("",`bash: line ${o}: ${t}[${s}]: bad array subscript
|
|
672
|
+
`,1)}}if(r=Math.max(...i.map(([o])=>typeof o=="number"?o:0))+1+r,r<0){let o=e.state.currentLine;return{index:0,error:k("",`bash: line ${o}: ${t}[${s}]: bad array subscript
|
|
673
|
+
`,1)}}}return{index:r}}async function Eo(e,t,s,n,r,i){let a="",o=s,l=null;if(ve(e,s)){let f=Yn(e,s,n);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: ${s}: circular name reference
|
|
674
|
+
`,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};o=f;let d=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},o=d[1])}if(Ke(e,o)){if(t.name)return a+=`bash: ${o}: readonly variable
|
|
675
|
+
`,{continueToNext:!0,xtraceOutput:a};let f=ee(e,o);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(_t(e,o))try{let f=new V;if(r){let h=`(${e.state.env.get(o)||"0"}) + (${n})`,p=Q(f,h);c=String(await B(e,p.expression))}else{let d=Q(f,n);c=String(await B(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-YT6DLHRE.js"),d=f(e,o)?`${o}_0`:o;c=r?(e.state.env.get(d)||"")+n:n}c=ht(e,o,c),a+=await vi(e,o,c);let u=o;if(l)u=await So(e,l);else{let{isArray:f}=await import("./chunks/expansion-YT6DLHRE.js");f(e,o)&&(u=`${o}_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(o)),e.state.tempEnvBindings?.some(f=>f.has(o))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(o))),{continueToNext:!1,xtraceOutput:a}}async function So(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return Si(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let a=new V,o=Q(a,n);i=await B(e,o.expression,!1)}catch{let a=e.state.env.get(n);i=a?Number.parseInt(a,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let a=Se(e,s);a.length>0&&(i=Math.max(...a.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Ai(e,t,s,n){let r=await _e(e,t.redirections);if(r)return r;let i=new Map(e.state.env),a=e.state.cwd,o={...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=a,e.state.options=o,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 n($);v+=N.stdout,E+=N.stderr,w=N.exitCode}}catch($){if(S(),$ instanceof X)throw $;if($ instanceof Me){v+=$.stdout,E+=$.stderr;let A=k(v,E,0);return U(e,A,t.redirections)}if($ instanceof ie||$ instanceof fe){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 le){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}${ge($)}
|
|
680
|
+
`,1);return U(e,N,t.redirections)}S();let P=k(v,E,w);return U(e,P,t.redirections)}async function _i(e,t,s,n){let r="",i="",a=0,o=await ns(e,t.redirections);if(o)return o;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 n(f);r+=d.stdout,i+=d.stderr,a=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof X)throw f;if(xt(f)||f instanceof pe||f instanceof Z)throw f.prependOutput(r,i),f;return k(r,`${i}${ge(f)}
|
|
685
|
+
`,1)}e.state.groupStdin=c;let u=k(r,i,a);return U(e,u,t.redirections)}async function Ci(e,t,s,n,r){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 a=new Map(e.state.env),o=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++,n&&(e.state.groupStdin=n),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=a,e.state.cwd=o,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 r(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(Pi):!1}function Pi(e){if(e.type==="CommandSubstitution")return!0;if(e.type==="DoubleQuoted")return e.parts.some(Pi);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 qe(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,n=new Set;if(t)for(let i of t)n.add(i);if(s)for(let i of s)n.add(i);if(n.size===0)return Object.create(null);let r=Object.create(null);for(let i of n){let a=this.ctx.state.env.get(i);a!==void 0&&(r[i]=a)}return r}async executeScript(t){this.assertDefenseContext("execution");let s="",n="",r=0,i=this.ctx.limits.maxOutputSize,a=(o,l)=>{s.length+n.length+o.length+l.length>i&&De(`total output size exceeded (>${i} bytes), increase executionLimits.maxOutputSize`,"output_size"),s+=o,n+=l};for(let o of t.statements)try{let l=await this.executeStatement(o);a(l.stdout,l.stderr),r=l.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}catch(l){if(l instanceof Z)throw l.prependOutput(s,n),l;if(l instanceof me)return a(l.stdout,l.stderr),r=l.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:We(this.ctx.state.env)};if(l instanceof Pe)return a(l.stdout,l.stderr),r=l.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:We(this.ctx.state.env)};if(l instanceof X)throw l;if(l instanceof pe)return a(l.stdout,l.stderr),r=l.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:We(this.ctx.state.env)};if(l instanceof bs)return a(l.stdout,l.stderr),r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:We(this.ctx.state.env)};if(l instanceof wt)throw l.prependOutput(s,n),l;if(l instanceof Fe){if(l.message.includes("substring expression < 0"))throw l.prependOutput(s,n),l;a(l.stdout,l.stderr),r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(l instanceof jn){a(l.stdout,l.stderr),r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(l instanceof ie||l instanceof fe){if(this.ctx.state.loopDepth>0)throw l.prependOutput(s,n),l;a(l.stdout,l.stderr);continue}throw l instanceof le&&l.prependOutput(s,n),l}return{stdout:s,stderr:n,exitCode:r,env:We(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Ci(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Rt;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&De(`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 W;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="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
|
|
689
|
+
`);let r=0,i=-1,a=!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==="&&"&&r!==0||f==="||"&&r===0)continue;let d=await this.executePipeline(u);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=c,a=u.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}let o=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||a||l,this.ctx.state.options.errexit&&r!==0&&i===t.pipelines.length-1&&!a&&!this.ctx.state.inCondition&&!l)throw new pe(r,s,n);return k(s,n,r)}async executePipeline(t){if(t.timed&&this.ctx.rejectTimedPipelines)throw new Error("Unsupported shell syntax: timed pipelines");return $i(this.ctx,t,(s,n)=>this.executeCommand(s,n))}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 ci(this.ctx,t);case"For":return ui(this.ctx,t);case"CStyleFor":return fi(this.ctx,t);case"While":return di(this.ctx,t,s);case"Until":return hi(this.ctx,t);case"Case":return pi(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Rr(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return W}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(n){if(n instanceof It)return _(n.stderr);throw n}}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 n=await Ei(this.ctx,t);if(n.error)return n.error;let r=n.tempAssignments,i=n.xtraceOutput;if(!t.name){if(t.redirections.length>0){let P=await _e(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 a=t.name&&In(t.name,["local","declare","typeset","export","readonly"]),o=Array.from(r.keys());if(o.length>0&&!a){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let w of o)this.ctx.state.tempExportedVars.add(w)}let l=await ns(this.ctx,t.redirections);if(l){for(let[w,S]of r)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=Ge(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=Ge(`${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 Bn(this.ctx.fs,P)}catch{let S=await T(this.ctx,w.target);for(let[P,$]of r)$===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=mi($);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(In(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 gr(this.ctx,w);if(S)f.push(S),d.push(!0);else{let P=await wr(this.ctx,w);if(P!==null)f.push(P),d.push(!0);else{let $=await Oe(this.ctx,w);for(let N of $.values)f.push(N),d.push($.quoted)}}}else for(let w of t.args){let S=await Oe(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 r)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 r.keys())this.ctx.state.tempExportedVars.delete(w);return W}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 wi(this.ctx,u,f);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let m=W,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 Ir(this.ctx,t.redirections,b);P?(m=P,w=!1):this.ctx.currentRedirections=Ao(t.redirections,b)}}w&&(m=await this.runCommand(u,f,d,s,!1,!1,c))}catch(w){if(w instanceof ie||w instanceof fe)y=w,m=W;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=Tr(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!v)for(let[w,S]of r)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 r.keys())this.ctx.state.tempExportedVars.delete(w);return r.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,n,r,i=!1,a=!1,o=-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 oi(l,t,s,n,r,i,a,o);return c!==null?c:li(l,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return Fs(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return us(this.ctx,t)}async executeSubshell(t,s=""){return Ai(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return _i(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await _e(this.ctx,t.redirections);if(s)return s;try{let n=await B(this.ctx,t.expression.expression),r=Y(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),U(this.ctx,r,t.redirections)}catch(n){let r=_(`bash: arithmetic expression: ${n.message}
|
|
696
|
+
`);return U(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await _e(this.ctx,t.redirections);if(s)return s;try{let n=await je(this.ctx,t.expression),r=Y(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),U(this.ctx,r,t.redirections)}catch(n){let r=n instanceof Fe?1:2,i=_(`bash: conditional expression: ${n.message}
|
|
697
|
+
`,r);return U(this.ctx,i,t.redirections)}}};function Ao(e,t){let s=[];for(let n=0;n<e.length;n++){let r=e[n],i=t.get(n);i!==void 0&&s.push({fd:r.fd,operator:r.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 ki(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 Ro}from"node:dns";function Rn(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function _o(e){let t=Rn(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function Ni(e){if(e.includes("\\"))return!0;let t=e.toLowerCase();return t.includes("%2f")||t.includes("%5c")}function Co(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function xn(e,t){let s=Rn(e);if(!s)return!1;let n=_o(t);return!n||s.origin!==n.origin||n.pathPrefix!=="/"&&n.pathPrefix!==""&&Ni(s.pathname)?!1:Co(s.pathname,n.pathPrefix)}function Oi(e){return typeof e=="string"?e:e.url}function Di(e,t){return!t||t.length===0?!1:t.some(s=>xn(e,Oi(s)))}function Ln(e){let t=Po(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=Ti(t);if(s)return hs(s);let n=No(t);return n?Oo(n):!1}function Po(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function ko(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 n=Number.parseInt(s,t);return!Number.isFinite(n)||n<0?null:n}function Ti(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>ko(l));if(s.some(l=>l===null))return null;let n=s;if(t.length===1){let l=n[0];return l>4294967295?null:[l>>>24&255,l>>>16&255,l>>>8&255,l&255]}if(t.length===2){let[l,c]=n;return l>255||c>16777215?null:[l,c>>>16&255,c>>>8&255,c&255]}if(t.length===3){let[l,c,u]=n;return l>255||c>255||u>65535?null:[l,c,u>>>8&255,u&255]}let[r,i,a,o]=n;return r>255||i>255||a>255||o>255?null:[r,i,a,o]}function No(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=Ti(y);if(!b)return null;s=b,t=t.slice(0,m)}let n=t.includes("::")?t.split("::").length-1:0;if(n>1)return null;let[r,i]=t.split("::"),a=r?r.split(":").filter(Boolean):[],o=i?i.split(":").filter(Boolean):[],l=m=>/^[0-9a-f]{1,4}$/i.test(m)?Number.parseInt(m,16):null,c=a.map(l),u=o.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(n===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 Oo(e){if(e.every(r=>r===0)||e.slice(0,7).every(r=>r===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 r=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return hs(r)}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 r=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return hs(r)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let r=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return hs(r)}return!1}function Ii(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 n=Oi(s);if(!Rn(n)){t.push(`Invalid URL in allow-list: "${n}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let i=new URL(n);if(i.protocol!=="http:"&&i.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${n}"`);continue}if(!i.hostname){t.push(`Allow-list entry must include a hostname: "${n}"`);continue}if(i.pathname!=="/"&&i.pathname!==""&&Ni(i.pathname)){t.push(`Allow-list entry contains ambiguous path separators: "${n}"`);continue}(i.search||i.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${n}"`)}return t}var Do=typeof __BROWSER__<"u"&&__BROWSER__,mt=null,ps=null,Ri=!1;function To(){if(mt===null&&!Do)try{let e=Wn("node:async_hooks");ps=Wn("node:dns"),mt=new e.AsyncLocalStorage}catch{}}function Io(){if(Ri||(To(),!mt||!ps))return;Ri=!0;let e=mt,t=ps.lookup;function s(...n){let r=n[0],i=e.getStore();if(typeof r!="string"||!i||i.hostname.toLowerCase()!==r.toLowerCase())return t.apply(this,n);let a={},o;if(n.length===2)o=n[1];else if(n.length>=3){let c=n[1];typeof c=="number"?a={family:c}:c&&typeof c=="object"&&(a=c),o=n[2]}if(typeof o!="function")return t.apply(this,n);let l=o;if(a.family!==void 0&&a.family!==0&&a.family!==i.family){let c=new Error(`ENOTFOUND ${r}`);c.code="ENOTFOUND",c.errno=-3008,c.syscall="getaddrinfo",c.hostname=r,process.nextTick(()=>l(c));return}process.nextTick(()=>{a.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 xi(e,t){return Io(),mt?mt.run(e,t):t()}var Re=class extends Error{constructor(t,s){let n=s??"URL not in allow-list";super(`Network access denied: ${n}: ${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"}},yt=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};function xo(e){return new Promise((t,s)=>{Ro(e,{all:!0},(n,r)=>{n?s(n):t(r)})})}var Lo=20,Fo=3e4,Mo=10485760,Wo=["GET","HEAD"],zo=new Set(["GET","HEAD","OPTIONS"]),Vo=new Set([301,302,303,307,308]);function Fn(e){let t=e.allowedUrlPrefixes??[];if(!e.dangerouslyAllowFullInternetAccess){let h=Ii(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 n(h){if(s.length===0)return null;let p=null;for(let m of s)if(xn(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 r=e.maxRedirects??Lo,i=e.timeoutMs??Fo,a=e.maxResponseSize??Mo,o=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??Wo,l=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),c=e._dnsResolve??xo;async function u(h){if(!e.dangerouslyAllowFullInternetAccess&&!Di(h,t))throw new Re(h);if(l)try{let p=new URL(h);if(Ln(p.hostname))throw new Re(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(Ln(O))throw new Re(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 Re)throw b;let g=b?.code;if(!(g==="ENOTFOUND"||g==="ENODATA"))throw new Re(h,"DNS resolution failed for private IP check")}}catch(p){if(p instanceof Re)throw p}return null}function f(h){if(e.dangerouslyAllowFullInternetAccess)return;let p=h.toUpperCase();if(!o.includes(p))throw new ms(p,o)}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=zn(()=>E.abort(),v);try{let S=await ye.runTrustedAsync(()=>{let P=n(b),$=Bo(p.headers,P),N={method:m,headers:$,signal:E.signal,redirect:"manual"};return p.body&&!zo.has(m)&&(N.body=p.body),y?xi(y,()=>fetch(b,N)):fetch(b,N)});if(Vo.has(S.status)&&O){let P=S.headers.get("location");if(!P)return await Li(S,b,a);let $=new URL(P,b).href;try{y=await u($)}catch{throw new Ot($)}if(g++,g>r)throw new Nt(r);b=$;continue}return await Li(S,b,a)}finally{Vn(w)}}}return d}function Bo(e,t){if(!e&&!t)return;if(!t)return e;let s=e instanceof Headers?new Headers(e):new Headers(e);for(let[n,r]of t)s.set(n,r);return s}async function Li(e,t,s){let n=Object.create(null);if(e.headers.forEach((i,a)=>{n[a.toLowerCase()]=i}),s>0){let i=e.headers.get("content-length");if(i){let a=parseInt(i,10);if(!Number.isNaN(a)&&a>s)throw new yt(s)}}let r;if(s>0&&e.body){let i=e.body.getReader(),a=[],o=0;for(;;){let{done:c,value:u}=await i.read();if(c)break;if(u){if(o+=u.byteLength,o>s)throw i.cancel(),new yt(s);a.push(u)}}r=new Uint8Array(o);let l=0;for(let c of a)r.set(c,l),l+=c.byteLength}else{let i=await e.arrayBuffer();if(s>0&&i.byteLength>s)throw new yt(s);r=new Uint8Array(i)}return{status:e.status,statusText:e.statusText,headers:n,body:r,url:t}}function Fi(e){return Je(e)}function Je(e){return e.statements.map(Mi).join(`
|
|
700
|
+
`)}function Mi(e){let t=[];for(let n=0;n<e.pipelines.length;n++)t.push(jo(e.pipelines[n])),n<e.operators.length&&t.push(e.operators[n]);let s=t.join(" ");return e.background&&(s+=" &"),s}function jo(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let s=[];for(let r=0;r<e.commands.length;r++)if(s.push(Wi(e.commands[r])),r<e.commands.length-1){let i=e.pipeStderr?.[r];s.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+s.join(" ")}function Wi(e){switch(e.type){case"SimpleCommand":return Ho(e);case"If":return Jo(e);case"For":return el(e);case"CStyleFor":return tl(e);case"While":return sl(e);case"Until":return nl(e);case"Case":return rl(e);case"Subshell":return al(e);case"Group":return ol(e);case"ArithmeticCommand":return ll(e);case"ConditionalCommand":return cl(e);case"FunctionDef":return ul(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Ho(e){let t=[];for(let s of e.assignments)t.push(Uo(s));e.name&&t.push(ce(e.name));for(let s of e.args)t.push(ce(s));for(let s of e.redirections)t.push(Bi(s));return t.join(" ")}function Uo(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(ce).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${ce(e.value)}`:`${e.name}${t}`}function ce(e){return e.parts.map(t=>ys(t,!1)).join("")}function Ze(e){return e.parts.map(t=>ys(t,!0)).join("")}function ys(e,t){switch(e.type){case"Literal":return t?qo(e.value):Zo(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 zi(e);case"CommandSubstitution":return e.legacy?`\`${Je(e.body)}\``:`$(${Je(e.body)})`;case"ArithmeticExpansion":return`$((${j(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${Je(e.body)})`:`>(${Je(e.body)})`;case"BraceExpansion":return Yo(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 Zo(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function qo(e){return e.replace(/[$`"\\]/g,"\\$&")}function Go(e,t){return e.parts.map(s=>Ko(s,t)).join("")}function Ko(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return zi(e);case"CommandSubstitution":return e.legacy?`\`${Je(e.body)}\``:`$(${Je(e.body)})`;case"ArithmeticExpansion":return`$((${j(e.expression.expression)}))`;default:return ys(e,!1)}}function zi(e){return e.operation?`\${${Vi(e.parameter,e.operation)}}`:Xo(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Xo(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Vi(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${Ze(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${Ze(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?Ze(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${Ze(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"?"#":"%",n=t.greedy?`${s}${s}`:s;return`${e}${n}${Ze(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let n=t.replacement?`/${Ze(t.replacement)}`:"";return`${e}${s}${Ze(t.pattern)}${n}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",n=t.all?`${s}${s}`:s,r=t.pattern?Ze(t.pattern):"";return`${e}${n}${r}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Vi(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 Yo(e){return`{${e.items.map(Qo).join(",")}}`}function Qo(e){if(e.type==="Word")return ce(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 Bi(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let s=e.target,n=s.quoted?`'${s.delimiter}'`:s.delimiter,r=Go(s.content,s.quoted);return`${t}${e.operator}${n}
|
|
701
|
+
${r}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${ce(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${ce(e.target)}`:`${t}${e.operator} ${ce(e.target)}`}function Ce(e){return e.length===0?"":` ${e.map(Bi).join(" ")}`}function be(e){return e.map(Mi).join(`
|
|
702
|
+
`)}function Jo(e){let t=[];for(let s=0;s<e.clauses.length;s++){let n=e.clauses[s],r=s===0?"if":"elif";t.push(`${r} ${be(n.condition)}; then
|
|
703
|
+
${be(n.body)}`)}return e.elseBody&&t.push(`else
|
|
704
|
+
${be(e.elseBody)}`),`${t.join(`
|
|
705
|
+
`)}
|
|
706
|
+
fi${Ce(e.redirections)}`}function el(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(ce).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
|
|
707
|
+
${be(e.body)}
|
|
708
|
+
done${Ce(e.redirections)}`}function tl(e){let t=e.init?j(e.init.expression):"",s=e.condition?j(e.condition.expression):"",n=e.update?j(e.update.expression):"";return`for ((${t}; ${s}; ${n})); do
|
|
709
|
+
${be(e.body)}
|
|
710
|
+
done${Ce(e.redirections)}`}function sl(e){return`while ${be(e.condition)}; do
|
|
711
|
+
${be(e.body)}
|
|
712
|
+
done${Ce(e.redirections)}`}function nl(e){return`until ${be(e.condition)}; do
|
|
713
|
+
${be(e.body)}
|
|
714
|
+
done${Ce(e.redirections)}`}function rl(e){let t=e.items.map(il).join(`
|
|
715
|
+
`);return`case ${ce(e.word)} in
|
|
716
|
+
${t}
|
|
717
|
+
esac${Ce(e.redirections)}`}function il(e){let t=e.patterns.map(ce).join(" | "),s=be(e.body);return s?`${t})
|
|
718
|
+
${s}
|
|
719
|
+
${e.terminator}`:`${t})
|
|
720
|
+
${e.terminator}`}function al(e){return`(${be(e.body)})${Ce(e.redirections)}`}function ol(e){return`{ ${be(e.body)}; }${Ce(e.redirections)}`}function ll(e){return`((${j(e.expression.expression)}))${Ce(e.redirections)}`}function cl(e){return`[[ ${Qe(e.expression)} ]]${Ce(e.redirections)}`}function ul(e){let t=Wi(e.body);return`${e.name}() ${t}${Ce(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 Qe(e){switch(e.type){case"CondBinary":return`${ce(e.left)} ${e.operator} ${ce(e.right)}`;case"CondUnary":return`${e.operator} ${ce(e.operand)}`;case"CondNot":return`! ${Qe(e.operand)}`;case"CondAnd":return`${Qe(e.left)} && ${Qe(e.right)}`;case"CondOr":return`${Qe(e.left)} || ${Qe(e.right)}`;case"CondGroup":return`( ${Qe(e.expression)} )`;case"CondWord":return ce(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 n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=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",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=ki({...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=Fn(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:r,cwd:n,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",Rs(this.state.options)),this.state.env.set("BASHOPTS",xs(this.state.shoptOptions)),fr(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),n!=="/"&&s instanceof Et)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let a of rr(t.commands))this.registerCommand(a);if(t.fetch||t.network)for(let a of ir())this.registerCommand(a);if(t.python)for(let a of ar())this.registerCommand(a);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let a of or())this.registerCommand(a);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let a of t.customCommands)lr(a)?this.registerCommand(cr(a)):this.registerCommand({...a,trusted:a.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
|
|
722
|
+
# Built-in command: ${t.name}
|
|
723
|
+
`;try{s.writeFileSync(`/bin/${t.name}`,n)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,n)}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=Hi(t.stdout),t.stderr=Hi(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:we(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:we(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let n=s?.cwd??this.state.cwd,r,i=n;if(s?.cwd)if(s.env&&"PWD"in s.env)r=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{r=await this.fs.realpath(n),i=r}catch{r=n}else r=n;let a=s?.replaceEnv?new Map:new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))a.set(f,d);r!==void 0&&a.set("PWD",r);let o={...this.state,env:a,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:dl(s?.stdin,s?.stdinKind),signal:s?.signal,extraArgs:s?.args},l=t;s?.rawScript||(l=ji(t));let c=this.defenseInDepthConfig?ye.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let d=Ee(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=Es(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,o).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:we(this.state.env,s?.env)});if(f instanceof me)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:we(this.state.env,s?.env)});if(f instanceof Fe)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:we(this.state.env,s?.env)});if(f instanceof Rt)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:we(this.state.env,s?.env)});if(f instanceof X)return this.logResult({stdout:f.stdout,stderr:ke(f.stderr),exitCode:X.EXIT_CODE,env:we(this.state.env,s?.env)});if(f instanceof qe)return this.logResult({stdout:"",stderr:`bash: security violation: ${ke(f.message)}
|
|
725
|
+
`,exitCode:1,env:we(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${ke(f.message)}
|
|
726
|
+
`,exitCode:2,env:we(this.state.env,s?.env)});if(f instanceof Un)return this.logResult({stdout:"",stderr:`bash: ${ke(f.message)}
|
|
727
|
+
`,exitCode:2,env:we(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${ke(f.message)}
|
|
728
|
+
`,exitCode:1,env:we(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=ji(t),n=Ee(s,{maxHeredocSize:this.limits.maxHeredocSize}),r=Object.create(null);for(let i of this.transformPlugins){let a=i.transform({ast:n,metadata:r});n=a.ast,a.metadata&&(r=Es(r,a.metadata))}return{script:Fi(n),ast:n,metadata:r}}};function ji(e){let t=e.split(`
|
|
729
|
+
`),s=[],n=[];for(let r=0;r<t.length;r++){let i=t[r];if(n.length>0){let l=n[n.length-1];if((l.stripTabs?i.replace(/^\t+/,""):i)===l.delimiter){s.push(i.trimStart()),n.pop();continue}s.push(i);continue}let a=i.trimStart();s.push(a);let o=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let l of a.matchAll(o)){let c=l[1]==="-",u=l[3];n.push({delimiter:u,stripTabs:c})}}return s.join(`
|
|
730
|
+
`)}var fl=new TextDecoder("utf-8",{fatal:!0});function Hi(e){if(!e)return e;let t=!1;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r>255)return e;r>127&&(t=!0)}if(!t)return e;let s=new Uint8Array(e.length);for(let n=0;n<e.length;n++)s[n]=e.charCodeAt(n);try{return fl.decode(s)}catch{return e}}function dl(e,t){if(e!==void 0)return t==="bytes"?e:Ge(e)}import*as H from"node:fs";import*as ae from"node:path";import*as $e from"node:fs";import*as ue 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=$e.realpathSync(e);return Tt(s,t)?s:null}catch(s){if(s.code==="ENOENT"){let n=ue.dirname(e);if(n===e)return null;let r=Dt(n,t);if(r===null)return null;try{if($e.lstatSync(e).isSymbolicLink()){let a=$e.readlinkSync(e),o=ue.isAbsolute(a)?a:ue.resolve(ue.dirname(e),a);if(Dt(o,t)===null)return null}}catch{}return ue.join(r,ue.basename(e))}return null}}function Ui(e,t,s){let n=Dt(e,s);if(n===null)return null;let r=ue.resolve(e),i=r.slice(t.length),a=n.slice(s.length);if(i!==a)return null;try{if($e.lstatSync(r).isSymbolicLink())return null}catch{}return n}function Zi(e,t){if(!$e.existsSync(e))throw new Error(`${t} root does not exist`);if(!$e.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function qi(e,t){if(!ue.isAbsolute(e))return{withinRoot:!0,relativePath:e};let s;try{s=$e.realpathSync(e)}catch{s=ue.resolve(e)}return Tt(s,t)?{withinRoot:!0,relativePath:s.slice(t.length).replace(/\\/g,"/")||"/"}:{withinRoot:!1,safeName:ue.basename(e)}}function Gi(e,t,s,n){let r=e;if(r.path===void 0){for(let a of n)if(r.message?.includes(a))throw e}let i=r.code||"EIO";throw new Error(`${i}: ${s} '${t}'`)}var hl=["ELOOP","EFBIG","EPERM"],pl="/home/user/project",ws=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=ae.resolve(t.root);let s=t.mountPoint??pl;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,Zi(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 n of t)s+=`/${n}`,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 r=L(t).split("/").filter(Boolean),i="";for(let a of r)i+=`/${a}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=L(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{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),n=this.getRelativeToMount(s);if(n===null)return null;let r=ae.join(this.root,n),i=ae.resolve(r);return Tt(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Dt(t,this.canonicalRoot):Ui(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=ae.dirname(t),n=this.resolveRealPath_(s);return n===null?null:ae.join(n,ae.basename(t))}sanitizeError(t,s,n){Gi(t,s,n,hl)}ensureParentDirs(t){let s=Xe(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 n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)return!1;try{return await H.promises.lstat(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=ze(s);return st(n,r)}async readFileBytes(t){let s=await this.readFileBuffer(t);return st(s,"binary")}async readFileBuffer(t,s=new Set){M(t,"open");let n=L(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.readFileBuffer(a,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.resolveRealPath_(this.toRealPath(n));if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let a=await H.promises.lstat(i);if(a.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(n,c),f=this.resolveSymlink(n,u);return this.readFileBuffer(f,s)}if(a.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&a.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?H.constants.O_RDONLY:H.constants.O_RDONLY|H.constants.O_NOFOLLOW,l=await H.promises.open(i,o);try{let c=await l.readFile();return new Uint8Array(c)}finally{await l.close()}}catch(a){let o=a.code;if(o==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(o==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${t}'`);this.sanitizeError(a,t,"open")}}async writeFile(t,s,n){M(t,"write"),this.assertWritable(`write '${t}'`);let r=L(t);this.ensureParentDirs(r);let i=ze(n),a=tt(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){M(t,"append"),this.assertWritable(`append '${t}'`);let r=L(t),i=ze(n),a=tt(s,i),o;try{o=await this.readFileBuffer(r)}catch{o=new Uint8Array(0)}let l=new Uint8Array(o.length+a.length);l.set(o),l.set(a,o.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){M(t,"stat");let n=L(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.stat(o,s)}let a=0;return r.type==="file"&&(a=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:a,mtime:r.mtime}}let i=this.resolveRealPath_(this.toRealPath(n));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let a=await H.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let o=await H.promises.readlink(i),l=this.realTargetToVirtual(n,o),c=this.resolveSymlink(n,l);return this.stat(c,s)}return{isFile:a.isFile(),isDirectory:a.isDirectory(),isSymbolicLink:!1,mode:a.mode,size:a.size,mtime:a.mtime}}catch(a){if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(a,t,"stat")}}async lstat(t){M(t,"lstat");let s=L(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await H.promises.lstat(r);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 it(t,s)}realTargetToVirtual(t,s){let n=qi(s,this.canonicalRoot);if(n.withinRoot){if(!ae.isAbsolute(s))return s;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,s){M(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let n=L(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=Xe(n);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(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let o of this.deleted)if(o.startsWith(i)){let l=o.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&r.add(c)}for(let[o,l]of this.memory)if(o!==s&&o.startsWith(i)){let c=o.slice(i.length),u=c.split("/")[0];u&&!r.has(u)&&!c.includes("/",1)&&n.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let a=this.resolveRealPath_(this.toRealPath(s));if(a)try{if(!this.allowSymlinks&&(await H.promises.lstat(a)).isSymbolicLink()){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);return n}let o=await H.promises.readdir(a,{withFileTypes:!0});for(let l of o)!r.has(l.name)&&!n.has(l.name)&&n.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(o){if(o.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else o.code!=="ENOTDIR"&&this.sanitizeError(o,t,"scandir")}return n}async resolveForReaddir(t,s=!1){let n=L(t),r=new Set,i=s,a=this.memory.get(n);for(;a&&a.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,a.target),a=this.memory.get(n)}if(a)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let l=this.resolveRealPath_(this.toRealPath(n));if(!l)return{normalized:n,outsideOverlay:!0};try{if((await H.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:n,outsideOverlay:!0};let u=await H.promises.readlink(l),f=this.realTargetToVirtual(n,u),d=this.resolveSymlink(n,f);return this.resolveForReaddir(d,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){M(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,a)=>i<a?-1:i>a?1:0)}async readdirWithFileTypes(t){M(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,a)=>i.name<a.name?-1:i.name>a.name?1:0)}async rm(t,s){M(t,"rm"),this.assertWritable(`rm '${t}'`);let n=L(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let a=await this.readdir(n);if(a.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of a){let l=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(l,s)}}}}catch(i){if(i instanceof Error&&(i.message.includes("ENOTEMPTY")||i.message.includes("EISDIR")))throw i}this.memory.delete(n),this.existsOnRealFs(n)&&this.deleted.add(n)}existsOnRealFs(t){let s=this.toRealPath(t),n=this.resolveRealPathParent_(s);if(!n)return!1;try{return H.lstatSync(n),!0}catch{return!1}}async cp(t,s,n){M(t,"cp"),M(s,"cp"),this.assertWritable(`cp '${s}'`);let r=L(t),i=L(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let o=await this.stat(r);if(o.isFile){let l=await this.readFileBuffer(r);await this.writeFile(i,l)}else if(o.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(r);for(let c of l){let u=r==="/"?`/${c}`:`${r}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,n)}}}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 n=this.resolveRealPath_(this.toRealPath(t));if(n)try{let r=H.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(a))continue;s.add(a);let o=ae.join(n,i);H.lstatSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){M(t,"chmod"),this.assertWritable(`chmod '${t}'`);let n=L(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let a=await this.stat(n);if(a.isFile){let o=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:o,mode:s,mtime:new Date})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);M(s,"symlink"),this.assertWritable(`symlink '${s}'`);let n=L(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){M(t,"link"),M(s,"link"),this.assertWritable(`link '${s}'`);let n=L(t),r=L(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let a=await this.stat(n);if(!a.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:a.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){M(t,"readlink");let s=L(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await H.promises.readlink(r);if(!ae.isAbsolute(i)){let a=ae.resolve(ae.dirname(r),i),o;try{o=H.realpathSync(a)}catch{o=a}if(!Tt(o,this.canonicalRoot))return ae.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){M(t,"realpath");let s=L(t),n=new Set,r=async o=>{let l=o==="/"?[]:o.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,n.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(n.add(c),c=this.resolveSymlink(c,f.target),d++,n.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 n.add(c),c=this.resolveSymlink(c,g),r(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 r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){M(t,"utimes"),this.assertWritable(`utimes '${t}'`);let r=L(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let a=this.memory.get(r);if(a){a.mtime=n;return}let o=await this.stat(r);if(o.isFile){let l=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:l,mode:o.mode,mtime:n})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:o.mode,mtime:n})}};var se={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"},Mn=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new ws({root:s,mountPoint:"/"});this.env=new gs({fs:n,cwd:t.cwd||"/",env:{HOME:"/",USER:"user",SHELL:"/bin/bash",TERM:"xterm-256color",...t.env},network:t.network===!0?{dangerouslyAllowFullInternetAccess:!0}:void 0}),this.isInteractive=process.stdin.isTTY===!0,this.rl=Xi.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
|
|
731
|
+
`),this.prompt()}),process.stdin.isTTY&&this.rl.on("close",()=>{this.running=!1,console.log(`
|
|
732
|
+
Goodbye!`),process.exit(0)})}syncHistory(){let t=this.env.getEnv();t.BASH_HISTORY=JSON.stringify(this.history)}getPrompt(){let t=this.env.getCwd(),s=this.env.getEnv().HOME||"/home/user",n=t;return t===s?n="~":t.startsWith(`${s}/`)&&(n=`~${t.slice(s.length)}`),`${se.green}${se.bold}user@virtual${se.reset}:${se.blue}${se.bold}${n}${se.reset}$ `}async executeCommand(t){let s=t.trim();if(s){if(this.history.push(s),s==="exit"||s.startsWith("exit ")){let n=s.split(/\s+/),r=n[1]?parseInt(n[1],10):0;console.log("exit"),process.exit(r)}this.syncHistory();try{let n=await this.env.exec(s);n.stdout&&process.stdout.write(n.stdout),n.stderr&&process.stderr.write(`${se.red}${n.stderr}${se.reset}`)}catch(n){console.error(`${se.red}Error: ${ge(n)}${se.reset}`)}}}printWelcome(){console.log(`
|
|
733
|
+
${se.cyan}${se.bold}\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
|
|
734
|
+
\u2551 Virtual Shell v1.0 \u2551
|
|
735
|
+
\u2551 A simulated bash environment in TypeScript \u2551
|
|
736
|
+
\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D${se.reset}
|
|
737
|
+
|
|
738
|
+
${se.dim}Exploring: ${process.cwd()}${se.reset}
|
|
739
|
+
|
|
740
|
+
Type ${se.green}help${se.reset} for available commands, ${se.green}exit${se.reset} to quit.
|
|
741
|
+
Reads from real filesystem, writes stay in memory (OverlayFs).
|
|
742
|
+
`)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function ml(){let e=process.argv.slice(2),t={};for(let s=0;s<e.length;s++)if(e[s]==="--cwd"&&e[s+1])t.cwd=e[++s];else if(e[s]==="--files"&&e[s+1]){let n=e[++s];try{let r=Ki.readFileSync(n,"utf-8");t.files=JSON.parse(r)}catch(r){console.error(`Error reading files from ${n}:`,r),process.exit(1)}}else e[s]==="--network"?t.network=!0:e[s]==="--no-network"?t.network=!1:(e[s]==="--help"||e[s]==="-h")&&(console.log(`
|
|
743
|
+
Usage: pnpm shell [options]
|
|
744
|
+
|
|
745
|
+
Interactive shell using OverlayFs - reads from the current directory,
|
|
746
|
+
writes stay in memory (copy-on-write).
|
|
747
|
+
|
|
748
|
+
Options:
|
|
749
|
+
--cwd <dir> Set initial working directory (default: /)
|
|
750
|
+
--network Enable network access (disabled by default)
|
|
751
|
+
--no-network Disable network access (default)
|
|
752
|
+
--help, -h Show this help message
|
|
753
|
+
|
|
754
|
+
Example:
|
|
755
|
+
pnpm shell
|
|
756
|
+
pnpm shell --network
|
|
757
|
+
`),process.exit(0));return t}var yl=ml(),gl=new Mn(yl);gl.run();
|