just-bash 2.15.0-executor.0 → 3.0.0
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 +43 -0
- package/README.md +38 -2
- package/dist/Bash.d.ts +23 -82
- package/dist/bin/chunks/awk2-CKPJ75GN.js +2 -0
- package/dist/bin/chunks/base64-I3CXGD2Q.js +2 -0
- package/dist/bin/chunks/bash-UYSJL7VA.js +2 -0
- package/dist/bin/chunks/cat-3TMJDECR.js +2 -0
- package/dist/bin/chunks/chunk-24DJ4XAS.js +18 -0
- package/dist/bin/chunks/{chunk-DOXYBGNA.js → chunk-2ACK45YF.js} +4 -4
- package/dist/bin/chunks/chunk-2GZSSMV3.js +14 -0
- package/dist/bin/chunks/{chunk-WXMBDX4P.js → chunk-2TMMAY52.js} +7 -7
- package/dist/bin/chunks/chunk-575DV2PL.js +9 -0
- package/dist/bin/chunks/chunk-5DFR7VRU.js +13 -0
- package/dist/bin/chunks/chunk-63XSH3IT.js +2 -0
- package/dist/bin/{shell/chunks/chunk-N43DJTSI.js → chunks/chunk-6CW6ATOU.js} +1 -1
- package/dist/bin/chunks/chunk-6NYAJMTL.js +14 -0
- package/dist/bin/chunks/chunk-6ZKYK7PO.js +63 -0
- package/dist/bin/chunks/chunk-7FOU5QKD.js +11 -0
- package/dist/bin/chunks/chunk-7RSTZI3G.js +9 -0
- package/dist/bin/chunks/{chunk-SGA7Y45Z.js → chunk-A65XLABI.js} +5 -5
- package/dist/bin/chunks/{chunk-YLE2OYY6.js → chunk-A6CAHGYF.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-XKPFI566.js → chunks/chunk-AM6HJVBI.js} +17 -17
- package/dist/bin/chunks/chunk-AQBEVPZP.js +6 -0
- package/dist/bin/chunks/chunk-AX3QU3MP.js +6 -0
- package/dist/bin/chunks/chunk-B4CUXR3Q.js +33 -0
- package/dist/bin/chunks/{chunk-NLBRLRWD.js → chunk-B5DAHNDY.js} +1 -1
- package/dist/bin/chunks/chunk-BEWZWAXH.js +8 -0
- package/dist/bin/{shell/chunks/chunk-SE4C7FJY.js → chunks/chunk-C6FRS5UB.js} +13 -13
- package/dist/bin/chunks/chunk-CUYKY2BK.js +5 -0
- package/dist/bin/chunks/chunk-D3JRD3JF.js +36 -0
- package/dist/bin/chunks/chunk-D6DORGK7.js +16 -0
- package/dist/bin/chunks/{chunk-SXB55JOI.js → chunk-DH7TPGPX.js} +1 -1
- package/dist/bin/chunks/chunk-FU7JHPYW.js +9 -0
- package/dist/bin/chunks/chunk-G36D7WFF.js +6 -0
- package/dist/bin/chunks/chunk-GQQLQPZG.js +7 -0
- package/dist/bin/chunks/chunk-HIVPP3AM.js +17 -0
- package/dist/bin/{shell/chunks/chunk-NAX7MTAR.js → chunks/chunk-I3X57RP5.js} +6 -6
- package/dist/bin/chunks/chunk-IZ3AT2KX.js +19 -0
- package/dist/bin/chunks/chunk-KHOBXZFG.js +12 -0
- package/dist/bin/chunks/chunk-KMFPV7SR.js +6 -0
- package/dist/bin/chunks/chunk-KX2PR2HV.js +16 -0
- package/dist/bin/chunks/{chunk-54G6AE72.js → chunk-LCJRVV55.js} +1 -1
- package/dist/bin/chunks/chunk-M33SULGQ.js +9 -0
- package/dist/bin/chunks/{chunk-3Y32LPNT.js → chunk-M3T6XOXC.js} +1 -1
- package/dist/bin/chunks/chunk-MWKPB24E.js +11 -0
- package/dist/bin/chunks/chunk-NN2DBOAZ.js +5 -0
- package/dist/bin/chunks/{chunk-RMQC3GS7.js → chunk-NOGXKS2G.js} +23 -23
- package/dist/bin/chunks/chunk-NTW6IA45.js +2 -0
- package/dist/bin/{shell/chunks/chunk-7BORMNPQ.js → chunks/chunk-NWG67HAQ.js} +1 -1
- package/dist/bin/chunks/{chunk-A3HQTYHR.js → chunk-P43NQKUN.js} +1 -1
- package/dist/bin/chunks/chunk-PHZPFNDZ.js +287 -0
- package/dist/bin/chunks/chunk-RX22J4AC.js +14 -0
- package/dist/bin/chunks/chunk-S7KZBLGH.js +3 -0
- package/dist/bin/{shell/chunks/chunk-ZO5PSLKR.js → chunks/chunk-SDOJRQF5.js} +1 -1
- package/dist/bin/chunks/chunk-UFJFAFSS.js +28 -0
- package/dist/bin/chunks/chunk-UMYJNWPA.js +140 -0
- package/dist/bin/chunks/chunk-UO7ZJYDM.js +11 -0
- package/dist/bin/chunks/{chunk-THNL3XFF.js → chunk-VECTAALH.js} +1 -1
- package/dist/bin/chunks/chunk-VRU3NTQB.js +3 -0
- package/dist/bin/chunks/chunk-WJ3HZK2S.js +5 -0
- package/dist/bin/chunks/chunk-WLBA7L7U.js +23 -0
- package/dist/bin/{shell/chunks/chunk-SXRVLCZ4.js → chunks/chunk-WRYJHXRE.js} +1 -1
- package/dist/bin/chunks/chunk-XZEAAOBW.js +8 -0
- package/dist/bin/{shell/chunks/chunk-SDLWFYVT.js → chunks/chunk-YMQY74O7.js} +13 -13
- package/dist/bin/chunks/chunk-ZNMFCOTS.js +10 -0
- package/dist/bin/chunks/{chunk-GOJZHH3L.js → chunk-ZO3PBKJB.js} +3 -3
- package/dist/bin/chunks/column-MTXKQLJH.js +2 -0
- package/dist/bin/chunks/comm-YZHVF2XN.js +2 -0
- package/dist/bin/chunks/{curl-SRTMGOVV.js → curl-2DCNBIKJ.js} +8 -8
- package/dist/bin/chunks/cut-MWPHE25M.js +2 -0
- package/dist/bin/chunks/diff-EINZHDTZ.js +2 -0
- package/dist/bin/chunks/env-NK55NKL6.js +2 -0
- package/dist/bin/chunks/expand-47QQBMM5.js +2 -0
- package/dist/bin/{shell/chunks/expansion-2RO5M3QC.js → chunks/expansion-H3VFC532.js} +1 -1
- package/dist/bin/chunks/{expr-4CJYC4LY.js → expr-VPJ77DR7.js} +1 -1
- package/dist/bin/{shell/chunks/file-D5YKS5NV.js → chunks/file-MMSHRWCJ.js} +1 -1
- package/dist/bin/chunks/find-O2KKT6KZ.js +2 -0
- package/dist/bin/chunks/flag-coverage-FHFMNAV6.js +2 -0
- package/dist/bin/chunks/fold-QC27S46O.js +2 -0
- package/dist/bin/chunks/grep-3X5B47DW.js +2 -0
- package/dist/bin/chunks/gzip-VYBZGPTA.js +2 -0
- package/dist/bin/chunks/head-BM7J6BEI.js +2 -0
- package/dist/bin/chunks/html-to-markdown-G2FXKDLR.js +2 -0
- package/dist/bin/chunks/join-5J5VA3I7.js +2 -0
- package/dist/bin/chunks/jq-HYQ3KMGL.js +2 -0
- package/dist/bin/chunks/js-exec-LZPKIZ5V.js +97 -0
- package/dist/bin/chunks/js-exec-worker.js +27 -185
- package/dist/bin/chunks/{ls-G2PXHSNX.js → ls-WONXDVOX.js} +1 -1
- package/dist/bin/chunks/md5sum-GVZ66MRR.js +2 -0
- package/dist/bin/chunks/nl-XLPXDHHK.js +2 -0
- package/dist/bin/chunks/od-CRBL7ZML.js +2 -0
- package/dist/bin/chunks/paste-7MEIW3PG.js +2 -0
- package/dist/bin/chunks/{printf-P3QVL4IO.js → printf-NA7DYZBO.js} +1 -1
- package/dist/bin/chunks/python3-BBQ4SVHU.js +12 -0
- package/dist/bin/chunks/rev-6LTZEDBA.js +2 -0
- package/dist/bin/chunks/rg-UPQTBQZR.js +2 -0
- package/dist/bin/chunks/sed-OKEUW2KT.js +2 -0
- package/dist/bin/chunks/sha1sum-HFI2SRA4.js +2 -0
- package/dist/bin/chunks/sha256sum-N44D3OCP.js +2 -0
- package/dist/bin/chunks/sort-ES3NRFJA.js +2 -0
- package/dist/bin/chunks/split-QFBCCUR5.js +2 -0
- package/dist/bin/chunks/sqlite3-V4SEWTIR.js +2 -0
- package/dist/bin/chunks/sqlite3-worker.js +1728 -0
- package/dist/bin/chunks/strings-YGI6HF5M.js +2 -0
- package/dist/bin/chunks/tac-HWXFWOGO.js +2 -0
- package/dist/bin/chunks/tail-YX6MELZ5.js +2 -0
- package/dist/bin/chunks/tar-UO62YC6N.js +2 -0
- package/dist/bin/chunks/tee-XKJM7HV7.js +2 -0
- package/dist/bin/chunks/time-RPVNTV72.js +2 -0
- package/dist/bin/chunks/timeout-4QMASFQG.js +2 -0
- package/dist/bin/chunks/tr-A6IXSBQX.js +2 -0
- package/dist/bin/chunks/unexpand-UCJETXUX.js +2 -0
- package/dist/bin/chunks/uniq-2KXDTNDX.js +2 -0
- package/dist/bin/chunks/wc-KTXPMRYY.js +2 -0
- package/dist/bin/chunks/worker.js +28 -9
- package/dist/bin/chunks/xan-IHA7IHBM.js +2 -0
- package/dist/bin/chunks/xan-view-JFFJAU35.js +2 -0
- package/dist/bin/chunks/xargs-EWL5DXR3.js +2 -0
- package/dist/bin/chunks/yq-LDGFI4EM.js +2 -0
- package/dist/bin/just-bash.js +292 -292
- package/dist/bin/shell/chunks/awk2-CKPJ75GN.js +2 -0
- package/dist/bin/shell/chunks/base64-I3CXGD2Q.js +2 -0
- package/dist/bin/shell/chunks/bash-UYSJL7VA.js +2 -0
- package/dist/bin/shell/chunks/cat-3TMJDECR.js +2 -0
- package/dist/bin/shell/chunks/chunk-24DJ4XAS.js +18 -0
- package/dist/bin/shell/chunks/{chunk-DOXYBGNA.js → chunk-2ACK45YF.js} +4 -4
- package/dist/bin/shell/chunks/chunk-2GZSSMV3.js +14 -0
- package/dist/bin/shell/chunks/{chunk-WXMBDX4P.js → chunk-2TMMAY52.js} +7 -7
- package/dist/bin/shell/chunks/chunk-575DV2PL.js +9 -0
- package/dist/bin/shell/chunks/chunk-5DFR7VRU.js +13 -0
- package/dist/bin/shell/chunks/chunk-63XSH3IT.js +2 -0
- package/dist/bin/{chunks/chunk-N43DJTSI.js → shell/chunks/chunk-6CW6ATOU.js} +1 -1
- package/dist/bin/shell/chunks/chunk-6NYAJMTL.js +14 -0
- package/dist/bin/shell/chunks/chunk-6ZKYK7PO.js +63 -0
- package/dist/bin/shell/chunks/chunk-7FOU5QKD.js +11 -0
- package/dist/bin/shell/chunks/chunk-7RSTZI3G.js +9 -0
- package/dist/bin/shell/chunks/{chunk-SGA7Y45Z.js → chunk-A65XLABI.js} +5 -5
- package/dist/bin/shell/chunks/{chunk-YLE2OYY6.js → chunk-A6CAHGYF.js} +1 -1
- package/dist/bin/{chunks/chunk-XKPFI566.js → shell/chunks/chunk-AM6HJVBI.js} +17 -17
- package/dist/bin/shell/chunks/chunk-AQBEVPZP.js +6 -0
- package/dist/bin/shell/chunks/chunk-AX3QU3MP.js +6 -0
- package/dist/bin/shell/chunks/chunk-B4CUXR3Q.js +33 -0
- package/dist/bin/shell/chunks/{chunk-NLBRLRWD.js → chunk-B5DAHNDY.js} +1 -1
- package/dist/bin/shell/chunks/chunk-BEWZWAXH.js +8 -0
- package/dist/bin/{chunks/chunk-SE4C7FJY.js → shell/chunks/chunk-C6FRS5UB.js} +13 -13
- package/dist/bin/shell/chunks/chunk-CUYKY2BK.js +5 -0
- package/dist/bin/shell/chunks/chunk-D3JRD3JF.js +36 -0
- package/dist/bin/shell/chunks/chunk-D6DORGK7.js +16 -0
- package/dist/bin/shell/chunks/{chunk-SXB55JOI.js → chunk-DH7TPGPX.js} +1 -1
- package/dist/bin/shell/chunks/chunk-FU7JHPYW.js +9 -0
- package/dist/bin/shell/chunks/chunk-G36D7WFF.js +6 -0
- package/dist/bin/shell/chunks/chunk-GQQLQPZG.js +7 -0
- package/dist/bin/shell/chunks/chunk-HIVPP3AM.js +17 -0
- package/dist/bin/{chunks/chunk-NAX7MTAR.js → shell/chunks/chunk-I3X57RP5.js} +6 -6
- package/dist/bin/shell/chunks/chunk-IZ3AT2KX.js +19 -0
- package/dist/bin/shell/chunks/chunk-KHOBXZFG.js +12 -0
- package/dist/bin/shell/chunks/chunk-KMFPV7SR.js +6 -0
- package/dist/bin/shell/chunks/chunk-KX2PR2HV.js +16 -0
- package/dist/bin/shell/chunks/{chunk-54G6AE72.js → chunk-LCJRVV55.js} +1 -1
- package/dist/bin/shell/chunks/chunk-M33SULGQ.js +9 -0
- package/dist/bin/shell/chunks/{chunk-3Y32LPNT.js → chunk-M3T6XOXC.js} +1 -1
- package/dist/bin/shell/chunks/chunk-MWKPB24E.js +11 -0
- package/dist/bin/shell/chunks/chunk-NN2DBOAZ.js +5 -0
- package/dist/bin/shell/chunks/{chunk-RMQC3GS7.js → chunk-NOGXKS2G.js} +23 -23
- package/dist/bin/shell/chunks/chunk-NTW6IA45.js +2 -0
- package/dist/bin/{chunks/chunk-7BORMNPQ.js → shell/chunks/chunk-NWG67HAQ.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-A3HQTYHR.js → chunk-P43NQKUN.js} +1 -1
- package/dist/bin/shell/chunks/chunk-PHZPFNDZ.js +287 -0
- package/dist/bin/shell/chunks/chunk-RX22J4AC.js +14 -0
- package/dist/bin/shell/chunks/chunk-S7KZBLGH.js +3 -0
- package/dist/bin/{chunks/chunk-ZO5PSLKR.js → shell/chunks/chunk-SDOJRQF5.js} +1 -1
- package/dist/bin/shell/chunks/chunk-UFJFAFSS.js +28 -0
- package/dist/bin/shell/chunks/chunk-UMYJNWPA.js +140 -0
- package/dist/bin/shell/chunks/chunk-UO7ZJYDM.js +11 -0
- package/dist/bin/shell/chunks/{chunk-THNL3XFF.js → chunk-VECTAALH.js} +1 -1
- package/dist/bin/shell/chunks/chunk-VRU3NTQB.js +3 -0
- package/dist/bin/shell/chunks/chunk-WJ3HZK2S.js +5 -0
- package/dist/bin/shell/chunks/chunk-WLBA7L7U.js +23 -0
- package/dist/bin/{chunks/chunk-SXRVLCZ4.js → shell/chunks/chunk-WRYJHXRE.js} +1 -1
- package/dist/bin/shell/chunks/chunk-XZEAAOBW.js +8 -0
- package/dist/bin/{chunks/chunk-SDLWFYVT.js → shell/chunks/chunk-YMQY74O7.js} +13 -13
- package/dist/bin/shell/chunks/chunk-ZNMFCOTS.js +10 -0
- package/dist/bin/shell/chunks/{chunk-GOJZHH3L.js → chunk-ZO3PBKJB.js} +3 -3
- package/dist/bin/shell/chunks/column-MTXKQLJH.js +2 -0
- package/dist/bin/shell/chunks/comm-YZHVF2XN.js +2 -0
- package/dist/bin/shell/chunks/{curl-SRTMGOVV.js → curl-2DCNBIKJ.js} +8 -8
- package/dist/bin/shell/chunks/cut-MWPHE25M.js +2 -0
- package/dist/bin/shell/chunks/diff-EINZHDTZ.js +2 -0
- package/dist/bin/shell/chunks/env-NK55NKL6.js +2 -0
- package/dist/bin/shell/chunks/expand-47QQBMM5.js +2 -0
- package/dist/bin/{chunks/expansion-2RO5M3QC.js → shell/chunks/expansion-H3VFC532.js} +1 -1
- package/dist/bin/shell/chunks/{expr-4CJYC4LY.js → expr-VPJ77DR7.js} +1 -1
- package/dist/bin/{chunks/file-D5YKS5NV.js → shell/chunks/file-MMSHRWCJ.js} +1 -1
- package/dist/bin/shell/chunks/find-O2KKT6KZ.js +2 -0
- package/dist/bin/shell/chunks/flag-coverage-FHFMNAV6.js +2 -0
- package/dist/bin/shell/chunks/fold-QC27S46O.js +2 -0
- package/dist/bin/shell/chunks/grep-3X5B47DW.js +2 -0
- package/dist/bin/shell/chunks/gzip-VYBZGPTA.js +2 -0
- package/dist/bin/shell/chunks/head-BM7J6BEI.js +2 -0
- package/dist/bin/shell/chunks/html-to-markdown-G2FXKDLR.js +2 -0
- package/dist/bin/shell/chunks/join-5J5VA3I7.js +2 -0
- package/dist/bin/shell/chunks/jq-HYQ3KMGL.js +2 -0
- package/dist/bin/shell/chunks/js-exec-LZPKIZ5V.js +97 -0
- package/dist/bin/shell/chunks/{ls-G2PXHSNX.js → ls-WONXDVOX.js} +1 -1
- package/dist/bin/shell/chunks/md5sum-GVZ66MRR.js +2 -0
- package/dist/bin/shell/chunks/nl-XLPXDHHK.js +2 -0
- package/dist/bin/shell/chunks/od-CRBL7ZML.js +2 -0
- package/dist/bin/shell/chunks/paste-7MEIW3PG.js +2 -0
- package/dist/bin/shell/chunks/{printf-P3QVL4IO.js → printf-NA7DYZBO.js} +1 -1
- package/dist/bin/shell/chunks/python3-BBQ4SVHU.js +12 -0
- package/dist/bin/shell/chunks/rev-6LTZEDBA.js +2 -0
- package/dist/bin/shell/chunks/rg-UPQTBQZR.js +2 -0
- package/dist/bin/shell/chunks/sed-OKEUW2KT.js +2 -0
- package/dist/bin/shell/chunks/sha1sum-HFI2SRA4.js +2 -0
- package/dist/bin/shell/chunks/sha256sum-N44D3OCP.js +2 -0
- package/dist/bin/shell/chunks/sort-ES3NRFJA.js +2 -0
- package/dist/bin/shell/chunks/split-QFBCCUR5.js +2 -0
- package/dist/bin/shell/chunks/sqlite3-V4SEWTIR.js +2 -0
- package/dist/bin/shell/chunks/strings-YGI6HF5M.js +2 -0
- package/dist/bin/shell/chunks/tac-HWXFWOGO.js +2 -0
- package/dist/bin/shell/chunks/tail-YX6MELZ5.js +2 -0
- package/dist/bin/shell/chunks/tar-UO62YC6N.js +2 -0
- package/dist/bin/shell/chunks/tee-XKJM7HV7.js +2 -0
- package/dist/bin/shell/chunks/time-RPVNTV72.js +2 -0
- package/dist/bin/shell/chunks/timeout-4QMASFQG.js +2 -0
- package/dist/bin/shell/chunks/tr-A6IXSBQX.js +2 -0
- package/dist/bin/shell/chunks/unexpand-UCJETXUX.js +2 -0
- package/dist/bin/shell/chunks/uniq-2KXDTNDX.js +2 -0
- package/dist/bin/shell/chunks/wc-KTXPMRYY.js +2 -0
- package/dist/bin/shell/chunks/xan-IHA7IHBM.js +2 -0
- package/dist/bin/shell/chunks/xan-view-JFFJAU35.js +2 -0
- package/dist/bin/shell/chunks/xargs-EWL5DXR3.js +2 -0
- package/dist/bin/shell/chunks/yq-LDGFI4EM.js +2 -0
- package/dist/bin/shell/shell.js +274 -274
- package/dist/browser.d.ts +1 -0
- package/dist/bundle/browser.js +676 -674
- package/dist/bundle/chunks/awk2-RXRC54TM.js +1 -0
- package/dist/bundle/chunks/base64-FJOOBRMC.js +1 -0
- package/dist/bundle/chunks/bash-4WLDO24C.js +1 -0
- package/dist/bundle/chunks/cat-VQEWZT5O.js +1 -0
- package/dist/bundle/chunks/chunk-2TRDZQLB.js +17 -0
- package/dist/bundle/chunks/chunk-5DI2YNX7.js +10 -0
- package/dist/bundle/chunks/chunk-6N5CMDSQ.js +9 -0
- package/dist/bundle/chunks/{chunk-F23WWYKW.js → chunk-7P5JCWX5.js} +5 -5
- package/dist/bundle/chunks/chunk-7RIQPKJE.js +2 -0
- package/dist/bundle/chunks/{chunk-APT7OOP2.js → chunk-7ZUB672J.js} +1 -1
- package/dist/bundle/chunks/chunk-AH77CRWX.js +1 -0
- package/dist/bundle/chunks/{chunk-YNYSPYQ5.js → chunk-B74TABJS.js} +13 -13
- package/dist/bundle/chunks/{chunk-QJ7O6ZN3.js → chunk-BAXBSHE5.js} +3 -3
- package/dist/bundle/chunks/{chunk-FEIOJCZD.js → chunk-BGSUD5R5.js} +1 -1
- package/dist/bundle/chunks/chunk-CHRGJY5U.js +10 -0
- package/dist/bundle/chunks/chunk-CYJSRRNG.js +4 -0
- package/dist/bundle/chunks/chunk-CZYXTGMR.js +139 -0
- package/dist/bundle/chunks/{chunk-OL3S66CO.js → chunk-DFS4EHCX.js} +23 -23
- package/dist/bundle/chunks/chunk-DIB23V32.js +8 -0
- package/dist/bundle/chunks/chunk-DMJSDIQO.js +6 -0
- package/dist/bundle/chunks/chunk-DRGAV7ST.js +11 -0
- package/dist/bundle/chunks/chunk-DZCB42NK.js +2 -0
- package/dist/bundle/chunks/{chunk-DCAAORBQ.js → chunk-EIUAYBIC.js} +1 -1
- package/dist/bundle/chunks/chunk-G22IYMH5.js +16 -0
- package/dist/bundle/chunks/chunk-GFPLGF6W.js +5 -0
- package/dist/bundle/chunks/chunk-HCKS7PTH.js +10 -0
- package/dist/bundle/chunks/{chunk-5V6VZH6T.js → chunk-HKY7IG73.js} +1 -1
- package/dist/bundle/chunks/chunk-HL6NGDO2.js +22 -0
- package/dist/bundle/chunks/chunk-IIJDG7QW.js +13 -0
- package/dist/bundle/chunks/{chunk-Z6LRHWXI.js → chunk-JKZMQVSS.js} +7 -7
- package/dist/bundle/chunks/chunk-JMNW4NXI.js +8 -0
- package/dist/bundle/chunks/{chunk-LPQPILI2.js → chunk-K6LIBGJA.js} +1 -1
- package/dist/bundle/chunks/chunk-KBZ5NVXE.js +5 -0
- package/dist/bundle/chunks/chunk-KK2SFKTN.js +13 -0
- package/dist/bundle/chunks/{chunk-BBXLRYSX.js → chunk-KRBPSX3W.js} +1 -1
- package/dist/bundle/chunks/{chunk-LTZRCH7N.js → chunk-LBUR6QMO.js} +1 -1
- package/dist/bundle/chunks/chunk-MBDW4C5R.js +8 -0
- package/dist/bundle/chunks/chunk-MIV7TH6W.js +32 -0
- package/dist/bundle/chunks/chunk-MOLNCDQJ.js +5 -0
- package/dist/bundle/chunks/chunk-NUY2ZGZL.js +286 -0
- package/dist/bundle/chunks/chunk-OYFKMNOH.js +4 -0
- package/dist/bundle/chunks/{chunk-62RKD26F.js → chunk-Q7DN34BC.js} +6 -6
- package/dist/bundle/chunks/chunk-R6VWJ2ZL.js +1 -0
- package/dist/bundle/chunks/chunk-RGAX6VXO.js +6 -0
- package/dist/bundle/chunks/chunk-RHD3NWJY.js +15 -0
- package/dist/bundle/chunks/chunk-S7CS4O3M.js +5 -0
- package/dist/bundle/chunks/chunk-SFQDTSOG.js +8 -0
- package/dist/bundle/chunks/{chunk-J642UCRS.js → chunk-SNN4IESC.js} +1 -1
- package/dist/bundle/chunks/{chunk-64BAICW3.js → chunk-T6RP4YO5.js} +1 -1
- package/dist/bundle/chunks/chunk-TWHVX65V.js +4 -0
- package/dist/bundle/chunks/chunk-U2ATS66X.js +4 -0
- package/dist/bundle/chunks/chunk-UGMTY5A7.js +15 -0
- package/dist/bundle/chunks/chunk-UKBVVIW7.js +62 -0
- package/dist/bundle/chunks/chunk-USP7VSKV.js +12 -0
- package/dist/bundle/chunks/{chunk-OARHFVLG.js → chunk-UTKQPLMD.js} +13 -13
- package/dist/bundle/chunks/{chunk-YFG2CMIF.js → chunk-V5MWI2OL.js} +1 -1
- package/dist/bundle/chunks/{chunk-XKQRETAK.js → chunk-WEZK5ELQ.js} +1 -1
- package/dist/bundle/chunks/{chunk-YTNYSM6T.js → chunk-WURK7XMI.js} +4 -4
- package/dist/bundle/chunks/chunk-WZG5CB4V.js +7 -0
- package/dist/bundle/chunks/chunk-XUZRLD2X.js +35 -0
- package/dist/bundle/chunks/chunk-YDILEREV.js +7 -0
- package/dist/bundle/chunks/chunk-YXVMSFJA.js +13 -0
- package/dist/bundle/chunks/column-DCCLCHUR.js +1 -0
- package/dist/bundle/chunks/comm-AXP77KC4.js +1 -0
- package/dist/bundle/chunks/{curl-COE4TZE6.js → curl-47BFPSFW.js} +8 -8
- package/dist/bundle/chunks/cut-RBX7IXC7.js +1 -0
- package/dist/bundle/chunks/diff-AYXX5MI5.js +1 -0
- package/dist/bundle/chunks/env-GBSZDQLS.js +1 -0
- package/dist/bundle/chunks/expand-UMGRCDTC.js +1 -0
- package/dist/bundle/chunks/{expansion-ENLSRCXJ.js → expansion-VBDYWVZR.js} +1 -1
- package/dist/bundle/chunks/{expr-5T3UU5KE.js → expr-YYCVMXE3.js} +1 -1
- package/dist/bundle/chunks/{file-ZIGAJ4YS.js → file-IGDTDPLG.js} +1 -1
- package/dist/bundle/chunks/find-DH2ALKQS.js +1 -0
- package/dist/bundle/chunks/flag-coverage-WZWBNOJT.js +1 -0
- package/dist/bundle/chunks/fold-V23GDLZD.js +1 -0
- package/dist/bundle/chunks/grep-7CE2SS3X.js +1 -0
- package/dist/bundle/chunks/gzip-EVI6YRMT.js +1 -0
- package/dist/bundle/chunks/head-FG33BE3W.js +1 -0
- package/dist/bundle/chunks/html-to-markdown-AQHC3PHD.js +1 -0
- package/dist/bundle/chunks/join-TLHD7S7W.js +1 -0
- package/dist/bundle/chunks/jq-OKCSVTHN.js +1 -0
- package/dist/bundle/chunks/js-exec-2U7NEXAP.js +96 -0
- package/dist/bundle/chunks/js-exec-worker.js +27 -185
- package/dist/bundle/chunks/md5sum-XMCB7L5Z.js +1 -0
- package/dist/bundle/chunks/nl-LBU6FPPF.js +1 -0
- package/dist/bundle/chunks/od-O6TPXWVX.js +1 -0
- package/dist/bundle/chunks/paste-HIF3YKHC.js +1 -0
- package/dist/bundle/chunks/python3-ZR6W2FR3.js +11 -0
- package/dist/bundle/chunks/rev-SKETTPXH.js +1 -0
- package/dist/bundle/chunks/rg-GMXITNCP.js +1 -0
- package/dist/bundle/chunks/sed-YRQXQDMQ.js +1 -0
- package/dist/bundle/chunks/sha1sum-ZHNS7PS4.js +1 -0
- package/dist/bundle/chunks/sha256sum-YWE2HB65.js +1 -0
- package/dist/bundle/chunks/sort-5KALNK6P.js +1 -0
- package/dist/bundle/chunks/split-4CXZNBGE.js +1 -0
- package/dist/bundle/chunks/sqlite3-FXN2MHWU.js +1 -0
- package/dist/bundle/chunks/sqlite3-worker.js +1728 -0
- package/dist/bundle/chunks/strings-7VYWRFIZ.js +1 -0
- package/dist/bundle/chunks/tac-74F3WHUM.js +1 -0
- package/dist/bundle/chunks/tail-EDLAF4WW.js +1 -0
- package/dist/bundle/chunks/tar-RKYTUGDT.js +1 -0
- package/dist/bundle/chunks/tee-DUMXETDQ.js +1 -0
- package/dist/bundle/chunks/time-U22WPHDM.js +1 -0
- package/dist/bundle/chunks/timeout-PWE4AOYD.js +1 -0
- package/dist/bundle/chunks/tr-2QSZN4JB.js +1 -0
- package/dist/bundle/chunks/unexpand-ZTD2RXS2.js +1 -0
- package/dist/bundle/chunks/uniq-DCP6SV3B.js +1 -0
- package/dist/bundle/chunks/wc-J6YO4AFR.js +1 -0
- package/dist/bundle/chunks/worker.js +28 -9
- package/dist/bundle/chunks/xan-74G4ZYYZ.js +1 -0
- package/dist/bundle/chunks/xan-view-FLG5O7II.js +1 -0
- package/dist/bundle/chunks/xargs-LB2QOP6N.js +1 -0
- package/dist/bundle/chunks/yq-4NJ2P5VT.js +1 -0
- package/dist/bundle/index.cjs +983 -981
- package/dist/bundle/index.js +271 -271
- package/dist/commands/js-exec/{worker.d.ts → js-exec-worker.d.ts} +4 -10
- package/dist/commands/js-exec/js-exec.d.ts +1 -19
- package/dist/commands/search-engine/matcher.d.ts +6 -0
- package/dist/commands/search-engine/regex.d.ts +13 -0
- package/dist/commands/sqlite3/sqlite3.d.ts +1 -0
- package/dist/commands/sqlite3/worker.js +1728 -0
- package/dist/commands/tar/bzip2-compress.d.ts +17 -0
- package/dist/commands/worker-bridge/sync-backend.d.ts +2 -1
- package/dist/encoding.d.ts +115 -0
- package/dist/fs/in-memory-fs/in-memory-fs.d.ts +2 -0
- package/dist/fs/interface.d.ts +23 -1
- package/dist/fs/mountable-fs/mountable-fs.d.ts +2 -0
- package/dist/fs/overlay-fs/overlay-fs.d.ts +2 -0
- package/dist/fs/read-write-fs/read-write-fs.d.ts +2 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/interpreter/interpreter.d.ts +2 -2
- package/dist/interpreter/types.d.ts +3 -3
- package/dist/network/dns-pin.d.ts +43 -0
- package/dist/network/types.d.ts +2 -1
- package/dist/types.d.ts +48 -10
- package/dist/utils/file-reader.d.ts +12 -5
- package/package.json +36 -40
- package/vendor/cpython-emscripten/python.wasm +0 -0
- package/dist/bin/chunks/awk2-VTJMI54B.js +0 -2
- package/dist/bin/chunks/base64-43M2R3GA.js +0 -2
- package/dist/bin/chunks/bash-6ZHZ6BX7.js +0 -2
- package/dist/bin/chunks/cat-XZIJZXKP.js +0 -2
- package/dist/bin/chunks/chunk-26NO42TF.js +0 -14
- package/dist/bin/chunks/chunk-5G2VOPPJ.js +0 -7
- package/dist/bin/chunks/chunk-5WFYIUU2.js +0 -3
- package/dist/bin/chunks/chunk-AAW7UMPO.js +0 -9
- package/dist/bin/chunks/chunk-B3RU2PUI.js +0 -140
- package/dist/bin/chunks/chunk-CGE2EHYP.js +0 -5
- package/dist/bin/chunks/chunk-CM4532DS.js +0 -36
- package/dist/bin/chunks/chunk-CQG2HEAL.js +0 -5
- package/dist/bin/chunks/chunk-EUXCM6C4.js +0 -12
- package/dist/bin/chunks/chunk-F3LGZXLQ.js +0 -9
- package/dist/bin/chunks/chunk-FA2CHD73.js +0 -16
- package/dist/bin/chunks/chunk-FLPVVSN5.js +0 -5
- package/dist/bin/chunks/chunk-FSZWFMB4.js +0 -16
- package/dist/bin/chunks/chunk-G43H2WGH.js +0 -17
- package/dist/bin/chunks/chunk-GO6FXSC4.js +0 -6
- package/dist/bin/chunks/chunk-GZHFXDDO.js +0 -10
- package/dist/bin/chunks/chunk-HJEHIH4P.js +0 -33
- package/dist/bin/chunks/chunk-JQBC3FXE.js +0 -8
- package/dist/bin/chunks/chunk-L2JBII6Z.js +0 -287
- package/dist/bin/chunks/chunk-LGJM5YFT.js +0 -17
- package/dist/bin/chunks/chunk-LMK6G2HH.js +0 -8
- package/dist/bin/chunks/chunk-MNMRGJJM.js +0 -11
- package/dist/bin/chunks/chunk-MRP4ZCD7.js +0 -6
- package/dist/bin/chunks/chunk-MXVNCVD6.js +0 -30
- package/dist/bin/chunks/chunk-MY5PY2PL.js +0 -2
- package/dist/bin/chunks/chunk-N5OTVT4F.js +0 -23
- package/dist/bin/chunks/chunk-OBI37ZY4.js +0 -9
- package/dist/bin/chunks/chunk-P6GNZPVW.js +0 -19
- package/dist/bin/chunks/chunk-RJSAGJQJ.js +0 -11
- package/dist/bin/chunks/chunk-ROJPSS6N.js +0 -3
- package/dist/bin/chunks/chunk-S7OHMN3F.js +0 -6
- package/dist/bin/chunks/chunk-VHUYNUT7.js +0 -13
- package/dist/bin/chunks/chunk-WS6P4H4S.js +0 -63
- package/dist/bin/chunks/chunk-WWZVR5NN.js +0 -6
- package/dist/bin/chunks/chunk-YEKSVVRC.js +0 -11
- package/dist/bin/chunks/chunk-YFPDB4PH.js +0 -9
- package/dist/bin/chunks/chunk-ZA4HUKJ3.js +0 -13
- package/dist/bin/chunks/chunk-ZKC5HQYO.js +0 -14
- package/dist/bin/chunks/column-XGV32UPN.js +0 -2
- package/dist/bin/chunks/comm-R3F3Z5DX.js +0 -2
- package/dist/bin/chunks/cut-5EY2XPXX.js +0 -2
- package/dist/bin/chunks/diff-LE7GMFZD.js +0 -2
- package/dist/bin/chunks/env-NTPN5QYM.js +0 -2
- package/dist/bin/chunks/expand-26XPP5KB.js +0 -2
- package/dist/bin/chunks/find-GAYRV4IF.js +0 -2
- package/dist/bin/chunks/flag-coverage-LBMWMYOO.js +0 -2
- package/dist/bin/chunks/fold-XSVNTAWH.js +0 -2
- package/dist/bin/chunks/grep-OZJTRD4D.js +0 -2
- package/dist/bin/chunks/gzip-LHOO65AN.js +0 -2
- package/dist/bin/chunks/head-YMNRW3F3.js +0 -2
- package/dist/bin/chunks/html-to-markdown-WVZA3MCP.js +0 -2
- package/dist/bin/chunks/join-Y4Q5WVVE.js +0 -2
- package/dist/bin/chunks/jq-FIV5Q5T4.js +0 -2
- package/dist/bin/chunks/js-exec-6UJKEL4G.js +0 -97
- package/dist/bin/chunks/md5sum-NCLXV2S3.js +0 -2
- package/dist/bin/chunks/nl-XH3L75DR.js +0 -2
- package/dist/bin/chunks/od-52FBC34W.js +0 -2
- package/dist/bin/chunks/paste-3UVLMQ2K.js +0 -2
- package/dist/bin/chunks/python3-QOJU2POC.js +0 -12
- package/dist/bin/chunks/rev-UHEPS2UL.js +0 -2
- package/dist/bin/chunks/rg-C6KMBFNG.js +0 -2
- package/dist/bin/chunks/sed-HALRQZKY.js +0 -2
- package/dist/bin/chunks/sha1sum-BHNJ5ALF.js +0 -2
- package/dist/bin/chunks/sha256sum-HJJ3NJ5L.js +0 -2
- package/dist/bin/chunks/sort-7GENYU2I.js +0 -2
- package/dist/bin/chunks/split-YWV64TJH.js +0 -2
- package/dist/bin/chunks/sqlite3-CVNFMP3Z.js +0 -2
- package/dist/bin/chunks/strings-XXKZCWY5.js +0 -2
- package/dist/bin/chunks/tac-T42SKDDI.js +0 -2
- package/dist/bin/chunks/tail-V537TDFR.js +0 -2
- package/dist/bin/chunks/tar-TOWX2TDU.js +0 -2
- package/dist/bin/chunks/tee-HK2SYCAR.js +0 -2
- package/dist/bin/chunks/time-5R4QWCYF.js +0 -2
- package/dist/bin/chunks/timeout-Z24MNWOP.js +0 -2
- package/dist/bin/chunks/tr-4FPGAEVB.js +0 -2
- package/dist/bin/chunks/unexpand-OYZ7KOYR.js +0 -2
- package/dist/bin/chunks/uniq-TMSAIZM3.js +0 -2
- package/dist/bin/chunks/wc-ZIV3TFVG.js +0 -2
- package/dist/bin/chunks/xan-MOZFJGMY.js +0 -2
- package/dist/bin/chunks/xan-view-5SZBYPLG.js +0 -2
- package/dist/bin/chunks/xargs-SCYIFXOW.js +0 -2
- package/dist/bin/chunks/yq-Q47JUWL6.js +0 -2
- package/dist/bin/shell/chunks/awk2-VTJMI54B.js +0 -2
- package/dist/bin/shell/chunks/base64-43M2R3GA.js +0 -2
- package/dist/bin/shell/chunks/bash-6ZHZ6BX7.js +0 -2
- package/dist/bin/shell/chunks/cat-XZIJZXKP.js +0 -2
- package/dist/bin/shell/chunks/chunk-26NO42TF.js +0 -14
- package/dist/bin/shell/chunks/chunk-5G2VOPPJ.js +0 -7
- package/dist/bin/shell/chunks/chunk-5WFYIUU2.js +0 -3
- package/dist/bin/shell/chunks/chunk-AAW7UMPO.js +0 -9
- package/dist/bin/shell/chunks/chunk-B3RU2PUI.js +0 -140
- package/dist/bin/shell/chunks/chunk-CGE2EHYP.js +0 -5
- package/dist/bin/shell/chunks/chunk-CM4532DS.js +0 -36
- package/dist/bin/shell/chunks/chunk-CQG2HEAL.js +0 -5
- package/dist/bin/shell/chunks/chunk-D64U2VGQ.js +0 -2
- package/dist/bin/shell/chunks/chunk-EUXCM6C4.js +0 -12
- package/dist/bin/shell/chunks/chunk-F3LGZXLQ.js +0 -9
- package/dist/bin/shell/chunks/chunk-FA2CHD73.js +0 -16
- package/dist/bin/shell/chunks/chunk-FLPVVSN5.js +0 -5
- package/dist/bin/shell/chunks/chunk-FSZWFMB4.js +0 -16
- package/dist/bin/shell/chunks/chunk-G43H2WGH.js +0 -17
- package/dist/bin/shell/chunks/chunk-GO6FXSC4.js +0 -6
- package/dist/bin/shell/chunks/chunk-GZHFXDDO.js +0 -10
- package/dist/bin/shell/chunks/chunk-HJEHIH4P.js +0 -33
- package/dist/bin/shell/chunks/chunk-JQBC3FXE.js +0 -8
- package/dist/bin/shell/chunks/chunk-L2JBII6Z.js +0 -287
- package/dist/bin/shell/chunks/chunk-LGJM5YFT.js +0 -17
- package/dist/bin/shell/chunks/chunk-LMK6G2HH.js +0 -8
- package/dist/bin/shell/chunks/chunk-MNMRGJJM.js +0 -11
- package/dist/bin/shell/chunks/chunk-MRP4ZCD7.js +0 -6
- package/dist/bin/shell/chunks/chunk-MXVNCVD6.js +0 -30
- package/dist/bin/shell/chunks/chunk-N5OTVT4F.js +0 -23
- package/dist/bin/shell/chunks/chunk-OBI37ZY4.js +0 -9
- package/dist/bin/shell/chunks/chunk-P6GNZPVW.js +0 -19
- package/dist/bin/shell/chunks/chunk-RJSAGJQJ.js +0 -11
- package/dist/bin/shell/chunks/chunk-ROJPSS6N.js +0 -3
- package/dist/bin/shell/chunks/chunk-S7OHMN3F.js +0 -6
- package/dist/bin/shell/chunks/chunk-VHUYNUT7.js +0 -13
- package/dist/bin/shell/chunks/chunk-WS6P4H4S.js +0 -63
- package/dist/bin/shell/chunks/chunk-WWZVR5NN.js +0 -6
- package/dist/bin/shell/chunks/chunk-YEKSVVRC.js +0 -11
- package/dist/bin/shell/chunks/chunk-YFPDB4PH.js +0 -9
- package/dist/bin/shell/chunks/chunk-ZA4HUKJ3.js +0 -13
- package/dist/bin/shell/chunks/chunk-ZKC5HQYO.js +0 -14
- package/dist/bin/shell/chunks/column-XGV32UPN.js +0 -2
- package/dist/bin/shell/chunks/comm-R3F3Z5DX.js +0 -2
- package/dist/bin/shell/chunks/cut-5EY2XPXX.js +0 -2
- package/dist/bin/shell/chunks/diff-LE7GMFZD.js +0 -2
- package/dist/bin/shell/chunks/env-NTPN5QYM.js +0 -2
- package/dist/bin/shell/chunks/expand-26XPP5KB.js +0 -2
- package/dist/bin/shell/chunks/find-GAYRV4IF.js +0 -2
- package/dist/bin/shell/chunks/flag-coverage-LBMWMYOO.js +0 -2
- package/dist/bin/shell/chunks/fold-XSVNTAWH.js +0 -2
- package/dist/bin/shell/chunks/grep-OZJTRD4D.js +0 -2
- package/dist/bin/shell/chunks/gzip-LHOO65AN.js +0 -2
- package/dist/bin/shell/chunks/head-YMNRW3F3.js +0 -2
- package/dist/bin/shell/chunks/html-to-markdown-WVZA3MCP.js +0 -2
- package/dist/bin/shell/chunks/join-Y4Q5WVVE.js +0 -2
- package/dist/bin/shell/chunks/jq-FIV5Q5T4.js +0 -2
- package/dist/bin/shell/chunks/js-exec-H26D5H6V.js +0 -97
- package/dist/bin/shell/chunks/md5sum-NCLXV2S3.js +0 -2
- package/dist/bin/shell/chunks/nl-XH3L75DR.js +0 -2
- package/dist/bin/shell/chunks/od-52FBC34W.js +0 -2
- package/dist/bin/shell/chunks/paste-3UVLMQ2K.js +0 -2
- package/dist/bin/shell/chunks/python3-O4VTP6TD.js +0 -12
- package/dist/bin/shell/chunks/rev-UHEPS2UL.js +0 -2
- package/dist/bin/shell/chunks/rg-C6KMBFNG.js +0 -2
- package/dist/bin/shell/chunks/sed-HALRQZKY.js +0 -2
- package/dist/bin/shell/chunks/sha1sum-BHNJ5ALF.js +0 -2
- package/dist/bin/shell/chunks/sha256sum-HJJ3NJ5L.js +0 -2
- package/dist/bin/shell/chunks/sort-7GENYU2I.js +0 -2
- package/dist/bin/shell/chunks/split-YWV64TJH.js +0 -2
- package/dist/bin/shell/chunks/sqlite3-CVNFMP3Z.js +0 -2
- package/dist/bin/shell/chunks/strings-XXKZCWY5.js +0 -2
- package/dist/bin/shell/chunks/tac-T42SKDDI.js +0 -2
- package/dist/bin/shell/chunks/tail-V537TDFR.js +0 -2
- package/dist/bin/shell/chunks/tar-TOWX2TDU.js +0 -2
- package/dist/bin/shell/chunks/tee-HK2SYCAR.js +0 -2
- package/dist/bin/shell/chunks/time-5R4QWCYF.js +0 -2
- package/dist/bin/shell/chunks/timeout-Z24MNWOP.js +0 -2
- package/dist/bin/shell/chunks/tr-4FPGAEVB.js +0 -2
- package/dist/bin/shell/chunks/unexpand-OYZ7KOYR.js +0 -2
- package/dist/bin/shell/chunks/uniq-TMSAIZM3.js +0 -2
- package/dist/bin/shell/chunks/wc-ZIV3TFVG.js +0 -2
- package/dist/bin/shell/chunks/xan-MOZFJGMY.js +0 -2
- package/dist/bin/shell/chunks/xan-view-5SZBYPLG.js +0 -2
- package/dist/bin/shell/chunks/xargs-SCYIFXOW.js +0 -2
- package/dist/bin/shell/chunks/yq-Q47JUWL6.js +0 -2
- package/dist/bundle/chunks/awk2-POPGKRAI.js +0 -1
- package/dist/bundle/chunks/base64-4YMZCVJ5.js +0 -1
- package/dist/bundle/chunks/bash-IJWYRKFO.js +0 -1
- package/dist/bundle/chunks/cat-RDUMLXKC.js +0 -1
- package/dist/bundle/chunks/chunk-55VFSPNA.js +0 -2
- package/dist/bundle/chunks/chunk-7L36YK2X.js +0 -2
- package/dist/bundle/chunks/chunk-A7ICOL4V.js +0 -13
- package/dist/bundle/chunks/chunk-B6O2PIY4.js +0 -10
- package/dist/bundle/chunks/chunk-CR5AFCPT.js +0 -22
- package/dist/bundle/chunks/chunk-D4J545R4.js +0 -11
- package/dist/bundle/chunks/chunk-D6CWQ5DW.js +0 -5
- package/dist/bundle/chunks/chunk-EIZGF4BS.js +0 -8
- package/dist/bundle/chunks/chunk-F55TLFGB.js +0 -9
- package/dist/bundle/chunks/chunk-GXVXFKBA.js +0 -5
- package/dist/bundle/chunks/chunk-HDQ56CKY.js +0 -15
- package/dist/bundle/chunks/chunk-HWBSOZZR.js +0 -35
- package/dist/bundle/chunks/chunk-JVPRLUMK.js +0 -7
- package/dist/bundle/chunks/chunk-KMEYNNUA.js +0 -15
- package/dist/bundle/chunks/chunk-LWEGUNWT.js +0 -7
- package/dist/bundle/chunks/chunk-MDLLFABN.js +0 -4
- package/dist/bundle/chunks/chunk-MHTUABJP.js +0 -8
- package/dist/bundle/chunks/chunk-MYE6AGBJ.js +0 -16
- package/dist/bundle/chunks/chunk-NAERJDUW.js +0 -8
- package/dist/bundle/chunks/chunk-NYQYO467.js +0 -32
- package/dist/bundle/chunks/chunk-PP6PSHAB.js +0 -4
- package/dist/bundle/chunks/chunk-PYSFUGCK.js +0 -10
- package/dist/bundle/chunks/chunk-QCDB2VPH.js +0 -6
- package/dist/bundle/chunks/chunk-SDNKECQQ.js +0 -5
- package/dist/bundle/chunks/chunk-TLSUDHID.js +0 -6
- package/dist/bundle/chunks/chunk-TOMNU26N.js +0 -4
- package/dist/bundle/chunks/chunk-TXBZCHCQ.js +0 -5
- package/dist/bundle/chunks/chunk-UNYNJIFU.js +0 -139
- package/dist/bundle/chunks/chunk-VJFXDYWH.js +0 -10
- package/dist/bundle/chunks/chunk-VLGZJRPG.js +0 -16
- package/dist/bundle/chunks/chunk-VYOJP4TV.js +0 -13
- package/dist/bundle/chunks/chunk-WKFATFPP.js +0 -4
- package/dist/bundle/chunks/chunk-XHM67O4N.js +0 -1
- package/dist/bundle/chunks/chunk-XORM457F.js +0 -286
- package/dist/bundle/chunks/chunk-YCFVLTST.js +0 -12
- package/dist/bundle/chunks/chunk-YS3AZT3J.js +0 -8
- package/dist/bundle/chunks/chunk-Z7JVV2SM.js +0 -12
- package/dist/bundle/chunks/chunk-ZXL7TQLN.js +0 -62
- package/dist/bundle/chunks/column-WLPMMSTS.js +0 -1
- package/dist/bundle/chunks/comm-5SLSESQG.js +0 -1
- package/dist/bundle/chunks/cut-OPC3VAGB.js +0 -1
- package/dist/bundle/chunks/diff-HJF2MPDN.js +0 -1
- package/dist/bundle/chunks/env-5EPCWSXR.js +0 -1
- package/dist/bundle/chunks/expand-DTNXU4LQ.js +0 -1
- package/dist/bundle/chunks/find-TPUOAIUQ.js +0 -1
- package/dist/bundle/chunks/flag-coverage-LMTH7T5F.js +0 -1
- package/dist/bundle/chunks/fold-LDSORVYE.js +0 -1
- package/dist/bundle/chunks/grep-3AIAIJVR.js +0 -1
- package/dist/bundle/chunks/gzip-AQXSGOVS.js +0 -1
- package/dist/bundle/chunks/head-HT2B6D2J.js +0 -1
- package/dist/bundle/chunks/html-to-markdown-TFCECAGV.js +0 -1
- package/dist/bundle/chunks/join-GG2LDHE5.js +0 -1
- package/dist/bundle/chunks/jq-ODXZBPLY.js +0 -1
- package/dist/bundle/chunks/js-exec-OOPTBRNB.js +0 -96
- package/dist/bundle/chunks/md5sum-INMIK4DX.js +0 -1
- package/dist/bundle/chunks/nl-U5YJDM32.js +0 -1
- package/dist/bundle/chunks/od-VJEF2UR5.js +0 -1
- package/dist/bundle/chunks/paste-7N6AFSDS.js +0 -1
- package/dist/bundle/chunks/python3-5F2XPEW4.js +0 -11
- package/dist/bundle/chunks/rev-XOSYPP45.js +0 -1
- package/dist/bundle/chunks/rg-FOQSCCX3.js +0 -1
- package/dist/bundle/chunks/sed-VFTTATXJ.js +0 -1
- package/dist/bundle/chunks/sha1sum-VJPNLNU6.js +0 -1
- package/dist/bundle/chunks/sha256sum-PI32XWXY.js +0 -1
- package/dist/bundle/chunks/sort-DCNRDA7U.js +0 -1
- package/dist/bundle/chunks/split-SITCSYCZ.js +0 -1
- package/dist/bundle/chunks/sqlite3-56UMWEY3.js +0 -1
- package/dist/bundle/chunks/strings-7PLOGTPD.js +0 -1
- package/dist/bundle/chunks/tac-SJGXQ4T2.js +0 -1
- package/dist/bundle/chunks/tail-S5ULNTJU.js +0 -1
- package/dist/bundle/chunks/tar-232RCEFK.js +0 -1
- package/dist/bundle/chunks/tee-O7VXZDCO.js +0 -1
- package/dist/bundle/chunks/time-DEUO3QV2.js +0 -1
- package/dist/bundle/chunks/timeout-VRKMCG72.js +0 -1
- package/dist/bundle/chunks/tr-2HXZRDSW.js +0 -1
- package/dist/bundle/chunks/unexpand-RGTMIGZM.js +0 -1
- package/dist/bundle/chunks/uniq-SUNANL47.js +0 -1
- package/dist/bundle/chunks/wc-TQB3VNOX.js +0 -1
- package/dist/bundle/chunks/xan-BXDXYEIB.js +0 -1
- package/dist/bundle/chunks/xan-view-ECQUO7AJ.js +0 -1
- package/dist/bundle/chunks/xargs-I6EZUCYF.js +0 -1
- package/dist/bundle/chunks/yq-MJMAR36V.js +0 -1
- package/dist/commands/js-exec/executor-adapter.d.ts +0 -66
- package/dist/executor-init.d.ts +0 -10
- package/vendor/executor/executor-sdk-bundle.d.mts +0 -18
- package/vendor/executor/executor-sdk-bundle.mjs +0 -972
- /package/dist/bin/chunks/{chunk-QSDVMMYI.js → chunk-4CFAYBLV.js} +0 -0
- /package/dist/bin/chunks/{chunk-ND23BJUM.js → chunk-LCDPWJBA.js} +0 -0
- /package/dist/bin/shell/chunks/{chunk-QSDVMMYI.js → chunk-4CFAYBLV.js} +0 -0
- /package/dist/bin/shell/chunks/{chunk-ND23BJUM.js → chunk-LCDPWJBA.js} +0 -0
- /package/dist/bundle/chunks/{chunk-SYMJJMQ4.js → chunk-PXTK5WE2.js} +0 -0
package/dist/bin/shell/shell.js
CHANGED
|
@@ -1,158 +1,158 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{B as Vn,C as Bn,D as ce,E as je,F as ee,G as Ee,H as Ot,I as jn,J as x,K as Hn,L as Un,M as _e,N as ws,O as Dt,P as j,a as xn,b as ds,c as In,d as Pt,e as Q,f as V,g as be,h as ne,i as Ae,j as Le,k as hs,l as Nt,m as Rn,n as ps,o as Ln,p as me,q as Oe,r as Fn,s as Mn,t as ms,u as ys,v as Fe,w as Wn,x as zn,y as $e,z as gs}from"./chunks/chunk-A3HQTYHR.js";import{a as M,b as W,c as Xe,d as Ct,e as kt,f as Ye,g as fs,h as Pn,i as Nn,j as On,k as Dn,l as Tn}from"./chunks/chunk-D64U2VGQ.js";import{c as us}from"./chunks/chunk-LIYVQA3X.js";import{a as Sn,b as An}from"./chunks/chunk-OOJCYVYF.js";import{a as Re,b as pe,c as cs}from"./chunks/chunk-4PRVMER6.js";import{a as ut,b as kn}from"./chunks/chunk-MO4RPBN2.js";import{a as Ke,b as ge}from"./chunks/chunk-YU6OGPZR.js";import{a as ct}from"./chunks/chunk-SE4C7FJY.js";import{a as fe,b as de,c as le,d as he,e as _n,f as B,g as Be,h as Et,i as St,j as Cn,k as Y,l as At,m as xe,n as _t,o as we}from"./chunks/chunk-6KZRLMG3.js";import"./chunks/chunk-OBH7XN5N.js";import{a as Ie}from"./chunks/chunk-RLNOQILG.js";import{a as ve}from"./chunks/chunk-4VDEBYW7.js";import"./chunks/chunk-KGOUQS5A.js";import*as xi from"node:fs";import*as Ii from"node:readline";var Qe=[{name:"echo",load:async()=>(await import("./chunks/echo-2MUAOGUE.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-XZIJZXKP.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-P3QVL4IO.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-G2PXHSNX.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-Z47OISSR.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-5KLM4EA6.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DWKSZGOQ.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-L3NZOLLG.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XH2ZB7WT.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-OY7X62QC.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-EGC4HRXZ.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-N5CQATDW.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-6VBAPL3Y.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-BD5VFOC5.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-YMNRW3F3.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-V537TDFR.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-ZIV3TFVG.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-XS2LXYS2.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-OZJTRD4D.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-OZJTRD4D.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-OZJTRD4D.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-C6KMBFNG.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-HALRQZKY.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-VTJMI54B.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-7GENYU2I.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-TMSAIZM3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-R3F3Z5DX.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-5EY2XPXX.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-3UVLMQ2K.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-4FPGAEVB.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-UHEPS2UL.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-XH3L75DR.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-XSVNTAWH.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-26XPP5KB.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-OYZ7KOYR.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-XXKZCWY5.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-YWV64TJH.js")).split},{name:"column",load:async()=>(await import("./chunks/column-XGV32UPN.js")).column},{name:"join",load:async()=>(await import("./chunks/join-Y4Q5WVVE.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-HK2SYCAR.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-GAYRV4IF.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-KBUKWB2E.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-5FAOMLBL.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-HEKABARE.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-LDAPXSGF.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-NTPN5QYM.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-NTPN5QYM.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-UUKG55YW.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-SCYIFXOW.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-DP5UZP52.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-DP5UZP52.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KRGKPFOI.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-6ZHZ6BX7.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-6ZHZ6BX7.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-FIV5Q5T4.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-43M2R3GA.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-LE7GMFZD.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-WUPBL2TL.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-ND6FZRZ4.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-Z24MNWOP.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-5R4QWCYF.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-V7KBLSQ7.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-4CJYC4LY.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-NCLXV2S3.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-BHNJ5ALF.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-HJJ3NJ5L.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-D5YKS5NV.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-WVZA3MCP.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-DVG4AAGE.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-5PO4LAOG.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-T42SKDDI.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WY6RKE32.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-E7PN2UWC.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-52FBC34W.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Qe.push({name:"tar",load:async()=>(await import("./chunks/tar-TOWX2TDU.js")).tarCommand}),Qe.push({name:"yq",load:async()=>(await import("./chunks/yq-Q47JUWL6.js")).yqCommand}),Qe.push({name:"xan",load:async()=>(await import("./chunks/xan-MOZFJGMY.js")).xanCommand}),Qe.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-CVNFMP3Z.js")).sqlite3Command}));var vs=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(vs.push({name:"python3",load:async()=>(await import("./chunks/python3-O4VTP6TD.js")).python3Command}),vs.push({name:"python",load:async()=>(await import("./chunks/python3-O4VTP6TD.js")).pythonCommand}));var bs=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(bs.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-H26D5H6V.js")).jsExecCommand}),bs.push({name:"node",load:async()=>(await import("./chunks/js-exec-H26D5H6V.js")).nodeStubCommand}));var Mi=[{name:"curl",load:async()=>(await import("./chunks/curl-SRTMGOVV.js")).curlCommand}],Zn=new Map;function Tt(e){return{name:e.name,async execute(t,s){let n=Zn.get(e.name);if(n||(n=await ge.runTrustedAsync(()=>e.load()),Zn.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-LBMWMYOO.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function qn(e){return(e?Qe.filter(s=>e.includes(s.name)):Qe).map(Tt)}function Gn(){return Mi.map(Tt)}function Kn(){return vs.map(Tt)}function Xn(){return bs.map(Tt)}function Yn(e){return"load"in e&&typeof e.load=="function"}function Qn(e){let t=null;return{name:e.name,trusted:!0,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var Wi=new TextEncoder,zi=new TextDecoder;function Je(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}if(t==="binary"||t==="latin1"){if(e.length<=65536)return Uint8Array.from(e,r=>r.charCodeAt(0));let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}return Wi.encode(e)}function xt(e,t){if(t==="base64"){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let s=65536,n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return btoa(n)}if(t==="hex")return Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join("");if(t==="binary"||t==="latin1"){if(typeof Buffer<"u")return Buffer.from(e).toString(t);let s=65536;if(e.length<=s)return String.fromCharCode(...e);let n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return n}return zi.decode(e)}function Me(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var et=new TextEncoder;function Vi(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var ft=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):Vi(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){W(t,"write");let i=M(t);this.ensureParentDirs(i);let a=Me(n),o=Je(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}writeFileLazy(t,s,n){W(t,"write");let r=M(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"?et.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=Me(s);return xt(n,r)}async readFileBuffer(t){W(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:et.encode(r.content)}return n.content instanceof Uint8Array?n.content:et.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){W(t,"append");let r=M(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let a=Me(n),o=Je(s,a);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(r,l));let u="content"in l&&l.content instanceof Uint8Array?l.content:et.encode("content"in l?l.content:""),c=new Uint8Array(u.length+o.length);c.set(u),c.set(o,u.length),this.data.set(r,{type:"file",content:c,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){W(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=et.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){W(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=et.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=M(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),u=0,c=40;for(;l&&l.type==="symlink"&&u<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=Ye(r,l.target),l=this.data.get(r),u++}if(u>=c)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=M(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,u=40;for(;o&&o.type==="symlink"&&l<u;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=Ye(r,o.target),o=this.data.get(r),l++}if(l>=u)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){W(t,"mkdir");let n=M(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){W(t,"scandir");let s=M(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=Ye(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 u=o.slice(i.length),c=u.split("/")[0];c&&!u.includes("/",c.length)&&!a.has(c)&&a.set(c,{name:c,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){W(t,"rm");let n=M(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=kt(n,a);await this.rm(o,s)}}}this.data.delete(n)}async cp(t,s,n){W(t,"cp"),W(s,"cp");let r=M(t),i=M(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 u=kt(r,l),c=kt(i,l);await this.cp(u,c,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 Ct(t,s)}async chmod(t,s){W(t,"chmod");let n=M(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){W(s,"symlink");let n=M(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){W(t,"link"),W(s,"link");let n=M(t),r=M(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){W(t,"readlink");let s=M(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){W(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,n){W(t,"utimes");let r=M(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 Bi(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function ji(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 Hi(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 Ui(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${xn}
|
|
2
|
+
import{B as Un,C as Zn,D as ue,E as Ze,F as ee,G as Ae,H as Lt,I as qn,J as I,K as Gn,L as Kn,M as ke,N as _s,O as Ft,P as j,a as Fn,b as vs,c as Mn,d as xt,e as Q,f as V,g as Ee,h as ne,i as Ce,j as Me,k as bs,l as Rt,m as Wn,n as $s,o as zn,p as ye,q as Ie,r as Vn,s as Bn,t as Es,u as Ss,v as We,w as jn,x as Hn,y as Se,z as As}from"./chunks/chunk-P43NQKUN.js";import{a as et,b as tt,c as Fe}from"./chunks/chunk-NTW6IA45.js";import{c as ws}from"./chunks/chunk-LIYVQA3X.js";import{a as Dn,b as Tn}from"./chunks/chunk-OOJCYVYF.js";import{a as Le,b as me,c as gs}from"./chunks/chunk-4PRVMER6.js";import{a as yt,b as Ln}from"./chunks/chunk-MO4RPBN2.js";import{a as Je,b as ve}from"./chunks/chunk-YU6OGPZR.js";import{a as mt}from"./chunks/chunk-C6FRS5UB.js";import{b as He,d as In,e as ys}from"./chunks/chunk-63XSH3IT.js";import{a as de,b as he,c as ce,d as pe,e as xn,f as B,g as Ue,h as Ot,i as Dt,j as Rn,k as Y,l as Tt,m as Re,n as It,o as be}from"./chunks/chunk-6KZRLMG3.js";import"./chunks/chunk-OBH7XN5N.js";import{a as Te}from"./chunks/chunk-RLNOQILG.js";import{a as $e}from"./chunks/chunk-4VDEBYW7.js";import{a as On}from"./chunks/chunk-KGOUQS5A.js";import*as Ui from"node:fs";import*as Zi from"node:readline";var st=[{name:"echo",load:async()=>(await import("./chunks/echo-2MUAOGUE.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-3TMJDECR.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-NA7DYZBO.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-WONXDVOX.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-Z47OISSR.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-5KLM4EA6.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DWKSZGOQ.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-L3NZOLLG.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XH2ZB7WT.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-OY7X62QC.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-EGC4HRXZ.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-N5CQATDW.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-6VBAPL3Y.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-BD5VFOC5.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-BM7J6BEI.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-YX6MELZ5.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-KTXPMRYY.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-XS2LXYS2.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-3X5B47DW.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-3X5B47DW.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-3X5B47DW.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-UPQTBQZR.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-OKEUW2KT.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-CKPJ75GN.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-ES3NRFJA.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-2KXDTNDX.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-YZHVF2XN.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-MWPHE25M.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-7MEIW3PG.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-A6IXSBQX.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-6LTZEDBA.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-XLPXDHHK.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-QC27S46O.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-47QQBMM5.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-UCJETXUX.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-YGI6HF5M.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-QFBCCUR5.js")).split},{name:"column",load:async()=>(await import("./chunks/column-MTXKQLJH.js")).column},{name:"join",load:async()=>(await import("./chunks/join-5J5VA3I7.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-XKJM7HV7.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-O2KKT6KZ.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-KBUKWB2E.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-5FAOMLBL.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-HEKABARE.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-LDAPXSGF.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-NK55NKL6.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-NK55NKL6.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-UUKG55YW.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-EWL5DXR3.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-DP5UZP52.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-DP5UZP52.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KRGKPFOI.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-UYSJL7VA.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-UYSJL7VA.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-HYQ3KMGL.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-I3CXGD2Q.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-EINZHDTZ.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-WUPBL2TL.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-ND6FZRZ4.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-4QMASFQG.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-RPVNTV72.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-V7KBLSQ7.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-VPJ77DR7.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-GVZ66MRR.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-HFI2SRA4.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-N44D3OCP.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-MMSHRWCJ.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-G2FXKDLR.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-DVG4AAGE.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-5PO4LAOG.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-HWXFWOGO.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WY6RKE32.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-E7PN2UWC.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-CRBL7ZML.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-VYBZGPTA.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-VYBZGPTA.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-VYBZGPTA.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(st.push({name:"tar",load:async()=>(await import("./chunks/tar-UO62YC6N.js")).tarCommand}),st.push({name:"yq",load:async()=>(await import("./chunks/yq-LDGFI4EM.js")).yqCommand}),st.push({name:"xan",load:async()=>(await import("./chunks/xan-IHA7IHBM.js")).xanCommand}),st.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-V4SEWTIR.js")).sqlite3Command}));var Cs=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Cs.push({name:"python3",load:async()=>(await import("./chunks/python3-BBQ4SVHU.js")).python3Command}),Cs.push({name:"python",load:async()=>(await import("./chunks/python3-BBQ4SVHU.js")).pythonCommand}));var ks=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(ks.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-LZPKIZ5V.js")).jsExecCommand}),ks.push({name:"node",load:async()=>(await import("./chunks/js-exec-LZPKIZ5V.js")).nodeStubCommand}));var Xi=[{name:"curl",load:async()=>(await import("./chunks/curl-2DCNBIKJ.js")).curlCommand}],Xn=new Map;function Mt(e){return{name:e.name,async execute(t,s){let n=Xn.get(e.name);if(n||(n=await ve.runTrustedAsync(()=>e.load()),Xn.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-FHFMNAV6.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function Yn(e){return(e?st.filter(s=>e.includes(s.name)):st).map(Mt)}function Qn(){return Xi.map(Mt)}function Jn(){return Cs.map(Mt)}function er(){return ks.map(Mt)}function tr(e){return"load"in e&&typeof e.load=="function"}function sr(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 W(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function qe(e){let t=L(e);if(t==="/")return"/";let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}function Wt(e,t){if(t.startsWith("/"))return L(t);let s=e==="/"?`/${t}`:`${e}/${t}`;return L(s)}function gt(e,t){return e==="/"?`/${t}`:`${e}/${t}`}function nt(e,t){if(t.startsWith("/"))return L(t);let s=qe(e);return L(gt(s,t))}var rt=new TextEncoder;function Yi(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var wt=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):Yi(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}ensureParentDirs(t){let s=qe(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){W(t,"write");let i=L(t);this.ensureParentDirs(i);let a=Fe(n),o=et(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}writeFileLazy(t,s,n){W(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"?rt.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=Fe(s);return tt(n,r)}async readFileBytes(t){let s=await this.readFileBuffer(t);return tt(s,"binary")}async readFileBuffer(t){W(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:rt.encode(r.content)}return n.content instanceof Uint8Array?n.content:rt.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){W(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=Fe(n),o=et(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:rt.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){W(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=rt.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){W(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=rt.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=nt(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=nt(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){W(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=qe(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){W(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=nt(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){W(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=gt(n,a);await this.rm(o,s)}}}this.data.delete(n)}async cp(t,s,n){W(t,"cp"),W(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=gt(r,l),u=gt(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 Wt(t,s)}async chmod(t,s){W(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){W(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){W(t,"link"),W(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){W(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){W(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,n){W(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 Qi(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Ji(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 ea(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 ta(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Fn}
|
|
3
3
|
`),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
|
|
4
|
-
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>
|
|
4
|
+
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>vs(t)):e.writeFileSync("/proc/self/status",vs(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 rr(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Qi(e)&&(Ji(e,t),ea(e),ta(e,s))}var sa=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],na=["braceexpand","hashall","interactive-comments"];function Ns(e){let t=[],s=[...na.map(n=>({name:n,enabled:!0})),...sa.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 at(e){e.state.env.set("SHELLOPTS",Ns(e.state.options))}var ra=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Os(e){let t=[];for(let s of ra)e[s]&&t.push(s);return t.join(":")}function Ds(e){e.state.env.set("BASHOPTS",Os(e.state.shoptOptions))}var ia="BASH_ALIAS_";function ir(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function ar(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function or(e,t){return e.env.get(`${ia}${t}`)}function Ts(e,t,s){if(!t.name||!ir(t.name))return t;let n=ar(t.name);if(!n)return t;let r=or(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=cr(f);a+=` ${d}`}let l;try{l=i.parse(a)}catch(f){if(f instanceof xt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return lr(t,r);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return lr(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(ir(f)){let d=ar(f);if(d&&or(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},y=Ts(e,h,s);y!==h&&(u={...u,name:y.name,args:[...y.args]})}}}return u}catch(i){throw s.delete(n),i}}function lr(e,t){let s=t;for(let a of e.args){let o=cr(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 cr(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 ur(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+=Rt({type:"Word",parts:[u]});else{(o||l)&&(i.push(o),o="",l=!1);let d=await ke(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await I(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 fr(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let w=t.parts[p];if(w.type==="Literal"){let $=w.value.indexOf("+=");if($!==-1){let b=w.value.slice(0,$);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(b)){s=p,n=$,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(b)){s=p,n=$,r=!0;break}}let g=w.value.indexOf("=");if(g!==-1&&(g===0||w.value[g-1]!=="+")){let b=w.value.slice(0,g);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(b)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(b)){s=p,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 p of i)f+=await I(e,{type:"Word",parts:[p]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await I(e,d):"";return`${f}${r?"+=":"="}${h}`}var aa=["tar","yq","xan","sqlite3","python3","python"];function dr(e){return aa.includes(e)}var F=Object.freeze({stdout:"",stderr:"",exitCode:0});function M(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 X(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Pe(e,t,s="",n=""){throw new Y(e,t,s,n)}function ae(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new Y(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function Is(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Re;return F}if(t.length>1)throw new B(1,"",`bash: break: too many arguments
|
|
5
5
|
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new B(128,"",`bash: break: ${t[0]}: numeric argument required
|
|
6
|
-
`);s=n}throw new
|
|
6
|
+
`);s=n}throw new de(s)}async function xs(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===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 y=h.startsWith("/")?`${h}/${s}`:`${e.state.cwd}/${h}/${s}`;try{if((await e.fs.stat(y)).isDirectory){s=y,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
|
|
7
7
|
`)}catch{return _(`bash: cd: ${s}: No such file or directory
|
|
8
|
-
`)}}let c
|
|
9
|
-
`:"")}function
|
|
8
|
+
`)}}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),M(n?`${u}
|
|
9
|
+
`:"")}function Rs(e,t){return e.fs.resolvePath(e.state.cwd,t)}var oa=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function Vt(e){return oa.includes(e)}async function Bt(e,t,s){let n=Rs(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 la=["-nt","-ot","-ef"];function jt(e){return la.includes(e)}async function Ht(e,t,s,n){let r=Rs(e,s),i=Rs(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 ca=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Ut(e){return ca.has(e)}function Zt(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 vt(e){return e==="="||e==="=="||e==="!="}function qt(e,t,s,n=!1,r=!1,i=!1){if(n){let o=ot(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 ua=new Set(["-z","-n"]);function Gt(e){return ua.has(e)}function Kt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Xt(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 j(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
|
|
10
10
|
`,!1;if(a=Math.max(...o)+1+a,a<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
|
|
11
|
-
`,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?
|
|
12
|
-
`,2):
|
|
13
|
-
`,2):k("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(
|
|
14
|
-
`,2):X(s.value)}async function
|
|
15
|
-
`)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&t.push(s),t}function
|
|
11
|
+
`,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Me(e,t).length>0:ne(e,t).length>0}async function ze(e,t){switch(t.type){case"CondBinary":{let s=await I(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 I(e,t.right);r=Zn(i)}else r=await Gn(e,t.right);else vt(t.operator)&&!n?r=await Kn(e,t.right):r=await I(e,t.right);if(vt(t.operator)){let i=e.state.shoptOptions.nocasematch;return qt(t.operator,s,r,!n,i,!0)}if(Ut(t.operator))return Zt(t.operator,await pr(e,s),await pr(e,r));if(jt(t.operator))return Ht(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,a=pa(r),l=mt(a,i?"i":"").match(s);if(Ce(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 I(e,t.operand);return Vt(t.operator)?Bt(e,t.operator,s):Gt(t.operator)?Kt(t.operator,s):t.operator==="-v"?await Xt(e,s):t.operator==="-o"?Fs(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await I(e,t.operand.expression.word)})`!=="":!await ze(e,t.operand);case"CondAnd":return await ze(e,t.left)?await ze(e,t.right):!1;case"CondOr":return await ze(e,t.left)?!0:await ze(e,t.right);case"CondGroup":return await ze(e,t.expression);case"CondWord":return await I(e,t.word)!=="";default:return!1}}async function bt(e,t){if(t.length===0)return k("","",1);if(t.length===1)return X(!!t[0]);if(t.length===2){let n=t[0],r=t[1];return n==="("?_(`test: '(' without matching ')'
|
|
12
|
+
`,2):Vt(n)?X(await Bt(e,n,r)):Gt(n)?X(Kt(n,r)):n==="!"?X(!r):n==="-v"?X(await Xt(e,r)):n==="-o"?X(Fs(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
|
|
13
|
+
`,2):k("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(vt(r))return X(qt(r,n,i));if(Ut(r)){let a=Yt(n),o=Yt(i);return!a.valid||!o.valid?k("","",2):X(Zt(r,a.value,o.value))}if(jt(r))return X(await Ht(e,r,n,i));switch(r){case"-a":return X(n!==""&&i!=="");case"-o":return X(n!==""||i!=="");case">":return X(n>i);case"<":return X(n<i)}if(n==="!"){let a=await bt(e,[r,i]);return k("",a.stderr,a.exitCode===0?1:a.exitCode===1?0:a.exitCode)}if(n==="("&&i===")")return X(r!=="")}if(t.length===4){if(t[0]==="!"){let n=await bt(e,t.slice(1));return k("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return bt(e,[t[1],t[2]])}let s=await yr(e,t,0);return s.pos<t.length?_(`test: too many arguments
|
|
14
|
+
`,2):X(s.value)}async function yr(e,t,s){return fa(e,t,s)}async function fa(e,t,s){let{value:n,pos:r}=await hr(e,t,s);for(;t[r]==="-o";){let i=await hr(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function hr(e,t,s){let{value:n,pos:r}=await Ls(e,t,s);for(;t[r]==="-a";){let i=await Ls(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function Ls(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await Ls(e,t,s+1);return{value:!n,pos:r}}return da(e,t,s)}async function da(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await yr(e,t,s+1);return{value:i,pos:t[a]===")"?a+1:a}}let r=t[s+1];if(vt(r)){let i=n,a=t[s+2]??"";return{value:qt(r,i,a),pos:s+3}}if(Ut(r)){let i=Yt(n),a=Yt(t[s+2]??"0");return!i.valid||!a.valid?{value:!1,pos:s+3}:{value:Zt(r,i.value,a.value),pos:s+3}}if(jt(r)){let i=n,a=t[s+2]??"";return{value:await Ht(e,r,i,a),pos:s+3}}if(Vt(n)){let i=t[s+1]??"";return{value:await Bt(e,n,i),pos:s+2}}if(Gt(n)){let i=t[s+1]??"";return{value:Kt(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await Xt(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:Fs(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function ot(e,t,s=!1,n=!1){let r=`^${gr(t,n)}$`;return mt(r,s?"is":"s").test(e)}function gr(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=wr(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=vr(a),l=o.map(u=>gr(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=>br(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 y=[];h>0&&y.push(`.{0,${h-1}}`),y.push(`.{${h+1},}`),y.push(`(?!(?:${c})).{${h}}`),s+=`(?:${y.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);i!==-1?(s+=e.slice(n,i+1),n=i):s+="\\["}else/[\\^$.|+(){}]/.test(r)?s+=`\\${r}`:s+=r}return s}function wr(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 vr(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 br(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=wr(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),l=vr(a).map(c=>br(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 Fs(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 pr(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 mr(t);try{let s=new V,n=Q(s,t);return await j(e,n.expression)}catch{return mr(t)}}function ha(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 mr(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=ha(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 Yt(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 pa(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=ma(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function ma(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+=ya(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 ya(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 Ne(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===`
|
|
15
|
+
`)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&t.push(s),t}function Qt(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 $r(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Ne(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 ga(e,t){try{let s=new V,n=Q(s,t);return await j(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Er(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 ga(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&&ue(e,n),null}function Ve(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function lt(e,t){return e.state.localVarDepth?.get(t)}function Jt(e,t){e.state.localVarDepth?.delete(t)}function Sr(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 es(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Ar(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 Ms=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function _r(e){return Ms.has(e)}var Ws=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),ct=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 Ge(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
|
|
16
16
|
`;if(n.checkNoclobber&&e.state.options.noclobber&&!n.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
|
|
17
|
-
`}catch{}return null}function
|
|
18
|
-
`};s.set(n,await
|
|
17
|
+
`}catch{}return null}function Be(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 wa(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 Cr(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(_s(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
|
|
18
|
+
`};s.set(n,await I(e,r.target))}else{let a=await Ft(e,r.target);if("error"in a)return{targets:s,error:a.error};s.set(n,a.target)}}return{targets:s}}function va(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 ts(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 I(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=va(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await I(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&&(ae(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"),ae(e),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")ae(e),e.state.fileDescriptors.set(n,`${r}
|
|
19
19
|
`);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,r),a=await e.fs.readFile(i);ae(e),e.state.fileDescriptors.set(n,a)}catch{return k("",`bash: ${r}: No such file or directory
|
|
20
|
-
`,1)}}}return null}async function
|
|
20
|
+
`,1)}}}return null}async function Oe(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 I(e,s.target),r==="-"||!Number.isNaN(Number.parseInt(r,10))||s.fd!=null)continue}else{let o=await Ft(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
|
|
21
21
|
`,1);try{let o=await e.fs.stat(i);if(o.isDirectory)return k("",`bash: ${r}: Is a directory
|
|
22
22
|
`,1);if(e.state.options.noclobber&&!a&&!o.isDirectory&&r!=="/dev/null")return k("",`bash: ${r}: cannot overwrite existing file
|
|
23
23
|
`,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
|
|
24
|
-
`,1)}return null}async function
|
|
25
|
-
`,a=1,r="";continue}
|
|
26
|
-
`,a=1,r="";continue}switch(
|
|
27
|
-
`,a=1,r="";break}let
|
|
28
|
-
`,a=1;break}if(
|
|
29
|
-
`,a=1,r="";break}let
|
|
30
|
-
`,a=1;break}let
|
|
31
|
-
`,a=1)}break}if(
|
|
32
|
-
`,a=1,r=""):
|
|
33
|
-
`,a=1,r="")}}break}case"&>":{if(
|
|
34
|
-
`,a=1,r="";break}let
|
|
35
|
-
`,a=1,r="";break}let
|
|
36
|
-
`;throw new B(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),
|
|
24
|
+
`,1)}return null}async function q(e,t,s,n){let{stdout:r,stderr:i,exitCode:a}=t,l=t.stdoutKind==="bytes"||t.stdoutKind===void 0&&t.stdoutEncoding==="binary"?"binary":"utf8",c=h=>l;for(let h=0;h<s.length;h++){let y=s[h];if(y.target.type==="HereDoc")continue;let p,w=n?.get(h);if(w!==void 0)p=w;else if(y.operator===">&"||y.operator==="<&"){if(_s(e,y.target)){i+=`bash: $@: ambiguous redirect
|
|
25
|
+
`,a=1,r="";continue}p=await I(e,y.target)}else{let g=await Ft(e,y.target);if("error"in g){i+=g.error,a=1,r="";continue}p=g.target}if(!y.fdVariable){if(p.includes("\0")){i+=`bash: ${p.replace(/\0/g,"")}: No such file or directory
|
|
26
|
+
`,a=1,r="";continue}switch(y.operator){case">":case">|":{let $=y.fd??1,g=y.operator===">|";if($===1){if(p==="/dev/stdout")break;if(p==="/dev/stderr"){i+=r,r="";break}if(p==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
27
|
+
`,a=1,r="";break}let b=e.fs.resolvePath(e.state.cwd,p),m=await Ge(e,b,p,{checkNoclobber:!0,isClobber:g});if(m){i+=m,a=1,r="";break}await e.fs.writeFile(b,r,c(r)),r=""}else if($===2){if(p==="/dev/stderr")break;if(p==="/dev/stdout"){r+=i,i="";break}if(p==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
28
|
+
`,a=1;break}if(p==="/dev/null")i="";else{let b=e.fs.resolvePath(e.state.cwd,p),m=await Ge(e,b,p,{checkNoclobber:!0,isClobber:g});if(m){i+=m,a=1;break}await e.fs.writeFile(b,i,Be(i)),i=""}}break}case">>":{let $=y.fd??1;if($===1){if(p==="/dev/stdout")break;if(p==="/dev/stderr"){i+=r,r="";break}if(p==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
29
|
+
`,a=1,r="";break}let g=e.fs.resolvePath(e.state.cwd,p),b=await Ge(e,g,p,{});if(b){i+=b,a=1,r="";break}await e.fs.appendFile(g,r,c(r)),r=""}else if($===2){if(p==="/dev/stderr")break;if(p==="/dev/stdout"){r+=i,i="";break}if(p==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
30
|
+
`,a=1;break}let g=e.fs.resolvePath(e.state.cwd,p),b=await Ge(e,g,p,{});if(b){i+=b,a=1;break}await e.fs.appendFile(g,i,Be(i)),i=""}break}case">&":case"<&":{let $=y.fd??1;if(p==="-")break;if(p.endsWith("-")){let g=p.slice(0,-1),b=Number.parseInt(g,10);if(!Number.isNaN(b)){let m=e.state.fileDescriptors?.get(b);m!==void 0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set($,m),b>=3&&e.state.fileDescriptors?.delete(b)):b===1||b===2?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set($,`__dupout__:${b}`)):b===0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set($,`__dupin__:${b}`)):b>=3&&(i+=`bash: ${b}: Bad file descriptor
|
|
31
|
+
`,a=1)}break}if(p==="2"||p==="&2")$===1&&(i+=r,r="");else if(p==="1"||p==="&1")r+=i,i="";else{let g=Number.parseInt(p,10);if(Number.isNaN(g)){if(y.operator===">&"){let b=e.fs.resolvePath(e.state.cwd,p),m=await Ge(e,b,p,{checkNoclobber:!0});if(m){i=m,a=1,r="";break}if(y.fd==null){let v=r+i;await e.fs.writeFile(b,v,c(v)),r="",i=""}else $===1?(await e.fs.writeFile(b,r,c(r)),r=""):$===2&&(await e.fs.writeFile(b,i,Be(i)),i="")}}else{let b=e.state.fileDescriptors?.get(g);if(b?.startsWith("__file__:")){let m=b.slice(9);$===1?(await e.fs.appendFile(m,r,c(r)),r=""):$===2&&(await e.fs.appendFile(m,i,Be(i)),i="")}else if(b?.startsWith("__rw__:")){let m=wa(b);m&&($===1?(await e.fs.appendFile(m.path,r,c(r)),r=""):$===2&&(await e.fs.appendFile(m.path,i,Be(i)),i=""))}else if(b?.startsWith("__dupout__:")){let m=Number.parseInt(b.slice(11),10);if(m!==1)if(m===2)$===1&&(i+=r,r="");else{let v=e.state.fileDescriptors?.get(m);if(v?.startsWith("__file__:")){let E=v.slice(9);$===1?(await e.fs.appendFile(E,r,c(r)),r=""):$===2&&(await e.fs.appendFile(E,i,Be(i)),i="")}}}else b?.startsWith("__dupin__:")?(i+=`bash: ${g}: Bad file descriptor
|
|
32
|
+
`,a=1,r=""):g>=3&&(i+=`bash: ${g}: Bad file descriptor
|
|
33
|
+
`,a=1,r="")}}break}case"&>":{if(p==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
34
|
+
`,a=1,r="";break}let $=e.fs.resolvePath(e.state.cwd,p),g=await Ge(e,$,p,{checkNoclobber:!0});if(g){i=g,a=1,r="";break}let b=r+i;await e.fs.writeFile($,b,c(b)),r="",i="";break}case"&>>":{if(p==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
35
|
+
`,a=1,r="";break}let $=e.fs.resolvePath(e.state.cwd,p),g=await Ge(e,$,p,{});if(g){i=g,a=1,r="";break}let b=r+i;await e.fs.appendFile($,b,c(b)),r="",i="";break}}}}let u=e.state.fileDescriptors?.get(1);if(u){if(u==="__dupout__:2")i+=r,r="";else if(u.startsWith("__file__:")){let h=u.slice(9);await e.fs.appendFile(h,r,c(r)),r=""}else if(u.startsWith("__file_append__:")){let h=u.slice(16);await e.fs.appendFile(h,r,c(r)),r=""}}let f=e.state.fileDescriptors?.get(2);if(f){if(f==="__dupout__:1")r+=i,i="";else if(f.startsWith("__file__:")){let h=f.slice(9);await e.fs.appendFile(h,i,Be(i)),i=""}else if(f.startsWith("__file_append__:")){let h=f.slice(16);await e.fs.appendFile(h,i,Be(i)),i=""}}let d=k(r,i,a);return t.stdoutKind&&(d.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(d.stdoutEncoding="binary"),d}function kr(e,t){if(e.state.options.posix&&Ms.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
|
|
36
|
+
`;throw new B(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),F}async function ba(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await I(e,r.content);r.stripTabs&&(i=i.split(`
|
|
37
37
|
`).map(o=>o.replace(/^\t+/,"")).join(`
|
|
38
|
-
`)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await
|
|
39
|
-
`;else if(n.operator==="<"&&n.target.type==="Word"){let r=await
|
|
40
|
-
`,2);let
|
|
41
|
-
`,2);s.push(
|
|
42
|
-
`,2);n=t[
|
|
43
|
-
`,2);r=t[
|
|
44
|
-
`,2);i=t[
|
|
45
|
-
`,2);let
|
|
46
|
-
`,2)}else if(
|
|
47
|
-
`,2);f=t[
|
|
48
|
-
`,2);d=t[
|
|
49
|
-
`,2);
|
|
50
|
-
`,2)}else if(
|
|
51
|
-
`);for(let
|
|
52
|
-
`,2);throw
|
|
53
|
-
`),
|
|
54
|
-
`:"");return
|
|
55
|
-
`;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
|
|
38
|
+
`)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await I(e,n.target)}
|
|
39
|
+
`;else if(n.operator==="<"&&n.target.type==="Word"){let r=await I(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function ss(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Pe(`${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(Ar(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 Cr(e,t.redirections);if(l)return a(),k("",l,1);try{let c=await ba(e,t.redirections),u=n||c,f=await e.executeCommand(t.body,u);return a(),q(e,f,t.redirections,o)}catch(c){if(a(),c instanceof ce){let u=k(c.stdout,c.stderr,c.exitCode);return q(e,u,t.redirections,o)}throw c}}var Nr=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],Vs=[".",":","[","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"],Ea=Vs;async function Bs(e,t){let s=[],n=null,r="",i="",a=null,o=!1,l=!1,c=!1,u=null,f=null,d=null,h=[],y=["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 m=0;m<t.length;m++){let v=t[m];if(v==="-v")s.push("variable");else if(v==="-e")s.push("export");else if(v==="-f")s.push("file");else if(v==="-d")s.push("directory");else if(v==="-k")s.push("keyword");else if(v==="-A"){if(m++,m>=t.length)return _(`compgen: -A: option requires an argument
|
|
40
|
+
`,2);let E=t[m];if(!y.includes(E))return _(`compgen: ${E}: invalid action name
|
|
41
|
+
`,2);s.push(E)}else if(v==="-W"){if(m++,m>=t.length)return _(`compgen: -W: option requires an argument
|
|
42
|
+
`,2);n=t[m]}else if(v==="-P"){if(m++,m>=t.length)return _(`compgen: -P: option requires an argument
|
|
43
|
+
`,2);r=t[m]}else if(v==="-S"){if(m++,m>=t.length)return _(`compgen: -S: option requires an argument
|
|
44
|
+
`,2);i=t[m]}else if(v==="-o"){if(m++,m>=t.length)return _(`compgen: -o: option requires an argument
|
|
45
|
+
`,2);let E=t[m];if(E==="plusdirs")o=!0;else if(E==="dirnames")l=!0;else if(E==="default")c=!0;else if(!(E==="filenames"||E==="nospace"||E==="bashdefault"||E==="noquote"))return _(`compgen: ${E}: invalid option name
|
|
46
|
+
`,2)}else if(v==="-F"){if(m++,m>=t.length)return _(`compgen: -F: option requires an argument
|
|
47
|
+
`,2);f=t[m]}else if(v==="-C"){if(m++,m>=t.length)return _(`compgen: -C: option requires an argument
|
|
48
|
+
`,2);d=t[m]}else if(v==="-X"){if(m++,m>=t.length)return _(`compgen: -X: option requires an argument
|
|
49
|
+
`,2);u=t[m]}else if(v==="-G"){if(m++,m>=t.length)return _(`compgen: -G: option requires an argument
|
|
50
|
+
`,2)}else if(v==="--"){h.push(...t.slice(m+1));break}else v.startsWith("-")||h.push(v)}a=h[0]??null;let p=[];if(l){let m=await zs(e,a);p.push(...m)}if(c){let m=await Pr(e,a);p.push(...m)}for(let m of s)if(m==="variable"){let v=Sa(e,a);p.push(...v)}else if(m==="export"){let v=Aa(e,a);p.push(...v)}else if(m==="function"){let v=_a(e,a);p.push(...v)}else if(m==="builtin"){let v=Ca(a);p.push(...v)}else if(m==="keyword"){let v=ka(a);p.push(...v)}else if(m==="alias"){let v=Pa(e,a);p.push(...v)}else if(m==="shopt"){let v=Na(a);p.push(...v)}else if(m==="helptopic"){let v=Oa(a);p.push(...v)}else if(m==="directory"){let v=await zs(e,a);p.push(...v)}else if(m==="file"){let v=await Pr(e,a);p.push(...v)}else if(m==="user"){let v=Da(a);p.push(...v)}else if(m==="command"){let v=await Ta(e,a);p.push(...v)}if(n!==null)try{let m=await Ia(e,n),v=xa(e,m);for(let E of v)(a===null||E.startsWith(a))&&p.push(E)}catch{return k("","",1)}if(o){let m=await zs(e,a);for(let v of m)p.includes(v)||p.push(v)}let w="";if(f!==null){let m=e.state.functions.get(f);if(m){let v=new Map;v.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),v.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),v.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),v.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let E=new Map;for(let O of e.state.env.keys())(O==="COMPREPLY"||O.startsWith("COMPREPLY_")||O==="COMPREPLY__length")&&(E.set(O,e.state.env.get(O)),e.state.env.delete(O));let S=["compgen",h[0]??"",""];try{let O=await ss(e,m,S,"");if(O.exitCode!==0)return ut(e,v),ut(e,E),k("",O.stderr,1);w=O.stdout;let N=Ra(e);p.push(...N)}catch{return ut(e,v),ut(e,E),k("","",1)}ut(e,v),ut(e,E)}}if(d!==null)try{let m=Ee(d),v=await e.executeScript(m);if(v.exitCode!==0)return k("",v.stderr,v.exitCode);if(v.stdout){let E=v.stdout.split(`
|
|
51
|
+
`);for(let S of E)S.length>0&&p.push(S)}}catch(m){if(m.name==="ParseException")return _(`compgen: -C: ${m.message}
|
|
52
|
+
`,2);throw m}let $=p;if(u!==null){let m=u.startsWith("!"),v=m?u.slice(1):u;$=p.filter(E=>{let S=ot(E,v,!1,!0);return m?S:!S})}if($.length===0&&a!==null)return k(w,"",1);let g=$.map(m=>`${r}${m}${i}`).join(`
|
|
53
|
+
`),b=w+(g?`${g}
|
|
54
|
+
`:"");return M(b)}function Sa(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 Aa(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 _a(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function Ca(e){let t=[...Vs];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function ka(e){let t=[...Nr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Pa(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 Na(e){let t=[...$a];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Oa(e){let t=[...Ea];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function zs(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 Pr(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 Da(e){return["root","nobody"]}async function Ta(e,t){let s=new Set;for(let i of Vs)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 Nr)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 Ia(e,t){let n=new V().parseWordFromString(t,!1,!1);return await I(e,n)}function xa(e,t){let s=e.state.env.get("IFS")??`
|
|
55
|
+
`;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 ut(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function Ra(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 La=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Hs(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
|
|
56
56
|
`,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return _(`complete: -F: option requires an argument
|
|
57
57
|
`,2);a=t[f]}else if(d==="-o"){if(f++,f>=t.length)return _(`complete: -o: option requires an argument
|
|
58
|
-
`,2);let h=t[f];if(!
|
|
58
|
+
`,2);let h=t[f];if(!La.includes(h))return _(`complete: ${h}: invalid option name
|
|
59
59
|
`,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return _(`complete: -A: option requires an argument
|
|
60
|
-
`,2);
|
|
60
|
+
`,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return _(`complete: -C: option requires an argument
|
|
61
61
|
`,2);o=t[f]}else if(d==="-G"){if(f++,f>=t.length)return _(`complete: -G: option requires an argument
|
|
62
62
|
`,2)}else if(d==="-P"){if(f++,f>=t.length)return _(`complete: -P: option requires an argument
|
|
63
63
|
`,2)}else if(d==="-S"){if(f++,f>=t.length)return _(`complete: -S: option requires an argument
|
|
64
64
|
`,2)}else if(d==="-X"){if(f++,f>=t.length)return _(`complete: -X: option requires an argument
|
|
65
|
-
`,2)}else if(d==="--"){
|
|
66
|
-
`,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),
|
|
67
|
-
`;return k("",i,1)}return
|
|
65
|
+
`,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(),M("");for(let f of u)e.state.completionSpecs.delete(f);return M("")}if(s)return u.length===0?js(e):js(e,u);if(t.length===0||u.length===0&&!i&&!a&&!o&&l.length===0&&c.length===0&&!r)return js(e);if(a&&u.length===0&&!r)return _(`complete: -F: option requires a command name
|
|
66
|
+
`,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),M("")}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 M("")}function js(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
|
|
67
|
+
`;return k("",i,1)}return M("")}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(`
|
|
68
68
|
`)+(n.length>0?`
|
|
69
69
|
`:""),`complete: ${i}: no completion specification
|
|
70
|
-
`,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?
|
|
70
|
+
`,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?M(""):M(`${n.join(`
|
|
71
71
|
`)}
|
|
72
|
-
`)}var
|
|
73
|
-
`,2);let
|
|
74
|
-
`,2);r.push(
|
|
75
|
-
`,2);let
|
|
76
|
-
`,2);i.push(
|
|
77
|
-
`,1)}function
|
|
72
|
+
`)}var Or=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Us(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
|
|
73
|
+
`,2);let c=t[o];if(!Or.includes(c))return _(`compopt: ${c}: invalid option name
|
|
74
|
+
`,2);r.push(c)}else if(l==="+o"){if(o++,o>=t.length)return _(`compopt: +o: option requires an argument
|
|
75
|
+
`,2);let c=t[o];if(!Or.includes(c))return _(`compopt: ${c}: invalid option name
|
|
76
|
+
`,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),M("")}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),M("")}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 M("")}return _(`compopt: not currently executing completion function
|
|
77
|
+
`,1)}function Zs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Re;return F}if(t.length>1)throw new B(1,"",`bash: continue: too many arguments
|
|
78
78
|
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new B(1,"",`bash: continue: ${t[0]}: numeric argument required
|
|
79
|
-
`);s=n}throw new
|
|
80
|
-
`;else{let f=
|
|
81
|
-
`}continue}let l=ne(e,i);if(l.length>0){let
|
|
79
|
+
`);s=n}throw new he(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 Gs(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 ns(e){return qs(e)?Gs(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Ke(e){return qs(e)?Gs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ks(e){return qs(e)?Gs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Dr(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),ye(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 Xs(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Tr(e,t){let s="",n="",r=!1;for(let i of t){let a=Dr(e,i);if(e.state.associativeArrays?.has(i)){let u=Me(e,i);if(u.length===0)s+=`declare -A ${i}=()
|
|
80
|
+
`;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",y=Xs(h);return`['${d}']=${y}`});s+=`declare -A ${i}=(${f.join(" ")})
|
|
81
|
+
`}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}]=${Ke(d)}`});s+=`declare -a ${i}=(${u.join(" ")})
|
|
82
82
|
`;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
|
|
83
|
-
`;continue}let
|
|
84
|
-
`;else{let
|
|
83
|
+
`;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${a} ${i}=${Ks(c)}
|
|
84
|
+
`;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${a} ${i}
|
|
85
85
|
`:(n+=`bash: declare: ${i}: not found
|
|
86
|
-
`,r=!0)}}return k(s,n,r?1:0)}function
|
|
87
|
-
`;else{let
|
|
88
|
-
`}continue}if(
|
|
86
|
+
`,r=!0)}}return k(s,n,r?1:0)}function Ir(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),y=f.slice(d+1);if(/^\d+$/.test(y)||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=Dr(e,f),h=e.state.associativeArrays?.has(f),y=ne(e,f),p=!h&&(y.length>0||e.state.env.has(`${f}__length`));if(o&&(a&&!h||i&&!p||s&&!e.state.exportedVars?.has(f)||n&&!e.state.readonlyVars?.has(f)||r&&!ye(e,f)))continue;if(h){let $=Me(e,f);if($.length===0)l+=`declare -A ${f}=()
|
|
87
|
+
`;else{let g=$.map(b=>{let m=e.state.env.get(`${f}_${b}`)??"",v=Xs(m);return`['${b}']=${v}`});l+=`declare -A ${f}=(${g.join(" ")})
|
|
88
|
+
`}continue}if(y.length>0){let $=y.map(g=>{let b=e.state.env.get(`${f}_${g}`)??"";return`[${g}]=${Ke(b)}`});l+=`declare -a ${f}=(${$.join(" ")})
|
|
89
89
|
`;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
|
|
90
|
-
`;continue}let
|
|
91
|
-
`)}return
|
|
92
|
-
`;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",l=
|
|
93
|
-
`}}return
|
|
94
|
-
`;else{let a=i.map(o=>{let l=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${
|
|
95
|
-
`}}return
|
|
96
|
-
`)}return
|
|
97
|
-
`,2)}}}else if(
|
|
98
|
-
`,2);else
|
|
99
|
-
`;return
|
|
100
|
-
`:N=!1;return k(
|
|
90
|
+
`;continue}let w=e.state.env.get(f);w!==void 0&&(l+=`declare ${d} ${f}=${Ks(w)}
|
|
91
|
+
`)}return M(l)}function xr(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Me(e,n);if(r.length===0)t+=`declare -A ${n}=()
|
|
92
|
+
`;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",l=Xs(o);return`['${a}']=${l}`});t+=`declare -A ${n}=(${i.join(" ")})
|
|
93
|
+
`}}return M(t)}function Rr(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}=()
|
|
94
|
+
`;else{let a=i.map(o=>{let l=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${Ke(l)}`});t+=`declare -a ${r}=(${a.join(" ")})
|
|
95
|
+
`}}return M(t)}function Lr(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}=${ns(o)}
|
|
96
|
+
`)}return M(t)}function Ys(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function $t(e,t){return e.state.integerVars?.has(t)??!1}function Qs(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Fa(e,t){return e.state.lowercaseVars?.has(t)??!1}function Js(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Ma(e,t){return e.state.uppercaseVars?.has(t)??!1}function ft(e,t,s){return Fa(e,t)?s.toLowerCase():Ma(e,t)?s.toUpperCase():s}async function Fr(e,t){try{let s=new V,n=Q(s,t),r=await j(e,n.expression);return String(r)}catch{return"0"}}function Wa(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 en(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,y=!1,p=!1,w=!1,$=[];for(let N=0;N<t.length;N++){let x=t[N];if(x==="-a")s=!0;else if(x==="-A")n=!0;else if(x==="-r")r=!0;else if(x==="-x")i=!0;else if(x==="-p")a=!0;else if(x==="-n")o=!0;else if(x==="+n")l=!0;else if(x==="+a")c=!0;else if(x==="+x")u=!0;else if(x==="--"){$.push(...t.slice(N+1));break}else if(x.startsWith("+")){for(let C of x.slice(1))if(C==="n")l=!0;else if(C==="a")c=!0;else if(C==="x")u=!0;else if(C!=="r"){if(C!=="i"){if(!(C==="f"||C==="F"))return k("",`bash: typeset: +${C}: invalid option
|
|
97
|
+
`,2)}}}else if(x==="-i")f=!0;else if(x==="-l")d=!0;else if(x==="-u")h=!0;else if(x==="-f")y=!0;else if(x==="-F")p=!0;else if(x==="-g")w=!0;else if(x.startsWith("-"))for(let C of x.slice(1))if(C==="a")s=!0;else if(C==="A")n=!0;else if(C==="r")r=!0;else if(C==="x")i=!0;else if(C==="p")a=!0;else if(C==="n")o=!0;else if(C==="i")f=!0;else if(C==="l")d=!0;else if(C==="u")h=!0;else if(C==="f")y=!0;else if(C==="F")p=!0;else if(C==="g")w=!0;else return k("",`bash: typeset: -${C}: invalid option
|
|
98
|
+
`,2);else $.push(x)}let b=e.state.localScopes.length>0&&!w,m=N=>{if(!b)return;let x=e.state.localScopes[e.state.localScopes.length-1];x.has(N)||x.set(N,e.state.env.get(N))},v=N=>{if(!b)return;let x=e.state.localScopes[e.state.localScopes.length-1];x.has(N)||x.set(N,e.state.env.get(N));let C=`${N}_`;for(let D of e.state.env.keys())D.startsWith(C)&&!D.includes("__")&&(x.has(D)||x.set(D,e.state.env.get(D)));let P=`${N}__length`;e.state.env.has(P)&&!x.has(P)&&x.set(P,e.state.env.get(P))},E=N=>{b&&Ve(e,N)};if(p){if($.length===0){let C=Array.from(e.state.functions.keys()).sort(),P="";for(let D of C)P+=`declare -f ${D}
|
|
99
|
+
`;return M(P)}let N=!0,x="";for(let C of $)e.state.functions.has(C)?x+=`${C}
|
|
100
|
+
`:N=!1;return k(x,"",N?0:1)}if(y){if($.length===0){let x="",C=Array.from(e.state.functions.keys()).sort();for(let P of C)x+=`${P} ()
|
|
101
101
|
{
|
|
102
102
|
# function body
|
|
103
103
|
}
|
|
104
|
-
`;return
|
|
105
|
-
`,O=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has(
|
|
106
|
-
`,O=1;continue}if(
|
|
107
|
-
`,O=1;continue}let J=ee(e,T);if(J)return J;if(
|
|
108
|
-
`,O=1;continue}e.state.env.set(T,R),
|
|
109
|
-
`,O=1;continue}if(s||n?
|
|
110
|
-
`,O=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(
|
|
111
|
-
`}}return
|
|
104
|
+
`;return M(x)}let N=!0;for(let x of $)e.state.functions.has(x)||(N=!1);return k("","",N?0:1)}if(a&&$.length>0)return Tr(e,$);if(a&&$.length===0)return Ir(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if($.length===0&&n&&!a)return xr(e);if($.length===0&&s&&!a)return Rr(e);if($.length===0&&!a)return Lr(e);let S="",O=0;for(let N of $){let x=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(x&&!c){let A=x[1],T=x[2];if(n&&ne(e,A).length>0){S+=`bash: declare: ${A}: cannot convert indexed to associative array
|
|
105
|
+
`,O=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has(A)){S+=`bash: declare: ${A}: cannot convert associative to indexed array
|
|
106
|
+
`,O=1;continue}if(v(A),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(A)),Ce(e,A),e.state.env.delete(A),e.state.env.delete(`${A}__length`),n&&T.includes("[")){let R=Qt(T);for(let[J,z]of R){let K=G(e,z);e.state.env.set(`${A}_${J}`,K)}}else if(n){let R=Ne(T);for(let J=0;J<R.length;J+=2){let z=R[J],K=J+1<R.length?G(e,R[J+1]):"";e.state.env.set(`${A}_${z}`,K)}}else{let R=Ne(T);if(R.some(z=>/^\[[^\]]+\]=/.test(z))){let z=0;for(let K of R){let re=K.match(/^\[([^\]]+)\]=(.*)$/);if(re){let fe=re[1],Qe=re[2],qi=G(e,Qe),pt;if(/^-?\d+$/.test(fe))pt=Number.parseInt(fe,10);else try{let Gi=new V,Ki=Q(Gi,fe);pt=await j(e,Ki.expression)}catch{pt=0}e.state.env.set(`${A}_${pt}`,qi),z=pt+1}else{let fe=G(e,K);e.state.env.set(`${A}_${z}`,fe),z++}}}else{for(let z=0;z<R.length;z++)e.state.env.set(`${A}_${z}`,R[z]);e.state.env.set(`${A}__length`,String(R.length))}}E(A),r&&ue(e,A),i&&Ae(e,A);continue}if(l){let A=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(Vn(e,A),!N.includes("="))continue}if(u){let A=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(Lt(e,A),!N.includes("="))continue}let C=Wa(N);if(C){let{name:A,indexExpr:T,value:R}=C,J=ee(e,A);if(J)return J;v(A);let z;try{let re=new V,fe=Q(re,T);z=await j(e,fe.expression)}catch{let re=parseInt(T,10);z=Number.isNaN(re)?0:re}e.state.env.set(`${A}_${z}`,R);let K=parseInt(e.state.env.get(`${A}__length`)??"0",10);z>=K&&e.state.env.set(`${A}__length`,String(z+1)),E(A),r&&ue(e,A),i&&Ae(e,A);continue}let P=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(P&&!c){let A=P[1],T=P[2],R=ee(e,A);if(R)return R;v(A);let J=Ne(T);if(e.state.associativeArrays?.has(A)){let z=Qt(T);for(let[K,re]of z){let fe=G(e,re);e.state.env.set(`${A}_${K}`,fe)}}else{let z=ne(e,A),K=0,re=e.state.env.get(A);z.length===0&&re!==void 0?(e.state.env.set(`${A}_0`,re),e.state.env.delete(A),K=1):z.length>0&&(K=Math.max(...z)+1);for(let Qe=0;Qe<J.length;Qe++)e.state.env.set(`${A}_${K+Qe}`,G(e,J[Qe]));let fe=K+J.length;e.state.env.set(`${A}__length`,String(fe))}E(A),r&&ue(e,A),i&&Ae(e,A);continue}let D=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(D){let A=D[1],T=G(e,D[2]),R=ee(e,A);if(R)return R;m(A),f&&Ys(e,A),d&&Qs(e,A),h&&Js(e,A);let z=ne(e,A).length>0||e.state.associativeArrays?.has(A);if($t(e,A)){let K=e.state.env.get(A)??"0",re=parseInt(K,10)||0,fe=parseInt(await Fr(e,T),10)||0;T=String(re+fe),e.state.env.set(A,T)}else if(z){T=ft(e,A,T);let K=`${A}_0`,re=e.state.env.get(K)??"";e.state.env.set(K,re+T)}else{T=ft(e,A,T);let K=e.state.env.get(A)??"";e.state.env.set(A,K+T)}E(A),r&&ue(e,A),i&&Ae(e,A),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(A));continue}if(N.includes("=")){let A=N.indexOf("="),T=N.slice(0,A),R=N.slice(A+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(T)){S+=`bash: typeset: \`${T}': not a valid identifier
|
|
107
|
+
`,O=1;continue}let J=ee(e,T);if(J)return J;if(m(T),o){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){S+=`bash: declare: \`${R}': invalid variable name for name reference
|
|
108
|
+
`,O=1;continue}e.state.env.set(T,R),Ie(e,T),R!==""&&Ss(e,R)&&Es(e,T),E(T),r&&ue(e,T),i&&Ae(e,T);continue}if(f&&Ys(e,T),d&&Qs(e,T),h&&Js(e,T),$t(e,T)&&(R=await Fr(e,R)),R=ft(e,T,R),ye(e,T)){let z=We(e,T);z&&z!==T?e.state.env.set(z,R):e.state.env.set(T,R)}else e.state.env.set(T,R);E(T),r&&ue(e,T),i&&Ae(e,T),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(T))}else{let A=N;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A)){S+=`bash: typeset: \`${A}': not a valid identifier
|
|
109
|
+
`,O=1;continue}if(s||n?v(A):m(A),o){Ie(e,A);let R=e.state.env.get(A);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?Bn(e,A):R&&Ss(e,R)&&Es(e,A),E(A),r&&ue(e,A),i&&Ae(e,A);continue}if(f&&Ys(e,A),d&&Qs(e,A),h&&Js(e,A),n){if(ne(e,A).length>0){S+=`bash: declare: ${A}: cannot convert indexed to associative array
|
|
110
|
+
`,O=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(A)}let T=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${A}_`)&&!R.startsWith(`${A}__length`));!e.state.env.has(A)&&!T&&(s||n?e.state.env.set(`${A}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(A))),E(A),r&&ue(e,A),i&&Ae(e,A)}}return k("",S,O)}async function tn(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}"
|
|
111
|
+
`}}return M(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 y=Ne(d);if(e.state.associativeArrays?.has(f)){let p=Qt(d);for(let[w,$]of p){let g=G(e,$);e.state.env.set(`${f}_${w}`,g)}}else{let p=ne(e,f),w=0,$=e.state.env.get(f);p.length===0&&$!==void 0?(e.state.env.set(`${f}_0`,$),e.state.env.delete(f),w=1):p.length>0&&(w=Math.max(...p)+1);for(let b=0;b<y.length;b++)e.state.env.set(`${f}_${w+b}`,G(e,y[b]));let g=w+y.length;e.state.env.set(`${f}__length`,String(g))}ue(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 y=e.state.env.get(f)??"";e.state.env.set(f,y+d),ue(e,f);continue}let c=$r(a);if(c.value===void 0&&!c.isArray){ue(e,c.name);continue}let u=await Er(e,c,{makeReadonly:!0});if(u)return u}return F}function sn(e){return e.state.directoryStack??=[],e.state.directoryStack}function Et(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function za(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 nn(e,t){let s=sn(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
|
|
112
112
|
`,2);n=t[o+1],o++}}else{if(l.startsWith("-")&&l!=="-")return _(`bash: pushd: ${l}: invalid option
|
|
113
113
|
`,2);if(n!==void 0)return _(`bash: pushd: too many arguments
|
|
114
114
|
`,2);n=l}}if(n===void 0){if(s.length<2)return _(`bash: pushd: no other directory
|
|
115
|
-
`,1);let o=s[0];s[0]=s[1],s[1]=o,n=s[0]}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=
|
|
115
|
+
`,1);let o=s[0];s[0]=s[1],s[1]=o,n=s[0]}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=za(r);try{if(!(await e.fs.stat(r)).isDirectory)return _(`bash: pushd: ${n}: Not a directory
|
|
116
116
|
`,1)}catch{return _(`bash: pushd: ${n}: No such file or directory
|
|
117
|
-
`,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=>
|
|
118
|
-
`;return
|
|
117
|
+
`,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=>Et(o,i)).join(" ")}
|
|
118
|
+
`;return M(a)}function rn(e,t){let s=sn(e);for(let a of t)if(a!=="--")return a.startsWith("-")&&a!=="-"?_(`bash: popd: ${a}: invalid option
|
|
119
119
|
`,2):_(`bash: popd: too many arguments
|
|
120
120
|
`,2);if(s.length===0)return _(`bash: popd: directory stack empty
|
|
121
121
|
`,1);let n=s.shift();if(!n)return _(`bash: popd: directory stack empty
|
|
122
|
-
`,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=>
|
|
123
|
-
`;return
|
|
122
|
+
`,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=>Et(a,r)).join(" ")}
|
|
123
|
+
`;return M(i)}function an(e,t){let s=sn(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
|
|
124
124
|
`,2);else return _(`bash: dirs: too many arguments
|
|
125
|
-
`,1);if(n)return e.state.directoryStack=[],
|
|
126
|
-
`),
|
|
127
|
-
`):i?
|
|
125
|
+
`,1);if(n)return e.state.directoryStack=[],F;let o=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",c;return a?(c=o.map((u,f)=>{let d=r?u:Et(u,l);return` ${f} ${d}`}).join(`
|
|
126
|
+
`),c+=`
|
|
127
|
+
`):i?c=o.map(u=>r?u:Et(u,l)).join(`
|
|
128
128
|
`)+`
|
|
129
|
-
`:
|
|
130
|
-
`,
|
|
129
|
+
`:c=o.map(u=>r?u:Et(u,l)).join(" ")+`
|
|
130
|
+
`,M(c)}async function rs(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
|
|
131
131
|
eval: usage: eval [arg ...]
|
|
132
|
-
`,2)}if(n.length===0)return
|
|
133
|
-
`);throw o}finally{e.state.groupStdin=i}}function
|
|
134
|
-
`,s=2):s=(i%256+256)%256}throw new B(s,"",n)}function
|
|
135
|
-
`}}return
|
|
136
|
-
`,i=1;continue}if(l!==void 0)if(
|
|
137
|
-
`);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
|
|
138
|
-
`,r||e.state.env.set(n,"?"),f+1<
|
|
139
|
-
`,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:
|
|
140
|
-
`,1);o=t[
|
|
141
|
-
`,1):_(`bash: hash: -${
|
|
142
|
-
`,1);
|
|
143
|
-
`,1);let
|
|
144
|
-
`,
|
|
145
|
-
`,1);let
|
|
146
|
-
`:
|
|
147
|
-
`:(
|
|
148
|
-
`,
|
|
149
|
-
`,1);let
|
|
150
|
-
`);let
|
|
151
|
-
`;else{
|
|
152
|
-
`;for(let[,
|
|
153
|
-
`}return
|
|
154
|
-
`,
|
|
155
|
-
`,
|
|
132
|
+
`,2)}if(n.length===0)return F;let r=n.join(" ");if(r.trim()==="")return F;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 de||o instanceof he||o instanceof ce||o instanceof B)throw o;if(o.name==="ParseException")return _(`bash: eval: ${o.message}
|
|
133
|
+
`);throw o}finally{e.state.groupStdin=i}}function on(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
|
|
134
|
+
`,s=2):s=(i%256+256)%256}throw new B(s,"",n)}function ln(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}"
|
|
135
|
+
`}}return M(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;Lt(e,o)}return F}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
|
|
136
|
+
`,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 is(e,t){if(t.length<2)return _(`bash: getopts: usage: getopts optstring name [arg ...]
|
|
137
|
+
`);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 p=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let w=1;w<=p;w++)o.push(e.state.env.get(String(w))||"")}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"),is(e,t);let h=a.indexOf(d);if(h===-1){let p="";return i?e.state.env.set("OPTARG",d):p=`bash: illegal option -- ${d}
|
|
138
|
+
`,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:p}}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 p="";return i?(e.state.env.set("OPTARG",d),r||e.state.env.set(n,":")):(p=`bash: option requires an argument -- ${d}
|
|
139
|
+
`,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:p}}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 cn(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 y=t[c];if(y==="--"){c++,l.push(...t.slice(c));break}if(y==="-r")s=!0,c++;else if(y==="-d")n=!0,c++;else if(y==="-l")r=!0,c++;else if(y==="-t")a=!0,c++;else if(y==="-p"){if(i=!0,c++,c>=t.length)return _(`bash: hash: -p: option requires an argument
|
|
140
|
+
`,1);o=t[c],c++}else if(y.startsWith("-")&&y.length>1){for(let p of y.slice(1))if(p==="r")s=!0;else if(p==="d")n=!0;else if(p==="l")r=!0;else if(p==="t")a=!0;else return p==="p"?_(`bash: hash: -p: option requires an argument
|
|
141
|
+
`,1):_(`bash: hash: -${p}: invalid option
|
|
142
|
+
`,1);c++}else l.push(y),c++}if(s)return e.state.hashTable.clear(),F;if(n){if(l.length===0)return _(`bash: hash: -d: option requires an argument
|
|
143
|
+
`,1);let y=!1,p="";for(let w of l)e.state.hashTable.has(w)?e.state.hashTable.delete(w):(p+=`bash: hash: ${w}: not found
|
|
144
|
+
`,y=!0);return y?_(p,1):F}if(a){if(l.length===0)return _(`bash: hash: -t: option requires an argument
|
|
145
|
+
`,1);let y="",p=!1,w="";for(let $ of l){let g=e.state.hashTable.get($);g?l.length>1?y+=`${$} ${g}
|
|
146
|
+
`:y+=`${g}
|
|
147
|
+
`:(w+=`bash: hash: ${$}: not found
|
|
148
|
+
`,p=!0)}return p?{exitCode:1,stdout:y,stderr:w}:M(y)}if(i){if(l.length===0)return _(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
|
|
149
|
+
`,1);let y=l[0];return e.state.hashTable.set(y,o),F}if(l.length===0){if(e.state.hashTable.size===0)return M(`hash: hash table empty
|
|
150
|
+
`);let y="";if(r)for(let[p,w]of e.state.hashTable)y+=`builtin hash -p ${w} ${p}
|
|
151
|
+
`;else{y=`hits command
|
|
152
|
+
`;for(let[,p]of e.state.hashTable)y+=` 1 ${p}
|
|
153
|
+
`}return M(y)}let u=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let y of l){if(y.includes("/")){f+=`bash: hash: ${y}: cannot use / in name
|
|
154
|
+
`,u=!0;continue}let p=!1;for(let w of h){if(!w)continue;let $=`${w}/${y}`;if(await e.fs.exists($)){e.state.hashTable.set(y,$),p=!0;break}}p||(f+=`bash: hash: ${y}: not found
|
|
155
|
+
`,u=!0)}return u?_(f,1):F}var Mr=new Map([[":",[": [arguments]",`Null command.
|
|
156
156
|
No effect; the command does nothing.
|
|
157
157
|
Exit Status:
|
|
158
158
|
Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
|
|
@@ -497,32 +497,32 @@ eval: usage: eval [arg ...]
|
|
|
497
497
|
job specification, and reports its termination status.
|
|
498
498
|
Exit Status:
|
|
499
499
|
Returns the status of the last ID; fails if ID is invalid or an invalid
|
|
500
|
-
option is given.`]]]),
|
|
501
|
-
`,2)}r++}else n.push(l),r++}if(n.length===0)return
|
|
502
|
-
`,a=!0;continue}for(let
|
|
503
|
-
`:i+=`${
|
|
500
|
+
option is given.`]]]),Wr=[...Mr.keys()].sort();function un(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
|
|
501
|
+
`,2)}r++}else n.push(l),r++}if(n.length===0)return Ba();let i="",a=!1,o="";for(let l of n){let c=Va(l);if(c.length===0){o+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
|
|
502
|
+
`,a=!0;continue}for(let u of c){let f=Mr.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
|
|
503
|
+
`:i+=`${u}: ${d}
|
|
504
504
|
${h}
|
|
505
|
-
`}}return{exitCode:a?1:0,stdout:i,stderr:o}}function
|
|
505
|
+
`}}return{exitCode:a?1:0,stdout:i,stderr:o}}function Va(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=mt(`^${t}$`);return Wr.filter(n=>s.test(n))}function Ba(){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=Wr.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 M(`${e.join(`
|
|
506
506
|
`)}
|
|
507
|
-
`)}function
|
|
508
|
-
`);let s=
|
|
509
|
-
`)}return k("","",n===0?1:0)}async function
|
|
510
|
-
`);let s=e.state.localScopes[e.state.localScopes.length-1],n="",r=0,i=!1,a=!1,o=!1,l=[];for(let
|
|
511
|
-
`)}return k(
|
|
512
|
-
`,r=1;continue}if(ee(e,
|
|
513
|
-
`,r=1;continue}let
|
|
514
|
-
`,r=1;continue}e.state.env.set(
|
|
515
|
-
`,r=0,i=0,a=0,o=!1,l="MAPFILE",
|
|
516
|
-
`,
|
|
517
|
-
`,1);let
|
|
518
|
-
`,1);f.push(
|
|
519
|
-
`,a="",o=-1,l=-1,
|
|
520
|
-
`){P+=2,
|
|
521
|
-
`){C+=2;continue}if(D
|
|
522
|
-
`&&
|
|
523
|
-
`)&&(
|
|
524
|
-
`,1);
|
|
525
|
-
`,2);s=(r%256+256)%256}throw new
|
|
507
|
+
`)}function ja(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 fn(e,t){if(t.length===0)return _(`bash: let: expression expected
|
|
508
|
+
`);let s=ja(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 j(e,o.expression.expression))}}catch(i){return _(`bash: let: ${r}: ${i.message}
|
|
509
|
+
`)}return k("","",n===0?1:0)}async function dn(e,t){if(e.state.localScopes.length===0)return _(`bash: local: can only be used in a function
|
|
510
|
+
`);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}
|
|
511
|
+
`)}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 $=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
|
|
512
|
+
`,r=1;continue}if(ee(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let m=`${u}_`;for(let v of e.state.env.keys())v.startsWith(m)&&!v.includes("__")&&(s.has(v)||s.set(v,e.state.env.get(v)))}let g=`${u}_`;for(let m of e.state.env.keys())m.startsWith(g)&&!m.includes("__")&&e.state.env.delete(m);let b=Ne($);for(let m=0;m<b.length;m++)e.state.env.set(`${u}_${m}`,b[m]);e.state.env.set(`${u}__length`,String(b.length)),Ve(e,u),i&&Ie(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){u=h[1];let $=h[2];if(ee(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let S=`${u}_`;for(let N of e.state.env.keys())N.startsWith(S)&&!N.includes("__")&&(s.has(N)||s.set(N,e.state.env.get(N)));let O=`${u}__length`;e.state.env.has(O)&&!s.has(O)&&s.set(O,e.state.env.get(O))}let g=Ne($),b=ne(e,u),m=0,v=e.state.env.get(u);b.length===0&&v!==void 0?(e.state.env.set(`${u}_0`,v),e.state.env.delete(u),m=1):b.length>0&&(m=Math.max(...b)+1);for(let S=0;S<g.length;S++)e.state.env.set(`${u}_${m+S}`,G(e,g[S]));let E=m+g.length;e.state.env.set(`${u}__length`,String(E)),Ve(e,u),i&&Ie(e,u);continue}let y=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(y){u=y[1];let $=G(e,y[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+$),Ve(e,u),i&&Ie(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){u=p[1];let $=p[2],g=G(e,p[3]);if(ee(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let v=`${u}_`;for(let S of e.state.env.keys())S.startsWith(v)&&!S.includes("__")&&(s.has(S)||s.set(S,e.state.env.get(S)));let E=`${u}__length`;e.state.env.has(E)&&!s.has(E)&&s.set(E,e.state.env.get(E))}let b;try{let v=new V,E=Q(v,$);b=await j(e,E.expression)}catch{let v=parseInt($,10);b=Number.isNaN(v)?0:v}e.state.env.set(`${u}_${b}`,g);let m=parseInt(e.state.env.get(`${u}__length`)??"0",10);b>=m&&e.state.env.set(`${u}__length`,String(b+1)),Ve(e,u),i&&Ie(e,u);continue}if(c.includes("=")){let $=c.indexOf("=");u=c.slice(0,$),f=G(e,c.slice($+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
|
|
513
|
+
`,r=1;continue}let w=s.has(u);if(f!==void 0){let $=e.state.env.get(u);if(e.state.tempEnvBindings){let g=e.state.accessedTempEnvVars?.has(u),b=e.state.mutatedTempEnvVars?.has(u);if(!g&&!b)for(let m=e.state.tempEnvBindings.length-1;m>=0;m--){let v=e.state.tempEnvBindings[m];if(v.has(u)){$=v.get(u);break}}}Sr(e,u,$)}if(!w){let $=e.state.env.get(u);if(e.state.tempEnvBindings)for(let g=e.state.tempEnvBindings.length-1;g>=0;g--){let b=e.state.tempEnvBindings[g];if(b.has(u)){$=b.get(u);break}}if(s.set(u,$),a){let g=`${u}_`;for(let m of e.state.env.keys())m.startsWith(g)&&!m.includes("__")&&(s.has(m)||s.set(m,e.state.env.get(m)));let b=`${u}__length`;e.state.env.has(b)&&!s.has(b)&&s.set(b,e.state.env.get(b))}}if(a&&f===void 0){let $=`${u}_`;for(let g of e.state.env.keys())g.startsWith($)&&!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
|
|
514
|
+
`,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 $=e.state.tempEnvBindings?.some(g=>g.has(u));!w&&!$&&e.state.env.delete(u)}Ve(e,u),i&&Ie(e,u)}return k("",n,r)}function hn(e,t,s){let n=`
|
|
515
|
+
`,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]||`
|
|
516
|
+
`,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,y=0,p=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let g=d.indexOf(n);if(g===-1){if(d.length>0){if(y<a)y++;else if(r===0||h<r){if(i+h>=p)return k("",`mapfile: array element limit exceeded (${p})
|
|
517
|
+
`,1);let v=d,E=v.indexOf("\0");E!==-1&&(v=v.substring(0,E)),f.push(v),h++}}break}let b=d.substring(0,g),m=b.indexOf("\0");if(m!==-1&&(b=b.substring(0,m)),!o&&n!=="\0"&&(b+=n),d=d.substring(g+n.length),y<a){y++;continue}if(r>0&&h>=r)break;if(i+h>=p)return k("",`mapfile: array element limit exceeded (${p})
|
|
518
|
+
`,1);f.push(b),h++}i===0&&Ce(e,l);for(let g=0;g<f.length;g++)e.state.env.set(`${l}_${i+g}`,f[g]);let w=parseInt(e.state.env.get(`${l}__length`)||"0",10),$=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(w,$))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),k("","",0)}function Ha(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 Ua(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function pn(e,t,s,n=-1){let r=!1,i=`
|
|
519
|
+
`,a="",o=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,y=!1,p=(C,P)=>{let D=1;for(;D<C.length;){let A=C[D];if(A==="r")r=!0,D++;else if(A==="s")D++;else{if(A==="d")return D+1<C.length?(i=C.substring(D+1),{nextArgIndex:P+1}):P+1<t.length?(i=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(A==="n"){if(D+1<C.length){let T=C.substring(D+1);return o=Number.parseInt(T,10),(Number.isNaN(o)||o<0)&&(y=!0,o=0),{nextArgIndex:P+1}}else if(P+1<t.length)return o=Number.parseInt(t[P+1],10),(Number.isNaN(o)||o<0)&&(y=!0,o=0),{nextArgIndex:P+2};return{nextArgIndex:P+1}}else if(A==="N"){if(D+1<C.length){let T=C.substring(D+1);return l=Number.parseInt(T,10),(Number.isNaN(l)||l<0)&&(y=!0,l=0),{nextArgIndex:P+1}}else if(P+1<t.length)return l=Number.parseInt(t[P+1],10),(Number.isNaN(l)||l<0)&&(y=!0,l=0),{nextArgIndex:P+2};return{nextArgIndex:P+1}}else{if(A==="a")return D+1<C.length?(c=C.substring(D+1),{nextArgIndex:P+1}):P+1<t.length?(c=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(A==="p")return D+1<C.length?(a=C.substring(D+1),{nextArgIndex:P+1}):P+1<t.length?(a=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(A==="u"){if(D+1<C.length){let T=C.substring(D+1);return u=Number.parseInt(T,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:P+1}}else if(P+1<t.length)return u=Number.parseInt(t[P+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:P+2};return{nextArgIndex:P+1}}else if(A==="t"){if(D+1<C.length){let T=C.substring(D+1);return f=Number.parseFloat(T),Number.isNaN(f)&&(f=0),{nextArgIndex:P+1}}else if(P+1<t.length)return f=Number.parseFloat(t[P+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:P+2};return{nextArgIndex:P+1}}else if(A==="e"||A==="i"||A==="P"){if(A==="i"&&P+1<t.length)return{nextArgIndex:P+2};D++}else D++}}}return{nextArgIndex:P+1}};for(;h<t.length;){let C=t[h];if(C.startsWith("-")&&C.length>1&&C!=="--"){let P=p(C,h);if(P.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(P.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=P.nextArgIndex}else if(C==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(C),h++}if(y)return k("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)Ce(e,c);else{for(let C of d)e.state.env.set(C,"");d.length===0&&e.state.env.set("REPLY","")}return k("","",0)}if(f<0&&f!==-1)return k("","",1);let w=s;u>=0?e.state.fileDescriptors?w=e.state.fileDescriptors.get(u)||"":w="":!w&&e.state.groupStdin!==void 0&&(w=e.state.groupStdin);let $=i===""?"\0":i,g="",b=0,m=!0,v=C=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,w.substring(C));else if(n>=0&&e.state.fileDescriptors){let P=e.state.fileDescriptors.get(n);if(P?.startsWith("__rw__:")){let D=Ha(P);if(D){let A=D.position+C;e.state.fileDescriptors.set(n,Ua(D.path,A,D.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=w.substring(C))};if(l>=0){let C=Math.min(l,w.length);g=w.substring(0,C),b=C,m=C>=l,v(b);let P=d[0]||"REPLY";e.state.env.set(P,g);for(let D=1;D<d.length;D++)e.state.env.set(d[D],"");return k("","",m?0:1)}else if(o>=0){let C=0,P=0,D=!1;for(;P<w.length&&C<o;){let A=w[P];if(A===$){b=P+1,D=!0;break}if(!r&&A==="\\"&&P+1<w.length){let T=w[P+1];if(T===$&&$===`
|
|
520
|
+
`){P+=2,b=P;continue}if(T===$){P+=2,C++,g+=T,b=P;continue}g+=T,P+=2,C++,b=P}else g+=A,P++,C++,b=P}m=C>=o||D,v(b)}else{b=0;let C=0;for(;C<w.length;){let P=w[C];if(P===$){b=C+$.length,m=!0;break}if(!r&&P==="\\"&&C+1<w.length){let D=w[C+1];if(D===`
|
|
521
|
+
`){C+=2;continue}if(D===$){g+=D,C+=2;continue}g+=P,g+=D,C+=2;continue}g+=P,C++}if(C>=w.length&&(m=!1,b=C,g.length===0&&w.length===0)){for(let P of d)e.state.env.set(P,"");return c&&Ce(e,c),k("","",1)}v(b)}$===`
|
|
522
|
+
`&&g.endsWith(`
|
|
523
|
+
`)&&(g=g.slice(0,-1));let E=C=>r?C:C.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",E(g)),k("","",m?0:1);let S=Wn(e.state.env);if(c){let{words:C}=$s(g,S,void 0,r),P=e.limits?.maxArrayElements??1e5;if(C.length>P)return k("",`read: array element limit exceeded (${P})
|
|
524
|
+
`,1);Ce(e,c);for(let D=0;D<C.length;D++)e.state.env.set(`${c}_${D}`,E(C[D]));return k("","",m?0:1)}let O=d.length,{words:N,wordStarts:x}=$s(g,S,O,r);for(let C=0;C<d.length;C++){let P=d[C];if(C<d.length-1)e.state.env.set(P,E(N[C]??""));else if(C<x.length){let D=g.substring(x[C]);D=zn(D,S,r),D=E(D),e.state.env.set(P,D)}else e.state.env.set(P,"")}return k("","",m?0:1)}function mn(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return _("bash: return: 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
|
|
525
|
+
`,2);s=(r%256+256)%256}throw new ce(s)}var as=`set: usage: set [-eux] [+eux] [-o option] [+o option]
|
|
526
526
|
Options:
|
|
527
527
|
-e Exit immediately if a command exits with non-zero status
|
|
528
528
|
+e Disable -e
|
|
@@ -538,174 +538,174 @@ Options:
|
|
|
538
538
|
+o pipefail Disable pipefail
|
|
539
539
|
-o xtrace Same as -x
|
|
540
540
|
+o xtrace Disable xtrace
|
|
541
|
-
`,
|
|
541
|
+
`,zr=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]]),Vr=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]]),Br=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],jr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Hr(e,t,s){t!==null&&(s&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=s,at(e))}function Za(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function qa(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}]=${Ke(i)}`});return`${t}=(${n.join(" ")})`}function Ga(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ka(e,t){let s=Me(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${Ga(r)}]=${Ke(i)}`});return`${t}=(${n.join(" ")} )`}function Xa(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 Ya(e){return e.state.associativeArrays??new Set}function gn(e,t){if(t.includes("--help"))return M(as);if(t.length===0){let n=Xa(e),r=Ya(e),i=l=>{for(let c of r){let u=`${c}_`,f=`${c}__length`;if(l!==f&&l.startsWith(u)){if(l.slice(u.length).startsWith("_length"))continue;return!0}}return!1},a=[];for(let[l,c]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l)||n.has(l)||r.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&n.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&n.has(f[1])||i(l)||f&&r.has(f[1])||a.push([l,c])}let o=[];for(let[l,c]of a.sort(([u],[f])=>u<f?-1:u>f?1:0))o.push(`${l}=${ns(c)}`);for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))o.push(qa(e,l));for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))o.push(Ka(e,l));return o.sort((l,c)=>{let u=l.split("=")[0],f=c.split("=")[0];return u<f?-1:u>f?1:0}),M(o.length>0?`${o.join(`
|
|
542
542
|
`)}
|
|
543
|
-
`:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&
|
|
544
|
-
${
|
|
543
|
+
`:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&Za(t,s)){let r=t[s+1];if(!Vr.has(r)){let i=`bash: set: ${r}: invalid option name
|
|
544
|
+
${as}`;if(e.state.options.posix)throw new be(1,"",i);return _(i)}Hr(e,Vr.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=Br.map(o=>`${o.padEnd(16)}${e.state.options[o]?"on":"off"}`),i=jr.map(o=>`${o.padEnd(16)}off`),a=[...r,...i].sort();return M(`${a.join(`
|
|
545
545
|
`)}
|
|
546
|
-
`)}if(n==="+o"){let r=
|
|
546
|
+
`)}if(n==="+o"){let r=Br.map(o=>`set ${e.state.options[o]?"-o":"+o"} ${o}`),i=jr.map(o=>`set +o ${o}`),a=[...r,...i].sort();return M(`${a.join(`
|
|
547
547
|
`)}
|
|
548
|
-
`)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let a=n[i];if(!
|
|
549
|
-
${
|
|
550
|
-
${
|
|
551
|
-
`;if(e.state.options.posix)throw new
|
|
552
|
-
`;if(e.state.options.posix)throw new
|
|
553
|
-
`,2);let n=s[0],r=null,i=null;if(n.includes("/")){let
|
|
554
|
-
`);let a=new Map;if(s.length>1){for(let
|
|
555
|
-
`);throw
|
|
556
|
-
`,r=1;continue}let
|
|
557
|
-
`,r=1;continue}if(
|
|
558
|
-
`,r=1;continue}let
|
|
559
|
-
`,r=1;continue}let
|
|
560
|
-
`,r=1;continue}let
|
|
561
|
-
`,r=1;continue}let f=
|
|
562
|
-
`,r=1;continue}let
|
|
563
|
-
`,r=1;continue}if(
|
|
564
|
-
`,r=1;continue}let
|
|
565
|
-
`,r=1;continue}let
|
|
566
|
-
`,r=1;continue}let o=i;if(
|
|
567
|
-
`,r=1;continue}let l=
|
|
568
|
-
`}}}l++}else break}for(;l<t.length;)o.push(t[l]),l++;if(a)return
|
|
569
|
-
`};if(o.length===0){if(s||n){let h=[];for(let
|
|
548
|
+
`)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let a=n[i];if(!zr.has(a)){let o=`bash: set: ${n[0]}${a}: invalid option
|
|
549
|
+
${as}`;if(e.state.options.posix)throw new be(1,"",o);return _(o)}Hr(e,zr.get(a)??null,r)}s++;continue}if(n==="--")return yn(e,t.slice(s+1)),F;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,at(e),s+1<t.length)return yn(e,t.slice(s+1)),F;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
|
|
550
|
+
${as}`;if(e.state.options.posix)throw new be(1,"",r);return _(r)}return yn(e,t.slice(s)),F}return F}function yn(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 wn(e,t){let s=1;if(t.length>0){let a=Number.parseInt(t[0],10);if(Number.isNaN(a)||a<0){let o=`bash: shift: ${t[0]}: numeric argument required
|
|
551
|
+
`;if(e.state.options.posix)throw new be(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
|
|
552
|
+
`;if(e.state.options.posix)throw new be(1,"",a);return _(a)}if(s===0)return F;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(" ")),F}async function vn(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return k("",`bash: source: filename argument required
|
|
553
|
+
`,2);let n=s[0],r=null,i=null;if(n.includes("/")){let c=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(c),r=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${n}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),r=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(f),r=f}catch{}}}if(i===null)return _(`bash: ${n}: No such file or directory
|
|
554
|
+
`);let a=new Map;if(s.length>1){for(let u=1;u<=9;u++)a.set(String(u),e.state.env.get(String(u)));a.set("#",e.state.env.get("#")),a.set("@",e.state.env.get("@"));let c=s.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let o=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=o,s.length>1)for(let[c,u]of a)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new Y(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=n;try{let c=Ee(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof B)throw c;if(c instanceof ce)return k(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return _(`bash: ${n}: ${c.message}
|
|
555
|
+
`);throw c}}function Ur(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Qa(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Zr(e,t){if(Qa(t))return null;try{let s=new V,n=Q(s,t);return await j(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function qr(e,t){if(e.state.localVarStack?.has(t)){let n=es(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)Jt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),bn(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),Jt(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||Jt(e,t),!0}}return!1}function bn(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 Gr(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 I(e,r)}if(t.includes("$")){let n=new V().parseWordFromString(t,!1,!1);return I(e,n)}return t}async function $n(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 b=Se(e,d);for(let[m]of b)e.state.env.delete(`${d}_${m}`);e.state.env.delete(d);continue}let y=e.state.associativeArrays?.has(d);if(y){let b=await Gr(e,h);e.state.env.delete(`${d}_${b}`);continue}let p=As(e,d),w=e.state.declaredVars?.has(d);if((e.state.env.has(d)||w)&&!p&&!y){n+=`bash: unset: ${d}: not an array variable
|
|
556
|
+
`,r=1;continue}let g=await Zr(e,h);if(g===null&&p){n+=`bash: unset: ${h}: not a valid identifier
|
|
557
|
+
`,r=1;continue}if(g===null)continue;if(g<0){let b=Se(e,d),m=b.length,v=e.state.currentLine;if(m===0){n+=`bash: line ${v}: unset: [${g}]: bad array subscript
|
|
558
|
+
`,r=1;continue}let E=m+g;if(E<0){n+=`bash: line ${v}: unset: [${g}]: bad array subscript
|
|
559
|
+
`,r=1;continue}let S=b[E][0];e.state.env.delete(`${d}_${S}`);continue}e.state.env.delete(`${d}_${g}`);continue}if(!Ur(i)){n+=`bash: unset: \`${i}': not a valid identifier
|
|
560
|
+
`,r=1;continue}let u=i;if(ye(e,i)){let d=We(e,i);d&&d!==i&&(u=d)}if(Ze(e,u)){n+=`bash: unset: ${u}: cannot unset: readonly variable
|
|
561
|
+
`,r=1;continue}let f=lt(e,u);if(f!==void 0&&f!==e.state.callDepth)qr(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 y=es(e,u);y?y.value===void 0?e.state.env.delete(u):e.state.env.set(u,y.value):e.state.env.delete(u)}else e.state.env.delete(u)}else bn(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 p=Se(e,c);for(let[w]of p)e.state.env.delete(`${c}_${w}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let p=await Gr(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=As(e,c);if(e.state.env.has(c)&&!d&&!f){n+=`bash: unset: ${c}: not an array variable
|
|
562
|
+
`,r=1;continue}let y=await Zr(e,u);if(y===null&&d){n+=`bash: unset: ${u}: not a valid identifier
|
|
563
|
+
`,r=1;continue}if(y===null)continue;if(y<0){let p=Se(e,c),w=p.length,$=e.state.currentLine;if(w===0){n+=`bash: line ${$}: unset: [${y}]: bad array subscript
|
|
564
|
+
`,r=1;continue}let g=w+y;if(g<0){n+=`bash: line ${$}: unset: [${y}]: bad array subscript
|
|
565
|
+
`,r=1;continue}let b=p[g][0];e.state.env.delete(`${c}_${b}`);continue}e.state.env.delete(`${c}_${y}`);continue}if(!Ur(i)){n+=`bash: unset: \`${i}': not a valid identifier
|
|
566
|
+
`,r=1;continue}let o=i;if(ye(e,i)){let c=We(e,i);c&&c!==i&&(o=c)}if(Ze(e,o)){n+=`bash: unset: ${o}: cannot unset: readonly variable
|
|
567
|
+
`,r=1;continue}let l=lt(e,o);if(l!==void 0&&l!==e.state.callDepth)qr(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=es(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 bn(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return k("",n,r)}var En=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Ja=["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 os(e){return En.includes(e)}function eo(e){return Ja.includes(e)}function Kr(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 y=d[h];switch(y){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: -${y}: invalid option
|
|
568
|
+
`}}}l++}else break}for(;l<t.length;)o.push(t[l]),l++;if(a)return to(e,o,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
|
|
569
|
+
`};if(o.length===0){if(s||n){let h=[];for(let y of En){let p=e.state.shoptOptions[y];s&&p?h.push(r?`shopt -s ${y}`:`${y} on`):n&&!p&&h.push(r?`shopt -u ${y}`:`${y} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
|
|
570
570
|
`)}
|
|
571
|
-
`:"",stderr:""}}let d=[];for(let h of
|
|
571
|
+
`:"",stderr:""}}let d=[];for(let h of En){let y=e.state.shoptOptions[h];d.push(r?`shopt ${y?"-s":"-u"} ${h}`:`${h} ${y?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
|
|
572
572
|
`)}
|
|
573
|
-
`,stderr:""}}let
|
|
574
|
-
`,
|
|
573
|
+
`,stderr:""}}let c=!1,u="",f=[];for(let d of o){if(!os(d)&&!eo(d)){u+=`shopt: ${d}: invalid shell option name
|
|
574
|
+
`,c=!0;continue}if(s)os(d)&&(e.state.shoptOptions[d]=!0,Ds(e));else if(n)os(d)&&(e.state.shoptOptions[d]=!1,Ds(e));else if(os(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(`
|
|
575
575
|
`)}
|
|
576
|
-
`:"",stderr:
|
|
576
|
+
`:"",stderr:u}}function to(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 y=o.includes(h),p=a.get(h),w=y||!p?!1:e.state.options[p];s&&!w||n&&w||d.push(r?`set ${w?"-o":"+o"} ${h}`:`${h} ${w?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
|
|
577
577
|
`)}
|
|
578
|
-
`:"",stderr:""}}let
|
|
579
|
-
`,
|
|
578
|
+
`:"",stderr:""}}let c=!1,u="",f=[];for(let d of t){let h=a.has(d),y=o.includes(d);if(!h&&!y){u+=`shopt: ${d}: invalid option name
|
|
579
|
+
`,c=!0;continue}if(y){s||n||(i?c=!0:r?(f.push(`set +o ${d}`),c=!0):(f.push(`${d} off`),c=!0));continue}let p=a.get(d);if(p)if(s)p==="vi"?e.state.options.emacs=!1:p==="emacs"&&(e.state.options.vi=!1),e.state.options[p]=!0,at(e);else if(n)e.state.options[p]=!1,at(e);else{let w=e.state.options[p];i?w||(c=!0):r?(f.push(`set ${w?"-o":"+o"} ${d}`),w||(c=!0)):(f.push(`${d} ${w?"on":"off"}`),w||(c=!0))}}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
|
|
580
580
|
`)}
|
|
581
|
-
`:"",stderr:
|
|
582
|
-
`;h=!0,
|
|
583
|
-
`,h=!0,
|
|
584
|
-
`;else{let
|
|
585
|
-
`;
|
|
586
|
-
`:
|
|
587
|
-
`),
|
|
588
|
-
`:
|
|
589
|
-
`),
|
|
590
|
-
`;else{let
|
|
591
|
-
`;
|
|
592
|
-
`:
|
|
593
|
-
`),
|
|
594
|
-
`:r?
|
|
595
|
-
`:
|
|
596
|
-
`,h=!0,
|
|
597
|
-
`:r?
|
|
598
|
-
`:
|
|
599
|
-
`,h=!0,
|
|
600
|
-
`)}}}return i?d=
|
|
581
|
+
`:"",stderr:u}}async function Xr(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 ls(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 so(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function Z(e,t,s,n){return((...r)=>{yt(t,s,`${n} call`);let i=e(...r);return so(i)?i.then(a=>(yt(t,s,`${n} post-await`),a),a=>{throw yt(t,s,`${n} post-await`),a}):(yt(t,s,`${n} return`),i)})}function no(e,t,s){let n={readFile:Z(e.readFile.bind(e),t,s,"fs.readFile"),...typeof e.readFileBytes=="function"?{readFileBytes:Z(e.readFileBytes.bind(e),t,s,"fs.readFileBytes")}:Object.create(null),readFileBuffer:Z(e.readFileBuffer.bind(e),t,s,"fs.readFileBuffer"),writeFile:Z(e.writeFile.bind(e),t,s,"fs.writeFile"),appendFile:Z(e.appendFile.bind(e),t,s,"fs.appendFile"),exists:Z(e.exists.bind(e),t,s,"fs.exists"),stat:Z(e.stat.bind(e),t,s,"fs.stat"),mkdir:Z(e.mkdir.bind(e),t,s,"fs.mkdir"),readdir:Z(e.readdir.bind(e),t,s,"fs.readdir"),rm:Z(e.rm.bind(e),t,s,"fs.rm"),cp:Z(e.cp.bind(e),t,s,"fs.cp"),mv:Z(e.mv.bind(e),t,s,"fs.mv"),resolvePath:Z(e.resolvePath.bind(e),t,s,"fs.resolvePath"),getAllPaths:Z(e.getAllPaths.bind(e),t,s,"fs.getAllPaths"),chmod:Z(e.chmod.bind(e),t,s,"fs.chmod"),symlink:Z(e.symlink.bind(e),t,s,"fs.symlink"),link:Z(e.link.bind(e),t,s,"fs.link"),readlink:Z(e.readlink.bind(e),t,s,"fs.readlink"),lstat:Z(e.lstat.bind(e),t,s,"fs.lstat"),realpath:Z(e.realpath.bind(e),t,s,"fs.realpath"),utimes:Z(e.utimes.bind(e),t,s,"fs.utimes")};return e.readdirWithFileTypes&&(n.readdirWithFileTypes=Z(e.readdirWithFileTypes.bind(e),t,s,"fs.readdirWithFileTypes")),n}function Yr(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,n={...e,fs:no(e.fs,e.requireDefenseContext,s)};return e.exec&&(n.exec=Z(e.exec,e.requireDefenseContext,s,"exec")),e.fetch&&(n.fetch=Z(e.fetch,e.requireDefenseContext,s,"fetch")),e.sleep&&(n.sleep=Z(e.sleep,e.requireDefenseContext,s,"sleep")),e.getRegisteredCommands&&(n.getRegisteredCommands=Z(e.getRegisteredCommands,e.requireDefenseContext,s,"getRegisteredCommands")),n}async function ti(e,t,s,n){let r=!1,i=!1,a=!1,o=!1,l=!1,c=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let w of p.slice(1))w==="t"?r=!0:w==="p"?i=!0:w==="P"?a=!0:w==="a"?o=!0:w==="f"&&(l=!0);else c.push(p);let u="",f="",d=0,h=!1,y=!1;for(let p of c){let w=!1;if(a){if(o){let E=await n(p);if(E.length>0){for(let S of E)u+=`${S}
|
|
582
|
+
`;h=!0,w=!0}}else{let E=await s(p);E&&(u+=`${E}
|
|
583
|
+
`,h=!0,w=!0)}w||(y=!0);continue}let $=!l&&e.state.functions.has(p);if(o&&$){if(!i)if(r)u+=`function
|
|
584
|
+
`;else{let E=e.state.functions.get(p),S=E?Qr(p,E):`${p} is a function
|
|
585
|
+
`;u+=S}w=!0}let g=e.state.env.get(`BASH_ALIAS_${p}`);if(g!==void 0&&(o||!w)&&(i||(r?u+=`alias
|
|
586
|
+
`:u+=`${p} is aliased to \`${g}'
|
|
587
|
+
`),w=!0,!o)||Ws.has(p)&&(o||!w)&&(i||(r?u+=`keyword
|
|
588
|
+
`:u+=`${p} is a shell keyword
|
|
589
|
+
`),w=!0,!o))continue;if(!o&&$&&!w){if(!i)if(r)u+=`function
|
|
590
|
+
`;else{let E=e.state.functions.get(p),S=E?Qr(p,E):`${p} is a function
|
|
591
|
+
`;u+=S}w=!0;continue}if(!(ct.has(p)&&(o||!w)&&(i||(r?u+=`builtin
|
|
592
|
+
`:u+=`${p} is a shell builtin
|
|
593
|
+
`),w=!0,!o))){if(o){let E=await n(p);for(let S of E)i?u+=`${S}
|
|
594
|
+
`:r?u+=`file
|
|
595
|
+
`:u+=`${p} is ${S}
|
|
596
|
+
`,h=!0,w=!0}else if(!w){let E=await s(p);E&&(i?u+=`${E}
|
|
597
|
+
`:r?u+=`file
|
|
598
|
+
`:u+=`${p} is ${E}
|
|
599
|
+
`,h=!0,w=!0)}if(!w&&(y=!0,!r&&!i)){let E=!0;if(p.includes("/")){let S=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(S)&&(E=!1)}E&&(f+=`bash: type: ${p}: not found
|
|
600
|
+
`)}}}return i?d=y&&!h?1:0:d=y?1:0,k(u,f,d)}function Qr(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(r=>St(r)).join("; "):s=St(t.body),`${e} is a function
|
|
601
601
|
${e} ()
|
|
602
602
|
{
|
|
603
603
|
${s}
|
|
604
604
|
}
|
|
605
|
-
`}function
|
|
605
|
+
`}function St(e){if(Array.isArray(e))return e.map(t=>St(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let n=e.pipelines[s];t.push(ro(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(Jr(t.name));for(let n of t.args)s.push(Jr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>St(n)).join("; ")}; }`:"..."}function ro(e){let t=e.commands.map(s=>St(s));return(e.negated?"! ":"")+t.join(" | ")}function Jr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>ei(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=ei(s);return t}function ei(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function si(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}"
|
|
606
606
|
`:r+=`alias ${o}='${l}'
|
|
607
|
-
`;else if(
|
|
607
|
+
`;else if(Ws.has(o))n?r+=`${o} is a shell keyword
|
|
608
608
|
`:r+=`${o}
|
|
609
|
-
`;else if(
|
|
609
|
+
`;else if(ct.has(o))n?r+=`${o} is a shell builtin
|
|
610
610
|
`:r+=`${o}
|
|
611
611
|
`;else if(e.state.functions.has(o))n?r+=`${o} is a function
|
|
612
612
|
`:r+=`${o}
|
|
613
|
-
`;else if(o.includes("/")){let
|
|
613
|
+
`;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}
|
|
614
614
|
`:r+=`${o}
|
|
615
|
-
`,
|
|
616
|
-
`),a=1)}else if(e.commands.has(o)){let
|
|
615
|
+
`,u=!0)}catch{}u||(n&&(i+=`${o}: not found
|
|
616
|
+
`),a=1)}else if(e.commands.has(o)){let u=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),f=null;for(let d of u){if(!d)continue;let h=`${d}/${o}`;try{let y=await e.fs.stat(h);if(!y.isDirectory&&(y.mode&73)!==0){f=h;break}}catch{}}f||(f=`/usr/bin/${o}`),n?r+=`${o} is ${f}
|
|
617
617
|
`:r+=`${f}
|
|
618
618
|
`}else n&&(i+=`${o}: not found
|
|
619
|
-
`),a=1}return k(r,i,a)}async function
|
|
620
|
-
`);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function
|
|
619
|
+
`),a=1}return k(r,i,a)}async function ni(e,t){if(t.includes("/")){let r=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(r)){try{let i=await e.fs.stat(r);if(i.isDirectory||!((i.mode&73)!==0))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}async function ri(e,t,s,n,r,i,a,o){let{ctx:l,runCommand:c}=e;if(l.coverage&&ct.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return ln(l,s);if(t==="unset")return $n(l,s);if(t==="exit")return on(l,s);if(t==="local")return dn(l,s);if(t==="set")return gn(l,s);if(t==="break")return Is(l,s);if(t==="continue")return Zs(l,s);if(t==="return")return mn(l,s);if(t==="eval"&&l.state.options.posix)return rs(l,s,r);if(t==="shift")return wn(l,s);if(t==="getopts")return is(l,s);if(t==="compgen")return Bs(l,s);if(t==="complete")return Hs(l,s);if(t==="compopt")return Us(l,s);if(t==="pushd")return await nn(l,s);if(t==="popd")return rn(l,s);if(t==="dirs")return an(l,s);if(t==="source"||t===".")return vn(l,s);if(t==="read")return pn(l,s,r,o);if(t==="mapfile"||t==="readarray")return hn(l,s,r);if(t==="declare"||t==="typeset")return en(l,s);if(t==="readonly")return tn(l,s);if(!i){let u=l.state.functions.get(t);if(u)return ss(l,u,s,r)}if(t==="eval")return rs(l,s,r);if(t==="cd")return await xs(l,s);if(t===":"||t==="true")return F;if(t==="false")return X(!1);if(t==="let")return fn(l,s);if(t==="command")return io(e,s,r);if(t==="builtin")return ao(e,s,r);if(t==="shopt")return Kr(l,s);if(t==="exec"){if(s.length===0)return F;let[u,...f]=s;return c(u,f,[],r,!1,!1,-1)}if(t==="wait")return F;if(t==="type")return await ti(l,s,u=>ni(l,u),u=>ls(l,u));if(t==="hash")return cn(l,s);if(t==="help")return un(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 bt(l,u)}return null}async function io(e,t,s){let{ctx:n,runCommand:r}=e;if(t.length===0)return F;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 F;if(o||a)return await si(n,l,o,a);let[c,...u]=l;return r(c,u,[],s,!0,i,-1)}async function ao(e,t,s){let{runCommand:n}=e;if(t.length===0)return F;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return F;let i=r[0];if(!ct.has(i))return _(`bash: builtin: ${i}: not a shell builtin
|
|
620
|
+
`);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function ii(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e,c=await Xr(i,t,r?"/usr/bin:/bin":void 0);if(!c)return dr(t)?_(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
|
|
621
621
|
`,127):_(`bash: ${t}: command not found
|
|
622
|
-
`,127);if("error"in
|
|
622
|
+
`,127);if("error"in c)return c.error==="permission_denied"?_(`bash: ${t}: Permission denied
|
|
623
623
|
`,126):_(`bash: ${t}: No such file or directory
|
|
624
|
-
`,127);if("script"in
|
|
625
|
-
`)}}async function
|
|
626
|
-
`,exitCode:1}}async function
|
|
627
|
-
`,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function
|
|
628
|
-
`);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
|
|
624
|
+
`,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||"",h=a(),y={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:h,stdin:d,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},p=Yr(y,t);try{let w=()=>Ln(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(s,p));return u.trusted?await ve.runTrustedAsync(()=>w()):await w()}catch(w){if(w instanceof Y||w instanceof Je)throw w;return _(`${t}: ${Te($e(w))}
|
|
625
|
+
`)}}async function Sn(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 At(e,t,s,n){if(e instanceof de)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 he)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 ce||e instanceof pe||e instanceof B||e instanceof Y)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=$e(e);return{action:"error",stdout:t,stderr:`${s}${r}
|
|
626
|
+
`,exitCode:1}}async function cs(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(It(o)||o instanceof pe||o instanceof B||o instanceof Y||o instanceof Re)throw o.prependOutput(r,i),o;return{stdout:r,stderr:`${i}${$e(o)}
|
|
627
|
+
`,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function ai(e,t){let s="",n="";for(let r of t.clauses){let i=await Sn(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return cs(e,r.body,s,n)}return t.elseBody?cs(e,t.elseBody,s,n):k(s,n,0)}async function oi(e,t){let s=await Oe(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
|
|
628
|
+
`);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 ke(e,c);o.push(...u.values)}}catch(c){if(c instanceof Dt)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of o){a++,a>e.limits.maxLoopIterations&&Pe(`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=At(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 q(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=k(n,r,i);return q(e,l,t.redirections)}async function li(e,t){let s=await Oe(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 j(e,t.init.expression),e.state.loopDepth++;try{for(;o++,o>e.limits.maxLoopIterations&&Pe(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await j(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=At(c,r,i,e.state.loopDepth);if(r=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await j(e,t.update.expression);continue}if(u.action==="error"){let f=k(r,i,u.exitCode??1);return q(e,f,t.redirections)}throw u.error}t.update&&await j(e,t.update.expression)}}finally{e.state.loopDepth--}let l=k(r,i,a);return q(e,l,t.redirections)}async function ci(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 I(e,u.content);u.stripTabs&&(f=f.split(`
|
|
629
629
|
`).map(d=>d.replace(/^\t+/,"")).join(`
|
|
630
|
-
`)),o=f}else if(
|
|
631
|
-
`;else if(
|
|
632
|
-
`)}let l=e.state.groupStdin;o&&(e.state.groupStdin=o),e.state.loopDepth++;try{for(;;){a++,a>e.limits.maxLoopIterations&&
|
|
633
|
-
`,t||
|
|
634
|
-
`),r=e.includes(" "),i=e.includes("\\"),a=e.includes("'");if(s||n||r||i){let l="";for(let
|
|
635
|
-
`?l+="\\n":
|
|
636
|
-
`}async function
|
|
637
|
-
`:""}async function
|
|
630
|
+
`)),o=f}else if(c.operator==="<<<"&&c.target.type==="Word")o=`${await I(e,c.target)}
|
|
631
|
+
`;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await I(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);o=await e.fs.readFile(f)}catch{let u=await I(e,c.target);return _(`bash: ${u}: No such file or directory
|
|
632
|
+
`)}let l=e.state.groupStdin;o&&(e.state.groupStdin=o),e.state.loopDepth++;try{for(;;){a++,a>e.limits.maxLoopIterations&&Pe(`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 y=await e.executeStatement(h);n+=y.stdout,r+=y.stderr,c=y.exitCode}}catch(h){if(h instanceof de){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 he){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 y=await e.executeStatement(h);n+=y.stdout,r+=y.stderr,i=y.exitCode}}catch(h){let y=At(h,n,r,e.state.loopDepth);if(n=y.stdout,r=y.stderr,y.action==="break")break;if(y.action==="continue")continue;if(y.action==="error")return k(n,r,y.exitCode??1);throw y.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return k(n,r,i)}async function ui(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Pe(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let a=await Sn(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=At(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 fi(e,t){let s=await Oe(e,t.redirections);if(s)return s;let n="",r="",i=0,a=await I(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 I(e,d);qn(d)&&(h=Un(h));let y=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(ot(a,h,y,p)){f=!0;break}}if(f){let d=await cs(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 q(e,l,t.redirections)}function An(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function di(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 hi="+ ";async function pi(e){let t=e.state.env.get("PS4");if(t===void 0)return hi;if(t==="")return"";try{let n=new V().parseWordFromString(t,!1,!1);return await I(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
|
|
633
|
+
`,t||hi}}function oo(e){return e.map(t=>lo(t)).join(" ")}function lo(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
|
|
634
|
+
`),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===`
|
|
635
|
+
`?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 mi(e,t,s){if(!e.state.options.xtrace)return"";let n=await pi(e),r=[t,...s],i=oo(r);return`${n}${i}
|
|
636
|
+
`}async function yi(e,t,s){return e.state.options.xtrace?`${await pi(e)}${t}=${s}
|
|
637
|
+
`:""}async function wi(e,t,s){let n=t.timed?ws():0,r="",i=F,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],y=d===t.commands.length-1,p=d===0;c&&(e.state.lastArg="",p||(e.state.groupStdin=void 0));let $=c&&(!y||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(h,r)}catch(b){if(b instanceof Ot)g={stdout:b.stdout,stderr:b.stderr,exitCode:1};else if(b instanceof B&&t.commands.length>1)g={stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode};else if(b instanceof pe&&t.commands.length>1)g={stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode};else throw $&&(e.state.env=$),b}$&&(e.state.env=$),o.push(g.exitCode),g.exitCode!==0&&(a=g.exitCode),y?i=g:(t.pipeStderr?.[d]??!1?r=He(g.stderr)+ys(g):(r=ys(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=(ws()-n)/1e3,y=Math.floor(h/60),p=h%60,w;t.timePosix?w=`real ${h.toFixed(2)}
|
|
638
638
|
user 0.00
|
|
639
639
|
sys 0.00
|
|
640
|
-
`:
|
|
641
|
-
real ${`${
|
|
640
|
+
`:w=`
|
|
641
|
+
real ${`${y}m${p.toFixed(3)}s`}
|
|
642
642
|
user 0m0.000s
|
|
643
643
|
sys 0m0.000s
|
|
644
|
-
`,i={...i,stderr:i.stderr+
|
|
645
|
-
`,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let
|
|
646
|
-
`,1)};if(
|
|
647
|
-
`,1)}}if(
|
|
648
|
-
`,{continueToNext:!0,xtraceOutput:a};let
|
|
649
|
-
`)}}async function
|
|
650
|
-
`,1)};o=f}}if(
|
|
651
|
-
`;if(i.fatal)throw new B(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
|
|
644
|
+
`,i={...i,stderr:i.stderr+w}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=u),i}async function vi(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let u=await co(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 I(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
|
|
645
|
+
`,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await mo(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 go(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 co(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
|
|
646
|
+
`,1)};if(ye(e,s)){let u=jn(e,s);if(u===void 0||u==="")throw new B(1,"","");let f=We(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
|
|
647
|
+
`,1)}}if(Ze(e,s)){if(t.name)return a+=`bash: ${s}: readonly variable
|
|
648
|
+
`,{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=uo(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 fo(e,t,s,n,r,c,u=>{a+=u}):l?await ho(e,s,n,r,c):await po(e,s,n,r,c),t.name){i.set(s,e.state.env.get(s));let f=`(${n.map(d=>Rt(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:a}}function uo(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 fo(e,t,s,n,r,i,a){let o=[];for(let l of n){let c=bs(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?h=await I(e,{type:"Word",parts:f}):h="",h=G(e,h),o.push({type:"keyed",key:u,value:h,append:d})}else{let u=await I(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
|
|
649
|
+
`)}}async function ho(e,t,s,n,r){let i=[];for(let o of s){let l=bs(o);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await I(e,{type:"Word",parts:u}):d="",d=G(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await ke(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 j(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 po(e,t,s,n,r){let i=[];for(let o of s){let l=await ke(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 mo(e,t,s,n,r,i,a){let o=s;if(ye(e,s)){let f=We(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: \`${f}': not a valid identifier
|
|
650
|
+
`,1)};o=f}}if(Ze(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 bi(e,o,n);else{let f=await yo(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=lt(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 bi(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 I(e,a)}else if(s.includes("$")){let i=new V().parseWordFromString(s,!1,!1);n=await I(e,i)}else n=s;return`${t}_${n}`}async function yo(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 j(e,a.expression,!1)}catch(i){if(i instanceof Ue){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
|
|
651
|
+
`;if(i.fatal)throw new B(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
|
|
652
652
|
`,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
|
|
653
|
-
`,1)}}}return{index:r}}async function
|
|
654
|
-
`,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(
|
|
655
|
-
`,{continueToNext:!0,xtraceOutput:a};let f=ee(e,o);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let
|
|
656
|
-
`,1);return
|
|
657
|
-
`).map(
|
|
658
|
-
`));let
|
|
659
|
-
`;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await
|
|
660
|
-
`,1)}let
|
|
661
|
-
`,1)}e.state.groupStdin=
|
|
662
|
-
`,127)}if(i.startsWith("#!")){let
|
|
663
|
-
`);
|
|
664
|
-
`);throw
|
|
665
|
-
`);let r=0,i=-1,a=!1;for(let
|
|
653
|
+
`,1)}}}return{index:r}}async function go(e,t,s,n,r,i){let a="",o=s,l=null;if(ye(e,s)){let f=Hn(e,s,n);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:k("",`bash: ${s}: circular name reference
|
|
654
|
+
`,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(Ze(e,o)){if(t.name)return a+=`bash: ${o}: readonly variable
|
|
655
|
+
`,{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})`,y=Q(f,h);c=String(await j(e,y.expression))}else{let d=Q(f,n);c=String(await j(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-H3VFC532.js"),d=f(e,o)?`${o}_0`:o;c=r?(e.state.env.get(d)||"")+n:n}c=ft(e,o,c),a+=await yi(e,o,c);let u=o;if(l)u=await wo(e,l);else{let{isArray:f}=await import("./chunks/expansion-H3VFC532.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 wo(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return bi(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 j(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 $i(e,t,s,n){let r=await Oe(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(S=>new Map(S)),u){e.state.localVarStack=new Map;for(let[S,O]of u.entries())e.state.localVarStack.set(S,O.map(N=>({...N})))}f&&(e.state.localVarDepth=new Map(f)),d&&(e.state.fullyUnsetLocals=new Map(d));let h=e.state.loopDepth,y=e.state.parentHasLoopContext;e.state.parentHasLoopContext=h>0,e.state.loopDepth=0;let p=e.state.lastArg,w=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let $=e.state.groupStdin;s&&(e.state.groupStdin=s);let g="",b="",m=0,v=()=>{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=y,e.state.groupStdin=$,e.state.bashPid=w,e.state.lastArg=p};try{for(let S of t.body){let O=await n(S);g+=O.stdout,b+=O.stderr,m=O.exitCode}}catch(S){if(v(),S instanceof Y)throw S;if(S instanceof Re){g+=S.stdout,b+=S.stderr;let N=k(g,b,0);return q(e,N,t.redirections)}if(S instanceof de||S instanceof he){g+=S.stdout,b+=S.stderr;let N=k(g,b,0);return q(e,N,t.redirections)}if(S instanceof B){g+=S.stdout,b+=S.stderr;let N=k(g,b,S.exitCode);return q(e,N,t.redirections)}if(S instanceof ce){g+=S.stdout,b+=S.stderr;let N=k(g,b,S.exitCode);return q(e,N,t.redirections)}if(S instanceof pe){let N=k(g+S.stdout,b+S.stderr,S.exitCode);return q(e,N,t.redirections)}let O=k(g,`${b}${$e(S)}
|
|
656
|
+
`,1);return q(e,O,t.redirections)}v();let E=k(g,b,m);return q(e,E,t.redirections)}async function Ei(e,t,s,n){let r="",i="",a=0,o=await ts(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 I(e,d.content);d.stripTabs&&(h=h.split(`
|
|
657
|
+
`).map(p=>p.replace(/^\t+/,"")).join(`
|
|
658
|
+
`));let y=f.fd??0;y!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),ae(e),e.state.fileDescriptors.set(y,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await I(e,f.target)}
|
|
659
|
+
`;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await I(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await I(e,f.target);return k("",`bash: ${d}: No such file or directory
|
|
660
|
+
`,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 Y)throw f;if(It(f)||f instanceof pe||f instanceof B)throw f.prependOutput(r,i),f;return k(r,`${i}${$e(f)}
|
|
661
|
+
`,1)}e.state.groupStdin=c;let u=k(r,i,a);return q(e,u,t.redirections)}async function Si(e,t,s,n,r){let i;try{i=await e.fs.readFile(t)}catch{return _(`bash: ${t}: No such file or directory
|
|
662
|
+
`,127)}if(i.startsWith("#!")){let w=i.indexOf(`
|
|
663
|
+
`);w!==-1&&(i=i.slice(w+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,y=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 w=0;w<s.length&&w<9;w++)e.state.env.set(String(w+1),s[w]);for(let w=s.length+1;w<=9;w++)e.state.env.delete(String(w));let p=()=>{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=y};try{let $=new V().parse(i),g=await r($);return p(),g}catch(w){if(p(),w instanceof B||w instanceof Y)throw w;if(w.name==="ParseException")return _(`bash: ${t}: ${w.message}
|
|
664
|
+
`);throw w}}var _t=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}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||ve.isInSandboxedContext())return;let s=`interpreter ${t} attempted outside defense context`;throw new Je(s,{timestamp:Date.now(),type:"missing_defense_context",message:s,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:ve.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&&Pe(`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 B)throw l.prependOutput(s,n),l;if(l instanceof be)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:Le(this.ctx.state.env)};if(l instanceof Y)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:Le(this.ctx.state.env)};if(l instanceof xn)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:Le(this.ctx.state.env)};if(l instanceof Ot)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:Le(this.ctx.state.env)};if(l instanceof Ue){a(l.stdout,l.stderr),r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(l instanceof Rn){a(l.stdout,l.stderr),r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(l instanceof de||l instanceof he){if(this.ctx.state.loopDepth>0)throw l.prependOutput(s,n),l;a(l.stdout,l.stderr);continue}throw l instanceof ce&&l.prependOutput(s,n),l}return{stdout:s,stderr:n,exitCode:r,env:Le(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Si(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Tt;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Pe(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new xt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return F;this.ctx.state.errexitSafe=!1;let s="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
|
|
665
|
+
`);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){return wi(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 ai(this.ctx,t);case"For":return oi(this.ctx,t);case"CStyleFor":return li(this.ctx,t);case"While":return ci(this.ctx,t,s);case"Until":return ui(this.ctx,t);case"Case":return fi(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return kr(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return F}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(n){if(n instanceof Dt)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 m=t,v=100;for(;v>0;){let E=this.expandAlias(m);if(E===m)break;m=E,v--}this.aliasExpansionStack.clear(),m!==t&&(t=m)}this.ctx.state.expansionStderr="";let n=await vi(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 v=await Oe(this.ctx,t.redirections);if(v)return v;let E=k("",i,0);return q(this.ctx,E,t.redirections)}this.ctx.state.lastArg="";let m=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",k("",m,this.ctx.state.lastExitCode)}let a=t.name&&An(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 m of o)this.ctx.state.tempExportedVars.add(m)}let l=await ts(this.ctx,t.redirections);if(l){for(let[m,v]of r)v===void 0?this.ctx.state.env.delete(m):this.ctx.state.env.set(m,v);return l}let c=-1;for(let m of t.redirections){if((m.operator==="<<"||m.operator==="<<-")&&m.target.type==="HereDoc"){let v=m.target,E=await I(this.ctx,v.content);v.stripTabs&&(E=E.split(`
|
|
666
666
|
`).map(O=>O.replace(/^\t+/,"")).join(`
|
|
667
|
-
`));let
|
|
668
|
-
|
|
669
|
-
`)}if(
|
|
670
|
-
`,127)}if(
|
|
671
|
-
`)}break}case"<>":{let
|
|
672
|
-
`);return
|
|
673
|
-
`,r);return
|
|
667
|
+
`)),E=He(E);let S=m.fd??0;S!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),ae(this.ctx),this.ctx.state.fileDescriptors.set(S,E)):s=E;continue}if(m.operator==="<<<"&&m.target.type==="Word"){s=He(`${await I(this.ctx,m.target)}
|
|
668
|
+
`);continue}if(m.operator==="<"&&m.target.type==="Word")try{let v=await I(this.ctx,m.target),E=this.ctx.fs.resolvePath(this.ctx.state.cwd,v);s=await In(this.ctx.fs,E)}catch{let v=await I(this.ctx,m.target);for(let[E,S]of r)S===void 0?this.ctx.state.env.delete(E):this.ctx.state.env.set(E,S);return _(`bash: ${v}: No such file or directory
|
|
669
|
+
`)}if(m.operator==="<&"&&m.target.type==="Word"){let v=await I(this.ctx,m.target),E=Number.parseInt(v,10);if(!Number.isNaN(E)&&this.ctx.state.fileDescriptors){let S=this.ctx.state.fileDescriptors.get(E);if(S!==void 0)if(S.startsWith("__rw__:")){let O=di(S);O&&(s=O.content.slice(O.position),c=E)}else S.startsWith("__file__:")||S.startsWith("__file_append__:")||(s=S)}}}let u=await I(this.ctx,t.name),f=[],d=[];if(An(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let m of t.args){let v=await ur(this.ctx,m);if(v)f.push(v),d.push(!0);else{let E=await fr(this.ctx,m);if(E!==null)f.push(E),d.push(!0);else{let S=await ke(this.ctx,m);for(let O of S.values)f.push(O),d.push(S.quoted)}}}else for(let m of t.args){let v=await ke(this.ctx,m);for(let E of v.values)f.push(E),d.push(v.quoted)}if(!u){if(t.name.parts.every(v=>v.type==="CommandSubstitution"||v.type==="ParameterExpansion"||v.type==="ArithmeticExpansion")){if(f.length>0){let v=f.shift();return d.shift(),await this.runCommand(v,f,d,s,!1,!1,c)}return k("","",this.ctx.state.lastExitCode)}return _(`bash: : command not found
|
|
670
|
+
`,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let m of t.redirections){if(m.target.type==="HereDoc"||m.fdVariable)continue;let v=await I(this.ctx,m.target),E=m.fd??(m.operator==="<"||m.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),m.operator){case">":case">|":{let S=this.ctx.fs.resolvePath(this.ctx.state.cwd,v);await this.ctx.fs.writeFile(S,"","utf8"),ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__file__:${S}`);break}case">>":{let S=this.ctx.fs.resolvePath(this.ctx.state.cwd,v);ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__file_append__:${S}`);break}case"<":{let S=this.ctx.fs.resolvePath(this.ctx.state.cwd,v);try{let O=await this.ctx.fs.readFile(S);ae(this.ctx),this.ctx.state.fileDescriptors.set(E,O)}catch{return _(`bash: ${v}: No such file or directory
|
|
671
|
+
`)}break}case"<>":{let S=this.ctx.fs.resolvePath(this.ctx.state.cwd,v);try{let O=await this.ctx.fs.readFile(S);ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__rw__:${S.length}:${S}:0:${O}`)}catch{await this.ctx.fs.writeFile(S,"","utf8"),ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__rw__:${S.length}:${S}:0:`)}break}case">&":{if(v==="-")this.ctx.state.fileDescriptors.delete(E);else if(v.endsWith("-")){let S=v.slice(0,-1),O=Number.parseInt(S,10);if(!Number.isNaN(O)){let N=this.ctx.state.fileDescriptors.get(O);N!==void 0?this.ctx.state.fileDescriptors.set(E,N):this.ctx.state.fileDescriptors.set(E,`__dupout__:${O}`),this.ctx.state.fileDescriptors.delete(O)}}else{let S=Number.parseInt(v,10);Number.isNaN(S)||(ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupout__:${S}`))}break}case"<&":{if(v==="-")this.ctx.state.fileDescriptors.delete(E);else if(v.endsWith("-")){let S=v.slice(0,-1),O=Number.parseInt(S,10);if(!Number.isNaN(O)){let N=this.ctx.state.fileDescriptors.get(O);N!==void 0?this.ctx.state.fileDescriptors.set(E,N):this.ctx.state.fileDescriptors.set(E,`__dupin__:${O}`),this.ctx.state.fileDescriptors.delete(O)}}else{let S=Number.parseInt(v,10);Number.isNaN(S)||(ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupin__:${S}`))}break}}}for(let[m,v]of r)v===void 0?this.ctx.state.env.delete(m):this.ctx.state.env.set(m,v);if(this.ctx.state.tempExportedVars)for(let m of r.keys())this.ctx.state.tempExportedVars.delete(m);return F}if(this.ctx.state.extraArgs){f.push(...this.ctx.state.extraArgs);for(let m=0;m<this.ctx.state.extraArgs.length;m++)d.push(!0);this.ctx.state.extraArgs=void 0}let y=await mi(this.ctx,u,f);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let p,w=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(m){if(m instanceof de||m instanceof he)w=m,p=F;else throw m}let $=i+y;if($&&(p={...p,stderr:$+p.stderr}),p=await q(this.ctx,p,t.redirections),w)throw w;if(f.length>0){let m=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(m)){let v=m.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);v&&(m=v[1])}this.ctx.state.lastArg=m}else this.ctx.state.lastArg=u;let g=_r(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!g)for(let[m,v]of r)this.ctx.state.fullyUnsetLocals?.has(m)||(v===void 0?this.ctx.state.env.delete(m):this.ctx.state.env.set(m,v));if(this.ctx.state.tempExportedVars)for(let m of r.keys())this.ctx.state.tempExportedVars.delete(m);return r.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(p={...p,stderr:this.ctx.state.expansionStderr+p.stderr},this.ctx.state.expansionStderr=""),p}async runCommand(t,s,n,r,i=!1,a=!1,o=-1){let l={ctx:this.ctx,runCommand:(u,f,d,h,y,p,w)=>this.runCommand(u,f,d,h,y,p,w),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await ri(l,t,s,n,r,i,a,o);return c!==null?c:ii(l,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return Ts(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return ls(this.ctx,t)}async executeSubshell(t,s=""){return $i(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Ei(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Oe(this.ctx,t.redirections);if(s)return s;try{let n=await j(this.ctx,t.expression.expression),r=X(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),q(this.ctx,r,t.redirections)}catch(n){let r=_(`bash: arithmetic expression: ${n.message}
|
|
672
|
+
`);return q(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Oe(this.ctx,t.redirections);if(s)return s;try{let n=await ze(this.ctx,t.expression),r=X(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),q(this.ctx,r,t.redirections)}catch(n){let r=n instanceof Ue?1:2,i=_(`bash: conditional expression: ${n.message}
|
|
673
|
+
`,r);return q(this.ctx,i,t.redirections)}}};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 Ai(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 Po}from"node:dns";function _n(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function vo(e){let t=_n(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function _i(e){if(e.includes("\\"))return!0;let t=e.toLowerCase();return t.includes("%2f")||t.includes("%5c")}function bo(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function Cn(e,t){let s=_n(e);if(!s)return!1;let n=vo(t);return!n||s.origin!==n.origin||n.pathPrefix!=="/"&&n.pathPrefix!==""&&_i(s.pathname)?!1:bo(s.pathname,n.pathPrefix)}function Ci(e){return typeof e=="string"?e:e.url}function ki(e,t){return!t||t.length===0?!1:t.some(s=>Cn(e,Ci(s)))}function kn(e){let t=$o(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=Pi(t);if(s)return us(s);let n=So(t);return n?Ao(n):!1}function $o(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function Eo(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 Pi(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>Eo(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 So(e){let t=e,s=null;if(t.includes(".")){let p=t.lastIndexOf(":");if(p<0)return null;let w=t.slice(p+1),$=Pi(w);if(!$)return null;s=$,t=t.slice(0,p)}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=p=>/^[0-9a-f]{1,4}$/i.test(p)?Number.parseInt(p,16):null,c=a.map(l),u=o.map(l);if(c.some(p=>p===null)||u.some(p=>p===null))return null;let f=s?2:0,d=c.length+u.length+f,h=0;if(n===1){if(h=8-d,h<0)return null}else if(d!==8)return null;let y=[...c,...new Array(h).fill(0),...u];return s&&(y.push(s[0]<<8|s[1]),y.push(s[2]<<8|s[3])),y.length===8?y:null}function us(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 Ao(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 us(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 us(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 us(r)}return!1}function Ni(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=Ci(s);if(!_n(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!==""&&_i(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 _o=typeof __BROWSER__<"u"&&__BROWSER__,dt=null,fs=null,Oi=!1;function Co(){if(dt===null&&!_o)try{let e=On("node:async_hooks");fs=On("node:dns"),dt=new e.AsyncLocalStorage}catch{}}function ko(){if(Oi||(Co(),!dt||!fs))return;Oi=!0;let e=dt,t=fs.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(fs,"lookup",{value:s,writable:!0,configurable:!0})}function Di(e,t){return ko(),dt?dt.run(e,t):t()}var De=class extends Error{constructor(t,s){let n=s??"URL not in allow-list";super(`Network access denied: ${n}: ${t}`),this.name="NetworkAccessDeniedError"}},Ct=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},kt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},ds=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}},ht=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};function No(e){return new Promise((t,s)=>{Po(e,{all:!0},(n,r)=>{n?s(n):t(r)})})}var Oo=20,Do=3e4,To=10485760,Io=["GET","HEAD"],xo=new Set(["GET","HEAD","OPTIONS"]),Ro=new Set([301,302,303,307,308]);function Pn(e){let t=e.allowedUrlPrefixes??[];if(!e.dangerouslyAllowFullInternetAccess){let h=Ni(t);if(h.length>0)throw new Error(`Invalid network allow-list:
|
|
674
674
|
${h.join(`
|
|
675
|
-
`)}`)}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
|
|
676
|
-
`)}function
|
|
677
|
-
${r}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${oe(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${oe(e.target)}`:`${t}${e.operator} ${oe(e.target)}`}function
|
|
678
|
-
`)}function
|
|
679
|
-
${
|
|
680
|
-
${
|
|
675
|
+
`)}`)}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 y=null;for(let p of s)if(Cn(h,p.url)&&p.transform){y||(y=new Headers);for(let w of p.transform)for(let[$,g]of Object.entries(w.headers))y.set($,g)}return y}let r=e.maxRedirects??Oo,i=e.timeoutMs??Do,a=e.maxResponseSize??To,o=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??Io,l=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),c=e._dnsResolve??No;async function u(h){if(!e.dangerouslyAllowFullInternetAccess&&!ki(h,t))throw new De(h);if(l)try{let y=new URL(h);if(kn(y.hostname))throw new De(h,"private/loopback IP address blocked");let p=y.hostname;if(/[a-zA-Z]/.test(p))try{let $=await c(p);for(let{address:b}of $)if(kn(b))throw new De(h,"hostname resolves to private/loopback IP address");let g=$[0];if(g)return{hostname:p,address:g.address,family:g.family===6?6:4}}catch($){if($ instanceof De)throw $;let g=$?.code;if(!(g==="ENOTFOUND"||g==="ENODATA"))throw new De(h,"DNS resolution failed for private IP check")}}catch(y){if(y instanceof De)throw y}return null}function f(h){if(e.dangerouslyAllowFullInternetAccess)return;let y=h.toUpperCase();if(!o.includes(y))throw new ds(y,o)}async function d(h,y={}){let p=y.method?.toUpperCase()??"GET",w=await u(h);f(p);let $=h,g=0,b=y.followRedirects??!0,m=y.timeoutMs!==void 0?Math.min(y.timeoutMs,i):i;for(;;){let v=new AbortController,E=Dn(()=>v.abort(),m);try{let S=await ve.runTrustedAsync(()=>{let O=n($),N=Lo(y.headers,O),x={method:p,headers:N,signal:v.signal,redirect:"manual"};return y.body&&!xo.has(p)&&(x.body=y.body),w?Di(w,()=>fetch($,x)):fetch($,x)});if(Ro.has(S.status)&&b){let O=S.headers.get("location");if(!O)return await Ti(S,$,a);let N=new URL(O,$).href;try{w=await u(N)}catch{throw new kt(N)}if(g++,g>r)throw new Ct(r);$=N;continue}return await Ti(S,$,a)}finally{Tn(E)}}}return d}function Lo(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 Ti(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 ht(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 ht(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 ht(s);r=new Uint8Array(i)}return{status:e.status,statusText:e.statusText,headers:n,body:r,url:t}}function Ii(e){return Ye(e)}function Ye(e){return e.statements.map(xi).join(`
|
|
676
|
+
`)}function xi(e){let t=[];for(let n=0;n<e.pipelines.length;n++)t.push(Fo(e.pipelines[n])),n<e.operators.length&&t.push(e.operators[n]);let s=t.join(" ");return e.background&&(s+=" &"),s}function Fo(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(Ri(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 Ri(e){switch(e.type){case"SimpleCommand":return Mo(e);case"If":return qo(e);case"For":return Go(e);case"CStyleFor":return Ko(e);case"While":return Xo(e);case"Until":return Yo(e);case"Case":return Qo(e);case"Subshell":return el(e);case"Group":return tl(e);case"ArithmeticCommand":return sl(e);case"ConditionalCommand":return nl(e);case"FunctionDef":return rl(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Mo(e){let t=[];for(let s of e.assignments)t.push(Wo(s));e.name&&t.push(oe(e.name));for(let s of e.args)t.push(oe(s));for(let s of e.redirections)t.push(Mi(s));return t.join(" ")}function Wo(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(oe).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${oe(e.value)}`:`${e.name}${t}`}function oe(e){return e.parts.map(t=>hs(t,!1)).join("")}function je(e){return e.parts.map(t=>hs(t,!0)).join("")}function hs(e,t){switch(e.type){case"Literal":return t?Vo(e.value):zo(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>hs(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Li(e);case"CommandSubstitution":return e.legacy?`\`${Ye(e.body)}\``:`$(${Ye(e.body)})`;case"ArithmeticExpansion":return`$((${H(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${Ye(e.body)})`:`>(${Ye(e.body)})`;case"BraceExpansion":return Uo(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 Vo(e){return e.replace(/[$`"\\]/g,"\\$&")}function Bo(e,t){return e.parts.map(s=>jo(s,t)).join("")}function jo(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Li(e);case"CommandSubstitution":return e.legacy?`\`${Ye(e.body)}\``:`$(${Ye(e.body)})`;case"ArithmeticExpansion":return`$((${H(e.expression.expression)}))`;default:return hs(e,!1)}}function Li(e){return e.operation?`\${${Fi(e.parameter,e.operation)}}`:Ho(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Ho(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Fi(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${je(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${je(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?je(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${je(t.word)}`;case"Substring":{let s=H(t.offset.expression);return t.length?`${e}:${s}:${H(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",n=t.greedy?`${s}${s}`:s;return`${e}${n}${je(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let n=t.replacement?`/${je(t.replacement)}`:"";return`${e}${s}${je(t.pattern)}${n}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",n=t.all?`${s}${s}`:s,r=t.pattern?je(t.pattern):"";return`${e}${n}${r}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Fi(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 Uo(e){return`{${e.items.map(Zo).join(",")}}`}function Zo(e){if(e.type==="Word")return oe(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 Mi(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=Bo(s.content,s.quoted);return`${t}${e.operator}${n}
|
|
677
|
+
${r}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${oe(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${oe(e.target)}`:`${t}${e.operator} ${oe(e.target)}`}function _e(e){return e.length===0?"":` ${e.map(Mi).join(" ")}`}function ge(e){return e.map(xi).join(`
|
|
678
|
+
`)}function qo(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} ${ge(n.condition)}; then
|
|
679
|
+
${ge(n.body)}`)}return e.elseBody&&t.push(`else
|
|
680
|
+
${ge(e.elseBody)}`),`${t.join(`
|
|
681
681
|
`)}
|
|
682
|
-
fi${
|
|
683
|
-
${
|
|
684
|
-
done${
|
|
685
|
-
${
|
|
686
|
-
done${
|
|
687
|
-
${
|
|
688
|
-
done${
|
|
689
|
-
${
|
|
690
|
-
done${
|
|
682
|
+
fi${_e(e.redirections)}`}function Go(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(oe).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
|
|
683
|
+
${ge(e.body)}
|
|
684
|
+
done${_e(e.redirections)}`}function Ko(e){let t=e.init?H(e.init.expression):"",s=e.condition?H(e.condition.expression):"",n=e.update?H(e.update.expression):"";return`for ((${t}; ${s}; ${n})); do
|
|
685
|
+
${ge(e.body)}
|
|
686
|
+
done${_e(e.redirections)}`}function Xo(e){return`while ${ge(e.condition)}; do
|
|
687
|
+
${ge(e.body)}
|
|
688
|
+
done${_e(e.redirections)}`}function Yo(e){return`until ${ge(e.condition)}; do
|
|
689
|
+
${ge(e.body)}
|
|
690
|
+
done${_e(e.redirections)}`}function Qo(e){let t=e.items.map(Jo).join(`
|
|
691
691
|
`);return`case ${oe(e.word)} in
|
|
692
692
|
${t}
|
|
693
|
-
esac${
|
|
693
|
+
esac${_e(e.redirections)}`}function Jo(e){let t=e.patterns.map(oe).join(" | "),s=ge(e.body);return s?`${t})
|
|
694
694
|
${s}
|
|
695
695
|
${e.terminator}`:`${t})
|
|
696
|
-
${e.terminator}`}function
|
|
697
|
-
`],["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=
|
|
696
|
+
${e.terminator}`}function el(e){return`(${ge(e.body)})${_e(e.redirections)}`}function tl(e){return`{ ${ge(e.body)}; }${_e(e.redirections)}`}function sl(e){return`((${H(e.expression.expression)}))${_e(e.redirections)}`}function nl(e){return`[[ ${Xe(e.expression)} ]]${_e(e.redirections)}`}function rl(e){let t=Ri(e.body);return`${e.name}() ${t}${_e(e.redirections)}`}function H(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${H(e.left)} ${e.operator} ${H(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${H(e.operand)}`:`${H(e.operand)}${e.operator}`;case"ArithTernary":return`${H(e.condition)} ? ${H(e.consequent)} : ${H(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${H(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${H(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${H(e.target)}[${H(e.subscript)}]`:H(e.target)} ${e.operator} ${H(e.value)}`;case"ArithDynamicElement":return`${H(e.nameExpr)}[${H(e.subscript)}]`;case"ArithGroup":return`(${H(e.expression)})`;case"ArithNested":return`$((${H(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${H(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(H).join("");case"ArithDoubleSubscript":return`${e.array}[${H(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Xe(e){switch(e.type){case"CondBinary":return`${oe(e.left)} ${e.operator} ${oe(e.right)}`;case"CondUnary":return`${e.operator} ${oe(e.operand)}`;case"CondNot":return`! ${Xe(e.operand)}`;case"CondAnd":return`${Xe(e.left)} && ${Xe(e.right)}`;case"CondOr":return`${Xe(e.left)} || ${Xe(e.right)}`;case"CondGroup":return`( ${Xe(e.expression)} )`;case"CondWord":return oe(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var ps=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 wt(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",`
|
|
697
|
+
`],["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=Ai({...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=Pn(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",Ns(this.state.options)),this.state.env.set("BASHOPTS",Os(this.state.shoptOptions)),rr(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),n!=="/"&&s instanceof wt)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let a of Yn(t.commands))this.registerCommand(a);if(t.fetch||t.network)for(let a of Qn())this.registerCommand(a);if(t.python)for(let a of Jn())this.registerCommand(a);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let a of er())this.registerCommand(a);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let a of t.customCommands)tr(a)?this.registerCommand(sr(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
|
|
698
698
|
# Built-in command: ${t.name}
|
|
699
|
-
`;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=
|
|
700
|
-
`,exitCode:1,env:
|
|
701
|
-
`,exitCode:1,env:
|
|
702
|
-
`,exitCode:2,env:
|
|
703
|
-
`,exitCode:2,env:
|
|
704
|
-
`,exitCode:1,env:
|
|
705
|
-
`),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
|
|
706
|
-
`)}var Zo=new TextDecoder("utf-8",{fatal:!0});function Ti(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 Zo.decode(s)}catch{return e}}import*as U from"node:fs";import*as ie from"node:path";var qo=["ELOOP","EFBIG","EPERM"],Go="/home/user/project",ls=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=ie.resolve(t.root);let s=t.mountPoint??Go;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,On(this.root,"OverlayFs"),this.canonicalRoot=U.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=M(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=M(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=M(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=ie.join(this.root,n),i=ie.resolve(r);return fs(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Pn(t,this.canonicalRoot):Nn(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=ie.dirname(t),n=this.resolveRealPath_(s);return n===null?null:ie.join(n,ie.basename(t))}sanitizeError(t,s,n){Tn(t,s,n,qo)}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=M(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 U.promises.lstat(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=Me(s);return xt(n,r)}async readFileBuffer(t,s=new Set){W(t,"open");let n=M(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 U.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let u=await U.promises.readlink(i),c=this.realTargetToVirtual(n,u),f=this.resolveSymlink(n,c);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?U.constants.O_RDONLY:U.constants.O_RDONLY|U.constants.O_NOFOLLOW,l=await U.promises.open(i,o);try{let u=await l.readFile();return new Uint8Array(u)}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){W(t,"write"),this.assertWritable(`write '${t}'`);let r=M(t);this.ensureParentDirs(r);let i=Me(n),a=Je(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){W(t,"append"),this.assertWritable(`append '${t}'`);let r=M(t),i=Me(n),a=Je(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){W(t,"stat");let n=M(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 U.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let o=await U.promises.readlink(i),l=this.realTargetToVirtual(n,o),u=this.resolveSymlink(n,l);return this.stat(u,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){W(t,"lstat");let s=M(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 U.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 Ye(t,s)}realTargetToVirtual(t,s){let n=Dn(s,this.canonicalRoot);if(n.withinRoot){if(!ie.isAbsolute(s))return s;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,s){W(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let n=M(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),u=l.split("/")[0];u&&!l.includes("/",u.length)&&r.add(u)}for(let[o,l]of this.memory)if(o!==s&&o.startsWith(i)){let u=o.slice(i.length),c=u.split("/")[0];c&&!r.has(c)&&!u.includes("/",1)&&n.set(c,{name:c,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 U.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 U.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=M(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 U.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:n,outsideOverlay:!0};let c=await U.promises.readlink(l),f=this.realTargetToVirtual(n,c),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){W(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){W(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){W(t,"rm"),this.assertWritable(`rm '${t}'`);let n=M(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 U.lstatSync(n),!0}catch{return!1}}async cp(t,s,n){W(t,"cp"),W(s,"cp"),this.assertWritable(`cp '${s}'`);let r=M(t),i=M(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 u of l){let c=r==="/"?`/${u}`:`${r}/${u}`,f=i==="/"?`/${u}`:`${i}/${u}`;await this.cp(c,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 Ct(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=U.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(a))continue;s.add(a);let o=ie.join(n,i);U.lstatSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){W(t,"chmod"),this.assertWritable(`chmod '${t}'`);let n=M(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}'`);W(s,"symlink"),this.assertWritable(`symlink '${s}'`);let n=M(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){W(t,"link"),W(s,"link"),this.assertWritable(`link '${s}'`);let n=M(t),r=M(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){W(t,"readlink");let s=M(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 U.promises.readlink(r);if(!ie.isAbsolute(i)){let a=ie.resolve(ie.dirname(r),i),o;try{o=U.realpathSync(a)}catch{o=a}if(!fs(o,this.canonicalRoot))return ie.basename(i)}return this.realTargetToVirtual(s,i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){W(t,"realpath");let s=M(t),n=new Set,r=async o=>{let l=o==="/"?[]:o.slice(1).split("/"),u="";for(let c of l){if(u=`${u}/${c}`,n.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(u))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(u),d=0,h=40;for(;f&&f.type==="symlink"&&d<h;){if(n.add(u),u=this.resolveSymlink(u,f.target),d++,n.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(u))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(u)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let p=this.toRealPath(u),m=this.resolveRealPath_(p);if(m)try{if((await U.promises.lstat(m)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let b=await U.promises.readlink(m),v=this.realTargetToVirtual(u,b);return n.add(u),u=this.resolveSymlink(u,v),r(u)}}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 U.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 u||"/"},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){W(t,"utimes"),this.assertWritable(`utimes '${t}'`);let r=M(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"},En=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new ls({root:s,mountPoint:"/"});this.env=new os({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=Ii.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
|
|
699
|
+
`;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=zi(t.stdout),t.stderr=zi(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.
|
|
700
|
+
`,exitCode:1,env:me(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:me(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:al(s?.stdin,s?.stdinKind),signal:s?.signal,extraArgs:s?.args},l=t;s?.rawScript||(l=Wi(t));let c=this.defenseInDepthConfig?ve.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 b of this.transformPlugins){let m=b.transform({ast:d,metadata:g});d=m.ast,m.metadata&&(g=gs(g,m.metadata))}h=g}let y={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},$=await new _t(y,o).executeScript(d);return h&&($.metadata=h),this.logResult($)};return u?await u.run(f):await f()}catch(f){if(f instanceof B)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:me(this.state.env,s?.env)});if(f instanceof be)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:me(this.state.env,s?.env)});if(f instanceof Ue)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:me(this.state.env,s?.env)});if(f instanceof Tt)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:me(this.state.env,s?.env)});if(f instanceof Y)return this.logResult({stdout:f.stdout,stderr:Te(f.stderr),exitCode:Y.EXIT_CODE,env:me(this.state.env,s?.env)});if(f instanceof Je)return this.logResult({stdout:"",stderr:`bash: security violation: ${Te(f.message)}
|
|
701
|
+
`,exitCode:1,env:me(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${Te(f.message)}
|
|
702
|
+
`,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof Mn)return this.logResult({stdout:"",stderr:`bash: ${Te(f.message)}
|
|
703
|
+
`,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${Te(f.message)}
|
|
704
|
+
`,exitCode:1,env:me(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 Le(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=Wi(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=gs(r,a.metadata))}return{script:Ii(n),ast:n,metadata:r}}};function Wi(e){let t=e.split(`
|
|
705
|
+
`),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(`
|
|
706
|
+
`)}var il=new TextDecoder("utf-8",{fatal:!0});function zi(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 il.decode(s)}catch{return e}}function al(e,t){if(e!==void 0)return t==="bytes"?e:He(e)}import*as U from"node:fs";import*as ie from"node:path";import*as we from"node:fs";import*as le from"node:path";function Nt(e,t){if(e===t)return!0;let s=e[t.length];return(s==="/"||s==="\\")&&e.startsWith(t)}function Pt(e,t){try{let s=we.realpathSync(e);return Nt(s,t)?s:null}catch(s){if(s.code==="ENOENT"){let n=le.dirname(e);if(n===e)return null;let r=Pt(n,t);if(r===null)return null;try{if(we.lstatSync(e).isSymbolicLink()){let a=we.readlinkSync(e),o=le.isAbsolute(a)?a:le.resolve(le.dirname(e),a);if(Pt(o,t)===null)return null}}catch{}return le.join(r,le.basename(e))}return null}}function Vi(e,t,s){let n=Pt(e,s);if(n===null)return null;let r=le.resolve(e),i=r.slice(t.length),a=n.slice(s.length);if(i!==a)return null;try{if(we.lstatSync(r).isSymbolicLink())return null}catch{}return n}function Bi(e,t){if(!we.existsSync(e))throw new Error(`${t} root does not exist`);if(!we.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function ji(e,t){if(!le.isAbsolute(e))return{withinRoot:!0,relativePath:e};let s;try{s=we.realpathSync(e)}catch{s=le.resolve(e)}return Nt(s,t)?{withinRoot:!0,relativePath:s.slice(t.length).replace(/\\/g,"/")||"/"}:{withinRoot:!1,safeName:le.basename(e)}}function Hi(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 ol=["ELOOP","EFBIG","EPERM"],ll="/home/user/project",ms=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=ie.resolve(t.root);let s=t.mountPoint??ll;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,Bi(this.root,"OverlayFs"),this.canonicalRoot=U.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=ie.join(this.root,n),i=ie.resolve(r);return Nt(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Pt(t,this.canonicalRoot):Vi(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=ie.dirname(t),n=this.resolveRealPath_(s);return n===null?null:ie.join(n,ie.basename(t))}sanitizeError(t,s,n){Hi(t,s,n,ol)}ensureParentDirs(t){let s=qe(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 U.promises.lstat(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=Fe(s);return tt(n,r)}async readFileBytes(t){let s=await this.readFileBuffer(t);return tt(s,"binary")}async readFileBuffer(t,s=new Set){W(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 U.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let c=await U.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?U.constants.O_RDONLY:U.constants.O_RDONLY|U.constants.O_NOFOLLOW,l=await U.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){W(t,"write"),this.assertWritable(`write '${t}'`);let r=L(t);this.ensureParentDirs(r);let i=Fe(n),a=et(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){W(t,"append"),this.assertWritable(`append '${t}'`);let r=L(t),i=Fe(n),a=et(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){W(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 U.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let o=await U.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){W(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 U.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 nt(t,s)}realTargetToVirtual(t,s){let n=ji(s,this.canonicalRoot);if(n.withinRoot){if(!ie.isAbsolute(s))return s;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,s){W(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=qe(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 U.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 U.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 U.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:n,outsideOverlay:!0};let u=await U.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){W(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){W(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){W(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 U.lstatSync(n),!0}catch{return!1}}async cp(t,s,n){W(t,"cp"),W(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 Wt(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=U.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(a))continue;s.add(a);let o=ie.join(n,i);U.lstatSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){W(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}'`);W(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){W(t,"link"),W(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){W(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 U.promises.readlink(r);if(!ie.isAbsolute(i)){let a=ie.resolve(ie.dirname(r),i),o;try{o=U.realpathSync(a)}catch{o=a}if(!Nt(o,this.canonicalRoot))return ie.basename(i)}return this.realTargetToVirtual(s,i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){W(t,"realpath");let s=L(t),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 y=this.toRealPath(c),p=this.resolveRealPath_(y);if(p)try{if((await U.promises.lstat(p)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let $=await U.promises.readlink(p),g=this.realTargetToVirtual(c,$);return n.add(c),c=this.resolveSymlink(c,g),r(c)}}catch(w){if(w.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(w,t,"realpath")}else if(!this.allowSymlinks){let w=this.resolveRealPathParent_(y);if(w)try{if((await U.promises.lstat(w)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch($){if($.message?.includes("ENOENT")||$.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError($,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){W(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"},Nn=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new ms({root:s,mountPoint:"/"});this.env=new ps({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=Zi.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
|
|
707
707
|
`),this.prompt()}),process.stdin.isTTY&&this.rl.on("close",()=>{this.running=!1,console.log(`
|
|
708
|
-
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: ${
|
|
708
|
+
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: ${$e(n)}${se.reset}`)}}}printWelcome(){console.log(`
|
|
709
709
|
${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
|
|
710
710
|
\u2551 Virtual Shell v1.0 \u2551
|
|
711
711
|
\u2551 A simulated bash environment in TypeScript \u2551
|
|
@@ -715,7 +715,7 @@ ${se.dim}Exploring: ${process.cwd()}${se.reset}
|
|
|
715
715
|
|
|
716
716
|
Type ${se.green}help${se.reset} for available commands, ${se.green}exit${se.reset} to quit.
|
|
717
717
|
Reads from real filesystem, writes stay in memory (OverlayFs).
|
|
718
|
-
`)}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
|
|
718
|
+
`)}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 cl(){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=Ui.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(`
|
|
719
719
|
Usage: pnpm shell [options]
|
|
720
720
|
|
|
721
721
|
Interactive shell using OverlayFs - reads from the current directory,
|
|
@@ -730,4 +730,4 @@ Options:
|
|
|
730
730
|
Example:
|
|
731
731
|
pnpm shell
|
|
732
732
|
pnpm shell --network
|
|
733
|
-
`),process.exit(0));return t}var
|
|
733
|
+
`),process.exit(0));return t}var ul=cl(),fl=new Nn(ul);fl.run();
|