just-bash 2.12.7 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -3
- package/dist/AGENTS.md +1 -1
- package/dist/Bash.d.ts +17 -0
- package/dist/bin/chunks/{awk2-EB5SCHVW.js → awk2-VTJMI54B.js} +1 -1
- package/dist/bin/chunks/chunk-3YMCKZTY.js +14 -0
- package/dist/bin/chunks/{chunk-O5B6WWQQ.js → chunk-A3HQTYHR.js} +1 -1
- package/dist/bin/chunks/chunk-AAW7UMPO.js +9 -0
- package/dist/bin/chunks/{chunk-ROMKUVHI.js → chunk-AXWFPG37.js} +1 -1
- package/dist/bin/chunks/{chunk-BBRVF6XE.js → chunk-B3RU2PUI.js} +27 -27
- package/dist/bin/chunks/chunk-CQG2HEAL.js +5 -0
- package/dist/bin/chunks/chunk-DOXYBGNA.js +12 -0
- package/dist/bin/chunks/{chunk-PIBXJ3VX.js → chunk-GR23MPTT.js} +1 -1
- package/dist/bin/chunks/{chunk-35JD7YEM.js → chunk-HJEHIH4P.js} +13 -13
- package/dist/bin/chunks/{chunk-ZNPXCE5B.js → chunk-LGF54XJQ.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-5MUD3WB2.js → chunks/chunk-MO4RPBN2.js} +1 -1
- package/dist/bin/chunks/chunk-N6KA6G3Q.js +11 -0
- package/dist/bin/{shell/chunks/chunk-JX6YLHDX.js → chunks/chunk-OOJCYVYF.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-2BC3N3L2.js → chunks/chunk-ORUYSLP4.js} +4 -4
- package/dist/bin/{shell/chunks/chunk-OLN6BSO3.js → chunks/chunk-SDLWFYVT.js} +2 -2
- package/dist/bin/chunks/{chunk-STOAUD75.js → chunk-THNL3XFF.js} +8 -8
- package/dist/bin/chunks/{chunk-DHFZMFUW.js → chunk-UPUMZYZE.js} +1 -1
- package/dist/bin/chunks/{chunk-ZJGIBTWD.js → chunk-V7ZOPVQS.js} +1 -1
- package/dist/bin/chunks/{chunk-IRCLOW32.js → chunk-VVFGRIJZ.js} +1 -1
- package/dist/bin/chunks/{chunk-QTII62YM.js → chunk-WS6P4H4S.js} +1 -1
- package/dist/bin/{shell/chunks/chunk-NTKUVXEL.js → chunks/chunk-YU6OGPZR.js} +2 -2
- package/dist/bin/{shell/chunks/chunk-PLKGKTIS.js → chunks/chunk-ZO5PSLKR.js} +2 -2
- package/dist/bin/{shell/chunks/curl-3GMIPMCI.js → chunks/curl-B64SIJOD.js} +1 -1
- package/dist/bin/chunks/env-NTPN5QYM.js +2 -0
- package/dist/bin/{shell/chunks/expansion-JBCP2CHQ.js → chunks/expansion-2RO5M3QC.js} +1 -1
- package/dist/bin/chunks/{find-MTLF23HX.js → find-GAYRV4IF.js} +1 -1
- package/dist/bin/chunks/flag-coverage-IRM4GISL.js +2 -0
- package/dist/bin/{shell/chunks/help-4H52JYYC.js → chunks/help-DVG4AAGE.js} +1 -1
- package/dist/bin/chunks/{jq-P457LMHU.js → jq-V7FYGIKO.js} +1 -1
- package/dist/bin/chunks/js-exec-YGYYZEEQ.js +97 -0
- package/dist/bin/chunks/js-exec-worker.js +4368 -0
- package/dist/bin/chunks/python3-EIXZW3LO.js +12 -0
- package/dist/bin/chunks/rg-C6KMBFNG.js +2 -0
- package/dist/bin/{shell/chunks/sed-UV2LTNVK.js → chunks/sed-3C6IBX5L.js} +1 -1
- package/dist/bin/chunks/sleep-ND6FZRZ4.js +2 -0
- package/dist/bin/chunks/{sqlite3-B3P3OMPI.js → sqlite3-TZEE4O7U.js} +1 -1
- package/dist/bin/chunks/tar-TOWX2TDU.js +2 -0
- package/dist/bin/{shell/chunks/time-GZSHCM77.js → chunks/time-VSKBXRQH.js} +1 -1
- package/dist/bin/chunks/timeout-Z24MNWOP.js +2 -0
- package/dist/bin/chunks/worker.js +168 -33
- package/dist/bin/chunks/xan-MOZFJGMY.js +2 -0
- package/dist/bin/chunks/xargs-SCYIFXOW.js +2 -0
- package/dist/bin/chunks/yq-JJLSDDST.js +2 -0
- package/dist/bin/just-bash.js +211 -210
- package/dist/bin/shell/chunks/{awk2-EB5SCHVW.js → awk2-VTJMI54B.js} +1 -1
- package/dist/bin/shell/chunks/chunk-3YMCKZTY.js +14 -0
- package/dist/bin/shell/chunks/{chunk-O5B6WWQQ.js → chunk-A3HQTYHR.js} +1 -1
- package/dist/bin/shell/chunks/chunk-AAW7UMPO.js +9 -0
- package/dist/bin/shell/chunks/{chunk-ROMKUVHI.js → chunk-AXWFPG37.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-BBRVF6XE.js → chunk-B3RU2PUI.js} +27 -27
- package/dist/bin/shell/chunks/chunk-CQG2HEAL.js +5 -0
- package/dist/bin/shell/chunks/chunk-DOXYBGNA.js +12 -0
- package/dist/bin/shell/chunks/{chunk-PIBXJ3VX.js → chunk-GR23MPTT.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-35JD7YEM.js → chunk-HJEHIH4P.js} +13 -13
- package/dist/bin/shell/chunks/{chunk-ZNPXCE5B.js → chunk-LGF54XJQ.js} +1 -1
- package/dist/bin/{chunks/chunk-5MUD3WB2.js → shell/chunks/chunk-MO4RPBN2.js} +1 -1
- package/dist/bin/shell/chunks/chunk-N6KA6G3Q.js +11 -0
- package/dist/bin/{chunks/chunk-JX6YLHDX.js → shell/chunks/chunk-OOJCYVYF.js} +1 -1
- package/dist/bin/{chunks/chunk-2BC3N3L2.js → shell/chunks/chunk-ORUYSLP4.js} +4 -4
- package/dist/bin/{chunks/chunk-OLN6BSO3.js → shell/chunks/chunk-SDLWFYVT.js} +2 -2
- package/dist/bin/shell/chunks/{chunk-STOAUD75.js → chunk-THNL3XFF.js} +8 -8
- package/dist/bin/shell/chunks/{chunk-DHFZMFUW.js → chunk-UPUMZYZE.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-ZJGIBTWD.js → chunk-V7ZOPVQS.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-IRCLOW32.js → chunk-VVFGRIJZ.js} +1 -1
- package/dist/bin/shell/chunks/{chunk-QTII62YM.js → chunk-WS6P4H4S.js} +1 -1
- package/dist/bin/{chunks/chunk-NTKUVXEL.js → shell/chunks/chunk-YU6OGPZR.js} +2 -2
- package/dist/bin/{chunks/chunk-PLKGKTIS.js → shell/chunks/chunk-ZO5PSLKR.js} +2 -2
- package/dist/bin/{chunks/curl-3GMIPMCI.js → shell/chunks/curl-B64SIJOD.js} +1 -1
- package/dist/bin/shell/chunks/env-NTPN5QYM.js +2 -0
- package/dist/bin/{chunks/expansion-JBCP2CHQ.js → shell/chunks/expansion-2RO5M3QC.js} +1 -1
- package/dist/bin/shell/chunks/{find-MTLF23HX.js → find-GAYRV4IF.js} +1 -1
- package/dist/bin/shell/chunks/flag-coverage-IRM4GISL.js +2 -0
- package/dist/bin/{chunks/help-4H52JYYC.js → shell/chunks/help-DVG4AAGE.js} +1 -1
- package/dist/bin/shell/chunks/{jq-P457LMHU.js → jq-V7FYGIKO.js} +1 -1
- package/dist/bin/shell/chunks/js-exec-VYG74FQ3.js +97 -0
- package/dist/bin/shell/chunks/python3-WO3WFGMS.js +12 -0
- package/dist/bin/shell/chunks/rg-C6KMBFNG.js +2 -0
- package/dist/bin/{chunks/sed-UV2LTNVK.js → shell/chunks/sed-3C6IBX5L.js} +1 -1
- package/dist/bin/shell/chunks/sleep-ND6FZRZ4.js +2 -0
- package/dist/bin/shell/chunks/{sqlite3-B3P3OMPI.js → sqlite3-TZEE4O7U.js} +1 -1
- package/dist/bin/shell/chunks/tar-TOWX2TDU.js +2 -0
- package/dist/bin/{chunks/time-GZSHCM77.js → shell/chunks/time-VSKBXRQH.js} +1 -1
- package/dist/bin/shell/chunks/timeout-Z24MNWOP.js +2 -0
- package/dist/bin/shell/chunks/xan-MOZFJGMY.js +2 -0
- package/dist/bin/shell/chunks/xargs-SCYIFXOW.js +2 -0
- package/dist/bin/shell/chunks/yq-JJLSDDST.js +2 -0
- package/dist/bin/shell/shell.js +208 -208
- package/dist/bundle/browser.js +594 -594
- package/dist/bundle/chunks/{awk2-VPBKDCSO.js → awk2-POPGKRAI.js} +1 -1
- package/dist/bundle/chunks/{chunk-X36DXRVC.js → chunk-24IMIIXA.js} +1 -1
- package/dist/bundle/chunks/{chunk-72EQZSVH.js → chunk-5QMZ5MUS.js} +2 -2
- package/dist/bundle/chunks/{chunk-DZZS6SJP.js → chunk-7TSDKFEO.js} +1 -1
- package/dist/bundle/chunks/{chunk-7YDOWJ75.js → chunk-A5O5YHGN.js} +1 -1
- package/dist/bundle/chunks/{chunk-KZ7BI7TV.js → chunk-BBXLRYSX.js} +2 -2
- package/dist/bundle/chunks/{chunk-TRD56HID.js → chunk-FEIOJCZD.js} +1 -1
- package/dist/bundle/chunks/{chunk-X3CVFNQZ.js → chunk-GOV5EKKI.js} +1 -1
- package/dist/bundle/chunks/{chunk-AUD37QB3.js → chunk-IUWCBQII.js} +1 -1
- package/dist/bundle/chunks/chunk-JCMONG3T.js +13 -0
- package/dist/bundle/chunks/{chunk-D2FZX7A2.js → chunk-LPQPILI2.js} +8 -8
- package/dist/bundle/chunks/chunk-MJWMXCEJ.js +10 -0
- package/dist/bundle/chunks/{chunk-2GOYXRRP.js → chunk-MLXIYONF.js} +4 -4
- package/dist/bundle/chunks/chunk-NAERJDUW.js +8 -0
- package/dist/bundle/chunks/{chunk-OKEHYWBE.js → chunk-NYQYO467.js} +13 -13
- package/dist/bundle/chunks/{chunk-C7ZTXK5C.js → chunk-O2DBFL6Z.js} +1 -1
- package/dist/bundle/chunks/{chunk-VSWTMNI3.js → chunk-OARHFVLG.js} +2 -2
- package/dist/bundle/chunks/{chunk-U5FWK6IA.js → chunk-RUF7WQ7U.js} +1 -1
- package/dist/bundle/chunks/chunk-TOMNU26N.js +4 -0
- package/dist/bundle/chunks/{chunk-4YPFHVJJ.js → chunk-UNYNJIFU.js} +27 -27
- package/dist/bundle/chunks/{chunk-VBF2GWEM.js → chunk-V3IEYMEA.js} +1 -1
- package/dist/bundle/chunks/chunk-YTNYSM6T.js +11 -0
- package/dist/bundle/chunks/{chunk-BED5HSP2.js → chunk-ZXL7TQLN.js} +1 -1
- package/dist/bundle/chunks/{curl-KM2ZAUR6.js → curl-FCIO57JJ.js} +1 -1
- package/dist/bundle/chunks/env-5EPCWSXR.js +1 -0
- package/dist/bundle/chunks/{expansion-XG7G47TX.js → expansion-ENLSRCXJ.js} +1 -1
- package/dist/bundle/chunks/{find-DOIVMX6X.js → find-TPUOAIUQ.js} +1 -1
- package/dist/bundle/chunks/flag-coverage-SPT2DN2I.js +1 -0
- package/dist/bundle/chunks/{help-IA5CMGR4.js → help-VVWX7SA5.js} +1 -1
- package/dist/bundle/chunks/{jq-NLRWI2Q6.js → jq-DIRZBOTX.js} +1 -1
- package/dist/bundle/chunks/js-exec-R2LSP7M4.js +96 -0
- package/dist/bundle/chunks/js-exec-worker.js +4368 -0
- package/dist/bundle/chunks/python3-DH2SBOI3.js +11 -0
- package/dist/bundle/chunks/rg-FOQSCCX3.js +1 -0
- package/dist/bundle/chunks/{sed-2BILOGNL.js → sed-DISNI47D.js} +1 -1
- package/dist/bundle/chunks/sleep-VZFPZFWA.js +1 -0
- package/dist/bundle/chunks/{sqlite3-VEDNWJL6.js → sqlite3-7F22DOIP.js} +1 -1
- package/dist/bundle/chunks/tar-232RCEFK.js +1 -0
- package/dist/bundle/chunks/{time-XL42Z4U5.js → time-FABCOJJU.js} +1 -1
- package/dist/bundle/chunks/timeout-VRKMCG72.js +1 -0
- package/dist/bundle/chunks/worker.js +168 -33
- package/dist/bundle/chunks/xan-BXDXYEIB.js +1 -0
- package/dist/bundle/chunks/xargs-I6EZUCYF.js +1 -0
- package/dist/bundle/chunks/yq-XMVSIL6Z.js +1 -0
- package/dist/bundle/index.cjs +976 -877
- package/dist/bundle/index.js +245 -245
- package/dist/commands/js-exec/fetch-polyfill.d.ts +6 -0
- package/dist/commands/js-exec/js-exec.d.ts +11 -0
- package/dist/commands/js-exec/module-shims.d.ts +29 -0
- package/dist/commands/js-exec/path-polyfill.d.ts +6 -0
- package/dist/commands/js-exec/worker.d.ts +30 -0
- package/dist/commands/python3/worker.d.ts +1 -0
- package/dist/commands/query-engine/safe-object.d.ts +11 -0
- package/dist/commands/registry.d.ts +13 -2
- package/dist/commands/{python3/fs-bridge-handler.d.ts → worker-bridge/bridge-handler.d.ts} +25 -8
- package/dist/commands/{python3 → worker-bridge}/protocol.d.ts +6 -3
- package/dist/commands/{python3/sync-fs-backend.d.ts → worker-bridge/sync-backend.d.ts} +25 -4
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/interpreter/interpreter.d.ts +3 -0
- package/dist/interpreter/types.d.ts +8 -0
- package/dist/limits.d.ts +3 -1
- package/dist/network/allow-list/shared.d.ts +8 -0
- package/dist/network/types.d.ts +15 -1
- package/dist/types.d.ts +12 -0
- package/package.json +12 -11
- package/dist/bin/chunks/chunk-47HZU3SY.js +0 -5
- package/dist/bin/chunks/chunk-N4EU64Y4.js +0 -9
- package/dist/bin/chunks/chunk-VCKKRS7V.js +0 -12
- package/dist/bin/chunks/chunk-VIYJJTN2.js +0 -14
- package/dist/bin/chunks/env-HOVBNLUR.js +0 -2
- package/dist/bin/chunks/flag-coverage-7GOZYXJT.js +0 -2
- package/dist/bin/chunks/python3-45TMCI4M.js +0 -17
- package/dist/bin/chunks/rg-34GE6REQ.js +0 -2
- package/dist/bin/chunks/sleep-3WHM7JMW.js +0 -2
- package/dist/bin/chunks/tar-SO3XDDIW.js +0 -2
- package/dist/bin/chunks/timeout-BYB3L2JA.js +0 -2
- package/dist/bin/chunks/xan-FZB7FHX3.js +0 -2
- package/dist/bin/chunks/xargs-GBL6PZ2K.js +0 -2
- package/dist/bin/chunks/yq-H7D2U3HS.js +0 -2
- package/dist/bin/shell/chunks/chunk-47HZU3SY.js +0 -5
- package/dist/bin/shell/chunks/chunk-N4EU64Y4.js +0 -9
- package/dist/bin/shell/chunks/chunk-VCKKRS7V.js +0 -12
- package/dist/bin/shell/chunks/chunk-VIYJJTN2.js +0 -14
- package/dist/bin/shell/chunks/env-HOVBNLUR.js +0 -2
- package/dist/bin/shell/chunks/flag-coverage-7GOZYXJT.js +0 -2
- package/dist/bin/shell/chunks/python3-IV3DBMHM.js +0 -17
- package/dist/bin/shell/chunks/rg-34GE6REQ.js +0 -2
- package/dist/bin/shell/chunks/sleep-3WHM7JMW.js +0 -2
- package/dist/bin/shell/chunks/tar-SO3XDDIW.js +0 -2
- package/dist/bin/shell/chunks/timeout-BYB3L2JA.js +0 -2
- package/dist/bin/shell/chunks/xan-FZB7FHX3.js +0 -2
- package/dist/bin/shell/chunks/xargs-GBL6PZ2K.js +0 -2
- package/dist/bin/shell/chunks/yq-H7D2U3HS.js +0 -2
- package/dist/bundle/chunks/chunk-3RA5L262.js +0 -8
- package/dist/bundle/chunks/chunk-6HBBXB3L.js +0 -11
- package/dist/bundle/chunks/chunk-EX62JIX3.js +0 -13
- package/dist/bundle/chunks/chunk-ZSJYNBAF.js +0 -4
- package/dist/bundle/chunks/env-XZY4LKEO.js +0 -1
- package/dist/bundle/chunks/flag-coverage-NT32EG6Q.js +0 -1
- package/dist/bundle/chunks/python3-G2ZUJAQL.js +0 -16
- package/dist/bundle/chunks/rg-RAICUFGG.js +0 -1
- package/dist/bundle/chunks/sleep-IUBP5GMH.js +0 -1
- package/dist/bundle/chunks/tar-LKO7DKAK.js +0 -1
- package/dist/bundle/chunks/timeout-TL4Q5YKZ.js +0 -1
- package/dist/bundle/chunks/xan-KSDYKKEK.js +0 -1
- package/dist/bundle/chunks/xargs-2BBAQDTC.js +0 -1
- package/dist/bundle/chunks/yq-HIQ4WMDY.js +0 -1
package/dist/bin/shell/shell.js
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{B as Mn,C as Wn,D as ce,E as Be,F as ee,G as Ee,H as Ot,I as zn,J as I,K as Vn,L as Bn,M as _e,N as gs,O as Dt,P as H,a as On,b as fs,c as Dn,d as kt,e as Q,f as V,g as be,h as se,i as Ae,j as Re,k as ds,l as Nt,m as Tn,n as hs,o as In,p as me,q as Ne,r as xn,s as Rn,t as ps,u as ms,v as Le,w as Ln,x as Fn,y as $e,z as ys}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 us,h as _n,i as Cn,j as Pn,k as kn,l as Nn}from"./chunks/chunk-D64U2VGQ.js";import{c as cs}from"./chunks/chunk-QZNF3Y3J.js";import{a as bn,b as $n}from"./chunks/chunk-JX6YLHDX.js";import{a as xe,b as pe,c as ls}from"./chunks/chunk-4PRVMER6.js";import{a as ut,b as An}from"./chunks/chunk-5MUD3WB2.js";import{a as Ke,b as ge}from"./chunks/chunk-NTKUVXEL.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 En,f as B,g as Ve,h as Et,i as St,j as Sn,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 ki from"node:fs";import*as Ni 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-UV2LTNVK.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-EB5SCHVW.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-P457LMHU.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-3WHM7JMW.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-BYB3L2JA.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-SO3XDDIW.js")).tarCommand}),Qe.push({name:"yq",load:async()=>(await import("./chunks/yq-H7D2U3HS.js")).yqCommand}),Qe.push({name:"xan",load:async()=>(await import("./chunks/xan-FZB7FHX3.js")).xanCommand}),Qe.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-B3P3OMPI.js")).sqlite3Command}));var ws=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(ws.push({name:"python3",load:async()=>(await import("./chunks/python3-IV3DBMHM.js")).python3Command}),ws.push({name:"python",load:async()=>(await import("./chunks/python3-IV3DBMHM.js")).pythonCommand}));var Ii=[{name:"curl",load:async()=>(await import("./chunks/curl-3GMIPMCI.js")).curlCommand}],Hn=new Map;function vs(e){return{name:e.name,async execute(t,s){let n=Hn.get(e.name);if(n||(n=await ge.runTrustedAsync(()=>e.load()),Hn.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-7GOZYXJT.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function jn(e){return(e?Qe.filter(s=>e.includes(s.name)):Qe).map(vs)}function Un(){return Ii.map(vs)}function Zn(){return ws.map(vs)}function qn(e){return"load"in e&&typeof e.load=="function"}function Gn(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",`${On}
|
|
2
|
+
import{B as zn,C as Vn,D as ce,E as je,F as ee,G as Ee,H as Ot,I as Bn,J as I,K as jn,L as Hn,M as _e,N as ws,O as Dt,P as j,a as Tn,b as ds,c as In,d as Nt,e as Q,f as V,g as be,h as ne,i as Ae,j as Le,k as hs,l as kt,m as xn,n as ps,o as Rn,p as me,q as Oe,r as Ln,s as Fn,t as ms,u as ys,v as Fe,w as Mn,x as Wn,y as $e,z as gs}from"./chunks/chunk-A3HQTYHR.js";import{a as M,b as W,c as Xe,d as Ct,e as Pt,f as Ye,g as fs,h as Pn,i as Nn,j as kn,k as On,l as Dn}from"./chunks/chunk-D64U2VGQ.js";import{c as us}from"./chunks/chunk-QZNF3Y3J.js";import{a as En,b as Sn}from"./chunks/chunk-OOJCYVYF.js";import{a as Re,b as pe,c as cs}from"./chunks/chunk-4PRVMER6.js";import{a as ut,b as Cn}from"./chunks/chunk-MO4RPBN2.js";import{a as Ke,b as ge}from"./chunks/chunk-YU6OGPZR.js";import{a as ct}from"./chunks/chunk-SE4C7FJY.js";import{a as fe,b as de,c as le,d as he,e as An,f as B,g as Be,h as Et,i as St,j as _n,k as Y,l as At,m as Ie,n as _t,o as we}from"./chunks/chunk-6KZRLMG3.js";import"./chunks/chunk-OBH7XN5N.js";import{a as xe}from"./chunks/chunk-SYG3IW7P.js";import{a as ve}from"./chunks/chunk-4VDEBYW7.js";import"./chunks/chunk-KGOUQS5A.js";import*as Oi from"node:fs";import*as Di 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-C6KMBFNG.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-3C6IBX5L.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-VTJMI54B.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-7GENYU2I.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-TMSAIZM3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-R3F3Z5DX.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-5EY2XPXX.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-3UVLMQ2K.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-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-GAYRV4IF.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-KBUKWB2E.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-5FAOMLBL.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-HEKABARE.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-LDAPXSGF.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-NTPN5QYM.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-NTPN5QYM.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-UUKG55YW.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-SCYIFXOW.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-DP5UZP52.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-DP5UZP52.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KRGKPFOI.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-6ZHZ6BX7.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-6ZHZ6BX7.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-V7FYGIKO.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-43M2R3GA.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-LE7GMFZD.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-WUPBL2TL.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-ND6FZRZ4.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-Z24MNWOP.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-VSKBXRQH.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-DVG4AAGE.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-5PO4LAOG.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-T42SKDDI.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WY6RKE32.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-E7PN2UWC.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-52FBC34W.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-LHOO65AN.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Qe.push({name:"tar",load:async()=>(await import("./chunks/tar-TOWX2TDU.js")).tarCommand}),Qe.push({name:"yq",load:async()=>(await import("./chunks/yq-JJLSDDST.js")).yqCommand}),Qe.push({name:"xan",load:async()=>(await import("./chunks/xan-MOZFJGMY.js")).xanCommand}),Qe.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-TZEE4O7U.js")).sqlite3Command}));var vs=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(vs.push({name:"python3",load:async()=>(await import("./chunks/python3-WO3WFGMS.js")).python3Command}),vs.push({name:"python",load:async()=>(await import("./chunks/python3-WO3WFGMS.js")).pythonCommand}));var bs=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(bs.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-VYG74FQ3.js")).jsExecCommand}),bs.push({name:"node",load:async()=>(await import("./chunks/js-exec-VYG74FQ3.js")).nodeStubCommand}));var Ri=[{name:"curl",load:async()=>(await import("./chunks/curl-B64SIJOD.js")).curlCommand}],Un=new Map;function Tt(e){return{name:e.name,async execute(t,s){let n=Un.get(e.name);if(n||(n=await ge.runTrustedAsync(()=>e.load()),Un.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-IRM4GISL.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function Zn(e){return(e?Qe.filter(s=>e.includes(s.name)):Qe).map(Tt)}function qn(){return Ri.map(Tt)}function Gn(){return vs.map(Tt)}function Kn(){return bs.map(Tt)}function Xn(e){return"load"in e&&typeof e.load=="function"}function Yn(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 Li=new TextEncoder,Fi=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 Li.encode(e)}function It(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 Fi.decode(e)}function Me(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var et=new TextEncoder;function Mi(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):Mi(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}ensureParentDirs(t){let s=Xe(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,n,r){W(t,"write");let i=M(t);this.ensureParentDirs(i);let a=Me(n),o=Je(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}writeFileLazy(t,s,n){W(t,"write");let r=M(t);this.ensureParentDirs(r),this.data.set(r,{type:"file",lazy:s,mode:n?.mode??420,mtime:n?.mtime??new Date})}async materializeLazy(t,s){let n=await s.lazy(),i={type:"file",content:typeof n=="string"?et.encode(n):n,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let n=await this.readFileBuffer(t),r=Me(s);return It(n,r)}async readFileBuffer(t){W(t,"open");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in n){let r=await this.materializeLazy(s,n);return r.content instanceof Uint8Array?r.content:et.encode(r.content)}return n.content instanceof Uint8Array?n.content:et.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){W(t,"append");let r=M(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let a=Me(n),o=Je(s,a);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(r,l));let u="content"in l&&l.content instanceof Uint8Array?l.content:et.encode("content"in l?l.content:""),c=new Uint8Array(u.length+o.length);c.set(u),c.set(o,u.length),this.data.set(r,{type:"file",content:c,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){W(t,"stat");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=et.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){W(t,"lstat");let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=et.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveIntermediateSymlinks(t){let s=M(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let a=0;a<n.length-1;a++){let o=n[a];r=`${r}/${o}`;let l=this.data.get(r),u=0,c=40;for(;l&&l.type==="symlink"&&u<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=Ye(r,l.target),l=this.data.get(r),u++}if(u>=c)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=M(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let a of n){r=`${r}/${a}`;let o=this.data.get(r),l=0,u=40;for(;o&&o.type==="symlink"&&l<u;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=Ye(r,o.target),o=this.data.get(r),l++}if(l>=u)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){W(t,"mkdir");let n=M(t);if(this.data.has(n)){if(this.data.get(n)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let r=Xe(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){W(t,"scandir");let s=M(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=Ye(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,a=new Map;for(let[o,l]of this.data.entries())if(o!==s&&o.startsWith(i)){let u=o.slice(i.length),c=u.split("/")[0];c&&!u.includes("/",c.length)&&!a.has(c)&&a.set(c,{name:c,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(a.values()).sort((o,l)=>o.name<l.name?-1:o.name>l.name?1:0)}async rm(t,s){W(t,"rm");let n=M(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of i){let o=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 Wi(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function zi(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 Vi(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 Bi(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Tn}
|
|
3
3
|
`),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
|
|
4
|
-
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>
|
|
4
|
+
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>ds(t)):e.writeFileSync("/proc/self/status",ds(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 Qn(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Wi(e)&&(zi(e,t),Vi(e),Bi(e,s))}var ji=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Hi=["braceexpand","hashall","interactive-comments"];function Es(e){let t=[],s=[...Hi.map(n=>({name:n,enabled:!0})),...ji.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",Es(e.state.options))}var Ui=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Ss(e){let t=[];for(let s of Ui)e[s]&&t.push(s);return t.join(":")}function As(e){e.state.env.set("BASHOPTS",Ss(e.state.shoptOptions))}var Zi="BASH_ALIAS_";function Jn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function er(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function tr(e,t){return e.env.get(`${Zi}${t}`)}function _s(e,t,s){if(!t.name||!Jn(t.name))return t;let n=er(t.name);if(!n)return t;let r=tr(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=nr(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 sr(t,r);let u=l.statements[0].pipelines[0].commands[0];if(u.type!=="SimpleCommand")return sr(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(Jn(f)){let d=er(f);if(d&&tr(e,d)){let h={type:"SimpleCommand",name:f,args:c.args.slice(1),assignments:[],redirections:[]},m=_s(e,h,s);m!==h&&(c={...c,name:m.name,args:[...m.args]})}}}return c}catch(i){throw s.delete(n),i}}function sr(e,t){let s=t;for(let a of e.args){let o=nr(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 nr(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 rr(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 ir(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let y=t.parts[p];if(y.type==="Literal"){let b=y.value.indexOf("+=");if(b!==-1){let A=y.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=y.value.indexOf("=");if(v!==-1&&(v===0||y.value[v-1]!=="+")){let A=y.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 qi=["tar","yq","xan","sqlite3","python3","python"];function ar(e){return qi.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 Cs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ie;return L}if(t.length>1)throw new B(1,"",`bash: break: too many arguments
|
|
5
5
|
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new B(128,"",`bash: break: ${t[0]}: numeric argument required
|
|
6
|
-
`);s=n}throw new fe(s)}async function
|
|
6
|
+
`);s=n}throw new fe(s)}async function Ps(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 m=h.startsWith("/")?`${h}/${s}`:`${e.state.cwd}/${h}/${s}`;try{if((await e.fs.stat(m)).isDirectory){s=m,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 Ns(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Gi=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function Rt(e){return Gi.includes(e)}async function Lt(e,t,s){let n=Ns(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 Ki=["-nt","-ot","-ef"];function Ft(e){return Ki.includes(e)}async function Mt(e,t,s,n){let r=Ns(e,s),i=Ns(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 Xi=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Wt(e){return Xi.has(e)}function zt(e,t,s){switch(e){case"-eq":return t===s;case"-ne":return t!==s;case"-lt":return t<s;case"-le":return t<=s;case"-gt":return t>s;case"-ge":return t>=s}}function dt(e){return e==="="||e==="=="||e==="!="}function Vt(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 Yi=new Set(["-z","-n"]);function Bt(e){return Yi.has(e)}function jt(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 j(e,l.expression)}catch{if(/^-?\d+$/.test(r))a=Number.parseInt(r,10);else{let o=e.state.env.get(r);a=o?Number.parseInt(o,10):0}}if(a<0){let o=ne(e,n),l=e.state.currentLine;if(o.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
|
|
10
10
|
`,!1;if(a=Math.max(...o)+1+a,a<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
|
|
11
|
-
`,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?
|
|
12
|
-
`,2):
|
|
13
|
-
`,2):P("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(dt(r))return X(
|
|
14
|
-
`,2):X(s.value)}async function
|
|
15
|
-
`)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&t.push(s),t}function
|
|
11
|
+
`,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Le(e,t).length>0:ne(e,t).length>0}async function We(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=Vn(i)}else r=await jn(e,t.right);else dt(t.operator)&&!n?r=await Hn(e,t.right):r=await I(e,t.right);if(dt(t.operator)){let i=e.state.shoptOptions.nocasematch;return Vt(t.operator,s,r,!n,i,!0)}if(Wt(t.operator))return zt(t.operator,await lr(e,s),await lr(e,r));if(Ft(t.operator))return Mt(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,a=ta(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 Rt(t.operator)?Lt(e,t.operator,s):Bt(t.operator)?jt(t.operator,s):t.operator==="-v"?await Ht(e,s):t.operator==="-o"?Os(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 We(e,t.operand);case"CondAnd":return await We(e,t.left)?await We(e,t.right):!1;case"CondOr":return await We(e,t.left)?!0:await We(e,t.right);case"CondGroup":return await We(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):Rt(n)?X(await Lt(e,n,r)):Bt(n)?X(jt(n,r)):n==="!"?X(!r):n==="-v"?X(await Ht(e,r)):n==="-o"?X(Os(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(Vt(r,n,i));if(Wt(r)){let a=Ut(n),o=Ut(i);return!a.valid||!o.valid?P("","",2):X(zt(r,a.value,o.value))}if(Ft(r))return X(await Mt(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 ur(e,t,0);return s.pos<t.length?_(`test: too many arguments
|
|
14
|
+
`,2):X(s.value)}async function ur(e,t,s){return Qi(e,t,s)}async function Qi(e,t,s){let{value:n,pos:r}=await or(e,t,s);for(;t[r]==="-o";){let i=await or(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function or(e,t,s){let{value:n,pos:r}=await ks(e,t,s);for(;t[r]==="-a";){let i=await ks(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function ks(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await ks(e,t,s+1);return{value:!n,pos:r}}return Ji(e,t,s)}async function Ji(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await ur(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:Vt(r,i,a),pos:s+3}}if(Wt(r)){let i=Ut(n),a=Ut(t[s+2]??"0");return!i.valid||!a.valid?{value:!1,pos:s+3}:{value:zt(r,i.value,a.value),pos:s+3}}if(Ft(r)){let i=n,a=t[s+2]??"";return{value:await Mt(e,r,i,a),pos:s+3}}if(Rt(n)){let i=t[s+1]??"";return{value:await Lt(e,n,i),pos:s+2}}if(Bt(n)){let i=t[s+1]??"";return{value:jt(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:Os(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function nt(e,t,s=!1,n=!1){let r=`^${fr(t,n)}$`;return ct(r,s?"is":"s").test(e)}function fr(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=dr(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=hr(a),l=o.map(c=>fr(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=>pr(h,t));if(f.every(h=>h!==null)&&f.every(h=>h===f[0])&&f[0]!==null){let h=f[0];if(h===0)s+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${u})).{${h}}`),s+=`(?:${m.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 dr(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 hr(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function pr(e,t){let s=0,n=0;for(;n<e.length;){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=dr(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),l=hr(a).map(u=>pr(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 Os(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 lr(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 cr(t);try{let s=new V,n=Q(s,t);return await j(e,n.expression)}catch{return cr(t)}}function ea(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 cr(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=ea(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 Ut(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 ta(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=sa(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function sa(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+=na(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 na(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 Zt(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 mr(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 ra(e,t){try{let s=new V,n=Q(s,t);return await j(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function yr(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 ra(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 ze(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 qt(e,t){e.state.localVarDepth?.delete(t)}function gr(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 Gt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function wr(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 Ds=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function vr(e){return Ds.has(e)}var Ts=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 Dt(e,r.target);if("error"in a)return{targets:s,error:a.error};s.set(n,a.target)}}return{targets:s}}function
|
|
17
|
+
`}catch{}return null}function Te(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 ia(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 br(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(ws(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 aa(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 Kt(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=aa(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 Z(e,t,s,n){let{stdout:r,stderr:i,exitCode:a}=t,o=t.stdoutEncoding==="binary"?()=>"binary":c=>
|
|
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=>Te(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(ws(e,f.target)){i+=`bash: $@: ambiguous redirect
|
|
25
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
|
|
27
|
-
`,a=1,r="";break}let
|
|
28
|
-
`,a=1;break}if(d==="/dev/null")i="";else{let
|
|
29
|
-
`,a=1,r="";break}let p=e.fs.resolvePath(e.state.cwd,d),
|
|
30
|
-
`,a=1;break}let p=e.fs.resolvePath(e.state.cwd,d),
|
|
31
|
-
`,a=1)}break}if(d==="2"||d==="&2")
|
|
26
|
+
`,a=1,r="";continue}switch(f.operator){case">":case">|":{let m=f.fd??1,p=f.operator===">|";if(m===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 y=e.fs.resolvePath(e.state.cwd,d),b=await He(e,y,d,{checkNoclobber:!0,isClobber:p});if(b){i+=b,a=1,r="";break}await e.fs.writeFile(y,r,o(r)),r=""}else if(m===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 y=e.fs.resolvePath(e.state.cwd,d),b=await He(e,y,d,{checkNoclobber:!0,isClobber:p});if(b){i+=b,a=1;break}await e.fs.writeFile(y,i,Te(i)),i=""}}break}case">>":{let m=f.fd??1;if(m===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),y=await He(e,p,d,{});if(y){i+=y,a=1,r="";break}await e.fs.appendFile(p,r,o(r)),r=""}else if(m===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),y=await He(e,p,d,{});if(y){i+=y,a=1;break}await e.fs.appendFile(p,i,Te(i)),i=""}break}case">&":case"<&":{let m=f.fd??1;if(d==="-")break;if(d.endsWith("-")){let p=d.slice(0,-1),y=Number.parseInt(p,10);if(!Number.isNaN(y)){let b=e.state.fileDescriptors?.get(y);b!==void 0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,b),y>=3&&e.state.fileDescriptors?.delete(y)):y===1||y===2?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,`__dupout__:${y}`)):y===0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,`__dupin__:${y}`)):y>=3&&(i+=`bash: ${y}: Bad file descriptor
|
|
31
|
+
`,a=1)}break}if(d==="2"||d==="&2")m===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 y=e.fs.resolvePath(e.state.cwd,d),b=await He(e,y,d,{checkNoclobber:!0});if(b){i=b,a=1,r="";break}if(f.fd==null){let v=r+i;await e.fs.writeFile(y,v,o(v)),r="",i=""}else m===1?(await e.fs.writeFile(y,r,o(r)),r=""):m===2&&(await e.fs.writeFile(y,i,Te(i)),i="")}}else{let y=e.state.fileDescriptors?.get(p);if(y?.startsWith("__file__:")){let b=y.slice(9);m===1?(await e.fs.appendFile(b,r,o(r)),r=""):m===2&&(await e.fs.appendFile(b,i,Te(i)),i="")}else if(y?.startsWith("__rw__:")){let b=ia(y);b&&(m===1?(await e.fs.appendFile(b.path,r,o(r)),r=""):m===2&&(await e.fs.appendFile(b.path,i,Te(i)),i=""))}else if(y?.startsWith("__dupout__:")){let b=Number.parseInt(y.slice(11),10);if(b!==1)if(b===2)m===1&&(i+=r,r="");else{let v=e.state.fileDescriptors?.get(b);if(v?.startsWith("__file__:")){let A=v.slice(9);m===1?(await e.fs.appendFile(A,r,o(r)),r=""):m===2&&(await e.fs.appendFile(A,i,Te(i)),i="")}}}else y?.startsWith("__dupin__:")?(i+=`bash: ${p}: Bad file descriptor
|
|
32
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 B(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function
|
|
34
|
+
`,a=1,r="";break}let m=e.fs.resolvePath(e.state.cwd,d),p=await He(e,m,d,{checkNoclobber:!0});if(p){i=p,a=1,r="";break}let y=r+i;await e.fs.writeFile(m,y,o(y)),r="",i="";break}case"&>>":{if(d==="/dev/full"){i=`bash: echo: write error: No space left on device
|
|
35
|
+
`,a=1,r="";break}let m=e.fs.resolvePath(e.state.cwd,d),p=await He(e,m,d,{});if(p){i=p,a=1,r="";break}let y=r+i;await e.fs.appendFile(m,y,o(y)),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,Te(i)),i=""}else if(u.startsWith("__file_append__:")){let c=u.slice(16);await e.fs.appendFile(c,i,Te(i)),i=""}}return P(r,i,a)}function $r(e,t){if(e.state.options.posix&&Ds.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 oa(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 $=t[g];if(!
|
|
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 Xt(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(wr(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 br(e,t.redirections);if(l)return a(),P("",l,1);try{let u=await oa(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 Sr=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],xs=[".",":","[","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"],la=["autocd","assoc_expand_once","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","dotglob","execfail","expand_aliases","extdebug","extglob","extquote","failglob","force_fignore","globasciiranges","globstar","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lastpipe","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","nocaseglob","nocasematch","nullglob","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath","xpg_echo"],ca=xs;async function Rs(e,t){let s=[],n=null,r="",i="",a=null,o=!1,l=!1,u=!1,c=null,f=null,d=null,h=[],m=["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(!m.includes($))return _(`compgen: ${$}: invalid action name
|
|
41
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
|
|
@@ -47,112 +47,112 @@ import{B as Mn,C as Wn,D as ce,E as Be,F as ee,G as Ee,H as Ot,I as zn,J as I,K
|
|
|
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==="--"){h.push(...t.slice(g+1));break}else w.startsWith("-")||h.push(w)}a=h[0]??null;let p=[];if(l){let g=await
|
|
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 Is(e,a);p.push(...g)}if(u){let g=await Er(e,a);p.push(...g)}for(let g of s)if(g==="variable"){let w=ua(e,a);p.push(...w)}else if(g==="export"){let w=fa(e,a);p.push(...w)}else if(g==="function"){let w=da(e,a);p.push(...w)}else if(g==="builtin"){let w=ha(a);p.push(...w)}else if(g==="keyword"){let w=pa(a);p.push(...w)}else if(g==="alias"){let w=ma(e,a);p.push(...w)}else if(g==="shopt"){let w=ya(a);p.push(...w)}else if(g==="helptopic"){let w=ga(a);p.push(...w)}else if(g==="directory"){let w=await Is(e,a);p.push(...w)}else if(g==="file"){let w=await Er(e,a);p.push(...w)}else if(g==="user"){let w=wa(a);p.push(...w)}else if(g==="command"){let w=await va(e,a);p.push(...w)}if(n!==null)try{let g=await ba(e,n),w=$a(e,g);for(let $ of w)(a===null||$.startsWith(a))&&p.push($)}catch{return P("","",1)}if(o){let g=await Is(e,a);for(let w of g)p.includes(w)||p.push(w)}let y="";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 Xt(e,g,E,"");if(T.exitCode!==0)return at(e,w),at(e,$),P("",T.stderr,1);y=T.stdout;let k=Ea(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
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(
|
|
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 at(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function
|
|
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(y,"",1);let v=b.map(g=>`${r}${g}${i}`).join(`
|
|
53
|
+
`),A=y+(v?`${v}
|
|
54
|
+
`:"");return F(A)}function ua(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 fa(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 da(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function ha(e){let t=[...xs];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function pa(e){let t=[...Sr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function ma(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 ya(e){let t=[...la];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function ga(e){let t=[...ca];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Is(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 Er(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 wa(e){return["root","nobody"]}async function va(e,t){let s=new Set;for(let i of xs)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 Sr)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 ba(e,t){let n=new V().parseWordFromString(t,!1,!1);return await I(e,n)}function $a(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 Ea(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 Sa=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Fs(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 h=t[f];if(
|
|
58
|
+
`,2);let h=t[f];if(!Sa.includes(h))return _(`complete: ${h}: invalid option name
|
|
59
59
|
`,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return _(`complete: -A: option requires an argument
|
|
60
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?Ls(e):Ls(e,c);if(t.length===0||c.length===0&&!i&&!a&&!o&&l.length===0&&u.length===0&&!r)return Ls(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 Ls(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 Ar=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ms(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(!Ar.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(!Ar.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
|
|
77
|
+
`,1)}function Ws(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ie;return L}if(t.length>1)throw new B(1,"",`bash: continue: too many arguments
|
|
78
78
|
`);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new B(1,"",`bash: continue: ${t[0]}: numeric argument required
|
|
79
|
-
`);s=n}throw new 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
|
|
80
|
-
`;else{let f=c.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",
|
|
81
|
-
`}continue}let l=
|
|
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 zs(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Vs(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 Yt(e){return zs(e)?Vs(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Ue(e){return zs(e)?Vs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Bs(e){return zs(e)?Vs(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 js(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Cr(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=Le(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}`)??"",m=js(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${f.join(" ")})
|
|
81
|
+
`}continue}let l=ne(e,i);if(l.length>0){let c=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${Ue(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}=${Bs(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=b.map(A=>{let g=e.state.env.get(`${f}_${A}`)??"",w=
|
|
88
|
-
`}continue}if(
|
|
86
|
+
`,r=!0)}}return P(s,n,r?1:0)}function Pr(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),m=f.slice(d+1);if(/^\d+$/.test(m)||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),m=ne(e,f),p=!h&&(m.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=Le(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=js(g);return`['${A}']=${w}`});l+=`declare -A ${f}=(${v.join(" ")})
|
|
88
|
+
`}continue}if(m.length>0){let b=m.map(v=>{let A=e.state.env.get(`${f}_${v}`)??"";return`[${v}]=${Ue(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 Hs(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function pt(e,t){return e.state.integerVars?.has(t)??!1}function
|
|
97
|
-
`,2)}}}else if(x==="-i")f=!0;else if(x==="-l")d=!0;else if(x==="-u")h=!0;else if(x==="-f")
|
|
98
|
-
`,2);else b.push(x)}let A=e.state.localScopes.length>0&&!
|
|
99
|
-
`;return F(
|
|
100
|
-
`:
|
|
90
|
+
`;continue}let y=e.state.env.get(f);y!==void 0&&(l+=`declare ${d} ${f}=${Bs(y)}
|
|
91
|
+
`)}return F(l)}function Nr(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Le(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=js(o);return`['${a}']=${l}`});t+=`declare -A ${n}=(${i.join(" ")})
|
|
93
|
+
`}}return F(t)}function kr(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);e.state.associativeArrays?.has(a)||s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);/^\d+$/.test(o)&&(e.state.associativeArrays?.has(a)||s.add(a))}}let n=Array.from(s).sort();for(let r of n){let i=ne(e,r);if(i.length===0)t+=`declare -a ${r}=()
|
|
94
|
+
`;else{let a=i.map(o=>{let l=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${Ue(l)}`});t+=`declare -a ${r}=(${a.join(" ")})
|
|
95
|
+
`}}return F(t)}function Or(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);if(/^\d+$/.test(o)||e.state.associativeArrays?.has(a)){s.add(a);continue}}s.add(r)}let n=Array.from(s).sort();for(let r of n){if(e.state.associativeArrays?.has(r)||ne(e,r).length>0||e.state.env.has(`${r}__length`))continue;let o=e.state.env.get(r);o!==void 0&&(t+=`${r}=${Yt(o)}
|
|
96
|
+
`)}return F(t)}function Hs(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function pt(e,t){return e.state.integerVars?.has(t)??!1}function Us(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Aa(e,t){return e.state.lowercaseVars?.has(t)??!1}function Zs(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function _a(e,t){return e.state.uppercaseVars?.has(t)??!1}function ot(e,t,s){return Aa(e,t)?s.toLowerCase():_a(e,t)?s.toUpperCase():s}async function Dr(e,t){try{let s=new V,n=Q(s,t),r=await j(e,n.expression);return String(r)}catch{return"0"}}function Ca(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 qs(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,m=!1,p=!1,y=!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")m=!0;else if(x==="-F")p=!0;else if(x==="-g")y=!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")m=!0;else if(C==="F")p=!0;else if(C==="g")y=!0;else return P("",`bash: typeset: -${C}: invalid option
|
|
98
|
+
`,2);else b.push(x)}let A=e.state.localScopes.length>0&&!y,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&&ze(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(m){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
|
|
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 Cr(e,b);if(a&&b.length===0)return Pr(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if(b.length===0&&n&&!a)return Nr(e);if(b.length===0&&s&&!a)return kr(e);if(b.length===0&&!a)return Or(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&&ne(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)),Ae(e,S),e.state.env.delete(S),e.state.env.delete(`${S}__length`),n&&D.includes("[")){let R=
|
|
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=Zt(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],Ti=G(e,Ge),lt;if(/^-?\d+$/.test(ue))lt=Number.parseInt(ue,10);else try{let Ii=new V,xi=Q(Ii,ue);lt=await j(e,xi.expression)}catch{lt=0}e.state.env.set(`${S}_${lt}`,Ti),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(Ln(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=Ca(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 j(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=Zt(D);for(let[K,re]of z){let ue=G(e,re);e.state.env.set(`${S}_${K}`,ue)}}else{let z=ne(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&&Hs(e,S),d&&Us(e,S),h&&Zs(e,S);let z=ne(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 Dr(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
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),
|
|
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))),$(S),r&&ce(e,S),i&&Ee(e,S)}}return P("",E,T)}async function
|
|
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
|
|
108
|
+
`,T=1;continue}e.state.env.set(D,R),Oe(e,D),R!==""&&ys(e,R)&&ms(e,D),$(D),r&&ce(e,D),i&&Ee(e,D);continue}if(f&&Hs(e,D),d&&Us(e,D),h&&Zs(e,D),pt(e,D)&&(R=await Dr(e,R)),R=ot(e,D,R),me(e,D)){let z=Fe(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){Oe(e,S);let R=e.state.env.get(S);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?Fn(e,S):R&&ys(e,R)&&ms(e,S),$(S),r&&ce(e,S),i&&Ee(e,S);continue}if(f&&Hs(e,S),d&&Us(e,S),h&&Zs(e,S),n){if(ne(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 Gs(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 m=Pe(d);if(e.state.associativeArrays?.has(f)){let p=Zt(d);for(let[y,b]of p){let v=G(e,b);e.state.env.set(`${f}_${y}`,v)}}else{let p=ne(e,f),y=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),y=1):p.length>0&&(y=Math.max(...p)+1);for(let A=0;A<m.length;A++)e.state.env.set(`${f}_${y+A}`,G(e,m[A]));let v=y+m.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 m=e.state.env.get(f)??"";e.state.env.set(f,m+d),ce(e,f);continue}let u=mr(a);if(u.value===void 0&&!u.isArray){ce(e,u.name);continue}let c=await yr(e,u,{makeReadonly:!0});if(c)return c}return L}function Ks(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 Pa(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 Xs(e,t){let s=Ks(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=Pa(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
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
|
|
118
|
+
`;return F(a)}function Ys(e,t){let s=Ks(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
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
|
|
123
|
+
`;return F(i)}function Qs(e,t){let s=Ks(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
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
127
|
`):i?u=o.map(c=>r?c:mt(c,l)).join(`
|
|
128
128
|
`)+`
|
|
129
129
|
`:u=o.map(c=>r?c:mt(c,l)).join(" ")+`
|
|
130
|
-
`,F(u)}async function
|
|
130
|
+
`,F(u)}async function Qt(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
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
|
|
134
|
-
`,s=2):s=(i%256+256)%256}throw new B(s,"",n)}function
|
|
133
|
+
`);throw o}finally{e.state.groupStdin=i}}function Js(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 en(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
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
|
|
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
|
|
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 Jt(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 y=1;y<=p;y++)o.push(e.state.env.get(String(y))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let 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"),Jt(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
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
|
|
140
|
-
`,1);o=t[u],u++}else if(
|
|
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 tn(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 m=t[u];if(m==="--"){u++,l.push(...t.slice(u));break}if(m==="-r")s=!0,u++;else if(m==="-d")n=!0,u++;else if(m==="-l")r=!0,u++;else if(m==="-t")a=!0,u++;else if(m==="-p"){if(i=!0,u++,u>=t.length)return _(`bash: hash: -p: option requires an argument
|
|
140
|
+
`,1);o=t[u],u++}else if(m.startsWith("-")&&m.length>1){for(let p of m.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
141
|
`,1):_(`bash: hash: -${p}: invalid option
|
|
142
|
-
`,1);u++}else l.push(
|
|
143
|
-
`,1);let
|
|
144
|
-
`,
|
|
145
|
-
`,1);let
|
|
146
|
-
`:
|
|
147
|
-
`:(
|
|
148
|
-
`,p=!0)}return p?{exitCode:1,stdout:
|
|
149
|
-
`,1);let
|
|
150
|
-
`);let
|
|
151
|
-
`;else{
|
|
152
|
-
`;for(let[,p]of e.state.hashTable)
|
|
153
|
-
`}return F(
|
|
154
|
-
`,c=!0;continue}let p=!1;for(let
|
|
155
|
-
`,c=!0)}return c?_(f,1):L}var
|
|
142
|
+
`,1);u++}else l.push(m),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 m=!1,p="";for(let y of l)e.state.hashTable.has(y)?e.state.hashTable.delete(y):(p+=`bash: hash: ${y}: not found
|
|
144
|
+
`,m=!0);return m?_(p,1):L}if(a){if(l.length===0)return _(`bash: hash: -t: option requires an argument
|
|
145
|
+
`,1);let m="",p=!1,y="";for(let b of l){let v=e.state.hashTable.get(b);v?l.length>1?m+=`${b} ${v}
|
|
146
|
+
`:m+=`${v}
|
|
147
|
+
`:(y+=`bash: hash: ${b}: not found
|
|
148
|
+
`,p=!0)}return p?{exitCode:1,stdout:m,stderr:y}:F(m)}if(i){if(l.length===0)return _(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
|
|
149
|
+
`,1);let m=l[0];return e.state.hashTable.set(m,o),L}if(l.length===0){if(e.state.hashTable.size===0)return F(`hash: hash table empty
|
|
150
|
+
`);let m="";if(r)for(let[p,y]of e.state.hashTable)m+=`builtin hash -p ${y} ${p}
|
|
151
|
+
`;else{m=`hits command
|
|
152
|
+
`;for(let[,p]of e.state.hashTable)m+=` 1 ${p}
|
|
153
|
+
`}return F(m)}let c=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let m of l){if(m.includes("/")){f+=`bash: hash: ${m}: cannot use / in name
|
|
154
|
+
`,c=!0;continue}let p=!1;for(let y of h){if(!y)continue;let b=`${y}/${m}`;if(await e.fs.exists(b)){e.state.hashTable.set(m,b),p=!0;break}}p||(f+=`bash: hash: ${m}: not found
|
|
155
|
+
`,c=!0)}return c?_(f,1):L}var Tr=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.`]]]),Ir=[...Tr.keys()].sort();function sn(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 ka();let i="",a=!1,o="";for(let l of n){let u=Na(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=Tr.get(c);if(!f)continue;let[d,h]=f;s?i+=`${c}: ${d}
|
|
503
503
|
`:i+=`${c}: ${d}
|
|
504
504
|
${h}
|
|
505
|
-
`}}return{exitCode:a?1:0,stdout:i,stderr:o}}function
|
|
505
|
+
`}}return{exitCode:a?1:0,stdout:i,stderr:o}}function Na(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=ct(`^${t}$`);return Ir.filter(n=>s.test(n))}function ka(){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=Ir.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 Oa(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 nn(e,t){if(t.length===0)return _(`bash: let: expression expected
|
|
508
|
+
`);let s=Oa(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 j(e,o.expression.expression))}}catch(i){return _(`bash: let: ${r}: ${i.message}
|
|
509
|
+
`)}return P("","",n===0?1:0)}async function rn(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
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)),
|
|
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 b=e.state.tempEnvBindings?.some(v=>v.has(c));!
|
|
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)),ze(e,c),i&&Oe(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=ne(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($)),ze(e,c),i&&Oe(e,c);continue}let m=u.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){c=m[1];let b=G(e,m[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),ze(e,c),i&&Oe(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 j(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)),ze(e,c),i&&Oe(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 y=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}}}gr(e,c,b)}if(!y){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));!y&&!b&&e.state.env.delete(c)}ze(e,c),i&&Oe(e,c)}return P("",n,r)}function an(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,h=0,
|
|
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),
|
|
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
|
|
519
|
-
`,a="",o=-1,l=-1,u=null,c=-1,f=-1,d=[],h=0,
|
|
520
|
-
`){
|
|
521
|
-
`){C+=2;continue}if(O===b){v+=O,C+=2;continue}v+=
|
|
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,m=0,p=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let v=d.indexOf(n);if(v===-1){if(d.length>0){if(m<a)m++;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),m<a){m++;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 y=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(y,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),P("","",0)}function Da(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 Ta(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function on(e,t,s,n=-1){let r=!1,i=`
|
|
519
|
+
`,a="",o=-1,l=-1,u=null,c=-1,f=-1,d=[],h=0,m=!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)&&(m=!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)&&(m=!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)&&(m=!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)&&(m=!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(m)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 y=s;c>=0?e.state.fileDescriptors?y=e.state.fileDescriptors.get(c)||"":y="":!y&&e.state.groupStdin!==void 0&&(y=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,y.substring(C));else if(n>=0&&e.state.fileDescriptors){let N=e.state.fileDescriptors.get(n);if(N?.startsWith("__rw__:")){let O=Da(N);if(O){let S=O.position+C;e.state.fileDescriptors.set(n,Ta(O.path,S,O.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=y.substring(C))};if(l>=0){let C=Math.min(l,y.length);v=y.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<y.length&&C<o;){let S=y[N];if(S===b){A=N+1,O=!0;break}if(!r&&S==="\\"&&N+1<y.length){let D=y[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<y.length;){let N=y[C];if(N===b){A=C+b.length,g=!0;break}if(!r&&N==="\\"&&C+1<y.length){let O=y[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>=y.length&&(g=!1,A=C,v.length===0&&y.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 $=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=
|
|
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:
|
|
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=xn(e.state.env);if(u){let{words:C}=ps(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}=ps(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=Rn(O,E,r),O=$(O),e.state.env.set(N,O)}else e.state.env.set(N,"")}return P("","",g?0:1)}function ln(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 es=`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,73 +538,73 @@ Options:
|
|
|
538
538
|
+o pipefail Disable pipefail
|
|
539
539
|
-o xtrace Same as -x
|
|
540
540
|
+o xtrace Disable xtrace
|
|
541
|
-
`,
|
|
541
|
+
`,xr=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]]),Rr=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]]),Lr=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Fr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Mr(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 Ia(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function xa(e,t){let s=ne(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${Ue(i)}`});return`${t}=(${n.join(" ")})`}function Ra(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function La(e,t){let s=Le(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${Ra(r)}]=${Ue(i)}`});return`${t}=(${n.join(" ")} )`}function Fa(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 Ma(e){return e.state.associativeArrays??new Set}function un(e,t){if(t.includes("--help"))return F(es);if(t.length===0){let n=Fa(e),r=Ma(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}=${Yt(u)}`);for(let l of[...n].sort((u,c)=>u<c?-1:u>c?1:0))o.push(xa(e,l));for(let l of[...r].sort((u,c)=>u<c?-1:u>c?1:0))o.push(La(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")&&Ia(t,s)){let r=t[s+1];if(!Rr.has(r)){let i=`bash: set: ${r}: invalid option name
|
|
544
|
+
${es}`;if(e.state.options.posix)throw new we(1,"",i);return _(i)}Mr(e,Rr.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=Lr.map(o=>`${o.padEnd(16)}${e.state.options[o]?"on":"off"}`),i=Fr.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=Lr.map(o=>`set ${e.state.options[o]?"-o":"+o"} ${o}`),i=Fr.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
|
-
${
|
|
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(!xr.has(a)){let o=`bash: set: ${n[0]}${a}: invalid option
|
|
549
|
+
${es}`;if(e.state.options.posix)throw new we(1,"",o);return _(o)}Mr(e,xr.get(a)??null,r)}s++;continue}if(n==="--")return cn(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 cn(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
|
+
${es}`;if(e.state.options.posix)throw new we(1,"",r);return _(r)}return cn(e,t.slice(s)),L}return L}function cn(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 fn(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
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
|
|
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 dn(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
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
|
|
556
|
-
`,r=1;continue}let v=await
|
|
555
|
+
`);throw u}}function Wr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Wa(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function zr(e,t){if(Wa(t))return null;try{let s=new V,n=Q(s,t);return await j(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function Vr(e,t){if(e.state.localVarStack?.has(t)){let n=Gt(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)qt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),hn(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),qt(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||qt(e,t),!0}}return!1}function hn(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 Br(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 pn(e,t){let s="both",n="",r=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let 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 m=e.state.associativeArrays?.has(d);if(m){let A=await Br(e,h);e.state.env.delete(`${d}_${A}`);continue}let p=gs(e,d),y=e.state.declaredVars?.has(d);if((e.state.env.has(d)||y)&&!p&&!m){n+=`bash: unset: ${d}: not an array variable
|
|
556
|
+
`,r=1;continue}let v=await zr(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
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(!
|
|
560
|
-
`,r=1;continue}let c=i;if(me(e,i)){let d=
|
|
561
|
-
`,r=1;continue}let f=rt(e,c);if(f!==void 0&&f!==e.state.callDepth)
|
|
562
|
-
`,r=1;continue}let
|
|
563
|
-
`,r=1;continue}if(
|
|
564
|
-
`,r=1;continue}let v=m
|
|
565
|
-
`,r=1;continue}let A=p[v][0];e.state.env.delete(`${u}_${A}`);continue}e.state.env.delete(`${u}_${
|
|
566
|
-
`,r=1;continue}let o=i;if(me(e,i)){let u=
|
|
567
|
-
`,r=1;continue}let l=rt(e,o);if(l!==void 0&&l!==e.state.callDepth)
|
|
568
|
-
`}}}l++}else break}for(;l<t.length;)o.push(t[l]),l++;if(a)return
|
|
569
|
-
`};if(o.length===0){if(s||n){let h=[];for(let
|
|
559
|
+
`,r=1;continue}let E=A[$][0];e.state.env.delete(`${d}_${E}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!Wr(i)){n+=`bash: unset: \`${i}': not a valid identifier
|
|
560
|
+
`,r=1;continue}let c=i;if(me(e,i)){let d=Fe(e,i);d&&d!==i&&(c=d)}if(je(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)Vr(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 m=Gt(e,c);m?m.value===void 0?e.state.env.delete(c):e.state.env.set(c,m.value):e.state.env.delete(c)}else e.state.env.delete(c)}else hn(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[y]of p)e.state.env.delete(`${u}_${y}`);e.state.env.delete(u);continue}let f=e.state.associativeArrays?.has(u);if(f){let p=await Br(e,c);e.state.env.delete(`${u}_${p}`);continue}let d=gs(e,u);if(e.state.env.has(u)&&!d&&!f){n+=`bash: unset: ${u}: not an array variable
|
|
562
|
+
`,r=1;continue}let m=await zr(e,c);if(m===null&&d){n+=`bash: unset: ${c}: not a valid identifier
|
|
563
|
+
`,r=1;continue}if(m===null)continue;if(m<0){let p=$e(e,u),y=p.length,b=e.state.currentLine;if(y===0){n+=`bash: line ${b}: unset: [${m}]: bad array subscript
|
|
564
|
+
`,r=1;continue}let v=y+m;if(v<0){n+=`bash: line ${b}: unset: [${m}]: bad array subscript
|
|
565
|
+
`,r=1;continue}let A=p[v][0];e.state.env.delete(`${u}_${A}`);continue}e.state.env.delete(`${u}_${m}`);continue}if(!Wr(i)){n+=`bash: unset: \`${i}': not a valid identifier
|
|
566
|
+
`,r=1;continue}let o=i;if(me(e,i)){let u=Fe(e,i);u&&u!==i&&(o=u)}if(je(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)Vr(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=Gt(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 hn(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return P("",n,r)}var mn=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],za=["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 ts(e){return mn.includes(e)}function Va(e){return za.includes(e)}function jr(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 m=d[h];switch(m){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: -${m}: invalid option
|
|
568
|
+
`}}}l++}else break}for(;l<t.length;)o.push(t[l]),l++;if(a)return Ba(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 m of mn){let p=e.state.shoptOptions[m];s&&p?h.push(r?`shopt -s ${m}`:`${m} on`):n&&!p&&h.push(r?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
|
|
570
570
|
`)}
|
|
571
|
-
`:"",stderr:""}}let d=[];for(let h of
|
|
571
|
+
`:"",stderr:""}}let d=[];for(let h of mn){let m=e.state.shoptOptions[h];d.push(r?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"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(!ts(d)&&!Va(d)){c+=`shopt: ${d}: invalid shell option name
|
|
574
|
+
`,u=!0;continue}if(s)ts(d)&&(e.state.shoptOptions[d]=!0,As(e));else if(n)ts(d)&&(e.state.shoptOptions[d]=!1,As(e));else if(ts(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 Ba(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 m=o.includes(h),p=a.get(h),y=m||!p?!1:e.state.options[p];s&&!y||n&&y||d.push(r?`set ${y?"-o":"+o"} ${h}`:`${h} ${y?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
|
|
577
577
|
`)}
|
|
578
|
-
`:"",stderr:""}}let u=!1,c="",f=[];for(let d of t){let h=a.has(d),
|
|
579
|
-
`,u=!0;continue}if(
|
|
578
|
+
`:"",stderr:""}}let u=!1,c="",f=[];for(let d of t){let h=a.has(d),m=o.includes(d);if(!h&&!m){c+=`shopt: ${d}: invalid option name
|
|
579
|
+
`,u=!0;continue}if(m){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 y=e.state.options[p];i?y||(u=!0):r?(f.push(`set ${y?"-o":"+o"} ${d}`),y||(u=!0)):(f.push(`${d} ${y?"on":"off"}`),y||(u=!0))}}return{exitCode:u?1:0,stdout:f.length>0?`${f.join(`
|
|
580
580
|
`)}
|
|
581
|
-
`:"",stderr:c}}async function
|
|
582
|
-
`;h=!0,
|
|
583
|
-
`,h=!0,
|
|
584
|
-
`;else{let $=e.state.functions.get(p),E=$?
|
|
585
|
-
`;c+=E}
|
|
581
|
+
`:"",stderr:c}}async function Hr(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 ss(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 ja(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 ja(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 Ha(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 Ur(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,n={...e,fs:Ha(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 Kr(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 y of p.slice(1))y==="t"?r=!0:y==="p"?i=!0:y==="P"?a=!0:y==="a"?o=!0:y==="f"&&(l=!0);else u.push(p);let c="",f="",d=0,h=!1,m=!1;for(let p of u){let y=!1;if(a){if(o){let $=await n(p);if($.length>0){for(let E of $)c+=`${E}
|
|
582
|
+
`;h=!0,y=!0}}else{let $=await s(p);$&&(c+=`${$}
|
|
583
|
+
`,h=!0,y=!0)}y||(m=!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=$?Zr(p,$):`${p} is a function
|
|
585
|
+
`;c+=E}y=!0}let v=e.state.env.get(`BASH_ALIAS_${p}`);if(v!==void 0&&(o||!y)&&(i||(r?c+=`alias
|
|
586
586
|
`:c+=`${p} is aliased to \`${v}'
|
|
587
|
-
`),
|
|
587
|
+
`),y=!0,!o)||Ts.has(p)&&(o||!y)&&(i||(r?c+=`keyword
|
|
588
588
|
`:c+=`${p} is a shell keyword
|
|
589
|
-
`),
|
|
590
|
-
`;else{let $=e.state.functions.get(p),E=$?
|
|
591
|
-
`;c+=E}
|
|
589
|
+
`),y=!0,!o))continue;if(!o&&b&&!y){if(!i)if(r)c+=`function
|
|
590
|
+
`;else{let $=e.state.functions.get(p),E=$?Zr(p,$):`${p} is a function
|
|
591
|
+
`;c+=E}y=!0;continue}if(!(it.has(p)&&(o||!y)&&(i||(r?c+=`builtin
|
|
592
592
|
`:c+=`${p} is a shell builtin
|
|
593
|
-
`),
|
|
593
|
+
`),y=!0,!o))){if(o){let $=await n(p);for(let E of $)i?c+=`${E}
|
|
594
594
|
`:r?c+=`file
|
|
595
595
|
`:c+=`${p} is ${E}
|
|
596
|
-
`,h=!0,
|
|
596
|
+
`,h=!0,y=!0}else if(!y){let $=await s(p);$&&(i?c+=`${$}
|
|
597
597
|
`:r?c+=`file
|
|
598
598
|
`:c+=`${p} is ${$}
|
|
599
|
-
`,h=!0,
|
|
600
|
-
`)}}}return i?d=
|
|
599
|
+
`,h=!0,y=!0)}if(!y&&(m=!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=m&&!h?1:0:d=m?1:0,P(c,f,d)}function Zr(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 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(
|
|
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(Ua(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(qr(t.name));for(let n of t.args)s.push(qr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>yt(n)).join("; ")}; }`:"..."}function Ua(e){let t=e.commands.map(s=>yt(s));return(e.negated?"! ":"")+t.join(" | ")}function qr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>Gr(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=Gr(s);return t}function Gr(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function Xr(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(Ts.has(o))n?r+=`${o} is a shell keyword
|
|
608
608
|
`:r+=`${o}
|
|
609
609
|
`;else if(it.has(o))n?r+=`${o} is a shell builtin
|
|
610
610
|
`:r+=`${o}
|
|
@@ -613,109 +613,109 @@ ${e} ()
|
|
|
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 h=`${d}/${o}`;try{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 m=await e.fs.stat(h);if(!m.isDirectory&&(m.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 Yr(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 Qr(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 en(l,s);if(t==="unset")return pn(l,s);if(t==="exit")return Js(l,s);if(t==="local")return rn(l,s);if(t==="set")return un(l,s);if(t==="break")return Cs(l,s);if(t==="continue")return Ws(l,s);if(t==="return")return ln(l,s);if(t==="eval"&&l.state.options.posix)return Qt(l,s,r);if(t==="shift")return fn(l,s);if(t==="getopts")return Jt(l,s);if(t==="compgen")return Rs(l,s);if(t==="complete")return Fs(l,s);if(t==="compopt")return Ms(l,s);if(t==="pushd")return await Xs(l,s);if(t==="popd")return Ys(l,s);if(t==="dirs")return Qs(l,s);if(t==="source"||t===".")return dn(l,s);if(t==="read")return on(l,s,r,o);if(t==="mapfile"||t==="readarray")return an(l,s,r);if(t==="declare"||t==="typeset")return qs(l,s);if(t==="readonly")return Gs(l,s);if(!i){let c=l.state.functions.get(t);if(c)return Xt(l,c,s,r)}if(t==="eval")return Qt(l,s,r);if(t==="cd")return await Ps(l,s);if(t===":"||t==="true")return L;if(t==="false")return X(!1);if(t==="let")return nn(l,s);if(t==="command")return Za(e,s,r);if(t==="builtin")return qa(e,s,r);if(t==="shopt")return jr(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 Kr(l,s,c=>Yr(l,c),c=>ss(l,c));if(t==="hash")return tn(l,s);if(t==="help")return sn(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 Za(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 Xr(n,l,o,a);let[u,...c]=l;return r(u,c,[],s,!0,i,-1)}async function qa(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 Jr(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e,u=await Hr(i,t,r?"/usr/bin:/bin":void 0);if(!u)return ar(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||"",h=a(),
|
|
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 _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
|
|
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(),m={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:h,stdin:d,limits:i.limits,exec:i.execFn,fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext,jsBootstrapCode:i.jsBootstrapCode},p=Ur(m,t);try{let y=()=>Cn(i.requireDefenseContext,"command",`${t} execution`,()=>c.execute(s,p));return c.trusted?await ge.runTrustedAsync(()=>y()):await y()}catch(y){if(y instanceof Y||y instanceof Ke)throw y;return _(`${t}: ${xe(ve(y))}
|
|
625
|
+
`)}}async function yn(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 ns(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 Ie)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 ei(e,t){let s="",n="";for(let r of t.clauses){let i=await yn(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return ns(e,r.body,s,n)}return t.elseBody?ns(e,t.elseBody,s,n):P(s,n,0)}async function ti(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 si(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 j(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 j(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 j(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 j(e,t.update.expression)}}finally{e.state.loopDepth--}let l=P(r,i,a);return Z(e,l,t.redirections)}async function ni(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&&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
|
|
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 m=await e.executeStatement(h);n+=m.stdout,r+=m.stderr,u=m.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 m=await e.executeStatement(h);n+=m.stdout,r+=m.stderr,i=m.exitCode}}catch(h){let m=gt(h,n,r,e.state.loopDepth);if(n=m.stdout,r=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return P(n,r,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return P(n,r,i)}async function ri(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 yn(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 ii(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);Bn(d)&&(h=zn(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(nt(a,h,m,p)){f=!0;break}}if(f){let d=await ns(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 gn(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function ai(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 oi="+ ";async function li(e){let t=e.state.env.get("PS4");if(t===void 0)return oi;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||oi}}function Ga(e){return e.map(t=>Ka(t)).join(" ")}function Ka(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 ci(e,t,s){if(!e.state.options.xtrace)return"";let n=await li(e),r=[t,...s],i=Ga(r);return`${n}${i}
|
|
636
|
+
`}async function ui(e,t,s){return e.state.options.xtrace?`${await li(e)}${t}=${s}
|
|
637
|
+
`:""}async function fi(e,t,s){let n=t.timed?us():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],m=d===t.commands.length-1,p=d===0;u&&(e.state.lastArg="",p||(e.state.groupStdin=void 0));let b=u&&(!m||!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),m?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=(us()-n)/1e3,m=Math.floor(h/60),p=h%60,y;t.timePosix?y=`real ${h.toFixed(2)}
|
|
638
638
|
user 0.00
|
|
639
639
|
sys 0.00
|
|
640
|
-
`:
|
|
641
|
-
real ${`${
|
|
640
|
+
`:y=`
|
|
641
|
+
real ${`${m}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=ee(e,s);if(c)return{continueToNext:!1,xtraceOutput:"",error:c}}let o=e.state.associativeArrays?.has(s),l=
|
|
649
|
-
`)}}async function
|
|
650
|
-
`,1)};o=f}}if(
|
|
644
|
+
`,i={...i,stderr:i.stderr+y}}return u&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=c),i}async function di(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let c=await Xa(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 to(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 no(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 Xa(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=Mn(e,s);if(c===void 0||c==="")throw new B(1,"","");let f=Fe(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(je(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=Ya(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 Qa(e,t,s,n,r,u,c=>{a+=c}):l?await Ja(e,s,n,r,u):await eo(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 Ya(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 Qa(e,t,s,n,r,i,a){let o=[];for(let l of n){let u=hs(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 Ja(e,t,s,n,r){let i=[];for(let o of s){let l=hs(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 j(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 eo(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 to(e,t,s,n,r,i,a){let o=s;if(me(e,s)){let f=Fe(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(je(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 hi(e,o,n);else{let f=await so(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 hi(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 so(e,t,s){let n=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(n=s.slice(1,-1));let r;if(/^-?\d+$/.test(n))r=Number.parseInt(n,10);else{try{let i=new V,a=Q(i,n);r=await j(e,a.expression,!1)}catch(i){if(i instanceof Be){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
|
|
651
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=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})`,
|
|
656
|
-
`,1);return Z(e,T,t.redirections)}w();let $=P(v,A,g);return Z(e,$,t.redirections)}async function
|
|
653
|
+
`,1)}}}return{index:r}}async function no(e,t,s,n,r,i){let a="",o=s,l=null;if(me(e,s)){let f=Wn(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(je(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})`,m=Q(f,h);u=String(await j(e,m.expression))}else{let d=Q(f,n);u=String(await j(e,d.expression))}}catch{u="0"}else{let{isArray:f}=await import("./chunks/expansion-2RO5M3QC.js"),d=f(e,o)?`${o}_0`:o;u=r?(e.state.env.get(d)||"")+n:n}u=ot(e,o,u),a+=await ui(e,o,u);let c=o;if(l)c=await ro(e,l);else{let{isArray:f}=await import("./chunks/expansion-2RO5M3QC.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 ro(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return hi(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let a=new V,o=Q(a,n);i=await j(e,o.expression,!1)}catch{let a=e.state.env.get(n);i=a?Number.parseInt(a,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let a=$e(e,s);a.length>0&&(i=Math.max(...a.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function pi(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,m=e.state.parentHasLoopContext;e.state.parentHasLoopContext=h>0,e.state.loopDepth=0;let p=e.state.lastArg,y=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=m,e.state.groupStdin=b,e.state.bashPid=y,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 Ie){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 mi(e,t,s,n){let r="",i="",a=0,o=await Kt(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
657
|
`).map(p=>p.replace(/^\t+/,"")).join(`
|
|
658
|
-
`));let
|
|
658
|
+
`));let m=f.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),ae(e),e.state.fileDescriptors.set(m,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await I(e,f.target)}
|
|
659
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
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
|
|
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
|
|
661
|
+
`,1)}e.state.groupStdin=u;let c=P(r,i,a);return Z(e,c,t.redirections)}async function yi(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 y=i.indexOf(`
|
|
663
|
+
`);y!==-1&&(i=i.slice(y+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,m=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 y=0;y<s.length&&y<9;y++)e.state.env.set(String(y+1),s[y]);for(let y=s.length+1;y<=9;y++)e.state.env.delete(String(y));let 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=m};try{let b=new V().parse(i),v=await r(b);return p(),v}catch(y){if(p(),y instanceof B||y instanceof Y)throw y;if(y.name==="ParseException")return _(`bash: ${t}: ${y.message}
|
|
664
|
+
`);throw y}}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,jsBootstrapCode:t.jsBootstrapCode}}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:Re(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:Re(this.ctx.state.env)};if(l instanceof An)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:Re(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:Re(this.ctx.state.env)};if(l instanceof Be){a(l.stdout,l.stderr),r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(l instanceof _n){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:Re(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return yi(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 fi(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 ei(this.ctx,t);case"For":return ti(this.ctx,t);case"CStyleFor":return si(this.ctx,t);case"While":return ni(this.ctx,t,s);case"Until":return ri(this.ctx,t);case"Case":return ii(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return $r(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 di(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&&gn(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 Kt(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
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
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=
|
|
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=ai(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(gn(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 rr(this.ctx,g);if(w)f.push(w),d.push(!0);else{let $=await ir(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
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
|
|
672
|
-
`);return Z(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await
|
|
673
|
-
`,r);return Z(this.ctx,i,t.redirections)}}};var
|
|
674
|
-
${
|
|
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 Se(e){return e.length===0?"":` ${e.map(
|
|
678
|
-
`)}function
|
|
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}if(this.ctx.state.extraArgs){f.push(...this.ctx.state.extraArgs);for(let g=0;g<this.ctx.state.extraArgs.length;g++)d.push(!0);this.ctx.state.extraArgs=void 0}let m=await ci(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,y=null;try{p=await this.runCommand(c,f,d,s,!1,!1,u)}catch(g){if(g instanceof fe||g instanceof de)y=g,p=L;else throw g}let b=i+m;if(b&&(p={...p,stderr:b+p.stderr}),p=await Z(this.ctx,p,t.redirections),y)throw y;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=vr(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,m,p,y)=>this.runCommand(c,f,d,h,m,p,y),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(c,f,d)=>this.executeUserScript(c,f,d)},u=await Qr(l,t,s,n,r,i,a,o);return u!==null?u:Jr(l,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return _s(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return ss(this.ctx,t)}async executeSubshell(t,s=""){return pi(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return mi(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 j(this.ctx,t.expression.expression),r=X(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),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 We(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 Be?1:2,i=_(`bash: conditional expression: ${n.message}
|
|
673
|
+
`,r);return Z(this.ctx,i,t.redirections)}}};var te={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:1e4,maxJsTimeoutMs:1e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50,maxBraceExpansionResults:1e4,maxOutputSize:10485760,maxFileDescriptors:1024,maxSourceDepth:100};function gi(e){return e?{maxCallDepth:e.maxCallDepth??te.maxCallDepth,maxCommandCount:e.maxCommandCount??te.maxCommandCount,maxLoopIterations:e.maxLoopIterations??te.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??te.maxAwkIterations,maxSedIterations:e.maxSedIterations??te.maxSedIterations,maxJqIterations:e.maxJqIterations??te.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??te.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??te.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??te.maxJsTimeoutMs,maxGlobOperations:e.maxGlobOperations??te.maxGlobOperations,maxStringLength:e.maxStringLength??te.maxStringLength,maxArrayElements:e.maxArrayElements??te.maxArrayElements,maxHeredocSize:e.maxHeredocSize??te.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??te.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??te.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??te.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??te.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??te.maxSourceDepth}:{...te}}import{lookup as fo}from"node:dns";function wn(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function io(e){let t=wn(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function ao(e,t){let s=wn(e);if(!s)return!1;let n=io(t);return!n||s.origin!==n.origin?!1:n.pathPrefix==="/"||n.pathPrefix===""?!0:s.pathname.startsWith(n.pathPrefix)}function wi(e,t){return!t||t.length===0?!1:t.some(s=>ao(e,s))}function vn(e){let t=oo(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=vi(t);if(s)return rs(s);let n=co(t);return n?uo(n):!1}function oo(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function lo(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 vi(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>lo(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 co(e){let t=e,s=null;if(t.includes(".")){let p=t.lastIndexOf(":");if(p<0)return null;let y=t.slice(p+1),b=vi(y);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 m=[...u,...new Array(h).fill(0),...c];return s&&(m.push(s[0]<<8|s[1]),m.push(s[2]<<8|s[3])),m.length===8?m:null}function rs(e){let[t,s]=e;return t===127||t===10||t===172&&s>=16&&s<=31||t===192&&s===168||t===169&&s===254||t===0||t===100&&s>=64&&s<=127||t===198&&(s===18||s===19)||t===192&&s===0&&e[2]===0||t===192&&s===0&&e[2]===2||t===198&&s===51&&e[2]===100||t===203&&s===0&&e[2]===113||t>=240}function uo(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 rs(r)}if(e[0]===8193&&e[1]===3512)return!0;if(e[0]===100&&e[1]===65435&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===0){let r=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return rs(r)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let r=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return rs(r)}return!1}function bi(e){let t=[];for(let s of e){if(!wn(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 ke=class extends Error{constructor(t,s){let n=s??"URL not in allow-list";super(`Network access denied: ${n}: ${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"}},is=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"}};function ho(e){return new Promise((t,s)=>{fo(e,{all:!0},(n,r)=>{n?s(n):t(r)})})}var po=20,mo=3e4,yo=10485760,go=["GET","HEAD"],wo=new Set(["GET","HEAD","OPTIONS"]),vo=new Set([301,302,303,307,308]);function bn(e){if(!e.dangerouslyAllowFullInternetAccess){let c=bi(e.allowedUrlPrefixes??[]);if(c.length>0)throw new Error(`Invalid network allow-list:
|
|
674
|
+
${c.join(`
|
|
675
|
+
`)}`)}let t=e.maxRedirects??po,s=e.timeoutMs??mo,n=e.maxResponseSize??yo,r=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??go,i=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),a=e._dnsResolve??ho;async function o(c){if(i)try{let f=new URL(c);if(vn(f.hostname))throw new ke(c,"private/loopback IP address blocked");let d=f.hostname;if(/[a-zA-Z]/.test(d))try{let m=await a(d);for(let{address:p}of m)if(vn(p))throw new ke(c,"hostname resolves to private/loopback IP address")}catch(m){if(m instanceof ke)throw m;let p=m?.code;if(!(p==="ENOTFOUND"||p==="ENODATA"))throw new ke(c,"DNS resolution failed for private IP check")}}catch(f){if(f instanceof ke)throw f}if(!e.dangerouslyAllowFullInternetAccess&&!wi(c,e.allowedUrlPrefixes??[]))throw new ke(c)}function l(c){if(e.dangerouslyAllowFullInternetAccess)return;let f=c.toUpperCase();if(!r.includes(f))throw new is(f,r)}async function u(c,f={}){let d=f.method?.toUpperCase()??"GET";await o(c),l(d);let h=c,m=0,p=f.followRedirects??!0,y=f.timeoutMs!==void 0?Math.min(f.timeoutMs,s):s;for(;;){let b=new AbortController,v=En(()=>b.abort(),y);try{let A={method:d,headers:f.headers,signal:b.signal,redirect:"manual"};f.body&&!wo.has(d)&&(A.body=f.body);let g=await ge.runTrustedAsync(()=>fetch(h,A));if(vo.has(g.status)&&p){let w=g.headers.get("location");if(!w)return await $i(g,h,n);let $=new URL(w,h).href;try{await o($)}catch{throw new bt($)}if(m++,m>t)throw new vt(t);h=$;continue}return await $i(g,h,n)}finally{Sn(v)}}}return u}async function $i(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 Ei(e){return qe(e)}function qe(e){return e.statements.map(Si).join(`
|
|
676
|
+
`)}function Si(e){let t=[];for(let n=0;n<e.pipelines.length;n++)t.push(bo(e.pipelines[n])),n<e.operators.length&&t.push(e.operators[n]);let s=t.join(" ");return e.background&&(s+=" &"),s}function bo(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(Ai(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 Ai(e){switch(e.type){case"SimpleCommand":return $o(e);case"If":return Oo(e);case"For":return Do(e);case"CStyleFor":return To(e);case"While":return Io(e);case"Until":return xo(e);case"Case":return Ro(e);case"Subshell":return Fo(e);case"Group":return Mo(e);case"ArithmeticCommand":return Wo(e);case"ConditionalCommand":return zo(e);case"FunctionDef":return Vo(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function $o(e){let t=[];for(let s of e.assignments)t.push(Eo(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(Pi(s));return t.join(" ")}function Eo(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=>as(t,!1)).join("")}function Ve(e){return e.parts.map(t=>as(t,!0)).join("")}function as(e,t){switch(e.type){case"Literal":return t?Ao(e.value):So(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>as(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return _i(e);case"CommandSubstitution":return e.legacy?`\`${qe(e.body)}\``:`$(${qe(e.body)})`;case"ArithmeticExpansion":return`$((${H(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${qe(e.body)})`:`>(${qe(e.body)})`;case"BraceExpansion":return No(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 So(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function Ao(e){return e.replace(/[$`"\\]/g,"\\$&")}function _o(e,t){return e.parts.map(s=>Co(s,t)).join("")}function Co(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return _i(e);case"CommandSubstitution":return e.legacy?`\`${qe(e.body)}\``:`$(${qe(e.body)})`;case"ArithmeticExpansion":return`$((${H(e.expression.expression)}))`;default:return as(e,!1)}}function _i(e){return e.operation?`\${${Ci(e.parameter,e.operation)}}`:Po(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Po(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Ci(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${Ve(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${Ve(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?Ve(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${Ve(t.word)}`;case"Substring":{let s=H(t.offset.expression);return t.length?`${e}:${s}:${H(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",n=t.greedy?`${s}${s}`:s;return`${e}${n}${Ve(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let n=t.replacement?`/${Ve(t.replacement)}`:"";return`${e}${s}${Ve(t.pattern)}${n}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",n=t.all?`${s}${s}`:s,r=t.pattern?Ve(t.pattern):"";return`${e}${n}${r}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Ci(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 No(e){return`{${e.items.map(ko).join(",")}}`}function ko(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 Pi(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(Pi).join(" ")}`}function ye(e){return e.map(Si).join(`
|
|
678
|
+
`)}function Oo(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${Se(e.redirections)}`}function
|
|
682
|
+
fi${Se(e.redirections)}`}function Do(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${Se(e.redirections)}`}function
|
|
684
|
+
done${Se(e.redirections)}`}function To(e){let t=e.init?H(e.init.expression):"",s=e.condition?H(e.condition.expression):"",n=e.update?H(e.update.expression):"";return`for ((${t}; ${s}; ${n})); do
|
|
685
685
|
${ye(e.body)}
|
|
686
|
-
done${Se(e.redirections)}`}function
|
|
686
|
+
done${Se(e.redirections)}`}function Io(e){return`while ${ye(e.condition)}; do
|
|
687
687
|
${ye(e.body)}
|
|
688
|
-
done${Se(e.redirections)}`}function
|
|
688
|
+
done${Se(e.redirections)}`}function xo(e){return`until ${ye(e.condition)}; do
|
|
689
689
|
${ye(e.body)}
|
|
690
|
-
done${Se(e.redirections)}`}function
|
|
690
|
+
done${Se(e.redirections)}`}function Ro(e){let t=e.items.map(Lo).join(`
|
|
691
691
|
`);return`case ${oe(e.word)} in
|
|
692
692
|
${t}
|
|
693
|
-
esac${Se(e.redirections)}`}function
|
|
693
|
+
esac${Se(e.redirections)}`}function Lo(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 Fo(e){return`(${ye(e.body)})${Se(e.redirections)}`}function Mo(e){return`{ ${ye(e.body)}; }${Se(e.redirections)}`}function Wo(e){return`((${H(e.expression.expression)}))${Se(e.redirections)}`}function zo(e){return`[[ ${Ze(e.expression)} ]]${Se(e.redirections)}`}function Vo(e){let t=Ai(e.body);return`${e.name}() ${t}${Se(e.redirections)}`}function H(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${H(e.left)} ${e.operator} ${H(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${H(e.operand)}`:`${H(e.operand)}${e.operator}`;case"ArithTernary":return`${H(e.condition)} ? ${H(e.consequent)} : ${H(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${H(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${H(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${H(e.target)}[${H(e.subscript)}]`:H(e.target)} ${e.operator} ${H(e.value)}`;case"ArithDynamicElement":return`${H(e.nameExpr)}[${H(e.subscript)}]`;case"ArithGroup":return`(${H(e.expression)})`;case"ArithNested":return`$((${H(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${H(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(H).join("");case"ArithDoubleSubscript":return`${e.array}[${H(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function 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 os=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;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=gi({...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=bn(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",Es(this.state.options)),this.state.env.set("BASHOPTS",Ss(this.state.shoptOptions)),Qn(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 Zn(t.commands))this.registerCommand(i);if(t.fetch||t.network)for(let i of qn())this.registerCommand(i);if(t.python)for(let i of Gn())this.registerCommand(i);if(t.javascript){for(let a of Kn())this.registerCommand(a);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap)}if(t.customCommands)for(let i of t.customCommands)Xn(i)?this.registerCommand(Yn(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=
|
|
701
|
-
`,exitCode:1,env:pe(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${
|
|
702
|
-
`,exitCode:2,env:pe(this.state.env,s?.env)});if(f instanceof
|
|
703
|
-
`,exitCode:2,env:pe(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${
|
|
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
|
|
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=ki(t.stdout),t.stderr=ki(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,extraArgs:s?.args},l=t;s?.rawScript||(l=Ni(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=cs(v,g.metadata))}h=v}let m={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,jsBootstrapCode:this.jsBootstrapCode},b=await new wt(m,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 Be)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:xe(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: ${xe(f.message)}
|
|
701
|
+
`,exitCode:1,env:pe(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${xe(f.message)}
|
|
702
|
+
`,exitCode:2,env:pe(this.state.env,s?.env)});if(f instanceof In)return this.logResult({stdout:"",stderr:`bash: ${xe(f.message)}
|
|
703
|
+
`,exitCode:2,env:pe(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${xe(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 Re(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=Ni(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=cs(r,a.metadata))}return{script:Ei(n),ast:n,metadata:r}}};function Ni(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 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",os=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,Pn(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 us(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?_n(t,this.canonicalRoot):Cn(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=kn(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(!us(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"},vn=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new os({root:s,mountPoint:"/"});this.env=new as({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=Ni.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
|
|
706
|
+
`)}var Bo=new TextDecoder("utf-8",{fatal:!0});function ki(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 Bo.decode(s)}catch{return e}}import*as U from"node:fs";import*as ie from"node:path";var jo=["ELOOP","EFBIG","EPERM"],Ho="/home/user/project",ls=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=ie.resolve(t.root);let s=t.mountPoint??Ho;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,kn(this.root,"OverlayFs"),this.canonicalRoot=U.realpathSync(this.root),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let n of t)s+=`/${n}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let r=M(t).split("/").filter(Boolean),i="";for(let a of r)i+=`/${a}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=M(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=M(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=ie.join(this.root,n),i=ie.resolve(r);return fs(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Pn(t,this.canonicalRoot):Nn(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=ie.dirname(t),n=this.resolveRealPath_(s);return n===null?null:ie.join(n,ie.basename(t))}sanitizeError(t,s,n){Dn(t,s,n,jo)}ensureParentDirs(t){let s=Xe(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=M(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)return!1;try{return await U.promises.lstat(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=Me(s);return It(n,r)}async readFileBuffer(t,s=new Set){W(t,"open");let n=M(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.readFileBuffer(a,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.resolveRealPath_(this.toRealPath(n));if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let a=await U.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let u=await U.promises.readlink(i),c=this.realTargetToVirtual(n,u),f=this.resolveSymlink(n,c);return this.readFileBuffer(f,s)}if(a.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&a.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?U.constants.O_RDONLY:U.constants.O_RDONLY|U.constants.O_NOFOLLOW,l=await U.promises.open(i,o);try{let u=await l.readFile();return new Uint8Array(u)}finally{await l.close()}}catch(a){let o=a.code;if(o==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(o==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${t}'`);this.sanitizeError(a,t,"open")}}async writeFile(t,s,n){W(t,"write"),this.assertWritable(`write '${t}'`);let r=M(t);this.ensureParentDirs(r);let i=Me(n),a=Je(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){W(t,"append"),this.assertWritable(`append '${t}'`);let r=M(t),i=Me(n),a=Je(s,i),o;try{o=await this.readFileBuffer(r)}catch{o=new Uint8Array(0)}let l=new Uint8Array(o.length+a.length);l.set(o),l.set(a,o.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){W(t,"stat");let n=M(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.stat(o,s)}let a=0;return r.type==="file"&&(a=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:a,mtime:r.mtime}}let i=this.resolveRealPath_(this.toRealPath(n));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let a=await U.promises.lstat(i);if(a.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let o=await U.promises.readlink(i),l=this.realTargetToVirtual(n,o),u=this.resolveSymlink(n,l);return this.stat(u,s)}return{isFile:a.isFile(),isDirectory:a.isDirectory(),isSymbolicLink:!1,mode:a.mode,size:a.size,mtime:a.mtime}}catch(a){if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(a,t,"stat")}}async lstat(t){W(t,"lstat");let s=M(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await U.promises.lstat(r);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}resolveSymlink(t,s){return Ye(t,s)}realTargetToVirtual(t,s){let n=On(s,this.canonicalRoot);if(n.withinRoot){if(!ie.isAbsolute(s))return s;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,s){W(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let n=M(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=Xe(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let o of this.deleted)if(o.startsWith(i)){let l=o.slice(i.length),u=l.split("/")[0];u&&!l.includes("/",u.length)&&r.add(u)}for(let[o,l]of this.memory)if(o!==s&&o.startsWith(i)){let u=o.slice(i.length),c=u.split("/")[0];c&&!r.has(c)&&!u.includes("/",1)&&n.set(c,{name:c,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let a=this.resolveRealPath_(this.toRealPath(s));if(a)try{if(!this.allowSymlinks&&(await U.promises.lstat(a)).isSymbolicLink()){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);return n}let o=await U.promises.readdir(a,{withFileTypes:!0});for(let l of o)!r.has(l.name)&&!n.has(l.name)&&n.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(o){if(o.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else o.code!=="ENOTDIR"&&this.sanitizeError(o,t,"scandir")}return n}async resolveForReaddir(t,s=!1){let n=M(t),r=new Set,i=s,a=this.memory.get(n);for(;a&&a.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,a.target),a=this.memory.get(n)}if(a)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let l=this.resolveRealPath_(this.toRealPath(n));if(!l)return{normalized:n,outsideOverlay:!0};try{if((await U.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:n,outsideOverlay:!0};let c=await U.promises.readlink(l),f=this.realTargetToVirtual(n,c),d=this.resolveSymlink(n,f);return this.resolveForReaddir(d,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){W(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,a)=>i<a?-1:i>a?1:0)}async readdirWithFileTypes(t){W(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,a)=>i.name<a.name?-1:i.name>a.name?1:0)}async rm(t,s){W(t,"rm"),this.assertWritable(`rm '${t}'`);let n=M(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let a=await this.readdir(n);if(a.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of a){let l=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(l,s)}}}}catch(i){if(i instanceof Error&&(i.message.includes("ENOTEMPTY")||i.message.includes("EISDIR")))throw i}this.memory.delete(n),this.existsOnRealFs(n)&&this.deleted.add(n)}existsOnRealFs(t){let s=this.toRealPath(t),n=this.resolveRealPathParent_(s);if(!n)return!1;try{return U.lstatSync(n),!0}catch{return!1}}async cp(t,s,n){W(t,"cp"),W(s,"cp"),this.assertWritable(`cp '${s}'`);let r=M(t),i=M(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let o=await this.stat(r);if(o.isFile){let l=await this.readFileBuffer(r);await this.writeFile(i,l)}else if(o.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(r);for(let u of l){let c=r==="/"?`/${u}`:`${r}/${u}`,f=i==="/"?`/${u}`:`${i}/${u}`;await this.cp(c,f,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){return Ct(t,s)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let n=this.resolveRealPath_(this.toRealPath(t));if(n)try{let r=U.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(a))continue;s.add(a);let o=ie.join(n,i);U.lstatSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){W(t,"chmod"),this.assertWritable(`chmod '${t}'`);let n=M(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let a=await this.stat(n);if(a.isFile){let o=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:o,mode:s,mtime:new Date})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);W(s,"symlink"),this.assertWritable(`symlink '${s}'`);let n=M(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){W(t,"link"),W(s,"link"),this.assertWritable(`link '${s}'`);let n=M(t),r=M(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let a=await this.stat(n);if(!a.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:a.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){W(t,"readlink");let s=M(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await U.promises.readlink(r);if(!ie.isAbsolute(i)){let a=ie.resolve(ie.dirname(r),i),o;try{o=U.realpathSync(a)}catch{o=a}if(!fs(o,this.canonicalRoot))return ie.basename(i)}return this.realTargetToVirtual(s,i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){W(t,"realpath");let s=M(t),n=new Set,r=async o=>{let l=o==="/"?[]:o.slice(1).split("/"),u="";for(let c of l){if(u=`${u}/${c}`,n.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(u))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(u),d=0,h=40;for(;f&&f.type==="symlink"&&d<h;){if(n.add(u),u=this.resolveSymlink(u,f.target),d++,n.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(u))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(u)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let m=this.toRealPath(u),p=this.resolveRealPath_(m);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(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 U.promises.lstat(y)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(b){if(b.message?.includes("ENOENT")||b.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(b,t,"realpath")}}}}return u||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){W(t,"utimes"),this.assertWritable(`utimes '${t}'`);let r=M(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let a=this.memory.get(r);if(a){a.mtime=n;return}let o=await this.stat(r);if(o.isFile){let l=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:l,mode:o.mode,mtime:n})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:o.mode,mtime:n})}};var se={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"},$n=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new ls({root:s,mountPoint:"/"});this.env=new os({fs:n,cwd:t.cwd||"/",env:{HOME:"/",USER:"user",SHELL:"/bin/bash",TERM:"xterm-256color",...t.env},network:t.network===!0?{dangerouslyAllowFullInternetAccess:!0}:void 0}),this.isInteractive=process.stdin.isTTY===!0,this.rl=Di.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)}`),`${se.green}${se.bold}user@virtual${se.reset}:${se.blue}${se.bold}${n}${se.reset}$ `}async executeCommand(t){let s=t.trim();if(s){if(this.history.push(s),s==="exit"||s.startsWith("exit ")){let n=s.split(/\s+/),r=n[1]?parseInt(n[1],10):0;console.log("exit"),process.exit(r)}this.syncHistory();try{let n=await this.env.exec(s);n.stdout&&process.stdout.write(n.stdout),n.stderr&&process.stderr.write(`${se.red}${n.stderr}${se.reset}`)}catch(n){console.error(`${se.red}Error: ${ve(n)}${se.reset}`)}}}printWelcome(){console.log(`
|
|
709
|
+
${se.cyan}${se.bold}\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
|
|
710
710
|
\u2551 Virtual Shell v1.0 \u2551
|
|
711
711
|
\u2551 A simulated bash environment in TypeScript \u2551
|
|
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${se.reset}
|
|
713
713
|
|
|
714
|
-
${
|
|
714
|
+
${se.dim}Exploring: ${process.cwd()}${se.reset}
|
|
715
715
|
|
|
716
|
-
Type ${
|
|
716
|
+
Type ${se.green}help${se.reset} for available commands, ${se.green}exit${se.reset} to quit.
|
|
717
717
|
Reads from real filesystem, writes stay in memory (OverlayFs).
|
|
718
|
-
`)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function
|
|
718
|
+
`)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function Uo(){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=Oi.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 Zo=Uo(),qo=new $n(Zo);qo.run();
|