ts-pantry 0.10.14 → 0.10.16

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.
Files changed (36) hide show
  1. package/dist/bin/cli.js +3 -3
  2. package/dist/{chunk-wzw3xbn2.js → chunk-426knbt7.js} +1 -1
  3. package/dist/{chunk-hk7ns20y.js → chunk-cy2605xk.js} +1 -1
  4. package/dist/{chunk-tbgzzd68.js → chunk-n6yv503d.js} +1 -1
  5. package/dist/{chunk-ax2wz06f.js → chunk-s33swmha.js} +2 -2
  6. package/dist/chunk-tzzpsd63.js +1 -0
  7. package/dist/chunk-yn2wp55x.js +2 -0
  8. package/dist/packages/apps/codexopenaicom.d.ts +1 -1
  9. package/dist/packages/apps/cursorcom.d.ts +1 -1
  10. package/dist/packages/apps/diabrowsercom.d.ts +1 -1
  11. package/dist/packages/apps/discordcom.d.ts +1 -1
  12. package/dist/packages/aux4io.d.ts +1 -1
  13. package/dist/packages/bytebasecom.d.ts +1 -1
  14. package/dist/packages/cnqueryio.d.ts +1 -1
  15. package/dist/packages/cuelangorg.d.ts +1 -1
  16. package/dist/packages/encoredev.d.ts +1 -1
  17. package/dist/packages/github.com/ggerganov/llama.cpp.d.ts +1 -1
  18. package/dist/packages/github.com/yonaskolb/XcodeGen.d.ts +1 -1
  19. package/dist/packages/istioio.d.ts +1 -1
  20. package/dist/packages/laravelcom.d.ts +1 -1
  21. package/dist/packages/ohmyposhdev.d.ts +1 -1
  22. package/dist/packages/ollamaai.d.ts +1 -1
  23. package/dist/packages/openai.com/codex.d.ts +1 -1
  24. package/dist/packages/openblasnet.d.ts +1 -1
  25. package/dist/packages/opencodeai.d.ts +1 -1
  26. package/dist/packages/openshiftcom.d.ts +1 -1
  27. package/dist/packages/planetscalecom.d.ts +1 -1
  28. package/dist/packages/pocketbaseio.d.ts +1 -1
  29. package/dist/packages/projenio.d.ts +1 -1
  30. package/dist/packages/railwayapp.d.ts +1 -1
  31. package/dist/packages/tailwindcsscom.d.ts +1 -1
  32. package/dist/src/index.js +1 -1
  33. package/dist/src/testing/index.js +1 -1
  34. package/package.json +2 -2
  35. package/dist/chunk-c7csvans.js +0 -2
  36. package/dist/chunk-sa2nn9dg.js +0 -1
