@eidos.space/just-bash 3.0.3 → 3.0.4
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 +17 -0
- package/dist/bin/chunks/{awk2-RLMNTGI7.js → awk2-M5P56WFW.js} +1 -1
- package/dist/bin/{shell/chunks/base64-RZRLGMB3.js → chunks/base64-3BBQMQBD.js} +1 -1
- package/dist/bin/{shell/chunks/bash-CLP24TE2.js → chunks/bash-JOHLB5EM.js} +1 -1
- package/dist/bin/{shell/chunks/cat-LQH5FSAR.js → chunks/cat-QS3FUD2R.js} +1 -1
- package/dist/bin/chunks/{chunk-L24QXM5S.js → chunk-2AUW2OVD.js} +1 -1
- package/dist/bin/chunks/{chunk-EDTBGO7F.js → chunk-3ERCSYXB.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-X4MX6EHF.js → chunks/chunk-46EFQINR.js} +1 -1
- package/dist/bin/chunks/{chunk-7NC4CPHS.js → chunk-4HZ2J7WU.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-UO5LOD7U.js → chunks/chunk-4J4HK3AP.js} +1 -1
- package/dist/bin/chunks/{chunk-PAYQNSZN.js → chunk-4TKEQ5JF.js} +1 -1
- package/dist/bin/chunks/{chunk-V2RP73X4.js → chunk-4TZMT56V.js} +1 -1
- package/dist/bin/chunks/{chunk-F3GKANW3.js → chunk-5MAZXOIE.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-6FSBHK6H.js → chunks/chunk-6CMV7VZ7.js} +1 -1
- package/dist/bin/chunks/{chunk-FVRXEJYQ.js → chunk-7X6QFILN.js} +2 -2
- package/dist/bin/{shell/chunks/chunk-2SVX7I5P.js → chunks/chunk-A66SLDOH.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-Q4UMTSRO.js → chunks/chunk-AIE46WV2.js} +1 -1
- package/dist/bin/chunks/{chunk-VBDLSL7Y.js → chunk-CVDY2PJ2.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-H7JTIXAO.js → chunks/chunk-DSS5HVJD.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-M65CQLJE.js → chunks/chunk-E2TTMLYF.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-HN2DCT7T.js → chunks/chunk-E35XCU6G.js} +1 -1
- package/dist/bin/chunks/{chunk-JZW7NFK2.js → chunk-EVVJUFZE.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-C7ISPH7Y.js → chunks/chunk-FKCULB5D.js} +1 -1
- package/dist/bin/chunks/{chunk-YY5PJR7O.js → chunk-G5P37XAS.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-CAZ75E7E.js → chunks/chunk-IAGQA4VJ.js} +1 -1
- package/dist/bin/chunks/{chunk-22HCD466.js → chunk-JARRTDRA.js} +1 -1
- package/dist/bin/chunks/{chunk-JNUX75OX.js → chunk-JW42N6DP.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-7UU7KPEM.js → chunks/chunk-LLC5H7UY.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-NXVG64T3.js → chunks/chunk-MMSWVFQQ.js} +1 -1
- package/dist/bin/chunks/{chunk-2NRAWO6E.js → chunk-MQIPLKAA.js} +1 -1
- package/dist/bin/chunks/{chunk-YOKQNNQO.js → chunk-NK4UMOPJ.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-OPMLWMNH.js → chunks/chunk-OUWMQLWU.js} +1 -1
- package/dist/bin/chunks/{chunk-KFMPGSUT.js → chunk-PEI4ZGEQ.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-7AYT3UKI.js → chunks/chunk-PNPB62GH.js} +1 -1
- package/dist/bin/chunks/chunk-PUSAQWLR.js +3 -0
- package/dist/bin/chunks/{chunk-LAHBP3FW.js → chunk-QMRTESE5.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-IZGLHVBB.js → chunks/chunk-RGDGVTPT.js} +1 -1
- package/dist/bin/chunks/{chunk-FKVQZWJQ.js → chunk-TO6JCMLQ.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-F3WNDKOC.js → chunks/chunk-TVCXF3IW.js} +1 -1
- package/dist/bin/chunks/{chunk-J7TUF2VI.js → chunk-V2CUST2J.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-XJ37N3S5.js → chunks/chunk-VZTJXRFX.js} +1 -1
- package/dist/bin/chunks/{column-AQB3A3PJ.js → column-W6LUR2XZ.js} +1 -1
- package/dist/bin/{shell/chunks/comm-Q4VDF6ZO.js → chunks/comm-YSS52S62.js} +1 -1
- package/dist/bin/chunks/{cut-ZI2HIAW7.js → cut-VWMTH3YP.js} +1 -1
- package/dist/bin/{shell/chunks/diff-YDJ42RKS.js → chunks/diff-E5JNYAA2.js} +1 -1
- package/dist/bin/chunks/{env-NY32PQJM.js → env-S6XWV5SK.js} +1 -1
- package/dist/bin/chunks/{expand-YYSO35NS.js → expand-AIAYIGRW.js} +1 -1
- package/dist/bin/chunks/{flag-coverage-RFKIBJ6L.js → flag-coverage-AIBITXZA.js} +1 -1
- package/dist/bin/{shell/chunks/fold-5MF7QZWQ.js → chunks/fold-4X7TIQ32.js} +1 -1
- package/dist/bin/chunks/{grep-VAYCFO4O.js → grep-7KM7ZRPL.js} +1 -1
- package/dist/bin/chunks/{gzip-UGBQQKIH.js → gzip-UUURHQYK.js} +1 -1
- package/dist/bin/chunks/{head-QNC2ZYDO.js → head-2NYUMA2U.js} +1 -1
- package/dist/bin/{shell/chunks/html-to-markdown-QEFY7XQR.js → chunks/html-to-markdown-TOIJDAT5.js} +1 -1
- package/dist/bin/{shell/chunks/join-EJ73DYTK.js → chunks/join-W23T6UW4.js} +1 -1
- package/dist/bin/chunks/{jq-GGTKKMEN.js → jq-PG5TWARX.js} +1 -1
- package/dist/bin/chunks/{js-exec-BC6NI55L.js → js-exec-YLOWUQR4.js} +1 -1
- package/dist/bin/chunks/{md5sum-MCVDIB35.js → md5sum-XTC5HSJD.js} +1 -1
- package/dist/bin/chunks/{nl-KUPLVCTS.js → nl-7NAYBH24.js} +1 -1
- package/dist/bin/chunks/{od-YQ5ZUI2H.js → od-BGNLMPXW.js} +1 -1
- package/dist/bin/{shell/chunks/paste-A5KKPWXX.js → chunks/paste-KM6YEJO3.js} +1 -1
- package/dist/bin/chunks/{python3-BQWDPUBM.js → python3-ABK6N2Y5.js} +1 -1
- package/dist/bin/chunks/{rev-PYHOZ4D4.js → rev-YHIGUK3P.js} +1 -1
- package/dist/bin/chunks/{rg-BGFMSIVK.js → rg-6FON3TGH.js} +1 -1
- package/dist/bin/chunks/{sed-FWA634SN.js → sed-LHKUKSBN.js} +1 -1
- package/dist/bin/chunks/{sha1sum-4KF52U3Y.js → sha1sum-VW2AMMXS.js} +1 -1
- package/dist/bin/chunks/{sha256sum-6YEPULPX.js → sha256sum-7O5NHH7H.js} +1 -1
- package/dist/bin/chunks/{sort-4C6WOKNK.js → sort-3BIIXAER.js} +1 -1
- package/dist/bin/chunks/{split-TV7NL7LA.js → split-3DTOTWCO.js} +1 -1
- package/dist/bin/chunks/{sqlite3-W777NCI4.js → sqlite3-AUZE77IO.js} +1 -1
- package/dist/bin/chunks/{strings-MDD72LR6.js → strings-LQXARN54.js} +1 -1
- package/dist/bin/{shell/chunks/tac-C2N4NQ6S.js → chunks/tac-24IIWF3C.js} +1 -1
- package/dist/bin/chunks/{tail-BCB5W6JC.js → tail-5BYXLCVJ.js} +1 -1
- package/dist/bin/chunks/{tar-DOO744MK.js → tar-PEHGL2NT.js} +1 -1
- package/dist/bin/chunks/{tee-UQHPO4OW.js → tee-CPC2RSEW.js} +1 -1
- package/dist/bin/chunks/{time-ZPY52VT2.js → time-7GPZMM6F.js} +1 -1
- package/dist/bin/chunks/{timeout-5AX3ZS3X.js → timeout-B2L3MWOL.js} +1 -1
- package/dist/bin/chunks/{tr-G7K6M6HP.js → tr-SGANQH42.js} +1 -1
- package/dist/bin/chunks/{unexpand-QIR4EDPG.js → unexpand-7TJPGTBZ.js} +1 -1
- package/dist/bin/chunks/{uniq-I7PVFJR4.js → uniq-VH2XX4GT.js} +1 -1
- package/dist/bin/{shell/chunks/wc-6NGWULAP.js → chunks/wc-LGTZO4AP.js} +1 -1
- package/dist/bin/chunks/{xan-KX4VPXUN.js → xan-I5ZN33WB.js} +1 -1
- package/dist/bin/chunks/{xan-view-JXOZLJ7S.js → xan-view-UGYNQULV.js} +1 -1
- package/dist/bin/chunks/{xargs-UWHPYLY7.js → xargs-2NR5N6L3.js} +1 -1
- package/dist/bin/chunks/{yq-GCDCJBKB.js → yq-3EZZPCM2.js} +1 -1
- package/dist/bin/just-bash.js +72 -72
- package/dist/bin/shell/chunks/{awk2-RLMNTGI7.js → awk2-M5P56WFW.js} +1 -1
- package/dist/bin/{chunks/base64-RZRLGMB3.js → shell/chunks/base64-3BBQMQBD.js} +1 -1
- package/dist/bin/{chunks/bash-CLP24TE2.js → shell/chunks/bash-JOHLB5EM.js} +1 -1
- package/dist/bin/{chunks/cat-LQH5FSAR.js → shell/chunks/cat-QS3FUD2R.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-L24QXM5S.js → chunk-2AUW2OVD.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-EDTBGO7F.js → chunk-3ERCSYXB.js} +1 -1
- package/dist/bin/{chunks/chunk-X4MX6EHF.js → shell/chunks/chunk-46EFQINR.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-7NC4CPHS.js → chunk-4HZ2J7WU.js} +1 -1
- package/dist/bin/{chunks/chunk-UO5LOD7U.js → shell/chunks/chunk-4J4HK3AP.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-PAYQNSZN.js → chunk-4TKEQ5JF.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-V2RP73X4.js → chunk-4TZMT56V.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-F3GKANW3.js → chunk-5MAZXOIE.js} +1 -1
- package/dist/bin/{chunks/chunk-6FSBHK6H.js → shell/chunks/chunk-6CMV7VZ7.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-FVRXEJYQ.js → chunk-7X6QFILN.js} +2 -2
- package/dist/bin/{chunks/chunk-2SVX7I5P.js → shell/chunks/chunk-A66SLDOH.js} +1 -1
- package/dist/bin/{chunks/chunk-Q4UMTSRO.js → shell/chunks/chunk-AIE46WV2.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-VBDLSL7Y.js → chunk-CVDY2PJ2.js} +1 -1
- package/dist/bin/{chunks/chunk-H7JTIXAO.js → shell/chunks/chunk-DSS5HVJD.js} +1 -1
- package/dist/bin/{chunks/chunk-M65CQLJE.js → shell/chunks/chunk-E2TTMLYF.js} +1 -1
- package/dist/bin/{chunks/chunk-HN2DCT7T.js → shell/chunks/chunk-E35XCU6G.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-JZW7NFK2.js → chunk-EVVJUFZE.js} +1 -1
- package/dist/bin/{chunks/chunk-C7ISPH7Y.js → shell/chunks/chunk-FKCULB5D.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-YY5PJR7O.js → chunk-G5P37XAS.js} +1 -1
- package/dist/bin/{chunks/chunk-CAZ75E7E.js → shell/chunks/chunk-IAGQA4VJ.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-22HCD466.js → chunk-JARRTDRA.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-JNUX75OX.js → chunk-JW42N6DP.js} +1 -1
- package/dist/bin/{chunks/chunk-7UU7KPEM.js → shell/chunks/chunk-LLC5H7UY.js} +1 -1
- package/dist/bin/{chunks/chunk-NXVG64T3.js → shell/chunks/chunk-MMSWVFQQ.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-2NRAWO6E.js → chunk-MQIPLKAA.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-YOKQNNQO.js → chunk-NK4UMOPJ.js} +1 -1
- package/dist/bin/{chunks/chunk-OPMLWMNH.js → shell/chunks/chunk-OUWMQLWU.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-KFMPGSUT.js → chunk-PEI4ZGEQ.js} +1 -1
- package/dist/bin/{chunks/chunk-7AYT3UKI.js → shell/chunks/chunk-PNPB62GH.js} +1 -1
- package/dist/bin/shell/chunks/chunk-PUSAQWLR.js +3 -0
- package/dist/bin/shell/chunks/{chunk-LAHBP3FW.js → chunk-QMRTESE5.js} +1 -1
- package/dist/bin/{chunks/chunk-IZGLHVBB.js → shell/chunks/chunk-RGDGVTPT.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-FKVQZWJQ.js → chunk-TO6JCMLQ.js} +1 -1
- package/dist/bin/{chunks/chunk-F3WNDKOC.js → shell/chunks/chunk-TVCXF3IW.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-J7TUF2VI.js → chunk-V2CUST2J.js} +1 -1
- package/dist/bin/{chunks/chunk-XJ37N3S5.js → shell/chunks/chunk-VZTJXRFX.js} +1 -1
- package/dist/bin/shell/chunks/{column-AQB3A3PJ.js → column-W6LUR2XZ.js} +1 -1
- package/dist/bin/{chunks/comm-Q4VDF6ZO.js → shell/chunks/comm-YSS52S62.js} +1 -1
- package/dist/bin/shell/chunks/{cut-ZI2HIAW7.js → cut-VWMTH3YP.js} +1 -1
- package/dist/bin/{chunks/diff-YDJ42RKS.js → shell/chunks/diff-E5JNYAA2.js} +1 -1
- package/dist/bin/shell/chunks/{env-NY32PQJM.js → env-S6XWV5SK.js} +1 -1
- package/dist/bin/shell/chunks/{expand-YYSO35NS.js → expand-AIAYIGRW.js} +1 -1
- package/dist/bin/shell/chunks/{flag-coverage-RFKIBJ6L.js → flag-coverage-AIBITXZA.js} +1 -1
- package/dist/bin/{chunks/fold-5MF7QZWQ.js → shell/chunks/fold-4X7TIQ32.js} +1 -1
- package/dist/bin/shell/chunks/{grep-VAYCFO4O.js → grep-7KM7ZRPL.js} +1 -1
- package/dist/bin/shell/chunks/{gzip-UGBQQKIH.js → gzip-UUURHQYK.js} +1 -1
- package/dist/bin/shell/chunks/{head-QNC2ZYDO.js → head-2NYUMA2U.js} +1 -1
- package/dist/bin/{chunks/html-to-markdown-QEFY7XQR.js → shell/chunks/html-to-markdown-TOIJDAT5.js} +1 -1
- package/dist/bin/{chunks/join-EJ73DYTK.js → shell/chunks/join-W23T6UW4.js} +1 -1
- package/dist/bin/shell/chunks/{jq-GGTKKMEN.js → jq-PG5TWARX.js} +1 -1
- package/dist/bin/shell/chunks/{js-exec-BC6NI55L.js → js-exec-YLOWUQR4.js} +1 -1
- package/dist/bin/shell/chunks/{md5sum-MCVDIB35.js → md5sum-XTC5HSJD.js} +1 -1
- package/dist/bin/shell/chunks/{nl-KUPLVCTS.js → nl-7NAYBH24.js} +1 -1
- package/dist/bin/shell/chunks/{od-YQ5ZUI2H.js → od-BGNLMPXW.js} +1 -1
- package/dist/bin/{chunks/paste-A5KKPWXX.js → shell/chunks/paste-KM6YEJO3.js} +1 -1
- package/dist/bin/shell/chunks/{python3-BQWDPUBM.js → python3-ABK6N2Y5.js} +1 -1
- package/dist/bin/shell/chunks/{rev-PYHOZ4D4.js → rev-YHIGUK3P.js} +1 -1
- package/dist/bin/shell/chunks/{rg-BGFMSIVK.js → rg-6FON3TGH.js} +1 -1
- package/dist/bin/shell/chunks/{sed-FWA634SN.js → sed-LHKUKSBN.js} +1 -1
- package/dist/bin/shell/chunks/{sha1sum-4KF52U3Y.js → sha1sum-VW2AMMXS.js} +1 -1
- package/dist/bin/shell/chunks/{sha256sum-6YEPULPX.js → sha256sum-7O5NHH7H.js} +1 -1
- package/dist/bin/shell/chunks/{sort-4C6WOKNK.js → sort-3BIIXAER.js} +1 -1
- package/dist/bin/shell/chunks/{split-TV7NL7LA.js → split-3DTOTWCO.js} +1 -1
- package/dist/bin/shell/chunks/{sqlite3-W777NCI4.js → sqlite3-AUZE77IO.js} +1 -1
- package/dist/bin/shell/chunks/{strings-MDD72LR6.js → strings-LQXARN54.js} +1 -1
- package/dist/bin/{chunks/tac-C2N4NQ6S.js → shell/chunks/tac-24IIWF3C.js} +1 -1
- package/dist/bin/shell/chunks/{tail-BCB5W6JC.js → tail-5BYXLCVJ.js} +1 -1
- package/dist/bin/shell/chunks/{tar-DOO744MK.js → tar-PEHGL2NT.js} +1 -1
- package/dist/bin/shell/chunks/{tee-UQHPO4OW.js → tee-CPC2RSEW.js} +1 -1
- package/dist/bin/shell/chunks/{time-ZPY52VT2.js → time-7GPZMM6F.js} +1 -1
- package/dist/bin/shell/chunks/{timeout-5AX3ZS3X.js → timeout-B2L3MWOL.js} +1 -1
- package/dist/bin/shell/chunks/{tr-G7K6M6HP.js → tr-SGANQH42.js} +1 -1
- package/dist/bin/shell/chunks/{unexpand-QIR4EDPG.js → unexpand-7TJPGTBZ.js} +1 -1
- package/dist/bin/shell/chunks/{uniq-I7PVFJR4.js → uniq-VH2XX4GT.js} +1 -1
- package/dist/bin/{chunks/wc-6NGWULAP.js → shell/chunks/wc-LGTZO4AP.js} +1 -1
- package/dist/bin/shell/chunks/{xan-KX4VPXUN.js → xan-I5ZN33WB.js} +1 -1
- package/dist/bin/shell/chunks/{xan-view-JXOZLJ7S.js → xan-view-UGYNQULV.js} +1 -1
- package/dist/bin/shell/chunks/{xargs-UWHPYLY7.js → xargs-2NR5N6L3.js} +1 -1
- package/dist/bin/shell/chunks/{yq-GCDCJBKB.js → yq-3EZZPCM2.js} +1 -1
- package/dist/bin/shell/shell.js +73 -73
- package/dist/bundle/browser.js +3 -3
- package/dist/bundle/chunks/{awk2-LA3USKJP.js → awk2-2OROQ6TB.js} +1 -1
- package/dist/bundle/chunks/{base64-C2AIWVNC.js → base64-6IJBGYEA.js} +1 -1
- package/dist/bundle/chunks/{bash-YZ33HQZQ.js → bash-AT4DFUJM.js} +1 -1
- package/dist/bundle/chunks/{cat-TSFMZVYS.js → cat-Z4ATD4R2.js} +1 -1
- package/dist/bundle/chunks/{chunk-YCLFEX4T.js → chunk-4HV7HIHS.js} +1 -1
- package/dist/bundle/chunks/{chunk-S443BAN4.js → chunk-6HPVYB3B.js} +1 -1
- package/dist/bundle/chunks/chunk-6JHJPYPW.js +2 -0
- package/dist/bundle/chunks/{chunk-GJC3WVOW.js → chunk-7QLDUSO4.js} +1 -1
- package/dist/bundle/chunks/{chunk-RLAAFSP3.js → chunk-AAH22H6T.js} +1 -1
- package/dist/bundle/chunks/{chunk-OVGANXCG.js → chunk-AEU2AH3H.js} +1 -1
- package/dist/bundle/chunks/{chunk-XCQWV4AU.js → chunk-AK7Q2PNY.js} +1 -1
- package/dist/bundle/chunks/{chunk-S3LEJEPP.js → chunk-EO3OLY7H.js} +1 -1
- package/dist/bundle/chunks/{chunk-XDGLKIHR.js → chunk-G372PPPL.js} +1 -1
- package/dist/bundle/chunks/{chunk-U73A73IE.js → chunk-HGXBBQKY.js} +1 -1
- package/dist/bundle/chunks/{chunk-46RN27KI.js → chunk-IJZY7GO5.js} +1 -1
- package/dist/bundle/chunks/{chunk-VLCHOJWK.js → chunk-K57W527P.js} +1 -1
- package/dist/bundle/chunks/{chunk-GSPYNYZA.js → chunk-K5VKTLDB.js} +1 -1
- package/dist/bundle/chunks/{chunk-VPADYNBD.js → chunk-KHCKEMD6.js} +1 -1
- package/dist/bundle/chunks/{chunk-ICIEVHY5.js → chunk-KTWS34JV.js} +1 -1
- package/dist/bundle/chunks/{chunk-Q7H5W7YE.js → chunk-KUSBC35O.js} +2 -2
- package/dist/bundle/chunks/{chunk-UZR7BRBM.js → chunk-LJ64BU4T.js} +1 -1
- package/dist/bundle/chunks/{chunk-4N6J7B5P.js → chunk-MHOVZCXO.js} +1 -1
- package/dist/bundle/chunks/{chunk-UP6MSJGD.js → chunk-MLX6LCEH.js} +1 -1
- package/dist/bundle/chunks/{chunk-2JIPICV3.js → chunk-MSHY3ROY.js} +1 -1
- package/dist/bundle/chunks/{chunk-6VAT5Z2D.js → chunk-NHIFOLSI.js} +1 -1
- package/dist/bundle/chunks/{chunk-T4TFLF3R.js → chunk-O66VCFMW.js} +1 -1
- package/dist/bundle/chunks/{chunk-7JHM3L42.js → chunk-PAZDJXQ2.js} +1 -1
- package/dist/bundle/chunks/{chunk-FW54FHZR.js → chunk-PVSBJ7RN.js} +1 -1
- package/dist/bundle/chunks/{chunk-XYXUMFSU.js → chunk-PXGSAN5M.js} +1 -1
- package/dist/bundle/chunks/{chunk-FJK43EBQ.js → chunk-RCQPTKLM.js} +1 -1
- package/dist/bundle/chunks/{chunk-6LASZU3O.js → chunk-RLPRNBSA.js} +1 -1
- package/dist/bundle/chunks/{chunk-GGC5NEPZ.js → chunk-WLZQ2YQT.js} +1 -1
- package/dist/bundle/chunks/{chunk-FX7KQCEA.js → chunk-WQQIVUNI.js} +1 -1
- package/dist/bundle/chunks/{chunk-EBAPSGAO.js → chunk-WWZU6WGV.js} +1 -1
- package/dist/bundle/chunks/{chunk-LNBPBRV4.js → chunk-XY467F65.js} +1 -1
- package/dist/bundle/chunks/{chunk-KD3KENL6.js → chunk-YAIN5HNN.js} +1 -1
- package/dist/bundle/chunks/{chunk-HJBTD7PY.js → chunk-YOVBUIVE.js} +1 -1
- package/dist/bundle/chunks/{chunk-XHLMAZX2.js → chunk-ZALQAZQS.js} +1 -1
- package/dist/bundle/chunks/{chunk-N6DXJ2JN.js → chunk-ZSV2XR53.js} +1 -1
- package/dist/bundle/chunks/{chunk-ACSZB4FE.js → chunk-ZUKEFBW2.js} +1 -1
- package/dist/bundle/chunks/{column-XT6UFXNQ.js → column-WWAENDUI.js} +1 -1
- package/dist/bundle/chunks/{comm-VV2LDX2J.js → comm-RQ5XNTJM.js} +1 -1
- package/dist/bundle/chunks/{cut-OKARJCCV.js → cut-QWB7NUKQ.js} +1 -1
- package/dist/bundle/chunks/{diff-5MIVVRRQ.js → diff-X5UWGQ3A.js} +1 -1
- package/dist/bundle/chunks/{env-36M5BO7M.js → env-ZRQ43ZZD.js} +1 -1
- package/dist/bundle/chunks/{expand-JSPG6VOP.js → expand-EAKN4OXQ.js} +1 -1
- package/dist/bundle/chunks/{flag-coverage-YKB23BRI.js → flag-coverage-G33S37PG.js} +1 -1
- package/dist/bundle/chunks/{fold-4TQNYMSW.js → fold-D373LLSA.js} +1 -1
- package/dist/bundle/chunks/{grep-V3LQVMRQ.js → grep-SFR3IZ6K.js} +1 -1
- package/dist/bundle/chunks/{gzip-O5ASJAFY.js → gzip-CVIVKFF2.js} +1 -1
- package/dist/bundle/chunks/{head-442HYESI.js → head-FXWZSGHI.js} +1 -1
- package/dist/bundle/chunks/{html-to-markdown-WGBAMDHY.js → html-to-markdown-2JNCRZB7.js} +1 -1
- package/dist/bundle/chunks/{join-TBRGI3LQ.js → join-CTDW75RI.js} +1 -1
- package/dist/bundle/chunks/{jq-4XLYLOS5.js → jq-67Y32ADP.js} +1 -1
- package/dist/bundle/chunks/{js-exec-N5KEZBH7.js → js-exec-2N7YE6ER.js} +1 -1
- package/dist/bundle/chunks/{md5sum-SPU24VSG.js → md5sum-P4DXUWPM.js} +1 -1
- package/dist/bundle/chunks/{nl-WSDW7I4O.js → nl-SLUVZ3TI.js} +1 -1
- package/dist/bundle/chunks/{od-WOKFDJTP.js → od-LKZJLHVE.js} +1 -1
- package/dist/bundle/chunks/{paste-7JC6S4DX.js → paste-LIMPDS6X.js} +1 -1
- package/dist/bundle/chunks/{python3-POMOR4OA.js → python3-2AQWCGWL.js} +1 -1
- package/dist/bundle/chunks/{rev-5EHFX4EJ.js → rev-W4N6QLP5.js} +1 -1
- package/dist/bundle/chunks/{rg-S4FXYXWB.js → rg-QVQNBE57.js} +1 -1
- package/dist/bundle/chunks/{sed-S5UIK574.js → sed-6Q2OKXY5.js} +1 -1
- package/dist/bundle/chunks/{sha1sum-2PTOAFR6.js → sha1sum-UMR2BPZO.js} +1 -1
- package/dist/bundle/chunks/{sha256sum-NS7D3IXX.js → sha256sum-RPSA24NY.js} +1 -1
- package/dist/bundle/chunks/{sort-SW2YEO5B.js → sort-JRCEWR75.js} +1 -1
- package/dist/bundle/chunks/{split-4KKZZXXE.js → split-KAF43FGD.js} +1 -1
- package/dist/bundle/chunks/{sqlite3-CGOEFJAO.js → sqlite3-QVOVCFW4.js} +1 -1
- package/dist/bundle/chunks/{strings-6WDHLGMX.js → strings-5J5KERRU.js} +1 -1
- package/dist/bundle/chunks/{tac-2STMMJYW.js → tac-VQW3WZHD.js} +1 -1
- package/dist/bundle/chunks/{tail-R4PCA2C4.js → tail-CDOI2GPL.js} +1 -1
- package/dist/bundle/chunks/{tar-STHHZTZ6.js → tar-AIQ24PFK.js} +1 -1
- package/dist/bundle/chunks/{tee-YUZ2FKCJ.js → tee-SYEPHRRB.js} +1 -1
- package/dist/bundle/chunks/{time-D4LNBSWX.js → time-DAPKFIOQ.js} +1 -1
- package/dist/bundle/chunks/{timeout-YDCRSLPQ.js → timeout-4OGTKQLR.js} +1 -1
- package/dist/bundle/chunks/{tr-36LHWFRQ.js → tr-P4RRZUZU.js} +1 -1
- package/dist/bundle/chunks/{unexpand-CADSA4VO.js → unexpand-V5HMWT4F.js} +1 -1
- package/dist/bundle/chunks/{uniq-XSIZR6PB.js → uniq-ON4F3TGM.js} +1 -1
- package/dist/bundle/chunks/{wc-LF7NU4LA.js → wc-ASC6XKZW.js} +1 -1
- package/dist/bundle/chunks/{xan-Y6WF3IRG.js → xan-UGHT4U42.js} +1 -1
- package/dist/bundle/chunks/xan-view-HLIT2HYA.js +2 -0
- package/dist/bundle/chunks/{xargs-MGZPH7AX.js → xargs-7BH6BYXE.js} +1 -1
- package/dist/bundle/chunks/{yq-4QJW3EQG.js → yq-5UQZWCTQ.js} +1 -1
- package/dist/bundle/index.cjs +76 -76
- package/dist/bundle/index.js +52 -52
- package/package.json +1 -1
- package/dist/bin/chunks/chunk-VZK4FHWJ.js +0 -3
- package/dist/bin/shell/chunks/chunk-VZK4FHWJ.js +0 -3
- package/dist/bundle/chunks/chunk-NRSASXYY.js +0 -2
- package/dist/bundle/chunks/xan-view-HDVKHFC2.js +0 -2
package/dist/bin/shell/shell.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import{createRequire} from"node:module";const require=createRequire(import.meta.url);
|
|
3
|
-
import{B as Zn,C as qn,D as ue,E as Ze,F as ee,G as Ae,H as Lt,I as Gn,J as I,K as Kn,L as Xn,M as ke,N as _s,O as Ft,P as j,a as Mn,b as vs,c as Wn,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 zn,n as $s,o as Vn,p as ye,q as Ie,r as Bn,s as jn,t as Es,u as Ss,v as We,w as Hn,x as Un,y as Se,z as As}from"./chunks/chunk-D6CPXGKK.js";import{a as et,b as tt,c as Fe}from"./chunks/chunk-O2BCKSMK.js";import{c as ws}from"./chunks/chunk-NYIPFY36.js";import{a as Dn,b as Tn}from"./chunks/chunk-KRRM5UCC.js";import{a as Le,b as me,c as gs}from"./chunks/chunk-MROECM42.js";import{a as yt,b as Fn}from"./chunks/chunk-LNNWMRCB.js";import{a as Je,b as ve}from"./chunks/chunk-HL4ZS7TX.js";import{a as mt}from"./chunks/chunk-IEXQTXU5.js";import{a as In,b as He,d as xn,e as ys}from"./chunks/chunk-VZK4FHWJ.js";import{a as de,b as he,c as ce,d as pe,e as Rn,f as B,g as Ue,h as Ot,i as Dt,j as Ln,k as Y,l as Tt,m as Re,n as It,o as be}from"./chunks/chunk-47WZ2U6M.js";import"./chunks/chunk-7JZKVC3F.js";import{a as Te}from"./chunks/chunk-PBOVSFTJ.js";import{a as $e}from"./chunks/chunk-I4IRHQDW.js";import{a as On}from"./chunks/chunk-LNVSXNT7.js";import*as Zi from"node:fs";import*as qi from"node:readline";var st=[{name:"echo",load:async()=>(await import("./chunks/echo-KCOHTNDF.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-LQH5FSAR.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-Z5C2UOI5.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-KBNHNZWQ.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-P4DKRCDX.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DLOHIA7Q.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DFGSVIX7.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-ECNUFR66.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-HYXTMN3D.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-QQK4FQX6.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-LP4HMCSM.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-S564JCJW.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-FCNDA467.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-25V57VOL.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-QNC2ZYDO.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-BCB5W6JC.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-6NGWULAP.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-BD6KT3BP.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-VAYCFO4O.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-VAYCFO4O.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-VAYCFO4O.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-BGFMSIVK.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-FWA634SN.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-RLMNTGI7.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-4C6WOKNK.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-I7PVFJR4.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-Q4VDF6ZO.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-ZI2HIAW7.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-A5KKPWXX.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-G7K6M6HP.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-PYHOZ4D4.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-KUPLVCTS.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-5MF7QZWQ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-YYSO35NS.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-QIR4EDPG.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-MDD72LR6.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-TV7NL7LA.js")).split},{name:"column",load:async()=>(await import("./chunks/column-AQB3A3PJ.js")).column},{name:"join",load:async()=>(await import("./chunks/join-EJ73DYTK.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-UQHPO4OW.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-P4DOE7CE.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-F3AQ4KAQ.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-VCINTLPD.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-6D7SMPUR.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-4LRQIGRG.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-NY32PQJM.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-NY32PQJM.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YRVAW27Y.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YRVAW27Y.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-AQQWW3QB.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-UWHPYLY7.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-SKL4L7JP.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-SKL4L7JP.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-FGNEKYDU.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-CLP24TE2.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-CLP24TE2.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-GGTKKMEN.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-RZRLGMB3.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-YDJ42RKS.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-JEZYSA4F.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-QHAPNY3Q.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-5AX3ZS3X.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-ZPY52VT2.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-UXDJE6FB.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-7PLWSWZI.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-MCVDIB35.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-4KF52U3Y.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-6YEPULPX.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-GRZLWDVH.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-QEFY7XQR.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-CGUEOGXQ.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-LCXKCLFC.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-C2N4NQ6S.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-USNWOQCK.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-TZDZDU7T.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-YQ5ZUI2H.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-UGBQQKIH.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-UGBQQKIH.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-UGBQQKIH.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(st.push({name:"tar",load:async()=>(await import("./chunks/tar-DOO744MK.js")).tarCommand}),st.push({name:"yq",load:async()=>(await import("./chunks/yq-GCDCJBKB.js")).yqCommand}),st.push({name:"xan",load:async()=>(await import("./chunks/xan-KX4VPXUN.js")).xanCommand}),st.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-W777NCI4.js")).sqlite3Command}));var Cs=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Cs.push({name:"python3",load:async()=>(await import("./chunks/python3-BQWDPUBM.js")).python3Command}),Cs.push({name:"python",load:async()=>(await import("./chunks/python3-BQWDPUBM.js")).pythonCommand}));var ks=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(ks.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-BC6NI55L.js")).jsExecCommand}),ks.push({name:"node",load:async()=>(await import("./chunks/js-exec-BC6NI55L.js")).nodeStubCommand}));var Yi=[{name:"curl",load:async()=>(await import("./chunks/curl-DCSPNPEW.js")).curlCommand}],Yn=new Map;function Mt(e){return{name:e.name,async execute(t,s){let n=Yn.get(e.name);if(n||(n=await ve.runTrustedAsync(()=>e.load()),Yn.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-RFKIBJ6L.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function Qn(e){return(e?st.filter(s=>e.includes(s.name)):st).map(Mt)}function Jn(){return Yi.map(Mt)}function er(){return Cs.map(Mt)}function tr(){return ks.map(Mt)}function sr(e){return"load"in e&&typeof e.load=="function"}function nr(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 Qi(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):Qi(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 Ji(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function ea(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 ta(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 sa(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Mn}
|
|
3
|
+
import{B as Zn,C as qn,D as ue,E as Ze,F as ee,G as Ae,H as Lt,I as Gn,J as I,K as Kn,L as Xn,M as ke,N as Cs,O as Ft,P as j,a as Mn,b as bs,c as Wn,d as xt,e as Q,f as V,g as Ee,h as ne,i as Ce,j as Me,k as $s,l as Rt,m as zn,n as Es,o as Vn,p as ye,q as Ie,r as Bn,s as jn,t as Ss,u as As,v as We,w as Hn,x as Un,y as Se,z as _s}from"./chunks/chunk-D6CPXGKK.js";import{a as et,b as tt,c as Fe}from"./chunks/chunk-O2BCKSMK.js";import{c as vs}from"./chunks/chunk-NYIPFY36.js";import{a as Tn,b as In}from"./chunks/chunk-KRRM5UCC.js";import{a as Le,b as me,c as ws}from"./chunks/chunk-MROECM42.js";import{a as yt,b as Fn}from"./chunks/chunk-LNNWMRCB.js";import{a as Je,b as ve}from"./chunks/chunk-HL4ZS7TX.js";import{a as mt}from"./chunks/chunk-IEXQTXU5.js";import{a as ys,b as He,d as xn,e as gs}from"./chunks/chunk-PUSAQWLR.js";import{a as de,b as he,c as ce,d as pe,e as Rn,f as B,g as Ue,h as Ot,i as Dt,j as Ln,k as Y,l as Tt,m as Re,n as It,o as be}from"./chunks/chunk-47WZ2U6M.js";import"./chunks/chunk-7JZKVC3F.js";import{a as Te}from"./chunks/chunk-PBOVSFTJ.js";import{a as $e}from"./chunks/chunk-I4IRHQDW.js";import{a as Dn}from"./chunks/chunk-LNVSXNT7.js";import*as Zi from"node:fs";import*as qi from"node:readline";var st=[{name:"echo",load:async()=>(await import("./chunks/echo-KCOHTNDF.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-QS3FUD2R.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-Z5C2UOI5.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-KBNHNZWQ.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-P4DKRCDX.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DLOHIA7Q.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DFGSVIX7.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-ECNUFR66.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-HYXTMN3D.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-QQK4FQX6.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-LP4HMCSM.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-S564JCJW.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-FCNDA467.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-25V57VOL.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-2NYUMA2U.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-5BYXLCVJ.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-LGTZO4AP.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-BD6KT3BP.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-7KM7ZRPL.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-7KM7ZRPL.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-7KM7ZRPL.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-6FON3TGH.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-LHKUKSBN.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-M5P56WFW.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-3BIIXAER.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-VH2XX4GT.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-YSS52S62.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-VWMTH3YP.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-KM6YEJO3.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-SGANQH42.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-YHIGUK3P.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-7NAYBH24.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-4X7TIQ32.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-AIAYIGRW.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-7TJPGTBZ.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-LQXARN54.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-3DTOTWCO.js")).split},{name:"column",load:async()=>(await import("./chunks/column-W6LUR2XZ.js")).column},{name:"join",load:async()=>(await import("./chunks/join-W23T6UW4.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-CPC2RSEW.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-P4DOE7CE.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-F3AQ4KAQ.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-VCINTLPD.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-6D7SMPUR.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-4LRQIGRG.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-S6XWV5SK.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-S6XWV5SK.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YRVAW27Y.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YRVAW27Y.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-AQQWW3QB.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-2NR5N6L3.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-SKL4L7JP.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-SKL4L7JP.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-FGNEKYDU.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-JOHLB5EM.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-JOHLB5EM.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-PG5TWARX.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-3BBQMQBD.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-E5JNYAA2.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-JEZYSA4F.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-QHAPNY3Q.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-B2L3MWOL.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-7GPZMM6F.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-UXDJE6FB.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-7PLWSWZI.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-XTC5HSJD.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-VW2AMMXS.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-7O5NHH7H.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-GRZLWDVH.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-TOIJDAT5.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-CGUEOGXQ.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-LCXKCLFC.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-24IIWF3C.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-USNWOQCK.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-TZDZDU7T.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-BGNLMPXW.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-UUURHQYK.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-UUURHQYK.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-UUURHQYK.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(st.push({name:"tar",load:async()=>(await import("./chunks/tar-PEHGL2NT.js")).tarCommand}),st.push({name:"yq",load:async()=>(await import("./chunks/yq-3EZZPCM2.js")).yqCommand}),st.push({name:"xan",load:async()=>(await import("./chunks/xan-I5ZN33WB.js")).xanCommand}),st.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-AUZE77IO.js")).sqlite3Command}));var ks=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(ks.push({name:"python3",load:async()=>(await import("./chunks/python3-ABK6N2Y5.js")).python3Command}),ks.push({name:"python",load:async()=>(await import("./chunks/python3-ABK6N2Y5.js")).pythonCommand}));var Ps=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ps.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-YLOWUQR4.js")).jsExecCommand}),Ps.push({name:"node",load:async()=>(await import("./chunks/js-exec-YLOWUQR4.js")).nodeStubCommand}));var Yi=[{name:"curl",load:async()=>(await import("./chunks/curl-DCSPNPEW.js")).curlCommand}],Yn=new Map;function Mt(e){return{name:e.name,async execute(t,s){let n=Yn.get(e.name);if(n||(n=await ve.runTrustedAsync(()=>e.load()),Yn.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-AIBITXZA.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function Qn(e){return(e?st.filter(s=>e.includes(s.name)):st).map(Mt)}function Jn(){return Yi.map(Mt)}function er(){return ks.map(Mt)}function tr(){return Ps.map(Mt)}function sr(e){return"load"in e&&typeof e.load=="function"}function nr(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 Qi(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):Qi(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 Ji(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function ea(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 ta(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 sa(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Mn}
|
|
4
4
|
`),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
|
|
5
|
-
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>
|
|
5
|
+
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>bs(t)):e.writeFileSync("/proc/self/status",bs(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 ir(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Ji(e)&&(ea(e,t),ta(e),sa(e,s))}var na=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ra=["braceexpand","hashall","interactive-comments"];function Os(e){let t=[],s=[...ra.map(n=>({name:n,enabled:!0})),...na.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",Os(e.state.options))}var ia=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Ds(e){let t=[];for(let s of ia)e[s]&&t.push(s);return t.join(":")}function Ts(e){e.state.env.set("BASHOPTS",Ds(e.state.shoptOptions))}var aa="BASH_ALIAS_";function ar(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function or(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function lr(e,t){return e.env.get(`${aa}${t}`)}function Is(e,t,s){if(!t.name||!ar(t.name))return t;let n=or(t.name);if(!n)return t;let r=lr(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=ur(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 cr(t,r);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return cr(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(ar(f)){let d=or(f);if(d&&lr(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},y=Is(e,h,s);y!==h&&(u={...u,name:y.name,args:[...y.args]})}}}return u}catch(i){throw s.delete(n),i}}function cr(e,t){let s=t;for(let a of e.args){let o=ur(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 ur(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 fr(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 dr(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let v=t.parts[p];if(v.type==="Literal"){let b=v.value.indexOf("+=");if(b!==-1){let $=v.value.slice(0,b);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test($)){s=p,n=b,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test($)){s=p,n=b,r=!0;break}}let g=v.value.indexOf("=");if(g!==-1&&(g===0||v.value[g-1]!=="+")){let $=v.value.slice(0,g);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test($)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test($)){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 oa=["tar","yq","xan","sqlite3","python3","python"];function hr(e){return oa.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 xs(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
|
|
6
6
|
`);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
|
|
7
|
-
`);s=n}throw new de(s)}async function
|
|
7
|
+
`);s=n}throw new de(s)}async function Rs(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
|
|
8
8
|
`)}catch{return _(`bash: cd: ${s}: No such file or directory
|
|
9
9
|
`)}}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}
|
|
10
|
-
`:"")}function
|
|
10
|
+
`:"")}function Ls(e,t){return e.fs.resolvePath(e.state.cwd,t)}var la=["-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 la.includes(e)}async function Bt(e,t,s){let n=Ls(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 ca=["-nt","-ot","-ef"];function jt(e){return ca.includes(e)}async function Ht(e,t,s,n){let r=Ls(e,s),i=Ls(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 ua=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Ut(e){return ua.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 fa=new Set(["-z","-n"]);function Gt(e){return fa.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
|
|
11
11
|
`,!1;if(a=Math.max(...o)+1+a,a<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
|
|
12
|
-
`,!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=qn(i)}else r=await Kn(e,t.right);else vt(t.operator)&&!n?r=await Xn(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 mr(e,s),await mr(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=ma(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"?
|
|
13
|
-
`,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(
|
|
12
|
+
`,!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=qn(i)}else r=await Kn(e,t.right);else vt(t.operator)&&!n?r=await Xn(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 mr(e,s),await mr(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=ma(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"?Ms(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 ')'
|
|
13
|
+
`,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(Ms(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
|
|
14
14
|
`,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 gr(e,t,0);return s.pos<t.length?_(`test: too many arguments
|
|
15
|
-
`,2):X(s.value)}async function gr(e,t,s){return da(e,t,s)}async function da(e,t,s){let{value:n,pos:r}=await pr(e,t,s);for(;t[r]==="-o";){let i=await pr(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function pr(e,t,s){let{value:n,pos:r}=await
|
|
16
|
-
`)&&!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 Er(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 wa(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 Sr(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 wa(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 Ar(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 _r(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
|
|
15
|
+
`,2):X(s.value)}async function gr(e,t,s){return da(e,t,s)}async function da(e,t,s){let{value:n,pos:r}=await pr(e,t,s);for(;t[r]==="-o";){let i=await pr(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function pr(e,t,s){let{value:n,pos:r}=await Fs(e,t,s);for(;t[r]==="-a";){let i=await Fs(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function Fs(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await Fs(e,t,s+1);return{value:!n,pos:r}}return ha(e,t,s)}async function ha(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await gr(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:Ms(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function ot(e,t,s=!1,n=!1){let r=`^${wr(t,n)}$`;return mt(r,s?"is":"s").test(e)}function wr(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=vr(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=br(a),l=o.map(u=>wr(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=>$r(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 vr(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 br(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 $r(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=vr(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),l=br(a).map(c=>$r(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 Ms(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 mr(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 yr(t);try{let s=new V,n=Q(s,t);return await j(e,n.expression)}catch{return yr(t)}}function pa(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 yr(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=pa(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 ma(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=ya(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function ya(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+=ga(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 ga(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===`
|
|
16
|
+
`)&&!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 Er(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 wa(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 Sr(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 wa(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 Ar(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 _r(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 Ws=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Cr(e){return Ws.has(e)}var zs=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
|
|
17
17
|
`;if(n.checkNoclobber&&e.state.options.noclobber&&!n.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
|
|
18
|
-
`}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 va(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 kr(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(
|
|
18
|
+
`}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 va(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 kr(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(Cs(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
|
|
19
19
|
`};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 ba(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=ba(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}
|
|
20
20
|
`);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
|
|
21
21
|
`,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
|
|
22
22
|
`,1);try{let o=await e.fs.stat(i);if(o.isDirectory)return k("",`bash: ${r}: Is a directory
|
|
23
23
|
`,1);if(e.state.options.noclobber&&!a&&!o.isDirectory&&r!=="/dev/null")return k("",`bash: ${r}: cannot overwrite existing file
|
|
24
24
|
`,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
|
|
25
|
-
`,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,v=n?.get(h);if(v!==void 0)p=v;else if(y.operator===">&"||y.operator==="<&"){if(
|
|
25
|
+
`,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,v=n?.get(h);if(v!==void 0)p=v;else if(y.operator===">&"||y.operator==="<&"){if(Cs(e,y.target)){i+=`bash: $@: ambiguous redirect
|
|
26
26
|
`,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
|
|
27
27
|
`,a=1,r="";continue}switch(y.operator){case">":case">|":{let b=y.fd??1,g=y.operator===">|";if(b===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
|
|
28
28
|
`,a=1,r="";break}let $=e.fs.resolvePath(e.state.cwd,p),m=await Ge(e,$,p,{checkNoclobber:!0,isClobber:g});if(m){i+=m,a=1,r="";break}await e.fs.writeFile($,r,c(r)),r=""}else if(b===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
|
|
@@ -33,11 +33,11 @@ import{B as Zn,C as qn,D as ue,E as Ze,F as ee,G as Ae,H as Lt,I as Gn,J as I,K
|
|
|
33
33
|
`,a=1,r=""):g>=3&&(i+=`bash: ${g}: Bad file descriptor
|
|
34
34
|
`,a=1,r="")}}break}case"&>":{if(p==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
35
35
|
`,a=1,r="";break}let b=e.fs.resolvePath(e.state.cwd,p),g=await Ge(e,b,p,{checkNoclobber:!0});if(g){i=g,a=1,r="";break}let $=r+i;await e.fs.writeFile(b,$,c($)),r="",i="";break}case"&>>":{if(p==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
36
|
-
`,a=1,r="";break}let b=e.fs.resolvePath(e.state.cwd,p),g=await Ge(e,b,p,{});if(g){i=g,a=1,r="";break}let $=r+i;await e.fs.appendFile(b,$,c($)),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 Pr(e,t){if(e.state.options.posix&&
|
|
36
|
+
`,a=1,r="";break}let b=e.fs.resolvePath(e.state.cwd,p),g=await Ge(e,b,p,{});if(g){i=g,a=1,r="";break}let $=r+i;await e.fs.appendFile(b,$,c($)),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 Pr(e,t){if(e.state.options.posix&&Ws.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
|
|
37
37
|
`;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 $a(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(`
|
|
38
38
|
`).map(o=>o.replace(/^\t+/,"")).join(`
|
|
39
39
|
`)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await I(e,n.target)}
|
|
40
|
-
`;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(_r(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 kr(e,t.redirections);if(l)return a(),k("",l,1);try{let c=await $a(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 Or=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],
|
|
40
|
+
`;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(_r(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 kr(e,t.redirections);if(l)return a(),k("",l,1);try{let c=await $a(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 Or=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],Bs=[".",":","[","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"],Ea=["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"],Sa=Bs;async function js(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 w=t[m];if(w==="-v")s.push("variable");else if(w==="-e")s.push("export");else if(w==="-f")s.push("file");else if(w==="-d")s.push("directory");else if(w==="-k")s.push("keyword");else if(w==="-A"){if(m++,m>=t.length)return _(`compgen: -A: option requires an argument
|
|
41
41
|
`,2);let E=t[m];if(!y.includes(E))return _(`compgen: ${E}: invalid action name
|
|
42
42
|
`,2);s.push(E)}else if(w==="-W"){if(m++,m>=t.length)return _(`compgen: -W: option requires an argument
|
|
43
43
|
`,2);n=t[m]}else if(w==="-P"){if(m++,m>=t.length)return _(`compgen: -P: option requires an argument
|
|
@@ -48,12 +48,12 @@ import{B as Zn,C as qn,D as ue,E as Ze,F as ee,G as Ae,H as Lt,I as Gn,J as I,K
|
|
|
48
48
|
`,2);f=t[m]}else if(w==="-C"){if(m++,m>=t.length)return _(`compgen: -C: option requires an argument
|
|
49
49
|
`,2);d=t[m]}else if(w==="-X"){if(m++,m>=t.length)return _(`compgen: -X: option requires an argument
|
|
50
50
|
`,2);u=t[m]}else if(w==="-G"){if(m++,m>=t.length)return _(`compgen: -G: option requires an argument
|
|
51
|
-
`,2)}else if(w==="--"){h.push(...t.slice(m+1));break}else w.startsWith("-")||h.push(w)}a=h[0]??null;let p=[];if(l){let m=await
|
|
51
|
+
`,2)}else if(w==="--"){h.push(...t.slice(m+1));break}else w.startsWith("-")||h.push(w)}a=h[0]??null;let p=[];if(l){let m=await Vs(e,a);p.push(...m)}if(c){let m=await Nr(e,a);p.push(...m)}for(let m of s)if(m==="variable"){let w=Aa(e,a);p.push(...w)}else if(m==="export"){let w=_a(e,a);p.push(...w)}else if(m==="function"){let w=Ca(e,a);p.push(...w)}else if(m==="builtin"){let w=ka(a);p.push(...w)}else if(m==="keyword"){let w=Pa(a);p.push(...w)}else if(m==="alias"){let w=Na(e,a);p.push(...w)}else if(m==="shopt"){let w=Oa(a);p.push(...w)}else if(m==="helptopic"){let w=Da(a);p.push(...w)}else if(m==="directory"){let w=await Vs(e,a);p.push(...w)}else if(m==="file"){let w=await Nr(e,a);p.push(...w)}else if(m==="user"){let w=Ta(a);p.push(...w)}else if(m==="command"){let w=await Ia(e,a);p.push(...w)}if(n!==null)try{let m=await xa(e,n),w=Ra(e,m);for(let E of w)(a===null||E.startsWith(a))&&p.push(E)}catch{return k("","",1)}if(o){let m=await Vs(e,a);for(let w of m)p.includes(w)||p.push(w)}let v="";if(f!==null){let m=e.state.functions.get(f);if(m){let w=new Map;w.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),w.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),w.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),w.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,w),ut(e,E),k("",O.stderr,1);v=O.stdout;let N=La(e);p.push(...N)}catch{return ut(e,w),ut(e,E),k("","",1)}ut(e,w),ut(e,E)}}if(d!==null)try{let m=Ee(d),w=await e.executeScript(m);if(w.exitCode!==0)return k("",w.stderr,w.exitCode);if(w.stdout){let E=w.stdout.split(`
|
|
52
52
|
`);for(let S of E)S.length>0&&p.push(S)}}catch(m){if(m.name==="ParseException")return _(`compgen: -C: ${m.message}
|
|
53
53
|
`,2);throw m}let b=p;if(u!==null){let m=u.startsWith("!"),w=m?u.slice(1):u;b=p.filter(E=>{let S=ot(E,w,!1,!0);return m?S:!S})}if(b.length===0&&a!==null)return k(v,"",1);let g=b.map(m=>`${r}${m}${i}`).join(`
|
|
54
54
|
`),$=v+(g?`${g}
|
|
55
|
-
`:"");return M($)}function Aa(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 _a(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 Ca(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function ka(e){let t=[...
|
|
56
|
-
`;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 La(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 Fa=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function
|
|
55
|
+
`:"");return M($)}function Aa(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 _a(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 Ca(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function ka(e){let t=[...Bs];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Pa(e){let t=[...Or];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Na(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 Oa(e){let t=[...Ea];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Da(e){let t=[...Sa];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Vs(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 Nr(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 Ta(e){return["root","nobody"]}async function Ia(e,t){let s=new Set;for(let i of Bs)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 Or)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 xa(e,t){let n=new V().parseWordFromString(t,!1,!1);return await I(e,n)}function Ra(e,t){let s=e.state.env.get("IFS")??`
|
|
56
|
+
`;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 La(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 Fa=["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=!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
|
|
57
57
|
`,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return _(`complete: -F: option requires an argument
|
|
58
58
|
`,2);a=t[f]}else if(d==="-o"){if(f++,f>=t.length)return _(`complete: -o: option requires an argument
|
|
59
59
|
`,2);let h=t[f];if(!Fa.includes(h))return _(`complete: ${h}: invalid option name
|
|
@@ -63,38 +63,38 @@ import{B as Zn,C as qn,D as ue,E as Ze,F as ee,G as Ae,H as Lt,I as Gn,J as I,K
|
|
|
63
63
|
`,2)}else if(d==="-P"){if(f++,f>=t.length)return _(`complete: -P: option requires an argument
|
|
64
64
|
`,2)}else if(d==="-S"){if(f++,f>=t.length)return _(`complete: -S: option requires an argument
|
|
65
65
|
`,2)}else if(d==="-X"){if(f++,f>=t.length)return _(`complete: -X: option requires an argument
|
|
66
|
-
`,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?
|
|
67
|
-
`,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
|
|
66
|
+
`,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?Hs(e):Hs(e,u);if(t.length===0||u.length===0&&!i&&!a&&!o&&l.length===0&&c.length===0&&!r)return Hs(e);if(a&&u.length===0&&!r)return _(`complete: -F: option requires a command name
|
|
67
|
+
`,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 Hs(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
|
|
68
68
|
`;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(`
|
|
69
69
|
`)+(n.length>0?`
|
|
70
70
|
`:""),`complete: ${i}: no completion specification
|
|
71
71
|
`,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(`
|
|
72
72
|
`)}
|
|
73
|
-
`)}var Dr=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function
|
|
73
|
+
`)}var Dr=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Zs(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
|
|
74
74
|
`,2);let c=t[o];if(!Dr.includes(c))return _(`compopt: ${c}: invalid option name
|
|
75
75
|
`,2);r.push(c)}else if(l==="+o"){if(o++,o>=t.length)return _(`compopt: +o: option requires an argument
|
|
76
76
|
`,2);let c=t[o];if(!Dr.includes(c))return _(`compopt: ${c}: invalid option name
|
|
77
77
|
`,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
|
|
78
|
-
`,1)}function
|
|
78
|
+
`,1)}function qs(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
|
|
79
79
|
`);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
|
|
80
|
-
`);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
|
|
81
|
-
`;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",y=
|
|
80
|
+
`);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 Gs(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Ks(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 Gs(e)?Ks(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Ke(e){return Gs(e)?Ks(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Xs(e){return Gs(e)?Ks(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Tr(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 Ys(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Ir(e,t){let s="",n="",r=!1;for(let i of t){let a=Tr(e,i);if(e.state.associativeArrays?.has(i)){let u=Me(e,i);if(u.length===0)s+=`declare -A ${i}=()
|
|
81
|
+
`;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",y=Ys(h);return`['${d}']=${y}`});s+=`declare -A ${i}=(${f.join(" ")})
|
|
82
82
|
`}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(" ")})
|
|
83
83
|
`;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
|
|
84
|
-
`;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${a} ${i}=${
|
|
84
|
+
`;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${a} ${i}=${Xs(c)}
|
|
85
85
|
`;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${a} ${i}
|
|
86
86
|
`:(n+=`bash: declare: ${i}: not found
|
|
87
87
|
`,r=!0)}}return k(s,n,r?1:0)}function xr(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=Tr(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 b=Me(e,f);if(b.length===0)l+=`declare -A ${f}=()
|
|
88
|
-
`;else{let g=b.map($=>{let m=e.state.env.get(`${f}_${$}`)??"",w=
|
|
88
|
+
`;else{let g=b.map($=>{let m=e.state.env.get(`${f}_${$}`)??"",w=Ys(m);return`['${$}']=${w}`});l+=`declare -A ${f}=(${g.join(" ")})
|
|
89
89
|
`}continue}if(y.length>0){let b=y.map(g=>{let $=e.state.env.get(`${f}_${g}`)??"";return`[${g}]=${Ke($)}`});l+=`declare -a ${f}=(${b.join(" ")})
|
|
90
90
|
`;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
|
|
91
|
-
`;continue}let v=e.state.env.get(f);v!==void 0&&(l+=`declare ${d} ${f}=${
|
|
91
|
+
`;continue}let v=e.state.env.get(f);v!==void 0&&(l+=`declare ${d} ${f}=${Xs(v)}
|
|
92
92
|
`)}return M(l)}function Rr(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}=()
|
|
93
|
-
`;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",l=
|
|
93
|
+
`;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",l=Ys(o);return`['${a}']=${l}`});t+=`declare -A ${n}=(${i.join(" ")})
|
|
94
94
|
`}}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);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}=()
|
|
95
95
|
`;else{let a=i.map(o=>{let l=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${Ke(l)}`});t+=`declare -a ${r}=(${a.join(" ")})
|
|
96
96
|
`}}return M(t)}function Fr(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)}
|
|
97
|
-
`)}return M(t)}function
|
|
97
|
+
`)}return M(t)}function Qs(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function $t(e,t){return e.state.integerVars?.has(t)??!1}function Js(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Ma(e,t){return e.state.lowercaseVars?.has(t)??!1}function en(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Wa(e,t){return e.state.uppercaseVars?.has(t)??!1}function ft(e,t,s){return Ma(e,t)?s.toLowerCase():Wa(e,t)?s.toUpperCase():s}async function Mr(e,t){try{let s=new V,n=Q(s,t),r=await j(e,n.expression);return String(r)}catch{return"0"}}function za(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 tn(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,v=!1,b=[];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==="--"){b.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
|
|
98
98
|
`,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")v=!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")v=!0;else return k("",`bash: typeset: -${C}: invalid option
|
|
99
99
|
`,2);else b.push(x)}let $=e.state.localScopes.length>0&&!v,m=N=>{if(!$)return;let x=e.state.localScopes[e.state.localScopes.length-1];x.has(N)||x.set(N,e.state.env.get(N))},w=N=>{if(!$)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=>{$&&Ve(e,N)};if(p){if(b.length===0){let C=Array.from(e.state.functions.keys()).sort(),P="";for(let D of C)P+=`declare -f ${D}
|
|
100
100
|
`;return M(P)}let N=!0,x="";for(let C of b)e.state.functions.has(C)?x+=`${C}
|
|
@@ -104,24 +104,24 @@ import{B as Zn,C as qn,D as ue,E as Ze,F as ee,G as Ae,H as Lt,I as Gn,J as I,K
|
|
|
104
104
|
}
|
|
105
105
|
`;return M(x)}let N=!0;for(let x of b)e.state.functions.has(x)||(N=!1);return k("","",N?0:1)}if(a&&b.length>0)return Ir(e,b);if(a&&b.length===0)return xr(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if(b.length===0&&n&&!a)return Rr(e);if(b.length===0&&s&&!a)return Lr(e);if(b.length===0&&!a)return Fr(e);let S="",O=0;for(let N of b){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
|
|
106
106
|
`,O=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has(A)){S+=`bash: declare: ${A}: cannot convert associative to indexed array
|
|
107
|
-
`,O=1;continue}if(w(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],Gi=G(e,Qe),pt;if(/^-?\d+$/.test(fe))pt=Number.parseInt(fe,10);else try{let Ki=new V,Xi=Q(Ki,fe);pt=await j(e,Xi.expression)}catch{pt=0}e.state.env.set(`${A}_${pt}`,Gi),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(Bn(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=za(N);if(C){let{name:A,indexExpr:T,value:R}=C,J=ee(e,A);if(J)return J;w(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;w(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&&
|
|
107
|
+
`,O=1;continue}if(w(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],Gi=G(e,Qe),pt;if(/^-?\d+$/.test(fe))pt=Number.parseInt(fe,10);else try{let Ki=new V,Xi=Q(Ki,fe);pt=await j(e,Xi.expression)}catch{pt=0}e.state.env.set(`${A}_${pt}`,Gi),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(Bn(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=za(N);if(C){let{name:A,indexExpr:T,value:R}=C,J=ee(e,A);if(J)return J;w(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;w(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&&Qs(e,A),d&&Js(e,A),h&&en(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 Mr(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
|
|
108
108
|
`,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
|
|
109
|
-
`,O=1;continue}e.state.env.set(T,R),Ie(e,T),R!==""&&
|
|
110
|
-
`,O=1;continue}if(s||n?w(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)?jn(e,A):R&&
|
|
111
|
-
`,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
|
|
112
|
-
`}}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[v,b]of p){let g=G(e,b);e.state.env.set(`${f}_${v}`,g)}}else{let p=ne(e,f),v=0,b=e.state.env.get(f);p.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),v=1):p.length>0&&(v=Math.max(...p)+1);for(let $=0;$<y.length;$++)e.state.env.set(`${f}_${v+$}`,G(e,y[$]));let g=v+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=Er(a);if(c.value===void 0&&!c.isArray){ue(e,c.name);continue}let u=await Sr(e,c,{makeReadonly:!0});if(u)return u}return F}function
|
|
109
|
+
`,O=1;continue}e.state.env.set(T,R),Ie(e,T),R!==""&&As(e,R)&&Ss(e,T),E(T),r&&ue(e,T),i&&Ae(e,T);continue}if(f&&Qs(e,T),d&&Js(e,T),h&&en(e,T),$t(e,T)&&(R=await Mr(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
|
|
110
|
+
`,O=1;continue}if(s||n?w(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)?jn(e,A):R&&As(e,R)&&Ss(e,A),E(A),r&&ue(e,A),i&&Ae(e,A);continue}if(f&&Qs(e,A),d&&Js(e,A),h&&en(e,A),n){if(ne(e,A).length>0){S+=`bash: declare: ${A}: cannot convert indexed to associative array
|
|
111
|
+
`,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 sn(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}"
|
|
112
|
+
`}}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[v,b]of p){let g=G(e,b);e.state.env.set(`${f}_${v}`,g)}}else{let p=ne(e,f),v=0,b=e.state.env.get(f);p.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),v=1):p.length>0&&(v=Math.max(...p)+1);for(let $=0;$<y.length;$++)e.state.env.set(`${f}_${v+$}`,G(e,y[$]));let g=v+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=Er(a);if(c.value===void 0&&!c.isArray){ue(e,c.name);continue}let u=await Sr(e,c,{makeReadonly:!0});if(u)return u}return F}function nn(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 Va(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 rn(e,t){let s=nn(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
|
|
113
113
|
`,2);n=t[o+1],o++}}else{if(l.startsWith("-")&&l!=="-")return _(`bash: pushd: ${l}: invalid option
|
|
114
114
|
`,2);if(n!==void 0)return _(`bash: pushd: too many arguments
|
|
115
115
|
`,2);n=l}}if(n===void 0){if(s.length<2)return _(`bash: pushd: no other directory
|
|
116
116
|
`,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=Va(r);try{if(!(await e.fs.stat(r)).isDirectory)return _(`bash: pushd: ${n}: Not a directory
|
|
117
117
|
`,1)}catch{return _(`bash: pushd: ${n}: No such file or directory
|
|
118
118
|
`,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(" ")}
|
|
119
|
-
`;return M(a)}function
|
|
119
|
+
`;return M(a)}function an(e,t){let s=nn(e);for(let a of t)if(a!=="--")return a.startsWith("-")&&a!=="-"?_(`bash: popd: ${a}: invalid option
|
|
120
120
|
`,2):_(`bash: popd: too many arguments
|
|
121
121
|
`,2);if(s.length===0)return _(`bash: popd: directory stack empty
|
|
122
122
|
`,1);let n=s.shift();if(!n)return _(`bash: popd: directory stack empty
|
|
123
123
|
`,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(" ")}
|
|
124
|
-
`;return M(i)}function
|
|
124
|
+
`;return M(i)}function on(e,t){let s=nn(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
|
|
125
125
|
`,2);else return _(`bash: dirs: too many arguments
|
|
126
126
|
`,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(`
|
|
127
127
|
`),c+=`
|
|
@@ -131,13 +131,13 @@ import{B as Zn,C as qn,D as ue,E as Ze,F as ee,G as Ae,H as Lt,I as Gn,J as I,K
|
|
|
131
131
|
`,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
|
|
132
132
|
eval: usage: eval [arg ...]
|
|
133
133
|
`,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}
|
|
134
|
-
`);throw o}finally{e.state.groupStdin=i}}function
|
|
135
|
-
`,s=2):s=(i%256+256)%256}throw new B(s,"",n)}function
|
|
134
|
+
`);throw o}finally{e.state.groupStdin=i}}function ln(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
|
|
135
|
+
`,s=2):s=(i%256+256)%256}throw new B(s,"",n)}function cn(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}"
|
|
136
136
|
`}}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
|
|
137
137
|
`,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 ...]
|
|
138
138
|
`);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 v=1;v<=p;v++)o.push(e.state.env.get(String(v))||"")}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}
|
|
139
139
|
`,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}
|
|
140
|
-
`,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
|
|
140
|
+
`,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 un(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
|
|
141
141
|
`,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
|
|
142
142
|
`,1):_(`bash: hash: -${p}: invalid option
|
|
143
143
|
`,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
|
|
@@ -498,31 +498,31 @@ eval: usage: eval [arg ...]
|
|
|
498
498
|
job specification, and reports its termination status.
|
|
499
499
|
Exit Status:
|
|
500
500
|
Returns the status of the last ID; fails if ID is invalid or an invalid
|
|
501
|
-
option is given.`]]]),zr=[...Wr.keys()].sort();function
|
|
501
|
+
option is given.`]]]),zr=[...Wr.keys()].sort();function fn(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
|
|
502
502
|
`,2)}r++}else n.push(l),r++}if(n.length===0)return ja();let i="",a=!1,o="";for(let l of n){let c=Ba(l);if(c.length===0){o+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
|
|
503
503
|
`,a=!0;continue}for(let u of c){let f=Wr.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
|
|
504
504
|
`:i+=`${u}: ${d}
|
|
505
505
|
${h}
|
|
506
506
|
`}}return{exitCode:a?1:0,stdout:i,stderr:o}}function Ba(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=mt(`^${t}$`);return zr.filter(n=>s.test(n))}function ja(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,s=zr.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",a=s[r+n]||"",o=i.padEnd(t);e.push(a?`${o}${a}`:i)}return M(`${e.join(`
|
|
507
507
|
`)}
|
|
508
|
-
`)}function Ha(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
|
|
508
|
+
`)}function Ha(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 dn(e,t){if(t.length===0)return _(`bash: let: expression expected
|
|
509
509
|
`);let s=Ha(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}
|
|
510
|
-
`)}return k("","",n===0?1:0)}async function
|
|
510
|
+
`)}return k("","",n===0?1:0)}async function hn(e,t){if(e.state.localScopes.length===0)return _(`bash: local: can only be used in a function
|
|
511
511
|
`);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}
|
|
512
512
|
`)}return k(c,"",0)}for(let c of l){let u,f,d=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){u=d[1];let b=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
|
|
513
513
|
`,r=1;continue}if(ee(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let m=`${u}_`;for(let w of e.state.env.keys())w.startsWith(m)&&!w.includes("__")&&(s.has(w)||s.set(w,e.state.env.get(w)))}let g=`${u}_`;for(let m of e.state.env.keys())m.startsWith(g)&&!m.includes("__")&&e.state.env.delete(m);let $=Ne(b);for(let m=0;m<$.length;m++)e.state.env.set(`${u}_${m}`,$[m]);e.state.env.set(`${u}__length`,String($.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 b=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,w=e.state.env.get(u);$.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),m=1):$.length>0&&(m=Math.max(...$)+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 b=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+b),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 b=p[2],g=G(e,p[3]);if(ee(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let w=`${u}_`;for(let S of e.state.env.keys())S.startsWith(w)&&!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 $;try{let w=new V,E=Q(w,b);$=await j(e,E.expression)}catch{let w=parseInt(b,10);$=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${$}`,g);let m=parseInt(e.state.env.get(`${u}__length`)??"0",10);$>=m&&e.state.env.set(`${u}__length`,String($+1)),Ve(e,u),i&&Ie(e,u);continue}if(c.includes("=")){let b=c.indexOf("=");u=c.slice(0,b),f=G(e,c.slice(b+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
|
|
514
514
|
`,r=1;continue}let v=s.has(u);if(f!==void 0){let b=e.state.env.get(u);if(e.state.tempEnvBindings){let g=e.state.accessedTempEnvVars?.has(u),$=e.state.mutatedTempEnvVars?.has(u);if(!g&&!$)for(let m=e.state.tempEnvBindings.length-1;m>=0;m--){let w=e.state.tempEnvBindings[m];if(w.has(u)){b=w.get(u);break}}}Ar(e,u,b)}if(!v){let b=e.state.env.get(u);if(e.state.tempEnvBindings)for(let g=e.state.tempEnvBindings.length-1;g>=0;g--){let $=e.state.tempEnvBindings[g];if($.has(u)){b=$.get(u);break}}if(s.set(u,b),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 $=`${u}__length`;e.state.env.has($)&&!s.has($)&&s.set($,e.state.env.get($))}}if(a&&f===void 0){let b=`${u}_`;for(let g of e.state.env.keys())g.startsWith(b)&&!g.includes("__")&&e.state.env.delete(g);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(ee(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){n+=`bash: local: \`${f}': invalid variable name for name reference
|
|
515
|
-
`,r=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let b=e.state.tempEnvBindings?.some(g=>g.has(u));!v&&!b&&e.state.env.delete(u)}Ve(e,u),i&&Ie(e,u)}return k("",n,r)}function
|
|
515
|
+
`,r=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let b=e.state.tempEnvBindings?.some(g=>g.has(u));!v&&!b&&e.state.env.delete(u)}Ve(e,u),i&&Ie(e,u)}return k("",n,r)}function pn(e,t,s){let n=`
|
|
516
516
|
`,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]||`
|
|
517
517
|
`,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})
|
|
518
518
|
`,1);let w=d,E=w.indexOf("\0");E!==-1&&(w=w.substring(0,E)),f.push(w),h++}}break}let $=d.substring(0,g),m=$.indexOf("\0");if(m!==-1&&($=$.substring(0,m)),!o&&n!=="\0"&&($+=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})
|
|
519
|
-
`,1);f.push($),h++}i===0&&Ce(e,l);for(let g=0;g<f.length;g++)e.state.env.set(`${l}_${i+g}`,f[g]);let v=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(v,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),k("","",0)}function Ua(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 Za(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function
|
|
519
|
+
`,1);f.push($),h++}i===0&&Ce(e,l);for(let g=0;g<f.length;g++)e.state.env.set(`${l}_${i+g}`,f[g]);let v=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(v,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),k("","",0)}function Ua(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 Za(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function mn(e,t,s,n=-1){let r=!1,i=`
|
|
520
520
|
`,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 v=s;u>=0?e.state.fileDescriptors?v=e.state.fileDescriptors.get(u)||"":v="":!v&&e.state.groupStdin!==void 0&&(v=e.state.groupStdin);let b=i===""?"\0":i,g="",$=0,m=!0,w=C=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,v.substring(C));else if(n>=0&&e.state.fileDescriptors){let P=e.state.fileDescriptors.get(n);if(P?.startsWith("__rw__:")){let D=Ua(P);if(D){let A=D.position+C;e.state.fileDescriptors.set(n,Za(D.path,A,D.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=v.substring(C))};if(l>=0){let C=Math.min(l,v.length);g=v.substring(0,C),$=C,m=C>=l,w($);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<v.length&&C<o;){let A=v[P];if(A===b){$=P+1,D=!0;break}if(!r&&A==="\\"&&P+1<v.length){let T=v[P+1];if(T===b&&b===`
|
|
521
521
|
`){P+=2,$=P;continue}if(T===b){P+=2,C++,g+=T,$=P;continue}g+=T,P+=2,C++,$=P}else g+=A,P++,C++,$=P}m=C>=o||D,w($)}else{$=0;let C=0;for(;C<v.length;){let P=v[C];if(P===b){$=C+b.length,m=!0;break}if(!r&&P==="\\"&&C+1<v.length){let D=v[C+1];if(D===`
|
|
522
522
|
`){C+=2;continue}if(D===b){g+=D,C+=2;continue}g+=P,g+=D,C+=2;continue}g+=P,C++}if(C>=v.length&&(m=!1,$=C,g.length===0&&v.length===0)){for(let P of d)e.state.env.set(P,"");return c&&Ce(e,c),k("","",1)}w($)}b===`
|
|
523
523
|
`&&g.endsWith(`
|
|
524
|
-
`)&&(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=zn(e.state.env);if(c){let{words:C}
|
|
525
|
-
`,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}
|
|
524
|
+
`)&&(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=zn(e.state.env);if(c){let{words:C}=Es(g,S,void 0,r),P=e.limits?.maxArrayElements??1e5;if(C.length>P)return k("",`read: array element limit exceeded (${P})
|
|
525
|
+
`,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}=Es(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=Vn(D,S,r),D=E(D),e.state.env.set(P,D)}else e.state.env.set(P,"")}return k("","",m?0:1)}function yn(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
|
|
526
526
|
`,2);s=(r%256+256)%256}throw new ce(s)}var as=`set: usage: set [-eux] [+eux] [-o option] [+o option]
|
|
527
527
|
Options:
|
|
528
528
|
-e Exit immediately if a command exits with non-zero status
|
|
@@ -539,7 +539,7 @@ Options:
|
|
|
539
539
|
+o pipefail Disable pipefail
|
|
540
540
|
-o xtrace Same as -x
|
|
541
541
|
+o xtrace Disable xtrace
|
|
542
|
-
`,Vr=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]]),Br=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]]),jr=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Hr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Ur(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 qa(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Ga(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 Ka(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Xa(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`[${Ka(r)}]=${Ke(i)}`});return`${t}=(${n.join(" ")} )`}function Ya(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 Qa(e){return e.state.associativeArrays??new Set}function
|
|
542
|
+
`,Vr=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]]),Br=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]]),jr=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Hr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Ur(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 qa(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Ga(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 Ka(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Xa(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`[${Ka(r)}]=${Ke(i)}`});return`${t}=(${n.join(" ")} )`}function Ya(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 Qa(e){return e.state.associativeArrays??new Set}function wn(e,t){if(t.includes("--help"))return M(as);if(t.length===0){let n=Ya(e),r=Qa(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(Ga(e,l));for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))o.push(Xa(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(`
|
|
543
543
|
`)}
|
|
544
544
|
`:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&qa(t,s)){let r=t[s+1];if(!Br.has(r)){let i=`bash: set: ${r}: invalid option name
|
|
545
545
|
${as}`;if(e.state.options.posix)throw new be(1,"",i);return _(i)}Ur(e,Br.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=jr.map(o=>`${o.padEnd(16)}${e.state.options[o]?"on":"off"}`),i=Hr.map(o=>`${o.padEnd(16)}off`),a=[...r,...i].sort();return M(`${a.join(`
|
|
@@ -547,32 +547,32 @@ ${as}`;if(e.state.options.posix)throw new be(1,"",i);return _(i)}Ur(e,Br.get(r)?
|
|
|
547
547
|
`)}if(n==="+o"){let r=jr.map(o=>`set ${e.state.options[o]?"-o":"+o"} ${o}`),i=Hr.map(o=>`set +o ${o}`),a=[...r,...i].sort();return M(`${a.join(`
|
|
548
548
|
`)}
|
|
549
549
|
`)}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(!Vr.has(a)){let o=`bash: set: ${n[0]}${a}: invalid option
|
|
550
|
-
${as}`;if(e.state.options.posix)throw new be(1,"",o);return _(o)}Ur(e,Vr.get(a)??null,r)}s++;continue}if(n==="--")return
|
|
551
|
-
${as}`;if(e.state.options.posix)throw new be(1,"",r);return _(r)}return
|
|
550
|
+
${as}`;if(e.state.options.posix)throw new be(1,"",o);return _(o)}Ur(e,Vr.get(a)??null,r)}s++;continue}if(n==="--")return gn(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 gn(e,t.slice(s+1)),F;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
|
|
551
|
+
${as}`;if(e.state.options.posix)throw new be(1,"",r);return _(r)}return gn(e,t.slice(s)),F}return F}function gn(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 vn(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
|
|
552
552
|
`;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
|
|
553
|
-
`;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
|
|
553
|
+
`;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 bn(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
|
|
554
554
|
`,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
|
|
555
555
|
`);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}
|
|
556
|
-
`);throw c}}function Zr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Ja(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function qr(e,t){if(Ja(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 Gr(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)
|
|
556
|
+
`);throw c}}function Zr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Ja(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function qr(e,t){if(Ja(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 Gr(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),$n(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 $n(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 Kr(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 En(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 $=Se(e,d);for(let[m]of $)e.state.env.delete(`${d}_${m}`);e.state.env.delete(d);continue}let y=e.state.associativeArrays?.has(d);if(y){let $=await Kr(e,h);e.state.env.delete(`${d}_${$}`);continue}let p=_s(e,d),v=e.state.declaredVars?.has(d);if((e.state.env.has(d)||v)&&!p&&!y){n+=`bash: unset: ${d}: not an array variable
|
|
557
557
|
`,r=1;continue}let g=await qr(e,h);if(g===null&&p){n+=`bash: unset: ${h}: not a valid identifier
|
|
558
558
|
`,r=1;continue}if(g===null)continue;if(g<0){let $=Se(e,d),m=$.length,w=e.state.currentLine;if(m===0){n+=`bash: line ${w}: unset: [${g}]: bad array subscript
|
|
559
559
|
`,r=1;continue}let E=m+g;if(E<0){n+=`bash: line ${w}: unset: [${g}]: bad array subscript
|
|
560
560
|
`,r=1;continue}let S=$[E][0];e.state.env.delete(`${d}_${S}`);continue}e.state.env.delete(`${d}_${g}`);continue}if(!Zr(i)){n+=`bash: unset: \`${i}': not a valid identifier
|
|
561
561
|
`,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
|
|
562
|
-
`,r=1;continue}let f=lt(e,u);if(f!==void 0&&f!==e.state.callDepth)Gr(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
|
|
562
|
+
`,r=1;continue}let f=lt(e,u);if(f!==void 0&&f!==e.state.callDepth)Gr(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 $n(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[v]of p)e.state.env.delete(`${c}_${v}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let p=await Kr(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=_s(e,c);if(e.state.env.has(c)&&!d&&!f){n+=`bash: unset: ${c}: not an array variable
|
|
563
563
|
`,r=1;continue}let y=await qr(e,u);if(y===null&&d){n+=`bash: unset: ${u}: not a valid identifier
|
|
564
564
|
`,r=1;continue}if(y===null)continue;if(y<0){let p=Se(e,c),v=p.length,b=e.state.currentLine;if(v===0){n+=`bash: line ${b}: unset: [${y}]: bad array subscript
|
|
565
565
|
`,r=1;continue}let g=v+y;if(g<0){n+=`bash: line ${b}: unset: [${y}]: bad array subscript
|
|
566
566
|
`,r=1;continue}let $=p[g][0];e.state.env.delete(`${c}_${$}`);continue}e.state.env.delete(`${c}_${y}`);continue}if(!Zr(i)){n+=`bash: unset: \`${i}': not a valid identifier
|
|
567
567
|
`,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
|
|
568
|
-
`,r=1;continue}let l=lt(e,o);if(l!==void 0&&l!==e.state.callDepth)Gr(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
|
|
568
|
+
`,r=1;continue}let l=lt(e,o);if(l!==void 0&&l!==e.state.callDepth)Gr(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 $n(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return k("",n,r)}var Sn=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],eo=["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 Sn.includes(e)}function to(e){return eo.includes(e)}function Xr(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
|
|
569
569
|
`}}}l++}else break}for(;l<t.length;)o.push(t[l]),l++;if(a)return so(e,o,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
|
|
570
|
-
`};if(o.length===0){if(s||n){let h=[];for(let y of
|
|
570
|
+
`};if(o.length===0){if(s||n){let h=[];for(let y of Sn){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(`
|
|
571
571
|
`)}
|
|
572
|
-
`:"",stderr:""}}let d=[];for(let h of
|
|
572
|
+
`:"",stderr:""}}let d=[];for(let h of Sn){let y=e.state.shoptOptions[h];d.push(r?`shopt ${y?"-s":"-u"} ${h}`:`${h} ${y?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
|
|
573
573
|
`)}
|
|
574
574
|
`,stderr:""}}let c=!1,u="",f=[];for(let d of o){if(!os(d)&&!to(d)){u+=`shopt: ${d}: invalid shell option name
|
|
575
|
-
`,c=!0;continue}if(s)os(d)&&(e.state.shoptOptions[d]=!0,
|
|
575
|
+
`,c=!0;continue}if(s)os(d)&&(e.state.shoptOptions[d]=!0,Ts(e));else if(n)os(d)&&(e.state.shoptOptions[d]=!1,Ts(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(`
|
|
576
576
|
`)}
|
|
577
577
|
`:"",stderr:u}}function so(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),v=y||!p?!1:e.state.options[p];s&&!v||n&&v||d.push(r?`set ${v?"-o":"+o"} ${h}`:`${h} ${v?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
|
|
578
578
|
`)}
|
|
@@ -585,7 +585,7 @@ ${as}`;if(e.state.options.posix)throw new be(1,"",r);return _(r)}return yn(e,t.s
|
|
|
585
585
|
`;else{let E=e.state.functions.get(p),S=E?Jr(p,E):`${p} is a function
|
|
586
586
|
`;u+=S}v=!0}let g=e.state.env.get(`BASH_ALIAS_${p}`);if(g!==void 0&&(o||!v)&&(i||(r?u+=`alias
|
|
587
587
|
`:u+=`${p} is aliased to \`${g}'
|
|
588
|
-
`),v=!0,!o)||
|
|
588
|
+
`),v=!0,!o)||zs.has(p)&&(o||!v)&&(i||(r?u+=`keyword
|
|
589
589
|
`:u+=`${p} is a shell keyword
|
|
590
590
|
`),v=!0,!o))continue;if(!o&&b&&!v){if(!i)if(r)u+=`function
|
|
591
591
|
`;else{let E=e.state.functions.get(p),S=E?Jr(p,E):`${p} is a function
|
|
@@ -605,7 +605,7 @@ ${e} ()
|
|
|
605
605
|
}
|
|
606
606
|
`}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(io(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(ei(t.name));for(let n of t.args)s.push(ei(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>St(n)).join("; ")}; }`:"..."}function io(e){let t=e.commands.map(s=>St(s));return(e.negated?"! ":"")+t.join(" | ")}function ei(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>ti(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=ti(s);return t}function ti(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function ni(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}"
|
|
607
607
|
`:r+=`alias ${o}='${l}'
|
|
608
|
-
`;else if(
|
|
608
|
+
`;else if(zs.has(o))n?r+=`${o} is a shell keyword
|
|
609
609
|
`:r+=`${o}
|
|
610
610
|
`;else if(ct.has(o))n?r+=`${o} is a shell builtin
|
|
611
611
|
`:r+=`${o}
|
|
@@ -617,25 +617,25 @@ ${e} ()
|
|
|
617
617
|
`),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}
|
|
618
618
|
`:r+=`${f}
|
|
619
619
|
`}else n&&(i+=`${o}: not found
|
|
620
|
-
`),a=1}return k(r,i,a)}async function ri(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 ii(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
|
|
620
|
+
`),a=1}return k(r,i,a)}async function ri(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 ii(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 cn(l,s);if(t==="unset")return En(l,s);if(t==="exit")return ln(l,s);if(t==="local")return hn(l,s);if(t==="set")return wn(l,s);if(t==="break")return xs(l,s);if(t==="continue")return qs(l,s);if(t==="return")return yn(l,s);if(t==="eval"&&l.state.options.posix)return rs(l,s,r);if(t==="shift")return vn(l,s);if(t==="getopts")return is(l,s);if(t==="compgen")return js(l,s);if(t==="complete")return Us(l,s);if(t==="compopt")return Zs(l,s);if(t==="pushd")return await rn(l,s);if(t==="popd")return an(l,s);if(t==="dirs")return on(l,s);if(t==="source"||t===".")return bn(l,s);if(t==="read")return mn(l,s,r,o);if(t==="mapfile"||t==="readarray")return pn(l,s,r);if(t==="declare"||t==="typeset")return tn(l,s);if(t==="readonly")return sn(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 Rs(l,s);if(t===":"||t==="true")return F;if(t==="false")return X(!1);if(t==="let")return dn(l,s);if(t==="command")return ao(e,s,r);if(t==="builtin")return oo(e,s,r);if(t==="shopt")return Xr(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 si(l,s,u=>ri(l,u),u=>ls(l,u));if(t==="hash")return un(l,s);if(t==="help")return fn(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 ao(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 ni(n,l,o,a);let[c,...u]=l;return r(c,u,[],s,!0,i,-1)}async function oo(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
|
|
621
621
|
`);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function ai(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e,c=await Yr(i,t,r?"/usr/bin:/bin":void 0);if(!c)return hr(t)?_(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
|
|
622
622
|
`,127):_(`bash: ${t}: command not found
|
|
623
623
|
`,127);if("error"in c)return c.error==="permission_denied"?_(`bash: ${t}: Permission denied
|
|
624
624
|
`,126):_(`bash: ${t}: No such file or directory
|
|
625
|
-
`,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=u.custom?
|
|
626
|
-
`)}}async function
|
|
625
|
+
`,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=u.custom?ys(d):d,y=a(),p={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:y,stdin:h,limits:i.limits,exec:i.execFn,fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext,jsBootstrapCode:i.jsBootstrapCode,invokeTool:i.invokeTool},v=u.custom?s.map(g=>ys(g)):s,b=Qr(p,t);try{let g=()=>Fn(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(v,b));return u.trusted?await ve.runTrustedAsync(()=>g()):await g()}catch(g){if(g instanceof Y||g instanceof Je)throw g;return _(`${t}: ${Te($e(g))}
|
|
626
|
+
`)}}async function An(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}
|
|
627
627
|
`,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)}
|
|
628
|
-
`,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function oi(e,t){let s="",n="";for(let r of t.clauses){let i=await
|
|
628
|
+
`,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function oi(e,t){let s="",n="";for(let r of t.clauses){let i=await An(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 li(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
|
|
629
629
|
`);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 ci(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 ui(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(`
|
|
630
630
|
`).map(d=>d.replace(/^\t+/,"")).join(`
|
|
631
631
|
`)),o=f}else if(c.operator==="<<<"&&c.target.type==="Word")o=`${await I(e,c.target)}
|
|
632
632
|
`;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
|
|
633
|
-
`)}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 fi(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
|
|
633
|
+
`)}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 fi(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 An(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 di(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);Gn(d)&&(h=Zn(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 _n(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function hi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let 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 pi="+ ";async function mi(e){let t=e.state.env.get("PS4");if(t===void 0)return pi;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
|
|
634
634
|
`,t||pi}}function lo(e){return e.map(t=>co(t)).join(" ")}function co(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
|
|
635
635
|
`),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===`
|
|
636
636
|
`?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 yi(e,t,s){if(!e.state.options.xtrace)return"";let n=await mi(e),r=[t,...s],i=lo(r);return`${n}${i}
|
|
637
637
|
`}async function gi(e,t,s){return e.state.options.xtrace?`${await mi(e)}${t}=${s}
|
|
638
|
-
`:""}async function vi(e,t,s){let n=t.timed?
|
|
638
|
+
`:""}async function vi(e,t,s){let n=t.timed?vs():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 b=c&&(!y||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(h,r)}catch($){if($ instanceof Ot)g={stdout:$.stdout,stderr:$.stderr,exitCode:1};else if($ instanceof B&&t.commands.length>1)g={stdout:$.stdout,stderr:$.stderr,exitCode:$.exitCode};else if($ instanceof pe&&t.commands.length>1)g={stdout:$.stdout,stderr:$.stderr,exitCode:$.exitCode};else throw b&&(e.state.env=b),$}b&&(e.state.env=b),o.push(g.exitCode),g.exitCode!==0&&(a=g.exitCode),y?i=g:(t.pipeStderr?.[d]??!1?r=He(g.stderr)+gs(g):(r=gs(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=(vs()-n)/1e3,y=Math.floor(h/60),p=h%60,v;t.timePosix?v=`real ${h.toFixed(2)}
|
|
639
639
|
user 0.00
|
|
640
640
|
sys 0.00
|
|
641
641
|
`:v=`
|
|
@@ -646,8 +646,8 @@ sys 0m0.000s
|
|
|
646
646
|
`,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await yo(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 wo(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 uo(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
|
|
647
647
|
`,1)};if(ye(e,s)){let u=Hn(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
|
|
648
648
|
`,1)}}if(Ze(e,s)){if(t.name)return a+=`bash: ${s}: readonly variable
|
|
649
|
-
`,{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=fo(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 ho(e,t,s,n,r,c,u=>{a+=u}):l?await po(e,s,n,r,c):await mo(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 fo(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 ho(e,t,s,n,r,i,a){let o=[];for(let l of n){let c
|
|
650
|
-
`)}}async function po(e,t,s,n,r){let i=[];for(let o of s){let l
|
|
649
|
+
`,{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=fo(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 ho(e,t,s,n,r,c,u=>{a+=u}):l?await po(e,s,n,r,c):await mo(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 fo(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 ho(e,t,s,n,r,i,a){let o=[];for(let l of n){let c=$s(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?h=await 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
|
|
650
|
+
`)}}async function po(e,t,s,n,r){let i=[];for(let o of s){let l=$s(o);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await 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 mo(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 yo(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
|
|
651
651
|
`,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 $i(e,o,n);else{let f=await go(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 $i(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 go(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}
|
|
652
652
|
`;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
|
|
653
653
|
`,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
|
|
@@ -663,17 +663,17 @@ sys 0m0.000s
|
|
|
663
663
|
`,127)}if(i.startsWith("#!")){let v=i.indexOf(`
|
|
664
664
|
`);v!==-1&&(i=i.slice(v+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 v=0;v<s.length&&v<9;v++)e.state.env.set(String(v+1),s[v]);for(let v=s.length+1;v<=9;v++)e.state.env.delete(String(v));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 b=new V().parse(i),g=await r(b);return p(),g}catch(v){if(p(),v instanceof B||v instanceof Y)throw v;if(v.name==="ParseException")return _(`bash: ${t}: ${v.message}
|
|
665
665
|
`);throw v}}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 Rn)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 Ln){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 Ai(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}
|
|
666
|
-
`);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 vi(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 oi(this.ctx,t);case"For":return li(this.ctx,t);case"CStyleFor":return ci(this.ctx,t);case"While":return ui(this.ctx,t,s);case"Until":return fi(this.ctx,t);case"Case":return di(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Pr(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,w=100;for(;w>0;){let E=this.expandAlias(m);if(E===m)break;m=E,w--}this.aliasExpansionStack.clear(),m!==t&&(t=m)}this.ctx.state.expansionStderr="";let n=await bi(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 w=await Oe(this.ctx,t.redirections);if(w)return w;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&&
|
|
666
|
+
`);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 vi(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 oi(this.ctx,t);case"For":return li(this.ctx,t);case"CStyleFor":return ci(this.ctx,t);case"While":return ui(this.ctx,t,s);case"Until":return fi(this.ctx,t);case"Case":return di(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Pr(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,w=100;for(;w>0;){let E=this.expandAlias(m);if(E===m)break;m=E,w--}this.aliasExpansionStack.clear(),m!==t&&(t=m)}this.ctx.state.expansionStderr="";let n=await bi(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 w=await Oe(this.ctx,t.redirections);if(w)return w;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&&_n(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,w]of r)w===void 0?this.ctx.state.env.delete(m):this.ctx.state.env.set(m,w);return l}let c=-1;for(let m of t.redirections){if((m.operator==="<<"||m.operator==="<<-")&&m.target.type==="HereDoc"){let w=m.target,E=await I(this.ctx,w.content);w.stripTabs&&(E=E.split(`
|
|
667
667
|
`).map(O=>O.replace(/^\t+/,"")).join(`
|
|
668
668
|
`)),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)}
|
|
669
669
|
`);continue}if(m.operator==="<"&&m.target.type==="Word")try{let w=await I(this.ctx,m.target),E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await xn(this.ctx.fs,E)}catch{let w=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: ${w}: No such file or directory
|
|
670
|
-
`)}if(m.operator==="<&"&&m.target.type==="Word"){let w=await I(this.ctx,m.target),E=Number.parseInt(w,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=hi(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(
|
|
670
|
+
`)}if(m.operator==="<&"&&m.target.type==="Word"){let w=await I(this.ctx,m.target),E=Number.parseInt(w,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=hi(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(_n(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let m of t.args){let w=await fr(this.ctx,m);if(w)f.push(w),d.push(!0);else{let E=await dr(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 w=await ke(this.ctx,m);for(let E of w.values)f.push(E),d.push(w.quoted)}if(!u){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(f.length>0){let w=f.shift();return d.shift(),await this.runCommand(w,f,d,s,!1,!1,c)}return k("","",this.ctx.state.lastExitCode)}return _(`bash: : command not found
|
|
671
671
|
`,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let m of t.redirections){if(m.target.type==="HereDoc"||m.fdVariable)continue;let w=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,w);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,w);ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__file_append__:${S}`);break}case"<":{let S=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let O=await this.ctx.fs.readFile(S);ae(this.ctx),this.ctx.state.fileDescriptors.set(E,O)}catch{return _(`bash: ${w}: No such file or directory
|
|
672
|
-
`)}break}case"<>":{let S=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);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(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let S=w.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(w,10);Number.isNaN(S)||(ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupout__:${S}`))}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let S=w.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(w,10);Number.isNaN(S)||(ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupin__:${S}`))}break}}}for(let[m,w]of r)w===void 0?this.ctx.state.env.delete(m):this.ctx.state.env.set(m,w);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 yi(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,v=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(m){if(m instanceof de||m instanceof he)v=m,p=F;else throw m}let b=i+y;if(b&&(p={...p,stderr:b+p.stderr}),p=await q(this.ctx,p,t.redirections),v)throw v;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 w=m.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(m=w[1])}this.ctx.state.lastArg=m}else this.ctx.state.lastArg=u;let g=Cr(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!g)for(let[m,w]of r)this.ctx.state.fullyUnsetLocals?.has(m)||(w===void 0?this.ctx.state.env.delete(m):this.ctx.state.env.set(m,w));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,v)=>this.runCommand(u,f,d,h,y,p,v),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await ii(l,t,s,n,r,i,a,o);return c!==null?c:ai(l,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return
|
|
672
|
+
`)}break}case"<>":{let S=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);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(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let S=w.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(w,10);Number.isNaN(S)||(ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupout__:${S}`))}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let S=w.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(w,10);Number.isNaN(S)||(ae(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupin__:${S}`))}break}}}for(let[m,w]of r)w===void 0?this.ctx.state.env.delete(m):this.ctx.state.env.set(m,w);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 yi(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,v=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(m){if(m instanceof de||m instanceof he)v=m,p=F;else throw m}let b=i+y;if(b&&(p={...p,stderr:b+p.stderr}),p=await q(this.ctx,p,t.redirections),v)throw v;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 w=m.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(m=w[1])}this.ctx.state.lastArg=m}else this.ctx.state.lastArg=u;let g=Cr(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!g)for(let[m,w]of r)this.ctx.state.fullyUnsetLocals?.has(m)||(w===void 0?this.ctx.state.env.delete(m):this.ctx.state.env.set(m,w));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,v)=>this.runCommand(u,f,d,h,y,p,v),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await ii(l,t,s,n,r,i,a,o);return c!==null?c:ai(l,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return Is(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return ls(this.ctx,t)}async executeSubshell(t,s=""){return Ei(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Si(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}
|
|
673
673
|
`);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}
|
|
674
|
-
`,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 _i(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 No}from"node:dns";function
|
|
674
|
+
`,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 _i(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 No}from"node:dns";function Cn(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function bo(e){let t=Cn(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function Ci(e){if(e.includes("\\"))return!0;let t=e.toLowerCase();return t.includes("%2f")||t.includes("%5c")}function $o(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function kn(e,t){let s=Cn(e);if(!s)return!1;let n=bo(t);return!n||s.origin!==n.origin||n.pathPrefix!=="/"&&n.pathPrefix!==""&&Ci(s.pathname)?!1:$o(s.pathname,n.pathPrefix)}function ki(e){return typeof e=="string"?e:e.url}function Pi(e,t){return!t||t.length===0?!1:t.some(s=>kn(e,ki(s)))}function Pn(e){let t=Eo(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=Ni(t);if(s)return us(s);let n=Ao(t);return n?_o(n):!1}function Eo(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function So(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 Ni(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>So(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 Ao(e){let t=e,s=null;if(t.includes(".")){let p=t.lastIndexOf(":");if(p<0)return null;let v=t.slice(p+1),b=Ni(v);if(!b)return null;s=b,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 _o(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 Oi(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=ki(s);if(!Cn(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!==""&&Ci(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 Co=typeof __BROWSER__<"u"&&__BROWSER__,dt=null,fs=null,Di=!1;function ko(){if(dt===null&&!Co)try{let e=Dn("node:async_hooks");fs=Dn("node:dns"),dt=new e.AsyncLocalStorage}catch{}}function Po(){if(Di||(ko(),!dt||!fs))return;Di=!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 Ti(e,t){return Po(),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 Oo(e){return new Promise((t,s)=>{No(e,{all:!0},(n,r)=>{n?s(n):t(r)})})}var Do=20,To=3e4,Io=10485760,xo=["GET","HEAD"],Ro=new Set(["GET","HEAD","OPTIONS"]),Lo=new Set([301,302,303,307,308]);function Nn(e){let t=e.allowedUrlPrefixes??[];if(!e.dangerouslyAllowFullInternetAccess){let h=Oi(t);if(h.length>0)throw new Error(`Invalid network allow-list:
|
|
675
675
|
${h.join(`
|
|
676
|
-
`)}`)}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(
|
|
676
|
+
`)}`)}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(kn(h,p.url)&&p.transform){y||(y=new Headers);for(let v of p.transform)for(let[b,g]of Object.entries(v.headers))y.set(b,g)}return y}let r=e.maxRedirects??Do,i=e.timeoutMs??To,a=e.maxResponseSize??Io,o=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??xo,l=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),c=e._dnsResolve??Oo;async function u(h){if(!e.dangerouslyAllowFullInternetAccess&&!Pi(h,t))throw new De(h);if(l)try{let y=new URL(h);if(Pn(y.hostname))throw new De(h,"private/loopback IP address blocked");let p=y.hostname;if(/[a-zA-Z]/.test(p))try{let b=await c(p);for(let{address:$}of b)if(Pn($))throw new De(h,"hostname resolves to private/loopback IP address");let g=b[0];if(g)return{hostname:p,address:g.address,family:g.family===6?6:4}}catch(b){if(b instanceof De)throw b;let g=b?.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",v=await u(h);f(p);let b=h,g=0,$=y.followRedirects??!0,m=y.timeoutMs!==void 0?Math.min(y.timeoutMs,i):i;for(;;){let w=new AbortController,E=Tn(()=>w.abort(),m);try{let S=await ve.runTrustedAsync(()=>{let O=n(b),N=Fo(y.headers,O),x={method:p,headers:N,signal:w.signal,redirect:"manual"};return y.body&&!Ro.has(p)&&(x.body=y.body),v?Ti(v,()=>fetch(b,x)):fetch(b,x)});if(Lo.has(S.status)&&$){let O=S.headers.get("location");if(!O)return await Ii(S,b,a);let N=new URL(O,b).href;try{v=await u(N)}catch{throw new kt(N)}if(g++,g>r)throw new Ct(r);b=N;continue}return await Ii(S,b,a)}finally{In(E)}}}return d}function Fo(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 Ii(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 xi(e){return Ye(e)}function Ye(e){return e.statements.map(Ri).join(`
|
|
677
677
|
`)}function Ri(e){let t=[];for(let n=0;n<e.pipelines.length;n++)t.push(Mo(e.pipelines[n])),n<e.operators.length&&t.push(e.operators[n]);let s=t.join(" ");return e.background&&(s+=" &"),s}function Mo(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(Li(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 Li(e){switch(e.type){case"SimpleCommand":return Wo(e);case"If":return Go(e);case"For":return Ko(e);case"CStyleFor":return Xo(e);case"While":return Yo(e);case"Until":return Qo(e);case"Case":return Jo(e);case"Subshell":return tl(e);case"Group":return sl(e);case"ArithmeticCommand":return nl(e);case"ConditionalCommand":return rl(e);case"FunctionDef":return il(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Wo(e){let t=[];for(let s of e.assignments)t.push(zo(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(Wi(s));return t.join(" ")}function zo(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?Bo(e.value):Vo(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 Fi(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 Zo(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 Vo(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function Bo(e){return e.replace(/[$`"\\]/g,"\\$&")}function jo(e,t){return e.parts.map(s=>Ho(s,t)).join("")}function Ho(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Fi(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 Fi(e){return e.operation?`\${${Mi(e.parameter,e.operation)}}`:Uo(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Uo(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Mi(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${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?`!${Mi(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let s=t;throw new Error(`Unsupported parameter operation type: ${s.type}`)}}}function Zo(e){return`{${e.items.map(qo).join(",")}}`}function qo(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 Wi(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=jo(s.content,s.quoted);return`${t}${e.operator}${n}
|
|
678
678
|
${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(Wi).join(" ")}`}function ge(e){return e.map(Ri).join(`
|
|
679
679
|
`)}function Go(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
|
|
@@ -695,16 +695,16 @@ esac${_e(e.redirections)}`}function el(e){let t=e.patterns.map(oe).join(" | "),s
|
|
|
695
695
|
${s}
|
|
696
696
|
${e.terminator}`:`${t})
|
|
697
697
|
${e.terminator}`}function tl(e){return`(${ge(e.body)})${_e(e.redirections)}`}function sl(e){return`{ ${ge(e.body)}; }${_e(e.redirections)}`}function nl(e){return`((${H(e.expression.expression)}))${_e(e.redirections)}`}function rl(e){return`[[ ${Xe(e.expression)} ]]${_e(e.redirections)}`}function il(e){let t=Li(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;isConstructing=!1;constructor(t={}){this.isConstructing=!0;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",`
|
|
698
|
-
`],["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=_i({...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=
|
|
698
|
+
`],["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=_i({...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=Nn(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",Os(this.state.options)),this.state.env.set("BASHOPTS",Ds(this.state.shoptOptions)),ir(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 Qn(t.commands))this.registerCommand(a);if(t.fetch||t.network)for(let a of Jn())this.registerCommand(a);if(t.python)for(let a of er())this.registerCommand(a);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let a of tr())this.registerCommand(a);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let a of t.customCommands)if(sr(a)){let o=nr(a);o.custom=!0,this.registerCommand(o)}else this.registerCommand({...a,trusted:a.trusted??!0,custom:!0});this.isConstructing=!1}registerCommand(t){this.isConstructing||(t.custom=!0),this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
|
|
699
699
|
# Built-in command: ${t.name}
|
|
700
700
|
`;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=Vi(t.stdout),t.stderr=Vi(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.
|
|
701
|
-
`,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:ol(s?.stdin,s?.stdinKind),signal:s?.signal,extraArgs:s?.args},l=t;s?.rawScript||(l=zi(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 $ of this.transformPlugins){let m=$.transform({ast:d,metadata:g});d=m.ast,m.metadata&&(g=
|
|
701
|
+
`,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:ol(s?.stdin,s?.stdinKind),signal:s?.signal,extraArgs:s?.args},l=t;s?.rawScript||(l=zi(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 $ of this.transformPlugins){let m=$.transform({ast:d,metadata:g});d=m.ast,m.metadata&&(g=ws(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},b=await new _t(y,o).executeScript(d);return h&&(b.metadata=h),this.logResult(b)};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)}
|
|
702
702
|
`,exitCode:1,env:me(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${Te(f.message)}
|
|
703
703
|
`,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof Wn)return this.logResult({stdout:"",stderr:`bash: ${Te(f.message)}
|
|
704
704
|
`,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${Te(f.message)}
|
|
705
|
-
`,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=zi(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=
|
|
705
|
+
`,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=zi(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=ws(r,a.metadata))}return{script:xi(n),ast:n,metadata:r}}};function zi(e){let t=e.split(`
|
|
706
706
|
`),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(`
|
|
707
|
-
`)}var al=new TextDecoder("utf-8",{fatal:!0});function Vi(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 al.decode(s)}catch{return e}}function ol(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 Bi(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 ji(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 Hi(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 Ui(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 ll=["ELOOP","EFBIG","EPERM"],cl="/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??cl;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,ji(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):Bi(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){Ui(t,s,n,ll)}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=Hi(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 b=await U.promises.readlink(p),g=this.realTargetToVirtual(c,b);return n.add(c),c=this.resolveSymlink(c,g),r(c)}}catch(v){if(v.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(v,t,"realpath")}else if(!this.allowSymlinks){let v=this.resolveRealPathParent_(y);if(v)try{if((await U.promises.lstat(v)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(b){if(b.message?.includes("ENOENT")||b.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(b,t,"realpath")}}}}return c||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){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=qi.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
|
|
707
|
+
`)}var al=new TextDecoder("utf-8",{fatal:!0});function Vi(e){if(!e)return e;let t=!1,s=!1;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);o>255?s=!0:o>127&&(t=!0)}if(!t)return e;let n=[],r=new TextEncoder;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);if(o>255){let l=r.encode(e[a]);for(let c=0;c<l.length;c++)n.push(l[c])}else n.push(o)}let i=new Uint8Array(n);try{return al.decode(i)}catch{return e}}function ol(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 Bi(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 ji(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 Hi(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 Ui(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 ll=["ELOOP","EFBIG","EPERM"],cl="/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??cl;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,ji(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):Bi(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){Ui(t,s,n,ll)}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=Hi(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 b=await U.promises.readlink(p),g=this.realTargetToVirtual(c,b);return n.add(c),c=this.resolveSymlink(c,g),r(c)}}catch(v){if(v.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(v,t,"realpath")}else if(!this.allowSymlinks){let v=this.resolveRealPathParent_(y);if(v)try{if((await U.promises.lstat(v)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(b){if(b.message?.includes("ENOENT")||b.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(b,t,"realpath")}}}}return c||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){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"},On=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=qi.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
|
|
708
708
|
`),this.prompt()}),process.stdin.isTTY&&this.rl.on("close",()=>{this.running=!1,console.log(`
|
|
709
709
|
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(`
|
|
710
710
|
${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
|
|
@@ -731,4 +731,4 @@ Options:
|
|
|
731
731
|
Example:
|
|
732
732
|
pnpm shell
|
|
733
733
|
pnpm shell --network
|
|
734
|
-
`),process.exit(0));return t}var fl=ul(),dl=new
|
|
734
|
+
`),process.exit(0));return t}var fl=ul(),dl=new On(fl);dl.run();
|