@flexkit/cli 0.0.8 → 0.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/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -174,7 +174,7 @@ ${A.stack??""}`);return}this.output.debug(`Retrying (attempt ${t.toString()}): $
|
|
|
174
174
|
`,loader:"js"})),n.onLoad({filter:/.*/,namespace:"node-builtin"},s=>({contents:`
|
|
175
175
|
export default globalThis.__require('${s.path}');
|
|
176
176
|
export * from '${s.path}';
|
|
177
|
-
`,loader:"js"}));}},{name:"handle-css",setup(n){n.onResolve({filter:/\.css$/},()=>({path:"empty-css",namespace:"css-stub"})),n.onLoad({filter:/.*/,namespace:"css-stub"},()=>({contents:"export default {};",loader:"js"}));}}],external:["/node_modules/*","tty","os","path","fs","util","stream","events","assert","process"],mainFields:["module","main"],logLevel:"warning"});let i=await import(t);RA__default.default.unlinkSync(t);let g=i.default;return A4(g)}catch(i){let g=i instanceof Error?i:new Error(i);return t&&RA__default.default.unlinkSync(t),new eg(g.message,e)}}function A4(e){let A=t=>{if(Array.isArray(t))return t;let{title:i,projectId:g,schema:r,scopes:n,basePath:
|
|
177
|
+
`,loader:"js"}));}},{name:"handle-css",setup(n){n.onResolve({filter:/\.css$/},()=>({path:"empty-css",namespace:"css-stub"})),n.onLoad({filter:/.*/,namespace:"css-stub"},()=>({contents:"export default {};",loader:"js"}));}}],external:["/node_modules/*","tty","os","path","fs","util","stream","events","assert","process"],mainFields:["module","main"],logLevel:"warning"});let i=await import(t);RA__default.default.unlinkSync(t);let g=i.default;return A4(g)}catch(i){let g=i instanceof Error?i:new Error(i);return t&&RA__default.default.unlinkSync(t),new eg(g.message,e)}}function A4(e){let A=t=>{if(Array.isArray(t))return t;let{title:i,projectId:g,schema:r,scopes:n,spaces:s,basePath:o=""}=t;return {title:i,projectId:g,schema:r,scopes:n,spaces:s,basePath:o}};return Array.isArray(e)?e.map(A):A(e)}function e4(e=8){let A="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t="";for(let i=0;i<e;i++)t+=A.charAt(Math.floor(Math.random()*A.length));return t}var WM=QA(kk());var pg=QA(bt()),rQ=QA(Sl());var dM=QA(Sl()),fM={"padding-left":0,"padding-right":2},Rl={top:"","top-mid":"","top-left":"","top-right":"",bottom:"","bottom-mid":"","bottom-left":"","bottom-right":"",left:"","left-mid":"",mid:"","mid-mid":"",right:"","right-mid":"",middle:""},x4={l:"left",c:"center",r:"right"};function ur(e,A){let t=new dM.default({style:{...fM,"padding-right":fM["padding-right"]},chars:Rl});return t.push(...e.map(i=>i.map((g,r)=>({content:g,hAlign:x4["l"]})))),t.toString()}var Xe=" ".repeat(2),zt=`
|
|
178
178
|
`,v4="\u{1D5EB}",Ml={chars:Rl,style:{"padding-left":0,"padding-right":0}},J4=[{name:"help",shorthand:"h",type:String,description:"Output usage information",deprecated:false},{name:"version",shorthand:"v",type:String,description:"Output the version number",deprecated:false},{name:"cwd",shorthand:null,type:String,argument:"DIR",description:"Sets the current working directory for a single run of a command",deprecated:false},{name:"local-config",shorthand:"A",type:String,argument:"FILE",description:"Path to the local `flexkit.config.ts` file of your project",deprecated:false},{name:"global-config",shorthand:"Q",type:String,argument:"DIR",description:"Path to the global configuration directory",deprecated:false},{name:"debug",shorthand:"d",type:String,description:"Debug mode (default off)",deprecated:false},{name:"no-color",shorthand:null,type:String,description:"No color mode (default off)",deprecated:false},{name:"scope",shorthand:"S",type:String,description:"Set a custom scope",deprecated:false},{name:"token",shorthand:"t",type:String,argument:"TOKEN",description:"Login token",deprecated:false}];function K4(e,A){let t={...Ml,colWidths:[A],style:{"padding-left":Xe.length}},i=new rQ.default(t);return i.push([{content:e,wordWrap:true}]),i.toString()}function kl(e){let A="";for(let t=0;t<e.length;t++)if(t===e.length-1)A+=e[t];else {let i=e[t],g=e[t+1];A+=i,i.trim()!==""&&g.trim()!==""&&(A+=" ");}return A}function wM(e){return e.filter(A=>A!==null).join(zt)}function H4(e){let A=[Xe,v4,pg.default.bold("flexkit"),pg.default.bold(e.name)];if(e.arguments.length>0)for(let t of e.arguments)A.push(t.required?t.name:`[${t.name}]`);return e.options.length>0&&A.push("[options]"),A.push(zt),kl(A)}function pM(e,A,t){if(e.length===0)return null;let i=e.filter(o=>!o.deprecated&&o.description!==void 0);i.sort((o,a)=>o.name<a.name?-1:o.name>a.name?1:0);let g=0,r=[];for(let o of i){let a=o.shorthand?`${Xe}-${o.shorthand},`:"",B=`${Xe}--${o.name}`;o.argument&&(B+=` <${o.argument}>`),B+=Xe;let u=a.length+B.length;g=Math.max(u,g),r.push([a,B,{content:o.description,wordWrap:true}]);}let n=A.columns-g,s=new rQ.default({...Ml,colWidths:[null,null,n]});return s.push(...r),[`${Xe}${pg.default.dim(t)}:`,zt,zt,s.toString(),zt,zt].join("")}function Y4(e,A){if(!e)return null;let t=0,i=[];for(let s of e){let o=`${Xe}${s.name}`,a=Xe;a+=s.arguments.map(u=>u.required?u.name:`[${u.name}]`).join(" "),a+=Xe;let B=o.length+a.length;t=Math.max(B,t),i.push([o,a,{content:s.description,wordWrap:true}]);}let g=Xe.repeat(4).length,r=A.columns-t-g,n=new rQ.default({...Ml,colWidths:[null,null,r]});return n.push(...i),[`${Xe}${pg.default.dim("Commands")}:`,zt,zt,n.toString(),zt,zt].join("")}function T4(e){let A=[`${Xe}${pg.default.dim("Examples:")}`,""];for(let t of e.examples){let i=[Xe];i.push(pg.default.gray("-")),i.push(t.name),A.push(kl(i)),A.push("");let g=r=>kl([Xe,Xe,pg.default.cyan(`$ ${r}`)]);if(Array.isArray(t.value))for(let r of t.value)A.push(g(r));else A.push(g(t.value));A.push("");}return wM(A)}function P4(e,A){return `${K4(e.description,A.columns)}${zt}`}function O4(e,A){let t=["",H4(e),P4(e,A),Y4(e.subcommands,A),pM(e.options,A,"Options"),pM(J4,A,"Global Options"),T4(e),""];return wM(t)}function ie(e,A){return O4(e,{columns:A.columns??80})}var FM=QA(Ds());function yM(e){let A=0;for(let t of e.split(`
|
|
179
179
|
`)){let i=(0, FM.default)(t);i.length>A&&(A=i.length);}return A}async function Nl(e,{message:A="the question",choices:t=[{name:`something
|
|
180
180
|
description
|
|
@@ -183,10 +183,10 @@ etc`,value:"something unique",short:"generally the first line of `name`"}],pageS
|
|
|
183
183
|
`),i.spinner("Waiting for your confirmation");let g;for(;!g;)try{await Jt(2e3),g=await q4(e,A,t);}catch(r){if(!$e(r)||r.serverMessage!=="Confirmation incomplete")return i.error(Ie(r)),1}return "error"in g?(i.error(g.error.message),1):(i.success(`Email authentication complete for ${A}`),{sid:g.sid,email:A})}async function _4(e,A){try{let t=new URL("/auth/login/otp",e.authUrl);return await e.fetch(t.href,{method:"POST",body:{email:A}})}catch(t){if($e(t)){if(t.code==="not_exists")throw new QC(A,"Please sign up: https://flexkit.io/signup");if(t.code==="invalid_email")throw new EC(A,t.message)}throw new Error(`Unexpected error: ${Ie(t)}`)}}async function q4(e,A,t){let i=new URL("/auth/confirm-otp-login",e.authUrl);return i.searchParams.set("email",A),i.searchParams.set("token",t),await e.fetch(i.href)}var PM=QA(KM()),OM=QA(YM()),_M=QA(nQ());function Kl(e,A,t){let i=new url.URL("/api/auth/login/session",e.authUrl);i.searchParams.set("code",A);let g=/-/g,r=wk.hostname().replace(g," ").replace(".local",""),n=`${RS()} on ${r} via ${t}`;return i.searchParams.set("tokenName",n),e.fetch(i.href)}async function oQ(e,A){let t;for(;!t;)try{t=await e.input.text({message:A});}catch(i){if(e.output.print(`
|
|
184
184
|
`),i.isTtyError)throw new Error(ae(`Interactive mode not supported \u2013 please run ${bA("login you@domain.com")}`))}return t}async function cr(e,A,t,i=QP()){let r=await(i?BP:oP)(e,A,t);if(typeof r=="number")return r;if(!("verificationToken"in r))return 1;let{output:n}=e;n.spinner("Verifying authentication token");let s=await Kl(e,r.verificationToken,t);return n.success(`${t} authentication complete for ${Lt(s.email)}`),s}async function oP(e,A,t){let{output:i}=e,g=CP__default.default.createServer(),{port:r}=await(0, OM.listen)(g,0,"127.0.0.1");A.searchParams.set("origin",`http://localhost:${r}`),i.log("Please visit the following URL in your web browser:"),i.log(Hn(A.href)),i.spinner(`Waiting for ${t} authentication to be completed`);try{let[n]=await Promise.all([new Promise((a,B)=>{g.once("request",(u,Q)=>{Q.setHeader("connection","close");let I=new url.URL(u.url??"/","http://localhost").searchParams;a(I);let C=new url.URL("https://flexkit.io/notifications/cli-login-"),E=I.get("loginError");if(E)C.pathname+="failed",C.searchParams.set("loginError",E);else {C.pathname+="success";let c=I.get("email");c&&C.searchParams.set("email",c);}Q.statusCode=302,Q.setHeader("location",C.href),Q.end();}),g.once("error",B);}),(0,PM.default)(A.href)]);i.stopSpinner(),i.print(li(3));let s=n.get("loginError");if(s){let a=JSON.parse(s);return i.prettyError(a),1}let o=n.get("code");return o?{verificationToken:o}:(i.error("Verification token was not provided. Please contact support."),1)}finally{g.close();}}async function BP(e,A){let{output:t}=e;A.searchParams.set("mode","oob"),t.log("Please visit the following URL in your web browser:"),t.log(Hn(A.href)),t.print(`
|
|
185
185
|
`),t.log("After login is complete, enter the verification code printed in your browser.");let i=await oQ(e,"Verification code:");return t.print(li(6)),{verificationToken:i}}function QP(){return (0, _M.default)()||EP()}function EP(){return !!(process.env.SSH_CLIENT??process.env.SSH_TTY)}function Ms(e,A){let t=new url.URL("/auth/login/github",e.authUrl);return cr(e,t,"GitHub",A)}function Ns(e,A){let t=new url.URL("/auth/login/google",e.authUrl);return cr(e,t,"Google",A)}function Gs(e,A){let t=new url.URL("/auth/login/bitbucket",e.authUrl);return cr(e,t,"Bitbucket",A)}async function Us(e,A){let t=1,g=await Nl(e,{message:"Log in to Flexkit",choices:[{name:"Continue with GitHub",value:"github",short:"github"},{name:"Continue with Google",value:"google",short:"google"},{name:"Continue with Bitbucket",value:"bitbucket",short:"bitbucket"},{name:"Continue with Email",value:"email",short:"email"}]});if(g==="github")t=await Ms(e,A);else if(g==="google")t=await Ns(e,A);else if(g==="bitbucket")t=await Gs(e,A);else if(g==="email"){let r=await oQ(e,"Enter your email address:");t=await Gl(e,r);}return t}var qM={name:"login",description:"Authenticate using your email or team id.",arguments:[{name:"email or project id",required:false}],options:[{name:"github",description:"Log in with GitHub",shorthand:null,type:String,deprecated:false},{name:"google",description:"Log in with Google",shorthand:null,type:String,deprecated:false},{name:"bitbucket",description:"Log in with Bitbucket",shorthand:null,type:String,deprecated:false},{name:"oob",description:'Log in with "out of band" authentication',shorthand:null,type:String,deprecated:false}],examples:[{name:"Log into the Flexkit platform",value:"flexkit login"},{name:"Log in using a specific email address",value:"flexkit login username@example.com"},{name:'Log in using a specific team "slug" for SAML Single Sign-On',value:"flexkit login acme"},{name:'Log in using GitHub in "out-of-band" mode',value:"flexkit login --github --oob"}]};async function Hl(e){let{output:A}=e,t=te(e.argv.slice(2),{"--oob":Boolean,"--github":Boolean,"--google":Boolean,"--bitbucket":Boolean,"--help":Boolean,"-h":"--help"});if(t.flags["--help"])return A.print(ie(qM,{columns:e.stderr.columns})),2;let[,i]=t.args,g=1;return i?WM.validate(i):t.flags["--github"]?g=await Ms(e,t.flags["--oob"]):t.flags["--google"]?g=await Ns(e,t.flags["--oob"]):t.flags["--bitbucket"]?g=await Gs(e,t.flags["--oob"]):g=await Us(e,t.flags["--oob"]),typeof g=="number"?g:(e.authConfig.token=g.sid,sr(e.authConfig),A.debug(`Saved credentials in "${ot(ir())}"`),A.congratulations("You are now logged in."),A.print(`${Im(`Check out the CLI docs at https://flexkit.io/docs/cli or run ${bA("--help")} for a list of available commands.`,nm("tip"))}
|
|
186
|
-
`),0)}var ZM=QA(Yl());function gt(e,{debug:A=false}={}){let t=e;typeof t=="string"&&(t=new Error(t));let i=t,{message:g,stack:r,status:n,code:s,sizeLimit:o}=i;A&&console.error(`> [debug] handling error: ${r??""}`),g!=="User force closed the prompt with 0 null"&&(n===403?console.error(ae(g||`Authentication error. Run ${bA("login")} to log-in again.`)):n===429?console.error(ae(g)):s==="size_limit_exceeded"?console.error(ae(`File size limit exceeded (${(0, ZM.default)(o)}).`)):g?console.error(ae(g)):n===500?console.error(ae("Unexpected server error. Please retry.")):s==="USER_ABORT"?yS("Canceled"):console.error(ae(`Unexpected error. Please try again later. (${g})`)));}var XM={name:"logout",description:"Logout the current authenticated user.",arguments:[],options:[],examples:[{name:"Logout from the CLI",value:"flexkit logout"}]};async function Tl(e){let A,{authConfig:t,output:i}=e,g=new URL("/api/auth/logout",e.authUrl);try{A=te(e.argv.slice(2),{"--help":Boolean,"-h":"--help"});}catch(n){return gt(n),1}if(A.flags["--help"])return i.print(ie(XM,{columns:e.stderr.columns})),2;if(!t.token)return i.note(`Not currently logged in, so ${bA("logout")} did nothing`),0;i.spinner("Logging out\u2026",200);let r=0;try{await e.fetch(g.href,{method:"POST"});}catch(n){$e(n)&&(n.status===403?i.debug("Token is invalid so it cannot be revoked"):n.status!==200&&(i.debug(n.message),r=1));}delete t.token;try{sr(t),i.debug("Configuration has been deleted");}catch(n){i.debug(Ie(n)),r=1;}return r===0?i.log("Logged out!"):i.error("Failed during logout"),r}var zM={name:"deploy",description:"Deploy the current schema and observe job progress in real time.",arguments:[],options:[{name:"allow-breaking-changes",shorthand:null,type:Boolean,description:"Allow intentional entity and attribute removals",deprecated:false},{name:"force",shorthand:null,type:String,description:"Force deployment when the schema has not changed",deprecated:false}],examples:[{name:"Deploy the current project schema",value:"flexkit deploy"},{name:"Force deployment when the schema has not changed",value:"flexkit deploy --force"},{name:"Deploy intentional entity or attribute removals",value:"flexkit deploy --allow-breaking-changes"}]};var dP=["queued","validating","building","uploading","activating","completed","failed"],pP=["completed","failed"],$M=1500,wP=8e3,yP=5;function eN(e){return typeof e=="string"&&dP.includes(e)}function FP(e){return Dt(e)&&e.hasChanges===false&&typeof e.message=="string"&&typeof e.schemaHash=="string"}function Ol(e){return pP.includes(e)}function AN(e){let A=encodeURIComponent(e);return {poll:`/deploy/jobs/${A}`,sse:`/deploy/jobs/${A}/events`}}function mP(e,A,t,i){i.has(t)||(i.add(t),e.log(`[${A}] ${t}`));}function SP(e){if(typeof e=="string"&&e.trim().length>0)return e.trim();if(typeof e=="number")return `${e.toString()}%`;if(Dt(e)){if(typeof e.message=="string"&&e.message.trim().length>0)return e.message.trim();if(typeof e.percent=="number")return `${e.percent.toString()}%`}}function QQ(e){if(Array.isArray(e))return e.flatMap(r=>QQ(r));if(typeof e=="string")return [{message:e}];if(!Dt(e))return [{message:"Deploy failed with an unknown error."}];let A=Array.isArray(e.errors)?e.errors:void 0;if(!A&&Array.isArray(e.details)&&(A=e.details),A&&A.length>0){let r=A.flatMap(n=>QQ(n));if(r.length>0)return r}let i={message:typeof e.message=="string"&&e.message.trim().length>0?e.message:"Deploy failed."};typeof e.code=="string"&&e.code.length>0&&(i.code=e.code);let g=RP(e.path);return g&&(i.path=g),typeof e.hint=="string"&&e.hint.length>0&&(i.hint=e.hint),typeof e.helpUrl=="string"&&e.helpUrl.length>0&&(i.helpUrl=e.helpUrl),[i]}function RP(e){if(typeof e=="string"&&e.length>0)return e;if(!Array.isArray(e)||e.length===0)return;let A="";for(let t of e){if(typeof t=="number"){A+=`[${t.toString()}]`;continue}if(typeof t!="string")return;A+=A.length>0?`.${t}`:t;}return A}function tN(e,A,t){for(let i of t){let g=i.code??"unknown",r=i.path??"-",n=i.hint?` hint=${i.hint}`:"";e.error(`[${A}] code=${g} path=${r} message=${i.message}${n}`),i.helpUrl&&e.log(`[${A}] Learn more: ${i.helpUrl}`);}}function _l(e,A,t,i,g){mP(e,A,t.state,i);let r=SP(t.progress);!r||g.lastProgress===r||(g.lastProgress=r,e.dim(`[${A}] ${r}`));}function Pl(e){let A=e.length===1?e[0]:e.join(", "),t=e.length===1?"project":"projects";return {projectsLabel:A,projectWord:t}}async function kP(e,A,t,i,g,r){try{let
|
|
186
|
+
`),0)}var ZM=QA(Yl());function gt(e,{debug:A=false}={}){let t=e;typeof t=="string"&&(t=new Error(t));let i=t,{message:g,stack:r,status:n,code:s,sizeLimit:o}=i;A&&console.error(`> [debug] handling error: ${r??""}`),g!=="User force closed the prompt with 0 null"&&(n===403?console.error(ae(g||`Authentication error. Run ${bA("login")} to log-in again.`)):n===429?console.error(ae(g)):s==="size_limit_exceeded"?console.error(ae(`File size limit exceeded (${(0, ZM.default)(o)}).`)):g?console.error(ae(g)):n===500?console.error(ae("Unexpected server error. Please retry.")):s==="USER_ABORT"?yS("Canceled"):console.error(ae(`Unexpected error. Please try again later. (${g})`)));}var XM={name:"logout",description:"Logout the current authenticated user.",arguments:[],options:[],examples:[{name:"Logout from the CLI",value:"flexkit logout"}]};async function Tl(e){let A,{authConfig:t,output:i}=e,g=new URL("/api/auth/logout",e.authUrl);try{A=te(e.argv.slice(2),{"--help":Boolean,"-h":"--help"});}catch(n){return gt(n),1}if(A.flags["--help"])return i.print(ie(XM,{columns:e.stderr.columns})),2;if(!t.token)return i.note(`Not currently logged in, so ${bA("logout")} did nothing`),0;i.spinner("Logging out\u2026",200);let r=0;try{await e.fetch(g.href,{method:"POST"});}catch(n){$e(n)&&(n.status===403?i.debug("Token is invalid so it cannot be revoked"):n.status!==200&&(i.debug(n.message),r=1));}delete t.token;try{sr(t),i.debug("Configuration has been deleted");}catch(n){i.debug(Ie(n)),r=1;}return r===0?i.log("Logged out!"):i.error("Failed during logout"),r}var zM={name:"deploy",description:"Deploy the current schema and observe job progress in real time.",arguments:[],options:[{name:"allow-breaking-changes",shorthand:null,type:Boolean,description:"Allow intentional entity and attribute removals",deprecated:false},{name:"force",shorthand:null,type:String,description:"Force deployment when the schema has not changed",deprecated:false}],examples:[{name:"Deploy the current project schema",value:"flexkit deploy"},{name:"Force deployment when the schema has not changed",value:"flexkit deploy --force"},{name:"Deploy intentional entity or attribute removals",value:"flexkit deploy --allow-breaking-changes"}]};var dP=["queued","validating","building","uploading","activating","completed","failed"],pP=["completed","failed"],$M=1500,wP=8e3,yP=5;function eN(e){return typeof e=="string"&&dP.includes(e)}function FP(e){return Dt(e)&&e.hasChanges===false&&typeof e.message=="string"&&typeof e.schemaHash=="string"}function Ol(e){return pP.includes(e)}function AN(e){let A=encodeURIComponent(e);return {poll:`/deploy/jobs/${A}`,sse:`/deploy/jobs/${A}/events`}}function mP(e,A,t,i){i.has(t)||(i.add(t),e.log(`[${A}] ${t}`));}function SP(e){if(typeof e=="string"&&e.trim().length>0)return e.trim();if(typeof e=="number")return `${e.toString()}%`;if(Dt(e)){if(typeof e.message=="string"&&e.message.trim().length>0)return e.message.trim();if(typeof e.percent=="number")return `${e.percent.toString()}%`}}function QQ(e){if(Array.isArray(e))return e.flatMap(r=>QQ(r));if(typeof e=="string")return [{message:e}];if(!Dt(e))return [{message:"Deploy failed with an unknown error."}];let A=Array.isArray(e.errors)?e.errors:void 0;if(!A&&Array.isArray(e.details)&&(A=e.details),A&&A.length>0){let r=A.flatMap(n=>QQ(n));if(r.length>0)return r}let i={message:typeof e.message=="string"&&e.message.trim().length>0?e.message:"Deploy failed."};typeof e.code=="string"&&e.code.length>0&&(i.code=e.code);let g=RP(e.path);return g&&(i.path=g),typeof e.hint=="string"&&e.hint.length>0&&(i.hint=e.hint),typeof e.helpUrl=="string"&&e.helpUrl.length>0&&(i.helpUrl=e.helpUrl),[i]}function RP(e){if(typeof e=="string"&&e.length>0)return e;if(!Array.isArray(e)||e.length===0)return;let A="";for(let t of e){if(typeof t=="number"){A+=`[${t.toString()}]`;continue}if(typeof t!="string")return;A+=A.length>0?`.${t}`:t;}return A}function tN(e,A,t){for(let i of t){let g=i.code??"unknown",r=i.path??"-",n=i.hint?` hint=${i.hint}`:"";e.error(`[${A}] code=${g} path=${r} message=${i.message}${n}`),i.helpUrl&&e.log(`[${A}] Learn more: ${i.helpUrl}`);}}function _l(e,A,t,i,g){mP(e,A,t.state,i);let r=SP(t.progress);!r||g.lastProgress===r||(g.lastProgress=r,e.dim(`[${A}] ${r}`));}function Pl(e){let A=e.length===1?e[0]:e.join(", "),t=e.length===1?"project":"projects";return {projectsLabel:A,projectWord:t}}async function kP(e,A,t,i,g,r,n){try{let s=await e.fetch("/deploy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schema:t,scopes:i,spaces:g,...n?{allowBreakingChanges:!0}:{},...r?{forceDeploy:!0}:{}}),projectId:A,retry:{retries:3}});if(FP(s))return {hasChanges:!1,message:s.message,schemaHash:s.schemaHash};let o=s;return {hasChanges:!0,jobId:o.jobId,state:o.state,observe:AN(o.jobId)}}catch(s){if($e(s)&&s.status===409&&typeof s.jobId=="string"){let o=eN(s.state)?s.state:"queued",a=AN(s.jobId);return e.output.warn(`[${A}] Another deploy is already running. Attaching to job ${s.jobId}.`),{hasChanges:true,jobId:s.jobId,state:o,observe:a}}throw s}}function MP(e){let A=e.split(/\r?\n/),t=[];for(let g of A)g.startsWith("data:")&&t.push(g.slice(5).trim());if(t.length===0)return null;let i=t.join(`
|
|
187
187
|
`);if(i.length===0)return null;try{let g=JSON.parse(i);if(!Dt(g)||!eN(g.state))return null;let r={state:g.state,progress:g.progress,error:g.error};return typeof g.jobId=="string"&&(r.jobId=g.jobId),r}catch{return null}}async function NP(e,A,t,i,g,r){let n=new AbortController,s=setTimeout(()=>{n.abort();},wP),o;try{o=await e.fetch(t.sse,{json:!1,projectId:A,signal:n.signal,retry:{retries:2}});}finally{clearTimeout(s);}if(!o.body)throw new Error("SSE stream is unavailable.");let a=o.body.getReader(),B=new TextDecoder,u="";for(;;){if(r())throw new Error("Deploy observation was canceled.");let Q=await a.read();if(Q.done)throw new Error("SSE stream ended before deploy completed.");u+=B.decode(Q.value,{stream:true});let I=u.split(`
|
|
188
188
|
|
|
189
|
-
`);u=I.pop()??"";for(let C of I){let E=MP(C);if(E&&(_l(e.output,A,E,i,g),!!Ol(E.state)))return E}}}async function GP(e,A,t,i,g,r){let n=0;for(;;){if(r())throw new Error("Deploy observation was canceled.");try{let s=await e.fetch(t.poll,{projectId:A,retry:{retries:3}});if(_l(e.output,A,s,i,g),Ol(s.state))return s;n=0,await Jt($M);continue}catch(s){if(n+=1,n>yP)throw s;let o=Math.min($M*n,5e3);e.output.debug(`[${A}] polling retry in ${o.toString()}ms: ${Ie(s)}`),await Jt(o);}}}async function UP(e,A,t,i,g){let r=new Set,n={};if(_l(e.output,A,{state:i},r,n),Ol(i))return {state:i};try{return await NP(e,A,t,r,n,g)}catch(s){return e.output.debug(`[${A}] SSE observation unavailable, falling back to polling: ${Ie(s)}`),GP(e,A,t,r,n,g)}}function bP(e,A,t){let i=QQ(t.error);tN(e,A,i);}function LP(e){return Array.isArray(e.errors)&&e.errors.length>0}function xP(e,A,t){if(!$e(t)){e.output.error(`[${A}] ${Ie(t)}`);return}if(t.status===401){e.output.log(`[${A}] You are not logged in. Please log in first by running ${bA("login")}`);return}if(t.status===409&&typeof t.jobId=="string"){e.output.warn(`[${A}] Deploy lock is active for job ${t.jobId}.`);return}if(t.status===400||LP(t)){tN(e.output,A,QQ(t));return}e.output.error(`[${A}] ${t.serverMessage}`);}async function ql(e){let A,{output:t}=e;try{A=te(e.argv.slice(2),{"--allow-breaking-changes":Boolean,"--help":Boolean,"-h":"--help","--force":Boolean});}catch(a){return gt(a),1}if(A.flags["--help"])return t.print(ie(zM,{columns:e.stderr.columns})),2;if(e.flexkitConfig===void 0)return t.error(`No Flexkit configuration file found in the current directory. Please ensure you are executing the command from the correct folder, or run ${bA("init")} to create a new Flexkit project in this directory.`),1;let i=[],g=[],r=[],{projects:n}=e.flexkitConfig,s=false,o=()=>{s=true,t.warn("Received Ctrl+C. Stopping deploy command.");};process.once("SIGINT",o);try{t.spinner("Deploying schema",200);for(let a of n){if(s)break;let B=a.schema??[],u=a.scopes??[];try{let Q=await kP(e,a.projectId,B,u,A.flags["--force"]??!1,A.flags["--allow-breaking-changes"]??!1);if(!Q.hasChanges){g.push(a.projectId),t.log(`[${a.projectId}] ${Q.message}`),t.dim(`[${a.projectId}] schemaHash=${Q.schemaHash}`);continue}let I=await UP(e,a.projectId,Q.observe,Q.state,()=>s);if(I.state==="completed"){i.push(a.projectId);continue}r.push(a.projectId),bP(t,a.projectId,I);}catch(Q){r.push(a.projectId),xP(e,a.projectId,Q);}}}finally{process.off("SIGINT",o),t.stopSpinner();}if(s)return 1;if(i.length>0){let{projectsLabel:a,projectWord:B}=Pl(i);t.success(`Deploy completed for ${B} ${a}.`);}if(g.length>0){let{projectsLabel:a,projectWord:B}=Pl(g);t.log(`No changes to deploy for ${B} ${a}.`);}if(r.length>0){let{projectsLabel:a,projectWord:B}=Pl(r);return t.error(`Deploy failed for ${B} ${a}.`),1}return 0}var Wl={name:"ls",description:"List projects, or get a single project by name or id.",arguments:[{name:"nameOrId",required:false}],options:[{name:"json",shorthand:null,type:String,description:"Output response as JSON",deprecated:false}],examples:[{name:"List projects",value:"flexkit project ls"},{name:"List projects in a specific team scope",value:"flexkit project ls --scope my-team"},{name:"Get a single project by id or name",value:"flexkit project ls my-project"}]},jl={name:"add",description:"Create a project.",arguments:[{name:"name",required:true}],options:[{name:"json",shorthand:null,type:String,description:"Output response as JSON",deprecated:false}],examples:[{name:"Create a project",value:"flexkit project add my-project"},{name:"Create a project in a specific team scope",value:"flexkit project add my-project --scope team-id-or-name"}]},Vl={name:"rm",description:"Remove a project by id or name.",arguments:[{name:"nameOrId",required:true}],options:[{name:"json",shorthand:null,type:String,description:"Output response as JSON",deprecated:false}],examples:[{name:"Remove a project",value:"flexkit project rm my-project"},{name:"Remove a project from a specific team scope",value:"flexkit project rm my-project --scope team-id-or-name"}]},iN={name:"project",description:"Manage projects.",arguments:[],subcommands:[Wl,jl,Vl],options:[{name:"json",shorthand:null,type:String,description:"Output response as JSON",deprecated:false}],examples:[{name:"List projects",value:"flexkit project ls"},{name:"Create a new project",value:"flexkit project add my-project"},{name:"Remove a project",value:"flexkit project rm my-project-id"}]};function gN(e,A){let t="/api/projects";if(e&&(t+=`/${encodeURIComponent(e)}`),A){let i=new URLSearchParams({scope:A});t+=`?${i.toString()}`;}return t}function vP(e){return "project"in e}function JP(e,A){if(e.log(`Team: ${A.team.name} (${A.team.id})`),A.projects.length===0){e.log("No projects found.");return}let t=[["ID","Name","Created At"],...A.projects.map(i=>[i.id,i.name,i.createdAt??""])];e.print(ur(t));}function KP(e,A){e.log(`Team: ${A.team.name} (${A.team.id})`),e.print(ur([["ID",A.project.id],["Name",A.project.name],["Created At",A.project.createdAt??""]]));}function Zl(e,A){e.print(JSON.stringify(A,null,2));}function HP(e){return $e(e)?Dt(e)&&typeof e.error=="string"?e.error:typeof e.serverMessage=="string"&&e.serverMessage!=="Response Error"?e.serverMessage:e.message:e.message}function YP(e){if(!$e(e))return [];if(!Dt(e)||!Array.isArray(e.matches))return [];let A=[];for(let t of e.matches){if(!Dt(t)||typeof t.id!="string"||typeof t.name!="string")continue;let i={id:t.id,name:t.name};typeof t.createdAt=="string"&&(i.createdAt=t.createdAt),A.push(i);}return A}function TP(e,A){if(A.length===0){e.error("Project name is ambiguous. Retry with the project id.");return}e.error("Project name is ambiguous. Use one of the following project ids:");let t=[["ID","Name","Created At"],...A.map(i=>[i.id,i.name,i.createdAt??""])];e.print(ur(t));}function PP(e,A,t){let{output:i}=e;return $e(A)?A.status===401?(i.log(`You are not logged in. Please log in first by running ${bA("login")}`),1):A.status===409&&(t==="ls"||t==="rm")?(TP(i,YP(A)),1):(i.error(HP(A)),1):(i.debug(String(A)),1)}async function OP(e,A,t,i){let g=await e.fetch(gN(A,t));return i?(Zl(e.output,g),0):vP(g)?(KP(e.output,g),0):(JP(e.output,g),0)}async function _P(e,A,t,i){let g={name:A};t&&(g.scope=t);let r=await e.fetch("/api/projects",{method:"POST",body:g});return i?(Zl(e.output,r),0):(e.output.log(`Created project "${r.project.name}" (${r.project.id}) in team "${r.team.name}" (${r.team.id}).`),0)}async function qP(e,A,t,i){let g=gN(A,t),r=await e.fetch(g);if(!await e.input.confirm({message:`Delete project "${r.project.name}" (${r.project.id}) from team "${r.team.name}"?`,default:false}))return e.output.log("Canceled."),0;let s=await e.fetch(g,{method:"DELETE"});return i?(Zl(e.output,s),0):(e.output.log(`Deleted project "${s.project.name}" (${s.project.id}).`),0)}function WP(e,A){let{columns:t}=e.stderr;return A?A==="ls"?(e.output.print(ie(Wl,{columns:t})),2):A==="add"?(e.output.print(ie(jl,{columns:t})),2):A==="rm"?(e.output.print(ie(Vl,{columns:t})),2):(e.output.error(`The ${A} subcommand does not exist`),1):(e.output.print(ie(iN,{columns:t})),2)}async function Xl(e){let A;try{A=te(e.argv.slice(2),{"--help":Boolean,"-h":"--help","--json":Boolean});}catch(n){return gt(n),1}let[,t,i]=A.args,g=A.flags["--scope"],r=A.flags["--json"]??false;if(A.flags["--help"])return WP(e,t);if(!t)return e.output.error(`No subcommand provided. Use ${bA("project --help")} to see available project subcommands.`),1;try{return t==="ls"?await OP(e,i,g,r):t==="add"?i?await _P(e,i,g,r):(e.output.error(`Missing required project name. Usage: ${bA("project add <name>")}`),1):t==="rm"?i?await qP(e,i,g,r):(e.output.error(`Missing required project id or name. Usage: ${bA("project rm <nameOrId>")}`),1):(e.output.error(`The ${t} subcommand does not exist`),1)}catch(n){return t==="ls"||t==="add"||t==="rm"?PP(e,n,t):(e.output.debug(String(n)),1)}}var rN={name:"whoami",description:"Shows the username or email of the currently logged-in user.",arguments:[],options:[],examples:[{name:"Print current user name or email",value:"flexkit whoami"}]};async function zl(e){let A,{output:t}=e;try{A=te(e.argv.slice(2),{"--help":Boolean,"-h":"--help"});}catch(g){return gt(g),1}if(A.flags["--help"])return t.print(ie(rN,{columns:e.stderr.columns})),2;let i=new URL("/api/auth/user",e.authUrl);try{t.spinner("");let g=await e.fetch(i.href);t.stopSpinner();let r=g.display_name?.trim()??g.email?.trim()??"";return r?(t.log(r),0):(t.error("No user information available."),1)}catch(g){return t.stopSpinner(),$e(g)?g.status===401?(t.log(`You are not logged in. Please log in first by running ${bA("login")}`),1):(t.debug(g.message),1):(t.debug(Ie(g)),1)}}function nI(e,A){let{output:t}=e,i=e.flexkitConfig?.projects??[];if(i.length===0)return t.error(`No project configuration found. Run this command from a directory with a flexkit.config file or pass --local-config. See ${bA("--help")}.`),null;if(A){let g=i.find(r=>r.projectId===A);return g||(t.error(`Project "${A}" is not defined in the local config. Available projects: ${i.map(r=>r.projectId).join(", ")}`),null)}return i.length>1?(t.error(`Multiple projects found in the local config. Pass --project <projectId> to select one of: ${i.map(g=>g.projectId).join(", ")}`),null):i[0]}var $l={name:"upload",description:"Upload files or URLs as project assets. Identical files are deduplicated by content hash.",arguments:[{name:"path|url",required:true}],options:[{name:"project",shorthand:null,type:String,argument:"ID",description:"Project id (required when the local config defines several projects)",deprecated:false},{name:"concurrency",shorthand:null,type:Number,argument:"N",description:"Number of parallel uploads (default 5)",deprecated:false},{name:"id-from",shorthand:null,type:String,argument:"STRATEGY",description:'Derive deterministic asset _ids: "filename" or "hash"',deprecated:false},{name:"tag",shorthand:null,type:String,argument:"NAME",description:"Tag every uploaded asset with the given tag (created if missing)",deprecated:false},{name:"json",shorthand:null,type:String,description:"Output created assets as NDJSON on stdout",deprecated:false}],examples:[{name:"Upload a folder of images",value:"flexkit assets upload ./images"},{name:"Upload files and a remote URL with a tag",value:"flexkit assets upload hero.png https://example.com/logo.svg --tag branding"},{name:"Upload with deterministic ids derived from filenames",value:"flexkit assets upload ./icons --id-from filename"}]},Ah={name:"export",description:"Export all project assets (files + metadata) into a tarball that can be re-imported.",arguments:[{name:"dest.tar.gz",required:false}],options:[{name:"project",shorthand:null,type:String,argument:"ID",description:"Project id (required when the local config defines several projects)",deprecated:false},{name:"tag",shorthand:null,type:String,argument:"NAME",description:"Only export assets with the given tag",deprecated:false},{name:"concurrency",shorthand:null,type:Number,argument:"N",description:"Number of parallel downloads (default 5)",deprecated:false},{name:"overwrite",shorthand:null,type:String,description:"Overwrite the destination file if it exists",deprecated:false}],examples:[{name:"Export all assets",value:"flexkit assets export"},{name:"Export assets with a tag to a specific file",value:"flexkit assets export branding.tar.gz --tag branding"}]},nN={name:"assets",description:"Manage project assets.",arguments:[],subcommands:[$l,Ah],options:[],examples:[{name:"Upload a folder of images",value:"flexkit assets upload ./images"},{name:"Export all assets to a tarball",value:"flexkit assets export"}]};var EN=QA(Yl());async function yg(e,A,t){let i=new Array(e.length),g=0;async function r(){for(;g<e.length;){let s=g;g+=1;let o=e[s];try{i[s]={item:o,result:await t(o,s)};}catch(a){i[s]={item:o,error:a instanceof Error?a:new Error(String(a))};}}}let n=Math.max(1,Math.min(A,e.length));return await Promise.all(Array.from({length:n},()=>r())),i}var eh=3,jP=1e3;function VP(e){if(!(e instanceof Error))return false;let A=e.message.toLowerCase();return A.includes("fetch failed")||A.includes("network")||A.includes("econnreset")||A.includes("etimedout")||A.includes("socket")}function th(e,A){return e.apiUrl.replace("https://",`https://${A}.`)}async function Et(e,A,t,i={}){let g=`${th(e,A)}/graphql`,r;for(let n=1;n<=eh;n+=1)try{let s=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Authorization:e.authConfig.token??""},body:JSON.stringify({query:t,variables:i})}),o=await s.text(),a;try{a=JSON.parse(o);}catch{throw new Error(`GraphQL HTTP ${s.status}: ${o.slice(0,500)}`)}if(!s.ok&&!a.errors?.length)throw new Error(`GraphQL HTTP ${s.status}: ${o.slice(0,500)}`);return a}catch(s){if(r=s,n<eh&&VP(s)){e.output.debug(`GraphQL request failed (attempt ${n}/${eh}): ${s instanceof Error?s.message:String(s)}. Retrying...`),await Jt(jP*n);continue}throw s}throw r instanceof Error?r:new Error(String(r))}function at(e){return (e??[]).map(A=>A.message).join("; ")}function IN(e){return e.toLowerCase().includes("constraint")}var ZP={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",webp:"image/webp",ico:"image/vnd.microsoft.icon",bmp:"image/bmp",gif:"image/gif",tif:"image/tiff",tiff:"image/tiff",svg:"image/svg+xml",avif:"image/avif",heic:"image/heic",heif:"image/heif",apng:"image/apng",aac:"audio/aac",mp3:"audio/mpeg",wav:"audio/wav",midi:"audio/midi",oga:"audio/ogg",avi:"video/x-msvideo",mp4:"video/mp4",mpeg:"video/mpeg",webm:"video/webm",mov:"video/quicktime",ogv:"video/ogg",ts:"video/mp2t","3gp":"video/3gpp","3g2":"video/3gpp2","7z":"application/x-7z-compressed",zip:"application/zip",azw:"application/vnd.amazon.ebook",bin:"application/octet-stream",epub:"application/epub+zip",pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",eot:"application/vnd.ms-fontobject",gz:"application/gzip",jar:"application/java-archive",json:"application/json",jsonld:"application/ld+json",mjs:"text/javascript",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",rar:"application/vnd.rar",tar:"application/x-tar",vsd:"application/vnd.visio",xhtml:"application/xhtml+xml",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",xml:"application/xml",txt:"text/plain",csv:"text/csv",md:"text/markdown"};function ih(e){let A=e.match(/\.([A-Za-z0-9]+)$/)?.[1]?.toLowerCase()??"";return ZP[A]??"application/octet-stream"}function sN(e,A){let t=e?.split(";")[0]?.trim()??"";return t&&t!=="application/octet-stream"?t:ih(A)}function zP(e){return e.startsWith("http://")||e.startsWith("https://")}async function BN(e){let A=await RA.promises.readdir(e,{withFileTypes:true}),t=[];for(let i of A){let g=ue__default.default.join(e,i.name);if(!i.name.startsWith(".")){if(i.isDirectory()){t.push(...await BN(g));continue}i.isFile()&&t.push(g);}}return t}async function QN(e,A){let t=[];for(let i of e){if(zP(i)){let{pathname:n}=new URL(i),s=decodeURIComponent(n.split("/").pop()||"file.bin");t.push({source:i,isUrl:true,filename:s});continue}let g=ue__default.default.resolve(A,i);if((await RA.promises.stat(g)).isDirectory()){let n=await BN(g);for(let s of n)t.push({source:s,isUrl:false,filename:ue__default.default.basename(s)});continue}t.push({source:g,isUrl:false,filename:ue__default.default.basename(g)});}return t}async function $P(e){if(!e.isUrl)return {buffer:await RA.promises.readFile(e.source),mimeType:ih(e.filename)};let A=await fetch(e.source);if(!A.ok)throw new Error(`Failed to download ${e.source} (HTTP ${A.status})`);let t=Buffer.from(await A.arrayBuffer()),i=sN(A.headers.get("content-type"),e.filename);return {buffer:t,mimeType:i}}function AO(e,A,t){if(e==="filename")return A.filename.replace(/\.[A-Za-z0-9]+$/,"");if(e==="hash")return crypto.createHash("sha256").update(t).digest("hex")}var CN=5,oN=120;function eO(e){let A=Number(e.headers.get("Retry-After"));if(Number.isFinite(A)&&A>0)return Math.min(A,oN)*1e3;let t=Number(e.headers.get("X-RateLimit-Reset"));return Number.isFinite(t)&&t>Date.now()?Math.min(t-Date.now(),oN*1e3):5e3}async function tO(e,A,t,i){let g=new URLSearchParams({filename:i.filename});i.assetId&&g.set("assetId",i.assetId);let r=`${th(e,A)}/assets?${g.toString()}`;for(let n=1;;n+=1){let s=await fetch(r,{method:"POST",headers:{"Content-Type":i.mimeType,Authorization:e.authConfig.token??""},body:new Uint8Array(t)}),o=await s.text();if(s.status===429&&n<=CN){let a=eO(s);e.output.debug(`Rate limited uploading ${i.filename} (attempt ${n}/${CN}). Waiting ${Math.ceil(a/1e3)}s...`),await Jt(a);continue}if(!s.ok)throw new Error(`Asset upload failed for ${i.filename} (HTTP ${s.status}): ${o.slice(0,300)}`);return JSON.parse(o)}}async function aQ(e,A,t,i={}){let{buffer:g,mimeType:r}=await $P(t),n=i.assetId??AO(i.idStrategy??"random",t,g);return tO(e,A,g,{mimeType:r,filename:t.filename,assetId:n})}async function gO(e,A,t){let i=await Et(e,A,`query FindTag($where: _tagWhere) {
|
|
189
|
+
`);u=I.pop()??"";for(let C of I){let E=MP(C);if(E&&(_l(e.output,A,E,i,g),!!Ol(E.state)))return E}}}async function GP(e,A,t,i,g,r){let n=0;for(;;){if(r())throw new Error("Deploy observation was canceled.");try{let s=await e.fetch(t.poll,{projectId:A,retry:{retries:3}});if(_l(e.output,A,s,i,g),Ol(s.state))return s;n=0,await Jt($M);continue}catch(s){if(n+=1,n>yP)throw s;let o=Math.min($M*n,5e3);e.output.debug(`[${A}] polling retry in ${o.toString()}ms: ${Ie(s)}`),await Jt(o);}}}async function UP(e,A,t,i,g){let r=new Set,n={};if(_l(e.output,A,{state:i},r,n),Ol(i))return {state:i};try{return await NP(e,A,t,r,n,g)}catch(s){return e.output.debug(`[${A}] SSE observation unavailable, falling back to polling: ${Ie(s)}`),GP(e,A,t,r,n,g)}}function bP(e,A,t){let i=QQ(t.error);tN(e,A,i);}function LP(e){return Array.isArray(e.errors)&&e.errors.length>0}function xP(e,A,t){if(!$e(t)){e.output.error(`[${A}] ${Ie(t)}`);return}if(t.status===401){e.output.log(`[${A}] You are not logged in. Please log in first by running ${bA("login")}`);return}if(t.status===409&&typeof t.jobId=="string"){e.output.warn(`[${A}] Deploy lock is active for job ${t.jobId}.`);return}if(t.status===400||LP(t)){tN(e.output,A,QQ(t));return}e.output.error(`[${A}] ${t.serverMessage}`);}async function ql(e){let A,{output:t}=e;try{A=te(e.argv.slice(2),{"--allow-breaking-changes":Boolean,"--help":Boolean,"-h":"--help","--force":Boolean});}catch(a){return gt(a),1}if(A.flags["--help"])return t.print(ie(zM,{columns:e.stderr.columns})),2;if(e.flexkitConfig===void 0)return t.error(`No Flexkit configuration file found in the current directory. Please ensure you are executing the command from the correct folder, or run ${bA("init")} to create a new Flexkit project in this directory.`),1;let i=[],g=[],r=[],{projects:n}=e.flexkitConfig,s=false,o=()=>{s=true,t.warn("Received Ctrl+C. Stopping deploy command.");};process.once("SIGINT",o);try{t.spinner("Deploying schema",200);for(let a of n){if(s)break;let B=a.schema??[],u=a.scopes??[],Q=a.spaces??[];try{let I=await kP(e,a.projectId,B,u,Q,A.flags["--force"]??!1,A.flags["--allow-breaking-changes"]??!1);if(!I.hasChanges){g.push(a.projectId),t.log(`[${a.projectId}] ${I.message}`),t.dim(`[${a.projectId}] schemaHash=${I.schemaHash}`);continue}let C=await UP(e,a.projectId,I.observe,I.state,()=>s);if(C.state==="completed"){i.push(a.projectId);continue}r.push(a.projectId),bP(t,a.projectId,C);}catch(I){r.push(a.projectId),xP(e,a.projectId,I);}}}finally{process.off("SIGINT",o),t.stopSpinner();}if(s)return 1;if(i.length>0){let{projectsLabel:a,projectWord:B}=Pl(i);t.success(`Deploy completed for ${B} ${a}.`);}if(g.length>0){let{projectsLabel:a,projectWord:B}=Pl(g);t.log(`No changes to deploy for ${B} ${a}.`);}if(r.length>0){let{projectsLabel:a,projectWord:B}=Pl(r);return t.error(`Deploy failed for ${B} ${a}.`),1}return 0}var Wl={name:"ls",description:"List projects, or get a single project by name or id.",arguments:[{name:"nameOrId",required:false}],options:[{name:"json",shorthand:null,type:String,description:"Output response as JSON",deprecated:false}],examples:[{name:"List projects",value:"flexkit project ls"},{name:"List projects in a specific team scope",value:"flexkit project ls --scope my-team"},{name:"Get a single project by id or name",value:"flexkit project ls my-project"}]},jl={name:"add",description:"Create a project.",arguments:[{name:"name",required:true}],options:[{name:"json",shorthand:null,type:String,description:"Output response as JSON",deprecated:false}],examples:[{name:"Create a project",value:"flexkit project add my-project"},{name:"Create a project in a specific team scope",value:"flexkit project add my-project --scope team-id-or-name"}]},Vl={name:"rm",description:"Remove a project by id or name.",arguments:[{name:"nameOrId",required:true}],options:[{name:"json",shorthand:null,type:String,description:"Output response as JSON",deprecated:false}],examples:[{name:"Remove a project",value:"flexkit project rm my-project"},{name:"Remove a project from a specific team scope",value:"flexkit project rm my-project --scope team-id-or-name"}]},iN={name:"project",description:"Manage projects.",arguments:[],subcommands:[Wl,jl,Vl],options:[{name:"json",shorthand:null,type:String,description:"Output response as JSON",deprecated:false}],examples:[{name:"List projects",value:"flexkit project ls"},{name:"Create a new project",value:"flexkit project add my-project"},{name:"Remove a project",value:"flexkit project rm my-project-id"}]};function gN(e,A){let t="/api/projects";if(e&&(t+=`/${encodeURIComponent(e)}`),A){let i=new URLSearchParams({scope:A});t+=`?${i.toString()}`;}return t}function vP(e){return "project"in e}function JP(e,A){if(e.log(`Team: ${A.team.name} (${A.team.id})`),A.projects.length===0){e.log("No projects found.");return}let t=[["ID","Name","Created At"],...A.projects.map(i=>[i.id,i.name,i.createdAt??""])];e.print(ur(t));}function KP(e,A){e.log(`Team: ${A.team.name} (${A.team.id})`),e.print(ur([["ID",A.project.id],["Name",A.project.name],["Created At",A.project.createdAt??""]]));}function Zl(e,A){e.print(JSON.stringify(A,null,2));}function HP(e){return $e(e)?Dt(e)&&typeof e.error=="string"?e.error:typeof e.serverMessage=="string"&&e.serverMessage!=="Response Error"?e.serverMessage:e.message:e.message}function YP(e){if(!$e(e))return [];if(!Dt(e)||!Array.isArray(e.matches))return [];let A=[];for(let t of e.matches){if(!Dt(t)||typeof t.id!="string"||typeof t.name!="string")continue;let i={id:t.id,name:t.name};typeof t.createdAt=="string"&&(i.createdAt=t.createdAt),A.push(i);}return A}function TP(e,A){if(A.length===0){e.error("Project name is ambiguous. Retry with the project id.");return}e.error("Project name is ambiguous. Use one of the following project ids:");let t=[["ID","Name","Created At"],...A.map(i=>[i.id,i.name,i.createdAt??""])];e.print(ur(t));}function PP(e,A,t){let{output:i}=e;return $e(A)?A.status===401?(i.log(`You are not logged in. Please log in first by running ${bA("login")}`),1):A.status===409&&(t==="ls"||t==="rm")?(TP(i,YP(A)),1):(i.error(HP(A)),1):(i.debug(String(A)),1)}async function OP(e,A,t,i){let g=await e.fetch(gN(A,t));return i?(Zl(e.output,g),0):vP(g)?(KP(e.output,g),0):(JP(e.output,g),0)}async function _P(e,A,t,i){let g={name:A};t&&(g.scope=t);let r=await e.fetch("/api/projects",{method:"POST",body:g});return i?(Zl(e.output,r),0):(e.output.log(`Created project "${r.project.name}" (${r.project.id}) in team "${r.team.name}" (${r.team.id}).`),0)}async function qP(e,A,t,i){let g=gN(A,t),r=await e.fetch(g);if(!await e.input.confirm({message:`Delete project "${r.project.name}" (${r.project.id}) from team "${r.team.name}"?`,default:false}))return e.output.log("Canceled."),0;let s=await e.fetch(g,{method:"DELETE"});return i?(Zl(e.output,s),0):(e.output.log(`Deleted project "${s.project.name}" (${s.project.id}).`),0)}function WP(e,A){let{columns:t}=e.stderr;return A?A==="ls"?(e.output.print(ie(Wl,{columns:t})),2):A==="add"?(e.output.print(ie(jl,{columns:t})),2):A==="rm"?(e.output.print(ie(Vl,{columns:t})),2):(e.output.error(`The ${A} subcommand does not exist`),1):(e.output.print(ie(iN,{columns:t})),2)}async function Xl(e){let A;try{A=te(e.argv.slice(2),{"--help":Boolean,"-h":"--help","--json":Boolean});}catch(n){return gt(n),1}let[,t,i]=A.args,g=A.flags["--scope"],r=A.flags["--json"]??false;if(A.flags["--help"])return WP(e,t);if(!t)return e.output.error(`No subcommand provided. Use ${bA("project --help")} to see available project subcommands.`),1;try{return t==="ls"?await OP(e,i,g,r):t==="add"?i?await _P(e,i,g,r):(e.output.error(`Missing required project name. Usage: ${bA("project add <name>")}`),1):t==="rm"?i?await qP(e,i,g,r):(e.output.error(`Missing required project id or name. Usage: ${bA("project rm <nameOrId>")}`),1):(e.output.error(`The ${t} subcommand does not exist`),1)}catch(n){return t==="ls"||t==="add"||t==="rm"?PP(e,n,t):(e.output.debug(String(n)),1)}}var rN={name:"whoami",description:"Shows the username or email of the currently logged-in user.",arguments:[],options:[],examples:[{name:"Print current user name or email",value:"flexkit whoami"}]};async function zl(e){let A,{output:t}=e;try{A=te(e.argv.slice(2),{"--help":Boolean,"-h":"--help"});}catch(g){return gt(g),1}if(A.flags["--help"])return t.print(ie(rN,{columns:e.stderr.columns})),2;let i=new URL("/api/auth/user",e.authUrl);try{t.spinner("");let g=await e.fetch(i.href);t.stopSpinner();let r=g.display_name?.trim()??g.email?.trim()??"";return r?(t.log(r),0):(t.error("No user information available."),1)}catch(g){return t.stopSpinner(),$e(g)?g.status===401?(t.log(`You are not logged in. Please log in first by running ${bA("login")}`),1):(t.debug(g.message),1):(t.debug(Ie(g)),1)}}function nI(e,A){let{output:t}=e,i=e.flexkitConfig?.projects??[];if(i.length===0)return t.error(`No project configuration found. Run this command from a directory with a flexkit.config file or pass --local-config. See ${bA("--help")}.`),null;if(A){let g=i.find(r=>r.projectId===A);return g||(t.error(`Project "${A}" is not defined in the local config. Available projects: ${i.map(r=>r.projectId).join(", ")}`),null)}return i.length>1?(t.error(`Multiple projects found in the local config. Pass --project <projectId> to select one of: ${i.map(g=>g.projectId).join(", ")}`),null):i[0]}var $l={name:"upload",description:"Upload files or URLs as project assets. Identical files are deduplicated by content hash.",arguments:[{name:"path|url",required:true}],options:[{name:"project",shorthand:null,type:String,argument:"ID",description:"Project id (required when the local config defines several projects)",deprecated:false},{name:"concurrency",shorthand:null,type:Number,argument:"N",description:"Number of parallel uploads (default 5)",deprecated:false},{name:"id-from",shorthand:null,type:String,argument:"STRATEGY",description:'Derive deterministic asset _ids: "filename" or "hash"',deprecated:false},{name:"tag",shorthand:null,type:String,argument:"NAME",description:"Tag every uploaded asset with the given tag (created if missing)",deprecated:false},{name:"json",shorthand:null,type:String,description:"Output created assets as NDJSON on stdout",deprecated:false}],examples:[{name:"Upload a folder of images",value:"flexkit assets upload ./images"},{name:"Upload files and a remote URL with a tag",value:"flexkit assets upload hero.png https://example.com/logo.svg --tag branding"},{name:"Upload with deterministic ids derived from filenames",value:"flexkit assets upload ./icons --id-from filename"}]},Ah={name:"export",description:"Export all project assets (files + metadata) into a tarball that can be re-imported.",arguments:[{name:"dest.tar.gz",required:false}],options:[{name:"project",shorthand:null,type:String,argument:"ID",description:"Project id (required when the local config defines several projects)",deprecated:false},{name:"tag",shorthand:null,type:String,argument:"NAME",description:"Only export assets with the given tag",deprecated:false},{name:"concurrency",shorthand:null,type:Number,argument:"N",description:"Number of parallel downloads (default 5)",deprecated:false},{name:"overwrite",shorthand:null,type:String,description:"Overwrite the destination file if it exists",deprecated:false}],examples:[{name:"Export all assets",value:"flexkit assets export"},{name:"Export assets with a tag to a specific file",value:"flexkit assets export branding.tar.gz --tag branding"}]},nN={name:"assets",description:"Manage project assets.",arguments:[],subcommands:[$l,Ah],options:[],examples:[{name:"Upload a folder of images",value:"flexkit assets upload ./images"},{name:"Export all assets to a tarball",value:"flexkit assets export"}]};var EN=QA(Yl());async function yg(e,A,t){let i=new Array(e.length),g=0;async function r(){for(;g<e.length;){let s=g;g+=1;let o=e[s];try{i[s]={item:o,result:await t(o,s)};}catch(a){i[s]={item:o,error:a instanceof Error?a:new Error(String(a))};}}}let n=Math.max(1,Math.min(A,e.length));return await Promise.all(Array.from({length:n},()=>r())),i}var eh=3,jP=1e3;function VP(e){if(!(e instanceof Error))return false;let A=e.message.toLowerCase();return A.includes("fetch failed")||A.includes("network")||A.includes("econnreset")||A.includes("etimedout")||A.includes("socket")}function th(e,A){return e.apiUrl.replace("https://",`https://${A}.`)}async function Et(e,A,t,i={}){let g=`${th(e,A)}/graphql`,r;for(let n=1;n<=eh;n+=1)try{let s=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Authorization:e.authConfig.token??""},body:JSON.stringify({query:t,variables:i})}),o=await s.text(),a;try{a=JSON.parse(o);}catch{throw new Error(`GraphQL HTTP ${s.status}: ${o.slice(0,500)}`)}if(!s.ok&&!a.errors?.length)throw new Error(`GraphQL HTTP ${s.status}: ${o.slice(0,500)}`);return a}catch(s){if(r=s,n<eh&&VP(s)){e.output.debug(`GraphQL request failed (attempt ${n}/${eh}): ${s instanceof Error?s.message:String(s)}. Retrying...`),await Jt(jP*n);continue}throw s}throw r instanceof Error?r:new Error(String(r))}function at(e){return (e??[]).map(A=>A.message).join("; ")}function IN(e){return e.toLowerCase().includes("constraint")}var ZP={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",webp:"image/webp",ico:"image/vnd.microsoft.icon",bmp:"image/bmp",gif:"image/gif",tif:"image/tiff",tiff:"image/tiff",svg:"image/svg+xml",avif:"image/avif",heic:"image/heic",heif:"image/heif",apng:"image/apng",aac:"audio/aac",mp3:"audio/mpeg",wav:"audio/wav",midi:"audio/midi",oga:"audio/ogg",avi:"video/x-msvideo",mp4:"video/mp4",mpeg:"video/mpeg",webm:"video/webm",mov:"video/quicktime",ogv:"video/ogg",ts:"video/mp2t","3gp":"video/3gpp","3g2":"video/3gpp2","7z":"application/x-7z-compressed",zip:"application/zip",azw:"application/vnd.amazon.ebook",bin:"application/octet-stream",epub:"application/epub+zip",pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",eot:"application/vnd.ms-fontobject",gz:"application/gzip",jar:"application/java-archive",json:"application/json",jsonld:"application/ld+json",mjs:"text/javascript",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",rar:"application/vnd.rar",tar:"application/x-tar",vsd:"application/vnd.visio",xhtml:"application/xhtml+xml",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",xml:"application/xml",txt:"text/plain",csv:"text/csv",md:"text/markdown"};function ih(e){let A=e.match(/\.([A-Za-z0-9]+)$/)?.[1]?.toLowerCase()??"";return ZP[A]??"application/octet-stream"}function sN(e,A){let t=e?.split(";")[0]?.trim()??"";return t&&t!=="application/octet-stream"?t:ih(A)}function zP(e){return e.startsWith("http://")||e.startsWith("https://")}async function BN(e){let A=await RA.promises.readdir(e,{withFileTypes:true}),t=[];for(let i of A){let g=ue__default.default.join(e,i.name);if(!i.name.startsWith(".")){if(i.isDirectory()){t.push(...await BN(g));continue}i.isFile()&&t.push(g);}}return t}async function QN(e,A){let t=[];for(let i of e){if(zP(i)){let{pathname:n}=new URL(i),s=decodeURIComponent(n.split("/").pop()||"file.bin");t.push({source:i,isUrl:true,filename:s});continue}let g=ue__default.default.resolve(A,i);if((await RA.promises.stat(g)).isDirectory()){let n=await BN(g);for(let s of n)t.push({source:s,isUrl:false,filename:ue__default.default.basename(s)});continue}t.push({source:g,isUrl:false,filename:ue__default.default.basename(g)});}return t}async function $P(e){if(!e.isUrl)return {buffer:await RA.promises.readFile(e.source),mimeType:ih(e.filename)};let A=await fetch(e.source);if(!A.ok)throw new Error(`Failed to download ${e.source} (HTTP ${A.status})`);let t=Buffer.from(await A.arrayBuffer()),i=sN(A.headers.get("content-type"),e.filename);return {buffer:t,mimeType:i}}function AO(e,A,t){if(e==="filename")return A.filename.replace(/\.[A-Za-z0-9]+$/,"");if(e==="hash")return crypto.createHash("sha256").update(t).digest("hex")}var CN=5,oN=120;function eO(e){let A=Number(e.headers.get("Retry-After"));if(Number.isFinite(A)&&A>0)return Math.min(A,oN)*1e3;let t=Number(e.headers.get("X-RateLimit-Reset"));return Number.isFinite(t)&&t>Date.now()?Math.min(t-Date.now(),oN*1e3):5e3}async function tO(e,A,t,i){let g=new URLSearchParams({filename:i.filename});i.assetId&&g.set("assetId",i.assetId);let r=`${th(e,A)}/assets?${g.toString()}`;for(let n=1;;n+=1){let s=await fetch(r,{method:"POST",headers:{"Content-Type":i.mimeType,Authorization:e.authConfig.token??""},body:new Uint8Array(t)}),o=await s.text();if(s.status===429&&n<=CN){let a=eO(s);e.output.debug(`Rate limited uploading ${i.filename} (attempt ${n}/${CN}). Waiting ${Math.ceil(a/1e3)}s...`),await Jt(a);continue}if(!s.ok)throw new Error(`Asset upload failed for ${i.filename} (HTTP ${s.status}): ${o.slice(0,300)}`);return JSON.parse(o)}}async function aQ(e,A,t,i={}){let{buffer:g,mimeType:r}=await $P(t),n=i.assetId??AO(i.idStrategy??"random",t,g);return tO(e,A,g,{mimeType:r,filename:t.filename,assetId:n})}async function gO(e,A,t){let i=await Et(e,A,`query FindTag($where: _tagWhere) {
|
|
190
190
|
_tags(where: $where) {
|
|
191
191
|
_id
|
|
192
192
|
}
|
|
@@ -206,7 +206,7 @@ etc`,value:"something unique",short:"generally the first line of `name`"}],pageS
|
|
|
206
206
|
`);else if(o.length>0){let u=[["ID","Filename","Size","Deduped"],...o.map(Q=>[Q._id,Q.originalFilename??"",(0, EN.default)(Q.size??0)??"",Q.deduped?"yes":"no"])];g.print(`${ur(u)}
|
|
207
207
|
`);}let B=o.filter(u=>u.deduped).length;g.log(`Uploaded ${o.length-B}, deduped ${B}, failed ${a.length}${i.tag?`, tagged with "${i.tag}"`:""}.`);for(let u of a)g.error(`${u.source}: ${u.message}`);return a.length>0?1:0}var nO=Object.defineProperty,IO=(e,A)=>{for(var t in A)nO(e,t,{get:A[t],enumerable:true});},aN=typeof process=="object"&&process?process:{stdout:null,stderr:null},oO=e=>!!e&&typeof e=="object"&&(e instanceof kr||e instanceof VN__default.default||BO(e)||QO(e)),BO=e=>!!e&&typeof e=="object"&&e instanceof sO.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==VN__default.default.Writable.prototype.pipe,QO=e=>!!e&&typeof e=="object"&&e instanceof sO.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function",Wi=Symbol("EOF"),ji=Symbol("maybeEmitEnd"),Fg=Symbol("emittedEnd"),cQ=Symbol("emittingEnd"),bs=Symbol("emittedError"),lQ=Symbol("closed"),uN=Symbol("read"),hQ=Symbol("flush"),cN=Symbol("flushChunk"),$t=Symbol("encoding"),II=Symbol("decoder"),we=Symbol("flowing"),Ls=Symbol("paused"),QI=Symbol("resume"),ye=Symbol("buffer"),ze=Symbol("pipes"),Fe=Symbol("bufferLength"),nh=Symbol("bufferPush"),DQ=Symbol("bufferShift"),Je=Symbol("objectMode"),ge=Symbol("destroyed"),Ih=Symbol("error"),sh=Symbol("emitData"),lN=Symbol("emitEnd"),Ch=Symbol("emitEnd2"),yi=Symbol("async"),oh=Symbol("abort"),fQ=Symbol("aborted"),xs=Symbol("signal"),lr=Symbol("dataListeners"),ut=Symbol("discarded"),vs=e=>Promise.resolve().then(e),EO=e=>e(),aO=e=>e==="end"||e==="finish"||e==="prefinish",uO=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,cO=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),ZN=class{src;dest;opts;ondrain;constructor(e,A,t){this.src=e,this.dest=A,this.opts=t,this.ondrain=()=>e[QI](),this.dest.on("drain",this.ondrain);}unpipe(){this.dest.removeListener("drain",this.ondrain);}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end();}},lO=class extends ZN{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe();}constructor(e,A,t){super(e,A,t),this.proxyErrors=i=>this.dest.emit("error",i),e.on("error",this.proxyErrors);}},hO=e=>!!e.objectMode,DO=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",kr=class extends sO.EventEmitter{[we]=false;[Ls]=false;[ze]=[];[ye]=[];[Je];[$t];[yi];[II];[Wi]=false;[Fg]=false;[cQ]=false;[lQ]=false;[bs]=null;[Fe]=0;[ge]=false;[xs];[fQ]=false;[lr]=0;[ut]=false;writable=true;readable=true;constructor(...e){let A=e[0]||{};if(super(),A.objectMode&&typeof A.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");hO(A)?(this[Je]=true,this[$t]=null):DO(A)?(this[$t]=A.encoding,this[Je]=false):(this[Je]=false,this[$t]=null),this[yi]=!!A.async,this[II]=this[$t]?new string_decoder.StringDecoder(this[$t]):null,A&&A.debugExposeBuffer===true&&Object.defineProperty(this,"buffer",{get:()=>this[ye]}),A&&A.debugExposePipes===true&&Object.defineProperty(this,"pipes",{get:()=>this[ze]});let{signal:t}=A;t&&(this[xs]=t,t.aborted?this[oh]():t.addEventListener("abort",()=>this[oh]()));}get bufferLength(){return this[Fe]}get encoding(){return this[$t]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[Je]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[yi]}set async(e){this[yi]=this[yi]||!!e;}[oh](){this[fQ]=true,this.emit("abort",this[xs]?.reason),this.destroy(this[xs]?.reason);}get aborted(){return this[fQ]}set aborted(e){}write(e,A,t){if(this[fQ])return false;if(this[Wi])throw new Error("write after end");if(this[ge])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),true;typeof A=="function"&&(t=A,A="utf8"),A||(A="utf8");let i=this[yi]?vs:EO;if(!this[Je]&&!Buffer.isBuffer(e)){if(cO(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(uO(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[Je]?(this[we]&&this[Fe]!==0&&this[hQ](true),this[we]?this.emit("data",e):this[nh](e),this[Fe]!==0&&this.emit("readable"),t&&i(t),this[we]):e.length?(typeof e=="string"&&!(A===this[$t]&&!this[II]?.lastNeed)&&(e=Buffer.from(e,A)),Buffer.isBuffer(e)&&this[$t]&&(e=this[II].write(e)),this[we]&&this[Fe]!==0&&this[hQ](true),this[we]?this.emit("data",e):this[nh](e),this[Fe]!==0&&this.emit("readable"),t&&i(t),this[we]):(this[Fe]!==0&&this.emit("readable"),t&&i(t),this[we])}read(e){if(this[ge])return null;if(this[ut]=false,this[Fe]===0||e===0||e&&e>this[Fe])return this[ji](),null;this[Je]&&(e=null),this[ye].length>1&&!this[Je]&&(this[ye]=[this[$t]?this[ye].join(""):Buffer.concat(this[ye],this[Fe])]);let A=this[uN](e||null,this[ye][0]);return this[ji](),A}[uN](e,A){if(this[Je])this[DQ]();else {let t=A;e===t.length||e===null?this[DQ]():typeof t=="string"?(this[ye][0]=t.slice(e),A=t.slice(0,e),this[Fe]-=e):(this[ye][0]=t.subarray(e),A=t.subarray(0,e),this[Fe]-=e);}return this.emit("data",A),!this[ye].length&&!this[Wi]&&this.emit("drain"),A}end(e,A,t){return typeof e=="function"&&(t=e,e=void 0),typeof A=="function"&&(t=A,A="utf8"),e!==void 0&&this.write(e,A),t&&this.once("end",t),this[Wi]=true,this.writable=false,(this[we]||!this[Ls])&&this[ji](),this}[QI](){this[ge]||(!this[lr]&&!this[ze].length&&(this[ut]=true),this[Ls]=false,this[we]=true,this.emit("resume"),this[ye].length?this[hQ]():this[Wi]?this[ji]():this.emit("drain"));}resume(){return this[QI]()}pause(){this[we]=false,this[Ls]=true,this[ut]=false;}get destroyed(){return this[ge]}get flowing(){return this[we]}get paused(){return this[Ls]}[nh](e){this[Je]?this[Fe]+=1:this[Fe]+=e.length,this[ye].push(e);}[DQ](){return this[Je]?this[Fe]-=1:this[Fe]-=this[ye][0].length,this[ye].shift()}[hQ](e=false){do;while(this[cN](this[DQ]())&&this[ye].length);!e&&!this[ye].length&&!this[Wi]&&this.emit("drain");}[cN](e){return this.emit("data",e),this[we]}pipe(e,A){if(this[ge])return e;this[ut]=false;let t=this[Fg];return A=A||{},e===aN.stdout||e===aN.stderr?A.end=false:A.end=A.end!==false,A.proxyErrors=!!A.proxyErrors,t?A.end&&e.end():(this[ze].push(A.proxyErrors?new lO(this,e,A):new ZN(this,e,A)),this[yi]?vs(()=>this[QI]()):this[QI]()),e}unpipe(e){let A=this[ze].find(t=>t.dest===e);A&&(this[ze].length===1?(this[we]&&this[lr]===0&&(this[we]=false),this[ze]=[]):this[ze].splice(this[ze].indexOf(A),1),A.unpipe());}addListener(e,A){return this.on(e,A)}on(e,A){let t=super.on(e,A);if(e==="data")this[ut]=false,this[lr]++,!this[ze].length&&!this[we]&&this[QI]();else if(e==="readable"&&this[Fe]!==0)super.emit("readable");else if(aO(e)&&this[Fg])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[bs]){let i=A;this[yi]?vs(()=>i.call(this,this[bs])):i.call(this,this[bs]);}return t}removeListener(e,A){return this.off(e,A)}off(e,A){let t=super.off(e,A);return e==="data"&&(this[lr]=this.listeners("data").length,this[lr]===0&&!this[ut]&&!this[ze].length&&(this[we]=false)),t}removeAllListeners(e){let A=super.removeAllListeners(e);return (e==="data"||e===void 0)&&(this[lr]=0,!this[ut]&&!this[ze].length&&(this[we]=false)),A}get emittedEnd(){return this[Fg]}[ji](){!this[cQ]&&!this[Fg]&&!this[ge]&&this[ye].length===0&&this[Wi]&&(this[cQ]=true,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[lQ]&&this.emit("close"),this[cQ]=false);}emit(e,...A){let t=A[0];if(e!=="error"&&e!=="close"&&e!==ge&&this[ge])return false;if(e==="data")return !this[Je]&&!t?false:this[yi]?(vs(()=>this[sh](t)),true):this[sh](t);if(e==="end")return this[lN]();if(e==="close"){if(this[lQ]=true,!this[Fg]&&!this[ge])return false;let g=super.emit("close");return this.removeAllListeners("close"),g}else if(e==="error"){this[bs]=t,super.emit(Ih,t);let g=!this[xs]||this.listeners("error").length?super.emit("error",t):false;return this[ji](),g}else if(e==="resume"){let g=super.emit("resume");return this[ji](),g}else if(e==="finish"||e==="prefinish"){let g=super.emit(e);return this.removeAllListeners(e),g}let i=super.emit(e,...A);return this[ji](),i}[sh](e){for(let t of this[ze])t.dest.write(e)===false&&this.pause();let A=this[ut]?false:super.emit("data",e);return this[ji](),A}[lN](){return this[Fg]?false:(this[Fg]=true,this.readable=false,this[yi]?(vs(()=>this[Ch]()),true):this[Ch]())}[Ch](){if(this[II]){let A=this[II].end();if(A){for(let t of this[ze])t.dest.write(A);this[ut]||super.emit("data",A);}}for(let A of this[ze])A.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[Je]||(e.dataLength=0);let A=this.promise();return this.on("data",t=>{e.push(t),this[Je]||(e.dataLength+=t.length);}),await A,e}async concat(){if(this[Je])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[$t]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,A)=>{this.on(ge,()=>A(new Error("stream destroyed"))),this.on("error",t=>A(t)),this.on("end",()=>e());})}[Symbol.asyncIterator](){this[ut]=false;let e=false,A=async()=>(this.pause(),e=true,{value:void 0,done:true});return {next:()=>{if(e)return A();let t=this.read();if(t!==null)return Promise.resolve({done:false,value:t});if(this[Wi])return A();let i,g,r=a=>{this.off("data",n),this.off("end",s),this.off(ge,o),A(),g(a);},n=a=>{this.off("error",r),this.off("end",s),this.off(ge,o),this.pause(),i({value:a,done:!!this[Wi]});},s=()=>{this.off("error",r),this.off("data",n),this.off(ge,o),A(),i({done:true,value:void 0});},o=()=>r(new Error("stream destroyed"));return new Promise((a,B)=>{g=B,i=a,this.once(ge,o),this.once("error",r),this.once("end",s),this.once("data",n);})},throw:A,return:A,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[ut]=false;let e=false,A=()=>(this.pause(),this.off(Ih,A),this.off(ge,A),this.off("end",A),e=true,{done:true,value:void 0}),t=()=>{if(e)return A();let i=this.read();return i===null?A():{done:false,value:i}};return this.once("end",A),this.once(Ih,A),this.once(ge,A),{next:t,throw:A,return:A,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[ge])return e?this.emit("error",e):this.emit(ge),this;this[ge]=true,this[ut]=true,this[ye].length=0,this[Fe]=0;let A=this;return typeof A.close=="function"&&!this[lQ]&&A.close(),e?this.emit("error",e):this.emit(ge),this}static get isStream(){return oO}},fO=RA__default.default.writev,bg=Symbol("_autoClose"),ii=Symbol("_close"),Js=Symbol("_ended"),NA=Symbol("_fd"),Bh=Symbol("_finished"),zi=Symbol("_flags"),Qh=Symbol("_flush"),Uh=Symbol("_handleChunk"),bh=Symbol("_makeBuf"),Zs=Symbol("_mode"),dQ=Symbol("_needDrain"),lI=Symbol("_onerror"),hI=Symbol("_onopen"),Eh=Symbol("_onread"),EI=Symbol("_onwrite"),Lg=Symbol("_open"),ti=Symbol("_path"),kg=Symbol("_pos"),Fi=Symbol("_queue"),aI=Symbol("_read"),ah=Symbol("_readSize"),Xi=Symbol("_reading"),Ks=Symbol("_remain"),uh=Symbol("_size"),NQ=Symbol("_write"),hr=Symbol("_writing"),GQ=Symbol("_defaultFlag"),Fr=Symbol("_errored"),eD=class extends kr{[Fr]=false;[NA];[ti];[ah];[Xi]=false;[uh];[Ks];[bg];constructor(e,A){if(A=A||{},super(A),this.readable=true,this.writable=false,typeof e!="string")throw new TypeError("path must be a string");this[Fr]=false,this[NA]=typeof A.fd=="number"?A.fd:void 0,this[ti]=e,this[ah]=A.readSize||16*1024*1024,this[Xi]=false,this[uh]=typeof A.size=="number"?A.size:1/0,this[Ks]=this[uh],this[bg]=typeof A.autoClose=="boolean"?A.autoClose:true,typeof this[NA]=="number"?this[aI]():this[Lg]();}get fd(){return this[NA]}get path(){return this[ti]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Lg](){RA__default.default.open(this[ti],"r",(e,A)=>this[hI](e,A));}[hI](e,A){e?this[lI](e):(this[NA]=A,this.emit("open",A),this[aI]());}[bh](){return Buffer.allocUnsafe(Math.min(this[ah],this[Ks]))}[aI](){if(!this[Xi]){this[Xi]=true;let e=this[bh]();if(e.length===0)return process.nextTick(()=>this[Eh](null,0,e));RA__default.default.read(this[NA],e,0,e.length,null,(A,t,i)=>this[Eh](A,t,i));}}[Eh](e,A,t){this[Xi]=false,e?this[lI](e):this[Uh](A,t)&&this[aI]();}[ii](){if(this[bg]&&typeof this[NA]=="number"){let e=this[NA];this[NA]=void 0,RA__default.default.close(e,A=>A?this.emit("error",A):this.emit("close"));}}[lI](e){this[Xi]=true,this[ii](),this.emit("error",e);}[Uh](e,A){let t=false;return this[Ks]-=e,e>0&&(t=super.write(e<A.length?A.subarray(0,e):A)),(e===0||this[Ks]<=0)&&(t=false,this[ii](),super.end()),t}emit(e,...A){switch(e){case "prefinish":case "finish":return false;case "drain":return typeof this[NA]=="number"&&this[aI](),false;case "error":return this[Fr]?false:(this[Fr]=true,super.emit(e,...A));default:return super.emit(e,...A)}}},dO=class extends eD{[Lg](){let e=true;try{this[hI](null,RA__default.default.openSync(this[ti],"r")),e=!1;}finally{e&&this[ii]();}}[aI](){let e=true;try{if(!this[Xi]){this[Xi]=!0;do{let A=this[bh](),t=A.length===0?0:RA__default.default.readSync(this[NA],A,0,A.length,null);if(!this[Uh](t,A))break}while(!0);this[Xi]=!1;}e=!1;}finally{e&&this[ii]();}}[ii](){if(this[bg]&&typeof this[NA]=="number"){let e=this[NA];this[NA]=void 0,RA__default.default.closeSync(e),this.emit("close");}}},WQ=class extends sO__default.default{readable=false;writable=true;[Fr]=false;[hr]=false;[Js]=false;[Fi]=[];[dQ]=false;[ti];[Zs];[bg];[NA];[GQ];[zi];[Bh]=false;[kg];constructor(e,A){A=A||{},super(A),this[ti]=e,this[NA]=typeof A.fd=="number"?A.fd:void 0,this[Zs]=A.mode===void 0?438:A.mode,this[kg]=typeof A.start=="number"?A.start:void 0,this[bg]=typeof A.autoClose=="boolean"?A.autoClose:true;let t=this[kg]!==void 0?"r+":"w";this[GQ]=A.flags===void 0,this[zi]=A.flags===void 0?t:A.flags,this[NA]===void 0&&this[Lg]();}emit(e,...A){if(e==="error"){if(this[Fr])return false;this[Fr]=true;}return super.emit(e,...A)}get fd(){return this[NA]}get path(){return this[ti]}[lI](e){this[ii](),this[hr]=true,this.emit("error",e);}[Lg](){RA__default.default.open(this[ti],this[zi],this[Zs],(e,A)=>this[hI](e,A));}[hI](e,A){this[GQ]&&this[zi]==="r+"&&e&&e.code==="ENOENT"?(this[zi]="w",this[Lg]()):e?this[lI](e):(this[NA]=A,this.emit("open",A),this[hr]||this[Qh]());}end(e,A){return e&&this.write(e,A),this[Js]=true,!this[hr]&&!this[Fi].length&&typeof this[NA]=="number"&&this[EI](null,0),this}write(e,A){return typeof e=="string"&&(e=Buffer.from(e,A)),this[Js]?(this.emit("error",new Error("write() after end()")),false):this[NA]===void 0||this[hr]||this[Fi].length?(this[Fi].push(e),this[dQ]=true,false):(this[hr]=true,this[NQ](e),true)}[NQ](e){RA__default.default.write(this[NA],e,0,e.length,this[kg],(A,t)=>this[EI](A,t));}[EI](e,A){e?this[lI](e):(this[kg]!==void 0&&typeof A=="number"&&(this[kg]+=A),this[Fi].length?this[Qh]():(this[hr]=false,this[Js]&&!this[Bh]?(this[Bh]=true,this[ii](),this.emit("finish")):this[dQ]&&(this[dQ]=false,this.emit("drain"))));}[Qh](){if(this[Fi].length===0)this[Js]&&this[EI](null,0);else if(this[Fi].length===1)this[NQ](this[Fi].pop());else {let e=this[Fi];this[Fi]=[],fO(this[NA],e,this[kg],(A,t)=>this[EI](A,t));}}[ii](){if(this[bg]&&typeof this[NA]=="number"){let e=this[NA];this[NA]=void 0,RA__default.default.close(e,A=>A?this.emit("error",A):this.emit("close"));}}},XN=class extends WQ{[Lg](){let e;if(this[GQ]&&this[zi]==="r+")try{e=RA__default.default.openSync(this[ti],this[zi],this[Zs]);}catch(A){if(A?.code==="ENOENT")return this[zi]="w",this[Lg]();throw A}else e=RA__default.default.openSync(this[ti],this[zi],this[Zs]);this[hI](null,e);}[ii](){if(this[bg]&&typeof this[NA]=="number"){let e=this[NA];this[NA]=void 0,RA__default.default.closeSync(e),this.emit("close");}}[NQ](e){let A=true;try{this[EI](null,RA__default.default.writeSync(this[NA],e,0,e.length,this[kg])),A=!1;}finally{if(A)try{this[ii]();}catch{}}}},yO=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),FO=e=>!!e.sync&&!!e.file,mO=e=>!e.sync&&!!e.file,SO=e=>!!e.sync&&!e.file,RO=e=>!e.sync&&!e.file,kO=e=>!!e.file,MO=e=>yO.get(e)||e,tD=(e={})=>{if(!e)return {};let A={};for(let[t,i]of Object.entries(e)){let g=MO(t);A[g]=i;}return A.chmod===void 0&&A.noChmod===false&&(A.chmod=true),delete A.noChmod,A},rC=(e,A,t,i,g)=>Object.assign((r=[],n,s)=>{Array.isArray(r)&&(n=r,r={}),typeof n=="function"&&(s=n,n=void 0),n=n?Array.from(n):[];let o=tD(r);if(g?.(o,n),FO(o)){if(typeof s=="function")throw new TypeError("callback not supported for sync tar functions");return e(o,n)}else if(mO(o)){let a=A(o,n);return s?a.then(()=>s(),s):a}else if(SO(o)){if(typeof s=="function")throw new TypeError("callback not supported for sync tar functions");return t(o,n)}else if(RO(o)){if(typeof s=="function")throw new TypeError("callback only supported with file option");return i(o,n)}throw new Error("impossible options??")},{syncFile:e,asyncFile:A,syncNoFile:t,asyncNoFile:i,validate:g}),UO=hN__namespace.default.constants||{ZLIB_VERNUM:4736},Mi=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},UO)),bO=buffer.Buffer.concat,DN=Object.getOwnPropertyDescriptor(buffer.Buffer,"concat"),LO=e=>e,ch=DN?.writable===true||DN?.set!==void 0?e=>{buffer.Buffer.concat=e?LO:bO;}:e=>{},Sr=Symbol("_superWrite"),pQ=class extends Error{code;errno;constructor(e,A){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,A??this.constructor);}get name(){return "ZlibError"}},lh=Symbol("flushFlag"),iD=class extends kr{#A=false;#t=false;#e;#n;#r;#i;#g;get sawError(){return this.#A}get handle(){return this.#i}get flushFlag(){return this.#e}constructor(e,A){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#e=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof hN__namespace[A]!="function")throw new TypeError("Compression method not supported: "+A);try{this.#i=new hN__namespace[A](e);}catch(t){throw new pQ(t,this.constructor)}this.#g=t=>{this.#A||(this.#A=true,this.close(),this.emit("error",t));},this.#i?.on("error",t=>this.#g(new pQ(t))),this.once("end",()=>this.close);}close(){this.#i&&(this.#i.close(),this.#i=void 0,this.emit("close"));}reset(){if(!this.#A)return Lh__default.default(this.#i,"zlib binding closed"),this.#i.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(buffer.Buffer.alloc(0),{[lh]:e})));}end(e,A,t){return typeof e=="function"&&(t=e,A=void 0,e=void 0),typeof A=="function"&&(t=A,A=void 0),e&&(A?this.write(e,A):this.write(e)),this.flush(this.#n),this.#t=true,super.end(t)}get ended(){return this.#t}[Sr](e){return super.write(e)}write(e,A,t){if(typeof A=="function"&&(t=A,A="utf8"),typeof e=="string"&&(e=buffer.Buffer.from(e,A)),this.#A)return;Lh__default.default(this.#i,"zlib binding closed");let i=this.#i._handle,g=i.close;i.close=()=>{};let r=this.#i.close;this.#i.close=()=>{},ch(true);let n;try{let o=typeof e[lh]=="number"?e[lh]:this.#e;n=this.#i._processChunk(e,o),ch(!1);}catch(o){ch(false),this.#g(new pQ(o,this.write));}finally{this.#i&&(this.#i._handle=i,i.close=g,this.#i.close=r,this.#i.removeAllListeners("error"));}this.#i&&this.#i.on("error",o=>this.#g(new pQ(o,this.write)));let s;if(n)if(Array.isArray(n)&&n.length>0){let o=n[0];s=this[Sr](buffer.Buffer.from(o));for(let a=1;a<n.length;a++)s=this[Sr](n[a]);}else s=this[Sr](buffer.Buffer.from(n));return t&&t(),s}},$N=class extends iD{#A;#t;constructor(e,A){e=e||{},e.flush=e.flush||Mi.Z_NO_FLUSH,e.finishFlush=e.finishFlush||Mi.Z_FINISH,e.fullFlushFlag=Mi.Z_FULL_FLUSH,super(e,A),this.#A=e.level,this.#t=e.strategy;}params(e,A){if(!this.sawError){if(!this.handle)throw new Error("cannot switch params when binding is closed");if(!this.handle.params)throw new Error("not supported in this implementation");if(this.#A!==e||this.#t!==A){this.flush(Mi.Z_SYNC_FLUSH),Lh__default.default(this.handle,"zlib binding closed");let t=this.handle.flush;this.handle.flush=(i,g)=>{typeof i=="function"&&(g=i,i=this.flushFlag),this.flush(i),g?.();};try{this.handle.params(e,A);}finally{this.handle.flush=t;}this.handle&&(this.#A=e,this.#t=A);}}}},xO=class extends $N{#A;constructor(e){super(e,"Gzip"),this.#A=e&&!!e.portable;}[Sr](e){return this.#A?(this.#A=false,e[9]=255,super[Sr](e)):super[Sr](e)}},vO=class extends $N{constructor(e){super(e,"Unzip");}},AG=class extends iD{constructor(e,A){e=e||{},e.flush=e.flush||Mi.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Mi.BROTLI_OPERATION_FINISH,e.fullFlushFlag=Mi.BROTLI_OPERATION_FLUSH,super(e,A);}},JO=class extends AG{constructor(e){super(e,"BrotliCompress");}},KO=class extends AG{constructor(e){super(e,"BrotliDecompress");}},eG=class extends iD{constructor(e,A){e=e||{},e.flush=e.flush||Mi.ZSTD_e_continue,e.finishFlush=e.finishFlush||Mi.ZSTD_e_end,e.fullFlushFlag=Mi.ZSTD_e_flush,super(e,A);}},HO=class extends eG{constructor(e){super(e,"ZstdCompress");}},YO=class extends eG{constructor(e){super(e,"ZstdDecompress");}},TO=(e,A)=>{if(Number.isSafeInteger(e))e<0?OO(e,A):PO(e,A);else throw Error("cannot encode number outside of javascript safe integer range");return A},PO=(e,A)=>{A[0]=128;for(var t=A.length;t>1;t--)A[t-1]=e&255,e=Math.floor(e/256);},OO=(e,A)=>{A[0]=255;var t=false;e=e*-1;for(var i=A.length;i>1;i--){var g=e&255;e=Math.floor(e/256),t?A[i-1]=tG(g):g===0?A[i-1]=0:(t=true,A[i-1]=iG(g));}},_O=e=>{let A=e[0],t=A===128?WO(e.subarray(1,e.length)):A===255?qO(e):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t},qO=e=>{for(var A=e.length,t=0,i=false,g=A-1;g>-1;g--){var r=Number(e[g]),n;i?n=tG(r):r===0?n=r:(i=true,n=iG(r)),n!==0&&(t-=n*Math.pow(256,A-g-1));}return t},WO=e=>{for(var A=e.length,t=0,i=A-1;i>-1;i--){var g=Number(e[i]);g!==0&&(t+=g*Math.pow(256,A-i-1));}return t},tG=e=>(255^e)&255,iG=e=>(255^e)+1&255,jO={};IO(jO,{code:()=>gD,isCode:()=>UQ,isName:()=>VO,name:()=>jQ,normalFsTypes:()=>gG});var UQ=e=>jQ.has(e),VO=e=>gD.has(e),gG=new Set(["0","","1","2","3","4","5","6","7","D"]),jQ=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),gD=new Map(Array.from(jQ).map(e=>[e[1],e[0]])),ZO=e=>e===void 0||e<0?void 0:e,Rr=class{cksumValid=false;needPax=false;nullBlock=false;block;path;mode;uid;gid;size;cksum;#A="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,A=0,t,i){Buffer.isBuffer(e)?this.decode(e,A||0,t,i):e&&this.#t(e);}decode(e,A,t,i){if(A||(A=0),!e||!(e.length>=A+512))throw new Error("need 512 bytes for header");let g=Dr(e,A+156,1),r=gG.has(g),n=r?t:void 0,s=r?i:void 0;if(this.path=n?.path??Dr(e,A,100),this.mode=n?.mode??s?.mode??Mg(e,A+100,8),this.uid=n?.uid??s?.uid??Mg(e,A+108,8),this.gid=n?.gid??s?.gid??Mg(e,A+116,8),this.size=ZO(n?.size??s?.size??Mg(e,A+124,12)),this.mtime=n?.mtime??s?.mtime??hh(e,A+136,12),this.cksum=Mg(e,A+148,12),s&&this.#t(s,true),n&&this.#t(n),UQ(g)&&(this.#A=g||"0"),this.#A==="0"&&this.path.slice(-1)==="/"&&(this.#A="5"),this.#A==="5"&&(this.size=0),this.linkpath=Dr(e,A+157,100),e.subarray(A+257,A+265).toString()==="ustar\x0000")if(this.uname=n?.uname??s?.uname??Dr(e,A+265,32),this.gname=n?.gname??s?.gname??Dr(e,A+297,32),this.devmaj=n?.devmaj??s?.devmaj??Mg(e,A+329,8)??0,this.devmin=n?.devmin??s?.devmin??Mg(e,A+337,8)??0,e[A+475]!==0){let a=Dr(e,A+345,155);this.path=a+"/"+this.path;}else {let a=Dr(e,A+345,130);a&&(this.path=a+"/"+this.path),this.atime=t?.atime??i?.atime??hh(e,A+476,12),this.ctime=t?.ctime??i?.ctime??hh(e,A+488,12);}let o=256;for(let a=A;a<A+148;a++)o+=e[a];for(let a=A+156;a<A+512;a++)o+=e[a];this.cksumValid=o===this.cksum,this.cksum===void 0&&o===256&&(this.nullBlock=true);}#t(e,A=false){Object.assign(this,Object.fromEntries(Object.entries(e).filter(([t,i])=>!(i==null||t==="size"&&Number(i)<0||t==="path"&&A||t==="linkpath"&&A||t==="global"))));}encode(e,A=0){if(e||(e=this.block=Buffer.alloc(512)),this.#A==="Unsupported"&&(this.#A="0"),!(e.length>=A+512))throw new Error("need 512 bytes for header");let t=this.ctime||this.atime?130:155,i=XO(this.path||"",t),g=i[0],r=i[1];this.needPax=!!i[2],this.needPax=fr(e,A,100,g)||this.needPax,this.needPax=Ng(e,A+100,8,this.mode)||this.needPax,this.needPax=Ng(e,A+108,8,this.uid)||this.needPax,this.needPax=Ng(e,A+116,8,this.gid)||this.needPax,this.needPax=Ng(e,A+124,12,this.size)||this.needPax,this.needPax=Dh(e,A+136,12,this.mtime)||this.needPax,e[A+156]=Number(this.#A.codePointAt(0)),this.needPax=fr(e,A+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",A+257,8),this.needPax=fr(e,A+265,32,this.uname)||this.needPax,this.needPax=fr(e,A+297,32,this.gname)||this.needPax,this.needPax=Ng(e,A+329,8,this.devmaj)||this.needPax,this.needPax=Ng(e,A+337,8,this.devmin)||this.needPax,this.needPax=fr(e,A+345,t,r)||this.needPax,e[A+475]!==0?this.needPax=fr(e,A+345,155,r)||this.needPax:(this.needPax=fr(e,A+345,130,r)||this.needPax,this.needPax=Dh(e,A+476,12,this.atime)||this.needPax,this.needPax=Dh(e,A+488,12,this.ctime)||this.needPax);let n=256;for(let s=A;s<A+148;s++)n+=e[s];for(let s=A+156;s<A+512;s++)n+=e[s];return this.cksum=n,Ng(e,A+148,8,this.cksum),this.cksumValid=true,this.needPax}get type(){return this.#A==="Unsupported"?this.#A:jQ.get(this.#A)}get typeKey(){return this.#A}set type(e){let A=String(gD.get(e));if(UQ(A)||A==="Unsupported")this.#A=A;else if(UQ(e))this.#A=e;else throw new TypeError("invalid entry type: "+e)}},XO=(e,A)=>{let t=e,i="",g,r=ue.posix.parse(e).root||".";if(Buffer.byteLength(t)<100)g=[t,i,false];else {i=ue.posix.dirname(t),t=ue.posix.basename(t);do Buffer.byteLength(t)<=100&&Buffer.byteLength(i)<=A?g=[t,i,false]:Buffer.byteLength(t)>100&&Buffer.byteLength(i)<=A?g=[t.slice(0,99),i,true]:(t=ue.posix.join(ue.posix.basename(i),t),i=ue.posix.dirname(i));while(i!==r&&g===void 0);g||(g=[e.slice(0,99),"",true]);}return g},Dr=(e,A,t)=>e.subarray(A,A+t).toString("utf8").replace(/\0.*/,""),hh=(e,A,t)=>zO(Mg(e,A,t)),zO=e=>e===void 0?void 0:new Date(e*1e3),Mg=(e,A,t)=>Number(e[A])&128?_O(e.subarray(A,A+t)):A_(e,A,t),$O=e=>isNaN(e)?void 0:e,A_=(e,A,t)=>$O(parseInt(e.subarray(A,A+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),e_={12:8589934591,8:2097151},Ng=(e,A,t,i)=>i===void 0?false:i>e_[t]||i<0?(TO(i,e.subarray(A,A+t)),true):(t_(e,A,t,i),false),t_=(e,A,t,i)=>e.write(i_(i,t),A,t,"ascii"),i_=(e,A)=>g_(Math.floor(e).toString(8),A),g_=(e,A)=>(e.length===A-1?e:new Array(A-e.length-1).join("0")+e+" ")+"\0",Dh=(e,A,t,i)=>i===void 0?false:Ng(e,A,t,i.getTime()/1e3),r_=new Array(156).join("\0"),fr=(e,A,t,i)=>i===void 0?false:(e.write(i+r_,A,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t),TQ=class rG{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(A,t=false){this.atime=A.atime,this.charset=A.charset,this.comment=A.comment,this.ctime=A.ctime,this.dev=A.dev,this.gid=A.gid,this.global=t,this.gname=A.gname,this.ino=A.ino,this.linkpath=A.linkpath,this.mtime=A.mtime,this.nlink=A.nlink,this.path=A.path,this.size=A.size,this.uid=A.uid,this.uname=A.uname;}encode(){let A=this.encodeBody();if(A==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(A),i=512*Math.ceil(1+t/512),g=Buffer.allocUnsafe(i);for(let r=0;r<512;r++)g[r]=0;new Rr({path:("PaxHeader/"+ue.basename(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(g),g.write(A,512,t,"utf8");for(let r=t+512;r<g.length;r++)g[r]=0;return g}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(A){if(this[A]===void 0)return "";let t=this[A],i=t instanceof Date?t.getTime()/1e3:t,g=" "+(A==="dev"||A==="ino"||A==="nlink"?"SCHILY.":"")+A+"="+i+`
|
|
208
208
|
`,r=Buffer.byteLength(g),n=Math.floor(Math.log(r)/Math.log(10))+1;return r+n>=Math.pow(10,n)&&(n+=1),n+r+g}static parse(A,t,i=false){return new rG(I_(s_(A),t),i)}},I_=(e,A)=>A?Object.assign({},A,e):e,s_=e=>e.replace(/\n$/,"").split(`
|
|
209
|
-
`).reduce(C_,Object.create(null)),C_=(e,A)=>{let t=parseInt(A,10);if(t!==Buffer.byteLength(A)+1)return e;A=A.slice((t+" ").length);let i=A.split("="),g=i.shift();if(!g)return e;let r=g.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),n=i.join("=").replace(/\0.*/,"");switch(r){case "path":case "linkpath":case "type":case "charset":case "comment":case "gname":case "uname":e[r]=n;break;case "ctime":case "atime":case "mtime":e[r]=new Date(Number(n)*1e3);break;case "size":let s=+n;s>=0&&(e[r]=s);break;case "gid":case "uid":case "dev":case "ino":case "nlink":case "mode":e[r]=+n;break}return e},o_=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,hA=o_!=="win32"?e=>String(e):e=>String(e).replaceAll(/\\/g,"/"),B_=class extends kr{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=false;ignore=false;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=false;absolute;unsupported=false;constructor(e,A,t){switch(super({}),this.pause(),this.extended=A,this.globalExtended=t,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case "File":case "OldFile":case "Link":case "SymbolicLink":case "CharacterDevice":case "BlockDevice":case "Directory":case "FIFO":case "ContiguousFile":case "GNUDumpDir":break;case "NextFileHasLongLinkpath":case "NextFileHasLongPath":case "OldGnuLongPath":case "GlobalExtendedHeader":case "ExtendedHeader":case "OldExtendedHeader":this.meta=true;break;default:this.ignore=true;}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=hA(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?hA(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,A&&this.#A(A),t&&this.#A(t,true);}write(e){let A=e.length;if(A>this.blockRemain)throw new Error("writing more to entry than is appropriate");let t=this.remain,i=this.blockRemain;return this.remain=Math.max(0,t-A),this.blockRemain=Math.max(0,i-A),this.ignore?true:t>=A?super.write(e):super.write(e.subarray(0,t))}#A(e,A=false){e.path&&(e.path=hA(e.path)),e.linkpath&&(e.linkpath=hA(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([t,i])=>!(i==null||t==="path"&&A))));}},VQ=(e,A,t,i={})=>{e.file&&(i.file=e.file),e.cwd&&(i.cwd=e.cwd),i.code=t instanceof Error&&t.code||A,i.tarCode=A,!e.strict&&i.recoverable!==false?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),e.emit("warn",A,t,i)):t instanceof Error?e.emit("error",Object.assign(t,i)):e.emit("error",Object.assign(new Error(`${A}: ${t}`),i));},Q_=1024*1024,xh=Buffer.from([31,139]),vh=Buffer.from([40,181,47,253]),E_=Math.max(xh.length,vh.length),Kt=Symbol("state"),dr=Symbol("writeEntry"),Vi=Symbol("readEntry"),fh=Symbol("nextEntry"),fN=Symbol("processEntry"),mi=Symbol("extendedHeader"),Hs=Symbol("globalExtendedHeader"),mg=Symbol("meta"),dN=Symbol("emitMeta"),OA=Symbol("buffer"),Zi=Symbol("queue"),Sg=Symbol("ended"),dh=Symbol("emittedEnd"),pr=Symbol("emit"),Ae=Symbol("unzip"),wQ=Symbol("consumeChunk"),yQ=Symbol("consumeChunkSub"),ph=Symbol("consumeBody"),pN=Symbol("consumeMeta"),wN=Symbol("consumeHeader"),Ys=Symbol("consuming"),wh=Symbol("bufferConcat"),FQ=Symbol("maybeEnd"),CI=Symbol("writing"),Si=Symbol("aborted"),mQ=Symbol("onDone"),wr=Symbol("sawValidEntry"),SQ=Symbol("sawNullBlock"),RQ=Symbol("sawEOF"),yN=Symbol("closeStream"),a_=1e3,Ts=Symbol("compressedBytesRead"),yh=Symbol("decompressedBytesRead"),FN=Symbol("checkDecompressionRatio"),u_=()=>true,gC=class extends sO.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;maxDecompressionRatio;writable=true;readable=false;[Zi]=[];[OA];[Vi];[dr];[Kt]="begin";[mg]="";[mi];[Hs];[Sg]=false;[Ae];[Si]=false;[wr];[SQ]=false;[RQ]=false;[CI]=false;[Ys]=false;[dh]=false;[Ts]=0;[yh]=0;constructor(e={}){super(),this.file=e.file||"",this.on(mQ,()=>{(this[Kt]==="begin"||this[wr]===false)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format");}),e.ondone?this.on(mQ,e.ondone):this.on(mQ,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end");}),this.strict=!!e.strict,this.maxDecompressionRatio=typeof e.maxDecompressionRatio=="number"?e.maxDecompressionRatio:a_,this.maxMetaEntrySize=e.maxMetaEntrySize||Q_,this.filter=typeof e.filter=="function"?e.filter:u_;let A=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:A?void 0:false;let t=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:t?true:void 0,this.on("end",()=>this[yN]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry);}warn(e,A,t={}){VQ(this,e,A,t);}[wN](e,A){this[wr]===void 0&&(this[wr]=false);let t;try{t=new Rr(e,A,this[mi],this[Hs]);}catch(i){return this.warn("TAR_ENTRY_INVALID",i)}if(t.nullBlock)this[SQ]?(this[RQ]=true,this[Kt]==="begin"&&(this[Kt]="header"),this[pr]("eof")):(this[SQ]=true,this[pr]("nullBlock"));else if(this[SQ]=false,!t.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:t});else if(!t.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:t});else {let i=t.type;if(/^(Symbolic)?Link$/.test(i)&&!t.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:t});else if(!/^(Symbolic)?Link$/.test(i)&&!/^(Global)?ExtendedHeader$/.test(i)&&t.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:t});else {let g=this[dr]=new B_(t,this[mi],this[Hs]);if(!this[wr])if(g.remain){let r=()=>{g.invalid||(this[wr]=true);};g.on("end",r);}else this[wr]=true;g.meta?g.size>this.maxMetaEntrySize?(g.ignore=true,this[pr]("ignoredEntry",g),this[Kt]="ignore",g.resume()):g.size>0&&(this[mg]="",g.on("data",r=>this[mg]+=r),this[Kt]="meta"):(this[mi]=void 0,g.ignore=g.ignore||!this.filter(g.path,g),g.ignore?(this[pr]("ignoredEntry",g),this[Kt]=g.remain?"ignore":"header",g.resume()):(g.remain?this[Kt]="body":(this[Kt]="header",g.end()),this[Vi]?this[Zi].push(g):(this[Zi].push(g),this[fh]())));}}}[yN](){queueMicrotask(()=>this.emit("close"));}[fN](e){let A=true;if(!e)this[Vi]=void 0,A=false;else if(Array.isArray(e)){let[t,...i]=e;this.emit(t,...i);}else this[Vi]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[fh]()),A=false);return A}[fh](){do;while(this[fN](this[Zi].shift()));if(this[Zi].length===0){let e=this[Vi];!e||e.flowing||e.size===e.remain?this[CI]||this.emit("drain"):e.once("drain",()=>this.emit("drain"));}}[ph](e,A){let t=this[dr];if(!t)throw new Error("attempt to consume body without entry??");let i=t.blockRemain??0,g=i>=e.length&&A===0?e:e.subarray(A,A+i);return t.write(g),t.blockRemain||(this[Kt]="header",this[dr]=void 0,t.end()),g.length}[pN](e,A){let t=this[dr],i=this[ph](e,A);return !this[dr]&&t&&this[dN](t),i}[pr](e,A,t){this[Zi].length===0&&!this[Vi]?this.emit(e,A,t):this[Zi].push([e,A,t]);}[dN](e){switch(this[pr]("meta",this[mg]),e.type){case "ExtendedHeader":case "OldExtendedHeader":this[mi]=TQ.parse(this[mg],this[mi],false);break;case "GlobalExtendedHeader":this[Hs]=TQ.parse(this[mg],this[Hs],true);break;case "NextFileHasLongPath":case "OldGnuLongPath":{let A=this[mi]??Object.create(null);this[mi]=A,A.path=this[mg].replace(/\0.*/,"");break}case "NextFileHasLongLinkpath":{let A=this[mi]||Object.create(null);this[mi]=A,A.linkpath=this[mg].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){if(!this[Si]){if(this[Ae]){let A=this[Ae];A.write=()=>true,A.end=()=>A,A.emit=()=>false,A.destroy?.();}this[Si]=true,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:false});}}[FN](e){this[yh]+=e.length;let A=this[yh]/this[Ts];return A>this.maxDecompressionRatio?(this.abort(new Error(`max decompression ratio exceeded: ${A.toFixed(2)} > ${this.maxDecompressionRatio}`)),false):true}write(e,A,t){if(typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof A=="string"?A:"utf8")),this[Si])return t?.(),false;if((this[Ae]===void 0||this.brotli===void 0&&this[Ae]===false)&&e){if(this[OA]&&(e=Buffer.concat([this[OA],e]),this[OA]=void 0),e.length<E_)return this[OA]=e,t?.(),true;for(let n=0;this[Ae]===void 0&&n<xh.length;n++)e[n]!==xh[n]&&(this[Ae]=false);let g=false;if(this[Ae]===false&&this.zstd!==false){g=true;for(let n=0;n<vh.length;n++)if(e[n]!==vh[n]){g=false;break}}let r=this.brotli===void 0&&!g;if(this[Ae]===false&&r)if(e.length<512)if(this[Sg])this.brotli=true;else return this[OA]=e,t?.(),true;else try{new Rr(e.subarray(0,512)),this.brotli=!1;}catch{this.brotli=true;}if(this[Ae]===void 0||this[Ae]===false&&(this.brotli||g)){let n=this[Sg];this[Sg]=false,this[Ae]=this[Ae]===void 0?new vO({}):g?new YO({}):new KO({}),this[Ae].on("data",o=>{this[FN](o)&&this[wQ](o);}),this[Ae].on("error",o=>{this[Si]||this.abort(o);}),this[Ae].on("end",()=>{this[Sg]=true,this[wQ]();}),this[CI]=true,this[Ts]+=e.length;let s=!!this[Ae][n?"end":"write"](e);return this[CI]=false,t?.(),s}}this[CI]=true,this[Ae]?(this[Ts]+=e.length,this[Ae].write(e)):this[wQ](e),this[CI]=false;let i=this[Zi].length>0?false:this[Vi]?this[Vi].flowing:true;return !i&&this[Zi].length===0&&this[Vi]?.once("drain",()=>this.emit("drain")),t?.(),i}[wh](e){e&&!this[Si]&&(this[OA]=this[OA]?Buffer.concat([this[OA],e]):e);}[FQ](){if(this[Sg]&&!this[dh]&&!this[Si]&&!this[Ys]){this[dh]=true;let e=this[dr];if(e?.blockRemain){let A=this[OA]?this[OA].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${A} available)`,{entry:e}),this[OA]&&e.write(this[OA]),e.end();}this[pr](mQ);}}[wQ](e){if(this[Ys]&&e)this[wh](e);else if(!e&&!this[OA])this[FQ]();else if(e){if(this[Ys]=true,this[OA]){this[wh](e);let A=this[OA];this[OA]=void 0,this[yQ](A);}else this[yQ](e);for(;this[OA]&&this[OA]?.length>=512&&!this[Si]&&!this[RQ];){let A=this[OA];this[OA]=void 0,this[yQ](A);}this[Ys]=false;}(!this[OA]||this[Sg])&&this[FQ]();}[yQ](e){let A=0,t=e.length;for(;A+512<=t&&!this[Si]&&!this[RQ];)switch(this[Kt]){case "begin":case "header":this[wN](e,A),A+=512;break;case "ignore":case "body":A+=this[ph](e,A);break;case "meta":A+=this[pN](e,A);break;default:throw new Error("invalid state: "+this[Kt])}A<t&&(this[OA]=this[OA]?Buffer.concat([e.subarray(A),this[OA]]):e.subarray(A));}end(e,A,t){return typeof e=="function"&&(t=e,A=void 0,e=void 0),typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,A)),t&&this.once("finish",t),this[Si]||(this[Ae]?(e&&(this[Ts]+=e.length,this[Ae].write(e)),this[Ae].end()):(this[Sg]=true,(this.brotli===void 0||this.zstd===void 0)&&(e=e||Buffer.alloc(0)),e&&this.write(e),this[FQ]())),this}},Xs=e=>{let A=e.length-1,t=-1;for(;A>-1&&e.charAt(A)==="/";)t=A,A--;return t===-1?e:e.slice(0,t)},c_=e=>{let A=e.onReadEntry;e.onReadEntry=A?t=>{A(t),t.resume();}:t=>t.resume();},nG=(e,A)=>{let t=new Map(A.map(r=>[Xs(r),true])),i=e.filter,g=(r,n="")=>{let s=n||ue.parse(r).root||".",o;if(r===s)o=false;else {let a=t.get(r);o=a!==void 0?a:g(ue.dirname(r),s);}return t.set(r,o),o};e.filter=i?(r,n)=>i(r,n)&&g(Xs(r)):r=>g(Xs(r));},l_=e=>{let A=new gC(e),t=e.file,i;try{i=RA__default.default.openSync(t,"r");let g=RA__default.default.fstatSync(i),r=e.maxReadSize||16*1024*1024;if(g.size<r){let n=Buffer.allocUnsafe(g.size),s=RA__default.default.readSync(i,n,0,g.size,0);A.end(s===n.byteLength?n:n.subarray(0,s));}else {let n=0,s=Buffer.allocUnsafe(r);for(;n<g.size;){let o=RA__default.default.readSync(i,s,0,r,n);if(o===0)break;n+=o,A.write(s.subarray(0,o));}A.end();}}finally{if(typeof i=="number")try{RA__default.default.closeSync(i);}catch{}}},h_=(e,A)=>{let t=new gC(e),i=e.maxReadSize||16*1024*1024,g=e.file;return new Promise((r,n)=>{t.on("error",n),t.on("end",r),RA__default.default.stat(g,(s,o)=>{if(s)n(s);else {let a=new eD(g,{readSize:i,size:o.size});a.on("error",n),a.pipe(t);}});})},ZQ=rC(l_,h_,e=>new gC(e),e=>new gC(e),(e,A)=>{A?.length&&nG(e,A),e.noResume||c_(e);}),IG=(e,A,t)=>(e&=4095,t&&(e=(e|384)&-19),A&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e),{isAbsolute:f_,parse:SN}=ue.win32,rD=e=>{let A="",t=SN(e);for(;f_(e)||t.root;){let i=e.charAt(0)==="/"&&e.slice(0,4)!=="//?/"?"/":t.root;e=e.slice(i.length),A+=i,t=SN(e);}return [A,e]},XQ=["|","<",">","?",":"],nD=XQ.map(e=>String.fromCodePoint(61440+Number(e.codePointAt(0)))),d_=new Map(XQ.map((e,A)=>[e,nD[A]])),p_=new Map(nD.map((e,A)=>[e,XQ[A]])),RN=e=>XQ.reduce((A,t)=>A.split(t).join(d_.get(t)),e),w_=e=>nD.reduce((A,t)=>A.split(t).join(p_.get(t)),e),sG=(e,A)=>A?(e=hA(e).replace(/^\.(\/|$)/,""),Xs(A)+"/"+e):hA(e),y_=16*1024*1024,kN=Symbol("process"),MN=Symbol("file"),NN=Symbol("directory"),Jh=Symbol("symlink"),GN=Symbol("hardlink"),Ps=Symbol("header"),bQ=Symbol("read"),Kh=Symbol("lstat"),LQ=Symbol("onlstat"),Hh=Symbol("onread"),Yh=Symbol("onreadlink"),Th=Symbol("openfile"),Ph=Symbol("onopenfile"),Gg=Symbol("close"),OQ=Symbol("mode"),Oh=Symbol("awaitDrain"),Fh=Symbol("ondrain"),ki=Symbol("prefix"),CG=class extends kr{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#A=false;constructor(e,A={}){let t=tD(A);super(),this.path=hA(e),this.portable=!!t.portable,this.maxReadSize=t.maxReadSize||y_,this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.preservePaths=!!t.preservePaths,this.cwd=hA(t.cwd||process.cwd()),this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.mtime=t.mtime,this.prefix=t.prefix?hA(t.prefix):void 0,this.onWriteEntry=t.onWriteEntry,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let i=false;if(!this.preservePaths){let[r,n]=rD(this.path);r&&typeof n=="string"&&(this.path=n,i=r);}this.win32=!!t.win32||process.platform==="win32",this.win32&&(this.path=w_(this.path.replaceAll(/\\/g,"/")),e=e.replaceAll(/\\/g,"/")),this.absolute=hA(t.absolute||ue__default.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path});let g=this.statCache.get(this.absolute);g?this[LQ](g):this[Kh]();}warn(e,A,t={}){return VQ(this,e,A,t)}emit(e,...A){return e==="error"&&(this.#A=true),super.emit(e,...A)}[Kh](){RA__default.default.lstat(this.absolute,(e,A)=>{if(e)return this.emit("error",e);this[LQ](A);});}[LQ](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=S_(e),this.emit("stat",e),this[kN]();}[kN](){switch(this.type){case "File":return this[MN]();case "Directory":return this[NN]();case "SymbolicLink":return this[Jh]();default:return this.end()}}[OQ](e){return IG(e,this.type==="Directory",this.portable)}[ki](e){return sG(e,this.prefix)}[Ps](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=true),this.onWriteEntry?.(this),this.header=new Rr({path:this[ki](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ki](this.linkpath):this.linkpath,mode:this[OQ](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new TQ({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ki](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ki](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e);}[NN](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Ps](),this.end();}[Jh](){RA__default.default.readlink(this.absolute,(e,A)=>{if(e)return this.emit("error",e);this[Yh](A);});}[Yh](e){this.linkpath=hA(e),this[Ps](),this.end();}[GN](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=hA(ue__default.default.relative(this.cwd,e)),this.stat.size=0,this[Ps](),this.end();}[MN](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,A=this.linkCache.get(e);if(A?.indexOf(this.cwd)===0)return this[GN](A);this.linkCache.set(e,this.absolute);}if(this[Ps](),this.stat.size===0)return this.end();this[Th]();}[Th](){RA__default.default.open(this.absolute,"r",(e,A)=>{if(e)return this.emit("error",e);this[Ph](A);});}[Ph](e){if(this.fd=e,this.#A)return this[Gg]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let A=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(A),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[bQ]();}[bQ](){let{fd:e,buf:A,offset:t,length:i,pos:g}=this;if(e===void 0||A===void 0)throw new Error("cannot read file without first opening");RA__default.default.read(e,A,t,i,g,(r,n)=>{if(r)return this[Gg](()=>this.emit("error",r));this[Hh](n);});}[Gg](e=()=>{}){this.fd!==void 0&&RA__default.default.close(this.fd,e);}[Hh](e){if(e<=0&&this.remain>0){let t=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[Gg](()=>this.emit("error",t))}if(e>this.remain){let t=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[Gg](()=>this.emit("error",t))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let t=e;t<this.length&&e<this.blockRemain;t++)this.buf[t+this.offset]=0,e++,this.remain++;let A=this.offset===0&&e===this.buf.length?this.buf:this.buf.subarray(this.offset,this.offset+e);this.write(A)?this[Fh]():this[Oh](()=>this[Fh]());}[Oh](e){this.once("drain",e);}write(e,A,t){if(typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof A=="string"?A:"utf8")),this.blockRemain<e.length){let i=Object.assign(new Error("writing more data than expected"),{path:this.absolute});return this.emit("error",i)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e,null,t)}[Fh](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[Gg](e=>e?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[bQ]();}},F_=class extends CG{sync=true;[Kh](){this[LQ](RA__default.default.lstatSync(this.absolute));}[Jh](){this[Yh](RA__default.default.readlinkSync(this.absolute));}[Th](){this[Ph](RA__default.default.openSync(this.absolute,"r"));}[bQ](){let e=true;try{let{fd:A,buf:t,offset:i,length:g,pos:r}=this;if(A===void 0||t===void 0)throw new Error("fd and buf must be set in READ method");let n=RA__default.default.readSync(A,t,i,g,r);this[Hh](n),e=!1;}finally{if(e)try{this[Gg](()=>{});}catch{}}}[Oh](e){e();}[Gg](e=()=>{}){this.fd!==void 0&&RA__default.default.closeSync(this.fd),e();}},m_=class extends kr{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,A,t={}){return VQ(this,e,A,t)}constructor(e,A={}){let t=tD(A);super(),this.preservePaths=!!t.preservePaths,this.portable=!!t.portable,this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.onWriteEntry=t.onWriteEntry,this.readEntry=e;let{type:i}=e;if(i==="Unsupported")throw new Error("writing entry that should be ignored");this.type=i,this.type==="Directory"&&this.portable&&(this.noMtime=true),this.prefix=t.prefix,this.path=hA(e.path),this.mode=e.mode!==void 0?this[OQ](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:t.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?hA(e.linkpath):void 0,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let g=false;if(!this.preservePaths){let[n,s]=rD(this.path);n&&typeof s=="string"&&(this.path=s,g=n);}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new Rr({path:this[ki](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ki](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),g&&this.warn("TAR_ENTRY_INFO",`stripping ${g} from absolute path`,{entry:this,path:g+this.path}),this.header.encode()&&!this.noPax&&super.write(new TQ({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ki](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ki](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let r=this.header?.block;if(!r)throw new Error("failed to encode header");super.write(r),e.pipe(this);}[ki](e){return sG(e,this.prefix)}[OQ](e){return IG(e,this.type==="Directory",this.portable)}write(e,A,t){typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof A=="string"?A:"utf8"));let i=e.length;if(i>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=i,super.write(e,t)}end(e,A,t){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(t=e,A=void 0,e=void 0),typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,A??"utf8")),t&&this.once("finish",t),e?super.end(e,t):super.end(t),this}},S_=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported",R_=class cI{tail;head;length=0;static create(A=[]){return new cI(A)}constructor(A=[]){for(let t of A)this.push(t);}*[Symbol.iterator](){for(let A=this.head;A;A=A.next)yield A.value;}removeNode(A){if(A.list!==this)throw new Error("removing node which does not belong to this list");let t=A.next,i=A.prev;return t&&(t.prev=i),i&&(i.next=t),A===this.head&&(this.head=t),A===this.tail&&(this.tail=i),this.length--,A.next=void 0,A.prev=void 0,A.list=void 0,t}unshiftNode(A){if(A===this.head)return;A.list&&A.list.removeNode(A);let t=this.head;A.list=this,A.next=t,t&&(t.prev=A),this.head=A,this.tail||(this.tail=A),this.length++;}pushNode(A){if(A===this.tail)return;A.list&&A.list.removeNode(A);let t=this.tail;A.list=this,A.prev=t,t&&(t.next=A),this.tail=A,this.head||(this.head=A),this.length++;}push(...A){for(let t=0,i=A.length;t<i;t++)M_(this,A[t]);return this.length}unshift(...A){for(var t=0,i=A.length;t<i;t++)N_(this,A[t]);return this.length}pop(){if(!this.tail)return;let A=this.tail.value,t=this.tail;return this.tail=this.tail.prev,this.tail?this.tail.next=void 0:this.head=void 0,t.list=void 0,this.length--,A}shift(){if(!this.head)return;let A=this.head.value,t=this.head;return this.head=this.head.next,this.head?this.head.prev=void 0:this.tail=void 0,t.list=void 0,this.length--,A}forEach(A,t){t=t||this;for(let i=this.head,g=0;i;g++)A.call(t,i.value,g,this),i=i.next;}forEachReverse(A,t){t=t||this;for(let i=this.tail,g=this.length-1;i;g--)A.call(t,i.value,g,this),i=i.prev;}get(A){let t=0,i=this.head;for(;i&&t<A;t++)i=i.next;if(t===A&&i)return i.value}getReverse(A){let t=0,i=this.tail;for(;i&&t<A;t++)i=i.prev;if(t===A&&i)return i.value}map(A,t){t=t||this;let i=new cI;for(let g=this.head;g;)i.push(A.call(t,g.value,this)),g=g.next;return i}mapReverse(A,t){t=t||this;var i=new cI;for(let g=this.tail;g;)i.push(A.call(t,g.value,this)),g=g.prev;return i}reduce(A,t){let i,g=this.head;if(arguments.length>1)i=t;else if(this.head)g=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var r=0;g;r++)i=A(i,g.value,r),g=g.next;return i}reduceReverse(A,t){let i,g=this.tail;if(arguments.length>1)i=t;else if(this.tail)g=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let r=this.length-1;g;r--)i=A(i,g.value,r),g=g.prev;return i}toArray(){let A=new Array(this.length);for(let t=0,i=this.head;i;t++)A[t]=i.value,i=i.next;return A}toArrayReverse(){let A=new Array(this.length);for(let t=0,i=this.tail;i;t++)A[t]=i.value,i=i.prev;return A}slice(A=0,t=this.length){t<0&&(t+=this.length),A<0&&(A+=this.length);let i=new cI;if(t<A||t<0)return i;A<0&&(A=0),t>this.length&&(t=this.length);let g=this.head,r=0;for(r=0;g&&r<A;r++)g=g.next;for(;g&&r<t;r++,g=g.next)i.push(g.value);return i}sliceReverse(A=0,t=this.length){t<0&&(t+=this.length),A<0&&(A+=this.length);let i=new cI;if(t<A||t<0)return i;A<0&&(A=0),t>this.length&&(t=this.length);let g=this.length,r=this.tail;for(;r&&g>t;g--)r=r.prev;for(;r&&g>A;g--,r=r.prev)i.push(r.value);return i}splice(A,t=0,...i){A>this.length&&(A=this.length-1),A<0&&(A=this.length+A);let g=this.head;for(let n=0;g&&n<A;n++)g=g.next;let r=[];for(let n=0;g&&n<t;n++)r.push(g.value),g=this.removeNode(g);g?g!==this.tail&&(g=g.prev):g=this.tail;for(let n of i)g=k_(this,g,n);return r}reverse(){let A=this.head,t=this.tail;for(let i=A;i;i=i.prev){let g=i.prev;i.prev=i.next,i.next=g;}return this.head=t,this.tail=A,this}};function k_(e,A,t){let i=A,g=A?A.next:e.head,r=new ID(t,i,g,e);return r.next===void 0&&(e.tail=r),r.prev===void 0&&(e.head=r),e.length++,r}function M_(e,A){e.tail=new ID(A,e.tail,void 0,e),e.head||(e.head=e.tail),e.length++;}function N_(e,A){e.head=new ID(A,void 0,e.head,e),e.tail||(e.tail=e.head),e.length++;}var ID=class{list;next;prev;value;constructor(e,A,t,i){this.list=i,this.value=e,A?(A.next=this,this.prev=A):this.prev=void 0,t?(t.prev=this,this.next=t):this.next=void 0;}},bN=class{path;absolute;entry;stat;readdir;pending=false;pendingLink=false;ignore=false;piped=false;constructor(e,A){this.path=e||"./",this.absolute=A;}},LN=Buffer.alloc(1024),xQ=Symbol("onStat"),Os=Symbol("ended"),Ai=Symbol("queue"),_s=Symbol("pendingLinks"),Rg=Symbol("current"),yr=Symbol("process"),qs=Symbol("processing"),kQ=Symbol("processJob"),ei=Symbol("jobs"),mh=Symbol("jobDone"),vQ=Symbol("addFSEntry"),xN=Symbol("addTarEntry"),_h=Symbol("stat"),qh=Symbol("readdir"),JQ=Symbol("onreaddir"),KQ=Symbol("pipe"),vN=Symbol("entry"),Sh=Symbol("entryOpt"),HQ=Symbol("writeEntryClass"),oG=Symbol("write"),Rh=Symbol("ondrain"),zQ=class extends kr{sync=false;opt;cwd;maxReadSize;preservePaths;strict;noPax;prefix;linkCache;statCache;file;portable;zip;readdirCache;noDirRecurse;follow;noMtime;mtime;filter;jobs;[HQ];onWriteEntry;[Ai];[_s]=new Map;[ei]=0;[qs]=false;[Os]=false;constructor(e={}){if(super(),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=hA(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this.onWriteEntry=e.onWriteEntry,this[HQ]=CG,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,e.gzip||e.brotli||e.zstd){if((e.gzip?1:0)+(e.brotli?1:0)+(e.zstd?1:0)>1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=true),this.zip=new xO(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new JO(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new HO(e.zstd)),!this.zip)throw new Error("impossible");let A=this.zip;A.on("data",t=>super.write(t)),A.on("end",()=>super.end()),A.on("drain",()=>this[Rh]()),this.on("resume",()=>A.resume());}else this.on("drain",this[Rh]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>true,this[Ai]=new R_,this[ei]=0,this.jobs=Number(e.jobs)||4,this[qs]=false,this[Os]=false;}[oG](e){return super.write(e)}add(e){return this.write(e),this}end(e,A,t){return typeof e=="function"&&(t=e,e=void 0),typeof A=="function"&&(t=A,A=void 0),e&&this.add(e),this[Os]=true,this[yr](),t&&t(),this}write(e){if(this[Os])throw new Error("write after end");return typeof e=="string"?this[vQ](e):this[xN](e),this.flowing}[xN](e){let A=hA(ue__default.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else {let t=new bN(e.path,A);t.entry=new m_(e,this[Sh](t)),t.entry.on("end",()=>this[mh](t)),this[ei]+=1,this[Ai].push(t);}this[yr]();}[vQ](e){let A=hA(ue__default.default.resolve(this.cwd,e));this[Ai].push(new bN(e,A)),this[yr]();}[_h](e){e.pending=true,this[ei]+=1;let A=this.follow?"stat":"lstat";RA__default.default[A](e.absolute,(t,i)=>{e.pending=false,this[ei]-=1,t?this.emit("error",t):this[xQ](e,i);});}[xQ](e,A){if(this.statCache.set(e.absolute,A),e.stat=A,!this.filter(e.path,A))e.ignore=true;else if(A.isFile()&&A.nlink>1&&!this.linkCache.get(`${A.dev}:${A.ino}`)&&!this.sync)if(e===this[Rg])this[kQ](e);else {let t=`${A.dev}:${A.ino}`,i=this[_s].get(t);i?i.push(e):this[_s].set(t,[e]),e.pendingLink=true,e.pending=true;}this[yr]();}[qh](e){e.pending=true,this[ei]+=1,RA__default.default.readdir(e.absolute,(A,t)=>{if(e.pending=false,this[ei]-=1,A)return this.emit("error",A);this[JQ](e,t);});}[JQ](e,A){this.readdirCache.set(e.absolute,A),e.readdir=A,this[yr]();}[yr](){if(!this[qs]){this[qs]=true;for(let e=this[Ai].head;e&&this[ei]<this.jobs;e=e.next)if(this[kQ](e.value),e.value.ignore){let A=e.next;this[Ai].removeNode(e),e.next=A;}this[qs]=false,this[Os]&&this[Ai].length===0&&this[ei]===0&&(this.zip?this.zip.end(LN):(super.write(LN),super.end()));}}get[Rg](){return this[Ai]&&this[Ai].head&&this[Ai].head.value}[mh](e){this[Ai].shift(),this[ei]-=1;let{stat:A}=e;if(A&&A.isFile()&&A.nlink>1){let t=`${A.dev}:${A.ino}`,i=this[_s].get(t);if(i){this[_s].delete(t);for(let g of i)g.pending=false,this[kQ](g);}}this[yr]();}[kQ](e){if(e.pending&&e.pendingLink&&e===this[Rg]&&(e.pending=false,e.pendingLink=false),!e.pending){if(e.entry){e===this[Rg]&&!e.piped&&this[KQ](e);return}if(!e.stat){let A=this.statCache.get(e.absolute);A?this[xQ](e,A):this[_h](e);}if(e.stat&&!e.ignore){if(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir){let A=this.readdirCache.get(e.absolute);if(A?this[JQ](e,A):this[qh](e),!e.readdir)return}if(e.entry=this[vN](e),!e.entry){e.ignore=true;return}e===this[Rg]&&!e.piped&&this[KQ](e);}}}[Sh](e){return {onwarn:(A,t,i)=>this.warn(A,t,i),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[vN](e){this[ei]+=1;try{return new this[HQ](e.path,this[Sh](e)).on("end",()=>this[mh](e)).on("error",A=>this.emit("error",A))}catch(A){this.emit("error",A);}}[Rh](){this[Rg]&&this[Rg].entry&&this[Rg].entry.resume();}[KQ](e){e.piped=true,e.readdir&&e.readdir.forEach(i=>{let g=e.path,r=g==="./"?"":g.replace(/\/*$/,"/");this[vQ](r+i);});let A=e.entry,t=this.zip;if(!A)throw new Error("cannot pipe without source");t?A.on("data",i=>{t.write(i)||A.pause();}):A.on("data",i=>{super.write(i)||A.pause();});}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,A,t={}){VQ(this,e,A,t);}},sD=class extends zQ{sync=true;constructor(e){super(e),this[HQ]=F_;}pause(){}resume(){}[_h](e){let A=this.follow?"statSync":"lstatSync";this[xQ](e,RA__default.default[A](e.absolute));}[qh](e){this[JQ](e,RA__default.default.readdirSync(e.absolute));}[KQ](e){let A=e.entry,t=this.zip;if(e.readdir&&e.readdir.forEach(i=>{let g=e.path,r=g==="./"?"":g.replace(/\/*$/,"/");this[vQ](r+i);}),!A)throw new Error("Cannot pipe without source");t?A.on("data",i=>{t.write(i);}):A.on("data",i=>{super[oG](i);});}},G_=(e,A)=>{let t=new sD(e),i=new XN(e.file,{mode:e.mode||438});t.pipe(i),BG(t,A);},U_=(e,A)=>{let t=new zQ(e),i=new WQ(e.file,{mode:e.mode||438});t.pipe(i);let g=new Promise((r,n)=>{i.on("error",n),i.on("close",r),t.on("error",n);});return QG(t,A).catch(r=>t.emit("error",r)),g},BG=(e,A)=>{A.forEach(t=>{t.charAt(0)==="@"?ZQ({file:ue__default.default.resolve(e.cwd,t.slice(1)),sync:true,noResume:true,onReadEntry:i=>e.add(i)}):e.add(t);}),e.end();},QG=async(e,A)=>{for(let t of A)t.charAt(0)==="@"?await ZQ({file:ue__default.default.resolve(String(e.cwd),t.slice(1)),noResume:true,onReadEntry:i=>{e.add(i);}}):e.add(t);e.end();},b_=(e,A)=>{let t=new sD(e);return BG(t,A),t},L_=(e,A)=>{let t=new zQ(e);return QG(t,A).catch(i=>t.emit("error",i)),t},$Q=rC(G_,U_,b_,L_,(e,A)=>{if(!A?.length)throw new TypeError("no paths specified to add to archive")}),v_=process.env.__FAKE_PLATFORM__||process.platform,cG=v_==="win32",{O_CREAT:lG,O_NOFOLLOW:JN,O_TRUNC:hG,O_WRONLY:DG}=RA__default.default.constants,fG=Number(process.env.__FAKE_FS_O_FILENAME__)||RA__default.default.constants.UV_FS_O_FILEMAP||0,J_=cG&&!!fG,K_=512*1024,H_=fG|hG|lG|DG,KN=!cG&&typeof JN=="number"?JN|hG|lG|DG:null,dG=KN!==null?()=>KN:J_?e=>e<K_?H_:"w":()=>"w",Wh=(e,A,t)=>{try{return RA__default.default.lchownSync(e,A,t)}catch(i){if(i?.code!=="ENOENT")throw i}},_Q=(e,A,t,i)=>{RA__default.default.lchown(e,A,t,g=>{i(g&&g?.code!=="ENOENT"?g:null);});},Y_=(e,A,t,i,g)=>{if(A.isDirectory())pG(ue__default.default.resolve(e,A.name),t,i,r=>{if(r)return g(r);let n=ue__default.default.resolve(e,A.name);_Q(n,t,i,g);});else {let r=ue__default.default.resolve(e,A.name);_Q(r,t,i,g);}},pG=(e,A,t,i)=>{RA__default.default.readdir(e,{withFileTypes:true},(g,r)=>{if(g){if(g.code==="ENOENT")return i();if(g.code!=="ENOTDIR"&&g.code!=="ENOTSUP")return i(g)}if(g||!r.length)return _Q(e,A,t,i);let n=r.length,s=null,o=a=>{if(!s){if(a)return i(s=a);if(--n===0)return _Q(e,A,t,i)}};for(let a of r)Y_(e,a,A,t,o);});},T_=(e,A,t,i)=>{A.isDirectory()&&wG(ue__default.default.resolve(e,A.name),t,i),Wh(ue__default.default.resolve(e,A.name),t,i);},wG=(e,A,t)=>{let i;try{i=RA__default.default.readdirSync(e,{withFileTypes:!0});}catch(g){let r=g;if(r?.code==="ENOENT")return;if(r?.code==="ENOTDIR"||r?.code==="ENOTSUP")return Wh(e,A,t);throw r}for(let g of i)T_(e,g,A,t);return Wh(e,A,t)},yG=class extends Error{path;code;syscall="chdir";constructor(e,A){super(`${A}: Cannot cd into '${e}'`),this.path=e,this.code=A;}get name(){return "CwdError"}},eE=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,A){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=A;}get name(){return "SymlinkError"}},O_=(e,A)=>{RA__default.default.stat(e,(t,i)=>{(t||!i.isDirectory())&&(t=new yG(e,t?.code||"ENOTDIR")),A(t);});},__=(e,A,t)=>{e=hA(e);let i=A.umask??18,g=A.mode|448,r=(g&i)!==0,n=A.uid,s=A.gid,o=typeof n=="number"&&typeof s=="number"&&(n!==A.processUid||s!==A.processGid),a=A.preserve,B=A.unlink,u=hA(A.cwd),Q=(C,E)=>{C?t(C):E&&o?pG(E,n,s,c=>Q(c)):r?RA__default.default.chmod(e,g,t):t();};if(e===u)return O_(e,Q);if(a)return P___default.default.mkdir(e,{mode:g,recursive:true}).then(C=>Q(null,C??void 0),Q);let I=hA(ue__default.default.relative(u,e)).split("/");jh(u,I,g,B,u,void 0,Q);},jh=(e,A,t,i,g,r,n)=>{if(A.length===0)return n(null,r);let s=A.shift(),o=hA(ue__default.default.resolve(e+"/"+s));RA__default.default.mkdir(o,t,FG(o,A,t,i,g,r,n));},FG=(e,A,t,i,g,r,n)=>s=>{s?RA__default.default.lstat(e,(o,a)=>{if(o)o.path=o.path&&hA(o.path),n(o);else if(a.isDirectory())jh(e,A,t,i,g,r,n);else if(i)RA__default.default.unlink(e,B=>{if(B)return n(B);RA__default.default.mkdir(e,t,FG(e,A,t,i,g,r,n));});else {if(a.isSymbolicLink())return n(new eE(e,e+"/"+A.join("/")));n(s);}}):(r=r||e,jh(e,A,t,i,g,r,n));},q_=e=>{let A=false,t;try{A=RA__default.default.statSync(e).isDirectory();}catch(i){t=i?.code;}finally{if(!A)throw new yG(e,t??"ENOTDIR")}},W_=(e,A)=>{e=hA(e);let t=A.umask??18,i=A.mode|448,g=(i&t)!==0,r=A.uid,n=A.gid,s=typeof r=="number"&&typeof n=="number"&&(r!==A.processUid||n!==A.processGid),o=A.preserve,a=A.unlink,B=hA(A.cwd),u=C=>{C&&s&&wG(C,r,n),g&&RA__default.default.chmodSync(e,i);};if(e===B)return q_(B),u();if(o)return u(RA__default.default.mkdirSync(e,{mode:i,recursive:true})??void 0);let Q=hA(ue__default.default.relative(B,e)).split("/"),I;for(let C=Q.shift(),E=B;C&&(E+="/"+C);C=Q.shift()){E=hA(ue__default.default.resolve(E));try{RA__default.default.mkdirSync(E,i),I=I||E;}catch{let c=RA__default.default.lstatSync(E);if(c.isDirectory())continue;if(a){RA__default.default.unlinkSync(E),RA__default.default.mkdirSync(E,i),I=I||E;continue}else if(c.isSymbolicLink())return new eE(E,E+"/"+Q.join("/"))}}return u(I)},kh=Object.create(null),HN=1e4,oI=new Set,j_=e=>{oI.has(e)?oI.delete(e):kh[e]=e.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),oI.add(e);let A=kh[e],t=oI.size-HN;if(t>HN/10){for(let i of oI)if(oI.delete(i),delete kh[i],--t<=0)break}return A},V_=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Z_=V_==="win32",X_=e=>e.split("/").slice(0,-1).reduce((A,t)=>{let i=A.at(-1);return i!==void 0&&(t=ue.join(i,t)),A.push(t||"/"),A},[]),z_=class{#A=new Map;#t=new Map;#e=new Set;reserve(e,A){e=Z_?["win32 parallelization disabled"]:e.map(i=>Xs(ue.join(j_(i))));let t=new Set(e.map(i=>X_(i)).reduce((i,g)=>i.concat(g)));this.#t.set(A,{dirs:t,paths:e});for(let i of e){let g=this.#A.get(i);g?g.push(A):this.#A.set(i,[A]);}for(let i of t){let g=this.#A.get(i);if(!g)this.#A.set(i,[new Set([A])]);else {let r=g.at(-1);r instanceof Set?r.add(A):g.push(new Set([A]));}}return this.#r(A)}#n(e){let A=this.#t.get(e);if(!A)throw new Error("function does not have any path reservations");return {paths:A.paths.map(t=>this.#A.get(t)),dirs:[...A.dirs].map(t=>this.#A.get(t))}}check(e){let{paths:A,dirs:t}=this.#n(e);return A.every(i=>i&&i[0]===e)&&t.every(i=>i&&i[0]instanceof Set&&i[0].has(e))}#r(e){return this.#e.has(e)||!this.check(e)?false:(this.#e.add(e),e(()=>this.#i(e)),true)}#i(e){if(!this.#e.has(e))return false;let A=this.#t.get(e);if(!A)throw new Error("invalid reservation");let{paths:t,dirs:i}=A,g=new Set;for(let r of t){let n=this.#A.get(r);if(!n||n?.[0]!==e)continue;let s=n[1];if(!s){this.#A.delete(r);continue}if(n.shift(),typeof s=="function")g.add(s);else for(let o of s)g.add(o);}for(let r of i){let n=this.#A.get(r),s=n?.[0];if(!(!n||!(s instanceof Set)))if(s.size===1&&n.length===1){this.#A.delete(r);continue}else if(s.size===1){n.shift();let o=n[0];typeof o=="function"&&g.add(o);}else s.delete(e);}return this.#e.delete(e),g.forEach(r=>this.#r(r)),true}},$_=()=>process.umask(),YN=Symbol("onEntry"),Vh=Symbol("checkFs"),TN=Symbol("checkFs2"),Zh=Symbol("isReusable"),Ht=Symbol("makeFs"),Xh=Symbol("file"),zh=Symbol("directory"),YQ=Symbol("link"),PN=Symbol("symlink"),ON=Symbol("hardlink"),Vs=Symbol("ensureNoSymlink"),_N=Symbol("unsupported"),qN=Symbol("checkPath"),Mh=Symbol("stripAbsolutePath"),Ug=Symbol("mkdir"),me=Symbol("onError"),MQ=Symbol("pending"),WN=Symbol("pend"),BI=Symbol("unpend"),Nh=Symbol("ended"),Gh=Symbol("maybeClose"),$h=Symbol("skip"),$s=Symbol("doChown"),AC=Symbol("uid"),eC=Symbol("gid"),tC=Symbol("checkedCwd"),Aq=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,iC=Aq==="win32",eq=1024,tq=(e,A)=>{if(!iC)return RA__default.default.unlink(e,A);let t=e+".DELETE."+crypto.randomBytes(16).toString("hex");RA__default.default.rename(e,t,i=>{if(i)return A(i);RA__default.default.unlink(t,A);});},iq=e=>{if(!iC)return RA__default.default.unlinkSync(e);let A=e+".DELETE."+crypto.randomBytes(16).toString("hex");RA__default.default.renameSync(e,A),RA__default.default.unlinkSync(A);},jN=(e,A,t)=>e!==void 0&&e===e>>>0?e:A!==void 0&&A===A>>>0?A:t,CD=class extends gC{[Nh]=false;[tC]=false;[MQ]=0;reservations=new z_;transform;writable=true;readable=false;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[Nh]=true,this[Gh]();},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=true;}else this.uid=void 0,this.gid=void 0,this.setOwner=false;this.preserveOwner=e.preserveOwner===void 0&&typeof e.uid!="number"?process.getuid?.()===0:!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:eq,this.forceChown=e.forceChown===true,this.win32=!!e.win32||iC,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=hA(ue__default.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:$_():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",A=>this[YN](A));}warn(e,A,t={}){return (e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(t.recoverable=false),super.warn(e,A,t)}[Gh](){this[Nh]&&this[MQ]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"));}[Mh](e,A){let t=e[A],{type:i}=e;if(!t||this.preservePaths)return true;let[g,r]=rD(t),n=r.replaceAll(/\\/g,"/").split("/");if(n.includes("..")||iC&&/^[a-z]:\.\.$/i.test(n[0]??"")){if(A==="path"||i==="Link")return this.warn("TAR_ENTRY_ERROR",`${A} contains '..'`,{entry:e,[A]:t}),false;let s=ue__default.default.posix.dirname(e.path),o=ue__default.default.posix.normalize(ue__default.default.posix.join(s,n.join("/")));if(o.startsWith("../")||o==="..")return this.warn("TAR_ENTRY_ERROR",`${A} escapes extraction directory`,{entry:e,[A]:t}),false}return g&&(e[A]=String(r),this.warn("TAR_ENTRY_INFO",`stripping ${g} from absolute ${A}`,{entry:e,[A]:t})),true}[qN](e){let A=hA(e.path),t=A.split("/");if(this.strip){if(t.length<this.strip)return false;if(e.type==="Link"){let i=hA(String(e.linkpath)).split("/");if(i.length>=this.strip)e.linkpath=i.slice(this.strip).join("/");else return false}t.splice(0,this.strip),e.path=t.join("/");}if(isFinite(this.maxDepth)&&t.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:A,depth:t.length,maxDepth:this.maxDepth}),false;if(!this[Mh](e,"path")||!this[Mh](e,"linkpath"))return false;if(e.absolute=ue__default.default.isAbsolute(e.path)?hA(ue__default.default.resolve(e.path)):hA(ue__default.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:hA(e.path),resolvedPath:e.absolute,cwd:this.cwd}),false;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return false;if(this.win32){let{root:i}=ue__default.default.win32.parse(String(e.absolute));e.absolute=i+RN(String(e.absolute).slice(i.length));let{root:g}=ue__default.default.win32.parse(e.path);e.path=g+RN(e.path.slice(g.length));}return true}[YN](e){if(!this[qN](e))return e.resume();switch(Lh__default.default.equal(typeof e.absolute,"string"),e.type){case "Directory":case "GNUDumpDir":e.mode&&(e.mode=e.mode|448);case "File":case "OldFile":case "ContiguousFile":case "Link":case "SymbolicLink":return this[Vh](e);default:return this[_N](e)}}[me](e,A){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:A}),this[BI](),A.resume());}[Ug](e,A,t){__(hA(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:A},t);}[$s](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[AC](e){return jN(this.uid,e.uid,this.processUid)}[eC](e){return jN(this.gid,e.gid,this.processGid)}[Xh](e,A){let t=typeof e.mode=="number"?e.mode&4095:this.fmode,i=new WQ(String(e.absolute),{flags:dG(e.size),mode:t,autoClose:false});i.on("error",s=>{i.fd&&RA__default.default.close(i.fd,()=>{}),i.write=()=>true,this[me](s,e),A();});let g=1,r=s=>{if(s){i.fd&&RA__default.default.close(i.fd,()=>{}),this[me](s,e),A();return}--g===0&&i.fd!==void 0&&RA__default.default.close(i.fd,o=>{o?this[me](o,e):this[BI](),A();});};i.on("finish",()=>{let s=String(e.absolute),o=i.fd;if(typeof o=="number"&&e.mtime&&!this.noMtime){g++;let a=e.atime||new Date,B=e.mtime;RA__default.default.futimes(o,a,B,u=>u?RA__default.default.utimes(s,a,B,Q=>r(Q&&u)):r());}if(typeof o=="number"&&this[$s](e)){g++;let a=this[AC](e),B=this[eC](e);typeof a=="number"&&typeof B=="number"&&RA__default.default.fchown(o,a,B,u=>u?RA__default.default.chown(s,a,B,Q=>r(Q&&u)):r());}r();});let n=this.transform&&this.transform(e)||e;n!==e&&(n.on("error",s=>{this[me](s,e),A();}),e.pipe(n)),n.pipe(i);}[zh](e,A){let t=typeof e.mode=="number"?e.mode&4095:this.dmode;this[Ug](String(e.absolute),t,i=>{if(i){this[me](i,e),A();return}let g=1,r=()=>{--g===0&&(A(),this[BI](),e.resume());};e.mtime&&!this.noMtime&&(g++,RA__default.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,r)),this[$s](e)&&(g++,RA__default.default.chown(String(e.absolute),Number(this[AC](e)),Number(this[eC](e)),r)),r();});}[_N](e){e.unsupported=true,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume();}[PN](e,A){let t=hA(ue__default.default.relative(this.cwd,ue__default.default.resolve(ue__default.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Vs](e,this.cwd,t,()=>this[YQ](e,String(e.linkpath),"symlink",A),i=>{this[me](i,e),A();});}[ON](e,A){let t=hA(ue__default.default.resolve(this.cwd,String(e.linkpath))),i=hA(String(e.linkpath)).split("/");this[Vs](e,this.cwd,i,()=>this[YQ](e,t,"link",A),g=>{this[me](g,e),A();});}[Vs](e,A,t,i,g){let r=t.shift();if(this.preservePaths||r===void 0)return i();let n=ue__default.default.resolve(A,r);RA__default.default.lstat(n,(s,o)=>{if(s)return i();if(o?.isSymbolicLink())return g(new eE(n,ue__default.default.resolve(n,t.join("/"))));this[Vs](e,n,t,i,g);});}[WN](){this[MQ]++;}[BI](){this[MQ]--,this[Gh]();}[$h](e){this[BI](),e.resume();}[Zh](e,A){return e.type==="File"&&!this.unlink&&A.isFile()&&A.nlink<=1&&!iC}[Vh](e){this[WN]();let A=[e.path];e.linkpath&&A.push(e.linkpath),this.reservations.reserve(A,t=>this[TN](e,t));}[TN](e,A){let t=n=>{A(n);},i=()=>{this[Ug](this.cwd,this.dmode,n=>{if(n){this[me](n,e),t();return}this[tC]=true,g();});},g=()=>{if(e.absolute!==this.cwd){let n=hA(ue__default.default.dirname(String(e.absolute)));if(n!==this.cwd)return this[Ug](n,this.dmode,s=>{if(s){this[me](s,e),t();return}r();})}r();},r=()=>{RA__default.default.lstat(String(e.absolute),(n,s)=>{if(s&&(this.keep||this.newer&&s.mtime>(e.mtime??s.mtime))){this[$h](e),t();return}if(n||this[Zh](e,s))return this[Ht](null,e,t);if(s.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(s.mode&4095)!==e.mode,a=B=>this[Ht](B??null,e,t);return o?RA__default.default.chmod(String(e.absolute),Number(e.mode),a):a()}if(e.absolute!==this.cwd)return RA__default.default.rmdir(String(e.absolute),o=>this[Ht](o??null,e,t))}if(e.absolute===this.cwd)return this[Ht](null,e,t);tq(String(e.absolute),o=>this[Ht](o??null,e,t));});};this[tC]?g():i();}[Ht](e,A,t){if(e){this[me](e,A),t();return}switch(A.type){case "File":case "OldFile":case "ContiguousFile":return this[Xh](A,t);case "Link":return this[ON](A,t);case "SymbolicLink":return this[PN](A,t);case "Directory":case "GNUDumpDir":return this[zh](A,t)}}[YQ](e,A,t,i){RA__default.default[t](A,String(e.absolute),g=>{g?this[me](g,e):(this[BI](),e.resume()),i();});}},Ws=e=>{try{return [null,e()]}catch(A){return [A,null]}},SG=class extends CD{sync=true;[Ht](e,A){return super[Ht](e,A,()=>{})}[Vh](e){if(!this[tC]){let g=this[Ug](this.cwd,this.dmode);if(g)return this[me](g,e);this[tC]=true;}if(e.absolute!==this.cwd){let g=hA(ue__default.default.dirname(String(e.absolute)));if(g!==this.cwd){let r=this[Ug](g,this.dmode);if(r)return this[me](r,e)}}let[A,t]=Ws(()=>RA__default.default.lstatSync(String(e.absolute)));if(t&&(this.keep||this.newer&&t.mtime>(e.mtime??t.mtime)))return this[$h](e);if(A||this[Zh](e,t))return this[Ht](null,e);if(t.isDirectory()){if(e.type==="Directory"){let r=this.chmod&&e.mode&&(t.mode&4095)!==e.mode,[n]=r?Ws(()=>{RA__default.default.chmodSync(String(e.absolute),Number(e.mode));}):[];return this[Ht](n,e)}let[g]=Ws(()=>RA__default.default.rmdirSync(String(e.absolute)));this[Ht](g,e);}let[i]=e.absolute===this.cwd?[]:Ws(()=>iq(String(e.absolute)));this[Ht](i,e);}[Xh](e,A){let t=typeof e.mode=="number"?e.mode&4095:this.fmode,i=n=>{let s;try{RA__default.default.closeSync(g);}catch(o){s=o;}(n||s)&&this[me](n||s,e),A();},g;try{g=RA__default.default.openSync(String(e.absolute),dG(e.size),t);}catch(n){return i(n)}let r=this.transform&&this.transform(e)||e;r!==e&&(r.on("error",n=>this[me](n,e)),e.pipe(r)),r.on("data",n=>{try{RA__default.default.writeSync(g,n,0,n.length);}catch(s){i(s);}}),r.on("end",()=>{let n=null;if(e.mtime&&!this.noMtime){let s=e.atime||new Date,o=e.mtime;try{RA__default.default.futimesSync(g,s,o);}catch(a){try{RA__default.default.utimesSync(String(e.absolute),s,o);}catch{n=a;}}}if(this[$s](e)){let s=this[AC](e),o=this[eC](e);try{RA__default.default.fchownSync(g,Number(s),Number(o));}catch(a){try{RA__default.default.chownSync(String(e.absolute),Number(s),Number(o));}catch{n=n||a;}}}i(n);});}[zh](e,A){let t=typeof e.mode=="number"?e.mode&4095:this.dmode,i=this[Ug](String(e.absolute),t);if(i){this[me](i,e),A();return}if(e.mtime&&!this.noMtime)try{RA__default.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime);}catch{}if(this[$s](e))try{RA__default.default.chownSync(String(e.absolute),Number(this[AC](e)),Number(this[eC](e)));}catch{}A(),e.resume();}[Ug](e,A){try{return W_(hA(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:A})}catch(t){return t}}[Vs](e,A,t,i,g){if(this.preservePaths||t.length===0)return i();let r=A;for(let n of t){r=ue__default.default.resolve(r,n);let[s,o]=Ws(()=>RA__default.default.lstatSync(r));if(s)return i();if(o.isSymbolicLink())return g(new eE(r,ue__default.default.resolve(A,t.join("/"))))}i();}[YQ](e,A,t,i){let g=`${t}Sync`;try{RA__default.default[g](A,String(e.absolute)),i(),e.resume();}catch(r){return this[me](r,e)}}},gq=e=>{let A=new SG(e),t=e.file,i=RA__default.default.statSync(t),g=e.maxReadSize||16*1024*1024;new dO(t,{readSize:g,size:i.size}).pipe(A);},rq=(e,A)=>{let t=new CD(e),i=e.maxReadSize||16*1024*1024,g=e.file;return new Promise((r,n)=>{t.on("error",n),t.on("close",r),RA__default.default.stat(g,(s,o)=>{if(s)n(s);else {let a=new eD(g,{readSize:i,size:o.size});a.on("error",n),a.pipe(t);}});})},RG=rC(gq,rq,e=>new SG(e),e=>new CD(e),(e,A)=>{A?.length&&nG(e,A);}),nq=(e,A)=>{let t=new sD(e),i=true,g,r;try{try{g=RA__default.default.openSync(e.file,"r+");}catch(o){if(o?.code==="ENOENT")g=RA__default.default.openSync(e.file,"w+");else throw o}let n=RA__default.default.fstatSync(g),s=Buffer.alloc(512);A:for(r=0;r<n.size;r+=512){for(let B=0,u=0;B<512;B+=u){if(u=RA__default.default.readSync(g,s,B,s.length-B,r+B),r===0&&s[0]===31&&s[1]===139)throw new Error("cannot append to compressed archives");if(!u)break A}let o=new Rr(s);if(!o.cksumValid)break;let a=512*Math.ceil((o.size||0)/512);if(r+a+512>n.size)break;r+=a,e.mtimeCache&&o.mtime&&e.mtimeCache.set(String(o.path),o.mtime);}i=!1,Iq(e,t,r,g,A);}finally{if(i)try{RA__default.default.closeSync(g);}catch{}}},Iq=(e,A,t,i,g)=>{let r=new XN(e.file,{fd:i,start:t});A.pipe(r),Cq(A,g);},sq=(e,A)=>{A=Array.from(A);let t=new zQ(e),i=(g,r,n)=>{let s=(Q,I)=>{Q?RA__default.default.close(g,C=>n(Q)):n(null,I);},o=0;if(r===0)return s(null,0);let a=0,B=Buffer.alloc(512),u=(Q,I)=>{if(Q||I===void 0)return s(Q);if(a+=I,a<512&&I)return RA__default.default.read(g,B,a,B.length-a,o+a,u);if(o===0&&B[0]===31&&B[1]===139)return s(new Error("cannot append to compressed archives"));if(a<512)return s(null,o);let C=new Rr(B);if(!C.cksumValid)return s(null,o);let E=512*Math.ceil((C.size??0)/512);if(o+E+512>r||(o+=E+512,o>=r))return s(null,o);e.mtimeCache&&C.mtime&&e.mtimeCache.set(String(C.path),C.mtime),a=0,RA__default.default.read(g,B,0,512,o,u);};RA__default.default.read(g,B,0,512,o,u);};return new Promise((g,r)=>{t.on("error",r);let n="r+",s=(o,a)=>{if(o&&o.code==="ENOENT"&&n==="r+")return n="w+",RA__default.default.open(e.file,n,s);if(o||!a)return r(o);RA__default.default.fstat(a,(B,u)=>{if(B)return RA__default.default.close(a,()=>r(B));i(a,u.size,(Q,I)=>{if(Q)return r(Q);let C=new WQ(e.file,{fd:a,start:I});t.pipe(C),C.on("error",r),C.on("close",g),oq(t,A);});});};RA__default.default.open(e.file,n,s);})},Cq=(e,A)=>{A.forEach(t=>{t.charAt(0)==="@"?ZQ({file:ue__default.default.resolve(e.cwd,t.slice(1)),sync:true,noResume:true,onReadEntry:i=>e.add(i)}):e.add(t);}),e.end();},oq=async(e,A)=>{for(let t of A)t.charAt(0)==="@"?await ZQ({file:ue__default.default.resolve(String(e.cwd),t.slice(1)),noResume:true,onReadEntry:i=>e.add(i)}):e.add(t);e.end();},js=rC(nq,sq,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(e,A)=>{if(!kO(e))throw new TypeError("file is required");if(e.gzip||e.brotli||e.zstd||e.file.endsWith(".br")||e.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!A?.length)throw new TypeError("no paths specified to add/replace")});rC(js.syncFile,js.asyncFile,js.syncNoFile,js.asyncNoFile,(e,A=[])=>{js.validate?.(e,A),Bq(e);});var Bq=e=>{let A=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=A?(t,i)=>A(t,i)&&!((e.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((e.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0));};var MG=100;function Eq(e){return `${e.authUrl}/images/`}async function BD(e,A,t){let i=[],g=t?{tags:{some:{name:{eq:t}}}}:{},r=0;for(;;){let n=await Et(e,A,`query ExportAssets($where: _assetWhere, $limit: Int, $offset: Int, $sort: [_assetSort!]) {
|
|
209
|
+
`).reduce(C_,Object.create(null)),C_=(e,A)=>{let t=parseInt(A,10);if(t!==Buffer.byteLength(A)+1)return e;A=A.slice((t+" ").length);let i=A.split("="),g=i.shift();if(!g)return e;let r=g.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),n=i.join("=").replace(/\0.*/,"");switch(r){case "path":case "linkpath":case "type":case "charset":case "comment":case "gname":case "uname":e[r]=n;break;case "ctime":case "atime":case "mtime":e[r]=new Date(Number(n)*1e3);break;case "size":let s=+n;s>=0&&(e[r]=s);break;case "gid":case "uid":case "dev":case "ino":case "nlink":case "mode":e[r]=+n;break}return e},o_=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,hA=o_!=="win32"?e=>String(e):e=>String(e).replaceAll(/\\/g,"/"),B_=class extends kr{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=false;ignore=false;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=false;absolute;unsupported=false;constructor(e,A,t){switch(super({}),this.pause(),this.extended=A,this.globalExtended=t,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case "File":case "OldFile":case "Link":case "SymbolicLink":case "CharacterDevice":case "BlockDevice":case "Directory":case "FIFO":case "ContiguousFile":case "GNUDumpDir":break;case "NextFileHasLongLinkpath":case "NextFileHasLongPath":case "OldGnuLongPath":case "GlobalExtendedHeader":case "ExtendedHeader":case "OldExtendedHeader":this.meta=true;break;default:this.ignore=true;}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=hA(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?hA(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,A&&this.#A(A),t&&this.#A(t,true);}write(e){let A=e.length;if(A>this.blockRemain)throw new Error("writing more to entry than is appropriate");let t=this.remain,i=this.blockRemain;return this.remain=Math.max(0,t-A),this.blockRemain=Math.max(0,i-A),this.ignore?true:t>=A?super.write(e):super.write(e.subarray(0,t))}#A(e,A=false){e.path&&(e.path=hA(e.path)),e.linkpath&&(e.linkpath=hA(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([t,i])=>!(i==null||t==="path"&&A))));}},VQ=(e,A,t,i={})=>{e.file&&(i.file=e.file),e.cwd&&(i.cwd=e.cwd),i.code=t instanceof Error&&t.code||A,i.tarCode=A,!e.strict&&i.recoverable!==false?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),e.emit("warn",A,t,i)):t instanceof Error?e.emit("error",Object.assign(t,i)):e.emit("error",Object.assign(new Error(`${A}: ${t}`),i));},Q_=1024*1024,xh=Buffer.from([31,139]),vh=Buffer.from([40,181,47,253]),E_=Math.max(xh.length,vh.length),Kt=Symbol("state"),dr=Symbol("writeEntry"),Vi=Symbol("readEntry"),fh=Symbol("nextEntry"),fN=Symbol("processEntry"),mi=Symbol("extendedHeader"),Hs=Symbol("globalExtendedHeader"),mg=Symbol("meta"),dN=Symbol("emitMeta"),OA=Symbol("buffer"),Zi=Symbol("queue"),Sg=Symbol("ended"),dh=Symbol("emittedEnd"),pr=Symbol("emit"),Ae=Symbol("unzip"),wQ=Symbol("consumeChunk"),yQ=Symbol("consumeChunkSub"),ph=Symbol("consumeBody"),pN=Symbol("consumeMeta"),wN=Symbol("consumeHeader"),Ys=Symbol("consuming"),wh=Symbol("bufferConcat"),FQ=Symbol("maybeEnd"),CI=Symbol("writing"),Si=Symbol("aborted"),mQ=Symbol("onDone"),wr=Symbol("sawValidEntry"),SQ=Symbol("sawNullBlock"),RQ=Symbol("sawEOF"),yN=Symbol("closeStream"),a_=1e3,Ts=Symbol("compressedBytesRead"),yh=Symbol("decompressedBytesRead"),FN=Symbol("checkDecompressionRatio"),u_=()=>true,gC=class extends sO.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;maxDecompressionRatio;writable=true;readable=false;[Zi]=[];[OA];[Vi];[dr];[Kt]="begin";[mg]="";[mi];[Hs];[Sg]=false;[Ae];[Si]=false;[wr];[SQ]=false;[RQ]=false;[CI]=false;[Ys]=false;[dh]=false;[Ts]=0;[yh]=0;constructor(e={}){super(),this.file=e.file||"",this.on(mQ,()=>{(this[Kt]==="begin"||this[wr]===false)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format");}),e.ondone?this.on(mQ,e.ondone):this.on(mQ,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end");}),this.strict=!!e.strict,this.maxDecompressionRatio=typeof e.maxDecompressionRatio=="number"?e.maxDecompressionRatio:a_,this.maxMetaEntrySize=e.maxMetaEntrySize||Q_,this.filter=typeof e.filter=="function"?e.filter:u_;let A=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:A?void 0:false;let t=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:t?true:void 0,this.on("end",()=>this[yN]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry);}warn(e,A,t={}){VQ(this,e,A,t);}[wN](e,A){this[wr]===void 0&&(this[wr]=false);let t;try{t=new Rr(e,A,this[mi],this[Hs]);}catch(i){return this.warn("TAR_ENTRY_INVALID",i)}if(t.nullBlock)this[SQ]?(this[RQ]=true,this[Kt]==="begin"&&(this[Kt]="header"),this[pr]("eof")):(this[SQ]=true,this[pr]("nullBlock"));else if(this[SQ]=false,!t.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:t});else if(!t.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:t});else {let i=t.type;if(/^(Symbolic)?Link$/.test(i)&&!t.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:t});else if(!/^(Symbolic)?Link$/.test(i)&&!/^(Global)?ExtendedHeader$/.test(i)&&t.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:t});else {let g=this[dr]=new B_(t,this[mi],this[Hs]);if(!this[wr])if(g.remain){let r=()=>{g.invalid||(this[wr]=true);};g.on("end",r);}else this[wr]=true;g.meta?g.size>this.maxMetaEntrySize?(g.ignore=true,this[pr]("ignoredEntry",g),this[Kt]="ignore",g.resume()):g.size>0&&(this[mg]="",g.on("data",r=>this[mg]+=r),this[Kt]="meta"):(this[mi]=void 0,g.ignore=g.ignore||!this.filter(g.path,g),g.ignore?(this[pr]("ignoredEntry",g),this[Kt]=g.remain?"ignore":"header",g.resume()):(g.remain?this[Kt]="body":(this[Kt]="header",g.end()),this[Vi]?this[Zi].push(g):(this[Zi].push(g),this[fh]())));}}}[yN](){queueMicrotask(()=>this.emit("close"));}[fN](e){let A=true;if(!e)this[Vi]=void 0,A=false;else if(Array.isArray(e)){let[t,...i]=e;this.emit(t,...i);}else this[Vi]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[fh]()),A=false);return A}[fh](){do;while(this[fN](this[Zi].shift()));if(this[Zi].length===0){let e=this[Vi];!e||e.flowing||e.size===e.remain?this[CI]||this.emit("drain"):e.once("drain",()=>this.emit("drain"));}}[ph](e,A){let t=this[dr];if(!t)throw new Error("attempt to consume body without entry??");let i=t.blockRemain??0,g=i>=e.length&&A===0?e:e.subarray(A,A+i);return t.write(g),t.blockRemain||(this[Kt]="header",this[dr]=void 0,t.end()),g.length}[pN](e,A){let t=this[dr],i=this[ph](e,A);return !this[dr]&&t&&this[dN](t),i}[pr](e,A,t){this[Zi].length===0&&!this[Vi]?this.emit(e,A,t):this[Zi].push([e,A,t]);}[dN](e){switch(this[pr]("meta",this[mg]),e.type){case "ExtendedHeader":case "OldExtendedHeader":this[mi]=TQ.parse(this[mg],this[mi],false);break;case "GlobalExtendedHeader":this[Hs]=TQ.parse(this[mg],this[Hs],true);break;case "NextFileHasLongPath":case "OldGnuLongPath":{let A=this[mi]??Object.create(null);this[mi]=A,A.path=this[mg].replace(/\0.*/,"");break}case "NextFileHasLongLinkpath":{let A=this[mi]||Object.create(null);this[mi]=A,A.linkpath=this[mg].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){if(!this[Si]){if(this[Ae]){let A=this[Ae];A.write=()=>true,A.end=()=>A,A.emit=()=>false,A.destroy?.();}this[Si]=true,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:false});}}[FN](e){this[yh]+=e.length;let A=this[yh]/this[Ts];return A>this.maxDecompressionRatio?(this.abort(new Error(`max decompression ratio exceeded: ${A.toFixed(2)} > ${this.maxDecompressionRatio}`)),false):true}write(e,A,t){if(typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof A=="string"?A:"utf8")),this[Si])return t?.(),false;if((this[Ae]===void 0||this.brotli===void 0&&this[Ae]===false)&&e){if(this[OA]&&(e=Buffer.concat([this[OA],e]),this[OA]=void 0),e.length<E_)return this[OA]=e,t?.(),true;for(let n=0;this[Ae]===void 0&&n<xh.length;n++)e[n]!==xh[n]&&(this[Ae]=false);let g=false;if(this[Ae]===false&&this.zstd!==false){g=true;for(let n=0;n<vh.length;n++)if(e[n]!==vh[n]){g=false;break}}let r=this.brotli===void 0&&!g;if(this[Ae]===false&&r)if(e.length<512)if(this[Sg])this.brotli=true;else return this[OA]=e,t?.(),true;else try{new Rr(e.subarray(0,512)),this.brotli=!1;}catch{this.brotli=true;}if(this[Ae]===void 0||this[Ae]===false&&(this.brotli||g)){let n=this[Sg];this[Sg]=false,this[Ae]=this[Ae]===void 0?new vO({}):g?new YO({}):new KO({}),this[Ae].on("data",o=>{this[FN](o)&&this[wQ](o);}),this[Ae].on("error",o=>{this[Si]||this.abort(o);}),this[Ae].on("end",()=>{this[Sg]=true,this[wQ]();}),this[CI]=true,this[Ts]+=e.length;let s=!!this[Ae][n?"end":"write"](e);return this[CI]=false,t?.(),s}}this[CI]=true,this[Ae]?(this[Ts]+=e.length,this[Ae].write(e)):this[wQ](e),this[CI]=false;let i=this[Zi].length>0?false:this[Vi]?this[Vi].flowing:true;return !i&&this[Zi].length===0&&this[Vi]?.once("drain",()=>this.emit("drain")),t?.(),i}[wh](e){e&&!this[Si]&&(this[OA]=this[OA]?Buffer.concat([this[OA],e]):e);}[FQ](){if(this[Sg]&&!this[dh]&&!this[Si]&&!this[Ys]){this[dh]=true;let e=this[dr];if(e?.blockRemain){let A=this[OA]?this[OA].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${A} available)`,{entry:e}),this[OA]&&e.write(this[OA]),e.end();}this[pr](mQ);}}[wQ](e){if(this[Ys]&&e)this[wh](e);else if(!e&&!this[OA])this[FQ]();else if(e){if(this[Ys]=true,this[OA]){this[wh](e);let A=this[OA];this[OA]=void 0,this[yQ](A);}else this[yQ](e);for(;this[OA]&&this[OA]?.length>=512&&!this[Si]&&!this[RQ];){let A=this[OA];this[OA]=void 0,this[yQ](A);}this[Ys]=false;}(!this[OA]||this[Sg])&&this[FQ]();}[yQ](e){let A=0,t=e.length;for(;A+512<=t&&!this[Si]&&!this[RQ];)switch(this[Kt]){case "begin":case "header":this[wN](e,A),A+=512;break;case "ignore":case "body":A+=this[ph](e,A);break;case "meta":A+=this[pN](e,A);break;default:throw new Error("invalid state: "+this[Kt])}A<t&&(this[OA]=this[OA]?Buffer.concat([e.subarray(A),this[OA]]):e.subarray(A));}end(e,A,t){return typeof e=="function"&&(t=e,A=void 0,e=void 0),typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,A)),t&&this.once("finish",t),this[Si]||(this[Ae]?(e&&(this[Ts]+=e.length,this[Ae].write(e)),this[Ae].end()):(this[Sg]=true,(this.brotli===void 0||this.zstd===void 0)&&(e=e||Buffer.alloc(0)),e&&this.write(e),this[FQ]())),this}},Xs=e=>{let A=e.length-1,t=-1;for(;A>-1&&e.charAt(A)==="/";)t=A,A--;return t===-1?e:e.slice(0,t)},c_=e=>{let A=e.onReadEntry;e.onReadEntry=A?t=>{A(t),t.resume();}:t=>t.resume();},nG=(e,A)=>{let t=new Map(A.map(n=>[Xs(n),true])),i=e.filter,g=100,r=(n,s="",o=0)=>{if(o>=g)return t.set(n,false),false;let a=s||ue.parse(n).root||".",B;if(n===a)B=false;else {let u=t.get(n);B=u!==void 0?u:r(ue.dirname(n),a,o+1);}return t.set(n,B),B};e.filter=i?(n,s)=>i(n,s)&&r(Xs(n)):n=>r(Xs(n));},l_=e=>{let A=new gC(e),t=e.file,i;try{i=RA__default.default.openSync(t,"r");let g=RA__default.default.fstatSync(i),r=e.maxReadSize||16*1024*1024;if(g.size<r){let n=Buffer.allocUnsafe(g.size),s=RA__default.default.readSync(i,n,0,g.size,0);A.end(s===n.byteLength?n:n.subarray(0,s));}else {let n=0,s=Buffer.allocUnsafe(r);for(;n<g.size;){let o=RA__default.default.readSync(i,s,0,r,n);if(o===0)break;n+=o,A.write(s.subarray(0,o));}A.end();}}finally{if(typeof i=="number")try{RA__default.default.closeSync(i);}catch{}}},h_=(e,A)=>{let t=new gC(e),i=e.maxReadSize||16*1024*1024,g=e.file;return new Promise((r,n)=>{t.on("error",n),t.on("end",r),RA__default.default.stat(g,(s,o)=>{if(s)n(s);else {let a=new eD(g,{readSize:i,size:o.size});a.on("error",n),a.pipe(t);}});})},ZQ=rC(l_,h_,e=>new gC(e),e=>new gC(e),(e,A)=>{A?.length&&nG(e,A),e.noResume||c_(e);}),IG=(e,A,t)=>(e&=4095,t&&(e=(e|384)&-19),A&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e),{isAbsolute:f_,parse:SN}=ue.win32,rD=e=>{let A="",t=SN(e);for(;f_(e)||t.root;){let i=e.charAt(0)==="/"&&e.slice(0,4)!=="//?/"?"/":t.root;e=e.slice(i.length),A+=i,t=SN(e);}return [A,e]},XQ=["|","<",">","?",":"],nD=XQ.map(e=>String.fromCodePoint(61440+Number(e.codePointAt(0)))),d_=new Map(XQ.map((e,A)=>[e,nD[A]])),p_=new Map(nD.map((e,A)=>[e,XQ[A]])),RN=e=>XQ.reduce((A,t)=>A.split(t).join(d_.get(t)),e),w_=e=>nD.reduce((A,t)=>A.split(t).join(p_.get(t)),e),sG=(e,A)=>A?(e=hA(e).replace(/^\.(\/|$)/,""),Xs(A)+"/"+e):hA(e),y_=16*1024*1024,kN=Symbol("process"),MN=Symbol("file"),NN=Symbol("directory"),Jh=Symbol("symlink"),GN=Symbol("hardlink"),Ps=Symbol("header"),bQ=Symbol("read"),Kh=Symbol("lstat"),LQ=Symbol("onlstat"),Hh=Symbol("onread"),Yh=Symbol("onreadlink"),Th=Symbol("openfile"),Ph=Symbol("onopenfile"),Gg=Symbol("close"),OQ=Symbol("mode"),Oh=Symbol("awaitDrain"),Fh=Symbol("ondrain"),ki=Symbol("prefix"),CG=class extends kr{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#A=false;constructor(e,A={}){let t=tD(A);super(),this.path=hA(e),this.portable=!!t.portable,this.maxReadSize=t.maxReadSize||y_,this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.preservePaths=!!t.preservePaths,this.cwd=hA(t.cwd||process.cwd()),this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.mtime=t.mtime,this.prefix=t.prefix?hA(t.prefix):void 0,this.onWriteEntry=t.onWriteEntry,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let i=false;if(!this.preservePaths){let[r,n]=rD(this.path);r&&typeof n=="string"&&(this.path=n,i=r);}this.win32=!!t.win32||process.platform==="win32",this.win32&&(this.path=w_(this.path.replaceAll(/\\/g,"/")),e=e.replaceAll(/\\/g,"/")),this.absolute=hA(t.absolute||ue__default.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path});let g=this.statCache.get(this.absolute);g?this[LQ](g):this[Kh]();}warn(e,A,t={}){return VQ(this,e,A,t)}emit(e,...A){return e==="error"&&(this.#A=true),super.emit(e,...A)}[Kh](){RA__default.default.lstat(this.absolute,(e,A)=>{if(e)return this.emit("error",e);this[LQ](A);});}[LQ](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=S_(e),this.emit("stat",e),this[kN]();}[kN](){switch(this.type){case "File":return this[MN]();case "Directory":return this[NN]();case "SymbolicLink":return this[Jh]();default:return this.end()}}[OQ](e){return IG(e,this.type==="Directory",this.portable)}[ki](e){return sG(e,this.prefix)}[Ps](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=true),this.onWriteEntry?.(this),this.header=new Rr({path:this[ki](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ki](this.linkpath):this.linkpath,mode:this[OQ](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new TQ({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ki](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ki](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e);}[NN](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Ps](),this.end();}[Jh](){RA__default.default.readlink(this.absolute,(e,A)=>{if(e)return this.emit("error",e);this[Yh](A);});}[Yh](e){this.linkpath=hA(e),this[Ps](),this.end();}[GN](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=hA(ue__default.default.relative(this.cwd,e)),this.stat.size=0,this[Ps](),this.end();}[MN](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,A=this.linkCache.get(e);if(A?.indexOf(this.cwd)===0)return this[GN](A);this.linkCache.set(e,this.absolute);}if(this[Ps](),this.stat.size===0)return this.end();this[Th]();}[Th](){RA__default.default.open(this.absolute,"r",(e,A)=>{if(e)return this.emit("error",e);this[Ph](A);});}[Ph](e){if(this.fd=e,this.#A)return this[Gg]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let A=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(A),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[bQ]();}[bQ](){let{fd:e,buf:A,offset:t,length:i,pos:g}=this;if(e===void 0||A===void 0)throw new Error("cannot read file without first opening");RA__default.default.read(e,A,t,i,g,(r,n)=>{if(r)return this[Gg](()=>this.emit("error",r));this[Hh](n);});}[Gg](e=()=>{}){this.fd!==void 0&&RA__default.default.close(this.fd,e);}[Hh](e){if(e<=0&&this.remain>0){let t=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[Gg](()=>this.emit("error",t))}if(e>this.remain){let t=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[Gg](()=>this.emit("error",t))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let t=e;t<this.length&&e<this.blockRemain;t++)this.buf[t+this.offset]=0,e++,this.remain++;let A=this.offset===0&&e===this.buf.length?this.buf:this.buf.subarray(this.offset,this.offset+e);this.write(A)?this[Fh]():this[Oh](()=>this[Fh]());}[Oh](e){this.once("drain",e);}write(e,A,t){if(typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof A=="string"?A:"utf8")),this.blockRemain<e.length){let i=Object.assign(new Error("writing more data than expected"),{path:this.absolute});return this.emit("error",i)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e,null,t)}[Fh](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[Gg](e=>e?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[bQ]();}},F_=class extends CG{sync=true;[Kh](){this[LQ](RA__default.default.lstatSync(this.absolute));}[Jh](){this[Yh](RA__default.default.readlinkSync(this.absolute));}[Th](){this[Ph](RA__default.default.openSync(this.absolute,"r"));}[bQ](){let e=true;try{let{fd:A,buf:t,offset:i,length:g,pos:r}=this;if(A===void 0||t===void 0)throw new Error("fd and buf must be set in READ method");let n=RA__default.default.readSync(A,t,i,g,r);this[Hh](n),e=!1;}finally{if(e)try{this[Gg](()=>{});}catch{}}}[Oh](e){e();}[Gg](e=()=>{}){this.fd!==void 0&&RA__default.default.closeSync(this.fd),e();}},m_=class extends kr{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,A,t={}){return VQ(this,e,A,t)}constructor(e,A={}){let t=tD(A);super(),this.preservePaths=!!t.preservePaths,this.portable=!!t.portable,this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.onWriteEntry=t.onWriteEntry,this.readEntry=e;let{type:i}=e;if(i==="Unsupported")throw new Error("writing entry that should be ignored");this.type=i,this.type==="Directory"&&this.portable&&(this.noMtime=true),this.prefix=t.prefix,this.path=hA(e.path),this.mode=e.mode!==void 0?this[OQ](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:t.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?hA(e.linkpath):void 0,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let g=false;if(!this.preservePaths){let[n,s]=rD(this.path);n&&typeof s=="string"&&(this.path=s,g=n);}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new Rr({path:this[ki](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ki](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),g&&this.warn("TAR_ENTRY_INFO",`stripping ${g} from absolute path`,{entry:this,path:g+this.path}),this.header.encode()&&!this.noPax&&super.write(new TQ({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ki](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ki](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let r=this.header?.block;if(!r)throw new Error("failed to encode header");super.write(r),e.pipe(this);}[ki](e){return sG(e,this.prefix)}[OQ](e){return IG(e,this.type==="Directory",this.portable)}write(e,A,t){typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof A=="string"?A:"utf8"));let i=e.length;if(i>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=i,super.write(e,t)}end(e,A,t){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(t=e,A=void 0,e=void 0),typeof A=="function"&&(t=A,A=void 0),typeof e=="string"&&(e=Buffer.from(e,A??"utf8")),t&&this.once("finish",t),e?super.end(e,t):super.end(t),this}},S_=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported",R_=class cI{tail;head;length=0;static create(A=[]){return new cI(A)}constructor(A=[]){for(let t of A)this.push(t);}*[Symbol.iterator](){for(let A=this.head;A;A=A.next)yield A.value;}removeNode(A){if(A.list!==this)throw new Error("removing node which does not belong to this list");let t=A.next,i=A.prev;return t&&(t.prev=i),i&&(i.next=t),A===this.head&&(this.head=t),A===this.tail&&(this.tail=i),this.length--,A.next=void 0,A.prev=void 0,A.list=void 0,t}unshiftNode(A){if(A===this.head)return;A.list&&A.list.removeNode(A);let t=this.head;A.list=this,A.next=t,t&&(t.prev=A),this.head=A,this.tail||(this.tail=A),this.length++;}pushNode(A){if(A===this.tail)return;A.list&&A.list.removeNode(A);let t=this.tail;A.list=this,A.prev=t,t&&(t.next=A),this.tail=A,this.head||(this.head=A),this.length++;}push(...A){for(let t=0,i=A.length;t<i;t++)M_(this,A[t]);return this.length}unshift(...A){for(var t=0,i=A.length;t<i;t++)N_(this,A[t]);return this.length}pop(){if(!this.tail)return;let A=this.tail.value,t=this.tail;return this.tail=this.tail.prev,this.tail?this.tail.next=void 0:this.head=void 0,t.list=void 0,this.length--,A}shift(){if(!this.head)return;let A=this.head.value,t=this.head;return this.head=this.head.next,this.head?this.head.prev=void 0:this.tail=void 0,t.list=void 0,this.length--,A}forEach(A,t){t=t||this;for(let i=this.head,g=0;i;g++)A.call(t,i.value,g,this),i=i.next;}forEachReverse(A,t){t=t||this;for(let i=this.tail,g=this.length-1;i;g--)A.call(t,i.value,g,this),i=i.prev;}get(A){let t=0,i=this.head;for(;i&&t<A;t++)i=i.next;if(t===A&&i)return i.value}getReverse(A){let t=0,i=this.tail;for(;i&&t<A;t++)i=i.prev;if(t===A&&i)return i.value}map(A,t){t=t||this;let i=new cI;for(let g=this.head;g;)i.push(A.call(t,g.value,this)),g=g.next;return i}mapReverse(A,t){t=t||this;var i=new cI;for(let g=this.tail;g;)i.push(A.call(t,g.value,this)),g=g.prev;return i}reduce(A,t){let i,g=this.head;if(arguments.length>1)i=t;else if(this.head)g=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var r=0;g;r++)i=A(i,g.value,r),g=g.next;return i}reduceReverse(A,t){let i,g=this.tail;if(arguments.length>1)i=t;else if(this.tail)g=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let r=this.length-1;g;r--)i=A(i,g.value,r),g=g.prev;return i}toArray(){let A=new Array(this.length);for(let t=0,i=this.head;i;t++)A[t]=i.value,i=i.next;return A}toArrayReverse(){let A=new Array(this.length);for(let t=0,i=this.tail;i;t++)A[t]=i.value,i=i.prev;return A}slice(A=0,t=this.length){t<0&&(t+=this.length),A<0&&(A+=this.length);let i=new cI;if(t<A||t<0)return i;A<0&&(A=0),t>this.length&&(t=this.length);let g=this.head,r=0;for(r=0;g&&r<A;r++)g=g.next;for(;g&&r<t;r++,g=g.next)i.push(g.value);return i}sliceReverse(A=0,t=this.length){t<0&&(t+=this.length),A<0&&(A+=this.length);let i=new cI;if(t<A||t<0)return i;A<0&&(A=0),t>this.length&&(t=this.length);let g=this.length,r=this.tail;for(;r&&g>t;g--)r=r.prev;for(;r&&g>A;g--,r=r.prev)i.push(r.value);return i}splice(A,t=0,...i){A>this.length&&(A=this.length-1),A<0&&(A=this.length+A);let g=this.head;for(let n=0;g&&n<A;n++)g=g.next;let r=[];for(let n=0;g&&n<t;n++)r.push(g.value),g=this.removeNode(g);g?g!==this.tail&&(g=g.prev):g=this.tail;for(let n of i)g=k_(this,g,n);return r}reverse(){let A=this.head,t=this.tail;for(let i=A;i;i=i.prev){let g=i.prev;i.prev=i.next,i.next=g;}return this.head=t,this.tail=A,this}};function k_(e,A,t){let i=A,g=A?A.next:e.head,r=new ID(t,i,g,e);return r.next===void 0&&(e.tail=r),r.prev===void 0&&(e.head=r),e.length++,r}function M_(e,A){e.tail=new ID(A,e.tail,void 0,e),e.head||(e.head=e.tail),e.length++;}function N_(e,A){e.head=new ID(A,void 0,e.head,e),e.tail||(e.tail=e.head),e.length++;}var ID=class{list;next;prev;value;constructor(e,A,t,i){this.list=i,this.value=e,A?(A.next=this,this.prev=A):this.prev=void 0,t?(t.prev=this,this.next=t):this.next=void 0;}},bN=class{path;absolute;entry;stat;readdir;pending=false;pendingLink=false;ignore=false;piped=false;constructor(e,A){this.path=e||"./",this.absolute=A;}},LN=Buffer.alloc(1024),xQ=Symbol("onStat"),Os=Symbol("ended"),Ai=Symbol("queue"),_s=Symbol("pendingLinks"),Rg=Symbol("current"),yr=Symbol("process"),qs=Symbol("processing"),kQ=Symbol("processJob"),ei=Symbol("jobs"),mh=Symbol("jobDone"),vQ=Symbol("addFSEntry"),xN=Symbol("addTarEntry"),_h=Symbol("stat"),qh=Symbol("readdir"),JQ=Symbol("onreaddir"),KQ=Symbol("pipe"),vN=Symbol("entry"),Sh=Symbol("entryOpt"),HQ=Symbol("writeEntryClass"),oG=Symbol("write"),Rh=Symbol("ondrain"),zQ=class extends kr{sync=false;opt;cwd;maxReadSize;preservePaths;strict;noPax;prefix;linkCache;statCache;file;portable;zip;readdirCache;noDirRecurse;follow;noMtime;mtime;filter;jobs;[HQ];onWriteEntry;[Ai];[_s]=new Map;[ei]=0;[qs]=false;[Os]=false;constructor(e={}){if(super(),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=hA(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this.onWriteEntry=e.onWriteEntry,this[HQ]=CG,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,e.gzip||e.brotli||e.zstd){if((e.gzip?1:0)+(e.brotli?1:0)+(e.zstd?1:0)>1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=true),this.zip=new xO(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new JO(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new HO(e.zstd)),!this.zip)throw new Error("impossible");let A=this.zip;A.on("data",t=>super.write(t)),A.on("end",()=>super.end()),A.on("drain",()=>this[Rh]()),this.on("resume",()=>A.resume());}else this.on("drain",this[Rh]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>true,this[Ai]=new R_,this[ei]=0,this.jobs=Number(e.jobs)||4,this[qs]=false,this[Os]=false;}[oG](e){return super.write(e)}add(e){return this.write(e),this}end(e,A,t){return typeof e=="function"&&(t=e,e=void 0),typeof A=="function"&&(t=A,A=void 0),e&&this.add(e),this[Os]=true,this[yr](),t&&t(),this}write(e){if(this[Os])throw new Error("write after end");return typeof e=="string"?this[vQ](e):this[xN](e),this.flowing}[xN](e){let A=hA(ue__default.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else {let t=new bN(e.path,A);t.entry=new m_(e,this[Sh](t)),t.entry.on("end",()=>this[mh](t)),this[ei]+=1,this[Ai].push(t);}this[yr]();}[vQ](e){let A=hA(ue__default.default.resolve(this.cwd,e));this[Ai].push(new bN(e,A)),this[yr]();}[_h](e){e.pending=true,this[ei]+=1;let A=this.follow?"stat":"lstat";RA__default.default[A](e.absolute,(t,i)=>{e.pending=false,this[ei]-=1,t?this.emit("error",t):this[xQ](e,i);});}[xQ](e,A){if(this.statCache.set(e.absolute,A),e.stat=A,!this.filter(e.path,A))e.ignore=true;else if(A.isFile()&&A.nlink>1&&!this.linkCache.get(`${A.dev}:${A.ino}`)&&!this.sync)if(e===this[Rg])this[kQ](e);else {let t=`${A.dev}:${A.ino}`,i=this[_s].get(t);i?i.push(e):this[_s].set(t,[e]),e.pendingLink=true,e.pending=true;}this[yr]();}[qh](e){e.pending=true,this[ei]+=1,RA__default.default.readdir(e.absolute,(A,t)=>{if(e.pending=false,this[ei]-=1,A)return this.emit("error",A);this[JQ](e,t);});}[JQ](e,A){this.readdirCache.set(e.absolute,A),e.readdir=A,this[yr]();}[yr](){if(!this[qs]){this[qs]=true;for(let e=this[Ai].head;e&&this[ei]<this.jobs;e=e.next)if(this[kQ](e.value),e.value.ignore){let A=e.next;this[Ai].removeNode(e),e.next=A;}this[qs]=false,this[Os]&&this[Ai].length===0&&this[ei]===0&&(this.zip?this.zip.end(LN):(super.write(LN),super.end()));}}get[Rg](){return this[Ai]&&this[Ai].head&&this[Ai].head.value}[mh](e){this[Ai].shift(),this[ei]-=1;let{stat:A}=e;if(A&&A.isFile()&&A.nlink>1){let t=`${A.dev}:${A.ino}`,i=this[_s].get(t);if(i){this[_s].delete(t);for(let g of i)g.pending=false,this[kQ](g);}}this[yr]();}[kQ](e){if(e.pending&&e.pendingLink&&e===this[Rg]&&(e.pending=false,e.pendingLink=false),!e.pending){if(e.entry){e===this[Rg]&&!e.piped&&this[KQ](e);return}if(!e.stat){let A=this.statCache.get(e.absolute);A?this[xQ](e,A):this[_h](e);}if(e.stat&&!e.ignore){if(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir){let A=this.readdirCache.get(e.absolute);if(A?this[JQ](e,A):this[qh](e),!e.readdir)return}if(e.entry=this[vN](e),!e.entry){e.ignore=true;return}e===this[Rg]&&!e.piped&&this[KQ](e);}}}[Sh](e){return {onwarn:(A,t,i)=>this.warn(A,t,i),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[vN](e){this[ei]+=1;try{return new this[HQ](e.path,this[Sh](e)).on("end",()=>this[mh](e)).on("error",A=>this.emit("error",A))}catch(A){this.emit("error",A);}}[Rh](){this[Rg]&&this[Rg].entry&&this[Rg].entry.resume();}[KQ](e){e.piped=true,e.readdir&&e.readdir.forEach(i=>{let g=e.path,r=g==="./"?"":g.replace(/\/*$/,"/");this[vQ](r+i);});let A=e.entry,t=this.zip;if(!A)throw new Error("cannot pipe without source");t?A.on("data",i=>{t.write(i)||A.pause();}):A.on("data",i=>{super.write(i)||A.pause();});}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,A,t={}){VQ(this,e,A,t);}},sD=class extends zQ{sync=true;constructor(e){super(e),this[HQ]=F_;}pause(){}resume(){}[_h](e){let A=this.follow?"statSync":"lstatSync";this[xQ](e,RA__default.default[A](e.absolute));}[qh](e){this[JQ](e,RA__default.default.readdirSync(e.absolute));}[KQ](e){let A=e.entry,t=this.zip;if(e.readdir&&e.readdir.forEach(i=>{let g=e.path,r=g==="./"?"":g.replace(/\/*$/,"/");this[vQ](r+i);}),!A)throw new Error("Cannot pipe without source");t?A.on("data",i=>{t.write(i);}):A.on("data",i=>{super[oG](i);});}},G_=(e,A)=>{let t=new sD(e),i=new XN(e.file,{mode:e.mode||438});t.pipe(i),BG(t,A);},U_=(e,A)=>{let t=new zQ(e),i=new WQ(e.file,{mode:e.mode||438});t.pipe(i);let g=new Promise((r,n)=>{i.on("error",n),i.on("close",r),t.on("error",n);});return QG(t,A).catch(r=>t.emit("error",r)),g},BG=(e,A)=>{A.forEach(t=>{t.charAt(0)==="@"?ZQ({file:ue__default.default.resolve(e.cwd,t.slice(1)),sync:true,noResume:true,onReadEntry:i=>e.add(i)}):e.add(t);}),e.end();},QG=async(e,A)=>{for(let t of A)t.charAt(0)==="@"?await ZQ({file:ue__default.default.resolve(String(e.cwd),t.slice(1)),noResume:true,onReadEntry:i=>{e.add(i);}}):e.add(t);e.end();},b_=(e,A)=>{let t=new sD(e);return BG(t,A),t},L_=(e,A)=>{let t=new zQ(e);return QG(t,A).catch(i=>t.emit("error",i)),t},$Q=rC(G_,U_,b_,L_,(e,A)=>{if(!A?.length)throw new TypeError("no paths specified to add to archive")}),v_=process.env.__FAKE_PLATFORM__||process.platform,cG=v_==="win32",{O_CREAT:lG,O_NOFOLLOW:JN,O_TRUNC:hG,O_WRONLY:DG}=RA__default.default.constants,fG=Number(process.env.__FAKE_FS_O_FILENAME__)||RA__default.default.constants.UV_FS_O_FILEMAP||0,J_=cG&&!!fG,K_=512*1024,H_=fG|hG|lG|DG,KN=!cG&&typeof JN=="number"?JN|hG|lG|DG:null,dG=KN!==null?()=>KN:J_?e=>e<K_?H_:"w":()=>"w",Wh=(e,A,t)=>{try{return RA__default.default.lchownSync(e,A,t)}catch(i){if(i?.code!=="ENOENT")throw i}},_Q=(e,A,t,i)=>{RA__default.default.lchown(e,A,t,g=>{i(g&&g?.code!=="ENOENT"?g:null);});},Y_=(e,A,t,i,g)=>{if(A.isDirectory())pG(ue__default.default.resolve(e,A.name),t,i,r=>{if(r)return g(r);let n=ue__default.default.resolve(e,A.name);_Q(n,t,i,g);});else {let r=ue__default.default.resolve(e,A.name);_Q(r,t,i,g);}},pG=(e,A,t,i)=>{RA__default.default.readdir(e,{withFileTypes:true},(g,r)=>{if(g){if(g.code==="ENOENT")return i();if(g.code!=="ENOTDIR"&&g.code!=="ENOTSUP")return i(g)}if(g||!r.length)return _Q(e,A,t,i);let n=r.length,s=null,o=a=>{if(!s){if(a)return i(s=a);if(--n===0)return _Q(e,A,t,i)}};for(let a of r)Y_(e,a,A,t,o);});},T_=(e,A,t,i)=>{A.isDirectory()&&wG(ue__default.default.resolve(e,A.name),t,i),Wh(ue__default.default.resolve(e,A.name),t,i);},wG=(e,A,t)=>{let i;try{i=RA__default.default.readdirSync(e,{withFileTypes:!0});}catch(g){let r=g;if(r?.code==="ENOENT")return;if(r?.code==="ENOTDIR"||r?.code==="ENOTSUP")return Wh(e,A,t);throw r}for(let g of i)T_(e,g,A,t);return Wh(e,A,t)},yG=class extends Error{path;code;syscall="chdir";constructor(e,A){super(`${A}: Cannot cd into '${e}'`),this.path=e,this.code=A;}get name(){return "CwdError"}},eE=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,A){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=A;}get name(){return "SymlinkError"}},O_=(e,A)=>{RA__default.default.stat(e,(t,i)=>{(t||!i.isDirectory())&&(t=new yG(e,t?.code||"ENOTDIR")),A(t);});},__=(e,A,t)=>{e=hA(e);let i=A.umask??18,g=A.mode|448,r=(g&i)!==0,n=A.uid,s=A.gid,o=typeof n=="number"&&typeof s=="number"&&(n!==A.processUid||s!==A.processGid),a=A.preserve,B=A.unlink,u=hA(A.cwd),Q=(C,E)=>{C?t(C):E&&o?pG(E,n,s,c=>Q(c)):r?RA__default.default.chmod(e,g,t):t();};if(e===u)return O_(e,Q);if(a)return P___default.default.mkdir(e,{mode:g,recursive:true}).then(C=>Q(null,C??void 0),Q);let I=hA(ue__default.default.relative(u,e)).split("/");jh(u,I,g,B,u,void 0,Q);},jh=(e,A,t,i,g,r,n)=>{if(A.length===0)return n(null,r);let s=A.shift(),o=hA(ue__default.default.resolve(e+"/"+s));RA__default.default.mkdir(o,t,FG(o,A,t,i,g,r,n));},FG=(e,A,t,i,g,r,n)=>s=>{s?RA__default.default.lstat(e,(o,a)=>{if(o)o.path=o.path&&hA(o.path),n(o);else if(a.isDirectory())jh(e,A,t,i,g,r,n);else if(i)RA__default.default.unlink(e,B=>{if(B)return n(B);RA__default.default.mkdir(e,t,FG(e,A,t,i,g,r,n));});else {if(a.isSymbolicLink())return n(new eE(e,e+"/"+A.join("/")));n(s);}}):(r=r||e,jh(e,A,t,i,g,r,n));},q_=e=>{let A=false,t;try{A=RA__default.default.statSync(e).isDirectory();}catch(i){t=i?.code;}finally{if(!A)throw new yG(e,t??"ENOTDIR")}},W_=(e,A)=>{e=hA(e);let t=A.umask??18,i=A.mode|448,g=(i&t)!==0,r=A.uid,n=A.gid,s=typeof r=="number"&&typeof n=="number"&&(r!==A.processUid||n!==A.processGid),o=A.preserve,a=A.unlink,B=hA(A.cwd),u=C=>{C&&s&&wG(C,r,n),g&&RA__default.default.chmodSync(e,i);};if(e===B)return q_(B),u();if(o)return u(RA__default.default.mkdirSync(e,{mode:i,recursive:true})??void 0);let Q=hA(ue__default.default.relative(B,e)).split("/"),I;for(let C=Q.shift(),E=B;C&&(E+="/"+C);C=Q.shift()){E=hA(ue__default.default.resolve(E));try{RA__default.default.mkdirSync(E,i),I=I||E;}catch{let c=RA__default.default.lstatSync(E);if(c.isDirectory())continue;if(a){RA__default.default.unlinkSync(E),RA__default.default.mkdirSync(E,i),I=I||E;continue}else if(c.isSymbolicLink())return new eE(E,E+"/"+Q.join("/"))}}return u(I)},kh=Object.create(null),HN=1e4,oI=new Set,j_=e=>{oI.has(e)?oI.delete(e):kh[e]=e.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),oI.add(e);let A=kh[e],t=oI.size-HN;if(t>HN/10){for(let i of oI)if(oI.delete(i),delete kh[i],--t<=0)break}return A},V_=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Z_=V_==="win32",X_=e=>e.split("/").slice(0,-1).reduce((A,t)=>{let i=A.at(-1);return i!==void 0&&(t=ue.join(i,t)),A.push(t||"/"),A},[]),z_=class{#A=new Map;#t=new Map;#e=new Set;reserve(e,A){e=Z_?["win32 parallelization disabled"]:e.map(i=>Xs(ue.join(j_(i))));let t=new Set(e.map(i=>X_(i)).reduce((i,g)=>i.concat(g)));this.#t.set(A,{dirs:t,paths:e});for(let i of e){let g=this.#A.get(i);g?g.push(A):this.#A.set(i,[A]);}for(let i of t){let g=this.#A.get(i);if(!g)this.#A.set(i,[new Set([A])]);else {let r=g.at(-1);r instanceof Set?r.add(A):g.push(new Set([A]));}}return this.#r(A)}#n(e){let A=this.#t.get(e);if(!A)throw new Error("function does not have any path reservations");return {paths:A.paths.map(t=>this.#A.get(t)),dirs:[...A.dirs].map(t=>this.#A.get(t))}}check(e){let{paths:A,dirs:t}=this.#n(e);return A.every(i=>i&&i[0]===e)&&t.every(i=>i&&i[0]instanceof Set&&i[0].has(e))}#r(e){return this.#e.has(e)||!this.check(e)?false:(this.#e.add(e),e(()=>this.#i(e)),true)}#i(e){if(!this.#e.has(e))return false;let A=this.#t.get(e);if(!A)throw new Error("invalid reservation");let{paths:t,dirs:i}=A,g=new Set;for(let r of t){let n=this.#A.get(r);if(!n||n?.[0]!==e)continue;let s=n[1];if(!s){this.#A.delete(r);continue}if(n.shift(),typeof s=="function")g.add(s);else for(let o of s)g.add(o);}for(let r of i){let n=this.#A.get(r),s=n?.[0];if(!(!n||!(s instanceof Set)))if(s.size===1&&n.length===1){this.#A.delete(r);continue}else if(s.size===1){n.shift();let o=n[0];typeof o=="function"&&g.add(o);}else s.delete(e);}return this.#e.delete(e),g.forEach(r=>this.#r(r)),true}},$_=()=>process.umask(),YN=Symbol("onEntry"),Vh=Symbol("checkFs"),TN=Symbol("checkFs2"),Zh=Symbol("isReusable"),Ht=Symbol("makeFs"),Xh=Symbol("file"),zh=Symbol("directory"),YQ=Symbol("link"),PN=Symbol("symlink"),ON=Symbol("hardlink"),Vs=Symbol("ensureNoSymlink"),_N=Symbol("unsupported"),qN=Symbol("checkPath"),Mh=Symbol("stripAbsolutePath"),Ug=Symbol("mkdir"),me=Symbol("onError"),MQ=Symbol("pending"),WN=Symbol("pend"),BI=Symbol("unpend"),Nh=Symbol("ended"),Gh=Symbol("maybeClose"),$h=Symbol("skip"),$s=Symbol("doChown"),AC=Symbol("uid"),eC=Symbol("gid"),tC=Symbol("checkedCwd"),Aq=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,iC=Aq==="win32",eq=1024,tq=(e,A)=>{if(!iC)return RA__default.default.unlink(e,A);let t=e+".DELETE."+crypto.randomBytes(16).toString("hex");RA__default.default.rename(e,t,i=>{if(i)return A(i);RA__default.default.unlink(t,A);});},iq=e=>{if(!iC)return RA__default.default.unlinkSync(e);let A=e+".DELETE."+crypto.randomBytes(16).toString("hex");RA__default.default.renameSync(e,A),RA__default.default.unlinkSync(A);},jN=(e,A,t)=>e!==void 0&&e===e>>>0?e:A!==void 0&&A===A>>>0?A:t,CD=class extends gC{[Nh]=false;[tC]=false;[MQ]=0;reservations=new z_;transform;writable=true;readable=false;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[Nh]=true,this[Gh]();},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=true;}else this.uid=void 0,this.gid=void 0,this.setOwner=false;this.preserveOwner=e.preserveOwner===void 0&&typeof e.uid!="number"?process.getuid?.()===0:!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:eq,this.forceChown=e.forceChown===true,this.win32=!!e.win32||iC,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=hA(ue__default.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:$_():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",A=>this[YN](A));}warn(e,A,t={}){return (e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(t.recoverable=false),super.warn(e,A,t)}[Gh](){this[Nh]&&this[MQ]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"));}[Mh](e,A){let t=e[A],{type:i}=e;if(!t||this.preservePaths)return true;let[g,r]=rD(t),n=r.replaceAll(/\\/g,"/").split("/");if(n.includes("..")||iC&&/^[a-z]:\.\.$/i.test(n[0]??"")){if(A==="path"||i==="Link")return this.warn("TAR_ENTRY_ERROR",`${A} contains '..'`,{entry:e,[A]:t}),false;let s=ue__default.default.posix.dirname(e.path),o=ue__default.default.posix.normalize(ue__default.default.posix.join(s,n.join("/")));if(o.startsWith("../")||o==="..")return this.warn("TAR_ENTRY_ERROR",`${A} escapes extraction directory`,{entry:e,[A]:t}),false}return g&&(e[A]=String(r),this.warn("TAR_ENTRY_INFO",`stripping ${g} from absolute ${A}`,{entry:e,[A]:t})),true}[qN](e){let A=hA(e.path),t=A.split("/");if(this.strip){if(t.length<this.strip)return false;if(e.type==="Link"){let i=hA(String(e.linkpath)).split("/");if(i.length>=this.strip)e.linkpath=i.slice(this.strip).join("/");else return false}t.splice(0,this.strip),e.path=t.join("/");}if(isFinite(this.maxDepth)&&t.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:A,depth:t.length,maxDepth:this.maxDepth}),false;if(!this[Mh](e,"path")||!this[Mh](e,"linkpath"))return false;if(e.absolute=ue__default.default.isAbsolute(e.path)?hA(ue__default.default.resolve(e.path)):hA(ue__default.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:hA(e.path),resolvedPath:e.absolute,cwd:this.cwd}),false;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return false;if(this.win32){let{root:i}=ue__default.default.win32.parse(String(e.absolute));e.absolute=i+RN(String(e.absolute).slice(i.length));let{root:g}=ue__default.default.win32.parse(e.path);e.path=g+RN(e.path.slice(g.length));}return true}[YN](e){if(!this[qN](e))return e.resume();switch(Lh__default.default.equal(typeof e.absolute,"string"),e.type){case "Directory":case "GNUDumpDir":e.mode&&(e.mode=e.mode|448);case "File":case "OldFile":case "ContiguousFile":case "Link":case "SymbolicLink":return this[Vh](e);default:return this[_N](e)}}[me](e,A){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:A}),this[BI](),A.resume());}[Ug](e,A,t){__(hA(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:A},t);}[$s](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[AC](e){return jN(this.uid,e.uid,this.processUid)}[eC](e){return jN(this.gid,e.gid,this.processGid)}[Xh](e,A){let t=typeof e.mode=="number"?e.mode&4095:this.fmode,i=new WQ(String(e.absolute),{flags:dG(e.size),mode:t,autoClose:false});i.on("error",s=>{i.fd&&RA__default.default.close(i.fd,()=>{}),i.write=()=>true,this[me](s,e),A();});let g=1,r=s=>{if(s){i.fd&&RA__default.default.close(i.fd,()=>{}),this[me](s,e),A();return}--g===0&&i.fd!==void 0&&RA__default.default.close(i.fd,o=>{o?this[me](o,e):this[BI](),A();});};i.on("finish",()=>{let s=String(e.absolute),o=i.fd;if(typeof o=="number"&&e.mtime&&!this.noMtime){g++;let a=e.atime||new Date,B=e.mtime;RA__default.default.futimes(o,a,B,u=>u?RA__default.default.utimes(s,a,B,Q=>r(Q&&u)):r());}if(typeof o=="number"&&this[$s](e)){g++;let a=this[AC](e),B=this[eC](e);typeof a=="number"&&typeof B=="number"&&RA__default.default.fchown(o,a,B,u=>u?RA__default.default.chown(s,a,B,Q=>r(Q&&u)):r());}r();});let n=this.transform&&this.transform(e)||e;n!==e&&(n.on("error",s=>{this[me](s,e),A();}),e.pipe(n)),n.pipe(i);}[zh](e,A){let t=typeof e.mode=="number"?e.mode&4095:this.dmode;this[Ug](String(e.absolute),t,i=>{if(i){this[me](i,e),A();return}let g=1,r=()=>{--g===0&&(A(),this[BI](),e.resume());};e.mtime&&!this.noMtime&&(g++,RA__default.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,r)),this[$s](e)&&(g++,RA__default.default.chown(String(e.absolute),Number(this[AC](e)),Number(this[eC](e)),r)),r();});}[_N](e){e.unsupported=true,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume();}[PN](e,A){let t=hA(ue__default.default.relative(this.cwd,ue__default.default.resolve(ue__default.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Vs](e,this.cwd,t,()=>this[YQ](e,String(e.linkpath),"symlink",A),i=>{this[me](i,e),A();});}[ON](e,A){let t=hA(ue__default.default.resolve(this.cwd,String(e.linkpath))),i=hA(String(e.linkpath)).split("/");this[Vs](e,this.cwd,i,()=>this[YQ](e,t,"link",A),g=>{this[me](g,e),A();});}[Vs](e,A,t,i,g){let r=t.shift();if(this.preservePaths||r===void 0)return i();let n=ue__default.default.resolve(A,r);RA__default.default.lstat(n,(s,o)=>{if(s)return i();if(o?.isSymbolicLink())return g(new eE(n,ue__default.default.resolve(n,t.join("/"))));this[Vs](e,n,t,i,g);});}[WN](){this[MQ]++;}[BI](){this[MQ]--,this[Gh]();}[$h](e){this[BI](),e.resume();}[Zh](e,A){return e.type==="File"&&!this.unlink&&A.isFile()&&A.nlink<=1&&!iC}[Vh](e){this[WN]();let A=[e.path];e.linkpath&&A.push(e.linkpath),this.reservations.reserve(A,t=>this[TN](e,t));}[TN](e,A){let t=n=>{A(n);},i=()=>{this[Ug](this.cwd,this.dmode,n=>{if(n){this[me](n,e),t();return}this[tC]=true,g();});},g=()=>{if(e.absolute!==this.cwd){let n=hA(ue__default.default.dirname(String(e.absolute)));if(n!==this.cwd)return this[Ug](n,this.dmode,s=>{if(s){this[me](s,e),t();return}r();})}r();},r=()=>{RA__default.default.lstat(String(e.absolute),(n,s)=>{if(s&&(this.keep||this.newer&&s.mtime>(e.mtime??s.mtime))){this[$h](e),t();return}if(n||this[Zh](e,s))return this[Ht](null,e,t);if(s.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(s.mode&4095)!==e.mode,a=B=>this[Ht](B??null,e,t);return o?RA__default.default.chmod(String(e.absolute),Number(e.mode),a):a()}if(e.absolute!==this.cwd)return RA__default.default.rmdir(String(e.absolute),o=>this[Ht](o??null,e,t))}if(e.absolute===this.cwd)return this[Ht](null,e,t);tq(String(e.absolute),o=>this[Ht](o??null,e,t));});};this[tC]?g():i();}[Ht](e,A,t){if(e){this[me](e,A),t();return}switch(A.type){case "File":case "OldFile":case "ContiguousFile":return this[Xh](A,t);case "Link":return this[ON](A,t);case "SymbolicLink":return this[PN](A,t);case "Directory":case "GNUDumpDir":return this[zh](A,t)}}[YQ](e,A,t,i){RA__default.default[t](A,String(e.absolute),g=>{g?this[me](g,e):(this[BI](),e.resume()),i();});}},Ws=e=>{try{return [null,e()]}catch(A){return [A,null]}},SG=class extends CD{sync=true;[Ht](e,A){return super[Ht](e,A,()=>{})}[Vh](e){if(!this[tC]){let g=this[Ug](this.cwd,this.dmode);if(g)return this[me](g,e);this[tC]=true;}if(e.absolute!==this.cwd){let g=hA(ue__default.default.dirname(String(e.absolute)));if(g!==this.cwd){let r=this[Ug](g,this.dmode);if(r)return this[me](r,e)}}let[A,t]=Ws(()=>RA__default.default.lstatSync(String(e.absolute)));if(t&&(this.keep||this.newer&&t.mtime>(e.mtime??t.mtime)))return this[$h](e);if(A||this[Zh](e,t))return this[Ht](null,e);if(t.isDirectory()){if(e.type==="Directory"){let r=this.chmod&&e.mode&&(t.mode&4095)!==e.mode,[n]=r?Ws(()=>{RA__default.default.chmodSync(String(e.absolute),Number(e.mode));}):[];return this[Ht](n,e)}let[g]=Ws(()=>RA__default.default.rmdirSync(String(e.absolute)));this[Ht](g,e);}let[i]=e.absolute===this.cwd?[]:Ws(()=>iq(String(e.absolute)));this[Ht](i,e);}[Xh](e,A){let t=typeof e.mode=="number"?e.mode&4095:this.fmode,i=n=>{let s;try{RA__default.default.closeSync(g);}catch(o){s=o;}(n||s)&&this[me](n||s,e),A();},g;try{g=RA__default.default.openSync(String(e.absolute),dG(e.size),t);}catch(n){return i(n)}let r=this.transform&&this.transform(e)||e;r!==e&&(r.on("error",n=>this[me](n,e)),e.pipe(r)),r.on("data",n=>{try{RA__default.default.writeSync(g,n,0,n.length);}catch(s){i(s);}}),r.on("end",()=>{let n=null;if(e.mtime&&!this.noMtime){let s=e.atime||new Date,o=e.mtime;try{RA__default.default.futimesSync(g,s,o);}catch(a){try{RA__default.default.utimesSync(String(e.absolute),s,o);}catch{n=a;}}}if(this[$s](e)){let s=this[AC](e),o=this[eC](e);try{RA__default.default.fchownSync(g,Number(s),Number(o));}catch(a){try{RA__default.default.chownSync(String(e.absolute),Number(s),Number(o));}catch{n=n||a;}}}i(n);});}[zh](e,A){let t=typeof e.mode=="number"?e.mode&4095:this.dmode,i=this[Ug](String(e.absolute),t);if(i){this[me](i,e),A();return}if(e.mtime&&!this.noMtime)try{RA__default.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime);}catch{}if(this[$s](e))try{RA__default.default.chownSync(String(e.absolute),Number(this[AC](e)),Number(this[eC](e)));}catch{}A(),e.resume();}[Ug](e,A){try{return W_(hA(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:A})}catch(t){return t}}[Vs](e,A,t,i,g){if(this.preservePaths||t.length===0)return i();let r=A;for(let n of t){r=ue__default.default.resolve(r,n);let[s,o]=Ws(()=>RA__default.default.lstatSync(r));if(s)return i();if(o.isSymbolicLink())return g(new eE(r,ue__default.default.resolve(A,t.join("/"))))}i();}[YQ](e,A,t,i){let g=`${t}Sync`;try{RA__default.default[g](A,String(e.absolute)),i(),e.resume();}catch(r){return this[me](r,e)}}},gq=e=>{let A=new SG(e),t=e.file,i=RA__default.default.statSync(t),g=e.maxReadSize||16*1024*1024;new dO(t,{readSize:g,size:i.size}).pipe(A);},rq=(e,A)=>{let t=new CD(e),i=e.maxReadSize||16*1024*1024,g=e.file;return new Promise((r,n)=>{t.on("error",n),t.on("close",r),RA__default.default.stat(g,(s,o)=>{if(s)n(s);else {let a=new eD(g,{readSize:i,size:o.size});a.on("error",n),a.pipe(t);}});})},RG=rC(gq,rq,e=>new SG(e),e=>new CD(e),(e,A)=>{A?.length&&nG(e,A);}),nq=(e,A)=>{let t=new sD(e),i=true,g,r;try{try{g=RA__default.default.openSync(e.file,"r+");}catch(o){if(o?.code==="ENOENT")g=RA__default.default.openSync(e.file,"w+");else throw o}let n=RA__default.default.fstatSync(g),s=Buffer.alloc(512);A:for(r=0;r<n.size;r+=512){for(let B=0,u=0;B<512;B+=u){if(u=RA__default.default.readSync(g,s,B,s.length-B,r+B),r===0&&s[0]===31&&s[1]===139)throw new Error("cannot append to compressed archives");if(!u)break A}let o=new Rr(s);if(!o.cksumValid)break;let a=512*Math.ceil((o.size||0)/512);if(r+a+512>n.size)break;r+=a,e.mtimeCache&&o.mtime&&e.mtimeCache.set(String(o.path),o.mtime);}i=!1,Iq(e,t,r,g,A);}finally{if(i)try{RA__default.default.closeSync(g);}catch{}}},Iq=(e,A,t,i,g)=>{let r=new XN(e.file,{fd:i,start:t});A.pipe(r),Cq(A,g);},sq=(e,A)=>{A=Array.from(A);let t=new zQ(e),i=(g,r,n)=>{let s=(Q,I)=>{Q?RA__default.default.close(g,C=>n(Q)):n(null,I);},o=0;if(r===0)return s(null,0);let a=0,B=Buffer.alloc(512),u=(Q,I)=>{if(Q||I===void 0)return s(Q);if(a+=I,a<512&&I)return RA__default.default.read(g,B,a,B.length-a,o+a,u);if(o===0&&B[0]===31&&B[1]===139)return s(new Error("cannot append to compressed archives"));if(a<512)return s(null,o);let C=new Rr(B);if(!C.cksumValid)return s(null,o);let E=512*Math.ceil((C.size??0)/512);if(o+E+512>r||(o+=E+512,o>=r))return s(null,o);e.mtimeCache&&C.mtime&&e.mtimeCache.set(String(C.path),C.mtime),a=0,RA__default.default.read(g,B,0,512,o,u);};RA__default.default.read(g,B,0,512,o,u);};return new Promise((g,r)=>{t.on("error",r);let n="r+",s=(o,a)=>{if(o&&o.code==="ENOENT"&&n==="r+")return n="w+",RA__default.default.open(e.file,n,s);if(o||!a)return r(o);RA__default.default.fstat(a,(B,u)=>{if(B)return RA__default.default.close(a,()=>r(B));i(a,u.size,(Q,I)=>{if(Q)return r(Q);let C=new WQ(e.file,{fd:a,start:I});t.pipe(C),C.on("error",r),C.on("close",g),oq(t,A);});});};RA__default.default.open(e.file,n,s);})},Cq=(e,A)=>{A.forEach(t=>{t.charAt(0)==="@"?ZQ({file:ue__default.default.resolve(e.cwd,t.slice(1)),sync:true,noResume:true,onReadEntry:i=>e.add(i)}):e.add(t);}),e.end();},oq=async(e,A)=>{for(let t of A)t.charAt(0)==="@"?await ZQ({file:ue__default.default.resolve(String(e.cwd),t.slice(1)),noResume:true,onReadEntry:i=>e.add(i)}):e.add(t);e.end();},js=rC(nq,sq,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(e,A)=>{if(!kO(e))throw new TypeError("file is required");if(e.gzip||e.brotli||e.zstd||e.file.endsWith(".br")||e.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!A?.length)throw new TypeError("no paths specified to add/replace")});rC(js.syncFile,js.asyncFile,js.syncNoFile,js.asyncNoFile,(e,A=[])=>{js.validate?.(e,A),Bq(e);});var Bq=e=>{let A=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=A?(t,i)=>A(t,i)&&!((e.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((e.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0));};var MG=100;function Eq(e){return `${e.authUrl}/images/`}async function BD(e,A,t){let i=[],g=t?{tags:{some:{name:{eq:t}}}}:{},r=0;for(;;){let n=await Et(e,A,`query ExportAssets($where: _assetWhere, $limit: Int, $offset: Int, $sort: [_assetSort!]) {
|
|
210
210
|
_assets(where: $where, limit: $limit, offset: $offset, sort: $sort) {
|
|
211
211
|
_id
|
|
212
212
|
extension
|