ts-pantry 0.11.41 → 0.11.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/bin/cli.js +7 -7
  2. package/dist/{chunk-tp1d7cq1.js → chunk-1d7phqqz.js} +1 -1
  3. package/dist/{chunk-5y7jxjtz.js → chunk-1xyn336h.js} +4 -4
  4. package/dist/{chunk-afzfbcrx.js → chunk-22gn39he.js} +1 -1
  5. package/dist/chunk-7snfv0nf.js +1 -0
  6. package/dist/chunk-84px82t5.js +2 -0
  7. package/dist/{chunk-2vc7kdam.js → chunk-8e8j45pw.js} +1 -1
  8. package/dist/{chunk-4f1thac6.js → chunk-8tcp1ev3.js} +55 -55
  9. package/dist/{chunk-83x477k8.js → chunk-983zzhmx.js} +1 -1
  10. package/dist/{chunk-agh1vkqm.js → chunk-b2z6jktp.js} +2 -2
  11. package/dist/{chunk-rqny4g8r.js → chunk-bpb1md3m.js} +1 -1
  12. package/dist/chunk-cq08zej9.js +1 -0
  13. package/dist/chunk-cy7hx5dk.js +1 -0
  14. package/dist/{chunk-nfdg722p.js → chunk-db3jgr0q.js} +2 -2
  15. package/dist/chunk-ed8b6307.js +2 -0
  16. package/dist/{chunk-a20hctx6.js → chunk-jzj5056d.js} +1 -1
  17. package/dist/{chunk-gr5aqxxx.js → chunk-mqgpf3y0.js} +1 -1
  18. package/dist/{chunk-415b756j.js → chunk-n7nj6jzj.js} +1 -1
  19. package/dist/{chunk-yy5nfwkq.js → chunk-sd1kab37.js} +2 -2
  20. package/dist/{chunk-w55vdzzf.js → chunk-tgf8012c.js} +1 -1
  21. package/dist/{chunk-7qhxan0b.js → chunk-xq54tyxy.js} +1 -1
  22. package/dist/src/index.js +1 -1
  23. package/dist/src/installer.d.ts +23 -2
  24. package/dist/src/packages/aliases.d.ts +1 -0
  25. package/dist/src/packages/anthropic.com/claude-code.d.ts +2 -2
  26. package/dist/src/packages/apps/codexopenaicom.d.ts +1 -1
  27. package/dist/src/packages/apps/cursorcom.d.ts +2 -2
  28. package/dist/src/packages/apps/discordcom.d.ts +2 -2
  29. package/dist/src/packages/apps/whatsappcom.d.ts +2 -2
  30. package/dist/src/packages/apps/zeddev.d.ts +2 -2
  31. package/dist/src/packages/buddysh.d.ts +63 -0
  32. package/dist/src/packages/coder.com/code-server.d.ts +3 -3
  33. package/dist/src/packages/depotdev.d.ts +3 -3
  34. package/dist/src/packages/dgraphio.d.ts +3 -3
  35. package/dist/src/packages/flyio.d.ts +3 -3
  36. package/dist/src/packages/github.com/canonical/charmcraft.d.ts +3 -3
  37. package/dist/src/packages/github.com/router-for-me/CLIProxyAPI.d.ts +3 -3
  38. package/dist/src/packages/index.d.ts +3 -0
  39. package/dist/src/packages/maturinrs.d.ts +3 -3
  40. package/dist/src/packages/misejdxdev.d.ts +3 -3
  41. package/dist/src/packages/neo4jcom.d.ts +1 -1
  42. package/dist/src/packages/opencodeai.d.ts +3 -3
  43. package/dist/src/packages/planetscalecom.d.ts +3 -3
  44. package/dist/src/packages/pnpmio.d.ts +3 -3
  45. package/dist/src/packages/pocketbaseio.d.ts +3 -3
  46. package/dist/src/packages/prefixdev.d.ts +3 -3
  47. package/dist/src/packages/projenio.d.ts +3 -3
  48. package/dist/src/packages/railwayapp.d.ts +3 -3
  49. package/dist/src/packages/rubocoporg.d.ts +3 -3
  50. package/dist/src/packages/stripecom.d.ts +3 -3
  51. package/dist/src/packages/watchexecgithubio.d.ts +3 -3
  52. package/dist/src/packages/ziglangorg.d.ts +3 -3
  53. package/dist/src/testing/index.js +1 -1
  54. package/package.json +1 -1
  55. package/dist/chunk-7tw8z583.js +0 -1
  56. package/dist/chunk-9qr1ecbm.js +0 -1
  57. package/dist/chunk-btrd677x.js +0 -1
  58. package/dist/chunk-hxd34yh9.js +0 -2
  59. package/dist/chunk-k4rws7zb.js +0 -2
