import{createRequire} from"node:module";const require=createRequire(import.meta.url); import{a as ye}from"./chunk-TDD4NFYE.js";import{b as Q}from"./chunk-VACKIICN.js";import{a as U}from"./chunk-7CSMHFIJ.js";import{a as pe,b as ge,c as ee}from"./chunk-QAYAQNCG.js";var Ke="file",Je="link",Ve="symlink",ke="directory",Qe={file:"0",link:"1",symlink:"2","character-device":"3","block-device":"4",directory:"5",fifo:"6","pax-header":"x","pax-global-header":"g","gnu-long-name":"L","gnu-long-link-name":"K"},et={0:Ke,1:Je,2:Ve,3:"character-device",4:"block-device",5:ke,6:"fifo",x:"pax-header",g:"pax-global-header",L:"gnu-long-name",K:"gnu-long-link-name"},tt=new Uint8Array(512),_=new Uint8Array(0),T=new TextEncoder,ze=new TextDecoder;function P(e,t,n,r){r&&T.encodeInto(r,e.subarray(t,t+n))}function L(e,t,n,r){if(r===void 0)return;let s=r.toString(8).padStart(n-1,"0");T.encodeInto(s,e.subarray(t,t+n-1))}function S(e,t,n){let r=e.indexOf(0,t),s=r===-1||r>t+n?t+n:r;return ze.decode(e.subarray(t,s))}function ne(e,t,n){let r=0,s=t+n;for(let o=t;oe.type==="directory"||e.type==="symlink"||e.type==="link"||e.type==="character-device"||e.type==="block-device"||e.type==="fifo";async function Ce(e){if(e==null)return _;if(e instanceof Uint8Array)return e;if(typeof e=="string")return T.encode(e);if(e instanceof ArrayBuffer)return new Uint8Array(e);if(e instanceof Blob)return new Uint8Array(await e.arrayBuffer());throw new TypeError("Unsupported content type for entry body.")}var we=(e,t)=>{let n=e.split("/").filter(Boolean);return t>=n.length?"":n.slice(t).join("/")};function Ae(e,t){let{strip:n,filter:r,map:s}=t;if(!n&&!r&&!s)return e;let o={...e};if(n&&n>0){let a=we(o.name,n);if(!a)return null;if(o.name=o.type==="directory"&&!a.endsWith("/")?`${a}/`:a,o.linkname){let l=o.linkname.startsWith("/");if(l||o.type==="link"){let c=we(o.linkname,n);o.linkname=l?`/${c}`||"/":c}}}if(r?.(o)===!1)return null;let i=s?s(o):o;return i&&(!i.name||!i.name.trim()||i.name==="."||i.name==="/")?null:i}var re=32,rt=48;function nt(e){let t=ne(e,148,8),n=0;for(let r=0;r=148&&r<156?n+=re:n+=e[r];return t===n}function it(e){e.fill(re,148,156);let t=0;for(let n of e)t+=n;for(let n=153;n>=148;n--)e[n]=(t&7)+rt,t>>=3;e[154]=0,e[155]=re}var st=256;function ot(e){let t={};T.encode(e.name).length>100&&Ee(e.name)===null&&(t.path=e.name),e.linkname&&T.encode(e.linkname).length>100&&(t.linkpath=e.linkname),e.uname&&T.encode(e.uname).length>32&&(t.uname=e.uname),e.gname&&T.encode(e.gname).length>32&&(t.gname=e.gname),e.uid!=null&&e.uid>2097151&&(t.uid=String(e.uid)),e.gid!=null&&e.gid>2097151&&(t.gid=String(e.gid)),e.size!=null&&e.size>8589934591&&(t.size=String(e.size)),e.pax&&Object.assign(t,e.pax);let n=Object.entries(t);if(n.length===0)return null;let r=T.encode(n.map(([s,o])=>{let i=`${s}=${o} `,a=T.encode(i).length+1,l=a+String(a).length;return l=a+String(l).length,`${l} ${i}`}).join(""));return{paxHeader:$e({name:ze.decode(T.encode(`PaxHeader/${e.name}`).slice(0,100)),size:r.length,type:"pax-header",mode:420,mtime:e.mtime,uname:e.uname,gname:e.gname,uid:e.uid,gid:e.gid}),paxBody:r}}function Ee(e){let t=T.encode(e).length;if(t<=100||t>st)return null;for(let n=e.length-1;n>0;n--){if(e[n]!=="/")continue;let r=e.slice(0,n),s=e.slice(n+1);if(T.encode(r).length<=155&&T.encode(s).length<=100)return{prefix:r,name:s}}return null}function $e(e){let t=new Uint8Array(512),n=N(e)?0:e.size??0,r=e.name,s="";if(!e.pax?.path){let o=Ee(r);o&&(r=o.name,s=o.prefix)}return P(t,0,100,r),L(t,100,8,e.mode??(e.type==="directory"?493:420)),L(t,108,8,e.uid??0),L(t,116,8,e.gid??0),L(t,124,12,n),L(t,136,12,Math.floor((e.mtime?.getTime()??Date.now())/1e3)),P(t,156,1,Qe[e.type??"file"]),P(t,157,100,e.linkname),P(t,257,6,"ustar\0"),P(t,263,2,"00"),P(t,265,32,e.uname),P(t,297,32,e.gname),P(t,345,155,s),it(t),t}function at(e,t){if(t&&!nt(e))throw new Error("Invalid tar header checksum.");let n=S(e,156,1),r={name:S(e,0,100),mode:ne(e,100,8),uid:W(e,108,8),gid:W(e,116,8),size:W(e,124,12),mtime:new Date(W(e,136,12)*1e3),type:et[n]||"file",linkname:S(e,157,100)},s=S(e,257,6);return N(r)&&(r.size=0),s.trim()==="ustar"&&(r.uname=S(e,265,32),r.gname=S(e,297,32)),s==="ustar"&&(r.prefix=S(e,345,155)),r}var be={path:["name",e=>e],linkpath:["linkname",e=>e],size:["size",e=>parseInt(e,10)],mtime:["mtime",parseFloat],uid:["uid",e=>parseInt(e,10)],gid:["gid",e=>parseInt(e,10)],uname:["uname",e=>e],gname:["gname",e=>e]};function lt(e){let t=new TextDecoder("utf-8"),n=Object.create(null),r=Object.create(null),s=0;for(;s0&&(n.pax=r),n}function xe(e,t){t.name!==void 0&&(e.name=t.name),t.linkname!==void 0&&(e.linkname=t.linkname),t.size!==void 0&&(e.size=t.size),t.mtime!==void 0&&(e.mtime=new Date(t.mtime*1e3)),t.uid!==void 0&&(e.uid=t.uid),t.gid!==void 0&&(e.gid=t.gid),t.uname!==void 0&&(e.uname=t.uname),t.gname!==void 0&&(e.gname=t.gname),t.pax&&(e.pax=Object.assign({},e.pax??{},t.pax))}function ct(e){switch(e){case"pax-global-header":case"pax-header":return lt;case"gnu-long-name":return t=>({name:S(t,0,t.length)});case"gnu-long-link-name":return t=>({linkname:S(t,0,t.length)});default:return}}function ft(e){let t=$e(e),n=ot(e);if(!n)return[t];let r=-n.paxBody.length&511,s=r>0?[tt.subarray(0,r)]:[];return[n.paxHeader,n.paxBody,...s,t]}var ut=new Uint8Array(512*2);function Be(e,t,n){let r=null,s=0,o=!1,i=a=>{let l=new Error(a);throw t(l),l};return{add(a){o&&i("No new tar entries after finalize."),r!==null&&i("Previous entry must be completed before adding a new one");let l=N(a)?0:a.size;(!Number.isSafeInteger(l)||l<0)&&i("Invalid tar entry size.");try{let c=ft({...a,size:l});for(let f of c)e(f);r={...a,size:l},s=0}catch(c){t(c)}},write(a){r||i("No active tar entry."),o&&i("Cannot write data after finalize.");let l=s+a.length;l>r.size&&i(`"${r.name}" exceeds given size of ${r.size} bytes.`);try{s=l,e(a)}catch(c){t(c)}},endEntry(){r||i("No active entry to end."),o&&i("Cannot end entry after finalize.");try{s!==r.size&&i(`Size mismatch for "${r.name}".`);let a=-r.size&511;a>0&&e(new Uint8Array(a)),r=null,s=0}catch(a){throw t(a),a}},finalize(){o&&i("Archive has already been finalized"),r!==null&&i("Cannot finalize while an entry is still active");try{e(ut),o=!0,n&&n()}catch(a){t(a)}}}}var j=256;function dt(){let e=new Array(j),t=e.length-1,n=0,r=0,s=0,o=a=>{let l=e[n];a===l.length?(e[n]=_,n=n+1&t):e[n]=l.subarray(a),s-=a,s===0&&e.length>j&&(e=new Array(j),t=j-1,n=0,r=0)};function i(a,l){if(l){let g=0,d=Math.min(a,s);for(;d>0;){let p=e[n],m=Math.min(d,p.length),x=m===p.length?p:p.subarray(0,m);if(o(m),d-=m,g+=m,!l(x))break}return g}if(s=a){let g=c.length===a?c:c.subarray(0,a);return o(a),g}let f=new Uint8Array(a),u=0,y=a;for(;y>0;){let g=e[n],d=Math.min(y,g.length);f.set(d===g.length?g:g.subarray(0,d),u),u+=d,y-=d,o(d)}return f}return{push:a=>{if(a.length===0)return;let l=r+1&t;if(l===n){let c=e.length,f=c*2,u=new Array(f),y=r-n+c&c-1;if(n0){let g=c-n;for(let d=0;ds,peek:a=>{if(s=a)return l.length===a?l:l.subarray(0,a);let c=new Uint8Array(a),f=0,u=n;for(;f{if(a>s)throw new Error("Too many bytes consumed");if(a===0)return;let l=a;for(;l>0;){let c=e[n],f=Math.min(l,c.length);o(f),l-=f}},pull:i}}var te=0,D=1,H=new Error("Tar archive is truncated.");function Te(e={}){let t=e.strict??!1,{available:n,peek:r,push:s,discard:o,pull:i}=dt(),a=te,l=!1,c=!1,f=!1,u=null,y={},g={},d={isEntryActive:()=>a===D,isBodyComplete:()=>!u||u.remaining===0,canFinish:()=>!u||n()>=u.remaining+u.padding,write(p){if(l)throw new Error("Archive already ended.");s(p)},end(){l=!0},readHeader(){if(a!==te)throw new Error("Cannot read header while an entry is active");if(!c)for(;!c;){if(n()<512){if(l){if(n()>0&&t)throw H;c=!0;return}return null}let p=r(512);if(ve(p)){if(n()<512*2){if(l){if(t)throw H;c=!0;return}return null}if(ve(r(512*2).subarray(512))){o(512*2),c=!0,f=!0;return}if(t)throw new Error("Invalid tar header.");o(512);continue}let m;try{m=at(p,t)}catch(E){if(t)throw E;o(512);continue}let x=ct(m.type);if(x){let E=m.size+(-m.size&511);if(n()<512+E){if(l&&t)throw H;return null}o(512);let v=x(i(E).subarray(0,m.size)),$=m.type==="pax-global-header"?y:g;for(let z in v)$[z]=v[z];continue}o(512);let b=m;return m.prefix&&(b.name=`${m.prefix}/${b.name}`),xe(b,y),xe(b,g),b.name.endsWith("/")&&b.type==="file"&&(b.type=ke),g={},u={header:b,remaining:b.size,padding:-b.size&511},a=D,b}},streamBody(p){if(a!==D||!u||u.remaining===0)return 0;let m=Math.min(u.remaining,n());if(m===0)return 0;let x=i(m,p);return u.remaining-=x,x},skipPadding(){if(a!==D||!u)return!0;if(u.remaining>0)throw new Error("Body not fully consumed");return n()0&&(o(p),u.remaining-=p),u.remaining>0?!1:d.skipPadding()},validateEOF(){if(t){if(!f)throw H;if(n()>0&&i(n()).some(p=>p!==0))throw new Error("Invalid EOF.")}}};return d}function ve(e){if(e.byteOffset%8===0){let t=new BigUint64Array(e.buffer,e.byteOffset,e.length/8);for(let n=0;ne.pipeTo(new WritableStream);function ht(e={}){let t=Te(e),n=e.strict??!1,r=null,s=null,o=!1,i=!1,a=!1,l=!1,c=()=>{try{s?.close()}catch{}s=null},f=d=>{if(!l){l=!0;try{s?.error(d)}catch{}s=null;try{r.error(d)}catch{}r=null}},u=()=>{if(!l){l=!0,c();try{r.close()}catch{}r=null}},y=()=>{if(n)throw new Error("Tar archive is truncated.");u()},g=()=>{if(!(o||l||!r)){o=!0;try{for(;;){if(i){a&&(t.validateEOF(),u());break}if(t.isEntryActive()){if(a&&!t.canFinish()){y();break}if(s){if((s.desiredSize??1)<=0)break;if(t.streamBody(d=>(s.enqueue(d),(s.desiredSize??1)>0))===0&&!t.isBodyComplete()){a&&y();break}}else if(!t.skipEntry()){a&&y();break}if(t.isBodyComplete()&&(c(),!t.skipPadding())){a&&y();break}}else{if((r.desiredSize??0)<0)break;let d=t.readHeader();if(d===null){a&&u();break}if(d===void 0){if(a){t.validateEOF(),u();break}i=!0;break}r.enqueue({header:d,body:new ReadableStream({start(p){d.size===0?p.close():s=p},pull:g,cancel(){s=null,g()}})})}}}catch(d){throw f(d),d}finally{o=!1}}};return{readable:new ReadableStream({start(d){r=d},pull:g,cancel(d){d!==void 0?f(d):u()}},{highWaterMark:2}),writable:new WritableStream({write(d){try{if(i&&n&&d.some(p=>p!==0))throw new Error("Invalid EOF.");t.write(d),g()}catch(p){throw f(p),p}},close(){try{a=!0,t.end(),g()}catch(d){throw f(d),d}},abort(d){f(d)}})}}async function Oe(e){let{readable:t,controller:n}=mt();return await(async()=>{for(let r of e){let s=n.add(r.header),o="body"in r?r.body:r.data;if(!o){await s.close();continue}if(o instanceof ReadableStream)await o.pipeTo(s);else if(o instanceof Blob)await o.stream().pipeTo(s);else try{let i=await Ce(o);if(i.length>0){let a=s.getWriter();await a.write(i),await a.close()}else await s.close()}catch{throw new TypeError(`Unsupported content type for entry "${r.header.name}".`)}}})().then(()=>n.finalize()).catch(r=>n.error(r)),new Uint8Array(await Pe(t))}async function Ue(e,t={}){let n=e instanceof ReadableStream?e:new ReadableStream({start(o){o.enqueue(e instanceof Uint8Array?e:new Uint8Array(e)),o.close()}}),r=[],s=n.pipeThrough(ht(t));for await(let o of s){let i;try{i=Ae(o.header,t)}catch(a){throw await o.body.cancel(),a}if(i===null){await Se(o.body);continue}N(i)?(await Se(o.body),r.push({header:i})):r.push({header:i,data:await Pe(o.body)})}return r}import At from"seek-bzip";var pt=(()=>{let e=new Uint32Array(256);for(let t=0;t<256;t++){let n=t<<24;for(let r=0;r<8;r++)n=n&2147483648?n<<1^79764919:n<<1;e[t]=n>>>0}return e})();function gt(e,t){return(e<<8^pt[(e>>>24^t)&255])>>>0}var ie=class{buffer=[];current=0;bitCount=0;writeBits(t,n){for(let r=t-1;r>=0;r--)this.current=this.current<<1|n>>>r&1,this.bitCount++,this.bitCount===8&&(this.buffer.push(this.current),this.current=0,this.bitCount=0)}writeBit(t){this.current=this.current<<1|t&1,this.bitCount++,this.bitCount===8&&(this.buffer.push(this.current),this.current=0,this.bitCount=0)}finish(){return this.bitCount>0&&this.buffer.push(this.current<<8-this.bitCount),new Uint8Array(this.buffer)}};function yt(e){let t=[],n=0;for(;n=4?(t.push(r,r,r,r),t.push(s-4),n+=s):(t.push(r),n++)}return new Uint8Array(t)}function wt(e){let t=e.length;if(t===0)return{transformed:new Uint8Array(0),pointer:0};let n=bt(e),r=new Uint8Array(t),s=0;for(let o=0;oo[i]!==o[a]?o[i]-o[a]:o[(i+s)%t]-o[(a+s)%t]),r[n[0]]=0;for(let i=1;i0){let c=o[l];for(let f=l;f>0;f--)o[f]=o[f-1];o[0]=c}}return{encoded:s,length:e.length}}function vt(e,t,n){let o=n+1,i=[],a=0;for(;a0;)f--,f&1?i.push(1):i.push(0),f>>>=1}else i.push(e[a]+1),a++;i.push(o);let l=new Uint16Array(i.length);for(let c=0;c0&&(c[f]=1);return{codeLengths:c,maxLen:1,minLen:1}}let r=[];for(let c=0;c0&&r.push({freq:e[c],symbol:c,left:null,right:null});if(r.length===0)return{codeLengths:new Array(e.length).fill(0),maxLen:0,minLen:0};if(r.length===1){let c=new Array(e.length).fill(0);return c[r[0].symbol]=1,{codeLengths:c,maxLen:1,minLen:1}}for(;r.length>1;){r.sort((u,y)=>u.freq-y.freq);let c=r.shift(),f=r.shift();r.push({freq:c.freq+f.freq,symbol:-1,left:c,right:f})}let s=new Array(e.length).fill(0);function o(c,f){if(!c.left&&!c.right){s[c.symbol]=f;return}c.left&&o(c.left,f+1),c.right&&o(c.right,f+1)}o(r[0],0);let i=!0;for(;i;){i=!1;for(let c=0;cn&&(s[c]=n,i=!0);if(i){let c=0;for(let f=0;f0&&(c+=1/(1<1)for(let f=1;f1;f++)for(let u=0;u1;u++)s[u]===f&&(s[u]++,c-=1/(1<n){i=!0;break}}}let a=n,l=0;for(let c=0;c0&&(s[c]l&&(l=s[c]));return{codeLengths:s,maxLen:l,minLen:a}}function kt(e,t){let n=new Array(t).fill(0),r=e.slice(0,t),s=Math.max(...r,0),o=new Array(s+1).fill(0);for(let l=0;l0&&o[r[l]]++;let i=new Array(s+1).fill(0),a=0;for(let l=1;l<=s;l++)a=a+o[l-1]<<1,i[l]=a;for(let l=0;l0&&(n[l]=i[r[l]]++);return{codes:n,lengths:r}}function zt(e,t,n){e.writeBits(24,3227993),e.writeBits(24,2511705),e.writeBits(32,n),e.writeBit(0);let r=yt(t),{transformed:s,pointer:o}=wt(r);e.writeBits(24,o);let i=new Array(256).fill(!1);for(let h=0;hp&&(m=Math.max(2,p));let x=[];for(let h=0;h0){let B=z[k];for(let C=k;C>0;C--)z[C]=z[C-1];z[0]=B}}for(let h=0;hC;)e.writeBit(1),e.writeBit(1),k--;e.writeBit(0)}}for(let h=0;h=d)&&(h>0&&he++,R=0);let w=b[he],k=v[w],B=u[h],C=k._lengths[B],M=k._codes[B];C>0&&e.writeBits(C,M),R++}}var Ct=10*1024*1024;function Le(e,t=9,n=Ct){if(t<1||t>9)throw new Error("Block size level must be 1-9");if(e.length>n)throw new Error(`Input too large for bzip2 compression (${e.length} bytes, max ${n})`);let r=t*1e5,s=new ie;s.writeBits(8,66),s.writeBits(8,90),s.writeBits(8,104),s.writeBits(8,48+t);let o=0,i=0;for(;i>>0,o=(o<<1|o>>>31)>>>0,o=(o^c)>>>0,zt(s,l,c),i=a}return s.writeBits(24,1536581),s.writeBits(24,3690640),s.writeBits(32,o),s.finish()}var X=null,Z=null;async function Me(){if(X)return X;if(Z)throw Z;try{return X=await Q.runTrustedAsync(()=>import("node-liblzma")),X}catch{throw Z=new Error("xz compression requires node-liblzma which failed to load. Install liblzma-dev (apt) or xz (brew) and reinstall dependencies."),Z}}var G=null,q=null;async function We(){if(G)return G;if(q)throw q;try{return G=await Q.runTrustedAsync(()=>import("@mongodb-js/zstd")),G}catch{throw q=new Error("zstd compression requires @mongodb-js/zstd which is not installed. Install it with: npm install @mongodb-js/zstd"),q}}var A=100*1024*1024,De=512,Re=1e4;function Et(e){let t="file";e.isDirectory?t="directory":e.isSymlink&&(t="symlink");let n=e.name;e.isDirectory&&!n.endsWith("/")&&(n+="/");let r;e.content!==void 0&&(typeof e.content=="string"?r=new TextEncoder().encode(e.content):r=e.content);let s=e.isDirectory||e.isSymlink?0:r?.length??0;return{header:{name:n,mode:e.mode??(e.isDirectory?493:420),uid:e.uid??0,gid:e.gid??0,size:s,mtime:e.mtime??new Date,type:t,linkname:e.linkTarget??"",uname:"user",gname:"user"},body:r}}async function O(e){let t=e.map(Et);return Oe(t)}async function je(e){let t=await O(e),s=new ReadableStream({start(c){c.enqueue(t),c.close()}}).pipeThrough(Fe()).getReader(),o=[];for(;;){let{done:c,value:f}=await s.read();if(c)break;o.push(f)}let i=o.reduce((c,f)=>c+f.length,0),a=new Uint8Array(i),l=0;for(let c of o)a.set(c,l),l+=c.length;return a}async function F(e){if(e.length>A)return{entries:[],error:`Archive too large (max ${A} bytes)`};if(e.length=Re)return{entries:n,error:`Too many entries (max ${Re})`};let s="file";switch(r.header.type){case"directory":s="directory";break;case"symlink":s="symlink";break;case"link":s="hardlink";break;case"file":s="file";break;default:s="other"}n.push({name:r.header.name,mode:r.header.mode??420,uid:r.header.uid??0,gid:r.header.gid??0,size:r.header.size,mtime:r.header.mtime??new Date,type:s,linkTarget:r.header.linkname||void 0,content:r.data??new Uint8Array(0)})}return{entries:n}}catch(t){let n=t instanceof Error?t.message:"Unknown error";return{entries:[],error:n}}}async function se(e){if(e.length>A)return{entries:[],error:`Archive too large (max ${A} bytes)`};try{let r=new ReadableStream({start(l){l.enqueue(e),l.close()}}).pipeThrough(Ie()).getReader(),s=[],o=0;for(;;){let{done:l,value:c}=await r.read();if(l)break;if(o+=c.length,o>A)return await r.cancel(),{entries:[],error:`Decompressed archive too large (max ${A} bytes)`};s.push(c)}let i=new Uint8Array(o),a=0;for(let l of s)i.set(l,a),a+=l.length;return F(i)}catch(t){let n=t instanceof Error?t.message:"Unknown error";return{entries:[],error:`Decompression failed: ${n}`}}}function oe(e){return e.length>=2&&e[0]===31&&e[1]===139}function ae(e){return e.length>=3&&e[0]===66&&e[1]===90&&e[2]===104}function le(e){return e.length>=6&&e[0]===253&&e[1]===55&&e[2]===122&&e[3]===88&&e[4]===90&&e[5]===0}async function $t(e){let t=At.decode(Buffer.from(e));return new Uint8Array(t)}async function Bt(e){return Le(e,9)}async function Tt(e){let n=(await Me()).unxzSync(Buffer.from(e));return new Uint8Array(n)}async function St(e){let n=(await Me()).xzSync(Buffer.from(e));return new Uint8Array(n)}async function He(e){let t=await O(e);return Bt(t)}async function _e(e,t){if(!t?.allowNativeCodecs)throw new Error("xz compression is disabled by default (native codec risk). Pass { allowNativeCodecs: true } to opt in.");let n=await O(e);return St(n)}async function ce(e){if(e.length>A)return{entries:[],error:`Archive too large (max ${A} bytes)`};try{let t=await $t(e);return t.length>A?{entries:[],error:`Decompressed archive too large (max ${A} bytes)`}:F(t)}catch(t){let n=t instanceof Error?t.message:"Unknown error";return{entries:[],error:n}}}async function fe(e,t){if(!t?.allowNativeCodecs)return{entries:[],error:"xz decompression is disabled by default (native codec risk). Pass { allowNativeCodecs: true } to opt in, or decompress the archive externally before extraction."};if(e.length>A)return{entries:[],error:`Archive too large (max ${A} bytes)`};try{let n=await Tt(e);return n.length>A?{entries:[],error:`Decompressed archive too large (max ${A} bytes)`}:F(n)}catch(n){let r=n instanceof Error?n.message:"Unknown error";return{entries:[],error:r}}}function ue(e){return e.length>=4&&e[0]===40&&e[1]===181&&e[2]===47&&e[3]===253}async function Ft(e){let n=await(await We()).compress(Buffer.from(e),3);return new Uint8Array(n)}async function It(e){let n=await(await We()).decompress(Buffer.from(e));return new Uint8Array(n)}async function Xe(e,t){if(!t?.allowNativeCodecs)throw new Error("zstd compression is disabled by default (native codec risk). Pass { allowNativeCodecs: true } to opt in.");let n=await O(e);return Ft(n)}async function de(e,t){if(!t?.allowNativeCodecs)return{entries:[],error:"zstd decompression is disabled by default (native codec risk). Pass { allowNativeCodecs: true } to opt in, or decompress the archive externally before extraction."};if(e.length>A)return{entries:[],error:`Archive too large (max ${A} bytes)`};try{let n=await It(e);return n.length>A?{entries:[],error:`Decompressed archive too large (max ${A} bytes)`}:F(n)}catch(n){let r=n instanceof Error?n.message:"Unknown error";return{entries:[],error:r}}}function Ze(e){let t=/[fCTX]/g,n=e.length>0&&e[0]!==""&&!e[0].startsWith("-")?[`-${e[0].replace(t,"")+(e[0].match(t)??[]).join("")}`,...e.slice(1)]:e,r={create:!1,append:!1,update:!1,extract:!1,list:!1,file:"",autoCompress:!1,gzip:!1,bzip2:!1,xz:!1,zstd:!1,verbose:!1,toStdout:!1,keepOldFiles:!1,touch:!1,directory:"",preserve:!1,absoluteNames:!1,strip:0,exclude:[],filesFrom:"",excludeFrom:"",wildcards:!1},s=[],o=0;for(;o2){if(/^-\d+$/.test(i)){s.push(i),o++;continue}for(let a=1;a=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option requires an argument -- 'f' `,exitCode:2}};r.file=n[o]}break;case"C":if(a=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option requires an argument -- 'C' `,exitCode:2}};r.directory=n[o]}break;case"T":if(a=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option requires an argument -- 'T' `,exitCode:2}};r.filesFrom=n[o]}break;case"X":if(a=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option requires an argument -- 'X' `,exitCode:2}};r.excludeFrom=n[o]}break;default:return{ok:!1,error:ee("tar",`-${l}`)}}}o++;continue}if(i==="-c"||i==="--create")r.create=!0;else if(i==="-r"||i==="--append")r.append=!0;else if(i==="-u"||i==="--update")r.update=!0;else if(i==="-x"||i==="--extract"||i==="--get")r.extract=!0;else if(i==="-t"||i==="--list")r.list=!0;else if(i==="-a"||i==="--auto-compress")r.autoCompress=!0;else if(i==="-z"||i==="--gzip"||i==="--gunzip")r.gzip=!0;else if(i==="-j"||i==="--bzip2")r.bzip2=!0;else if(i==="-J"||i==="--xz")r.xz=!0;else if(i==="--zstd")r.zstd=!0;else if(i==="-v"||i==="--verbose")r.verbose=!0;else if(i==="-O"||i==="--to-stdout")r.toStdout=!0;else if(i==="-k"||i==="--keep-old-files")r.keepOldFiles=!0;else if(i==="-m"||i==="--touch")r.touch=!0;else if(i==="--wildcards")r.wildcards=!0;else if(i==="-p"||i==="--preserve"||i==="--preserve-permissions")r.preserve=!0;else if(i==="-P"||i==="--absolute-names")r.absoluteNames=!0;else if(i==="-f"||i==="--file"){if(o++,o>=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option requires an argument -- 'f' `,exitCode:2}};r.file=n[o]}else if(i.startsWith("--file="))r.file=i.substring(7);else if(i==="-C"||i==="--directory"){if(o++,o>=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option requires an argument -- 'C' `,exitCode:2}};r.directory=n[o]}else if(i.startsWith("--directory="))r.directory=i.substring(12);else if(i.startsWith("--strip-components=")||i.startsWith("--strip=")){let a=i.includes("--strip-components=")?i.substring(19):i.substring(8),l=parseInt(a,10);if(Number.isNaN(l)||l<0)return{ok:!1,error:{stdout:"",stderr:`tar: invalid number for --strip: '${a}' `,exitCode:2}};r.strip=l}else if(i.startsWith("--exclude="))r.exclude.push(i.substring(10));else if(i==="--exclude"){if(o++,o>=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option '--exclude' requires an argument `,exitCode:2}};r.exclude.push(n[o])}else if(i==="-T"||i==="--files-from"){if(o++,o>=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option requires an argument -- 'T' `,exitCode:2}};r.filesFrom=n[o]}else if(i.startsWith("--files-from="))r.filesFrom=i.substring(13);else if(i==="-X"||i==="--exclude-from"){if(o++,o>=n.length)return{ok:!1,error:{stdout:"",stderr:`tar: option requires an argument -- 'X' `,exitCode:2}};r.excludeFrom=n[o]}else if(i.startsWith("--exclude-from="))r.excludeFrom=i.substring(15);else if(i==="--"){s.push(...n.slice(o+1));break}else{if(i.startsWith("-"))return{ok:!1,error:ee("tar",i)};s.push(i)}o++}return{ok:!0,options:r,files:s}}var Ge=100,Pt={name:"tar",summary:"manipulate tape archives",usage:"tar [options] [file...]",description:["Create, extract, or list contents of tar archives.","","One of -c, -r, -u, -x, or -t is required to specify the operation."],options:["-c, --create create a new archive","-r, --append append files to the end of an archive","-u, --update only append files newer than copy in archive","-x, --extract extract files from an archive","-t, --list list contents of an archive","-f, --file=ARCHIVE use archive file ARCHIVE","-a, --auto-compress use archive suffix to determine compression","-z, --gzip filter archive through gzip","-j, --bzip2 filter archive through bzip2","-J, --xz filter archive through xz","--zstd filter archive through zstd","-v, --verbose verbosely list files processed","-O, --to-stdout extract files to standard output","-k, --keep-old-files don't replace existing files when extracting","-m, --touch don't extract file modified time","-C, --directory=DIR change to directory DIR before performing operations","-p, --preserve preserve permissions","-P, --absolute-names do not strip leading '/' or block '..' paths","-T, --files-from=FILE read files to extract/create from FILE","-X, --exclude-from=FILE read exclude patterns from FILE","--strip=N strip N leading path components on extraction","--exclude=PATTERN exclude files matching PATTERN","--wildcards use wildcards for pattern matching"," --help display this help and exit"],examples:["tar -cvf archive.tar file1 file2 Create archive from files","tar -czvf archive.tar.gz dir/ Create gzip-compressed archive","tar -cjvf archive.tar.bz2 dir/ Create bzip2-compressed archive","tar -rf archive.tar newfile.txt Append file to archive","tar -uf archive.tar dir/ Update archive with newer files","tar -xvf archive.tar Extract archive","tar -xvf archive.tar -C /tmp Extract to /tmp","tar -tvf archive.tar List archive contents","tar -xzf archive.tar.gz Extract gzip archive","tar -xf archive.tar file1.txt Extract specific file","tar -xOf archive.tar file.txt Extract file to stdout","tar -xf archive.tar --wildcards '*.txt' Extract matching files"]};function me(e,t){let n=e.includes("/")?e.substring(e.lastIndexOf("/")+1):e;for(let r of t){let s=r.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"<<>>").replace(/\*/g,"[^/]*").replace(/<<>>/g,".*").replace(/\?/g,".");if(U(`^${s}$`).test(e)||U(`^${s}/`).test(e)||!r.includes("/")&&U(`^${s}$`).test(n))return!0}return!1}function Y(e,t){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"<<>>").replace(/\*/g,"[^/]*").replace(/<<>>/g,".*").replace(/\?/g,"."),r=e.includes("/")?e.substring(e.lastIndexOf("/")+1):e;return U(`^${n}$`).test(e)||U(`^${n}$`).test(r)}function qe(e,t){if(t<=0)return e;let n=e.split("/").filter(r=>r!=="");return n.length<=t?"":n.slice(t).join("/")}function Ye(e){return e.split("/").some(t=>t==="..")}function Ot(e,t){if(t)return{safePath:e};let n=e.replace(/^\/+/,"");return n.length===0?{safePath:""}:Ye(n)?{error:"Path contains '..'"}:{safePath:n}}function Ut(e){let n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][e.getMonth()],r=e.getDate().toString().padStart(2," "),s=e.getHours().toString().padStart(2,"0"),o=e.getMinutes().toString().padStart(2,"0");return`${n} ${r} ${s}:${o}`}async function K(e,t,n,r){let s=[],o=[],i=e.fs.resolvePath(t,n);try{let a=await e.fs.stat(i);if(me(n,r))return{entries:s,errors:o};if(a.isDirectory){s.push({name:n,isDirectory:!0,mode:a.mode,mtime:a.mtime});let l=await e.fs.readdir(i);for(let c=0;cK(e,t,n?`${n}/${y}`:y,r)));for(let y of u)s.push(...y.entries),o.push(...y.errors)}}else if(a.isFile){let l=await e.fs.readFileBuffer(i);s.push({name:n,content:l,mode:a.mode,mtime:a.mtime})}else if(a.isSymbolicLink){let l=await e.fs.readlink(i);s.push({name:n,isSymlink:!0,linkTarget:l,mode:a.mode,mtime:a.mtime})}}catch(a){let l=a instanceof Error?a.message:"unknown error";o.push(`tar: ${n}: ${l}`)}return{entries:s,errors:o}}async function Nt(e,t,n){if(n.length===0)return{stdout:"",stderr:`tar: Cowardly refusing to create an empty archive `,exitCode:2};let r=t.directory?e.fs.resolvePath(e.cwd,t.directory):e.cwd,s=[],o=[],i="";for(let f of n){let{entries:u,errors:y}=await K(e,r,f,t.exclude);if(s.push(...u),o.push(...y),t.verbose)for(let g of u)i+=`${g.name}${g.isDirectory?"/":""} `}if(s.length===0&&o.length>0)return{stdout:"",stderr:`${o.join(` `)} `,exitCode:2};let a;try{t.gzip?a=await je(s):t.bzip2?a=await He(s):t.xz?a=await _e(s):t.zstd?a=await Xe(s):a=await O(s)}catch(f){return{stdout:"",stderr:`tar: error creating archive: ${f instanceof Error?f.message:"unknown error"} `,exitCode:2}}let l="";if(t.file&&t.file!=="-"){let f=e.fs.resolvePath(e.cwd,t.file);try{await e.fs.writeFile(f,a)}catch(u){let y=u instanceof Error?u.message:"unknown error";return{stdout:"",stderr:`tar: ${t.file}: ${y} `,exitCode:2}}}else l=Buffer.from(a).toString("latin1");let c=i;return o.length>0&&(c+=`${o.join(` `)} `),{stdout:l,stderr:c,exitCode:o.length>0?2:0,stdoutKind:l.length>0?"bytes":"text"}}async function Lt(e,t,n){if(!t.file||t.file==="-")return{stdout:"",stderr:`tar: Cannot append to stdin/stdout `,exitCode:2};if(n.length===0)return{stdout:"",stderr:`tar: Cowardly refusing to append nothing to archive `,exitCode:2};let r=e.fs.resolvePath(e.cwd,t.file),s;try{s=await e.fs.readFileBuffer(r)}catch{return{stdout:"",stderr:`tar: ${t.file}: Cannot open: No such file or directory `,exitCode:2}}let o=await F(s);if(o.error)return{stdout:"",stderr:`tar: ${o.error} `,exitCode:2};let i=o.entries.map(d=>({name:d.name,content:d.content,mode:d.mode,mtime:d.mtime,isDirectory:d.type==="directory",isSymlink:d.type==="symlink",linkTarget:d.linkTarget,uid:d.uid,gid:d.gid})),a=t.directory?e.fs.resolvePath(e.cwd,t.directory):e.cwd,l=[],c=[],f="";for(let d of n){let{entries:p,errors:m}=await K(e,a,d,t.exclude);if(l.push(...p),c.push(...m),t.verbose)for(let x of p)f+=`${x.name}${x.isDirectory?"/":""} `}let u=[...i,...l],y;try{y=await O(u)}catch(d){return{stdout:"",stderr:`tar: error creating archive: ${d instanceof Error?d.message:"unknown error"} `,exitCode:2}}try{await e.fs.writeFile(r,y)}catch(d){let p=d instanceof Error?d.message:"unknown error";return{stdout:"",stderr:`tar: ${t.file}: ${p} `,exitCode:2}}let g=f;return c.length>0&&(g+=`${c.join(` `)} `),{stdout:"",stderr:g,exitCode:c.length>0?2:0}}async function Dt(e,t,n){if(!t.file||t.file==="-")return{stdout:"",stderr:`tar: Cannot update stdin/stdout `,exitCode:2};if(n.length===0)return{stdout:"",stderr:`tar: Cowardly refusing to update with nothing `,exitCode:2};let r=e.fs.resolvePath(e.cwd,t.file),s;try{s=await e.fs.readFileBuffer(r)}catch{return{stdout:"",stderr:`tar: ${t.file}: Cannot open: No such file or directory `,exitCode:2}}let o=await F(s);if(o.error)return{stdout:"",stderr:`tar: ${o.error} `,exitCode:2};let i=new Map;for(let m of o.entries)i.set(m.name,m.mtime);let a=t.directory?e.fs.resolvePath(e.cwd,t.directory):e.cwd,l=[],c=[],f="";for(let m of n){let{entries:x,errors:b}=await K(e,a,m,t.exclude);c.push(...b);for(let E of x){let v=i.get(E.name);(!v||E.mtime&&E.mtime.getTime()>v.getTime())&&(l.push(E),t.verbose&&(f+=`${E.name}${E.isDirectory?"/":""} `))}}if(l.length===0){let m="";return c.length>0&&(m=`${c.join(` `)} `),{stdout:"",stderr:m,exitCode:c.length>0?2:0}}let u=new Set(l.map(m=>m.name)),g=[...o.entries.filter(m=>!u.has(m.name)).map(m=>({name:m.name,content:m.content,mode:m.mode,mtime:m.mtime,isDirectory:m.type==="directory",isSymlink:m.type==="symlink",linkTarget:m.linkTarget,uid:m.uid,gid:m.gid})),...l],d;try{d=await O(g)}catch(m){return{stdout:"",stderr:`tar: error creating archive: ${m instanceof Error?m.message:"unknown error"} `,exitCode:2}}try{await e.fs.writeFile(r,d)}catch(m){let x=m instanceof Error?m.message:"unknown error";return{stdout:"",stderr:`tar: ${t.file}: ${x} `,exitCode:2}}let p=f;return c.length>0&&(p+=`${c.join(` `)} `),{stdout:"",stderr:p,exitCode:c.length>0?2:0}}async function Rt(e,t,n){let r;if(t.file&&t.file!=="-"){let p=e.fs.resolvePath(e.cwd,t.file);try{r=await e.fs.readFileBuffer(p)}catch{return{stdout:"",stderr:`tar: ${t.file}: Cannot open: No such file or directory `,exitCode:2}}}else r=Uint8Array.from(e.stdin,p=>p.charCodeAt(0));let s,o=t.gzip||oe(r),i=t.bzip2||ae(r),a=t.xz||le(r),l=t.zstd||ue(r);if(o?s=await se(r):i?s=await ce(r):a?s=await fe(r):l?s=await de(r):s=await F(r),s.error)return{stdout:"",stderr:`tar: ${s.error} `,exitCode:2};let c=t.directory?e.fs.resolvePath(e.cwd,t.directory):e.cwd,f=t.absoluteNames?n:n.map(p=>p.replace(/^\/+/,"")).filter(p=>p.length>0),u="",y="",g=[];if(t.directory&&!t.toStdout)try{await e.fs.mkdir(c,{recursive:!0})}catch{}for(let p of s.entries){let m=qe(p.name,t.strip);if(!m)continue;let x=Ot(m,t.absoluteNames);if(x.error){g.push(`tar: ${m}: ${x.error}`);continue}let b=x.safePath??"";if(!b)continue;let E=b.endsWith("/")?b.slice(0,-1):b;if(f.length>0){let $;if(t.wildcards?$=f.some(z=>Y(b,z)||Y(E,z)||b.startsWith(`${z}/`)):$=f.some(z=>b===z||b.startsWith(`${z}/`)||E===z),!$)continue}if(me(b,t.exclude))continue;let v=e.fs.resolvePath(c,b);try{if(p.type==="directory"){if(t.toStdout)continue;await e.fs.mkdir(v,{recursive:!0}),t.verbose&&(u+=`${b} `)}else if(p.type==="file"){if(t.toStdout){y+=new TextDecoder().decode(p.content),t.verbose&&(u+=`${b} `);continue}if(t.keepOldFiles)try{await e.fs.stat(v),t.verbose&&(u+=`${b}: not overwritten, file exists `);continue}catch{}let $=v.substring(0,v.lastIndexOf("/"));if($)try{await e.fs.mkdir($,{recursive:!0})}catch{}if(await e.fs.writeFile(v,p.content),t.preserve&&p.mode)try{await e.fs.chmod(v,p.mode)}catch{}t.verbose&&(u+=`${b} `)}else if(p.type==="symlink"&&p.linkTarget){if(t.toStdout)continue;if(!t.absoluteNames&&(p.linkTarget.startsWith("/")||Ye(p.linkTarget))){g.push(`tar: ${b}: unsafe symlink target`);continue}if(t.keepOldFiles)try{await e.fs.stat(v),t.verbose&&(u+=`${b}: not overwritten, file exists `);continue}catch{}let $=v.substring(0,v.lastIndexOf("/"));if($)try{await e.fs.mkdir($,{recursive:!0})}catch{}try{await e.fs.symlink(p.linkTarget,v)}catch{}t.verbose&&(u+=`${b} `)}}catch($){let z=$ instanceof Error?$.message:"unknown error";g.push(`tar: ${b}: ${z}`)}}let d=u;return g.length>0&&(d+=`${g.join(` `)} `),{stdout:y,stderr:d,exitCode:g.length>0?2:0}}async function Mt(e,t,n){let r;if(t.file&&t.file!=="-"){let f=e.fs.resolvePath(e.cwd,t.file);try{r=await e.fs.readFileBuffer(f)}catch{return{stdout:"",stderr:`tar: ${t.file}: Cannot open: No such file or directory `,exitCode:2}}}else r=Uint8Array.from(e.stdin,f=>f.charCodeAt(0));let s,o=t.gzip||oe(r),i=t.bzip2||ae(r),a=t.xz||le(r),l=t.zstd||ue(r);if(o?s=await se(r):i?s=await ce(r):a?s=await fe(r):l?s=await de(r):s=await F(r),s.error)return{stdout:"",stderr:`tar: ${s.error} `,exitCode:2};let c="";for(let f of s.entries){let u=qe(f.name,t.strip);if(!u)continue;let y=u.endsWith("/")?u.slice(0,-1):u;if(n.length>0){let g;if(t.wildcards?g=n.some(d=>Y(u,d)||Y(y,d)||u.startsWith(`${d}/`)):g=n.some(d=>u===d||u.startsWith(`${d}/`)||y===d),!g)continue}if(!me(u,t.exclude))if(t.verbose){let g=f.type==="directory",d=ye(f.mode,g),p=`${f.uid}/${f.gid}`,m=f.size.toString().padStart(8," "),x=Ut(f.mtime),b=`${d} ${p.padEnd(10)} ${m} ${x} ${u}`;f.type==="symlink"&&f.linkTarget&&(b+=` -> ${f.linkTarget}`),c+=`${b} `}else c+=`${u} `}return{stdout:c,stderr:"",exitCode:0}}var sr={name:"tar",async execute(e,t){if(ge(e))return pe(Pt);let n=Ze(e);if(!n.ok)return n.error;let{options:r,files:s}=n,o=[r.create,r.append,r.update,r.extract,r.list].filter(Boolean).length;if(o===0)return{stdout:"",stderr:`tar: You must specify one of -c, -r, -u, -x, or -t `,exitCode:2};if(o>1)return{stdout:"",stderr:`tar: You may not specify more than one of -c, -r, -u, -x, or -t `,exitCode:2};if(r.autoCompress&&r.file&&r.create){let l=r.file.toLowerCase();l.endsWith(".tar.gz")||l.endsWith(".tgz")?r.gzip=!0:l.endsWith(".tar.bz2")||l.endsWith(".tbz2")?r.bzip2=!0:l.endsWith(".tar.xz")||l.endsWith(".txz")?r.xz=!0:(l.endsWith(".tar.zst")||l.endsWith(".tzst"))&&(r.zstd=!0)}let i=[r.gzip,r.bzip2,r.xz,r.zstd].filter(Boolean).length;if(i>1)return{stdout:"",stderr:`tar: You may not specify more than one compression option `,exitCode:2};if((r.append||r.update)&&i>0)return{stdout:"",stderr:`tar: Cannot append/update compressed archives - decompress first `,exitCode:2};let a=s;if(r.filesFrom){let l=t.fs.resolvePath(t.cwd,r.filesFrom);try{let f=(await t.fs.readFile(l)).split(` `).map(u=>u.trim()).filter(u=>u.length>0&&!u.startsWith("#"));a=[...s,...f]}catch{return{stdout:"",stderr:`tar: ${r.filesFrom}: Cannot open: No such file or directory `,exitCode:2}}}if(r.excludeFrom){let l=t.fs.resolvePath(t.cwd,r.excludeFrom);try{let f=(await t.fs.readFile(l)).split(` `).map(u=>u.trim()).filter(u=>u.length>0&&!u.startsWith("#"));r.exclude.push(...f)}catch{return{stdout:"",stderr:`tar: ${r.excludeFrom}: Cannot open: No such file or directory `,exitCode:2}}}return r.create?Nt(t,r,a):r.append?Lt(t,r,a):r.update?Dt(t,r,a):r.extract?Rt(t,r,a):Mt(t,r,a)}},or={name:"tar",flags:[{flag:"-c",type:"boolean"},{flag:"-x",type:"boolean"},{flag:"-t",type:"boolean"},{flag:"-f",type:"value",valueHint:"path"},{flag:"-z",type:"boolean"},{flag:"-j",type:"boolean"},{flag:"-v",type:"boolean"},{flag:"-C",type:"value",valueHint:"path"},{flag:"--strip-components",type:"value",valueHint:"number"},{flag:"--exclude",type:"value",valueHint:"pattern"}],needsArgs:!0};export{sr as a,or as b};