ts-pantry 0.10.35 → 0.10.36
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 +3 -3
- package/dist/{chunk-qsmp4hx3.js → chunk-aaf6s46d.js} +2 -2
- package/dist/{chunk-97j03jad.js → chunk-g037hnc2.js} +1 -1
- package/dist/chunk-g1j4y6h5.js +2 -0
- package/dist/{chunk-f1etd2yy.js → chunk-gvacxb4c.js} +1 -1
- package/dist/{chunk-vz6mn75t.js → chunk-z225fkv5.js} +1 -1
- package/dist/packages/anthropic.com/claude-code.d.ts +1 -1
- package/dist/packages/apptainerorg.d.ts +1 -1
- package/dist/packages/depotdev.d.ts +1 -1
- package/dist/packages/flyio.d.ts +1 -1
- package/dist/packages/github.com/canonical/charmcraft.d.ts +1 -1
- package/dist/packages/github.com/ggerganov/llama.cpp.d.ts +1 -1
- package/dist/packages/github.com/router-for-me/CLIProxyAPI.d.ts +1 -1
- package/dist/packages/tartrun.d.ts +1 -1
- package/dist/packages/valkeyio.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-0ek84e0h.js +0 -2
package/dist/bin/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{Da as c6,Ea as n6,Ga as l6,Ja as p6,L as C6,La as r6,M as S6,N as v6,P as y6,V as k6,W as h6,X as _6,Y as g6,Z as f6,ba as G6,ca as u6,da as i6}from"../chunk-
|
|
2
|
+
import{Da as c6,Ea as n6,Ga as l6,Ja as p6,L as C6,La as r6,M as S6,N as v6,P as y6,V as k6,W as h6,X as _6,Y as g6,Z as f6,ba as G6,ca as u6,da as i6}from"../chunk-aaf6s46d.js";import"../chunk-g61kvyjq.js";import"../chunk-45tts066.js";import"../chunk-jrhm2n4b.js";import{Ab as U6,nb as p,ob as m6,qb as X6,rb as r,wb as d6}from"../chunk-t3pfbk3v.js";import"../chunk-vxknhv2t.js";import"../chunk-mwn9pf2y.js";import{Sb as l,Tb as q6,Ub as J6}from"../chunk-pjs4pxq8.js";import"../chunk-gvacxb4c.js";import"../chunk-g1j4y6h5.js";import{mc as P6,nc as Q4}from"../chunk-99dpbye7.js";import{rc as h}from"../chunk-2f67zesz.js";import V from"node:fs";import B from"node:path";import H from"node:process";import{existsSync as t6}from"node:fs";import a from"node:fs/promises";import K6 from"node:os";import s from"node:path";import k from"node:process";import{EventEmitter as o6}from"node:events";import v from"node:process";import V6 from"node:process";import z6 from"node:process";import u from"node:process";import f from"node:process";import L6 from"node:tty";import fz,{stdin as E4,stdout as x4}from"node:process";import M6,{stdin as uz,stdout as iz}from"node:process";import cz from"node:readline";class B6{configPath;config=null;events=[];retryCount=0;maxRetries=3;retryDelayMs=1000;constructor(){let z=K6.homedir(),$=s.join(z,".config","clapp");this.configPath=s.join($,"telemetry.json")}async isEnabled(){if(k.env.DO_NOT_TRACK==="1"||k.env.DO_NOT_TRACK==="true")return!1;if(k.env.NO_TELEMETRY==="1"||k.env.NO_TELEMETRY==="true")return!1;return(await this.loadConfig()).enabled}async enable(){let z=await this.loadConfig();if(z.enabled=!0,!z.userId)z.userId=this.generateUserId();await this.saveConfig(z)}async disable(){let z=await this.loadConfig();z.enabled=!1,await this.saveConfig(z)}async track(z,$){if(!await this.isEnabled())return;let Z={event:z,...$,timestamp:Date.now(),platform:K6.platform(),nodeVersion:k.version};if(this.events.push(Z),this.events.length>=10)await this.send()}async trackCommand(z,$){await this.track("command",{command:z,duration:$})}async trackError(z,$){await this.track("error",{error:z,command:$})}async send(){if(!await this.isEnabled()||this.events.length===0)return!0;try{this.events=[],this.retryCount=0;let $=await this.loadConfig();return $.lastSent=Date.now(),await this.saveConfig($),!0}catch{if(this.retryCount<this.maxRetries){this.retryCount++;let $=this.retryDelayMs*2**(this.retryCount-1);return await this.sleep($),this.send()}return this.events=[],this.retryCount=0,!1}}async flush(){if(this.events.length===0)return!0;return this.send()}sleep(z){return new Promise(($)=>setTimeout($,z))}async status(){let z=await this.loadConfig();return{enabled:z.enabled,doNotTrack:k.env.DO_NOT_TRACK==="1"||k.env.DO_NOT_TRACK==="true",eventsQueued:this.events.length,lastSent:z.lastSent}}async loadConfig(){if(this.config)return this.config;try{if(t6(this.configPath)){let z=await a.readFile(this.configPath,"utf-8");return this.config=JSON.parse(z),this.config}}catch{}return this.config={enabled:!1},this.config}async saveConfig(z){this.config=z;try{let $=s.dirname(this.configPath);await a.mkdir($,{recursive:!0}),await a.writeFile(this.configPath,JSON.stringify(z,null,2),"utf-8")}catch{}}generateUserId(){let z=Math.random().toString(36).substring(2,15),$=Date.now().toString(36);return`${z}-${$}`}}var V4=new B6;function e6(z,$={}){let Q={_:[]},Z=$.alias||{},Y=new Set($.boolean||[]),q={};for(let U of Object.keys(Z))for(let X of Z[U])q[X]=U;for(let U of Y)if(Z[U])for(let X of Z[U])Y.add(X);function J(U,X){let G=q[U]||U;if(Q[G]=X,Z[G])for(let K of Z[G])Q[K]=X;if(q[U]&&Z[q[U]])for(let K of Z[q[U]])Q[K]=X;Q[U]=X}for(let U=0;U<z.length;U++){let X=z[U];if(X==="--"){Q._.push(...z.slice(U+1));break}if(X.startsWith("--")){let G=X.indexOf("=");if(G!==-1){let K=X.slice(2,G),W=X.slice(G+1);J(K,W)}else{let K=X.slice(2);if(K.startsWith("no-")){let j=K.slice(3);J(j,!1);continue}let W=q[K]||K;if(Y.has(W)||Y.has(K))J(K,!0);else{let j=z[U+1];if(j!==void 0&&!j.startsWith("-"))J(K,j),U++;else J(K,!0)}}}else if(X.startsWith("-")&&X.length>1){let G=X.slice(1);for(let K=0;K<G.length;K++){let W=G[K],j=q[W]||W;if(K===G.length-1&&!Y.has(j)&&!Y.has(W)){let F=z[U+1];if(F!==void 0&&!F.startsWith("-"))J(W,F),U++;else J(W,!0)}else J(W,!0)}}else Q._.push(X)}return Q}function e(z){return z.replace(/[<[].+/,"").trim()}function zz(z){let $=/<([^>]+)>/g,Q=/\[([^\]]+)\]/g,Z=[],Y=(U)=>{let X=!1,G=U[1];if(G.startsWith("..."))G=G.slice(3),X=!0;return{required:U[0].startsWith("<"),value:G,variadic:X}},q;while(q=$.exec(z))Z.push(Y(q));let J;while(J=Q.exec(z))Z.push(Y(J));return Z}function $z(z){let $={alias:{},boolean:[]};for(let[Q,Z]of z.entries()){if(Z.names.length>1)$.alias[Z.names[0]]=Z.names.slice(1);if(Z.isBoolean)if(Z.negated){if(!z.some((q,J)=>{return J!==Q&&q.names.some((U)=>Z.names.includes(U))&&typeof q.required==="boolean"}))$.boolean.push(Z.names[0])}else $.boolean.push(Z.names[0])}return $}function F6(z){return z.reduce(($,Q)=>$.length>=Q.length?$:Q,"")}function t(z,$){return z.length>=$?z:`${z}${" ".repeat($-z.length)}`}function Qz(z){return z.replace(/([a-z])-([a-z])/g,($,Q,Z)=>{return Q+Z.toUpperCase()})}function Zz(z,$,Q){let Z=0,Y=$.length,q=z,J;for(;Z<Y;++Z)J=q[$[Z]],q=q[$[Z]]=Z===Y-1?Q:J!=null?J:!!~$[Z+1].indexOf(".")||!(+$[Z+1]>-1)?{}:[]}function Yz(z,$){for(let Q of Object.keys($)){let Z=$[Q];if(Z.shouldTransform){if(z[Q]=Array.prototype.concat.call([],z[Q]),typeof Z.transformFunction==="function")z[Q]=z[Q].map(Z.transformFunction)}}}function qz(z){let $=/([^\\/]+)$/.exec(z);return $?$[1]:""}function N6(z){return z.split(".").map(($,Q)=>{return Q===0?Qz($):$}).join(".")}class d extends Error{exitCode=2;isUsageError=!0;constructor(z){super(z);if(this.name=this.constructor.name,typeof Error.captureStackTrace==="function")Error.captureStackTrace(this,this.constructor);else this.stack=Error(z).stack}format(z=!1){if(z&&this.stack)return`${this.message}
|
|
3
3
|
|
|
4
4
|
Stack trace:
|
|
5
5
|
${this.stack}`;return this.message}}function Jz(){let{env:z}=V6,{TERM:$,TERM_PROGRAM:Q}=z;if(V6.platform!=="win32")return $!=="linux";return Boolean(z.WT_SESSION)||Boolean(z.TERMINUS_SUBLIME)||z.ConEmuTask==="{cmd::Cmder}"||Q==="Terminus-Sublime"||Q==="vscode"||$==="xterm-256color"||$==="alacritty"||$==="rxvt-unicode"||$==="rxvt-unicode-256color"||z.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var n="\x1B",x=`${n}[`;var S={to(z,$){if(!$)return`${x}${z+1}G`;return`${x}${$+1};${z+1}H`},move(z,$){let Q="";if(z<0)Q+=`${x}${-z}D`;else if(z>0)Q+=`${x}${z}C`;if($<0)Q+=`${x}${-$}A`;else if($>0)Q+=`${x}${$}B`;return Q},up:(z=1)=>`${x}${z}A`,down:(z=1)=>`${x}${z}B`,forward:(z=1)=>`${x}${z}C`,backward:(z=1)=>`${x}${z}D`,nextLine:(z=1)=>`${x}E`.repeat(z),prevLine:(z=1)=>`${x}F`.repeat(z),left:`${x}G`,hide:`${x}?25l`,show:`${x}?25h`,save:`${n}7`,restore:`${n}8`};var o={screen:`${x}2J`,up:(z=1)=>`${x}1J`.repeat(z),down:(z=1)=>`${x}J`.repeat(z),line:`${x}2K`,lineEnd:`${x}K`,lineStart:`${x}1K`,lines(z){let $="";for(let Q=0;Q<z;Q++)$+=this.line+(Q<z-1?S.up():"");if(z)$+=S.left;return $}},w4={screen:`${n}c`};function Xz(z,$){let Q=[];for(let Z=0;Z<=$.length;Z++)Q[Z]=[Z];for(let Z=0;Z<=z.length;Z++)Q[0][Z]=Z;for(let Z=1;Z<=$.length;Z++)for(let Y=1;Y<=z.length;Y++)if($.charAt(Z-1)===z.charAt(Y-1))Q[Z][Y]=Q[Z-1][Y-1];else Q[Z][Y]=Math.min(Q[Z-1][Y-1]+1,Q[Z][Y-1]+1,Q[Z-1][Y]+1);return Q[$.length][z.length]}function b6(z,$,Q=2,Z=3){return $.map((Y)=>({cmd:Y,distance:Xz(z,Y)})).filter(({distance:Y})=>Y<=Q).sort((Y,q)=>Y.distance-q.distance).slice(0,Z).map(({cmd:Y})=>Y)}class D6{rawName;description;name;names;isBoolean;required;config;negated;constructor(z,$,Q){if(this.rawName=z,this.description=$,this.config=Object.assign({},Q),z=z.replace(/\.\*/g,""),this.negated=!1,this.names=e(z).split(",").map((Z)=>{let Y=Z.trim().replace(/^-{1,2}/,"");if(Y.startsWith("no-"))this.negated=!0,Y=Y.replace(/^no-/,"");return N6(Y)}).sort((Z,Y)=>Z.length>Y.length?1:-1),this.name=this.names[this.names.length-1],this.negated&&this.config.default==null)this.config.default=!0;if(z.includes("<"))this.required=!0;else if(z.includes("["))this.required=!1;else this.isBoolean=!0}}var O4=z6.argv,Uz=`${z6.platform}-${z6.arch} bun-v${typeof Bun<"u"?Bun.version:"unknown"}`,W6=u.argv,Gz=`${u.platform}-${u.arch} node-${u.version}`;class $6{rawName;description;config;cli;options;aliasNames;name;namespace;args;commandAction;usageText;versionNumber;examples;helpCallback;globalCommand;beforeHooks;afterHooks;middleware;constructor(z,$,Q,Z){this.rawName=z,this.description=$,this.config=Q,this.cli=Z,this.options=[],this.aliasNames=[],this.name=e(z);let Y=e(z),q=Y.indexOf(":");if(q>0)this.namespace=Y.substring(0,q),this.name=Y.substring(q+1);if(this.args=zz(z),this.examples=[],this.beforeHooks=[],this.afterHooks=[],this.middleware=[],!Q)this.config={}}usage(z){return this.usageText=z,this}allowUnknownOptions(){return this.config.allowUnknownOptions=!0,this}ignoreOptionDefaultValue(){return this.config.ignoreOptionDefaultValue=!0,this}version(z,$="-v, --version"){return this.versionNumber=z,this.option($,"Display version number"),this}example(z){return this.examples.push(z),this}option(z,$,Q){let Z=new D6(z,$,Q);return this.options.push(Z),this}alias(z){return this.aliasNames.push(z),this}action(z){return this.commandAction=z,this}before(z){return this.beforeHooks.push(z),this}after(z){return this.afterHooks.push(z),this}use(z){return this.middleware.push(z),this}isMatched(z){if(this.aliasNames.includes(z))return!0;if(this.namespace)return`${this.namespace}:${this.name}`===z;return this.name===z}get isDefaultCommand(){return this.name===""||this.aliasNames.includes("!")}get isGlobalCommand(){return this instanceof Q6}get displayName(){return this.namespace?`${this.namespace}:${this.name}`:this.name}hasOption(z){return z=z.split(".")[0],!!this.options.find(($)=>{return $.names.includes(z)})}outputHelp(){let{name:z,commands:$}=this.cli,{versionNumber:Q,options:Z,helpCallback:Y}=this.cli.globalCommand,q=[{body:`${z}${Q?`/${Q}`:""}`}];if(q.push({title:"Usage",body:` $ ${z} ${this.usageText||this.rawName}`}),(this.isGlobalCommand||this.isDefaultCommand)&&$.length>0){let X=F6($.map((F)=>F.rawName)),G=new Map,K=[];for(let F of $)if(F.namespace){if(!G.has(F.namespace))G.set(F.namespace,[]);G.get(F.namespace).push(F)}else K.push(F);let W="";if(K.length>0)W+=K.map((F)=>{return` ${t(F.rawName,X.length)} ${F.description}`}).join(`
|
|
@@ -37,7 +37,7 @@ Run \`${this.name??"cli"} --help\` for usage.`;v.stderr.write(`${q}${Y}${J}
|
|
|
37
37
|
`).length-1;this.output.write(S.move(-999,z*-1))}render(){let z=O6(this._render(this)??"",M6.stdout.columns,{hard:!0,trim:!1});if(z===this._prevFrame)return;if(this.state==="initial")this.output.write(S.hide);else{let $=dz(this._prevFrame,z);if(this.restoreCursor(),$&&$?.length===1){let Q=$[0];this.output.write(S.move(0,Q)),this.output.write(o.lines(1));let Z=z.split(`
|
|
38
38
|
`);this.output.write(Z[Q]),this._prevFrame=z,this.output.write(S.move(0,Z.length-Q-1));return}if($&&$?.length>1){let Q=$[0];this.output.write(S.move(0,Q)),this.output.write(o.down());let Y=z.split(`
|
|
39
39
|
`).slice(Q);this.output.write(Y.join(`
|
|
40
|
-
`)),this._prevFrame=z;return}this.output.write(o.down())}if(this.output.write(z),this.state==="initial")this.state="active";this._prevFrame=z}}function pz(z,$){if(z===void 0)return 0;if($.length===0)return 0;let Z=$.findIndex((Y)=>Y.value===z);return Z!==-1?Z:0}function rz(z,$){return($.label??String($.value)).toLowerCase().includes(z.toLowerCase())}function az(z,$){if(!$)return;if(z)return $;return $[0]}class sz extends Y6{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#z=0;#Q="";#Z;#$;get cursor(){return this.#z}get userInputWithCursor(){if(!this.userInput)return i.inverse(i.hidden("_"));if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let z=this.userInput.slice(0,this._cursor),[$,...Q]=this.userInput.slice(this._cursor);return`${z}${i.inverse($)}${Q.join("")}`}get options(){if(typeof this.#$==="function")return this.#$();return this.#$}constructor(z){super(z);this.#$=z.options;let $=this.options;this.filteredOptions=[...$],this.multiple=z.multiple===!0,this.#Z=z.filter??rz;let Q;if(z.initialValue&&Array.isArray(z.initialValue))if(this.multiple)Q=z.initialValue;else Q=z.initialValue.slice(0,1);else if(!this.multiple&&this.options.length>0)Q=[this.options[0].value];if(Q)for(let Z of Q){let Y=$.findIndex((q)=>q.value===Z);if(Y!==-1)this.toggleSelected(Z),this.#z=Y}this.focusedValue=this.options[this.#z]?.value,this.on("key",(Z,Y)=>this.#Y(Z,Y)),this.on("userInput",(Z)=>this.#q(Z))}_isActionKey(z,$){return z==="\t"||this.multiple&&this.isNavigating&&$.name==="space"&&z!==void 0&&z!==""}#Y(z,$){let Q=$.name==="up",Z=$.name==="down",Y=$.name==="return";if(Q||Z){if(this.#z=Math.max(0,Math.min(this.#z+(Q?-1:1),this.filteredOptions.length-1)),this.focusedValue=this.filteredOptions[this.#z]?.value,!this.multiple)this.selectedValues=[this.focusedValue];this.isNavigating=!0}else if(Y)this.value=az(this.multiple,this.selectedValues);else if(this.multiple)if(this.focusedValue!==void 0&&($.name==="tab"||this.isNavigating&&$.name==="space"))this.toggleSelected(this.focusedValue);else this.isNavigating=!1;else{if(this.focusedValue)this.selectedValues=[this.focusedValue];this.isNavigating=!1}}deselectAll(){this.selectedValues=[]}toggleSelected(z){if(this.filteredOptions.length===0)return;if(this.multiple)if(this.selectedValues.includes(z))this.selectedValues=this.selectedValues.filter(($)=>$!==z);else this.selectedValues=[...this.selectedValues,z];else this.selectedValues=[z]}#q(z){if(z!==this.#Q){this.#Q=z;let $=this.options;if(z)this.filteredOptions=$.filter((Q)=>this.#Z(z,Q));else this.filteredOptions=[...$];if(this.#z=pz(this.focusedValue,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#z]?.value,!this.multiple)if(this.focusedValue!==void 0)this.toggleSelected(this.focusedValue);else this.deselectAll()}}}class tz extends Y6{options;cursor=0;#z;getGroupItems(z){return this.options.filter(($)=>$.group===z)}isGroupSelected(z){let $=this.getGroupItems(z),Q=this.value;if(Q===void 0)return!1;return $.every((Z)=>Q.includes(Z.value))}toggleValue(){let z=this.options[this.cursor];if(this.value===void 0)this.value=[];if(z.group===!0){let $=String(z.value),Q=this.getGroupItems($);if(this.isGroupSelected($))this.value=this.value.filter((Z)=>Q.findIndex((Y)=>Y.value===Z)===-1);else this.value=[...this.value,...Q.map((Z)=>Z.value)];this.value=Array.from(new Set(this.value))}else{let $=this.value.includes(z.value);this.value=$?this.value.filter((Q)=>Q!==z.value):[...this.value,z.value]}}constructor(z){super(z,!1);let{options:$}=z;this.#z=z.selectableGroups!==!1,this.options=Object.entries($).flatMap(([Q,Z])=>[{value:Q,group:!0,label:Q},...Z.map((Y)=>({...Y,group:Q}))]),this.value=[...z.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:Q})=>Q===z.cursorAt),this.#z?0:1),this.on("cursor",(Q)=>{switch(Q){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let Z=this.options[this.cursor]?.group===!0;if(!this.#z&&Z)this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let Z=this.options[this.cursor]?.group===!0;if(!this.#z&&Z)this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}case"space":this.toggleValue();break}})}}var oz=Jz();var b=(z,$)=>oz?z:$,P4=b("◆","*"),C4=b("■","x"),S4=b("▲","x"),v4=b("◇","o"),y4=b("┌","T"),ez=b("│","|"),k4=b("└","—"),h4=b("●",">"),_4=b("○"," "),g4=b("◻","[•]"),f4=b("◼","[+]"),m4=b("◻","[ ]"),d4=b("▪","•"),u4=b("─","-"),i4=b("╮","+"),c4=b("├","+"),n4=b("╯","+"),l4=b("●","•"),p4=b("◆","*"),r4=b("▲","!"),a4=b("■","x");var s4={light:b("─","-"),heavy:b("━","="),block:b("█","#")};function z4(){return`${i.gray(ez)} `}var t4=z4();var I6="0.10.
|
|
40
|
+
`)),this._prevFrame=z;return}this.output.write(o.down())}if(this.output.write(z),this.state==="initial")this.state="active";this._prevFrame=z}}function pz(z,$){if(z===void 0)return 0;if($.length===0)return 0;let Z=$.findIndex((Y)=>Y.value===z);return Z!==-1?Z:0}function rz(z,$){return($.label??String($.value)).toLowerCase().includes(z.toLowerCase())}function az(z,$){if(!$)return;if(z)return $;return $[0]}class sz extends Y6{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#z=0;#Q="";#Z;#$;get cursor(){return this.#z}get userInputWithCursor(){if(!this.userInput)return i.inverse(i.hidden("_"));if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let z=this.userInput.slice(0,this._cursor),[$,...Q]=this.userInput.slice(this._cursor);return`${z}${i.inverse($)}${Q.join("")}`}get options(){if(typeof this.#$==="function")return this.#$();return this.#$}constructor(z){super(z);this.#$=z.options;let $=this.options;this.filteredOptions=[...$],this.multiple=z.multiple===!0,this.#Z=z.filter??rz;let Q;if(z.initialValue&&Array.isArray(z.initialValue))if(this.multiple)Q=z.initialValue;else Q=z.initialValue.slice(0,1);else if(!this.multiple&&this.options.length>0)Q=[this.options[0].value];if(Q)for(let Z of Q){let Y=$.findIndex((q)=>q.value===Z);if(Y!==-1)this.toggleSelected(Z),this.#z=Y}this.focusedValue=this.options[this.#z]?.value,this.on("key",(Z,Y)=>this.#Y(Z,Y)),this.on("userInput",(Z)=>this.#q(Z))}_isActionKey(z,$){return z==="\t"||this.multiple&&this.isNavigating&&$.name==="space"&&z!==void 0&&z!==""}#Y(z,$){let Q=$.name==="up",Z=$.name==="down",Y=$.name==="return";if(Q||Z){if(this.#z=Math.max(0,Math.min(this.#z+(Q?-1:1),this.filteredOptions.length-1)),this.focusedValue=this.filteredOptions[this.#z]?.value,!this.multiple)this.selectedValues=[this.focusedValue];this.isNavigating=!0}else if(Y)this.value=az(this.multiple,this.selectedValues);else if(this.multiple)if(this.focusedValue!==void 0&&($.name==="tab"||this.isNavigating&&$.name==="space"))this.toggleSelected(this.focusedValue);else this.isNavigating=!1;else{if(this.focusedValue)this.selectedValues=[this.focusedValue];this.isNavigating=!1}}deselectAll(){this.selectedValues=[]}toggleSelected(z){if(this.filteredOptions.length===0)return;if(this.multiple)if(this.selectedValues.includes(z))this.selectedValues=this.selectedValues.filter(($)=>$!==z);else this.selectedValues=[...this.selectedValues,z];else this.selectedValues=[z]}#q(z){if(z!==this.#Q){this.#Q=z;let $=this.options;if(z)this.filteredOptions=$.filter((Q)=>this.#Z(z,Q));else this.filteredOptions=[...$];if(this.#z=pz(this.focusedValue,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#z]?.value,!this.multiple)if(this.focusedValue!==void 0)this.toggleSelected(this.focusedValue);else this.deselectAll()}}}class tz extends Y6{options;cursor=0;#z;getGroupItems(z){return this.options.filter(($)=>$.group===z)}isGroupSelected(z){let $=this.getGroupItems(z),Q=this.value;if(Q===void 0)return!1;return $.every((Z)=>Q.includes(Z.value))}toggleValue(){let z=this.options[this.cursor];if(this.value===void 0)this.value=[];if(z.group===!0){let $=String(z.value),Q=this.getGroupItems($);if(this.isGroupSelected($))this.value=this.value.filter((Z)=>Q.findIndex((Y)=>Y.value===Z)===-1);else this.value=[...this.value,...Q.map((Z)=>Z.value)];this.value=Array.from(new Set(this.value))}else{let $=this.value.includes(z.value);this.value=$?this.value.filter((Q)=>Q!==z.value):[...this.value,z.value]}}constructor(z){super(z,!1);let{options:$}=z;this.#z=z.selectableGroups!==!1,this.options=Object.entries($).flatMap(([Q,Z])=>[{value:Q,group:!0,label:Q},...Z.map((Y)=>({...Y,group:Q}))]),this.value=[...z.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:Q})=>Q===z.cursorAt),this.#z?0:1),this.on("cursor",(Q)=>{switch(Q){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let Z=this.options[this.cursor]?.group===!0;if(!this.#z&&Z)this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let Z=this.options[this.cursor]?.group===!0;if(!this.#z&&Z)this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}case"space":this.toggleValue();break}})}}var oz=Jz();var b=(z,$)=>oz?z:$,P4=b("◆","*"),C4=b("■","x"),S4=b("▲","x"),v4=b("◇","o"),y4=b("┌","T"),ez=b("│","|"),k4=b("└","—"),h4=b("●",">"),_4=b("○"," "),g4=b("◻","[•]"),f4=b("◼","[+]"),m4=b("◻","[ ]"),d4=b("▪","•"),u4=b("─","-"),i4=b("╮","+"),c4=b("├","+"),n4=b("╯","+"),l4=b("●","•"),p4=b("◆","*"),r4=b("▲","!"),a4=b("■","x");var s4={light:b("─","-"),heavy:b("━","="),block:b("█","#")};function z4(){return`${i.gray(ez)} `}var t4=z4();var I6="0.10.36";Q4();async function Z4(z="src/pantry"){if(!V.existsSync(z))throw Error(`Pantry directory not found: ${z}. Please run 'bun ./bin/cli.ts update-pantry' first.`);let $=[];function Q(Z,Y=""){let q=V.readdirSync(Z,{withFileTypes:!0}),J=B.join(Z,"package.yml");if(Y&&V.existsSync(J))$.push(Y);for(let U of q)if(U.isDirectory()&&!U.name.startsWith(".")){let X=Y?`${Y}/${U.name}`:U.name,G=B.join(Z,U.name);Q(G,X)}}return Q(z),console.log(`\uD83D\uDCE6 Found ${$.length} packages in local pantry`),$.sort()}async function Y4(z=!1){async function $(J){let U=new URL("https://s3.amazonaws.com/dist.tea.xyz/");if(U.searchParams.set("list-type","2"),U.searchParams.set("prefix",""),U.searchParams.set("max-keys","1000"),J)U.searchParams.set("continuation-token",J);let X=await fetch(U.toString());if(!X.ok)throw Error(`Failed to fetch S3 listing: ${X.status}`);let G=await X.text(),K=[],W=G.match(/<Key>([^<]+)<\/Key>/g);if(W)for(let T of W){let E=T.replace(/<Key>([^<]+)<\/Key>/,"$1");K.push({Key:E})}let j=G.includes("<IsTruncated>true</IsTruncated>"),F=G.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/),L=F?F[1]:void 0;return{IsTruncated:j,NextContinuationToken:L,Contents:K}}console.log("Scraping packages from S3 registry...");let Q=new Set,Z;do{let J=await $(Z);for(let U of J.Contents){let X=U.Key,G=X.split("/");if(G.length===0)continue;if(G[0].startsWith(".")||G[0].includes(" ")||X.match(/\.(md|txt|yml|yaml|json)$/i))continue;let K=["darwin","linux","windows"],W=-1;for(let j=1;j<G.length;j++)if(K.includes(G[j])){W=j;break}if(W>0){let j=G.slice(0,W).join("/");if(j.includes("."))Q.add(j)}else if(G.length>=2&&G[0].includes(".")&&!G[1].startsWith("v")&&!G[1].match(/^\d/)){let j=`${G[0]}/${G[1]}`;Q.add(j)}else if(G.length>=1&&G[0].includes("."))Q.add(G[0])}Z=J.NextContinuationToken,console.log(`Found ${Q.size} packages so far...`)}while(Z);let Y=Array.from(Q).sort(),q=[];for(let J of Y){if(!J.includes(".")||J.match(/^[a-z0-9.-]+\.[a-z]{2,}(\/[\w.-]+){0,20}$/i)===null)continue;if(J.endsWith("/README.rst")||J.endsWith("/README")||J.includes("/docs/"))continue;if(J.endsWith("/.pkgroot"))continue;if(["amazon.com/aws","charm.sh","code.videolan.org","crates.io"].includes(J))continue;q.push(J)}return console.log(`\uD83D\uDCE6 Found ${q.length} valid packages in registry`),q}async function q4(z,$){let Z=`/**
|
|
41
41
|
* Constants used throughout the ts-pantry package
|
|
42
42
|
* This file is auto-generated from ${$}. Do not edit manually.
|
|
43
43
|
* Generated on ${new Date().toISOString()}
|
|
@@ -100,7 +100,7 @@ ${Y.join(`
|
|
|
100
100
|
Conflicts found:`),j.conflicts.forEach((L)=>{console.log(` ${L.package}: ${L.versions.join(", ")}`)});if(console.log(`
|
|
101
101
|
\uD83D\uDCCB All unique packages to install:`),j.uniquePackages.forEach((L,T)=>{let E=j.allDependencies.find((N)=>N.name===L),w=E&&E.version&&E.version!=="latest"?` (${E.version})`:"";console.log(` ${T+1}. ${L}${w}`)}),G)console.log(`
|
|
102
102
|
\uD83D\uDE80 Install command:`),console.log(`pantry install ${j.uniquePackages.join(" ")}`);if(Object.values(j.osSpecificDeps).reduce((L,T)=>L+T.length,0)>0)console.log(`
|
|
103
|
-
\uD83D\uDDA5️ OS-specific dependencies:`),Object.entries(j.osSpecificDeps).forEach(([L,T])=>{if(T.length>0)console.log(` ${L}: ${T.map((E)=>E.name).join(", ")}`)})}H.exit(0)}catch(Q){if($.json){let Z={success:!1,error:String(Q),timestamp:new Date().toISOString()};console.log(JSON.stringify(Z))}else console.error("Error resolving dependencies:",Q);H.exit(1)}});I.command("get-php-versions","Get PHP versions suitable for CI/CD workflows").option("--format <type>","Output format: json (default), yaml, or csv",{default:"json"}).option("--branches <branches>","Comma-separated list of PHP branches to include (e.g., 8.4,8.3,8.2)").option("--fallback <versions>","Comma-separated list of fallback versions if detection fails").action(async(z)=>{try{let{getPhpVersionsForWorkflow:$}=await import("../chunk-
|
|
103
|
+
\uD83D\uDDA5️ OS-specific dependencies:`),Object.entries(j.osSpecificDeps).forEach(([L,T])=>{if(T.length>0)console.log(` ${L}: ${T.map((E)=>E.name).join(", ")}`)})}H.exit(0)}catch(Q){if($.json){let Z={success:!1,error:String(Q),timestamp:new Date().toISOString()};console.log(JSON.stringify(Z))}else console.error("Error resolving dependencies:",Q);H.exit(1)}});I.command("get-php-versions","Get PHP versions suitable for CI/CD workflows").option("--format <type>","Output format: json (default), yaml, or csv",{default:"json"}).option("--branches <branches>","Comma-separated list of PHP branches to include (e.g., 8.4,8.3,8.2)").option("--fallback <versions>","Comma-separated list of fallback versions if detection fails").action(async(z)=>{try{let{getPhpVersionsForWorkflow:$}=await import("../chunk-z225fkv5.js"),Q={};if(z.branches)Q.supportedBranches=z.branches.split(",").map((Y)=>Y.trim());if(z.fallback)Q.fallbackVersions=z.fallback.split(",").map((Y)=>Y.trim());let Z=$(Q);switch(z.format.toLowerCase()){case"yaml":console.log(`php_versions:
|
|
104
104
|
${Z.map((Y)=>` - "${Y}"`).join(`
|
|
105
105
|
`)}`);break;case"csv":console.log(Z.join(","));break;case"json":default:console.log(JSON.stringify(Z));break}H.exit(0)}catch($){console.error("Error getting PHP versions:",$),H.exit(1)}});I.command("generate-zig","Generate Zig package definitions from TypeScript packages").option("--packages-dir <dir>","Directory containing TypeScript package files",{default:"src/packages"}).option("--output <file>","Output Zig file path",{default:"packages.zig"}).option("--aliases","Also generate aliases file").option("--aliases-output <file>","Output file for Zig aliases",{default:"aliases.zig"}).action(async(z)=>{try{let{generateZigDefinitions:$,generateZigAliases:Q}=await import("../chunk-wkrez9ye.js"),{packagesDir:Z="src/packages",output:Y="packages.zig",aliases:q=!1,aliasesOutput:J="aliases.zig"}=z;if(console.log("\uD83D\uDE80 Generating Zig package definitions..."),await $(Z,Y),q)console.log(`
|
|
106
106
|
\uD83D\uDE80 Generating Zig package aliases...`),await Q(Z,J);console.log(`
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{Ma as mQ}from"./chunk-g61kvyjq.js";import{Db as uX}from"./chunk-vxknhv2t.js";import{Lb as a,Nb as yQ}from"./chunk-mwn9pf2y.js";import{$b as CX,Xb as jX,Yb as TX,ac as kQ,cc as IX,ec as RX,fc as EX,gc as fQ}from"./chunk-
|
|
1
|
+
import{Ma as mQ}from"./chunk-g61kvyjq.js";import{Db as uX}from"./chunk-vxknhv2t.js";import{Lb as a,Nb as yQ}from"./chunk-mwn9pf2y.js";import{$b as CX,Xb as jX,Yb as TX,ac as kQ,cc as IX,ec as RX,fc as EX,gc as fQ}from"./chunk-gvacxb4c.js";import{lc as q4}from"./chunk-g1j4y6h5.js";import{mc as _Q,nc as W0}from"./chunk-99dpbye7.js";import{rc as n}from"./chunk-2f67zesz.js";import H0 from"node:process";W0();import _X from"node:process";function BX(Q){return Q in _Q}function J0(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 w4(Q){return BX(Q)||J0(Q)}function L4(Q){return["darwin","linux","windows"].includes(Q)}function j4(Q){return["x86_64","aarch64","armv7l","i686"].includes(Q)}function wX(){return Object.keys(_Q)}function T4(){return Object.values(_Q)}function C4(Q){if(BX(Q))return{originalName:Q,resolvedDomain:_Q[Q],isAlias:!0};return{originalName:Q,resolvedDomain:Q,isAlias:!1}}function I4(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 R4(Q,X){return X?`${Q}@${X}`:Q}function jQ(){let Q=_X.platform,X=_X.arch,$,Z,W=!0;switch(Q){case"darwin":$="darwin";break;case"linux":$="linux";break;case"win32":$="windows";break;default:$="linux",W=!1}switch(X){case"x64":Z="x86_64";break;case"arm64":Z="aarch64";break;case"arm":Z="armv7l";break;case"ia32":Z="i686";break;default:Z="x86_64",W=!1}return{platform:$,architecture:Z,isSupported:W}}function E4(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 F4={LATEST:"latest",ANY:"*"},LX={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 M4(Q){return LX[Q]}function S4(Q,X){return LX[X].includes(Q)}function V4(Q){return Q}function A4(Q,X){return[Q,X]}function x4(Q){return Q}async function D4(Q){try{let X=await kQ(Q);if(!X)return{success:!1,error:`Package '${Q}' not found. Use 'search' to find available packages.`};return{success:!0,data:X}}catch(X){return{success:!1,error:`Failed to get package info: ${X}`}}}async function u4(Q){try{if(!Q||Q.trim().length===0)return{success:!1,error:"Search term cannot be empty"};return{success:!0,data:await IX(Q.trim())}}catch(X){return{success:!1,error:`Search failed: ${X}`}}}async function v4(Q=20){try{return{success:!0,data:(await RX(Q)).slice(0,Q)}}catch(X){return{success:!1,error:`Failed to list popular packages: ${X}`}}}async function h4(Q=20){try{return{success:!0,data:await EX(Q)}}catch(X){return{success:!1,error:`Failed to list active packages: ${X}`}}}function k4(){try{return{success:!0,data:wX()}}catch(Q){return{success:!1,error:`Failed to list aliases: ${Q}`}}}async function f4(Q){try{let X=await fQ(Q);if(!X.isValid)return{success:!1,error:X.error};return{success:!0,data:{packageName:X.packageName,version:X.version,isValid:!0}}}catch(X){return{success:!1,error:`Validation failed: ${X}`}}}async function g4(Q){try{let X=await fQ(Q);if(!X.isValid)return{success:!1,error:X.error};let $=X.packageName,Z=X.version||"latest",W=await CX($,Z);if(!W)return{success:!1,error:`Could not resolve version '${Z}' for package '${$}'`};let H=await kQ($);if(!H)return{success:!1,error:`Package '${$}' not found`};let U=jQ(),J={packageName:$,resolvedVersion:W,platform:U.platform,architecture:U.architecture,dependencies:H.dependencies,companions:H.companions,installCommand:`pkgx install ${$}@${W}`},Y=[];if(!U.isSupported)Y.push(`Platform ${U.platform}/${U.architecture} may not be fully supported`);if(H.dependencies.length>0)Y.push(`This package has ${H.dependencies.length} dependencies that will also be installed`);return{success:!0,data:J,warnings:Y.length>0?Y:void 0}}catch(X){return{success:!1,error:`Failed to create install plan: ${X}`}}}async function m4(Q){try{let X=await jX(Q);if(!X)return{success:!1,error:`Package '${Q}' not found`};let $=await TX(Q);return{success:!0,data:{latest:X,total:$.length,versions:$}}}catch(X){return{success:!1,error:`Failed to get version info: ${X}`}}}function d4(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 c4(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 l4(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 p4(){try{let Q=jQ();return{success:!0,data:{platform:Q.platform,architecture:Q.architecture,isSupported:Q.isSupported,nodeVersion:H0.version}}}catch(Q){return{success:!1,error:`Failed to get system info: ${Q}`}}}import HQ from"node:fs";import CQ from"node:path";function IQ(Q){if(!HQ.existsSync(Q))throw Error(`Dependency file not found: ${Q}`);let X=HQ.readFileSync(Q,"utf-8"),$=[],Z=X.split(`
|
|
6
6
|
`),W=!1,H=!1,U=0;for(let J of Z){let Y=J.trim();if(!Y||Y.startsWith("#"))continue;if(J.match(/^(dependencies|deps):\s*$/)){W=!0,H=!1,U=J.search(/\S/);continue}if(J.match(/^global:\s*true\s*$/)||J.match(/^global:\s*$/)&&!W){H=!0;continue}if(J.match(/^\w+:/)&&!J.includes(" ")&&W&&U===0){W=!1;continue}if(W||H){if(J.match(/^\s+(dependencies|deps):\s*$/))continue;let z=J.indexOf(":");if(z>0){let G=J.substring(0,z).trim(),O=J.substring(z+1).trim();if(G&&O){let K=G,L=O.replace(/^['"]|['"]$/g,"");if(K==="global"||K==="dependencies"||K==="deps")continue;let q=L,_=L;if(L.startsWith("^"))q=L.substring(1),_=L;else if(L.startsWith("~"))q=L.substring(1),_=L;else if(L.startsWith(">=")||L.startsWith("<=")||L.startsWith(">")||L.startsWith("<")){let B=/^([><=]+)/.exec(L);if(B){let w=B[1];q=L.substring(w.length).trim(),_=L}}else if(L==="*"||L==="latest")q="latest",_="*";else q=L,_=`@${L}`;$.push({name:K,version:q,constraint:_,isOsSpecific:!1})}}}}return $}function U0(Q){if(!HQ.existsSync(Q))throw Error(`Dependency file not found: ${Q}`);let X=HQ.readFileSync(Q,"utf-8"),$=IQ(Q),Z;try{let W=typeof Bun<"u"&&Bun.YAML?Bun.YAML.parse(X):Y0(X);if(W?.services){let H=Array.isArray(W.services.autoStart)?W.services.autoStart.map((U)=>String(U)):[];if(H.length>0)Z={enabled:W.services.enabled===!0,autoStart:H}}}catch{}return{dependencies:$,services:Z}}function Y0(Q){let X={},$=Q.split(`
|
|
7
|
-
`),Z=!1,W=!1,H=[],U=!1;for(let J of $){let Y=J.trim();if(!Y||Y.startsWith("#"))continue;if(J.match(/^services:\s*$/)){Z=!0,W=!1;continue}if(Z&&!J.startsWith(" ")&&!J.startsWith("\t")&&!Y.startsWith("-")){if(Y!=="services:"){Z=!1,W=!1;continue}}if(Z){if(Y.startsWith("enabled:")){U=Y.includes("true");continue}if(Y.match(/^autoStart:\s*$/)){W=!0;continue}if(W&&Y.startsWith("- ")){let z=Y.slice(2).trim();if(z)H.push(z)}}}if(H.length>0)X.services={enabled:U,autoStart:H};return X}async function r4(Q,X="src/packages"){try{let $;if(Q.includes("/"))$=CQ.join(X,`${Q}.ts`);else{let G=`${Q.replace(/\./g,"")}.ts`;$=CQ.join(X,G)}if(!HQ.existsSync($))return[];let Z=HQ.readFileSync($,"utf-8"),W=Z.indexOf("versions:");if(W===-1)return[];let H=Z.substring(W),U=H.indexOf("["),J=H.indexOf("] as const");if(U===-1||J===-1)return[];let z=H.substring(U+1,J).match(/'([^']+)'/g);if(!z)return[];return z.map((G)=>G.replace(/'/g,""))}catch{return[]}}async function z0(Q){try{let{packages:X}=await import("./chunk-97j03jad.js").catch(()=>import("./src/index.js")),$=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),Z=X[$];if(!Z){let W=Object.values(X);Z=W.find((H)=>H.domain===Q)||W.find((H)=>Array.isArray(H.aliases)&&H.aliases.includes(Q))}if(Z&&Z.versions&&Array.isArray(Z.versions))return Z.versions;return[]}catch{return[]}}async function FX(Q,X){let $=await z0(Q);if($.length===0)return X.split("#")[0].trim().replace(/^[@^~>=<]+/,"")||"latest";let Z=X.split("#")[0].trim();if(Z==="*"||Z==="latest")return $[0];if(Z.startsWith("@")){let H=Z.slice(1);return $.includes(H)?H:$[0]}return G0($,Z)||$[0]}function G0(Q,X){if(X.startsWith("^")){let $=X.slice(1),[Z]=YQ($);return Q.filter((H)=>{let[U]=YQ(H);return U===Z&&JQ(H,$)>=0})[0]||null}if(X.startsWith("~")){let $=X.slice(1),[Z,W]=YQ($);return Q.filter((U)=>{let[J,Y]=YQ(U);return J===Z&&Y===W&&JQ(U,$)>=0})[0]||null}if(X.startsWith(">=")){let $=X.slice(2).trim();return Q.filter((W)=>JQ(W,$)>=0)[0]||null}if(X.startsWith(">")){let $=X.slice(1).trim();return Q.filter((W)=>JQ(W,$)>0)[0]||null}if(X.startsWith("<=")){let $=X.slice(2).trim();return Q.filter((W)=>JQ(W,$)<=0)[0]||null}if(X.startsWith("<")){let $=X.slice(1).trim();return Q.filter((W)=>JQ(W,$)<0)[0]||null}if(X.startsWith("=")){let $=X.slice(1).trim();return Q.includes($)?$:null}return Q.includes(X)?X:null}function YQ(Q){let X=Q.split(".").map(($)=>{let Z=$.match(/^\d+/);return Z?Number.parseInt(Z[0],10):0});return[X[0]||0,X[1]||0,X[2]||0]}function JQ(Q,X){if(Q==="latest"&&X!=="latest")return 1;if(X==="latest"&&Q!=="latest")return-1;if(Q==="latest"&&X==="latest")return 0;let $=Q.split("#")[0].trim(),Z=X.split("#")[0].trim(),[W,H,U]=YQ($),[J,Y,z]=YQ(Z);if(W>J)return 1;if(W<J)return-1;if(H>Y)return 1;if(H<Y)return-1;if(U>z)return 1;if(U<z)return-1;return 0}var TQ=null;async function K0(){if(TQ)return TQ;return TQ=(await import("./chunk-97j03jad.js").catch(()=>import("./src/index.js"))).packages,TQ}async function O0(Q){try{let X=await K0(),$=X[Q];if($)return{dependencies:$.dependencies||[],companions:$.companions||[]};let Z=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),W=X[Z];if(W)return{dependencies:W.dependencies||[],companions:W.companions||[]};let U=Object.values(X).find((J)=>J.domain===Q);if(U)return{dependencies:U.dependencies||[],companions:U.companions||[]};return null}catch(X){return console.warn(`Failed to load package data for ${Q}: ${X}`),null}}async function RQ(Q,X={},$=new Set,Z=0){let{maxDepth:W=10,verbose:H=!1,targetOs:U,includeOsSpecific:J=!0}=X;if(Z>W){if(H)console.warn(` Warning: max dependency depth (${W}) exceeded for ${Q}`);return[]}if($.has(Q))return[];if($.add(Q),H)console.log(`${" ".repeat(Z)}Resolving dependencies for: ${Q}`);let Y=[];try{let G=function(q){let _=q.match(/^(linux|darwin|windows):(.+)$/),B=!!_,w=_?_[2]:q,R=_?_[1]:void 0;if(B&&(!J||U&&R!==U))return null;let C=w,T="latest",j="*",I=w.match(/^(@?[^@^~>=<]+(?:\/[^@^~>=<]+)?)([@^~>=<].+)?$/);if(I){if(C=I[1],I[2]){let E=I[2];if(E.startsWith("@"))T=E.substring(1),j=E;else j=E,T=E.replace(/^\D*/,"")}}return{dep:{name:C,version:T,constraint:j,isOsSpecific:B,os:R},pkgName:C}},z=await O0(Q),K=[...z?.dependencies||[],...z?.companions||[]].map(G).filter((q)=>q!==null);for(let{dep:q}of K)Y.push(q);let L=await Promise.allSettled(K.map(({pkgName:q})=>RQ(q,X,$,Z+1)));for(let q of L)if(q.status==="fulfilled")Y.push(...q.value);else if(H)console.warn(` Warning: transitive dependency resolution failed: ${q.reason}`)}catch(z){if(H)console.warn(`${" ".repeat(Z)}Warning: Could not resolve dependencies for ${Q}: ${z}`)}return Y}async function gQ(Q,X={}){let $=new Map,Z=[],W={linux:[],darwin:[],windows:[]};for(let J of Q){if(!$.has(J.name))$.set(J.name,[]);if($.get(J.name).push(J),J.isOsSpecific&&J.os)W[J.os].push(J)}let H=[],U=[];for(let[J,Y]of $)if(Y.length===1){let z=await FX(J,Y[0].constraint),G={...Y[0],version:z};H.push(G),U.push(J)}else{let z=Y.map((q)=>q.version),G=[...new Set(z)];if(G.length>1)Z.push({package:J,versions:G});let O=await Promise.all(Y.map(async(q)=>({...q,resolvedVersion:await FX(J,q.constraint)}))),K=O[0];for(let q of O.slice(1))if(K.constraint==="*"&&q.constraint!=="*")K=q;else if(K.constraint!=="*"&&q.constraint==="*");else if(JQ(q.resolvedVersion,K.resolvedVersion)>0)K=q;let L={...K,version:K.resolvedVersion};delete L.resolvedVersion,H.push(L),U.push(J)}return{allDependencies:H,uniquePackages:U,conflicts:Z,osSpecificDeps:W}}async function MX(Q,X={}){let{verbose:$=!1}=X;if($)console.log(`Parsing dependency file: ${Q}`);let Z=IQ(Q);if($)console.log(`Found ${Z.length} direct dependencies`);let W=[...Z],H=await Promise.all(Z.map(async(Y)=>{if($)console.log(`Resolving transitive dependencies for: ${Y.name}`);return RQ(Y.name,X)}));for(let Y of H)W.push(...Y);if($)console.log(`Total dependencies found (before deduplication): ${W.length}`);let U=await gQ(W,X);if($){if(console.log(`Unique packages after deduplication: ${U.uniquePackages.length}`),U.conflicts.length>0)console.log(`Version conflicts found: ${U.conflicts.length}`)}let J=CQ.extname(Q);if(J===".yaml"||J===".yml"){let Y=U0(Q);if(Y.services)U.services=Y.services}return U}function s4(Q){let X=["deps.yaml","deps.yml","dependencies.yaml","dependencies.yml","pkgx.yaml","pkgx.yml",".deps.yaml",".deps.yml"],$=[];for(let Z of X){let W=CQ.join(Q,Z);if(HQ.existsSync(W))$.push(W)}return $}import*as S from"node:fs";import*as u from"node:path";import*as t from"node:os";import*as dQ from"node:https";import*as cQ from"node:http";import{execFileSync as EQ}from"node:child_process";var AX=(process.env.PANTRY_REGISTRY_URL||"https://registry.pantry.dev").replace(/\/$/,"");function MQ(){let Q=process.env.XDG_DATA_HOME,X=Q&&Q.length>0?Q:u.join(t.homedir(),".local","share");return u.join(X,"pantry","global","bin")}function lQ(){let Q=t.platform(),X=t.arch();return{os:Q==="darwin"?"darwin":Q==="win32"?"windows":"linux",arch:X==="arm64"?"aarch64":"x86_64"}}var BQ={"github.com/mail-os/mail":{getDownloadUrl(Q,X){if(X.os!=="linux"||X.arch!=="x86_64")throw Error("github.com/mail-os/mail currently publishes linux-x86_64 release binaries");let $={darwin:"macos",linux:"linux",windows:"windows"},Z=`mail-${X.arch}-${$[X.os]}`;return`https://github.com/mail-os/mail/releases/download/v${Q}/${Z}.tar.gz`},getArchiveFormat(){return"tar.gz"},getBinaries(Q){let X={darwin:"macos",linux:"linux",windows:"windows"};return[`mail-${Q.arch}-${X[Q.os]}`,"mail"]}},"ziglang.org":{getDownloadUrl(Q,X){let $=`${X.os}-${X.arch==="aarch64"?"arm64":"x86-64"}`,Z=`ziglang.org-${Q}.${X.os==="windows"?"zip":"tar.gz"}`;return`${AX}/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 SX(Q,X,$,Z){S.mkdirSync($,{recursive:!0});let W=null;for(let H of X){let U=u.join(Q,H);if(!S.existsSync(U))U=u.join(Q,"bin",H);if(!S.existsSync(U)){if(W){let Y=u.join($,H);try{S.unlinkSync(Y)}catch{}if(Z.os==="windows")S.copyFileSync(W,Y);else S.symlinkSync(W,Y)}continue}if(!W)W=U;let J=u.join($,H);try{S.unlinkSync(J)}catch{}if(Z.os==="windows")S.copyFileSync(U,J);else S.symlinkSync(U,J)}}async function xX(Q,X,$={}){let Z=$.platform||lQ(),W=BQ[Q];if(!W)throw Error(`Unknown package: ${Q}. Supported: ${Object.keys(BQ).join(", ")}`);if(/^[\^~>=<]/.test(X))X=await j0(Q,X);else if(X==="latest"||X==="*"||!X)X=await pQ(Q);else if(Q==="ziglang.org"&&X.endsWith("-dev")){let _=await _0(X);if(_)X=_}if(!X)throw Error(`Could not resolve a concrete version for ${Q} (got empty string from resolver)`);let H=$.installDir||u.join(process.cwd(),"pantry"),U=u.join(H,".bin"),J=u.join(H,Q.replace(/\./g,"-"),X),Y=W.getBinaries(Z);if(Y.length===0)throw Error(`No binaries defined for ${Q} on ${Z.os}-${Z.arch}`);let z=u.join(J,Y[0]),G=u.join(J,"bin",Y[0]);if(S.existsSync(z)||S.existsSync(G)){if(!$.quiet)console.log(` ✓ ${Q}@${X} (cached)`);if($.createBinLinks!==!1)SX(J,Y,U,Z);let _=VX(J,Y,Z,$);return{name:Q,version:X,installPath:J,binaries:Y,globalLinks:_}}let O=W.getDownloadUrl(X,Z),K=W.getArchiveFormat(Z);if(!$.quiet)console.log(` → ${Q}@${X} from ${new URL(O).hostname}`);let L=S.mkdtempSync(u.join(t.tmpdir(),"pantry-")),q=u.join(L,`archive.${K}`);try{await bX(O,q,10,$.quiet??!1);let _=u.join(L,"extracted");S.mkdirSync(_,{recursive:!0}),await T0(q,_,K);let B=_,w=W.getArchivePrefix?.(X,Z);if(w){let C=u.join(_,w);if(S.existsSync(C))B=C;else{let j=S.readdirSync(_).find((I)=>S.statSync(u.join(_,I)).isDirectory());if(j)B=u.join(_,j)}}if(S.mkdirSync(J,{recursive:!0}),C0(B,J),Z.os!=="windows")for(let C of Y){let T=u.join(J,C);if(S.existsSync(T))S.chmodSync(T,493);let j=u.join(J,"bin",C);if(S.existsSync(j))S.chmodSync(j,493)}if($.createBinLinks!==!1)SX(J,Y,U,Z);if(!$.quiet)console.log(` ✓ ${Q}@${X}`);let R=VX(J,Y,Z,$);return{name:Q,version:X,installPath:J,binaries:Y,globalLinks:R}}finally{try{S.rmSync(L,{recursive:!0,force:!0})}catch{}}}function VX(Q,X,$,Z){if(!Z.globalBin)return[];let W=typeof Z.globalBin==="string"?Z.globalBin:MQ();S.mkdirSync(W,{recursive:!0});let H=[];for(let U of X){let J=u.join(Q,U);if(!S.existsSync(J))J=u.join(Q,"bin",U);if(!S.existsSync(J))continue;let Y=u.join(W,U);try{S.unlinkSync(Y)}catch{}if($.os==="windows")S.copyFileSync(J,Y);else S.symlinkSync(J,Y);H.push(Y)}if(!Z.quiet&&H.length>0)console.log(` → linked ${H.length} binary(ies) into ${W}`);return H}async function q0(Q,X={}){return Promise.all(Q.map(($)=>xX($.domain,$.version,X)))}async function pQ(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 FQ(Q);if(Z)return Z;throw Error("Failed to resolve latest bun.sh version (GitHub API unreachable, no bundled metadata)")}if(Q==="ziglang.org"){let X=await NX(Q);if(X.length>0)return X.sort(mQ)[0];let $=await FQ(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 H=await FQ(Q);if(H)return H;throw Error("Failed to resolve latest nodejs.org version")}if(Q==="github.com/mail-os/mail"){let $=(await 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 H=await FQ(Q);if(H)return H;throw Error("Failed to resolve latest github.com/mail-os/mail version")}throw Error(`Cannot resolve latest version for ${Q}`)}async function FQ(Q){try{let X=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:$}=await import("./chunk-97j03jad.js").catch(()=>import("./src/index.js")),W=$[X]?.versions||[];return W.find((H)=>!H.includes("-"))||W[0]||""}catch{return""}}async function _0(Q){return(await NX("ziglang.org")).filter(($)=>$.startsWith(`${Q}.`)).sort(mQ)[0]||null}async function NX(Q){let X=await s(`${AX}/binaries/${encodeURI(Q)}/metadata.json`).catch(()=>null);return Object.keys(X?.versions||{})}function B0(Q,X,$,Z){if(Q.includes("-")&&!Z.includes("-"))return!1;let W=Q.split(".").map(Number);if(W.some(Number.isNaN))return!1;let[H,U,J]=[W[0]||0,W[1]||0,W[2]||0],[Y,z,G]=[$[0]||0,$[1]||0,$[2]||0];if(X==="^"){if(Y===0)return H===0&&U===z&&J>=G;return H===Y&&(U>z||U===z&&J>=G)}if(X==="~")return H===Y&&U===z&&J>=G;if(X===">=")return H>Y||H===Y&&U>z||H===Y&&U===z&&J>=G;return!1}async function w0(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);return[]}function L0(Q,X){let $=Q.split(".").map(Number),Z=X.split(".").map(Number);for(let W=0;W<Math.max($.length,Z.length);W++){let H=(Z[W]||0)-($[W]||0);if(H)return H}return 0}async function j0(Q,X){let $=X.match(/^([~^>=<]+)(\d+(?:\.\d+){0,10})/);if(!$)return pQ(Q);let Z=$[1],W=$[2],H=W.split(".").map(Number),U;try{let z=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:G}=await import("./chunk-97j03jad.js").catch(()=>import("./src/index.js"));U=G[z]?.versions||[]}catch{U=[]}let J=await w0(Q),Y=[...new Set([...J,...U])].sort(L0);for(let z of Y)if(B0(z,Z,H,W))return z;throw Error(`No version of ${Q} satisfies "${X}" (checked ${Y.length} version${Y.length===1?"":"s"}${Y.length>0?`, newest ${Y[0]}`:""}).`)}function bX(Q,X,$=10,Z=!1){return new Promise((W,H)=>{let U=S.createWriteStream(X),J=Q.startsWith("https")?dQ.get:cQ.get,Y=!Z&&process.stderr.isTTY,z=Date.now(),G=0,O=0,K=0,L=60000,q=J(Q,(w)=>{if(w.statusCode&&w.statusCode>=300&&w.statusCode<400&&w.headers.location){U.close();try{S.unlinkSync(X)}catch{}if($<=0)return H(Error(`Too many redirects for ${Q}`));return bX(w.headers.location,X,$-1,Z).then(W,H)}if(!w.statusCode||w.statusCode<200||w.statusCode>=300){U.close();try{S.unlinkSync(X)}catch{}return H(Error(`HTTP ${w.statusCode||"unknown"} downloading ${Q}`))}let R=w.headers["content-length"];if(R)O=Number.parseInt(R,10)||0;w.on("data",(C)=>{if(z=Date.now(),G+=C.length,Y&&z-K>200){K=z;let T=(G/1048576).toFixed(1);if(O>0){let j=(O/1048576).toFixed(1),I=Math.floor(G/O*100);process.stderr.write(`\r ${T}/${j} MB (${I}%)`)}else process.stderr.write(`\r ${T} MB`)}}),w.pipe(U),w.on("error",(C)=>{U.close();try{S.unlinkSync(X)}catch{}H(C)}),U.on("finish",()=>{if(U.close(),Y&&K>0)process.stderr.write("\r\x1B[K");W()}),U.on("error",(C)=>{try{S.unlinkSync(X)}catch{}H(C)})});q.on("error",(w)=>{U.close();try{S.unlinkSync(X)}catch{}H(w)});let _=setInterval(()=>{if(Date.now()-z>L)clearInterval(_),q.destroy(Error(`Download stalled (no data for ${L/1000}s): ${Q}`))},5000),B=()=>clearInterval(_);U.once("finish",B),U.once("error",B),q.once("error",B)})}async function T0(Q,X,$){if($==="zip")if(process.platform==="win32")EQ("powershell",["-NoProfile","-Command","Expand-Archive","-Path",Q,"-DestinationPath",X,"-Force"],{stdio:"pipe"});else EQ("unzip",["-o","-q",Q,"-d",X],{stdio:"pipe"});else if($==="tar.xz")EQ("tar",["xJf",Q,"-C",X],{stdio:"pipe"});else if($==="tar.gz")EQ("tar",["xzf",Q,"-C",X],{stdio:"pipe"});else throw Error(`Unsupported archive format: ${$}`)}function C0(Q,X){S.cpSync(Q,X,{recursive:!0})}function s(Q,X=5){return new Promise(($,Z)=>{let W=Q.startsWith("https")?dQ.get:cQ.get,H={"User-Agent":"pantry-installer",Accept:"application/json"};if(Q.includes("api.github.com")){let J=process.env.GITHUB_TOKEN||process.env.GH_TOKEN;if(J)H.Authorization=`Bearer ${J}`}let U=W(Q,{headers:H,timeout:30000},(J)=>{if(J.statusCode&&J.statusCode>=300&&J.statusCode<400&&J.headers.location){if(X<=0)return Z(Error(`Too many redirects for ${Q}`));return s(J.headers.location,X-1).then($,Z)}if(!J.statusCode||J.statusCode<200||J.statusCode>=300)return Z(Error(`HTTP ${J.statusCode||"unknown"} fetching ${Q}`));let Y="";J.on("data",(z)=>Y+=z),J.on("end",()=>{try{$(JSON.parse(Y))}catch(z){Z(z)}})});U.on("error",Z),U.on("timeout",()=>{U.destroy(),Z(Error(`Request timed out: ${Q}`))})})}function I0(Q){return Q in BQ}function Q5(){return Object.keys(BQ)}function X5(Q){let X=BQ[Q];if(!X)return;let $=lQ();return X.getBinaries($)[0]}import*as g from"node:fs";import*as AQ from"node:os";import*as UQ from"node:path";var SQ="# >>> pantry shell-init >>>",VQ="# <<< pantry shell-init <<<";function xQ(){let Q=process.env.SHELL??"";if(Q.endsWith("/zsh")||Q==="zsh")return"zsh";if(Q.endsWith("/bash")||Q==="bash")return"bash";if(Q.endsWith("/fish")||Q==="fish")return"fish";return"unknown"}function nQ(Q){let X=AQ.homedir();switch(Q){case"zsh":{let $=process.env.ZDOTDIR;return UQ.join($&&$.length>0?$:X,".zshrc")}case"bash":{if(AQ.platform()==="darwin"){let $=UQ.join(X,".bash_profile");if(g.existsSync($))return $}return UQ.join(X,".bashrc")}case"fish":return UQ.join(X,".config","fish","config.fish");case"unknown":return null}}function yX(Q={}){let X=Q.globalBin??MQ();if((Q.shell??xQ())==="fish")return[SQ,`if test -d "${X}"`,` set -gx PATH "${X}" $PATH`,"end",VQ,""].join(`
|
|
7
|
+
`),Z=!1,W=!1,H=[],U=!1;for(let J of $){let Y=J.trim();if(!Y||Y.startsWith("#"))continue;if(J.match(/^services:\s*$/)){Z=!0,W=!1;continue}if(Z&&!J.startsWith(" ")&&!J.startsWith("\t")&&!Y.startsWith("-")){if(Y!=="services:"){Z=!1,W=!1;continue}}if(Z){if(Y.startsWith("enabled:")){U=Y.includes("true");continue}if(Y.match(/^autoStart:\s*$/)){W=!0;continue}if(W&&Y.startsWith("- ")){let z=Y.slice(2).trim();if(z)H.push(z)}}}if(H.length>0)X.services={enabled:U,autoStart:H};return X}async function r4(Q,X="src/packages"){try{let $;if(Q.includes("/"))$=CQ.join(X,`${Q}.ts`);else{let G=`${Q.replace(/\./g,"")}.ts`;$=CQ.join(X,G)}if(!HQ.existsSync($))return[];let Z=HQ.readFileSync($,"utf-8"),W=Z.indexOf("versions:");if(W===-1)return[];let H=Z.substring(W),U=H.indexOf("["),J=H.indexOf("] as const");if(U===-1||J===-1)return[];let z=H.substring(U+1,J).match(/'([^']+)'/g);if(!z)return[];return z.map((G)=>G.replace(/'/g,""))}catch{return[]}}async function z0(Q){try{let{packages:X}=await import("./chunk-g037hnc2.js").catch(()=>import("./src/index.js")),$=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),Z=X[$];if(!Z){let W=Object.values(X);Z=W.find((H)=>H.domain===Q)||W.find((H)=>Array.isArray(H.aliases)&&H.aliases.includes(Q))}if(Z&&Z.versions&&Array.isArray(Z.versions))return Z.versions;return[]}catch{return[]}}async function FX(Q,X){let $=await z0(Q);if($.length===0)return X.split("#")[0].trim().replace(/^[@^~>=<]+/,"")||"latest";let Z=X.split("#")[0].trim();if(Z==="*"||Z==="latest")return $[0];if(Z.startsWith("@")){let H=Z.slice(1);return $.includes(H)?H:$[0]}return G0($,Z)||$[0]}function G0(Q,X){if(X.startsWith("^")){let $=X.slice(1),[Z]=YQ($);return Q.filter((H)=>{let[U]=YQ(H);return U===Z&&JQ(H,$)>=0})[0]||null}if(X.startsWith("~")){let $=X.slice(1),[Z,W]=YQ($);return Q.filter((U)=>{let[J,Y]=YQ(U);return J===Z&&Y===W&&JQ(U,$)>=0})[0]||null}if(X.startsWith(">=")){let $=X.slice(2).trim();return Q.filter((W)=>JQ(W,$)>=0)[0]||null}if(X.startsWith(">")){let $=X.slice(1).trim();return Q.filter((W)=>JQ(W,$)>0)[0]||null}if(X.startsWith("<=")){let $=X.slice(2).trim();return Q.filter((W)=>JQ(W,$)<=0)[0]||null}if(X.startsWith("<")){let $=X.slice(1).trim();return Q.filter((W)=>JQ(W,$)<0)[0]||null}if(X.startsWith("=")){let $=X.slice(1).trim();return Q.includes($)?$:null}return Q.includes(X)?X:null}function YQ(Q){let X=Q.split(".").map(($)=>{let Z=$.match(/^\d+/);return Z?Number.parseInt(Z[0],10):0});return[X[0]||0,X[1]||0,X[2]||0]}function JQ(Q,X){if(Q==="latest"&&X!=="latest")return 1;if(X==="latest"&&Q!=="latest")return-1;if(Q==="latest"&&X==="latest")return 0;let $=Q.split("#")[0].trim(),Z=X.split("#")[0].trim(),[W,H,U]=YQ($),[J,Y,z]=YQ(Z);if(W>J)return 1;if(W<J)return-1;if(H>Y)return 1;if(H<Y)return-1;if(U>z)return 1;if(U<z)return-1;return 0}var TQ=null;async function K0(){if(TQ)return TQ;return TQ=(await import("./chunk-g037hnc2.js").catch(()=>import("./src/index.js"))).packages,TQ}async function O0(Q){try{let X=await K0(),$=X[Q];if($)return{dependencies:$.dependencies||[],companions:$.companions||[]};let Z=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),W=X[Z];if(W)return{dependencies:W.dependencies||[],companions:W.companions||[]};let U=Object.values(X).find((J)=>J.domain===Q);if(U)return{dependencies:U.dependencies||[],companions:U.companions||[]};return null}catch(X){return console.warn(`Failed to load package data for ${Q}: ${X}`),null}}async function RQ(Q,X={},$=new Set,Z=0){let{maxDepth:W=10,verbose:H=!1,targetOs:U,includeOsSpecific:J=!0}=X;if(Z>W){if(H)console.warn(` Warning: max dependency depth (${W}) exceeded for ${Q}`);return[]}if($.has(Q))return[];if($.add(Q),H)console.log(`${" ".repeat(Z)}Resolving dependencies for: ${Q}`);let Y=[];try{let G=function(q){let _=q.match(/^(linux|darwin|windows):(.+)$/),B=!!_,w=_?_[2]:q,R=_?_[1]:void 0;if(B&&(!J||U&&R!==U))return null;let C=w,T="latest",j="*",I=w.match(/^(@?[^@^~>=<]+(?:\/[^@^~>=<]+)?)([@^~>=<].+)?$/);if(I){if(C=I[1],I[2]){let E=I[2];if(E.startsWith("@"))T=E.substring(1),j=E;else j=E,T=E.replace(/^\D*/,"")}}return{dep:{name:C,version:T,constraint:j,isOsSpecific:B,os:R},pkgName:C}},z=await O0(Q),K=[...z?.dependencies||[],...z?.companions||[]].map(G).filter((q)=>q!==null);for(let{dep:q}of K)Y.push(q);let L=await Promise.allSettled(K.map(({pkgName:q})=>RQ(q,X,$,Z+1)));for(let q of L)if(q.status==="fulfilled")Y.push(...q.value);else if(H)console.warn(` Warning: transitive dependency resolution failed: ${q.reason}`)}catch(z){if(H)console.warn(`${" ".repeat(Z)}Warning: Could not resolve dependencies for ${Q}: ${z}`)}return Y}async function gQ(Q,X={}){let $=new Map,Z=[],W={linux:[],darwin:[],windows:[]};for(let J of Q){if(!$.has(J.name))$.set(J.name,[]);if($.get(J.name).push(J),J.isOsSpecific&&J.os)W[J.os].push(J)}let H=[],U=[];for(let[J,Y]of $)if(Y.length===1){let z=await FX(J,Y[0].constraint),G={...Y[0],version:z};H.push(G),U.push(J)}else{let z=Y.map((q)=>q.version),G=[...new Set(z)];if(G.length>1)Z.push({package:J,versions:G});let O=await Promise.all(Y.map(async(q)=>({...q,resolvedVersion:await FX(J,q.constraint)}))),K=O[0];for(let q of O.slice(1))if(K.constraint==="*"&&q.constraint!=="*")K=q;else if(K.constraint!=="*"&&q.constraint==="*");else if(JQ(q.resolvedVersion,K.resolvedVersion)>0)K=q;let L={...K,version:K.resolvedVersion};delete L.resolvedVersion,H.push(L),U.push(J)}return{allDependencies:H,uniquePackages:U,conflicts:Z,osSpecificDeps:W}}async function MX(Q,X={}){let{verbose:$=!1}=X;if($)console.log(`Parsing dependency file: ${Q}`);let Z=IQ(Q);if($)console.log(`Found ${Z.length} direct dependencies`);let W=[...Z],H=await Promise.all(Z.map(async(Y)=>{if($)console.log(`Resolving transitive dependencies for: ${Y.name}`);return RQ(Y.name,X)}));for(let Y of H)W.push(...Y);if($)console.log(`Total dependencies found (before deduplication): ${W.length}`);let U=await gQ(W,X);if($){if(console.log(`Unique packages after deduplication: ${U.uniquePackages.length}`),U.conflicts.length>0)console.log(`Version conflicts found: ${U.conflicts.length}`)}let J=CQ.extname(Q);if(J===".yaml"||J===".yml"){let Y=U0(Q);if(Y.services)U.services=Y.services}return U}function s4(Q){let X=["deps.yaml","deps.yml","dependencies.yaml","dependencies.yml","pkgx.yaml","pkgx.yml",".deps.yaml",".deps.yml"],$=[];for(let Z of X){let W=CQ.join(Q,Z);if(HQ.existsSync(W))$.push(W)}return $}import*as S from"node:fs";import*as u from"node:path";import*as t from"node:os";import*as dQ from"node:https";import*as cQ from"node:http";import{execFileSync as EQ}from"node:child_process";var AX=(process.env.PANTRY_REGISTRY_URL||"https://registry.pantry.dev").replace(/\/$/,"");function MQ(){let Q=process.env.XDG_DATA_HOME,X=Q&&Q.length>0?Q:u.join(t.homedir(),".local","share");return u.join(X,"pantry","global","bin")}function lQ(){let Q=t.platform(),X=t.arch();return{os:Q==="darwin"?"darwin":Q==="win32"?"windows":"linux",arch:X==="arm64"?"aarch64":"x86_64"}}var BQ={"github.com/mail-os/mail":{getDownloadUrl(Q,X){if(X.os!=="linux"||X.arch!=="x86_64")throw Error("github.com/mail-os/mail currently publishes linux-x86_64 release binaries");let $={darwin:"macos",linux:"linux",windows:"windows"},Z=`mail-${X.arch}-${$[X.os]}`;return`https://github.com/mail-os/mail/releases/download/v${Q}/${Z}.tar.gz`},getArchiveFormat(){return"tar.gz"},getBinaries(Q){let X={darwin:"macos",linux:"linux",windows:"windows"};return[`mail-${Q.arch}-${X[Q.os]}`,"mail"]}},"ziglang.org":{getDownloadUrl(Q,X){let $=`${X.os}-${X.arch==="aarch64"?"arm64":"x86-64"}`,Z=`ziglang.org-${Q}.${X.os==="windows"?"zip":"tar.gz"}`;return`${AX}/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 SX(Q,X,$,Z){S.mkdirSync($,{recursive:!0});let W=null;for(let H of X){let U=u.join(Q,H);if(!S.existsSync(U))U=u.join(Q,"bin",H);if(!S.existsSync(U)){if(W){let Y=u.join($,H);try{S.unlinkSync(Y)}catch{}if(Z.os==="windows")S.copyFileSync(W,Y);else S.symlinkSync(W,Y)}continue}if(!W)W=U;let J=u.join($,H);try{S.unlinkSync(J)}catch{}if(Z.os==="windows")S.copyFileSync(U,J);else S.symlinkSync(U,J)}}async function xX(Q,X,$={}){let Z=$.platform||lQ(),W=BQ[Q];if(!W)throw Error(`Unknown package: ${Q}. Supported: ${Object.keys(BQ).join(", ")}`);if(/^[\^~>=<]/.test(X))X=await j0(Q,X);else if(X==="latest"||X==="*"||!X)X=await pQ(Q);else if(Q==="ziglang.org"&&X.endsWith("-dev")){let _=await _0(X);if(_)X=_}if(!X)throw Error(`Could not resolve a concrete version for ${Q} (got empty string from resolver)`);let H=$.installDir||u.join(process.cwd(),"pantry"),U=u.join(H,".bin"),J=u.join(H,Q.replace(/\./g,"-"),X),Y=W.getBinaries(Z);if(Y.length===0)throw Error(`No binaries defined for ${Q} on ${Z.os}-${Z.arch}`);let z=u.join(J,Y[0]),G=u.join(J,"bin",Y[0]);if(S.existsSync(z)||S.existsSync(G)){if(!$.quiet)console.log(` ✓ ${Q}@${X} (cached)`);if($.createBinLinks!==!1)SX(J,Y,U,Z);let _=VX(J,Y,Z,$);return{name:Q,version:X,installPath:J,binaries:Y,globalLinks:_}}let O=W.getDownloadUrl(X,Z),K=W.getArchiveFormat(Z);if(!$.quiet)console.log(` → ${Q}@${X} from ${new URL(O).hostname}`);let L=S.mkdtempSync(u.join(t.tmpdir(),"pantry-")),q=u.join(L,`archive.${K}`);try{await bX(O,q,10,$.quiet??!1);let _=u.join(L,"extracted");S.mkdirSync(_,{recursive:!0}),await T0(q,_,K);let B=_,w=W.getArchivePrefix?.(X,Z);if(w){let C=u.join(_,w);if(S.existsSync(C))B=C;else{let j=S.readdirSync(_).find((I)=>S.statSync(u.join(_,I)).isDirectory());if(j)B=u.join(_,j)}}if(S.mkdirSync(J,{recursive:!0}),C0(B,J),Z.os!=="windows")for(let C of Y){let T=u.join(J,C);if(S.existsSync(T))S.chmodSync(T,493);let j=u.join(J,"bin",C);if(S.existsSync(j))S.chmodSync(j,493)}if($.createBinLinks!==!1)SX(J,Y,U,Z);if(!$.quiet)console.log(` ✓ ${Q}@${X}`);let R=VX(J,Y,Z,$);return{name:Q,version:X,installPath:J,binaries:Y,globalLinks:R}}finally{try{S.rmSync(L,{recursive:!0,force:!0})}catch{}}}function VX(Q,X,$,Z){if(!Z.globalBin)return[];let W=typeof Z.globalBin==="string"?Z.globalBin:MQ();S.mkdirSync(W,{recursive:!0});let H=[];for(let U of X){let J=u.join(Q,U);if(!S.existsSync(J))J=u.join(Q,"bin",U);if(!S.existsSync(J))continue;let Y=u.join(W,U);try{S.unlinkSync(Y)}catch{}if($.os==="windows")S.copyFileSync(J,Y);else S.symlinkSync(J,Y);H.push(Y)}if(!Z.quiet&&H.length>0)console.log(` → linked ${H.length} binary(ies) into ${W}`);return H}async function q0(Q,X={}){return Promise.all(Q.map(($)=>xX($.domain,$.version,X)))}async function pQ(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 FQ(Q);if(Z)return Z;throw Error("Failed to resolve latest bun.sh version (GitHub API unreachable, no bundled metadata)")}if(Q==="ziglang.org"){let X=await NX(Q);if(X.length>0)return X.sort(mQ)[0];let $=await FQ(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 H=await FQ(Q);if(H)return H;throw Error("Failed to resolve latest nodejs.org version")}if(Q==="github.com/mail-os/mail"){let $=(await 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 H=await FQ(Q);if(H)return H;throw Error("Failed to resolve latest github.com/mail-os/mail version")}throw Error(`Cannot resolve latest version for ${Q}`)}async function FQ(Q){try{let X=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:$}=await import("./chunk-g037hnc2.js").catch(()=>import("./src/index.js")),W=$[X]?.versions||[];return W.find((H)=>!H.includes("-"))||W[0]||""}catch{return""}}async function _0(Q){return(await NX("ziglang.org")).filter(($)=>$.startsWith(`${Q}.`)).sort(mQ)[0]||null}async function NX(Q){let X=await s(`${AX}/binaries/${encodeURI(Q)}/metadata.json`).catch(()=>null);return Object.keys(X?.versions||{})}function B0(Q,X,$,Z){if(Q.includes("-")&&!Z.includes("-"))return!1;let W=Q.split(".").map(Number);if(W.some(Number.isNaN))return!1;let[H,U,J]=[W[0]||0,W[1]||0,W[2]||0],[Y,z,G]=[$[0]||0,$[1]||0,$[2]||0];if(X==="^"){if(Y===0)return H===0&&U===z&&J>=G;return H===Y&&(U>z||U===z&&J>=G)}if(X==="~")return H===Y&&U===z&&J>=G;if(X===">=")return H>Y||H===Y&&U>z||H===Y&&U===z&&J>=G;return!1}async function w0(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);return[]}function L0(Q,X){let $=Q.split(".").map(Number),Z=X.split(".").map(Number);for(let W=0;W<Math.max($.length,Z.length);W++){let H=(Z[W]||0)-($[W]||0);if(H)return H}return 0}async function j0(Q,X){let $=X.match(/^([~^>=<]+)(\d+(?:\.\d+){0,10})/);if(!$)return pQ(Q);let Z=$[1],W=$[2],H=W.split(".").map(Number),U;try{let z=Q.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:G}=await import("./chunk-g037hnc2.js").catch(()=>import("./src/index.js"));U=G[z]?.versions||[]}catch{U=[]}let J=await w0(Q),Y=[...new Set([...J,...U])].sort(L0);for(let z of Y)if(B0(z,Z,H,W))return z;throw Error(`No version of ${Q} satisfies "${X}" (checked ${Y.length} version${Y.length===1?"":"s"}${Y.length>0?`, newest ${Y[0]}`:""}).`)}function bX(Q,X,$=10,Z=!1){return new Promise((W,H)=>{let U=S.createWriteStream(X),J=Q.startsWith("https")?dQ.get:cQ.get,Y=!Z&&process.stderr.isTTY,z=Date.now(),G=0,O=0,K=0,L=60000,q=J(Q,(w)=>{if(w.statusCode&&w.statusCode>=300&&w.statusCode<400&&w.headers.location){U.close();try{S.unlinkSync(X)}catch{}if($<=0)return H(Error(`Too many redirects for ${Q}`));return bX(w.headers.location,X,$-1,Z).then(W,H)}if(!w.statusCode||w.statusCode<200||w.statusCode>=300){U.close();try{S.unlinkSync(X)}catch{}return H(Error(`HTTP ${w.statusCode||"unknown"} downloading ${Q}`))}let R=w.headers["content-length"];if(R)O=Number.parseInt(R,10)||0;w.on("data",(C)=>{if(z=Date.now(),G+=C.length,Y&&z-K>200){K=z;let T=(G/1048576).toFixed(1);if(O>0){let j=(O/1048576).toFixed(1),I=Math.floor(G/O*100);process.stderr.write(`\r ${T}/${j} MB (${I}%)`)}else process.stderr.write(`\r ${T} MB`)}}),w.pipe(U),w.on("error",(C)=>{U.close();try{S.unlinkSync(X)}catch{}H(C)}),U.on("finish",()=>{if(U.close(),Y&&K>0)process.stderr.write("\r\x1B[K");W()}),U.on("error",(C)=>{try{S.unlinkSync(X)}catch{}H(C)})});q.on("error",(w)=>{U.close();try{S.unlinkSync(X)}catch{}H(w)});let _=setInterval(()=>{if(Date.now()-z>L)clearInterval(_),q.destroy(Error(`Download stalled (no data for ${L/1000}s): ${Q}`))},5000),B=()=>clearInterval(_);U.once("finish",B),U.once("error",B),q.once("error",B)})}async function T0(Q,X,$){if($==="zip")if(process.platform==="win32")EQ("powershell",["-NoProfile","-Command","Expand-Archive","-Path",Q,"-DestinationPath",X,"-Force"],{stdio:"pipe"});else EQ("unzip",["-o","-q",Q,"-d",X],{stdio:"pipe"});else if($==="tar.xz")EQ("tar",["xJf",Q,"-C",X],{stdio:"pipe"});else if($==="tar.gz")EQ("tar",["xzf",Q,"-C",X],{stdio:"pipe"});else throw Error(`Unsupported archive format: ${$}`)}function C0(Q,X){S.cpSync(Q,X,{recursive:!0})}function s(Q,X=5){return new Promise(($,Z)=>{let W=Q.startsWith("https")?dQ.get:cQ.get,H={"User-Agent":"pantry-installer",Accept:"application/json"};if(Q.includes("api.github.com")){let J=process.env.GITHUB_TOKEN||process.env.GH_TOKEN;if(J)H.Authorization=`Bearer ${J}`}let U=W(Q,{headers:H,timeout:30000},(J)=>{if(J.statusCode&&J.statusCode>=300&&J.statusCode<400&&J.headers.location){if(X<=0)return Z(Error(`Too many redirects for ${Q}`));return s(J.headers.location,X-1).then($,Z)}if(!J.statusCode||J.statusCode<200||J.statusCode>=300)return Z(Error(`HTTP ${J.statusCode||"unknown"} fetching ${Q}`));let Y="";J.on("data",(z)=>Y+=z),J.on("end",()=>{try{$(JSON.parse(Y))}catch(z){Z(z)}})});U.on("error",Z),U.on("timeout",()=>{U.destroy(),Z(Error(`Request timed out: ${Q}`))})})}function I0(Q){return Q in BQ}function Q5(){return Object.keys(BQ)}function X5(Q){let X=BQ[Q];if(!X)return;let $=lQ();return X.getBinaries($)[0]}import*as g from"node:fs";import*as AQ from"node:os";import*as UQ from"node:path";var SQ="# >>> pantry shell-init >>>",VQ="# <<< pantry shell-init <<<";function xQ(){let Q=process.env.SHELL??"";if(Q.endsWith("/zsh")||Q==="zsh")return"zsh";if(Q.endsWith("/bash")||Q==="bash")return"bash";if(Q.endsWith("/fish")||Q==="fish")return"fish";return"unknown"}function nQ(Q){let X=AQ.homedir();switch(Q){case"zsh":{let $=process.env.ZDOTDIR;return UQ.join($&&$.length>0?$:X,".zshrc")}case"bash":{if(AQ.platform()==="darwin"){let $=UQ.join(X,".bash_profile");if(g.existsSync($))return $}return UQ.join(X,".bashrc")}case"fish":return UQ.join(X,".config","fish","config.fish");case"unknown":return null}}function yX(Q={}){let X=Q.globalBin??MQ();if((Q.shell??xQ())==="fish")return[SQ,`if test -d "${X}"`,` set -gx PATH "${X}" $PATH`,"end",VQ,""].join(`
|
|
8
8
|
`);return[SQ,`if [ -d "${X}" ] && [[ ":$PATH:" != *":${X}:"* ]]; then`,` export PATH="${X}:$PATH"`,"fi",VQ,""].join(`
|
|
9
9
|
`)}function R0(Q={}){let X=Q.shell??xQ(),$=nQ(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=yX({...Q,shell:X}),W="";if(g.existsSync($)){if(W=g.readFileSync($,"utf-8"),W.includes(SQ))return{rcFile:$,shell:X,changed:!1}}else g.mkdirSync(UQ.dirname($),{recursive:!0});let H=W.length>0&&!W.endsWith(`
|
|
10
10
|
`)?`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ic as b,jc as c,lc as d}from"./chunk-
|
|
1
|
+
import{ic as b,jc as c,lc as d}from"./chunk-g1j4y6h5.js";import{mc as a}from"./chunk-99dpbye7.js";import"./chunk-2f67zesz.js";d();export{b as pantry,c as packages,a as aliases};
|