just-bash 2.12.3 → 2.12.5
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/dist/bin/chunks/awk2-4MK3F3NZ.js +2 -0
- package/dist/bin/chunks/{chmod-4O2C4V42.js → chmod-N5CQATDW.js} +1 -1
- package/dist/bin/chunks/chunk-2HDH5VPF.js +12 -0
- package/dist/bin/chunks/chunk-5ATRLST6.js +100 -0
- package/dist/bin/chunks/{chunk-3NVWSLHI.js → chunk-6W7JTG6A.js} +99 -99
- package/dist/bin/chunks/chunk-7ADG3DNO.js +8 -0
- package/dist/bin/chunks/chunk-DERQIX2O.js +36 -0
- package/dist/bin/{shell/chunks/chunk-7SWOLTCR.js → chunks/chunk-EMSJEY2U.js} +1 -1
- package/dist/bin/chunks/{chunk-2SIXTZCJ.js → chunk-EZS766DD.js} +4 -4
- package/dist/bin/chunks/chunk-LWKIHJ5L.js +13 -0
- package/dist/bin/chunks/chunk-MY5PY2PL.js +2 -0
- package/dist/bin/chunks/{chunk-OKL2SPHK.js → chunk-O5B6WWQQ.js} +39 -39
- package/dist/bin/chunks/chunk-OQV5J23L.js +7 -0
- package/dist/bin/chunks/chunk-Q5MYEU7X.js +5 -0
- package/dist/bin/chunks/chunk-QZNF3Y3J.js +2 -0
- package/dist/bin/chunks/chunk-R2LDP472.js +8 -0
- package/dist/bin/chunks/chunk-RDGXTKIB.js +21 -0
- package/dist/bin/chunks/chunk-RS2PRILS.js +10 -0
- package/dist/bin/chunks/chunk-STOAUD75.js +11 -0
- package/dist/bin/chunks/chunk-SXB55JOI.js +2 -0
- package/dist/bin/chunks/chunk-SYG3IW7P.js +2 -0
- package/dist/bin/chunks/chunk-SYL34GE7.js +21 -0
- package/dist/bin/chunks/chunk-UT6LUTWP.js +2 -0
- package/dist/bin/chunks/chunk-VIYJJTN2.js +14 -0
- package/dist/bin/chunks/chunk-W752QGNZ.js +6 -0
- package/dist/bin/chunks/{chunk-435ZOZCY.js → chunk-WWVVJW3F.js} +13 -13
- package/dist/bin/{shell/chunks/chunk-GA6KXSOC.js → chunks/chunk-YFPDB4PH.js} +1 -1
- package/dist/bin/chunks/chunk-YMMJLYIX.js +2 -0
- package/dist/bin/chunks/chunk-YTIURC67.js +2 -0
- package/dist/bin/chunks/chunk-YWZOGBFE.js +9 -0
- package/dist/bin/chunks/chunk-YX7OOTPO.js +9 -0
- package/dist/bin/chunks/chunk-ZRRNCS7N.js +2 -0
- package/dist/bin/chunks/chunk-ZSVBYEY4.js +6 -0
- package/dist/bin/chunks/curl-GIQ5S66Y.js +26 -0
- package/dist/bin/{shell/chunks/expansion-TCB3WZP5.js → chunks/expansion-JBCP2CHQ.js} +1 -1
- package/dist/bin/chunks/expr-VEFRBJT4.js +2 -0
- package/dist/bin/chunks/find-MTLF23HX.js +2 -0
- package/dist/bin/chunks/flag-coverage-NDF6MQAO.js +2 -0
- package/dist/bin/{shell/chunks/grep-F3GT2VPG.js → chunks/grep-OZJTRD4D.js} +1 -1
- package/dist/bin/chunks/jq-F7FJ46VM.js +2 -0
- package/dist/bin/chunks/ln-VAOSD4HK.js +2 -0
- package/dist/bin/chunks/mkdir-CH7JGW4N.js +2 -0
- package/dist/bin/chunks/python3-QBGIYRFR.js +17 -0
- package/dist/bin/{shell/chunks/readlink-YNOUXNUY.js → chunks/readlink-BD5VFOC5.js} +1 -1
- package/dist/bin/chunks/rm-GWYJO4W7.js +2 -0
- package/dist/bin/chunks/sed-ENUQOCBB.js +2 -0
- package/dist/bin/chunks/sleep-5T34UFNF.js +2 -0
- package/dist/bin/chunks/sqlite3-4SBQACEE.js +2 -0
- package/dist/bin/chunks/stat-XS2LXYS2.js +2 -0
- package/dist/bin/chunks/tar-3UIZ4IRM.js +2 -0
- package/dist/bin/chunks/time-GZSHCM77.js +2 -0
- package/dist/bin/chunks/timeout-7ECKKPNP.js +2 -0
- package/dist/bin/chunks/tr-LZF57GYP.js +2 -0
- package/dist/bin/chunks/worker.js +162 -31
- package/dist/bin/chunks/xan-5QTBTP4U.js +2 -0
- package/dist/bin/chunks/yq-O5RSLLA3.js +2 -0
- package/dist/bin/just-bash.js +281 -281
- package/dist/bin/shell/chunks/awk2-4MK3F3NZ.js +2 -0
- package/dist/bin/shell/chunks/{chmod-4O2C4V42.js → chmod-N5CQATDW.js} +1 -1
- package/dist/bin/shell/chunks/chunk-2HDH5VPF.js +12 -0
- package/dist/bin/shell/chunks/chunk-5ATRLST6.js +100 -0
- package/dist/bin/shell/chunks/{chunk-3NVWSLHI.js → chunk-6W7JTG6A.js} +99 -99
- package/dist/bin/shell/chunks/chunk-7ADG3DNO.js +8 -0
- package/dist/bin/shell/chunks/chunk-D64U2VGQ.js +2 -0
- package/dist/bin/shell/chunks/chunk-DERQIX2O.js +36 -0
- package/dist/bin/{chunks/chunk-7SWOLTCR.js → shell/chunks/chunk-EMSJEY2U.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-2SIXTZCJ.js → chunk-EZS766DD.js} +4 -4
- package/dist/bin/shell/chunks/chunk-LWKIHJ5L.js +13 -0
- package/dist/bin/shell/chunks/{chunk-OKL2SPHK.js → chunk-O5B6WWQQ.js} +39 -39
- package/dist/bin/shell/chunks/chunk-OQV5J23L.js +7 -0
- package/dist/bin/shell/chunks/chunk-Q5MYEU7X.js +5 -0
- package/dist/bin/shell/chunks/chunk-QZNF3Y3J.js +2 -0
- package/dist/bin/shell/chunks/chunk-R2LDP472.js +8 -0
- package/dist/bin/shell/chunks/chunk-RDGXTKIB.js +21 -0
- package/dist/bin/shell/chunks/chunk-RS2PRILS.js +10 -0
- package/dist/bin/shell/chunks/chunk-STOAUD75.js +11 -0
- package/dist/bin/shell/chunks/chunk-SXB55JOI.js +2 -0
- package/dist/bin/shell/chunks/chunk-SYG3IW7P.js +2 -0
- package/dist/bin/shell/chunks/chunk-SYL34GE7.js +21 -0
- package/dist/bin/shell/chunks/chunk-UT6LUTWP.js +2 -0
- package/dist/bin/shell/chunks/chunk-VIYJJTN2.js +14 -0
- package/dist/bin/shell/chunks/chunk-W752QGNZ.js +6 -0
- package/dist/bin/shell/chunks/{chunk-435ZOZCY.js → chunk-WWVVJW3F.js} +13 -13
- package/dist/bin/{chunks/chunk-GA6KXSOC.js → shell/chunks/chunk-YFPDB4PH.js} +1 -1
- package/dist/bin/shell/chunks/chunk-YMMJLYIX.js +2 -0
- package/dist/bin/shell/chunks/chunk-YTIURC67.js +2 -0
- package/dist/bin/shell/chunks/chunk-YWZOGBFE.js +9 -0
- package/dist/bin/shell/chunks/chunk-YX7OOTPO.js +9 -0
- package/dist/bin/shell/chunks/chunk-ZRRNCS7N.js +2 -0
- package/dist/bin/shell/chunks/chunk-ZSVBYEY4.js +6 -0
- package/dist/bin/shell/chunks/curl-GIQ5S66Y.js +26 -0
- package/dist/bin/{chunks/expansion-TCB3WZP5.js → shell/chunks/expansion-JBCP2CHQ.js} +1 -1
- package/dist/bin/shell/chunks/expr-VEFRBJT4.js +2 -0
- package/dist/bin/shell/chunks/find-MTLF23HX.js +2 -0
- package/dist/bin/shell/chunks/flag-coverage-NDF6MQAO.js +2 -0
- package/dist/bin/{chunks/grep-F3GT2VPG.js → shell/chunks/grep-OZJTRD4D.js} +1 -1
- package/dist/bin/shell/chunks/jq-F7FJ46VM.js +2 -0
- package/dist/bin/shell/chunks/ln-VAOSD4HK.js +2 -0
- package/dist/bin/shell/chunks/mkdir-CH7JGW4N.js +2 -0
- package/dist/bin/shell/chunks/python3-XN7O5X3A.js +17 -0
- package/dist/bin/{chunks/readlink-YNOUXNUY.js → shell/chunks/readlink-BD5VFOC5.js} +1 -1
- package/dist/bin/shell/chunks/rm-GWYJO4W7.js +2 -0
- package/dist/bin/shell/chunks/sed-ENUQOCBB.js +2 -0
- package/dist/bin/shell/chunks/sleep-5T34UFNF.js +2 -0
- package/dist/bin/shell/chunks/sqlite3-4SBQACEE.js +2 -0
- package/dist/bin/shell/chunks/stat-XS2LXYS2.js +2 -0
- package/dist/bin/shell/chunks/tar-3UIZ4IRM.js +2 -0
- package/dist/bin/shell/chunks/time-GZSHCM77.js +2 -0
- package/dist/bin/shell/chunks/timeout-7ECKKPNP.js +2 -0
- package/dist/bin/shell/chunks/tr-LZF57GYP.js +2 -0
- package/dist/bin/shell/chunks/xan-5QTBTP4U.js +2 -0
- package/dist/bin/shell/chunks/yq-O5RSLLA3.js +2 -0
- package/dist/bin/shell/shell.js +241 -241
- package/dist/bundle/browser.js +718 -721
- package/dist/bundle/chunks/awk2-ID6QVUYU.js +1 -0
- package/dist/bundle/chunks/{chmod-MIKE3OIT.js → chmod-SYMGL4JA.js} +1 -1
- package/dist/bundle/chunks/chunk-2OZNLYX4.js +9 -0
- package/dist/bundle/chunks/{chunk-C6ZZC5FL.js → chunk-3J4BCKUH.js} +99 -99
- package/dist/bundle/chunks/chunk-3ZBKQKTX.js +11 -0
- package/dist/bundle/chunks/chunk-3ZUFRYJ4.js +1 -0
- package/dist/bundle/chunks/chunk-4GTNDTRF.js +7 -0
- package/dist/bundle/chunks/chunk-5QVNJEHU.js +8 -0
- package/dist/bundle/chunks/chunk-64CW2LGZ.js +6 -0
- package/dist/bundle/chunks/chunk-AYQ5FKKK.js +20 -0
- package/dist/bundle/chunks/chunk-C764MECG.js +35 -0
- package/dist/bundle/chunks/{chunk-XULIVM35.js → chunk-CBAJ47B3.js} +1 -1
- package/dist/bundle/chunks/chunk-CCNMISUL.js +1 -0
- package/dist/bundle/chunks/chunk-D2FZX7A2.js +10 -0
- package/dist/bundle/chunks/chunk-EX62JIX3.js +13 -0
- package/dist/bundle/chunks/chunk-FD7SFJNJ.js +4 -0
- package/dist/bundle/chunks/chunk-FGALERPA.js +8 -0
- package/dist/bundle/chunks/chunk-HJWBQKYG.js +5 -0
- package/dist/bundle/chunks/chunk-HOFSUCIB.js +99 -0
- package/dist/bundle/chunks/chunk-IP7G3BNA.js +7 -0
- package/dist/bundle/chunks/chunk-J642UCRS.js +1 -0
- package/dist/bundle/chunks/chunk-L75XCEQX.js +1 -0
- package/dist/bundle/chunks/chunk-QI4EPYAT.js +5 -0
- package/dist/bundle/chunks/chunk-R5XRHEZH.js +12 -0
- package/dist/bundle/chunks/chunk-RH6GWZAJ.js +1 -0
- package/dist/bundle/chunks/{chunk-U7QI5ZS5.js → chunk-RVT3MU3A.js} +4 -4
- package/dist/bundle/chunks/chunk-SJ5LXPUH.js +1 -0
- package/dist/bundle/chunks/{chunk-4VCAQZKQ.js → chunk-TRD56HID.js} +39 -39
- package/dist/bundle/chunks/{chunk-5CJQNRNJ.js → chunk-TVHAURH5.js} +13 -13
- package/dist/bundle/chunks/chunk-X2AJGDEF.js +1 -0
- package/dist/bundle/chunks/chunk-XHM67O4N.js +1 -0
- package/dist/bundle/chunks/chunk-XXZ46GOX.js +20 -0
- package/dist/bundle/chunks/{chunk-CYTBPLPE.js → chunk-YS3AZT3J.js} +1 -1
- package/dist/bundle/chunks/curl-743M564K.js +25 -0
- package/dist/bundle/chunks/{expansion-HJ6B4DDG.js → expansion-XG7G47TX.js} +1 -1
- package/dist/bundle/chunks/expr-74QHYJL5.js +1 -0
- package/dist/bundle/chunks/find-DOIVMX6X.js +1 -0
- package/dist/bundle/chunks/flag-coverage-4M54QHNZ.js +1 -0
- package/dist/bundle/chunks/{grep-LXKUQUAE.js → grep-3AIAIJVR.js} +1 -1
- package/dist/bundle/chunks/jq-5FRYP6YP.js +1 -0
- package/dist/bundle/chunks/ln-UJ6YJVBK.js +1 -0
- package/dist/bundle/chunks/mkdir-F6XHPXZC.js +1 -0
- package/dist/bundle/chunks/python3-WANWDR22.js +16 -0
- package/dist/bundle/chunks/{readlink-IEQO24KU.js → readlink-MI4GCHJF.js} +1 -1
- package/dist/bundle/chunks/rm-FYNVTQIU.js +1 -0
- package/dist/bundle/chunks/sed-TS7M7I25.js +1 -0
- package/dist/bundle/chunks/sleep-RRZXXEW2.js +1 -0
- package/dist/bundle/chunks/sqlite3-IH5QMEIK.js +1 -0
- package/dist/bundle/chunks/stat-BT5A227F.js +1 -0
- package/dist/bundle/chunks/tar-JCULQ5J2.js +1 -0
- package/dist/bundle/chunks/time-XL42Z4U5.js +1 -0
- package/dist/bundle/chunks/timeout-DNGO7OHT.js +1 -0
- package/dist/bundle/chunks/tr-GVTWMRZB.js +1 -0
- package/dist/bundle/chunks/worker.js +162 -31
- package/dist/bundle/chunks/xan-LAW2EMOM.js +1 -0
- package/dist/bundle/chunks/yq-MFJEXB7R.js +1 -0
- package/dist/bundle/index.cjs +942 -945
- package/dist/bundle/index.js +274 -274
- package/dist/commands/awk/interpreter/context.d.ts +2 -0
- package/dist/commands/awk/interpreter/interpreter.d.ts +2 -0
- package/dist/commands/duration.d.ts +5 -0
- package/dist/commands/format-mode.d.ts +4 -0
- package/dist/commands/query-engine/evaluator.d.ts +3 -0
- package/dist/commands/sed/types.d.ts +0 -4
- package/dist/commands/tar/archive.d.ts +18 -4
- package/dist/fs/in-memory-fs/in-memory-fs.d.ts +0 -3
- package/dist/fs/mountable-fs/mountable-fs.d.ts +0 -4
- package/dist/fs/overlay-fs/overlay-fs.d.ts +6 -7
- package/dist/fs/path-utils.d.ts +46 -0
- package/dist/fs/read-write-fs/read-write-fs.d.ts +0 -4
- package/dist/fs/real-fs-utils.d.ts +17 -11
- package/dist/interpreter/defense-aware-command-context.d.ts +6 -0
- package/dist/interpreter/interpreter.d.ts +8 -0
- package/dist/interpreter/types.d.ts +5 -0
- package/dist/timers.d.ts +2 -14
- package/dist/types.d.ts +6 -0
- package/package.json +34 -33
- package/vendor/cpython-emscripten/python.wasm +0 -0
- package/dist/bin/chunks/awk2-ZE5HJBNV.js +0 -2
- package/dist/bin/chunks/chunk-253LRF5J.js +0 -11
- package/dist/bin/chunks/chunk-2FFXXW3F.js +0 -14
- package/dist/bin/chunks/chunk-4E3LY6YK.js +0 -10
- package/dist/bin/chunks/chunk-4FNW6LFM.js +0 -5
- package/dist/bin/chunks/chunk-4PZYIYYG.js +0 -36
- package/dist/bin/chunks/chunk-5VFN7VVJ.js +0 -9
- package/dist/bin/chunks/chunk-6L4K3UGO.js +0 -100
- package/dist/bin/chunks/chunk-D2GFNFUN.js +0 -7
- package/dist/bin/chunks/chunk-DREQRXNN.js +0 -12
- package/dist/bin/chunks/chunk-EPIOK4SY.js +0 -6
- package/dist/bin/chunks/chunk-GIFF636B.js +0 -2
- package/dist/bin/chunks/chunk-IYZRLSTQ.js +0 -2
- package/dist/bin/chunks/chunk-JJHAWOIB.js +0 -2
- package/dist/bin/chunks/chunk-JNPUO56K.js +0 -10
- package/dist/bin/chunks/chunk-KPWFKFSD.js +0 -21
- package/dist/bin/chunks/chunk-KWLLB7S3.js +0 -7
- package/dist/bin/chunks/chunk-RYXW3SZQ.js +0 -13
- package/dist/bin/chunks/chunk-VZKEP45B.js +0 -21
- package/dist/bin/chunks/chunk-XAL6VWGA.js +0 -9
- package/dist/bin/chunks/chunk-YYQ22ZRL.js +0 -8
- package/dist/bin/chunks/curl-RWQO3SBN.js +0 -26
- package/dist/bin/chunks/expr-MLHUWFYI.js +0 -2
- package/dist/bin/chunks/find-4YAO7JQS.js +0 -2
- package/dist/bin/chunks/flag-coverage-23ZUDENJ.js +0 -2
- package/dist/bin/chunks/jq-CXSPO2J5.js +0 -2
- package/dist/bin/chunks/ln-5TCJXDGY.js +0 -2
- package/dist/bin/chunks/mkdir-6OKMS3KO.js +0 -2
- package/dist/bin/chunks/python3-74B25WCY.js +0 -17
- package/dist/bin/chunks/rm-5QIBTLJG.js +0 -2
- package/dist/bin/chunks/sed-DNLJZZXZ.js +0 -2
- package/dist/bin/chunks/sleep-GUJH2AMQ.js +0 -2
- package/dist/bin/chunks/sqlite3-57UI7HYL.js +0 -2
- package/dist/bin/chunks/stat-XH7E4E2C.js +0 -2
- package/dist/bin/chunks/tar-VIYVHMER.js +0 -2
- package/dist/bin/chunks/time-FAWHHOMA.js +0 -2
- package/dist/bin/chunks/timeout-4O4YYRTS.js +0 -2
- package/dist/bin/chunks/tr-4V5A3V2C.js +0 -2
- package/dist/bin/chunks/xan-7NIVZ3HP.js +0 -2
- package/dist/bin/chunks/yq-L5ZSGLLO.js +0 -2
- package/dist/bin/shell/chunks/awk2-ZE5HJBNV.js +0 -2
- package/dist/bin/shell/chunks/chunk-253LRF5J.js +0 -11
- package/dist/bin/shell/chunks/chunk-2FFXXW3F.js +0 -14
- package/dist/bin/shell/chunks/chunk-4E3LY6YK.js +0 -10
- package/dist/bin/shell/chunks/chunk-4FNW6LFM.js +0 -5
- package/dist/bin/shell/chunks/chunk-4PZYIYYG.js +0 -36
- package/dist/bin/shell/chunks/chunk-5VFN7VVJ.js +0 -9
- package/dist/bin/shell/chunks/chunk-6L4K3UGO.js +0 -100
- package/dist/bin/shell/chunks/chunk-D2GFNFUN.js +0 -7
- package/dist/bin/shell/chunks/chunk-DREQRXNN.js +0 -12
- package/dist/bin/shell/chunks/chunk-EPIOK4SY.js +0 -6
- package/dist/bin/shell/chunks/chunk-GIFF636B.js +0 -2
- package/dist/bin/shell/chunks/chunk-IYZRLSTQ.js +0 -2
- package/dist/bin/shell/chunks/chunk-JJHAWOIB.js +0 -2
- package/dist/bin/shell/chunks/chunk-JNPUO56K.js +0 -10
- package/dist/bin/shell/chunks/chunk-KPWFKFSD.js +0 -21
- package/dist/bin/shell/chunks/chunk-KWLLB7S3.js +0 -7
- package/dist/bin/shell/chunks/chunk-RYXW3SZQ.js +0 -13
- package/dist/bin/shell/chunks/chunk-VZKEP45B.js +0 -21
- package/dist/bin/shell/chunks/chunk-XAL6VWGA.js +0 -9
- package/dist/bin/shell/chunks/chunk-YYQ22ZRL.js +0 -8
- package/dist/bin/shell/chunks/curl-RWQO3SBN.js +0 -26
- package/dist/bin/shell/chunks/expr-MLHUWFYI.js +0 -2
- package/dist/bin/shell/chunks/find-4YAO7JQS.js +0 -2
- package/dist/bin/shell/chunks/flag-coverage-23ZUDENJ.js +0 -2
- package/dist/bin/shell/chunks/jq-CXSPO2J5.js +0 -2
- package/dist/bin/shell/chunks/ln-5TCJXDGY.js +0 -2
- package/dist/bin/shell/chunks/mkdir-6OKMS3KO.js +0 -2
- package/dist/bin/shell/chunks/python3-74B25WCY.js +0 -17
- package/dist/bin/shell/chunks/rm-5QIBTLJG.js +0 -2
- package/dist/bin/shell/chunks/sed-DNLJZZXZ.js +0 -2
- package/dist/bin/shell/chunks/sleep-GUJH2AMQ.js +0 -2
- package/dist/bin/shell/chunks/sqlite3-57UI7HYL.js +0 -2
- package/dist/bin/shell/chunks/stat-XH7E4E2C.js +0 -2
- package/dist/bin/shell/chunks/tar-VIYVHMER.js +0 -2
- package/dist/bin/shell/chunks/time-FAWHHOMA.js +0 -2
- package/dist/bin/shell/chunks/timeout-4O4YYRTS.js +0 -2
- package/dist/bin/shell/chunks/tr-4V5A3V2C.js +0 -2
- package/dist/bin/shell/chunks/xan-7NIVZ3HP.js +0 -2
- package/dist/bin/shell/chunks/yq-L5ZSGLLO.js +0 -2
- package/dist/bundle/chunks/awk2-T6LHPVZE.js +0 -1
- package/dist/bundle/chunks/chunk-27LMNKBP.js +0 -7
- package/dist/bundle/chunks/chunk-5BFLZVGH.js +0 -20
- package/dist/bundle/chunks/chunk-7BQDVPII.js +0 -9
- package/dist/bundle/chunks/chunk-7KHLIOOW.js +0 -4
- package/dist/bundle/chunks/chunk-AOFQVUAD.js +0 -99
- package/dist/bundle/chunks/chunk-BAAVD5NO.js +0 -20
- package/dist/bundle/chunks/chunk-BEFDX7IY.js +0 -1
- package/dist/bundle/chunks/chunk-GZ2N3SXD.js +0 -8
- package/dist/bundle/chunks/chunk-IJXFPKNC.js +0 -1
- package/dist/bundle/chunks/chunk-IKZ5LEGB.js +0 -6
- package/dist/bundle/chunks/chunk-KPFCTJEX.js +0 -12
- package/dist/bundle/chunks/chunk-LN5KAJOV.js +0 -5
- package/dist/bundle/chunks/chunk-NBAARP4B.js +0 -1
- package/dist/bundle/chunks/chunk-OFJTSXN6.js +0 -8
- package/dist/bundle/chunks/chunk-RHOPHAL6.js +0 -35
- package/dist/bundle/chunks/chunk-SL4FN3A5.js +0 -9
- package/dist/bundle/chunks/chunk-UJIR5V54.js +0 -11
- package/dist/bundle/chunks/chunk-XZ3MZS57.js +0 -6
- package/dist/bundle/chunks/chunk-YCABLDKV.js +0 -10
- package/dist/bundle/chunks/chunk-YIY2RKBW.js +0 -13
- package/dist/bundle/chunks/curl-6L7YZUIH.js +0 -25
- package/dist/bundle/chunks/expr-3572LAOT.js +0 -1
- package/dist/bundle/chunks/find-DQFMWHAC.js +0 -1
- package/dist/bundle/chunks/flag-coverage-L3DCLG6V.js +0 -1
- package/dist/bundle/chunks/jq-MYSLFARY.js +0 -1
- package/dist/bundle/chunks/ln-YAIFIHCT.js +0 -1
- package/dist/bundle/chunks/mkdir-QWGXDWUS.js +0 -1
- package/dist/bundle/chunks/python3-6BKA3FYA.js +0 -16
- package/dist/bundle/chunks/rm-KPTLPKPH.js +0 -1
- package/dist/bundle/chunks/sed-3ZCNFRHI.js +0 -1
- package/dist/bundle/chunks/sleep-LB7FI6AB.js +0 -1
- package/dist/bundle/chunks/sqlite3-FVNA4KNF.js +0 -1
- package/dist/bundle/chunks/stat-74KBZFAX.js +0 -1
- package/dist/bundle/chunks/tar-E2DVQEWO.js +0 -1
- package/dist/bundle/chunks/time-AGNW2ZY6.js +0 -1
- package/dist/bundle/chunks/timeout-VN35D5O7.js +0 -1
- package/dist/bundle/chunks/tr-2N7Q3KKJ.js +0 -1
- package/dist/bundle/chunks/xan-VTO4FP3H.js +0 -1
- package/dist/bundle/chunks/yq-JRZFRYSK.js +0 -1
package/dist/bin/shell/shell.js
CHANGED
|
@@ -1,158 +1,158 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{B as _n,C as Cn,D as ce,E as Ve,F as J,G as be,H as Et,I as Pn,J as I,K as Nn,L as kn,M as Ae,N as as,O as St,P as V,a as gn,b as es,c as wn,d as $t,e as X,f as M,g as ve,h as te,i as Se,j as xe,k as ts,l as bt,m as vn,n as ss,o as $n,p as me,q as Ne,r as bn,s as En,t as ns,u as rs,v as Re,w as Sn,x as An,y as $e,z as is}from"./chunks/chunk-OKL2SPHK.js";import{a as Ie,b as H,c as Jt,d as hn,e as pn,f as mn,g as Q,h as yn}from"./chunks/chunk-IYZRLSTQ.js";import{a as un,b as Oe}from"./chunks/chunk-4FNW6LFM.js";import{a as ln,b as cn,e as Qt}from"./chunks/chunk-JJHAWOIB.js";import{a as Te,b as pe}from"./chunks/chunk-4PRVMER6.js";import{a as rt}from"./chunks/chunk-SE4C7FJY.js";import{a as fe,b as de,c as le,d as he,e as fn,f as z,g as ze,h as yt,i as gt,j as dn,k as K,l as wt,m as De,n as vt,o as ge}from"./chunks/chunk-6KZRLMG3.js";import"./chunks/chunk-OBH7XN5N.js";import{a as we}from"./chunks/chunk-4VDEBYW7.js";import"./chunks/chunk-KGOUQS5A.js";import*as mi from"node:fs";import*as yi from"node:readline";var Ge=[{name:"echo",load:async()=>(await import("./chunks/echo-2MUAOGUE.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-XZIJZXKP.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-P3QVL4IO.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-G2PXHSNX.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-6OKMS3KO.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-5KLM4EA6.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DWKSZGOQ.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-5QIBTLJG.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XH2ZB7WT.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-OY7X62QC.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-5TCJXDGY.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-4O2C4V42.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-6VBAPL3Y.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-YNOUXNUY.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-YMNRW3F3.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-V537TDFR.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-ZIV3TFVG.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-XH7E4E2C.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-F3GT2VPG.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-F3GT2VPG.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-F3GT2VPG.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-34GE6REQ.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-DNLJZZXZ.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-ZE5HJBNV.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-7GENYU2I.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-TMSAIZM3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-R3F3Z5DX.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-5EY2XPXX.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-3UVLMQ2K.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-4V5A3V2C.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-UHEPS2UL.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-XH3L75DR.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-XSVNTAWH.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-26XPP5KB.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-OYZ7KOYR.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-XXKZCWY5.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-YWV64TJH.js")).split},{name:"column",load:async()=>(await import("./chunks/column-XGV32UPN.js")).column},{name:"join",load:async()=>(await import("./chunks/join-Y4Q5WVVE.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-HK2SYCAR.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-4YAO7JQS.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-KBUKWB2E.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-5FAOMLBL.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-HEKABARE.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-LDAPXSGF.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-HOVBNLUR.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-HOVBNLUR.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-UUKG55YW.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-GBL6PZ2K.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-DP5UZP52.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-DP5UZP52.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KRGKPFOI.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-6ZHZ6BX7.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-6ZHZ6BX7.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-CXSPO2J5.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-43M2R3GA.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-LE7GMFZD.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-WUPBL2TL.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-GUJH2AMQ.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-4O4YYRTS.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-FAWHHOMA.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-V7KBLSQ7.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-MLHUWFYI.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-NCLXV2S3.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-BHNJ5ALF.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-HJJ3NJ5L.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-D5YKS5NV.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-WVZA3MCP.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-4H52JYYC.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-5PO4LAOG.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-T42SKDDI.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WY6RKE32.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-E7PN2UWC.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-52FBC34W.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ge.push({name:"tar",load:async()=>(await import("./chunks/tar-VIYVHMER.js")).tarCommand}),Ge.push({name:"yq",load:async()=>(await import("./chunks/yq-L5ZSGLLO.js")).yqCommand}),Ge.push({name:"xan",load:async()=>(await import("./chunks/xan-7NIVZ3HP.js")).xanCommand}),Ge.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-57UI7HYL.js")).sqlite3Command}));var os=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(os.push({name:"python3",load:async()=>(await import("./chunks/python3-74B25WCY.js")).python3Command}),os.push({name:"python",load:async()=>(await import("./chunks/python3-74B25WCY.js")).pythonCommand}));var $i=[{name:"curl",load:async()=>(await import("./chunks/curl-RWQO3SBN.js")).curlCommand}],On=new Map;function ls(e){return{name:e.name,async execute(t,s){let n=On.get(e.name);if(n||(n=await Oe.runTrustedAsync(()=>e.load()),On.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-23ZUDENJ.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function Dn(e){return(e?Ge.filter(s=>e.includes(s.name)):Ge).map(ls)}function Tn(){return $i.map(ls)}function In(){return os.map(ls)}function xn(e){return"load"in e&&typeof e.load=="function"}function Rn(e){let t=null;return{name:e.name,trusted:!0,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var bi=new TextEncoder,Ei=new TextDecoder;function Ke(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}if(t==="binary"||t==="latin1"){if(e.length<=65536)return Uint8Array.from(e,r=>r.charCodeAt(0));let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}return bi.encode(e)}function At(e,t){if(t==="base64"){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let s=65536,n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return btoa(n)}if(t==="hex")return Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join("");if(t==="binary"||t==="latin1"){if(typeof Buffer<"u")return Buffer.from(e).toString(t);let s=65536;if(e.length<=s)return String.fromCharCode(...e);let n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return n}return Ei.decode(e)}function Le(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var Xe=new TextEncoder;function Si(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function se(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var it=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):Si(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(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){se(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let a=Le(n),o=Ke(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}writeFileLazy(t,s,n){se(t,"write");let r=this.normalizePath(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"?Xe.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=Le(s);return At(n,r)}async readFileBuffer(t){se(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:Xe.encode(r.content)}return n.content instanceof Uint8Array?n.content:Xe.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){se(t,"append");let r=this.normalizePath(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let a=Le(n),o=Ke(s,a);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(r,l));let u="content"in l&&l.content instanceof Uint8Array?l.content:Xe.encode("content"in l?l.content:""),c=new Uint8Array(u.length+o.length);c.set(u),c.set(o,u.length),this.data.set(r,{type:"file",content:c,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){se(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=Xe.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){se(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=Xe.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let a=0;a<n.length-1;a++){let o=n[a];r=`${r}/${o}`;let l=this.data.get(r),u=0,c=40;for(;l&&l.type==="symlink"&&u<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=this.resolveSymlink(r,l.target),l=this.data.get(r),u++}if(u>=c)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let a of n){r=`${r}/${a}`;let o=this.data.get(r),l=0,u=40;for(;o&&o.type==="symlink"&&l<u;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=this.resolveSymlink(r,o.target),o=this.data.get(r),l++}if(l>=u)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){se(t,"mkdir");let n=this.normalizePath(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=this.dirname(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){se(t,"scandir");let s=this.normalizePath(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=this.resolveSymlink(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,a=new Map;for(let[o,l]of this.data.entries())if(o!==s&&o.startsWith(i)){let u=o.slice(i.length),c=u.split("/")[0];c&&!u.includes("/",c.length)&&!a.has(c)&&a.set(c,{name:c,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(a.values()).sort((o,l)=>o.name<l.name?-1:o.name>l.name?1:0)}async rm(t,s){se(t,"rm");let n=this.normalizePath(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=n==="/"?`/${a}`:`${n}/${a}`;await this.rm(o,s)}}}this.data.delete(n)}async cp(t,s,n){se(t,"cp"),se(s,"cp");let r=this.normalizePath(t),i=this.normalizePath(s),a=this.data.get(r);if(!a)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(a.type==="file")if(this.ensureParentDirs(i),"content"in a){let o=a.content instanceof Uint8Array?new Uint8Array(a.content):a.content;this.data.set(i,{...a,content:o})}else this.data.set(i,{...a});else if(a.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...a});else if(a.type==="directory"){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let o=await this.readdir(r);for(let l of o){let u=r==="/"?`/${l}`:`${r}/${l}`,c=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(u,c,n)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}async chmod(t,s){se(t,"chmod");let n=this.normalizePath(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){se(s,"symlink");let n=this.normalizePath(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){se(t,"link"),se(s,"link");let n=this.normalizePath(t),r=this.normalizePath(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){se(t,"readlink");let s=this.normalizePath(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){se(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){se(t,"utimes");let r=this.normalizePath(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 Ai(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function _i(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 Ci(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 Pi(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${gn}
|
|
2
|
+
import{B as Fn,C as Mn,D as ce,E as Be,F as ee,G as Ee,H as Ot,I as Wn,J as I,K as zn,L as Vn,M as _e,N as ys,O as Dt,P as H,a as kn,b as us,c as On,d as Nt,e as Q,f as V,g as be,h as se,i as Ae,j as Re,k as fs,l as kt,m as Dn,n as ds,o as Tn,p as me,q as ke,r as In,s as xn,t as hs,u as ps,v as Le,w as Rn,x as Ln,y as $e,z as ms}from"./chunks/chunk-O5B6WWQQ.js";import{a as M,b as W,c as Xe,d as Ct,e as Pt,f as Ye,g as cs,h as An,i as _n,j as Cn,k as Pn,l as Nn}from"./chunks/chunk-D64U2VGQ.js";import{c as ls}from"./chunks/chunk-QZNF3Y3J.js";import{a as vn,b as bn}from"./chunks/chunk-UT6LUTWP.js";import{a as xe,b as pe,c as os}from"./chunks/chunk-4PRVMER6.js";import{a as ut,b as Sn}from"./chunks/chunk-ZRRNCS7N.js";import{a as Ke,b as ge}from"./chunks/chunk-Q5MYEU7X.js";import{a as ct}from"./chunks/chunk-SE4C7FJY.js";import{a as fe,b as de,c as le,d as he,e as $n,f as B,g as Ve,h as Et,i as St,j as En,k as Y,l as At,m as Te,n as _t,o as we}from"./chunks/chunk-6KZRLMG3.js";import"./chunks/chunk-OBH7XN5N.js";import{a as Ie}from"./chunks/chunk-SYG3IW7P.js";import{a as ve}from"./chunks/chunk-4VDEBYW7.js";import"./chunks/chunk-KGOUQS5A.js";import*as Ni from"node:fs";import*as ki from"node:readline";var Qe=[{name:"echo",load:async()=>(await import("./chunks/echo-2MUAOGUE.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-XZIJZXKP.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-P3QVL4IO.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-G2PXHSNX.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-CH7JGW4N.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-5KLM4EA6.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DWKSZGOQ.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-GWYJO4W7.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XH2ZB7WT.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-OY7X62QC.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-VAOSD4HK.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-N5CQATDW.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-6VBAPL3Y.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-BD5VFOC5.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-YMNRW3F3.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-V537TDFR.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-ZIV3TFVG.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-XS2LXYS2.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-OZJTRD4D.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-OZJTRD4D.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-OZJTRD4D.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-34GE6REQ.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-ENUQOCBB.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-4MK3F3NZ.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-7GENYU2I.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-TMSAIZM3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-R3F3Z5DX.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-5EY2XPXX.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-3UVLMQ2K.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-LZF57GYP.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-UHEPS2UL.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-XH3L75DR.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-XSVNTAWH.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-26XPP5KB.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-OYZ7KOYR.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-XXKZCWY5.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-YWV64TJH.js")).split},{name:"column",load:async()=>(await import("./chunks/column-XGV32UPN.js")).column},{name:"join",load:async()=>(await import("./chunks/join-Y4Q5WVVE.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-HK2SYCAR.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-MTLF23HX.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-KBUKWB2E.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-5FAOMLBL.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-HEKABARE.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-LDAPXSGF.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-HOVBNLUR.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-HOVBNLUR.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-UUKG55YW.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-GBL6PZ2K.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-DP5UZP52.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-DP5UZP52.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KRGKPFOI.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-6ZHZ6BX7.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-6ZHZ6BX7.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-F7FJ46VM.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-43M2R3GA.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-LE7GMFZD.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-WUPBL2TL.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-5T34UFNF.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-7ECKKPNP.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-GZSHCM77.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-V7KBLSQ7.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-VEFRBJT4.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-NCLXV2S3.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-BHNJ5ALF.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-HJJ3NJ5L.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-D5YKS5NV.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-WVZA3MCP.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-4H52JYYC.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-5PO4LAOG.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-T42SKDDI.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WY6RKE32.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-E7PN2UWC.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-52FBC34W.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Qe.push({name:"tar",load:async()=>(await import("./chunks/tar-3UIZ4IRM.js")).tarCommand}),Qe.push({name:"yq",load:async()=>(await import("./chunks/yq-O5RSLLA3.js")).yqCommand}),Qe.push({name:"xan",load:async()=>(await import("./chunks/xan-5QTBTP4U.js")).xanCommand}),Qe.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-4SBQACEE.js")).sqlite3Command}));var gs=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(gs.push({name:"python3",load:async()=>(await import("./chunks/python3-XN7O5X3A.js")).python3Command}),gs.push({name:"python",load:async()=>(await import("./chunks/python3-XN7O5X3A.js")).pythonCommand}));var Ii=[{name:"curl",load:async()=>(await import("./chunks/curl-GIQ5S66Y.js")).curlCommand}],Bn=new Map;function ws(e){return{name:e.name,async execute(t,s){let n=Bn.get(e.name);if(n||(n=await ge.runTrustedAsync(()=>e.load()),Bn.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-NDF6MQAO.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function Hn(e){return(e?Qe.filter(s=>e.includes(s.name)):Qe).map(ws)}function jn(){return Ii.map(ws)}function Un(){return gs.map(ws)}function Zn(e){return"load"in e&&typeof e.load=="function"}function qn(e){let t=null;return{name:e.name,trusted:!0,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var xi=new TextEncoder,Ri=new TextDecoder;function Je(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}if(t==="binary"||t==="latin1"){if(e.length<=65536)return Uint8Array.from(e,r=>r.charCodeAt(0));let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}return xi.encode(e)}function Tt(e,t){if(t==="base64"){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let s=65536,n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return btoa(n)}if(t==="hex")return Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join("");if(t==="binary"||t==="latin1"){if(typeof Buffer<"u")return Buffer.from(e).toString(t);let s=65536;if(e.length<=s)return String.fromCharCode(...e);let n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return n}return Ri.decode(e)}function Fe(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var et=new TextEncoder;function Li(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var ft=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,n]of Object.entries(t))typeof n=="function"?this.writeFileLazy(s,n):Li(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}ensureParentDirs(t){let s=Xe(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,n,r){W(t,"write");let i=M(t);this.ensureParentDirs(i);let a=Fe(n),o=Je(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}writeFileLazy(t,s,n){W(t,"write");let r=M(t);this.ensureParentDirs(r),this.data.set(r,{type:"file",lazy:s,mode:n?.mode??420,mtime:n?.mtime??new Date})}async materializeLazy(t,s){let n=await s.lazy(),i={type:"file",content:typeof n=="string"?et.encode(n):n,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let n=await this.readFileBuffer(t),r=Fe(s);return Tt(n,r)}async readFileBuffer(t){W(t,"open");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in n){let r=await this.materializeLazy(s,n);return r.content instanceof Uint8Array?r.content:et.encode(r.content)}return n.content instanceof Uint8Array?n.content:et.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){W(t,"append");let r=M(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let a=Fe(n),o=Je(s,a);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(r,l));let u="content"in l&&l.content instanceof Uint8Array?l.content:et.encode("content"in l?l.content:""),c=new Uint8Array(u.length+o.length);c.set(u),c.set(o,u.length),this.data.set(r,{type:"file",content:c,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){W(t,"stat");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=et.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){W(t,"lstat");let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=et.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveIntermediateSymlinks(t){let s=M(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let a=0;a<n.length-1;a++){let o=n[a];r=`${r}/${o}`;let l=this.data.get(r),u=0,c=40;for(;l&&l.type==="symlink"&&u<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=Ye(r,l.target),l=this.data.get(r),u++}if(u>=c)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=M(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let a of n){r=`${r}/${a}`;let o=this.data.get(r),l=0,u=40;for(;o&&o.type==="symlink"&&l<u;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=Ye(r,o.target),o=this.data.get(r),l++}if(l>=u)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){W(t,"mkdir");let n=M(t);if(this.data.has(n)){if(this.data.get(n)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let r=Xe(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){W(t,"scandir");let s=M(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=Ye(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,a=new Map;for(let[o,l]of this.data.entries())if(o!==s&&o.startsWith(i)){let u=o.slice(i.length),c=u.split("/")[0];c&&!u.includes("/",c.length)&&!a.has(c)&&a.set(c,{name:c,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(a.values()).sort((o,l)=>o.name<l.name?-1:o.name>l.name?1:0)}async rm(t,s){W(t,"rm");let n=M(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of i){let o=Pt(n,a);await this.rm(o,s)}}}this.data.delete(n)}async cp(t,s,n){W(t,"cp"),W(s,"cp");let r=M(t),i=M(s),a=this.data.get(r);if(!a)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(a.type==="file")if(this.ensureParentDirs(i),"content"in a){let o=a.content instanceof Uint8Array?new Uint8Array(a.content):a.content;this.data.set(i,{...a,content:o})}else this.data.set(i,{...a});else if(a.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...a});else if(a.type==="directory"){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let o=await this.readdir(r);for(let l of o){let u=Pt(r,l),c=Pt(i,l);await this.cp(u,c,n)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){return Ct(t,s)}async chmod(t,s){W(t,"chmod");let n=M(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);r.mode=s}async symlink(t,s){W(s,"symlink");let n=M(s);if(this.data.has(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){W(t,"link"),W(s,"link");let n=M(t),r=M(s),i=this.data.get(n);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let a=i;"lazy"in a&&(a=await this.materializeLazy(n,a)),this.ensureParentDirs(r),this.data.set(r,{type:"file",content:a.content,mode:a.mode,mtime:a.mtime})}async readlink(t){W(t,"readlink");let s=M(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}async realpath(t){W(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,n){W(t,"utimes");let r=M(t),i=this.resolvePathWithSymlinks(r),a=this.data.get(i);if(!a)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);a.mtime=n}};function Fi(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Mi(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 Wi(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 zi(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${kn}
|
|
3
3
|
`),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
|
|
4
|
-
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>
|
|
5
|
-
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new
|
|
6
|
-
`);s=n}throw new fe(s)}async function
|
|
4
|
+
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>us(t)):e.writeFileSync("/proc/self/status",us(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 Gn(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Fi(e)&&(Mi(e,t),Wi(e),zi(e,s))}var Vi=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Bi=["braceexpand","hashall","interactive-comments"];function bs(e){let t=[],s=[...Bi.map(n=>({name:n,enabled:!0})),...Vi.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 st(e){e.state.env.set("SHELLOPTS",bs(e.state.options))}var Hi=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function $s(e){let t=[];for(let s of Hi)e[s]&&t.push(s);return t.join(":")}function Es(e){e.state.env.set("BASHOPTS",$s(e.state.shoptOptions))}var ji="BASH_ALIAS_";function Kn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function Xn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Yn(e,t){return e.env.get(`${ji}${t}`)}function Ss(e,t,s){if(!t.name||!Kn(t.name))return t;let n=Xn(t.name);if(!n)return t;let r=Yn(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=Jn(f);a+=` ${d}`}let l;try{l=i.parse(a)}catch(f){if(f instanceof Nt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return Qn(t,r);let u=l.statements[0].pipelines[0].commands[0];if(u.type!=="SimpleCommand")return Qn(t,r);let c={...u,assignments:[...t.assignments,...u.assignments],redirections:[...u.redirections,...t.redirections],line:t.line};if(o&&t.args.length>0&&(c={...c,args:[...c.args,...t.args]},c.args.length>0)){let f=c.args[0];if(Kn(f)){let d=Xn(f);if(d&&Yn(e,d)){let h={type:"SimpleCommand",name:f,args:c.args.slice(1),assignments:[],redirections:[]},y=Ss(e,h,s);y!==h&&(c={...c,name:y.name,args:[...y.args]})}}}return c}catch(i){throw s.delete(n),i}}function Qn(e,t){let s=t;for(let a of e.args){let o=Jn(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 Jn(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 er(e,t){let s=t.parts.map(c=>c.type==="Literal"?c.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 c of t.parts)if(c.type==="Literal"){let f=c.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(c.type==="BraceExpansion")if(/^\[.+\]=/.test(o))o+=kt({type:"Word",parts:[c]});else{(o||l)&&(i.push(o),o="",l=!1);let d=await _e(e,{type:"Word",parts:[c]});i.push(...d.values)}else{(c.type==="SingleQuoted"||c.type==="DoubleQuoted"||c.type==="Escaped")&&(l=!0);let f=await I(e,{type:"Word",parts:[c]});o+=f}(o||l)&&i.push(o);let u=i.map(c=>/^\[.+\]=/.test(c)?c:c===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(c)&&!c.startsWith("'")&&!c.startsWith('"')?`'${c.replace(/'/g,"'\\''")}'`:c);return`${r}=(${u.join(" ")})`}async function tr(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let m=t.parts[p];if(m.type==="Literal"){let b=m.value.indexOf("+=");if(b!==-1){let A=m.value.slice(0,b);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A)){s=p,n=b,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(A)){s=p,n=b,r=!0;break}}let v=m.value.indexOf("=");if(v!==-1&&(v===0||m.value[v-1]!=="+")){let A=m.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(A)){s=p,n=v;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),u=a.value.slice(n+o),c=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:u!==""?[{type:"Literal",value:u},...c]:c},h=d.parts.length>0?await I(e,d):"";return`${f}${r?"+=":"="}${h}`}var Ui=["tar","yq","xan","sqlite3","python3","python"];function sr(e){return Ui.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function _(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function P(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function X(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Ce(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 As(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Te;return L}if(t.length>1)throw new B(1,"",`bash: break: too many arguments
|
|
5
|
+
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new B(128,"",`bash: break: ${t[0]}: numeric argument required
|
|
6
|
+
`);s=n}throw new fe(s)}async function _s(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!=="."),u="";for(let f of l)if(f==="..")u=u.split("/").slice(0,-1).join("/")||"/";else{u=u?`${u}/${f}`:`/${f}`;try{if(!(await e.fs.stat(u)).isDirectory)return _(`bash: cd: ${s}: Not a directory
|
|
7
7
|
`)}catch{return _(`bash: cd: ${s}: No such file or directory
|
|
8
8
|
`)}}let c=u||"/";if(r)try{c=await e.fs.realpath(c)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=c,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),F(n?`${c}
|
|
9
|
-
`:"")}function
|
|
9
|
+
`:"")}function Cs(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Zi=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function xt(e){return Zi.includes(e)}async function Rt(e,t,s){let n=Cs(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 qi=["-nt","-ot","-ef"];function Lt(e){return qi.includes(e)}async function Ft(e,t,s,n){let r=Cs(e,s),i=Cs(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 Gi=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Mt(e){return Gi.has(e)}function Wt(e,t,s){switch(e){case"-eq":return t===s;case"-ne":return t!==s;case"-lt":return t<s;case"-le":return t<=s;case"-gt":return t>s;case"-ge":return t>=s}}function dt(e){return e==="="||e==="=="||e==="!="}function zt(e,t,s,n=!1,r=!1,i=!1){if(n){let o=nt(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 Ki=new Set(["-z","-n"]);function Vt(e){return Ki.has(e)}function Bt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Ht(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,u)=>e.state.env.get(u)||""),e.state.env.has(`${n}_${o}`)}let a;try{let o=new V,l=Q(o,r);a=await H(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=se(e,n),l=e.state.currentLine;if(o.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
|
|
10
10
|
`,!1;if(a=Math.max(...o)+1+a,a<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
|
|
11
|
-
`,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?
|
|
12
|
-
`,2):
|
|
13
|
-
`,2):P("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(
|
|
14
|
-
`,2):
|
|
15
|
-
`)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&t.push(s),t}function
|
|
11
|
+
`,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Re(e,t).length>0:se(e,t).length>0}async function Me(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=Mn(i)}else r=await zn(e,t.right);else dt(t.operator)&&!n?r=await Vn(e,t.right):r=await I(e,t.right);if(dt(t.operator)){let i=e.state.shoptOptions.nocasematch;return zt(t.operator,s,r,!n,i,!0)}if(Mt(t.operator))return Wt(t.operator,await rr(e,s),await rr(e,r));if(Lt(t.operator))return Ft(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,a=Ji(r),l=ct(a,i?"i":"").match(s);if(Ae(e,"BASH_REMATCH"),l)for(let u=0;u<l.length;u++)e.state.env.set(`BASH_REMATCH_${u}`,l[u]||"");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 xt(t.operator)?Rt(e,t.operator,s):Vt(t.operator)?Bt(t.operator,s):t.operator==="-v"?await Ht(e,s):t.operator==="-o"?Ns(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 Me(e,t.operand);case"CondAnd":return await Me(e,t.left)?await Me(e,t.right):!1;case"CondOr":return await Me(e,t.left)?!0:await Me(e,t.right);case"CondGroup":return await Me(e,t.expression);case"CondWord":return await I(e,t.word)!=="";default:return!1}}async function ht(e,t){if(t.length===0)return P("","",1);if(t.length===1)return X(!!t[0]);if(t.length===2){let n=t[0],r=t[1];return n==="("?_(`test: '(' without matching ')'
|
|
12
|
+
`,2):xt(n)?X(await Rt(e,n,r)):Vt(n)?X(Bt(n,r)):n==="!"?X(!r):n==="-v"?X(await Ht(e,r)):n==="-o"?X(Ns(e,r)):n==="="||n==="=="||n==="!="||n==="<"||n===">"||n==="-eq"||n==="-ne"||n==="-lt"||n==="-le"||n==="-gt"||n==="-ge"||n==="-nt"||n==="-ot"||n==="-ef"?_(`test: ${n}: unary operator expected
|
|
13
|
+
`,2):P("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(dt(r))return X(zt(r,n,i));if(Mt(r)){let a=jt(n),o=jt(i);return!a.valid||!o.valid?P("","",2):X(Wt(r,a.value,o.value))}if(Lt(r))return X(await Ft(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 ht(e,[r,i]);return P("",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 ht(e,t.slice(1));return P("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return ht(e,[t[1],t[2]])}let s=await ar(e,t,0);return s.pos<t.length?_(`test: too many arguments
|
|
14
|
+
`,2):X(s.value)}async function ar(e,t,s){return Xi(e,t,s)}async function Xi(e,t,s){let{value:n,pos:r}=await nr(e,t,s);for(;t[r]==="-o";){let i=await nr(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function nr(e,t,s){let{value:n,pos:r}=await Ps(e,t,s);for(;t[r]==="-a";){let i=await Ps(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function Ps(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await Ps(e,t,s+1);return{value:!n,pos:r}}return Yi(e,t,s)}async function Yi(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await ar(e,t,s+1);return{value:i,pos:t[a]===")"?a+1:a}}let r=t[s+1];if(dt(r)){let i=n,a=t[s+2]??"";return{value:zt(r,i,a),pos:s+3}}if(Mt(r)){let i=jt(n),a=jt(t[s+2]??"0");return!i.valid||!a.valid?{value:!1,pos:s+3}:{value:Wt(r,i.value,a.value),pos:s+3}}if(Lt(r)){let i=n,a=t[s+2]??"";return{value:await Ft(e,r,i,a),pos:s+3}}if(xt(n)){let i=t[s+1]??"";return{value:await Rt(e,n,i),pos:s+2}}if(Vt(n)){let i=t[s+1]??"";return{value:Bt(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await Ht(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:Ns(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function nt(e,t,s=!1,n=!1){let r=`^${or(t,n)}$`;return ct(r,s?"is":"s").test(e)}function or(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=lr(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=cr(a),l=o.map(c=>or(c,t)),u=l.length>0?l.join("|"):"(?:)";if(r==="@")s+=`(?:${u})`;else if(r==="*")s+=`(?:${u})*`;else if(r==="+")s+=`(?:${u})+`;else if(r==="?")s+=`(?:${u})?`;else if(r==="!")if(i<e.length-1){let f=o.map(h=>ur(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(`(?!(?:${u})).{${h}}`),s+=`(?:${y.join("|")})`}}else s+=`(?:(?!(?:${u})).)*?`}else s+=`(?!(?:${u})$).*`;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 lr(e,t){let s=1,n=t+1;for(;n<e.length&&s>0;){let r=e[n];if(r==="\\"){n+=2;continue}if(r==="(")s++;else if(r===")"&&(s--,s===0))return n;n++}return-1}function cr(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function ur(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=lr(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),l=cr(a).map(u=>ur(u,t));if(l.every(u=>u!==null)&&l.every(u=>u===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 Ns(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 rr(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 ir(t);try{let s=new V,n=Q(s,t);return await H(e,n.expression)}catch{return ir(t)}}function Qi(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 ir(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=Qi(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 jt(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 Ji(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=ea(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function ea(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 u=e.indexOf(":]",s+2);if(u!==-1){let c=e.slice(s+2,u);a+=ta(c),s=u+2;continue}}if(l==="["&&s+1<e.length){let u=e[s+1];if(u==="."||u==="="){let c=`${u}]`,f=e.indexOf(c,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 ta(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 Pe(e){let t=[],s="",n=!1,r=!1,i=!1,a=!1;for(let o of e){if(i){s+=o,i=!1,a=!0;continue}if(o==="\\"){i=!0;continue}if(o==="'"&&!r){n||(a=!0),n=!n;continue}if(o==='"'&&!n){r||(a=!0),r=!r;continue}if((o===" "||o===" "||o===`
|
|
15
|
+
`)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&t.push(s),t}function Ut(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 fr(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Pe(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 sa(e,t){try{let s=new V,n=Q(s,t);return await H(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function dr(e,t,s={}){let{name:n,isArray:r,arrayElements:i,value:a,arrayIndex:o}=t,{makeReadonly:l=!1,checkReadonly:u=!0}=s;if(u){let c=ee(e,n);if(c)return c}if(r&&i){for(let c=0;c<i.length;c++)e.state.env.set(`${n}_${c}`,i[c]);e.state.env.set(`${n}__length`,String(i.length))}else if(o!==void 0&&a!==void 0){let c=await sa(e,o);e.state.env.set(`${n}_${c}`,a);let f=parseInt(e.state.env.get(`${n}__length`)??"0",10);c>=f&&e.state.env.set(`${n}__length`,String(c+1))}else a!==void 0&&e.state.env.set(n,a);return l&&ce(e,n),null}function We(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function rt(e,t){return e.state.localVarDepth?.get(t)}function Zt(e,t){e.state.localVarDepth?.delete(t)}function hr(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 qt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function pr(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 ks=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function mr(e){return ks.has(e)}var Os=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),it=new Set([":","true","false","cd","export","unset","exit","local","set","break","continue","return","eval","shift","getopts","compgen","complete","compopt","pushd","popd","dirs","source",".","read","mapfile","readarray","declare","typeset","readonly","let","command","shopt","exec","test","[","echo","printf","pwd","alias","unalias","type","hash","ulimit","umask","trap","times","wait","kill","jobs","fg","bg","disown","suspend","fc","history","help","enable","builtin","caller"]);async function He(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
|
|
16
16
|
`;if(n.checkNoclobber&&e.state.options.noclobber&&!n.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
|
|
17
|
-
`}catch{}return null}function
|
|
18
|
-
`};s.set(n,await I(e,r.target))}else{let a=await
|
|
17
|
+
`}catch{}return null}function De(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 na(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 u=Number.parseInt(o.slice(0,l),10);if(Number.isNaN(u)||u<0)return null;let c=o.slice(l+1);return{path:i,position:u,content:c}}async function yr(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(ys(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
|
|
18
|
+
`};s.set(n,await I(e,r.target))}else{let a=await Dt(e,r.target);if("error"in a)return{targets:s,error:a.error};s.set(n,a.target)}}return{targets:s}}function ra(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 Gt(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=ra(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await I(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(r,10);if(!Number.isNaN(i)){let a=e.state.fileDescriptors.get(i);a!==void 0&&(ae(e),e.state.fileDescriptors.set(n,a));continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,r);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),ae(e),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")ae(e),e.state.fileDescriptors.set(n,`${r}
|
|
19
19
|
`);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,r),a=await e.fs.readFile(i);ae(e),e.state.fileDescriptors.set(n,a)}catch{return P("",`bash: ${r}: No such file or directory
|
|
20
|
-
`,1)}}}return null}async function
|
|
20
|
+
`,1)}}}return null}async function Ne(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 Dt(e,s.target);if("error"in o)return P("",o.error,1);r=o.target}let i=e.fs.resolvePath(e.state.cwd,r),a=s.operator===">|";if(i.includes("\0"))return P("",`bash: ${r}: No such file or directory
|
|
21
21
|
`,1);try{let o=await e.fs.stat(i);if(o.isDirectory)return P("",`bash: ${r}: Is a directory
|
|
22
22
|
`,1);if(e.state.options.noclobber&&!a&&!o.isDirectory&&r!=="/dev/null")return P("",`bash: ${r}: cannot overwrite existing file
|
|
23
23
|
`,1)}catch{}if(r!=="/dev/null"&&r!=="/dev/stdout"&&r!=="/dev/stderr"&&r!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),r==="/dev/full")return P("",`bash: /dev/full: No space left on device
|
|
24
|
-
`,1)}return null}async function
|
|
25
|
-
`,a=1,r="";continue}d=await I(e,f.target)}else{let
|
|
26
|
-
`,a=1,r="";continue}switch(f.operator){case">":case">|":{let
|
|
27
|
-
`,a=1,r="";break}let
|
|
28
|
-
`,a=1;break}if(d==="/dev/null")i="";else{let
|
|
29
|
-
`,a=1,r="";break}let
|
|
30
|
-
`,a=1;break}let
|
|
31
|
-
`,a=1)}break}if(d==="2"||d==="&2")
|
|
32
|
-
`,a=1,r=""):
|
|
24
|
+
`,1)}return null}async function Z(e,t,s,n){let{stdout:r,stderr:i,exitCode:a}=t,o=t.stdoutEncoding==="binary"?()=>"binary":c=>De(c);for(let c=0;c<s.length;c++){let f=s[c];if(f.target.type==="HereDoc")continue;let d,h=n?.get(c);if(h!==void 0)d=h;else if(f.operator===">&"||f.operator==="<&"){if(ys(e,f.target)){i+=`bash: $@: ambiguous redirect
|
|
25
|
+
`,a=1,r="";continue}d=await I(e,f.target)}else{let p=await Dt(e,f.target);if("error"in p){i+=p.error,a=1,r="";continue}d=p.target}if(!f.fdVariable){if(d.includes("\0")){i+=`bash: ${d.replace(/\0/g,"")}: No such file or directory
|
|
26
|
+
`,a=1,r="";continue}switch(f.operator){case">":case">|":{let y=f.fd??1,p=f.operator===">|";if(y===1){if(d==="/dev/stdout")break;if(d==="/dev/stderr"){i+=r,r="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
27
|
+
`,a=1,r="";break}let m=e.fs.resolvePath(e.state.cwd,d),b=await He(e,m,d,{checkNoclobber:!0,isClobber:p});if(b){i+=b,a=1,r="";break}await e.fs.writeFile(m,r,o(r)),r=""}else if(y===2){if(d==="/dev/stderr")break;if(d==="/dev/stdout"){r+=i,i="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
28
|
+
`,a=1;break}if(d==="/dev/null")i="";else{let m=e.fs.resolvePath(e.state.cwd,d),b=await He(e,m,d,{checkNoclobber:!0,isClobber:p});if(b){i+=b,a=1;break}await e.fs.writeFile(m,i,De(i)),i=""}}break}case">>":{let y=f.fd??1;if(y===1){if(d==="/dev/stdout")break;if(d==="/dev/stderr"){i+=r,r="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
29
|
+
`,a=1,r="";break}let p=e.fs.resolvePath(e.state.cwd,d),m=await He(e,p,d,{});if(m){i+=m,a=1,r="";break}await e.fs.appendFile(p,r,o(r)),r=""}else if(y===2){if(d==="/dev/stderr")break;if(d==="/dev/stdout"){r+=i,i="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
|
|
30
|
+
`,a=1;break}let p=e.fs.resolvePath(e.state.cwd,d),m=await He(e,p,d,{});if(m){i+=m,a=1;break}await e.fs.appendFile(p,i,De(i)),i=""}break}case">&":case"<&":{let y=f.fd??1;if(d==="-")break;if(d.endsWith("-")){let p=d.slice(0,-1),m=Number.parseInt(p,10);if(!Number.isNaN(m)){let b=e.state.fileDescriptors?.get(m);b!==void 0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(y,b),m>=3&&e.state.fileDescriptors?.delete(m)):m===1||m===2?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(y,`__dupout__:${m}`)):m===0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(y,`__dupin__:${m}`)):m>=3&&(i+=`bash: ${m}: Bad file descriptor
|
|
31
|
+
`,a=1)}break}if(d==="2"||d==="&2")y===1&&(i+=r,r="");else if(d==="1"||d==="&1")r+=i,i="";else{let p=Number.parseInt(d,10);if(Number.isNaN(p)){if(f.operator===">&"){let m=e.fs.resolvePath(e.state.cwd,d),b=await He(e,m,d,{checkNoclobber:!0});if(b){i=b,a=1,r="";break}if(f.fd==null){let v=r+i;await e.fs.writeFile(m,v,o(v)),r="",i=""}else y===1?(await e.fs.writeFile(m,r,o(r)),r=""):y===2&&(await e.fs.writeFile(m,i,De(i)),i="")}}else{let m=e.state.fileDescriptors?.get(p);if(m?.startsWith("__file__:")){let b=m.slice(9);y===1?(await e.fs.appendFile(b,r,o(r)),r=""):y===2&&(await e.fs.appendFile(b,i,De(i)),i="")}else if(m?.startsWith("__rw__:")){let b=na(m);b&&(y===1?(await e.fs.appendFile(b.path,r,o(r)),r=""):y===2&&(await e.fs.appendFile(b.path,i,De(i)),i=""))}else if(m?.startsWith("__dupout__:")){let b=Number.parseInt(m.slice(11),10);if(b!==1)if(b===2)y===1&&(i+=r,r="");else{let v=e.state.fileDescriptors?.get(b);if(v?.startsWith("__file__:")){let A=v.slice(9);y===1?(await e.fs.appendFile(A,r,o(r)),r=""):y===2&&(await e.fs.appendFile(A,i,De(i)),i="")}}}else m?.startsWith("__dupin__:")?(i+=`bash: ${p}: Bad file descriptor
|
|
32
|
+
`,a=1,r=""):p>=3&&(i+=`bash: ${p}: Bad file descriptor
|
|
33
33
|
`,a=1,r="")}}break}case"&>":{if(d==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
34
|
-
`,a=1,r="";break}let
|
|
35
|
-
`,a=1,r="";break}let
|
|
36
|
-
`;throw new
|
|
34
|
+
`,a=1,r="";break}let y=e.fs.resolvePath(e.state.cwd,d),p=await He(e,y,d,{checkNoclobber:!0});if(p){i=p,a=1,r="";break}let m=r+i;await e.fs.writeFile(y,m,o(m)),r="",i="";break}case"&>>":{if(d==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
35
|
+
`,a=1,r="";break}let y=e.fs.resolvePath(e.state.cwd,d),p=await He(e,y,d,{});if(p){i=p,a=1,r="";break}let m=r+i;await e.fs.appendFile(y,m,o(m)),r="",i="";break}}}}let l=e.state.fileDescriptors?.get(1);if(l){if(l==="__dupout__:2")i+=r,r="";else if(l.startsWith("__file__:")){let c=l.slice(9);await e.fs.appendFile(c,r,o(r)),r=""}else if(l.startsWith("__file_append__:")){let c=l.slice(16);await e.fs.appendFile(c,r,o(r)),r=""}}let u=e.state.fileDescriptors?.get(2);if(u){if(u==="__dupout__:1")r+=i,i="";else if(u.startsWith("__file__:")){let c=u.slice(9);await e.fs.appendFile(c,i,De(i)),i=""}else if(u.startsWith("__file_append__:")){let c=u.slice(16);await e.fs.appendFile(c,i,De(i)),i=""}}return P(r,i,a)}function gr(e,t){if(e.state.options.posix&&ks.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
|
|
36
|
+
`;throw new B(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function ia(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await I(e,r.content);r.stripTabs&&(i=i.split(`
|
|
37
37
|
`).map(o=>o.replace(/^\t+/,"")).join(`
|
|
38
38
|
`)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await I(e,n.target)}
|
|
39
|
-
`;else if(n.operator==="<"&&n.target.type==="Word"){let r=await I(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function
|
|
40
|
-
`,2);let
|
|
41
|
-
`,2);s.push(
|
|
39
|
+
`;else if(n.operator==="<"&&n.target.type==="Word"){let r=await I(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function Kt(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Ce(`${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 u=0;u<s.length;u++)i.set(String(u+1),e.state.env.get(String(u+1))),e.state.env.set(String(u+1),s[u]);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 u=e.state.localScopes.length-1,c=e.state.localScopes.pop();if(c)for(let[f,d]of c)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);if(pr(e,u),e.state.fullyUnsetLocals)for(let[f,d]of e.state.fullyUnsetLocals.entries())d===u&&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 yr(e,t.redirections);if(l)return a(),P("",l,1);try{let u=await ia(e,t.redirections),c=n||u,f=await e.executeCommand(t.body,c);return a(),Z(e,f,t.redirections,o)}catch(u){if(a(),u instanceof le){let c=P(u.stdout,u.stderr,u.exitCode);return Z(e,c,t.redirections,o)}throw u}}var vr=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],Ts=[".",":","[","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"],aa=["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"],oa=Ts;async function Is(e,t){let s=[],n=null,r="",i="",a=null,o=!1,l=!1,u=!1,c=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 g=0;g<t.length;g++){let w=t[g];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(g++,g>=t.length)return _(`compgen: -A: option requires an argument
|
|
40
|
+
`,2);let $=t[g];if(!y.includes($))return _(`compgen: ${$}: invalid action name
|
|
41
|
+
`,2);s.push($)}else if(w==="-W"){if(g++,g>=t.length)return _(`compgen: -W: option requires an argument
|
|
42
42
|
`,2);n=t[g]}else if(w==="-P"){if(g++,g>=t.length)return _(`compgen: -P: option requires an argument
|
|
43
43
|
`,2);r=t[g]}else if(w==="-S"){if(g++,g>=t.length)return _(`compgen: -S: option requires an argument
|
|
44
44
|
`,2);i=t[g]}else if(w==="-o"){if(g++,g>=t.length)return _(`compgen: -o: option requires an argument
|
|
45
|
-
`,2);let
|
|
45
|
+
`,2);let $=t[g];if($==="plusdirs")o=!0;else if($==="dirnames")l=!0;else if($==="default")u=!0;else if(!($==="filenames"||$==="nospace"||$==="bashdefault"||$==="noquote"))return _(`compgen: ${$}: invalid option name
|
|
46
46
|
`,2)}else if(w==="-F"){if(g++,g>=t.length)return _(`compgen: -F: option requires an argument
|
|
47
47
|
`,2);f=t[g]}else if(w==="-C"){if(g++,g>=t.length)return _(`compgen: -C: option requires an argument
|
|
48
48
|
`,2);d=t[g]}else if(w==="-X"){if(g++,g>=t.length)return _(`compgen: -X: option requires an argument
|
|
49
49
|
`,2);c=t[g]}else if(w==="-G"){if(g++,g>=t.length)return _(`compgen: -G: option requires an argument
|
|
50
|
-
`,2)}else if(w==="--"){
|
|
51
|
-
`);for(let E of
|
|
52
|
-
`,2);throw g}let
|
|
53
|
-
`),A=
|
|
54
|
-
`:"");return F(A)}function
|
|
55
|
-
`;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],i="",a=0;for(;a<t.length;){let o=t[a];if(o==="\\"&&a+1<t.length){let l=t[a+1];i+=l,a+=2}else n.has(o)?(i.length>0&&(r.push(i),i=""),a++):(i+=o,a++)}return i.length>0&&r.push(i),r}function
|
|
50
|
+
`,2)}else if(w==="--"){h.push(...t.slice(g+1));break}else w.startsWith("-")||h.push(w)}a=h[0]??null;let p=[];if(l){let g=await Ds(e,a);p.push(...g)}if(u){let g=await wr(e,a);p.push(...g)}for(let g of s)if(g==="variable"){let w=la(e,a);p.push(...w)}else if(g==="export"){let w=ca(e,a);p.push(...w)}else if(g==="function"){let w=ua(e,a);p.push(...w)}else if(g==="builtin"){let w=fa(a);p.push(...w)}else if(g==="keyword"){let w=da(a);p.push(...w)}else if(g==="alias"){let w=ha(e,a);p.push(...w)}else if(g==="shopt"){let w=pa(a);p.push(...w)}else if(g==="helptopic"){let w=ma(a);p.push(...w)}else if(g==="directory"){let w=await Ds(e,a);p.push(...w)}else if(g==="file"){let w=await wr(e,a);p.push(...w)}else if(g==="user"){let w=ya(a);p.push(...w)}else if(g==="command"){let w=await ga(e,a);p.push(...w)}if(n!==null)try{let g=await wa(e,n),w=va(e,g);for(let $ of w)(a===null||$.startsWith(a))&&p.push($)}catch{return P("","",1)}if(o){let g=await Ds(e,a);for(let w of g)p.includes(w)||p.push(w)}let m="";if(f!==null){let g=e.state.functions.get(f);if(g){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 $=new Map;for(let T of e.state.env.keys())(T==="COMPREPLY"||T.startsWith("COMPREPLY_")||T==="COMPREPLY__length")&&($.set(T,e.state.env.get(T)),e.state.env.delete(T));let E=["compgen",h[0]??"",""];try{let T=await Kt(e,g,E,"");if(T.exitCode!==0)return at(e,w),at(e,$),P("",T.stderr,1);m=T.stdout;let k=ba(e);p.push(...k)}catch{return at(e,w),at(e,$),P("","",1)}at(e,w),at(e,$)}}if(d!==null)try{let g=be(d),w=await e.executeScript(g);if(w.exitCode!==0)return P("",w.stderr,w.exitCode);if(w.stdout){let $=w.stdout.split(`
|
|
51
|
+
`);for(let E of $)E.length>0&&p.push(E)}}catch(g){if(g.name==="ParseException")return _(`compgen: -C: ${g.message}
|
|
52
|
+
`,2);throw g}let b=p;if(c!==null){let g=c.startsWith("!"),w=g?c.slice(1):c;b=p.filter($=>{let E=nt($,w,!1,!0);return g?E:!E})}if(b.length===0&&a!==null)return P(m,"",1);let v=b.map(g=>`${r}${g}${i}`).join(`
|
|
53
|
+
`),A=m+(v?`${v}
|
|
54
|
+
`:"");return F(A)}function la(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 ca(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 ua(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function fa(e){let t=[...Ts];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function da(e){let t=[...vr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function ha(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 pa(e){let t=[...aa];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function ma(e){let t=[...oa];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Ds(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 u=t.lastIndexOf("/"),c=t.slice(0,u+1);s.push(c+a)}else s.push(a)}catch{}}}catch{}return s.sort()}async function wr(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 ya(e){return["root","nobody"]}async function ga(e,t){let s=new Set;for(let i of Ts)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 vr)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 wa(e,t){let n=new V().parseWordFromString(t,!1,!1);return await I(e,n)}function va(e,t){let s=e.state.env.get("IFS")??`
|
|
55
|
+
`;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],i="",a=0;for(;a<t.length;){let o=t[a];if(o==="\\"&&a+1<t.length){let l=t[a+1];i+=l,a+=2}else n.has(o)?(i.length>0&&(r.push(i),i=""),a++):(i+=o,a++)}return i.length>0&&r.push(i),r}function at(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function ba(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=$e(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 $a=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Rs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=!1,i,a,o,l=[],u=[],c=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")n=!0;else if(d==="-D")r=!0;else if(d==="-W"){if(f++,f>=t.length)return _(`complete: -W: option requires an argument
|
|
56
56
|
`,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return _(`complete: -F: option requires an argument
|
|
57
57
|
`,2);a=t[f]}else if(d==="-o"){if(f++,f>=t.length)return _(`complete: -o: option requires an argument
|
|
58
|
-
`,2);let
|
|
59
|
-
`,2);l.push(
|
|
58
|
+
`,2);let h=t[f];if(!$a.includes(h))return _(`complete: ${h}: invalid option name
|
|
59
|
+
`,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return _(`complete: -A: option requires an argument
|
|
60
60
|
`,2);u.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return _(`complete: -C: option requires an argument
|
|
61
61
|
`,2);o=t[f]}else if(d==="-G"){if(f++,f>=t.length)return _(`complete: -G: option requires an argument
|
|
62
62
|
`,2)}else if(d==="-P"){if(f++,f>=t.length)return _(`complete: -P: option requires an argument
|
|
63
63
|
`,2)}else if(d==="-S"){if(f++,f>=t.length)return _(`complete: -S: option requires an argument
|
|
64
64
|
`,2)}else if(d==="-X"){if(f++,f>=t.length)return _(`complete: -X: option requires an argument
|
|
65
|
-
`,2)}else if(d==="--"){c.push(...t.slice(f+1));break}else d.startsWith("-")||c.push(d)}if(n){if(c.length===0)return e.state.completionSpecs.clear(),F("");for(let f of c)e.state.completionSpecs.delete(f);return F("")}if(s)return c.length===0?
|
|
66
|
-
`,2);if(r){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),a!==void 0&&(f.function=a),o!==void 0&&(f.command=o),l.length>0&&(f.options=l),u.length>0&&(f.actions=u),e.state.completionSpecs.set("__default__",f),F("")}for(let f of c){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),u.length>0&&(d.actions=u),e.state.completionSpecs.set(f,d)}return F("")}function
|
|
65
|
+
`,2)}else if(d==="--"){c.push(...t.slice(f+1));break}else d.startsWith("-")||c.push(d)}if(n){if(c.length===0)return e.state.completionSpecs.clear(),F("");for(let f of c)e.state.completionSpecs.delete(f);return F("")}if(s)return c.length===0?xs(e):xs(e,c);if(t.length===0||c.length===0&&!i&&!a&&!o&&l.length===0&&u.length===0&&!r)return xs(e);if(a&&c.length===0&&!r)return _(`complete: -F: option requires a command name
|
|
66
|
+
`,2);if(r){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),a!==void 0&&(f.function=a),o!==void 0&&(f.command=o),l.length>0&&(f.options=l),u.length>0&&(f.actions=u),e.state.completionSpecs.set("__default__",f),F("")}for(let f of c){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),u.length>0&&(d.actions=u),e.state.completionSpecs.set(f,d)}return F("")}function xs(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let a of t)i+=`complete: ${a}: no completion specification
|
|
67
67
|
`;return P("",i,1)}return F("")}let n=[],r=t||Array.from(s.keys());for(let i of r){if(i==="__default__")continue;let a=s.get(i);if(!a){if(t)return P(n.join(`
|
|
68
68
|
`)+(n.length>0?`
|
|
69
69
|
`:""),`complete: ${i}: no completion specification
|
|
70
70
|
`,1);continue}let o="complete";if(a.options)for(let l of a.options)o+=` -o ${l}`;if(a.actions)for(let l of a.actions)o+=` -A ${l}`;a.wordlist!==void 0&&(a.wordlist.includes(" ")||a.wordlist.includes("'")?o+=` -W '${a.wordlist}'`:o+=` -W ${a.wordlist}`),a.function!==void 0&&(o+=` -F ${a.function}`),a.isDefault&&(o+=" -D"),o+=` ${i}`,n.push(o)}return n.length===0?F(""):F(`${n.join(`
|
|
71
71
|
`)}
|
|
72
|
-
`)}var
|
|
73
|
-
`,2);let u=t[o];if(!
|
|
72
|
+
`)}var br=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ls(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=[],i=[],a=[];for(let o=0;o<t.length;o++){let l=t[o];if(l==="-D")s=!0;else if(l==="-E")n=!0;else if(l==="-o"){if(o++,o>=t.length)return _(`compopt: -o: option requires an argument
|
|
73
|
+
`,2);let u=t[o];if(!br.includes(u))return _(`compopt: ${u}: invalid option name
|
|
74
74
|
`,2);r.push(u)}else if(l==="+o"){if(o++,o>=t.length)return _(`compopt: +o: option requires an argument
|
|
75
|
-
`,2);let u=t[o];if(!
|
|
75
|
+
`,2);let u=t[o];if(!br.includes(u))return _(`compopt: ${u}: invalid option name
|
|
76
76
|
`,2);i.push(u)}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 u of r)l.add(u);for(let u of i)l.delete(u);return o.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",o),F("")}if(n){let o=e.state.completionSpecs.get("__empty__")??{},l=new Set(o.options??[]);for(let u of r)l.add(u);for(let u of i)l.delete(u);return o.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",o),F("")}if(a.length>0){for(let o of a){let l=e.state.completionSpecs.get(o)??{},u=new Set(l.options??[]);for(let c of r)u.add(c);for(let c of i)u.delete(c);l.options=u.size>0?Array.from(u):void 0,e.state.completionSpecs.set(o,l)}return F("")}return _(`compopt: not currently executing completion function
|
|
77
|
-
`,1)}function
|
|
78
|
-
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new
|
|
79
|
-
`);s=n}throw new de(s)}function
|
|
80
|
-
`;else{let f=c.map(d=>{let
|
|
81
|
-
`}continue}let l=
|
|
77
|
+
`,1)}function Fs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Te;return L}if(t.length>1)throw new B(1,"",`bash: continue: too many arguments
|
|
78
|
+
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new B(1,"",`bash: continue: ${t[0]}: numeric argument required
|
|
79
|
+
`);s=n}throw new de(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 Ms(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Ws(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 Xt(e){return Ms(e)?Ws(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function je(e){return Ms(e)?Ws(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function zs(e){return Ms(e)?Ws(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function $r(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),me(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 Vs(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Er(e,t){let s="",n="",r=!1;for(let i of t){let a=$r(e,i);if(e.state.associativeArrays?.has(i)){let c=Re(e,i);if(c.length===0)s+=`declare -A ${i}=()
|
|
80
|
+
`;else{let f=c.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",y=Vs(h);return`['${d}']=${y}`});s+=`declare -A ${i}=(${f.join(" ")})
|
|
81
|
+
`}continue}let l=se(e,i);if(l.length>0){let c=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${je(d)}`});s+=`declare -a ${i}=(${c.join(" ")})
|
|
82
82
|
`;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
|
|
83
|
-
`;continue}let u=e.state.env.get(i);if(u!==void 0)s+=`declare ${a} ${i}=${
|
|
83
|
+
`;continue}let u=e.state.env.get(i);if(u!==void 0)s+=`declare ${a} ${i}=${zs(u)}
|
|
84
84
|
`;else{let c=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);c||f?s+=`declare ${a} ${i}
|
|
85
85
|
`:(n+=`bash: declare: ${i}: not found
|
|
86
|
-
`,r=!0)}}return P(s,n,r?1:0)}function
|
|
87
|
-
`;else{let v
|
|
88
|
-
`}continue}if(
|
|
86
|
+
`,r=!0)}}return P(s,n,r?1:0)}function Sr(e,t){let{filterExport:s,filterReadonly:n,filterNameref:r,filterIndexedArray:i,filterAssocArray:a}=t,o=s||n||r||i||a,l="",u=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);u.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)){u.add(h);continue}}u.add(f)}if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())u.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)u.add(f);let c=Array.from(u).sort();for(let f of c){let d=$r(e,f),h=e.state.associativeArrays?.has(f),y=se(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&&!me(e,f)))continue;if(h){let b=Re(e,f);if(b.length===0)l+=`declare -A ${f}=()
|
|
87
|
+
`;else{let v=b.map(A=>{let g=e.state.env.get(`${f}_${A}`)??"",w=Vs(g);return`['${A}']=${w}`});l+=`declare -A ${f}=(${v.join(" ")})
|
|
88
|
+
`}continue}if(y.length>0){let b=y.map(v=>{let A=e.state.env.get(`${f}_${v}`)??"";return`[${v}]=${je(A)}`});l+=`declare -a ${f}=(${b.join(" ")})
|
|
89
89
|
`;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
|
|
90
|
-
`;continue}let
|
|
91
|
-
`)}return F(l)}function
|
|
92
|
-
`;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",l=
|
|
93
|
-
`}}return F(t)}function
|
|
94
|
-
`;else{let a=i.map(o=>{let l=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${
|
|
95
|
-
`}}return F(t)}function
|
|
96
|
-
`)}return F(t)}function
|
|
97
|
-
`,2)}}}else if(x==="-i")f=!0;else if(x==="-l")d=!0;else if(x==="-u")
|
|
98
|
-
`,2);else
|
|
99
|
-
`;return F(N)}let k=!0,x="";for(let C of
|
|
100
|
-
`:k=!1;return P(x,"",k?0:1)}if(
|
|
90
|
+
`;continue}let m=e.state.env.get(f);m!==void 0&&(l+=`declare ${d} ${f}=${zs(m)}
|
|
91
|
+
`)}return F(l)}function Ar(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Re(e,n);if(r.length===0)t+=`declare -A ${n}=()
|
|
92
|
+
`;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",l=Vs(o);return`['${a}']=${l}`});t+=`declare -A ${n}=(${i.join(" ")})
|
|
93
|
+
`}}return F(t)}function _r(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=se(e,r);if(i.length===0)t+=`declare -a ${r}=()
|
|
94
|
+
`;else{let a=i.map(o=>{let l=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${je(l)}`});t+=`declare -a ${r}=(${a.join(" ")})
|
|
95
|
+
`}}return F(t)}function Cr(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)||se(e,r).length>0||e.state.env.has(`${r}__length`))continue;let o=e.state.env.get(r);o!==void 0&&(t+=`${r}=${Xt(o)}
|
|
96
|
+
`)}return F(t)}function Bs(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function pt(e,t){return e.state.integerVars?.has(t)??!1}function Hs(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Ea(e,t){return e.state.lowercaseVars?.has(t)??!1}function js(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Sa(e,t){return e.state.uppercaseVars?.has(t)??!1}function ot(e,t,s){return Ea(e,t)?s.toLowerCase():Sa(e,t)?s.toUpperCase():s}async function Pr(e,t){try{let s=new V,n=Q(s,t),r=await H(e,n.expression);return String(r)}catch{return"0"}}function Aa(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 Us(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=!1,l=!1,u=!1,c=!1,f=!1,d=!1,h=!1,y=!1,p=!1,m=!1,b=[];for(let k=0;k<t.length;k++){let x=t[k];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")u=!0;else if(x==="+x")c=!0;else if(x==="--"){b.push(...t.slice(k+1));break}else if(x.startsWith("+")){for(let C of x.slice(1))if(C==="n")l=!0;else if(C==="a")u=!0;else if(C==="x")c=!0;else if(C!=="r"){if(C!=="i"){if(!(C==="f"||C==="F"))return P("",`bash: typeset: +${C}: invalid option
|
|
97
|
+
`,2)}}}else if(x==="-i")f=!0;else if(x==="-l")d=!0;else if(x==="-u")h=!0;else if(x==="-f")y=!0;else if(x==="-F")p=!0;else if(x==="-g")m=!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")m=!0;else return P("",`bash: typeset: -${C}: invalid option
|
|
98
|
+
`,2);else b.push(x)}let A=e.state.localScopes.length>0&&!m,g=k=>{if(!A)return;let x=e.state.localScopes[e.state.localScopes.length-1];x.has(k)||x.set(k,e.state.env.get(k))},w=k=>{if(!A)return;let x=e.state.localScopes[e.state.localScopes.length-1];x.has(k)||x.set(k,e.state.env.get(k));let C=`${k}_`;for(let O of e.state.env.keys())O.startsWith(C)&&!O.includes("__")&&(x.has(O)||x.set(O,e.state.env.get(O)));let N=`${k}__length`;e.state.env.has(N)&&!x.has(N)&&x.set(N,e.state.env.get(N))},$=k=>{A&&We(e,k)};if(p){if(b.length===0){let C=Array.from(e.state.functions.keys()).sort(),N="";for(let O of C)N+=`declare -f ${O}
|
|
99
|
+
`;return F(N)}let k=!0,x="";for(let C of b)e.state.functions.has(C)?x+=`${C}
|
|
100
|
+
`:k=!1;return P(x,"",k?0:1)}if(y){if(b.length===0){let x="",C=Array.from(e.state.functions.keys()).sort();for(let N of C)x+=`${N} ()
|
|
101
101
|
{
|
|
102
102
|
# function body
|
|
103
103
|
}
|
|
104
|
-
`;return F(x)}let k=!0;for(let x of
|
|
104
|
+
`;return F(x)}let k=!0;for(let x of b)e.state.functions.has(x)||(k=!1);return P("","",k?0:1)}if(a&&b.length>0)return Er(e,b);if(a&&b.length===0)return Sr(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if(b.length===0&&n&&!a)return Ar(e);if(b.length===0&&s&&!a)return _r(e);if(b.length===0&&!a)return Cr(e);let E="",T=0;for(let k of b){let x=k.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(x&&!u){let S=x[1],D=x[2];if(n&&se(e,S).length>0){E+=`bash: declare: ${S}: cannot convert indexed to associative array
|
|
105
105
|
`,T=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has(S)){E+=`bash: declare: ${S}: cannot convert associative to indexed array
|
|
106
|
-
`,T=1;continue}if(w(S),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(S)),
|
|
107
|
-
`,T=1;continue}let
|
|
108
|
-
`,T=1;continue}e.state.env.set(D,R),
|
|
109
|
-
`,T=1;continue}if(s||n?w(S):g(S),o){
|
|
110
|
-
`,T=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(S)}let D=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${S}_`)&&!R.startsWith(`${S}__length`));!e.state.env.has(S)&&!D&&(s||n?e.state.env.set(`${S}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(S)))
|
|
111
|
-
`}}return F(a)}for(let a of i){let o=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(o){let f=o[1],d=o[2],
|
|
106
|
+
`,T=1;continue}if(w(S),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(S)),Ae(e,S),e.state.env.delete(S),e.state.env.delete(`${S}__length`),n&&D.includes("[")){let R=Ut(D);for(let[J,z]of R){let K=G(e,z);e.state.env.set(`${S}_${J}`,K)}}else if(n){let R=Pe(D);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(`${S}_${z}`,K)}}else{let R=Pe(D);if(R.some(z=>/^\[[^\]]+\]=/.test(z))){let z=0;for(let K of R){let re=K.match(/^\[([^\]]+)\]=(.*)$/);if(re){let ue=re[1],Ge=re[2],Oi=G(e,Ge),lt;if(/^-?\d+$/.test(ue))lt=Number.parseInt(ue,10);else try{let Di=new V,Ti=Q(Di,ue);lt=await H(e,Ti.expression)}catch{lt=0}e.state.env.set(`${S}_${lt}`,Oi),z=lt+1}else{let ue=G(e,K);e.state.env.set(`${S}_${z}`,ue),z++}}}else{for(let z=0;z<R.length;z++)e.state.env.set(`${S}_${z}`,R[z]);e.state.env.set(`${S}__length`,String(R.length))}}$(S),r&&ce(e,S),i&&Ee(e,S);continue}if(l){let S=k.includes("=")?k.slice(0,k.indexOf("=")):k;if(In(e,S),!k.includes("="))continue}if(c){let S=k.includes("=")?k.slice(0,k.indexOf("=")):k;if(Ot(e,S),!k.includes("="))continue}let C=Aa(k);if(C){let{name:S,indexExpr:D,value:R}=C,J=ee(e,S);if(J)return J;w(S);let z;try{let re=new V,ue=Q(re,D);z=await H(e,ue.expression)}catch{let re=parseInt(D,10);z=Number.isNaN(re)?0:re}e.state.env.set(`${S}_${z}`,R);let K=parseInt(e.state.env.get(`${S}__length`)??"0",10);z>=K&&e.state.env.set(`${S}__length`,String(z+1)),$(S),r&&ce(e,S),i&&Ee(e,S);continue}let N=k.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(N&&!u){let S=N[1],D=N[2],R=ee(e,S);if(R)return R;w(S);let J=Pe(D);if(e.state.associativeArrays?.has(S)){let z=Ut(D);for(let[K,re]of z){let ue=G(e,re);e.state.env.set(`${S}_${K}`,ue)}}else{let z=se(e,S),K=0,re=e.state.env.get(S);z.length===0&&re!==void 0?(e.state.env.set(`${S}_0`,re),e.state.env.delete(S),K=1):z.length>0&&(K=Math.max(...z)+1);for(let Ge=0;Ge<J.length;Ge++)e.state.env.set(`${S}_${K+Ge}`,G(e,J[Ge]));let ue=K+J.length;e.state.env.set(`${S}__length`,String(ue))}$(S),r&&ce(e,S),i&&Ee(e,S);continue}let O=k.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(O){let S=O[1],D=G(e,O[2]),R=ee(e,S);if(R)return R;g(S),f&&Bs(e,S),d&&Hs(e,S),h&&js(e,S);let z=se(e,S).length>0||e.state.associativeArrays?.has(S);if(pt(e,S)){let K=e.state.env.get(S)??"0",re=parseInt(K,10)||0,ue=parseInt(await Pr(e,D),10)||0;D=String(re+ue),e.state.env.set(S,D)}else if(z){D=ot(e,S,D);let K=`${S}_0`,re=e.state.env.get(K)??"";e.state.env.set(K,re+D)}else{D=ot(e,S,D);let K=e.state.env.get(S)??"";e.state.env.set(S,K+D)}$(S),r&&ce(e,S),i&&Ee(e,S),e.state.options.allexport&&!c&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(S));continue}if(k.includes("=")){let S=k.indexOf("="),D=k.slice(0,S),R=k.slice(S+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(D)){E+=`bash: typeset: \`${D}': not a valid identifier
|
|
107
|
+
`,T=1;continue}let J=ee(e,D);if(J)return J;if(g(D),o){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){E+=`bash: declare: \`${R}': invalid variable name for name reference
|
|
108
|
+
`,T=1;continue}e.state.env.set(D,R),ke(e,D),R!==""&&ps(e,R)&&hs(e,D),$(D),r&&ce(e,D),i&&Ee(e,D);continue}if(f&&Bs(e,D),d&&Hs(e,D),h&&js(e,D),pt(e,D)&&(R=await Pr(e,R)),R=ot(e,D,R),me(e,D)){let z=Le(e,D);z&&z!==D?e.state.env.set(z,R):e.state.env.set(D,R)}else e.state.env.set(D,R);$(D),r&&ce(e,D),i&&Ee(e,D),e.state.options.allexport&&!c&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(D))}else{let S=k;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(S)){E+=`bash: typeset: \`${S}': not a valid identifier
|
|
109
|
+
`,T=1;continue}if(s||n?w(S):g(S),o){ke(e,S);let R=e.state.env.get(S);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?xn(e,S):R&&ps(e,R)&&hs(e,S),$(S),r&&ce(e,S),i&&Ee(e,S);continue}if(f&&Bs(e,S),d&&Hs(e,S),h&&js(e,S),n){if(se(e,S).length>0){E+=`bash: declare: ${S}: cannot convert indexed to associative array
|
|
110
|
+
`,T=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(S)}let D=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${S}_`)&&!R.startsWith(`${S}__length`));!e.state.env.has(S)&&!D&&(s||n?e.state.env.set(`${S}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(S))),$(S),r&&ce(e,S),i&&Ee(e,S)}}return P("",E,T)}async function Zs(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 u=e.state.env.get(l);if(u!==void 0){let c=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${l}="${c}"
|
|
111
|
+
`}}return F(a)}for(let a of i){let o=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(o){let f=o[1],d=o[2],h=ee(e,f);if(h)return h;let y=Pe(d);if(e.state.associativeArrays?.has(f)){let p=Ut(d);for(let[m,b]of p){let v=G(e,b);e.state.env.set(`${f}_${m}`,v)}}else{let p=se(e,f),m=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),m=1):p.length>0&&(m=Math.max(...p)+1);for(let A=0;A<y.length;A++)e.state.env.set(`${f}_${m+A}`,G(e,y[A]));let v=m+y.length;e.state.env.set(`${f}__length`,String(v))}ce(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),ce(e,f);continue}let u=fr(a);if(u.value===void 0&&!u.isArray){ce(e,u.name);continue}let c=await dr(e,u,{makeReadonly:!0});if(c)return c}return L}function qs(e){return e.state.directoryStack??=[],e.state.directoryStack}function mt(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function _a(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 Gs(e,t){let s=qs(e),n;for(let o=0;o<t.length;o++){let l=t[o];if(l==="--"){if(o+1<t.length){if(n!==void 0)return _(`bash: pushd: too many arguments
|
|
112
112
|
`,2);n=t[o+1],o++}}else{if(l.startsWith("-")&&l!=="-")return _(`bash: pushd: ${l}: invalid option
|
|
113
113
|
`,2);if(n!==void 0)return _(`bash: pushd: too many arguments
|
|
114
114
|
`,2);n=l}}if(n===void 0){if(s.length<2)return _(`bash: pushd: no other directory
|
|
115
|
-
`,1);let o=s[0];s[0]=s[1],s[1]=o,n=s[0]}let r;if(n.startsWith("/"))r=n;else if(n===".."){let o=e.state.cwd.split("/").filter(l=>l);o.pop(),r=`/${o.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=
|
|
115
|
+
`,1);let o=s[0];s[0]=s[1],s[1]=o,n=s[0]}let r;if(n.startsWith("/"))r=n;else if(n===".."){let o=e.state.cwd.split("/").filter(l=>l);o.pop(),r=`/${o.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=_a(r);try{if(!(await e.fs.stat(r)).isDirectory)return _(`bash: pushd: ${n}: Not a directory
|
|
116
116
|
`,1)}catch{return _(`bash: pushd: ${n}: No such file or directory
|
|
117
|
-
`,1)}s.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",a=`${[r,...s].map(o=>
|
|
118
|
-
`;return F(a)}function
|
|
117
|
+
`,1)}s.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",a=`${[r,...s].map(o=>mt(o,i)).join(" ")}
|
|
118
|
+
`;return F(a)}function Ks(e,t){let s=qs(e);for(let a of t)if(a!=="--")return a.startsWith("-")&&a!=="-"?_(`bash: popd: ${a}: invalid option
|
|
119
119
|
`,2):_(`bash: popd: too many arguments
|
|
120
120
|
`,2);if(s.length===0)return _(`bash: popd: directory stack empty
|
|
121
121
|
`,1);let n=s.shift();if(!n)return _(`bash: popd: directory stack empty
|
|
122
|
-
`,1);e.state.previousDir=e.state.cwd,e.state.cwd=n,e.state.env.set("PWD",n),e.state.env.set("OLDPWD",e.state.previousDir);let r=e.state.env.get("HOME")||"",i=`${[n,...s].map(a=>
|
|
123
|
-
`;return F(i)}function
|
|
122
|
+
`,1);e.state.previousDir=e.state.cwd,e.state.cwd=n,e.state.env.set("PWD",n),e.state.env.set("OLDPWD",e.state.previousDir);let r=e.state.env.get("HOME")||"",i=`${[n,...s].map(a=>mt(a,r)).join(" ")}
|
|
123
|
+
`;return F(i)}function Xs(e,t){let s=qs(e),n=!1,r=!1,i=!1,a=!1;for(let c of t)if(c!=="--")if(c.startsWith("-"))for(let f of c.slice(1))if(f==="c")n=!0;else if(f==="l")r=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,a=!0;else return _(`bash: dirs: -${f}: invalid option
|
|
124
124
|
`,2);else return _(`bash: dirs: too many arguments
|
|
125
|
-
`,1);if(n)return e.state.directoryStack=[],L;let o=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",u;return a?(u=o.map((c,f)=>{let d=r?c:
|
|
125
|
+
`,1);if(n)return e.state.directoryStack=[],L;let o=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",u;return a?(u=o.map((c,f)=>{let d=r?c:mt(c,l);return` ${f} ${d}`}).join(`
|
|
126
126
|
`),u+=`
|
|
127
|
-
`):i?u=o.map(c=>r?c:
|
|
127
|
+
`):i?u=o.map(c=>r?c:mt(c,l)).join(`
|
|
128
128
|
`)+`
|
|
129
|
-
`:u=o.map(c=>r?c:
|
|
130
|
-
`,F(u)}async function
|
|
129
|
+
`:u=o.map(c=>r?c:mt(c,l)).join(" ")+`
|
|
130
|
+
`,F(u)}async function Yt(e,t,s){let n=t;if(n.length>0){let o=n[0];if(o==="--")n=n.slice(1);else if(o.startsWith("-")&&o!=="-"&&o.length>1)return _(`bash: eval: ${o}: invalid option
|
|
131
131
|
eval: usage: eval [arg ...]
|
|
132
|
-
`,2)}if(n.length===0)return L;let r=n.join(" ");if(r.trim()==="")return L;let i=e.state.groupStdin,a=s??e.state.groupStdin;a!==void 0&&(e.state.groupStdin=a);try{let o=
|
|
133
|
-
`);throw o}finally{e.state.groupStdin=i}}function
|
|
134
|
-
`,s=2):s=(i%256+256)%256}throw new
|
|
135
|
-
`}}return F(a)}if(s){for(let a of n){let o,l;if(a.includes("=")){let u=a.indexOf("=");o=a.slice(0,u),l=
|
|
136
|
-
`,i=1;continue}if(l!==void 0)if(u){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,"");
|
|
137
|
-
`);let s=t[0],n=t[1],r=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n),i=s.startsWith(":"),a=i?s.slice(1):s,o;if(t.length>2)o=t.slice(2);else{let
|
|
138
|
-
`,r||e.state.env.set(n,"?"),f+1<c.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:
|
|
139
|
-
`,r||e.state.env.set(n,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:0,stdout:"",stderr:
|
|
140
|
-
`,1);o=t[u],u++}else if(
|
|
141
|
-
`,1):_(`bash: hash: -${
|
|
142
|
-
`,1);u++}else l.push(
|
|
143
|
-
`,1);let
|
|
144
|
-
`,
|
|
145
|
-
`,1);let
|
|
146
|
-
`:
|
|
147
|
-
`:(
|
|
148
|
-
`,
|
|
149
|
-
`,1);let
|
|
150
|
-
`);let
|
|
151
|
-
`;else{
|
|
152
|
-
`;for(let[,
|
|
153
|
-
`}return F(
|
|
154
|
-
`,c=!0;continue}let
|
|
155
|
-
`,c=!0)}return c?_(f,1):L}var
|
|
132
|
+
`,2)}if(n.length===0)return L;let r=n.join(" ");if(r.trim()==="")return L;let i=e.state.groupStdin,a=s??e.state.groupStdin;a!==void 0&&(e.state.groupStdin=a);try{let o=be(r);return await e.executeScript(o)}catch(o){if(o instanceof fe||o instanceof de||o instanceof le||o instanceof B)throw o;if(o.name==="ParseException")return _(`bash: eval: ${o.message}
|
|
133
|
+
`);throw o}finally{e.state.groupStdin=i}}function Ys(e,t){let s,n="";if(t.length===0)s=e.state.lastExitCode;else{let r=t[0],i=Number.parseInt(r,10);r===""||Number.isNaN(i)||!/^-?\d+$/.test(r)?(n=`bash: exit: ${r}: numeric argument required
|
|
134
|
+
`,s=2):s=(i%256+256)%256}throw new B(s,"",n)}function Qs(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 u of l){let c=e.state.env.get(u);if(c!==void 0){let f=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -x ${u}="${f}"
|
|
135
|
+
`}}return F(a)}if(s){for(let a of n){let o,l;if(a.includes("=")){let u=a.indexOf("=");o=a.slice(0,u),l=G(e,a.slice(u+1)),e.state.env.set(o,l)}else o=a;Ot(e,o)}return L}let r="",i=0;for(let a of n){let o,l,u=!1,c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c)o=c[1],l=G(e,c[2]),u=!0;else if(a.includes("=")){let f=a.indexOf("=");o=a.slice(0,f),l=G(e,a.slice(f+1))}else o=a;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){r+=`bash: export: \`${a}': not a valid identifier
|
|
136
|
+
`,i=1;continue}if(l!==void 0)if(u){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,"");Ee(e,o)}return P("",r,i)}function Qt(e,t){if(t.length<2)return _(`bash: getopts: usage: getopts optstring name [arg ...]
|
|
137
|
+
`);let s=t[0],n=t[1],r=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n),i=s.startsWith(":"),a=i?s.slice(1):s,o;if(t.length>2)o=t.slice(2);else{let p=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let m=1;m<=p;m++)o.push(e.state.env.get(String(m))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let u=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 c=o[l-1];if(!c||c==="-"||!c.startsWith("-"))return r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};if(c==="--")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=u===0?1:u,d=c[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),Qt(e,t);let h=a.indexOf(d);if(h===-1){let p="";return i?e.state.env.set("OPTARG",d):p=`bash: illegal option -- ${d}
|
|
138
|
+
`,r||e.state.env.set(n,"?"),f+1<c.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<c.length)e.state.env.set("OPTARG",c.slice(f+1)),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(l>=o.length){let p="";return i?(e.state.env.set("OPTARG",d),r||e.state.env.set(n,":")):(p=`bash: option requires an argument -- ${d}
|
|
139
|
+
`,r||e.state.env.set(n,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:0,stdout:"",stderr:p}}e.state.env.set("OPTARG",o[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<c.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 Js(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,n=!1,r=!1,i=!1,a=!1,o="",l=[],u=0;for(;u<t.length;){let y=t[u];if(y==="--"){u++,l.push(...t.slice(u));break}if(y==="-r")s=!0,u++;else if(y==="-d")n=!0,u++;else if(y==="-l")r=!0,u++;else if(y==="-t")a=!0,u++;else if(y==="-p"){if(i=!0,u++,u>=t.length)return _(`bash: hash: -p: option requires an argument
|
|
140
|
+
`,1);o=t[u],u++}else if(y.startsWith("-")&&y.length>1){for(let p of y.slice(1))if(p==="r")s=!0;else if(p==="d")n=!0;else if(p==="l")r=!0;else if(p==="t")a=!0;else return p==="p"?_(`bash: hash: -p: option requires an argument
|
|
141
|
+
`,1):_(`bash: hash: -${p}: invalid option
|
|
142
|
+
`,1);u++}else l.push(y),u++}if(s)return e.state.hashTable.clear(),L;if(n){if(l.length===0)return _(`bash: hash: -d: option requires an argument
|
|
143
|
+
`,1);let y=!1,p="";for(let m of l)e.state.hashTable.has(m)?e.state.hashTable.delete(m):(p+=`bash: hash: ${m}: not found
|
|
144
|
+
`,y=!0);return y?_(p,1):L}if(a){if(l.length===0)return _(`bash: hash: -t: option requires an argument
|
|
145
|
+
`,1);let y="",p=!1,m="";for(let b of l){let v=e.state.hashTable.get(b);v?l.length>1?y+=`${b} ${v}
|
|
146
|
+
`:y+=`${v}
|
|
147
|
+
`:(m+=`bash: hash: ${b}: not found
|
|
148
|
+
`,p=!0)}return p?{exitCode:1,stdout:y,stderr:m}:F(y)}if(i){if(l.length===0)return _(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
|
|
149
|
+
`,1);let y=l[0];return e.state.hashTable.set(y,o),L}if(l.length===0){if(e.state.hashTable.size===0)return F(`hash: hash table empty
|
|
150
|
+
`);let y="";if(r)for(let[p,m]of e.state.hashTable)y+=`builtin hash -p ${m} ${p}
|
|
151
|
+
`;else{y=`hits command
|
|
152
|
+
`;for(let[,p]of e.state.hashTable)y+=` 1 ${p}
|
|
153
|
+
`}return F(y)}let c=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let y of l){if(y.includes("/")){f+=`bash: hash: ${y}: cannot use / in name
|
|
154
|
+
`,c=!0;continue}let p=!1;for(let m of h){if(!m)continue;let b=`${m}/${y}`;if(await e.fs.exists(b)){e.state.hashTable.set(y,b),p=!0;break}}p||(f+=`bash: hash: ${y}: not found
|
|
155
|
+
`,c=!0)}return c?_(f,1):L}var Nr=new Map([[":",[": [arguments]",`Null command.
|
|
156
156
|
No effect; the command does nothing.
|
|
157
157
|
Exit Status:
|
|
158
158
|
Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
|
|
@@ -497,32 +497,32 @@ eval: usage: eval [arg ...]
|
|
|
497
497
|
job specification, and reports its termination status.
|
|
498
498
|
Exit Status:
|
|
499
499
|
Returns the status of the last ID; fails if ID is invalid or an invalid
|
|
500
|
-
option is given.`]]]),
|
|
501
|
-
`,2)}r++}else n.push(l),r++}if(n.length===0)return
|
|
502
|
-
`,a=!0;continue}for(let c of u){let f=
|
|
500
|
+
option is given.`]]]),kr=[...Nr.keys()].sort();function en(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 u=1;u<l.length;u++){let c=l[u];if(c==="s")s=!0;else return _(`bash: help: -${c}: invalid option
|
|
501
|
+
`,2)}r++}else n.push(l),r++}if(n.length===0)return Pa();let i="",a=!1,o="";for(let l of n){let u=Ca(l);if(u.length===0){o+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
|
|
502
|
+
`,a=!0;continue}for(let c of u){let f=Nr.get(c);if(!f)continue;let[d,h]=f;s?i+=`${c}: ${d}
|
|
503
503
|
`:i+=`${c}: ${d}
|
|
504
|
-
${
|
|
505
|
-
`}}return{exitCode:a?1:0,stdout:i,stderr:o}}function
|
|
504
|
+
${h}
|
|
505
|
+
`}}return{exitCode:a?1:0,stdout:i,stderr:o}}function Ca(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=ct(`^${t}$`);return kr.filter(n=>s.test(n))}function Pa(){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=kr.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",a=s[r+n]||"",o=i.padEnd(t);e.push(a?`${o}${a}`:i)}return F(`${e.join(`
|
|
506
506
|
`)}
|
|
507
|
-
`)}function
|
|
508
|
-
`);let s=
|
|
509
|
-
`)}return P("","",n===0?1:0)}async function
|
|
507
|
+
`)}function Na(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 tn(e,t){if(t.length===0)return _(`bash: let: expression expected
|
|
508
|
+
`);let s=Na(t),n=0;for(let r of s)try{let a=be(`(( ${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 H(e,o.expression.expression))}}catch(i){return _(`bash: let: ${r}: ${i.message}
|
|
509
|
+
`)}return P("","",n===0?1:0)}async function sn(e,t){if(e.state.localScopes.length===0)return _(`bash: local: can only be used in a function
|
|
510
510
|
`);let s=e.state.localScopes[e.state.localScopes.length-1],n="",r=0,i=!1,a=!1,o=!1,l=[];for(let u of t)if(u==="-n")i=!0;else if(u==="-a")a=!0;else if(u==="-p")o=!0;else if(u.startsWith("-")&&!u.includes("="))for(let c of u.slice(1))c==="n"?i=!0:c==="a"?a=!0:c==="p"&&(o=!0);else l.push(u);if(l.length===0){let u="",c=Array.from(s.keys()).filter(f=>!f.includes("_")||!f.match(/_\d+$/)).filter(f=>!f.includes("__length")).sort();for(let f of c){let d=e.state.env.get(f);d!==void 0&&(u+=`${f}=${d}
|
|
511
|
-
`)}return P(u,"",0)}for(let u of l){let c,f,d=u.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){c=d[1];let
|
|
512
|
-
`,r=1;continue}if(
|
|
513
|
-
`,r=1;continue}let
|
|
514
|
-
`,r=1;continue}e.state.env.set(c,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(c))}else{let
|
|
511
|
+
`)}return P(u,"",0)}for(let u of l){let c,f,d=u.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){c=d[1];let b=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c)){n+=`bash: local: \`${u}': not a valid identifier
|
|
512
|
+
`,r=1;continue}if(ee(e,c,"bash"),!s.has(c)){s.set(c,e.state.env.get(c));let g=`${c}_`;for(let w of e.state.env.keys())w.startsWith(g)&&!w.includes("__")&&(s.has(w)||s.set(w,e.state.env.get(w)))}let v=`${c}_`;for(let g of e.state.env.keys())g.startsWith(v)&&!g.includes("__")&&e.state.env.delete(g);let A=Pe(b);for(let g=0;g<A.length;g++)e.state.env.set(`${c}_${g}`,A[g]);e.state.env.set(`${c}__length`,String(A.length)),We(e,c),i&&ke(e,c);continue}let h=u.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){c=h[1];let b=h[2];if(ee(e,c,"bash"),!s.has(c)){s.set(c,e.state.env.get(c));let E=`${c}_`;for(let k of e.state.env.keys())k.startsWith(E)&&!k.includes("__")&&(s.has(k)||s.set(k,e.state.env.get(k)));let T=`${c}__length`;e.state.env.has(T)&&!s.has(T)&&s.set(T,e.state.env.get(T))}let v=Pe(b),A=se(e,c),g=0,w=e.state.env.get(c);A.length===0&&w!==void 0?(e.state.env.set(`${c}_0`,w),e.state.env.delete(c),g=1):A.length>0&&(g=Math.max(...A)+1);for(let E=0;E<v.length;E++)e.state.env.set(`${c}_${g+E}`,G(e,v[E]));let $=g+v.length;e.state.env.set(`${c}__length`,String($)),We(e,c),i&&ke(e,c);continue}let y=u.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(y){c=y[1];let b=G(e,y[2]);ee(e,c,"bash"),s.has(c)||s.set(c,e.state.env.get(c));let v=e.state.env.get(c)??"";e.state.env.set(c,v+b),We(e,c),i&&ke(e,c);continue}let p=u.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){c=p[1];let b=p[2],v=G(e,p[3]);if(ee(e,c,"bash"),!s.has(c)){s.set(c,e.state.env.get(c));let w=`${c}_`;for(let E of e.state.env.keys())E.startsWith(w)&&!E.includes("__")&&(s.has(E)||s.set(E,e.state.env.get(E)));let $=`${c}__length`;e.state.env.has($)&&!s.has($)&&s.set($,e.state.env.get($))}let A;try{let w=new V,$=Q(w,b);A=await H(e,$.expression)}catch{let w=parseInt(b,10);A=Number.isNaN(w)?0:w}e.state.env.set(`${c}_${A}`,v);let g=parseInt(e.state.env.get(`${c}__length`)??"0",10);A>=g&&e.state.env.set(`${c}__length`,String(A+1)),We(e,c),i&&ke(e,c);continue}if(u.includes("=")){let b=u.indexOf("=");c=u.slice(0,b),f=G(e,u.slice(b+1))}else c=u;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c)){n+=`bash: local: \`${u}': not a valid identifier
|
|
513
|
+
`,r=1;continue}let m=s.has(c);if(f!==void 0){let b=e.state.env.get(c);if(e.state.tempEnvBindings){let v=e.state.accessedTempEnvVars?.has(c),A=e.state.mutatedTempEnvVars?.has(c);if(!v&&!A)for(let g=e.state.tempEnvBindings.length-1;g>=0;g--){let w=e.state.tempEnvBindings[g];if(w.has(c)){b=w.get(c);break}}}hr(e,c,b)}if(!m){let b=e.state.env.get(c);if(e.state.tempEnvBindings)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let A=e.state.tempEnvBindings[v];if(A.has(c)){b=A.get(c);break}}if(s.set(c,b),a){let v=`${c}_`;for(let g of e.state.env.keys())g.startsWith(v)&&!g.includes("__")&&(s.has(g)||s.set(g,e.state.env.get(g)));let A=`${c}__length`;e.state.env.has(A)&&!s.has(A)&&s.set(A,e.state.env.get(A))}}if(a&&f===void 0){let b=`${c}_`;for(let v of e.state.env.keys())v.startsWith(b)&&!v.includes("__")&&e.state.env.delete(v);e.state.env.set(`${c}__length`,"0")}else if(f!==void 0){if(ee(e,c,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){n+=`bash: local: \`${f}': invalid variable name for name reference
|
|
514
|
+
`,r=1;continue}e.state.env.set(c,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(c))}else{let b=e.state.tempEnvBindings?.some(v=>v.has(c));!m&&!b&&e.state.env.delete(c)}We(e,c),i&&ke(e,c)}return P("",n,r)}function nn(e,t,s){let n=`
|
|
515
515
|
`,r=0,i=0,a=0,o=!1,l="MAPFILE",u=0;for(;u<t.length;){let v=t[u];v==="-d"&&u+1<t.length?(n=t[u+1]===""?"\0":t[u+1]||`
|
|
516
|
-
`,u+=2):v==="-n"&&u+1<t.length?(r=Number.parseInt(t[u+1],10)||0,u+=2):v==="-O"&&u+1<t.length?(i=Number.parseInt(t[u+1],10)||0,u+=2):v==="-s"&&u+1<t.length?(a=Number.parseInt(t[u+1],10)||0,u+=2):v==="-t"?(o=!0,u++):v==="-u"||v==="-C"||v==="-c"?u+=2:(v.startsWith("-")||(l=v),u++)}let c=s;!c&&e.state.groupStdin!==void 0&&(c=e.state.groupStdin);let f=[],d=c,
|
|
517
|
-
`,1);let w=d
|
|
518
|
-
`,1);f.push(A),
|
|
519
|
-
`,a="",o=-1,l=-1,u=null,c=-1,f=-1,d=[],
|
|
520
|
-
`){N+=2,A=N;continue}if(D
|
|
521
|
-
`){C+=2;continue}if(O
|
|
516
|
+
`,u+=2):v==="-n"&&u+1<t.length?(r=Number.parseInt(t[u+1],10)||0,u+=2):v==="-O"&&u+1<t.length?(i=Number.parseInt(t[u+1],10)||0,u+=2):v==="-s"&&u+1<t.length?(a=Number.parseInt(t[u+1],10)||0,u+=2):v==="-t"?(o=!0,u++):v==="-u"||v==="-C"||v==="-c"?u+=2:(v.startsWith("-")||(l=v),u++)}let c=s;!c&&e.state.groupStdin!==void 0&&(c=e.state.groupStdin);let f=[],d=c,h=0,y=0,p=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let v=d.indexOf(n);if(v===-1){if(d.length>0){if(y<a)y++;else if(r===0||h<r){if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
|
|
517
|
+
`,1);let w=d,$=w.indexOf("\0");$!==-1&&(w=w.substring(0,$)),f.push(w),h++}}break}let A=d.substring(0,v),g=A.indexOf("\0");if(g!==-1&&(A=A.substring(0,g)),!o&&n!=="\0"&&(A+=n),d=d.substring(v+n.length),y<a){y++;continue}if(r>0&&h>=r)break;if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
|
|
518
|
+
`,1);f.push(A),h++}i===0&&Ae(e,l);for(let v=0;v<f.length;v++)e.state.env.set(`${l}_${i+v}`,f[v]);let m=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(m,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),P("","",0)}function ka(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 u=Number.parseInt(o.slice(0,l),10);if(Number.isNaN(u)||u<0)return null;let c=o.slice(l+1);return{path:i,position:u,content:c}}function Oa(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function rn(e,t,s,n=-1){let r=!1,i=`
|
|
519
|
+
`,a="",o=-1,l=-1,u=null,c=-1,f=-1,d=[],h=0,y=!1,p=(C,N)=>{let O=1;for(;O<C.length;){let S=C[O];if(S==="r")r=!0,O++;else if(S==="s")O++;else{if(S==="d")return O+1<C.length?(i=C.substring(O+1),{nextArgIndex:N+1}):N+1<t.length?(i=t[N+1],{nextArgIndex:N+2}):{nextArgIndex:N+1};if(S==="n"){if(O+1<C.length){let D=C.substring(O+1);return o=Number.parseInt(D,10),(Number.isNaN(o)||o<0)&&(y=!0,o=0),{nextArgIndex:N+1}}else if(N+1<t.length)return o=Number.parseInt(t[N+1],10),(Number.isNaN(o)||o<0)&&(y=!0,o=0),{nextArgIndex:N+2};return{nextArgIndex:N+1}}else if(S==="N"){if(O+1<C.length){let D=C.substring(O+1);return l=Number.parseInt(D,10),(Number.isNaN(l)||l<0)&&(y=!0,l=0),{nextArgIndex:N+1}}else if(N+1<t.length)return l=Number.parseInt(t[N+1],10),(Number.isNaN(l)||l<0)&&(y=!0,l=0),{nextArgIndex:N+2};return{nextArgIndex:N+1}}else{if(S==="a")return O+1<C.length?(u=C.substring(O+1),{nextArgIndex:N+1}):N+1<t.length?(u=t[N+1],{nextArgIndex:N+2}):{nextArgIndex:N+1};if(S==="p")return O+1<C.length?(a=C.substring(O+1),{nextArgIndex:N+1}):N+1<t.length?(a=t[N+1],{nextArgIndex:N+2}):{nextArgIndex:N+1};if(S==="u"){if(O+1<C.length){let D=C.substring(O+1);return c=Number.parseInt(D,10),Number.isNaN(c)||c<0?{nextArgIndex:-2}:{nextArgIndex:N+1}}else if(N+1<t.length)return c=Number.parseInt(t[N+1],10),Number.isNaN(c)||c<0?{nextArgIndex:-2}:{nextArgIndex:N+2};return{nextArgIndex:N+1}}else if(S==="t"){if(O+1<C.length){let D=C.substring(O+1);return f=Number.parseFloat(D),Number.isNaN(f)&&(f=0),{nextArgIndex:N+1}}else if(N+1<t.length)return f=Number.parseFloat(t[N+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:N+2};return{nextArgIndex:N+1}}else if(S==="e"||S==="i"||S==="P"){if(S==="i"&&N+1<t.length)return{nextArgIndex:N+2};O++}else O++}}}return{nextArgIndex:N+1}};for(;h<t.length;){let C=t[h];if(C.startsWith("-")&&C.length>1&&C!=="--"){let N=p(C,h);if(N.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(N.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=N.nextArgIndex}else if(C==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(C),h++}if(y)return P("","",1);if(d.length===0&&u===null&&d.push("REPLY"),f===0){if(u)Ae(e,u);else{for(let C of d)e.state.env.set(C,"");d.length===0&&e.state.env.set("REPLY","")}return P("","",0)}if(f<0&&f!==-1)return P("","",1);let m=s;c>=0?e.state.fileDescriptors?m=e.state.fileDescriptors.get(c)||"":m="":!m&&e.state.groupStdin!==void 0&&(m=e.state.groupStdin);let b=i===""?"\0":i,v="",A=0,g=!0,w=C=>{if(c>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(c,m.substring(C));else if(n>=0&&e.state.fileDescriptors){let N=e.state.fileDescriptors.get(n);if(N?.startsWith("__rw__:")){let O=ka(N);if(O){let S=O.position+C;e.state.fileDescriptors.set(n,Oa(O.path,S,O.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=m.substring(C))};if(l>=0){let C=Math.min(l,m.length);v=m.substring(0,C),A=C,g=C>=l,w(A);let N=d[0]||"REPLY";e.state.env.set(N,v);for(let O=1;O<d.length;O++)e.state.env.set(d[O],"");return P("","",g?0:1)}else if(o>=0){let C=0,N=0,O=!1;for(;N<m.length&&C<o;){let S=m[N];if(S===b){A=N+1,O=!0;break}if(!r&&S==="\\"&&N+1<m.length){let D=m[N+1];if(D===b&&b===`
|
|
520
|
+
`){N+=2,A=N;continue}if(D===b){N+=2,C++,v+=D,A=N;continue}v+=D,N+=2,C++,A=N}else v+=S,N++,C++,A=N}g=C>=o||O,w(A)}else{A=0;let C=0;for(;C<m.length;){let N=m[C];if(N===b){A=C+b.length,g=!0;break}if(!r&&N==="\\"&&C+1<m.length){let O=m[C+1];if(O===`
|
|
521
|
+
`){C+=2;continue}if(O===b){v+=O,C+=2;continue}v+=N,v+=O,C+=2;continue}v+=N,C++}if(C>=m.length&&(g=!1,A=C,v.length===0&&m.length===0)){for(let N of d)e.state.env.set(N,"");return u&&Ae(e,u),P("","",1)}w(A)}b===`
|
|
522
522
|
`&&v.endsWith(`
|
|
523
|
-
`)&&(v=v.slice(0,-1));let
|
|
524
|
-
`,1);
|
|
525
|
-
`,2);s=(r%256+256)%256}throw new le(s)}var
|
|
523
|
+
`)&&(v=v.slice(0,-1));let $=C=>r?C:C.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",$(v)),P("","",g?0:1);let E=Dn(e.state.env);if(u){let{words:C}=ds(v,E,void 0,r),N=e.limits?.maxArrayElements??1e5;if(C.length>N)return P("",`read: array element limit exceeded (${N})
|
|
524
|
+
`,1);Ae(e,u);for(let O=0;O<C.length;O++)e.state.env.set(`${u}_${O}`,$(C[O]));return P("","",g?0:1)}let T=d.length,{words:k,wordStarts:x}=ds(v,E,T,r);for(let C=0;C<d.length;C++){let N=d[C];if(C<d.length-1)e.state.env.set(N,$(k[C]??""));else if(C<x.length){let O=v.substring(x[C]);O=Tn(O,E,r),O=$(O),e.state.env.set(N,O)}else e.state.env.set(N,"")}return P("","",g?0:1)}function an(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return _("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let n=t[0],r=Number.parseInt(n,10);if(n===""||Number.isNaN(r)||!/^-?\d+$/.test(n))return _(`bash: return: ${n}: numeric argument required
|
|
525
|
+
`,2);s=(r%256+256)%256}throw new le(s)}var Jt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
|
|
526
526
|
Options:
|
|
527
527
|
-e Exit immediately if a command exits with non-zero status
|
|
528
528
|
+e Disable -e
|
|
@@ -538,184 +538,184 @@ Options:
|
|
|
538
538
|
+o pipefail Disable pipefail
|
|
539
539
|
-o xtrace Same as -x
|
|
540
540
|
+o xtrace Disable xtrace
|
|
541
|
-
`,
|
|
541
|
+
`,Or=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]]),Dr=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]]),Tr=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Ir=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function xr(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,st(e))}function Da(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Ta(e,t){let s=se(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${je(i)}`});return`${t}=(${n.join(" ")})`}function Ia(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function xa(e,t){let s=Re(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${Ia(r)}]=${je(i)}`});return`${t}=(${n.join(" ")} )`}function Ra(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 La(e){return e.state.associativeArrays??new Set}function ln(e,t){if(t.includes("--help"))return F(Jt);if(t.length===0){let n=Ra(e),r=La(e),i=l=>{for(let u of r){let c=`${u}_`,f=`${u}__length`;if(l!==f&&l.startsWith(c)){if(l.slice(c.length).startsWith("_length"))continue;return!0}}return!1},a=[];for(let[l,u]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l)||n.has(l)||r.has(l))continue;let c=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(c&&n.has(c[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,u])}let o=[];for(let[l,u]of a.sort(([c],[f])=>c<f?-1:c>f?1:0))o.push(`${l}=${Xt(u)}`);for(let l of[...n].sort((u,c)=>u<c?-1:u>c?1:0))o.push(Ta(e,l));for(let l of[...r].sort((u,c)=>u<c?-1:u>c?1:0))o.push(xa(e,l));return o.sort((l,u)=>{let c=l.split("=")[0],f=u.split("=")[0];return c<f?-1:c>f?1:0}),F(o.length>0?`${o.join(`
|
|
542
542
|
`)}
|
|
543
|
-
`:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&
|
|
544
|
-
${
|
|
543
|
+
`:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&Da(t,s)){let r=t[s+1];if(!Dr.has(r)){let i=`bash: set: ${r}: invalid option name
|
|
544
|
+
${Jt}`;if(e.state.options.posix)throw new we(1,"",i);return _(i)}xr(e,Dr.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=Tr.map(o=>`${o.padEnd(16)}${e.state.options[o]?"on":"off"}`),i=Ir.map(o=>`${o.padEnd(16)}off`),a=[...r,...i].sort();return F(`${a.join(`
|
|
545
545
|
`)}
|
|
546
|
-
`)}if(n==="+o"){let r
|
|
546
|
+
`)}if(n==="+o"){let r=Tr.map(o=>`set ${e.state.options[o]?"-o":"+o"} ${o}`),i=Ir.map(o=>`set +o ${o}`),a=[...r,...i].sort();return F(`${a.join(`
|
|
547
547
|
`)}
|
|
548
|
-
`)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let a=n[i];if(!
|
|
549
|
-
${
|
|
550
|
-
${
|
|
551
|
-
`;if(e.state.options.posix)throw new
|
|
552
|
-
`;if(e.state.options.posix)throw new
|
|
548
|
+
`)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let a=n[i];if(!Or.has(a)){let o=`bash: set: ${n[0]}${a}: invalid option
|
|
549
|
+
${Jt}`;if(e.state.options.posix)throw new we(1,"",o);return _(o)}xr(e,Or.get(a)??null,r)}s++;continue}if(n==="--")return on(e,t.slice(s+1)),L;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,st(e),s+1<t.length)return on(e,t.slice(s+1)),L;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
|
|
550
|
+
${Jt}`;if(e.state.options.posix)throw new we(1,"",r);return _(r)}return on(e,t.slice(s)),L}return L}function on(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 cn(e,t){let s=1;if(t.length>0){let a=Number.parseInt(t[0],10);if(Number.isNaN(a)||a<0){let o=`bash: shift: ${t[0]}: numeric argument required
|
|
551
|
+
`;if(e.state.options.posix)throw new we(1,"",o);return _(o)}s=a}let n=Number.parseInt(e.state.env.get("#")||"0",10);if(s>n){let a=`bash: shift: shift count out of range
|
|
552
|
+
`;if(e.state.options.posix)throw new we(1,"",a);return _(a)}if(s===0)return L;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(" ")),L}async function un(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return P("",`bash: source: filename argument required
|
|
553
553
|
`,2);let n=s[0],r=null,i=null;if(n.includes("/")){let u=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(u),r=u}catch{}}else{let c=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of c){let d=e.fs.resolvePath(e.state.cwd,`${f}/${n}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),r=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(f),r=f}catch{}}}if(i===null)return _(`bash: ${n}: No such file or directory
|
|
554
|
-
`);let a=new Map;if(s.length>1){for(let c=1;c<=9;c++)a.set(String(c),e.state.env.get(String(c)));a.set("#",e.state.env.get("#")),a.set("@",e.state.env.get("@"));let u=s.slice(1);e.state.env.set("#",String(u.length)),e.state.env.set("@",u.join(" "));for(let c=0;c<u.length&&c<9;c++)e.state.env.set(String(c+1),u[c]);for(let c=u.length+1;c<=9;c++)e.state.env.delete(String(c))}let o=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=o,s.length>1)for(let[u,c]of a)c===void 0?e.state.env.delete(u):e.state.env.set(u,c)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new
|
|
555
|
-
`);throw u}}function
|
|
556
|
-
`,r=1;continue}let v=await
|
|
554
|
+
`);let a=new Map;if(s.length>1){for(let c=1;c<=9;c++)a.set(String(c),e.state.env.get(String(c)));a.set("#",e.state.env.get("#")),a.set("@",e.state.env.get("@"));let u=s.slice(1);e.state.env.set("#",String(u.length)),e.state.env.set("@",u.join(" "));for(let c=0;c<u.length&&c<9;c++)e.state.env.set(String(c+1),u[c]);for(let c=u.length+1;c<=9;c++)e.state.env.delete(String(c))}let o=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=o,s.length>1)for(let[u,c]of a)c===void 0?e.state.env.delete(u):e.state.env.set(u,c)};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 u=be(i),c=await e.executeScript(u);return l(),c}catch(u){if(l(),u instanceof B)throw u;if(u instanceof le)return P(u.stdout,u.stderr,u.exitCode);if(u.name==="ParseException")return _(`bash: ${n}: ${u.message}
|
|
555
|
+
`);throw u}}function Rr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Fa(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Lr(e,t){if(Fa(t))return null;try{let s=new V,n=Q(s,t);return await H(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function Fr(e,t){if(e.state.localVarStack?.has(t)){let n=qt(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)Zt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),fn(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),Zt(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||Zt(e,t),!0}}return!1}function fn(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 Mr(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 dn(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 u=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(u){let d=u[1],h=u[2];if(h==="@"||h==="*"){let A=$e(e,d);for(let[g]of A)e.state.env.delete(`${d}_${g}`);e.state.env.delete(d);continue}let y=e.state.associativeArrays?.has(d);if(y){let A=await Mr(e,h);e.state.env.delete(`${d}_${A}`);continue}let p=ms(e,d),m=e.state.declaredVars?.has(d);if((e.state.env.has(d)||m)&&!p&&!y){n+=`bash: unset: ${d}: not an array variable
|
|
556
|
+
`,r=1;continue}let v=await Lr(e,h);if(v===null&&p){n+=`bash: unset: ${h}: not a valid identifier
|
|
557
557
|
`,r=1;continue}if(v===null)continue;if(v<0){let A=$e(e,d),g=A.length,w=e.state.currentLine;if(g===0){n+=`bash: line ${w}: unset: [${v}]: bad array subscript
|
|
558
|
-
`,r=1;continue}let
|
|
559
|
-
`,r=1;continue}let E=A[
|
|
560
|
-
`,r=1;continue}let c=i;if(me(e,i)){let d=
|
|
561
|
-
`,r=1;continue}let f=
|
|
562
|
-
`,r=1;continue}let
|
|
563
|
-
`,r=1;continue}if(
|
|
564
|
-
`,r=1;continue}let v=y
|
|
565
|
-
`,r=1;continue}let A=
|
|
566
|
-
`,r=1;continue}let o=i;if(me(e,i)){let u=
|
|
567
|
-
`,r=1;continue}let l=
|
|
568
|
-
`}}}l++}else break}for(;l<t.length;)o.push(t[l]),l++;if(a)return
|
|
569
|
-
`};if(o.length===0){if(s||n){let
|
|
558
|
+
`,r=1;continue}let $=g+v;if($<0){n+=`bash: line ${w}: unset: [${v}]: bad array subscript
|
|
559
|
+
`,r=1;continue}let E=A[$][0];e.state.env.delete(`${d}_${E}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!Rr(i)){n+=`bash: unset: \`${i}': not a valid identifier
|
|
560
|
+
`,r=1;continue}let c=i;if(me(e,i)){let d=Le(e,i);d&&d!==i&&(c=d)}if(Be(e,c)){n+=`bash: unset: ${c}: cannot unset: readonly variable
|
|
561
|
+
`,r=1;continue}let f=rt(e,c);if(f!==void 0&&f!==e.state.callDepth)Fr(e,c);else if(e.state.fullyUnsetLocals?.has(c))e.state.env.delete(c);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(c),h=e.state.mutatedTempEnvVars?.has(c);if((d||h)&&e.state.localVarStack?.has(c)){let y=qt(e,c);y?y.value===void 0?e.state.env.delete(c):e.state.env.set(c,y.value):e.state.env.delete(c)}else e.state.env.delete(c)}else fn(e,c)||e.state.env.delete(c);e.state.exportedVars?.delete(c);continue}let a=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let u=a[1],c=a[2];if(c==="@"||c==="*"){let p=$e(e,u);for(let[m]of p)e.state.env.delete(`${u}_${m}`);e.state.env.delete(u);continue}let f=e.state.associativeArrays?.has(u);if(f){let p=await Mr(e,c);e.state.env.delete(`${u}_${p}`);continue}let d=ms(e,u);if(e.state.env.has(u)&&!d&&!f){n+=`bash: unset: ${u}: not an array variable
|
|
562
|
+
`,r=1;continue}let y=await Lr(e,c);if(y===null&&d){n+=`bash: unset: ${c}: not a valid identifier
|
|
563
|
+
`,r=1;continue}if(y===null)continue;if(y<0){let p=$e(e,u),m=p.length,b=e.state.currentLine;if(m===0){n+=`bash: line ${b}: unset: [${y}]: bad array subscript
|
|
564
|
+
`,r=1;continue}let v=m+y;if(v<0){n+=`bash: line ${b}: unset: [${y}]: bad array subscript
|
|
565
|
+
`,r=1;continue}let A=p[v][0];e.state.env.delete(`${u}_${A}`);continue}e.state.env.delete(`${u}_${y}`);continue}if(!Rr(i)){n+=`bash: unset: \`${i}': not a valid identifier
|
|
566
|
+
`,r=1;continue}let o=i;if(me(e,i)){let u=Le(e,i);u&&u!==i&&(o=u)}if(Be(e,o)){n+=`bash: unset: ${o}: cannot unset: readonly variable
|
|
567
|
+
`,r=1;continue}let l=rt(e,o);if(l!==void 0&&l!==e.state.callDepth)Fr(e,o);else if(e.state.fullyUnsetLocals?.has(o))e.state.env.delete(o);else if(l!==void 0){let u=e.state.accessedTempEnvVars?.has(o),c=e.state.mutatedTempEnvVars?.has(o);if((u||c)&&e.state.localVarStack?.has(o)){let f=qt(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 fn(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return P("",n,r)}var hn=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Ma=["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 es(e){return hn.includes(e)}function Wa(e){return Ma.includes(e)}function Wr(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=[],l=0;for(;l<t.length;){let d=t[l];if(d==="--"){l++;break}if(d.startsWith("-")&&d.length>1){for(let h=1;h<d.length;h++){let y=d[h];switch(y){case"s":s=!0;break;case"u":n=!0;break;case"p":r=!0;break;case"q":i=!0;break;case"o":a=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${y}: invalid option
|
|
568
|
+
`}}}l++}else break}for(;l<t.length;)o.push(t[l]),l++;if(a)return za(e,o,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
|
|
569
|
+
`};if(o.length===0){if(s||n){let h=[];for(let y of hn){let p=e.state.shoptOptions[y];s&&p?h.push(r?`shopt -s ${y}`:`${y} on`):n&&!p&&h.push(r?`shopt -u ${y}`:`${y} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
|
|
570
570
|
`)}
|
|
571
|
-
`:"",stderr:""}}let d=[];for(let
|
|
571
|
+
`:"",stderr:""}}let d=[];for(let h of hn){let y=e.state.shoptOptions[h];d.push(r?`shopt ${y?"-s":"-u"} ${h}`:`${h} ${y?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
|
|
572
572
|
`)}
|
|
573
|
-
`,stderr:""}}let u=!1,c="",f=[];for(let d of o){if(!
|
|
574
|
-
`,u=!0;continue}if(s)
|
|
573
|
+
`,stderr:""}}let u=!1,c="",f=[];for(let d of o){if(!es(d)&&!Wa(d)){c+=`shopt: ${d}: invalid shell option name
|
|
574
|
+
`,u=!0;continue}if(s)es(d)&&(e.state.shoptOptions[d]=!0,Es(e));else if(n)es(d)&&(e.state.shoptOptions[d]=!1,Es(e));else if(es(d)){let h=e.state.shoptOptions[d];i?h||(u=!0):r?(f.push(`shopt ${h?"-s":"-u"} ${d}`),h||(u=!0)):(f.push(`${d} ${h?"on":"off"}`),h||(u=!0))}else i?u=!0:r?(f.push(`shopt -u ${d}`),u=!0):(f.push(`${d} off`),u=!0)}return{exitCode:u?1:0,stdout:f.length>0?`${f.join(`
|
|
575
575
|
`)}
|
|
576
|
-
`:"",stderr:c}}function
|
|
576
|
+
`:"",stderr:c}}function za(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),m=y||!p?!1:e.state.options[p];s&&!m||n&&m||d.push(r?`set ${m?"-o":"+o"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
|
|
577
577
|
`)}
|
|
578
|
-
`:"",stderr:""}}let u=!1,c="",f=[];for(let d of t){let
|
|
579
|
-
`,u=!0;continue}if(
|
|
578
|
+
`:"",stderr:""}}let u=!1,c="",f=[];for(let d of t){let h=a.has(d),y=o.includes(d);if(!h&&!y){c+=`shopt: ${d}: invalid option name
|
|
579
|
+
`,u=!0;continue}if(y){s||n||(i?u=!0:r?(f.push(`set +o ${d}`),u=!0):(f.push(`${d} off`),u=!0));continue}let p=a.get(d);if(p)if(s)p==="vi"?e.state.options.emacs=!1:p==="emacs"&&(e.state.options.vi=!1),e.state.options[p]=!0,st(e);else if(n)e.state.options[p]=!1,st(e);else{let m=e.state.options[p];i?m||(u=!0):r?(f.push(`set ${m?"-o":"+o"} ${d}`),m||(u=!0)):(f.push(`${d} ${m?"on":"off"}`),m||(u=!0))}}return{exitCode:u?1:0,stdout:f.length>0?`${f.join(`
|
|
580
580
|
`)}
|
|
581
|
-
`:"",stderr:c}}async function
|
|
582
|
-
`;
|
|
583
|
-
`,
|
|
584
|
-
`;else{let
|
|
585
|
-
`;c+=E}
|
|
586
|
-
`:c+=`${
|
|
587
|
-
`),
|
|
588
|
-
`:c+=`${
|
|
589
|
-
`),
|
|
590
|
-
`;else{let
|
|
591
|
-
`;c+=E}
|
|
592
|
-
`:c+=`${
|
|
593
|
-
`),
|
|
581
|
+
`:"",stderr:c}}async function zr(e,t,s){if(t.includes("/")){let a=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(a))return{error:"not_found",path:a};let o=a.split("/").pop()||t,l=e.commands.get(o);try{let u=await e.fs.stat(a);return u.isDirectory?{error:"permission_denied",path:a}:l?{cmd:l,path:a}:(u.mode&73)!==0?{script:!0,path:a}:{error:"permission_denied",path:a}}catch{return{error:"not_found",path:a}}}if(!s&&e.state.hashTable){let a=e.state.hashTable.get(t);if(a)if(await e.fs.exists(a)){let o=e.commands.get(t);if(o)return{cmd:o,path:a};try{let l=await e.fs.stat(a);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:a}}catch{}}else e.state.hashTable.delete(t)}let r=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let a of r){if(!a)continue;let l=`${a.startsWith("/")?a:e.fs.resolvePath(e.state.cwd,a)}/${t}`;if(await e.fs.exists(l))try{let u=await e.fs.stat(l);if(u.isDirectory)continue;let c=(u.mode&73)!==0,f=e.commands.get(t),d=a==="/bin"||a==="/usr/bin";if(f&&d)return{cmd:f,path:l};if(c){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let a=e.commands.get(t);if(a)return{cmd:a,path:`/usr/bin/${t}`}}return null}async function ts(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let a=await e.fs.stat(i);a.isDirectory||(a.mode&73)!==0&&s.push(t)}catch{}return s}let r=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of r){if(!i)continue;let o=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?o:`${i}/${t}`)}}return s}function Va(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function q(e,t,s,n){return((...r)=>{ut(t,s,`${n} call`);let i=e(...r);return Va(i)?i.then(a=>(ut(t,s,`${n} post-await`),a),a=>{throw ut(t,s,`${n} post-await`),a}):(ut(t,s,`${n} return`),i)})}function Ba(e,t,s){let n={readFile:q(e.readFile.bind(e),t,s,"fs.readFile"),readFileBuffer:q(e.readFileBuffer.bind(e),t,s,"fs.readFileBuffer"),writeFile:q(e.writeFile.bind(e),t,s,"fs.writeFile"),appendFile:q(e.appendFile.bind(e),t,s,"fs.appendFile"),exists:q(e.exists.bind(e),t,s,"fs.exists"),stat:q(e.stat.bind(e),t,s,"fs.stat"),mkdir:q(e.mkdir.bind(e),t,s,"fs.mkdir"),readdir:q(e.readdir.bind(e),t,s,"fs.readdir"),rm:q(e.rm.bind(e),t,s,"fs.rm"),cp:q(e.cp.bind(e),t,s,"fs.cp"),mv:q(e.mv.bind(e),t,s,"fs.mv"),resolvePath:q(e.resolvePath.bind(e),t,s,"fs.resolvePath"),getAllPaths:q(e.getAllPaths.bind(e),t,s,"fs.getAllPaths"),chmod:q(e.chmod.bind(e),t,s,"fs.chmod"),symlink:q(e.symlink.bind(e),t,s,"fs.symlink"),link:q(e.link.bind(e),t,s,"fs.link"),readlink:q(e.readlink.bind(e),t,s,"fs.readlink"),lstat:q(e.lstat.bind(e),t,s,"fs.lstat"),realpath:q(e.realpath.bind(e),t,s,"fs.realpath"),utimes:q(e.utimes.bind(e),t,s,"fs.utimes")};return e.readdirWithFileTypes&&(n.readdirWithFileTypes=q(e.readdirWithFileTypes.bind(e),t,s,"fs.readdirWithFileTypes")),n}function Vr(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,n={...e,fs:Ba(e.fs,e.requireDefenseContext,s)};return e.exec&&(n.exec=q(e.exec,e.requireDefenseContext,s,"exec")),e.fetch&&(n.fetch=q(e.fetch,e.requireDefenseContext,s,"fetch")),e.sleep&&(n.sleep=q(e.sleep,e.requireDefenseContext,s,"sleep")),e.getRegisteredCommands&&(n.getRegisteredCommands=q(e.getRegisteredCommands,e.requireDefenseContext,s,"getRegisteredCommands")),n}async function Ur(e,t,s,n){let r=!1,i=!1,a=!1,o=!1,l=!1,u=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let m of p.slice(1))m==="t"?r=!0:m==="p"?i=!0:m==="P"?a=!0:m==="a"?o=!0:m==="f"&&(l=!0);else u.push(p);let c="",f="",d=0,h=!1,y=!1;for(let p of u){let m=!1;if(a){if(o){let $=await n(p);if($.length>0){for(let E of $)c+=`${E}
|
|
582
|
+
`;h=!0,m=!0}}else{let $=await s(p);$&&(c+=`${$}
|
|
583
|
+
`,h=!0,m=!0)}m||(y=!0);continue}let b=!l&&e.state.functions.has(p);if(o&&b){if(!i)if(r)c+=`function
|
|
584
|
+
`;else{let $=e.state.functions.get(p),E=$?Br(p,$):`${p} is a function
|
|
585
|
+
`;c+=E}m=!0}let v=e.state.env.get(`BASH_ALIAS_${p}`);if(v!==void 0&&(o||!m)&&(i||(r?c+=`alias
|
|
586
|
+
`:c+=`${p} is aliased to \`${v}'
|
|
587
|
+
`),m=!0,!o)||Os.has(p)&&(o||!m)&&(i||(r?c+=`keyword
|
|
588
|
+
`:c+=`${p} is a shell keyword
|
|
589
|
+
`),m=!0,!o))continue;if(!o&&b&&!m){if(!i)if(r)c+=`function
|
|
590
|
+
`;else{let $=e.state.functions.get(p),E=$?Br(p,$):`${p} is a function
|
|
591
|
+
`;c+=E}m=!0;continue}if(!(it.has(p)&&(o||!m)&&(i||(r?c+=`builtin
|
|
592
|
+
`:c+=`${p} is a shell builtin
|
|
593
|
+
`),m=!0,!o))){if(o){let $=await n(p);for(let E of $)i?c+=`${E}
|
|
594
594
|
`:r?c+=`file
|
|
595
|
-
`:c+=`${
|
|
596
|
-
`,
|
|
595
|
+
`:c+=`${p} is ${E}
|
|
596
|
+
`,h=!0,m=!0}else if(!m){let $=await s(p);$&&(i?c+=`${$}
|
|
597
597
|
`:r?c+=`file
|
|
598
|
-
`:c+=`${
|
|
599
|
-
`,
|
|
600
|
-
`)}}}return i?d=
|
|
598
|
+
`:c+=`${p} is ${$}
|
|
599
|
+
`,h=!0,m=!0)}if(!m&&(y=!0,!r&&!i)){let $=!0;if(p.includes("/")){let E=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(E)&&($=!1)}$&&(f+=`bash: type: ${p}: not found
|
|
600
|
+
`)}}}return i?d=y&&!h?1:0:d=y?1:0,P(c,f,d)}function Br(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(r=>yt(r)).join("; "):s=yt(t.body),`${e} is a function
|
|
601
601
|
${e} ()
|
|
602
602
|
{
|
|
603
603
|
${s}
|
|
604
604
|
}
|
|
605
|
-
`}function
|
|
605
|
+
`}function yt(e){if(Array.isArray(e))return e.map(t=>yt(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let n=e.pipelines[s];t.push(Ha(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(Hr(t.name));for(let n of t.args)s.push(Hr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>yt(n)).join("; ")}; }`:"..."}function Ha(e){let t=e.commands.map(s=>yt(s));return(e.negated?"! ":"")+t.join(" | ")}function Hr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>jr(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=jr(s);return t}function jr(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function Zr(e,t,s,n){let r="",i="",a=0;for(let o of t){if(!o){a=1;continue}let l=e.state.env.get(`BASH_ALIAS_${o}`);if(l!==void 0)n?r+=`${o} is an alias for "${l}"
|
|
606
606
|
`:r+=`alias ${o}='${l}'
|
|
607
|
-
`;else if(
|
|
607
|
+
`;else if(Os.has(o))n?r+=`${o} is a shell keyword
|
|
608
608
|
`:r+=`${o}
|
|
609
|
-
`;else if(
|
|
609
|
+
`;else if(it.has(o))n?r+=`${o} is a shell builtin
|
|
610
610
|
`:r+=`${o}
|
|
611
611
|
`;else if(e.state.functions.has(o))n?r+=`${o} is a function
|
|
612
612
|
`:r+=`${o}
|
|
613
613
|
`;else if(o.includes("/")){let u=e.fs.resolvePath(e.state.cwd,o),c=!1;if(await e.fs.exists(u))try{let f=await e.fs.stat(u);f.isDirectory||(f.mode&73)!==0&&(n?r+=`${o} is ${o}
|
|
614
614
|
`:r+=`${o}
|
|
615
615
|
`,c=!0)}catch{}c||(n&&(i+=`${o}: not found
|
|
616
|
-
`),a=1)}else if(e.commands.has(o)){let c=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),f=null;for(let d of c){if(!d)continue;let
|
|
616
|
+
`),a=1)}else if(e.commands.has(o)){let c=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),f=null;for(let d of c){if(!d)continue;let h=`${d}/${o}`;try{let y=await e.fs.stat(h);if(!y.isDirectory&&(y.mode&73)!==0){f=h;break}}catch{}}f||(f=`/usr/bin/${o}`),n?r+=`${o} is ${f}
|
|
617
617
|
`:r+=`${f}
|
|
618
618
|
`}else n&&(i+=`${o}: not found
|
|
619
|
-
`),a=1}return P(r,i,a)}async function
|
|
620
|
-
`);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function
|
|
619
|
+
`),a=1}return P(r,i,a)}async function qr(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 Gr(e,t,s,n,r,i,a,o){let{ctx:l,runCommand:u}=e;if(l.coverage&&it.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return Qs(l,s);if(t==="unset")return dn(l,s);if(t==="exit")return Ys(l,s);if(t==="local")return sn(l,s);if(t==="set")return ln(l,s);if(t==="break")return As(l,s);if(t==="continue")return Fs(l,s);if(t==="return")return an(l,s);if(t==="eval"&&l.state.options.posix)return Yt(l,s,r);if(t==="shift")return cn(l,s);if(t==="getopts")return Qt(l,s);if(t==="compgen")return Is(l,s);if(t==="complete")return Rs(l,s);if(t==="compopt")return Ls(l,s);if(t==="pushd")return await Gs(l,s);if(t==="popd")return Ks(l,s);if(t==="dirs")return Xs(l,s);if(t==="source"||t===".")return un(l,s);if(t==="read")return rn(l,s,r,o);if(t==="mapfile"||t==="readarray")return nn(l,s,r);if(t==="declare"||t==="typeset")return Us(l,s);if(t==="readonly")return Zs(l,s);if(!i){let c=l.state.functions.get(t);if(c)return Kt(l,c,s,r)}if(t==="eval")return Yt(l,s,r);if(t==="cd")return await _s(l,s);if(t===":"||t==="true")return L;if(t==="false")return X(!1);if(t==="let")return tn(l,s);if(t==="command")return ja(e,s,r);if(t==="builtin")return Ua(e,s,r);if(t==="shopt")return Wr(l,s);if(t==="exec"){if(s.length===0)return L;let[c,...f]=s;return u(c,f,[],r,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await Ur(l,s,c=>qr(l,c),c=>ts(l,c));if(t==="hash")return Js(l,s);if(t==="help")return en(l,s);if(t==="["||t==="test"){let c=s;if(t==="["){if(s[s.length-1]!=="]")return _("[: missing `]'\n",2);c=s.slice(0,-1)}return ht(l,c)}return null}async function ja(e,t,s){let{ctx:n,runCommand:r}=e;if(t.length===0)return L;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 L;if(o||a)return await Zr(n,l,o,a);let[u,...c]=l;return r(u,c,[],s,!0,i,-1)}async function Ua(e,t,s){let{runCommand:n}=e;if(t.length===0)return L;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return L;let i=r[0];if(!it.has(i))return _(`bash: builtin: ${i}: not a shell builtin
|
|
620
|
+
`);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function Kr(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e,u=await zr(i,t,r?"/usr/bin:/bin":void 0);if(!u)return sr(t)?_(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
|
|
621
621
|
`,127):_(`bash: ${t}: command not found
|
|
622
622
|
`,127);if("error"in u)return u.error==="permission_denied"?_(`bash: ${t}: Permission denied
|
|
623
623
|
`,126):_(`bash: ${t}: No such file or directory
|
|
624
|
-
`,127);if("script"in u)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,u.path)),await o(u.path,s,n);let{cmd:c,path:f}=u;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=n||i.state.groupStdin||"",
|
|
625
|
-
`)}}async function
|
|
626
|
-
`,exitCode:1}}async function
|
|
627
|
-
`,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function
|
|
628
|
-
`);let o=[];if(t.words===null)o=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)o=[];else try{for(let u of t.words){let c=await
|
|
624
|
+
`,127);if("script"in u)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,u.path)),await o(u.path,s,n);let{cmd:c,path:f}=u;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=n||i.state.groupStdin||"",h=a(),y={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:h,stdin:d,limits:i.limits,exec:i.execFn,fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext},p=Vr(y,t);try{let m=()=>Sn(i.requireDefenseContext,"command",`${t} execution`,()=>c.execute(s,p));return c.trusted?await ge.runTrustedAsync(()=>m()):await m()}catch(m){if(m instanceof Y||m instanceof Ke)throw m;return _(`${t}: ${Ie(ve(m))}
|
|
625
|
+
`)}}async function pn(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 gt(e,t,s,n){if(e instanceof fe)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};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:"continue",stdout:t,stderr:s};if(e instanceof le||e instanceof he||e instanceof B||e instanceof Y)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=ve(e);return{action:"error",stdout:t,stderr:`${s}${r}
|
|
626
|
+
`,exitCode:1}}async function ss(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(_t(o)||o instanceof he||o instanceof B||o instanceof Y||o instanceof Te)throw o.prependOutput(r,i),o;return{stdout:r,stderr:`${i}${ve(o)}
|
|
627
|
+
`,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function Xr(e,t){let s="",n="";for(let r of t.clauses){let i=await pn(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return ss(e,r.body,s,n)}return t.elseBody?ss(e,t.elseBody,s,n):P(s,n,0)}async function Yr(e,t){let s=await Ne(e,t.redirections);if(s)return s;let n="",r="",i=0,a=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return _(`bash: \`${t.variable}': not a valid identifier
|
|
628
|
+
`);let o=[];if(t.words===null)o=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)o=[];else try{for(let u of t.words){let c=await _e(e,u);o.push(...c.values)}}catch(u){if(u instanceof St)return{stdout:"",stderr:u.stderr,exitCode:1};throw u}e.state.loopDepth++;try{for(let u of o){a++,a>e.limits.maxLoopIterations&&Ce(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r),e.state.env.set(t.variable,u);try{for(let c of t.body){let f=await e.executeStatement(c);n+=f.stdout,r+=f.stderr,i=f.exitCode}}catch(c){let f=gt(c,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=P(n,r,f.exitCode??1);return Z(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=P(n,r,i);return Z(e,l,t.redirections)}async function Qr(e,t){let s=await Ne(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 H(e,t.init.expression),e.state.loopDepth++;try{for(;o++,o>e.limits.maxLoopIterations&&Ce(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await H(e,t.condition.expression)===0));){try{for(let u of t.body){let c=await e.executeStatement(u);r+=c.stdout,i+=c.stderr,a=c.exitCode}}catch(u){let c=gt(u,r,i,e.state.loopDepth);if(r=c.stdout,i=c.stderr,c.action==="break")break;if(c.action==="continue"){t.update&&await H(e,t.update.expression);continue}if(c.action==="error"){let f=P(r,i,c.exitCode??1);return Z(e,f,t.redirections)}throw c.error}t.update&&await H(e,t.update.expression)}}finally{e.state.loopDepth--}let l=P(r,i,a);return Z(e,l,t.redirections)}async function Jr(e,t,s=""){let n="",r="",i=0,a=0,o=s;for(let u of t.redirections)if((u.operator==="<<"||u.operator==="<<-")&&u.target.type==="HereDoc"){let c=u.target,f=await I(e,c.content);c.stripTabs&&(f=f.split(`
|
|
629
629
|
`).map(d=>d.replace(/^\t+/,"")).join(`
|
|
630
630
|
`)),o=f}else if(u.operator==="<<<"&&u.target.type==="Word")o=`${await I(e,u.target)}
|
|
631
631
|
`;else if(u.operator==="<"&&u.target.type==="Word")try{let c=await I(e,u.target),f=e.fs.resolvePath(e.state.cwd,c);o=await e.fs.readFile(f)}catch{let c=await I(e,u.target);return _(`bash: ${c}: No such file or directory
|
|
632
|
-
`)}let l=e.state.groupStdin;o&&(e.state.groupStdin=o),e.state.loopDepth++;try{for(;;){a++,a>e.limits.maxLoopIterations&&
|
|
633
|
-
`,t||
|
|
632
|
+
`)}let l=e.state.groupStdin;o&&(e.state.groupStdin=o),e.state.loopDepth++;try{for(;;){a++,a>e.limits.maxLoopIterations&&Ce(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r);let u=0,c=!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,u=y.exitCode}}catch(h){if(h instanceof fe){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;c=!0}else 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;f=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(c)break;if(!f){if(u!==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=gt(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 P(n,r,y.exitCode??1);throw y.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return P(n,r,i)}async function ei(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Ce(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let a=await pn(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=gt(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 P(s,n,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return P(s,n,r)}async function ti(e,t){let s=await Ne(e,t.redirections);if(s)return s;let n="",r="",i=0,a=await I(e,t.word),o=!1;for(let u=0;u<t.items.length;u++){let c=t.items[u],f=o;if(!o)for(let d of c.patterns){let h=await I(e,d);Wn(d)&&(h=Fn(h));let y=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(nt(a,h,y,p)){f=!0;break}}if(f){let d=await ss(e,c.body,n,r);if(n=d.stdout,r=d.stderr,i=d.exitCode,c.terminator===";;")break;c.terminator===";&"?o=!0:o=!1}else o=!1}let l=P(n,r,i);return Z(e,l,t.redirections)}function mn(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function si(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 u=Number.parseInt(o.slice(0,l),10);if(Number.isNaN(u)||u<0)return null;let c=o.slice(l+1);return{path:i,position:u,content:c}}var ni="+ ";async function ri(e){let t=e.state.env.get("PS4");if(t===void 0)return ni;if(t==="")return"";try{let n=new V().parseWordFromString(t,!1,!1);return await I(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
|
|
633
|
+
`,t||ni}}function Za(e){return e.map(t=>qa(t)).join(" ")}function qa(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
|
|
634
634
|
`),r=e.includes(" "),i=e.includes("\\"),a=e.includes("'");if(s||n||r||i){let l="";for(let u of e){let c=u.charCodeAt(0);u===`
|
|
635
|
-
`?l+="\\n":u===" "?l+="\\t":u==="\\"?l+="\\\\":u==="'"?l+="'":u==='"'?l+='"':c<32||c===127?c<256?l+=`\\x${c.toString(16).padStart(2,"0")}`:l+=`\\u${c.toString(16).padStart(4,"0")}`:l+=u}return`$'${l}'`}return a?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function
|
|
636
|
-
`}async function
|
|
637
|
-
`:""}async function
|
|
635
|
+
`?l+="\\n":u===" "?l+="\\t":u==="\\"?l+="\\\\":u==="'"?l+="'":u==='"'?l+='"':c<32||c===127?c<256?l+=`\\x${c.toString(16).padStart(2,"0")}`:l+=`\\u${c.toString(16).padStart(4,"0")}`:l+=u}return`$'${l}'`}return a?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function ii(e,t,s){if(!e.state.options.xtrace)return"";let n=await ri(e),r=[t,...s],i=Za(r);return`${n}${i}
|
|
636
|
+
`}async function ai(e,t,s){return e.state.options.xtrace?`${await ri(e)}${t}=${s}
|
|
637
|
+
`:""}async function oi(e,t,s){let n=t.timed?ls():0,r="",i=L,a=0,o=[],l="",u=t.commands.length>1,c=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;u&&(e.state.lastArg="",p||(e.state.groupStdin=void 0));let b=u&&(!y||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,v;try{v=await s(h,r)}catch(A){if(A instanceof Et)v={stdout:A.stdout,stderr:A.stderr,exitCode:1};else if(A instanceof B&&t.commands.length>1)v={stdout:A.stdout,stderr:A.stderr,exitCode:A.exitCode};else if(A instanceof he&&t.commands.length>1)v={stdout:A.stdout,stderr:A.stderr,exitCode:A.exitCode};else throw b&&(e.state.env=b),A}b&&(e.state.env=b),o.push(v.exitCode),v.exitCode!==0&&(a=v.exitCode),y?i=v:(t.pipeStderr?.[d]??!1?r=v.stderr+v.stdout:(r=v.stdout,l+=v.stderr),i={stdout:"",stderr:"",exitCode:v.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=(ls()-n)/1e3,y=Math.floor(h/60),p=h%60,m;t.timePosix?m=`real ${h.toFixed(2)}
|
|
638
638
|
user 0.00
|
|
639
639
|
sys 0.00
|
|
640
|
-
`:
|
|
641
|
-
real ${`${
|
|
640
|
+
`:m=`
|
|
641
|
+
real ${`${y}m${p.toFixed(3)}s`}
|
|
642
642
|
user 0m0.000s
|
|
643
643
|
sys 0m0.000s
|
|
644
|
-
`,i={...i,stderr:i.stderr+
|
|
645
|
-
`,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let c=await
|
|
646
|
-
`,1)};if(me(e,s)){let c=
|
|
647
|
-
`,1)}}if(
|
|
648
|
-
`,{continueToNext:!0,xtraceOutput:a};let c=
|
|
649
|
-
`)}}async function
|
|
650
|
-
`,1)};o=f}}if(
|
|
651
|
-
`;if(i.fatal)throw new
|
|
644
|
+
`,i={...i,stderr:i.stderr+m}}return u&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=c),i}async function li(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let c=await Ga(e,t,i,r.array,r.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:c.error};if(n+=c.xtraceOutput,c.continueToNext)continue}let a=r.value?await I(e,r.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:P("",`bash: ${i}: bad array subscript
|
|
645
|
+
`,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let c=await Ja(e,t,l[1],l[2],a,r.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:c.error};if(c.continueToNext)continue}let u=await to(e,t,i,a,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};n+=u.xtraceOutput,u.continueToNext}return{continueToNext:!1,xtraceOutput:n,tempAssignments:s}}async function Ga(e,t,s,n,r,i){let a="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
|
|
646
|
+
`,1)};if(me(e,s)){let c=Rn(e,s);if(c===void 0||c==="")throw new B(1,"","");let f=Le(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
|
|
647
|
+
`,1)}}if(Be(e,s)){if(t.name)return a+=`bash: ${s}: readonly variable
|
|
648
|
+
`,{continueToNext:!0,xtraceOutput:a};let c=ee(e,s);if(c)return{continueToNext:!1,xtraceOutput:"",error:c}}let o=e.state.associativeArrays?.has(s),l=Ka(n),u=()=>{let c=`${s}_`;for(let f of e.state.env.keys())f.startsWith(c)&&!f.includes("__")&&e.state.env.delete(f);e.state.env.delete(s)};if(o&&l?await Xa(e,t,s,n,r,u,c=>{a+=c}):l?await Ya(e,s,n,r,u):await Qa(e,s,n,r,u),t.name){i.set(s,e.state.env.get(s));let f=`(${n.map(d=>kt(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:a}}function Ka(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 Xa(e,t,s,n,r,i,a){let o=[];for(let l of n){let u=fs(l);if(u){let{key:c,valueParts:f,append:d}=u,h;f.length>0?h=await I(e,{type:"Word",parts:f}):h="",h=G(e,h),o.push({type:"keyed",key:c,value:h,append:d})}else{let c=await I(e,l);o.push({type:"invalid",expandedValue:c})}}r||i();for(let l of o)if(l.type==="keyed")if(l.append){let u=e.state.env.get(`${s}_${l.key}`)??"";e.state.env.set(`${s}_${l.key}`,u+l.value)}else e.state.env.set(`${s}_${l.key}`,l.value);else{let u=t.line??e.state.currentLine??1;a(`bash: line ${u}: ${s}: ${l.expandedValue}: must use subscript when assigning associative array
|
|
649
|
+
`)}}async function Ya(e,t,s,n,r){let i=[];for(let o of s){let l=fs(o);if(l){let{key:u,valueParts:c,append:f}=l,d;c.length>0?d=await I(e,{type:"Word",parts:c}):d="",d=G(e,d),i.push({type:"keyed",indexExpr:u,value:d,append:f})}else{let u=await _e(e,o);i.push({type:"non-keyed",values:u.values})}}n||r();let a=0;for(let o of i)if(o.type==="keyed"){let l;try{let u=new V,c=Q(u,o.indexExpr);l=await H(e,c.expression,!1)}catch{if(/^-?\d+$/.test(o.indexExpr))l=Number.parseInt(o.indexExpr,10);else{let u=e.state.env.get(o.indexExpr);l=u?Number.parseInt(u,10):0,Number.isNaN(l)&&(l=0)}}if(o.append){let u=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,u+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 Qa(e,t,s,n,r){let i=[];for(let o of s){let l=await _e(e,o);i.push(...l.values)}let a=0;if(n){let o=$e(e,t);if(o.length>0)a=Math.max(...o.map(([u])=>typeof u=="number"?u: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 Ja(e,t,s,n,r,i,a){let o=s;if(me(e,s)){let f=Le(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: \`${f}': not a valid identifier
|
|
650
|
+
`,1)};o=f}}if(Be(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),u;if(l)u=await ci(e,o,n);else{let f=await eo(e,o,n);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};u=`${o}_${f.index}`}let c=i?(e.state.env.get(u)||"")+r:r;if(t.name)a.set(u,e.state.env.get(u)),e.state.env.set(u,c);else{let f=rt(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(u)||d.set(u,e.state.env.get(u))}e.state.env.set(u,c)}return{continueToNext:!0,xtraceOutput:""}}async function ci(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 eo(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 H(e,a.expression,!1)}catch(i){if(i instanceof Ve){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
|
|
651
|
+
`;if(i.fatal)throw new B(1,"",l);return{index:0,error:P("",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=$e(e,t);if(i.length===0){let o=e.state.currentLine;return{index:0,error:P("",`bash: line ${o}: ${t}[${s}]: bad array subscript
|
|
652
652
|
`,1)}}if(r=Math.max(...i.map(([o])=>typeof o=="number"?o:0))+1+r,r<0){let o=e.state.currentLine;return{index:0,error:P("",`bash: line ${o}: ${t}[${s}]: bad array subscript
|
|
653
|
-
`,1)}}}return{index:r}}async function
|
|
654
|
-
`,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};o=f;let d=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},o=d[1])}if(
|
|
655
|
-
`,{continueToNext:!0,xtraceOutput:a};let f=
|
|
656
|
-
`,1);return
|
|
657
|
-
`).map(
|
|
658
|
-
`));let
|
|
659
|
-
`;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await I(e,f.target),
|
|
660
|
-
`,1)}let u=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await n(f);r+=d.stdout,i+=d.stderr,a=d.exitCode}}catch(f){if(e.state.groupStdin=u,f instanceof
|
|
661
|
-
`,1)}e.state.groupStdin=u;let c=P(r,i,a);return
|
|
662
|
-
`,127)}if(i.startsWith("#!")){let
|
|
663
|
-
`);
|
|
664
|
-
`);throw
|
|
665
|
-
`);let r=0,i=-1,a=!1;for(let u=0;u<t.pipelines.length;u++){let c=t.pipelines[u],f=u>0?t.operators[u-1]:null;if(f==="&&"&&r!==0||f==="||"&&r===0)continue;let d=await this.executePipeline(c);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=u,a=c.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 he(r,s,n);return P(s,n,r)}async executePipeline(t){return
|
|
653
|
+
`,1)}}}return{index:r}}async function to(e,t,s,n,r,i){let a="",o=s,l=null;if(me(e,s)){let f=Ln(e,s,n);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: circular name reference
|
|
654
|
+
`,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};o=f;let d=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},o=d[1])}if(Be(e,o)){if(t.name)return a+=`bash: ${o}: readonly variable
|
|
655
|
+
`,{continueToNext:!0,xtraceOutput:a};let f=ee(e,o);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let u;if(pt(e,o))try{let f=new V;if(r){let h=`(${e.state.env.get(o)||"0"}) + (${n})`,y=Q(f,h);u=String(await H(e,y.expression))}else{let d=Q(f,n);u=String(await H(e,d.expression))}}catch{u="0"}else{let{isArray:f}=await import("./chunks/expansion-JBCP2CHQ.js"),d=f(e,o)?`${o}_0`:o;u=r?(e.state.env.get(d)||"")+n:n}u=ot(e,o,u),a+=await ai(e,o,u);let c=o;if(l)c=await so(e,l);else{let{isArray:f}=await import("./chunks/expansion-JBCP2CHQ.js");f(e,o)&&(c=`${o}_0`)}return t.name?(i.set(c,e.state.env.get(c)),e.state.env.set(c,u)):(e.state.env.set(c,u),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(o)),e.state.tempEnvBindings?.some(f=>f.has(o))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(o))),{continueToNext:!1,xtraceOutput:a}}async function so(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return ci(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let a=new V,o=Q(a,n);i=await H(e,o.expression,!1)}catch{let a=e.state.env.get(n);i=a?Number.parseInt(a,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let a=$e(e,s);a.length>0&&(i=Math.max(...a.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function ui(e,t,s,n){let r=await Ne(e,t.redirections);if(r)return r;let i=new Map(e.state.env),a=e.state.cwd,o={...e.state.options},l=new Map(e.state.functions),u=e.state.localScopes,c=e.state.localVarStack,f=e.state.localVarDepth,d=e.state.fullyUnsetLocals;if(e.state.localScopes=u.map(E=>new Map(E)),c){e.state.localVarStack=new Map;for(let[E,T]of c.entries())e.state.localVarStack.set(E,T.map(k=>({...k})))}f&&(e.state.localVarDepth=new Map(f)),d&&(e.state.fullyUnsetLocals=new Map(d));let h=e.state.loopDepth,y=e.state.parentHasLoopContext;e.state.parentHasLoopContext=h>0,e.state.loopDepth=0;let p=e.state.lastArg,m=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let b=e.state.groupStdin;s&&(e.state.groupStdin=s);let v="",A="",g=0,w=()=>{e.state.env=i,e.state.cwd=a,e.state.options=o,e.state.functions=l,e.state.localScopes=u,e.state.localVarStack=c,e.state.localVarDepth=f,e.state.fullyUnsetLocals=d,e.state.loopDepth=h,e.state.parentHasLoopContext=y,e.state.groupStdin=b,e.state.bashPid=m,e.state.lastArg=p};try{for(let E of t.body){let T=await n(E);v+=T.stdout,A+=T.stderr,g=T.exitCode}}catch(E){if(w(),E instanceof Y)throw E;if(E instanceof Te){v+=E.stdout,A+=E.stderr;let k=P(v,A,0);return Z(e,k,t.redirections)}if(E instanceof fe||E instanceof de){v+=E.stdout,A+=E.stderr;let k=P(v,A,0);return Z(e,k,t.redirections)}if(E instanceof B){v+=E.stdout,A+=E.stderr;let k=P(v,A,E.exitCode);return Z(e,k,t.redirections)}if(E instanceof le){v+=E.stdout,A+=E.stderr;let k=P(v,A,E.exitCode);return Z(e,k,t.redirections)}if(E instanceof he){let k=P(v+E.stdout,A+E.stderr,E.exitCode);return Z(e,k,t.redirections)}let T=P(v,`${A}${ve(E)}
|
|
656
|
+
`,1);return Z(e,T,t.redirections)}w();let $=P(v,A,g);return Z(e,$,t.redirections)}async function fi(e,t,s,n){let r="",i="",a=0,o=await Gt(e,t.redirections);if(o)return o;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,h=await I(e,d.content);d.stripTabs&&(h=h.split(`
|
|
657
|
+
`).map(p=>p.replace(/^\t+/,"")).join(`
|
|
658
|
+
`));let y=f.fd??0;y!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),ae(e),e.state.fileDescriptors.set(y,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await I(e,f.target)}
|
|
659
|
+
`;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await I(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await I(e,f.target);return P("",`bash: ${d}: No such file or directory
|
|
660
|
+
`,1)}let u=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await n(f);r+=d.stdout,i+=d.stderr,a=d.exitCode}}catch(f){if(e.state.groupStdin=u,f instanceof Y)throw f;if(_t(f)||f instanceof he||f instanceof B)throw f.prependOutput(r,i),f;return P(r,`${i}${ve(f)}
|
|
661
|
+
`,1)}e.state.groupStdin=u;let c=P(r,i,a);return Z(e,c,t.redirections)}async function di(e,t,s,n,r){let i;try{i=await e.fs.readFile(t)}catch{return _(`bash: ${t}: No such file or directory
|
|
662
|
+
`,127)}if(i.startsWith("#!")){let m=i.indexOf(`
|
|
663
|
+
`);m!==-1&&(i=i.slice(m+1))}let a=new Map(e.state.env),o=e.state.cwd,l={...e.state.options},u=e.state.loopDepth,c=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,y=e.state.currentSource;e.state.parentHasLoopContext=u>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 m=0;m<s.length&&m<9;m++)e.state.env.set(String(m+1),s[m]);for(let m=s.length+1;m<=9;m++)e.state.env.delete(String(m));let p=()=>{e.state.env=a,e.state.cwd=o,e.state.options=l,e.state.loopDepth=u,e.state.parentHasLoopContext=c,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=y};try{let b=new V().parse(i),v=await r(b);return p(),v}catch(m){if(p(),m instanceof B||m instanceof Y)throw m;if(m.name==="ParseException")return _(`bash: ${t}: ${m.message}
|
|
664
|
+
`);throw m}}var wt=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}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||ge.isInSandboxedContext())return;let s=`interpreter ${t} attempted outside defense context`;throw new Ke(s,{timestamp:Date.now(),type:"missing_defense_context",message:s,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:ge.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&&Ce(`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 we)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:xe(this.ctx.state.env)};if(l instanceof Y)throw l;if(l instanceof he)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:xe(this.ctx.state.env)};if(l instanceof $n)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:xe(this.ctx.state.env)};if(l instanceof Et)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:xe(this.ctx.state.env)};if(l instanceof Ve){a(l.stdout,l.stderr),r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(l instanceof En){a(l.stdout,l.stderr),r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(l instanceof fe||l instanceof de){if(this.ctx.state.loopDepth>0)throw l.prependOutput(s,n),l;a(l.stdout,l.stderr);continue}throw l instanceof le&&l.prependOutput(s,n),l}return{stdout:s,stderr:n,exitCode:r,env:xe(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return di(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new At;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Ce(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new Nt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
|
|
665
|
+
`);let r=0,i=-1,a=!1;for(let u=0;u<t.pipelines.length;u++){let c=t.pipelines[u],f=u>0?t.operators[u-1]:null;if(f==="&&"&&r!==0||f==="||"&&r===0)continue;let d=await this.executePipeline(c);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=u,a=c.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 he(r,s,n);return P(s,n,r)}async executePipeline(t){return oi(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 Xr(this.ctx,t);case"For":return Yr(this.ctx,t);case"CStyleFor":return Qr(this.ctx,t);case"While":return Jr(this.ctx,t,s);case"Until":return ei(this.ctx,t);case"Case":return ti(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return gr(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return L}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(n){if(n instanceof St)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 g=t,w=100;for(;w>0;){let $=this.expandAlias(g);if($===g)break;g=$,w--}this.aliasExpansionStack.clear(),g!==t&&(t=g)}this.ctx.state.expansionStderr="";let n=await li(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 Ne(this.ctx,t.redirections);if(w)return w;let $=P("",i,0);return Z(this.ctx,$,t.redirections)}this.ctx.state.lastArg="";let g=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",P("",g,this.ctx.state.lastExitCode)}let a=t.name&&mn(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 g of o)this.ctx.state.tempExportedVars.add(g)}let l=await Gt(this.ctx,t.redirections);if(l){for(let[g,w]of r)w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w);return l}let u=-1;for(let g of t.redirections){if((g.operator==="<<"||g.operator==="<<-")&&g.target.type==="HereDoc"){let w=g.target,$=await I(this.ctx,w.content);w.stripTabs&&($=$.split(`
|
|
666
666
|
`).map(T=>T.replace(/^\t+/,"")).join(`
|
|
667
|
-
`));let E=g.fd??0;E!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),ae(this.ctx),this.ctx.state.fileDescriptors.set(E
|
|
668
|
-
`;continue}if(g.operator==="<"&&g.target.type==="Word")try{let w=await I(this.ctx,g.target)
|
|
669
|
-
`)}if(g.operator==="<&"&&g.target.type==="Word"){let w=await I(this.ctx,g.target)
|
|
670
|
-
`,127)}if(c==="exec"&&(f.length===0||f[0]==="--")){for(let g of t.redirections){if(g.target.type==="HereDoc"||g.fdVariable)continue;let w=await I(this.ctx,g.target)
|
|
671
|
-
`)}break}case"<>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(E);ae(this.ctx),this.ctx.state.fileDescriptors.set(
|
|
672
|
-
`);return
|
|
673
|
-
`,r);return
|
|
667
|
+
`));let E=g.fd??0;E!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),ae(this.ctx),this.ctx.state.fileDescriptors.set(E,$)):s=$;continue}if(g.operator==="<<<"&&g.target.type==="Word"){s=`${await I(this.ctx,g.target)}
|
|
668
|
+
`;continue}if(g.operator==="<"&&g.target.type==="Word")try{let w=await I(this.ctx,g.target),$=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await this.ctx.fs.readFile($)}catch{let w=await I(this.ctx,g.target);for(let[$,E]of r)E===void 0?this.ctx.state.env.delete($):this.ctx.state.env.set($,E);return _(`bash: ${w}: No such file or directory
|
|
669
|
+
`)}if(g.operator==="<&"&&g.target.type==="Word"){let w=await I(this.ctx,g.target),$=Number.parseInt(w,10);if(!Number.isNaN($)&&this.ctx.state.fileDescriptors){let E=this.ctx.state.fileDescriptors.get($);if(E!==void 0)if(E.startsWith("__rw__:")){let T=si(E);T&&(s=T.content.slice(T.position),u=$)}else E.startsWith("__file__:")||E.startsWith("__file_append__:")||(s=E)}}}let c=await I(this.ctx,t.name),f=[],d=[];if(mn(t.name,["local","declare","typeset","export","readonly"])&&(c==="local"||c==="declare"||c==="typeset"||c==="export"||c==="readonly"))for(let g of t.args){let w=await er(this.ctx,g);if(w)f.push(w),d.push(!0);else{let $=await tr(this.ctx,g);if($!==null)f.push($),d.push(!0);else{let E=await _e(this.ctx,g);for(let T of E.values)f.push(T),d.push(E.quoted)}}}else for(let g of t.args){let w=await _e(this.ctx,g);for(let $ of w.values)f.push($),d.push(w.quoted)}if(!c){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,u)}return P("","",this.ctx.state.lastExitCode)}return _(`bash: : command not found
|
|
670
|
+
`,127)}if(c==="exec"&&(f.length===0||f[0]==="--")){for(let g of t.redirections){if(g.target.type==="HereDoc"||g.fdVariable)continue;let w=await I(this.ctx,g.target),$=g.fd??(g.operator==="<"||g.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),g.operator){case">":case">|":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile(E,"","utf8"),ae(this.ctx),this.ctx.state.fileDescriptors.set($,`__file__:${E}`);break}case">>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);ae(this.ctx),this.ctx.state.fileDescriptors.set($,`__file_append__:${E}`);break}case"<":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(E);ae(this.ctx),this.ctx.state.fileDescriptors.set($,T)}catch{return _(`bash: ${w}: No such file or directory
|
|
671
|
+
`)}break}case"<>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(E);ae(this.ctx),this.ctx.state.fileDescriptors.set($,`__rw__:${E.length}:${E}:0:${T}`)}catch{await this.ctx.fs.writeFile(E,"","utf8"),ae(this.ctx),this.ctx.state.fileDescriptors.set($,`__rw__:${E.length}:${E}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete($);else if(w.endsWith("-")){let E=w.slice(0,-1),T=Number.parseInt(E,10);if(!Number.isNaN(T)){let k=this.ctx.state.fileDescriptors.get(T);k!==void 0?this.ctx.state.fileDescriptors.set($,k):this.ctx.state.fileDescriptors.set($,`__dupout__:${T}`),this.ctx.state.fileDescriptors.delete(T)}}else{let E=Number.parseInt(w,10);Number.isNaN(E)||(ae(this.ctx),this.ctx.state.fileDescriptors.set($,`__dupout__:${E}`))}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete($);else if(w.endsWith("-")){let E=w.slice(0,-1),T=Number.parseInt(E,10);if(!Number.isNaN(T)){let k=this.ctx.state.fileDescriptors.get(T);k!==void 0?this.ctx.state.fileDescriptors.set($,k):this.ctx.state.fileDescriptors.set($,`__dupin__:${T}`),this.ctx.state.fileDescriptors.delete(T)}}else{let E=Number.parseInt(w,10);Number.isNaN(E)||(ae(this.ctx),this.ctx.state.fileDescriptors.set($,`__dupin__:${E}`))}break}}}for(let[g,w]of r)w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w);if(this.ctx.state.tempExportedVars)for(let g of r.keys())this.ctx.state.tempExportedVars.delete(g);return L}let y=await ii(this.ctx,c,f);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let p,m=null;try{p=await this.runCommand(c,f,d,s,!1,!1,u)}catch(g){if(g instanceof fe||g instanceof de)m=g,p=L;else throw g}let b=i+y;if(b&&(p={...p,stderr:b+p.stderr}),p=await Z(this.ctx,p,t.redirections),m)throw m;if(f.length>0){let g=f[f.length-1];if((c==="declare"||c==="local"||c==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(g)){let w=g.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(g=w[1])}this.ctx.state.lastArg=g}else this.ctx.state.lastArg=c;let v=mr(c)&&c!=="unset"&&c!=="eval";if(!this.ctx.state.options.posix||!v)for(let[g,w]of r)this.ctx.state.fullyUnsetLocals?.has(g)||(w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w));if(this.ctx.state.tempExportedVars)for(let g of r.keys())this.ctx.state.tempExportedVars.delete(g);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:(c,f,d,h,y,p,m)=>this.runCommand(c,f,d,h,y,p,m),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(c,f,d)=>this.executeUserScript(c,f,d)},u=await Gr(l,t,s,n,r,i,a,o);return u!==null?u:Kr(l,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return Ss(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return ts(this.ctx,t)}async executeSubshell(t,s=""){return ui(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return fi(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Ne(this.ctx,t.redirections);if(s)return s;try{let n=await H(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=""),Z(this.ctx,r,t.redirections)}catch(n){let r=_(`bash: arithmetic expression: ${n.message}
|
|
672
|
+
`);return Z(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Ne(this.ctx,t.redirections);if(s)return s;try{let n=await Me(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=""),Z(this.ctx,r,t.redirections)}catch(n){let r=n instanceof Ve?1:2,i=_(`bash: conditional expression: ${n.message}
|
|
673
|
+
`,r);return Z(this.ctx,i,t.redirections)}}};var ne={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50,maxBraceExpansionResults:1e4,maxOutputSize:10485760,maxFileDescriptors:1024,maxSourceDepth:100};function hi(e){return e?{maxCallDepth:e.maxCallDepth??ne.maxCallDepth,maxCommandCount:e.maxCommandCount??ne.maxCommandCount,maxLoopIterations:e.maxLoopIterations??ne.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??ne.maxAwkIterations,maxSedIterations:e.maxSedIterations??ne.maxSedIterations,maxJqIterations:e.maxJqIterations??ne.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??ne.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??ne.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??ne.maxGlobOperations,maxStringLength:e.maxStringLength??ne.maxStringLength,maxArrayElements:e.maxArrayElements??ne.maxArrayElements,maxHeredocSize:e.maxHeredocSize??ne.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??ne.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??ne.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??ne.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??ne.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??ne.maxSourceDepth}:{...ne}}function yn(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function no(e){let t=yn(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function ro(e,t){let s=yn(e);if(!s)return!1;let n=no(t);return!n||s.origin!==n.origin?!1:n.pathPrefix==="/"||n.pathPrefix===""?!0:s.pathname.startsWith(n.pathPrefix)}function pi(e,t){return!t||t.length===0?!1:t.some(s=>ro(e,s))}function mi(e){let t=io(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=yi(t);if(s)return gi(s);let n=oo(t);return n?lo(n):!1}function io(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function ao(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 yi(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>ao(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,u]=n;return l>255||u>16777215?null:[l,u>>>16&255,u>>>8&255,u&255]}if(t.length===3){let[l,u,c]=n;return l>255||u>255||c>65535?null:[l,u,c>>>8&255,c&255]}let[r,i,a,o]=n;return r>255||i>255||a>255||o>255?null:[r,i,a,o]}function oo(e){let t=e,s=null;if(t.includes(".")){let p=t.lastIndexOf(":");if(p<0)return null;let m=t.slice(p+1),b=yi(m);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,u=a.map(l),c=o.map(l);if(u.some(p=>p===null)||c.some(p=>p===null))return null;let f=s?2:0,d=u.length+c.length+f,h=0;if(n===1){if(h=8-d,h<0)return null}else if(d!==8)return null;let y=[...u,...new Array(h).fill(0),...c];return s&&(y.push(s[0]<<8|s[1]),y.push(s[2]<<8|s[3])),y.length===8?y:null}function gi(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}function lo(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 gi(r)}return!1}function wi(e){let t=[];for(let s of e){if(!yn(s)){t.push(`Invalid URL in allow-list: "${s}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let r=new URL(s);if(r.protocol!=="http:"&&r.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${s}"`);continue}if(!r.hostname){t.push(`Allow-list entry must include a hostname: "${s}"`);continue}(r.search||r.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${s}"`)}return t}var Ue=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},vt=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},bt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},ns=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}},$t=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var co=20,uo=3e4,fo=10485760,ho=["GET","HEAD"],po=new Set(["GET","HEAD","OPTIONS"]),mo=new Set([301,302,303,307,308]);function gn(e){if(!e.dangerouslyAllowFullInternetAccess){let u=wi(e.allowedUrlPrefixes??[]);if(u.length>0)throw new Error(`Invalid network allow-list:
|
|
674
674
|
${u.join(`
|
|
675
|
-
`)}`)}let t=e.maxRedirects??
|
|
676
|
-
`)}function
|
|
677
|
-
${r}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${oe(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${oe(e.target)}`:`${t}${e.operator} ${oe(e.target)}`}function
|
|
678
|
-
`)}function
|
|
675
|
+
`)}`)}let t=e.maxRedirects??co,s=e.timeoutMs??uo,n=e.maxResponseSize??fo,r=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??ho,i=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production");function a(u){if(!e.dangerouslyAllowFullInternetAccess){if(i)try{let c=new URL(u);if(mi(c.hostname))throw new Ue(u)}catch(c){if(c instanceof Ue)throw c}if(!pi(u,e.allowedUrlPrefixes??[]))throw new Ue(u)}}function o(u){if(e.dangerouslyAllowFullInternetAccess)return;let c=u.toUpperCase();if(!r.includes(c))throw new ns(c,r)}async function l(u,c={}){let f=c.method?.toUpperCase()??"GET";a(u),o(f);let d=u,h=0,y=c.followRedirects??!0,p=c.timeoutMs!==void 0?Math.min(c.timeoutMs,s):s;for(;;){let m=new AbortController,b=vn(()=>m.abort(),p);try{let v={method:f,headers:c.headers,signal:m.signal,redirect:"manual"};c.body&&!po.has(f)&&(v.body=c.body);let A=await ge.runTrustedAsync(()=>fetch(d,v));if(mo.has(A.status)&&y){let g=A.headers.get("location");if(!g)return await vi(A,d,n);let w=new URL(g,d).href;try{a(w)}catch{throw new bt(w)}if(h++,h>t)throw new vt(t);d=w;continue}return await vi(A,d,n)}finally{bn(b)}}}return l}async function vi(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 $t(s)}}let r;if(s>0&&e.body){let i=e.body.getReader(),a=new TextDecoder,o=[],l=0;for(;;){let{done:u,value:c}=await i.read();if(u)break;if(l+=c.byteLength,l>s)throw i.cancel(),new $t(s);o.push(a.decode(c,{stream:!0}))}o.push(a.decode()),r=o.join("")}else r=await e.text();return{status:e.status,statusText:e.statusText,headers:n,body:r,url:t}}function bi(e){return qe(e)}function qe(e){return e.statements.map($i).join(`
|
|
676
|
+
`)}function $i(e){let t=[];for(let n=0;n<e.pipelines.length;n++)t.push(yo(e.pipelines[n])),n<e.operators.length&&t.push(e.operators[n]);let s=t.join(" ");return e.background&&(s+=" &"),s}function yo(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(Ei(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 Ei(e){switch(e.type){case"SimpleCommand":return go(e);case"If":return Co(e);case"For":return Po(e);case"CStyleFor":return No(e);case"While":return ko(e);case"Until":return Oo(e);case"Case":return Do(e);case"Subshell":return Io(e);case"Group":return xo(e);case"ArithmeticCommand":return Ro(e);case"ConditionalCommand":return Lo(e);case"FunctionDef":return Fo(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function go(e){let t=[];for(let s of e.assignments)t.push(wo(s));e.name&&t.push(oe(e.name));for(let s of e.args)t.push(oe(s));for(let s of e.redirections)t.push(_i(s));return t.join(" ")}function wo(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(oe).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${oe(e.value)}`:`${e.name}${t}`}function oe(e){return e.parts.map(t=>rs(t,!1)).join("")}function ze(e){return e.parts.map(t=>rs(t,!0)).join("")}function rs(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=>rs(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Si(e);case"CommandSubstitution":return e.legacy?`\`${qe(e.body)}\``:`$(${qe(e.body)})`;case"ArithmeticExpansion":return`$((${j(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${qe(e.body)})`:`>(${qe(e.body)})`;case"BraceExpansion":return Ao(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 $o(e,t){return e.parts.map(s=>Eo(s,t)).join("")}function Eo(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Si(e);case"CommandSubstitution":return e.legacy?`\`${qe(e.body)}\``:`$(${qe(e.body)})`;case"ArithmeticExpansion":return`$((${j(e.expression.expression)}))`;default:return rs(e,!1)}}function Si(e){return e.operation?`\${${Ai(e.parameter,e.operation)}}`:So(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function So(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Ai(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${ze(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${ze(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?ze(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${ze(t.word)}`;case"Substring":{let s=j(t.offset.expression);return t.length?`${e}:${s}:${j(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",n=t.greedy?`${s}${s}`:s;return`${e}${n}${ze(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let n=t.replacement?`/${ze(t.replacement)}`:"";return`${e}${s}${ze(t.pattern)}${n}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",n=t.all?`${s}${s}`:s,r=t.pattern?ze(t.pattern):"";return`${e}${n}${r}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Ai(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 Ao(e){return`{${e.items.map(_o).join(",")}}`}function _o(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 _i(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=$o(s.content,s.quoted);return`${t}${e.operator}${n}
|
|
677
|
+
${r}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${oe(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${oe(e.target)}`:`${t}${e.operator} ${oe(e.target)}`}function Se(e){return e.length===0?"":` ${e.map(_i).join(" ")}`}function ye(e){return e.map($i).join(`
|
|
678
|
+
`)}function Co(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} ${ye(n.condition)}; then
|
|
679
679
|
${ye(n.body)}`)}return e.elseBody&&t.push(`else
|
|
680
680
|
${ye(e.elseBody)}`),`${t.join(`
|
|
681
681
|
`)}
|
|
682
|
-
fi${
|
|
682
|
+
fi${Se(e.redirections)}`}function Po(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(oe).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
|
|
683
683
|
${ye(e.body)}
|
|
684
|
-
done${
|
|
684
|
+
done${Se(e.redirections)}`}function No(e){let t=e.init?j(e.init.expression):"",s=e.condition?j(e.condition.expression):"",n=e.update?j(e.update.expression):"";return`for ((${t}; ${s}; ${n})); do
|
|
685
685
|
${ye(e.body)}
|
|
686
|
-
done${
|
|
686
|
+
done${Se(e.redirections)}`}function ko(e){return`while ${ye(e.condition)}; do
|
|
687
687
|
${ye(e.body)}
|
|
688
|
-
done${
|
|
688
|
+
done${Se(e.redirections)}`}function Oo(e){return`until ${ye(e.condition)}; do
|
|
689
689
|
${ye(e.body)}
|
|
690
|
-
done${
|
|
690
|
+
done${Se(e.redirections)}`}function Do(e){let t=e.items.map(To).join(`
|
|
691
691
|
`);return`case ${oe(e.word)} in
|
|
692
692
|
${t}
|
|
693
|
-
esac${
|
|
693
|
+
esac${Se(e.redirections)}`}function To(e){let t=e.patterns.map(oe).join(" | "),s=ye(e.body);return s?`${t})
|
|
694
694
|
${s}
|
|
695
695
|
${e.terminator}`:`${t})
|
|
696
|
-
${e.terminator}`}function
|
|
697
|
-
`],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=
|
|
696
|
+
${e.terminator}`}function Io(e){return`(${ye(e.body)})${Se(e.redirections)}`}function xo(e){return`{ ${ye(e.body)}; }${Se(e.redirections)}`}function Ro(e){return`((${j(e.expression.expression)}))${Se(e.redirections)}`}function Lo(e){return`[[ ${Ze(e.expression)} ]]${Se(e.redirections)}`}function Fo(e){let t=Ei(e.body);return`${e.name}() ${t}${Se(e.redirections)}`}function j(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${j(e.left)} ${e.operator} ${j(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${j(e.operand)}`:`${j(e.operand)}${e.operator}`;case"ArithTernary":return`${j(e.condition)} ? ${j(e.consequent)} : ${j(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${j(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${j(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${j(e.target)}[${j(e.subscript)}]`:j(e.target)} ${e.operator} ${j(e.value)}`;case"ArithDynamicElement":return`${j(e.nameExpr)}[${j(e.subscript)}]`;case"ArithGroup":return`(${j(e.expression)})`;case"ArithNested":return`$((${j(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${j(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(j).join("");case"ArithDoubleSubscript":return`${e.array}[${j(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Ze(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`! ${Ze(e.operand)}`;case"CondAnd":return`${Ze(e.left)} && ${Ze(e.right)}`;case"CondOr":return`${Ze(e.left)} || ${Ze(e.right)}`;case"CondGroup":return`( ${Ze(e.expression)} )`;case"CondWord":return oe(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var is=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;transformPlugins=[];state;constructor(t={}){let s=t.fs??new ft(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
|
|
697
|
+
`],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=hi({...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=gn(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",bs(this.state.options)),this.state.env.set("BASHOPTS",$s(this.state.shoptOptions)),Gn(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),n!=="/"&&s instanceof ft)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of Hn(t.commands))this.registerCommand(i);if(t.fetch||t.network)for(let i of jn())this.registerCommand(i);if(t.python)for(let i of Un())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)Zn(i)?this.registerCommand(qn(i)):this.registerCommand({...i,trusted:i.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
|
|
698
698
|
# Built-in command: ${t.name}
|
|
699
|
-
`;try{s.writeFileSync(`/bin/${t.name}`,n)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,n)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=
|
|
700
|
-
`,exitCode:1,env:pe(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:pe(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:s?.stdin,signal:s?.signal},l=t;s?.rawScript||(l=
|
|
699
|
+
`;try{s.writeFileSync(`/bin/${t.name}`,n)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,n)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=Pi(t.stdout),t.stderr=Pi(t.stderr),t}async exec(t,s){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
|
|
700
|
+
`,exitCode:1,env:pe(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:pe(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:s?.stdin,signal:s?.signal},l=t;s?.rawScript||(l=Ci(t));let u=this.defenseInDepthConfig?ge.getInstance(this.defenseInDepthConfig):null,c=u?.activate();try{let f=async()=>{let d=be(l,{maxHeredocSize:this.limits.maxHeredocSize}),h;if(this.transformPlugins.length>0){let v=Object.create(null);for(let A of this.transformPlugins){let g=A.transform({ast:d,metadata:v});d=g.ast,g.metadata&&(v=os(v,g.metadata))}h=v}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:u?.isEnabled()===!0},b=await new wt(y,o).executeScript(d);return h&&(b.metadata=h),this.logResult(b)};return c?await c.run(f):await f()}catch(f){if(f instanceof B)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:pe(this.state.env,s?.env)});if(f instanceof we)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:pe(this.state.env,s?.env)});if(f instanceof Ve)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:pe(this.state.env,s?.env)});if(f instanceof At)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:pe(this.state.env,s?.env)});if(f instanceof Y)return this.logResult({stdout:f.stdout,stderr:Ie(f.stderr),exitCode:Y.EXIT_CODE,env:pe(this.state.env,s?.env)});if(f instanceof Ke)return this.logResult({stdout:"",stderr:`bash: security violation: ${Ie(f.message)}
|
|
701
701
|
`,exitCode:1,env:pe(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${Ie(f.message)}
|
|
702
|
-
`,exitCode:2,env:pe(this.state.env,s?.env)});if(f instanceof
|
|
702
|
+
`,exitCode:2,env:pe(this.state.env,s?.env)});if(f instanceof On)return this.logResult({stdout:"",stderr:`bash: ${Ie(f.message)}
|
|
703
703
|
`,exitCode:2,env:pe(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${Ie(f.message)}
|
|
704
|
-
`,exitCode:1,env:pe(this.state.env,s?.env)});throw f}finally{c?.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
|
|
704
|
+
`,exitCode:1,env:pe(this.state.env,s?.env)});throw f}finally{c?.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 xe(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=Ci(t),n=be(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=os(r,a.metadata))}return{script:bi(n),ast:n,metadata:r}}};function Ci(e){let t=e.split(`
|
|
705
705
|
`),s=[],n=[];for(let r=0;r<t.length;r++){let i=t[r];if(n.length>0){let l=n[n.length-1];if((l.stripTabs?i.replace(/^\t+/,""):i)===l.delimiter){s.push(i.trimStart()),n.pop();continue}s.push(i);continue}let a=i.trimStart();s.push(a);let o=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let l of a.matchAll(o)){let u=l[1]==="-",c=l[3];n.push({delimiter:c,stripTabs:u})}}return s.join(`
|
|
706
|
-
`)}var So=new TextDecoder("utf-8",{fatal:!0});function pi(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 So.decode(s)}catch{return e}}import*as j from"node:fs";import*as ie from"node:path";var Ao="/home/user/project",Yt=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=ie.resolve(t.root);let s=t.mountPoint??Ao;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,mn(this.root,"OverlayFs"),this.canonicalRoot=j.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=H(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=H(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=H(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=ie.join(this.root,n),i=ie.resolve(r);return Jt(i,this.root)?i:null}dirname(t){let s=H(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}resolveRealPath_(t){return t?this.allowSymlinks?hn(t,this.canonicalRoot):pn(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){let r=t;if(r.path===void 0&&(r.message?.includes("ELOOP")||r.message?.includes("EFBIG")||r.message?.includes("EPERM")))throw t;let i=r.code||"EIO";throw new Error(`${i}: ${n} '${s}'`)}ensureParentDirs(t){let s=this.dirname(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=H(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 j.promises.lstat(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=Le(s);return At(n,r)}async readFileBuffer(t,s=new Set){Q(t,"open");let n=H(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 j.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let u=await j.promises.readlink(i),c=this.realTargetToVirtual(n,u),f=this.resolveSymlink(n,c);return this.readFileBuffer(f,s)}if(a.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&a.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?j.constants.O_RDONLY:j.constants.O_RDONLY|j.constants.O_NOFOLLOW,l=await j.promises.open(i,o);try{let u=await l.readFile();return new Uint8Array(u)}finally{await l.close()}}catch(a){let o=a.code;if(o==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(o==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${t}'`);this.sanitizeError(a,t,"open")}}async writeFile(t,s,n){Q(t,"write"),this.assertWritable(`write '${t}'`);let r=H(t);this.ensureParentDirs(r);let i=Le(n),a=Ke(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){Q(t,"append"),this.assertWritable(`append '${t}'`);let r=H(t),i=Le(n),a=Ke(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){Q(t,"stat");let n=H(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 j.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let o=await j.promises.readlink(i),l=this.realTargetToVirtual(n,o),u=this.resolveSymlink(n,l);return this.stat(u,s)}return{isFile:a.isFile(),isDirectory:a.isDirectory(),isSymbolicLink:!1,mode:a.mode,size:a.size,mtime:a.mtime}}catch(a){if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(a,t,"stat")}}async lstat(t){Q(t,"lstat");let s=H(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 j.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){if(s.startsWith("/"))return H(s);let n=this.dirname(t);return H(n==="/"?`/${s}`:`${n}/${s}`)}realTargetToVirtual(t,s){let n=yn(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){Q(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let n=H(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let o of this.deleted)if(o.startsWith(i)){let l=o.slice(i.length),u=l.split("/")[0];u&&!l.includes("/",u.length)&&r.add(u)}for(let[o,l]of this.memory)if(o!==s&&o.startsWith(i)){let u=o.slice(i.length),c=u.split("/")[0];c&&!r.has(c)&&!u.includes("/",1)&&n.set(c,{name:c,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let a=this.resolveRealPath_(this.toRealPath(s));if(a)try{if(!this.allowSymlinks&&(await j.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 j.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=H(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 j.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:n,outsideOverlay:!0};let c=await j.promises.readlink(l),f=this.realTargetToVirtual(n,c),d=this.resolveSymlink(n,f);return this.resolveForReaddir(d,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){Q(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){Q(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){Q(t,"rm"),this.assertWritable(`rm '${t}'`);let n=H(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.deleted.add(n),this.memory.delete(n)}async cp(t,s,n){Q(t,"cp"),Q(s,"cp"),this.assertWritable(`cp '${s}'`);let r=H(t),i=H(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let o=await this.stat(r);if(o.isFile){let l=await this.readFileBuffer(r);await this.writeFile(i,l)}else if(o.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(r);for(let u of l){let c=r==="/"?`/${u}`:`${r}/${u}`,f=i==="/"?`/${u}`:`${i}/${u}`;await this.cp(c,f,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return H(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return H(n)}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=j.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);j.lstatSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){Q(t,"chmod"),this.assertWritable(`chmod '${t}'`);let n=H(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}'`);Q(s,"symlink"),this.assertWritable(`symlink '${s}'`);let n=H(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){Q(t,"link"),Q(s,"link"),this.assertWritable(`link '${s}'`);let n=H(t),r=H(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){Q(t,"readlink");let s=H(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 j.promises.readlink(r);if(!ie.isAbsolute(i)){let a=ie.resolve(ie.dirname(r),i),o;try{o=j.realpathSync(a)}catch{o=a}if(!Jt(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){Q(t,"realpath");let s=H(t),n=new Set,r=async o=>{let l=o==="/"?[]:o.slice(1).split("/"),u="";for(let c of l){if(u=`${u}/${c}`,n.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(u))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(u),d=0,p=40;for(;f&&f.type==="symlink"&&d<p;){if(n.add(u),u=this.resolveSymlink(u,f.target),d++,n.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(u))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(u)}if(d>=p)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let m=this.toRealPath(u),h=this.resolveRealPath_(m);if(h)try{if((await j.promises.lstat(h)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let $=await j.promises.readlink(h),v=this.realTargetToVirtual(u,$);return n.add(u),u=this.resolveSymlink(u,v),r(u)}}catch(y){if(y.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(y,t,"realpath")}else if(!this.allowSymlinks){let y=this.resolveRealPathParent_(m);if(y)try{if((await j.promises.lstat(y)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch($){if($.message?.includes("ENOENT")||$.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError($,t,"realpath")}}}}return u||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){Q(t,"utimes"),this.assertWritable(`utimes '${t}'`);let r=H(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 ee={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 Yt({root:s,mountPoint:"/"});this.env=new Xt({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=yi.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
|
|
706
|
+
`)}var Mo=new TextDecoder("utf-8",{fatal:!0});function Pi(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 Mo.decode(s)}catch{return e}}import*as U from"node:fs";import*as ie from"node:path";var Wo=["ELOOP","EFBIG","EPERM"],zo="/home/user/project",as=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??zo;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,Cn(this.root,"OverlayFs"),this.canonicalRoot=U.realpathSync(this.root),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let n of t)s+=`/${n}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let r=M(t).split("/").filter(Boolean),i="";for(let a of r)i+=`/${a}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=M(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=M(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=ie.join(this.root,n),i=ie.resolve(r);return cs(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?An(t,this.canonicalRoot):_n(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){Nn(t,s,n,Wo)}ensureParentDirs(t){let s=Xe(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=M(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)return!1;try{return await U.promises.lstat(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=Fe(s);return Tt(n,r)}async readFileBuffer(t,s=new Set){W(t,"open");let n=M(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.readFileBuffer(a,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.resolveRealPath_(this.toRealPath(n));if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let a=await U.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let u=await U.promises.readlink(i),c=this.realTargetToVirtual(n,u),f=this.resolveSymlink(n,c);return this.readFileBuffer(f,s)}if(a.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&a.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?U.constants.O_RDONLY:U.constants.O_RDONLY|U.constants.O_NOFOLLOW,l=await U.promises.open(i,o);try{let u=await l.readFile();return new Uint8Array(u)}finally{await l.close()}}catch(a){let o=a.code;if(o==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(o==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${t}'`);this.sanitizeError(a,t,"open")}}async writeFile(t,s,n){W(t,"write"),this.assertWritable(`write '${t}'`);let r=M(t);this.ensureParentDirs(r);let i=Fe(n),a=Je(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){W(t,"append"),this.assertWritable(`append '${t}'`);let r=M(t),i=Fe(n),a=Je(s,i),o;try{o=await this.readFileBuffer(r)}catch{o=new Uint8Array(0)}let l=new Uint8Array(o.length+a.length);l.set(o),l.set(a,o.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){W(t,"stat");let n=M(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.stat(o,s)}let a=0;return r.type==="file"&&(a=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:a,mtime:r.mtime}}let i=this.resolveRealPath_(this.toRealPath(n));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let a=await U.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let o=await U.promises.readlink(i),l=this.realTargetToVirtual(n,o),u=this.resolveSymlink(n,l);return this.stat(u,s)}return{isFile:a.isFile(),isDirectory:a.isDirectory(),isSymbolicLink:!1,mode:a.mode,size:a.size,mtime:a.mtime}}catch(a){if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(a,t,"stat")}}async lstat(t){W(t,"lstat");let s=M(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await U.promises.lstat(r);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}resolveSymlink(t,s){return Ye(t,s)}realTargetToVirtual(t,s){let n=Pn(s,this.canonicalRoot);if(n.withinRoot){if(!ie.isAbsolute(s))return s;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,s){W(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let n=M(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=Xe(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let o of this.deleted)if(o.startsWith(i)){let l=o.slice(i.length),u=l.split("/")[0];u&&!l.includes("/",u.length)&&r.add(u)}for(let[o,l]of this.memory)if(o!==s&&o.startsWith(i)){let u=o.slice(i.length),c=u.split("/")[0];c&&!r.has(c)&&!u.includes("/",1)&&n.set(c,{name:c,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let a=this.resolveRealPath_(this.toRealPath(s));if(a)try{if(!this.allowSymlinks&&(await U.promises.lstat(a)).isSymbolicLink()){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);return n}let o=await U.promises.readdir(a,{withFileTypes:!0});for(let l of o)!r.has(l.name)&&!n.has(l.name)&&n.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(o){if(o.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else o.code!=="ENOTDIR"&&this.sanitizeError(o,t,"scandir")}return n}async resolveForReaddir(t,s=!1){let n=M(t),r=new Set,i=s,a=this.memory.get(n);for(;a&&a.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,a.target),a=this.memory.get(n)}if(a)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let l=this.resolveRealPath_(this.toRealPath(n));if(!l)return{normalized:n,outsideOverlay:!0};try{if((await U.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:n,outsideOverlay:!0};let c=await U.promises.readlink(l),f=this.realTargetToVirtual(n,c),d=this.resolveSymlink(n,f);return this.resolveForReaddir(d,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){W(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,a)=>i<a?-1:i>a?1:0)}async readdirWithFileTypes(t){W(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,a)=>i.name<a.name?-1:i.name>a.name?1:0)}async rm(t,s){W(t,"rm"),this.assertWritable(`rm '${t}'`);let n=M(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let a=await this.readdir(n);if(a.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of a){let l=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(l,s)}}}}catch(i){if(i instanceof Error&&(i.message.includes("ENOTEMPTY")||i.message.includes("EISDIR")))throw i}this.memory.delete(n),this.existsOnRealFs(n)&&this.deleted.add(n)}existsOnRealFs(t){let s=this.toRealPath(t),n=this.resolveRealPathParent_(s);if(!n)return!1;try{return U.lstatSync(n),!0}catch{return!1}}async cp(t,s,n){W(t,"cp"),W(s,"cp"),this.assertWritable(`cp '${s}'`);let r=M(t),i=M(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let o=await this.stat(r);if(o.isFile){let l=await this.readFileBuffer(r);await this.writeFile(i,l)}else if(o.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(r);for(let u of l){let c=r==="/"?`/${u}`:`${r}/${u}`,f=i==="/"?`/${u}`:`${i}/${u}`;await this.cp(c,f,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){return Ct(t,s)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let n=this.resolveRealPath_(this.toRealPath(t));if(n)try{let r=U.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(a))continue;s.add(a);let o=ie.join(n,i);U.lstatSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){W(t,"chmod"),this.assertWritable(`chmod '${t}'`);let n=M(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let a=await this.stat(n);if(a.isFile){let o=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:o,mode:s,mtime:new Date})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);W(s,"symlink"),this.assertWritable(`symlink '${s}'`);let n=M(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){W(t,"link"),W(s,"link"),this.assertWritable(`link '${s}'`);let n=M(t),r=M(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let a=await this.stat(n);if(!a.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:a.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){W(t,"readlink");let s=M(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await U.promises.readlink(r);if(!ie.isAbsolute(i)){let a=ie.resolve(ie.dirname(r),i),o;try{o=U.realpathSync(a)}catch{o=a}if(!cs(o,this.canonicalRoot))return ie.basename(i)}return this.realTargetToVirtual(s,i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){W(t,"realpath");let s=M(t),n=new Set,r=async o=>{let l=o==="/"?[]:o.slice(1).split("/"),u="";for(let c of l){if(u=`${u}/${c}`,n.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(u))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(u),d=0,h=40;for(;f&&f.type==="symlink"&&d<h;){if(n.add(u),u=this.resolveSymlink(u,f.target),d++,n.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(u))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(u)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let y=this.toRealPath(u),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),v=this.realTargetToVirtual(u,b);return n.add(u),u=this.resolveSymlink(u,v),r(u)}}catch(m){if(m.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(m,t,"realpath")}else if(!this.allowSymlinks){let m=this.resolveRealPathParent_(y);if(m)try{if((await U.promises.lstat(m)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(b){if(b.message?.includes("ENOENT")||b.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(b,t,"realpath")}}}}return u||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){W(t,"utimes"),this.assertWritable(`utimes '${t}'`);let r=M(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let a=this.memory.get(r);if(a){a.mtime=n;return}let o=await this.stat(r);if(o.isFile){let l=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:l,mode:o.mode,mtime:n})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:o.mode,mtime:n})}};var te={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"},wn=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new as({root:s,mountPoint:"/"});this.env=new is({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=ki.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
|
|
707
707
|
`),this.prompt()}),process.stdin.isTTY&&this.rl.on("close",()=>{this.running=!1,console.log(`
|
|
708
|
-
Goodbye!`),process.exit(0)})}syncHistory(){let t=this.env.getEnv();t.BASH_HISTORY=JSON.stringify(this.history)}getPrompt(){let t=this.env.getCwd(),s=this.env.getEnv().HOME||"/home/user",n=t;return t===s?n="~":t.startsWith(`${s}/`)&&(n=`~${t.slice(s.length)}`),`${
|
|
709
|
-
${
|
|
708
|
+
Goodbye!`),process.exit(0)})}syncHistory(){let t=this.env.getEnv();t.BASH_HISTORY=JSON.stringify(this.history)}getPrompt(){let t=this.env.getCwd(),s=this.env.getEnv().HOME||"/home/user",n=t;return t===s?n="~":t.startsWith(`${s}/`)&&(n=`~${t.slice(s.length)}`),`${te.green}${te.bold}user@virtual${te.reset}:${te.blue}${te.bold}${n}${te.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(`${te.red}${n.stderr}${te.reset}`)}catch(n){console.error(`${te.red}Error: ${ve(n)}${te.reset}`)}}}printWelcome(){console.log(`
|
|
709
|
+
${te.cyan}${te.bold}\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
|
|
710
710
|
\u2551 Virtual Shell v1.0 \u2551
|
|
711
711
|
\u2551 A simulated bash environment in TypeScript \u2551
|
|
712
|
-
\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D${
|
|
712
|
+
\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D${te.reset}
|
|
713
713
|
|
|
714
|
-
${
|
|
714
|
+
${te.dim}Exploring: ${process.cwd()}${te.reset}
|
|
715
715
|
|
|
716
|
-
Type ${
|
|
716
|
+
Type ${te.green}help${te.reset} for available commands, ${te.green}exit${te.reset} to quit.
|
|
717
717
|
Reads from real filesystem, writes stay in memory (OverlayFs).
|
|
718
|
-
`)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function
|
|
718
|
+
`)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function Vo(){let e=process.argv.slice(2),t={};for(let s=0;s<e.length;s++)if(e[s]==="--cwd"&&e[s+1])t.cwd=e[++s];else if(e[s]==="--files"&&e[s+1]){let n=e[++s];try{let r=Ni.readFileSync(n,"utf-8");t.files=JSON.parse(r)}catch(r){console.error(`Error reading files from ${n}:`,r),process.exit(1)}}else e[s]==="--network"?t.network=!0:e[s]==="--no-network"?t.network=!1:(e[s]==="--help"||e[s]==="-h")&&(console.log(`
|
|
719
719
|
Usage: pnpm shell [options]
|
|
720
720
|
|
|
721
721
|
Interactive shell using OverlayFs - reads from the current directory,
|
|
@@ -730,4 +730,4 @@ Options:
|
|
|
730
730
|
Example:
|
|
731
731
|
pnpm shell
|
|
732
732
|
pnpm shell --network
|
|
733
|
-
`),process.exit(0));return t}var
|
|
733
|
+
`),process.exit(0));return t}var Bo=Vo(),Ho=new wn(Bo);Ho.run();
|