package/dist/bin/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{Da as c6,Ea as n6,Ga as l6,Ja as p6,L as C6,La as r6,M as S6,N as v6,P as y6,V as k6,W as h6,X as _6,Y as g6,Z as f6,ba as G6,ca as u6,da as i6}from"../chunk-ax2wz06f.js";import"../chunk-c0pn1x0j.js";import"../chunk-sa2nn9dg.js";import{kb as p,lb as m6,nb as X6,ob as r,tb as d6,xb as U6}from"../chunk-4qa9dfjs.js";import"../chunk-jkfbbcs7.js";import"../chunk-qyfapvcb.js";import{Pb as l,Qb as q6,Rb as J6}from"../chunk-py3ymxjf.js";import"../chunk-wzw3xbn2.js";import"../chunk-c7csvans.js";import{jc as P6,kc as Q4}from"../chunk-dnw4x7bh.js";import{oc as h}from"../chunk-ghzc37v7.js";import V from"node:fs";import B from"node:path";import H from"node:process";import{existsSync as t6}from"node:fs";import a from"node:fs/promises";import K6 from"node:os";import s from"node:path";import k from"node:process";import{EventEmitter as o6}from"node:events";import v from"node:process";import V6 from"node:process";import z6 from"node:process";import u from"node:process";import f from"node:process";import L6 from"node:tty";import fz,{stdin as E4,stdout as x4}from"node:process";import M6,{stdin as uz,stdout as iz}from"node:process";import cz from"node:readline";class B6{configPath;config=null;events=[];retryCount=0;maxRetries=3;retryDelayMs=1000;constructor(){let z=K6.homedir(),$=s.join(z,".config","clapp");this.configPath=s.join($,"telemetry.json")}async isEnabled(){if(k.env.DO_NOT_TRACK==="1"||k.env.DO_NOT_TRACK==="true")return!1;if(k.env.NO_TELEMETRY==="1"||k.env.NO_TELEMETRY==="true")return!1;return(await this.loadConfig()).enabled}async enable(){let z=await this.loadConfig();if(z.enabled=!0,!z.userId)z.userId=this.generateUserId();await this.saveConfig(z)}async disable(){let z=await this.loadConfig();z.enabled=!1,await this.saveConfig(z)}async track(z,$){if(!await this.isEnabled())return;let Z={event:z,...$,timestamp:Date.now(),platform:K6.platform(),nodeVersion:k.version};if(this.events.push(Z),this.events.length>=10)await this.send()}async trackCommand(z,$){await this.track("command",{command:z,duration:$})}async trackError(z,$){await this.track("error",{error:z,command:$})}async send(){if(!await this.isEnabled()||this.events.length===0)return!0;try{this.events=[],this.retryCount=0;let $=await this.loadConfig();return $.lastSent=Date.now(),await this.saveConfig($),!0}catch{if(this.retryCount<this.maxRetries){this.retryCount++;let $=this.retryDelayMs*2**(this.retryCount-1);return await this.sleep($),this.send()}return this.events=[],this.retryCount=0,!1}}async flush(){if(this.events.length===0)return!0;return this.send()}sleep(z){return new Promise(($)=>setTimeout($,z))}async status(){let z=await this.loadConfig();return{enabled:z.enabled,doNotTrack:k.env.DO_NOT_TRACK==="1"||k.env.DO_NOT_TRACK==="true",eventsQueued:this.events.length,lastSent:z.lastSent}}async loadConfig(){if(this.config)return this.config;try{if(t6(this.configPath)){let z=await a.readFile(this.configPath,"utf-8");return this.config=JSON.parse(z),this.config}}catch{}return this.config={enabled:!1},this.config}async saveConfig(z){this.config=z;try{let $=s.dirname(this.configPath);await a.mkdir($,{recursive:!0}),await a.writeFile(this.configPath,JSON.stringify(z,null,2),"utf-8")}catch{}}generateUserId(){let z=Math.random().toString(36).substring(2,15),$=Date.now().toString(36);return`${z}-${$}`}}var V4=new B6;function e6(z,$={}){let Q={_:[]},Z=$.alias||{},Y=new Set($.boolean||[]),q={};for(let U of Object.keys(Z))for(let X of Z[U])q[X]=U;for(let U of Y)if(Z[U])for(let X of Z[U])Y.add(X);function J(U,X){let G=q[U]||U;if(Q[G]=X,Z[G])for(let K of Z[G])Q[K]=X;if(q[U]&&Z[q[U]])for(let K of Z[q[U]])Q[K]=X;Q[U]=X}for(let U=0;U<z.length;U++){let X=z[U];if(X==="--"){Q._.push(...z.slice(U+1));break}if(X.startsWith("--")){let G=X.indexOf("=");if(G!==-1){let K=X.slice(2,G),W=X.slice(G+1);J(K,W)}else{let K=X.slice(2);if(K.startsWith("no-")){let j=K.slice(3);J(j,!1);continue}let W=q[K]||K;if(Y.has(W)||Y.has(K))J(K,!0);else{let j=z[U+1];if(j!==void 0&&!j.startsWith("-"))J(K,j),U++;else J(K,!0)}}}else if(X.startsWith("-")&&X.length>1){let G=X.slice(1);for(let K=0;K<G.length;K++){let W=G[K],j=q[W]||W;if(K===G.length-1&&!Y.has(j)&&!Y.has(W)){let F=z[U+1];if(F!==void 0&&!F.startsWith("-"))J(W,F),U++;else J(W,!0)}else J(W,!0)}}else Q._.push(X)}return Q}function e(z){return z.replace(/[<[].+/,"").trim()}function zz(z){let $=/<([^>]+)>/g,Q=/\[([^\]]+)\]/g,Z=[],Y=(U)=>{let X=!1,G=U[1];if(G.startsWith("..."))G=G.slice(3),X=!0;return{required:U[0].startsWith("<"),value:G,variadic:X}},q;while(q=$.exec(z))Z.push(Y(q));let J;while(J=Q.exec(z))Z.push(Y(J));return Z}function $z(z){let $={alias:{},boolean:[]};for(let[Q,Z]of z.entries()){if(Z.names.length>1)$.alias[Z.names[0]]=Z.names.slice(1);if(Z.isBoolean)if(Z.negated){if(!z.some((q,J)=>{return J!==Q&&q.names.some((U)=>Z.names.includes(U))&&typeof q.required==="boolean"}))$.boolean.push(Z.names[0])}else $.boolean.push(Z.names[0])}return $}function F6(z){return z.reduce(($,Q)=>$.length>=Q.length?$:Q,"")}function t(z,$){return z.length>=$?z:`${z}${" ".repeat($-z.length)}`}function Qz(z){return z.replace(/([a-z])-([a-z])/g,($,Q,Z)=>{return Q+Z.toUpperCase()})}function Zz(z,$,Q){let Z=0,Y=$.length,q=z,J;for(;Z<Y;++Z)J=q[$[Z]],q=q[$[Z]]=Z===Y-1?Q:J!=null?J:!!~$[Z+1].indexOf(".")||!(+$[Z+1]>-1)?{}:[]}function Yz(z,$){for(let Q of Object.keys($)){let Z=$[Q];if(Z.shouldTransform){if(z[Q]=Array.prototype.concat.call([],z[Q]),typeof Z.transformFunction==="function")z[Q]=z[Q].map(Z.transformFunction)}}}function qz(z){let $=/([^\\/]+)$/.exec(z);return $?$[1]:""}function N6(z){return z.split(".").map(($,Q)=>{return Q===0?Qz($):$}).join(".")}class d extends Error{exitCode=2;isUsageError=!0;constructor(z){super(z);if(this.name=this.constructor.name,typeof Error.captureStackTrace==="function")Error.captureStackTrace(this,this.constructor);else this.stack=Error(z).stack}format(z=!1){if(z&&this.stack)return`${this.message}
2
+ import{Da as c6,Ea as n6,Ga as l6,Ja as p6,L as C6,La as r6,M as S6,N as v6,P as y6,V as k6,W as h6,X as _6,Y as g6,Z as f6,ba as G6,ca as u6,da as i6}from"../chunk-s33swmha.js";import"../chunk-c0pn1x0j.js";import"../chunk-tzzpsd63.js";import{kb as p,lb as m6,nb as X6,ob as r,tb as d6,xb as U6}from"../chunk-4qa9dfjs.js";import"../chunk-jkfbbcs7.js";import"../chunk-qyfapvcb.js";import{Pb as l,Qb as q6,Rb as J6}from"../chunk-py3ymxjf.js";import"../chunk-426knbt7.js";import"../chunk-yn2wp55x.js";import{jc as P6,kc as Q4}from"../chunk-dnw4x7bh.js";import{oc as h}from"../chunk-ghzc37v7.js";import V from"node:fs";import B from"node:path";import H from"node:process";import{existsSync as t6}from"node:fs";import a from"node:fs/promises";import K6 from"node:os";import s from"node:path";import k from"node:process";import{EventEmitter as o6}from"node:events";import v from"node:process";import V6 from"node:process";import z6 from"node:process";import u from"node:process";import f from"node:process";import L6 from"node:tty";import fz,{stdin as E4,stdout as x4}from"node:process";import M6,{stdin as uz,stdout as iz}from"node:process";import cz from"node:readline";class B6{configPath;config=null;events=[];retryCount=0;maxRetries=3;retryDelayMs=1000;constructor(){let z=K6.homedir(),$=s.join(z,".config","clapp");this.configPath=s.join($,"telemetry.json")}async isEnabled(){if(k.env.DO_NOT_TRACK==="1"||k.env.DO_NOT_TRACK==="true")return!1;if(k.env.NO_TELEMETRY==="1"||k.env.NO_TELEMETRY==="true")return!1;return(await this.loadConfig()).enabled}async enable(){let z=await this.loadConfig();if(z.enabled=!0,!z.userId)z.userId=this.generateUserId();await this.saveConfig(z)}async disable(){let z=await this.loadConfig();z.enabled=!1,await this.saveConfig(z)}async track(z,$){if(!await this.isEnabled())return;let Z={event:z,...$,timestamp:Date.now(),platform:K6.platform(),nodeVersion:k.version};if(this.events.push(Z),this.events.length>=10)await this.send()}async trackCommand(z,$){await this.track("command",{command:z,duration:$})}async trackError(z,$){await this.track("error",{error:z,command:$})}async send(){if(!await this.isEnabled()||this.events.length===0)return!0;try{this.events=[],this.retryCount=0;let $=await this.loadConfig();return $.lastSent=Date.now(),await this.saveConfig($),!0}catch{if(this.retryCount<this.maxRetries){this.retryCount++;let $=this.retryDelayMs*2**(this.retryCount-1);return await this.sleep($),this.send()}return this.events=[],this.retryCount=0,!1}}async flush(){if(this.events.length===0)return!0;return this.send()}sleep(z){return new Promise(($)=>setTimeout($,z))}async status(){let z=await this.loadConfig();return{enabled:z.enabled,doNotTrack:k.env.DO_NOT_TRACK==="1"||k.env.DO_NOT_TRACK==="true",eventsQueued:this.events.length,lastSent:z.lastSent}}async loadConfig(){if(this.config)return this.config;try{if(t6(this.configPath)){let z=await a.readFile(this.configPath,"utf-8");return this.config=JSON.parse(z),this.config}}catch{}return this.config={enabled:!1},this.config}async saveConfig(z){this.config=z;try{let $=s.dirname(this.configPath);await a.mkdir($,{recursive:!0}),await a.writeFile(this.configPath,JSON.stringify(z,null,2),"utf-8")}catch{}}generateUserId(){let z=Math.random().toString(36).substring(2,15),$=Date.now().toString(36);return`${z}-${$}`}}var V4=new B6;function e6(z,$={}){let Q={_:[]},Z=$.alias||{},Y=new Set($.boolean||[]),q={};for(let U of Object.keys(Z))for(let X of Z[U])q[X]=U;for(let U of Y)if(Z[U])for(let X of Z[U])Y.add(X);function J(U,X){let G=q[U]||U;if(Q[G]=X,Z[G])for(let K of Z[G])Q[K]=X;if(q[U]&&Z[q[U]])for(let K of Z[q[U]])Q[K]=X;Q[U]=X}for(let U=0;U<z.length;U++){let X=z[U];if(X==="--"){Q._.push(...z.slice(U+1));break}if(X.startsWith("--")){let G=X.indexOf("=");if(G!==-1){let K=X.slice(2,G),W=X.slice(G+1);J(K,W)}else{let K=X.slice(2);if(K.startsWith("no-")){let j=K.slice(3);J(j,!1);continue}let W=q[K]||K;if(Y.has(W)||Y.has(K))J(K,!0);else{let j=z[U+1];if(j!==void 0&&!j.startsWith("-"))J(K,j),U++;else J(K,!0)}}}else if(X.startsWith("-")&&X.length>1){let G=X.slice(1);for(let K=0;K<G.length;K++){let W=G[K],j=q[W]||W;if(K===G.length-1&&!Y.has(j)&&!Y.has(W)){let F=z[U+1];if(F!==void 0&&!F.startsWith("-"))J(W,F),U++;else J(W,!0)}else J(W,!0)}}else Q._.push(X)}return Q}function e(z){return z.replace(/[<[].+/,"").trim()}function zz(z){let $=/<([^>]+)>/g,Q=/\[([^\]]+)\]/g,Z=[],Y=(U)=>{let X=!1,G=U[1];if(G.startsWith("..."))G=G.slice(3),X=!0;return{required:U[0].startsWith("<"),value:G,variadic:X}},q;while(q=$.exec(z))Z.push(Y(q));let J;while(J=Q.exec(z))Z.push(Y(J));return Z}function $z(z){let $={alias:{},boolean:[]};for(let[Q,Z]of z.entries()){if(Z.names.length>1)$.alias[Z.names[0]]=Z.names.slice(1);if(Z.isBoolean)if(Z.negated){if(!z.some((q,J)=>{return J!==Q&&q.names.some((U)=>Z.names.includes(U))&&typeof q.required==="boolean"}))$.boolean.push(Z.names[0])}else $.boolean.push(Z.names[0])}return $}function F6(z){return z.reduce(($,Q)=>$.length>=Q.length?$:Q,"")}function t(z,$){return z.length>=$?z:`${z}${" ".repeat($-z.length)}`}function Qz(z){return z.replace(/([a-z])-([a-z])/g,($,Q,Z)=>{return Q+Z.toUpperCase()})}function Zz(z,$,Q){let Z=0,Y=$.length,q=z,J;for(;Z<Y;++Z)J=q[$[Z]],q=q[$[Z]]=Z===Y-1?Q:J!=null?J:!!~$[Z+1].indexOf(".")||!(+$[Z+1]>-1)?{}:[]}function Yz(z,$){for(let Q of Object.keys($)){let Z=$[Q];if(Z.shouldTransform){if(z[Q]=Array.prototype.concat.call([],z[Q]),typeof Z.transformFunction==="function")z[Q]=z[Q].map(Z.transformFunction)}}}function qz(z){let $=/([^\\/]+)$/.exec(z);return $?$[1]:""}function N6(z){return z.split(".").map(($,Q)=>{return Q===0?Qz($):$}).join(".")}class d extends Error{exitCode=2;isUsageError=!0;constructor(z){super(z);if(this.name=this.constructor.name,typeof Error.captureStackTrace==="function")Error.captureStackTrace(this,this.constructor);else this.stack=Error(z).stack}format(z=!1){if(z&&this.stack)return`${this.message}
3
3
 
4
4
  Stack trace:
5
5
  ${this.stack}`;return this.message}}function Jz(){let{env:z}=V6,{TERM:$,TERM_PROGRAM:Q}=z;if(V6.platform!=="win32")return $!=="linux";return Boolean(z.WT_SESSION)||Boolean(z.TERMINUS_SUBLIME)||z.ConEmuTask==="{cmd::Cmder}"||Q==="Terminus-Sublime"||Q==="vscode"||$==="xterm-256color"||$==="alacritty"||$==="rxvt-unicode"||$==="rxvt-unicode-256color"||z.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var n="\x1B",x=`${n}[`;var S={to(z,$){if(!$)return`${x}${z+1}G`;return`${x}${$+1};${z+1}H`},move(z,$){let Q="";if(z<0)Q+=`${x}${-z}D`;else if(z>0)Q+=`${x}${z}C`;if($<0)Q+=`${x}${-$}A`;else if($>0)Q+=`${x}${$}B`;return Q},up:(z=1)=>`${x}${z}A`,down:(z=1)=>`${x}${z}B`,forward:(z=1)=>`${x}${z}C`,backward:(z=1)=>`${x}${z}D`,nextLine:(z=1)=>`${x}E`.repeat(z),prevLine:(z=1)=>`${x}F`.repeat(z),left:`${x}G`,hide:`${x}?25l`,show:`${x}?25h`,save:`${n}7`,restore:`${n}8`};var o={screen:`${x}2J`,up:(z=1)=>`${x}1J`.repeat(z),down:(z=1)=>`${x}J`.repeat(z),line:`${x}2K`,lineEnd:`${x}K`,lineStart:`${x}1K`,lines(z){let $="";for(let Q=0;Q<z;Q++)$+=this.line+(Q<z-1?S.up():"");if(z)$+=S.left;return $}},w4={screen:`${n}c`};function Xz(z,$){let Q=[];for(let Z=0;Z<=$.length;Z++)Q[Z]=[Z];for(let Z=0;Z<=z.length;Z++)Q[0][Z]=Z;for(let Z=1;Z<=$.length;Z++)for(let Y=1;Y<=z.length;Y++)if($.charAt(Z-1)===z.charAt(Y-1))Q[Z][Y]=Q[Z-1][Y-1];else Q[Z][Y]=Math.min(Q[Z-1][Y-1]+1,Q[Z][Y-1]+1,Q[Z-1][Y]+1);return Q[$.length][z.length]}function b6(z,$,Q=2,Z=3){return $.map((Y)=>({cmd:Y,distance:Xz(z,Y)})).filter(({distance:Y})=>Y<=Q).sort((Y,q)=>Y.distance-q.distance).slice(0,Z).map(({cmd:Y})=>Y)}class D6{rawName;description;name;names;isBoolean;required;config;negated;constructor(z,$,Q){if(this.rawName=z,this.description=$,this.config=Object.assign({},Q),z=z.replace(/\.\*/g,""),this.negated=!1,this.names=e(z).split(",").map((Z)=>{let Y=Z.trim().replace(/^-{1,2}/,"");if(Y.startsWith("no-"))this.negated=!0,Y=Y.replace(/^no-/,"");return N6(Y)}).sort((Z,Y)=>Z.length>Y.length?1:-1),this.name=this.names[this.names.length-1],this.negated&&this.config.default==null)this.config.default=!0;if(z.includes("<"))this.required=!0;else if(z.includes("["))this.required=!1;else this.isBoolean=!0}}var O4=z6.argv,Uz=`${z6.platform}-${z6.arch} bun-v${typeof Bun<"u"?Bun.version:"unknown"}`,W6=u.argv,Gz=`${u.platform}-${u.arch} node-${u.version}`;class $6{rawName;description;config;cli;options;aliasNames;name;namespace;args;commandAction;usageText;versionNumber;examples;helpCallback;globalCommand;beforeHooks;afterHooks;middleware;constructor(z,$,Q,Z){this.rawName=z,this.description=$,this.config=Q,this.cli=Z,this.options=[],this.aliasNames=[],this.name=e(z);let Y=e(z),q=Y.indexOf(":");if(q>0)this.namespace=Y.substring(0,q),this.name=Y.substring(q+1);if(this.args=zz(z),this.examples=[],this.beforeHooks=[],this.afterHooks=[],this.middleware=[],!Q)this.config={}}usage(z){return this.usageText=z,this}allowUnknownOptions(){return this.config.allowUnknownOptions=!0,this}ignoreOptionDefaultValue(){return this.config.ignoreOptionDefaultValue=!0,this}version(z,$="-v, --version"){return this.versionNumber=z,this.option($,"Display version number"),this}example(z){return this.examples.push(z),this}option(z,$,Q){let Z=new D6(z,$,Q);return this.options.push(Z),this}alias(z){return this.aliasNames.push(z),this}action(z){return this.commandAction=z,this}before(z){return this.beforeHooks.push(z),this}after(z){return this.afterHooks.push(z),this}use(z){return this.middleware.push(z),this}isMatched(z){if(this.aliasNames.includes(z))return!0;if(this.namespace)return`${this.namespace}:${this.name}`===z;return this.name===z}get isDefaultCommand(){return this.name===""||this.aliasNames.includes("!")}get isGlobalCommand(){return this instanceof Q6}get displayName(){return this.namespace?`${this.namespace}:${this.name}`:this.name}hasOption(z){return z=z.split(".")[0],!!this.options.find(($)=>{return $.names.includes(z)})}outputHelp(){let{name:z,commands:$}=this.cli,{versionNumber:Q,options:Z,helpCallback:Y}=this.cli.globalCommand,q=[{body:`${z}${Q?`/${Q}`:""}`}];if(q.push({title:"Usage",body:` $ ${z} ${this.usageText||this.rawName}`}),(this.isGlobalCommand||this.isDefaultCommand)&&$.length>0){let X=F6($.map((F)=>F.rawName)),G=new Map,K=[];for(let F of $)if(F.namespace){if(!G.has(F.namespace))G.set(F.namespace,[]);G.get(F.namespace).push(F)}else K.push(F);let W="";if(K.length>0)W+=K.map((F)=>{return` ${t(F.rawName,X.length)} ${F.description}`}).join(`
@@ -37,7 +37,7 @@ Run \`${this.name??"cli"} --help\` for usage.`;v.stderr.write(`${q}${Y}${J}
37
37
  `).length-1;this.output.write(S.move(-999,z*-1))}render(){let z=O6(this._render(this)??"",M6.stdout.columns,{hard:!0,trim:!1});if(z===this._prevFrame)return;if(this.state==="initial")this.output.write(S.hide);else{let $=dz(this._prevFrame,z);if(this.restoreCursor(),$&&$?.length===1){let Q=$[0];this.output.write(S.move(0,Q)),this.output.write(o.lines(1));let Z=z.split(`
38
38
  `);this.output.write(Z[Q]),this._prevFrame=z,this.output.write(S.move(0,Z.length-Q-1));return}if($&&$?.length>1){let Q=$[0];this.output.write(S.move(0,Q)),this.output.write(o.down());let Y=z.split(`
39
39
  `).slice(Q);this.output.write(Y.join(`
40
- `)),this._prevFrame=z;return}this.output.write(o.down())}if(this.output.write(z),this.state==="initial")this.state="active";this._prevFrame=z}}function pz(z,$){if(z===void 0)return 0;if($.length===0)return 0;let Z=$.findIndex((Y)=>Y.value===z);return Z!==-1?Z:0}function rz(z,$){return($.label??String($.value)).toLowerCase().includes(z.toLowerCase())}function az(z,$){if(!$)return;if(z)return $;return $[0]}class sz extends Y6{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#z=0;#Q="";#Z;#$;get cursor(){return this.#z}get userInputWithCursor(){if(!this.userInput)return i.inverse(i.hidden("_"));if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let z=this.userInput.slice(0,this._cursor),[$,...Q]=this.userInput.slice(this._cursor);return`${z}${i.inverse($)}${Q.join("")}`}get options(){if(typeof this.#$==="function")return this.#$();return this.#$}constructor(z){super(z);this.#$=z.options;let $=this.options;this.filteredOptions=[...$],this.multiple=z.multiple===!0,this.#Z=z.filter??rz;let Q;if(z.initialValue&&Array.isArray(z.initialValue))if(this.multiple)Q=z.initialValue;else Q=z.initialValue.slice(0,1);else if(!this.multiple&&this.options.length>0)Q=[this.options[0].value];if(Q)for(let Z of Q){let Y=$.findIndex((q)=>q.value===Z);if(Y!==-1)this.toggleSelected(Z),this.#z=Y}this.focusedValue=this.options[this.#z]?.value,this.on("key",(Z,Y)=>this.#Y(Z,Y)),this.on("userInput",(Z)=>this.#q(Z))}_isActionKey(z,$){return z==="\t"||this.multiple&&this.isNavigating&&$.name==="space"&&z!==void 0&&z!==""}#Y(z,$){let Q=$.name==="up",Z=$.name==="down",Y=$.name==="return";if(Q||Z){if(this.#z=Math.max(0,Math.min(this.#z+(Q?-1:1),this.filteredOptions.length-1)),this.focusedValue=this.filteredOptions[this.#z]?.value,!this.multiple)this.selectedValues=[this.focusedValue];this.isNavigating=!0}else if(Y)this.value=az(this.multiple,this.selectedValues);else if(this.multiple)if(this.focusedValue!==void 0&&($.name==="tab"||this.isNavigating&&$.name==="space"))this.toggleSelected(this.focusedValue);else this.isNavigating=!1;else{if(this.focusedValue)this.selectedValues=[this.focusedValue];this.isNavigating=!1}}deselectAll(){this.selectedValues=[]}toggleSelected(z){if(this.filteredOptions.length===0)return;if(this.multiple)if(this.selectedValues.includes(z))this.selectedValues=this.selectedValues.filter(($)=>$!==z);else this.selectedValues=[...this.selectedValues,z];else this.selectedValues=[z]}#q(z){if(z!==this.#Q){this.#Q=z;let $=this.options;if(z)this.filteredOptions=$.filter((Q)=>this.#Z(z,Q));else this.filteredOptions=[...$];if(this.#z=pz(this.focusedValue,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#z]?.value,!this.multiple)if(this.focusedValue!==void 0)this.toggleSelected(this.focusedValue);else this.deselectAll()}}}class tz extends Y6{options;cursor=0;#z;getGroupItems(z){return this.options.filter(($)=>$.group===z)}isGroupSelected(z){let $=this.getGroupItems(z),Q=this.value;if(Q===void 0)return!1;return $.every((Z)=>Q.includes(Z.value))}toggleValue(){let z=this.options[this.cursor];if(this.value===void 0)this.value=[];if(z.group===!0){let $=String(z.value),Q=this.getGroupItems($);if(this.isGroupSelected($))this.value=this.value.filter((Z)=>Q.findIndex((Y)=>Y.value===Z)===-1);else this.value=[...this.value,...Q.map((Z)=>Z.value)];this.value=Array.from(new Set(this.value))}else{let $=this.value.includes(z.value);this.value=$?this.value.filter((Q)=>Q!==z.value):[...this.value,z.value]}}constructor(z){super(z,!1);let{options:$}=z;this.#z=z.selectableGroups!==!1,this.options=Object.entries($).flatMap(([Q,Z])=>[{value:Q,group:!0,label:Q},...Z.map((Y)=>({...Y,group:Q}))]),this.value=[...z.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:Q})=>Q===z.cursorAt),this.#z?0:1),this.on("cursor",(Q)=>{switch(Q){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let Z=this.options[this.cursor]?.group===!0;if(!this.#z&&Z)this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let Z=this.options[this.cursor]?.group===!0;if(!this.#z&&Z)this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}case"space":this.toggleValue();break}})}}var oz=Jz();var b=(z,$)=>oz?z:$,P4=b("◆","*"),C4=b("■","x"),S4=b("▲","x"),v4=b("◇","o"),y4=b("┌","T"),ez=b("│","|"),k4=b("└","—"),h4=b("●",">"),_4=b("○"," "),g4=b("◻","[•]"),f4=b("◼","[+]"),m4=b("◻","[ ]"),d4=b("▪","•"),u4=b("─","-"),i4=b("╮","+"),c4=b("├","+"),n4=b("╯","+"),l4=b("●","•"),p4=b("◆","*"),r4=b("▲","!"),a4=b("■","x");var s4={light:b("─","-"),heavy:b("━","="),block:b("█","#")};function z4(){return`${i.gray(ez)} `}var t4=z4();var I6="0.10.14";Q4();async function Z4(z="src/pantry"){if(!V.existsSync(z))throw Error(`Pantry directory not found: ${z}. Please run 'bun ./bin/cli.ts update-pantry' first.`);let $=[];function Q(Z,Y=""){let q=V.readdirSync(Z,{withFileTypes:!0}),J=B.join(Z,"package.yml");if(Y&&V.existsSync(J))$.push(Y);for(let U of q)if(U.isDirectory()&&!U.name.startsWith(".")){let X=Y?`${Y}/${U.name}`:U.name,G=B.join(Z,U.name);Q(G,X)}}return Q(z),console.log(`\uD83D\uDCE6 Found ${$.length} packages in local pantry`),$.sort()}async function Y4(z=!1){async function $(J){let U=new URL("https://s3.amazonaws.com/dist.tea.xyz/");if(U.searchParams.set("list-type","2"),U.searchParams.set("prefix",""),U.searchParams.set("max-keys","1000"),J)U.searchParams.set("continuation-token",J);let X=await fetch(U.toString());if(!X.ok)throw Error(`Failed to fetch S3 listing: ${X.status}`);let G=await X.text(),K=[],W=G.match(/<Key>([^<]+)<\/Key>/g);if(W)for(let T of W){let E=T.replace(/<Key>([^<]+)<\/Key>/,"$1");K.push({Key:E})}let j=G.includes("<IsTruncated>true</IsTruncated>"),F=G.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/),L=F?F[1]:void 0;return{IsTruncated:j,NextContinuationToken:L,Contents:K}}console.log("Scraping packages from S3 registry...");let Q=new Set,Z;do{let J=await $(Z);for(let U of J.Contents){let X=U.Key,G=X.split("/");if(G.length===0)continue;if(G[0].startsWith(".")||G[0].includes(" ")||X.match(/\.(md|txt|yml|yaml|json)$/i))continue;let K=["darwin","linux","windows"],W=-1;for(let j=1;j<G.length;j++)if(K.includes(G[j])){W=j;break}if(W>0){let j=G.slice(0,W).join("/");if(j.includes("."))Q.add(j)}else if(G.length>=2&&G[0].includes(".")&&!G[1].startsWith("v")&&!G[1].match(/^\d/)){let j=`${G[0]}/${G[1]}`;Q.add(j)}else if(G.length>=1&&G[0].includes("."))Q.add(G[0])}Z=J.NextContinuationToken,console.log(`Found ${Q.size} packages so far...`)}while(Z);let Y=Array.from(Q).sort(),q=[];for(let J of Y){if(!J.includes(".")||J.match(/^[a-z0-9.-]+\.[a-z]{2,}(\/[\w.-]+){0,20}$/i)===null)continue;if(J.endsWith("/README.rst")||J.endsWith("/README")||J.includes("/docs/"))continue;if(J.endsWith("/.pkgroot"))continue;if(["amazon.com/aws","charm.sh","code.videolan.org","crates.io"].includes(J))continue;q.push(J)}return console.log(`\uD83D\uDCE6 Found ${q.length} valid packages in registry`),q}async function q4(z,$){let Z=`/**
40
+ `)),this._prevFrame=z;return}this.output.write(o.down())}if(this.output.write(z),this.state==="initial")this.state="active";this._prevFrame=z}}function pz(z,$){if(z===void 0)return 0;if($.length===0)return 0;let Z=$.findIndex((Y)=>Y.value===z);return Z!==-1?Z:0}function rz(z,$){return($.label??String($.value)).toLowerCase().includes(z.toLowerCase())}function az(z,$){if(!$)return;if(z)return $;return $[0]}class sz extends Y6{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#z=0;#Q="";#Z;#$;get cursor(){return this.#z}get userInputWithCursor(){if(!this.userInput)return i.inverse(i.hidden("_"));if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let z=this.userInput.slice(0,this._cursor),[$,...Q]=this.userInput.slice(this._cursor);return`${z}${i.inverse($)}${Q.join("")}`}get options(){if(typeof this.#$==="function")return this.#$();return this.#$}constructor(z){super(z);this.#$=z.options;let $=this.options;this.filteredOptions=[...$],this.multiple=z.multiple===!0,this.#Z=z.filter??rz;let Q;if(z.initialValue&&Array.isArray(z.initialValue))if(this.multiple)Q=z.initialValue;else Q=z.initialValue.slice(0,1);else if(!this.multiple&&this.options.length>0)Q=[this.options[0].value];if(Q)for(let Z of Q){let Y=$.findIndex((q)=>q.value===Z);if(Y!==-1)this.toggleSelected(Z),this.#z=Y}this.focusedValue=this.options[this.#z]?.value,this.on("key",(Z,Y)=>this.#Y(Z,Y)),this.on("userInput",(Z)=>this.#q(Z))}_isActionKey(z,$){return z==="\t"||this.multiple&&this.isNavigating&&$.name==="space"&&z!==void 0&&z!==""}#Y(z,$){let Q=$.name==="up",Z=$.name==="down",Y=$.name==="return";if(Q||Z){if(this.#z=Math.max(0,Math.min(this.#z+(Q?-1:1),this.filteredOptions.length-1)),this.focusedValue=this.filteredOptions[this.#z]?.value,!this.multiple)this.selectedValues=[this.focusedValue];this.isNavigating=!0}else if(Y)this.value=az(this.multiple,this.selectedValues);else if(this.multiple)if(this.focusedValue!==void 0&&($.name==="tab"||this.isNavigating&&$.name==="space"))this.toggleSelected(this.focusedValue);else this.isNavigating=!1;else{if(this.focusedValue)this.selectedValues=[this.focusedValue];this.isNavigating=!1}}deselectAll(){this.selectedValues=[]}toggleSelected(z){if(this.filteredOptions.length===0)return;if(this.multiple)if(this.selectedValues.includes(z))this.selectedValues=this.selectedValues.filter(($)=>$!==z);else this.selectedValues=[...this.selectedValues,z];else this.selectedValues=[z]}#q(z){if(z!==this.#Q){this.#Q=z;let $=this.options;if(z)this.filteredOptions=$.filter((Q)=>this.#Z(z,Q));else this.filteredOptions=[...$];if(this.#z=pz(this.focusedValue,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#z]?.value,!this.multiple)if(this.focusedValue!==void 0)this.toggleSelected(this.focusedValue);else this.deselectAll()}}}class tz extends Y6{options;cursor=0;#z;getGroupItems(z){return this.options.filter(($)=>$.group===z)}isGroupSelected(z){let $=this.getGroupItems(z),Q=this.value;if(Q===void 0)return!1;return $.every((Z)=>Q.includes(Z.value))}toggleValue(){let z=this.options[this.cursor];if(this.value===void 0)this.value=[];if(z.group===!0){let $=String(z.value),Q=this.getGroupItems($);if(this.isGroupSelected($))this.value=this.value.filter((Z)=>Q.findIndex((Y)=>Y.value===Z)===-1);else this.value=[...this.value,...Q.map((Z)=>Z.value)];this.value=Array.from(new Set(this.value))}else{let $=this.value.includes(z.value);this.value=$?this.value.filter((Q)=>Q!==z.value):[...this.value,z.value]}}constructor(z){super(z,!1);let{options:$}=z;this.#z=z.selectableGroups!==!1,this.options=Object.entries($).flatMap(([Q,Z])=>[{value:Q,group:!0,label:Q},...Z.map((Y)=>({...Y,group:Q}))]),this.value=[...z.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:Q})=>Q===z.cursorAt),this.#z?0:1),this.on("cursor",(Q)=>{switch(Q){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let Z=this.options[this.cursor]?.group===!0;if(!this.#z&&Z)this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let Z=this.options[this.cursor]?.group===!0;if(!this.#z&&Z)this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}case"space":this.toggleValue();break}})}}var oz=Jz();var b=(z,$)=>oz?z:$,P4=b("◆","*"),C4=b("■","x"),S4=b("▲","x"),v4=b("◇","o"),y4=b("┌","T"),ez=b("│","|"),k4=b("└","—"),h4=b("●",">"),_4=b("○"," "),g4=b("◻","[•]"),f4=b("◼","[+]"),m4=b("◻","[ ]"),d4=b("▪","•"),u4=b("─","-"),i4=b("╮","+"),c4=b("├","+"),n4=b("╯","+"),l4=b("●","•"),p4=b("◆","*"),r4=b("▲","!"),a4=b("■","x");var s4={light:b("─","-"),heavy:b("━","="),block:b("█","#")};function z4(){return`${i.gray(ez)} `}var t4=z4();var I6="0.10.16";Q4();async function Z4(z="src/pantry"){if(!V.existsSync(z))throw Error(`Pantry directory not found: ${z}. Please run 'bun ./bin/cli.ts update-pantry' first.`);let $=[];function Q(Z,Y=""){let q=V.readdirSync(Z,{withFileTypes:!0}),J=B.join(Z,"package.yml");if(Y&&V.existsSync(J))$.push(Y);for(let U of q)if(U.isDirectory()&&!U.name.startsWith(".")){let X=Y?`${Y}/${U.name}`:U.name,G=B.join(Z,U.name);Q(G,X)}}return Q(z),console.log(`\uD83D\uDCE6 Found ${$.length} packages in local pantry`),$.sort()}async function Y4(z=!1){async function $(J){let U=new URL("https://s3.amazonaws.com/dist.tea.xyz/");if(U.searchParams.set("list-type","2"),U.searchParams.set("prefix",""),U.searchParams.set("max-keys","1000"),J)U.searchParams.set("continuation-token",J);let X=await fetch(U.toString());if(!X.ok)throw Error(`Failed to fetch S3 listing: ${X.status}`);let G=await X.text(),K=[],W=G.match(/<Key>([^<]+)<\/Key>/g);if(W)for(let T of W){let E=T.replace(/<Key>([^<]+)<\/Key>/,"$1");K.push({Key:E})}let j=G.includes("<IsTruncated>true</IsTruncated>"),F=G.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/),L=F?F[1]:void 0;return{IsTruncated:j,NextContinuationToken:L,Contents:K}}console.log("Scraping packages from S3 registry...");let Q=new Set,Z;do{let J=await $(Z);for(let U of J.Contents){let X=U.Key,G=X.split("/");if(G.length===0)continue;if(G[0].startsWith(".")||G[0].includes(" ")||X.match(/\.(md|txt|yml|yaml|json)$/i))continue;let K=["darwin","linux","windows"],W=-1;for(let j=1;j<G.length;j++)if(K.includes(G[j])){W=j;break}if(W>0){let j=G.slice(0,W).join("/");if(j.includes("."))Q.add(j)}else if(G.length>=2&&G[0].includes(".")&&!G[1].startsWith("v")&&!G[1].match(/^\d/)){let j=`${G[0]}/${G[1]}`;Q.add(j)}else if(G.length>=1&&G[0].includes("."))Q.add(G[0])}Z=J.NextContinuationToken,console.log(`Found ${Q.size} packages so far...`)}while(Z);let Y=Array.from(Q).sort(),q=[];for(let J of Y){if(!J.includes(".")||J.match(/^[a-z0-9.-]+\.[a-z]{2,}(\/[\w.-]+){0,20}$/i)===null)continue;if(J.endsWith("/README.rst")||J.endsWith("/README")||J.includes("/docs/"))continue;if(J.endsWith("/.pkgroot"))continue;if(["amazon.com/aws","charm.sh","code.videolan.org","crates.io"].includes(J))continue;q.push(J)}return console.log(`\uD83D\uDCE6 Found ${q.length} valid packages in registry`),q}async function q4(z,$){let Z=`/**
41
41
  * Constants used throughout the ts-pantry package
42
42
  * This file is auto-generated from ${$}. Do not edit manually.
43
43
  * Generated on ${new Date().toISOString()}
@@ -100,7 +100,7 @@ ${Y.join(`
100
100
  Conflicts found:`),j.conflicts.forEach((L)=>{console.log(` ${L.package}: ${L.versions.join(", ")}`)});if(console.log(`
101
101
  \uD83D\uDCCB All unique packages to install:`),j.uniquePackages.forEach((L,T)=>{let E=j.allDependencies.find((N)=>N.name===L),w=E&&E.version&&E.version!=="latest"?` (${E.version})`:"";console.log(` ${T+1}. ${L}${w}`)}),G)console.log(`
102
102
  \uD83D\uDE80 Install command:`),console.log(`pantry install ${j.uniquePackages.join(" ")}`);if(Object.values(j.osSpecificDeps).reduce((L,T)=>L+T.length,0)>0)console.log(`
103
- \uD83D\uDDA5️ OS-specific dependencies:`),Object.entries(j.osSpecificDeps).forEach(([L,T])=>{if(T.length>0)console.log(` ${L}: ${T.map((E)=>E.name).join(", ")}`)})}H.exit(0)}catch(Q){if($.json){let Z={success:!1,error:String(Q),timestamp:new Date().toISOString()};console.log(JSON.stringify(Z))}else console.error("Error resolving dependencies:",Q);H.exit(1)}});I.command("get-php-versions","Get PHP versions suitable for CI/CD workflows").option("--format <type>","Output format: json (default), yaml, or csv",{default:"json"}).option("--branches <branches>","Comma-separated list of PHP branches to include (e.g., 8.4,8.3,8.2)").option("--fallback <versions>","Comma-separated list of fallback versions if detection fails").action(async(z)=>{try{let{getPhpVersionsForWorkflow:$}=await import("../chunk-hk7ns20y.js"),Q={};if(z.branches)Q.supportedBranches=z.branches.split(",").map((Y)=>Y.trim());if(z.fallback)Q.fallbackVersions=z.fallback.split(",").map((Y)=>Y.trim());let Z=$(Q);switch(z.format.toLowerCase()){case"yaml":console.log(`php_versions:
103
+ \uD83D\uDDA5️ OS-specific dependencies:`),Object.entries(j.osSpecificDeps).forEach(([L,T])=>{if(T.length>0)console.log(` ${L}: ${T.map((E)=>E.name).join(", ")}`)})}H.exit(0)}catch(Q){if($.json){let Z={success:!1,error:String(Q),timestamp:new Date().toISOString()};console.log(JSON.stringify(Z))}else console.error("Error resolving dependencies:",Q);H.exit(1)}});I.command("get-php-versions","Get PHP versions suitable for CI/CD workflows").option("--format <type>","Output format: json (default), yaml, or csv",{default:"json"}).option("--branches <branches>","Comma-separated list of PHP branches to include (e.g., 8.4,8.3,8.2)").option("--fallback <versions>","Comma-separated list of fallback versions if detection fails").action(async(z)=>{try{let{getPhpVersionsForWorkflow:$}=await import("../chunk-cy2605xk.js"),Q={};if(z.branches)Q.supportedBranches=z.branches.split(",").map((Y)=>Y.trim());if(z.fallback)Q.fallbackVersions=z.fallback.split(",").map((Y)=>Y.trim());let Z=$(Q);switch(z.format.toLowerCase()){case"yaml":console.log(`php_versions:
104
104
  ${Z.map((Y)=>` - "${Y}"`).join(`
105
105
  `)}`);break;case"csv":console.log(Z.join(","));break;case"json":default:console.log(JSON.stringify(Z));break}H.exit(0)}catch($){console.error("Error getting PHP versions:",$),H.exit(1)}});I.command("generate-zig","Generate Zig package definitions from TypeScript packages").option("--packages-dir <dir>","Directory containing TypeScript package files",{default:"src/packages"}).option("--output <file>","Output Zig file path",{default:"packages.zig"}).option("--aliases","Also generate aliases file").option("--aliases-output <file>","Output file for Zig aliases",{default:"aliases.zig"}).action(async(z)=>{try{let{generateZigDefinitions:$,generateZigAliases:Q}=await import("../chunk-wavfc3dt.js"),{packagesDir:Z="src/packages",output:Y="packages.zig",aliases:q=!1,aliasesOutput:J="aliases.zig"}=z;if(console.log("\uD83D\uDE80 Generating Zig package definitions..."),await $(Z,Y),q)console.log(`
106
106
  \uD83D\uDE80 Generating Zig package aliases...`),await Q(Z,J);console.log(`
@@ -1,2 +1,2 @@
1
- import{hc as I,ic as T}from"./chunk-c7csvans.js";import{jc as _,kc as w}from"./chunk-dnw4x7bh.js";import{lc as y,oc as M}from"./chunk-ghzc37v7.js";w();async function Y(){try{let{packages:E}=await import("./chunk-tbgzzd68.js");return E}catch{return{}}}async function F(E){let q=Z(E);if(!q)return null;let z=(await Y())[q];if(!z||!z.versions||z.versions.length===0)return null;return z.versions[0]}async function x(E){let q=Z(E);if(!q)return[];let z=(await Y())[q];if(!z||!z.versions)return[];return[...z.versions]}function f(E={}){let q=["8.4.11","8.3.14","8.2.26","8.1.30"],H=E.fallbackVersions||q;try{let{pantry:z}=(T(),y(I)),G=z.phpnet||z.php;if(!G||!G.versions||G.versions.length===0)return H;let K=[...G.versions],J=E.supportedBranches||D(K),Q=new Map;for(let R of K){let[U,X]=R.split(".");if(!U||!X)continue;let W=`${U}.${X}`;if(J.includes(W)&&!Q.has(W))Q.set(W,R)}let O=J.map((R)=>Q.get(R)).filter(Boolean);return O.length>0?O:H}catch{return H}}function D(E){let q=new Map;for(let z of E){let[G,K]=z.split(".");if(!G||!K)continue;let J=`${G}.${K}`;q.set(J,(q.get(J)||0)+1)}return Array.from(q.keys()).filter((z)=>{let[G]=z.split(".");return G==="8"&&q.get(z)>3}).sort((z,G)=>{let[K,J]=z.split(".").map(Number),[Q,O]=G.split(".").map(Number);if(K!==Q)return Q-K;return O-J}).slice(0,4)}async function C(E,q){return(await x(E)).includes(q)}async function h(E,q="latest"){if(q==="latest")return await F(E);let H=await x(E);if(H.length===0)return null;if(H.includes(q))return q;if(q.startsWith("^")){let G=q.slice(1).split(".")[0];return H.filter((J)=>J.startsWith(`${G}.`))[0]||null}if(q.startsWith("~")){let z=q.slice(1),[G,K]=z.split("."),J=`${G}.${K}.`;return H.filter((O)=>O.startsWith(J))[0]||null}if(q.startsWith(">=")){let G=q.slice(2).split(".").map(Number);return H.filter((J)=>{let Q=J.split(".").map(Number);for(let O=0;O<Math.max(Q.length,G.length);O++){let R=Q[O]??0,U=G[O]??0;if(R>U)return!0;if(R<U)return!1}return!0})[0]||null}return await F(E)}async function $(E){let q=Z(E);if(!q)return null;let z=(await Y())[q];if(!z)return null;let G=await F(E);if(!G)return null;return{name:String(E),domain:q,description:z.description||"",latestVersion:G,totalVersions:z.versions?.length||0,programs:[...z.programs||[]],dependencies:[...z.dependencies||[]],companions:[...z.companions||[]],versions:[...z.versions||[]]}}function Z(E){let q=String(E);if(q in _){let H=_[q];return L(H)}return L(q)}function L(E){if(E.includes("/")){let[q,...H]=E.split("/"),z=H.join("/"),G=q.replace(/\./g,""),K=z.replace(/[/\-_.]/g,"").toLowerCase();return`${G}${K}`.toLowerCase()}return E.replace(/[.\-_]/g,"").toLowerCase()}async function N(E){let q=[],H=E.toLowerCase();for(let[G,K]of Object.entries(_))if(G.toLowerCase().includes(H)){let J=await $(G);if(J)q.push(J)}let z=await Y();for(let[G,K]of Object.entries(z))if(G.toLowerCase().includes(H)||K.description?.toLowerCase().includes(H)){let J=await $(G);if(J&&!q.some((Q)=>Q.domain===G))q.push(J)}return q}async function P(E){let q=[],H=await Y();for(let z of Object.keys(H))if(E.test(z)){let G=await $(z);if(G)q.push(G)}return q}async function j(E=10){let q=[],H=await Y();for(let z of Object.keys(H)){let G=await $(z);if(G&&G.totalVersions>=E)q.push(G)}return q.sort((z,G)=>G.totalVersions-z.totalVersions)}async function S(E=50){return(await j(5)).slice(0,E)}async function V(E){try{let q=E.lastIndexOf("@");if(q===-1){let J=E;if(!Z(J))return{isValid:!1,error:`Unknown package: ${J}`};return{isValid:!0,packageName:J}}let H=E.slice(0,q),z=E.slice(q+1);if(!Z(H))return{isValid:!1,error:`Unknown package: ${H}`};if(z==="latest")return{isValid:!0,packageName:H,version:z};if(!await C(H,z))return{isValid:!1,packageName:H,version:z,error:`Version ${z} not available for package ${H}`};return{isValid:!0,packageName:H,version:z}}catch{return{isValid:!1,error:`Invalid package specification: ${E}`}}}function d(E,q){if(!q||q.length===0)return null;let H=[...q].sort((O,R)=>{let U=O.split(".").map(Number),X=R.split(".").map(Number);for(let W=0;W<Math.max(U.length,X.length);W++){let A=U[W]||0,B=X[W]||0;if(A!==B)return B-A}return 0}),z=E.replace(/^[\^~]/,""),G=z.split("."),K=Number.parseInt(G[0],10),J=Number.parseInt(G[1]||"0",10);if(E.startsWith("^"))return H.filter((R)=>{return Number.parseInt(R.split(".")[0],10)===K})[0]||null;if(E.startsWith("~"))return H.filter((R)=>{let U=R.split("."),X=Number.parseInt(U[0],10),W=Number.parseInt(U[1]||"0",10);return X===K&&W===J})[0]||null;if(H.includes(z))return z;return H.filter((O)=>O.startsWith(z))[0]||H[0]||null}
1
+ import{hc as I,ic as T}from"./chunk-yn2wp55x.js";import{jc as _,kc as w}from"./chunk-dnw4x7bh.js";import{lc as y,oc as M}from"./chunk-ghzc37v7.js";w();async function Y(){try{let{packages:E}=await import("./chunk-n6yv503d.js");return E}catch{return{}}}async function F(E){let q=Z(E);if(!q)return null;let z=(await Y())[q];if(!z||!z.versions||z.versions.length===0)return null;return z.versions[0]}async function x(E){let q=Z(E);if(!q)return[];let z=(await Y())[q];if(!z||!z.versions)return[];return[...z.versions]}function f(E={}){let q=["8.4.11","8.3.14","8.2.26","8.1.30"],H=E.fallbackVersions||q;try{let{pantry:z}=(T(),y(I)),G=z.phpnet||z.php;if(!G||!G.versions||G.versions.length===0)return H;let K=[...G.versions],J=E.supportedBranches||D(K),Q=new Map;for(let R of K){let[U,X]=R.split(".");if(!U||!X)continue;let W=`${U}.${X}`;if(J.includes(W)&&!Q.has(W))Q.set(W,R)}let O=J.map((R)=>Q.get(R)).filter(Boolean);return O.length>0?O:H}catch{return H}}function D(E){let q=new Map;for(let z of E){let[G,K]=z.split(".");if(!G||!K)continue;let J=`${G}.${K}`;q.set(J,(q.get(J)||0)+1)}return Array.from(q.keys()).filter((z)=>{let[G]=z.split(".");return G==="8"&&q.get(z)>3}).sort((z,G)=>{let[K,J]=z.split(".").map(Number),[Q,O]=G.split(".").map(Number);if(K!==Q)return Q-K;return O-J}).slice(0,4)}async function C(E,q){return(await x(E)).includes(q)}async function h(E,q="latest"){if(q==="latest")return await F(E);let H=await x(E);if(H.length===0)return null;if(H.includes(q))return q;if(q.startsWith("^")){let G=q.slice(1).split(".")[0];return H.filter((J)=>J.startsWith(`${G}.`))[0]||null}if(q.startsWith("~")){let z=q.slice(1),[G,K]=z.split("."),J=`${G}.${K}.`;return H.filter((O)=>O.startsWith(J))[0]||null}if(q.startsWith(">=")){let G=q.slice(2).split(".").map(Number);return H.filter((J)=>{let Q=J.split(".").map(Number);for(let O=0;O<Math.max(Q.length,G.length);O++){let R=Q[O]??0,U=G[O]??0;if(R>U)return!0;if(R<U)return!1}return!0})[0]||null}return await F(E)}async function $(E){let q=Z(E);if(!q)return null;let z=(await Y())[q];if(!z)return null;let G=await F(E);if(!G)return null;return{name:String(E),domain:q,description:z.description||"",latestVersion:G,totalVersions:z.versions?.length||0,programs:[...z.programs||[]],dependencies:[...z.dependencies||[]],companions:[...z.companions||[]],versions:[...z.versions||[]]}}function Z(E){let q=String(E);if(q in _){let H=_[q];return L(H)}return L(q)}function L(E){if(E.includes("/")){let[q,...H]=E.split("/"),z=H.join("/"),G=q.replace(/\./g,""),K=z.replace(/[/\-_.]/g,"").toLowerCase();return`${G}${K}`.toLowerCase()}return E.replace(/[.\-_]/g,"").toLowerCase()}async function N(E){let q=[],H=E.toLowerCase();for(let[G,K]of Object.entries(_))if(G.toLowerCase().includes(H)){let J=await $(G);if(J)q.push(J)}let z=await Y();for(let[G,K]of Object.entries(z))if(G.toLowerCase().includes(H)||K.description?.toLowerCase().includes(H)){let J=await $(G);if(J&&!q.some((Q)=>Q.domain===G))q.push(J)}return q}async function P(E){let q=[],H=await Y();for(let z of Object.keys(H))if(E.test(z)){let G=await $(z);if(G)q.push(G)}return q}async function j(E=10){let q=[],H=await Y();for(let z of Object.keys(H)){let G=await $(z);if(G&&G.totalVersions>=E)q.push(G)}return q.sort((z,G)=>G.totalVersions-z.totalVersions)}async function S(E=50){return(await j(5)).slice(0,E)}async function V(E){try{let q=E.lastIndexOf("@");if(q===-1){let J=E;if(!Z(J))return{isValid:!1,error:`Unknown package: ${J}`};return{isValid:!0,packageName:J}}let H=E.slice(0,q),z=E.slice(q+1);if(!Z(H))return{isValid:!1,error:`Unknown package: ${H}`};if(z==="latest")return{isValid:!0,packageName:H,version:z};if(!await C(H,z))return{isValid:!1,packageName:H,version:z,error:`Version ${z} not available for package ${H}`};return{isValid:!0,packageName:H,version:z}}catch{return{isValid:!1,error:`Invalid package specification: ${E}`}}}function d(E,q){if(!q||q.length===0)return null;let H=[...q].sort((O,R)=>{let U=O.split(".").map(Number),X=R.split(".").map(Number);for(let W=0;W<Math.max(U.length,X.length);W++){let A=U[W]||0,B=X[W]||0;if(A!==B)return B-A}return 0}),z=E.replace(/^[\^~]/,""),G=z.split("."),K=Number.parseInt(G[0],10),J=Number.parseInt(G[1]||"0",10);if(E.startsWith("^"))return H.filter((R)=>{return Number.parseInt(R.split(".")[0],10)===K})[0]||null;if(E.startsWith("~"))return H.filter((R)=>{let U=R.split("."),X=Number.parseInt(U[0],10),W=Number.parseInt(U[1]||"0",10);return X===K&&W===J})[0]||null;if(H.includes(z))return z;return H.filter((O)=>O.startsWith(z))[0]||H[0]||null}
2
2
  export{F as Ub,x as Vb,f as Wb,C as Xb,h as Yb,$ as Zb,Z as _b,N as $b,P as ac,j as bc,S as cc,V as dc,d as ec};
@@ -1 +1 @@
1
- import{$b as h,Ub as a,Vb as b,Wb as c,Xb as d,Yb as e,Zb as f,_b as g,ac as i,bc as j,cc as k,dc as l,ec as m}from"./chunk-wzw3xbn2.js";import"./chunk-c7csvans.js";import"./chunk-dnw4x7bh.js";import"./chunk-ghzc37v7.js";export{l as validatePackageSpec,h as searchPackages,m as resolveVersionFromMetadata,e as resolveVersion,g as resolvePackageDomain,d as isVersionAvailable,j as getPopularPackages,c as getPhpVersionsForWorkflow,i as getPackagesByPattern,f as getPackageInfo,a as getLatestVersion,b as getAvailableVersions,k as getActivePackages};
1
+ import{$b as h,Ub as a,Vb as b,Wb as c,Xb as d,Yb as e,Zb as f,_b as g,ac as i,bc as j,cc as k,dc as l,ec as m}from"./chunk-426knbt7.js";import"./chunk-yn2wp55x.js";import"./chunk-dnw4x7bh.js";import"./chunk-ghzc37v7.js";export{l as validatePackageSpec,h as searchPackages,m as resolveVersionFromMetadata,e as resolveVersion,g as resolvePackageDomain,d as isVersionAvailable,j as getPopularPackages,c as getPhpVersionsForWorkflow,i as getPackagesByPattern,f as getPackageInfo,a as getLatestVersion,b as getAvailableVersions,k as getActivePackages};
@@ -1 +1 @@
1
- import{fc as b,gc as c,ic as d}from"./chunk-c7csvans.js";import{jc as a}from"./chunk-dnw4x7bh.js";import"./chunk-ghzc37v7.js";d();export{b as pantry,c as packages,a as aliases};
1
+ import{fc as b,gc as c,ic as d}from"./chunk-yn2wp55x.js";import{jc as a}from"./chunk-dnw4x7bh.js";import"./chunk-ghzc37v7.js";d();export{b as pantry,c as packages,a as aliases};
@@ -1,10 +1,10 @@
1
- import{Ab as yX}from"./chunk-jkfbbcs7.js";import{Ib as a,Kb as yQ}from"./chunk-qyfapvcb.js";import{$b as CX,Ub as LX,Vb as jX,Yb as TX,Zb as kQ,bc as RX,cc as IX,dc as fQ}from"./chunk-wzw3xbn2.js";import{ic as z4}from"./chunk-c7csvans.js";import{jc as qQ,kc as X0}from"./chunk-dnw4x7bh.js";import{oc as n}from"./chunk-ghzc37v7.js";import Z0 from"node:process";X0();import _X from"node:process";function qX(Q){return Q in qQ}function $0(Q){if(!Q.includes(".")||Q.startsWith(".")||Q.endsWith("."))return!1;if(/^v?\d+(\.\d+){0,10}$/.test(Q))return!1;return/^[a-z0-9][\w.\-/]*$/i.test(Q)}function _4(Q){return qX(Q)||$0(Q)}function q4(Q){return["darwin","linux","windows"].includes(Q)}function B4(Q){return["x86_64","aarch64","armv7l","i686"].includes(Q)}function BX(){return Object.keys(qQ)}function w4(){return Object.values(qQ)}function L4(Q){if(qX(Q))return{originalName:Q,resolvedDomain:qQ[Q],isAlias:!0};return{originalName:Q,resolvedDomain:Q,isAlias:!1}}function j4(Q){let X=Q.lastIndexOf("@");if(X===-1)return{name:Q};let $=Q.slice(0,X),Z=Q.slice(X+1);return{name:$,version:Z,versionSpec:Z}}function T4(Q,X){return X?`${Q}@${X}`:Q}function jQ(){let Q=_X.platform,X=_X.arch,$,Z,W=!0;switch(Q){case"darwin":$="darwin";break;case"linux":$="linux";break;case"win32":$="windows";break;default:$="linux",W=!1}switch(X){case"x64":Z="x86_64";break;case"arm64":Z="aarch64";break;case"arm":Z="armv7l";break;case"ia32":Z="i686";break;default:Z="x86_64",W=!1}return{platform:$,architecture:Z,isSupported:W}}function C4(Q,X="latest",$){let Z=$||jQ(),W;switch(Z.platform){case"darwin":W="tar.xz";break;case"linux":W="tar.xz";break;case"windows":W="zip";break;default:W="tar.xz"}return{packageName:Q,version:X,platform:Z.platform,architecture:Z.architecture,format:W}}var R4={LATEST:"latest",ANY:"*"},wX={RUNTIME:["nodejs.org","python.org","go.dev","rust-lang.org"],BUILD_TOOLS:["cmake.org","ninja-build.org","gradle.org","maven.apache.org"],DATABASES:["postgresql.org","mysql.com","redis.io","mongodb.com"],EDITORS:["neovim.io","vim.org","code.visualstudio.com"],CLI_TOOLS:["cli.github.com","curl.se","wget.gnu.org","jq.dev"]};function I4(Q){return wX[Q]}function E4(Q,X){return wX[X].includes(Q)}function F4(Q){return Q}function M4(Q,X){return[Q,X]}function S4(Q){return Q}async function b4(Q){try{let X=await kQ(Q);if(!X)return{success:!1,error:`Package '${Q}' not found. Use 'search' to find available packages.`};return{success:!0,data:X}}catch(X){return{success:!1,error:`Failed to get package info: ${X}`}}}async function y4(Q){try{if(!Q||Q.trim().length===0)return{success:!1,error:"Search term cannot be empty"};return{success:!0,data:await CX(Q.trim())}}catch(X){return{success:!1,error:`Search failed: ${X}`}}}async function P4(Q=20){try{return{success:!0,data:(await RX(Q)).slice(0,Q)}}catch(X){return{success:!1,error:`Failed to list popular packages: ${X}`}}}async function D4(Q=20){try{return{success:!0,data:await IX(Q)}}catch(X){return{success:!1,error:`Failed to list active packages: ${X}`}}}function u4(){try{return{success:!0,data:BX()}}catch(Q){return{success:!1,error:`Failed to list aliases: ${Q}`}}}async function v4(Q){try{let X=await fQ(Q);if(!X.isValid)return{success:!1,error:X.error};return{success:!0,data:{packageName:X.packageName,version:X.version,isValid:!0}}}catch(X){return{success:!1,error:`Validation failed: ${X}`}}}async function h4(Q){try{let X=await fQ(Q);if(!X.isValid)return{success:!1,error:X.error};let $=X.packageName,Z=X.version||"latest",W=await TX($,Z);if(!W)return{success:!1,error:`Could not resolve version '${Z}' for package '${$}'`};let H=await kQ($);if(!H)return{success:!1,error:`Package '${$}' not found`};let U=jQ(),J={packageName:$,resolvedVersion:W,platform:U.platform,architecture:U.architecture,dependencies:H.dependencies,companions:H.companions,installCommand:`pkgx install ${$}@${W}`},Y=[];if(!U.isSupported)Y.push(`Platform ${U.platform}/${U.architecture} may not be fully supported`);if(H.dependencies.length>0)Y.push(`This package has ${H.dependencies.length} dependencies that will also be installed`);return{success:!0,data:J,warnings:Y.length>0?Y:void 0}}catch(X){return{success:!1,error:`Failed to create install plan: ${X}`}}}async function k4(Q){try{let X=await LX(Q);if(!X)return{success:!1,error:`Package '${Q}' not found`};let $=await jX(Q);return{success:!0,data:{latest:X,total:$.length,versions:$}}}catch(X){return{success:!1,error:`Failed to get version info: ${X}`}}}function f4(Q){let X=[`Package: ${Q.name}`,`Domain: ${Q.domain}`,`Description: ${Q.description}`,`Latest Version: ${Q.latestVersion}`,`Total Versions: ${Q.totalVersions}`];if(Q.programs.length>0)X.push(`Programs: ${Q.programs.join(", ")}`);if(Q.dependencies.length>0)X.push(`Dependencies: ${Q.dependencies.join(", ")}`);if(Q.companions.length>0)X.push(`Companions: ${Q.companions.join(", ")}`);return X.join(`
1
+ import{Ab as yX}from"./chunk-jkfbbcs7.js";import{Ib as a,Kb as yQ}from"./chunk-qyfapvcb.js";import{$b as CX,Ub as LX,Vb as jX,Yb as TX,Zb as kQ,bc as RX,cc as IX,dc as fQ}from"./chunk-426knbt7.js";import{ic as z4}from"./chunk-yn2wp55x.js";import{jc as qQ,kc as X0}from"./chunk-dnw4x7bh.js";import{oc as n}from"./chunk-ghzc37v7.js";import Z0 from"node:process";X0();import _X from"node:process";function qX(Q){return Q in qQ}function $0(Q){if(!Q.includes(".")||Q.startsWith(".")||Q.endsWith("."))return!1;if(/^v?\d+(\.\d+){0,10}$/.test(Q))return!1;return/^[a-z0-9][\w.\-/]*$/i.test(Q)}function _4(Q){return qX(Q)||$0(Q)}function q4(Q){return["darwin","linux","windows"].includes(Q)}function B4(Q){return["x86_64","aarch64","armv7l","i686"].includes(Q)}function BX(){return Object.keys(qQ)}function w4(){return Object.values(qQ)}function L4(Q){if(qX(Q))return{originalName:Q,resolvedDomain:qQ[Q],isAlias:!0};return{originalName:Q,resolvedDomain:Q,isAlias:!1}}function j4(Q){let X=Q.lastIndexOf("@");if(X===-1)return{name:Q};let $=Q.slice(0,X),Z=Q.slice(X+1);return{name:$,version:Z,versionSpec:Z}}function T4(Q,X){return X?`${Q}@${X}`:Q}function jQ(){let Q=_X.platform,X=_X.arch,$,Z,W=!0;switch(Q){case"darwin":$="darwin";break;case"linux":$="linux";break;case"win32":$="windows";break;default:$="linux",W=!1}switch(X){case"x64":Z="x86_64";break;case"arm64":Z="aarch64";break;case"arm":Z="armv7l";break;case"ia32":Z="i686";break;default:Z="x86_64",W=!1}return{platform:$,architecture:Z,isSupported:W}}function C4(Q,X="latest",$){let Z=$||jQ(),W;switch(Z.platform){case"darwin":W="tar.xz";break;case"linux":W="tar.xz";break;case"windows":W="zip";break;default:W="tar.xz"}return{packageName:Q,version:X,platform:Z.platform,architecture:Z.architecture,format:W}}var R4={LATEST:"latest",ANY:"*"},wX={RUNTIME:["nodejs.org","python.org","go.dev","rust-lang.org"],BUILD_TOOLS:["cmake.org","ninja-build.org","gradle.org","maven.apache.org"],DATABASES:["postgresql.org","mysql.com","redis.io","mongodb.com"],EDITORS:["neovim.io","vim.org","code.visualstudio.com"],CLI_TOOLS:["cli.github.com","curl.se","wget.gnu.org","jq.dev"]};function I4(Q){return wX[Q]}function E4(Q,X){return wX[X].includes(Q)}function F4(Q){return Q}function M4(Q,X){return[Q,X]}function S4(Q){return Q}async function b4(Q){try{let X=await kQ(Q);if(!X)return{success:!1,error:`Package '${Q}' not found. Use 'search' to find available packages.`};return{success:!0,data:X}}catch(X){return{success:!1,error:`Failed to get package info: ${X}`}}}async function y4(Q){try{if(!Q||Q.trim().length===0)return{success:!1,error:"Search term cannot be empty"};return{success:!0,data:await CX(Q.trim())}}catch(X){return{success:!1,error:`Search failed: ${X}`}}}async function P4(Q=20){try{return{success:!0,data:(await RX(Q)).slice(0,Q)}}catch(X){return{success:!1,error:`Failed to list popular packages: ${X}`}}}async function D4(Q=20){try{return{success:!0,data:await IX(Q)}}catch(X){return{success:!1,error:`Failed to list active packages: ${X}`}}}function u4(){try{return{success:!0,data:BX()}}catch(Q){return{success:!1,error:`Failed to list aliases: ${Q}`}}}async function v4(Q){try{let X=await fQ(Q);if(!X.isValid)return{success:!1,error:X.error};return{success:!0,data:{packageName:X.packageName,version:X.version,isValid:!0}}}catch(X){return{success:!1,error:`Validation failed: ${X}`}}}async function h4(Q){try{let X=await fQ(Q);if(!X.isValid)return{success:!1,error:X.error};let $=X.packageName,Z=X.version||"latest",W=await TX($,Z);if(!W)return{success:!1,error:`Could not resolve version '${Z}' for package '${$}'`};let H=await kQ($);if(!H)return{success:!1,error:`Package '${$}' not found`};let U=jQ(),J={packageName:$,resolvedVersion:W,platform:U.platform,architecture:U.architecture,dependencies:H.dependencies,companions:H.companions,installCommand:`pkgx install ${$}@${W}`},Y=[];if(!U.isSupported)Y.push(`Platform ${U.platform}/${U.architecture} may not be fully supported`);if(H.dependencies.length>0)Y.push(`This package has ${H.dependencies.length} dependencies that will also be installed`);return{success:!0,data:J,warnings:Y.length>0?Y:void 0}}catch(X){return{success:!1,error:`Failed to create install plan: ${X}`}}}async function k4(Q){try{let X=await LX(Q);if(!X)return{success:!1,error:`Package '${Q}' not found`};let $=await jX(Q);return{success:!0,data:{latest:X,total:$.length,versions:$}}}catch(X){return{success:!1,error:`Failed to get version info: ${X}`}}}function f4(Q){let X=[`Package: ${Q.name}`,`Domain: ${Q.domain}`,`Description: ${Q.description}`,`Latest Version: ${Q.latestVersion}`,`Total Versions: ${Q.totalVersions}`];if(Q.programs.length>0)X.push(`Programs: ${Q.programs.join(", ")}`);if(Q.dependencies.length>0)X.push(`Dependencies: ${Q.dependencies.join(", ")}`);if(Q.companions.length>0)X.push(`Companions: ${Q.companions.join(", ")}`);return X.join(`
2
2
  `)}function g4(Q){if(Q.length===0)return"No packages found matching your search.";let X=[`Found ${Q.length} package(s):
3
3
  `];for(let $ of Q)X.push(`${$.name} (${$.domain})`),X.push(` ${$.description}`),X.push(` Latest: ${$.latestVersion} (${$.totalVersions} versions available)`),X.push("");return X.join(`
4
4
  `)}function m4(Q){let X=[`Installation Plan for ${Q.packageName}@${Q.resolvedVersion}`,`Platform: ${Q.platform}/${Q.architecture}`,`Command: ${Q.installCommand}`];if(Q.dependencies.length>0)X.push(`Dependencies: ${Q.dependencies.join(", ")}`);if(Q.companions.length>0)X.push(`Companions: ${Q.companions.join(", ")}`);return X.join(`
5
5
  `)}function d4(){try{let Q=jQ();return{success:!0,data:{platform:Q.platform,architecture:Q.architecture,isSupported:Q.isSupported,nodeVersion:Z0.version}}}catch(Q){return{success:!1,error:`Failed to get system info: ${Q}`}}}import HQ from"node:fs";import CQ from"node:path";function RQ(Q){if(!HQ.existsSync(Q))throw Error(`Dependency file not found: ${Q}`);let X=HQ.readFileSync(Q,"utf-8"),$=[],Z=X.split(`
6
6
  `),W=!1,H=!1,U=0;for(let J of Z){let Y=J.trim();if(!Y||Y.startsWith("#"))continue;if(J.match(/^(dependencies|deps):\s*$/)){W=!0,H=!1,U=J.search(/\S/);continue}if(J.match(/^global:\s*true\s*$/)||J.match(/^global:\s*$/)&&!W){H=!0;continue}if(J.match(/^\w+:/)&&!J.includes(" ")&&W&&U===0){W=!1;continue}if(W||H){if(J.match(/^\s+(dependencies|deps):\s*$/))continue;let G=J.indexOf(":");if(G>0){let z=J.substring(0,G).trim(),O=J.substring(G+1).trim();if(z&&O){let K=z,L=O.replace(/^['"]|['"]$/g,"");if(K==="global"||K==="dependencies"||K==="deps")continue;let _=L,q=L;if(L.startsWith("^"))_=L.substring(1),q=L;else if(L.startsWith("~"))_=L.substring(1),q=L;else if(L.startsWith(">=")||L.startsWith("<=")||L.startsWith(">")||L.startsWith("<")){let B=/^([><=]+)/.exec(L);if(B){let w=B[1];_=L.substring(w.length).trim(),q=L}}else if(L==="*"||L==="latest")_="latest",q="*";else _=L,q=`@${L}`;$.push({name:K,version:_,constraint:q,isOsSpecific:!1})}}}}return $}function W0(Q){if(!HQ.existsSync(Q))throw Error(`Dependency file not found: ${Q}`);let X=HQ.readFileSync(Q,"utf-8"),$=RQ(Q),Z;try{let W=typeof Bun<"u"&&Bun.YAML?Bun.YAML.parse(X):J0(X);if(W?.services){let H=Array.isArray(W.services.autoStart)?W.services.autoStart.map((U)=>String(U)):[];if(H.length>0)Z={enabled:W.services.enabled===!0,autoStart:H}}}catch{}return{dependencies:$,services:Z}}function J0(Q){let X={},$=Q.split(`
7
- `),Z=!1,W=!1,H=[],U=!1;for(let J of $){let Y=J.trim();if(!Y||Y.startsWith("#"))continue;if(J.match(/^services:\s*$/)){Z=!0,W=!1;continue}if(Z&&!J.startsWith(" ")&&!J.startsWith("\t")&&!Y.startsWith("-")){if(Y!=="services:"){Z=!1,W=!1;continue}}if(Z){if(Y.startsWith("enabled:")){U=Y.includes("true");continue}if(Y.match(/^autoStart:\s*$/)){W=!0;continue}if(W&&Y.startsWith("- ")){let G=Y.slice(2).trim();if(G)H.push(G)}}}if(H.length>0)X.services={enabled:U,autoStart:H};return X}async function n4(Q,X="src/packages"){try{let $;if(Q.includes("/"))$=CQ.join(X,`${Q}.ts`);else{let z=`${Q.replace(/\./g,"")}.ts`;$=CQ.join(X,z)}if(!HQ.existsSync($))return[];let Z=HQ.readFileSync($,"utf-8"),W=Z.indexOf("versions:");if(W===-1)return[];let H=Z.substring(W),U=H.indexOf("["),J=H.indexOf("] as const");if(U===-1||J===-1)return[];let G=H.substring(U+1,J).match(/'([^']+)'/g);if(!G)return[];return G.map((z)=>z.replace(/'/g,""))}catch{return[]}}async function H0(Q){try{let{packages:X}=await import("./chunk-tbgzzd68.js").catch(()=>import("./src/index.js")),$=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),Z=X[$];if(!Z){let W=Object.values(X);Z=W.find((H)=>H.domain===Q)||W.find((H)=>Array.isArray(H.aliases)&&H.aliases.includes(Q))}if(Z&&Z.versions&&Array.isArray(Z.versions))return Z.versions;return[]}catch{return[]}}async function EX(Q,X){let $=await H0(Q);if($.length===0)return X.split("#")[0].trim().replace(/^[@^~>=<]+/,"")||"latest";let Z=X.split("#")[0].trim();if(Z==="*"||Z==="latest")return $[0];if(Z.startsWith("@")){let H=Z.slice(1);return $.includes(H)?H:$[0]}return U0($,Z)||$[0]}function U0(Q,X){if(X.startsWith("^")){let $=X.slice(1),[Z]=YQ($);return Q.filter((H)=>{let[U]=YQ(H);return U===Z&&JQ(H,$)>=0})[0]||null}if(X.startsWith("~")){let $=X.slice(1),[Z,W]=YQ($);return Q.filter((U)=>{let[J,Y]=YQ(U);return J===Z&&Y===W&&JQ(U,$)>=0})[0]||null}if(X.startsWith(">=")){let $=X.slice(2).trim();return Q.filter((W)=>JQ(W,$)>=0)[0]||null}if(X.startsWith(">")){let $=X.slice(1).trim();return Q.filter((W)=>JQ(W,$)>0)[0]||null}if(X.startsWith("<=")){let $=X.slice(2).trim();return Q.filter((W)=>JQ(W,$)<=0)[0]||null}if(X.startsWith("<")){let $=X.slice(1).trim();return Q.filter((W)=>JQ(W,$)<0)[0]||null}if(X.startsWith("=")){let $=X.slice(1).trim();return Q.includes($)?$:null}return Q.includes(X)?X:null}function YQ(Q){let X=Q.split(".").map(($)=>{let Z=$.match(/^\d+/);return Z?Number.parseInt(Z[0],10):0});return[X[0]||0,X[1]||0,X[2]||0]}function JQ(Q,X){if(Q==="latest"&&X!=="latest")return 1;if(X==="latest"&&Q!=="latest")return-1;if(Q==="latest"&&X==="latest")return 0;let $=Q.split("#")[0].trim(),Z=X.split("#")[0].trim(),[W,H,U]=YQ($),[J,Y,G]=YQ(Z);if(W>J)return 1;if(W<J)return-1;if(H>Y)return 1;if(H<Y)return-1;if(U>G)return 1;if(U<G)return-1;return 0}var TQ=null;async function Y0(){if(TQ)return TQ;return TQ=(await import("./chunk-tbgzzd68.js").catch(()=>import("./src/index.js"))).packages,TQ}async function G0(Q){try{let X=await Y0(),$=X[Q];if($)return{dependencies:$.dependencies||[],companions:$.companions||[]};let Z=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),W=X[Z];if(W)return{dependencies:W.dependencies||[],companions:W.companions||[]};let U=Object.values(X).find((J)=>J.domain===Q);if(U)return{dependencies:U.dependencies||[],companions:U.companions||[]};return null}catch(X){return console.warn(`Failed to load package data for ${Q}: ${X}`),null}}async function IQ(Q,X={},$=new Set,Z=0){let{maxDepth:W=10,verbose:H=!1,targetOs:U,includeOsSpecific:J=!0}=X;if(Z>W){if(H)console.warn(` Warning: max dependency depth (${W}) exceeded for ${Q}`);return[]}if($.has(Q))return[];if($.add(Q),H)console.log(`${" ".repeat(Z)}Resolving dependencies for: ${Q}`);let Y=[];try{let z=function(_){let q=_.match(/^(linux|darwin|windows):(.+)$/),B=!!q,w=q?q[2]:_,I=q?q[1]:void 0;if(B&&(!J||U&&I!==U))return null;let C=w,T="latest",j="*",R=w.match(/^(@?[^@^~>=<]+(?:\/[^@^~>=<]+)?)([@^~>=<].+)?$/);if(R){if(C=R[1],R[2]){let E=R[2];if(E.startsWith("@"))T=E.substring(1),j=E;else j=E,T=E.replace(/^\D*/,"")}}return{dep:{name:C,version:T,constraint:j,isOsSpecific:B,os:I},pkgName:C}},G=await G0(Q),K=[...G?.dependencies||[],...G?.companions||[]].map(z).filter((_)=>_!==null);for(let{dep:_}of K)Y.push(_);let L=await Promise.allSettled(K.map(({pkgName:_})=>IQ(_,X,$,Z+1)));for(let _ of L)if(_.status==="fulfilled")Y.push(..._.value);else if(H)console.warn(` Warning: transitive dependency resolution failed: ${_.reason}`)}catch(G){if(H)console.warn(`${" ".repeat(Z)}Warning: Could not resolve dependencies for ${Q}: ${G}`)}return Y}async function gQ(Q,X={}){let $=new Map,Z=[],W={linux:[],darwin:[],windows:[]};for(let J of Q){if(!$.has(J.name))$.set(J.name,[]);if($.get(J.name).push(J),J.isOsSpecific&&J.os)W[J.os].push(J)}let H=[],U=[];for(let[J,Y]of $)if(Y.length===1){let G=await EX(J,Y[0].constraint),z={...Y[0],version:G};H.push(z),U.push(J)}else{let G=Y.map((_)=>_.version),z=[...new Set(G)];if(z.length>1)Z.push({package:J,versions:z});let O=await Promise.all(Y.map(async(_)=>({..._,resolvedVersion:await EX(J,_.constraint)}))),K=O[0];for(let _ of O.slice(1))if(K.constraint==="*"&&_.constraint!=="*")K=_;else if(K.constraint!=="*"&&_.constraint==="*");else if(JQ(_.resolvedVersion,K.resolvedVersion)>0)K=_;let L={...K,version:K.resolvedVersion};delete L.resolvedVersion,H.push(L),U.push(J)}return{allDependencies:H,uniquePackages:U,conflicts:Z,osSpecificDeps:W}}async function FX(Q,X={}){let{verbose:$=!1}=X;if($)console.log(`Parsing dependency file: ${Q}`);let Z=RQ(Q);if($)console.log(`Found ${Z.length} direct dependencies`);let W=[...Z],H=await Promise.all(Z.map(async(Y)=>{if($)console.log(`Resolving transitive dependencies for: ${Y.name}`);return IQ(Y.name,X)}));for(let Y of H)W.push(...Y);if($)console.log(`Total dependencies found (before deduplication): ${W.length}`);let U=await gQ(W,X);if($){if(console.log(`Unique packages after deduplication: ${U.uniquePackages.length}`),U.conflicts.length>0)console.log(`Version conflicts found: ${U.conflicts.length}`)}let J=CQ.extname(Q);if(J===".yaml"||J===".yml"){let Y=W0(Q);if(Y.services)U.services=Y.services}return U}function o4(Q){let X=["deps.yaml","deps.yml","dependencies.yaml","dependencies.yml","pkgx.yaml","pkgx.yml",".deps.yaml",".deps.yml"],$=[];for(let Z of X){let W=CQ.join(Q,Z);if(HQ.existsSync(W))$.push(W)}return $}import*as S from"node:fs";import*as u from"node:path";import*as t from"node:os";import*as mQ from"node:https";import*as dQ from"node:http";import{execFileSync as EQ}from"node:child_process";function MQ(){let Q=process.env.XDG_DATA_HOME,X=Q&&Q.length>0?Q:u.join(t.homedir(),".local","share");return u.join(X,"pantry","global","bin")}function cQ(){let Q=t.platform(),X=t.arch();return{os:Q==="darwin"?"darwin":Q==="win32"?"windows":"linux",arch:X==="arm64"?"aarch64":"x86_64"}}var BQ={"github.com/mail-os/mail":{getDownloadUrl(Q,X){if(X.os!=="linux"||X.arch!=="x86_64")throw Error("github.com/mail-os/mail currently publishes linux-x86_64 release binaries");let $={darwin:"macos",linux:"linux",windows:"windows"},Z=`mail-${X.arch}-${$[X.os]}`;return`https://github.com/mail-os/mail/releases/download/v${Q}/${Z}.tar.gz`},getArchiveFormat(){return"tar.gz"},getBinaries(Q){let X={darwin:"macos",linux:"linux",windows:"windows"};return[`mail-${Q.arch}-${X[Q.os]}`,"mail"]}},"ziglang.org":{getDownloadUrl(Q,X){let $={x86_64:"x86_64",aarch64:"aarch64"},Z={darwin:"macos",linux:"linux",windows:"windows"},W=$[X.arch],H=Z[X.os],U=X.os==="windows"?"zip":"tar.xz";if(Q.includes("-dev"))return`https://ziglang.org/builds/zig-${W}-${H}-${Q}.${U}`;return`https://ziglang.org/download/${Q}/zig-${W}-${H}-${Q}.${U}`},getArchiveFormat(Q){return Q.os==="windows"?"zip":"tar.xz"},getBinaries(Q){return Q.os==="windows"?["zig.exe"]:["zig"]},getArchivePrefix(Q,X){let $={x86_64:"x86_64",aarch64:"aarch64"},Z={darwin:"macos",linux:"linux",windows:"windows"};return`zig-${$[X.arch]}-${Z[X.os]}-${Q}`}},"bun.sh":{getDownloadUrl(Q,X){let $={"darwin-aarch64":"darwin-aarch64","darwin-x86_64":"darwin-x64","linux-aarch64":"linux-aarch64","linux-x86_64":"linux-x64","windows-x86_64":"windows-x64"},Z=`${X.os}-${X.arch}`,W=$[Z]||"linux-x64";return`https://github.com/oven-sh/bun/releases/download/bun-v${Q}/bun-${W}.zip`},getArchiveFormat(){return"zip"},getBinaries(Q){return Q.os==="windows"?["bun.exe"]:["bun","bunx"]},getArchivePrefix(Q,X){let $={"darwin-aarch64":"bun-darwin-aarch64","darwin-x86_64":"bun-darwin-x64","linux-aarch64":"bun-linux-aarch64","linux-x86_64":"bun-linux-x64","windows-x86_64":"bun-windows-x64"},Z=`${X.os}-${X.arch}`,W=$[Z];if(!W)throw Error(`Unsupported platform for bun: ${Z}`);return W}},"nodejs.org":{getDownloadUrl(Q,X){let $={darwin:"darwin",linux:"linux",windows:"win"},Z={x86_64:"x64",aarch64:"arm64"},W=X.os==="windows"?"zip":"tar.xz";return`https://nodejs.org/dist/v${Q}/node-v${Q}-${$[X.os]}-${Z[X.arch]}.${W}`},getArchiveFormat(Q){return Q.os==="windows"?"zip":"tar.xz"},getBinaries(Q){return Q.os==="windows"?["node.exe","npm.cmd","npx.cmd"]:["node","npm","npx"]},getArchivePrefix(Q,X){let $={darwin:"darwin",linux:"linux",windows:"win"},Z={x86_64:"x64",aarch64:"arm64"};return`node-v${Q}-${$[X.os]}-${Z[X.arch]}`}}};function MX(Q,X,$,Z){S.mkdirSync($,{recursive:!0});let W=null;for(let H of X){let U=u.join(Q,H);if(!S.existsSync(U))U=u.join(Q,"bin",H);if(!S.existsSync(U)){if(W){let Y=u.join($,H);try{S.unlinkSync(Y)}catch{}if(Z.os==="windows")S.copyFileSync(W,Y);else S.symlinkSync(W,Y)}continue}if(!W)W=U;let J=u.join($,H);try{S.unlinkSync(J)}catch{}if(Z.os==="windows")S.copyFileSync(U,J);else S.symlinkSync(U,J)}}async function VX(Q,X,$={}){let Z=$.platform||cQ(),W=BQ[Q];if(!W)throw Error(`Unknown package: ${Q}. Supported: ${Object.keys(BQ).join(", ")}`);if(/^[\^~>=<]/.test(X))X=await B0(Q,X);else if(X==="latest"||X==="*"||!X)X=await lQ(Q);else if(Q==="ziglang.org"&&X.endsWith("-dev")){let q=await K0(X);if(q)X=q}if(!X)throw Error(`Could not resolve a concrete version for ${Q} (got empty string from resolver)`);let H=$.installDir||u.join(process.cwd(),"pantry"),U=u.join(H,".bin"),J=u.join(H,Q.replace(/\./g,"-"),X),Y=W.getBinaries(Z);if(Y.length===0)throw Error(`No binaries defined for ${Q} on ${Z.os}-${Z.arch}`);let G=u.join(J,Y[0]),z=u.join(J,"bin",Y[0]);if(S.existsSync(G)||S.existsSync(z)){if(!$.quiet)console.log(` ✓ ${Q}@${X} (cached)`);if($.createBinLinks!==!1)MX(J,Y,U,Z);let q=SX(J,Y,Z,$);return{name:Q,version:X,installPath:J,binaries:Y,globalLinks:q}}let O=W.getDownloadUrl(X,Z),K=W.getArchiveFormat(Z);if(!$.quiet)console.log(` → ${Q}@${X} from ${new URL(O).hostname}`);let L=S.mkdtempSync(u.join(t.tmpdir(),"pantry-")),_=u.join(L,`archive.${K}`);try{await AX(O,_,10,$.quiet??!1);let q=u.join(L,"extracted");S.mkdirSync(q,{recursive:!0}),await w0(_,q,K);let B=q,w=W.getArchivePrefix?.(X,Z);if(w){let C=u.join(q,w);if(S.existsSync(C))B=C;else{let j=S.readdirSync(q).find((R)=>S.statSync(u.join(q,R)).isDirectory());if(j)B=u.join(q,j)}}if(S.mkdirSync(J,{recursive:!0}),L0(B,J),Z.os!=="windows")for(let C of Y){let T=u.join(J,C);if(S.existsSync(T))S.chmodSync(T,493);let j=u.join(J,"bin",C);if(S.existsSync(j))S.chmodSync(j,493)}if($.createBinLinks!==!1)MX(J,Y,U,Z);if(!$.quiet)console.log(` ✓ ${Q}@${X}`);let I=SX(J,Y,Z,$);return{name:Q,version:X,installPath:J,binaries:Y,globalLinks:I}}finally{try{S.rmSync(L,{recursive:!0,force:!0})}catch{}}}function SX(Q,X,$,Z){if(!Z.globalBin)return[];let W=typeof Z.globalBin==="string"?Z.globalBin:MQ();S.mkdirSync(W,{recursive:!0});let H=[];for(let U of X){let J=u.join(Q,U);if(!S.existsSync(J))J=u.join(Q,"bin",U);if(!S.existsSync(J))continue;let Y=u.join(W,U);try{S.unlinkSync(Y)}catch{}if($.os==="windows")S.copyFileSync(J,Y);else S.symlinkSync(J,Y);H.push(Y)}if(!Z.quiet&&H.length>0)console.log(` → linked ${H.length} binary(ies) into ${W}`);return H}async function z0(Q,X={}){return Promise.all(Q.map(($)=>VX($.domain,$.version,X)))}async function lQ(Q){if(Q==="bun.sh"){let $=(await i("https://api.github.com/repos/oven-sh/bun/releases/latest").catch(()=>null))?.tag_name?.replace(/^bun-v/,"")||"";if($)return $;let Z=await FQ(Q);if(Z)return Z;throw Error("Failed to resolve latest bun.sh version (GitHub API unreachable, no bundled metadata)")}if(Q==="ziglang.org"){let $=(await i("https://ziglang.org/download/index.json").catch(()=>null))?.master?.version;if($)return $;let Z=await FQ(Q);if(Z)return Z;throw Error("Failed to resolve latest ziglang.org version")}if(Q==="nodejs.org"){let $=await i("https://nodejs.org/dist/index.json").catch(()=>null)||[],W=($.find((U)=>U.lts)?.version||$[0]?.version||"").replace(/^v/,"");if(W)return W;let H=await FQ(Q);if(H)return H;throw Error("Failed to resolve latest nodejs.org version")}if(Q==="github.com/mail-os/mail"){let $=(await i("https://api.github.com/repos/mail-os/mail/releases/latest").catch(()=>null))?.tag_name?.replace(/^v/,"")||"";if($)return $;let W=((await i("https://api.github.com/repos/mail-os/mail/tags?per_page=1").catch(()=>null))?.[0]?.name||"").replace(/^v/,"");if(W)return W;let H=await FQ(Q);if(H)return H;throw Error("Failed to resolve latest github.com/mail-os/mail version")}throw Error(`Cannot resolve latest version for ${Q}`)}async function FQ(Q){try{let X=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:$}=await import("./chunk-tbgzzd68.js").catch(()=>import("./src/index.js")),W=$[X]?.versions||[];return W.find((H)=>!H.includes("-"))||W[0]||""}catch{return""}}async function K0(Q){try{let $=(await i("https://ziglang.org/download/index.json")).master?.version;if($&&$.startsWith(Q))return $}catch{}return null}function O0(Q,X,$,Z){if(Q.includes("-")&&!Z.includes("-"))return!1;let W=Q.split(".").map(Number);if(W.some(Number.isNaN))return!1;let[H,U,J]=[W[0]||0,W[1]||0,W[2]||0],[Y,G,z]=[$[0]||0,$[1]||0,$[2]||0];if(X==="^"){if(Y===0)return H===0&&U===G&&J>=z;return H===Y&&(U>G||U===G&&J>=z)}if(X==="~")return H===Y&&U===G&&J>=z;if(X===">=")return H>Y||H===Y&&U>G||H===Y&&U===G&&J>=z;return!1}async function _0(Q){if(Q==="bun.sh")return(await i("https://api.github.com/repos/oven-sh/bun/releases?per_page=100").catch(()=>null)||[]).map((Z)=>(Z.tag_name||"").replace(/^bun-v/,"")).filter(Boolean);if(Q==="nodejs.org")return(await i("https://nodejs.org/dist/index.json").catch(()=>null)||[]).map((Z)=>(Z.version||"").replace(/^v/,"")).filter(Boolean);return[]}function q0(Q,X){let $=Q.split(".").map(Number),Z=X.split(".").map(Number);for(let W=0;W<Math.max($.length,Z.length);W++){let H=(Z[W]||0)-($[W]||0);if(H)return H}return 0}async function B0(Q,X){let $=X.match(/^([~^>=<]+)(\d+(?:\.\d+){0,10})/);if(!$)return lQ(Q);let Z=$[1],W=$[2],H=W.split(".").map(Number),U;try{let G=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:z}=await import("./chunk-tbgzzd68.js").catch(()=>import("./src/index.js"));U=z[G]?.versions||[]}catch{U=[]}let J=await _0(Q),Y=[...new Set([...J,...U])].sort(q0);for(let G of Y)if(O0(G,Z,H,W))return G;throw Error(`No version of ${Q} satisfies "${X}" (checked ${Y.length} version${Y.length===1?"":"s"}${Y.length>0?`, newest ${Y[0]}`:""}).`)}function AX(Q,X,$=10,Z=!1){return new Promise((W,H)=>{let U=S.createWriteStream(X),J=Q.startsWith("https")?mQ.get:dQ.get,Y=!Z&&process.stderr.isTTY,G=Date.now(),z=0,O=0,K=0,L=60000,_=J(Q,(w)=>{if(w.statusCode&&w.statusCode>=300&&w.statusCode<400&&w.headers.location){U.close();try{S.unlinkSync(X)}catch{}if($<=0)return H(Error(`Too many redirects for ${Q}`));return AX(w.headers.location,X,$-1,Z).then(W,H)}if(!w.statusCode||w.statusCode<200||w.statusCode>=300){U.close();try{S.unlinkSync(X)}catch{}return H(Error(`HTTP ${w.statusCode||"unknown"} downloading ${Q}`))}let I=w.headers["content-length"];if(I)O=Number.parseInt(I,10)||0;w.on("data",(C)=>{if(G=Date.now(),z+=C.length,Y&&G-K>200){K=G;let T=(z/1048576).toFixed(1);if(O>0){let j=(O/1048576).toFixed(1),R=Math.floor(z/O*100);process.stderr.write(`\r ${T}/${j} MB (${R}%)`)}else process.stderr.write(`\r ${T} MB`)}}),w.pipe(U),w.on("error",(C)=>{U.close();try{S.unlinkSync(X)}catch{}H(C)}),U.on("finish",()=>{if(U.close(),Y&&K>0)process.stderr.write("\r\x1B[K");W()}),U.on("error",(C)=>{try{S.unlinkSync(X)}catch{}H(C)})});_.on("error",(w)=>{U.close();try{S.unlinkSync(X)}catch{}H(w)});let q=setInterval(()=>{if(Date.now()-G>L)clearInterval(q),_.destroy(Error(`Download stalled (no data for ${L/1000}s): ${Q}`))},5000),B=()=>clearInterval(q);U.once("finish",B),U.once("error",B),_.once("error",B)})}async function w0(Q,X,$){if($==="zip")if(process.platform==="win32")EQ("powershell",["-NoProfile","-Command","Expand-Archive","-Path",Q,"-DestinationPath",X,"-Force"],{stdio:"pipe"});else EQ("unzip",["-o","-q",Q,"-d",X],{stdio:"pipe"});else if($==="tar.xz")EQ("tar",["xJf",Q,"-C",X],{stdio:"pipe"});else if($==="tar.gz")EQ("tar",["xzf",Q,"-C",X],{stdio:"pipe"});else throw Error(`Unsupported archive format: ${$}`)}function L0(Q,X){S.cpSync(Q,X,{recursive:!0})}function i(Q,X=5){return new Promise(($,Z)=>{let W=Q.startsWith("https")?mQ.get:dQ.get,H={"User-Agent":"pantry-installer",Accept:"application/json"};if(Q.includes("api.github.com")){let J=process.env.GITHUB_TOKEN||process.env.GH_TOKEN;if(J)H.Authorization=`Bearer ${J}`}let U=W(Q,{headers:H,timeout:30000},(J)=>{if(J.statusCode&&J.statusCode>=300&&J.statusCode<400&&J.headers.location){if(X<=0)return Z(Error(`Too many redirects for ${Q}`));return i(J.headers.location,X-1).then($,Z)}if(!J.statusCode||J.statusCode<200||J.statusCode>=300)return Z(Error(`HTTP ${J.statusCode||"unknown"} fetching ${Q}`));let Y="";J.on("data",(G)=>Y+=G),J.on("end",()=>{try{$(JSON.parse(Y))}catch(G){Z(G)}})});U.on("error",Z),U.on("timeout",()=>{U.destroy(),Z(Error(`Request timed out: ${Q}`))})})}function j0(Q){return Q in BQ}function s4(){return Object.keys(BQ)}function t4(Q){let X=BQ[Q];if(!X)return;let $=cQ();return X.getBinaries($)[0]}import*as g from"node:fs";import*as AQ from"node:os";import*as UQ from"node:path";var SQ="# >>> pantry shell-init >>>",VQ="# <<< pantry shell-init <<<";function xQ(){let Q=process.env.SHELL??"";if(Q.endsWith("/zsh")||Q==="zsh")return"zsh";if(Q.endsWith("/bash")||Q==="bash")return"bash";if(Q.endsWith("/fish")||Q==="fish")return"fish";return"unknown"}function pQ(Q){let X=AQ.homedir();switch(Q){case"zsh":{let $=process.env.ZDOTDIR;return UQ.join($&&$.length>0?$:X,".zshrc")}case"bash":{if(AQ.platform()==="darwin"){let $=UQ.join(X,".bash_profile");if(g.existsSync($))return $}return UQ.join(X,".bashrc")}case"fish":return UQ.join(X,".config","fish","config.fish");case"unknown":return null}}function xX(Q={}){let X=Q.globalBin??MQ();if((Q.shell??xQ())==="fish")return[SQ,`if test -d "${X}"`,` set -gx PATH "${X}" $PATH`,"end",VQ,""].join(`
7
+ `),Z=!1,W=!1,H=[],U=!1;for(let J of $){let Y=J.trim();if(!Y||Y.startsWith("#"))continue;if(J.match(/^services:\s*$/)){Z=!0,W=!1;continue}if(Z&&!J.startsWith(" ")&&!J.startsWith("\t")&&!Y.startsWith("-")){if(Y!=="services:"){Z=!1,W=!1;continue}}if(Z){if(Y.startsWith("enabled:")){U=Y.includes("true");continue}if(Y.match(/^autoStart:\s*$/)){W=!0;continue}if(W&&Y.startsWith("- ")){let G=Y.slice(2).trim();if(G)H.push(G)}}}if(H.length>0)X.services={enabled:U,autoStart:H};return X}async function n4(Q,X="src/packages"){try{let $;if(Q.includes("/"))$=CQ.join(X,`${Q}.ts`);else{let z=`${Q.replace(/\./g,"")}.ts`;$=CQ.join(X,z)}if(!HQ.existsSync($))return[];let Z=HQ.readFileSync($,"utf-8"),W=Z.indexOf("versions:");if(W===-1)return[];let H=Z.substring(W),U=H.indexOf("["),J=H.indexOf("] as const");if(U===-1||J===-1)return[];let G=H.substring(U+1,J).match(/'([^']+)'/g);if(!G)return[];return G.map((z)=>z.replace(/'/g,""))}catch{return[]}}async function H0(Q){try{let{packages:X}=await import("./chunk-n6yv503d.js").catch(()=>import("./src/index.js")),$=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),Z=X[$];if(!Z){let W=Object.values(X);Z=W.find((H)=>H.domain===Q)||W.find((H)=>Array.isArray(H.aliases)&&H.aliases.includes(Q))}if(Z&&Z.versions&&Array.isArray(Z.versions))return Z.versions;return[]}catch{return[]}}async function EX(Q,X){let $=await H0(Q);if($.length===0)return X.split("#")[0].trim().replace(/^[@^~>=<]+/,"")||"latest";let Z=X.split("#")[0].trim();if(Z==="*"||Z==="latest")return $[0];if(Z.startsWith("@")){let H=Z.slice(1);return $.includes(H)?H:$[0]}return U0($,Z)||$[0]}function U0(Q,X){if(X.startsWith("^")){let $=X.slice(1),[Z]=YQ($);return Q.filter((H)=>{let[U]=YQ(H);return U===Z&&JQ(H,$)>=0})[0]||null}if(X.startsWith("~")){let $=X.slice(1),[Z,W]=YQ($);return Q.filter((U)=>{let[J,Y]=YQ(U);return J===Z&&Y===W&&JQ(U,$)>=0})[0]||null}if(X.startsWith(">=")){let $=X.slice(2).trim();return Q.filter((W)=>JQ(W,$)>=0)[0]||null}if(X.startsWith(">")){let $=X.slice(1).trim();return Q.filter((W)=>JQ(W,$)>0)[0]||null}if(X.startsWith("<=")){let $=X.slice(2).trim();return Q.filter((W)=>JQ(W,$)<=0)[0]||null}if(X.startsWith("<")){let $=X.slice(1).trim();return Q.filter((W)=>JQ(W,$)<0)[0]||null}if(X.startsWith("=")){let $=X.slice(1).trim();return Q.includes($)?$:null}return Q.includes(X)?X:null}function YQ(Q){let X=Q.split(".").map(($)=>{let Z=$.match(/^\d+/);return Z?Number.parseInt(Z[0],10):0});return[X[0]||0,X[1]||0,X[2]||0]}function JQ(Q,X){if(Q==="latest"&&X!=="latest")return 1;if(X==="latest"&&Q!=="latest")return-1;if(Q==="latest"&&X==="latest")return 0;let $=Q.split("#")[0].trim(),Z=X.split("#")[0].trim(),[W,H,U]=YQ($),[J,Y,G]=YQ(Z);if(W>J)return 1;if(W<J)return-1;if(H>Y)return 1;if(H<Y)return-1;if(U>G)return 1;if(U<G)return-1;return 0}var TQ=null;async function Y0(){if(TQ)return TQ;return TQ=(await import("./chunk-n6yv503d.js").catch(()=>import("./src/index.js"))).packages,TQ}async function G0(Q){try{let X=await Y0(),$=X[Q];if($)return{dependencies:$.dependencies||[],companions:$.companions||[]};let Z=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),W=X[Z];if(W)return{dependencies:W.dependencies||[],companions:W.companions||[]};let U=Object.values(X).find((J)=>J.domain===Q);if(U)return{dependencies:U.dependencies||[],companions:U.companions||[]};return null}catch(X){return console.warn(`Failed to load package data for ${Q}: ${X}`),null}}async function IQ(Q,X={},$=new Set,Z=0){let{maxDepth:W=10,verbose:H=!1,targetOs:U,includeOsSpecific:J=!0}=X;if(Z>W){if(H)console.warn(` Warning: max dependency depth (${W}) exceeded for ${Q}`);return[]}if($.has(Q))return[];if($.add(Q),H)console.log(`${" ".repeat(Z)}Resolving dependencies for: ${Q}`);let Y=[];try{let z=function(_){let q=_.match(/^(linux|darwin|windows):(.+)$/),B=!!q,w=q?q[2]:_,I=q?q[1]:void 0;if(B&&(!J||U&&I!==U))return null;let C=w,T="latest",j="*",R=w.match(/^(@?[^@^~>=<]+(?:\/[^@^~>=<]+)?)([@^~>=<].+)?$/);if(R){if(C=R[1],R[2]){let E=R[2];if(E.startsWith("@"))T=E.substring(1),j=E;else j=E,T=E.replace(/^\D*/,"")}}return{dep:{name:C,version:T,constraint:j,isOsSpecific:B,os:I},pkgName:C}},G=await G0(Q),K=[...G?.dependencies||[],...G?.companions||[]].map(z).filter((_)=>_!==null);for(let{dep:_}of K)Y.push(_);let L=await Promise.allSettled(K.map(({pkgName:_})=>IQ(_,X,$,Z+1)));for(let _ of L)if(_.status==="fulfilled")Y.push(..._.value);else if(H)console.warn(` Warning: transitive dependency resolution failed: ${_.reason}`)}catch(G){if(H)console.warn(`${" ".repeat(Z)}Warning: Could not resolve dependencies for ${Q}: ${G}`)}return Y}async function gQ(Q,X={}){let $=new Map,Z=[],W={linux:[],darwin:[],windows:[]};for(let J of Q){if(!$.has(J.name))$.set(J.name,[]);if($.get(J.name).push(J),J.isOsSpecific&&J.os)W[J.os].push(J)}let H=[],U=[];for(let[J,Y]of $)if(Y.length===1){let G=await EX(J,Y[0].constraint),z={...Y[0],version:G};H.push(z),U.push(J)}else{let G=Y.map((_)=>_.version),z=[...new Set(G)];if(z.length>1)Z.push({package:J,versions:z});let O=await Promise.all(Y.map(async(_)=>({..._,resolvedVersion:await EX(J,_.constraint)}))),K=O[0];for(let _ of O.slice(1))if(K.constraint==="*"&&_.constraint!=="*")K=_;else if(K.constraint!=="*"&&_.constraint==="*");else if(JQ(_.resolvedVersion,K.resolvedVersion)>0)K=_;let L={...K,version:K.resolvedVersion};delete L.resolvedVersion,H.push(L),U.push(J)}return{allDependencies:H,uniquePackages:U,conflicts:Z,osSpecificDeps:W}}async function FX(Q,X={}){let{verbose:$=!1}=X;if($)console.log(`Parsing dependency file: ${Q}`);let Z=RQ(Q);if($)console.log(`Found ${Z.length} direct dependencies`);let W=[...Z],H=await Promise.all(Z.map(async(Y)=>{if($)console.log(`Resolving transitive dependencies for: ${Y.name}`);return IQ(Y.name,X)}));for(let Y of H)W.push(...Y);if($)console.log(`Total dependencies found (before deduplication): ${W.length}`);let U=await gQ(W,X);if($){if(console.log(`Unique packages after deduplication: ${U.uniquePackages.length}`),U.conflicts.length>0)console.log(`Version conflicts found: ${U.conflicts.length}`)}let J=CQ.extname(Q);if(J===".yaml"||J===".yml"){let Y=W0(Q);if(Y.services)U.services=Y.services}return U}function o4(Q){let X=["deps.yaml","deps.yml","dependencies.yaml","dependencies.yml","pkgx.yaml","pkgx.yml",".deps.yaml",".deps.yml"],$=[];for(let Z of X){let W=CQ.join(Q,Z);if(HQ.existsSync(W))$.push(W)}return $}import*as S from"node:fs";import*as u from"node:path";import*as t from"node:os";import*as mQ from"node:https";import*as dQ from"node:http";import{execFileSync as EQ}from"node:child_process";function MQ(){let Q=process.env.XDG_DATA_HOME,X=Q&&Q.length>0?Q:u.join(t.homedir(),".local","share");return u.join(X,"pantry","global","bin")}function cQ(){let Q=t.platform(),X=t.arch();return{os:Q==="darwin"?"darwin":Q==="win32"?"windows":"linux",arch:X==="arm64"?"aarch64":"x86_64"}}var BQ={"github.com/mail-os/mail":{getDownloadUrl(Q,X){if(X.os!=="linux"||X.arch!=="x86_64")throw Error("github.com/mail-os/mail currently publishes linux-x86_64 release binaries");let $={darwin:"macos",linux:"linux",windows:"windows"},Z=`mail-${X.arch}-${$[X.os]}`;return`https://github.com/mail-os/mail/releases/download/v${Q}/${Z}.tar.gz`},getArchiveFormat(){return"tar.gz"},getBinaries(Q){let X={darwin:"macos",linux:"linux",windows:"windows"};return[`mail-${Q.arch}-${X[Q.os]}`,"mail"]}},"ziglang.org":{getDownloadUrl(Q,X){let $={x86_64:"x86_64",aarch64:"aarch64"},Z={darwin:"macos",linux:"linux",windows:"windows"},W=$[X.arch],H=Z[X.os],U=X.os==="windows"?"zip":"tar.xz";if(Q.includes("-dev"))return`https://ziglang.org/builds/zig-${W}-${H}-${Q}.${U}`;return`https://ziglang.org/download/${Q}/zig-${W}-${H}-${Q}.${U}`},getArchiveFormat(Q){return Q.os==="windows"?"zip":"tar.xz"},getBinaries(Q){return Q.os==="windows"?["zig.exe"]:["zig"]},getArchivePrefix(Q,X){let $={x86_64:"x86_64",aarch64:"aarch64"},Z={darwin:"macos",linux:"linux",windows:"windows"};return`zig-${$[X.arch]}-${Z[X.os]}-${Q}`}},"bun.sh":{getDownloadUrl(Q,X){let $={"darwin-aarch64":"darwin-aarch64","darwin-x86_64":"darwin-x64","linux-aarch64":"linux-aarch64","linux-x86_64":"linux-x64","windows-x86_64":"windows-x64"},Z=`${X.os}-${X.arch}`,W=$[Z]||"linux-x64";return`https://github.com/oven-sh/bun/releases/download/bun-v${Q}/bun-${W}.zip`},getArchiveFormat(){return"zip"},getBinaries(Q){return Q.os==="windows"?["bun.exe"]:["bun","bunx"]},getArchivePrefix(Q,X){let $={"darwin-aarch64":"bun-darwin-aarch64","darwin-x86_64":"bun-darwin-x64","linux-aarch64":"bun-linux-aarch64","linux-x86_64":"bun-linux-x64","windows-x86_64":"bun-windows-x64"},Z=`${X.os}-${X.arch}`,W=$[Z];if(!W)throw Error(`Unsupported platform for bun: ${Z}`);return W}},"nodejs.org":{getDownloadUrl(Q,X){let $={darwin:"darwin",linux:"linux",windows:"win"},Z={x86_64:"x64",aarch64:"arm64"},W=X.os==="windows"?"zip":"tar.xz";return`https://nodejs.org/dist/v${Q}/node-v${Q}-${$[X.os]}-${Z[X.arch]}.${W}`},getArchiveFormat(Q){return Q.os==="windows"?"zip":"tar.xz"},getBinaries(Q){return Q.os==="windows"?["node.exe","npm.cmd","npx.cmd"]:["node","npm","npx"]},getArchivePrefix(Q,X){let $={darwin:"darwin",linux:"linux",windows:"win"},Z={x86_64:"x64",aarch64:"arm64"};return`node-v${Q}-${$[X.os]}-${Z[X.arch]}`}}};function MX(Q,X,$,Z){S.mkdirSync($,{recursive:!0});let W=null;for(let H of X){let U=u.join(Q,H);if(!S.existsSync(U))U=u.join(Q,"bin",H);if(!S.existsSync(U)){if(W){let Y=u.join($,H);try{S.unlinkSync(Y)}catch{}if(Z.os==="windows")S.copyFileSync(W,Y);else S.symlinkSync(W,Y)}continue}if(!W)W=U;let J=u.join($,H);try{S.unlinkSync(J)}catch{}if(Z.os==="windows")S.copyFileSync(U,J);else S.symlinkSync(U,J)}}async function VX(Q,X,$={}){let Z=$.platform||cQ(),W=BQ[Q];if(!W)throw Error(`Unknown package: ${Q}. Supported: ${Object.keys(BQ).join(", ")}`);if(/^[\^~>=<]/.test(X))X=await B0(Q,X);else if(X==="latest"||X==="*"||!X)X=await lQ(Q);else if(Q==="ziglang.org"&&X.endsWith("-dev")){let q=await K0(X);if(q)X=q}if(!X)throw Error(`Could not resolve a concrete version for ${Q} (got empty string from resolver)`);let H=$.installDir||u.join(process.cwd(),"pantry"),U=u.join(H,".bin"),J=u.join(H,Q.replace(/\./g,"-"),X),Y=W.getBinaries(Z);if(Y.length===0)throw Error(`No binaries defined for ${Q} on ${Z.os}-${Z.arch}`);let G=u.join(J,Y[0]),z=u.join(J,"bin",Y[0]);if(S.existsSync(G)||S.existsSync(z)){if(!$.quiet)console.log(` ✓ ${Q}@${X} (cached)`);if($.createBinLinks!==!1)MX(J,Y,U,Z);let q=SX(J,Y,Z,$);return{name:Q,version:X,installPath:J,binaries:Y,globalLinks:q}}let O=W.getDownloadUrl(X,Z),K=W.getArchiveFormat(Z);if(!$.quiet)console.log(` → ${Q}@${X} from ${new URL(O).hostname}`);let L=S.mkdtempSync(u.join(t.tmpdir(),"pantry-")),_=u.join(L,`archive.${K}`);try{await AX(O,_,10,$.quiet??!1);let q=u.join(L,"extracted");S.mkdirSync(q,{recursive:!0}),await w0(_,q,K);let B=q,w=W.getArchivePrefix?.(X,Z);if(w){let C=u.join(q,w);if(S.existsSync(C))B=C;else{let j=S.readdirSync(q).find((R)=>S.statSync(u.join(q,R)).isDirectory());if(j)B=u.join(q,j)}}if(S.mkdirSync(J,{recursive:!0}),L0(B,J),Z.os!=="windows")for(let C of Y){let T=u.join(J,C);if(S.existsSync(T))S.chmodSync(T,493);let j=u.join(J,"bin",C);if(S.existsSync(j))S.chmodSync(j,493)}if($.createBinLinks!==!1)MX(J,Y,U,Z);if(!$.quiet)console.log(` ✓ ${Q}@${X}`);let I=SX(J,Y,Z,$);return{name:Q,version:X,installPath:J,binaries:Y,globalLinks:I}}finally{try{S.rmSync(L,{recursive:!0,force:!0})}catch{}}}function SX(Q,X,$,Z){if(!Z.globalBin)return[];let W=typeof Z.globalBin==="string"?Z.globalBin:MQ();S.mkdirSync(W,{recursive:!0});let H=[];for(let U of X){let J=u.join(Q,U);if(!S.existsSync(J))J=u.join(Q,"bin",U);if(!S.existsSync(J))continue;let Y=u.join(W,U);try{S.unlinkSync(Y)}catch{}if($.os==="windows")S.copyFileSync(J,Y);else S.symlinkSync(J,Y);H.push(Y)}if(!Z.quiet&&H.length>0)console.log(` → linked ${H.length} binary(ies) into ${W}`);return H}async function z0(Q,X={}){return Promise.all(Q.map(($)=>VX($.domain,$.version,X)))}async function lQ(Q){if(Q==="bun.sh"){let $=(await i("https://api.github.com/repos/oven-sh/bun/releases/latest").catch(()=>null))?.tag_name?.replace(/^bun-v/,"")||"";if($)return $;let Z=await FQ(Q);if(Z)return Z;throw Error("Failed to resolve latest bun.sh version (GitHub API unreachable, no bundled metadata)")}if(Q==="ziglang.org"){let $=(await i("https://ziglang.org/download/index.json").catch(()=>null))?.master?.version;if($)return $;let Z=await FQ(Q);if(Z)return Z;throw Error("Failed to resolve latest ziglang.org version")}if(Q==="nodejs.org"){let $=await i("https://nodejs.org/dist/index.json").catch(()=>null)||[],W=($.find((U)=>U.lts)?.version||$[0]?.version||"").replace(/^v/,"");if(W)return W;let H=await FQ(Q);if(H)return H;throw Error("Failed to resolve latest nodejs.org version")}if(Q==="github.com/mail-os/mail"){let $=(await i("https://api.github.com/repos/mail-os/mail/releases/latest").catch(()=>null))?.tag_name?.replace(/^v/,"")||"";if($)return $;let W=((await i("https://api.github.com/repos/mail-os/mail/tags?per_page=1").catch(()=>null))?.[0]?.name||"").replace(/^v/,"");if(W)return W;let H=await FQ(Q);if(H)return H;throw Error("Failed to resolve latest github.com/mail-os/mail version")}throw Error(`Cannot resolve latest version for ${Q}`)}async function FQ(Q){try{let X=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:$}=await import("./chunk-n6yv503d.js").catch(()=>import("./src/index.js")),W=$[X]?.versions||[];return W.find((H)=>!H.includes("-"))||W[0]||""}catch{return""}}async function K0(Q){try{let $=(await i("https://ziglang.org/download/index.json")).master?.version;if($&&$.startsWith(Q))return $}catch{}return null}function O0(Q,X,$,Z){if(Q.includes("-")&&!Z.includes("-"))return!1;let W=Q.split(".").map(Number);if(W.some(Number.isNaN))return!1;let[H,U,J]=[W[0]||0,W[1]||0,W[2]||0],[Y,G,z]=[$[0]||0,$[1]||0,$[2]||0];if(X==="^"){if(Y===0)return H===0&&U===G&&J>=z;return H===Y&&(U>G||U===G&&J>=z)}if(X==="~")return H===Y&&U===G&&J>=z;if(X===">=")return H>Y||H===Y&&U>G||H===Y&&U===G&&J>=z;return!1}async function _0(Q){if(Q==="bun.sh")return(await i("https://api.github.com/repos/oven-sh/bun/releases?per_page=100").catch(()=>null)||[]).map((Z)=>(Z.tag_name||"").replace(/^bun-v/,"")).filter(Boolean);if(Q==="nodejs.org")return(await i("https://nodejs.org/dist/index.json").catch(()=>null)||[]).map((Z)=>(Z.version||"").replace(/^v/,"")).filter(Boolean);return[]}function q0(Q,X){let $=Q.split(".").map(Number),Z=X.split(".").map(Number);for(let W=0;W<Math.max($.length,Z.length);W++){let H=(Z[W]||0)-($[W]||0);if(H)return H}return 0}async function B0(Q,X){let $=X.match(/^([~^>=<]+)(\d+(?:\.\d+){0,10})/);if(!$)return lQ(Q);let Z=$[1],W=$[2],H=W.split(".").map(Number),U;try{let G=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:z}=await import("./chunk-n6yv503d.js").catch(()=>import("./src/index.js"));U=z[G]?.versions||[]}catch{U=[]}let J=await _0(Q),Y=[...new Set([...J,...U])].sort(q0);for(let G of Y)if(O0(G,Z,H,W))return G;throw Error(`No version of ${Q} satisfies "${X}" (checked ${Y.length} version${Y.length===1?"":"s"}${Y.length>0?`, newest ${Y[0]}`:""}).`)}function AX(Q,X,$=10,Z=!1){return new Promise((W,H)=>{let U=S.createWriteStream(X),J=Q.startsWith("https")?mQ.get:dQ.get,Y=!Z&&process.stderr.isTTY,G=Date.now(),z=0,O=0,K=0,L=60000,_=J(Q,(w)=>{if(w.statusCode&&w.statusCode>=300&&w.statusCode<400&&w.headers.location){U.close();try{S.unlinkSync(X)}catch{}if($<=0)return H(Error(`Too many redirects for ${Q}`));return AX(w.headers.location,X,$-1,Z).then(W,H)}if(!w.statusCode||w.statusCode<200||w.statusCode>=300){U.close();try{S.unlinkSync(X)}catch{}return H(Error(`HTTP ${w.statusCode||"unknown"} downloading ${Q}`))}let I=w.headers["content-length"];if(I)O=Number.parseInt(I,10)||0;w.on("data",(C)=>{if(G=Date.now(),z+=C.length,Y&&G-K>200){K=G;let T=(z/1048576).toFixed(1);if(O>0){let j=(O/1048576).toFixed(1),R=Math.floor(z/O*100);process.stderr.write(`\r ${T}/${j} MB (${R}%)`)}else process.stderr.write(`\r ${T} MB`)}}),w.pipe(U),w.on("error",(C)=>{U.close();try{S.unlinkSync(X)}catch{}H(C)}),U.on("finish",()=>{if(U.close(),Y&&K>0)process.stderr.write("\r\x1B[K");W()}),U.on("error",(C)=>{try{S.unlinkSync(X)}catch{}H(C)})});_.on("error",(w)=>{U.close();try{S.unlinkSync(X)}catch{}H(w)});let q=setInterval(()=>{if(Date.now()-G>L)clearInterval(q),_.destroy(Error(`Download stalled (no data for ${L/1000}s): ${Q}`))},5000),B=()=>clearInterval(q);U.once("finish",B),U.once("error",B),_.once("error",B)})}async function w0(Q,X,$){if($==="zip")if(process.platform==="win32")EQ("powershell",["-NoProfile","-Command","Expand-Archive","-Path",Q,"-DestinationPath",X,"-Force"],{stdio:"pipe"});else EQ("unzip",["-o","-q",Q,"-d",X],{stdio:"pipe"});else if($==="tar.xz")EQ("tar",["xJf",Q,"-C",X],{stdio:"pipe"});else if($==="tar.gz")EQ("tar",["xzf",Q,"-C",X],{stdio:"pipe"});else throw Error(`Unsupported archive format: ${$}`)}function L0(Q,X){S.cpSync(Q,X,{recursive:!0})}function i(Q,X=5){return new Promise(($,Z)=>{let W=Q.startsWith("https")?mQ.get:dQ.get,H={"User-Agent":"pantry-installer",Accept:"application/json"};if(Q.includes("api.github.com")){let J=process.env.GITHUB_TOKEN||process.env.GH_TOKEN;if(J)H.Authorization=`Bearer ${J}`}let U=W(Q,{headers:H,timeout:30000},(J)=>{if(J.statusCode&&J.statusCode>=300&&J.statusCode<400&&J.headers.location){if(X<=0)return Z(Error(`Too many redirects for ${Q}`));return i(J.headers.location,X-1).then($,Z)}if(!J.statusCode||J.statusCode<200||J.statusCode>=300)return Z(Error(`HTTP ${J.statusCode||"unknown"} fetching ${Q}`));let Y="";J.on("data",(G)=>Y+=G),J.on("end",()=>{try{$(JSON.parse(Y))}catch(G){Z(G)}})});U.on("error",Z),U.on("timeout",()=>{U.destroy(),Z(Error(`Request timed out: ${Q}`))})})}function j0(Q){return Q in BQ}function s4(){return Object.keys(BQ)}function t4(Q){let X=BQ[Q];if(!X)return;let $=cQ();return X.getBinaries($)[0]}import*as g from"node:fs";import*as AQ from"node:os";import*as UQ from"node:path";var SQ="# >>> pantry shell-init >>>",VQ="# <<< pantry shell-init <<<";function xQ(){let Q=process.env.SHELL??"";if(Q.endsWith("/zsh")||Q==="zsh")return"zsh";if(Q.endsWith("/bash")||Q==="bash")return"bash";if(Q.endsWith("/fish")||Q==="fish")return"fish";return"unknown"}function pQ(Q){let X=AQ.homedir();switch(Q){case"zsh":{let $=process.env.ZDOTDIR;return UQ.join($&&$.length>0?$:X,".zshrc")}case"bash":{if(AQ.platform()==="darwin"){let $=UQ.join(X,".bash_profile");if(g.existsSync($))return $}return UQ.join(X,".bashrc")}case"fish":return UQ.join(X,".config","fish","config.fish");case"unknown":return null}}function xX(Q={}){let X=Q.globalBin??MQ();if((Q.shell??xQ())==="fish")return[SQ,`if test -d "${X}"`,` set -gx PATH "${X}" $PATH`,"end",VQ,""].join(`
8
8
  `);return[SQ,`if [ -d "${X}" ] && [[ ":$PATH:" != *":${X}:"* ]]; then`,` export PATH="${X}:$PATH"`,"fi",VQ,""].join(`
9
9
  `)}function T0(Q={}){let X=Q.shell??xQ(),$=pQ(X);if(!$)throw Error(`Could not detect a supported shell (got SHELL=${process.env.SHELL??"<unset>"}). Run \`ts-pantry shell-init\` and copy the printed snippet into your rc file manually.`);let Z=xX({...Q,shell:X}),W="";if(g.existsSync($)){if(W=g.readFileSync($,"utf-8"),W.includes(SQ))return{rcFile:$,shell:X,changed:!1}}else g.mkdirSync(UQ.dirname($),{recursive:!0});let H=W.length>0&&!W.endsWith(`
10
10
  `)?`
@@ -0,0 +1 @@
1
+ import{execSync as C}from"node:child_process";var y=new Set,L=!1;function H(){if(L)return;L=!0;let s=()=>{for(let o of y)try{C(`pantry stop ${o}`,{stdio:"ignore",timeout:1e4})}catch{}y.clear()};process.on("exit",s),process.on("SIGINT",()=>{s(),process.exit(130)}),process.on("SIGTERM",()=>{s(),process.exit(143)})}function l(s,o=!1){let t={encoding:"utf-8",timeout:30000,stdio:o?"pipe":["pipe","pipe","pipe"]};return C(`pantry ${s}`,t)}function J(s){let o=s.match(/Name:\s+(\S+)/)?.[1]??"",t=/Status:\s+running/i.test(s),n=s.match(/Port:\s+(\d+)/),r=s.match(/PID:\s+(\d+)/),$=s.match(/Data Dir:\s+(.+)/);return{name:o,running:t,port:n?Number.parseInt(n[1],10):null,pid:r?Number.parseInt(r[1],10):null,dataDir:$?$[1].trim():null}}class e{config;_startedByUs=!1;constructor(s){this.config={name:s.name,port:s.port??0,readyTimeoutMs:s.readyTimeoutMs??15000,pollIntervalMs:s.pollIntervalMs??200,quiet:s.quiet??!0}}static isAvailable(){try{return C("pantry --version",{stdio:"ignore",timeout:5000}),!0}catch{return!1}}status(){try{let s=l(`inspect ${this.config.name}`,!0);return J(s)}catch{return{name:this.config.name,running:!1,port:null,pid:null,dataDir:null}}}isRunning(){return this.status().running}getPort(){return this.status().port}async start(){if(H(),this.isRunning())return this.status();return l(`start ${this.config.name}`,this.config.quiet),this._startedByUs=!0,y.add(this.config.name),await this.waitReady(),this.status()}async stop(){if(!this._startedByUs)return;try{l(`stop ${this.config.name}`,this.config.quiet)}catch{}y.delete(this.config.name),this._startedByUs=!1}async forceStop(){try{l(`stop ${this.config.name}`,this.config.quiet)}catch{}y.delete(this.config.name),this._startedByUs=!1}async ensureRunning(){if(this.isRunning())return this.status();return this.start()}async waitReady(){let s=Date.now()+this.config.readyTimeoutMs;while(Date.now()<s){if(this.isRunning())return;await new Promise((o)=>setTimeout(o,this.config.pollIntervalMs))}throw Error(`Service '${this.config.name}' did not become ready within ${this.config.readyTimeoutMs}ms`)}}var u=new e({name:"postgres"});async function R(s){let o=await u.ensureRunning();return{port:s?.port??o.port??5432,host:s?.host??"localhost",database:s?.database??"postgres",username:s?.username??process.env.USER??"postgres"}}async function q(){await u.stop()}function K(s){let o=null;return{get connection(){if(!o)throw Error("Postgres not started. Ensure beforeAll has run.");return o},beforeAll:async()=>{o=await R(s)},afterAll:async()=>{await q(),o=null}}}async function N(s,o){let t=await R(o);try{return await s(t)}finally{if(o?.stopAfter!==!1)await q()}}var x=new e({name:"redis"});async function m(s){let o=await x.ensureRunning(),t=s?.port??o.port??6379,n=s?.host??"localhost";return{port:t,host:n,url:`redis://${n}:${t}`}}async function M(){await x.stop()}function O(s){let o=null;return{get connection(){if(!o)throw Error("Redis not started. Ensure beforeAll has run.");return o},beforeAll:async()=>{o=await m(s)},afterAll:async()=>{await M(),o=null}}}async function U(s,o){let t=await m(o);try{return await s(t)}finally{if(o?.stopAfter!==!1)await M()}}var z=new e({name:"mysql"});async function i(s){let o=await z.ensureRunning();return{port:s?.port??o.port??3306,host:s?.host??"localhost",database:s?.database??"test",username:s?.username??"root"}}async function A(){await z.stop()}function V(s){let o=null;return{get connection(){if(!o)throw Error("MySQL not started. Ensure beforeAll has run.");return o},beforeAll:async()=>{o=await i(s)},afterAll:async()=>{await A(),o=null}}}async function X(s,o){let t=await i(o);try{return await s(t)}finally{if(o?.stopAfter!==!1)await A()}}import{existsSync as T,mkdirSync as F,mkdtempSync as Y,rmSync as G,writeFileSync as Z}from"node:fs";import{tmpdir as a}from"node:os";import{join as b}from"node:path";var w=new Set,B=!1;function I(){if(B)return;B=!0;let s=()=>{for(let o of w)try{if(T(o))G(o,{recursive:!0,force:!0})}catch{}w.clear()};process.on("exit",s),process.on("SIGINT",()=>{s(),process.exit(130)}),process.on("SIGTERM",()=>{s(),process.exit(143)})}function P(s="pantry-test-"){I();let o=Y(b(a(),s));return w.add(o),o}function Q(s){w.delete(s);try{if(T(s))G(s,{recursive:!0,force:!0})}catch{}}async function W(s,o){let t=P(s);try{return await o(t)}finally{Q(t)}}function _(s,o){let t=P(s);try{return o(t)}finally{Q(t)}}function h(s,o,t){let n=b(s,o),r=n.substring(0,n.lastIndexOf("/"));if(r&&!T(r))F(r,{recursive:!0});return Z(n,t),n}function p(s,o){let t=b(s,o);return F(t,{recursive:!0}),t}export{e as Ta,R as Ua,q as Va,K as Wa,N as Xa,m as Ya,M as Za,O as _a,U as $a,i as ab,A as bb,V as cb,X as db,P as eb,Q as fb,W as gb,_ as hb,h as ib,p as jb};