just-bash-nx 3.0.8 → 3.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/chunks/{chunk-O3SBI3K7.js → chunk-LT26MLOT.js} +1 -1
- package/dist/bin/chunks/{expansion-E23BQBTL.js → expansion-QVZM74A7.js} +1 -1
- package/dist/bin/default-init.sh +263 -10
- package/dist/bin/just-bash.js +3 -3
- package/dist/bin/shell/chunks/{chunk-O3SBI3K7.js → chunk-LT26MLOT.js} +1 -1
- package/dist/bin/shell/chunks/{expansion-E23BQBTL.js → expansion-QVZM74A7.js} +1 -1
- package/dist/bin/shell/shell.js +3 -3
- package/dist/bundle/browser.js +89 -89
- package/dist/bundle/chunks/{chunk-P7XJZDHE.js → chunk-YRU23GFP.js} +1 -1
- package/dist/bundle/chunks/{expansion-SYCUAUC5.js → expansion-ZG4LQZAI.js} +1 -1
- package/dist/bundle/index.cjs +2 -2
- package/dist/bundle/index.js +3 -3
- package/dist/interpreter/types.d.ts +2 -0
- package/package.json +33 -32
- package/vendor/cpython-emscripten/python.wasm +0 -0
|
@@ -70,4 +70,4 @@ Gid: ${n} ${n} ${n} ${n}
|
|
|
70
70
|
`};let n=await It(e,t),{hasParamExpansion:a,hasCommandSub:i}=Se(r);if((a||i)&&!s&&!q(e.state.env)){let f=T(e.state.env);if(x(n,f).length>1)return{error:`bash: $${Zs(r)}: ambiguous redirect
|
|
71
71
|
`}}if(s||e.state.options.noglob)return{target:n};let o=await Rr(e,t);if(!ne(o,e.state.shoptOptions.extglob))return{target:n};let c=new oe(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations}),u=await c.expand(o);return u.length===0?c.hasFailglob()?{error:`bash: no match: ${n}
|
|
72
72
|
`}:{target:n}:u.length===1?{target:u[0]}:{error:`bash: ${n}: ambiguous redirect
|
|
73
|
-
`}}async function It(e,t){let r=t.parts,s=r.length;if(s===1){let i=await U(e,r[0]);return ce(i,e.limits.maxStringLength,"word expansion"),i}let n=[];for(let i=0;i<s;i++)n.push(await U(e,r[i]));let a=n.join("");return ce(a,e.limits.maxStringLength,"word expansion"),a}async function U(e,t,r=!1){if(t.type==="ParameterExpansion")return qe(e,t,r);let s=Gs(e,t,r);if(s!==null)return s;switch(t.type){case"DoubleQuoted":{let n=[];for(let a of t.parts)n.push(await U(e,a,!0));return n.join("")}case"CommandSubstitution":{let n=Pn(t.body);if(n)try{let h=await Rt(e,n.target),d=h.startsWith("/")?h:`${e.state.cwd}/${h}`,m=await e.fs.readFile(d);e.state.lastExitCode=0,e.state.env.set("?","0");let g=m.replace(/\n+$/,"");return ce(g,e.limits.maxStringLength,"command substitution"),g}catch(h){if(h instanceof L)throw h;return e.state.lastExitCode=1,e.state.env.set("?","1"),""}let a=e.substitutionDepth??0,i=e.limits.maxSubstitutionDepth;if(a>=i)throw new L(`Command substitution nesting limit exceeded (${i})`,"substitution_depth");let l=e.substitutionDepth;e.substitutionDepth=a+1;let o=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let c=new Map(e.state.env),u=e.state.cwd,f=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let h=await e.executeScript(t.body),d=h.exitCode;e.state.env=c,e.state.cwd=u,e.state.suppressVerbose=f,e.state.lastExitCode=d,e.state.env.set("?",String(d)),h.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+h.stderr),e.state.bashPid=o,e.substitutionDepth=l;let m=Pr(h).replace(/\n+$/,"");return ce(m,e.limits.maxStringLength,"command substitution"),m}catch(h){if(e.state.env=c,e.state.cwd=u,e.state.bashPid=o,e.substitutionDepth=l,e.state.suppressVerbose=f,h instanceof L)throw h;if(h instanceof K){e.state.lastExitCode=h.exitCode,e.state.env.set("?",String(h.exitCode)),h.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+h.stderr);let d=Pr({stdout:h.stdout,stdoutKind:h.stdoutKind,stdoutEncoding:h.stdoutEncoding}).replace(/\n+$/,"");return ce(d,e.limits.maxStringLength,"command substitution"),d}throw h}}case"ArithmeticExpansion":{let n=t.expression.originalText;if(n&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(n)){let i=await kn(e,n),l=new V,o=M(l,i);return String(await R(e,o.expression,!0))}return String(await R(e,t.expression.expression,!0))}case"BraceExpansion":{let n=[];for(let a of t.items)if(a.type==="Range"){let i=St(a.start,a.end,a.step,a.startStr,a.endStr);if(i.expanded)n.push(...i.expanded);else return i.literal}else n.push(await Rt(e,a.word));return n.join(" ")}default:return""}}async function qe(e,t,r=!1){let{parameter:s}=t,{operation:n}=t,a=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let[,h,d]=a;if(e.state.associativeArrays?.has(h)||d.includes("$(")||d.includes("`")||d.includes("${")){let g=await At(e,d);s=`${h}[${g}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)&&W(e,s)){let h=he(e,s);if(h&&h!==s){let d=h.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(d){let[,m,g]=d;if(e.state.associativeArrays?.has(m)||g.includes("$(")||g.includes("`")||g.includes("${")){let A=await At(e,g);s=`${m}[${A}]`}}}}let i=n&&(n.type==="DefaultValue"||n.type==="AssignDefault"||n.type==="UseAlternative"||n.type==="ErrorIfUnset"),l=!1;i&&(l=!await X(e,s));let o=i?l?"":await v(e,s,!1):await v(e,s,!0);if(!n)return o;i||(l=!await X(e,s));let{isEmpty:c,effectiveValue:u}=Vn(e,s,o,r),f={value:o,isUnset:l,isEmpty:c,effectiveValue:u,inDoubleQuotes:r};switch(n.type){case"DefaultValue":return Rn(e,n,f,Y);case"AssignDefault":return In(e,s,n,f,Y);case"ErrorIfUnset":return vn(e,s,n,f,Y);case"UseAlternative":return Dn(e,n,f,Y);case"PatternRemoval":{let h=await xn(e,o,n,Y,U);return ce(h,e.limits.maxStringLength,"pattern removal"),h}case"PatternReplacement":{let h=await _n(e,o,n,Y,U);return ce(h,e.limits.maxStringLength,"pattern replacement"),h}case"Length":return $n(e,s,o);case"LengthSliceError":throw new re(s);case"BadSubstitution":throw new re(n.text);case"Substring":return Cn(e,s,o,n);case"CaseModification":{let h=await On(e,o,n,Y,qe);return ce(h,e.limits.maxStringLength,"case modification"),h}case"Transform":return Ln(e,s,o,l,n);case"Indirection":return Wn(e,s,o,l,n,qe,r);case"ArrayKeys":return Tn(e,n);case"VarNamePrefix":return Mn(e,n);default:return o}}export{Li as a,Wi as b,de as c,G as d,M as e,V as f,Ai as g,gt as h,Mi as i,yt as j,Vi as k,An as l,T as m,Bi as n,Fi as o,W as p,Gi as q,Qi as r,Zi as s,Ui as t,ds as u,he as v,be as w,Hi as x,P as y,we as z,v as A,J as B,wt as C,Aa as D,Nt as E,Sa as F,ba as G,wa as H,Il as I,Rt as J,vl as K,Dl as L,xl as M,Us as N,_l as O,R as P};
|
|
73
|
+
`}}async function It(e,t){let r=t.parts,s=r.length;if(s===1){let i=await U(e,r[0]);return ce(i,e.limits.maxStringLength,"word expansion"),i}let n=[];for(let i=0;i<s;i++)n.push(await U(e,r[i]));let a=n.join("");return ce(a,e.limits.maxStringLength,"word expansion"),a}async function U(e,t,r=!1){if(t.type==="ParameterExpansion")return qe(e,t,r);let s=Gs(e,t,r);if(s!==null)return s;switch(t.type){case"DoubleQuoted":{let n=[];for(let a of t.parts)n.push(await U(e,a,!0));return n.join("")}case"CommandSubstitution":{let n=Pn(t.body);if(n){e.state.commandSubstitutionUsed=!0;try{let h=await Rt(e,n.target),d=h.startsWith("/")?h:`${e.state.cwd}/${h}`,m=await e.fs.readFile(d);e.state.lastExitCode=0,e.state.env.set("?","0");let g=m.replace(/\n+$/,"");return ce(g,e.limits.maxStringLength,"command substitution"),g}catch(h){if(h instanceof L)throw h;return e.state.lastExitCode=1,e.state.env.set("?","1"),""}}e.state.commandSubstitutionUsed=!0;let a=e.substitutionDepth??0,i=e.limits.maxSubstitutionDepth;if(a>=i)throw new L(`Command substitution nesting limit exceeded (${i})`,"substitution_depth");let l=e.substitutionDepth;e.substitutionDepth=a+1;let o=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let c=new Map(e.state.env),u=e.state.cwd,f=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let h=await e.executeScript(t.body),d=h.exitCode;e.state.env=c,e.state.cwd=u,e.state.suppressVerbose=f,e.state.lastExitCode=d,e.state.env.set("?",String(d)),h.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+h.stderr),e.state.bashPid=o,e.substitutionDepth=l;let m=Pr(h).replace(/\n+$/,"");return ce(m,e.limits.maxStringLength,"command substitution"),m}catch(h){if(e.state.env=c,e.state.cwd=u,e.state.bashPid=o,e.substitutionDepth=l,e.state.suppressVerbose=f,h instanceof L)throw h;if(h instanceof K){e.state.lastExitCode=h.exitCode,e.state.env.set("?",String(h.exitCode)),h.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+h.stderr);let d=Pr({stdout:h.stdout,stdoutKind:h.stdoutKind,stdoutEncoding:h.stdoutEncoding}).replace(/\n+$/,"");return ce(d,e.limits.maxStringLength,"command substitution"),d}throw h}}case"ArithmeticExpansion":{let n=t.expression.originalText;if(n&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(n)){let i=await kn(e,n),l=new V,o=M(l,i);return String(await R(e,o.expression,!0))}return String(await R(e,t.expression.expression,!0))}case"BraceExpansion":{let n=[];for(let a of t.items)if(a.type==="Range"){let i=St(a.start,a.end,a.step,a.startStr,a.endStr);if(i.expanded)n.push(...i.expanded);else return i.literal}else n.push(await Rt(e,a.word));return n.join(" ")}default:return""}}async function qe(e,t,r=!1){let{parameter:s}=t,{operation:n}=t,a=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let[,h,d]=a;if(e.state.associativeArrays?.has(h)||d.includes("$(")||d.includes("`")||d.includes("${")){let g=await At(e,d);s=`${h}[${g}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)&&W(e,s)){let h=he(e,s);if(h&&h!==s){let d=h.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(d){let[,m,g]=d;if(e.state.associativeArrays?.has(m)||g.includes("$(")||g.includes("`")||g.includes("${")){let A=await At(e,g);s=`${m}[${A}]`}}}}let i=n&&(n.type==="DefaultValue"||n.type==="AssignDefault"||n.type==="UseAlternative"||n.type==="ErrorIfUnset"),l=!1;i&&(l=!await X(e,s));let o=i?l?"":await v(e,s,!1):await v(e,s,!0);if(!n)return o;i||(l=!await X(e,s));let{isEmpty:c,effectiveValue:u}=Vn(e,s,o,r),f={value:o,isUnset:l,isEmpty:c,effectiveValue:u,inDoubleQuotes:r};switch(n.type){case"DefaultValue":return Rn(e,n,f,Y);case"AssignDefault":return In(e,s,n,f,Y);case"ErrorIfUnset":return vn(e,s,n,f,Y);case"UseAlternative":return Dn(e,n,f,Y);case"PatternRemoval":{let h=await xn(e,o,n,Y,U);return ce(h,e.limits.maxStringLength,"pattern removal"),h}case"PatternReplacement":{let h=await _n(e,o,n,Y,U);return ce(h,e.limits.maxStringLength,"pattern replacement"),h}case"Length":return $n(e,s,o);case"LengthSliceError":throw new re(s);case"BadSubstitution":throw new re(n.text);case"Substring":return Cn(e,s,o,n);case"CaseModification":{let h=await On(e,o,n,Y,qe);return ce(h,e.limits.maxStringLength,"case modification"),h}case"Transform":return Ln(e,s,o,l,n);case"Indirection":return Wn(e,s,o,l,n,qe,r);case"ArrayKeys":return Tn(e,n);case"VarNamePrefix":return Mn(e,n);default:return o}}export{Li as a,Wi as b,de as c,G as d,M as e,V as f,Ai as g,gt as h,Mi as i,yt as j,Vi as k,An as l,T as m,Bi as n,Fi as o,W as p,Gi as q,Qi as r,Zi as s,Ui as t,ds as u,he as v,be as w,Hi as x,P as y,we as z,v as A,J as B,wt as C,Aa as D,Nt as E,Sa as F,ba as G,wa as H,Il as I,Rt as J,vl as K,Dl as L,xl as M,Us as N,_l as O,R as P};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as c,B as d,C as e,I as f,J as g,K as h,L as i,M as j,N as k,O as l,y as a,z as b}from"./chunk-
|
|
1
|
+
import{A as c,B as d,C as e,I as f,J as g,K as h,L as i,M as j,N as k,O as l,y as a,z as b}from"./chunk-YRU23GFP.js";import"./chunk-B74TABJS.js";import"./chunk-AH77CRWX.js";import"./chunk-57MC5FQY.js";import"./chunk-NUFRM6SI.js";import"./chunk-DXB73IDG.js";export{d as escapeGlobChars,e as escapeRegexChars,l as expandRedirectTarget,g as expandWord,i as expandWordForPattern,h as expandWordForRegex,j as expandWordWithGlob,a as getArrayElements,c as getVariable,k as hasQuotedMultiValueAt,b as isArray,f as isWordFullyQuoted};
|
package/dist/bundle/index.cjs
CHANGED
|
@@ -1406,7 +1406,7 @@ Gid: ${s} ${s} ${s} ${s}
|
|
|
1406
1406
|
`};let s=await ew(t,e),{hasParamExpansion:i,hasCommandSub:o}=tc(n);if((i||o)&&!r&&!Sn(t.state.env)){let f=Xt(t.state.env);if(St(s,f).length>1)return{error:`bash: $${MH(n)}: ambiguous redirect
|
|
1407
1407
|
`}}if(r||t.state.options.noglob)return{target:s};let l=await Uk(t,e);if(!As(l,t.state.shoptOptions.extglob))return{target:s};let c=new wi(t.fs,t.state.cwd,t.state.env,{globstar:t.state.shoptOptions.globstar,nullglob:t.state.shoptOptions.nullglob,failglob:t.state.shoptOptions.failglob,dotglob:t.state.shoptOptions.dotglob,extglob:t.state.shoptOptions.extglob,globskipdots:t.state.shoptOptions.globskipdots,maxGlobOperations:t.limits.maxGlobOperations}),u=await c.expand(l);return u.length===0?c.hasFailglob()?{error:`bash: no match: ${s}
|
|
1408
1408
|
`}:{target:s}:u.length===1?{target:u[0]}:{error:`bash: ${s}: ambiguous redirect
|
|
1409
|
-
`}}async function ew(t,e){let n=e.parts,r=n.length;if(r===1){let o=await wr(t,n[0]);return Si(o,t.limits.maxStringLength,"word expansion"),o}let s=[];for(let o=0;o<r;o++)s.push(await wr(t,n[o]));let i=s.join("");return Si(i,t.limits.maxStringLength,"word expansion"),i}async function wr(t,e,n=!1){if(e.type==="ParameterExpansion")return Nh(t,e,n);let r=DH(t,e,n);if(r!==null)return r;switch(e.type){case"DoubleQuoted":{let s=[];for(let i of e.parts)s.push(await wr(t,i,!0));return s.join("")}case"CommandSubstitution":{let s=CC(e.body);if(s)try{let h=await ge(t,s.target),d=h.startsWith("/")?h:`${t.state.cwd}/${h}`,p=await t.fs.readFile(d);t.state.lastExitCode=0,t.state.env.set("?","0");let m=p.replace(/\n+$/,"");return Si(m,t.limits.maxStringLength,"command substitution"),m}catch(h){if(h instanceof ie)throw h;return t.state.lastExitCode=1,t.state.env.set("?","1"),""}let i=t.substitutionDepth??0,o=t.limits.maxSubstitutionDepth;if(i>=o)throw new ie(`Command substitution nesting limit exceeded (${o})`,"substitution_depth");let a=t.substitutionDepth;t.substitutionDepth=i+1;let l=t.state.bashPid;t.state.bashPid=t.state.nextVirtualPid++;let c=new Map(t.state.env),u=t.state.cwd,f=t.state.suppressVerbose;t.state.suppressVerbose=!0;try{let h=await t.executeScript(e.body),d=h.exitCode;t.state.env=c,t.state.cwd=u,t.state.suppressVerbose=f,t.state.lastExitCode=d,t.state.env.set("?",String(d)),h.stderr&&(t.state.expansionStderr=(t.state.expansionStderr||"")+h.stderr),t.state.bashPid=l,t.substitutionDepth=a;let p=Bk(h).replace(/\n+$/,"");return Si(p,t.limits.maxStringLength,"command substitution"),p}catch(h){if(t.state.env=c,t.state.cwd=u,t.state.bashPid=l,t.substitutionDepth=a,t.state.suppressVerbose=f,h instanceof ie)throw h;if(h instanceof Re){t.state.lastExitCode=h.exitCode,t.state.env.set("?",String(h.exitCode)),h.stderr&&(t.state.expansionStderr=(t.state.expansionStderr||"")+h.stderr);let d=Bk({stdout:h.stdout,stdoutKind:h.stdoutKind,stdoutEncoding:h.stdoutEncoding}).replace(/\n+$/,"");return Si(d,t.limits.maxStringLength,"command substitution"),d}throw h}}case"ArithmeticExpansion":{let s=e.expression.originalText;if(s&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(s)){let o=await SC(t,s),a=new Ne,l=Ge(a,o);return String(await fe(t,l.expression,!0))}return String(await fe(t,e.expression.expression,!0))}case"BraceExpansion":{let s=[];for(let i of e.items)if(i.type==="Range"){let o=H6(i.start,i.end,i.step,i.startStr,i.endStr);if(o.expanded)s.push(...o.expanded);else return o.literal}else s.push(await ge(t,i.word));return s.join(" ")}default:return""}}async function Nh(t,e,n=!1){let{parameter:r}=e,{operation:s}=e,i=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(i){let[,h,d]=i;if(t.state.associativeArrays?.has(h)||d.includes("$(")||d.includes("`")||d.includes("${")){let m=await q6(t,d);r=`${h}[${m}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)&&pt(t,r)){let h=Un(t,r);if(h&&h!==r){let d=h.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(d){let[,p,m]=d;if(t.state.associativeArrays?.has(p)||m.includes("$(")||m.includes("`")||m.includes("${")){let y=await q6(t,m);r=`${p}[${y}]`}}}}let o=s&&(s.type==="DefaultValue"||s.type==="AssignDefault"||s.type==="UseAlternative"||s.type==="ErrorIfUnset"),a=!1;o&&(a=!await Jr(t,r));let l=o?a?"":await He(t,r,!1):await He(t,r,!0);if(!s)return l;o||(a=!await Jr(t,r));let{isEmpty:c,effectiveValue:u}=UC(t,r,l,n),f={value:l,isUnset:a,isEmpty:c,effectiveValue:u,inDoubleQuotes:n};switch(s.type){case"DefaultValue":return NC(t,s,f,ts);case"AssignDefault":return TC(t,r,s,f,ts);case"ErrorIfUnset":return OC(t,r,s,f,ts);case"UseAlternative":return IC(t,s,f,ts);case"PatternRemoval":{let h=await PC(t,l,s,ts,wr);return Si(h,t.limits.maxStringLength,"pattern removal"),h}case"PatternReplacement":{let h=await RC(t,l,s,ts,wr);return Si(h,t.limits.maxStringLength,"pattern replacement"),h}case"Length":return $C(t,r,l);case"LengthSliceError":throw new Rn(r);case"BadSubstitution":throw new Rn(s.text);case"Substring":return FC(t,r,l,s);case"CaseModification":{let h=await _C(t,l,s,ts,Nh);return Si(h,t.limits.maxStringLength,"case modification"),h}case"Transform":return DC(t,r,l,a,s);case"Indirection":return LC(t,r,l,a,s,Nh,n);case"ArrayKeys":return MC(t,s);case"VarNamePrefix":return BC(t,s);default:return l}}var Y6,Wn=I(()=>{"use strict";pe();On();Bt();mh();zn();Me();gh();AC();vC();kC();ga();zC();VC();KC();sr();Pk();_k();yr();Xr();Mk();ga();sr();Y6=1e5});function BH(t,e,n){switch(n){case"+":return t+e;case"-":return t-e;case"*":return t*e;case"/":if(e===0)throw new lt("division by 0");return Math.trunc(t/e);case"%":if(e===0)throw new lt("division by 0");return t%e;case"**":if(e<0)throw new lt("exponent less than 0");return t**e;case"<<":return t<<e;case">>":return t>>e;case"<":return t<e?1:0;case"<=":return t<=e?1:0;case">":return t>e?1:0;case">=":return t>=e?1:0;case"==":return t===e?1:0;case"!=":return t!==e?1:0;case"&":return t&e;case"|":return t|e;case"^":return t^e;case",":return e;default:return 0}}function jk(t,e,n){switch(n){case"=":return e;case"+=":return t+e;case"-=":return t-e;case"*=":return t*e;case"/=":return e!==0?Math.trunc(t/e):0;case"%=":return e!==0?t%e:0;case"<<=":return t<<e;case">>=":return t>>e;case"&=":return t&e;case"|=":return t|e;case"^=":return t^e;default:return e}}function UH(t,e){switch(e){case"-":return-t;case"+":return+t;case"!":return t===0?1:0;case"~":return~t;default:return t}}async function zH(t,e){let n=t.state.env.get(e);if(n!==void 0)return n;let r=t.state.env.get(`${e}_0`);return r!==void 0?r:await He(t,e)}function WH(t){if(!t)return 0;let e=Number.parseInt(t,10);if(!Number.isNaN(e)&&/^-?\d+$/.test(t.trim()))return e;let n=t.trim();if(!n)return 0;try{let r=new Ne,{expr:s,pos:i}=gr(r,n,0);if(i<n.length){let o=n.slice(i).trim().split(/\s+/)[0];throw new lt(`${n}: syntax error in expression (error token is "${o}")`)}return s.type==="ArithNumber"?s.value:e||0}catch(r){if(r instanceof lt)throw r;let s=n.split(/\s+/).slice(1)[0]||n;throw new lt(`${n}: syntax error in expression (error token is "${s}")`)}}async function nw(t,e){if(!e)return 0;let n=Number.parseInt(e,10);if(!Number.isNaN(n)&&/^-?\d+$/.test(e.trim()))return n;let r=e.trim();if(!r)return 0;let s=new Ne,{expr:i,pos:o}=gr(s,r,0);if(o<r.length){let a=r.slice(o).trim(),l=a.split(/\s+/)[0]||a;throw new lt(`syntax error in expression (error token is "${l}")`,"","")}return await fe(t,i)}async function rw(t,e,n=new Set,r=0){if(r>100)throw new lt("maximum variable indirection depth exceeded");if(n.has(e))return 0;n.add(e);let s=await zH(t,e);if(!s)return 0;let i=Number.parseInt(s,10);if(!Number.isNaN(i)&&/^-?\d+$/.test(s.trim()))return i;let o=s.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o))return await rw(t,o,n,r+1);let a=new Ne,{expr:l,pos:c}=gr(a,o,0);if(c<o.length){let u=o.slice(c).trim(),f=u.split(/\s+/)[0]||u;throw new lt(`${o}: syntax error in expression (error token is "${f}")`)}return await fe(t,l)}async function Oh(t,e){if(e.startsWith("#")){let f=e.slice(1),h=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(h){let p=h[1],m=xe(t,p);return String(m.length)}let d=t.state.env.get(f)||"";return String(d.length)}if(e.startsWith("!")){let f=e.slice(1),h=t.state.env.get(f)||"";return t.state.env.get(h)||""}let n=[":-",":=",":?",":+","-","=","?","+"],r=-1,s="";for(let f of n){let h=e.indexOf(f);h>0&&(r===-1||h<r)&&(r=h,s=f)}if(r===-1)return await He(t,e);let i=e.slice(0,r),o=e.slice(r+s.length),a=t.state.env.get(i),l=a===void 0,c=a==="",u=s.startsWith(":");switch(s){case":-":case"-":return l||u&&c?o:a||"";case":=":case"=":return l||u&&c?(t.state.env.set(i,o),o):a||"";case":+":case"+":return!(l||u&&c)?o:"";case":?":case"?":{if(l||u&&c)throw new Error(o||`${i}: parameter null or not set`);return a||""}default:return a||""}}async function fe(t,e,n=!1){switch(e.type){case"ArithNumber":if(Number.isNaN(e.value))throw new lt("value too great for base");return e.value;case"ArithVariable":return await rw(t,e.name);case"ArithSpecialVar":{let s=(await He(t,e.name)).trim();if(!s)return 0;let i=Number.parseInt(s,10);if(!Number.isNaN(i)&&/^-?\d+$/.test(s))return i;let o=new Ne,{expr:a}=gr(o,s,0);return await fe(t,a)}case"ArithNested":return await fe(t,e.expression);case"ArithCommandSubst":{if(t.execFn){let r=await t.execFn(e.command,{signal:t.state.signal});r.stderr&&(t.state.expansionStderr=(t.state.expansionStderr||"")+r.stderr);let s=r.stdout.trim();return Number.parseInt(s,10)||0}return 0}case"ArithBracedExpansion":{let r=await Oh(t,e.content);return Number.parseInt(r,10)||0}case"ArithDynamicBase":{let r=await Oh(t,e.baseExpr),s=Number.parseInt(r,10);if(s<2||s>64)return 0;let i=`${s}#${e.value}`;return Xl(i)}case"ArithDynamicNumber":{let s=await Oh(t,e.prefix)+e.suffix;return Xl(s)}case"ArithArrayElement":{let r=t.state.associativeArrays?.has(e.array),s=async i=>{let o=t.state.env.get(i);return o!==void 0?await nw(t,o):0};if(e.stringKey!==void 0)return await s(`${e.array}_${e.stringKey}`);if(r&&e.index?.type==="ArithVariable"&&!e.index.hasDollarPrefix)return await s(`${e.array}_${e.index.name}`);if(r&&e.index?.type==="ArithVariable"&&e.index.hasDollarPrefix){let i=await He(t,e.index.name);return await s(`${e.array}_${i}`)}if(e.index){let i=await fe(t,e.index,n);if(i<0){let l=xe(t,e.array),c=t.state.currentLine;if(l.length===0)return t.state.expansionStderr=(t.state.expansionStderr||"")+`bash: line ${c}: ${e.array}: bad array subscript
|
|
1409
|
+
`}}async function ew(t,e){let n=e.parts,r=n.length;if(r===1){let o=await wr(t,n[0]);return Si(o,t.limits.maxStringLength,"word expansion"),o}let s=[];for(let o=0;o<r;o++)s.push(await wr(t,n[o]));let i=s.join("");return Si(i,t.limits.maxStringLength,"word expansion"),i}async function wr(t,e,n=!1){if(e.type==="ParameterExpansion")return Nh(t,e,n);let r=DH(t,e,n);if(r!==null)return r;switch(e.type){case"DoubleQuoted":{let s=[];for(let i of e.parts)s.push(await wr(t,i,!0));return s.join("")}case"CommandSubstitution":{let s=CC(e.body);if(s){t.state.commandSubstitutionUsed=!0;try{let h=await ge(t,s.target),d=h.startsWith("/")?h:`${t.state.cwd}/${h}`,p=await t.fs.readFile(d);t.state.lastExitCode=0,t.state.env.set("?","0");let m=p.replace(/\n+$/,"");return Si(m,t.limits.maxStringLength,"command substitution"),m}catch(h){if(h instanceof ie)throw h;return t.state.lastExitCode=1,t.state.env.set("?","1"),""}}t.state.commandSubstitutionUsed=!0;let i=t.substitutionDepth??0,o=t.limits.maxSubstitutionDepth;if(i>=o)throw new ie(`Command substitution nesting limit exceeded (${o})`,"substitution_depth");let a=t.substitutionDepth;t.substitutionDepth=i+1;let l=t.state.bashPid;t.state.bashPid=t.state.nextVirtualPid++;let c=new Map(t.state.env),u=t.state.cwd,f=t.state.suppressVerbose;t.state.suppressVerbose=!0;try{let h=await t.executeScript(e.body),d=h.exitCode;t.state.env=c,t.state.cwd=u,t.state.suppressVerbose=f,t.state.lastExitCode=d,t.state.env.set("?",String(d)),h.stderr&&(t.state.expansionStderr=(t.state.expansionStderr||"")+h.stderr),t.state.bashPid=l,t.substitutionDepth=a;let p=Bk(h).replace(/\n+$/,"");return Si(p,t.limits.maxStringLength,"command substitution"),p}catch(h){if(t.state.env=c,t.state.cwd=u,t.state.bashPid=l,t.substitutionDepth=a,t.state.suppressVerbose=f,h instanceof ie)throw h;if(h instanceof Re){t.state.lastExitCode=h.exitCode,t.state.env.set("?",String(h.exitCode)),h.stderr&&(t.state.expansionStderr=(t.state.expansionStderr||"")+h.stderr);let d=Bk({stdout:h.stdout,stdoutKind:h.stdoutKind,stdoutEncoding:h.stdoutEncoding}).replace(/\n+$/,"");return Si(d,t.limits.maxStringLength,"command substitution"),d}throw h}}case"ArithmeticExpansion":{let s=e.expression.originalText;if(s&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(s)){let o=await SC(t,s),a=new Ne,l=Ge(a,o);return String(await fe(t,l.expression,!0))}return String(await fe(t,e.expression.expression,!0))}case"BraceExpansion":{let s=[];for(let i of e.items)if(i.type==="Range"){let o=H6(i.start,i.end,i.step,i.startStr,i.endStr);if(o.expanded)s.push(...o.expanded);else return o.literal}else s.push(await ge(t,i.word));return s.join(" ")}default:return""}}async function Nh(t,e,n=!1){let{parameter:r}=e,{operation:s}=e,i=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(i){let[,h,d]=i;if(t.state.associativeArrays?.has(h)||d.includes("$(")||d.includes("`")||d.includes("${")){let m=await q6(t,d);r=`${h}[${m}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)&&pt(t,r)){let h=Un(t,r);if(h&&h!==r){let d=h.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(d){let[,p,m]=d;if(t.state.associativeArrays?.has(p)||m.includes("$(")||m.includes("`")||m.includes("${")){let y=await q6(t,m);r=`${p}[${y}]`}}}}let o=s&&(s.type==="DefaultValue"||s.type==="AssignDefault"||s.type==="UseAlternative"||s.type==="ErrorIfUnset"),a=!1;o&&(a=!await Jr(t,r));let l=o?a?"":await He(t,r,!1):await He(t,r,!0);if(!s)return l;o||(a=!await Jr(t,r));let{isEmpty:c,effectiveValue:u}=UC(t,r,l,n),f={value:l,isUnset:a,isEmpty:c,effectiveValue:u,inDoubleQuotes:n};switch(s.type){case"DefaultValue":return NC(t,s,f,ts);case"AssignDefault":return TC(t,r,s,f,ts);case"ErrorIfUnset":return OC(t,r,s,f,ts);case"UseAlternative":return IC(t,s,f,ts);case"PatternRemoval":{let h=await PC(t,l,s,ts,wr);return Si(h,t.limits.maxStringLength,"pattern removal"),h}case"PatternReplacement":{let h=await RC(t,l,s,ts,wr);return Si(h,t.limits.maxStringLength,"pattern replacement"),h}case"Length":return $C(t,r,l);case"LengthSliceError":throw new Rn(r);case"BadSubstitution":throw new Rn(s.text);case"Substring":return FC(t,r,l,s);case"CaseModification":{let h=await _C(t,l,s,ts,Nh);return Si(h,t.limits.maxStringLength,"case modification"),h}case"Transform":return DC(t,r,l,a,s);case"Indirection":return LC(t,r,l,a,s,Nh,n);case"ArrayKeys":return MC(t,s);case"VarNamePrefix":return BC(t,s);default:return l}}var Y6,Wn=I(()=>{"use strict";pe();On();Bt();mh();zn();Me();gh();AC();vC();kC();ga();zC();VC();KC();sr();Pk();_k();yr();Xr();Mk();ga();sr();Y6=1e5});function BH(t,e,n){switch(n){case"+":return t+e;case"-":return t-e;case"*":return t*e;case"/":if(e===0)throw new lt("division by 0");return Math.trunc(t/e);case"%":if(e===0)throw new lt("division by 0");return t%e;case"**":if(e<0)throw new lt("exponent less than 0");return t**e;case"<<":return t<<e;case">>":return t>>e;case"<":return t<e?1:0;case"<=":return t<=e?1:0;case">":return t>e?1:0;case">=":return t>=e?1:0;case"==":return t===e?1:0;case"!=":return t!==e?1:0;case"&":return t&e;case"|":return t|e;case"^":return t^e;case",":return e;default:return 0}}function jk(t,e,n){switch(n){case"=":return e;case"+=":return t+e;case"-=":return t-e;case"*=":return t*e;case"/=":return e!==0?Math.trunc(t/e):0;case"%=":return e!==0?t%e:0;case"<<=":return t<<e;case">>=":return t>>e;case"&=":return t&e;case"|=":return t|e;case"^=":return t^e;default:return e}}function UH(t,e){switch(e){case"-":return-t;case"+":return+t;case"!":return t===0?1:0;case"~":return~t;default:return t}}async function zH(t,e){let n=t.state.env.get(e);if(n!==void 0)return n;let r=t.state.env.get(`${e}_0`);return r!==void 0?r:await He(t,e)}function WH(t){if(!t)return 0;let e=Number.parseInt(t,10);if(!Number.isNaN(e)&&/^-?\d+$/.test(t.trim()))return e;let n=t.trim();if(!n)return 0;try{let r=new Ne,{expr:s,pos:i}=gr(r,n,0);if(i<n.length){let o=n.slice(i).trim().split(/\s+/)[0];throw new lt(`${n}: syntax error in expression (error token is "${o}")`)}return s.type==="ArithNumber"?s.value:e||0}catch(r){if(r instanceof lt)throw r;let s=n.split(/\s+/).slice(1)[0]||n;throw new lt(`${n}: syntax error in expression (error token is "${s}")`)}}async function nw(t,e){if(!e)return 0;let n=Number.parseInt(e,10);if(!Number.isNaN(n)&&/^-?\d+$/.test(e.trim()))return n;let r=e.trim();if(!r)return 0;let s=new Ne,{expr:i,pos:o}=gr(s,r,0);if(o<r.length){let a=r.slice(o).trim(),l=a.split(/\s+/)[0]||a;throw new lt(`syntax error in expression (error token is "${l}")`,"","")}return await fe(t,i)}async function rw(t,e,n=new Set,r=0){if(r>100)throw new lt("maximum variable indirection depth exceeded");if(n.has(e))return 0;n.add(e);let s=await zH(t,e);if(!s)return 0;let i=Number.parseInt(s,10);if(!Number.isNaN(i)&&/^-?\d+$/.test(s.trim()))return i;let o=s.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o))return await rw(t,o,n,r+1);let a=new Ne,{expr:l,pos:c}=gr(a,o,0);if(c<o.length){let u=o.slice(c).trim(),f=u.split(/\s+/)[0]||u;throw new lt(`${o}: syntax error in expression (error token is "${f}")`)}return await fe(t,l)}async function Oh(t,e){if(e.startsWith("#")){let f=e.slice(1),h=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(h){let p=h[1],m=xe(t,p);return String(m.length)}let d=t.state.env.get(f)||"";return String(d.length)}if(e.startsWith("!")){let f=e.slice(1),h=t.state.env.get(f)||"";return t.state.env.get(h)||""}let n=[":-",":=",":?",":+","-","=","?","+"],r=-1,s="";for(let f of n){let h=e.indexOf(f);h>0&&(r===-1||h<r)&&(r=h,s=f)}if(r===-1)return await He(t,e);let i=e.slice(0,r),o=e.slice(r+s.length),a=t.state.env.get(i),l=a===void 0,c=a==="",u=s.startsWith(":");switch(s){case":-":case"-":return l||u&&c?o:a||"";case":=":case"=":return l||u&&c?(t.state.env.set(i,o),o):a||"";case":+":case"+":return!(l||u&&c)?o:"";case":?":case"?":{if(l||u&&c)throw new Error(o||`${i}: parameter null or not set`);return a||""}default:return a||""}}async function fe(t,e,n=!1){switch(e.type){case"ArithNumber":if(Number.isNaN(e.value))throw new lt("value too great for base");return e.value;case"ArithVariable":return await rw(t,e.name);case"ArithSpecialVar":{let s=(await He(t,e.name)).trim();if(!s)return 0;let i=Number.parseInt(s,10);if(!Number.isNaN(i)&&/^-?\d+$/.test(s))return i;let o=new Ne,{expr:a}=gr(o,s,0);return await fe(t,a)}case"ArithNested":return await fe(t,e.expression);case"ArithCommandSubst":{if(t.execFn){let r=await t.execFn(e.command,{signal:t.state.signal});r.stderr&&(t.state.expansionStderr=(t.state.expansionStderr||"")+r.stderr);let s=r.stdout.trim();return Number.parseInt(s,10)||0}return 0}case"ArithBracedExpansion":{let r=await Oh(t,e.content);return Number.parseInt(r,10)||0}case"ArithDynamicBase":{let r=await Oh(t,e.baseExpr),s=Number.parseInt(r,10);if(s<2||s>64)return 0;let i=`${s}#${e.value}`;return Xl(i)}case"ArithDynamicNumber":{let s=await Oh(t,e.prefix)+e.suffix;return Xl(s)}case"ArithArrayElement":{let r=t.state.associativeArrays?.has(e.array),s=async i=>{let o=t.state.env.get(i);return o!==void 0?await nw(t,o):0};if(e.stringKey!==void 0)return await s(`${e.array}_${e.stringKey}`);if(r&&e.index?.type==="ArithVariable"&&!e.index.hasDollarPrefix)return await s(`${e.array}_${e.index.name}`);if(r&&e.index?.type==="ArithVariable"&&e.index.hasDollarPrefix){let i=await He(t,e.index.name);return await s(`${e.array}_${i}`)}if(e.index){let i=await fe(t,e.index,n);if(i<0){let l=xe(t,e.array),c=t.state.currentLine;if(l.length===0)return t.state.expansionStderr=(t.state.expansionStderr||"")+`bash: line ${c}: ${e.array}: bad array subscript
|
|
1410
1410
|
`,0;let f=Math.max(...l.map(([h])=>typeof h=="number"?h:0))+1+i;if(f<0)return t.state.expansionStderr=(t.state.expansionStderr||"")+`bash: line ${c}: ${e.array}: bad array subscript
|
|
1411
1411
|
`,0;i=f}let o=`${e.array}_${i}`,a=t.state.env.get(o);if(a!==void 0)return nw(t,a);if(i===0){let l=t.state.env.get(e.array);if(l!==void 0)return nw(t,l)}if(t.state.options.nounset&&!Array.from(t.state.env.keys()).some(c=>c===e.array||c.startsWith(`${e.array}_`)))throw new Pn(`${e.array}[${i}]`);return 0}return 0}case"ArithDoubleSubscript":throw new lt("double subscript","","");case"ArithNumberSubscript":throw new lt(`${e.number}${e.errorToken}: syntax error: invalid arithmetic operator (error token is "${e.errorToken}")`);case"ArithSyntaxError":throw new lt(e.message,"","",!0);case"ArithSingleQuote":{if(n)throw new lt(`syntax error: operand expected (error token is "'${e.content}'")`);return e.value}case"ArithBinary":{if(e.operator==="||")return await fe(t,e.left,n)||await fe(t,e.right,n)?1:0;if(e.operator==="&&")return await fe(t,e.left,n)&&await fe(t,e.right,n)?1:0;let r=await fe(t,e.left,n),s=await fe(t,e.right,n);return BH(r,s,e.operator)}case"ArithUnary":{let r=await fe(t,e.operand,n);if(e.operator==="++"||e.operator==="--"){if(e.operand.type==="ArithVariable"){let s=e.operand.name,i=Number.parseInt(await He(t,s),10)||0,o=e.operator==="++"?i+1:i-1;return t.state.env.set(s,String(o)),e.prefix?o:i}if(e.operand.type==="ArithArrayElement"){let s=e.operand.array,i=t.state.associativeArrays?.has(s),o;if(e.operand.stringKey!==void 0)o=`${s}_${e.operand.stringKey}`;else if(i&&e.operand.index?.type==="ArithVariable"&&!e.operand.index.hasDollarPrefix)o=`${s}_${e.operand.index.name}`;else if(i&&e.operand.index?.type==="ArithVariable"&&e.operand.index.hasDollarPrefix){let c=await He(t,e.operand.index.name);o=`${s}_${c}`}else if(e.operand.index){let c=await fe(t,e.operand.index,n);o=`${s}_${c}`}else return r;let a=Number.parseInt(t.state.env.get(o)||"0",10)||0,l=e.operator==="++"?a+1:a-1;return t.state.env.set(o,String(l)),e.prefix?l:a}if(e.operand.type==="ArithConcat"){let s="";for(let i of e.operand.parts)s+=await Ea(t,i,n);if(s&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)){let i=Number.parseInt(t.state.env.get(s)||"0",10)||0,o=e.operator==="++"?i+1:i-1;return t.state.env.set(s,String(o)),e.prefix?o:i}}if(e.operand.type==="ArithDynamicElement"){let s="";if(e.operand.nameExpr.type==="ArithConcat")for(let i of e.operand.nameExpr.parts)s+=await Ea(t,i,n);else e.operand.nameExpr.type==="ArithVariable"&&(s=e.operand.nameExpr.hasDollarPrefix?await He(t,e.operand.nameExpr.name):e.operand.nameExpr.name);if(s&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)){let i=await fe(t,e.operand.subscript,n),o=`${s}_${i}`,a=Number.parseInt(t.state.env.get(o)||"0",10)||0,l=e.operator==="++"?a+1:a-1;return t.state.env.set(o,String(l)),e.prefix?l:a}}return r}return UH(r,e.operator)}case"ArithTernary":return await fe(t,e.condition,n)?await fe(t,e.consequent,n):await fe(t,e.alternate,n);case"ArithAssignment":{let r=e.variable,s=r;if(e.stringKey!==void 0)s=`${r}_${e.stringKey}`;else if(e.subscript){let l=t.state.associativeArrays?.has(r);if(l&&e.subscript.type==="ArithVariable"&&!e.subscript.hasDollarPrefix)s=`${r}_${e.subscript.name}`;else if(l&&e.subscript.type==="ArithVariable"&&e.subscript.hasDollarPrefix){let c=await He(t,e.subscript.name);s=`${r}_${c||"\\"}`}else if(l){let c=await fe(t,e.subscript,n);s=`${r}_${c}`}else{let c=await fe(t,e.subscript,n);if(c<0){let u=xe(t,r);u.length>0&&(c=Math.max(...u.map(([h])=>typeof h=="number"?h:0))+1+c)}s=`${r}_${c}`}}let i=Number.parseInt(t.state.env.get(s)||"0",10)||0,o=await fe(t,e.value,n),a=jk(i,o,e.operator);return t.state.env.set(s,String(a)),a}case"ArithGroup":return await fe(t,e.expression,n);case"ArithConcat":{let r="";for(let s of e.parts)r+=await Ea(t,s,n);return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?await rw(t,r):Number.parseInt(r,10)||0}case"ArithDynamicAssignment":{let r="";if(e.target.type==="ArithConcat")for(let l of e.target.parts)r+=await Ea(t,l,n);else e.target.type==="ArithVariable"&&(r=e.target.hasDollarPrefix?await He(t,e.target.name):e.target.name);if(!r||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r))return 0;let s=r;if(e.subscript){let l=await fe(t,e.subscript,n);s=`${r}_${l}`}let i=Number.parseInt(t.state.env.get(s)||"0",10)||0,o=await fe(t,e.value,n),a=jk(i,o,e.operator);return t.state.env.set(s,String(a)),a}case"ArithDynamicElement":{let r="";if(e.nameExpr.type==="ArithConcat")for(let a of e.nameExpr.parts)r+=await Ea(t,a,n);else e.nameExpr.type==="ArithVariable"&&(r=e.nameExpr.hasDollarPrefix?await He(t,e.nameExpr.name):e.nameExpr.name);if(!r||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r))return 0;let s=await fe(t,e.subscript,n),i=`${r}_${s}`,o=t.state.env.get(i);return o!==void 0?WH(o):0}default:return 0}}async function Ea(t,e,n=!1){switch(e.type){case"ArithNumber":return String(e.value);case"ArithSingleQuote":return String(await fe(t,e,n));case"ArithVariable":return e.hasDollarPrefix?await He(t,e.name):e.name;case"ArithSpecialVar":return await He(t,e.name);case"ArithBracedExpansion":return await Oh(t,e.content);case"ArithCommandSubst":return t.execFn?(await t.execFn(e.command,{signal:t.state.signal})).stdout.trim():"0";case"ArithConcat":{let r="";for(let s of e.parts)r+=await Ea(t,s,n);return r}default:return String(await fe(t,e,n))}}var zn=I(()=>{"use strict";On();Bt();Me();Wn()});var VG={};ee(VG,{Bash:()=>Oa,BashTransformPipeline:()=>od,CommandCollectorPlugin:()=>ad,DefenseInDepthBox:()=>tt,EMPTY_BYTES:()=>yc,InMemoryFs:()=>xs,MountableFs:()=>hc,NetworkAccessDeniedError:()=>Fr,OverlayFs:()=>po,ReadWriteFs:()=>dc,RedirectNotAllowedError:()=>co,Sandbox:()=>pc,SandboxCommand:()=>mo,SecurityViolationError:()=>Se,SecurityViolationLogger:()=>mc,TeePlugin:()=>ld,TooManyRedirectsError:()=>lo,bytesOutput:()=>ab,createConsoleViolationCallback:()=>Jw,decodeBytesToUtf8:()=>te,defineCommand:()=>fv,encodeUtf8ToBytes:()=>Er,getCommandNames:()=>nv,getJavaScriptCommandNames:()=>lv,getNetworkCommandNames:()=>rv,getPythonCommandNames:()=>ov,latin1FromBytes:()=>Rt,parse:()=>Bn,serialize:()=>Ta,stdoutAsBytes:()=>Ra,stdoutKind:()=>gd,textOutput:()=>ob,unsafeBytesFromLatin1:()=>Lr});module.exports=rb(VG);os();en();var Ji=[{name:"echo",load:async()=>(await Promise.resolve().then(()=>(md(),ib))).echoCommand},{name:"cat",load:async()=>(await Promise.resolve().then(()=>(wd(),lb))).catCommand},{name:"printf",load:async()=>(await Promise.resolve().then(()=>(xd(),gb))).printfCommand},{name:"ls",load:async()=>(await Promise.resolve().then(()=>(vd(),wb))).lsCommand},{name:"mkdir",load:async()=>(await Promise.resolve().then(()=>(kd(),Eb))).mkdirCommand},{name:"rmdir",load:async()=>(await Promise.resolve().then(()=>(Td(),Ab))).rmdirCommand},{name:"touch",load:async()=>(await Promise.resolve().then(()=>(Id(),vb))).touchCommand},{name:"rm",load:async()=>(await Promise.resolve().then(()=>(Rd(),Cb))).rmCommand},{name:"cp",load:async()=>(await Promise.resolve().then(()=>(Fd(),kb))).cpCommand},{name:"mv",load:async()=>(await Promise.resolve().then(()=>(Dd(),Nb))).mvCommand},{name:"ln",load:async()=>(await Promise.resolve().then(()=>(Md(),Tb))).lnCommand},{name:"chmod",load:async()=>(await Promise.resolve().then(()=>(zd(),Ib))).chmodCommand},{name:"pwd",load:async()=>(await Promise.resolve().then(()=>(jd(),Pb))).pwdCommand},{name:"readlink",load:async()=>(await Promise.resolve().then(()=>(Hd(),Rb))).readlinkCommand},{name:"head",load:async()=>(await Promise.resolve().then(()=>(Kd(),_b))).headCommand},{name:"tail",load:async()=>(await Promise.resolve().then(()=>(Yd(),Db))).tailCommand},{name:"wc",load:async()=>(await Promise.resolve().then(()=>(Jd(),Mb))).wcCommand},{name:"stat",load:async()=>(await Promise.resolve().then(()=>(tp(),Bb))).statCommand},{name:"grep",load:async()=>(await Promise.resolve().then(()=>(La(),$c))).grepCommand},{name:"fgrep",load:async()=>(await Promise.resolve().then(()=>(La(),$c))).fgrepCommand},{name:"egrep",load:async()=>(await Promise.resolve().then(()=>(La(),$c))).egrepCommand},{name:"rg",load:async()=>(await Promise.resolve().then(()=>(Op(),P7))).rgCommand},{name:"sed",load:async()=>(await Promise.resolve().then(()=>(Bp(),W7))).sedCommand},{name:"awk",load:async()=>(await Promise.resolve().then(()=>(Xp(),E3))).awkCommand2},{name:"sort",load:async()=>(await Promise.resolve().then(()=>(t1(),O3))).sortCommand},{name:"uniq",load:async()=>(await Promise.resolve().then(()=>(r1(),I3))).uniqCommand},{name:"comm",load:async()=>(await Promise.resolve().then(()=>(i1(),P3))).commCommand},{name:"cut",load:async()=>(await Promise.resolve().then(()=>(a1(),R3))).cutCommand},{name:"paste",load:async()=>(await Promise.resolve().then(()=>(c1(),F3))).pasteCommand},{name:"tr",load:async()=>(await Promise.resolve().then(()=>(f1(),D3))).trCommand},{name:"rev",load:async()=>(await Promise.resolve().then(()=>(d1(),L3))).rev},{name:"nl",load:async()=>(await Promise.resolve().then(()=>(m1(),B3))).nl},{name:"fold",load:async()=>(await Promise.resolve().then(()=>(y1(),z3))).fold},{name:"expand",load:async()=>(await Promise.resolve().then(()=>(b1(),j3))).expand},{name:"unexpand",load:async()=>(await Promise.resolve().then(()=>(x1(),V3))).unexpand},{name:"strings",load:async()=>(await Promise.resolve().then(()=>(A1(),Z3))).strings},{name:"split",load:async()=>(await Promise.resolve().then(()=>(C1(),X3))).split},{name:"column",load:async()=>(await Promise.resolve().then(()=>(N1(),e4))).column},{name:"join",load:async()=>(await Promise.resolve().then(()=>(I1(),t4))).join},{name:"tee",load:async()=>(await Promise.resolve().then(()=>(R1(),n4))).teeCommand},{name:"find",load:async()=>(await Promise.resolve().then(()=>(_1(),u4))).findCommand},{name:"basename",load:async()=>(await Promise.resolve().then(()=>(L1(),f4))).basenameCommand},{name:"dirname",load:async()=>(await Promise.resolve().then(()=>(B1(),h4))).dirnameCommand},{name:"tree",load:async()=>(await Promise.resolve().then(()=>(z1(),p4))).treeCommand},{name:"du",load:async()=>(await Promise.resolve().then(()=>(j1(),g4))).duCommand},{name:"env",load:async()=>(await Promise.resolve().then(()=>(Qc(),V1))).envCommand},{name:"printenv",load:async()=>(await Promise.resolve().then(()=>(Qc(),V1))).printenvCommand},{name:"alias",load:async()=>(await Promise.resolve().then(()=>(Xc(),Z1))).aliasCommand},{name:"unalias",load:async()=>(await Promise.resolve().then(()=>(Xc(),Z1))).unaliasCommand},{name:"history",load:async()=>(await Promise.resolve().then(()=>(Q1(),w4))).historyCommand},{name:"xargs",load:async()=>(await Promise.resolve().then(()=>(J1(),b4))).xargsCommand},{name:"true",load:async()=>(await Promise.resolve().then(()=>(Jc(),nm))).trueCommand},{name:"false",load:async()=>(await Promise.resolve().then(()=>(Jc(),nm))).falseCommand},{name:"clear",load:async()=>(await Promise.resolve().then(()=>(sm(),E4))).clearCommand},{name:"bash",load:async()=>(await Promise.resolve().then(()=>(eu(),am))).bashCommand},{name:"sh",load:async()=>(await Promise.resolve().then(()=>(eu(),am))).shCommand},{name:"jq",load:async()=>(await Promise.resolve().then(()=>(Cm(),H4))).jqCommand},{name:"base64",load:async()=>(await Promise.resolve().then(()=>(Nm(),G4))).base64Command},{name:"diff",load:async()=>(await Promise.resolve().then(()=>(Om(),Z4))).diffCommand},{name:"date",load:async()=>(await Promise.resolve().then(()=>(Pm(),Y4))).dateCommand},{name:"sleep",load:async()=>(await Promise.resolve().then(()=>(Fm(),X4))).sleepCommand},{name:"timeout",load:async()=>(await Promise.resolve().then(()=>(Dm(),J4))).timeoutCommand},{name:"time",load:async()=>(await Promise.resolve().then(()=>(Mm(),t8))).timeCommand},{name:"seq",load:async()=>(await Promise.resolve().then(()=>(Um(),n8))).seqCommand},{name:"expr",load:async()=>(await Promise.resolve().then(()=>(Wm(),r8))).exprCommand},{name:"md5sum",load:async()=>(await Promise.resolve().then(()=>(qm(),i8))).md5sumCommand},{name:"sha1sum",load:async()=>(await Promise.resolve().then(()=>(Vm(),o8))).sha1sumCommand},{name:"sha256sum",load:async()=>(await Promise.resolve().then(()=>(Km(),a8))).sha256sumCommand},{name:"file",load:async()=>(await Promise.resolve().then(()=>(m0(),wE))).fileCommand},{name:"html-to-markdown",load:async()=>(await Promise.resolve().then(()=>(y0(),EE))).htmlToMarkdownCommand},{name:"help",load:async()=>(await Promise.resolve().then(()=>(b0(),xE))).helpCommand},{name:"which",load:async()=>(await Promise.resolve().then(()=>(x0(),SE))).whichCommand},{name:"tac",load:async()=>(await Promise.resolve().then(()=>(A0(),AE))).tac},{name:"hostname",load:async()=>(await Promise.resolve().then(()=>(C0(),vE))).hostname},{name:"whoami",load:async()=>(await Promise.resolve().then(()=>(N0(),CE))).whoami},{name:"od",load:async()=>(await Promise.resolve().then(()=>(O0(),kE))).od},{name:"gzip",load:async()=>(await Promise.resolve().then(()=>(rl(),Pu))).gzipCommand},{name:"gunzip",load:async()=>(await Promise.resolve().then(()=>(rl(),Pu))).gunzipCommand},{name:"zcat",load:async()=>(await Promise.resolve().then(()=>(rl(),Pu))).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ji.push({name:"tar",load:async()=>(await Promise.resolve().then(()=>(Z0(),yx))).tarCommand}),Ji.push({name:"yq",load:async()=>(await Promise.resolve().then(()=>(e2(),ZA))).yqCommand}),Ji.push({name:"xan",load:async()=>(await Promise.resolve().then(()=>(K2(),g5))).xanCommand}),Ji.push({name:"sqlite3",load:async()=>(await Promise.resolve().then(()=>(Y2(),O5))).sqlite3Command}));var oh=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(oh.push({name:"python3",load:async()=>(await Promise.resolve().then(()=>(e6(),J2))).python3Command}),oh.push({name:"python",load:async()=>(await Promise.resolve().then(()=>(e6(),J2))).pythonCommand}));var ah=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(ah.push({name:"js-exec",load:async()=>(await Promise.resolve().then(()=>(n6(),t6))).jsExecCommand}),ah.push({name:"node",load:async()=>(await Promise.resolve().then(()=>(n6(),t6))).nodeStubCommand}));var tv=[{name:"curl",load:async()=>(await Promise.resolve().then(()=>(K5(),G5))).curlCommand}],ev=new Map;function lh(t){return{name:t.name,async execute(e,n){let r=ev.get(t.name);if(r||(r=await tt.runTrustedAsync(()=>t.load()),ev.set(t.name,r)),n.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:s}=await Promise.resolve().then(()=>(J5(),X5));s(n.coverage,t.name,e)}return r.execute(e,n)}}}function nv(){return Ji.map(t=>t.name)}function rv(){return tv.map(t=>t.name)}function sv(t){return(t?Ji.filter(n=>t.includes(n.name)):Ji).map(lh)}function iv(){return tv.map(lh)}function ov(){return oh.map(t=>t.name)}function av(){return oh.map(lh)}function lv(){return ah.map(t=>t.name)}function cv(){return ah.map(lh)}function uv(t){return"load"in t&&typeof t.load=="function"}function fv(t,e){return{name:t,trusted:!0,execute:e}}function hv(t){let e=null;return{name:t.name,trusted:!0,async execute(n,r){return e||(e=await t.load()),e.execute(n,r)}}}pe();pe();la();function he(t){if(!t||t==="/")return"/";let e=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;e.startsWith("/")||(e=`/${e}`);let n=e.split("/").filter(s=>s&&s!=="."),r=[];for(let s of n)s===".."?r.pop():r.push(s);return`/${r.join("/")}`||"/"}function de(t,e){if(t.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${e} '${t}'`)}function eo(t){let e=he(t);if(e==="/")return"/";let n=e.lastIndexOf("/");return n===0?"/":e.slice(0,n)}function di(t,e){if(e.startsWith("/"))return he(e);let n=t==="/"?`/${e}`:`${t}/${e}`;return he(n)}function pi(t,e){return t==="/"?`/${e}`:`${t}/${e}`}function ua(t,e){if(e.startsWith("/"))return he(e);let n=eo(t);return he(pi(n,e))}var fa=new TextEncoder;function yq(t){return typeof t=="object"&&t!==null&&!(t instanceof Uint8Array)&&"content"in t}var xs=class{data=new Map;constructor(e){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),e)for(let[n,r]of Object.entries(e))typeof r=="function"?this.writeFileLazy(n,r):yq(r)?this.writeFileSync(n,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(n,r)}ensureParentDirs(e){let n=eo(e);n!=="/"&&(this.data.has(n)||(this.ensureParentDirs(n),this.data.set(n,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(e,n,r,s){de(e,"write");let i=he(e);this.ensureParentDirs(i);let o=Pr(r),a=Ms(n,o);this.data.set(i,{type:"file",content:a,mode:s?.mode??420,mtime:s?.mtime??new Date})}writeFileLazy(e,n,r){de(e,"write");let s=he(e);this.ensureParentDirs(s),this.data.set(s,{type:"file",lazy:n,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(e,n){let r=await n.lazy(),i={type:"file",content:typeof r=="string"?fa.encode(r):r,mode:n.mode,mtime:n.mtime};return this.data.set(e,i),i}async readFile(e,n){let r=await this.readFileBuffer(e),s=Pr(n);return dr(r,s)}async readFileBytes(e){let n=await this.readFileBuffer(e);return dr(n,"binary")}async readFileBuffer(e){de(e,"open");let n=this.resolvePathWithSymlinks(e),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, open '${e}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);if("lazy"in r){let s=await this.materializeLazy(n,r);return s.content instanceof Uint8Array?s.content:fa.encode(s.content)}return r.content instanceof Uint8Array?r.content:fa.encode(r.content)}async writeFile(e,n,r){this.writeFileSync(e,n,r)}async appendFile(e,n,r){de(e,"append");let s=he(e),i=this.data.get(s);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${e}'`);let o=Pr(r),a=Ms(n,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(s,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:fa.encode("content"in l?l.content:""),u=new Uint8Array(c.length+a.length);u.set(c),u.set(a,c.length),this.data.set(s,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(e,n,r)}async exists(e){if(e.includes("\0"))return!1;try{let n=this.resolvePathWithSymlinks(e);return this.data.has(n)}catch{return!1}}async stat(e){de(e,"stat");let n=this.resolvePathWithSymlinks(e),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=fa.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date}}async lstat(e){de(e,"lstat");let n=this.resolveIntermediateSymlinks(e),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=fa.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date}}resolveIntermediateSymlinks(e){let n=he(e);if(n==="/")return"/";let r=n.slice(1).split("/");if(r.length<=1)return n;let s="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];s=`${s}/${a}`;let l=this.data.get(s),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(s))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${e}'`);i.add(s),s=ua(s,l.target),l=this.data.get(s),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${e}'`)}return`${s}/${r[r.length-1]}`}resolvePathWithSymlinks(e){let n=he(e);if(n==="/")return"/";let r=n.slice(1).split("/"),s="",i=new Set;for(let o of r){s=`${s}/${o}`;let a=this.data.get(s),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(s))throw new Error(`ELOOP: too many levels of symbolic links, open '${e}'`);i.add(s),s=ua(s,a.target),a=this.data.get(s),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${e}'`)}return s}async mkdir(e,n){this.mkdirSync(e,n)}mkdirSync(e,n){de(e,"mkdir");let r=he(e);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${e}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let s=eo(r);if(s!=="/"&&!this.data.has(s))if(n?.recursive)this.mkdirSync(s,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${e}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(e){return(await this.readdirWithFileTypes(e)).map(r=>r.name)}async readdirWithFileTypes(e){de(e,"scandir");let n=he(e),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${e}'`);let s=new Set;for(;r&&r.type==="symlink";){if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${e}'`);s.add(n),n=ua(n,r.target),r=this.data.get(n)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${e}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${e}'`);let i=n==="/"?"/":`${n}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==n&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(e,n){de(e,"rm");let r=he(e),s=this.data.get(r);if(!s){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${e}'`)}if(s.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!n?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${e}'`);for(let o of i){let a=pi(r,o);await this.rm(a,n)}}}this.data.delete(r)}async cp(e,n,r){de(e,"cp"),de(n,"cp");let s=he(e),i=he(n),o=this.data.get(s);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${e}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.data.set(i,{...o,content:a})}else this.data.set(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${e}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(s);for(let l of a){let c=pi(s,l),u=pi(i,l);await this.cp(c,u,r)}}}async mv(e,n){await this.cp(e,n,{recursive:!0}),await this.rm(e,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(e,n){return di(e,n)}async chmod(e,n){de(e,"chmod");let r=he(e),s=this.data.get(r);if(!s)throw new Error(`ENOENT: no such file or directory, chmod '${e}'`);s.mode=n}async symlink(e,n){de(n,"symlink");let r=he(n);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:e,mode:511,mtime:new Date})}async link(e,n){de(e,"link"),de(n,"link");let r=he(e),s=he(n),i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, link '${e}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${e}'`);if(this.data.has(s))throw new Error(`EEXIST: file already exists, link '${n}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(s),this.data.set(s,{type:"file",content:o.content,mode:o.mode,mtime:o.mtime})}async readlink(e){de(e,"readlink");let n=he(e),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${e}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);return r.target}async realpath(e){de(e,"realpath");let n=this.resolvePathWithSymlinks(e);if(!this.data.has(n))throw new Error(`ENOENT: no such file or directory, realpath '${e}'`);return n}async utimes(e,n,r){de(e,"utimes");let s=he(e),i=this.resolvePathWithSymlinks(s),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${e}'`);o.mtime=r}};u6();function wq(t){let e=t;return typeof e.mkdirSync=="function"&&typeof e.writeFileSync=="function"}function bq(t,e){t.mkdirSync("/bin",{recursive:!0}),t.mkdirSync("/usr/bin",{recursive:!0}),e&&(t.mkdirSync("/home/user",{recursive:!0}),t.mkdirSync("/tmp",{recursive:!0}))}function Eq(t){t.mkdirSync("/dev",{recursive:!0}),t.writeFileSync("/dev/null",""),t.writeFileSync("/dev/zero",new Uint8Array(0)),t.writeFileSync("/dev/stdin",""),t.writeFileSync("/dev/stdout",""),t.writeFileSync("/dev/stderr","")}function xq(t,e){t.mkdirSync("/proc/self/fd",{recursive:!0}),t.writeFileSync("/proc/version",`${pv}
|
|
1412
1412
|
`),t.writeFileSync("/proc/self/exe","/bin/bash"),t.writeFileSync("/proc/self/cmdline","bash\0"),t.writeFileSync("/proc/self/comm",`bash
|
|
@@ -2071,7 +2071,7 @@ sys 0m0.000s
|
|
|
2071
2071
|
`,127)}if(i.startsWith("#!")){let g=i.indexOf(`
|
|
2072
2072
|
`);g!==-1&&(i=i.slice(g+1))}let o=new Map(t.state.env),a=t.state.cwd,l={...t.state.options},c=t.state.loopDepth,u=t.state.parentHasLoopContext,f=t.state.lastArg,h=t.state.bashPid,d=t.state.groupStdin,p=t.state.currentSource;t.state.parentHasLoopContext=c>0,t.state.loopDepth=0,t.state.bashPid=t.state.nextVirtualPid++,r&&(t.state.groupStdin=r),t.state.currentSource=e,t.state.env.set("0",e),t.state.env.set("#",String(n.length)),t.state.env.set("@",n.join(" ")),t.state.env.set("*",n.join(" "));for(let g=0;g<n.length&&g<9;g++)t.state.env.set(String(g+1),n[g]);for(let g=n.length+1;g<=9;g++)t.state.env.delete(String(g));let m=()=>{t.state.env=o,t.state.cwd=a,t.state.options=l,t.state.loopDepth=c,t.state.parentHasLoopContext=u,t.state.lastArg=f,t.state.bashPid=h,t.state.groupStdin=d,t.state.currentSource=p};try{let y=new Ne().parse(i),w=await s(y);return m(),w}catch(g){if(m(),g instanceof Re||g instanceof ie)throw g;if(g.name==="ParseException")return V(`bash: ${e}: ${g.message}
|
|
2073
2073
|
`);throw g}}function tG(t){let e=n=>{for(let r of n){if(r.type==="CommandSubstitution"||r.type==="DoubleQuoted"&&e(r.parts))return!0;if(r.type==="BraceExpansion"){for(let s of r.items)if(s.type==="Word"&&e(s.word.parts))return!0}}return!1};return e(t.parts)}var fc=class{ctx;constructor(e,n){this.ctx={state:n,fs:e.fs,commands:e.commands,limits:e.limits,execFn:e.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:e.fetch,sleep:e.sleep,trace:e.trace,coverage:e.coverage,requireDefenseContext:e.requireDefenseContext??!1,jsBootstrapCode:e.jsBootstrapCode,invokeTool:e.invokeTool}}assertDefenseContext(e){if(!this.ctx.requireDefenseContext||tt.isInSandboxedContext())return;let n=`interpreter ${e} attempted outside defense context`;throw new Se(n,{timestamp:Date.now(),type:"missing_defense_context",message:n,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:tt.getCurrentExecutionId()})}buildExportedEnv(){let e=this.ctx.state.exportedVars,n=this.ctx.state.tempExportedVars,r=new Set;if(e)for(let i of e)r.add(i);if(n)for(let i of n)r.add(i);if(r.size===0)return Object.create(null);let s=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(s[i]=o)}return s}async executeScript(e){this.assertDefenseContext("execution");let n="",r="",s=0,i=this.ctx.limits.maxOutputSize,o=(a,l)=>{n.length+r.length+a.length+l.length>i&&Cs(`total output size exceeded (>${i} bytes), increase executionLimits.maxOutputSize`,"output_size"),n+=a,r+=l};for(let a of e.statements)try{let l=await this.executeStatement(a);o(l.stdout,l.stderr),s=l.exitCode,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s))}catch(l){if(l instanceof Re)throw l.prependOutput(n,r),l;if(l instanceof ar)return o(l.stdout,l.stderr),s=l.exitCode,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s)),{stdout:n,stderr:r,exitCode:s,env:qt(this.ctx.state.env)};if(l instanceof ie)throw l;if(l instanceof Hn)return o(l.stdout,l.stderr),s=l.exitCode,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s)),{stdout:n,stderr:r,exitCode:s,env:qt(this.ctx.state.env)};if(l instanceof Pn)return o(l.stdout,l.stderr),s=1,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s)),{stdout:n,stderr:r,exitCode:s,env:qt(this.ctx.state.env)};if(l instanceof Rn)return o(l.stdout,l.stderr),s=1,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s)),{stdout:n,stderr:r,exitCode:s,env:qt(this.ctx.state.env)};if(l instanceof lt){o(l.stdout,l.stderr),s=1,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s));continue}if(l instanceof bo){o(l.stdout,l.stderr),s=1,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s));continue}if(l instanceof Nn||l instanceof Tn){if(this.ctx.state.loopDepth>0)throw l.prependOutput(n,r),l;o(l.stdout,l.stderr);continue}throw l instanceof pn&&l.prependOutput(n,r),l}return{stdout:n,stderr:r,exitCode:s,env:qt(this.ctx.state.env)}}async executeUserScript(e,n,r=""){return nT(this.ctx,e,n,r,s=>this.executeScript(s))}async executeStatement(e){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Eo;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Cs(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),e.deferredError)throw new un(e.deferredError.message,e.line??1,1);if(this.ctx.state.options.noexec)return De;this.ctx.state.errexitSafe=!1;let n="",r="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&e.sourceText&&(r+=`${e.sourceText}
|
|
2074
|
-
`);let s=0,i=-1,o=!1;for(let c=0;c<e.pipelines.length;c++){let u=e.pipelines[c],f=c>0?e.operators[c-1]:null;if(f==="&&"&&s!==0||f==="||"&&s===0)continue;let h=await this.executePipeline(u);n+=h.stdout,r+=h.stderr,s=h.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s))}let a=i<e.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&s!==0&&i===e.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new Hn(s,n,r);return K(n,r,s)}async executePipeline(e){return QN(this.ctx,e,(n,r)=>this.executeCommand(n,r))}async executeCommand(e,n){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${e.type}`),e.type){case"SimpleCommand":return this.executeSimpleCommand(e,n);case"If":return UN(this.ctx,e);case"For":return zN(this.ctx,e);case"CStyleFor":return WN(this.ctx,e);case"While":return jN(this.ctx,e,n);case"Until":return qN(this.ctx,e);case"Case":return HN(this.ctx,e);case"Subshell":return this.executeSubshell(e,n);case"Group":return this.executeGroup(e,n);case"FunctionDef":return aN(this.ctx,e);case"ArithmeticCommand":return this.executeArithmeticCommand(e);case"ConditionalCommand":return this.executeConditionalCommand(e);default:return De}}async executeSimpleCommand(e,n){try{return await this.executeSimpleCommandInner(e,n)}catch(r){if(r instanceof ls)return V(r.stderr);throw r}}async executeSimpleCommandInner(e,n){if(e.line!==void 0&&(this.ctx.state.currentLine=e.line),this.ctx.state.shoptOptions.expand_aliases&&e.name){let C=e,P=100;for(;P>0;){let $=this.expandAlias(C);if($===C)break;C=$,P--}this.aliasExpansionStack.clear(),C!==e&&(e=C)}this.ctx.state.expansionStderr="";let r=await XN(this.ctx,e);if(r.error)return r.error;let s=r.tempAssignments,i=r.xtraceOutput;if(!e.name){if(e.redirections.length>0){let
|
|
2074
|
+
`);let s=0,i=-1,o=!1;for(let c=0;c<e.pipelines.length;c++){let u=e.pipelines[c],f=c>0?e.operators[c-1]:null;if(f==="&&"&&s!==0||f==="||"&&s===0)continue;let h=await this.executePipeline(u);n+=h.stdout,r+=h.stderr,s=h.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=s,this.ctx.state.env.set("?",String(s))}let a=i<e.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&s!==0&&i===e.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new Hn(s,n,r);return K(n,r,s)}async executePipeline(e){return QN(this.ctx,e,(n,r)=>this.executeCommand(n,r))}async executeCommand(e,n){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${e.type}`),e.type){case"SimpleCommand":return this.executeSimpleCommand(e,n);case"If":return UN(this.ctx,e);case"For":return zN(this.ctx,e);case"CStyleFor":return WN(this.ctx,e);case"While":return jN(this.ctx,e,n);case"Until":return qN(this.ctx,e);case"Case":return HN(this.ctx,e);case"Subshell":return this.executeSubshell(e,n);case"Group":return this.executeGroup(e,n);case"FunctionDef":return aN(this.ctx,e);case"ArithmeticCommand":return this.executeArithmeticCommand(e);case"ConditionalCommand":return this.executeConditionalCommand(e);default:return De}}async executeSimpleCommand(e,n){try{return await this.executeSimpleCommandInner(e,n)}catch(r){if(r instanceof ls)return V(r.stderr);throw r}}async executeSimpleCommandInner(e,n){if(e.line!==void 0&&(this.ctx.state.currentLine=e.line),this.ctx.state.shoptOptions.expand_aliases&&e.name){let C=e,P=100;for(;P>0;){let $=this.expandAlias(C);if($===C)break;C=$,P--}this.aliasExpansionStack.clear(),C!==e&&(e=C)}this.ctx.state.expansionStderr="",this.ctx.state.commandSubstitutionUsed=!1;let r=await XN(this.ctx,e);if(r.error)return r.error;let s=r.tempAssignments,i=r.xtraceOutput;if(!e.name){if(e.redirections.length>0){let $=await Ns(this.ctx,e.redirections);if($)return $;let O=K("",i,0);return Pt(this.ctx,O,e.redirections)}this.ctx.state.lastArg="";let C=(this.ctx.state.expansionStderr||"")+i;this.ctx.state.expansionStderr="";let P=this.ctx.state.commandSubstitutionUsed?this.ctx.state.lastExitCode:0;return K("",C,P)}let o=e.name&&Kw(e.name,["local","declare","typeset","export","readonly"]),a=Array.from(s.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let C of a)this.ctx.state.tempExportedVars.add(C)}let l=await qh(this.ctx,e.redirections);if(l){for(let[C,P]of s)P===void 0?this.ctx.state.env.delete(C):this.ctx.state.env.set(C,P);return l}let c=-1;for(let C of e.redirections){if((C.operator==="<<"||C.operator==="<<-")&&C.target.type==="HereDoc"){let P=C.target,$=await ge(this.ctx,P.content);P.stripTabs&&($=$.split(`
|
|
2075
2075
|
`).map(R=>R.replace(/^\t+/,"")).join(`
|
|
2076
2076
|
`)),$=Er($);let O=C.fd??0;O!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),In(this.ctx),this.ctx.state.fileDescriptors.set(O,$)):n=$;continue}if(C.operator==="<<<"&&C.target.type==="Word"){n=Er(`${await ge(this.ctx,C.target)}
|
|
2077
2077
|
`);continue}if(C.operator==="<"&&C.target.type==="Word")try{let P=await ge(this.ctx,C.target),$=this.ctx.fs.resolvePath(this.ctx.state.cwd,P);n=await as(this.ctx.fs,$)}catch{let P=await ge(this.ctx,C.target);for(let[$,O]of s)O===void 0?this.ctx.state.env.delete($):this.ctx.state.env.set($,O);return V(`bash: ${P}: No such file or directory
|
package/dist/bundle/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{B as on,C as an,D as de,E as et,F as se,G as ke,H as Kt,I as ln,J as F,K as cn,L as un,M as _e,N as Us,O as Xt,P as H,a as Yr,b as Ms,c as Qr,d as qt,e as ee,f as B,g as fe,h as ne,i as xe,j as He,k as Ws,l as Gt,m as Jr,n as zs,o as en,p as Ee,q as We,r as tn,s as sn,t as Vs,u as Bs,v as Ze,w as rn,x as nn,y as Ae,z as js}from"./chunks/chunk-P7XJZDHE.js";import{a as Fe,b as Me,c as be}from"./chunks/chunk-R6VWJ2ZL.js";import{c as Fs}from"./chunks/chunk-CWQS3NFK.js";import{a as Mt,b as Wt}from"./chunks/chunk-A5O5YHGN.js";import{a as Ls}from"./chunks/chunk-IPJHKYVM.js";import{a as Ue,b as ve,c as Ct}from"./chunks/chunk-OJDRYQWQ.js";import{a as _t,b as Xr}from"./chunks/chunk-24IMIIXA.js";import{a as Ve,b as me}from"./chunks/chunk-5QMZ5MUS.js";import{a as kt}from"./chunks/chunk-B74TABJS.js";import{a as At,b as zt,c as io,d as Be,e as oo,f as Vt,g as ao,h as Bt,i as lo,j as co}from"./chunks/chunk-AH77CRWX.js";import{a as ye,b as ge,c as ue,d as we,e as Gr,f as j,g as Je,h as jt,i as Ut,j as Kr,k as J,l as Ht,m as je,n as Zt,o as Pe}from"./chunks/chunk-57MC5FQY.js";import"./chunks/chunk-NUFRM6SI.js";import{a as Le}from"./chunks/chunk-3THT3N7L.js";import{a as Ie}from"./chunks/chunk-44UOCSGV.js";import{a as Is}from"./chunks/chunk-DXB73IDG.js";var tt=[{name:"echo",load:async()=>(await import("./chunks/echo-O45JWWI2.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-VQEWZT5O.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-CEKOHUH5.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-KSXFZCWH.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-TDEMSB6C.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-XTQXT7RK.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DX2IJOQ4.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-RTZG23RL.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XOYR4ABJ.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-Z6MORUFL.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-4TRFBYAT.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-SYMGL4JA.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-D4OZ7N27.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-MI4GCHJF.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-FG33BE3W.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-EDLAF4WW.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-J6YO4AFR.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-BT5A227F.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-7CE2SS3X.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-7CE2SS3X.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-7CE2SS3X.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-GMXITNCP.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-HKXUNRIZ.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-IW7TXS45.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-5KALNK6P.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-DCP6SV3B.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-AXP77KC4.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-RBX7IXC7.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-HIF3YKHC.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-2QSZN4JB.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-SKETTPXH.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-LBU6FPPF.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-V23GDLZD.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-UMGRCDTC.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-ZTD2RXS2.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-7VYWRFIZ.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-4CXZNBGE.js")).split},{name:"column",load:async()=>(await import("./chunks/column-DCCLCHUR.js")).column},{name:"join",load:async()=>(await import("./chunks/join-TLHD7S7W.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-DUMXETDQ.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-DH2ALKQS.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-AA2KJYZQ.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-LEMTZZFS.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-LYXBS7DC.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-WO2ENHXQ.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-GBSZDQLS.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-GBSZDQLS.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-JE7RI5QX.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-JE7RI5QX.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-J4QRNGRO.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-LB2QOP6N.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-WHJNXCHG.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-WHJNXCHG.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-5CZ5X4YR.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-4WLDO24C.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-4WLDO24C.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-EQZB7JUS.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-FJOOBRMC.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-AYXX5MI5.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-DD7FVA2V.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-VZFPZFWA.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-PWE4AOYD.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-U22WPHDM.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-RN5ZUASB.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-YYCVMXE3.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-XMCB7L5Z.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-ZHNS7PS4.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-YWE2HB65.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-IGDTDPLG.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-AQHC3PHD.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-VVWX7SA5.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-AFLRHHI7.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-74F3WHUM.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-BK6HG2DE.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-DGKU3D2X.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-O6TPXWVX.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-EVI6YRMT.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-EVI6YRMT.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-EVI6YRMT.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(tt.push({name:"tar",load:async()=>(await import("./chunks/tar-RKYTUGDT.js")).tarCommand}),tt.push({name:"yq",load:async()=>(await import("./chunks/yq-HBHRGN4X.js")).yqCommand}),tt.push({name:"xan",load:async()=>(await import("./chunks/xan-X7AV7KKG.js")).xanCommand}),tt.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-FXN2MHWU.js")).sqlite3Command}));var Yt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Yt.push({name:"python3",load:async()=>(await import("./chunks/python3-ZR6W2FR3.js")).python3Command}),Yt.push({name:"python",load:async()=>(await import("./chunks/python3-ZR6W2FR3.js")).pythonCommand}));var Qt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Qt.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-2U7NEXAP.js")).jsExecCommand}),Qt.push({name:"node",load:async()=>(await import("./chunks/js-exec-2U7NEXAP.js")).nodeStubCommand}));var dn=[{name:"curl",load:async()=>(await import("./chunks/curl-47BFPSFW.js")).curlCommand}],fn=new Map;function Jt(e){return{name:e.name,async execute(t,s){let r=fn.get(e.name);if(r||(r=await me.runTrustedAsync(()=>e.load()),fn.set(e.name,r)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:n}=await import("./chunks/flag-coverage-Z434UZKN.js");n(s.coverage,e.name,t)}return r.execute(t,s)}}}function uo(){return tt.map(e=>e.name)}function fo(){return dn.map(e=>e.name)}function hn(e){return(e?tt.filter(s=>e.includes(s.name)):tt).map(Jt)}function pn(){return dn.map(Jt)}function ho(){return Yt.map(e=>e.name)}function mn(){return Yt.map(Jt)}function po(){return Qt.map(e=>e.name)}function yn(){return Qt.map(Jt)}function gn(e){return"load"in e&&typeof e.load=="function"}function mo(e,t){return{name:e,trusted:!0,execute:t}}function wn(e){let t=null;return{name:e.name,trusted:!0,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}function T(e){if(!e||e==="/")return"/";let t=e.endsWith("/")&&e!=="/"?e.slice(0,-1):e;t.startsWith("/")||(t=`/${t}`);let s=t.split("/").filter(n=>n&&n!=="."),r=[];for(let n of s)n===".."?r.pop():r.push(n);return`/${r.join("/")}`||"/"}function D(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function st(e){let t=T(e);if(t==="/")return"/";let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}function qe(e,t){if(t.startsWith("/"))return T(t);let s=e==="/"?`/${t}`:`${e}/${t}`;return T(s)}function Ge(e,t){return e==="/"?`/${t}`:`${e}/${t}`}function ct(e,t){if(t.startsWith("/"))return T(t);let s=st(e);return T(Ge(s,t))}var ut=new TextEncoder;function yo(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var ze=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))typeof r=="function"?this.writeFileLazy(s,r):yo(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}ensureParentDirs(t){let s=st(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,r,n){D(t,"write");let i=T(t);this.ensureParentDirs(i);let o=be(r),a=Fe(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}writeFileLazy(t,s,r){D(t,"write");let n=T(t);this.ensureParentDirs(n),this.data.set(n,{type:"file",lazy:s,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(t,s){let r=await s.lazy(),i={type:"file",content:typeof r=="string"?ut.encode(r):r,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let r=await this.readFileBuffer(t),n=be(s);return Me(r,n)}async readFileBytes(t){let s=await this.readFileBuffer(t);return Me(s,"binary")}async readFileBuffer(t){D(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in r){let n=await this.materializeLazy(s,r);return n.content instanceof Uint8Array?n.content:ut.encode(n.content)}return r.content instanceof Uint8Array?r.content:ut.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){D(t,"append");let n=T(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=be(r),a=Fe(s,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(n,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:ut.encode("content"in l?l.content:""),u=new Uint8Array(c.length+a.length);u.set(c),u.set(a,c.length),this.data.set(n,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}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){D(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=ut.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){D(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=ut.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveIntermediateSymlinks(t){let s=T(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=ct(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=T(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=ct(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){D(t,"mkdir");let r=T(t);if(this.data.has(r)){if(this.data.get(r)?.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 n=st(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){D(t,"scandir");let s=T(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=ct(s,r.target),r=this.data.get(s)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,s){D(t,"rm");let r=T(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=Ge(r,o);await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){D(t,"cp"),D(s,"cp");let n=T(t),i=T(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.data.set(i,{...o,content:a})}else this.data.set(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=Ge(n,l),u=Ge(i,l);await this.cp(c,u,r)}}}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 qe(t,s)}async chmod(t,s){D(t,"chmod");let r=T(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){D(s,"symlink");let r=T(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){D(t,"link"),D(s,"link");let r=T(t),n=T(s),i=this.data.get(r);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(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(n),this.data.set(n,{type:"file",content:o.content,mode:o.mode,mtime:o.mtime})}async readlink(t){D(t,"readlink");let s=T(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){D(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,r){D(t,"utimes");let n=T(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function go(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function wo(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 vo(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 bo(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Yr}
|
|
1
|
+
import{B as on,C as an,D as de,E as et,F as se,G as ke,H as Kt,I as ln,J as F,K as cn,L as un,M as _e,N as Us,O as Xt,P as H,a as Yr,b as Ms,c as Qr,d as qt,e as ee,f as B,g as fe,h as ne,i as xe,j as He,k as Ws,l as Gt,m as Jr,n as zs,o as en,p as Ee,q as We,r as tn,s as sn,t as Vs,u as Bs,v as Ze,w as rn,x as nn,y as Ae,z as js}from"./chunks/chunk-YRU23GFP.js";import{a as Fe,b as Me,c as be}from"./chunks/chunk-R6VWJ2ZL.js";import{c as Fs}from"./chunks/chunk-CWQS3NFK.js";import{a as Mt,b as Wt}from"./chunks/chunk-A5O5YHGN.js";import{a as Ls}from"./chunks/chunk-IPJHKYVM.js";import{a as Ue,b as ve,c as Ct}from"./chunks/chunk-OJDRYQWQ.js";import{a as _t,b as Xr}from"./chunks/chunk-24IMIIXA.js";import{a as Ve,b as me}from"./chunks/chunk-5QMZ5MUS.js";import{a as kt}from"./chunks/chunk-B74TABJS.js";import{a as At,b as zt,c as io,d as Be,e as oo,f as Vt,g as ao,h as Bt,i as lo,j as co}from"./chunks/chunk-AH77CRWX.js";import{a as ye,b as ge,c as ue,d as we,e as Gr,f as j,g as Je,h as jt,i as Ut,j as Kr,k as J,l as Ht,m as je,n as Zt,o as Pe}from"./chunks/chunk-57MC5FQY.js";import"./chunks/chunk-NUFRM6SI.js";import{a as Le}from"./chunks/chunk-3THT3N7L.js";import{a as Ie}from"./chunks/chunk-44UOCSGV.js";import{a as Is}from"./chunks/chunk-DXB73IDG.js";var tt=[{name:"echo",load:async()=>(await import("./chunks/echo-O45JWWI2.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-VQEWZT5O.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-CEKOHUH5.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-KSXFZCWH.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-TDEMSB6C.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-XTQXT7RK.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DX2IJOQ4.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-RTZG23RL.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XOYR4ABJ.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-Z6MORUFL.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-4TRFBYAT.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-SYMGL4JA.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-D4OZ7N27.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-MI4GCHJF.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-FG33BE3W.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-EDLAF4WW.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-J6YO4AFR.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-BT5A227F.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-7CE2SS3X.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-7CE2SS3X.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-7CE2SS3X.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-GMXITNCP.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-HKXUNRIZ.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-IW7TXS45.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-5KALNK6P.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-DCP6SV3B.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-AXP77KC4.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-RBX7IXC7.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-HIF3YKHC.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-2QSZN4JB.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-SKETTPXH.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-LBU6FPPF.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-V23GDLZD.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-UMGRCDTC.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-ZTD2RXS2.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-7VYWRFIZ.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-4CXZNBGE.js")).split},{name:"column",load:async()=>(await import("./chunks/column-DCCLCHUR.js")).column},{name:"join",load:async()=>(await import("./chunks/join-TLHD7S7W.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-DUMXETDQ.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-DH2ALKQS.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-AA2KJYZQ.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-LEMTZZFS.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-LYXBS7DC.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-WO2ENHXQ.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-GBSZDQLS.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-GBSZDQLS.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-JE7RI5QX.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-JE7RI5QX.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-J4QRNGRO.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-LB2QOP6N.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-WHJNXCHG.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-WHJNXCHG.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-5CZ5X4YR.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-4WLDO24C.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-4WLDO24C.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-EQZB7JUS.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-FJOOBRMC.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-AYXX5MI5.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-DD7FVA2V.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-VZFPZFWA.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-PWE4AOYD.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-U22WPHDM.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-RN5ZUASB.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-YYCVMXE3.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-XMCB7L5Z.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-ZHNS7PS4.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-YWE2HB65.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-IGDTDPLG.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-AQHC3PHD.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-VVWX7SA5.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-AFLRHHI7.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-74F3WHUM.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-BK6HG2DE.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-DGKU3D2X.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-O6TPXWVX.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-EVI6YRMT.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-EVI6YRMT.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-EVI6YRMT.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(tt.push({name:"tar",load:async()=>(await import("./chunks/tar-RKYTUGDT.js")).tarCommand}),tt.push({name:"yq",load:async()=>(await import("./chunks/yq-HBHRGN4X.js")).yqCommand}),tt.push({name:"xan",load:async()=>(await import("./chunks/xan-X7AV7KKG.js")).xanCommand}),tt.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-FXN2MHWU.js")).sqlite3Command}));var Yt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Yt.push({name:"python3",load:async()=>(await import("./chunks/python3-ZR6W2FR3.js")).python3Command}),Yt.push({name:"python",load:async()=>(await import("./chunks/python3-ZR6W2FR3.js")).pythonCommand}));var Qt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Qt.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-2U7NEXAP.js")).jsExecCommand}),Qt.push({name:"node",load:async()=>(await import("./chunks/js-exec-2U7NEXAP.js")).nodeStubCommand}));var dn=[{name:"curl",load:async()=>(await import("./chunks/curl-47BFPSFW.js")).curlCommand}],fn=new Map;function Jt(e){return{name:e.name,async execute(t,s){let r=fn.get(e.name);if(r||(r=await me.runTrustedAsync(()=>e.load()),fn.set(e.name,r)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:n}=await import("./chunks/flag-coverage-Z434UZKN.js");n(s.coverage,e.name,t)}return r.execute(t,s)}}}function uo(){return tt.map(e=>e.name)}function fo(){return dn.map(e=>e.name)}function hn(e){return(e?tt.filter(s=>e.includes(s.name)):tt).map(Jt)}function pn(){return dn.map(Jt)}function ho(){return Yt.map(e=>e.name)}function mn(){return Yt.map(Jt)}function po(){return Qt.map(e=>e.name)}function yn(){return Qt.map(Jt)}function gn(e){return"load"in e&&typeof e.load=="function"}function mo(e,t){return{name:e,trusted:!0,execute:t}}function wn(e){let t=null;return{name:e.name,trusted:!0,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}function T(e){if(!e||e==="/")return"/";let t=e.endsWith("/")&&e!=="/"?e.slice(0,-1):e;t.startsWith("/")||(t=`/${t}`);let s=t.split("/").filter(n=>n&&n!=="."),r=[];for(let n of s)n===".."?r.pop():r.push(n);return`/${r.join("/")}`||"/"}function D(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function st(e){let t=T(e);if(t==="/")return"/";let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}function qe(e,t){if(t.startsWith("/"))return T(t);let s=e==="/"?`/${t}`:`${e}/${t}`;return T(s)}function Ge(e,t){return e==="/"?`/${t}`:`${e}/${t}`}function ct(e,t){if(t.startsWith("/"))return T(t);let s=st(e);return T(Ge(s,t))}var ut=new TextEncoder;function yo(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var ze=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))typeof r=="function"?this.writeFileLazy(s,r):yo(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}ensureParentDirs(t){let s=st(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,r,n){D(t,"write");let i=T(t);this.ensureParentDirs(i);let o=be(r),a=Fe(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}writeFileLazy(t,s,r){D(t,"write");let n=T(t);this.ensureParentDirs(n),this.data.set(n,{type:"file",lazy:s,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(t,s){let r=await s.lazy(),i={type:"file",content:typeof r=="string"?ut.encode(r):r,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let r=await this.readFileBuffer(t),n=be(s);return Me(r,n)}async readFileBytes(t){let s=await this.readFileBuffer(t);return Me(s,"binary")}async readFileBuffer(t){D(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in r){let n=await this.materializeLazy(s,r);return n.content instanceof Uint8Array?n.content:ut.encode(n.content)}return r.content instanceof Uint8Array?r.content:ut.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){D(t,"append");let n=T(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=be(r),a=Fe(s,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(n,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:ut.encode("content"in l?l.content:""),u=new Uint8Array(c.length+a.length);u.set(c),u.set(a,c.length),this.data.set(n,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}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){D(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=ut.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){D(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=ut.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveIntermediateSymlinks(t){let s=T(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=ct(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=T(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=ct(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){D(t,"mkdir");let r=T(t);if(this.data.has(r)){if(this.data.get(r)?.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 n=st(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){D(t,"scandir");let s=T(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=ct(s,r.target),r=this.data.get(s)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,s){D(t,"rm");let r=T(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=Ge(r,o);await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){D(t,"cp"),D(s,"cp");let n=T(t),i=T(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.data.set(i,{...o,content:a})}else this.data.set(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=Ge(n,l),u=Ge(i,l);await this.cp(c,u,r)}}}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 qe(t,s)}async chmod(t,s){D(t,"chmod");let r=T(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){D(s,"symlink");let r=T(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){D(t,"link"),D(s,"link");let r=T(t),n=T(s),i=this.data.get(r);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(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(n),this.data.set(n,{type:"file",content:o.content,mode:o.mode,mtime:o.mtime})}async readlink(t){D(t,"readlink");let s=T(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){D(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,r){D(t,"utimes");let n=T(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function go(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function wo(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 vo(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 bo(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Yr}
|
|
2
2
|
`),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
|
|
3
3
|
`),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>Ms(t)):e.writeFileSync("/proc/self/status",Ms(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 vn(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){go(e)&&(wo(e,t),vo(e),bo(e,s))}var Eo=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],$o=["braceexpand","hashall","interactive-comments"];function Zs(e){let t=[],s=[...$o.map(r=>({name:r,enabled:!0})),...Eo.map(r=>({name:r,enabled:e[r]}))].sort((r,n)=>r.name.localeCompare(n.name));for(let r of s)r.enabled&&t.push(r.name);return t.join(":")}function dt(e){e.state.env.set("SHELLOPTS",Zs(e.state.options))}var So=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function qs(e){let t=[];for(let s of So)e[s]&&t.push(s);return t.join(":")}function Gs(e){e.state.env.set("BASHOPTS",qs(e.state.shoptOptions))}var Po="BASH_ALIAS_";function bn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function En(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function $n(e,t){return e.env.get(`${Po}${t}`)}function Ks(e,t,s){if(!t.name||!bn(t.name))return t;let r=En(t.name);if(!r)return t;let n=$n(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new B,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=Pn(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof qt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return Sn(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return Sn(t,n);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(a&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(bn(f)){let d=En(f);if(d&&$n(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=Ks(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(r),i}}function Sn(e,t){let s=t;for(let o of e.args){let a=Pn(o);s+=` ${a}`}let r=new B,n=r.parseWordFromString("eval",!1,!1),i=r.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:n,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function Pn(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(r=>r.type==="Literal"?r.value:`$${r.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 An(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),r=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!r||!s.endsWith(")"))return null;let n=r[1],i=[],o=!1,a="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!o){let d=f.indexOf("=(");d!==-1&&(o=!0,f=f.slice(d+2))}if(o){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(a||l)&&(i.push(a),a="",l=!1):h&&(a+=h)}}else if(o)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(a))a+=Gt({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await _e(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await F(e,{type:"Word",parts:[u]});a+=f}(a||l)&&i.push(a);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${n}=(${c.join(" ")})`}async function kn(e,t){let s=-1,r=-1,n=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let w=g.value.indexOf("+=");if(w!==-1){let v=g.value.slice(0,w);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(v)){s=p,r=w,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(v)){s=p,r=w,n=!0;break}}let y=g.value.indexOf("=");if(y!==-1&&(y===0||g.value[y-1]!=="+")){let v=g.value.slice(0,y);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(v)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(v)){s=p,r=y;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),o=t.parts[s];if(o.type!=="Literal")return null;let a=n?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(s+1),f="";for(let p of i)f+=await F(e,{type:"Word",parts:[p]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await F(e,d):"";return`${f}${n?"+=":"="}${h}`}var Ao=["tar","yq","xan","sqlite3","python3","python"];function _n(e){return Ao.includes(e)}var W=Object.freeze({stdout:"",stderr:"",exitCode:0});function z(e=""){return{stdout:e,stderr:"",exitCode:0}}function _(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function C(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function Q(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Te(e,t,s="",r=""){throw new J(e,t,s,r)}function le(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new J(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function Xs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new je;return W}if(t.length>1)throw new j(1,"",`bash: break: too many arguments
|
|
4
4
|
`);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new j(128,"",`bash: break: ${t[0]}: numeric argument required
|
|
@@ -651,7 +651,7 @@ sys 0m0.000s
|
|
|
651
651
|
`,1)}}if(n=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+n,n<0){let a=e.state.currentLine;return{index:0,error:C("",`bash: line ${a}: ${t}[${s}]: bad array subscript
|
|
652
652
|
`,1)}}}return{index:n}}async function Ia(e,t,s,r,n,i){let o="",a=s,l=null;if(Ee(e,s)){let f=nn(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:C("",`bash: ${s}: circular name reference
|
|
653
653
|
`,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};a=f;let d=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},a=d[1])}if(et(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
|
|
654
|
-
`,{continueToNext:!0,xtraceOutput:o};let f=se(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(xt(e,a))try{let f=new B;if(n){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,m=ee(f,h);c=String(await H(e,m.expression))}else{let d=ee(f,r);c=String(await H(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-
|
|
654
|
+
`,{continueToNext:!0,xtraceOutput:o};let f=se(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(xt(e,a))try{let f=new B;if(n){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,m=ee(f,h);c=String(await H(e,m.expression))}else{let d=ee(f,r);c=String(await H(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-ZG4LQZAI.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=gt(e,a,c),o+=await xi(e,a,c);let u=a;if(l)u=await La(e,l);else{let{isArray:f}=await import("./chunks/expansion-ZG4LQZAI.js");f(e,a)&&(u=`${a}_0`)}return t.name?(i.set(u,e.state.env.get(u)),e.state.env.set(u,c)):(e.state.env.set(u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function La(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return Ri(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new B,a=ee(o,r);i=await H(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=Ae(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Ii(e,t,s,r){let n=await Re(e,t.redirections);if(n)return n;let i=new Map(e.state.env),o=e.state.cwd,a={...e.state.options},l=new Map(e.state.functions),c=e.state.localScopes,u=e.state.localVarStack,f=e.state.localVarDepth,d=e.state.fullyUnsetLocals;if(e.state.localScopes=c.map($=>new Map($)),u){e.state.localVarStack=new Map;for(let[$,O]of u.entries())e.state.localVarStack.set($,O.map(A=>({...A})))}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,g=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let w=e.state.groupStdin;s&&(e.state.groupStdin=s);let y="",v="",b=0,S=()=>{e.state.env=i,e.state.cwd=o,e.state.options=a,e.state.functions=l,e.state.localScopes=c,e.state.localVarStack=u,e.state.localVarDepth=f,e.state.fullyUnsetLocals=d,e.state.loopDepth=h,e.state.parentHasLoopContext=m,e.state.groupStdin=w,e.state.bashPid=g,e.state.lastArg=p};try{for(let $ of t.body){let O=await r($);y+=O.stdout,v+=O.stderr,b=O.exitCode}}catch($){if(S(),$ instanceof J)throw $;if($ instanceof je){y+=$.stdout,v+=$.stderr;let A=C(y,v,0);return K(e,A,t.redirections)}if($ instanceof ye||$ instanceof ge){y+=$.stdout,v+=$.stderr;let A=C(y,v,0);return K(e,A,t.redirections)}if($ instanceof j){y+=$.stdout,v+=$.stderr;let A=C(y,v,$.exitCode);return K(e,A,t.redirections)}if($ instanceof ue){y+=$.stdout,v+=$.stderr;let A=C(y,v,$.exitCode);return K(e,A,t.redirections)}if($ instanceof we){let A=C(y+$.stdout,v+$.stderr,$.exitCode);return K(e,A,t.redirections)}let O=C(y,`${v}${Ie($)}
|
|
655
655
|
`,1);return K(e,O,t.redirections)}S();let E=C(y,v,b);return K(e,E,t.redirections)}async function Li(e,t,s,r){let n="",i="",o=0,a=await ms(e,t.redirections);if(a)return a;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,h=await F(e,d.content);d.stripTabs&&(h=h.split(`
|
|
656
656
|
`).map(p=>p.replace(/^\t+/,"")).join(`
|
|
657
657
|
`));let m=f.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),le(e),e.state.fileDescriptors.set(m,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await F(e,f.target)}
|
|
@@ -661,7 +661,7 @@ sys 0m0.000s
|
|
|
661
661
|
`,127)}if(i.startsWith("#!")){let g=i.indexOf(`
|
|
662
662
|
`);g!==-1&&(i=i.slice(g+1))}let o=new Map(e.state.env),a=e.state.cwd,l={...e.state.options},c=e.state.loopDepth,u=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=c>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),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 g=0;g<s.length&&g<9;g++)e.state.env.set(String(g+1),s[g]);for(let g=s.length+1;g<=9;g++)e.state.env.delete(String(g));let p=()=>{e.state.env=o,e.state.cwd=a,e.state.options=l,e.state.loopDepth=c,e.state.parentHasLoopContext=u,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=m};try{let w=new B().parse(i),y=await n(w);return p(),y}catch(g){if(p(),g instanceof j||g instanceof J)throw g;if(g.name==="ParseException")return _(`bash: ${t}: ${g.message}
|
|
663
663
|
`);throw g}}function Fa(e){let t=s=>{for(let r of s){if(r.type==="CommandSubstitution"||r.type==="DoubleQuoted"&&t(r.parts))return!0;if(r.type==="BraceExpansion"){for(let n of r.items)if(n.type==="Word"&&t(n.word.parts))return!0}}return!1};return t(e.parts)}var It=class{ctx;constructor(t,s){this.ctx={state:s,fs:t.fs,commands:t.commands,limits:t.limits,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace,coverage:t.coverage,requireDefenseContext:t.requireDefenseContext??!1,jsBootstrapCode:t.jsBootstrapCode,invokeTool:t.invokeTool}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||me.isInSandboxedContext())return;let s=`interpreter ${t} attempted outside defense context`;throw new Ve(s,{timestamp:Date.now(),type:"missing_defense_context",message:s,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:me.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(s)for(let i of s)r.add(i);if(r.size===0)return Object.create(null);let n=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(n[i]=o)}return n}async executeScript(t){this.assertDefenseContext("execution");let s="",r="",n=0,i=this.ctx.limits.maxOutputSize,o=(a,l)=>{s.length+r.length+a.length+l.length>i&&Te(`total output size exceeded (>${i} bytes), increase executionLimits.maxOutputSize`,"output_size"),s+=a,r+=l};for(let a of t.statements)try{let l=await this.executeStatement(a);o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(l){if(l instanceof j)throw l.prependOutput(s,r),l;if(l instanceof Pe)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ue(this.ctx.state.env)};if(l instanceof J)throw l;if(l instanceof we)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ue(this.ctx.state.env)};if(l instanceof Gr)return o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ue(this.ctx.state.env)};if(l instanceof jt)return o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ue(this.ctx.state.env)};if(l instanceof Je){o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof Kr){o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof ye||l instanceof ge){if(this.ctx.state.loopDepth>0)throw l.prependOutput(s,r),l;o(l.stdout,l.stderr);continue}throw l instanceof ue&&l.prependOutput(s,r),l}return{stdout:s,stderr:r,exitCode:n,env:Ue(this.ctx.state.env)}}async executeUserScript(t,s,r=""){return Fi(this.ctx,t,s,r,n=>this.executeScript(n))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Ht;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Te(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new qt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return W;this.ctx.state.errexitSafe=!1;let s="",r="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(r+=`${t.sourceText}
|
|
664
|
-
`);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new we(n,s,r);return C(s,r,n)}async executePipeline(t){return Ti(this.ctx,t,(s,r)=>this.executeCommand(s,r))}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 $i(this.ctx,t);case"CStyleFor":return Si(this.ctx,t);case"While":return Pi(this.ctx,t,s);case"Until":return Ai(this.ctx,t);case"Case":return ki(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Bn(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return W}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(r){if(r instanceof Ut)return _(r.stderr);throw r}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let E=t,$=100;for(;$>0;){let O=this.expandAlias(E);if(O===E)break;E=O,$--}this.aliasExpansionStack.clear(),E!==t&&(t=E)}this.ctx.state.expansionStderr="";let r=await Di(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let
|
|
664
|
+
`);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new we(n,s,r);return C(s,r,n)}async executePipeline(t){return Ti(this.ctx,t,(s,r)=>this.executeCommand(s,r))}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 $i(this.ctx,t);case"CStyleFor":return Si(this.ctx,t);case"While":return Pi(this.ctx,t,s);case"Until":return Ai(this.ctx,t);case"Case":return ki(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Bn(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return W}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(r){if(r instanceof Ut)return _(r.stderr);throw r}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let E=t,$=100;for(;$>0;){let O=this.expandAlias(E);if(O===E)break;E=O,$--}this.aliasExpansionStack.clear(),E!==t&&(t=E)}this.ctx.state.expansionStderr="",this.ctx.state.commandSubstitutionUsed=!1;let r=await Di(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let O=await Re(this.ctx,t.redirections);if(O)return O;let A=C("",i,0);return K(this.ctx,A,t.redirections)}this.ctx.state.lastArg="";let E=(this.ctx.state.expansionStderr||"")+i;this.ctx.state.expansionStderr="";let $=this.ctx.state.commandSubstitutionUsed?this.ctx.state.lastExitCode:0;return C("",E,$)}let o=t.name&&zr(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(n.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let E of a)this.ctx.state.tempExportedVars.add(E)}let l=await ms(this.ctx,t.redirections);if(l){for(let[E,$]of n)$===void 0?this.ctx.state.env.delete(E):this.ctx.state.env.set(E,$);return l}let c=-1;for(let E of t.redirections){if((E.operator==="<<"||E.operator==="<<-")&&E.target.type==="HereDoc"){let $=E.target,O=await F(this.ctx,$.content);$.stripTabs&&(O=O.split(`
|
|
665
665
|
`).map(x=>x.replace(/^\t+/,"")).join(`
|
|
666
666
|
`)),O=Be(O);let A=E.fd??0;A!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),le(this.ctx),this.ctx.state.fileDescriptors.set(A,O)):s=O;continue}if(E.operator==="<<<"&&E.target.type==="Word"){s=Be(`${await F(this.ctx,E.target)}
|
|
667
667
|
`);continue}if(E.operator==="<"&&E.target.type==="Word")try{let $=await F(this.ctx,E.target),O=this.ctx.fs.resolvePath(this.ctx.state.cwd,$);s=await Vt(this.ctx.fs,O)}catch{let $=await F(this.ctx,E.target);for(let[O,A]of n)A===void 0?this.ctx.state.env.delete(O):this.ctx.state.env.set(O,A);return _(`bash: ${$}: No such file or directory
|
|
@@ -255,6 +255,8 @@ export interface ExpansionState {
|
|
|
255
255
|
expansionExitCode?: number;
|
|
256
256
|
/** Stderr from expansion errors */
|
|
257
257
|
expansionStderr?: string;
|
|
258
|
+
/** True if current simple command executed at least one command substitution. */
|
|
259
|
+
commandSubstitutionUsed?: boolean;
|
|
258
260
|
}
|
|
259
261
|
/**
|
|
260
262
|
* Complete interpreter state for bash script execution.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "just-bash-nx",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.10",
|
|
4
4
|
"description": "A simulated bash environment with virtual filesystem",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -56,6 +56,37 @@
|
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "rm -rf dist && tsc && pnpm build:lib && pnpm build:lib:cjs && pnpm build:browser && pnpm build:cli && pnpm build:shell && pnpm build:worker && pnpm build:clean && cp dist/index.d.ts dist/index.d.cts && sed '1,/^-->/d' AGENTS.npm.md > dist/AGENTS.md",
|
|
61
|
+
"build:clean": "find dist -name '*.test.js' -delete && find dist -name '*.test.d.ts' -delete",
|
|
62
|
+
"build:worker": "esbuild src/commands/python3/worker.ts --bundle --platform=node --format=esm --outfile=src/commands/python3/worker.js --external:../../../vendor/cpython-emscripten/* && cp src/commands/python3/worker.js dist/commands/python3/worker.js && mkdir -p dist/bin/chunks && cp src/commands/python3/worker.js dist/bin/chunks/worker.js && mkdir -p dist/bundle/chunks && cp src/commands/python3/worker.js dist/bundle/chunks/worker.js && esbuild src/commands/js-exec/js-exec-worker.ts --bundle --platform=node --format=esm --outfile=src/commands/js-exec/js-exec-worker.js --external:quickjs-emscripten && cp src/commands/js-exec/js-exec-worker.js dist/commands/js-exec/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bin/chunks/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bundle/chunks/js-exec-worker.js && esbuild src/commands/sqlite3/worker.ts --bundle --platform=node --format=esm --outfile=src/commands/sqlite3/worker.js --external:sql.js && mkdir -p dist/commands/sqlite3 && cp src/commands/sqlite3/worker.js dist/commands/sqlite3/worker.js && cp src/commands/sqlite3/worker.js dist/bin/chunks/sqlite3-worker.js && cp src/commands/sqlite3/worker.js dist/bundle/chunks/sqlite3-worker.js",
|
|
63
|
+
"build:lib": "esbuild dist/index.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bundle --chunk-names=chunks/[name]-[hash] --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip",
|
|
64
|
+
"build:lib:cjs": "esbuild dist/index.js --bundle --platform=node --format=cjs --minify --outfile=dist/bundle/index.cjs --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip",
|
|
65
|
+
"build:browser": "esbuild dist/browser.js --bundle --platform=browser --format=esm --minify --outfile=dist/bundle/browser.js --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:node:zlib --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip --define:__BROWSER__=true --alias:node:dns=./src/shims/browser-unsupported.js",
|
|
66
|
+
"build:cli": "mkdir -p dist/cli dist/bin && cp src/cli/default-init.sh dist/cli/default-init.sh && cp src/cli/default-init.sh dist/bin/default-init.sh && esbuild dist/cli/just-bash.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip",
|
|
67
|
+
"build:shell": "esbuild dist/cli/shell.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin/shell --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip",
|
|
68
|
+
"prepublishOnly": "pnpm test:dist",
|
|
69
|
+
"validate": "pnpm lint && pnpm knip && pnpm typecheck && pnpm build && pnpm check:worker-sync && pnpm test:run && pnpm test:wasm && pnpm test:dist",
|
|
70
|
+
"typecheck": "tsc --noEmit",
|
|
71
|
+
"lint": "pnpm lint:banned",
|
|
72
|
+
"check:worker-sync": "node scripts/check-worker-sync.js",
|
|
73
|
+
"lint:banned": "node scripts/check-banned-patterns.js",
|
|
74
|
+
"lint:fix": "pnpm --workspace-root lint:fix",
|
|
75
|
+
"knip": "knip",
|
|
76
|
+
"test": "vitest",
|
|
77
|
+
"test:run": "vitest run --exclude src/security/fuzzing/ --exclude src/commands/python3/ --exclude src/commands/sqlite3/ --exclude src/commands/js-exec/ --exclude src/agent-examples/python-scripting.test.ts",
|
|
78
|
+
"test:dist": "vitest run src/cli/just-bash.bundle.test.ts",
|
|
79
|
+
"test:unit": "vitest run --config vitest.unit.config.ts",
|
|
80
|
+
"test:wasm": "vitest run --config vitest.wasm.config.ts",
|
|
81
|
+
"test:comparison": "vitest run --config vitest.comparison.config.ts",
|
|
82
|
+
"test:comparison:record": "RECORD_FIXTURES=1 vitest run --config vitest.comparison.config.ts",
|
|
83
|
+
"test:coverage": "vitest run --coverage",
|
|
84
|
+
"test:coverage:unit": "vitest run --config vitest.unit.config.ts --coverage",
|
|
85
|
+
"test:fuzz": "vitest run src/security/fuzzing/",
|
|
86
|
+
"test:fuzz:long": "FUZZ_RUNS=10000 vitest run src/security/fuzzing/",
|
|
87
|
+
"shell": "npx tsx src/cli/shell.ts",
|
|
88
|
+
"dev:exec": "npx tsx src/cli/exec.ts"
|
|
89
|
+
},
|
|
59
90
|
"keywords": [],
|
|
60
91
|
"author": "Malte and Claude",
|
|
61
92
|
"license": "Apache-2.0",
|
|
@@ -93,35 +124,5 @@
|
|
|
93
124
|
"optionalDependencies": {
|
|
94
125
|
"@mongodb-js/zstd": "^7.0.0",
|
|
95
126
|
"node-liblzma": "^2.0.3"
|
|
96
|
-
},
|
|
97
|
-
"scripts": {
|
|
98
|
-
"build": "rm -rf dist && tsc && pnpm build:lib && pnpm build:lib:cjs && pnpm build:browser && pnpm build:cli && pnpm build:shell && pnpm build:worker && pnpm build:clean && cp dist/index.d.ts dist/index.d.cts && sed '1,/^-->/d' AGENTS.npm.md > dist/AGENTS.md",
|
|
99
|
-
"build:clean": "find dist -name '*.test.js' -delete && find dist -name '*.test.d.ts' -delete",
|
|
100
|
-
"build:worker": "esbuild src/commands/python3/worker.ts --bundle --platform=node --format=esm --outfile=src/commands/python3/worker.js --external:../../../vendor/cpython-emscripten/* && cp src/commands/python3/worker.js dist/commands/python3/worker.js && mkdir -p dist/bin/chunks && cp src/commands/python3/worker.js dist/bin/chunks/worker.js && mkdir -p dist/bundle/chunks && cp src/commands/python3/worker.js dist/bundle/chunks/worker.js && esbuild src/commands/js-exec/js-exec-worker.ts --bundle --platform=node --format=esm --outfile=src/commands/js-exec/js-exec-worker.js --external:quickjs-emscripten && cp src/commands/js-exec/js-exec-worker.js dist/commands/js-exec/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bin/chunks/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bundle/chunks/js-exec-worker.js && esbuild src/commands/sqlite3/worker.ts --bundle --platform=node --format=esm --outfile=src/commands/sqlite3/worker.js --external:sql.js && mkdir -p dist/commands/sqlite3 && cp src/commands/sqlite3/worker.js dist/commands/sqlite3/worker.js && cp src/commands/sqlite3/worker.js dist/bin/chunks/sqlite3-worker.js && cp src/commands/sqlite3/worker.js dist/bundle/chunks/sqlite3-worker.js",
|
|
101
|
-
"build:lib": "esbuild dist/index.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bundle --chunk-names=chunks/[name]-[hash] --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip",
|
|
102
|
-
"build:lib:cjs": "esbuild dist/index.js --bundle --platform=node --format=cjs --minify --outfile=dist/bundle/index.cjs --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip",
|
|
103
|
-
"build:browser": "esbuild dist/browser.js --bundle --platform=browser --format=esm --minify --outfile=dist/bundle/browser.js --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:node:zlib --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip --define:__BROWSER__=true --alias:node:dns=./src/shims/browser-unsupported.js",
|
|
104
|
-
"build:cli": "mkdir -p dist/cli dist/bin && cp src/cli/default-init.sh dist/cli/default-init.sh && cp src/cli/default-init.sh dist/bin/default-init.sh && esbuild dist/cli/just-bash.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip",
|
|
105
|
-
"build:shell": "esbuild dist/cli/shell.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin/shell --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip",
|
|
106
|
-
"validate": "pnpm lint && pnpm knip && pnpm typecheck && pnpm build && pnpm check:worker-sync && pnpm test:run && pnpm test:wasm && pnpm test:dist",
|
|
107
|
-
"typecheck": "tsc --noEmit",
|
|
108
|
-
"lint": "pnpm lint:banned",
|
|
109
|
-
"check:worker-sync": "node scripts/check-worker-sync.js",
|
|
110
|
-
"lint:banned": "node scripts/check-banned-patterns.js",
|
|
111
|
-
"lint:fix": "pnpm --workspace-root lint:fix",
|
|
112
|
-
"knip": "knip",
|
|
113
|
-
"test": "vitest",
|
|
114
|
-
"test:run": "vitest run --exclude src/security/fuzzing/ --exclude src/commands/python3/ --exclude src/commands/sqlite3/ --exclude src/commands/js-exec/ --exclude src/agent-examples/python-scripting.test.ts",
|
|
115
|
-
"test:dist": "vitest run src/cli/just-bash.bundle.test.ts",
|
|
116
|
-
"test:unit": "vitest run --config vitest.unit.config.ts",
|
|
117
|
-
"test:wasm": "vitest run --config vitest.wasm.config.ts",
|
|
118
|
-
"test:comparison": "vitest run --config vitest.comparison.config.ts",
|
|
119
|
-
"test:comparison:record": "RECORD_FIXTURES=1 vitest run --config vitest.comparison.config.ts",
|
|
120
|
-
"test:coverage": "vitest run --coverage",
|
|
121
|
-
"test:coverage:unit": "vitest run --config vitest.unit.config.ts --coverage",
|
|
122
|
-
"test:fuzz": "vitest run src/security/fuzzing/",
|
|
123
|
-
"test:fuzz:long": "FUZZ_RUNS=10000 vitest run src/security/fuzzing/",
|
|
124
|
-
"shell": "npx tsx src/cli/shell.ts",
|
|
125
|
-
"dev:exec": "npx tsx src/cli/exec.ts"
|
|
126
127
|
}
|
|
127
|
-
}
|
|
128
|
+
}
|
|
File without changes
|