package/dist/bin/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{E as Ie,L as Oe,M as ie,O as re,Qa as Me,Ra as Re,S as oe,Ta as Le,Wa as Ve,Ya as Fe,bb as ze,cb as We,db as Ue,ga as Ee,ha as Te,ia as Ae,ja as _e,ka as Pe,oa as ae,pa as Be,qa as Ne}from"../chunk-4f1thac6.js";import"../chunk-nfdg722p.js";import"../chunk-afzfbcrx.js";import"../chunk-w55vdzzf.js";import{Ib as U,Jb as je,Lb as se,Mb as G,Rb as De,Vb as ne}from"../chunk-5y7jxjtz.js";import"../chunk-415b756j.js";import"../chunk-agh1vkqm.js";import{mc as W,nc as ee,oc as te}from"../chunk-rqny4g8r.js";import"../chunk-yy5nfwkq.js";import"../chunk-k4rws7zb.js";import{Kc as Ce,Lc as zt}from"../chunk-hxd34yh9.js";import{Pc as N}from"../chunk-a20hctx6.js";import d from"node:fs";import y from"node:path";import u from"node:process";import{existsSync as He}from"node:fs";import q from"node:fs/promises";import ue from"node:os";import H from"node:path";import B from"node:process";import{EventEmitter as Ke}from"node:events";import j from"node:process";import he from"node:process";import Y from"node:process";import F from"node:process";import L from"node:process";import me from"node:tty";import Nt,{stdin as ps,stdout as fs}from"node:process";class ge{configPath;config=null;events=[];retryCount=0;maxRetries=3;retryDelayMs=1000;constructor(){let e=ue.homedir(),t=H.join(e,".config","clapp");this.configPath=H.join(t,"telemetry.json")}async isEnabled(){if(B.env.DO_NOT_TRACK==="1"||B.env.DO_NOT_TRACK==="true")return!1;if(B.env.NO_TELEMETRY==="1"||B.env.NO_TELEMETRY==="true")return!1;return(await this.loadConfig()).enabled}async enable(){let e=await this.loadConfig();if(e.enabled=!0,!e.userId)e.userId=this.generateUserId();await this.saveConfig(e)}async disable(){let e=await this.loadConfig();e.enabled=!1,await this.saveConfig(e)}async track(e,t){if(!await this.isEnabled())return;let n={event:e,...t,timestamp:Date.now(),platform:ue.platform(),nodeVersion:B.version};if(this.events.push(n),this.events.length>=10)await this.send()}async trackCommand(e,t){await this.track("command",{command:e,duration:t})}async trackError(e,t){await this.track("error",{error:e,command:t})}async send(){if(!await this.isEnabled()||this.events.length===0)return!0;try{this.events=[],this.retryCount=0;let t=await this.loadConfig();return t.lastSent=Date.now(),await this.saveConfig(t),!0}catch{if(this.retryCount<this.maxRetries){this.retryCount++;let t=this.retryDelayMs*2**(this.retryCount-1);return await this.sleep(t),this.send()}return this.events=[],this.retryCount=0,!1}}async flush(){if(this.events.length===0)return!0;return this.send()}sleep(e){return new Promise((t)=>setTimeout(t,e))}async status(){let e=await this.loadConfig();return{enabled:e.enabled,doNotTrack:B.env.DO_NOT_TRACK==="1"||B.env.DO_NOT_TRACK==="true",eventsQueued:this.events.length,lastSent:e.lastSent}}async loadConfig(){if(this.config)return this.config;try{if(He(this.configPath)){let e=await q.readFile(this.configPath,"utf-8");return this.config=JSON.parse(e),this.config}}catch{}return this.config={enabled:!1},this.config}async saveConfig(e){this.config=e;try{let t=H.dirname(this.configPath);await q.mkdir(t,{recursive:!0}),await q.writeFile(this.configPath,JSON.stringify(e,null,2),"utf-8")}catch{}}generateUserId(){let e=Math.random().toString(36).substring(2,15),t=Date.now().toString(36);return`${e}-${t}`}}var es=new ge;function Je(e,t={}){let s={_:[]},n=t.alias||{},i=new Set(t.boolean||[]),r={};for(let l of Object.keys(n))for(let o of n[l])r[o]=l;for(let l of i)if(n[l])for(let o of n[l])i.add(o);function a(l,o){let c=r[l]||l;if(s[c]=o,n[c])for(let p of n[c])s[p]=o;if(r[l]&&n[r[l]])for(let p of n[r[l]])s[p]=o;s[l]=o}for(let l=0;l<e.length;l++){let o=e[l];if(o==="--"){s._.push(...e.slice(l+1));break}if(o.startsWith("--")){let c=o.indexOf("=");if(c!==-1){let p=o.slice(2,c),g=o.slice(c+1);a(p,g)}else{let p=o.slice(2);if(p.startsWith("no-")){let h=p.slice(3);a(h,!1);continue}let g=r[p]||p;if(i.has(g)||i.has(p))a(p,!0);else{let h=e[l+1];if(h!==void 0&&!h.startsWith("-"))a(p,h),l++;else a(p,!0)}}}else if(o.startsWith("-")&&o.length>1){let c=o.slice(1);for(let p=0;p<c.length;p++){let g=c[p],h=r[g]||g;if(p===c.length-1&&!i.has(h)&&!i.has(g)){let f=e[l+1];if(f!==void 0&&!f.startsWith("-"))a(g,f),l++;else a(g,!0)}else a(g,!0)}}else s._.push(o)}return s}function J(e){return e.replace(/[<[].+/,"").trim()}function Ye(e){let t=/<([^>]+)>/g,s=/\[([^\]]+)\]/g,n=[],i=(l)=>{let o=!1,c=l[1];if(c.startsWith("..."))c=c.slice(3),o=!0;return{required:l[0].startsWith("<"),value:c,variadic:o}},r;while(r=t.exec(e))n.push(i(r));let a;while(a=s.exec(e))n.push(i(a));return n}function Ze(e){let t={alias:{},boolean:[]};for(let[s,n]of e.entries()){if(n.names.length>1)t.alias[n.names[0]]=n.names.slice(1);if(n.isBoolean)if(n.negated){if(!e.some((r,a)=>a!==s&&r.names.some((l)=>n.names.includes(l))&&typeof r.required==="boolean"))t.boolean.push(n.names[0])}else t.boolean.push(n.names[0])}return t}function de(e){return e.reduce((t,s)=>t.length>=s.length?t:s,"")}function K(e,t){return e.length>=t?e:`${e}${" ".repeat(t-e.length)}`}function Xe(e){return e.replace(/([a-z])-([a-z])/g,(t,s,n)=>s+n.toUpperCase())}function Qe(e,t,s){let n=0,i=t.length,r=e,a;for(;n<i;++n)a=r[t[n]],r=r[t[n]]=n===i-1?s:a!=null?a:!!~t[n+1].indexOf(".")||!(+t[n+1]>-1)?{}:[]}function et(e,t){for(let s of Object.keys(t)){let n=t[s];if(n.shouldTransform){if(e[s]=Array.prototype.concat.call([],e[s]),typeof n.transformFunction==="function")e[s]=e[s].map(n.transformFunction)}}}function tt(e){let t=/([^\\/]+)$/.exec(e);return t?t[1]:""}function ye(e){return e.split(".").map((t,s)=>s===0?Xe(t):t).join(".")}class V extends Error{exitCode=2;isUsageError=!0;constructor(e){super(e);if(this.name=this.constructor.name,typeof Error.captureStackTrace==="function")Error.captureStackTrace(this,this.constructor);else this.stack=Error(e).stack}format(e=!1){if(e&&this.stack)return`${this.message}
2
+ import{E as Ie,L as Oe,M as ie,O as re,Ra as Me,S as oe,Sa as Re,Ua as Le,Xa as Ve,Za as Fe,cb as ze,db as We,eb as Ue,ha as Ee,ia as Te,ja as Ae,ka as _e,la as Pe,pa as ae,qa as Be,ra as Ne}from"../chunk-8tcp1ev3.js";import"../chunk-db3jgr0q.js";import"../chunk-22gn39he.js";import"../chunk-tgf8012c.js";import{Jb as U,Kb as je,Mb as se,Nb as G,Sb as De,Wb as ne}from"../chunk-1xyn336h.js";import"../chunk-n7nj6jzj.js";import"../chunk-b2z6jktp.js";import{nc as W,oc as ee,pc as te}from"../chunk-bpb1md3m.js";import"../chunk-sd1kab37.js";import"../chunk-ed8b6307.js";import{Lc as Ce,Mc as zt}from"../chunk-84px82t5.js";import{Qc as N}from"../chunk-jzj5056d.js";import d from"node:fs";import y from"node:path";import u from"node:process";import{existsSync as He}from"node:fs";import q from"node:fs/promises";import ue from"node:os";import H from"node:path";import B from"node:process";import{EventEmitter as Ke}from"node:events";import j from"node:process";import he from"node:process";import Y from"node:process";import F from"node:process";import L from"node:process";import me from"node:tty";import Nt,{stdin as ps,stdout as fs}from"node:process";class ge{configPath;config=null;events=[];retryCount=0;maxRetries=3;retryDelayMs=1000;constructor(){let e=ue.homedir(),t=H.join(e,".config","clapp");this.configPath=H.join(t,"telemetry.json")}async isEnabled(){if(B.env.DO_NOT_TRACK==="1"||B.env.DO_NOT_TRACK==="true")return!1;if(B.env.NO_TELEMETRY==="1"||B.env.NO_TELEMETRY==="true")return!1;return(await this.loadConfig()).enabled}async enable(){let e=await this.loadConfig();if(e.enabled=!0,!e.userId)e.userId=this.generateUserId();await this.saveConfig(e)}async disable(){let e=await this.loadConfig();e.enabled=!1,await this.saveConfig(e)}async track(e,t){if(!await this.isEnabled())return;let n={event:e,...t,timestamp:Date.now(),platform:ue.platform(),nodeVersion:B.version};if(this.events.push(n),this.events.length>=10)await this.send()}async trackCommand(e,t){await this.track("command",{command:e,duration:t})}async trackError(e,t){await this.track("error",{error:e,command:t})}async send(){if(!await this.isEnabled()||this.events.length===0)return!0;try{this.events=[],this.retryCount=0;let t=await this.loadConfig();return t.lastSent=Date.now(),await this.saveConfig(t),!0}catch{if(this.retryCount<this.maxRetries){this.retryCount++;let t=this.retryDelayMs*2**(this.retryCount-1);return await this.sleep(t),this.send()}return this.events=[],this.retryCount=0,!1}}async flush(){if(this.events.length===0)return!0;return this.send()}sleep(e){return new Promise((t)=>setTimeout(t,e))}async status(){let e=await this.loadConfig();return{enabled:e.enabled,doNotTrack:B.env.DO_NOT_TRACK==="1"||B.env.DO_NOT_TRACK==="true",eventsQueued:this.events.length,lastSent:e.lastSent}}async loadConfig(){if(this.config)return this.config;try{if(He(this.configPath)){let e=await q.readFile(this.configPath,"utf-8");return this.config=JSON.parse(e),this.config}}catch{}return this.config={enabled:!1},this.config}async saveConfig(e){this.config=e;try{let t=H.dirname(this.configPath);await q.mkdir(t,{recursive:!0}),await q.writeFile(this.configPath,JSON.stringify(e,null,2),"utf-8")}catch{}}generateUserId(){let e=Math.random().toString(36).substring(2,15),t=Date.now().toString(36);return`${e}-${t}`}}var es=new ge;function Je(e,t={}){let s={_:[]},n=t.alias||{},i=new Set(t.boolean||[]),r={};for(let l of Object.keys(n))for(let o of n[l])r[o]=l;for(let l of i)if(n[l])for(let o of n[l])i.add(o);function a(l,o){let c=r[l]||l;if(s[c]=o,n[c])for(let p of n[c])s[p]=o;if(r[l]&&n[r[l]])for(let p of n[r[l]])s[p]=o;s[l]=o}for(let l=0;l<e.length;l++){let o=e[l];if(o==="--"){s._.push(...e.slice(l+1));break}if(o.startsWith("--")){let c=o.indexOf("=");if(c!==-1){let p=o.slice(2,c),g=o.slice(c+1);a(p,g)}else{let p=o.slice(2);if(p.startsWith("no-")){let h=p.slice(3);a(h,!1);continue}let g=r[p]||p;if(i.has(g)||i.has(p))a(p,!0);else{let h=e[l+1];if(h!==void 0&&!h.startsWith("-"))a(p,h),l++;else a(p,!0)}}}else if(o.startsWith("-")&&o.length>1){let c=o.slice(1);for(let p=0;p<c.length;p++){let g=c[p],h=r[g]||g;if(p===c.length-1&&!i.has(h)&&!i.has(g)){let f=e[l+1];if(f!==void 0&&!f.startsWith("-"))a(g,f),l++;else a(g,!0)}else a(g,!0)}}else s._.push(o)}return s}function J(e){return e.replace(/[<[].+/,"").trim()}function Ye(e){let t=/<([^>]+)>/g,s=/\[([^\]]+)\]/g,n=[],i=(l)=>{let o=!1,c=l[1];if(c.startsWith("..."))c=c.slice(3),o=!0;return{required:l[0].startsWith("<"),value:c,variadic:o}},r;while(r=t.exec(e))n.push(i(r));let a;while(a=s.exec(e))n.push(i(a));return n}function Ze(e){let t={alias:{},boolean:[]};for(let[s,n]of e.entries()){if(n.names.length>1)t.alias[n.names[0]]=n.names.slice(1);if(n.isBoolean)if(n.negated){if(!e.some((r,a)=>a!==s&&r.names.some((l)=>n.names.includes(l))&&typeof r.required==="boolean"))t.boolean.push(n.names[0])}else t.boolean.push(n.names[0])}return t}function de(e){return e.reduce((t,s)=>t.length>=s.length?t:s,"")}function K(e,t){return e.length>=t?e:`${e}${" ".repeat(t-e.length)}`}function Xe(e){return e.replace(/([a-z])-([a-z])/g,(t,s,n)=>s+n.toUpperCase())}function Qe(e,t,s){let n=0,i=t.length,r=e,a;for(;n<i;++n)a=r[t[n]],r=r[t[n]]=n===i-1?s:a!=null?a:!!~t[n+1].indexOf(".")||!(+t[n+1]>-1)?{}:[]}function et(e,t){for(let s of Object.keys(t)){let n=t[s];if(n.shouldTransform){if(e[s]=Array.prototype.concat.call([],e[s]),typeof n.transformFunction==="function")e[s]=e[s].map(n.transformFunction)}}}function tt(e){let t=/([^\\/]+)$/.exec(e);return t?t[1]:""}function ye(e){return e.split(".").map((t,s)=>s===0?Xe(t):t).join(".")}class V extends Error{exitCode=2;isUsageError=!0;constructor(e){super(e);if(this.name=this.constructor.name,typeof Error.captureStackTrace==="function")Error.captureStackTrace(this,this.constructor);else this.stack=Error(e).stack}format(e=!1){if(e&&this.stack)return`${this.message}
3
3
 
4
4
  Stack trace:
5
5
  ${this.stack}`;return this.message}}function st(){let{env:e}=he,{TERM:t,TERM_PROGRAM:s}=e;if(he.platform!=="win32")return t!=="linux";return Boolean(e.WT_SESSION)||Boolean(e.TERMINUS_SUBLIME)||e.ConEmuTask==="{cmd::Cmder}"||s==="Terminus-Sublime"||s==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var z="\x1B",E=`${z}[`;var pe={to(e,t){if(!t)return`${E}${e+1}G`;return`${E}${t+1};${e+1}H`},move(e,t){let s="";if(e<0)s+=`${E}${-e}D`;else if(e>0)s+=`${E}${e}C`;if(t<0)s+=`${E}${-t}A`;else if(t>0)s+=`${E}${t}B`;return s},up:(e=1)=>`${E}${e}A`,down:(e=1)=>`${E}${e}B`,forward:(e=1)=>`${E}${e}C`,backward:(e=1)=>`${E}${e}D`,nextLine:(e=1)=>`${E}E`.repeat(e),prevLine:(e=1)=>`${E}F`.repeat(e),left:`${E}G`,hide:`${E}?25l`,show:`${E}?25h`,save:`${z}7`,restore:`${z}8`};var is={screen:`${E}2J`,up:(e=1)=>`${E}1J`.repeat(e),down:(e=1)=>`${E}J`.repeat(e),line:`${E}2K`,lineEnd:`${E}K`,lineStart:`${E}1K`,lines(e){let t="";for(let s=0;s<e;s++)t+=this.line+(s<e-1?pe.up():"");if(e)t+=pe.left;return t}},rs={screen:`${z}c`};function nt(e,t){let s=[];for(let n=0;n<=t.length;n++)s[n]=[n];for(let n=0;n<=e.length;n++)s[0][n]=n;for(let n=1;n<=t.length;n++)for(let i=1;i<=e.length;i++)if(t.charAt(n-1)===e.charAt(i-1))s[n][i]=s[n-1][i-1];else s[n][i]=Math.min(s[n-1][i-1]+1,s[n][i-1]+1,s[n-1][i]+1);return s[t.length][e.length]}function $e(e,t,s=2,n=3){return t.map((i)=>({cmd:i,distance:nt(e,i)})).filter(({distance:i})=>i<=s).sort((i,r)=>i.distance-r.distance).slice(0,n).map(({cmd:i})=>i)}class be{rawName;description;name;names;isBoolean;required;config;negated;constructor(e,t,s){if(this.rawName=e,this.description=t,this.config=Object.assign({},s),e=e.replace(/\.\*/g,""),this.negated=!1,this.names=J(e).split(",").map((n)=>{let i=n.trim().replace(/^-{1,2}/,"");if(i.startsWith("no-"))this.negated=!0,i=i.replace(/^no-/,"");return ye(i)}).sort((n,i)=>n.length>i.length?1:-1),this.name=this.names[this.names.length-1],this.negated&&this.config.default==null)this.config.default=!0;if(e.includes("<"))this.required=!0;else if(e.includes("["))this.required=!1;else this.isBoolean=!0}}var as=Y.argv,it=`${Y.platform}-${Y.arch} bun-v${typeof Bun<"u"?Bun.version:"unknown"}`,fe=F.argv,rt=`${F.platform}-${F.arch} node-${F.version}`;class Z{rawName;description;config;cli;options;aliasNames;name;namespace;args;commandAction;usageText;versionNumber;examples;helpCallback;globalCommand;beforeHooks;afterHooks;middleware;constructor(e,t,s,n){this.rawName=e,this.description=t,this.config=s,this.cli=n,this.options=[],this.aliasNames=[],this.name=J(e);let i=J(e),r=i.indexOf(":");if(r>0)this.namespace=i.substring(0,r),this.name=i.substring(r+1);if(this.args=Ye(e),this.examples=[],this.beforeHooks=[],this.afterHooks=[],this.middleware=[],!s)this.config={}}usage(e){return this.usageText=e,this}allowUnknownOptions(){return this.config.allowUnknownOptions=!0,this}ignoreOptionDefaultValue(){return this.config.ignoreOptionDefaultValue=!0,this}version(e,t="-v, --version"){return this.versionNumber=e,this.option(t,"Display version number"),this}example(e){return this.examples.push(e),this}option(e,t,s){let n=new be(e,t,s);return this.options.push(n),this}alias(e){return this.aliasNames.push(e),this}action(e){return this.commandAction=e,this}before(e){return this.beforeHooks.push(e),this}after(e){return this.afterHooks.push(e),this}use(e){return this.middleware.push(e),this}isMatched(e){if(this.aliasNames.includes(e))return!0;if(this.namespace)return`${this.namespace}:${this.name}`===e;return this.name===e}get isDefaultCommand(){return this.name===""||this.aliasNames.includes("!")}get isGlobalCommand(){return this instanceof X}get displayName(){return this.namespace?`${this.namespace}:${this.name}`:this.name}hasOption(e){return e=e.split(".")[0],!!this.options.find((t)=>t.names.includes(e))}outputHelp(){let{name:e,commands:t}=this.cli,{versionNumber:s,options:n,helpCallback:i}=this.cli.globalCommand,r=[{body:`${e}${s?`/${s}`:""}`}];if(r.push({title:"Usage",body:` $ ${e} ${this.usageText||this.rawName}`}),(this.isGlobalCommand||this.isDefaultCommand)&&t.length>0){let o=de(t.map((f)=>f.rawName)),c=new Map,p=[];for(let f of t)if(f.namespace){if(!c.has(f.namespace))c.set(f.namespace,[]);c.get(f.namespace).push(f)}else p.push(f);let g="";if(p.length>0)g+=p.map((f)=>` ${K(f.rawName,o.length)} ${f.description}`).join(`
@@ -28,7 +28,7 @@ Received ${s}, cleaning up...`),e)try{await e()}catch(n){console.error("Error du
28
28
  ✗ Command "${e}" not found.
29
29
  `)),this.enableDidYouMean){let t=[];for(let n of this.commands){if(n.displayName)t.push(n.displayName);if(n.aliasNames)t.push(...n.aliasNames)}let s=$e(e,t);if(s.length>0)console.log(R.yellow("Did you mean one of these?")),s.forEach((n)=>console.log(` ${R.dim("•")} ${this.name} ${n}`)),console.log("")}console.log(R.dim("Run"),`${this.name} --help`,R.dim("to see all available commands")),j.exit(1)}async parse(e=fe,t={}){let{run:s=!0,exitOnError:n=!1}=t;if(n)try{return await this.parse(e,{run:s})}catch(o){throw this.handleUsageError(o),o}if(this.rawArgs=e,!this.name)this.name=e[1]?tt(e[1]):"cli";let i=!0,r=e.slice(2),a=r[0];if(a&&!a.startsWith("-")){for(let o of this.commands)if(o.isMatched(a)){let c=this.mri(r,o);i=!1;let p={...c,args:c.args.slice(1)};this.setParsedInfo(p,o,a),this.emit(`command:${a}`,o);break}}if(i){for(let o of this.commands)if(o.name===""){i=!1;let c=this.mri(r,o);this.setParsedInfo(c,o),this.emit("command:!",o);break}}if(i){let o=this.mri(e.slice(2));this.setParsedInfo(o)}if(this.options.verbose)this.isVerbose=!0;if(this.options.quiet)this.isQuiet=!0;if(this.options.debug)this.isDebug=!0;if(this.options.noInteraction)this.isNoInteraction=!0;if(this.options.env)this.environment=String(this.options.env);if(this.options.dryRun)this.isDryRun=!0;if(this.options.force)this.isForce=!0;if(this.options.noEmoji!==void 0)this.useEmoji=!this.options.noEmoji;if(this.options.theme)this.theme=String(this.options.theme);if(this.options.noCache!==void 0)this.isNoCache=Boolean(this.options.noCache);if(this.options.help&&this.showHelpOnExit)this.outputHelp(),s=!1,this.unsetMatchedCommand();if(this.options.version&&this.showVersionOnExit&&this.matchedCommandName==null)this.outputVersion(),s=!1,this.unsetMatchedCommand();let l={args:this.args,options:this.options};if(s)await this.runMatchedCommand();if(!this.matchedCommand&&this.args[0]){if(this.emit("command:*"),!(this.listenerCount("command:*")>0))this.showCommandNotFound(this.args[0])}return l}mri(e,t){let s=[...this.globalCommand.options,...t?t.options:[]],n=Ze(s),i=[],r=e.indexOf("--");if(r>-1)i=e.slice(r+1),e=e.slice(0,r);let a=Je(e,n),l={_:a._};for(let h of Object.keys(a))if(h!=="_")l[ye(h)]=a[h];let o=l._,c={"--":i},p=t&&t.config.ignoreOptionDefaultValue?t.config.ignoreOptionDefaultValue:this.globalCommand.config.ignoreOptionDefaultValue,g=Object.create(null);for(let h of s){if(!p&&h.config.default!==void 0)for(let f of h.names)c[f]=h.config.default;if(Array.isArray(h.config.type)){if(g[h.name]===void 0)g[h.name]={shouldTransform:!0,transformFunction:h.config.type[0]}}}for(let h of Object.keys(l))if(h!=="_"){let f=h.split(".");Qe(c,f,l[h]),et(c,g)}return{args:o,options:c}}async run(e=fe){return this.parse(e,{run:!0,exitOnError:!0})}handleUsageError(e){if(!(!!e&&typeof e==="object"&&e.name==="ClappError"&&e.isUsageError!==!1))return;let n=e,i=n.message??"command-line error",r=this.name?`${this.name}: `:"",a=/--help/.test(i)?"":`
30
30
  Run \`${this.name??"cli"} --help\` for usage.`;j.stderr.write(`${r}${i}${a}
31
- `),j.exit(n.exitCode??2)}async runMatchedCommand(){let{args:e,options:t,matchedCommand:s}=this;if(!s||!s.commandAction)return;s.checkUnknownOptions(),s.checkOptionValue(),s.checkRequiredArgs();let n=[];s.args.forEach((l,o)=>{if(l.variadic)n.push(e.slice(o));else n.push(e[o])}),n.push(t);let i={command:s,args:n,options:t};for(let l of s.beforeHooks)await l(i);let r,a=async()=>{let l=s.commandAction.apply(this,n);if(l instanceof Promise)r=await l;else r=l;return r};if(s.middleware.length>0){let l=0,o=async()=>{if(l<s.middleware.length){let c=s.middleware[l++];await c({...i,next:o})}else await a()};await o()}else await a();for(let l of s.afterHooks)await l(i);return r}removeSignalHandlers(){if(!this.signalHandlersSet)return this;return j.removeAllListeners("SIGINT"),j.removeAllListeners("SIGTERM"),this.signalHandlersSet=!1,this}destroy(){this.removeSignalHandlers(),this.commands=[],this.rawArgs=[],this.args=[],this.options={},this.matchedCommand=void 0,this.matchedCommandName=void 0,this.removeAllListeners()}}class we{cache;enabled;cleanupInterval=null;hits=0;misses=0;constructor(){this.cache=new Map,this.enabled=!0,this.startCleanupInterval()}startCleanupInterval(){if(this.cleanupInterval)return;this.cleanupInterval=setInterval(()=>{this.cleanup()},30000),this.cleanupInterval.unref()}stopCleanup(){if(this.cleanupInterval)clearInterval(this.cleanupInterval),this.cleanupInterval=null}isEnabled(){return this.enabled}get(e){if(!this.enabled){this.misses++;return}let t=this.cache.get(e);if(!t){this.misses++;return}if(Date.now()-t.timestamp>t.ttl){this.cache.delete(e),this.misses++;return}return this.hits++,t.value}set(e,t,s=5000){if(!this.enabled)return;this.cache.set(e,{value:t,timestamp:Date.now(),ttl:s})}has(e){if(!this.enabled)return!1;let t=this.cache.get(e);if(!t)return!1;if(Date.now()-t.timestamp>t.ttl)return this.cache.delete(e),!1;return!0}delete(e){this.cache.delete(e)}clear(){this.cache.clear()}disable(){this.enabled=!1,this.clear()}enable(){this.enabled=!0}stats(){return{size:this.cache.size,enabled:this.enabled,hits:this.hits,misses:this.misses}}resetStats(){this.hits=0,this.misses=0}keys(){return Array.from(this.cache.keys())}cleanup(){let e=Date.now();for(let[t,s]of this.cache.entries())if(e-s.timestamp>s.ttl)this.cache.delete(t)}destroy(){this.stopCleanup(),this.clear(),this.resetStats()}}var cs=new we;function ct(){if("FORCE_COLOR"in L.env)return L.env.FORCE_COLOR!=="0";if("NO_COLOR"in L.env||L.env.TERM==="dumb")return!1;if(L.platform==="win32")return!0;return me.isatty(1)&&me.isatty(2)}var ve=ct();function C(e,t){if(!ve)return(s)=>s;return(s)=>e+s+t}var ut=C("\x1B[0m","\x1B[0m"),ht=C("\x1B[31m","\x1B[39m"),dt=C("\x1B[32m","\x1B[39m"),pt=C("\x1B[33m","\x1B[39m"),ft=C("\x1B[34m","\x1B[39m"),mt=C("\x1B[35m","\x1B[39m"),gt=C("\x1B[36m","\x1B[39m"),yt=C("\x1B[37m","\x1B[39m"),$t=C("\x1B[90m","\x1B[39m"),bt=C("\x1B[1m","\x1B[22m"),wt=C("\x1B[3m","\x1B[23m"),vt=C("\x1B[4m","\x1B[24m"),xt=C("\x1B[2m","\x1B[22m"),St=C("\x1B[7m","\x1B[27m"),kt=C("\x1B[8m","\x1B[28m"),Ct=C("\x1B[9m","\x1B[29m"),It=C("\x1B[41m","\x1B[49m"),Ot=C("\x1B[42m","\x1B[49m"),Et=C("\x1B[43m","\x1B[49m"),Tt=C("\x1B[44m","\x1B[49m"),At=C("\x1B[45m","\x1B[49m"),_t=C("\x1B[46m","\x1B[49m"),Pt=C("\x1B[47m","\x1B[49m"),jt=ve,Dt={reset:ut,red:ht,green:dt,yellow:pt,blue:ft,magenta:mt,cyan:gt,white:yt,gray:$t,bold:bt,italic:wt,underline:vt,dim:xt,inverse:St,hidden:kt,strikethrough:Ct,bgRed:It,bgGreen:Ot,bgYellow:Et,bgBlue:Tt,bgMagenta:At,bgCyan:_t,bgWhite:Pt,isColorSupported:jt},Bt=Dt,Mt=["up","down","left","right","space","enter","cancel"],ms={actions:new Set(Mt),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"}};var gs=Nt.platform.startsWith("win"),ys=Symbol("clapp:cancel");var Rt=st();var S=(e,t)=>Rt?e:t,$s=S("◆","*"),bs=S("■","x"),ws=S("▲","x"),vs=S("◇","o"),xs=S("┌","T"),Lt=S("│","|"),Ss=S("└","—"),ks=S("●",">"),Cs=S("○"," "),Is=S("◻","[•]"),Os=S("◼","[+]"),Es=S("◻","[ ]"),Ts=S("▪","•"),As=S("─","-"),_s=S("╮","+"),Ps=S("├","+"),js=S("╯","+"),Ds=S("●","•"),Bs=S("◆","*"),Ns=S("▲","!"),Ms=S("■","x");var Rs={light:S("─","-"),heavy:S("━","="),block:S("█","#")};function Vt(){return`${Bt.gray(Lt)} `}var Ls=Vt();var xe="0.11.41";zt();async function Wt(e="src/pantry"){if(!d.existsSync(e))throw Error(`Pantry directory not found: ${e}. Please run 'bun ./bin/cli.ts update-pantry' first.`);let t=[];function s(n,i=""){let r=d.readdirSync(n,{withFileTypes:!0}),a=y.join(n,"package.yml");if(i&&d.existsSync(a))t.push(i);for(let l of r)if(l.isDirectory()&&!l.name.startsWith(".")){let o=i?`${i}/${l.name}`:l.name,c=y.join(n,l.name);s(c,o)}}return s(e),console.log(`\uD83D\uDCE6 Found ${t.length} packages in local pantry`),t.sort()}async function Ut(e=!1){async function t(a){let l=new URL("https://s3.amazonaws.com/dist.tea.xyz/");if(l.searchParams.set("list-type","2"),l.searchParams.set("prefix",""),l.searchParams.set("max-keys","1000"),a)l.searchParams.set("continuation-token",a);let o=await fetch(l.toString());if(!o.ok)throw Error(`Failed to fetch S3 listing: ${o.status}`);let c=await o.text(),p=[],g=c.match(/<Key>([^<]+)<\/Key>/g);if(g)for(let I of g){let O=I.replace(/<Key>([^<]+)<\/Key>/,"$1");p.push({Key:O})}let h=c.includes("<IsTruncated>true</IsTruncated>"),f=c.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/),m=f?f[1]:void 0;return{IsTruncated:h,NextContinuationToken:m,Contents:p}}console.log("Scraping packages from S3 registry...");let s=new Set,n;do{let a=await t(n);for(let l of a.Contents){let o=l.Key,c=o.split("/");if(c.length===0)continue;if(c[0].startsWith(".")||c[0].includes(" ")||o.match(/\.(md|txt|yml|yaml|json)$/i))continue;let p=["darwin","linux","windows"],g=-1;for(let h=1;h<c.length;h++)if(p.includes(c[h])){g=h;break}if(g>0){let h=c.slice(0,g).join("/");if(h.includes("."))s.add(h)}else if(c.length>=2&&c[0].includes(".")&&!c[1].startsWith("v")&&!c[1].match(/^\d/)){let h=`${c[0]}/${c[1]}`;s.add(h)}else if(c.length>=1&&c[0].includes("."))s.add(c[0])}n=a.NextContinuationToken,console.log(`Found ${s.size} packages so far...`)}while(n);let i=Array.from(s).sort(),r=[];for(let a of i){if(!a.includes(".")||a.match(/^[a-z0-9.-]+\.[a-z]{2,}(\/[\w.-]+){0,20}$/i)===null)continue;if(a.endsWith("/README.rst")||a.endsWith("/README")||a.includes("/docs/"))continue;if(a.endsWith("/.pkgroot"))continue;if(["amazon.com/aws","charm.sh","code.videolan.org","crates.io"].includes(a))continue;r.push(a)}return console.log(`\uD83D\uDCE6 Found ${r.length} valid packages in registry`),r}async function Gt(e,t){let n=`/**
31
+ `),j.exit(n.exitCode??2)}async runMatchedCommand(){let{args:e,options:t,matchedCommand:s}=this;if(!s||!s.commandAction)return;s.checkUnknownOptions(),s.checkOptionValue(),s.checkRequiredArgs();let n=[];s.args.forEach((l,o)=>{if(l.variadic)n.push(e.slice(o));else n.push(e[o])}),n.push(t);let i={command:s,args:n,options:t};for(let l of s.beforeHooks)await l(i);let r,a=async()=>{let l=s.commandAction.apply(this,n);if(l instanceof Promise)r=await l;else r=l;return r};if(s.middleware.length>0){let l=0,o=async()=>{if(l<s.middleware.length){let c=s.middleware[l++];await c({...i,next:o})}else await a()};await o()}else await a();for(let l of s.afterHooks)await l(i);return r}removeSignalHandlers(){if(!this.signalHandlersSet)return this;return j.removeAllListeners("SIGINT"),j.removeAllListeners("SIGTERM"),this.signalHandlersSet=!1,this}destroy(){this.removeSignalHandlers(),this.commands=[],this.rawArgs=[],this.args=[],this.options={},this.matchedCommand=void 0,this.matchedCommandName=void 0,this.removeAllListeners()}}class we{cache;enabled;cleanupInterval=null;hits=0;misses=0;constructor(){this.cache=new Map,this.enabled=!0,this.startCleanupInterval()}startCleanupInterval(){if(this.cleanupInterval)return;this.cleanupInterval=setInterval(()=>{this.cleanup()},30000),this.cleanupInterval.unref()}stopCleanup(){if(this.cleanupInterval)clearInterval(this.cleanupInterval),this.cleanupInterval=null}isEnabled(){return this.enabled}get(e){if(!this.enabled){this.misses++;return}let t=this.cache.get(e);if(!t){this.misses++;return}if(Date.now()-t.timestamp>t.ttl){this.cache.delete(e),this.misses++;return}return this.hits++,t.value}set(e,t,s=5000){if(!this.enabled)return;this.cache.set(e,{value:t,timestamp:Date.now(),ttl:s})}has(e){if(!this.enabled)return!1;let t=this.cache.get(e);if(!t)return!1;if(Date.now()-t.timestamp>t.ttl)return this.cache.delete(e),!1;return!0}delete(e){this.cache.delete(e)}clear(){this.cache.clear()}disable(){this.enabled=!1,this.clear()}enable(){this.enabled=!0}stats(){return{size:this.cache.size,enabled:this.enabled,hits:this.hits,misses:this.misses}}resetStats(){this.hits=0,this.misses=0}keys(){return Array.from(this.cache.keys())}cleanup(){let e=Date.now();for(let[t,s]of this.cache.entries())if(e-s.timestamp>s.ttl)this.cache.delete(t)}destroy(){this.stopCleanup(),this.clear(),this.resetStats()}}var cs=new we;function ct(){if("FORCE_COLOR"in L.env)return L.env.FORCE_COLOR!=="0";if("NO_COLOR"in L.env||L.env.TERM==="dumb")return!1;if(L.platform==="win32")return!0;return me.isatty(1)&&me.isatty(2)}var ve=ct();function C(e,t){if(!ve)return(s)=>s;return(s)=>e+s+t}var ut=C("\x1B[0m","\x1B[0m"),ht=C("\x1B[31m","\x1B[39m"),dt=C("\x1B[32m","\x1B[39m"),pt=C("\x1B[33m","\x1B[39m"),ft=C("\x1B[34m","\x1B[39m"),mt=C("\x1B[35m","\x1B[39m"),gt=C("\x1B[36m","\x1B[39m"),yt=C("\x1B[37m","\x1B[39m"),$t=C("\x1B[90m","\x1B[39m"),bt=C("\x1B[1m","\x1B[22m"),wt=C("\x1B[3m","\x1B[23m"),vt=C("\x1B[4m","\x1B[24m"),xt=C("\x1B[2m","\x1B[22m"),St=C("\x1B[7m","\x1B[27m"),kt=C("\x1B[8m","\x1B[28m"),Ct=C("\x1B[9m","\x1B[29m"),It=C("\x1B[41m","\x1B[49m"),Ot=C("\x1B[42m","\x1B[49m"),Et=C("\x1B[43m","\x1B[49m"),Tt=C("\x1B[44m","\x1B[49m"),At=C("\x1B[45m","\x1B[49m"),_t=C("\x1B[46m","\x1B[49m"),Pt=C("\x1B[47m","\x1B[49m"),jt=ve,Dt={reset:ut,red:ht,green:dt,yellow:pt,blue:ft,magenta:mt,cyan:gt,white:yt,gray:$t,bold:bt,italic:wt,underline:vt,dim:xt,inverse:St,hidden:kt,strikethrough:Ct,bgRed:It,bgGreen:Ot,bgYellow:Et,bgBlue:Tt,bgMagenta:At,bgCyan:_t,bgWhite:Pt,isColorSupported:jt},Bt=Dt,Mt=["up","down","left","right","space","enter","cancel"],ms={actions:new Set(Mt),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"}};var gs=Nt.platform.startsWith("win"),ys=Symbol("clapp:cancel");var Rt=st();var S=(e,t)=>Rt?e:t,$s=S("◆","*"),bs=S("■","x"),ws=S("▲","x"),vs=S("◇","o"),xs=S("┌","T"),Lt=S("│","|"),Ss=S("└","—"),ks=S("●",">"),Cs=S("○"," "),Is=S("◻","[•]"),Os=S("◼","[+]"),Es=S("◻","[ ]"),Ts=S("▪","•"),As=S("─","-"),_s=S("╮","+"),Ps=S("├","+"),js=S("╯","+"),Ds=S("●","•"),Bs=S("◆","*"),Ns=S("▲","!"),Ms=S("■","x");var Rs={light:S("─","-"),heavy:S("━","="),block:S("█","#")};function Vt(){return`${Bt.gray(Lt)} `}var Ls=Vt();var xe="0.11.43";zt();async function Wt(e="src/pantry"){if(!d.existsSync(e))throw Error(`Pantry directory not found: ${e}. Please run 'bun ./bin/cli.ts update-pantry' first.`);let t=[];function s(n,i=""){let r=d.readdirSync(n,{withFileTypes:!0}),a=y.join(n,"package.yml");if(i&&d.existsSync(a))t.push(i);for(let l of r)if(l.isDirectory()&&!l.name.startsWith(".")){let o=i?`${i}/${l.name}`:l.name,c=y.join(n,l.name);s(c,o)}}return s(e),console.log(`\uD83D\uDCE6 Found ${t.length} packages in local pantry`),t.sort()}async function Ut(e=!1){async function t(a){let l=new URL("https://s3.amazonaws.com/dist.tea.xyz/");if(l.searchParams.set("list-type","2"),l.searchParams.set("prefix",""),l.searchParams.set("max-keys","1000"),a)l.searchParams.set("continuation-token",a);let o=await fetch(l.toString());if(!o.ok)throw Error(`Failed to fetch S3 listing: ${o.status}`);let c=await o.text(),p=[],g=c.match(/<Key>([^<]+)<\/Key>/g);if(g)for(let I of g){let O=I.replace(/<Key>([^<]+)<\/Key>/,"$1");p.push({Key:O})}let h=c.includes("<IsTruncated>true</IsTruncated>"),f=c.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/),m=f?f[1]:void 0;return{IsTruncated:h,NextContinuationToken:m,Contents:p}}console.log("Scraping packages from S3 registry...");let s=new Set,n;do{let a=await t(n);for(let l of a.Contents){let o=l.Key,c=o.split("/");if(c.length===0)continue;if(c[0].startsWith(".")||c[0].includes(" ")||o.match(/\.(md|txt|yml|yaml|json)$/i))continue;let p=["darwin","linux","windows"],g=-1;for(let h=1;h<c.length;h++)if(p.includes(c[h])){g=h;break}if(g>0){let h=c.slice(0,g).join("/");if(h.includes("."))s.add(h)}else if(c.length>=2&&c[0].includes(".")&&!c[1].startsWith("v")&&!c[1].match(/^\d/)){let h=`${c[0]}/${c[1]}`;s.add(h)}else if(c.length>=1&&c[0].includes("."))s.add(c[0])}n=a.NextContinuationToken,console.log(`Found ${s.size} packages so far...`)}while(n);let i=Array.from(s).sort(),r=[];for(let a of i){if(!a.includes(".")||a.match(/^[a-z0-9.-]+\.[a-z]{2,}(\/[\w.-]+){0,20}$/i)===null)continue;if(a.endsWith("/README.rst")||a.endsWith("/README")||a.includes("/docs/"))continue;if(a.endsWith("/.pkgroot"))continue;if(["amazon.com/aws","charm.sh","code.videolan.org","crates.io"].includes(a))continue;r.push(a)}return console.log(`\uD83D\uDCE6 Found ${r.length} valid packages in registry`),r}async function Gt(e,t){let n=`/**
32
32
  * Constants used throughout the ts-pantry package
33
33
  * This file is auto-generated from ${t}. Do not edit manually.
34
34
  * Generated on ${new Date().toISOString()}
@@ -91,17 +91,17 @@ ${i.join(`
91
91
  Conflicts found:`),h.conflicts.forEach((m)=>{console.log(` ${m.package}: ${m.versions.join(", ")}`)});if(console.log(`
92
92
  \uD83D\uDCCB All unique packages to install:`),h.uniquePackages.forEach((m,I)=>{let O=h.allDependencies.find((x)=>x.name===m),b=O&&O.version&&O.version!=="latest"?` (${O.version})`:"";console.log(` ${I+1}. ${m}${b}`)}),c)console.log(`
93
93
  \uD83D\uDE80 Install command:`),console.log(`pantry install ${h.uniquePackages.join(" ")}`);if(Object.values(h.osSpecificDeps).reduce((m,I)=>m+I.length,0)>0)console.log(`
94
- \uD83D\uDDA5️ OS-specific dependencies:`),Object.entries(h.osSpecificDeps).forEach(([m,I])=>{if(I.length>0)console.log(` ${m}: ${I.map((O)=>O.name).join(", ")}`)})}u.exit(0)}catch(s){if(t.json){let n={success:!1,error:String(s),timestamp:new Date().toISOString()};console.log(JSON.stringify(n))}else console.error("Error resolving dependencies:",s);u.exit(1)}});k.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(e)=>{try{let{getPhpVersionsForWorkflow:t}=await import("../chunk-83x477k8.js"),s={};if(e.branches)s.supportedBranches=e.branches.split(",").map((i)=>i.trim());if(e.fallback)s.fallbackVersions=e.fallback.split(",").map((i)=>i.trim());let n=t(s);switch(e.format.toLowerCase()){case"yaml":console.log(`php_versions:
94
+ \uD83D\uDDA5️ OS-specific dependencies:`),Object.entries(h.osSpecificDeps).forEach(([m,I])=>{if(I.length>0)console.log(` ${m}: ${I.map((O)=>O.name).join(", ")}`)})}u.exit(0)}catch(s){if(t.json){let n={success:!1,error:String(s),timestamp:new Date().toISOString()};console.log(JSON.stringify(n))}else console.error("Error resolving dependencies:",s);u.exit(1)}});k.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(e)=>{try{let{getPhpVersionsForWorkflow:t}=await import("../chunk-983zzhmx.js"),s={};if(e.branches)s.supportedBranches=e.branches.split(",").map((i)=>i.trim());if(e.fallback)s.fallbackVersions=e.fallback.split(",").map((i)=>i.trim());let n=t(s);switch(e.format.toLowerCase()){case"yaml":console.log(`php_versions:
95
95
  ${n.map((i)=>` - "${i}"`).join(`
96
- `)}`);break;case"csv":console.log(n.join(","));break;case"json":default:console.log(JSON.stringify(n));break}u.exit(0)}catch(t){console.error("Error getting PHP versions:",t),u.exit(1)}});k.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(e)=>{try{let{generateZigDefinitions:t,generateZigAliases:s}=await import("../chunk-btrd677x.js"),{packagesDir:n="src/packages",output:i="packages.zig",aliases:r=!1,aliasesOutput:a="aliases.zig"}=e;if(console.log("\uD83D\uDE80 Generating Zig package definitions..."),await t(n,i),r)console.log(`
96
+ `)}`);break;case"csv":console.log(n.join(","));break;case"json":default:console.log(JSON.stringify(n));break}u.exit(0)}catch(t){console.error("Error getting PHP versions:",t),u.exit(1)}});k.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(e)=>{try{let{generateZigDefinitions:t,generateZigAliases:s}=await import("../chunk-cq08zej9.js"),{packagesDir:n="src/packages",output:i="packages.zig",aliases:r=!1,aliasesOutput:a="aliases.zig"}=e;if(console.log("\uD83D\uDE80 Generating Zig package definitions..."),await t(n,i),r)console.log(`
97
97
  \uD83D\uDE80 Generating Zig package aliases...`),await s(n,a);console.log(`
98
- ✅ Zig code generation complete!`),u.exit(0)}catch(t){console.error("Error generating Zig definitions:",t),u.exit(1)}});k.command("release [type]","Release a Zig package (changelog, bump, commit, tag, push, publish)").option("-y, --yes","Non-interactive mode (skip confirmation prompts)").option("--dry-run","Preview the release without changing anything").option("--no-changelog","Skip changelog generation").option("--no-push","Skip pushing the commit and tag").option("--no-publish","Skip publishing to the pantry registry").action(async(e,t)=>{let s=(e??"patch").toLowerCase();if(!["patch","minor","major"].includes(s))console.error(`error: invalid release type "${s}" (expected: patch | minor | major)`),u.exit(1);let{runRelease:n}=await import("../chunk-tp1d7cq1.js"),i=await n({type:s,yes:t.yes,dryRun:t.dryRun,noChangelog:t.changelog===!1,noPush:t.push===!1,noPublish:t.publish===!1});u.exit(i.exitCode)});k.command("apps","List installed desktop applications with version info").option("-j, --json","Output as JSON").action(async(e)=>{try{let{scanInstalledApps:t}=await import("../chunk-gr5aqxxx.js"),s=t();if(e.json)console.log(JSON.stringify({success:!0,apps:s,total:s.length}));else{console.log(`
98
+ ✅ Zig code generation complete!`),u.exit(0)}catch(t){console.error("Error generating Zig definitions:",t),u.exit(1)}});k.command("release [type]","Release a Zig package (changelog, bump, commit, tag, push, publish)").option("-y, --yes","Non-interactive mode (skip confirmation prompts)").option("--dry-run","Preview the release without changing anything").option("--no-changelog","Skip changelog generation").option("--no-push","Skip pushing the commit and tag").option("--no-publish","Skip publishing to the pantry registry").action(async(e,t)=>{let s=(e??"patch").toLowerCase();if(!["patch","minor","major"].includes(s))console.error(`error: invalid release type "${s}" (expected: patch | minor | major)`),u.exit(1);let{runRelease:n}=await import("../chunk-1d7phqqz.js"),i=await n({type:s,yes:t.yes,dryRun:t.dryRun,noChangelog:t.changelog===!1,noPush:t.push===!1,noPublish:t.publish===!1});u.exit(i.exitCode)});k.command("apps","List installed desktop applications with version info").option("-j, --json","Output as JSON").action(async(e)=>{try{let{scanInstalledApps:t}=await import("../chunk-mqgpf3y0.js"),s=t();if(e.json)console.log(JSON.stringify({success:!0,apps:s,total:s.length}));else{console.log(`
99
99
  Installed Desktop Apps (${s.length}):
100
- `),console.log("Application".padEnd(40)+"Version"),console.log("-".repeat(60));for(let n of s)console.log(`${n.name.padEnd(40)}${n.version}`)}u.exit(0)}catch(t){console.error("Error listing apps:",t),u.exit(1)}});k.command("apps-outdated","Check for outdated desktop applications").option("-j, --json","Output as JSON").action(async(e)=>{try{let{checkAppUpdates:t}=await import("../chunk-gr5aqxxx.js");if(!e.json)console.log("Checking desktop apps for updates...");let s=await t(),n=s.filter((i)=>i.updateAvailable);if(e.json)console.log(JSON.stringify({success:!0,apps:s,outdated:n.length,total:s.length,timestamp:new Date().toISOString()}));else{if(n.length>0){console.log(`
100
+ `),console.log("Application".padEnd(40)+"Version"),console.log("-".repeat(60));for(let n of s)console.log(`${n.name.padEnd(40)}${n.version}`)}u.exit(0)}catch(t){console.error("Error listing apps:",t),u.exit(1)}});k.command("apps-outdated","Check for outdated desktop applications").option("-j, --json","Output as JSON").action(async(e)=>{try{let{checkAppUpdates:t}=await import("../chunk-mqgpf3y0.js");if(!e.json)console.log("Checking desktop apps for updates...");let s=await t(),n=s.filter((i)=>i.updateAvailable);if(e.json)console.log(JSON.stringify({success:!0,apps:s,outdated:n.length,total:s.length,timestamp:new Date().toISOString()}));else{if(n.length>0){console.log(`
101
101
  Outdated Apps (${n.length}):
102
102
  `),console.log("Application".padEnd(30)+"Current".padEnd(16)+"Latest".padEnd(16)+"Source"),console.log("-".repeat(75));for(let r of n)console.log(`${r.name.padEnd(30)}${r.currentVersion.padEnd(16)}${(r.latestVersion||"?").padEnd(16)}${r.source}`)}else console.log(`
103
103
  All desktop apps are up to date!`);let i=s.filter((r)=>!r.updateAvailable&&r.source!=="system"&&r.source!=="unknown");if(i.length>0)console.log(`
104
- ${i.length} app(s) up to date, ${s.filter((r)=>r.source==="unknown").length} unchecked`)}u.exit(0)}catch(t){console.error("Error checking app updates:",t),u.exit(1)}});k.command("apps-update <name>","Update a desktop application from the pantry registry").action(async(e)=>{try{let{updateApp:t}=await import("../chunk-gr5aqxxx.js");console.log(`Updating ${e} from the pantry registry...`);let s=await t(e);if(s.success)console.log(`Successfully updated ${e} to ${s.version}`);else console.error(`Failed to update ${e}: ${s.error}`),u.exit(1);u.exit(0)}catch(t){console.error("Error updating app:",t),u.exit(1)}});k.command("install <pkg>","Install a system package (e.g. ziglang.org@0.17.0-dev)").option("--global","Link binaries into the user-level global bin so they appear on PATH").option("--install-dir <dir>","Where to download into (default: ./pantry)").option("--platform <target>","Install for a target platform (e.g. linux-x86_64)").option("--no-bin-links","Skip creating local .bin/ symlinks").option("--quiet","Suppress progress output").action(async(e,t)=>{let s=e.lastIndexOf("@"),n=s>0,i=n?e.slice(0,s):e,r=n?e.slice(s+1):"latest";try{let a=await oe(i,r,{installDir:t.installDir,platform:qt(t.platform),createBinLinks:t.binLinks!==!1,quiet:t.quiet,globalBin:t.global?!0:void 0});if(!t.quiet){if(console.log(`
104
+ ${i.length} app(s) up to date, ${s.filter((r)=>r.source==="unknown").length} unchecked`)}u.exit(0)}catch(t){console.error("Error checking app updates:",t),u.exit(1)}});k.command("apps-update <name>","Update a desktop application from the pantry registry").action(async(e)=>{try{let{updateApp:t}=await import("../chunk-mqgpf3y0.js");console.log(`Updating ${e} from the pantry registry...`);let s=await t(e);if(s.success)console.log(`Successfully updated ${e} to ${s.version}`);else console.error(`Failed to update ${e}: ${s.error}`),u.exit(1);u.exit(0)}catch(t){console.error("Error updating app:",t),u.exit(1)}});k.command("install <pkg>","Install a system package (e.g. ziglang.org@0.17.0-dev)").option("--global","Link binaries into the user-level global bin so they appear on PATH").option("--install-dir <dir>","Where to download into (default: ./pantry)").option("--platform <target>","Install for a target platform (e.g. linux-x86_64)").option("--no-bin-links","Skip creating local .bin/ symlinks").option("--quiet","Suppress progress output").action(async(e,t)=>{let s=e.lastIndexOf("@"),n=s>0,i=n?e.slice(0,s):e,r=n?e.slice(s+1):"latest";try{let a=await oe(i,r,{installDir:t.installDir,platform:qt(t.platform),createBinLinks:t.binLinks!==!1,quiet:t.quiet,globalBin:t.global?!0:void 0});if(!t.quiet){if(console.log(`
105
105
  ✓ ${a.name}@${a.version}`),console.log(` installed to: ${a.installPath}`),a.globalLinks&&a.globalLinks.length>0){if(console.log(` linked into: ${y.dirname(a.globalLinks[0])}`),!u.env.PATH?.split(y.delimiter).includes(y.dirname(a.globalLinks[0])))console.log(`
106
106
  ⚠ ${y.dirname(a.globalLinks[0])} is not on your PATH yet.`),console.log(" Run `ts-pantry shell-init --install` once to fix that.")}}u.exit(0)}catch(a){console.error(`Error installing ${e}:`,a instanceof Error?a.message:a),u.exit(1)}});function Kt(e){let t=ie(e);if(t.length===0)return[];try{return Ie(t[0]).map((s)=>s.version&&s.version!=="latest"?`${s.name}@${String(s.version).replace(/^[\^~>=<]+/,"")}`:s.name)}catch{return[]}}k.command("env","Print the environment pantry-installed packages need, for a program to consume").option("--json","Print JSON instead of shell assignments").option("--dir <path>","A project directory, whose dependency file is included (default: cwd)").option("--install","Install anything the dependency file names that is missing").action(async(e)=>{let t=y.resolve(e.dir??u.cwd()),s=Kt(t);if(e.install&&s.length>0)for(let r of s){let a=r.lastIndexOf("@"),l=a>0;await oe(l?r.slice(0,a):r,l?r.slice(a+1):"latest",{globalBin:!0,quiet:!0}).catch((o)=>{console.error(`# could not install ${r}: ${o instanceof Error?o.message:o}`)})}let n=re(),i=[y.join(t,".bin"),n].filter((r)=>d.existsSync(r));if(e.json)console.log(JSON.stringify({path:i,PATH:[...i,u.env.PATH??""].filter(Boolean).join(y.delimiter),dependencies:s,globalBin:n},null,2)),u.exit(0);console.log(`export PATH="${[...i,"$PATH"].join(y.delimiter)}"`),u.exit(0)});k.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(e)=>{let t=e.shell??Ee();try{if(e.uninstall){let n=Pe({shell:t});console.log(n.changed?`✓ Removed pantry shell-init from ${n.rcFile}`:`Nothing to remove (no pantry shell-init block in ${n.rcFile})`),u.exit(0)}if(e.install){let n=_e({shell:t});if(n.changed)console.log(`✓ Added pantry shell-init to ${n.rcFile}`),console.log(` Restart your shell or run: source ${n.rcFile}`);else console.log(`✓ Already integrated in ${n.rcFile}`);u.exit(0)}let s=Te(t);if(u.stdout.isTTY){if(console.log(`# Detected shell: ${t}`),console.log(`# Global bin dir: ${re()}`),s)console.log(`# Append this to: ${s}`);console.log("# Or run: ts-pantry shell-init --install"),console.log()}u.stdout.write(Ae({shell:t})),u.exit(0)}catch(s){console.error("Error:",s instanceof Error?s.message:s),u.exit(1)}});k.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(e,t)=>{try{let s=[].concat(t.tag??[]),n={};for(let r of[].concat(t.buildArg??[])){let a=r.indexOf("=");if(a!==-1)n[r.slice(0,a)]=r.slice(a+1)}let i=await Ve({context:e??".",dockerfile:t.file,tags:s,target:t.target,buildArgs:n,platform:t.platform,outputDir:t.output,runMode:t.runMode,quiet:t.quiet});if(!t.quiet){if(console.log(`
107
107
  ✓ Built ${i.imageId}`),s.length)console.log(` tags: ${s.join(", ")}`);console.log(` archive: ${i.archivePath}`),console.log(` oci layout: ${i.ociLayoutPath}`)}if(t.push){let r=Re(s[0]||"app:latest");if(!t.quiet)console.log(`
@@ -1,2 +1,2 @@
1
- import"./chunk-a20hctx6.js";import{spawnSync as j}from"node:child_process";import d from"node:fs";import S from"node:os";import c from"node:path";import L from"node:process";var P="\x1B[31m",G="\x1B[32m",O="\x1B[33m",f="\x1B[2m",k="\x1B[1m",a="\x1B[0m";function C(t){console.log(`${f}>${a} ${t}`)}function m(t){console.log(`${G}✓${a} ${t}`)}function p(t){console.log(`${O}!${a} ${t}`)}function s(t){console.error(`${P}error:${a} ${t}`)}function o(t,e,n){let r=j(t,e,{cwd:n,encoding:"utf8"});return{status:r.status??(r.error?1:0),stdout:r.stdout??"",stderr:r.stderr??(r.error?String(r.error.message):"")}}function z(t,e){let n=j("which",[t],{encoding:"utf8"});if((n.status??1)===0&&n.stdout.trim().length>0)return n.stdout.trim();let r=S.homedir(),l=[c.join(r,".local","bin",t),c.join(r,"pantry",".bin",t),c.join(r,".pantry","bin",t),c.join(r,"Code","Libraries",e,"zig-out","bin",t)];for(let h of l)if(d.existsSync(h))return h;return null}function w(t){let n=d.readFileSync(t,"utf8").match(/\.version\s*=\s*"([^"]+)"/);return n?n[1]:null}function B(t,e){let n=c.join(t,"package.json");if(!d.existsSync(n))return!1;let r=d.readFileSync(n,"utf8"),l=r.replace(/("version"\s*:\s*)"[^"]*"/,`$1"${e}"`);if(l===r)return!1;return d.writeFileSync(n,l),!0}async function F(t){let e=t.cwd??L.cwd(),n=c.join(e,"build.zig.zon");if(!d.existsSync(n))return s(`no build.zig.zon found in ${e}`),console.error(` ${f}\`pantry release\` must be run from the root of a Zig package.${a}`),{exitCode:1};let r=o("git",["rev-parse","--is-inside-work-tree"],e);if(r.status!==0||r.stdout.trim()!=="true")return s("not inside a git repository"),{exitCode:1};let l=o("git",["status","--porcelain"],e);if(l.status===0&&l.stdout.trim().length>0&&!t.dryRun)return s("working tree is not clean — commit or stash your changes first."),console.error(l.stdout.trimEnd()),{exitCode:1};let h=!1;if(!t.noPush){let i=o("git",["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"],e);if(h=i.status===0&&i.stdout.trim().length>0,!h)p("no upstream branch configured — will commit and tag locally (skipping push).")}let x=w(n);if(!x)return s(`could not read .version from ${n}`),{exitCode:1};let R=z("bump","zig-bump");if(!R)return s("`bump` binary not found (from zig-bump)."),console.error(` ${f}Build it: cd ~/Code/Libraries/zig-bump && zig build, or install it onto your PATH.${a}`),{exitCode:1};if(!t.noChangelog){let i=z("changelog","zig-changelog");if(i)if(C("generating changelog from conventional commits..."),t.dryRun)console.log(` ${f}[dry-run] would run: changelog -o CHANGELOG.md${a}`);else{let g=o(i,["-o","CHANGELOG.md"],e);if(g.status===0)m("CHANGELOG.md updated");else p(`changelog generation skipped${g.stderr?`: ${g.stderr.trim()}`:""}`)}else p("`changelog` binary not found (from zig-changelog) — skipping changelog.")}if(C(`bumping version (${k}${t.type}${a}) from ${x}...`),t.dryRun){let i=o(R,[t.type,"--dry-run","--yes"],e);if(i.stdout.trim())console.log(i.stdout.trimEnd());return console.log(` ${f}[dry-run] no files changed, no commit/tag/push, no publish.${a}`),{exitCode:0}}let b=o(R,[t.type,"--no-commit","--no-tag","--no-push","--yes"],e);if(b.status!==0){if(s("version bump failed"),b.stdout.trim())console.error(b.stdout.trimEnd());if(b.stderr.trim())console.error(b.stderr.trimEnd());return{exitCode:1}}let y=w(n);if(!y||y===x)return s("version did not change after bump"),{exitCode:1};m(`build.zig.zon ${x} → ${y}`);let u=`v${y}`;if(o("git",["rev-parse","-q","--verify",`refs/tags/${u}`],e).status===0)return s(`tag ${u} already exists — bump to a version that has no tag yet.`),o("git",["checkout","--","build.zig.zon"],e),{exitCode:1};if(B(e,y))m(`package.json version → ${y}`);if(o("git",["add","build.zig.zon"],e),d.existsSync(c.join(e,"package.json")))o("git",["add","package.json"],e);if(d.existsSync(c.join(e,"CHANGELOG.md")))o("git",["add","CHANGELOG.md"],e);let E=o("git",["commit","-m",`chore: release ${u}`],e);if(E.status!==0){if(s("git commit failed"),E.stderr.trim())console.error(E.stderr.trimEnd());return{exitCode:1}}m(`committed release ${u}`);let v=o("git",["tag","-a",u,"-m",`Release ${u}`],e);if(v.status!==0){if(s("git tag failed"),v.stderr.trim())console.error(v.stderr.trimEnd());return{exitCode:1}}if(m(`tagged ${u}`),!t.noPush&&h){C("pushing commit and tag...");let i=o("git",["push"],e);if(i.status!==0){if(s("git push failed"),i.stderr.trim())console.error(i.stderr.trimEnd());return{exitCode:1}}let g=o("git",["push","origin",u],e);if(g.status!==0){if(s(`pushing tag ${u} failed`),g.stderr.trim())console.error(g.stderr.trimEnd());return{exitCode:1}}m(`pushed commit and tag ${u}`)}else p("skipped push (commit and tag are local only).");if(!t.noPublish)T(e);return console.log(`
1
+ import"./chunk-jzj5056d.js";import{spawnSync as j}from"node:child_process";import d from"node:fs";import S from"node:os";import c from"node:path";import L from"node:process";var P="\x1B[31m",G="\x1B[32m",O="\x1B[33m",f="\x1B[2m",k="\x1B[1m",a="\x1B[0m";function C(t){console.log(`${f}>${a} ${t}`)}function m(t){console.log(`${G}✓${a} ${t}`)}function p(t){console.log(`${O}!${a} ${t}`)}function s(t){console.error(`${P}error:${a} ${t}`)}function o(t,e,n){let r=j(t,e,{cwd:n,encoding:"utf8"});return{status:r.status??(r.error?1:0),stdout:r.stdout??"",stderr:r.stderr??(r.error?String(r.error.message):"")}}function z(t,e){let n=j("which",[t],{encoding:"utf8"});if((n.status??1)===0&&n.stdout.trim().length>0)return n.stdout.trim();let r=S.homedir(),l=[c.join(r,".local","bin",t),c.join(r,"pantry",".bin",t),c.join(r,".pantry","bin",t),c.join(r,"Code","Libraries",e,"zig-out","bin",t)];for(let h of l)if(d.existsSync(h))return h;return null}function w(t){let n=d.readFileSync(t,"utf8").match(/\.version\s*=\s*"([^"]+)"/);return n?n[1]:null}function B(t,e){let n=c.join(t,"package.json");if(!d.existsSync(n))return!1;let r=d.readFileSync(n,"utf8"),l=r.replace(/("version"\s*:\s*)"[^"]*"/,`$1"${e}"`);if(l===r)return!1;return d.writeFileSync(n,l),!0}async function F(t){let e=t.cwd??L.cwd(),n=c.join(e,"build.zig.zon");if(!d.existsSync(n))return s(`no build.zig.zon found in ${e}`),console.error(` ${f}\`pantry release\` must be run from the root of a Zig package.${a}`),{exitCode:1};let r=o("git",["rev-parse","--is-inside-work-tree"],e);if(r.status!==0||r.stdout.trim()!=="true")return s("not inside a git repository"),{exitCode:1};let l=o("git",["status","--porcelain"],e);if(l.status===0&&l.stdout.trim().length>0&&!t.dryRun)return s("working tree is not clean — commit or stash your changes first."),console.error(l.stdout.trimEnd()),{exitCode:1};let h=!1;if(!t.noPush){let i=o("git",["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"],e);if(h=i.status===0&&i.stdout.trim().length>0,!h)p("no upstream branch configured — will commit and tag locally (skipping push).")}let x=w(n);if(!x)return s(`could not read .version from ${n}`),{exitCode:1};let R=z("bump","zig-bump");if(!R)return s("`bump` binary not found (from zig-bump)."),console.error(` ${f}Build it: cd ~/Code/Libraries/zig-bump && zig build, or install it onto your PATH.${a}`),{exitCode:1};if(!t.noChangelog){let i=z("changelog","zig-changelog");if(i)if(C("generating changelog from conventional commits..."),t.dryRun)console.log(` ${f}[dry-run] would run: changelog -o CHANGELOG.md${a}`);else{let g=o(i,["-o","CHANGELOG.md"],e);if(g.status===0)m("CHANGELOG.md updated");else p(`changelog generation skipped${g.stderr?`: ${g.stderr.trim()}`:""}`)}else p("`changelog` binary not found (from zig-changelog) — skipping changelog.")}if(C(`bumping version (${k}${t.type}${a}) from ${x}...`),t.dryRun){let i=o(R,[t.type,"--dry-run","--yes"],e);if(i.stdout.trim())console.log(i.stdout.trimEnd());return console.log(` ${f}[dry-run] no files changed, no commit/tag/push, no publish.${a}`),{exitCode:0}}let b=o(R,[t.type,"--no-commit","--no-tag","--no-push","--yes"],e);if(b.status!==0){if(s("version bump failed"),b.stdout.trim())console.error(b.stdout.trimEnd());if(b.stderr.trim())console.error(b.stderr.trimEnd());return{exitCode:1}}let y=w(n);if(!y||y===x)return s("version did not change after bump"),{exitCode:1};m(`build.zig.zon ${x} → ${y}`);let u=`v${y}`;if(o("git",["rev-parse","-q","--verify",`refs/tags/${u}`],e).status===0)return s(`tag ${u} already exists — bump to a version that has no tag yet.`),o("git",["checkout","--","build.zig.zon"],e),{exitCode:1};if(B(e,y))m(`package.json version → ${y}`);if(o("git",["add","build.zig.zon"],e),d.existsSync(c.join(e,"package.json")))o("git",["add","package.json"],e);if(d.existsSync(c.join(e,"CHANGELOG.md")))o("git",["add","CHANGELOG.md"],e);let E=o("git",["commit","-m",`chore: release ${u}`],e);if(E.status!==0){if(s("git commit failed"),E.stderr.trim())console.error(E.stderr.trimEnd());return{exitCode:1}}m(`committed release ${u}`);let v=o("git",["tag","-a",u,"-m",`Release ${u}`],e);if(v.status!==0){if(s("git tag failed"),v.stderr.trim())console.error(v.stderr.trimEnd());return{exitCode:1}}if(m(`tagged ${u}`),!t.noPush&&h){C("pushing commit and tag...");let i=o("git",["push"],e);if(i.status!==0){if(s("git push failed"),i.stderr.trim())console.error(i.stderr.trimEnd());return{exitCode:1}}let g=o("git",["push","origin",u],e);if(g.status!==0){if(s(`pushing tag ${u} failed`),g.stderr.trim())console.error(g.stderr.trimEnd());return{exitCode:1}}m(`pushed commit and tag ${u}`)}else p("skipped push (commit and tag are local only).");if(!t.noPublish)T(e);return console.log(`
2
2
  ${G}${k}✓ released ${u}${a}`),{exitCode:0}}function T(t){let e=z("pantry","pantry");if(!e){p("`pantry` binary not found — skipping publish (the pushed tag's CI will publish).");return}if(o(e,["publish","--help"],t).status!==0){p("`pantry publish` is not available in the installed pantry yet — skipping."),console.log(` ${f}The pushed tag will trigger CI to publish to the registry.${a}`);return}C("publishing to pantry registry...");let r=o(e,["publish"],t);if(r.stdout.trim())console.log(r.stdout.trimEnd());if(r.status===0)m("published to pantry registry");else if(p("publish step failed — the pushed tag's CI can still publish."),r.stderr.trim())console.log(` ${f}${r.stderr.trim()}${a}`)}export{F as runRelease};
@@ -1,4 +1,4 @@
1
- import{Wb as oe,Xb as re}from"./chunk-415b756j.js";import{mc as I,nc as z,oc as q}from"./chunk-rqny4g8r.js";import{Kc as R,Lc as le}from"./chunk-hxd34yh9.js";import{Pc as ne}from"./chunk-a20hctx6.js";import d from"node:fs";import v from"node:path";import L from"node:process";le();var ue=async(...e)=>null;function W(e,o){let i=e.replace(/^v/,"").split("."),s=o.replace(/^v/,"").split(".");for(let t=0;t<Math.max(i.length,s.length);t++){let n=Number.parseInt(i[t]||"0",10),r=Number.parseInt(s[t]||"0",10);if(!Number.isNaN(n)&&!Number.isNaN(r)){if(n!==r)return r-n}else{let a=(s[t]||"").localeCompare(i[t]||"");if(a!==0)return a}}return 0}function se(e){if(e.includes("/")){let[o,...i]=e.split("/"),s=i.join("/"),t=o.replace(/\./g,"");if(o.includes("github.com")){let r=s.split("/");return r[r.length-1].replace(/[.-]/g,"").toLowerCase()}let n=s.replace(/[/.-]/g,"");return`${t}${n}`.toLowerCase()}return e.replace(/\./g,"").toLowerCase()}function ge(e,o){switch(e){case"versions":if(Array.isArray(o)&&o.length>0)return` /**
1
+ import{Xb as oe,Yb as re}from"./chunk-n7nj6jzj.js";import{nc as I,oc as z,pc as q}from"./chunk-bpb1md3m.js";import{Lc as R,Mc as le}from"./chunk-84px82t5.js";import{Qc as ne}from"./chunk-jzj5056d.js";import d from"node:fs";import v from"node:path";import L from"node:process";le();var ue=async(...e)=>null;function W(e,o){let i=e.replace(/^v/,"").split("."),s=o.replace(/^v/,"").split(".");for(let t=0;t<Math.max(i.length,s.length);t++){let n=Number.parseInt(i[t]||"0",10),r=Number.parseInt(s[t]||"0",10);if(!Number.isNaN(n)&&!Number.isNaN(r)){if(n!==r)return r-n}else{let a=(s[t]||"").localeCompare(i[t]||"");if(a!==0)return a}}return 0}function se(e){if(e.includes("/")){let[o,...i]=e.split("/"),s=i.join("/"),t=o.replace(/\./g,"");if(o.includes("github.com")){let r=s.split("/");return r[r.length-1].replace(/[.-]/g,"").toLowerCase()}let n=s.replace(/[/.-]/g,"");return`${t}${n}`.toLowerCase()}return e.replace(/\./g,"").toLowerCase()}function ge(e,o){switch(e){case"versions":if(Array.isArray(o)&&o.length>0)return` /**
2
2
  * Available versions from newest to oldest.
3
3
  * @see https://ts-pantry.netlify.app/usage for installation instructions
4
4
  */`;break;case"programs":if(Array.isArray(o)&&o.length>0)return` /**
@@ -31,12 +31,12 @@ import{Wb as oe,Xb as re}from"./chunk-415b756j.js";import{mc as I,nc as z,oc as
31
31
  export const ${n} = ${a}
32
32
 
33
33
  export type ${n.charAt(0).toUpperCase()+n.slice(1)} = typeof ${n}
34
- `}function X(e){let o=e.replace(/\{\{[^}]*\}\}/g,"").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");if(!o||o.length===0)return"package";let i=o.replace(/[^\w.-]/g,"-");if(i.length>200)i=`${i.substring(0,150)}...${i.substring(i.length-45)}`;return i}function B(e,o,i){if(!d.existsSync(e))d.mkdirSync(e,{recursive:!0});let s;if(o.includes("/")){let r=o.split("/");if(r.some((P)=>!P||P===".."||P==="."||P.includes("\x00")||P.includes("\\")))throw Error(`Invalid domain name (contains path-traversal): ${o}`);let a=r[0],l=r.slice(1),c=v.join(e,a,...l.slice(0,-1)),y=v.resolve(e);if(!v.resolve(c).startsWith(`${y}${v.sep}`)&&v.resolve(c)!==y)throw Error(`Path traversal detected for ${o}`);if(!d.existsSync(c))d.mkdirSync(c,{recursive:!0});let S=X(l[l.length-1]);s=v.join(c,`${S}.ts`)}else{let r=o.replace(/\./g,"");s=v.join(e,`${r}.ts`)}let t={...i};delete t.fetchedAt;let n=de(t,o);return d.writeFileSync(s,n),s}function je(e,o){if(!d.existsSync(e))return[];let i=new Set;for(let r of o)if(r.includes("/")){let a=r.split("/"),l=a[0],c=a.slice(1),y=X(c[c.length-1]);i.add(v.resolve(e,l,...c.slice(0,-1),`${y}.ts`))}else{let a=r.replace(/\./g,"");i.add(v.resolve(e,`${a}.ts`))}let s=new Set(["index.ts","aliases.ts","types.ts"]),t=[];function n(r){if(!d.existsSync(r))return;for(let a of d.readdirSync(r,{withFileTypes:!0})){let l=v.join(r,a.name);if(a.isDirectory()){if(n(l),d.existsSync(l)&&d.readdirSync(l).length===0)d.rmdirSync(l)}else if(a.name.endsWith(".ts")&&!s.has(a.name)){if(!i.has(v.resolve(l)))d.unlinkSync(l),t.push(l)}}}return n(e),t}function pe(e,o={}){try{let i=o.cacheDir||I;if(o.cache===!1)return console.log(`Cache disabled for ${e}, skipping cache check`),null;let t=(R[e]||e).replace(/\//g,"-"),n=v.join(i,`${t}.json`);if(console.log(`Checking for cache file: ${n}`),!d.existsSync(n))return null;let r;try{r=JSON.parse(d.readFileSync(n,"utf-8"))}catch{try{d.unlinkSync(n)}catch{}return null}if(!r.fetchedAt)return console.log(`Cache for ${e} missing fetchedAt timestamp, invalidating`),null;if(["Crafters of fine Open Source products","Go home.","Package information for","pkgx package","Loading...","Please wait..."].some((P)=>r.description&&r.description.includes(P)))return console.log(`Cache for ${e} has generic description "${r.description}", invalidating`),null;if(!r.versions||r.versions.length===0)return console.log(`Cache for ${e} has no versions, invalidating`),null;let y=(o.cacheExpirationMinutes||z)*60*1000,S=Date.now();if(S-r.fetchedAt>y)return console.log(`Cache for ${e} has expired (age: ${Math.round((S-r.fetchedAt)/60000)} minutes)`),null;return console.log(`Using cached data for ${e} (age: ${Math.round((S-r.fetchedAt)/60000)} minutes)`),{packageInfo:r,filePath:n}}catch(i){return console.error(`Error reading cache for ${e}:`,i),null}}function fe(e,o,i={}){let s={...o,fetchedAt:Date.now()},t=i.cacheDir||I;if(!d.existsSync(t))d.mkdirSync(t,{recursive:!0});let n=e.replace(/\//g,"-"),r=v.join(t,`${n}.json`);d.writeFileSync(r,JSON.stringify(s,null,2));let a=i.outputDir||"packages";if(!d.existsSync(a))d.mkdirSync(a,{recursive:!0});let l=B(a,e,o);return{cachePath:r,outputPath:l}}function ce(){return Promise.resolve()}async function Ce(e={}){let o=e.apiUrl||"https://api.github.com/repos/pkgxdev/pantry/contents/projects";try{console.log(`Fetching projects from GitHub API: ${o}`);let i=await fetch(o,{headers:{Accept:"application/vnd.github.v3+json"}});if(!i.ok)throw Error(`Failed to fetch from GitHub API: ${i.statusText}`);let t=(await i.json()).filter((n)=>n.type==="dir").map((n)=>({name:n.name,url:n.html_url}));return console.log(`Retrieved ${t.length} projects from GitHub API`),t.sort((n,r)=>n.name.localeCompare(r.name)),t}catch(i){throw console.error("Error fetching projects from GitHub API:",i),i}}async function Y(e,o={}){let i=e,s=e;if(e.includes("/")){let[t,n]=e.split("/");console.log(`Identified nested package: domain=${t}, name=${n}`)}if(R[e])console.log(`'${e}' is an alias for '${R[e]}', redirecting...`),s=R[e],e=R[e];try{let t=o.timeout||q,n=await ue(e,{timeout:t,useClientSideScraper:!0});if(!n||typeof n!=="object")return te(e,i,s);let r={name:n.displayName||n.name||e.split("/").pop()||e,domain:n.domain||e,description:n.description||n.brief||"",packageYmlUrl:`https://github.com/pkgxdev/pantry/tree/main/projects/${e}/package.yml`,homepageUrl:n.homepage||"",githubUrl:n.github||"",installCommand:`pantry install ${e}`,pantryInstallCommand:`pantry install ${e}`,programs:n.provides||[],companions:Array.isArray(n.companions)?n.companions:[],dependencies:Array.isArray(n.dependencies)?n.dependencies:[],buildDependencies:n.buildDependencies||[],versions:n.versions||[],aliases:[]};if(!r.versions||r.versions.length===0){let a=r.domain||e;if(!["apache.org","breakfastquay.com","catb.org","bloomreach.com","cairographics.org","certifi.io","charm.sh","aws.amazon.com","google.com","microsoft.com","mozilla.org","freedesktop.org","gnome.org","kde.org","sourceforge.net","sf.net"].some((c)=>a.startsWith(c)))try{let c=r.domain||e,y=await me(c);r.versions=y}catch(c){console.warn(`Failed to fetch versions for ${e} from GitHub API:`,c),r.versions=[]}}if(r.versions&&r.versions.length>0)try{r.versions.sort((a,l)=>{try{return-1*Bun.semver.order(a,l)}catch{return W(a,l)}})}catch(a){console.warn(`Warning: Failed to sort versions for ${e} using semver:`,a)}return r.name=r.name||i,r.domain=r.domain||s,r.programs=r.programs||[],r.companions=r.companions||[],r.dependencies=r.dependencies||[],r.versions=r.versions||[],{packageInfo:r,originalName:i,fullDomainName:s}}catch(t){return console.error(`Error in fetchPantryPackage for ${e}:`,t),te(e,i,s)}}async function me(e){try{let{shouldProceedWithGitHubRequest:o,saveRateLimitInfo:i}=await import("./chunk-7qhxan0b.js");if(!o())return console.warn("Skipping GitHub API request for versions due to rate limiting"),[];let s=await fetch(`https://api.github.com/repos/pkgxdev/pantry/contents/projects/${e}`,{headers:{Accept:"application/vnd.github.v3+json","User-Agent":"ts-pantry"},signal:AbortSignal.timeout(15000)});if(i(s.headers),s.status===403){let n=s.headers.get("X-RateLimit-Remaining"),r=s.headers.get("X-RateLimit-Reset"),a=r?new Date(Number(r)*1000).toLocaleString():"unknown";return console.warn(`GitHub API rate limit exceeded. Remaining: ${n||0}, Reset: ${a}`),[]}if(!s.ok)throw Error(`GitHub API responded with ${s.status}: ${s.statusText}`);return(await s.json()).filter((n)=>n.name.match(/^v\d+/)).map((n)=>n.name)}catch(o){return console.error("Error fetching versions from GitHub:",o),[]}}var $e=300000,G=null;function ye(){let e=async(o)=>{if(console.log(`
35
- Received ${o} signal. Cleaning up resources...`),G)clearInterval(G);await ce(),console.log("Resources cleaned up. Exiting."),setTimeout(()=>{console.log("Forcing process exit..."),L.exit(0)},5000)};L.on("SIGINT",()=>e("SIGINT")),L.on("SIGTERM",()=>e("SIGTERM")),L.on("uncaughtException",(o)=>{console.error("Uncaught exception:",o),e("uncaughtException")})}if(typeof Bun<"u"&&Bun.main===import.meta.path)ye(),L.on("uncaughtException",(e)=>{let o=String(e);if(console.error("Uncaught exception caught:",e.message),e.message.includes("No target found for targetId")||e.message.includes("Assertion error")||e.message.includes("Target page, context or browser has been closed")||e.message.includes("Failed to connect")||e.message.includes("Connection closed")||e.message.includes("Protocol error")||o.includes("WebSocket connection closed")||e.message.includes("Browser has been closed")){console.error("Browser/network connection error detected, continuing execution...");return}console.error("Non-browser error, exiting..."),L.exit(1)}),L.on("unhandledRejection",(e,o)=>{let i=String(e);if(console.error("Unhandled rejection caught:",i),i.includes("No target found for targetId")||i.includes("Assertion error")||i.includes("Target page, context or browser has been closed")||i.includes("Failed to connect")||i.includes("Connection closed")||i.includes("Protocol error")||i.includes("WebSocket connection closed")||i.includes("Browser has been closed")){console.error("Browser/network connection error in promise, continuing execution...");return}console.error("Non-browser promise rejection, exiting..."),L.exit(1)});function Ee(){if(G)clearInterval(G);G=setInterval(()=>{console.log("Running periodic browser resource cleanup..."),ce().then(()=>console.log("Periodic cleanup completed")).catch((e)=>console.error("Error during periodic cleanup:",e))},$e)}async function Te(e={}){let o=e.timeout||q,i=e.outputDir||"packages",s=e.cacheDir||I,t=e.cache!==!1,n=e.cacheExpirationMinutes||z,r=Math.min(e.concurrency||6,8),a=e.pantryDir||"src/pantry";if(!e.outputJson)console.log(`Starting bulk fetch with concurrency: ${r}, timeout: ${o}ms`);let l=Date.now(),c=[];try{if(!e.outputJson)console.log("Scanning local pantry for packages...");try{if(c=await we(a),!e.outputJson)console.log(`Found ${c.length} packages in local pantry`)}catch(h){if(!e.outputJson)console.warn("Failed to scan local pantry, falling back to consts:",h);try{let{ALL_KNOWN_PACKAGES:g}=await import("./chunk-7tw8z583.js");if(c=[...g].filter((p)=>p&&p!=="undefined"&&p!=="aliases"&&p!=="index"),!e.outputJson)console.log(`Using comprehensive package list: ${c.length} packages`)}catch(g){if(!e.outputJson)console.warn("Failed to load consts, falling back to GitHub API:",g);try{let p=await fetch("https://api.github.com/repos/pkgxdev/pantry/contents/projects",{headers:{"User-Agent":"ts-pantry-fetcher",Accept:"application/vnd.github.v3+json"}});if(p.ok){let A=(await p.json()).filter((f)=>f.type==="dir").map((f)=>f.name).sort();if(!e.outputJson)console.log(`Retrieved ${A.length} projects from GitHub API`);c=A}else throw Error(`GitHub API returned ${p.status}`)}catch(p){if(!e.outputJson)console.warn("Failed to fetch from GitHub API, falling back to local discovery:",p);if(d.existsSync(i))c=d.readdirSync(i).filter((A)=>A.endsWith(".ts")).map((A)=>v.basename(A,".ts")),console.log(`Found ${c.length} existing packages`)}}}if(c.length===0)return console.error("No packages found to process"),[];let y=["android.com","apache.org","akuity.io","alsa-project.org","anchore.com","aomedia.googlesource.com","apollographql.com","facebook.com","google.com","microsoft.com","mozilla.org","sourceforge.net","x.org","xiph.org","yui.github.io","crates.io","gitlab.com","github.com"],S=new Set,P=c.filter((h)=>h.startsWith("github.com/"));for(let h of P){let g=h.split("/");if(g.length>2){let p=g.slice(0,2).join("/");S.add(p)}}if(c=c.filter((h)=>{if(h.endsWith("/.pkgroot"))return console.log(`Filtering out .pkgroot marker: ${h}`),!1;if(h.endsWith("/README.rst"))return console.log(`Filtering out README.rst documentation: ${h}`),!1;if(h==="agwa.name")return console.log("Filtering out standalone agwa.name - only agwa.name/git-crypt is valid"),!1;if(y.includes(h))return console.log(`Filtering out parent domain ${h} - only has nested packages`),!1;if(S.has(h))return console.log(`Filtering out GitHub parent path ${h} - only has nested packages`),!1;if(h==="undefined"||h==="aliases"||h==="index")return!1;return!0}),console.log(`Found ${c.length} packages to process`),e.limit&&e.limit>0)c=c.slice(0,e.limit),console.log(`Limited to ${c.length} packages`);let w=[],D=[],x=0,k=Math.min(r,6),u=[];for(let h=0;h<c.length;h+=k)u.push(c.slice(h,h+k));if(!e.outputJson)console.log(`Processing ${c.length} packages in ${u.length} batches...`);for(let h=0;h<u.length;h++){let g=u[h];if(!e.outputJson)console.log(`Processing batch ${h+1}/${u.length} (${g.length} packages)`);let p=g.map(async(m)=>{try{let O=v.join(s,`${m.replace(/\//g,"-")}.json`);if(t&&d.existsSync(O)){let E=d.statSync(O),J=(Date.now()-E.mtime.getTime())/60000;if(J<n){if(!e.outputJson)console.log(`Using cached data for ${m} (age: ${Math.round(J)} minutes)`);try{let H=JSON.parse(d.readFileSync(O,"utf-8"));delete H.fetchedAt;let V=B(i,m,H);if(!e.outputJson)console.log(`Using cached data for ${m} (saved to ${V})`);return{success:!0,packageName:m}}catch{console.warn(`Cache file corrupted for ${m}, will refetch`)}}}let j=await ve(m,{...e,pantryDir:a,timeout:o,cache:t,cacheDir:s,cacheExpirationMinutes:n});if(j){let{outputPath:E}=fe(m,j.packageInfo,{cacheDir:s,outputDir:i,cache:t});if(!e.outputJson)console.log(`Successfully processed ${m} (saved to ${E})`);return{success:!0,packageName:m}}else return console.warn(`Failed to fetch ${m}`),{success:!1,packageName:m}}catch(O){return console.error(`Error processing ${m}:`,O),{success:!1,packageName:m}}}),b=await Promise.allSettled(p);for(let m of b)if(x++,m.status==="fulfilled")if(m.value.success)w.push(m.value.packageName);else D.push(m.value.packageName);else console.error("Batch promise rejected:",m.reason),D.push("unknown");let A=Math.round((Date.now()-l)/1000),f=Math.round(x/A*10)/10,C=Math.round((c.length-x)/f);if(!e.outputJson)console.log(`Batch ${h+1}/${u.length} complete. Progress: ${x}/${c.length} (${Math.round(x/c.length*100)}%) | Success: ${w.length} | Failed: ${D.length} | Rate: ${f}/s | ETA: ${C}s`);if(h<u.length-1)await new Promise((m)=>setTimeout(m,1000))}let F=Math.round((Date.now()-l)/1000);if(!e.outputJson){if(console.log(`
34
+ `}function X(e){let o=e.replace(/\{\{[^}]*\}\}/g,"").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");if(!o||o.length===0)return"package";let i=o.replace(/[^\w.-]/g,"-");if(i.length>200)i=`${i.substring(0,150)}...${i.substring(i.length-45)}`;return i}function B(e,o,i){if(!d.existsSync(e))d.mkdirSync(e,{recursive:!0});let s;if(o.includes("/")){let r=o.split("/");if(r.some((P)=>!P||P===".."||P==="."||P.includes("\x00")||P.includes("\\")))throw Error(`Invalid domain name (contains path-traversal): ${o}`);let a=r[0],l=r.slice(1),c=v.join(e,a,...l.slice(0,-1)),y=v.resolve(e);if(!v.resolve(c).startsWith(`${y}${v.sep}`)&&v.resolve(c)!==y)throw Error(`Path traversal detected for ${o}`);if(!d.existsSync(c))d.mkdirSync(c,{recursive:!0});let S=X(l[l.length-1]);s=v.join(c,`${S}.ts`)}else{let r=o.replace(/\./g,"");s=v.join(e,`${r}.ts`)}let t={...i};delete t.fetchedAt;let n=de(t,o);return d.writeFileSync(s,n),s}function je(e,o){if(!d.existsSync(e))return[];let i=new Set;for(let r of o)if(r.includes("/")){let a=r.split("/"),l=a[0],c=a.slice(1),y=X(c[c.length-1]);i.add(v.resolve(e,l,...c.slice(0,-1),`${y}.ts`))}else{let a=r.replace(/\./g,"");i.add(v.resolve(e,`${a}.ts`))}let s=new Set(["index.ts","aliases.ts","types.ts"]),t=[];function n(r){if(!d.existsSync(r))return;for(let a of d.readdirSync(r,{withFileTypes:!0})){let l=v.join(r,a.name);if(a.isDirectory()){if(n(l),d.existsSync(l)&&d.readdirSync(l).length===0)d.rmdirSync(l)}else if(a.name.endsWith(".ts")&&!s.has(a.name)){if(!i.has(v.resolve(l)))d.unlinkSync(l),t.push(l)}}}return n(e),t}function pe(e,o={}){try{let i=o.cacheDir||I;if(o.cache===!1)return console.log(`Cache disabled for ${e}, skipping cache check`),null;let t=(R[e]||e).replace(/\//g,"-"),n=v.join(i,`${t}.json`);if(console.log(`Checking for cache file: ${n}`),!d.existsSync(n))return null;let r;try{r=JSON.parse(d.readFileSync(n,"utf-8"))}catch{try{d.unlinkSync(n)}catch{}return null}if(!r.fetchedAt)return console.log(`Cache for ${e} missing fetchedAt timestamp, invalidating`),null;if(["Crafters of fine Open Source products","Go home.","Package information for","pkgx package","Loading...","Please wait..."].some((P)=>r.description&&r.description.includes(P)))return console.log(`Cache for ${e} has generic description "${r.description}", invalidating`),null;if(!r.versions||r.versions.length===0)return console.log(`Cache for ${e} has no versions, invalidating`),null;let y=(o.cacheExpirationMinutes||z)*60*1000,S=Date.now();if(S-r.fetchedAt>y)return console.log(`Cache for ${e} has expired (age: ${Math.round((S-r.fetchedAt)/60000)} minutes)`),null;return console.log(`Using cached data for ${e} (age: ${Math.round((S-r.fetchedAt)/60000)} minutes)`),{packageInfo:r,filePath:n}}catch(i){return console.error(`Error reading cache for ${e}:`,i),null}}function fe(e,o,i={}){let s={...o,fetchedAt:Date.now()},t=i.cacheDir||I;if(!d.existsSync(t))d.mkdirSync(t,{recursive:!0});let n=e.replace(/\//g,"-"),r=v.join(t,`${n}.json`);d.writeFileSync(r,JSON.stringify(s,null,2));let a=i.outputDir||"packages";if(!d.existsSync(a))d.mkdirSync(a,{recursive:!0});let l=B(a,e,o);return{cachePath:r,outputPath:l}}function ce(){return Promise.resolve()}async function Ce(e={}){let o=e.apiUrl||"https://api.github.com/repos/pkgxdev/pantry/contents/projects";try{console.log(`Fetching projects from GitHub API: ${o}`);let i=await fetch(o,{headers:{Accept:"application/vnd.github.v3+json"}});if(!i.ok)throw Error(`Failed to fetch from GitHub API: ${i.statusText}`);let t=(await i.json()).filter((n)=>n.type==="dir").map((n)=>({name:n.name,url:n.html_url}));return console.log(`Retrieved ${t.length} projects from GitHub API`),t.sort((n,r)=>n.name.localeCompare(r.name)),t}catch(i){throw console.error("Error fetching projects from GitHub API:",i),i}}async function Y(e,o={}){let i=e,s=e;if(e.includes("/")){let[t,n]=e.split("/");console.log(`Identified nested package: domain=${t}, name=${n}`)}if(R[e])console.log(`'${e}' is an alias for '${R[e]}', redirecting...`),s=R[e],e=R[e];try{let t=o.timeout||q,n=await ue(e,{timeout:t,useClientSideScraper:!0});if(!n||typeof n!=="object")return te(e,i,s);let r={name:n.displayName||n.name||e.split("/").pop()||e,domain:n.domain||e,description:n.description||n.brief||"",packageYmlUrl:`https://github.com/pkgxdev/pantry/tree/main/projects/${e}/package.yml`,homepageUrl:n.homepage||"",githubUrl:n.github||"",installCommand:`pantry install ${e}`,pantryInstallCommand:`pantry install ${e}`,programs:n.provides||[],companions:Array.isArray(n.companions)?n.companions:[],dependencies:Array.isArray(n.dependencies)?n.dependencies:[],buildDependencies:n.buildDependencies||[],versions:n.versions||[],aliases:[]};if(!r.versions||r.versions.length===0){let a=r.domain||e;if(!["apache.org","breakfastquay.com","catb.org","bloomreach.com","cairographics.org","certifi.io","charm.sh","aws.amazon.com","google.com","microsoft.com","mozilla.org","freedesktop.org","gnome.org","kde.org","sourceforge.net","sf.net"].some((c)=>a.startsWith(c)))try{let c=r.domain||e,y=await me(c);r.versions=y}catch(c){console.warn(`Failed to fetch versions for ${e} from GitHub API:`,c),r.versions=[]}}if(r.versions&&r.versions.length>0)try{r.versions.sort((a,l)=>{try{return-1*Bun.semver.order(a,l)}catch{return W(a,l)}})}catch(a){console.warn(`Warning: Failed to sort versions for ${e} using semver:`,a)}return r.name=r.name||i,r.domain=r.domain||s,r.programs=r.programs||[],r.companions=r.companions||[],r.dependencies=r.dependencies||[],r.versions=r.versions||[],{packageInfo:r,originalName:i,fullDomainName:s}}catch(t){return console.error(`Error in fetchPantryPackage for ${e}:`,t),te(e,i,s)}}async function me(e){try{let{shouldProceedWithGitHubRequest:o,saveRateLimitInfo:i}=await import("./chunk-xq54tyxy.js");if(!o())return console.warn("Skipping GitHub API request for versions due to rate limiting"),[];let s=await fetch(`https://api.github.com/repos/pkgxdev/pantry/contents/projects/${e}`,{headers:{Accept:"application/vnd.github.v3+json","User-Agent":"ts-pantry"},signal:AbortSignal.timeout(15000)});if(i(s.headers),s.status===403){let n=s.headers.get("X-RateLimit-Remaining"),r=s.headers.get("X-RateLimit-Reset"),a=r?new Date(Number(r)*1000).toLocaleString():"unknown";return console.warn(`GitHub API rate limit exceeded. Remaining: ${n||0}, Reset: ${a}`),[]}if(!s.ok)throw Error(`GitHub API responded with ${s.status}: ${s.statusText}`);return(await s.json()).filter((n)=>n.name.match(/^v\d+/)).map((n)=>n.name)}catch(o){return console.error("Error fetching versions from GitHub:",o),[]}}var $e=300000,G=null;function ye(){let e=async(o)=>{if(console.log(`
35
+ Received ${o} signal. Cleaning up resources...`),G)clearInterval(G);await ce(),console.log("Resources cleaned up. Exiting."),setTimeout(()=>{console.log("Forcing process exit..."),L.exit(0)},5000)};L.on("SIGINT",()=>e("SIGINT")),L.on("SIGTERM",()=>e("SIGTERM")),L.on("uncaughtException",(o)=>{console.error("Uncaught exception:",o),e("uncaughtException")})}if(typeof Bun<"u"&&Bun.main===import.meta.path)ye(),L.on("uncaughtException",(e)=>{let o=String(e);if(console.error("Uncaught exception caught:",e.message),e.message.includes("No target found for targetId")||e.message.includes("Assertion error")||e.message.includes("Target page, context or browser has been closed")||e.message.includes("Failed to connect")||e.message.includes("Connection closed")||e.message.includes("Protocol error")||o.includes("WebSocket connection closed")||e.message.includes("Browser has been closed")){console.error("Browser/network connection error detected, continuing execution...");return}console.error("Non-browser error, exiting..."),L.exit(1)}),L.on("unhandledRejection",(e,o)=>{let i=String(e);if(console.error("Unhandled rejection caught:",i),i.includes("No target found for targetId")||i.includes("Assertion error")||i.includes("Target page, context or browser has been closed")||i.includes("Failed to connect")||i.includes("Connection closed")||i.includes("Protocol error")||i.includes("WebSocket connection closed")||i.includes("Browser has been closed")){console.error("Browser/network connection error in promise, continuing execution...");return}console.error("Non-browser promise rejection, exiting..."),L.exit(1)});function Ee(){if(G)clearInterval(G);G=setInterval(()=>{console.log("Running periodic browser resource cleanup..."),ce().then(()=>console.log("Periodic cleanup completed")).catch((e)=>console.error("Error during periodic cleanup:",e))},$e)}async function Te(e={}){let o=e.timeout||q,i=e.outputDir||"packages",s=e.cacheDir||I,t=e.cache!==!1,n=e.cacheExpirationMinutes||z,r=Math.min(e.concurrency||6,8),a=e.pantryDir||"src/pantry";if(!e.outputJson)console.log(`Starting bulk fetch with concurrency: ${r}, timeout: ${o}ms`);let l=Date.now(),c=[];try{if(!e.outputJson)console.log("Scanning local pantry for packages...");try{if(c=await we(a),!e.outputJson)console.log(`Found ${c.length} packages in local pantry`)}catch(h){if(!e.outputJson)console.warn("Failed to scan local pantry, falling back to consts:",h);try{let{ALL_KNOWN_PACKAGES:g}=await import("./chunk-cy7hx5dk.js");if(c=[...g].filter((p)=>p&&p!=="undefined"&&p!=="aliases"&&p!=="index"),!e.outputJson)console.log(`Using comprehensive package list: ${c.length} packages`)}catch(g){if(!e.outputJson)console.warn("Failed to load consts, falling back to GitHub API:",g);try{let p=await fetch("https://api.github.com/repos/pkgxdev/pantry/contents/projects",{headers:{"User-Agent":"ts-pantry-fetcher",Accept:"application/vnd.github.v3+json"}});if(p.ok){let A=(await p.json()).filter((f)=>f.type==="dir").map((f)=>f.name).sort();if(!e.outputJson)console.log(`Retrieved ${A.length} projects from GitHub API`);c=A}else throw Error(`GitHub API returned ${p.status}`)}catch(p){if(!e.outputJson)console.warn("Failed to fetch from GitHub API, falling back to local discovery:",p);if(d.existsSync(i))c=d.readdirSync(i).filter((A)=>A.endsWith(".ts")).map((A)=>v.basename(A,".ts")),console.log(`Found ${c.length} existing packages`)}}}if(c.length===0)return console.error("No packages found to process"),[];let y=["android.com","apache.org","akuity.io","alsa-project.org","anchore.com","aomedia.googlesource.com","apollographql.com","facebook.com","google.com","microsoft.com","mozilla.org","sourceforge.net","x.org","xiph.org","yui.github.io","crates.io","gitlab.com","github.com"],S=new Set,P=c.filter((h)=>h.startsWith("github.com/"));for(let h of P){let g=h.split("/");if(g.length>2){let p=g.slice(0,2).join("/");S.add(p)}}if(c=c.filter((h)=>{if(h.endsWith("/.pkgroot"))return console.log(`Filtering out .pkgroot marker: ${h}`),!1;if(h.endsWith("/README.rst"))return console.log(`Filtering out README.rst documentation: ${h}`),!1;if(h==="agwa.name")return console.log("Filtering out standalone agwa.name - only agwa.name/git-crypt is valid"),!1;if(y.includes(h))return console.log(`Filtering out parent domain ${h} - only has nested packages`),!1;if(S.has(h))return console.log(`Filtering out GitHub parent path ${h} - only has nested packages`),!1;if(h==="undefined"||h==="aliases"||h==="index")return!1;return!0}),console.log(`Found ${c.length} packages to process`),e.limit&&e.limit>0)c=c.slice(0,e.limit),console.log(`Limited to ${c.length} packages`);let w=[],D=[],x=0,k=Math.min(r,6),u=[];for(let h=0;h<c.length;h+=k)u.push(c.slice(h,h+k));if(!e.outputJson)console.log(`Processing ${c.length} packages in ${u.length} batches...`);for(let h=0;h<u.length;h++){let g=u[h];if(!e.outputJson)console.log(`Processing batch ${h+1}/${u.length} (${g.length} packages)`);let p=g.map(async(m)=>{try{let O=v.join(s,`${m.replace(/\//g,"-")}.json`);if(t&&d.existsSync(O)){let E=d.statSync(O),J=(Date.now()-E.mtime.getTime())/60000;if(J<n){if(!e.outputJson)console.log(`Using cached data for ${m} (age: ${Math.round(J)} minutes)`);try{let H=JSON.parse(d.readFileSync(O,"utf-8"));delete H.fetchedAt;let V=B(i,m,H);if(!e.outputJson)console.log(`Using cached data for ${m} (saved to ${V})`);return{success:!0,packageName:m}}catch{console.warn(`Cache file corrupted for ${m}, will refetch`)}}}let j=await ve(m,{...e,pantryDir:a,timeout:o,cache:t,cacheDir:s,cacheExpirationMinutes:n});if(j){let{outputPath:E}=fe(m,j.packageInfo,{cacheDir:s,outputDir:i,cache:t});if(!e.outputJson)console.log(`Successfully processed ${m} (saved to ${E})`);return{success:!0,packageName:m}}else return console.warn(`Failed to fetch ${m}`),{success:!1,packageName:m}}catch(O){return console.error(`Error processing ${m}:`,O),{success:!1,packageName:m}}}),b=await Promise.allSettled(p);for(let m of b)if(x++,m.status==="fulfilled")if(m.value.success)w.push(m.value.packageName);else D.push(m.value.packageName);else console.error("Batch promise rejected:",m.reason),D.push("unknown");let A=Math.round((Date.now()-l)/1000),f=Math.round(x/A*10)/10,C=Math.round((c.length-x)/f);if(!e.outputJson)console.log(`Batch ${h+1}/${u.length} complete. Progress: ${x}/${c.length} (${Math.round(x/c.length*100)}%) | Success: ${w.length} | Failed: ${D.length} | Rate: ${f}/s | ETA: ${C}s`);if(h<u.length-1)await new Promise((m)=>setTimeout(m,1000))}let F=Math.round((Date.now()-l)/1000);if(!e.outputJson){if(console.log(`
36
36
  Completed in ${F}s. Successfully processed: ${w.length}, Failed: ${D.length}`),D.length>0)console.log(`Failed packages: ${D.slice(0,10).join(", ")}${D.length>10?` ... and ${D.length-10} more`:""}`)}return w}catch(y){return console.error("Error in fetchAndSaveAllPackages:",y),[]}}function te(e,o,i){let s=e.split("/"),t=s[0];return{packageInfo:{name:(s.length>1?s.slice(1).join("/"):null)||e,domain:t,description:`Package information for ${e}`,packageYmlUrl:"",homepageUrl:"",githubUrl:"",installCommand:`pantry install ${e}`,pantryInstallCommand:`pantry install ${e}`,programs:[],companions:[],dependencies:[],versions:[]},originalName:o,fullDomainName:i}}async function Pe(e,o,i,s=!1,t=1,n=3,r=!1,a={}){try{let l=a.cache!==!1,c=a.cacheDir||I;if(!l)console.log(`Cache disabled for ${e}, will fetch directly`);else{let x=pe(e,{cacheDir:c,cacheExpirationMinutes:a.cacheExpirationMinutes,cache:a.cache});if(x){let{packageInfo:k}=x,u=k.domain||e,F=k.aliases||[],h=B(o,e,k);return console.log(`Using cached data for ${e} (saved to ${h})`),{success:!0,fullDomainName:u,aliases:F,filePath:h}}}let S=i+(t-1)*1e4;console.log(`Using timeout for ${e} (attempt ${t}): ${S}ms`);let P=S,w,D=new Promise((x,k)=>{w=setTimeout(()=>{console.error(`Operation timeout for ${e} after ${P}ms`),k(Error(`Operation timeout after ${P}ms`))},P)});if(e.includes("/")){let x=e.split("/"),k=x[0],u=x.slice(1).join("/");console.log(`Processing nested package: domain=${k}, subPath=${u}`);try{let F=Y(`${k}/${u}`,{timeout:S,browser:a.browser}),h=await Promise.race([F,D]);clearTimeout(w);let{packageInfo:g,originalName:p,fullDomainName:b}=h;if(g.versions&&g.versions.length>0)try{g.versions.sort((j,E)=>{try{return-1*Bun.semver.order(j,E)}catch{return W(j,E)}})}catch(j){console.warn(`Warning: Failed to sort versions for ${e} using semver:`,j)}let A=b.replace(/\//g,"-"),f=[];if(g.aliases&&g.aliases.length>0)f.push(...g.aliases);for(let[j,E]of Object.entries(R))if(E===b&&!f.includes(j))f.push(j);if(p!==b&&!f.includes(p))f.push(p);let C=["cli","app","tool","server","client","api","lib","core"];if(!f.includes(u)&&!C.includes(u.toLowerCase()))f.push(u);let m={...g,fullPath:e,aliases:f.length>0?f:[]};if(l){let j=v.join(c,`${A}.json`),E={...m,fetchedAt:Date.now()};if(!d.existsSync(c))d.mkdirSync(c,{recursive:!0});d.writeFileSync(j,JSON.stringify(E,null,2)),console.log(`Saved package data to cache: ${j}`)}let O=B(o,b,m);return console.log(`Successfully saved nested package ${e} to ${O} with aliases: ${f.join(", ")||"none"}`),{success:!0,fullDomainName:b,aliases:f,filePath:O}}catch(F){if(clearTimeout(w),F.toString().includes("404")||F.toString().includes("Not Found"))return console.error(`Package ${e} returned 404 Not Found.`),console.error(`Skipping ${e} to avoid overwriting existing files.`),{success:!1,fullDomainName:e};throw F}}else try{let x=Y(e,{timeout:S,browser:a.browser}),k=await Promise.race([x,D]);clearTimeout(w);let{packageInfo:u,originalName:F,fullDomainName:h}=k,g=u.description&&u.description.trim()!=="",p=u.versions&&u.versions.length>0,b=u.programs&&u.programs.length>0,A=u.packageYmlUrl&&u.packageYmlUrl.length>0,f=u.dependencies&&u.dependencies.length>0,C=u.companions&&u.companions.length>0,m=g&&(u.description.toLowerCase().trim()==="go home."||u.description.toLowerCase().trim()==="page not found"||u.description.toLowerCase().trim()==="not found"||u.description.toLowerCase().trim()==="404"||u.description.toLowerCase().trim()==="error"),O=g&&!m,j=p||b||A||f||C,E=u.domain&&u.domain.includes(".");if(!(O||j||E))return console.error(`Package ${e} appears to have no meaningful data. Skipping to avoid creating empty files.`),{success:!1,fullDomainName:e};let H=u.name&&u.name!==h&&u.name!==h.split("/")[0]&&u.name.length>1&&!u.name.includes("/")?X(u.name):null,V=h.replace(/\//g,"-"),_=H?v.join(o,`${H}.ts`):v.join(o,`${V}.ts`);if(d.existsSync(_)){let T=d.readFileSync(_,"utf-8"),M=T.includes("dependencies: [")&&!T.includes("dependencies: [] as const"),Q=u.dependencies.length===0,N=!T.includes("description: 'Package information for")&&!T.includes("description: '' as const"),ee=u.description.includes("Package information for")||u.description.trim()==="";if(M&&Q||N&&ee)return console.warn(`⚠️ Existing file ${_} has better data than new fetch. Skipping to prevent data loss.`),console.warn(` Existing deps: ${M}, New deps: ${!Q}`),console.warn(` Existing desc: ${N}, New desc: ${!ee}`),{success:!1,fullDomainName:e}}if(u.versions&&u.versions.length>0)try{u.versions.sort((T,M)=>{try{return-1*Bun.semver.order(T,M)}catch{return W(T,M)}})}catch(T){console.warn(`Warning: Failed to sort versions for ${e} using semver:`,T)}let ae=h.replace(/\//g,"-"),U=[];if(u.aliases&&u.aliases.length>0)U.push(...u.aliases);for(let[T,M]of Object.entries(R))if(M===h&&!U.includes(T))U.push(T);if(F!==h&&!U.includes(F))U.push(F);let Z={...u,fullPath:e,aliases:U.length>0?U:[]};if(l){let T=v.join(c,`${ae}.json`),M={...Z,fetchedAt:Date.now()};if(!d.existsSync(c))d.mkdirSync(c,{recursive:!0});d.writeFileSync(T,JSON.stringify(M,null,2)),console.log(`Saved package data to cache: ${T}`)}let K=B(o,h,Z);return console.log(`Successfully saved ${e} to ${K} with aliases: ${U.join(", ")||"none"}`),{success:!0,fullDomainName:h,aliases:U,filePath:K}}catch(x){if(clearTimeout(w),x.toString().includes("404")||x.toString().includes("Not Found"))return console.error(`Package ${e} returned 404 Not Found. Skipping to avoid overwriting existing files.`),{success:!1,fullDomainName:e};throw x}}catch(l){let c=String(l),y=c.includes("Operation timed out after")||c.includes("Operation timeout after")||c.includes("timeout")||c.includes("Timeout")||c.includes("Navigation timeout"),S=c.includes("No target found")||c.includes("targetId")||c.includes("Target page, context or browser has been closed")||c.includes("Protocol error")||c.includes("Connection closed")||c.includes("Assertion error")||c.includes("Browser has been closed")||c.includes("Target closed")||c.includes("Session closed")||c.includes("WebSocket connection closed");if(y)console.error(`Timeout error for ${e}:`,c.substring(0,200)),await new Promise((w)=>setTimeout(w,1000*t));else if(S){if(console.error(`Browser connection error for ${e}:`,c.substring(0,200)),a.browser)try{await a.browser.close().catch(()=>{})}catch{}await new Promise((w)=>setTimeout(w,3000*t))}if(t>=n){if(console.error(`Failed to fetch package ${e} after ${t} attempts:`,l),r){let w=v.join(L.cwd(),`${e.replace(/\//g,"-")}-error.txt`);d.writeFileSync(w,`Error fetching ${e}:
37
37
  ${l.toString()}
38
38
 
39
39
  Stack:
40
40
  ${l.stack||"No stack trace available"}`),console.error(`Saved error details to ${w}`)}return console.error(`Skipping ${e} after ${t} failed attempts to avoid overwriting existing files.`),{success:!1,fullDomainName:e}}console.error(`Attempt ${t} failed for ${e}, retrying...`,l);let P=500*t;if(S)P=2000*t;else if(y)P=1000*t;return await new Promise((w)=>setTimeout(w,P)),Pe(e,o,i,s,t+1,n,r,a)}}async function we(e="src/pantry"){if(!d.existsSync(e))throw Error(`Pantry directory not found: ${e}. Please run 'bun ./bin/cli.ts update-pantry' first.`);let o=[];function i(s,t=""){let n=d.readdirSync(s,{withFileTypes:!0}),r=v.join(s,"package.yml");if(t&&d.existsSync(r))o.push(t);for(let a of n)if(a.isDirectory()&&!a.name.startsWith(".")){let l=t?`${t}/${a.name}`:a.name,c=v.join(s,a.name);i(c,l)}}return i(e),console.log(`Found ${o.length} packages in pantry`),o.sort()}async function be(e,o="src/pantry"){let i=v.join(o,e,"package.yml");if(!d.existsSync(i))return console.warn(`Package.yml not found for ${e}`),null;try{let s=d.readFileSync(i,"utf-8"),t=[],n=[],r=s.split(`
41
41
  `),a=!1,l=!1,c=!1,y="";for(let g of r){if(g.match(/^dependencies:\s*$/)){a=!0,l=!1,c=!1;continue}if(g.match(/^\s{2}dependencies:\s*$/)){l=!0,a=!1,c=!1;continue}if(a||l){if(g.match(/^\s*$/)||a&&g.match(/^\S/)||l&&!g.match(/^\s{4,}/)){a=!1,l=!1,c=!1;continue}let p=g.match(/^\s{2}(linux|darwin|windows):\s*$/);if(p){c=!0,y=p[1];continue}if(c){let b=g.match(/^\s{4,}([^\s:]+):\s*['"]?([^'"]+)['"]?/);if(b){let A=b[1],f=b[2].trim(),C=`${y}:`;if(f&&f!=="*"){let m=/^[~^>=<@]/.test(f),O=/^[\d.]+$/.test(f)&&/^\d/.test(f),E=`${C}${A}${m?"":O?"@":"^"}${f}`;if(l)n.push(E);else t.push(E)}else{let m=`${C}${A}`;if(l)n.push(m);else t.push(m)}}else if(!g.match(/^\s{4,}/)&&!g.match(/^\s*$/))c=!1,y=""}else{let b=g.match(/^\s{2,3}([^\s:]+):\s*['"]?([^'"]+)['"]?/);if(b){let A=b[1],f=b[2].trim();if(["linux","darwin","windows"].includes(A))continue;if(f&&f!=="*"){let C=/^[~^>=<@]/.test(f),m=/^[\d.]+$/.test(f)&&/^\d/.test(f),j=`${A}${C?"":m?"@":"^"}${f}`;if(l)n.push(j);else t.push(j)}else{let C=A;if(l)n.push(C);else t.push(C)}}}}}let S=[],P=!1;for(let g of r){if(g.match(/^runtime:\s*$/)){P=!0;continue}if(P){if(g.match(/^\s*$/)||g.match(/^\S/)){P=!1;continue}if(g.match(/^\s+env:\s*$/))continue;if(g.match(/^\s+[A-Z_]+:\s*\$\{\{/))continue;let p=g.match(/^\s+([^\s:]+):\s*['"]?([^'"]+)['"]?/);if(p){let b=p[1],A=p[2].trim();if(/^[A-Z_]+$/.test(b))continue;if(A&&A!=="*"){let f=/^[~^>=<@]/.test(A),C=/^[\d.]+$/.test(A)&&/^\d/.test(A),m=f?"":C?"@":"^";S.push(`${b}${m}${A}`)}else S.push(b)}}}let w="",D="",x=s.match(/distributable:[\t\v\f\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*\n\s*url:\s*(.+)/);if(x){let g=x[1].trim();if(g.includes("github.com")){let p=g.match(/git\+https:\/\/github\.com\/([^/]+\/[^.]+)/);if(p){if(D=`https://github.com/${p[1]}`,p[1]==="python-attrs/attrs")w="https://www.attrs.org/"}}}let k=[],u=!1,F=!1;for(let g of r){if(g.match(/^provides:\s*$/)){u=!0,F=!1;continue}if(u){if(g.match(/^\S/)&&!g.match(/^\s*$/)){u=!1;continue}if(g.match(/^\s+(darwin|linux|windows):\s*$/)){F=!0;continue}let p=g.match(/^\s+-\s+(?:bin|sbin)\/(.+)/);if(p){let b=p[1].trim();if(!k.includes(b))k.push(b)}}}return{name:e.split("/").pop()||e,domain:e,dependencies:t,buildDependencies:n,companions:S,programs:k,homepageUrl:w,githubUrl:D}}catch(s){return console.warn(`Error reading package.yml for ${e}:`,s),null}}async function ve(e,o={}){let i=o.pantryDir||"src/pantry";try{let s=await be(e,i);try{let t=await Y(e,o),n=s?.domain||t.packageInfo.domain,r=oe(n),a=t.packageInfo.aliases||[];if(r.length>0)if(re(n))a=r;else a=[...new Set([...a,...r])];let l=[],c=[],y="",S="",P=t.packageInfo.versions||[],w=t.packageInfo.programs||[],D=s?.programs||[];if(P.length===0||w.length===0&&D.length===0){let k=o.outputDir||"src/packages",u=e.split("/"),F=u.length>1?v.join(k,...u.slice(0,-1),`${u[u.length-1]}.ts`):v.join(k,`${e.replace(/\./g,"")}.ts`);if(d.existsSync(F))try{let h=d.readFileSync(F,"utf-8");if(P.length===0){let g=h.match(/versions:\s*\[([\s\S]*?)\]\s*as\s*const/);if(g&&g[1].trim())l=g[1].match(/'([^']+)'/g)?.map((p)=>p.replace(/'/g,""))||[]}if(w.length===0&&D.length===0){let g=h.match(/programs:\s*\[([\s\S]*?)\]\s*as\s*const/);if(g&&g[1].trim())c=g[1].match(/'([^']+)'/g)?.map((p)=>p.replace(/'/g,""))||[]}if(!t.packageInfo.description){let g=h.match(/description:\s*'([^']*)'\s*as\s*const/);if(g&&g[1])y=g[1]}if(!t.packageInfo.homepageUrl&&!s?.homepageUrl){let g=h.match(/homepageUrl:\s*'([^']*)'\s*as\s*const/);if(g&&g[1])S=g[1]}}catch{}}return{packageInfo:{...t.packageInfo,dependencies:s?.dependencies&&s.dependencies.length>0?s.dependencies:t.packageInfo.dependencies,buildDependencies:s?.buildDependencies&&s.buildDependencies.length>0?s.buildDependencies:t.packageInfo.buildDependencies,companions:s?.companions&&s.companions.length>0?s.companions:t.packageInfo.companions,programs:w.length>0?w:D.length>0?D:c.length>0?c:[],versions:P.length>0?P:l,domain:s?.domain||t.packageInfo.domain,description:t.packageInfo.description||y||"",name:t.packageInfo.name||s?.name||e.split("/").pop()||e,homepageUrl:s?.homepageUrl||t.packageInfo.homepageUrl||S,githubUrl:s?.githubUrl||t.packageInfo.githubUrl,aliases:a},originalName:t.originalName,fullDomainName:t.fullDomainName}}catch(t){if(!s)return console.warn(`No pantry or web data available for ${e}:`,t),null;console.warn(`Failed to fetch web metadata for ${e}, using pantry data only:`,t);let n=[],r=[],a="",l="",c=o.outputDir||"src/packages",y=e.split("/"),S=y.length>1?v.join(c,...y.slice(0,-1),`${y[y.length-1]}.ts`):v.join(c,`${e.replace(/\./g,"")}.ts`);if(d.existsSync(S))try{let D=d.readFileSync(S,"utf-8"),x=D.match(/versions:\s*\[([\s\S]*?)\]\s*as\s*const/);if(x&&x[1].trim())n=x[1].match(/'([^']+)'/g)?.map((h)=>h.replace(/'/g,""))||[];let k=D.match(/programs:\s*\[([\s\S]*?)\]\s*as\s*const/);if(k&&k[1].trim())r=k[1].match(/'([^']+)'/g)?.map((h)=>h.replace(/'/g,""))||[];let u=D.match(/description:\s*'([^']*)'\s*as\s*const/);if(u&&u[1])a=u[1];let F=D.match(/homepageUrl:\s*'([^']*)'\s*as\s*const/);if(F&&F[1])l=F[1]}catch{}let P=s.programs&&s.programs.length>0?s.programs:r;return{packageInfo:{name:s.name||e.split("/").pop()||e,domain:s.domain||e,description:a||"",installCommand:`pantry install ${e}`,pantryInstallCommand:`pantry install ${e}`,programs:P,companions:s.companions||[],dependencies:s.dependencies||[],versions:n,buildDependencies:s.buildDependencies||[],packageYmlUrl:`https://github.com/pkgxdev/pantry/tree/main/projects/${e}/package.yml`,homepageUrl:l||s.homepageUrl||"",githubUrl:s.githubUrl||""},originalName:e,fullDomainName:e}}}catch(s){return console.error(`Error processing pantry package ${e}:`,s),null}}
42
- export{B as Ib,je as Jb,pe as Kb,fe as Lb,ce as Mb,Ce as Nb,Y as Ob,ye as Pb,Ee as Qb,Te as Rb,Pe as Sb,we as Tb,be as Ub,ve as Vb};
42
+ export{B as Jb,je as Kb,pe as Lb,fe as Mb,ce as Nb,Ce as Ob,Y as Pb,ye as Qb,Ee as Rb,Te as Sb,Pe as Tb,we as Ub,be as Vb,ve as Wb};
@@ -1,3 +1,3 @@
1
1
  import{execSync as u}from"node:child_process";import p from"node:fs";import C from"node:os";import m from"node:path";var A=process.env.PANTRY_REGISTRY_URL||"https://registry.pantry.dev",R={"Logi Options+":"logitech.com/options-plus",logioptionsplus:"logitech.com/options-plus","Logi Options Plus":"logitech.com/options-plus",logioptionsplus_installer:"logitech.com/options-plus"},T=new Set(["Safari","Numbers","Pages","Keynote","GarageBand","iMovie","Color Picker","Simulator","Simulator (Watch)","Preview","TextEdit","Automator","Font Book","Migration Assistant","Photo Booth","System Preferences","System Settings","Disk Utility","Terminal","Activity Monitor","Console","Grapher","Script Editor","Time Machine","Photos","Mail","Calendar","Contacts","Reminders","Notes","Maps","Messages","FaceTime","Books","News","Stocks","Weather","Home","Podcasts","Music","TV","Voice Memos","Freeform","Shortcuts","Chess","Dictionary","Stickies","Image Capture","Xcode"]),D=new Set(["Xcode","Numbers","Pages","Keynote","GarageBand","iMovie","Things3","Grammarly for Safari","AdBlock","HP Smart","Audible","Mini Motorways","Snake.io+","WhatsApp Messenger","Honey","Wappalyzer"]);function U(r,s){if(!r||!s||r===s)return!1;if(s==="?")return!!r;let a=(n)=>n.replace(/[,+].*/g,"").replace(/-.*$/,"").split(".").map((o)=>Number.parseInt(o,10)||0),t=a(r),e=a(s);for(let n=0;n<Math.max(t.length,e.length);n++){let o=t[n]||0,i=e[n]||0;if(o>i)return!0;if(o<i)return!1}return!1}function v(r){return r.toLowerCase().replace(/[^a-z0-9]/g,"")}function V(r="/Applications"){if(process.platform!=="darwin")return[];let s=[];if(!p.existsSync(r))return s;let a=p.readdirSync(r).filter((t)=>t.endsWith(".app"));for(let t of a){let e=t.replace(/\.app$/,""),n=`${r}/${t}`,o="?",i;try{let l=`${n}/Contents/Info.plist`;if(p.existsSync(l)){let c=u(`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${l}" 2>/dev/null`,{timeout:5000,encoding:"utf-8"}).trim();if(c)o=c;try{i=u(`/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${l}" 2>/dev/null`,{timeout:5000,encoding:"utf-8"}).trim()||void 0}catch{}}}catch{}s.push({name:e,version:o,path:n,bundleId:i})}return s}async function B(){try{let r=await fetch(`${A}/desktop-apps`);if(!r.ok)return[];let s=await r.json();return(s.apps??s??[]).filter((t)=>t&&t.domain).map((t)=>({domain:t.domain,label:t.label??t.name??t.domain,version:t.version??null,platforms:t.platforms}))}catch{return[]}}function E(r,s){let a=R[r];if(a){let e=s.find((n)=>n.domain===a);if(e)return e}let t=v(r);return s.find((e)=>v(e.label)===t||v(e.domain.replace(/\.(com|app|io|net|dev|org|ai|so|rest|fr)$/,""))===t)??null}async function G(r){let s=r||V(),a=await B(),t=[];for(let e of s){let n="unknown",o=null,i=!1,l=null;if(T.has(e.name))n="system";else{let c=E(e.name,a);if(c)n="pantry",l=c.domain,o=c.version,i=!!o&&U(o,e.version);else if(D.has(e.name))n="mas"}t.push({name:e.name,currentVersion:e.version,latestVersion:o,updateAvailable:i,source:n,domain:l})}return t.sort((e,n)=>{if(e.updateAvailable&&!n.updateAvailable)return-1;if(!e.updateAvailable&&n.updateAvailable)return 1;return e.name.localeCompare(n.name)}),t}async function O(r){if(process.platform!=="darwin")return{success:!1,error:"Desktop app updates are macOS-only"};try{let s=await B(),a=E(r,s);if(!a)return{success:!1,error:`"${r}" is not a pantry-published desktop app`};let t=a.domain,e=await fetch(`${A}/binaries/${encodeURI(t)}/metadata.json`);if(!e.ok)return{success:!1,error:`no registry metadata for ${t}`};let n=await e.json(),o=n.latestVersion,i=C.arch()==="arm64"?"darwin-arm64":"darwin-x86-64",l=n.versions?.[o]?.platforms??{},c=l[i]??l["darwin-arm64"]??l["darwin-x86-64"];if(!c?.tarball)return{success:!1,error:`no ${i} build published for ${t}@${o}`};let b=`${A}/${String(c.tarball).replace(/^\/?/,"")}`,f=p.mkdtempSync(m.join(C.tmpdir(),"pantry-app-"));try{let w=m.join(f,"pkg.tar.gz"),d=await fetch(b);if(!d.ok)return{success:!1,error:`failed to download ${b} (${d.status})`};p.writeFileSync(w,Buffer.from(await d.arrayBuffer()));let g=m.join(f,"x");p.mkdirSync(g,{recursive:!0}),u(`tar -xzf "${w}" -C "${g}"`,{timeout:120000});let k=(P,x)=>{for(let S of p.readdirSync(P,{withFileTypes:!0})){if(!S.isDirectory())continue;let I=m.join(P,S.name);if(S.name.endsWith(".app"))return I;if(x>0){let M=k(I,x-1);if(M)return M}}return null},y=k(g,3);if(!y)return{success:!1,error:`tarball for ${t} contained no .app bundle`};let h=`/Applications/${m.basename(y)}`;return u(`rm -rf "${h}"`,{timeout:30000}),u(`ditto "${y}" "${h}"`,{timeout:120000}),u(`xattr -dr com.apple.quarantine "${h}" 2>/dev/null || true`,{timeout:30000}),{success:!0,version:o}}finally{try{p.rmSync(f,{recursive:!0,force:!0})}catch{}}}catch(s){return{success:!1,error:(s?.message||"Update failed").toString().trim().split(`
2
2
  `).pop()}}}
