ts-pantry 0.11.0 → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{$ as _6,Ha as n6,Ia as i6,Ka as l6,L as C6,M as S6,N as v6,Na as p6,P as y6,Pa as r6,Ua as a6,Va as s6,Wa as t6,Z as k6,_ as h6,aa as g6,ba as f6,fa as G6,ga as u6,ha as c6}from"../chunk-m3zve6gx.js";import"../chunk-7msnsp1q.js";import"../chunk-pwytxyxw.js";import"../chunk-g0992q6d.js";import{Bb as X6,Cb as r,Hb as d6,Lb as U6,yb as p,zb as m6}from"../chunk-mjkz6cxz.js";import"../chunk-mt6r4c0m.js";import"../chunk-9xe74rn4.js";import{bc as l,cc as q6,dc as J6}from"../chunk-99e8jvg1.js";import"../chunk-9ea7rzny.js";import"../chunk-4gsrdtkb.js";import{Ac as q4,zc as P6}from"../chunk-qzr4847k.js";import{Ec as h}from"../chunk-403r79k6.js";import K from"node:fs";import w from"node:path";import H from"node:process";import{existsSync as zz}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 $z}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 uz,{stdin as R4,stdout as A4}from"node:process";import M6,{stdin as iz,stdout as lz}from"node:process";import pz 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(zz(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 L4=new B6;function Qz(z,$={}){let Q={_:[]},Z=$.alias||{},Y=new Set($.boolean||[]),q={};for(let U of Object.keys(Z))for(let J of Z[U])q[J]=U;for(let U of Y)if(Z[U])for(let J of Z[U])Y.add(J);function X(U,J){let G=q[U]||U;if(Q[G]=J,Z[G])for(let V of Z[G])Q[V]=J;if(q[U]&&Z[q[U]])for(let V of Z[q[U]])Q[V]=J;Q[U]=J}for(let U=0;U<z.length;U++){let J=z[U];if(J==="--"){Q._.push(...z.slice(U+1));break}if(J.startsWith("--")){let G=J.indexOf("=");if(G!==-1){let V=J.slice(2,G),F=J.slice(G+1);X(V,F)}else{let V=J.slice(2);if(V.startsWith("no-")){let j=V.slice(3);X(j,!1);continue}let F=q[V]||V;if(Y.has(F)||Y.has(V))X(V,!0);else{let j=z[U+1];if(j!==void 0&&!j.startsWith("-"))X(V,j),U++;else X(V,!0)}}}else if(J.startsWith("-")&&J.length>1){let G=J.slice(1);for(let V=0;V<G.length;V++){let F=G[V],j=q[F]||F;if(V===G.length-1&&!Y.has(j)&&!Y.has(F)){let W=z[U+1];if(W!==void 0&&!W.startsWith("-"))X(F,W),U++;else X(F,!0)}else X(F,!0)}}else Q._.push(J)}return Q}function e(z){return z.replace(/[<[].+/,"").trim()}function Zz(z){let $=/<([^>]+)>/g,Q=/\[([^\]]+)\]/g,Z=[],Y=(U)=>{let J=!1,G=U[1];if(G.startsWith("..."))G=G.slice(3),J=!0;return{required:U[0].startsWith("<"),value:G,variadic:J}},q;while(q=$.exec(z))Z.push(Y(q));let X;while(X=Q.exec(z))Z.push(Y(X));return Z}function Yz(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,X)=>{return X!==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 Jz(z,$,Q){let Z=0,Y=$.length,q=z,X;for(;Z<Y;++Z)X=q[$[Z]],q=q[$[Z]]=Z===Y-1?Q:X!=null?X:!!~$[Z+1].indexOf(".")||!(+$[Z+1]>-1)?{}:[]}function Xz(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 Uz(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{$ as _6,Ha as n6,Ia as i6,Ka as l6,L as C6,M as S6,N as v6,Na as p6,P as y6,Pa as r6,Ua as a6,Va as s6,Wa as t6,Z as k6,_ as h6,aa as g6,ba as f6,fa as G6,ga as u6,ha as c6}from"../chunk-1b4akftd.js";import"../chunk-7msnsp1q.js";import"../chunk-pwytxyxw.js";import"../chunk-d3094v8w.js";import{Bb as X6,Cb as r,Hb as d6,Lb as U6,yb as p,zb as m6}from"../chunk-mjkz6cxz.js";import"../chunk-mt6r4c0m.js";import"../chunk-9xe74rn4.js";import{bc as l,cc as q6,dc as J6}from"../chunk-99e8jvg1.js";import"../chunk-1vfz5ajk.js";import"../chunk-2akgb6fq.js";import{Ac as q4,zc as P6}from"../chunk-qzr4847k.js";import{Ec as h}from"../chunk-403r79k6.js";import K from"node:fs";import w from"node:path";import H from"node:process";import{existsSync as zz}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 $z}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 uz,{stdin as R4,stdout as A4}from"node:process";import M6,{stdin as iz,stdout as lz}from"node:process";import pz 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(zz(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 L4=new B6;function Qz(z,$={}){let Q={_:[]},Z=$.alias||{},Y=new Set($.boolean||[]),q={};for(let U of Object.keys(Z))for(let J of Z[U])q[J]=U;for(let U of Y)if(Z[U])for(let J of Z[U])Y.add(J);function X(U,J){let G=q[U]||U;if(Q[G]=J,Z[G])for(let V of Z[G])Q[V]=J;if(q[U]&&Z[q[U]])for(let V of Z[q[U]])Q[V]=J;Q[U]=J}for(let U=0;U<z.length;U++){let J=z[U];if(J==="--"){Q._.push(...z.slice(U+1));break}if(J.startsWith("--")){let G=J.indexOf("=");if(G!==-1){let V=J.slice(2,G),F=J.slice(G+1);X(V,F)}else{let V=J.slice(2);if(V.startsWith("no-")){let j=V.slice(3);X(j,!1);continue}let F=q[V]||V;if(Y.has(F)||Y.has(V))X(V,!0);else{let j=z[U+1];if(j!==void 0&&!j.startsWith("-"))X(V,j),U++;else X(V,!0)}}}else if(J.startsWith("-")&&J.length>1){let G=J.slice(1);for(let V=0;V<G.length;V++){let F=G[V],j=q[F]||F;if(V===G.length-1&&!Y.has(j)&&!Y.has(F)){let W=z[U+1];if(W!==void 0&&!W.startsWith("-"))X(F,W),U++;else X(F,!0)}else X(F,!0)}}else Q._.push(J)}return Q}function e(z){return z.replace(/[<[].+/,"").trim()}function Zz(z){let $=/<([^>]+)>/g,Q=/\[([^\]]+)\]/g,Z=[],Y=(U)=>{let J=!1,G=U[1];if(G.startsWith("..."))G=G.slice(3),J=!0;return{required:U[0].startsWith("<"),value:G,variadic:J}},q;while(q=$.exec(z))Z.push(Y(q));let X;while(X=Q.exec(z))Z.push(Y(X));return Z}function Yz(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,X)=>{return X!==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 Jz(z,$,Q){let Z=0,Y=$.length,q=z,X;for(;Z<Y;++Z)X=q[$[Z]],q=q[$[Z]]=Z===Y-1?Q:X!=null?X:!!~$[Z+1].indexOf(".")||!(+$[Z+1]>-1)?{}:[]}function Xz(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 Uz(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 Gz(){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 i="\x1B",I=`${i}[`;var S={to(z,$){if(!$)return`${I}${z+1}G`;return`${I}${$+1};${z+1}H`},move(z,$){let Q="";if(z<0)Q+=`${I}${-z}D`;else if(z>0)Q+=`${I}${z}C`;if($<0)Q+=`${I}${-$}A`;else if($>0)Q+=`${I}${$}B`;return Q},up:(z=1)=>`${I}${z}A`,down:(z=1)=>`${I}${z}B`,forward:(z=1)=>`${I}${z}C`,backward:(z=1)=>`${I}${z}D`,nextLine:(z=1)=>`${I}E`.repeat(z),prevLine:(z=1)=>`${I}F`.repeat(z),left:`${I}G`,hide:`${I}?25l`,show:`${I}?25h`,save:`${i}7`,restore:`${i}8`};var o={screen:`${I}2J`,up:(z=1)=>`${I}1J`.repeat(z),down:(z=1)=>`${I}J`.repeat(z),line:`${I}2K`,lineEnd:`${I}K`,lineStart:`${I}1K`,lines(z){let $="";for(let Q=0;Q<z;Q++)$+=this.line+(Q<z-1?S.up():"");if(z)$+=S.left;return $}},B4={screen:`${i}c`};function jz(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:jz(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 b4=z6.argv,Hz=`${z6.platform}-${z6.arch} bun-v${typeof Bun<"u"?Bun.version:"unknown"}`,W6=u.argv,Kz=`${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 J=F6($.map((W)=>W.rawName)),G=new Map,V=[];for(let W of $)if(W.namespace){if(!G.has(W.namespace))G.set(W.namespace,[]);G.get(W.namespace).push(W)}else V.push(W);let F="";if(V.length>0)F+=V.map((W)=>{return` ${t(W.rawName,J.length)} ${W.description}`}).join(`
@@ -37,7 +37,7 @@ Run \`${this.name??"cli"} --help\` for usage.`;v.stderr.write(`${q}${Y}${X}
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 $=nz(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 sz(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 tz(z,$){return($.label??String($.value)).toLowerCase().includes(z.toLowerCase())}function oz(z,$){if(!$)return;if(z)return $;return $[0]}class ez extends Y6{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#z=0;#Q="";#Z;#$;get cursor(){return this.#z}get userInputWithCursor(){if(!this.userInput)return c.inverse(c.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}${c.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??tz;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=oz(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=sz(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 z4 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 $4=Gz();var b=(z,$)=>$4?z:$,v4=b("◆","*"),y4=b("■","x"),k4=b("▲","x"),h4=b("◇","o"),_4=b("┌","T"),Q4=b("│","|"),g4=b("└","—"),f4=b("●",">"),m4=b("○"," "),d4=b("◻","[•]"),u4=b("◼","[+]"),c4=b("◻","[ ]"),n4=b("▪","•"),i4=b("─","-"),l4=b("╮","+"),p4=b("├","+"),r4=b("╯","+"),a4=b("●","•"),s4=b("◆","*"),t4=b("▲","!"),o4=b("■","x");var e4={light:b("─","-"),heavy:b("━","="),block:b("█","#")};function Z4(){return`${c.gray(Q4)} `}var z0=Z4();var I6="0.11.0";q4();async function J4(z="src/pantry"){if(!K.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=K.readdirSync(Z,{withFileTypes:!0}),X=w.join(Z,"package.yml");if(Y&&K.existsSync(X))$.push(Y);for(let U of q)if(U.isDirectory()&&!U.name.startsWith(".")){let J=Y?`${Y}/${U.name}`:U.name,G=w.join(Z,U.name);Q(G,J)}}return Q(z),console.log(`\uD83D\uDCE6 Found ${$.length} packages in local pantry`),$.sort()}async function X4(z=!1){async function $(X){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"),X)U.searchParams.set("continuation-token",X);let J=await fetch(U.toString());if(!J.ok)throw Error(`Failed to fetch S3 listing: ${J.status}`);let G=await J.text(),V=[],F=G.match(/<Key>([^<]+)<\/Key>/g);if(F)for(let E of F){let x=E.replace(/<Key>([^<]+)<\/Key>/,"$1");V.push({Key:x})}let j=G.includes("<IsTruncated>true</IsTruncated>"),W=G.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/),L=W?W[1]:void 0;return{IsTruncated:j,NextContinuationToken:L,Contents:V}}console.log("Scraping packages from S3 registry...");let Q=new Set,Z;do{let X=await $(Z);for(let U of X.Contents){let J=U.Key,G=J.split("/");if(G.length===0)continue;if(G[0].startsWith(".")||G[0].includes(" ")||J.match(/\.(md|txt|yml|yaml|json)$/i))continue;let V=["darwin","linux","windows"],F=-1;for(let j=1;j<G.length;j++)if(V.includes(G[j])){F=j;break}if(F>0){let j=G.slice(0,F).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=X.NextContinuationToken,console.log(`Found ${Q.size} packages so far...`)}while(Z);let Y=Array.from(Q).sort(),q=[];for(let X of Y){if(!X.includes(".")||X.match(/^[a-z0-9.-]+\.[a-z]{2,}(\/[\w.-]+){0,20}$/i)===null)continue;if(X.endsWith("/README.rst")||X.endsWith("/README")||X.includes("/docs/"))continue;if(X.endsWith("/.pkgroot"))continue;if(["amazon.com/aws","charm.sh","code.videolan.org","crates.io"].includes(X))continue;q.push(X)}return console.log(`\uD83D\uDCE6 Found ${q.length} valid packages in registry`),q}async function U4(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 sz(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 tz(z,$){return($.label??String($.value)).toLowerCase().includes(z.toLowerCase())}function oz(z,$){if(!$)return;if(z)return $;return $[0]}class ez extends Y6{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#z=0;#Q="";#Z;#$;get cursor(){return this.#z}get userInputWithCursor(){if(!this.userInput)return c.inverse(c.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}${c.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??tz;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=oz(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=sz(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 z4 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 $4=Gz();var b=(z,$)=>$4?z:$,v4=b("◆","*"),y4=b("■","x"),k4=b("▲","x"),h4=b("◇","o"),_4=b("┌","T"),Q4=b("│","|"),g4=b("└","—"),f4=b("●",">"),m4=b("○"," "),d4=b("◻","[•]"),u4=b("◼","[+]"),c4=b("◻","[ ]"),n4=b("▪","•"),i4=b("─","-"),l4=b("╮","+"),p4=b("├","+"),r4=b("╯","+"),a4=b("●","•"),s4=b("◆","*"),t4=b("▲","!"),o4=b("■","x");var e4={light:b("─","-"),heavy:b("━","="),block:b("█","#")};function Z4(){return`${c.gray(Q4)} `}var z1=Z4();var I6="0.11.3";q4();async function J4(z="src/pantry"){if(!K.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=K.readdirSync(Z,{withFileTypes:!0}),X=w.join(Z,"package.yml");if(Y&&K.existsSync(X))$.push(Y);for(let U of q)if(U.isDirectory()&&!U.name.startsWith(".")){let J=Y?`${Y}/${U.name}`:U.name,G=w.join(Z,U.name);Q(G,J)}}return Q(z),console.log(`\uD83D\uDCE6 Found ${$.length} packages in local pantry`),$.sort()}async function X4(z=!1){async function $(X){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"),X)U.searchParams.set("continuation-token",X);let J=await fetch(U.toString());if(!J.ok)throw Error(`Failed to fetch S3 listing: ${J.status}`);let G=await J.text(),V=[],F=G.match(/<Key>([^<]+)<\/Key>/g);if(F)for(let E of F){let x=E.replace(/<Key>([^<]+)<\/Key>/,"$1");V.push({Key:x})}let j=G.includes("<IsTruncated>true</IsTruncated>"),W=G.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/),L=W?W[1]:void 0;return{IsTruncated:j,NextContinuationToken:L,Contents:V}}console.log("Scraping packages from S3 registry...");let Q=new Set,Z;do{let X=await $(Z);for(let U of X.Contents){let J=U.Key,G=J.split("/");if(G.length===0)continue;if(G[0].startsWith(".")||G[0].includes(" ")||J.match(/\.(md|txt|yml|yaml|json)$/i))continue;let V=["darwin","linux","windows"],F=-1;for(let j=1;j<G.length;j++)if(V.includes(G[j])){F=j;break}if(F>0){let j=G.slice(0,F).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=X.NextContinuationToken,console.log(`Found ${Q.size} packages so far...`)}while(Z);let Y=Array.from(Q).sort(),q=[];for(let X of Y){if(!X.includes(".")||X.match(/^[a-z0-9.-]+\.[a-z]{2,}(\/[\w.-]+){0,20}$/i)===null)continue;if(X.endsWith("/README.rst")||X.endsWith("/README")||X.includes("/docs/"))continue;if(X.endsWith("/.pkgroot"))continue;if(["amazon.com/aws","charm.sh","code.videolan.org","crates.io"].includes(X))continue;q.push(X)}return console.log(`\uD83D\uDCE6 Found ${q.length} valid packages in registry`),q}async function U4(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,E)=>{let x=j.allDependencies.find((N)=>N.name===L),M=x&&x.version&&x.version!=="latest"?` (${x.version})`:"";console.log(` ${E+1}. ${L}${M}`)}),G)console.log(`
102
102
  \uD83D\uDE80 Install command:`),console.log(`pantry install ${j.uniquePackages.join(" ")}`);if(Object.values(j.osSpecificDeps).reduce((L,E)=>L+E.length,0)>0)console.log(`
103
- \uD83D\uDDA5️ OS-specific dependencies:`),Object.entries(j.osSpecificDeps).forEach(([L,E])=>{if(E.length>0)console.log(` ${L}: ${E.map((x)=>x.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)}});T.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-8mzpwg2g.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,E])=>{if(E.length>0)console.log(` ${L}: ${E.map((x)=>x.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)}});T.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-yf5g07w6.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)}});T.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-xbcryeyd.js"),{packagesDir:Z="src/packages",output:Y="packages.zig",aliases:q=!1,aliasesOutput:X="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,X);console.log(`
@@ -115,4 +115,4 @@ ${Y.length} app(s) up to date, ${Q.filter((q)=>q.source==="unknown").length} unc
115
115
  ⚠ ${w.dirname(X.globalLinks[0])} is not on your PATH yet.`),console.log(" Run `ts-pantry shell-init --install` once to fix that.")}}H.exit(0)}catch(X){console.error(`Error installing ${z}:`,X instanceof Error?X.message:X),H.exit(1)}});T.command("shell-init","Print the shell snippet that puts pantry-installed packages on PATH").option("--install","Append the snippet to your shell rc file (idempotent)").option("--uninstall","Remove a previously installed snippet").option("--shell <shell>","Force a shell (zsh|bash|fish) instead of autodetect").action(async(z)=>{let $=z.shell??k6();try{if(z.uninstall){let Z=f6({shell:$});console.log(Z.changed?`✓ Removed pantry shell-init from ${Z.rcFile}`:`Nothing to remove (no pantry shell-init block in ${Z.rcFile})`),H.exit(0)}if(z.install){let Z=g6({shell:$});if(Z.changed)console.log(`✓ Added pantry shell-init to ${Z.rcFile}`),console.log(` Restart your shell or run: source ${Z.rcFile}`);else console.log(`✓ Already integrated in ${Z.rcFile}`);H.exit(0)}let Q=h6($);if(H.stdout.isTTY){if(console.log(`# Detected shell: ${$}`),console.log(`# Global bin dir: ${v6()}`),Q)console.log(`# Append this to: ${Q}`);console.log("# Or run: ts-pantry shell-init --install"),console.log()}H.stdout.write(_6({shell:$})),H.exit(0)}catch(Q){console.error("Error:",Q instanceof Error?Q.message:Q),H.exit(1)}});T.command("build [context]","Build a Dockerfile into an OCI image (no Docker daemon required)").option("-f, --file <path>","Path to the Dockerfile (default: <context>/Dockerfile)").option("-t, --tag <tag>","Image tag, e.g. myapp:latest (repeatable)").option("--target <stage>","Target stage for a multi-stage build").option("--build-arg <kv>","Set a build arg KEY=VALUE (repeatable)").option("--platform <os/arch>","Target platform (default: linux/<host-arch>)").option("--output <dir>","Where to write the image archive + OCI layout (default: <context>/.pantry/images)").option("--run-mode <mode>","How to run RUN steps: auto|chroot|host|skip (default: auto)").option("--push","Push the built image to the pantry registry after building").option("--quiet","Suppress step output").action(async(z,$)=>{try{let Q=[].concat($.tag??[]),Z={};for(let q of[].concat($.buildArg??[])){let X=q.indexOf("=");if(X!==-1)Z[q.slice(0,X)]=q.slice(X+1)}let Y=await p6({context:z??".",dockerfile:$.file,tags:Q,target:$.target,buildArgs:Z,platform:$.platform,outputDir:$.output,runMode:$.runMode,quiet:$.quiet});if(!$.quiet){if(console.log(`
116
116
  ✓ Built ${Y.imageId}`),Q.length)console.log(` tags: ${Q.join(", ")}`);console.log(` archive: ${Y.archivePath}`),console.log(` oci layout: ${Y.ociLayoutPath}`)}if($.push){let q=i6(Q[0]||"app:latest");if(!$.quiet)console.log(`
117
117
  Pushing ${q.repository}:${q.tag} → ${n6} ...`);let X=await l6({repository:q.repository,tag:q.tag,registry:q.implicitRegistry?void 0:`https://${q.registry}`,configBytes:Buffer.from(Y.configBytes),configDigest:Y.configDigest,layers:Y.layers.map((U)=>({digest:U.digest,path:U.path,size:U.size})),manifestBytes:Buffer.from(Y.manifestBytes),manifestMediaType:Y.manifestMediaType,quiet:$.quiet});console.log(`✓ Pushed ${X.ref} (${X.digest})`)}H.exit(0)}catch(Q){console.error("Build failed:",Q instanceof Error?Q.message:Q),H.exit(1)}});T.command("container:generate [outDir]","Generate a Dockerfile + .freezer (default outDir: storage/framework)").alias("freeze").option("--base <image>","Base image (default: oven/bun:1.3.10)").option("--workdir <dir>","Working directory in the image (default: /app)").option("--install <cmd>","Install command (default: bun install --frozen-lockfile)").option("--build <cmd>","Optional build command run after install").option("--start <cmd>","Start command (default: bun start)").option("--port <port>","Exposed port (default: 3000)").option("--force","Overwrite existing files").action(async(z,$)=>{try{let Q=r6({outDir:z??"storage/framework",baseImage:$.base,workdir:$.workdir,installCommand:$.install,buildCommand:$.build,startCommand:$.start?$.start.split(/\s+/):void 0,port:$.port?Number($.port):void 0,force:$.force});console.log(`${Q.wroteDockerfile?"✓ wrote":"• kept"} ${Q.dockerfilePath}`),console.log(`${Q.wroteFreezer?"✓ wrote":"• kept"} ${Q.freezerPath}`),H.exit(0)}catch(Q){console.error("Generate failed:",Q instanceof Error?Q.message:Q),H.exit(1)}});T.command("app-store:csr","Generate private keys and CSRs for Mac App Store certificates").option("--name <name>","App name used in certificate request common names").option("--output <dir>","Output directory (default: .pantry/apple)").action((z)=>{try{if(!z.name)throw Error("--name is required");let $=s6({outputDirectory:z.output??".pantry/apple",commonName:z.name});console.log(JSON.stringify({requests:$},null,2)),H.exit(0)}catch($){console.error("Apple CSR generation failed:",$ instanceof Error?$.message:$),H.exit(1)}});T.command("app-store:provision","Plan or reconcile macOS App Store Connect resources").option("--bundle-id <id>","Reverse-DNS bundle identifier").option("--name <name>","Mac App Store display name").option("--api-key-id <id>","App Store Connect API key ID").option("--api-issuer-id <id>","App Store Connect API issuer ID").option("--api-key-path <path>","App Store Connect AuthKey .p8 file").option("--capabilities <types>","Comma-separated Apple capability types").option("--app-certificate-csr <path>","CSR for a missing Mac App Distribution certificate").option("--installer-certificate-csr <path>","CSR for a missing Mac Installer Distribution certificate").option("--profile-name <name>","Provisioning profile name").option("--output <dir>","Output directory (default: .pantry/apple)").option("--p12-password <password>","Export newly issued certificates as password-protected P12 files").option("--apply","Apply the plan; the default only reports missing resources").action(async(z)=>{try{if(!z.bundleId||!z.name)throw Error("--bundle-id and --name are required");let $=(J)=>{if(!J)return;return K.readFileSync(w.resolve(J),"utf8")},Q=w.resolve(z.output??".pantry/apple");K.mkdirSync(Q,{recursive:!0});let Z=await a6({identifier:z.bundleId,name:z.name,capabilities:z.capabilities?.split(",").map((J)=>J.trim()).filter(Boolean),appCertificateCsr:$(z.appCertificateCsr),installerCertificateCsr:$(z.installerCertificateCsr),profileName:z.profileName,keyId:z.apiKeyId,issuerId:z.apiIssuerId,keyPath:z.apiKeyPath,checkOnly:!z.apply});for(let J of Z.certificates){if(!J.certificateContent)continue;let G=J.type==="MAC_APP_DISTRIBUTION"?"mac-app-distribution":"mac-installer-distribution",V=w.join(Q,`${G}.cer`);K.writeFileSync(V,Buffer.from(J.certificateContent,"base64"),{mode:384});let F=J.type==="MAC_APP_DISTRIBUTION"?z.appCertificateCsr:z.installerCertificateCsr;if(z.p12Password&&F)t6({certificatePath:V,privateKeyPath:w.resolve(F.replace(/\.csr$/i,".key")),outputPath:w.join(Q,`${G}.p12`),password:z.p12Password,name:`${z.name} ${J.type==="MAC_APP_DISTRIBUTION"?"Mac App Distribution":"Mac Installer Distribution"}`})}if(Z.profile.profileContent)K.writeFileSync(w.join(Q,"mac-app-store.provisionprofile"),Buffer.from(Z.profile.profileContent,"base64"),{mode:384});let Y=Z.certificates.map((J)=>{let G={...J};return delete G.certificateContent,G}),q={...Z.profile};delete q.profileContent;let X={...Z,certificates:Y,profile:q},U=w.join(Q,"provisioning-plan.json");K.writeFileSync(U,`${JSON.stringify(X,null,2)}
118
- `,{mode:384}),console.log(JSON.stringify({reportPath:U,...X},null,2)),H.exit(0)}catch($){console.error("App Store provisioning failed:",$ instanceof Error?$.message:$),H.exit(1)}});T.help();T.version(I6);var L0=T.parse();if(H.argv.length<=2||H.argv.includes("--help")||H.argv.includes("-h"))H.exit(0);
118
+ `,{mode:384}),console.log(JSON.stringify({reportPath:U,...X},null,2)),H.exit(0)}catch($){console.error("App Store provisioning failed:",$ instanceof Error?$.message:$),H.exit(1)}});T.help();T.version(I6);var L1=T.parse();if(H.argv.length<=2||H.argv.includes("--help")||H.argv.includes("-h"))H.exit(0);
@@ -1,10 +1,10 @@
1
- import{Xa as pQ}from"./chunk-7msnsp1q.js";import{Ob as lX}from"./chunk-mt6r4c0m.js";import{Wb as a,Yb as PQ}from"./chunk-9xe74rn4.js";import{gc as MX,hc as VX,kc as IX,lc as dQ,nc as AX,pc as SX,qc as xX,rc as cQ}from"./chunk-9ea7rzny.js";import{yc as g4}from"./chunk-4gsrdtkb.js";import{Ac as T0,zc as BQ}from"./chunk-qzr4847k.js";import{Ec as n}from"./chunk-403r79k6.js";import E0 from"node:process";T0();import CX from"node:process";function EX(Q){return Q in BQ}function C0(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 c4(Q){return EX(Q)||C0(Q)}function l4(Q){return["darwin","linux","windows"].includes(Q)}function p4(Q){return["x86_64","aarch64","armv7l","i686"].includes(Q)}function RX(){return Object.keys(BQ)}function n4(){return Object.values(BQ)}function o4(Q){if(EX(Q))return{originalName:Q,resolvedDomain:BQ[Q],isAlias:!0};return{originalName:Q,resolvedDomain:Q,isAlias:!1}}function r4(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 i4(Q,X){return X?`${Q}@${X}`:Q}function jQ(){let Q=CX.platform,X=CX.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 s4(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 t4={LATEST:"latest",ANY:"*"},FX={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 a4(Q){return FX[Q]}function e4(Q,X){return FX[X].includes(Q)}function Q6(Q){return Q}function X6(Q,X){return[Q,X]}function $6(Q){return Q}async function U6(Q){try{let X=await dQ(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 z6(Q){try{if(!Q||Q.trim().length===0)return{success:!1,error:"Search term cannot be empty"};return{success:!0,data:await AX(Q.trim())}}catch(X){return{success:!1,error:`Search failed: ${X}`}}}async function G6(Q=20){try{return{success:!0,data:(await SX(Q)).slice(0,Q)}}catch(X){return{success:!1,error:`Failed to list popular packages: ${X}`}}}async function Y6(Q=20){try{return{success:!0,data:await xX(Q)}}catch(X){return{success:!1,error:`Failed to list active packages: ${X}`}}}function K6(){try{return{success:!0,data:RX()}}catch(Q){return{success:!1,error:`Failed to list aliases: ${Q}`}}}async function O6(Q){try{let X=await cQ(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 _6(Q){try{let X=await cQ(Q);if(!X.isValid)return{success:!1,error:X.error};let $=X.packageName,Z=X.version||"latest",W=await IX($,Z);if(!W)return{success:!1,error:`Could not resolve version '${Z}' for package '${$}'`};let J=await dQ($);if(!J)return{success:!1,error:`Package '${$}' not found`};let U=jQ(),H={packageName:$,resolvedVersion:W,platform:U.platform,architecture:U.architecture,dependencies:J.dependencies,companions:J.companions,installCommand:`pkgx install ${$}@${W}`},z=[];if(!U.isSupported)z.push(`Platform ${U.platform}/${U.architecture} may not be fully supported`);if(J.dependencies.length>0)z.push(`This package has ${J.dependencies.length} dependencies that will also be installed`);return{success:!0,data:H,warnings:z.length>0?z:void 0}}catch(X){return{success:!1,error:`Failed to create install plan: ${X}`}}}async function B6(Q){try{let X=await MX(Q);if(!X)return{success:!1,error:`Package '${Q}' not found`};let $=await VX(Q);return{success:!0,data:{latest:X,total:$.length,versions:$}}}catch(X){return{success:!1,error:`Failed to get version info: ${X}`}}}function L6(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{Xa as pQ}from"./chunk-7msnsp1q.js";import{Ob as lX}from"./chunk-mt6r4c0m.js";import{Wb as a,Yb as PQ}from"./chunk-9xe74rn4.js";import{gc as MX,hc as VX,kc as IX,lc as dQ,nc as AX,pc as SX,qc as xX,rc as cQ}from"./chunk-1vfz5ajk.js";import{yc as g4}from"./chunk-2akgb6fq.js";import{Ac as T0,zc as BQ}from"./chunk-qzr4847k.js";import{Ec as n}from"./chunk-403r79k6.js";import E0 from"node:process";T0();import CX from"node:process";function EX(Q){return Q in BQ}function C0(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 c4(Q){return EX(Q)||C0(Q)}function l4(Q){return["darwin","linux","windows"].includes(Q)}function p4(Q){return["x86_64","aarch64","armv7l","i686"].includes(Q)}function RX(){return Object.keys(BQ)}function n4(){return Object.values(BQ)}function o4(Q){if(EX(Q))return{originalName:Q,resolvedDomain:BQ[Q],isAlias:!0};return{originalName:Q,resolvedDomain:Q,isAlias:!1}}function r4(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 i4(Q,X){return X?`${Q}@${X}`:Q}function jQ(){let Q=CX.platform,X=CX.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 s4(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 t4={LATEST:"latest",ANY:"*"},FX={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 a4(Q){return FX[Q]}function e4(Q,X){return FX[X].includes(Q)}function Q6(Q){return Q}function X6(Q,X){return[Q,X]}function $6(Q){return Q}async function U6(Q){try{let X=await dQ(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 z6(Q){try{if(!Q||Q.trim().length===0)return{success:!1,error:"Search term cannot be empty"};return{success:!0,data:await AX(Q.trim())}}catch(X){return{success:!1,error:`Search failed: ${X}`}}}async function G6(Q=20){try{return{success:!0,data:(await SX(Q)).slice(0,Q)}}catch(X){return{success:!1,error:`Failed to list popular packages: ${X}`}}}async function Y6(Q=20){try{return{success:!0,data:await xX(Q)}}catch(X){return{success:!1,error:`Failed to list active packages: ${X}`}}}function K6(){try{return{success:!0,data:RX()}}catch(Q){return{success:!1,error:`Failed to list aliases: ${Q}`}}}async function O6(Q){try{let X=await cQ(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 _6(Q){try{let X=await cQ(Q);if(!X.isValid)return{success:!1,error:X.error};let $=X.packageName,Z=X.version||"latest",W=await IX($,Z);if(!W)return{success:!1,error:`Could not resolve version '${Z}' for package '${$}'`};let J=await dQ($);if(!J)return{success:!1,error:`Package '${$}' not found`};let U=jQ(),H={packageName:$,resolvedVersion:W,platform:U.platform,architecture:U.architecture,dependencies:J.dependencies,companions:J.companions,installCommand:`pkgx install ${$}@${W}`},z=[];if(!U.isSupported)z.push(`Platform ${U.platform}/${U.architecture} may not be fully supported`);if(J.dependencies.length>0)z.push(`This package has ${J.dependencies.length} dependencies that will also be installed`);return{success:!0,data:H,warnings:z.length>0?z:void 0}}catch(X){return{success:!1,error:`Failed to create install plan: ${X}`}}}async function B6(Q){try{let X=await MX(Q);if(!X)return{success:!1,error:`Package '${Q}' not found`};let $=await VX(Q);return{success:!0,data:{latest:X,total:$.length,versions:$}}}catch(X){return{success:!1,error:`Failed to get version info: ${X}`}}}function L6(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 w6(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 q6(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 j6(){try{let Q=jQ();return{success:!0,data:{platform:Q.platform,architecture:Q.architecture,isSupported:Q.isSupported,nodeVersion:E0.version}}}catch(Q){return{success:!1,error:`Failed to get system info: ${Q}`}}}import HQ from"node:fs";import CQ from"node:path";function EQ(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,J=!1,U=0;for(let H of Z){let z=H.trim();if(!z||z.startsWith("#"))continue;if(H.match(/^(dependencies|deps):\s*$/)){W=!0,J=!1,U=H.search(/\S/);continue}if(H.match(/^global:\s*true\s*$/)||H.match(/^global:\s*$/)&&!W){J=!0;continue}if(H.match(/^\w+:/)&&!H.includes(" ")&&W&&U===0){W=!1;continue}if(W||J){if(H.match(/^\s+(dependencies|deps):\s*$/))continue;let G=H.indexOf(":");if(G>0){let K=H.substring(0,G).trim(),O=H.substring(G+1).trim();if(K&&O){let Y=K,w=O.replace(/^['"]|['"]$/g,"");if(Y==="global"||Y==="dependencies"||Y==="deps")continue;let B=w,L=w;if(w.startsWith("^"))B=w.substring(1),L=w;else if(w.startsWith("~"))B=w.substring(1),L=w;else if(w.startsWith(">=")||w.startsWith("<=")||w.startsWith(">")||w.startsWith("<")){let q=/^([><=]+)/.exec(w);if(q){let _=q[1];B=w.substring(_.length).trim(),L=w}}else if(w==="*"||w==="latest")B="latest",L="*";else B=w,L=`@${w}`;$.push({name:Y,version:B,constraint:L,isOsSpecific:!1})}}}}return $}function R0(Q){if(!HQ.existsSync(Q))throw Error(`Dependency file not found: ${Q}`);let X=HQ.readFileSync(Q,"utf-8"),$=EQ(Q),Z;try{let W=typeof Bun<"u"&&Bun.YAML?Bun.YAML.parse(X):F0(X);if(W?.services){let J=Array.isArray(W.services.autoStart)?W.services.autoStart.map((U)=>String(U)):[];if(J.length>0)Z={enabled:W.services.enabled===!0,autoStart:J}}}catch{}return{dependencies:$,services:Z}}function F0(Q){let X={},$=Q.split(`
7
- `),Z=!1,W=!1,J=[],U=!1;for(let H of $){let z=H.trim();if(!z||z.startsWith("#"))continue;if(H.match(/^services:\s*$/)){Z=!0,W=!1;continue}if(Z&&!H.startsWith(" ")&&!H.startsWith("\t")&&!z.startsWith("-")){if(z!=="services:"){Z=!1,W=!1;continue}}if(Z){if(z.startsWith("enabled:")){U=z.includes("true");continue}if(z.match(/^autoStart:\s*$/)){W=!0;continue}if(W&&z.startsWith("- ")){let G=z.slice(2).trim();if(G)J.push(G)}}}if(J.length>0)X.services={enabled:U,autoStart:J};return X}async function R6(Q,X="src/packages"){try{let $;if(Q.includes("/"))$=CQ.join(X,`${Q}.ts`);else{let K=`${Q.replace(/\./g,"")}.ts`;$=CQ.join(X,K)}if(!HQ.existsSync($))return[];let Z=HQ.readFileSync($,"utf-8"),W=Z.indexOf("versions:");if(W===-1)return[];let J=Z.substring(W),U=J.indexOf("["),H=J.indexOf("] as const");if(U===-1||H===-1)return[];let G=J.substring(U+1,H).match(/'([^']+)'/g);if(!G)return[];return G.map((K)=>K.replace(/'/g,""))}catch{return[]}}async function M0(Q){try{let{packages:X}=await import("./chunk-cqmq679y.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((J)=>J.domain===Q)||W.find((J)=>Array.isArray(J.aliases)&&J.aliases.includes(Q))}if(Z&&Z.versions&&Array.isArray(Z.versions))return Z.versions;return[]}catch{return[]}}async function NX(Q,X){let $=await M0(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 J=Z.slice(1);return $.includes(J)?J:$[0]}return V0($,Z)||$[0]}function V0(Q,X){if(X.startsWith("^")){let $=X.slice(1),[Z]=zQ($);return Q.filter((J)=>{let[U]=zQ(J);return U===Z&&JQ(J,$)>=0})[0]||null}if(X.startsWith("~")){let $=X.slice(1),[Z,W]=zQ($);return Q.filter((U)=>{let[H,z]=zQ(U);return H===Z&&z===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 zQ(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,J,U]=zQ($),[H,z,G]=zQ(Z);if(W>H)return 1;if(W<H)return-1;if(J>z)return 1;if(J<z)return-1;if(U>G)return 1;if(U<G)return-1;return 0}var TQ=null;async function I0(){if(TQ)return TQ;return TQ=(await import("./chunk-cqmq679y.js").catch(()=>import("./src/index.js"))).packages,TQ}async function A0(Q){try{let X=await I0(),$=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((H)=>H.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 RQ(Q,X={},$=new Set,Z=0){let{maxDepth:W=10,verbose:J=!1,targetOs:U,includeOsSpecific:H=!0}=X;if(Z>W){if(J)console.warn(` Warning: max dependency depth (${W}) exceeded for ${Q}`);return[]}if($.has(Q))return[];if($.add(Q),J)console.log(`${" ".repeat(Z)}Resolving dependencies for: ${Q}`);let z=[];try{let K=function(B){let L=B.match(/^(linux|darwin|windows):(.+)$/),q=!!L,_=L?L[2]:B,E=L?L[1]:void 0;if(q&&(!H||U&&E!==U))return null;let T=_,C="latest",j="*",R=_.match(/^(@?[^@^~>=<]+(?:\/[^@^~>=<]+)?)([@^~>=<].+)?$/);if(R){if(T=R[1],R[2]){let F=R[2];if(F.startsWith("@"))C=F.substring(1),j=F;else j=F,C=F.replace(/^\D*/,"")}}return{dep:{name:T,version:C,constraint:j,isOsSpecific:q,os:E},pkgName:T}},G=await A0(Q),Y=[...G?.dependencies||[],...G?.companions||[]].map(K).filter((B)=>B!==null);for(let{dep:B}of Y)z.push(B);let w=await Promise.allSettled(Y.map(({pkgName:B})=>RQ(B,X,$,Z+1)));for(let B of w)if(B.status==="fulfilled")z.push(...B.value);else if(J)console.warn(` Warning: transitive dependency resolution failed: ${B.reason}`)}catch(G){if(J)console.warn(`${" ".repeat(Z)}Warning: Could not resolve dependencies for ${Q}: ${G}`)}return z}async function lQ(Q,X={}){let $=new Map,Z=[],W={linux:[],darwin:[],windows:[]};for(let H of Q){if(!$.has(H.name))$.set(H.name,[]);if($.get(H.name).push(H),H.isOsSpecific&&H.os)W[H.os].push(H)}let J=[],U=[];for(let[H,z]of $)if(z.length===1){let G=await NX(H,z[0].constraint),K={...z[0],version:G};J.push(K),U.push(H)}else{let G=z.map((B)=>B.version),K=[...new Set(G)];if(K.length>1)Z.push({package:H,versions:K});let O=await Promise.all(z.map(async(B)=>({...B,resolvedVersion:await NX(H,B.constraint)}))),Y=O[0];for(let B of O.slice(1))if(Y.constraint==="*"&&B.constraint!=="*")Y=B;else if(Y.constraint!=="*"&&B.constraint==="*");else if(JQ(B.resolvedVersion,Y.resolvedVersion)>0)Y=B;let w={...Y,version:Y.resolvedVersion};delete w.resolvedVersion,J.push(w),U.push(H)}return{allDependencies:J,uniquePackages:U,conflicts:Z,osSpecificDeps:W}}async function yX(Q,X={}){let{verbose:$=!1}=X;if($)console.log(`Parsing dependency file: ${Q}`);let Z=EQ(Q);if($)console.log(`Found ${Z.length} direct dependencies`);let W=[...Z],J=await Promise.all(Z.map(async(z)=>{if($)console.log(`Resolving transitive dependencies for: ${z.name}`);return RQ(z.name,X)}));for(let z of J)W.push(...z);if($)console.log(`Total dependencies found (before deduplication): ${W.length}`);let U=await lQ(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 H=CQ.extname(Q);if(H===".yaml"||H===".yml"){let z=R0(Q);if(z.services)U.services=z.services}return U}function F6(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 M from"node:fs";import*as b from"node:path";import*as t from"node:os";import*as nQ from"node:https";import*as oQ from"node:http";import{execFileSync as FQ}from"node:child_process";var DX=(process.env.PANTRY_REGISTRY_URL||"https://registry.pantry.dev").replace(/\/$/,"");function IQ(){let Q=process.env.XDG_DATA_HOME,X=Q&&Q.length>0?Q:b.join(t.homedir(),".local","share");return b.join(X,"pantry","global","bin")}function rQ(){let Q=t.platform(),X=t.arch();return{os:Q==="darwin"?"darwin":Q==="win32"?"windows":"linux",arch:X==="arm64"?"aarch64":"x86_64"}}var LQ={"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 $=`${X.os}-${X.arch==="aarch64"?"arm64":"x86-64"}`,Z=`ziglang.org-${Q}.${X.os==="windows"?"zip":"tar.gz"}`;return`${DX}/binaries/ziglang.org/${Q}/${$}/${Z}`},getArchiveFormat(Q){return Q.os==="windows"?"zip":"tar.gz"},getBinaries(Q){return Q.os==="windows"?["zig.exe"]:["zig"]}},"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 bX(Q,X,$,Z){M.mkdirSync($,{recursive:!0});let W=null;for(let J of X){let U=b.join(Q,J);if(!M.existsSync(U))U=b.join(Q,"bin",J);if(!M.existsSync(U)){if(W){let z=b.join($,J);try{M.unlinkSync(z)}catch{}if(Z.os==="windows")M.copyFileSync(W,z);else M.symlinkSync(W,z)}continue}if(!W)W=U;let H=b.join($,J);try{M.unlinkSync(H)}catch{}if(Z.os==="windows")M.copyFileSync(U,H);else M.symlinkSync(U,H)}}async function vX(Q,X,$={}){let Z=$.platform||rQ(),W=LQ[Q];if(!W)throw Error(`Unknown package: ${Q}. Supported: ${Object.keys(LQ).join(", ")}`);if(/^[\^~>=<]/.test(X))X=await P0(Q,X);else if(X==="latest"||X==="*"||!X)X=await iQ(Q);else if(Q==="ziglang.org"&&X.endsWith("-dev")){let L=await x0(X);if(L)X=L}if(!X)throw Error(`Could not resolve a concrete version for ${Q} (got empty string from resolver)`);let J=$.installDir||b.join(process.cwd(),"pantry"),U=b.join(J,".bin"),H=b.join(J,Q.replace(/\./g,"-"),X),z=W.getBinaries(Z);if(z.length===0)throw Error(`No binaries defined for ${Q} on ${Z.os}-${Z.arch}`);let G=b.join(H,z[0]),K=b.join(H,"bin",z[0]);if(M.existsSync(G)||M.existsSync(K)){if(!$.quiet)console.log(` ✓ ${Q}@${X} (cached)`);if($.createBinLinks!==!1)bX(H,z,U,Z);let L=PX(H,z,Z,$);return{name:Q,version:X,installPath:H,binaries:z,globalLinks:L}}let O=W.getDownloadUrl(X,Z),Y=W.getArchiveFormat(Z);if(!$.quiet)console.log(` → ${Q}@${X} from ${new URL(O).hostname}`);let w=M.mkdtempSync(b.join(t.tmpdir(),"pantry-")),B=b.join(w,`archive.${Y}`);try{await fX(O,B,10,$.quiet??!1);let L=b.join(w,"extracted");M.mkdirSync(L,{recursive:!0}),await D0(B,L,Y);let q=L,_=W.getArchivePrefix?.(X,Z);if(_){let T=b.join(L,_);if(M.existsSync(T))q=T;else{let j=M.readdirSync(L).find((R)=>M.statSync(b.join(L,R)).isDirectory());if(j)q=b.join(L,j)}}if(M.mkdirSync(H,{recursive:!0}),v0(q,H),Z.os!=="windows"){for(let T of z){let C=b.join(H,T);if(M.existsSync(C))M.chmodSync(C,493);let j=b.join(H,"bin",T);if(M.existsSync(j))M.chmodSync(j,493)}for(let T of["bin","sbin","libexec"])gX(b.join(H,T))}if($.createBinLinks!==!1)bX(H,z,U,Z);if(!$.quiet)console.log(` ✓ ${Q}@${X}`);let E=PX(H,z,Z,$);return{name:Q,version:X,installPath:H,binaries:z,globalLinks:E}}finally{try{M.rmSync(w,{recursive:!0,force:!0})}catch{}}}function PX(Q,X,$,Z){if(!Z.globalBin)return[];let W=typeof Z.globalBin==="string"?Z.globalBin:IQ();M.mkdirSync(W,{recursive:!0});let J=[];for(let U of X){let H=b.join(Q,U);if(!M.existsSync(H))H=b.join(Q,"bin",U);if(!M.existsSync(H))continue;let z=b.join(W,U);try{M.unlinkSync(z)}catch{}if($.os==="windows")M.copyFileSync(H,z);else M.symlinkSync(H,z);J.push(z)}if(!Z.quiet&&J.length>0)console.log(` → linked ${J.length} binary(ies) into ${W}`);return J}async function S0(Q,X={}){return Promise.all(Q.map(($)=>vX($.domain,$.version,X)))}async function iQ(Q){if(Q==="bun.sh"){let $=(await s("https://api.github.com/repos/oven-sh/bun/releases/latest").catch(()=>null))?.tag_name?.replace(/^bun-v/,"")||"";if($)return $;let Z=await MQ(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 X=await sQ(Q);if(X.length>0)return X.sort(pQ)[0];let $=await MQ(Q);if($)return $;throw Error("Failed to resolve latest ziglang.org version from the Pantry registry")}if(Q==="nodejs.org"){let $=await s("https://nodejs.org/dist/index.json").catch(()=>null)||[],W=($.find((U)=>U.lts)?.version||$[0]?.version||"").replace(/^v/,"");if(W)return W;let J=await MQ(Q);if(J)return J;throw Error("Failed to resolve latest nodejs.org version")}if(Q==="github.com/mail-os/mail"){let $=(await s("https://api.github.com/repos/mail-os/mail/releases/latest").catch(()=>null))?.tag_name?.replace(/^v/,"")||"";if($)return $;let W=((await s("https://api.github.com/repos/mail-os/mail/tags?per_page=1").catch(()=>null))?.[0]?.name||"").replace(/^v/,"");if(W)return W;let J=await MQ(Q);if(J)return J;throw Error("Failed to resolve latest github.com/mail-os/mail version")}throw Error(`Cannot resolve latest version for ${Q}`)}async function MQ(Q){try{let X=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:$}=await import("./chunk-cqmq679y.js").catch(()=>import("./src/index.js")),W=$[X]?.versions||[];return W.find((J)=>!J.includes("-"))||W[0]||""}catch{return""}}async function x0(Q){return(await sQ("ziglang.org")).filter(($)=>$.startsWith(`${Q}.`)).sort(pQ)[0]||null}async function sQ(Q){let X=await s(`${DX}/binaries/${encodeURI(Q)}/metadata.json`).catch(()=>null);return Object.keys(X?.versions||{})}function hX(Q){let X=Q.match(/^([~^]|>=|<=|>|<|=)(\d+(?:\.\d+){0,10}(?:-[0-9A-Za-z.-]+)?(?:[+_][0-9A-Za-z.-]+)?)/);if(!X)return null;return{operator:X[1],target:X[2]}}function VQ(Q){return Q.split(/[+_-]/,1)[0].split(".").map((X)=>Number.parseInt(X,10))}function uX(Q,X){let $=VQ(Q),Z=VQ(X);for(let z=0;z<Math.max($.length,Z.length,3);z++){let G=($[z]||0)-(Z[z]||0);if(G)return G}let W=Q.includes("-"),J=X.includes("-");if(W!==J)return W?-1:1;let U=Number.parseInt(Q.match(/-dev\.(\d+)/)?.[1]||"0",10),H=Number.parseInt(X.match(/-dev\.(\d+)/)?.[1]||"0",10);return U-H}function N0(Q,X){let{operator:$,target:Z}=X;if(Q.includes("-")&&!Z.includes("-"))return!1;let W=VQ(Q),J=VQ(Z);if(W.some(Number.isNaN)||J.some(Number.isNaN))return!1;let[U,H,z]=[W[0]||0,W[1]||0,W[2]||0],[G,K,O]=[J[0]||0,J[1]||0,J[2]||0],Y=uX(Q,Z);if($==="^"){if(Y<0)return!1;if(G===0&&K===0)return U===0&&H===0&&z===O;if(G===0)return U===0&&H===K;return U===G}if($==="~"){if(Y<0)return!1;return J.length===1?U===G:U===G&&H===K}if($===">=")return Y>=0;if($==="<=")return Y<=0;if($===">")return Y>0;if($==="<")return Y<0;if($==="=")return Y===0;return!1}async function y0(Q){if(Q==="bun.sh")return(await s("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 s("https://nodejs.org/dist/index.json").catch(()=>null)||[]).map((Z)=>(Z.version||"").replace(/^v/,"")).filter(Boolean);if(Q==="ziglang.org")return sQ(Q);return[]}function kX(Q,X){return uX(X,Q)}function b0(Q,X){let $=hX(Q);if(!$)return null;return[...new Set(X)].sort(kX).find((Z)=>N0(Z,$))||null}async function P0(Q,X){if(!hX(X))return iQ(Q);let $;try{let U=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:H}=await import("./chunk-cqmq679y.js").catch(()=>import("./src/index.js"));$=H[U]?.versions||[]}catch{$=[]}let Z=await y0(Q),W=[...new Set([...Z,...$])].sort(kX),J=b0(X,W);if(J)return J;throw Error(`No version of ${Q} satisfies "${X}" (checked ${W.length} version${W.length===1?"":"s"}${W.length>0?`, newest ${W[0]}`:""}).`)}function fX(Q,X,$=10,Z=!1){return new Promise((W,J)=>{let U=M.createWriteStream(X),H=Q.startsWith("https")?nQ.get:oQ.get,z=!Z&&process.stderr.isTTY,G=Date.now(),K=0,O=0,Y=0,w=60000,B=H(Q,(_)=>{if(_.statusCode&&_.statusCode>=300&&_.statusCode<400&&_.headers.location){U.close();try{M.unlinkSync(X)}catch{}if($<=0)return J(Error(`Too many redirects for ${Q}`));return fX(_.headers.location,X,$-1,Z).then(W,J)}if(!_.statusCode||_.statusCode<200||_.statusCode>=300){U.close();try{M.unlinkSync(X)}catch{}return J(Error(`HTTP ${_.statusCode||"unknown"} downloading ${Q}`))}let E=_.headers["content-length"];if(E)O=Number.parseInt(E,10)||0;_.on("data",(T)=>{if(G=Date.now(),K+=T.length,z&&G-Y>200){Y=G;let C=(K/1048576).toFixed(1);if(O>0){let j=(O/1048576).toFixed(1),R=Math.floor(K/O*100);process.stderr.write(`\r ${C}/${j} MB (${R}%)`)}else process.stderr.write(`\r ${C} MB`)}}),_.pipe(U),_.on("error",(T)=>{U.close();try{M.unlinkSync(X)}catch{}J(T)}),U.on("finish",()=>{if(U.close(),z&&Y>0)process.stderr.write("\r\x1B[K");W()}),U.on("error",(T)=>{try{M.unlinkSync(X)}catch{}J(T)})});B.on("error",(_)=>{U.close();try{M.unlinkSync(X)}catch{}J(_)});let L=setInterval(()=>{if(Date.now()-G>w)clearInterval(L),B.destroy(Error(`Download stalled (no data for ${w/1000}s): ${Q}`))},5000),q=()=>clearInterval(L);U.once("finish",q),U.once("error",q),B.once("error",q)})}async function D0(Q,X,$){if($==="zip")if(process.platform==="win32")FQ("powershell",["-NoProfile","-Command","Expand-Archive","-Path",Q,"-DestinationPath",X,"-Force"],{stdio:"pipe"});else FQ("unzip",["-o","-q",Q,"-d",X],{stdio:"pipe"});else if($==="tar.xz")FQ("tar",["xJf",Q,"-C",X],{stdio:"pipe"});else if($==="tar.gz")FQ("tar",["xzf",Q,"-C",X],{stdio:"pipe"});else throw Error(`Unsupported archive format: ${$}`)}function v0(Q,X){M.cpSync(Q,X,{recursive:!0})}function gX(Q){let X;try{X=M.readdirSync(Q,{withFileTypes:!0})}catch{return}for(let $ of X){let Z=b.join(Q,$.name);try{if($.isDirectory()){gX(Z);continue}if(!$.isFile())continue;let W=M.statSync(Z).mode&511,J=W|(W&292)>>2;if(J!==W)M.chmodSync(Z,J)}catch{}}}function s(Q,X=5){return new Promise(($,Z)=>{let W=Q.startsWith("https")?nQ.get:oQ.get,J={"User-Agent":"pantry-installer",Accept:"application/json"};if(Q.includes("api.github.com")){let H=process.env.GITHUB_TOKEN||process.env.GH_TOKEN;if(H)J.Authorization=`Bearer ${H}`}let U=W(Q,{headers:J,timeout:30000},(H)=>{if(H.statusCode&&H.statusCode>=300&&H.statusCode<400&&H.headers.location){if(X<=0)return Z(Error(`Too many redirects for ${Q}`));return s(H.headers.location,X-1).then($,Z)}if(!H.statusCode||H.statusCode<200||H.statusCode>=300)return Z(Error(`HTTP ${H.statusCode||"unknown"} fetching ${Q}`));let z="";H.on("data",(G)=>z+=G),H.on("end",()=>{try{$(JSON.parse(z))}catch(G){Z(G)}})});U.on("error",Z),U.on("timeout",()=>{U.destroy(),Z(Error(`Request timed out: ${Q}`))})})}function h0(Q){return Q in LQ}function A6(){return Object.keys(LQ)}function S6(Q){let X=LQ[Q];if(!X)return;let $=rQ();return X.getBinaries($)[0]}import*as g from"node:fs";import*as xQ from"node:os";import*as UQ from"node:path";var AQ="# >>> pantry shell-init >>>",SQ="# <<< pantry shell-init <<<";function NQ(){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 tQ(Q){let X=xQ.homedir();switch(Q){case"zsh":{let $=process.env.ZDOTDIR;return UQ.join($&&$.length>0?$:X,".zshrc")}case"bash":{if(xQ.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 mX(Q={}){let X=Q.globalBin??IQ();if((Q.shell??NQ())==="fish")return[AQ,`if test -d "${X}"`,` set -gx PATH "${X}" $PATH`,"end",SQ,""].join(`
7
+ `),Z=!1,W=!1,J=[],U=!1;for(let H of $){let z=H.trim();if(!z||z.startsWith("#"))continue;if(H.match(/^services:\s*$/)){Z=!0,W=!1;continue}if(Z&&!H.startsWith(" ")&&!H.startsWith("\t")&&!z.startsWith("-")){if(z!=="services:"){Z=!1,W=!1;continue}}if(Z){if(z.startsWith("enabled:")){U=z.includes("true");continue}if(z.match(/^autoStart:\s*$/)){W=!0;continue}if(W&&z.startsWith("- ")){let G=z.slice(2).trim();if(G)J.push(G)}}}if(J.length>0)X.services={enabled:U,autoStart:J};return X}async function R6(Q,X="src/packages"){try{let $;if(Q.includes("/"))$=CQ.join(X,`${Q}.ts`);else{let K=`${Q.replace(/\./g,"")}.ts`;$=CQ.join(X,K)}if(!HQ.existsSync($))return[];let Z=HQ.readFileSync($,"utf-8"),W=Z.indexOf("versions:");if(W===-1)return[];let J=Z.substring(W),U=J.indexOf("["),H=J.indexOf("] as const");if(U===-1||H===-1)return[];let G=J.substring(U+1,H).match(/'([^']+)'/g);if(!G)return[];return G.map((K)=>K.replace(/'/g,""))}catch{return[]}}async function M0(Q){try{let{packages:X}=await import("./chunk-cezf2x42.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((J)=>J.domain===Q)||W.find((J)=>Array.isArray(J.aliases)&&J.aliases.includes(Q))}if(Z&&Z.versions&&Array.isArray(Z.versions))return Z.versions;return[]}catch{return[]}}async function NX(Q,X){let $=await M0(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 J=Z.slice(1);return $.includes(J)?J:$[0]}return V0($,Z)||$[0]}function V0(Q,X){if(X.startsWith("^")){let $=X.slice(1),[Z]=zQ($);return Q.filter((J)=>{let[U]=zQ(J);return U===Z&&JQ(J,$)>=0})[0]||null}if(X.startsWith("~")){let $=X.slice(1),[Z,W]=zQ($);return Q.filter((U)=>{let[H,z]=zQ(U);return H===Z&&z===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 zQ(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,J,U]=zQ($),[H,z,G]=zQ(Z);if(W>H)return 1;if(W<H)return-1;if(J>z)return 1;if(J<z)return-1;if(U>G)return 1;if(U<G)return-1;return 0}var TQ=null;async function I0(){if(TQ)return TQ;return TQ=(await import("./chunk-cezf2x42.js").catch(()=>import("./src/index.js"))).packages,TQ}async function A0(Q){try{let X=await I0(),$=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((H)=>H.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 RQ(Q,X={},$=new Set,Z=0){let{maxDepth:W=10,verbose:J=!1,targetOs:U,includeOsSpecific:H=!0}=X;if(Z>W){if(J)console.warn(` Warning: max dependency depth (${W}) exceeded for ${Q}`);return[]}if($.has(Q))return[];if($.add(Q),J)console.log(`${" ".repeat(Z)}Resolving dependencies for: ${Q}`);let z=[];try{let K=function(B){let L=B.match(/^(linux|darwin|windows):(.+)$/),q=!!L,_=L?L[2]:B,E=L?L[1]:void 0;if(q&&(!H||U&&E!==U))return null;let T=_,C="latest",j="*",R=_.match(/^(@?[^@^~>=<]+(?:\/[^@^~>=<]+)?)([@^~>=<].+)?$/);if(R){if(T=R[1],R[2]){let F=R[2];if(F.startsWith("@"))C=F.substring(1),j=F;else j=F,C=F.replace(/^\D*/,"")}}return{dep:{name:T,version:C,constraint:j,isOsSpecific:q,os:E},pkgName:T}},G=await A0(Q),Y=[...G?.dependencies||[],...G?.companions||[]].map(K).filter((B)=>B!==null);for(let{dep:B}of Y)z.push(B);let w=await Promise.allSettled(Y.map(({pkgName:B})=>RQ(B,X,$,Z+1)));for(let B of w)if(B.status==="fulfilled")z.push(...B.value);else if(J)console.warn(` Warning: transitive dependency resolution failed: ${B.reason}`)}catch(G){if(J)console.warn(`${" ".repeat(Z)}Warning: Could not resolve dependencies for ${Q}: ${G}`)}return z}async function lQ(Q,X={}){let $=new Map,Z=[],W={linux:[],darwin:[],windows:[]};for(let H of Q){if(!$.has(H.name))$.set(H.name,[]);if($.get(H.name).push(H),H.isOsSpecific&&H.os)W[H.os].push(H)}let J=[],U=[];for(let[H,z]of $)if(z.length===1){let G=await NX(H,z[0].constraint),K={...z[0],version:G};J.push(K),U.push(H)}else{let G=z.map((B)=>B.version),K=[...new Set(G)];if(K.length>1)Z.push({package:H,versions:K});let O=await Promise.all(z.map(async(B)=>({...B,resolvedVersion:await NX(H,B.constraint)}))),Y=O[0];for(let B of O.slice(1))if(Y.constraint==="*"&&B.constraint!=="*")Y=B;else if(Y.constraint!=="*"&&B.constraint==="*");else if(JQ(B.resolvedVersion,Y.resolvedVersion)>0)Y=B;let w={...Y,version:Y.resolvedVersion};delete w.resolvedVersion,J.push(w),U.push(H)}return{allDependencies:J,uniquePackages:U,conflicts:Z,osSpecificDeps:W}}async function yX(Q,X={}){let{verbose:$=!1}=X;if($)console.log(`Parsing dependency file: ${Q}`);let Z=EQ(Q);if($)console.log(`Found ${Z.length} direct dependencies`);let W=[...Z],J=await Promise.all(Z.map(async(z)=>{if($)console.log(`Resolving transitive dependencies for: ${z.name}`);return RQ(z.name,X)}));for(let z of J)W.push(...z);if($)console.log(`Total dependencies found (before deduplication): ${W.length}`);let U=await lQ(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 H=CQ.extname(Q);if(H===".yaml"||H===".yml"){let z=R0(Q);if(z.services)U.services=z.services}return U}function F6(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 M from"node:fs";import*as b from"node:path";import*as t from"node:os";import*as nQ from"node:https";import*as oQ from"node:http";import{execFileSync as FQ}from"node:child_process";var DX=(process.env.PANTRY_REGISTRY_URL||"https://registry.pantry.dev").replace(/\/$/,"");function IQ(){let Q=process.env.XDG_DATA_HOME,X=Q&&Q.length>0?Q:b.join(t.homedir(),".local","share");return b.join(X,"pantry","global","bin")}function rQ(){let Q=t.platform(),X=t.arch();return{os:Q==="darwin"?"darwin":Q==="win32"?"windows":"linux",arch:X==="arm64"?"aarch64":"x86_64"}}var LQ={"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 $=`${X.os}-${X.arch==="aarch64"?"arm64":"x86-64"}`,Z=`ziglang.org-${Q}.${X.os==="windows"?"zip":"tar.gz"}`;return`${DX}/binaries/ziglang.org/${Q}/${$}/${Z}`},getArchiveFormat(Q){return Q.os==="windows"?"zip":"tar.gz"},getBinaries(Q){return Q.os==="windows"?["zig.exe"]:["zig"]}},"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 bX(Q,X,$,Z){M.mkdirSync($,{recursive:!0});let W=null;for(let J of X){let U=b.join(Q,J);if(!M.existsSync(U))U=b.join(Q,"bin",J);if(!M.existsSync(U)){if(W){let z=b.join($,J);try{M.unlinkSync(z)}catch{}if(Z.os==="windows")M.copyFileSync(W,z);else M.symlinkSync(W,z)}continue}if(!W)W=U;let H=b.join($,J);try{M.unlinkSync(H)}catch{}if(Z.os==="windows")M.copyFileSync(U,H);else M.symlinkSync(U,H)}}async function vX(Q,X,$={}){let Z=$.platform||rQ(),W=LQ[Q];if(!W)throw Error(`Unknown package: ${Q}. Supported: ${Object.keys(LQ).join(", ")}`);if(/^[\^~>=<]/.test(X))X=await P0(Q,X);else if(X==="latest"||X==="*"||!X)X=await iQ(Q);else if(Q==="ziglang.org"&&X.endsWith("-dev")){let L=await x0(X);if(L)X=L}if(!X)throw Error(`Could not resolve a concrete version for ${Q} (got empty string from resolver)`);let J=$.installDir||b.join(process.cwd(),"pantry"),U=b.join(J,".bin"),H=b.join(J,Q.replace(/\./g,"-"),X),z=W.getBinaries(Z);if(z.length===0)throw Error(`No binaries defined for ${Q} on ${Z.os}-${Z.arch}`);let G=b.join(H,z[0]),K=b.join(H,"bin",z[0]);if(M.existsSync(G)||M.existsSync(K)){if(!$.quiet)console.log(` ✓ ${Q}@${X} (cached)`);if($.createBinLinks!==!1)bX(H,z,U,Z);let L=PX(H,z,Z,$);return{name:Q,version:X,installPath:H,binaries:z,globalLinks:L}}let O=W.getDownloadUrl(X,Z),Y=W.getArchiveFormat(Z);if(!$.quiet)console.log(` → ${Q}@${X} from ${new URL(O).hostname}`);let w=M.mkdtempSync(b.join(t.tmpdir(),"pantry-")),B=b.join(w,`archive.${Y}`);try{await fX(O,B,10,$.quiet??!1);let L=b.join(w,"extracted");M.mkdirSync(L,{recursive:!0}),await D0(B,L,Y);let q=L,_=W.getArchivePrefix?.(X,Z);if(_){let T=b.join(L,_);if(M.existsSync(T))q=T;else{let j=M.readdirSync(L).find((R)=>M.statSync(b.join(L,R)).isDirectory());if(j)q=b.join(L,j)}}if(M.mkdirSync(H,{recursive:!0}),v0(q,H),Z.os!=="windows"){for(let T of z){let C=b.join(H,T);if(M.existsSync(C))M.chmodSync(C,493);let j=b.join(H,"bin",T);if(M.existsSync(j))M.chmodSync(j,493)}for(let T of["bin","sbin","libexec"])gX(b.join(H,T))}if($.createBinLinks!==!1)bX(H,z,U,Z);if(!$.quiet)console.log(` ✓ ${Q}@${X}`);let E=PX(H,z,Z,$);return{name:Q,version:X,installPath:H,binaries:z,globalLinks:E}}finally{try{M.rmSync(w,{recursive:!0,force:!0})}catch{}}}function PX(Q,X,$,Z){if(!Z.globalBin)return[];let W=typeof Z.globalBin==="string"?Z.globalBin:IQ();M.mkdirSync(W,{recursive:!0});let J=[];for(let U of X){let H=b.join(Q,U);if(!M.existsSync(H))H=b.join(Q,"bin",U);if(!M.existsSync(H))continue;let z=b.join(W,U);try{M.unlinkSync(z)}catch{}if($.os==="windows")M.copyFileSync(H,z);else M.symlinkSync(H,z);J.push(z)}if(!Z.quiet&&J.length>0)console.log(` → linked ${J.length} binary(ies) into ${W}`);return J}async function S0(Q,X={}){return Promise.all(Q.map(($)=>vX($.domain,$.version,X)))}async function iQ(Q){if(Q==="bun.sh"){let $=(await s("https://api.github.com/repos/oven-sh/bun/releases/latest").catch(()=>null))?.tag_name?.replace(/^bun-v/,"")||"";if($)return $;let Z=await MQ(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 X=await sQ(Q);if(X.length>0)return X.sort(pQ)[0];let $=await MQ(Q);if($)return $;throw Error("Failed to resolve latest ziglang.org version from the Pantry registry")}if(Q==="nodejs.org"){let $=await s("https://nodejs.org/dist/index.json").catch(()=>null)||[],W=($.find((U)=>U.lts)?.version||$[0]?.version||"").replace(/^v/,"");if(W)return W;let J=await MQ(Q);if(J)return J;throw Error("Failed to resolve latest nodejs.org version")}if(Q==="github.com/mail-os/mail"){let $=(await s("https://api.github.com/repos/mail-os/mail/releases/latest").catch(()=>null))?.tag_name?.replace(/^v/,"")||"";if($)return $;let W=((await s("https://api.github.com/repos/mail-os/mail/tags?per_page=1").catch(()=>null))?.[0]?.name||"").replace(/^v/,"");if(W)return W;let J=await MQ(Q);if(J)return J;throw Error("Failed to resolve latest github.com/mail-os/mail version")}throw Error(`Cannot resolve latest version for ${Q}`)}async function MQ(Q){try{let X=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:$}=await import("./chunk-cezf2x42.js").catch(()=>import("./src/index.js")),W=$[X]?.versions||[];return W.find((J)=>!J.includes("-"))||W[0]||""}catch{return""}}async function x0(Q){return(await sQ("ziglang.org")).filter(($)=>$.startsWith(`${Q}.`)).sort(pQ)[0]||null}async function sQ(Q){let X=await s(`${DX}/binaries/${encodeURI(Q)}/metadata.json`).catch(()=>null);return Object.keys(X?.versions||{})}function hX(Q){let X=Q.match(/^([~^]|>=|<=|>|<|=)(\d+(?:\.\d+){0,10}(?:-[0-9A-Za-z.-]+)?(?:[+_][0-9A-Za-z.-]+)?)/);if(!X)return null;return{operator:X[1],target:X[2]}}function VQ(Q){return Q.split(/[+_-]/,1)[0].split(".").map((X)=>Number.parseInt(X,10))}function uX(Q,X){let $=VQ(Q),Z=VQ(X);for(let z=0;z<Math.max($.length,Z.length,3);z++){let G=($[z]||0)-(Z[z]||0);if(G)return G}let W=Q.includes("-"),J=X.includes("-");if(W!==J)return W?-1:1;let U=Number.parseInt(Q.match(/-dev\.(\d+)/)?.[1]||"0",10),H=Number.parseInt(X.match(/-dev\.(\d+)/)?.[1]||"0",10);return U-H}function N0(Q,X){let{operator:$,target:Z}=X;if(Q.includes("-")&&!Z.includes("-"))return!1;let W=VQ(Q),J=VQ(Z);if(W.some(Number.isNaN)||J.some(Number.isNaN))return!1;let[U,H,z]=[W[0]||0,W[1]||0,W[2]||0],[G,K,O]=[J[0]||0,J[1]||0,J[2]||0],Y=uX(Q,Z);if($==="^"){if(Y<0)return!1;if(G===0&&K===0)return U===0&&H===0&&z===O;if(G===0)return U===0&&H===K;return U===G}if($==="~"){if(Y<0)return!1;return J.length===1?U===G:U===G&&H===K}if($===">=")return Y>=0;if($==="<=")return Y<=0;if($===">")return Y>0;if($==="<")return Y<0;if($==="=")return Y===0;return!1}async function y0(Q){if(Q==="bun.sh")return(await s("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 s("https://nodejs.org/dist/index.json").catch(()=>null)||[]).map((Z)=>(Z.version||"").replace(/^v/,"")).filter(Boolean);if(Q==="ziglang.org")return sQ(Q);return[]}function kX(Q,X){return uX(X,Q)}function b0(Q,X){let $=hX(Q);if(!$)return null;return[...new Set(X)].sort(kX).find((Z)=>N0(Z,$))||null}async function P0(Q,X){if(!hX(X))return iQ(Q);let $;try{let U=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:H}=await import("./chunk-cezf2x42.js").catch(()=>import("./src/index.js"));$=H[U]?.versions||[]}catch{$=[]}let Z=await y0(Q),W=[...new Set([...Z,...$])].sort(kX),J=b0(X,W);if(J)return J;throw Error(`No version of ${Q} satisfies "${X}" (checked ${W.length} version${W.length===1?"":"s"}${W.length>0?`, newest ${W[0]}`:""}).`)}function fX(Q,X,$=10,Z=!1){return new Promise((W,J)=>{let U=M.createWriteStream(X),H=Q.startsWith("https")?nQ.get:oQ.get,z=!Z&&process.stderr.isTTY,G=Date.now(),K=0,O=0,Y=0,w=60000,B=H(Q,(_)=>{if(_.statusCode&&_.statusCode>=300&&_.statusCode<400&&_.headers.location){U.close();try{M.unlinkSync(X)}catch{}if($<=0)return J(Error(`Too many redirects for ${Q}`));return fX(_.headers.location,X,$-1,Z).then(W,J)}if(!_.statusCode||_.statusCode<200||_.statusCode>=300){U.close();try{M.unlinkSync(X)}catch{}return J(Error(`HTTP ${_.statusCode||"unknown"} downloading ${Q}`))}let E=_.headers["content-length"];if(E)O=Number.parseInt(E,10)||0;_.on("data",(T)=>{if(G=Date.now(),K+=T.length,z&&G-Y>200){Y=G;let C=(K/1048576).toFixed(1);if(O>0){let j=(O/1048576).toFixed(1),R=Math.floor(K/O*100);process.stderr.write(`\r ${C}/${j} MB (${R}%)`)}else process.stderr.write(`\r ${C} MB`)}}),_.pipe(U),_.on("error",(T)=>{U.close();try{M.unlinkSync(X)}catch{}J(T)}),U.on("finish",()=>{if(U.close(),z&&Y>0)process.stderr.write("\r\x1B[K");W()}),U.on("error",(T)=>{try{M.unlinkSync(X)}catch{}J(T)})});B.on("error",(_)=>{U.close();try{M.unlinkSync(X)}catch{}J(_)});let L=setInterval(()=>{if(Date.now()-G>w)clearInterval(L),B.destroy(Error(`Download stalled (no data for ${w/1000}s): ${Q}`))},5000),q=()=>clearInterval(L);U.once("finish",q),U.once("error",q),B.once("error",q)})}async function D0(Q,X,$){if($==="zip")if(process.platform==="win32")FQ("powershell",["-NoProfile","-Command","Expand-Archive","-Path",Q,"-DestinationPath",X,"-Force"],{stdio:"pipe"});else FQ("unzip",["-o","-q",Q,"-d",X],{stdio:"pipe"});else if($==="tar.xz")FQ("tar",["xJf",Q,"-C",X],{stdio:"pipe"});else if($==="tar.gz")FQ("tar",["xzf",Q,"-C",X],{stdio:"pipe"});else throw Error(`Unsupported archive format: ${$}`)}function v0(Q,X){M.cpSync(Q,X,{recursive:!0})}function gX(Q){let X;try{X=M.readdirSync(Q,{withFileTypes:!0})}catch{return}for(let $ of X){let Z=b.join(Q,$.name);try{if($.isDirectory()){gX(Z);continue}if(!$.isFile())continue;let W=M.statSync(Z).mode&511,J=W|(W&292)>>2;if(J!==W)M.chmodSync(Z,J)}catch{}}}function s(Q,X=5){return new Promise(($,Z)=>{let W=Q.startsWith("https")?nQ.get:oQ.get,J={"User-Agent":"pantry-installer",Accept:"application/json"};if(Q.includes("api.github.com")){let H=process.env.GITHUB_TOKEN||process.env.GH_TOKEN;if(H)J.Authorization=`Bearer ${H}`}let U=W(Q,{headers:J,timeout:30000},(H)=>{if(H.statusCode&&H.statusCode>=300&&H.statusCode<400&&H.headers.location){if(X<=0)return Z(Error(`Too many redirects for ${Q}`));return s(H.headers.location,X-1).then($,Z)}if(!H.statusCode||H.statusCode<200||H.statusCode>=300)return Z(Error(`HTTP ${H.statusCode||"unknown"} fetching ${Q}`));let z="";H.on("data",(G)=>z+=G),H.on("end",()=>{try{$(JSON.parse(z))}catch(G){Z(G)}})});U.on("error",Z),U.on("timeout",()=>{U.destroy(),Z(Error(`Request timed out: ${Q}`))})})}function h0(Q){return Q in LQ}function A6(){return Object.keys(LQ)}function S6(Q){let X=LQ[Q];if(!X)return;let $=rQ();return X.getBinaries($)[0]}import*as g from"node:fs";import*as xQ from"node:os";import*as UQ from"node:path";var AQ="# >>> pantry shell-init >>>",SQ="# <<< pantry shell-init <<<";function NQ(){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 tQ(Q){let X=xQ.homedir();switch(Q){case"zsh":{let $=process.env.ZDOTDIR;return UQ.join($&&$.length>0?$:X,".zshrc")}case"bash":{if(xQ.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 mX(Q={}){let X=Q.globalBin??IQ();if((Q.shell??NQ())==="fish")return[AQ,`if test -d "${X}"`,` set -gx PATH "${X}" $PATH`,"end",SQ,""].join(`
8
8
  `);return[AQ,`if [ -d "${X}" ] && [[ ":$PATH:" != *":${X}:"* ]]; then`,` export PATH="${X}:$PATH"`,"fi",SQ,""].join(`
9
9
  `)}function u0(Q={}){let X=Q.shell??NQ(),$=tQ(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=mX({...Q,shell:X}),W="";if(g.existsSync($)){if(W=g.readFileSync($,"utf-8"),W.includes(AQ))return{rcFile:$,shell:X,changed:!1}}else g.mkdirSync(UQ.dirname($),{recursive:!0});let J=W.length>0&&!W.endsWith(`
10
10
  `)?`
@@ -1,2 +1,2 @@
1
- import{xc as y,yc as x}from"./chunk-4gsrdtkb.js";import{Ac as I,zc as $}from"./chunk-qzr4847k.js";import{Bc as j,Ec as C}from"./chunk-403r79k6.js";I();async function Z(){try{let{packages:H}=await import("./chunk-cqmq679y.js");return H}catch{return{}}}async function B(H){let z=_(H);if(!z)return null;let q=(await Z())[z];if(!q||!q.versions||q.versions.length===0)return null;return q.versions[0]}async function D(H){let z=_(H);if(!z)return[];let q=(await Z())[z];if(!q||!q.versions)return[];return[...q.versions]}function S(H={}){let z=["8.4.11","8.3.14","8.2.26","8.1.30"],G=H.fallbackVersions||z;try{let{pantry:q}=(x(),j(y)),E=q.phpnet||q.php;if(!E||!E.versions||E.versions.length===0)return G;let O=[...E.versions],J=H.supportedBranches||w(O),Q=new Map;for(let U of O){let[W,X]=U.split(".");if(!W||!X)continue;let K=`${W}.${X}`;if(J.includes(K)&&!Q.has(K))Q.set(K,U)}let R=J.map((U)=>Q.get(U)).filter(Boolean);return R.length>0?R:G}catch{return G}}function w(H){let z=new Map;for(let q of H){let[E,O]=q.split(".");if(!E||!O)continue;let J=`${E}.${O}`;z.set(J,(z.get(J)||0)+1)}return Array.from(z.keys()).filter((q)=>{let[E]=q.split(".");return E==="8"&&z.get(q)>3}).sort((q,E)=>{let[O,J]=q.split(".").map(Number),[Q,R]=E.split(".").map(Number);if(O!==Q)return Q-O;return R-J}).slice(0,4)}async function f(H,z){return(await D(H)).includes(z)}async function N(H,z="latest"){if(z==="latest")return await B(H);let G=await D(H);if(G.length===0)return null;if(G.includes(z))return z;if(z.startsWith("^")){let E=z.slice(1).split(".")[0];return G.filter((J)=>J.startsWith(`${E}.`))[0]||null}if(z.startsWith("~")){let q=z.slice(1),[E,O]=q.split("."),J=`${E}.${O}.`;return G.filter((R)=>R.startsWith(J))[0]||null}if(z.startsWith(">=")){let E=z.slice(2).split(".").map(Number);return G.filter((J)=>{let Q=J.split(".").map(Number);for(let R=0;R<Math.max(Q.length,E.length);R++){let U=Q[R]??0,W=E[R]??0;if(U>W)return!0;if(U<W)return!1}return!0})[0]||null}return await B(H)}async function F(H){let z=_(H);if(!z)return null;let q=(await Z())[z];if(!q)return null;let E=await B(H);if(!E)return null;return{name:String(H),domain:z,description:q.description||"",latestVersion:E,totalVersions:q.versions?.length||0,programs:[...q.programs||[]],dependencies:[...q.dependencies||[]],companions:[...q.companions||[]],versions:[...q.versions||[]]}}function _(H){let z=String(H);if(z in $){let G=$[z];return T(G)}return T(z)}function T(H){if(H.includes("/")){let[z,...G]=H.split("/"),q=G.join("/"),E=z.replace(/\./g,""),O=q.replace(/[/\-_.]/g,"").toLowerCase();return`${E}${O}`.toLowerCase()}return H.replace(/[.\-_]/g,"").toLowerCase()}async function V(H){let z=[],G=H.toLowerCase();for(let[E,O]of Object.entries($))if(E.toLowerCase().includes(G)){let J=await F(E);if(J)z.push(J)}let q=await Z();for(let[E,O]of Object.entries(q))if(E.toLowerCase().includes(G)||O.description?.toLowerCase().includes(G)){let J=await F(E);if(J&&!z.some((Q)=>Q.domain===E))z.push(J)}return z}async function h(H){let z=[],G=await Z();for(let q of Object.keys(G))if(H.test(q)){let E=await F(q);if(E)z.push(E)}return z}async function u(H=10){let z=[],G=await Z();for(let q of Object.keys(G)){let E=await F(q);if(E&&E.totalVersions>=H)z.push(E)}return z.sort((q,E)=>E.totalVersions-q.totalVersions)}async function b(H=50){return(await u(5)).slice(0,H)}async function l(H){try{let z=H.lastIndexOf("@");if(z===-1){let J=H;if(!_(J))return{isValid:!1,error:`Unknown package: ${J}`};return{isValid:!0,packageName:J}}let G=H.slice(0,z),q=H.slice(z+1);if(!_(G))return{isValid:!1,error:`Unknown package: ${G}`};if(q==="latest")return{isValid:!0,packageName:G,version:q};if(!await f(G,q))return{isValid:!1,packageName:G,version:q,error:`Version ${q} not available for package ${G}`};return{isValid:!0,packageName:G,version:q}}catch{return{isValid:!1,error:`Invalid package specification: ${H}`}}}function A(H){let z=H.replace(/^v/,"").split("+")[0],[G,...q]=z.split("-"),[E,O,J]=G.split(".").map((Q)=>{let R=Number.parseInt(Q,10);return Number.isNaN(R)?0:R});return{major:E??0,minor:O??0,patch:J??0,prerelease:q.length>0?q.join("-").split("."):[]}}function M(H,z){let G=A(H),q=A(z);if(G.major!==q.major)return q.major-G.major;if(G.minor!==q.minor)return q.minor-G.minor;if(G.patch!==q.patch)return q.patch-G.patch;let E=G.prerelease.length>0,O=q.prerelease.length>0;if(E!==O)return E?1:-1;if(!E)return 0;for(let J=0;J<Math.max(G.prerelease.length,q.prerelease.length);J++){let Q=G.prerelease[J],R=q.prerelease[J];if(Q===void 0)return 1;if(R===void 0)return-1;let U=Number.parseInt(Q,10),W=Number.parseInt(R,10),X=!Number.isNaN(U)&&String(U)===Q,K=!Number.isNaN(W)&&String(W)===R;if(X&&K){if(U!==W)return W-U}else if(X!==K)return X?1:-1;else if(Q!==R)return Q<R?1:-1}return 0}function g(H,z){if(!z||z.length===0)return null;let G=[...z].sort(M),q=H.replace(/^[\^~]/,""),E=A(q),O=q.replace(/^v/,"").split("+")[0].split("-")[0],J=O.split(".").length>=3,Q=E.prerelease.length>0,R=(K)=>{if(K.prerelease.length===0)return!0;if(!Q)return!1;return K.major===E.major&&K.minor===E.minor&&K.patch===E.patch},U=(K,Y)=>M(Y,q)<=0||K.prerelease.length>0,W=(K)=>{for(let Y of G){let L=A(Y);if(!R(L))continue;if(K(L,Y))return Y}return null};if(H.startsWith("^"))return W((K,Y)=>{if(K.major!==E.major)return!1;if(E.major===0&&K.minor!==E.minor)return!1;return U(K,Y)});if(H.startsWith("~"))return W((K,Y)=>{if(K.major!==E.major||K.minor!==E.minor)return!1;return!J||U(K,Y)});if(G.includes(q))return q;let X=O.split(".").filter(Boolean).map((K)=>Number.parseInt(K,10));if(X.length>0&&X.every((K)=>!Number.isNaN(K))){let K=W((Y)=>{if(X[0]!==void 0&&Y.major!==X[0])return!1;if(X[1]!==void 0&&Y.minor!==X[1])return!1;if(X[2]!==void 0&&Y.patch!==X[2])return!1;return!0});if(K)return K}return W(()=>!0)??G[0]??null}
1
+ import{xc as y,yc as x}from"./chunk-2akgb6fq.js";import{Ac as I,zc as $}from"./chunk-qzr4847k.js";import{Bc as j,Ec as C}from"./chunk-403r79k6.js";I();async function Z(){try{let{packages:H}=await import("./chunk-cezf2x42.js");return H}catch{return{}}}async function B(H){let z=_(H);if(!z)return null;let q=(await Z())[z];if(!q||!q.versions||q.versions.length===0)return null;return q.versions[0]}async function D(H){let z=_(H);if(!z)return[];let q=(await Z())[z];if(!q||!q.versions)return[];return[...q.versions]}function S(H={}){let z=["8.4.11","8.3.14","8.2.26","8.1.30"],G=H.fallbackVersions||z;try{let{pantry:q}=(x(),j(y)),E=q.phpnet||q.php;if(!E||!E.versions||E.versions.length===0)return G;let O=[...E.versions],J=H.supportedBranches||w(O),Q=new Map;for(let U of O){let[W,X]=U.split(".");if(!W||!X)continue;let K=`${W}.${X}`;if(J.includes(K)&&!Q.has(K))Q.set(K,U)}let R=J.map((U)=>Q.get(U)).filter(Boolean);return R.length>0?R:G}catch{return G}}function w(H){let z=new Map;for(let q of H){let[E,O]=q.split(".");if(!E||!O)continue;let J=`${E}.${O}`;z.set(J,(z.get(J)||0)+1)}return Array.from(z.keys()).filter((q)=>{let[E]=q.split(".");return E==="8"&&z.get(q)>3}).sort((q,E)=>{let[O,J]=q.split(".").map(Number),[Q,R]=E.split(".").map(Number);if(O!==Q)return Q-O;return R-J}).slice(0,4)}async function f(H,z){return(await D(H)).includes(z)}async function N(H,z="latest"){if(z==="latest")return await B(H);let G=await D(H);if(G.length===0)return null;if(G.includes(z))return z;if(z.startsWith("^")){let E=z.slice(1).split(".")[0];return G.filter((J)=>J.startsWith(`${E}.`))[0]||null}if(z.startsWith("~")){let q=z.slice(1),[E,O]=q.split("."),J=`${E}.${O}.`;return G.filter((R)=>R.startsWith(J))[0]||null}if(z.startsWith(">=")){let E=z.slice(2).split(".").map(Number);return G.filter((J)=>{let Q=J.split(".").map(Number);for(let R=0;R<Math.max(Q.length,E.length);R++){let U=Q[R]??0,W=E[R]??0;if(U>W)return!0;if(U<W)return!1}return!0})[0]||null}return await B(H)}async function F(H){let z=_(H);if(!z)return null;let q=(await Z())[z];if(!q)return null;let E=await B(H);if(!E)return null;return{name:String(H),domain:z,description:q.description||"",latestVersion:E,totalVersions:q.versions?.length||0,programs:[...q.programs||[]],dependencies:[...q.dependencies||[]],companions:[...q.companions||[]],versions:[...q.versions||[]]}}function _(H){let z=String(H);if(z in $){let G=$[z];return T(G)}return T(z)}function T(H){if(H.includes("/")){let[z,...G]=H.split("/"),q=G.join("/"),E=z.replace(/\./g,""),O=q.replace(/[/\-_.]/g,"").toLowerCase();return`${E}${O}`.toLowerCase()}return H.replace(/[.\-_]/g,"").toLowerCase()}async function V(H){let z=[],G=H.toLowerCase();for(let[E,O]of Object.entries($))if(E.toLowerCase().includes(G)){let J=await F(E);if(J)z.push(J)}let q=await Z();for(let[E,O]of Object.entries(q))if(E.toLowerCase().includes(G)||O.description?.toLowerCase().includes(G)){let J=await F(E);if(J&&!z.some((Q)=>Q.domain===E))z.push(J)}return z}async function h(H){let z=[],G=await Z();for(let q of Object.keys(G))if(H.test(q)){let E=await F(q);if(E)z.push(E)}return z}async function u(H=10){let z=[],G=await Z();for(let q of Object.keys(G)){let E=await F(q);if(E&&E.totalVersions>=H)z.push(E)}return z.sort((q,E)=>E.totalVersions-q.totalVersions)}async function b(H=50){return(await u(5)).slice(0,H)}async function l(H){try{let z=H.lastIndexOf("@");if(z===-1){let J=H;if(!_(J))return{isValid:!1,error:`Unknown package: ${J}`};return{isValid:!0,packageName:J}}let G=H.slice(0,z),q=H.slice(z+1);if(!_(G))return{isValid:!1,error:`Unknown package: ${G}`};if(q==="latest")return{isValid:!0,packageName:G,version:q};if(!await f(G,q))return{isValid:!1,packageName:G,version:q,error:`Version ${q} not available for package ${G}`};return{isValid:!0,packageName:G,version:q}}catch{return{isValid:!1,error:`Invalid package specification: ${H}`}}}function A(H){let z=H.replace(/^v/,"").split("+")[0],[G,...q]=z.split("-"),[E,O,J]=G.split(".").map((Q)=>{let R=Number.parseInt(Q,10);return Number.isNaN(R)?0:R});return{major:E??0,minor:O??0,patch:J??0,prerelease:q.length>0?q.join("-").split("."):[]}}function M(H,z){let G=A(H),q=A(z);if(G.major!==q.major)return q.major-G.major;if(G.minor!==q.minor)return q.minor-G.minor;if(G.patch!==q.patch)return q.patch-G.patch;let E=G.prerelease.length>0,O=q.prerelease.length>0;if(E!==O)return E?1:-1;if(!E)return 0;for(let J=0;J<Math.max(G.prerelease.length,q.prerelease.length);J++){let Q=G.prerelease[J],R=q.prerelease[J];if(Q===void 0)return 1;if(R===void 0)return-1;let U=Number.parseInt(Q,10),W=Number.parseInt(R,10),X=!Number.isNaN(U)&&String(U)===Q,K=!Number.isNaN(W)&&String(W)===R;if(X&&K){if(U!==W)return W-U}else if(X!==K)return X?1:-1;else if(Q!==R)return Q<R?1:-1}return 0}function g(H,z){if(!z||z.length===0)return null;let G=[...z].sort(M),q=H.replace(/^[\^~]/,""),E=A(q),O=q.replace(/^v/,"").split("+")[0].split("-")[0],J=O.split(".").length>=3,Q=E.prerelease.length>0,R=(K)=>{if(K.prerelease.length===0)return!0;if(!Q)return!1;return K.major===E.major&&K.minor===E.minor&&K.patch===E.patch},U=(K,Y)=>M(Y,q)<=0||K.prerelease.length>0,W=(K)=>{for(let Y of G){let L=A(Y);if(!R(L))continue;if(K(L,Y))return Y}return null};if(H.startsWith("^"))return W((K,Y)=>{if(K.major!==E.major)return!1;if(E.major===0&&K.minor!==E.minor)return!1;return U(K,Y)});if(H.startsWith("~"))return W((K,Y)=>{if(K.major!==E.major||K.minor!==E.minor)return!1;return!J||U(K,Y)});if(G.includes(q))return q;let X=O.split(".").filter(Boolean).map((K)=>Number.parseInt(K,10));if(X.length>0&&X.every((K)=>!Number.isNaN(K))){let K=W((Y)=>{if(X[0]!==void 0&&Y.major!==X[0])return!1;if(X[1]!==void 0&&Y.minor!==X[1])return!1;if(X[2]!==void 0&&Y.patch!==X[2])return!1;return!0});if(K)return K}return W(()=>!0)??G[0]??null}
2
2
  export{B as gc,D as hc,S as ic,f as jc,N as kc,F as lc,_ as mc,V as nc,h as oc,u as pc,b as qc,l as rc,A as sc,M as tc,g as uc};