3
- export{T as hb,D as ib,U as jb,V as kb,B as lb,G as mb,O as nb};
3
+ export{T as ib,D as jb,U as kb,V as lb,B as mb,G as nb,O as ob};
@@ -0,0 +1 @@
1
+ import{Hc as b,Ic as c,Kc as d}from"./chunk-ed8b6307.js";import{Lc as a}from"./chunk-84px82t5.js";import"./chunk-jzj5056d.js";d();export{a as aliases,c as packages,b as pantry};
@@ -0,0 +1,2 @@
1
+ import{Pc as o}from"./chunk-jzj5056d.js";var i;var e=o(()=>{i={"1password":"1password.com","1Password":"1password.com","1Password CLI":"developer.1password.com/1password-cli","aac-enc":"sourceforge.net/opencore-amr",abseil:"abseil.io",ack:"beyondgrep.com",acl:"savannah.nongnu.org/acl",acmedns:"github.com/caddy-dns/acmedns",acorn:"acorn.io/acorn-cli",act:"github.com/nektos/act",adr:"github.com/npryce/adr-tools","adwaita-icon-theme":"gnome.org/adwaita-icon-theme",age:"filippo.io/age","age-plugin-yubikey":"github.com/str4d/age-plugin-yubikey",agg:"asciinema.org/agg",aiac:"github.com/gofireflyio/aiac",aichat:"crates.io/aichat",air:"github.com/cosmtrek/air",alacritty:"alacritty.org",albionrpg:"crates.io/albion_terminal_rpg",alembic:"alembic.sqlalchemy.org",allure:"github.com/allure-framework/allure2","alpaca.cpp":"github.com/antimatter15/alpaca.cpp","alt-tab":"alttab.app",alttab:"alttab.app",AltTab:"alttab.app",amber:"amber-lang.com",amp:"amp.rs",ansible:"ansible.com","ansible-lint":"ansible.com/ansible-lint",aom:"aomedia.googlesource.com/aom",apko:"github.com/chainguard-dev/apko",apktool:"apktool.org",appium:"appium.io",applesimutils:"wix.com/applesimutils",applewm:"x.org/applewm",appstreamcli:"freedesktop.org/appstream",apptainer:"apptainer.org",apr:"apache.org/apr",arc:"arc.net",Arc:"arc.net","arduino-cli":"arduino.github.io/arduino-cli",argbash:"argbash.dev",argc:"crates.io/argc",argcomplete:"kislyuk.github.io/argcomplete","argo-cd":"argoproj.github.io/cd","argo-workflows":"argoproj.github.io/workflows",argon2:"github.com/P-H-C/phc-winner-argon2",aria2c:"aria2.github.io",aribb24:"code.videolan.org/aribb24",Arkade:"arkade.dev","arpack-ng":"github.com/opencollab/arpack-ng",arrow:"apache.org/arrow",asciidoc:"github.com/asciidoc-py/asciidoc-py",asciidoctor:"asciidoctor.org",asciinema:"asciinema.org",aserver:"alsa-project.org/alsa-lib",asn1:"gnu.org/libtasn1",aspell:"aspell.net",assimp:"assimp.org","ast-grep.github":"ast-grep.github.io","at-spi2-atk":"freedesktop.org/at-spi2-atk",atk:"gnome.org/atk",atlantis:"runatlantis.io",atlas:"atlasgo.io",attr:"savannah.nongnu.org/attr",attrs:"attrs.org",augeas:"augeas.net","Auto-GPT":"agpt.co",autoconf:"gnu.org/autoconf","autoconf-archive":"gnu.org/autoconf-archive",automake:"gnu.org/automake",autossh:"harding.motd.ca/autossh",aux4:"aux4.io",avif:"github.com/AOMediaCodec/libavif",avro:"apache.org/avro",aws:"aws.amazon.com/cli","aws-iam-authenticator":"github.com/kubernetes-sigs/aws-iam-authenticator","aws-sdk-cpp":"github.com/aws/aws-sdk-cpp","aws-sso":"github.com/synfinatic/aws-sso-cli","aws-vault":"github.com/99designs/aws-vault","aws-whoami":"github.com/benkehoe/aws-whoami-golang","aws/cdk":"aws.amazon.com/cdk","aws/cli":"aws.amazon.com/cli",awslocal:"localstack.cloud/awscli-local",awslogs:"github.com/jorgebastida/awslogs",azcopy:"microsoft.com/azure-storage-azcopy",babashka:"babashka.org",bacon:"dystroy.org/bacon",bake:"crates.io/bake-rs",bartib:"crates.io/bartib",bash:"gnu.org/bash","bash-completion":"debian.org/bash-completion",bashly:"bashly.dannyb.co",bat:"crates.io/bat",bats:"github.com/bats-core/bats-core",bazel:"github.com/bazelbuild/bazelisk",bcrypt:"bcrypt.sourceforge.net","berkeley-db":"oracle.com/berkeley-db","better-commits":"github.com/Everduin94/better-commits",bind9:"isc.org/bind9",bindgen:"rust-lang.org/rust-bindgen",binutils:"gnu.org/binutils",biome:"biomejs.dev",bison:"gnu.org/bison",bitcoin:"bitcoin.org",Bittensor:"bittensor.com",black:"github.com/psf/black",blender:"blender.org",Blender:"blender.org",blink:"github.com/jart/blink",blowfish:"github.com/matoszz/blowfish",blueutil:"github.com/toy/blueutil",boost:"boost.org",bore:"bore.pub",borg:"borgbackup.org",bpb:"crates.io/bpb",brave:"brave.com","Brave Browser":"brave.com",brewkit:"pkgx.sh/brewkit",broot:"crates.io/broot",brotli:"github.com/google/brotli","browser-use":"browser-use.com",bruce:"github.com/brucedom/bruce",bruno:"bruno.app",Bruno:"bruno.app",btm:"crates.io/bottom",btop:"github.com/aristocratos/btop","btrfs-progs":"github.com/kdave/btrfs-progs",buddy:"buddy.sh",buf:"buf.build",buildifier:"github.com/bazelbuild/buildtools",buildkit:"github.com/moby/buildkit",buildx:"docker.com/buildx",bun:"bun.com","bun.sh":"bun.com",bytebase:"bytebase.com",bzip2:"sourceware.org/bzip2","c-ares":"c-ares.org","ca-certs":"curl.se/ca-certs",cabal:"haskell.org/cabal",caddy:"caddyserver.com",caesiumclt:"saerasoft.com/caesium","cairo-trace":"cairographics.org","canonical/pebble":"github.com/canonical/pebble",capnproto:"capnproto.org",carapace:"carapace.sh",cargo:"rust-lang.org/cargo","cargo-binstall":"crates.io/cargo-binstall","cargo-c":"github.com/lu-zero/cargo-c","cargo-tarpaulin":"crates.io/cargo-tarpaulin",cargox:"pkgx.sh/cargox",carthage:"github.com/Carthage/Carthage","Cascadia Code":"cascadia-code",casdoor:"casdoor.org",cask:"cask.readthedocs.io",cassandra:"cassandra.apache.org",cavif:"crates.io/cavif",cbindgen:"mozilla.org/cbindgen",ccache:"ccache.dev",cdk:"aws.amazon.com/cdk",cedar:"cedarpolicy.com/cli","cedar-agent":"permit.io/cedar-agent","cemetery-escape":"github.com/tom-on-the-internet/cemetery-escape",cephadm:"ceph.com/cephadm","ceres-solver":"ceres-solver.org",certbot:"certbot.eff.org",cffi:"github.com/python-cffi/cffi",cfitsio:"heasarc.gsfc.nasa.gov/cfitsio","cfn-lint":"github.com/aws-cloudformation/cfn-lint",cfssl:"cfssl.org",cgal:"cgal.org",cgif:"github.com/dloebl/cgif",changie:"changie.dev",charmcraft:"github.com/canonical/charmcraft",chatblade:"github.com/npiv/chatblade",check_if_email_exists:"reacher.email/check-if-email-exists-cli",checkexec:"crates.io/checkexec",checkmake:"github.com/mrtazz/checkmake",checkov:"checkov.io",chezmoi:"chezmoi.io",chomp:"chompbuild.com",chromedriver:"chromedriver.chromium.org","chruby-exec":"github.com/postmodern/chruby",cicada:"hugo.wang/cicada",cilium:"cilium.io/cilium",circleci:"circleci.com",cirrus:"github.com/cirruslabs/cirrus-cli",cJSON:"github.com/DaveGamble/cJSON","clang-format":"llvm.org/clang-format","classic.yarnpkg":"classic.yarnpkg.com","claude-code":"anthropic.com/claude-code",cleanshot:"cleanshot.com","CleanShot X":"cleanshot.com",click:"crates.io/click",CLIProxyAPI:"github.com/router-for-me/CLIProxyAPI",clisp:"clisp.org",cloc:"github.com/AlDanial/cloc",clog:"clog-tool.github.io","cloudbase/garm":"github.com/cloudbase/garm","cloudbase/garm-provider-openstack":"github.com/cloudbase/garm-provider-openstack",cloudflared:"cloudflare.com/cloudflared",cmake:"cmake.org","cmdline-tools":"android.com/cmdline-tools",cmocka:"cmocka.org",cnquery:"cnquery.io",code:"code.visualstudio.com","code-server":"coder.com/code-server",coder:"coder.com",codex:"openai.com/codex",Codex:"codex.openai.com",cog:"cocogitto.io",cointop:"cointop.sh",colima:"github.com/abiosoft/colima",commit:"github.com/alt-art/commit",complexity:"github.com/thoughtbot/complexity",composer:"getcomposer.org",comrak:"crates.io/comrak",conda:"conda.org",confd:"github.com/abtreece/confd",conform:"github.com/siderolabs/conform",conftest:"conftest.dev",consul:"consul.io","consul-template":"hashicorp.com/consul-template",container:"apple.com/container","container-structure-test":"github.com/GoogleContainerTools/container-structure-test",convco:"convco.github.io",cookiecutter:"github.com/cookiecutter/cookiecutter",copa:"project-copacetic.github.io",coredns:"coredns.io",corepack:"nodejs.org/corepack",coreutils:"gnu.org/coreutils",cosign:"sigstore.dev/cosign",counterfeiter:"github.com/maxbrunsfeld/counterfeiter",cowsay:"github.com/cowsay-org/cowsay",cpanm:"cpanmin.us",cpptoml:"github.com/skystrife/cpptoml",cppunit:"freedesktop.org/cppunit",cpz:"crates.io/cpz",craft:"craft-native.org",craftql:"crates.io/craftql","create-dmg":"github.com/create-dmg/create-dmg",create2crunch:"github.com/0age/create2crunch",croc:"schollz.com/croc",cruft:"cruft.github.io",crush:"charm.sh/crush",cryptography:"cryptography.io",crystal:"crystal-lang.org","cscope.sourceforge":"cscope.sourceforge.io",cstool:"capstone-engine.org",csvdiff:"github.com/aswinkarthik/csvdiff",csview:"crates.io/csview",csvlens:"github.com/YS-L/csvlens",ctags:"ctags.io",ctop:"ctop.sh",cue:"cuelang.org",cups:"openprinting.github.io/cups",curl:"curl.se",cURL:"curl.se",cursor:"cursor.com",Cursor:"cursor.com",cvt:"x.org/libcvt","cyrus-sasl":"cyrusimap.org/cyrus-sasl",cython:"cython.org",daemontools:"cr.yp.to/daemontools",daff:"paulfitz.github.io/daff",dagger:"dagger.io",dart:"dart.dev",dasel:"github.com/TomWright/dasel",databricks:"databricks.com",dateutil:"github.com/dateutil/dateutil",dav1d:"code.videolan.org/videolan/dav1d",daytona:"daytona.io",dbeaver:"dbeaver.io",DBeaver:"dbeaver.io",dblab:"dblab.danvergara.com",dbus:"freedesktop.org/dbus",ddh:"crates.io/ddh",delta:"crates.io/git-delta",deno:"deno.land",depot:"depot.dev","desktop-file-utils":"freedesktop.org/desktop-file-utils","device-mapper":"sourceware.org/dm",devpod:"devpod.sh/cli",dexios:"brxken128.github.io/dexios",dgraph:"dgraph.io",dhall:"dhall-lang.org",Dia:"diabrowser.com",dialog:"invisible-island.net/dialog","diff-so-fancy":"github.com/so-fancy/diff-so-fancy",diffoci:"github.com/reproducible-containers/diffoci",difft:"wilfred.me.uk/difftastic",diffutils:"gnu.org/diffutils",digger:"digger.dev",direnv:"direnv.net",discord:"discord.com",Discord:"discord.com",diskonaut:"crates.io/diskonaut",diskus:"crates.io/diskus",distlib:"pypa.io/distlib",diun:"crazymax.dev/diun",dive:"github.com/wagoodman/dive",dnf5:"rpm.org/dnf5",dnsmasq:"thekelleys.org.uk/dnsmasq",docbook:"docbook.org","docbook-xsl":"docbook.org/xsl",docker:"docker.com/cli","Docker Desktop":"docker.com/desktop","docker-clean":"github.com/ZZROTDesign/docker-clean","docker-compose":"docker.com/compose","docker-credential-ecr-login":"github.com/awslabs/amazon-ecr-credential-helper","docker-desktop":"docker.com/desktop","docker-lock":"github.com/safe-waters/docker-lock","docker-machine":"docker.com/machine","docker/cli":"docker.com/cli",doctave:"doctave.com",doctl:"digitalocean.com/doctl",docutils:"docutils.org",docuum:"crates.io/docuum",dog:"dns.lookup.dog",dos2unix:"waterlan.home.xs4all.nl/dos2unix","dotenv-linter":"dotenv-linter.github.io",dotenvx:"dotenvx.com",dotnet:"dotnet.microsoft.com",doxygen:"doxygen.nl",dozzle:"dozzle.dev",dprint:"dprint.dev",driftctl:"snyk.io/driftctl",drill:"crates.io/drill",dssim:"kornel.ski/dssim",dua:"crates.io/dua",duckdb:"duckdb.org",ducker:"crates.io/ducker",duckscript:"sagiegurari.github.io/duckscript",duf:"github.com/muesli/duf",duk:"duktape.org",dust:"crates.io/du-dust",duti:"github.com/moretension/duti",dxc:"microsoft.com/dxc",dym:"crates.io/didyoumean",e2fsprogs:"sourceforge.net/e2fsprogs",earthly:"earthly.dev/earthly",eas:"expo.dev/eas-cli",eclint:"gitlab.com/greut/eclint",edencommon:"facebook.com/edencommon",edgedb:"edgedb.com",editline:"thrysoee.dk/editline",Eget:"github.com/zyedidia/eget","eigen.tuxfamily":"eigen.tuxfamily.org","eks-node-viewer":"github.com/awslabs/eks-node-viewer",eksctl:"eksctl.io",element:"element.io",Element:"element.io",elementsproject:"elementsproject.org",elfutils:"elfutils.org","elixir-lang":"elixir-lang.org",elizaOS:"elizaOS.github.io",elvish:"elv.sh",emacs:"gnu.org/emacs",enc:"github.com/life4/enc",encore:"encore.dev","encore-go":"encore.dev/go",envchain:"github.com/sorah/envchain",envconsul:"hashicorp.com/envconsul",eol:"endoflife.date",epsilon:"epsilon-project.sourceforge.io",epstool:"ghostgum.com.au/epstool",erlang:"erlang.org",etcd:"etcd.io",ethaddrgen:"github.com/Limeth/ethaddrgen",eureka:"crates.io/eureka",exa:"crates.io/exa",exiftool:"exiftool.org",expect:"tcl-lang.org/expect",expected:"github.com/TartanLlama/expected",exr:"openexr.com",exts:"x.org/exts",eza:"crates.io/eza",f2py:"numpy.org",faac:"sourceforge.net/faac",faad:"sourceforge.net/faad2",factotum:"github.com/snowplow/factotum",fast_float:"github.com/fastfloat/fast_float",fastfetch:"github.com/fastfetch-cli/fastfetch",fastgron:"github.com/adamritter/fastgron",fastlane:"fastlane.tools",fb303:"facebook.com/fb303",fblog:"crates.io/fblog",fend:"printfn.github.io/fend",ffmpeg:"ffmpeg.org",fftw:"fftw.org",fido2:"developers.yubico.com/libfido2",figma:"figma.com",Figma:"figma.com",file:"darwinsys.com/file",filelock:"github.com/tox-dev/filelock",findutils:"gnu.org/findutils","Fira Code":"fira-code",firebase:"google.com/firebase-tools",firefox:"firefox.org",Firefox:"firefox.org",fish:"fishshell.com",fizz:"github.com/facebookincubator/fizz",flac:"xiph.org/flac",flamegraph:"crates.io/flamegraph",flex:"github.com/westes/flex",flipt:"flipt.io",flit:"flit.pypa.io",fltk:"fltk.org",fluentci:"fluentci.io",flutter:"flutter.dev",flux:"fluxcd.io/flux2",fly:"fly.io",flyway:"flywaydb.org",fmt:"fmt.dev","fna-xna.github":"fna-xna.github.io",fnm:"crates.io/fnm",folly:"facebook.com/folly",fontconfig:"freedesktop.org/fontconfig",forc:"fuellabs.github.io/sway","freeglut.sourceforge":"freeglut.sourceforge.io",freetds:"freetds.org",freetype:"freetype.org",freexl:"gaia-gis.it/fossil/freexl",freeze:"charm.sh/freeze","frei0r.dyne":"frei0r.dyne.org",fribidi:"gnu.org/fribidi",fsdiff:"github.com/mycreepy/fsdiff",fselect:"crates.io/fselect",fsrx:"crates.io/fsrx",fswatch:"emcrisostomo.github.io/fswatch",fullycapable:"google.com/fullycapable",fury:"fury.co",fusermount3:"github.com/libfuse/libfuse",fzf:"github.com/junegunn/fzf","g-ir":"gnome.org/gobject-introspection",gauche:"practical-scheme.net/gauche",gawk:"gnu.org/gawk",gc:"hboehm.info/gc",gcc:"gnu.org/gcc",gci:"github.com/daixiang0/gci",gcloud:"google.com/gcloud",gdal:"gdal.org",gdbm:"gnu.org/gdbm","gdk-pixbuf":"gnome.org/gdk-pixbuf",gdown:"wkentaro.github.io/gdown",gdu:"github.com/dundee/gdu","gen-ir":"veracode.com/gen-ir",genact:"svenstaro.github.io/genact",generic_sum:"github.com/Mbed-TLS/mbedtls",geni:"priver.dev/geni",genqlient:"khanacademy.org/genqlient","geos-config":"libgeos.org","get-blessed":"crates.io/get-blessed",getmonero:"getmonero.org",gettext:"gnu.org/gettext","gflags.github":"gflags.github.io",gh:"cli.github.com","gh-desktop":"github.com/desktop",ghostscript:"ghostscript.com",ghostty:"ghostty.org",Ghostty:"ghostty.org",ghq:"github.com/x-motemen/ghq","gi-docgen":"gnome.org/gi-docgen",gif:"giflib.sourceforge.io",gifsicle:"lcdf.org/gifsicle","gimme-aws-creds":"nike.com/gimme-aws-creds",gimp:"gimp.org",GIMP:"gimp.org",ginkgo:"onsi.github.io/ginkgo",girara:"pwmt.org/girara",gist:"rubygems.org/gist",git:"git-scm.org","git-absorb":"crates.io/git-absorb","git-branchless":"crates.io/git-branchless","git-chglog":"github.com/git-chglog","git-cliff":"git-cliff.org","git-credential-manager":"github.com/git-ecosystem/git-credential-manager","git-crypt":"agwa.name/git-crypt","git-filter-repo":"github.com/newren/git-filter-repo","git-gone":"crates.io/git-gone","git-grab":"crates.io/git-grab","git-lfs":"git-lfs.com","git-quick-stats":"git-quick-stats.sh","git-review":"opendev.org/git-review","git-sizer":"github.com/github/git-sizer","git-tidy":"crates.io/git-tidy","git-town":"git-town.com","git-trim":"crates.io/git-trim",git2:"libgit2.org","GitHub Desktop":"github.com/desktop","github-desktop":"github.com/desktop","gitlab-runner":"gitlab.com/gitlab-org/gitlab-runner",gitleaks:"gitleaks.io",gitopolis:"crates.io/gitopolis",gitql:"amrdeveloper.github.io/GQL",gitsign:"sigstore.dev/gitsign",gitu:"crates.io/gitu",gitui:"crates.io/gitui",gitweb:"crates.io/gitweb",GKlib:"github.com/KarypisLab/GKlib",gl2ps:"geuz.org/gl2ps",glab:"gitlab.com/gitlab-org/cli",glauth:"github.com/glauth/glauth",gleam:"gleam.run","glew.sourceforge":"glew.sourceforge.io",glfw:"glfw.org",glib:"gnome.org/glib","glib-networking":"gnome.org/glib-networking","glm.g-truc":"glm.g-truc.net",glog:"google.com/glog",glow:"charm.sh/glow",glslang:"khronos.org/glslang",glslc:"github.com/google/shaderc",gmp:"gnu.org/gmp","gnome-extensions-cli":"github.com/essembeh/gnome-extensions-cli",gnupg:"gnupg.org",gnuplot:"gnuplot.info",gnutls:"gnutls.org",go:"go.dev","go-bindata":"github.com/kevinburke/go-bindata","go-md2man":"github.com/cpuguy83/go-md2man","go-mod-upgrade":"github.com/oligot/go-mod-upgrade","go-passbolt-cli":"github.com/passbolt/go-passbolt-cli","go-redfish-api-idrac":"github.com/greenpau/go-redfish-api-idrac","go-sponge":"github.com/loq9/go-sponge",gofumpt:"mvdan.cc/gofumpt","golangci-lint":"golangci-lint.run",gollum:"github.com/gollum/gollum",gomarkdoc:"github.com/princjef/gomarkdoc",gomplate:"gomplate.ca","google-maps-scraper":"github.com/gosom/google-maps-scraper",googletest:"google.com/googletest",goose:"pressly.github.io/goose",gopass:"github.com/gopasspw/gopass",gops:"github.com/google/gops",goreleaser:"goreleaser.com","gost3411-2012":"github.com/adegtyarev/streebog",gotestsum:"github.com/gotestyourself/gotestsum",gource:"gource.io",govulncheck:"go.dev/govulncheck",gox:"github.com/mitchellh/gox",gperf:"gnu.org/gperf",gpg:"gnupg.org","gpg-tui":"orhun.dev/gpg-tui",gpgme:"gnupg.org/gpgme",gphoto2:"gphoto.org/libgphoto2",gpp:"logological.org/gpp","GPT Engineer":"github.com/AntonOsika/gpt-engineer",gpt4all:"github.com/nomic-ai/gpt4all",gql:"graphqleditor.com/gql",gqlgen:"gqlgen.com",gr2fonttest:"graphite.sil.org",gradle:"gradle.org",granted:"granted.dev",graphene:"ebassi.github.io/graphene",graphviz:"graphviz.org",grep:"gnu.org/grep",groff:"gnu.org/groff",gron:"github.com/tomnomnom/gron",groonga:"groonga.org","groovy-lang":"groovy-lang.org",grpc:"grpc.io",grub:"gnu.org/grub",grype:"github.com/anchore/grype","gsettings-desktop-schemas":"gnome.org/gsettings-desktop-schemas",gsf:"gnome.org/libgsf",gti:"r-wos.org/gti","gtk-mac-integration-gtk3":"gnome.org/gtk-mac-integration-gtk3",gtk3:"gtk.org/gtk3",gtk4:"gtk.org/gtk4","gts.sourceforge":"gts.sourceforge.net",guil:"gnu.org/guile",gum:"charm.sh/gum","gvisor-tap-vsock":"github.com/containers/gvisor-tap-vsock",hac:"crates.io/hac-client",Hack:"hack",hadolint:"github.com/hadolint/hadolint",halibut:"chiark.greenend.org.uk/halibut",handbrake:"handbrake.fr",HandBrake:"handbrake.fr",harfbuzz:"harfbuzz.org",haskell:"haskell.org",hasura:"hasura.io",hatch:"hatch.pypa.io",hcloud:"hetzner.com/hcloud",HDF5:"hdfgroup.org/HDF5",heif:"github.com/strukturag/libheif","heif-converter":"github.com/MaestroError/heif-converter-image",helm:"helm.sh",helmfile:"github.com/helmfile/helmfile",help2man:"gnu.org/help2man",heroku:"heroku.com",hexedit:"rigaux.org/hexedit","Hidden Bar":"hiddenbar.app","hidden-bar":"hiddenbar.app",hiddenbar:"hiddenbar.app",highway:"google.com/highway",himalaya:"pimalaya.org/himalaya",hiredis:"github.com/redis/hiredis",hjson:"hjson.github.io",horcrux:"github.com/jesseduffield/horcrux",htop:"htop.dev",htslib:"htslib.org",httpd:"apache.org/httpd",httpie:"httpie.io",hubble:"cilium.io/hubble","huggingface/cli":"huggingface.co",hugo:"gohugo.io",huniq:"crates.io/huniq",hunspell:"hunspell.github.io",hurl:"hurl.dev",hwloc:"open-mpi.org/hwloc",hyfetch:"github.com/hykilpikonna/hyfetch",hyperfine:"crates.io/hyperfine",ice:"x.org/ice","icon-theme":"freedesktop.org/icon-theme",iconv:"gnu.org/libiconv",idevicedate:"libimobiledevice.org",idn:"gnu.org/libidn",idn2:"gnu.org/libidn2",idna:"github.com/kjd/idna",ifacemaker:"github.com/vburenin/ifacemaker",iina:"iina.io",IINA:"iina.io",ijg:"ijg.org",imageflow_tool:"imageflow.io/imageflow_tool",imagemagick:"imagemagick.org",imageoptim:"imageoptim.com",ImageOptim:"imageoptim.com",imath:"openexr.com/imath","imessage-exporter":"crates.io/imessage-exporter",inetutils:"gnu.org/inetutils",infracost:"infracost.io",inkscape:"inkscape.org",Inkscape:"inkscape.org",insomnia:"insomnia.rest",Insomnia:"insomnia.rest",Inter:"inter",intltool:"freedesktop.org/intltool",invoice:"github.com/maaslalani/invoice",invoke:"pyinvoke.org","ios-deploy":"github.com/ios-control/ios-deploy",ipcalc:"github.com/pete911/ipcalc",ipfs:"ipfs.tech",ipfscluster:"ipfscluster.io",iproute2mac:"github.com/brona/iproute2mac",ipython:"ipython.org",iroh:"iroh.computer","iso-codes":"debian.org/iso-codes",istioctl:"istio.io",iterm:"iterm2.com",iterm2:"iterm2.com",iTerm2:"iterm2.com",itstool:"itstool.org",jadx:"github.com/skylot/jadx",jags:"mcmc-jags.sourceforge.io",jansson:"digip.org/jansson",jasper:"github.com/jasper-software/jasper",java:"openjdk.org",jbang:"jbang.dev",jbig2dec:"jbig2dec.com",jdk:"openjdk.org",jemalloc:"jemalloc.net","Jenkins X":"jenkins-x.io","jenkins-lts":"jenkins.io",jenv:"jenv.be","JetBrains Mono":"jetbrains-mono","JetBrainsMono Nerd Font":"jetbrains-mono-nerd-font",jetp:"jetporch.com","jfrog-cli":"jfrog.com/jfrog-cli",jinja2:"github.com/mattrobenolt/jinja2-cli",jira:"github.com/ankitpokhrel/jira-cli",jless:"jless.io",jmeter:"apache.org/jmeter",jnv:"crates.io/jnv",joshuto:"crates.io/joshuto",jpegxl:"jpeg.org/jpegxl",jq:"stedolan.github.io/jq",jqp:"github.com/noahgorstein/jqp",json:"lloyd.github.io/yajl","json-c":"github.com/json-c/json-c","json-glib":"gnome.org/json-glib",jsoncpp:"github.com/open-source-parsers/jsoncpp",jsonlint:"github.com/zaach/jsonlint",jsonnet:"jsonnet.org",juju:"juju.is",julia:"julialang.org",juliaup:"julialang.org/juliaup",jumppad:"jumppad.dev",jupyter:"jupyter.org",just:"just.systems","just-mcp":"github.com/promptexecution/just-mcp","justwatchcom/sql_exporter":"github.com/justwatchcom/sql_exporter",jwt:"crates.io/jwt-cli",k0sctl:"github.com/k0sproject/k0sctl",k3d:"k3d.io",k3sup:"github.com/alexellis/k3sup",k9s:"k9scli.io","kafka.apache":"kafka.apache.org",kaggle:"kaggle.com","kamal-deploy":"kamal-deploy.org",karabiner:"karabiner-elements.pqrs.org","karabiner-elements":"karabiner-elements.pqrs.org","Karabiner-Elements":"karabiner-elements.pqrs.org",kargo:"akuity.io/kargo",kaspa:"github.com/kaspanet/rusty-kaspa","kaspa-miner":"crates.io/kaspa-miner",kaspad:"github.com/kaspanet/kaspad",kcat:"github.com/edenhill/kcat",keep:"keephq.dev",keepassxc:"keepassxc.org",KeePassXC:"keepassxc.org",keka:"keka.io",Keka:"keka.io",kerberos:"kerberos.org",keyring:"github.com/jaraco/keyring",killport:"crates.io/killport",kind:"kind.sigs.k8s.io",kluctl:"kluctl.io",kotlin:"kotlinlang.org",kotlinlang:"kotlinlang.org",koyeb:"koyeb.com",kpt:"kpt.dev",krampus:"idleberg.github.io/krampus",ksops:"viaduct.ai/ksops",ktlint:"ktlint.github.io",kube:"kubectx.dev","kube-capacity":"github.com/robscott/kube-capacity","kube-linter":"kubelinter.io","kube-score":"github.com/zegl/kube-score",kubebuilder:"kubebuilder.io",kubecm:"kubecm.cloud",kubecolor:"github.com/kubecolor/kubecolor",kubeconform:"github.com/yannh/kubeconform",kubectl:"kubernetes.io/kubectl","kubectl-cnpg":"cloudnative-pg.io","kubectl-krew":"krew.sigs.k8s.io",kubeshark:"kubeshark.co",kubie:"crates.io/kubie",kustomize:"kubernetes.io/kustomize",ladder:"github.com/everywall/ladder",ladspa:"ladspa.org",lame:"lame.sourceforge.io",landrun:"github.com/Zouuup/landrun",langchain:"langchain.com",lapack:"netlib.org/lapack",laravel:"laravel.com",Lato:"lato",lavinmq:"lavinmq.com",lazydocker:"github.com/jesseduffield/lazydocker",lazygit:"github.com/jesseduffield/lazygit",lcov:"github.com/linux-test-project/lcov",ldap:"openldap.org",ldns:"nlnetlabs.nl/ldns",lefthook:"github.com/evilmartians/lefthook",lego:"github.com/go-acme/lego",leo:"leo-lang.org",leptonica:"leptonica.org",lerc:"github.com/Esri/lerc",lftp:"lftp.yar.ru",libaec:"dkrz.de/libaec",libaio:"pagure.io/libaio",libarchive:"libarchive.org",libass:"github.com/libass/libass","libassuan-config":"gnupg.org/libassuan",libatomic_ops:"github.com/ivmai/libatomic_ops",libb2:"blake2.net/libb2",libbluray:"videolan.org/libbluray",libbsd:"freedesktop.org/libbsd",libcap:"kernel.org/libcap","libcap-ng":"people.redhat.com/sgrubb/libcap-ng",libcbor:"github.com/PJK/libcbor",libccd:"github.com/danfis/libccd",libcerf:"jugit.fz-juelich.de/mlz/libcerf",libcuefile:"musepack.net/libcuefile","libcxx.llvm":"libcxx.llvm.org",libcython:"cython.org/libcython",libde265:"github.com/strukturag/libde265",libdeflate:"github.com/ebiggers/libdeflate",libdnf5:"rpm.org/libdnf5",libdrm:"dri.freedesktop.org",libelf:"fossies.org/libelf",libepoxy:"github.com/anholt/libepoxy",libevent:"libevent.org","libexif.github":"libexif.github.io",libffi:"sourceware.org/libffi",libfontenc:"x.org/libfontenc",libfyaml:"github.com/pantoniou/libfyaml",libgcrypt:"gnupg.org/libgcrypt","libgd.github":"libgd.github.io",libgeotiff:"github.com/OSGeo/libgeotiff",libgomp:"gnu.org/gcc/libgomp","libgpg-error":"gnupg.org/libgpg-error",libimagequant:"pngquant.org/lib","libimobiledevice-glue":"libimobiledevice.org/libimobiledevice-glue","libisl.sourceforge":"libisl.sourceforge.io","libjpeg-turbo":"libjpeg-turbo.org",libkml:"github.com/libkml/libkml",libksba:"gnupg.org/libksba",liblinear:"csie.ntu.edu.tw/cjlin/liblinear",liblmdb:"openldap.org/liblmdb","liblqr.wikidot":"liblqr.wikidot.com",libmatio:"matio.sourceforge.io",libmd:"hadrons.org/libmd",libmicrohttpd:"gnu.org/libmicrohttpd",libmng:"sourceforge.net/libmng",libnl:"github.com/thom311/libnl",libnsl:"github.com/thkukuk/libnsl",libomp:"openmp.llvm.org",libpipeline:"libpipeline.gitlab.io/libpipeline",libplacebo:"videolan.org/libplacebo",libpng:"libpng.org",libpq:"postgresql.org/libpq",libproxy:"libproxy.github.io/libproxy",libpsl:"rockdaboot.github.io/libpsl","libpthread-stubs":"x.org/libpthread-stubs",libraw:"libraw.org",librdkafka:"github.com/confluentinc/librdkafka",libreoffice:"libreoffice.org",LibreOffice:"libreoffice.org",libreplaygain:"musepack.net/libreplaygain",librepo:"rpm.org/librepo",librttopo:"git.osgeo.org/gitea/rttopo/librttopo",libsamplerate:"github.com/libsndfile/libsamplerate",libsass:"sass-lang.com/libsass",libsdl:"libsdl.org",libseccomp:"github.com/seccomp/libseccomp",libsecret:"gnome.org/libsecret",libserdes:"github.com/confluentinc/libserdes",libsigsegv:"gnu.org/libsigsegv",libsixel:"github.com/libsixel/libsixel",libSM:"x.org/libSM",libsodium:"libsodium.org",libsolv:"opensuse.org/libsolv",libsoup:"libsoup.org",libspatialite:"gaia-gis.it/libspatialite",libspng:"libspng.org",libsrtp:"cisco.com/libsrtp",libssh:"libssh.org",libssh2:"libssh2.org",libstdcxx:"gnu.org/gcc/libstdcxx",libtatsu:"libimobiledevice.org/libtatsu",libtermkey:"leonerd.org.uk/libtermkey",libtirpc:"sourceforge.net/libtirpc",LibTomMath:"libtom.net/math",libtool:"gnu.org/libtool",libunibreak:"github.com/adah1972/libunibreak",libunistring:"gnu.org/libunistring",liburcu:"liburcu.org","libusb-compat":"libusb.info/compat",libusbmuxd:"libimobiledevice.org/libusbmuxd",libuv:"libuv.org",libva:"intel.com/libva",libvpx:"webmproject.org/libvpx",libvterm:"leonerd.org.uk/libvterm",libwebsockets:"libwebsockets.org",libwpe:"wpewebkit.org/libwpe",libxcrypt:"github.com/besser82/libxcrypt",libxfont2:"x.org/libxfont2",libxres:"x.org/libxres",libyaml:"pyyaml.org/libyaml",libyang:"github.com/cesnet/libyang",license:"github.com/nishanths/license","license-plist":"github.com/mono0926/LicensePlist",licensed:"github.com/licensee/licensed",licensor:"crates.io/licensor",lighthouse:"crates.io/lighthouse","lima-vm":"lima-vm.io",linear:"linear.app",Linear:"linear.app",linkerd:"linkerd.io/linkerd2","linux-headers":"kernel.org/linux-headers","linux-pam":"linux-pam.org",litecli:"litecli.com",littlecms:"littlecms.com","LLaMA.cpp":"github.com/ggerganov/llama.cpp",llm:"llm.datasette.io",llrt:"github.com/awslabs/llrt",llvm:"llvm.org","LM Studio":"lmstudio.ai","lm-studio":"lmstudio.ai",lmstudio:"lmstudio.ai",LocalAI:"localai.io",localstack:"localstack.cloud/cli",logdy:"logdy.dev","logi-options":"logitech.com/options","logi-options-plus":"logitech.com/options",loki:"grafana.com/loki",lolcat:"github.com/jaseg/lolcat",lporg:"github.com/blacktop/lporg",lsd:"github.com/peltoche/lsd",lsof:"github.com/lsof-org/lsof",lua:"lua.org",luajit:"luajit.org",luarocks:"luarocks.org",lunarvim:"lunarvim.org",luv:"github.com/luvit/luv",lux:"github.com/iawia002/lux",lychee:"lychee.cli.rs",lynx:"invisible-island.net/lynx",lz4:"lz4.org",lzip:"nongnu.org/lzip",lzo:"oberhumer.com/lzo",maccy:"maccy.app",Maccy:"maccy.app","macfuse.github":"macfuse.github.io",mackup:"github.com/lra/mackup",mactop:"github.com/context-labs/mactop",macvim:"macvim.org",mail:"github.com/mail-os/mail",mailpit:"github.com/axllent/mailpit",make:"gnu.org/make","mako-render":"makotemplates.org",mamba:"github.com/mamba-org/mamba","man-db":"man-db.gitlab.io/man-db",MariaDB:"mariadb.com/server",marionette:"github.com/skx/marionette",markdownlint:"github.com/igorshubovych/markdownlint-cli",markitdown:"microsoft.com/markitdown","markupsafe.palletsprojects":"markupsafe.palletsprojects.com",mas:"github.com/mas-cli/mas",mash:"pkgx.sh/mash",mask:"crates.io/mask",maturin:"maturin.rs",maven:"maven.apache.org",mc:"min.io/mc","md-tui":"crates.io/md-tui",md2html:"github.com/mity/md4c",md5sha1sum:"microbrew.org/md5sha1sum",mdbook:"rust-lang.github.io/mdBook",mdcat:"crates.io/mdcat",mecab:"taku910.github.io/mecab","mecab-ipadic":"taku910.github.io/mecab-ipadic",MediaInfo:"mediaarea.net",meetingbar:"meetingbar.app",MeetingBar:"meetingbar.app",meilisearch:"meilisearch.com",melt:"charm.sh/melt",memcached:"memcached.org",mercure:"mercure.rocks","mercurial-scm":"mercurial-scm.org",mergestat:"mergestat.com/mergestat-lite",mergiraf:"mergiraf.org","mesa-glu":"freedesktop.org/mesa-glu",mesa3d:"mesa3d.org","MesloLG Nerd Font":"meslo-lg-nerd-font",meson:"mesonbuild.com",MetaGPT:"deepwisdom.ai",metis:"glaros.dtc.umn.edu/metis",micro:"micro-editor.github.io","microcks-cli":"microcks.io",micromamba:"github.com/mamba-org/micro","Midnight Commander":"midnight-commander.org",migrate:"github.com/golang-migrate/migrate",minikube:"kubernetes.io/minikube",minisign:"jedisct1.github.io/minisign",minizip:"zlib.net/minizip",mint:"github.com/yonaskolb/Mint",mise:"mise.jdx.dev",mitmproxy:"mitmproxy.org",mkcert:"mkcert.dev",mkdocs:"mkdocs.org",mmdblookup:"github.com/maxmind/libmaxminddb",mockery:"vektra.github.io/mockery",mockgen:"go.uber.org/mock/mockgen",modal:"modal.com",mods:"charm.sh/mods",mole:"github.com/tw93/mole",mongodb:"mongodb.com",mongosh:"mongodb.com/shell","monitor-control":"monitorcontrol.app",monitorcontrol:"monitorcontrol.app",MonitorControl:"monitorcontrol.app",moon:"moonrepo.dev/moon",mop:"github.com/mop-tracker/mop",mosh:"mosh.org",mozjpeg:"mozilla.org/mozjpeg",mpc:"gnu.org/mpc",mpdecimal:"bytereef.org/mpdecimal",mpfr:"gnu.org/mpfr",mpg123:"mpg123.de",mpmath:"mpmath.org",mprocs:"crates.io/mprocs",mpv:"mpv.io",mscp:"github.com/upa/mscp",msgpack:"msgpack.org",mujs:"mujs.com",mun:"mun-lang.org",mupdf:"mupdf.com",musepack:"musepack.net","musl.libc":"musl.libc.org",mutagen:"github.com/quodlibet/mutagen",Muzzle:"muzzleapp.com",mvfst:"facebook.com/mvfst",mvn:"maven.apache.org","mypy-lang":"mypy-lang.org",mysql:"mysql.com",nak:"github.com/fiatjaf/nak",names:"crates.io/names",nano:"nano-editor.org",navi:"github.com/denisidoro/navi",ncdu:"dev.yorhel.nl/ncdu",ncurses:"invisible-island.net/ncurses",needs:"github.com/NQMVD/needs",neo4j:"neo4j.com",neofetch:"github.com/dylanaraps/neofetch","neon-config":"notroj.github.io/neon",neowofetch:"github.com/hykilpikonna/hyfetch/neowofetch","net-tools":"sourceforge.net/net-tools",netcdf:"unidata.ucar.edu/netcdf","netpbm.sourceforge":"netpbm.sourceforge.net",nettle:"gnu.org/nettle",networkx:"networkx.org",nex:"github.com/blynn/nex",next:"vercel.com/next",nghttp2:"nghttp2.org",nginx:"nginx.org","nim-lang":"nim-lang.org",ninja:"ninja-build.org",nixpacks:"nixpacks.com",nmap:"nmap.org",nnn:"github.com/jarun/nnn",node:"nodejs.org","node-build":"github.com/nodenv/node-build",nomad:"nomadproject.io",normalizer:"github.com/Ousret/charset_normalizer",notion:"notion.so",Notion:"notion.so",npm:"npmjs.com",npmjs:"npmjs.com",npth:"gnupg.org/npth","nspr-config":"mozilla.org/nspr",nss:"mozilla.org/nss",ntp:"ntp.org",nuclei:"projectdiscovery.io/nuclei",nullclaw:"github.com/nullclaw/nullclaw",numactl:"github.com/numactl/numactl",numbat:"numbat.dev",nvim:"neovim.io","nvm-exec":"github.com/nvm-sh/nvm","oapi-codegen":"github.com/deepmap/oapi-codegen","oauth2-proxy":"oauth2-proxy.github.io",obsidian:"obsidian.md",Obsidian:"obsidian.md",oci:"oracle.com/oci-cli",oci2git:"github.com/Virviil/oci2git",ocrmypdf:"github.com/ocrmypdf/OCRmyPDF",odigos:"odigos.io",ogg:"xiph.org/ogg","oh-my-posh":"ohmyposh.dev",ollama:"ollama.com",Ollama:"ollama.com",omekasy:"crates.io/omekasy",onefetch:"onefetch.dev",onepassword:"1password.com","onig-config":"github.com/kkos/oniguruma",opa:"openpolicyagent.org","Open Sans":"open-sans","open-interpreter":"openinterpreter.com","open-mpi":"open-mpi.org",openai:"openai.com/openai-python","openapi-generator":"openapi-generator.tech",openbao:"openbao.org/openbao",openblas:"openblas.net",opencanaryd:"github.com/thinkst/opencanary","opencl-headers":"khronos.org/opencl-headers",openclaw:"github.com/openclaw/openclaw","opencore-amr.sourceforge":"opencore-amr.sourceforge.io",opendap:"opendap.org",openjdk:"openjdk.org",openplayground:"github.com/nat/openplayground","openpmix.github":"openpmix.github.io",openresty:"openresty.org",opensearch:"opensearch.org",openslide:"openslide.org",openssh:"openssh.com",openssl:"openssl.org",OpenSSL:"openssl.org",openstack:"opendev.org/openstack/python-openstackclient",openvpn:"openvpn.net","operator-sdk":"operatorframework.io/operator-sdk",opj:"openjpeg.org",optipng:"sf.net/optipng","opus-codec":"opus-codec.org",oras:"oras.land",orbstack:"orbstack.dev",OrbStack:"orbstack.dev",orc:"gstreamer.freedesktop.org/orc",ord:"ordinals.com","org-stats":"github.com/caarlos0/org-stats","otel-cli":"github.com/equinix-labs/otel-cli","otp-27":"elixir-lang.org/otp-27",ots:"ots.sniptt.com",overmind:"github.com/darthsim/overmind","p11-kit":"freedesktop.org/p11-kit",p7zip:"github.com/p7zip-project/p7zip",pack:"buildpacks.io",packaging:"pypa.io/packaging",packer:"packer.io",pake:"npmjs.com/pake-cli",pakku:"github.com/mycreepy/pakku",pandoc:"pandoc.org","pandoc-crossref":"pandoc.org/crossref",pango:"gnome.org/pango",paper:"github.com/rrthomas/libpaper",par2:"github.com/Parchive/par2cmdline",parallel:"gnu.org/parallel",pastel:"crates.io/pastel",patch:"gnu.org/patch",patchelf:"nixos.org/patchelf","pcap-config":"tcpdump.org",pciaccess:"x.org/pciaccess",pcre:"pcre.org",pcre2:"pcre.org/v2","pcsc-lite":"pcsclite.apdu.fr",pdm:"pdm.fming.dev",Pearcleaner:"pearcleaner.app",periphery:"github.com/peripheryapp/periphery",perl:"perl.org",pgen:"crates.io/pgen",php:"php.net","php-cs-fixer":"symfony.com/cs",phpMyAdmin:"phpmyadmin.net",pier:"crates.io/pier",pik:"crates.io/pik",pike:"github.com/jameswoolfenden/pike",pinentry:"gnupg.org/pinentry",pinniped:"pinniped.dev",pio:"github.com/siiptuo/pio",pip:"pip.pypa.io",pipenv:"pipenv.pypa.io",pipx:"pypa.github.io/pipx",pixi:"prefix.dev",pixlet:"tidbyt.com",pixman:"pixman.org","pkcs11-helper":"github.com/OpenSC/pkcs11-helper",pkg:"vercel.com/pkg","pkg-config":"freedesktop.org/pkg-config",pkgm:"pkgx.sh/pkgm",pkgx:"pkgx.sh","pkl-lang":"pkl-lang.org",plakar:"plakar.io",plantuml:"plantuml.com",platformdirs:"github.com/platformdirs/platformdirs",plistutil:"libimobiledevice.org/libplist","plocate.sesse":"plocate.sesse.net",plotutils:"gnu.org/plotutils",pls:"dhruvkb.dev/pls",pluggy:"pytest.org/pluggy",pluralith:"pluralith.com",pluto:"fairwinds.com/pluto",pnp:"pnpm.io",po4a:"po4a.org",pocket:"pokt.network",pocketbase:"pocketbase.io",pod:"cocoapods.org",pod2man:"eyrie.org/eagle/podlators",podlet:"github.com/containers/podlet",podman:"podman.io",poetry:"python-poetry.org",polkit:"freedesktop.org/polkit",pop:"charm.sh/pop","poppler-data":"poppler.freedesktop.org/poppler-data","poppler-qt5":"freedesktop.org/poppler-qt5","poppler.freedesktop":"poppler.freedesktop.org",popt:"rpm.org/popt",PortAudio:"portaudio.com",portfolio_rs:"crates.io/portfolio_rs",postgres:"postgresql.org",postgresql:"postgresql.org",postgrest:"postgrest.org",postman:"postman.com",Postman:"postman.com",potrace:"sourceforge.net/potrace",pqrs:"crates.io/pqrs","pre-commit":"pre-commit.com",prettier:"prettier.io",prettyping:"denilson.sa.nom.br/prettyping","process-compose":"f1bonacc1.github.io/process-compose",procps:"gitlab.com/procps-ng/procps",proj:"proj.org",projen:"projen.io",protoc:"github.com/protobuf-c/protobuf-c","protoc-gen-connect-go":"connectrpc.org/protoc-gen-connect-go","protoc-gen-go":"google.com/protobuf-go","protoc-gen-go-grpc":"grpc.io/grpc-go","protoc-gen-jsonschema":"github.com/chrusty/protoc-gen-jsonschema",protocol:"x.org/protocol","Protocol Buffers":"protobuf.dev",prql:"prql-lang.org",pscale:"planetscale.com",pstree:"github.com/FredHucht/pstree",psutil:"github.com/giampaolo/psutil",psutils:"github.com/rrthomas/psutils",psycopg2:"psycopg.org/psycopg2",psycopg3:"psycopg.org/psycopg3",pueue:"crates.io/pueue",pugixml:"pugixml.org",pulumi:"pulumi.io",pup:"github.com/gromgit/pup",pushenv:"crates.io/pushenv",putty:"chiark.greenend.org.uk/putty",puzzles:"chiark.greenend.org.uk/puzzles",pwgen:"pwgen.sourceforge.io",pwsh:"microsoft.com/PowerShell",py:"python.org",pycairo:"cairographics.org/pycairo",pycparser:"github.com/eliben/pycparser",pygmentize:"pygments.org",PyGObject:"gnome.org/PyGObject",pylsp:"github.com/python-lsp/python-lsp-server",pyparsing:"github.com/pyparsing/pyparsing","pyproject-build":"github.com/pypa/build","pyqt-bundle":"riverbankcomputing.com/pyqt-builder",pyright:"microsoft.com/pyright",pytest:"pytest.org",python:"python.org","python-certifi":"certifi.io/python-certifi","python-click":"palletsprojects.com/click","python-jinja":"palletsprojects.com/jinja","python-pathspec":"github.com/cpburnz/python-pathspec","python-pillow":"python-pillow.org",pytz:"github.com/stub42/pytz",pyyaml:"pyyaml.org",qemu:"qemu.org",qhull:"qhull.org",qpdf:"qpdf.sourceforge.io",qrencode:"fukuchi.org/qrencode",qsv:"crates.io/qsv",quickwit:"quickwit.io",rabbitmq:"rabbitmq.com",raccoin:"raccoin.org",radicle:"radicle.org",rage:"crates.io/rage",railway:"railway.app",rapidjson:"rapidjson.org",rav1e:"github.com/xiph/rav1e",rawdog:"github.com/abanteai/rawdog",raycast:"raycast.com",Raycast:"raycast.com",rbenv:"github.com/rbenv/rbenv",rbw:"git.tozt.net/rbw",rclone:"rclone.org",re2:"github.com/google/re2",re2c:"re2c.org",readline:"gnu.org/readline","reattach-to-user-namespace":"github.com/ChrisJohnsen/tmux-MacOSX-pasteboard",rebar3:"rebar3.org",rectangle:"rectangle.app",Rectangle:"rectangle.app",redfishtool:"github.com/DMTF/redfishtool",redis:"redis.io",redis_tui:"github.com/mat2cc/redis_tui",regbot:"github.com/regclient/regclient/regbot",regctl:"github.com/regclient/regclient/regctl","regex-tui":"github.com/vitor-mariano/regex-tui",regsync:"github.com/regclient/regclient/regsync",rename:"plasmasturm.org/rename",render:"render.com",replibyte:"replibyte.com",reproc:"github.com/DaanDeMeyer/reproc",requests:"github.com/psf/requests",reshape:"fabianlindfors.se/reshape",restic:"restic.net/restic",resticprofile:"creativeprojects.github.io/resticprofile",rexi:"github.com/royreznik/rexi",rg:"crates.io/ripgrep",rga:"crates.io/ripgrep-all","rhash.sourceforge":"rhash.sourceforge.net",rio:"rioterm.com",rip2:"github.com/MilesCranmer/rip2",ripgrep:"crates.io/ripgrep",rist:"code.videolan.org/rist/librist",rmz:"crates.io/rmz",robot:"robotframework.org",Roboto:"roboto",rome:"rome.tools",ronn:"rtomayko.github.io/ronn",rover:"apollographql.com/rover","rpg-cli":"crates.io/rpg-cli",rpm:"rpm.org/rpm","rpm-sequoia":"rpm.org/rpm-sequoia","rsvg-convert":"gnome.org/librsvg",rswift:"github.com/mac-cain13/R.swift",rsync:"rsync.samba.org",rtmpdump:"rtmpdump.mplayerhq.hu","rtx-cli":"crates.io/rtx-cli",rubberband:"breakfastquay.com/rubberband",rubocop:"rubocop.org",ruby:"ruby-lang.org","ruby-build":"rbenv.org/ruby-build","ruby-install":"github.com/postmodern/ruby-install","ruby-lang":"ruby-lang.org",rubygems:"rubygems.org","rucio-client":"rucio.cern.ch/rucio-client",rucola:"crates.io/rucola-notes",ruff:"astral.sh/ruff",rust:"rust-lang.org","rust-kanban":"crates.io/rust-kanban","rust-script":"rust-script.org","rustls-ffi":"crates.io/rustls-ffi",rustup:"rust-lang.org/rustup",rye:"rye.astral.sh","rye-uv":"github.com/lucianosrp/rye-uv","s-lang":"jedsoft.org/slang",s3cmd:"s3tools.org",s4cmd:"bloomreach.com/s4cmd",s5cmd:"github.com/peak/s5cmd",safe_hashes:"github.com/Cyfrin/safe-tx-hashes-util",sam:"aws.amazon.com/sam",saml2aws:"github.com/Versent/saml2aws",samply:"crates.io/samply",samtools:"htslib.org/samtools",sanitize:"crates.io/sanitize",sasqwatch:"github.com/fabio42/sasqwatch",sassc:"sass-lang.com/sassc",sbt:"scala-sbt.org",scala:"scala-lang.org","scala-lang":"scala-lang.org",scc:"github.com/boyter/scc",sccache:"crates.io/sccache",scdoc:"sr.ht/scdoc","scie-pants":"pantsbuild.org/scie-pants",scons:"scons.org",scrcpy:"github.com/Genymobile/scrcpy",screenresolution:"github.com/jhford/screenresolution",Scriptisto:"github.com/igor-petruk/scriptisto","Scryer Prolog":"scryer.pl",scw:"scaleway.com","sdkman-init.sh":"sdkman.io",SDL_image:"libsdl.org/SDL_image",SDL_mixer:"libsdl.org/SDL_mixer",SDL_ttf:"libsdl.org/SDL_ttf",SDL2_gfx:"ferzkopp.net/SDL2_gfx",SDL2_Pango:"github.com/markuskimius/SDL2_Pango",SeaweedFS:"seaweedfs.com",sed:"gnu.org/sed",semverator:"crates.io/semverator",sensors:"github.com/lm-sensors/lm-sensors","sentry-cli":"sentry.io",serf:"apache.org/serf","session-manager-plugin":"aws.amazon.com/session-manager-plugin",setuptools:"pypa.io/setuptools","sfcgal-config":"sfcgal.org",sftpgo:"sftpgo.com","shaka-packager":"github.com/shaka-project/shaka-packager",shards:"crystal-lang.org/shards",shellcheck:"shellcheck.net",shfmt:"mvdan.cc/sh",shout:"xiph.org/libshout",shovel:"indexsupply.com/shovel",sig:"crates.io/sigrs",signal:"signal.org",Signal:"signal.org",silicon:"crates.io/silicon","sing-box":"sing-box.app",sip:"riverbankcomputing.com/sip",six:"github.com/benjaminp/six",skaffold:"skaffold.dev",skate:"charm.sh/skate",sketchybar:"felixkratz.github.io/SketchyBar",skhd:"github.com/koekeishiya/skhd",skopeo:"github.com/containers/skopeo",slack:"slack.com",Slack:"slack.com",sleek:"crates.io/sleek",slides:"maaslalani.com/slides",slirp:"freedesktop.org/slirp",smartmontools:"smartmontools.org",smi:"ibr.cs.tu-bs.de/libsmi",snaplet:"snaplet.dev/cli",snappy:"google.github.io/snappy",sndfile:"github.com/libsndfile/libsndfile",sniffnet:"sniffnet.net",snipkit:"github.com/lemoony/snipkit",snyk:"snyk.io",socat:"dest-unreach.org/socat",soffice:"libreoffice.org",solana:"solana.com",soldeer:"soldeer.xyz",soliditylang:"soliditylang.org",solr:"solr.apache.org","sonar-scanner":"sonarqube.org/sonarscanner",sops:"getsops.io","Source Code Pro":"source-code-pro","source-highlight":"gnu.org/source-highlight",sourcekitten:"github.com/jpsim/SourceKitten",Sourcery:"github.com/krzysztofzablocki/Sourcery","soxr.sourceforge":"soxr.sourceforge.net",spacer:"github.com/samwho/spacer",spacetime:"spacetimedb.com",sparsecat:"github.com/svenwiltink/sparsecat",spdlog:"github.com/gabime/spdlog","spec-kit":"github.com/github/spec-kit",speedtest:"github.com/sivel/speedtest-cli",speexdec:"speex.org",speexdsp:"github.com/xiph/speexdsp",sphinx:"sphinx-doc.org",spicedb:"authzed.com/spicedb",spider:"crates.io/spider_cli",spin:"fermyon.com/spin",spirv:"khronos.org/SPIRV-Tools","spirv-cross":"khronos.org/SPIRV-Cross",spm:"google.com/sentencepiece",spotify:"spotify.com",Spotify:"spotify.com",spotify_player:"crates.io/spotify_player",sqlboiler:"github.com/volatiletech/sqlboiler",sqlc:"sqlc.dev",sqlfluff:"sqlfluff.com",sqlite:"sqlite.org",sqlite3:"sqlite.org","sqlx-cli":"crates.io/sqlx-cli",sqruff:"quary.dev/sqruff","SquashFS-Tools":"github.com/plougher/squashfs-tools","squashfs-tools-ng":"github.com/AgentD/squashfs-tools-ng",squawk:"squawkhq.com","squidfunk/mkdocs-material":"github.com/squidfunk/mkdocs-material",srgn:"crates.io/srgn",srt:"srtalliance.org",sshx:"sshx.io",ssl3:"curl.se/ssl3","Stable Diffusion web UI":"github.com/AUTOMATIC1111/stable-diffusion-webui",stargazers:"github.com/spencerkimball/stargazers",starpls:"github.com/withered-magic/starpls",starship:"starship.rs",stats:"stats.app",Stats:"stats.app",steampipe:"steampipe.io",stego:"crates.io/stego",stern:"github.com/stern/stern",stow:"gnu.org/stow",strace:"strace.io",streamlink:"streamlink.github.io","stress-ng":"github.com/ColinIanKing/stress-ng",stripe:"stripe.com","suite-sparse":"people.engr.tamu.edu/davis/suitesparse",sup:"github.com/pressly/sup",supabase:"supabase.com/cli",surreal:"surrealdb.com",Surya:"github.com/VikParuchuri/surya",svn:"apache.org/subversion",SvtAv1EncApp:"gitlab.com/AOMediaCodec/SVT-AV1",svu:"github.com/caarlos0/svu",swag:"github.com/swaggo/swag","swagger-codegen":"swagger.io/swagger-codegen",swift:"swift.org","swift-create-xcframework":"github.com/unsignedapps/swift-create-xcframework","swift-outdated":"github.com/kiliankoe/swift-outdated","swift-sh":"github.com/mxcl/swift-sh",swiftenv:"github.com/kylef/swiftenv",swiftformat:"github.com/nicklockwood/SwiftFormat",swiftgen:"github.com/SwiftGen/SwiftGen",swiftlint:"github.com/realm/SwiftLint",swig:"swig.org",syft:"anchore.com/syft",symfony:"symfony.com",sympy:"sympy.org",syncthing:"syncthing.net",synth:"getsynth.com",systemd:"systemd.io",tableplus:"tableplus.com",TablePlus:"tableplus.com",tabulate:"github.com/astanin/python-tabulate","taglib-config":"taglib.org",tailcall:"tailcall.run",tailscale:"tailscale.com",tailwindcss:"tailwindcss.com",talhelper:"budimanjojo.github.io/talhelper",talisman:"thoughtworks.github.io/talisman",talosctl:"talos.dev",taplo:"taplo.tamasfe.dev",tar:"gnu.org/tar",tart:"tart.run",task:"taskfile.dev",tbb:"github.com/oneapi-src/oneTBB",tcl:"tcl.tk/tcl","tcl-lang":"tcl-lang.org",tcsh:"tcsh.org",tdnf:"github.com/vmware/tdnf","tea-gpg-wallet":"crates.io/tea-gpg-wallet","tea-package-builder":"github.com/ArionThinker/tea-package-builder","tea/cli":"tea.xyz",tectonic:"tectonic-typesetting.github.io",telegram:"telegram.org",Telegram:"telegram.org",teller:"tlr.dev",telnet:"apple.com/remote_cmds",templ:"templ.guide",temporal:"temporal.io","term-size":"github.com/sindresorhus/macos-term-size","terminal-notifier":"github.com/julienXX/terminal-notifier",termshark:"termshark.io",termusic:"crates.io/termusic",terraform:"terraform.io","terraform-cdk":"terraform.io/cdk","terraform-docs":"terraform-docs.io",terragrunt:"terragrunt.gruntwork.io",terrarium:"github.com/terrarium-tf",terratag:"terratag.io",tesseract:"tesseract-ocr.github.io",testscript:"go.dev/testscript",texinfo:"gnu.org/texinfo","text generation web UI":"github.com/oobabooga/text-generation-webui","tf-import-gen":"github.com/kishaningithub/tf-import-gen",tfenv:"github.com/tfutils/tfenv",tflint:"github.com/terraform-linters/tflint",tfsec:"aquasecurity.github.io/tfsec",tfupdate:"github.com/minamijoyo/tfupdate","The Silver Searcher":"geoff.greer.fm/ag","The Unarchiver":"the-unarchiver.com","the-unarchiver":"the-unarchiver.com",thefuck:"github.com/nvbn/thefuck",theora:"theora.org",thrift:"apache.org/thrift",thrift1:"facebook.com/fbthrift",ticker:"github.com/achannarasappa/ticker",tidy:"html-tidy.org","tidy-viewer":"crates.io/tidy-viewer",tiff:"simplesystems.org/libtiff",tig:"jonas.github.io/tig",tilt:"tilt.dev",tine:"github.com/OutOfBedlam/tine",tiny:"crates.io/tiny",tinygo:"tinygo.org",tinyxml2:"leethomason.github.io/tinyxml2",tldr:"tldr.sh",tmate:"tmate.io",tmux:"github.com/tmux/tmux",toast:"crates.io/toast",tofu:"opentofu.org",tokei:"crates.io/tokei",tokesura:"github.com/kevinmichaelchen/tokesura","toml-cli":"github.com/MinseokOh/toml-cli",toml11:"github.com/ToruNiina/toml11",tools:"golang.org/tools",topgrade:"crates.io/topgrade",tox:"tox.wiki",traefik:"traefik.io",transmit:"transmit.panic.com",Transmit:"transmit.panic.com",trash:"crates.io/trashy",tre:"github.com/dduan/tre",tree:"gitlab.com/OldManProgrammer/unix-tree","tree-sitter":"tree-sitter.github.io","trezor-agent":"github.com/romanz/trezor-agent",triangle:"github.com/esimov/triangle",trip:"trippy.cli.rs",trivy:"aquasecurity.github.io/trivy","trove-classifiers":"pypa.io/trove-classifiers",trufflehog:"trufflesecurity.com/trufflehog",trurl:"curl.se/trurl",tsc:"typescriptlang.org",TTS:"github.com/coqui-ai/TTS",ttyd:"tsl0922.github.io/ttyd",tunnelblick:"tunnelblick.net",Tunnelblick:"tunnelblick.net",turso:"turso.tech",tuxpaint:"tuxpaint.org",twine:"github.com/pypa/twine",typesense:"typesense.org",typing_extensions:"python.org/typing_extensions",typos:"crates.io/typos",typst:"typst.app",uchardet:"freedesktop.org/uchardet",ucl:"oberhumer.com/ucl",unar:"the-unarchiver.com",unbound:"unbound.net",unibilium:"github.com/neovim/unibilium",unicode:"unicode.org",unixodbc:"unixodbc.org",unrar:"rarlab.com",unxip:"github.com/saagarjha/unxip",unzip:"info-zip.org/unzip","update-mime-database":"freedesktop.org/shared-mime-info",uplift:"upliftci.dev",upx:"upx.github.io",uriparse:"uriparser.github.io",urllib3:"github.com/urllib3/urllib3",usql:"github.com/xo/usql",usque:"github.com/Diniboy1123/usque",usrsctp:"github.com/sctplab/usrsctp",utf8cpp:"github.com/nemtrif/utfcpp",utf8proc:"github.com/JuliaStrings/utf8proc","util-linux":"github.com/util-linux/util-linux","util-macros":"x.org/util-macros","v2.5":"gnupg.org/v2.5",vala:"gnome.org/vala",vale:"vale.sh",valkey:"valkey.io",vals:"github.com/helmfile/vals",vamp:"vamp-plugins.org","vanitygen-plusplus":"github.com/10gic/vanitygen-plusplus",Vanna:"vanna.ai",vault:"vaultproject.io","vault-unseal":"github.com/lrstanley/vault-unseal",vcluster:"vcluster.com",vde:"virtualsquare.org/vde",vdpau:"freedesktop.org/vdpau",velero:"velero.io",versio:"crates.io/versio",versitygw:"versity.com/versitygw",vfkit:"github.com/crc-org/vfkit",vhs:"charm.sh/vhs",vi:"vim.org","vid.stab":"public.hronopik.de/vid.stab",vim:"vim.org",vips:"libvips.org",virtualenv:"virtualenv.pypa.io","Visual Studio Code":"code.visualstudio.com",vite:"vitejs.dev",vitess:"vitess.io",vivid:"crates.io/vivid",vlc:"vlc.app",VLC:"vlc.app",vmaf:"netflix.com/vmaf",volta:"volta.sh",vorbis:"xiph.org/vorbis",vscode:"code.visualstudio.com","vscode cli":"microsoft.com/code-cli",vspipe:"vapoursynth.com","Vulkan-Headers":"github.com/KhronosGroup/Vulkan-Headers","Vulkan-Loader":"github.com/KhronosGroup/Vulkan-Loader",wails:"wails.io",wait4x:"wait4x.dev",wangle:"facebook.com/wangle",warp:"warp.dev",Warp:"warp.dev","wasm-pack":"crates.io/wasm-pack",wasmer:"wasmer.io",watch:"gitlab.com/procps-ng/watch",watchexec:"watchexec.github.io",watchman:"facebook.com/watchman",wavpack:"wavpack.com",wayland:"wayland.freedesktop.org","wayland-protocols":"wayland.freedesktop.org/protocols",webhook:"github.com/adnanh/webhook",webp:"google.com/webp",werf:"werf.io",wezterm:"wezfurlong.org/wezterm",wget:"gnu.org/wget",whatsapp:"whatsapp.com",WhatsApp:"whatsapp.com",when:"github.com/mitsuhiko/when",which:"gnu.org/which",whisper:"github.com/ggerganov/whisper.cpp",whosthere:"github.com/ramonvermeulen/whosthere",wimlib:"wimlib.net",wireshark:"wireshark.org",witr:"github.com/pranshuparmar/witr",woff2:"google.com/woff2",wordl:"crates.io/wordl","wpebackend-fdo":"wpewebkit.org/wpebackend-fdo",wthrr:"crates.io/wthrr",wumpus:"catb.org/wumpus",wunderctl:"wundergraph.com",wxwidgets:"wxwidgets.org",x11:"x.org/x11",x264:"videolan.org/x264",x265:"videolan.org/x265",xau:"x.org/xau",xauth:"x.org/xauth",xaw:"x.org/xaw","xb-tool":"github.com/hughsie/libxmlb",xcaddy:"github.com/caddyserver/xcaddy",xcb:"x.org/protocol/xcb","xcb-util":"freedesktop.org/xcb-util","xcb-util-image":"freedesktop.org/xcb-util-image","xcb-util-keysyms":"freedesktop.org/xcb-util-keysyms","xcb-util-renderutil":"freedesktop.org/xcb-util-renderutil","xcb-util-wm":"freedesktop.org/xcb-util-wm",xcbeautify:"tuist.io/xcbeautify",xchtmlreport:"github.com/XCTestHTMLReport/XCTestHTMLReport",xcodegen:"github.com/yonaskolb/XcodeGen",xcodeproj:"cocoapods.org/xcodeproj",xcodes:"github.com/XcodesOrg/xcodes",xcomposite:"x.org/xcomposite",xcparse:"github.com/ChargePoint/xcparse",xcresultparser:"github.com/a7ex/xcresultparser",xcursor:"x.org/xcursor",xdamage:"x.org/xdamage","xdg-user-dir":"freedesktop.org/xdg-user-dirs",xdmcp:"x.org/xdmcp",xeol:"github.com/xeol-io/xeol","xerces-c":"xerces.apache.org/xerces-c",xfixes:"x.org/xfixes",xft:"x.org/xft",xinerama:"x.org/xinerama",xinput:"x.org/xinput",xkbcli:"xkbcommon.org",xkbfile:"x.org/xkbfile",XKeyboardConfig:"freedesktop.org/XKeyboardConfig",xml:"gnome.org/libxml2",XMLStarlet:"sourceforge.net/xmlstar",xmlwf:"libexpat.github.io",xmu:"x.org/xmu",xorriso:"gnu.org/xorriso",xplr:"xplr.dev",xpm:"x.org/xpm",xpra:"xpra.org",xrandr:"x.org/xrandr","xray-core":"xtls.github.io",xrender:"x.org/xrender",xscrnsaver:"x.org/xscrnsaver",xshmfence:"x.org/xshmfence",xslt:"gnome.org/libxslt",xsv:"github.com/burntsushi/xsv",xtrans:"x.org/xtrans",xtst:"x.org/xtst",xvid:"xvid.com",xxf86vm:"x.org/xxf86vm",xxh:"github.com/Cyan4973/xxHash",yabai:"github.com/koekeishiya/yabai",yadm:"yadm.io","yaml-cpp":"github.com/jbeder/yaml-cpp",yamllint:"github.com/adrienverge/yamllint",yarn:"classic.yarnpkg.com",yasm:"yasm.tortall.net",yazi:"github.com/sxyazi/yazi","youtube-dl":"youtube-dl.org","yt-dlp":"yt-dlp.org","yubikey-agent":"filippo.io/yubikey-agent","yubikey-manager":"developers.yubico.com/yubikey-manager",yuicompressor:"yui.github.io/yuicompressor",zap:"github.com/keith/zap",zarf:"zarf.dev",zathura:"pwmt.org/zathura",zed:"zed.dev",Zed:"zed.dev",zellij:"crates.io/zellij",zeromq:"zeromq.org",zig:"ziglang.org",zimg:"github.com/sekrit-twc/zimg",zip:"info-zip.org/zip",zippy:"github.com/thinkst/zippy",zlib:"zlib.net",zola:"getzola.org",zookeeper:"apache.org/zookeeper",zotregistry:"zotregistry.dev",zoxide:"crates.io/zoxide",zrok:"zrok.io",zsh:"zsh.sourceforge.io","zsh-autosuggestions":"github.com/zsh-users/zsh-autosuggestions","zsh-completions":"github.com/zsh-users/zsh-completions","zsh-syntax-highlighting":"github.com/zsh-users/zsh-syntax-highlighting",zstd:"facebook.com/zstd"}});
2
+ export{i as Lc,e as Mc};
@@ -1 +1 @@
1
- import{Ib as a,Jb as b,Kb as c,Lb as d,Mb as e,Nb as f,Ob as g,Pb as h,Qb as i,Rb as j,Sb as k,Tb as l,Ub as m,Vb as n}from"./chunk-5y7jxjtz.js";import"./chunk-415b756j.js";import"./chunk-rqny4g8r.js";import"./chunk-hxd34yh9.js";import"./chunk-a20hctx6.js";export{b as cleanStaleOutputFiles,e as cleanupBrowserResources,j as fetchAndSaveAllPackages,k as fetchAndSavePackage,g as fetchPantryPackage,n as fetchPantryPackageWithMetadata,f as fetchPkgxProjects,c as getValidCachedPackage,m as readPantryPackageInfo,a as savePackageAsTypeScript,d as saveToCacheAndOutput,l as scanPantryPackages,h as setupCleanupHandlers,i as startPeriodicCleanup};
1
+ import{Jb as a,Kb as b,Lb as c,Mb as d,Nb as e,Ob as f,Pb as g,Qb as h,Rb as i,Sb as j,Tb as k,Ub as l,Vb as m,Wb as n}from"./chunk-1xyn336h.js";import"./chunk-n7nj6jzj.js";import"./chunk-bpb1md3m.js";import"./chunk-84px82t5.js";import"./chunk-jzj5056d.js";export{b as cleanStaleOutputFiles,e as cleanupBrowserResources,j as fetchAndSaveAllPackages,k as fetchAndSavePackage,g as fetchPantryPackage,n as fetchPantryPackageWithMetadata,f as fetchPkgxProjects,c as getValidCachedPackage,m as readPantryPackageInfo,a as savePackageAsTypeScript,d as saveToCacheAndOutput,l as scanPantryPackages,h as setupCleanupHandlers,i as startPeriodicCleanup};