buddy-bot
Version:
Automated & optimized dependency updates for JavaScript & TypeScript projects. Like Renovate & Dependabot.
273 lines • 60.9 kB
JavaScript
// @bun
import{D as Ae,E as ia,F as oa,G as la,H as ca,I as ga,J as pa,K as ua,L as da,M as ma,N as fa,O as ha,P as ka,Q as $a,R as ya,S as wa,T as ba}from"./chunk-72vxav2c.js";import{$ as G,U as qe,V as Me,W as Ke,X as Ye,Y as Xe,Z as He,_ as ea,aa,ba as ce,ca as ta,da as sa,ea as na,fa as ra}from"./chunk-knkqp939.js";import{ga as Be,ha as Je,ia as Re,ja as _e,ka as Ze}from"./chunk-jah7r3bb.js";import{la as he,ma as va,na as xa,oa as M}from"./chunk-32dgq3f4.js";import{pa as I,qa as q}from"./chunk-8wk4nc61.js";import{ra as fe}from"./chunk-vd04qkw4.js";import{ua as ae,wa as te}from"./chunk-pvk7bcsa.js";q();async function U(){try{let{packages:e}=await import("./chunk-32dgq3f4.js");return e}catch{return{}}}async function B(e){let a=J(e);if(!a)return null;let t=(await U())[a];if(!t||!t.versions||t.versions.length===0)return null;return t.versions[0]}async function K(e){let a=J(e);if(!a)return[];let t=(await U())[a];if(!t||!t.versions)return[];return[...t.versions]}function Te(e={}){let a=["8.4.11","8.3.14","8.2.26","8.1.30"],t=e.fallbackVersions||a;try{let{pantry:s}=(M(),fe(he)),n=s.phpnet||s.php;if(!n||!n.versions||n.versions.length===0)return t;let i=[...n.versions],o=e.supportedBranches||ze(i),r=new Map;for(let g of i){let[p,k]=g.split(".");if(!p||!k)continue;let $=`${p}.${k}`;if(o.includes($)&&!r.has($))r.set($,g)}let l=o.map((g)=>r.get(g)).filter(Boolean);return l.length>0?l:t}catch{return t}}function ze(e){let a=new Map;for(let t of e){let[s,n]=t.split(".");if(!s||!n)continue;let i=`${s}.${n}`;a.set(i,(a.get(i)||0)+1)}return Array.from(a.keys()).filter((t)=>{let[s]=t.split(".");return s==="8"&&a.get(t)>3}).sort((t,s)=>{let[n,i]=t.split(".").map(Number),[o,r]=s.split(".").map(Number);if(n!==o)return o-n;return r-i}).slice(0,4)}async function ke(e,a){return(await K(e)).includes(a)}async function $e(e,a="latest"){if(a==="latest")return await B(e);let t=await K(e);if(t.length===0)return null;if(t.includes(a))return a;if(a.startsWith("^")){let s=a.slice(1).split(".")[0];return t.filter((n)=>n.startsWith(`${s}.`))[0]||null}if(a.startsWith("~")){let s=a.slice(1),[n,i]=s.split("."),o=`${n}.${i}.`;return t.filter((r)=>r.startsWith(o))[0]||null}if(a.startsWith(">=")){let s=a.slice(2);return t.filter((n)=>n>=s)[0]||null}return await B(e)}async function W(e){let a=J(e);if(!a)return null;let t=(await U())[a];if(!t)return null;let s=await B(e);if(!s)return null;return{name:String(e),domain:a,description:t.description||"",latestVersion:s,totalVersions:t.versions?.length||0,programs:[...t.programs||[]],dependencies:[...t.dependencies||[]],companions:[...t.companions||[]],versions:[...t.versions||[]]}}function J(e){let a=String(e);if(a in I){let t=I[a];return me(t)}return me(a)}function me(e){if(e.includes("/")){let[a,...t]=e.split("/"),s=t.join("/"),n=a.replace(/\./g,""),i=s.replace(/[/\-_.]/g,"").toLowerCase();return`${n}${i}`.toLowerCase()}return e.replace(/[.-]/g,"").toLowerCase()}async function ye(e){let a=[],t=e.toLowerCase();for(let[n,i]of Object.entries(I))if(n.toLowerCase().includes(t)){let o=await W(n);if(o)a.push(o)}let s=await U();for(let[n,i]of Object.entries(s))if(n.toLowerCase().includes(t)||i.description?.toLowerCase().includes(t)){let o=await W(n);if(o&&!a.some((r)=>r.domain===n))a.push(o)}return a}async function Qe(e){let a=[],t=await U();for(let s of Object.keys(t))if(e.test(s)){let n=await W(s);if(n)a.push(n)}return a}async function se(e=10){let a=[],t=await U();for(let s of Object.keys(t)){let n=await W(s);if(n&&n.totalVersions>=e)a.push(n)}return a.sort((s,n)=>n.totalVersions-s.totalVersions)}async function we(e=50){return(await se(5)).slice(0,e)}async function ne(e){try{let a=e.lastIndexOf("@");if(a===-1){let n=e;if(!J(n))return{isValid:!1,error:`Unknown package: ${n}`};return{isValid:!0,packageName:n}}let t=e.slice(0,a),s=e.slice(a+1);if(!J(t))return{isValid:!1,error:`Unknown package: ${t}`};if(s==="latest")return{isValid:!0,packageName:t,version:s};if(!await ke(t,s))return{isValid:!1,packageName:t,version:s,error:`Version ${s} not available for package ${t}`};return{isValid:!0,packageName:t,version:s}}catch{return{isValid:!1,error:`Invalid package specification: ${e}`}}}import Pa from"process";import be from"process";import R from"fs";import ie from"path";import x from"fs";import b from"path";import V from"process";import re from"fs";import Ba from"path";import _ from"process";q();function Ve(e){return e in I}function Da(e){return e.includes(".")}function ot(e){return Ve(e)||Da(e)}function lt(e){return["darwin","linux","windows"].includes(e)}function ct(e){return["x86_64","aarch64","armv7l","i686"].includes(e)}function Sa(){return Object.keys(I)}function gt(){return Object.values(I)}function pt(e){if(Ve(e))return{originalName:e,resolvedDomain:I[e],isAlias:!0};return{originalName:e,resolvedDomain:e,isAlias:!1}}function ut(e){let a=e.lastIndexOf("@");if(a===-1)return{name:e};let t=e.slice(0,a),s=e.slice(a+1);return{name:t,version:s,versionSpec:s}}function dt(e,a){return a?`${e}@${a}`:e}function ge(){let e=be.platform,a=be.arch,t,s,n=!0;switch(e){case"darwin":t="darwin";break;case"linux":t="linux";break;case"win32":t="windows";break;default:t="linux",n=!1}switch(a){case"x64":s="x86_64";break;case"arm64":s="aarch64";break;case"arm":s="armv7l";break;case"ia32":s="i686";break;default:s="x86_64",n=!1}return{platform:t,architecture:s,isSupported:n}}function mt(e,a="latest",t){let s=t||ge(),n;switch(s.platform){case"darwin":n="tar.xz";break;case"linux":n="tar.xz";break;case"windows":n="zip";break;default:n="tar.xz"}return{packageName:e,version:a,platform:s.platform,architecture:s.architecture,format:n}}var ft={LATEST:"latest",ANY:"*"},Ee={RUNTIME:["nodejs.org","python.org","go.dev","rust-lang.org"],BUILD_TOOLS:["cmake.org","ninja-build.org","gradle.org","maven.apache.org"],DATABASES:["postgresql.org","mysql.com","redis.io","mongodb.com"],EDITORS:["neovim.io","vim.org","code.visualstudio.com"],CLI_TOOLS:["cli.github.com","curl.se","wget.gnu.org","jq.dev"]};function ht(e){return Ee[e]}function kt(e,a){return Ee[a].includes(e)}function $t(e){return e}function yt(e,a){return[e,a]}function wt(e){return e}async function bt(e){try{let a=await W(e);if(!a)return{success:!1,error:`Package '${e}' not found. Use 'search' to find available packages.`};return{success:!0,data:a}}catch(a){return{success:!1,error:`Failed to get package info: ${a}`}}}async function vt(e){try{if(!e||e.trim().length===0)return{success:!1,error:"Search term cannot be empty"};return{success:!0,data:await ye(e.trim())}}catch(a){return{success:!1,error:`Search failed: ${a}`}}}async function xt(e=20){try{return{success:!0,data:(await se(5)).slice(0,e)}}catch(a){return{success:!1,error:`Failed to list popular packages: ${a}`}}}async function Pt(e=20){try{return{success:!0,data:await we(e)}}catch(a){return{success:!1,error:`Failed to list active packages: ${a}`}}}function Dt(){try{return{success:!0,data:Sa()}}catch(e){return{success:!1,error:`Failed to list aliases: ${e}`}}}async function St(e){try{let a=await ne(e);if(!a.isValid)return{success:!1,error:a.error};return{success:!0,data:{packageName:a.packageName,version:a.version,isValid:!0}}}catch(a){return{success:!1,error:`Validation failed: ${a}`}}}async function jt(e){try{let a=await ne(e);if(!a.isValid)return{success:!1,error:a.error};let t=a.packageName,s=a.version||"latest",n=await $e(t,s);if(!n)return{success:!1,error:`Could not resolve version '${s}' for package '${t}'`};let i=await W(t);if(!i)return{success:!1,error:`Package '${t}' not found`};let o=ge(),r={packageName:t,resolvedVersion:n,platform:o.platform,architecture:o.architecture,dependencies:i.dependencies,companions:i.companions,installCommand:`pkgx install ${t}@${n}`},l=[];if(!o.isSupported)l.push(`Platform ${o.platform}/${o.architecture} may not be fully supported`);if(i.dependencies.length>0)l.push(`This package has ${i.dependencies.length} dependencies that will also be installed`);return{success:!0,data:r,warnings:l.length>0?l:void 0}}catch(a){return{success:!1,error:`Failed to create install plan: ${a}`}}}async function Ct(e){try{let a=await B(e);if(!a)return{success:!1,error:`Package '${e}' not found`};let t=await K(e);return{success:!0,data:{latest:a,total:t.length,versions:t}}}catch(a){return{success:!1,error:`Failed to get version info: ${a}`}}}function At(e){let a=[`Package: ${e.name}`,`Domain: ${e.domain}`,`Description: ${e.description}`,`Latest Version: ${e.latestVersion}`,`Total Versions: ${e.totalVersions}`];if(e.programs.length>0)a.push(`Programs: ${e.programs.join(", ")}`);if(e.dependencies.length>0)a.push(`Dependencies: ${e.dependencies.join(", ")}`);if(e.companions.length>0)a.push(`Companions: ${e.companions.join(", ")}`);return a.join(`
`)}function Vt(e){if(e.length===0)return"No packages found matching your search.";let a=[`Found ${e.length} package(s):
`];for(let t of e)a.push(`${t.name} (${t.domain})`),a.push(` ${t.description}`),a.push(` Latest: ${t.latestVersion} (${t.totalVersions} versions available)`),a.push("");return a.join(`
`)}function Et(e){let a=[`Installation Plan for ${e.packageName}@${e.resolvedVersion}`,`Platform: ${e.platform}/${e.architecture}`,`Command: ${e.installCommand}`];if(e.dependencies.length>0)a.push(`Dependencies: ${e.dependencies.join(", ")}`);if(e.companions.length>0)a.push(`Companions: ${e.companions.join(", ")}`);return a.join(`
`)}function Ot(){try{let e=ge();return{success:!0,data:{platform:e.platform,architecture:e.architecture,isSupported:e.isSupported,nodeVersion:Pa.version}}}catch(e){return{success:!1,error:`Failed to get system info: ${e}`}}}function Oe(e){if(!R.existsSync(e))throw Error(`Dependency file not found: ${e}`);let a=R.readFileSync(e,"utf-8"),t=[],s=a.split(`
`),n=!1,i=!1,o=0;for(let r of s){let l=r.trim();if(!l||l.startsWith("#"))continue;if(r.match(/^(dependencies|deps):\s*$/)){n=!0,i=!1,o=r.search(/\S/);continue}if(r.match(/^global:\s*true\s*$/)||r.match(/^global:\s*$/)&&!n){i=!0;continue}if(r.match(/^\w+:/)&&!r.includes(" ")&&n&&o===0){n=!1;continue}if(n||i){if(r.match(/^\s+(dependencies|deps):\s*$/))continue;let g=r.indexOf(":");if(g>0){let p=r.substring(0,g).trim(),k=r.substring(g+1).trim();if(p&&k){let $=p,d=k.replace(/^['"]|['"]$/g,"");if($==="global"||$==="dependencies"||$==="deps")continue;let c=d,y=d;if(d.startsWith("^"))c=d.substring(1),y=d;else if(d.startsWith("~"))c=d.substring(1),y=d;else if(d.startsWith(">=")||d.startsWith("<=")||d.startsWith(">")||d.startsWith("<")){let m=/^([><=]+)/.exec(d);if(m){let f=m[1];c=d.substring(f.length).trim(),y=d}}else if(d==="*"||d==="latest")c="latest",y="*";else c=d,y=`@${d}`;t.push({name:$,version:c,constraint:y,isOsSpecific:!1})}}}}return t}async function Ft(e,a="src/packages"){try{let t;if(e.includes("/"))t=ie.join(a,`${e}.ts`);else{let g=`${e.replace(/\./g,"")}.ts`;t=ie.join(a,g)}if(!R.existsSync(t))return[];let s=R.readFileSync(t,"utf-8"),n=s.indexOf("versions:");if(n===-1)return[];let i=s.substring(n),o=i.indexOf("["),r=i.indexOf("] as const");if(o===-1||r===-1)return[];let l=i.substring(o+1,r).match(/'([^']+)'/g);if(!l)return[];return l.map((g)=>g.replace(/'/g,""))}catch{return[]}}async function ja(e){try{let{packages:a}=await import("./chunk-32dgq3f4.js").catch(()=>Promise.resolve().then(() => require_src())),t=e.replace(/[^a-z0-9]/gi,"").toLowerCase(),s=a[t];if(!s)s=Object.values(a).find((n)=>n.domain===e);if(s&&s.versions&&Array.isArray(s.versions))return s.versions;return[]}catch{return[]}}async function ve(e,a){let t=await ja(e);if(t.length===0)return a.split("#")[0].trim().replace(/^[@^~>=<]+/,"")||"latest";let s=a.split("#")[0].trim();if(s==="*"||s==="latest")return t[0];if(s.startsWith("@")){let n=s.slice(1);return t.includes(n)?n:t[0]}return Ca(t,s)||t[0]}function Ca(e,a){if(a.startsWith("^")){let t=a.slice(1),[s]=T(t);return e.filter((n)=>{let[i]=T(n);return i===s&&L(n,t)>=0})[0]||null}if(a.startsWith("~")){let t=a.slice(1),[s,n]=T(t);return e.filter((i)=>{let[o,r]=T(i);return o===s&&r===n&&L(i,t)>=0})[0]||null}if(a.startsWith(">=")){let t=a.slice(2).trim();return e.filter((s)=>L(s,t)>=0)[0]||null}if(a.startsWith(">")){let t=a.slice(1).trim();return e.filter((s)=>L(s,t)>0)[0]||null}if(a.startsWith("<=")){let t=a.slice(2).trim();return e.filter((s)=>L(s,t)<=0)[0]||null}if(a.startsWith("<")){let t=a.slice(1).trim();return e.filter((s)=>L(s,t)<0)[0]||null}if(a.startsWith("=")){let t=a.slice(1).trim();return e.includes(t)?t:null}return e.includes(a)?a:null}function T(e){let a=e.split(".").map((t)=>{let s=t.match(/^\d+/);return s?Number.parseInt(s[0],10):0});return[a[0]||0,a[1]||0,a[2]||0]}function L(e,a){if(e==="latest"&&a!=="latest")return 1;if(a==="latest"&&e!=="latest")return-1;if(e==="latest"&&a==="latest")return 0;let t=e.split("#")[0].trim(),s=a.split("#")[0].trim(),[n,i,o]=T(t),[r,l,g]=T(s);if(n>r)return 1;if(n<r)return-1;if(i>l)return 1;if(i<l)return-1;if(o>g)return 1;if(o<g)return-1;return 0}async function Aa(e){try{let{packages:a}=await import("./chunk-32dgq3f4.js").catch(()=>Promise.resolve().then(() => require_src())),t=e.replace(/[^a-z0-9]/gi,"").toLowerCase(),s=a[t];if(s)return{dependencies:s.dependencies||[],companions:s.companions||[]};let n=Object.values(a).find((i)=>i.domain===e);if(n)return{dependencies:n.dependencies||[],companions:n.companions||[]};return null}catch(a){return console.warn(`Failed to load package data for ${e}: ${a}`),null}}async function Y(e,a={},t=new Set,s=0){let{maxDepth:n=10,verbose:i=!1,targetOs:o,includeOsSpecific:r=!0}=a;if(s>n||t.has(e))return[];if(t.add(e),i)console.log(`${" ".repeat(s)}Resolving dependencies for: ${e}`);let l=[];try{let g=await Aa(e);if(g&&g.dependencies)for(let p of g.dependencies){let k=p.match(/^(linux|darwin|windows):(.+)$/),$=!!k,d=k?k[2]:p,c=k?k[1]:void 0;if($&&(!r||o&&c!==o))continue;let y=d,m="latest",f="*",v=d.match(/^([^@^~>=<]+)([@^~>=<].+)?$/);if(v){if(y=v[1],v[2]){let w=v[2];if(w.startsWith("@"))m=w.substring(1),f=w;else f=w,m=w.replace(/^\D*/,"")}}let u={name:y,version:m,constraint:f,isOsSpecific:$,os:c};l.push(u);let h=await Y(y,a,t,s+1);l.push(...h)}if(g&&g.companions)for(let p of g.companions){let k=p.match(/^(linux|darwin|windows):(.+)$/),$=!!k,d=k?k[2]:p,c=k?k[1]:void 0;if($&&(!r||o&&c!==o))continue;let y=d,m="latest",f="*",v=d.match(/^([^@^~>=<]+)([@^~>=<].+)?$/);if(v){if(y=v[1],v[2]){let w=v[2];if(w.startsWith("@"))m=w.substring(1),f=w;else f=w,m=w.replace(/^\D*/,"")}}let u={name:y,version:m,constraint:f,isOsSpecific:$,os:c};l.push(u);let h=await Y(y,a,t,s+1);l.push(...h)}}catch(g){if(i)console.warn(`${" ".repeat(s)}Warning: Could not resolve dependencies for ${e}: ${g}`)}return l}async function Ie(e,a={}){let t=new Map,s=[],n={linux:[],darwin:[],windows:[]};for(let r of e){if(!t.has(r.name))t.set(r.name,[]);if(t.get(r.name).push(r),r.isOsSpecific&&r.os)n[r.os].push(r)}let i=[],o=[];for(let[r,l]of t)if(l.length===1){let g=await ve(r,l[0].constraint),p={...l[0],version:g};i.push(p),o.push(r)}else{let g=l.map((c)=>c.version),p=[...new Set(g)];if(p.length>1)s.push({package:r,versions:p});let k=await Promise.all(l.map(async(c)=>({...c,resolvedVersion:await ve(r,c.constraint)}))),$=k[0];for(let c of k.slice(1))if($.constraint==="*"&&c.constraint!=="*")$=c;else if($.constraint!=="*"&&c.constraint==="*");else if(L(c.resolvedVersion,$.resolvedVersion)>0)$=c;let d={...$,version:$.resolvedVersion};delete d.resolvedVersion,i.push(d),o.push(r)}return{allDependencies:i,uniquePackages:o,conflicts:s,osSpecificDeps:n}}async function Va(e,a={}){let{verbose:t=!1}=a;if(t)console.log(`Parsing dependency file: ${e}`);let s=Oe(e);if(t)console.log(`Found ${s.length} direct dependencies`);let n=[...s];for(let o of s){if(t)console.log(`Resolving transitive dependencies for: ${o.name}`);let r=await Y(o.name,a);n.push(...r)}if(t)console.log(`Total dependencies found (before deduplication): ${n.length}`);let i=await Ie(n,a);if(t){if(console.log(`Unique packages after deduplication: ${i.uniquePackages.length}`),i.conflicts.length>0)console.log(`Version conflicts found: ${i.conflicts.length}`)}return i}function Wt(e){let a=["deps.yaml","deps.yml","dependencies.yaml","dependencies.yml","pkgx.yaml","pkgx.yml",".deps.yaml",".deps.yml"],t=[];for(let s of a){let n=ie.join(e,s);if(R.existsSync(n))t.push(n)}return t}var oe=b.join(V.cwd(),"src","packages"),le=b.join(V.cwd(),"docs"),Q={};async function pe(e){try{let a=e||b.join(V.cwd(),"src","packages"),t=b.join(a,"index.ts");if(x.existsSync(t)){console.log("Using generated index file for package mapping...");let i=await import(b.resolve(t)),o=i.pantry||i.packages;if(o)return console.log(`Successfully loaded ${Object.keys(o).length} packages from index`),o}console.log("Index file not found, falling back to direct file reading...");let s={};if(!x.existsSync(a))return console.log(`Packages directory does not exist: ${a}`),s;let n=[];try{let i=function(o,r=""){let l=[],g=x.readdirSync(o,{withFileTypes:!0});for(let p of g)if(p.isFile()&&p.name.endsWith(".ts")&&p.name!=="index.ts"&&p.name!=="aliases.ts")l.push(b.join(o,p.name));else if(p.isDirectory()&&!p.name.startsWith(".")){let k=b.join(o,p.name),$=r?`${r}/${p.name}`:p.name;l.push(...i(k,$))}return l};n=i(a),console.log(`Found ${n.length} package files`)}catch(i){console.error(`Error reading packages directory ${a}:`,i),n=[]}console.log(`Reading package data from ${n.length} files...`);for(let i of n)try{let o=b.isAbsolute(i)?i:b.join(a,i),r=x.readFileSync(o,"utf-8"),l=b.basename(i,".ts"),g=r.match(/domain:\s*['"]([^'"]*)['"]\s*as const/),p=g?g[1]:ce(l),k=G(p),$=Ea(r,p);if($)s[k]=$,console.log(`Loaded package data for ${p} -> ${k}`)}catch(o){console.error(`Error processing file ${i}:`,o)}return console.log(`Successfully loaded ${Object.keys(s).length} packages`),s}catch(a){return console.error("Error importing pantry:",a),{}}}function Ea(e,a){try{let t=e.match(/domain:\s*['"]([^'"]*)['"]\s*as const/),s=t?t[1]:a;if(!e.match(/export const \w+Package = \{([\s\S]*?)\}/))return console.warn(`Could not find package object in file for ${s}`),null;let n=(h)=>{let w=new RegExp(`${h}:\\s*\\[(.*?)\\]\\s*as const`,"s"),P=e.match(w);if(!P)return[];let j=P[1],D=j.match(/'([^']*)'/g);if(D)return D.map((S)=>S.replace(/'/g,""));if(D=j.match(/"([^"]*)"/g),D)return D.map((S)=>S.replace(/"/g,""));return[]},i=(h)=>{let w=new RegExp(`${h}:\\s*'((?:[^'\\\\]|\\\\.)*)'\\s*as const`),P=e.match(w);if(P)return P[1].replace(/\\'/g,"'").replace(/\\\\/g,"\\");if(w=new RegExp(`${h}:\\s*'((?:[^'\\\\]|\\\\.)*)'`),P=e.match(w),P)return P[1].replace(/\\'/g,"'").replace(/\\\\/g,"\\");return""},o=i("name")||s,r=i("description")||`A package from ${s}`,l=i("packageYmlUrl")||"",g=i("homepageUrl")||"",p=i("githubUrl")||"",k=i("installCommand")||"",$=i("pkgxInstallCommand")||`sh <(curl https://pkgx.sh) +${s} -- $SHELL -i`,d=i("launchpadInstallCommand")||`launchpad install ${s}`,c=i("fullPath")||s,y=n("programs"),m=n("companions"),f=n("dependencies"),v=n("versions"),u=n("aliases");return{name:o,domain:s,description:r,packageYmlUrl:l,homepageUrl:g,githubUrl:p,installCommand:k,pkgxInstallCommand:$,launchpadInstallCommand:d,programs:y,companions:m,dependencies:f,versions:v,fullPath:c,aliases:u}}catch(t){return console.error(`Error extracting package data for ${a}:`,t),null}}function Oa(e,a){let t=["cli","app","tool","server","client","api","lib","core","sdk","dev","bin"];if(t.includes(e.toLowerCase()))return!1;if(e===a)return!1;let s=a.replace(/\./g,"");if(e===s)return!1;if(e.includes("--")||e.includes("$SHELL")||e.includes("curl")||e.includes("sh <("))return!1;if(e.includes(" -- ")||e.includes(" -i")||e.includes("+")&&e.includes(" "))return!1;if(a.includes("/")){let i=a.split("/"),o=i[i.length-1];if(t.includes(o.toLowerCase())&&e===o)return!1}let n=["go","js","py","rb","sh","vi","cc","gc","jq","awk","sed","mc","gh"];if(e.length<3&&!n.includes(e.toLowerCase()))return!1;if(/^\d+(?:\.\d+)*$/.test(e))return!1;if(!/[a-z]/i.test(e))return!1;if(e.includes("{{")||e.includes("}}"))return!1;if(e.includes("version.major")||e.includes("version.minor")||e.includes("version"))return!1;return!0}function Ne(){return{"Programming Languages":["node","python","go","rust","ruby","julia","lua","luajit","php","crystal","nim","kotlin","scala","swift","zig","v","dart","ghc","ocaml","clojure","erl","elixir","R","perl","tcl","dmd","tinygo"],"Artificial Intelligence":["ollama","huggingface","openai","f2py","kaggle","jupyter","llm","stable-diffusion-webui","open-interpreter","interpreter","GPT Engineer","gPTEngineer","auto-gpt","autogpt","metagpt","MetaGPT","elizaOS","eliza","openplayground","chatblade","aichat"],Databases:["psql","mysql","mongod","mongos","mongosh","redis","sqlite3","duckdb","surreal","etcd","turso","mariadb","influx","clickhouse","neo4j","cassandra","couchdb","elasticsearch","opensearch","memcached","valkey","postgrest","litecli","edgedb","dgraph"],"Web Development":["vite","next","astro","vitepress","laravel","symfony","django","flask","fastapi","rails","spring","express","tailwindcss","svelte","ng","react","vue","nx","nuxt"],DevOps:["docker","compose","podman","kubectl","minikube","kustomize","helm","terraform","terragrunt","jenkins-lts","vault","consul","nomad","packer","ansible","ansible-lint","argocd","flux","lima","k3d","kind","tofu","atlantis","terratag","tflint","tfupdate","cfn-lint","infracost"],"Container & Kubernetes Tools":["docker","podman","kubectl","minikube","kustomize","helm","helmfile","stern","hubble","cilium","kube-linter","kubeshark","kubectl-cnpg","k9s","kubectx","kubecm","kubectl-krew","skaffold","tilt","linkerd","vcluster","istioctl","velero","kubeconform","kubebuilder","operator-sdk"],"Monitoring & Observability":["prometheus","grafana","datadog","newrelic","kibana","jaeger","zipkin","sentry","steampipe","logdy","loki","tempo","allure"],"Build Tools & Automation":["cmake","ninja","meson","scons","make","bazel","gradle","mvn","ant","task","just","autoconf","automake","pkg-config","vcpkg","buildctl","buildkit","earthly","buildifier","pants","scie-pants"],"Package Managers":["npm","npx","yarn","pnpm","bun","pip","pipenv","poetry","conda","bundler","cargo","composer","pod","nuget","brew","port","pkgx","mise","asdf","nixpacks","corepack","luarocks","rye","pdm"],"Editors & IDEs":["nvim","vim","emacs","code","vscode cli","micro","nano","alacritty","wezterm","helix"],"CLI Tools & Utilities":["ripgrep","rg","tree-sitter","fzf","bat","lsd","exa","eza","fd","fd-find","sed","awk","grep","find","jq","yq","tree","watch","htop","btop","bottom","tmux","screen","starship","oh-my-posh","fish","zsh","bash","curl","wget","ripgrep-all","rga","hyperfine","dust","du-dust","duf","ncdu","tokei","loc","delta","git-delta","difftastic","diff-so-fancy","gdu","procs","bandwhich","grex","choose","sd","dog","drill","xh","httpie","curlie"],Networking:["nginx","httpd","caddy","traefik","curl","wget","httpie","cloudflared","openssh","rsync","mosh"],"Security & Cryptography":["OpenSSL","gpg","gpg-tui","vault","bw","op","1Password CLI","1password_cli","mkcert","certbot","age","yubikey-agent","snyk","trivy","tfsec","checkov","git-crypt"],Multimedia:["ffmpeg","vips","mpv","yt-dlp","streamlink","gifsicle","exiftool","optipng","imagemagick"],"Graphics Libraries":["libsdlorg","libsdlorgsdl_image","openglorg","vulkanlunarcom","mesa3dorg","freeglutfileio","glewsourceforge","glmgtrucnet","cairographicsorg","opencvorg","vtkorg","ogre3dorg","irrlichtorg"],"Gaming & Game Development":["unitycom","unrealenginecom","godotengineorg","libsdlorg","love2dorg","rayliborg","allegro5org","defoldcom","constructnet","gamemakerio","cocos2dxorg","lutrisnet","steampipecom","epicgamescom"],"Cloud Platforms":["awsamazoncom","cloudgooglecom","azuremicrosoftcom","digitaloceancom","linodecom","vultrcom","hetznercom","cloudflarecom","netlifycom","vercelcom","herokucom","railwayapp","rendercom","flyio","planetscalecom","supabasecomcli","firebasecom","localstackcloudcli"],"Mobile Development":["reactnativedev","flutterdev","xamarincom","ionicio","cordovaapacheorg","capacitorjscom","nativescriptorg","expodev","fastlanetools","appiumio","androidcomcmdlinetools","gradleorg"],Testing:["jestjsio","mochajsorg","cypressio","seleniumdev","playwrightdev","puppeteerdev","testcafeio","pytestorg","unittestpythonorg","rspecinfo","junitorg","testngorg","webdriverio","vitestdev","avajs","jasminegjscom","karmatestrunnerorg"],Cryptocurrency:["bitcoinorg","ethereumorg","solanacom","getfoundrysh","racoonorg","elementsprojectorg","githubcom10gicvanitygenplusplus","ghostscriptcom","polkadotnetwork","avalanchenetwork","chainlinkcom","cardanoorg"],"Financial Tools":["raccoinorg","gnucashorg","ledgercliorg","beancountgooglecodecom","plaintextaccountingorg","quickencom","mintcom","ynabcom"],"Documentation & Text Processing":["pandocorg","texliveorg","latexprojectorg","asciidocorg","asciidoctororg","sphinxdocorg","mkdocsorg","gitbookcom","githubiohugohugorg","jekyllrb","docsifyjs","rustlangorgmdbook","typstapp","tectonic_typesettinggithubio","maaslalanicomslides"],"System Administration":["systemdio","crongnuorg","rsyncsambaorg","opensshcom","sudows","tmuxgithubcom","gnuorgscreen","htopdev","iostat","psmisc","procpsng","straceio","ltraceorg","lsofio","tcpdumporg","logrotateorg","monitoringpluginsorg"],"Scientific Computing":["numpyorg","scipyorg","pandasdataorg","matplotliborg","seabornpydataorg","plotlycom","jupyterorg","anacondacom","rorg","rstudiocom","octaveorg","matlabcom","mathematicawolframcom","sagemath","maxima","gnuplotorg","paravieworg","vtk"],"Embedded & IoT":["arduino","platformio","espressifcom","raspberrypiorg","mbed","freedosorg","qemuorg","openocdorg","stlink","jlinkorg","modbus","zigbeeorg","gpiozeropythonorg"],"Version Control":["git","gh","gitlab"],"Other Utilities":[]}}function Ia(e){if(Q[e])return Q[e];return e.replace(/\W/g,"_")}function Fe(e){return e.toLowerCase()}function X(e,a,t){try{let s=a||oe,n=t||b.join(s,`${e}.ts`),i=x.readFileSync(n,"utf-8"),o=i.match(/export const (\w+) = \{/),r=o?o[1]:`${e.replace(/\W/g,"")}Package`,l=i.match(/export type (\w+) = typeof/),g=l?l[1]:`${r.charAt(0).toUpperCase()}${r.slice(1)}`;return{packageVarName:r,typeName:g}}catch(s){console.warn(`Could not read package file ${t||`${e}.ts`}, using fallback naming:`,s);let n=Fa(e),i=Na(e);return{packageVarName:n,typeName:i}}}function Na(e){if(Q[e]){let t=Q[e];return`${t.charAt(0).toUpperCase()}${t.slice(1)}Package`}let a=Fe(e).replace(/\W/g,"");return`${a.charAt(0).toUpperCase()}${a.slice(1)}Package`}function Fa(e){if(Q[e])return`${Q[e]}Package`;return`${Fe(e).replace(/\W/g,"")}Package`}function Tt(e,a){let{typeName:t}=X(e,a);return t}function zt(e,a){let{packageVarName:t}=X(e,a);return t}async function xe(e){try{console.log("\uD83D\uDD27 Generating package index..."),console.log(`DEBUG generateIndex START: packagesDir=${e}`),console.log(`DEBUG generateIndex START: process.cwd()=${V.cwd()}`);let a=e||oe,t=b.resolve(a,"index.ts");if(console.log(`DEBUG generateIndex: packagesDir=${e}`),console.log(`DEBUG generateIndex: PACKAGES_DIR=${oe}`),console.log(`DEBUG generateIndex: targetPackagesDir=${a}`),console.log(`DEBUG generateIndex: targetIndexFile=${t}`),console.log(`DEBUG generateIndex: path.isAbsolute(targetIndexFile)=${b.isAbsolute(t)}`),!x.existsSync(a))console.log(`Creating packages directory: ${a}`),x.mkdirSync(a,{recursive:!0});if(!x.existsSync(a))return console.error(`Failed to create packages directory: ${a}`),null;let s=[];try{let i=function(o,r=""){let l=[],g=x.readdirSync(o,{withFileTypes:!0});for(let p of g)if(p.isFile()&&p.name.endsWith(".ts")&&p.name!=="index.ts"&&p.name!=="aliases.ts")l.push(b.join(o,p.name));else if(p.isDirectory()&&!p.name.startsWith(".")){let k=b.join(o,p.name),$=r?`${r}/${p.name}`:p.name;l.push(...i(k,$))}return l};s=i(a),console.log(`Found ${s.length} package files`)}catch(i){console.error(`Error reading packages directory ${a}:`,i),s=[]}let n=`// Auto-generated package index
// Do not edit this file directly
export interface Pantry {
}
export type Packages = Pantry
export const pantry: Pantry = {
}
export const packages: Packages = pantry
`;if(s.length>0){console.log(`Processing ${s.length} package files...`);let i=`// Auto-generated package index
// Do not edit this file directly
`,o=`export interface Pantry {
`,r=`export const pantry: Pantry = {
`,l=new Set,g=new Set,p=s.sort();for(let d of p)try{let c=b.basename(d,".ts"),y=Ia(c),m=b.relative(a,d).replace(/\.ts$/,"").replace(/\\/g,"/"),{packageVarName:f}=X(c,a,d),v=f,u=1;while(g.has(v))v=`${f}${u}`,u++;if(g.add(v),v===f)i+=`import { ${f} } from './${m}'
`;else i+=`import { ${f} as ${v} } from './${m}'
`;let h=y,w=1;while(l.has(h))h=`${y}${w}`,w++;l.add(h);let P=/^\d/.test(h)||!/^[a-z_$][\w$]*$/i.test(h)?`'${h}'`:h;o+=` ${P}: typeof ${v}
`,r+=` ${P}: ${v},
`;let j=x.readFileSync(d,"utf-8").match(/domain:\s*['"]([^'"]*)['"]\s*as const/),D=j?j[1]:"";if(D){let S=G(D);if(S!==h){let C=S,E=1;while(l.has(C))C=`${S}${E}`,E++;l.add(C);let N=/^\d/.test(C)||!/^[a-z_$][\w$]*$/i.test(C)?`'${C}'`:C;o+=` ${N}: typeof ${v}
`,r+=` ${N}: ${v},
`}}}catch(c){console.error(`Error processing file ${d}:`,c)}let k=await H(a),$=new Map;for(let d of p)try{let c=x.readFileSync(d,"utf-8").match(/domain:\s*['"]([^'"]*)['"]\s*as const/),y=c?c[1]:"";if(y){let m=b.basename(d,".ts"),{packageVarName:f}=X(m,a,d),v=f,u=1;while(g.has(v)&&v!==f)v=`${f}${u}`,u++;$.set(y,v)}}catch(c){console.error(`Error processing file for alias mapping ${d}:`,c)}for(let[d,c]of Object.entries(k)){let y=$.get(c);if(y){let m=/^\d/.test(d)||!/^[a-z_$][\w$]*$/i.test(d)?`'${d}'`:d;if(l.has(d)){let f=m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),v=new RegExp(`^\\s*${f}:\\s*typeof\\s+\\w+\\s*$`,"gm"),u=new RegExp(`^\\s*${f}:\\s*\\w+,\\s*$`,"gm");o=o.replace(v,""),r=r.replace(u,"")}o+=` ${m}: typeof ${y}
`,r+=` ${m}: ${y},
`,l.add(d)}}o+=`}
`,r+=`}
`,n=`${i}
${o}export type Packages = Pantry
${r}export const packages: Packages = pantry
export * from './aliases'
`}try{x.writeFileSync(t,n),console.log(`Successfully generated ${t}`)}catch(i){return console.error(`Error writing index file ${t}:`,i),null}if(!x.existsSync(t))return console.error(`Index file was not created: ${t}`),null;return console.log(`DEBUG generateIndex: returning ${t}`),console.log(`DEBUG generateIndex: return value isAbsolute=${b.isAbsolute(t)}`),console.log(`DEBUG generateIndex: return value type=${typeof t}`),t}catch(a){return console.error("Error generating index file:",a),null}}async function H(e){let a={};console.log("Generating aliases from package files (avoiding circular dependency)");let t=e||b.join(V.cwd(),"src","packages");if(!x.existsSync(t))return console.log(`Packages directory does not exist: ${t}`),a;function s(o,r=""){let l=[],g=x.readdirSync(o,{withFileTypes:!0});for(let p of g)if(p.isFile()&&p.name.endsWith(".ts")&&p.name!=="index.ts"&&p.name!=="aliases.ts")l.push(b.join(o,p.name));else if(p.isDirectory()&&!p.name.startsWith(".")){let k=b.join(o,p.name),$=r?`${r}/${p.name}`:p.name;l.push(...s(k,$))}return l}let n=s(t);console.log(`Found ${n.length} package files`);for(let o of n)try{let r=o,l=x.readFileSync(r,"utf-8"),g=b.basename(o,".ts"),p=l.match(/domain:\s*['"]([^'"]*)['"]\s*as const/),k=p?p[1]:ce(g),$=l.match(/name:\s*['"]([^'"]*)['"]\s*as const/),d=$?$[1]:"";if(d&&d!==k&&Oa(d,k))if(!a[d])a[d]=k,console.log(`Auto-generated alias: ${d} -> ${k}`);else console.log(`Skipped auto-generated alias ${d} -> ${k} (already exists as ${a[d]})`);let c=l.match(/aliases:\s*\[([\s\S]*?)\]/);if(c&&c[1]){let y=c[1].match(/["']([^"']*)["']/g);if(y)for(let m of y){let f=m.replace(/["']/g,"");if(!(!f||f.includes("--")||f.includes("$SHELL")||f.includes("curl")||f.includes("sh <(")||f.includes(" -- ")||f.includes(" -i")||f.includes("+")&&f.includes(" ")||f.includes("{{")||f.includes("}}")||f.includes("version.major")||f.includes("version.minor")||f===k))if(!a[f])a[f]=k,console.log(`Found explicit alias ${f} -> ${k}`);else console.log(`Skipped explicit alias ${f} -> ${k} (already exists as ${a[f]})`);else console.log(`Filtered out invalid alias: ${f} for ${k}`)}}if(k==="aws.amazon.com/cli"){if(!a.aws)a.aws=k,console.log(`Added AWS CLI alias: aws -> ${k}`);if(!a["aws/cli"])a["aws/cli"]=k,console.log(`Added AWS CLI path alias: aws/cli -> ${k}`)}if(k==="aws.amazon.com/cdk"){if(!a["aws/cdk"])a["aws/cdk"]=k,console.log(`Added AWS CDK path alias: aws/cdk -> ${k}`)}}catch(r){console.error(`Error extracting aliases from ${o}:`,r)}let i=Ae();for(let[o,r]of Object.entries(i))if(!a[o])a[o]=r,console.log(`Added alias override: ${o} -> ${r}`);else{let l=a[o];a[o]=r,console.log(`Overrode alias ${o}: ${l} -> ${r}`)}return a}async function Pe(e){try{console.log(`DEBUG generateAliases START: packagesDir=${e}`),console.log(`DEBUG generateAliases START: process.cwd()=${V.cwd()}`);let a=await H(e),t=e?b.resolve(e):b.resolve(V.cwd(),"src","packages"),s=b.resolve(t,"aliases.ts");console.log(`DEBUG generateAliases: targetPackagesDir=${t}`),console.log(`DEBUG generateAliases: aliasesFile=${s}`),console.log(`DEBUG generateAliases: path.isAbsolute(aliasesFile)=${b.isAbsolute(s)}`);let n=b.dirname(s);if(!x.existsSync(n))x.mkdirSync(n,{recursive:!0});let i=a,o=`/**
* Auto-generated aliases for pkgx packages
*/
`;o+=`export const aliases: Record<string, string> = {
`;let r=Object.entries(i).sort((l,g)=>l[0].localeCompare(g[0]));for(let[l,g]of r)o+=` '${l}': '${g}',
`;return o+=`}
`,x.writeFileSync(s,o),console.log(`Successfully generated ${s} with ${r.length} aliases`),console.log(`DEBUG generateAliases: returning ${s}`),console.log(`DEBUG generateAliases: return value isAbsolute=${b.isAbsolute(s)}`),console.log(`DEBUG generateAliases: return value type=${typeof s}`),s}catch(a){return console.error("Error generating aliases file:",a),""}}function ue(e){return e.split(`
`).map((a)=>a.trimEnd()).join(`
`)}function Wa(e){if(["undefined","null","true","false","var","let","const","function","class","if","else","for","while","do","switch","case","default","break","continue","return","try","catch","finally","throw","new","this","super","import","export","from","as","typeof","instanceof","in","of","delete","void","async","await","yield","static","extends","implements","interface","type","enum","namespace","module","declare","abstract","public","private","protected","readonly","get","set"].includes(e.toLowerCase()))return!1;let a=["go","rust","zig","nim","dart","julia","scala","kotlin","swift","node","bun"];if(!e.includes(".")&&!a.includes(e.toLowerCase()))return!1;if(!e||e.trim().length===0)return!1;if(!/^[\w.\-/]+$/.test(e))return!1;return!0}function La(e){if(/^[A-Z][A-Z0-9_]*(?:\^|$)/.test(e))return!0;return[/^linux$/,/^darwin$/,/^ompi_.*flags/i,/^perl5lib/i,/^gsettings-desktop-schemas$/,/^curl\.se\/ca-certs$/,/^openssh\.com$/].some((a)=>a.test(e))}function z(e){if(!Wa(e.domain))return!0;if(!e.description)return!0;return["Go home.","Crafters of fine Open Source products","Package information for","pkgx package","Loading...","Please wait...","Package information available on pkgx.dev"].some((a)=>e.description.includes(a))}function We(e){let a=(s)=>{if(!e.versions||e.versions.length===0)return s.replace(/\{\{/g,"{{").replace(/\}\}/g,"}}");let n=e.versions[0],i=n.split("."),o=i[0]||"",r=i[1]||"",l=i[2]||"",g=r?`${o}.${r}`:o;return s.replace(/\{\{\s*version\.marketing\s*\}\}/g,g).replace(/\{\{\s*version\.major\s*\}\}/g,o).replace(/\{\{\s*version\.minor\s*\}\}/g,r).replace(/\{\{\s*version\.patch\s*\}\}/g,l).replace(/\{\{\s*version\.raw\s*\}\}/g,n).replace(/\{\{\s*version\s*\}\}/g,n).replace(/\{\{(?![^}]*\}\})/g,"{{")};if(e.launchpadInstallCommand){let s=e.launchpadInstallCommand.match(/launchpad install (.+)/);if(s){let n=s[1];if(e.aliases&&e.aliases.length>0){let i=[...e.aliases].sort((o,r)=>o.length-r.length);return`launchpad install ${a(i[0])}`}if(e.aliases&&e.aliases.some((i)=>i.toLowerCase()===n.toLowerCase()))return`launchpad install ${a(n.toLowerCase())}`;return a(e.launchpadInstallCommand)}}if(e.installCommand)return a(e.installCommand);let t=e.domain;if(e.aliases&&e.aliases.length>0)t=[...e.aliases].sort((s,n)=>s.length-n.length)[0];return t=a(t),`launchpad install ${t}`}async function Ga(e,a){let t=await pe(a),s=await H(a),n=Ne(),i=b.resolve(e,"package-catalog.md"),o={},r=0;for(let[c,y]of Object.entries(t))if(!z(y))o[c]=y;else r++,console.log(`Excluding package ${y.domain||c} (placeholder data)`);console.log(`Filtered out ${r} packages with placeholder data`);let l=new Set,g=new Map;for(let[c,y]of Object.entries(o)){let m=y.domain;if(!l.has(m))g.set(m,y),l.add(m)}let p=new Set;Object.values(n).forEach((c)=>{c.forEach((y)=>p.add(y))});let k=[];if(g.forEach((c,y)=>{if(!p.has(y))k.push(y)}),k.length>0)n["Other Utilities"]=k;let $=`# Package Catalog
This comprehensive catalog lists all ${g.size}+ packages available in ts-pkgx, organized by category.
Each package can be accessed using \`getPackage(name)\` or directly via \`pantry.domain\`.
## Quick Stats
- **Total Packages**: ${g.size}
- **Categories**: ${Object.keys(n).length}
- **Last Updated**: ${new Date().toISOString()}
## Table of Contents
`,d=(c)=>{if(t[c])return{domainVarName:c,pkg:t[c]};let y=s[c];if(y){let m=G(y);if(t[m])return{domainVarName:m,pkg:t[m]}}return null};Object.keys(n).forEach((c)=>{let y=c.toLowerCase().replace(/[^a-z0-9]+/g,"-"),m=n[c],f=new Map;m.forEach((u)=>{let h=d(u);if(h&&!z(h.pkg)){let w=h.pkg.domain||h.pkg.fullPath||"unknown";if(!f.has(w))f.set(w,h);else{let P=f.get(w);if(h.domainVarName.length<P.domainVarName.length||h.domainVarName.length===P.domainVarName.length&&h.domainVarName<P.domainVarName)f.set(w,h)}}});let v=f.size;$+=`- [${c}](#${y}) (${v} packages)
`}),$+=`
`;for(let[c,y]of Object.entries(n)){let m=new Map;y.forEach((v)=>{let u=d(v);if(u&&!z(u.pkg)){let h=u.pkg.domain||u.pkg.fullPath||"unknown";if(!m.has(h))m.set(h,u);else{let w=m.get(h);if(u.domainVarName.length<w.domainVarName.length||u.domainVarName.length===w.domainVarName.length&&u.domainVarName<w.domainVarName)m.set(h,u)}}});let f=Array.from(m.values()).sort((v,u)=>(v.pkg.domain||v.domainVarName).localeCompare(u.pkg.domain||u.domainVarName));if(f.length===0)continue;$+=`## ${c}
`,$+=`*${f.length} packages in this category*
`,$+=`| Package | Description | Programs | Versions | Install |
`,$+=`|---------|-------------|----------|----------|----------|
`;for(let{domainVarName:v,pkg:u}of f)try{let h=u.domain||u.fullPath||"unknown",w=u.aliases?` (${u.aliases.map((A)=>A.replace(/\{\{/g,"{{").replace(/\}\}/g,"}}")).join(", ")})`:"",P=u.programs.slice(0,3).map((A)=>A.replace(/\{\{/g,"{{").replace(/\}\}/g,"}}")).join(", ");if(u.programs.length>3)P+=`, ... (+${u.programs.length-3})`;if(u.programs.length===0)P="-";let j=u.versions?.length||0,D=u.versions?.[0]||"latest",S=j>0?`${D} (+${j-1})`:"latest",C=u.description.replace(/\s+/g," ").replace(/\{\{/g,"{{").replace(/\}\}/g,"}}").replace(/'/g,"'").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">").replace(/\|/g,"\\|");if(C.length>100)C=`${C.substring(0,97)}...`;let E=u.name||h;if(u.aliases&&u.aliases.length>0)E=[...u.aliases].sort((A,O)=>A.length-O.length)[0];E=E.replace(/\{\{/g,"{{").replace(/\}\}/g,"}}");let N=`\`pkgx ${E}\``,F;if(h.includes("."))if(h.startsWith("github.com/")&&h.includes("/")){let A=h.replace("github.com/","").split("/");if(A.length>=2){let O=A[0],Le=A.slice(1).join("-");F=`./packages/github.com/${O}/${Le}.md`}else{let O=v.toLowerCase();if(/^\d/.test(O))O=`pkg-${O}`;O=O.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,""),F=`./packages/${O}.md`}}else F=`./packages/${h}/index.md`;else{let A=v.toLowerCase();if(/^\d/.test(A))A=`pkg-${A}`;A=A.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,""),F=`./packages/${A}.md`}let ee=`| **[${h}](${F})**${w} | ${C} | ${P} | ${S} | ${N} |`.replace(/\r?\n/g," ").replace(/\s+/g," ");$+=`${ee}
`}catch(h){let w=u.domain||u.fullPath||"unknown";console.error(`Error processing ${w}:`,h),$+=`| **${w}** | Error retrieving package information | - | - | - |
`}$+=`
`}return $+=`## Usage Examples
### Basic Usage
\`\`\`typescript
import { getPackage, pantry } from 'ts-pkgx'
// Get a package by domain
const nodePackage = pantry.nodejsorg
// Get a package by alias
const nodeByAlias = getPackage('node')
// Access package properties
console.log(\`Package: \${nodePackage.name} - \${nodePackage.description}\`)
console.log(\`Install: \${nodePackage.installCommand}\`)
console.log(\`Programs: \${nodePackage.programs.join(', ')}\`)
\`\`\`
### Advanced Usage
\`\`\`typescript
// Find packages by category
const databases = [
pantry.postgresqlorg,
pantry.mysqlcom,
pantry.redisio,
pantry.mongodbcom
]
// Get all available versions
const nodeVersions = pantry.nodejsorg.versions
console.log(\`Node.js versions: \${nodeVersions.slice(0, 5).join(', ')}...\`)
// Check dependencies
const nodeDeps = pantry.nodejsorg.dependencies
console.log(\`Node.js dependencies: \${nodeDeps.join(', ')}\`)
\`\`\`
### Installation Examples
\`\`\`bash
# Install using pkgx
pkgx node
pkgx python
pkgx rust
# Install specific versions
pkgx node@20
pkgx python@3.11
# Install multiple packages
pkgx node python rust
\`\`\`
## Package Information
Each package includes:
- **Name**: Short identifier for the package
- **Domain**: Full domain identifier
- **Description**: What the package does
- **Programs**: Executable programs provided
- **Versions**: Available versions
- **Dependencies**: Required dependencies
- **Companions**: Related packages
- **Install Command**: How to install with pkgx
## Contributing
To add or update packages, see the pkgx [contribution guide](https://docs.pkgx.sh/appendix/packaging/pantry).
`,await x.promises.writeFile(i,ue($)),i}function De(e,a,t){if(e.includes("."))if(e.startsWith("github.com/")){let s=e.replace("github.com/","").split("/");if(s.length>=2){let n=s[0],i=s.slice(1).join("-");return b.join(t,"github.com",n,`${i}.md`)}else{let n=s[0];return b.join(t,"github.com",n,"index.md")}}else return b.join(t,e,"index.md");else{let s=a.toLowerCase();if(/^\d/.test(s))s=`pkg-${s}`;return s=s.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,""),b.join(t,`${s}.md`)}}async function Ua(e,a){let t=await pe(a),s=b.join(e,"packages");if(!x.existsSync(s))x.mkdirSync(s,{recursive:!0});let n=[],i=new Map;for(let[o,r]of Object.entries(t)){if(z(r)){console.log(`Skipping package page for ${r.domain||o} (placeholder data)`);continue}let l=r.domain;if(!i.has(l))i.set(l,{domainVarName:o,pkg:r});else{let g=i.get(l);if(o.length<g.domainVarName.length||o.length===g.domainVarName.length&&o<g.domainVarName)i.set(l,{domainVarName:o,pkg:r}),console.log(`Replaced ${g.domainVarName} with ${o} for domain ${l}`)}}for(let{domainVarName:o,pkg:r}of i.values())try{let l=r.domain||r.fullPath||o,g;if(l.includes("."))if(l.startsWith("github.com/")){let u=l.replace("github.com/","").split("/");if(u.length>=2){let h=u[0],w=u.slice(1).join("-"),P=b.join(s,"github.com",h);if(!x.existsSync(P))x.mkdirSync(P,{recursive:!0});g=b.join(P,`${w}.md`)}else{let h=u[0],w=b.join(s,"github.com",h);if(!x.existsSync(w))x.mkdirSync(w,{recursive:!0});g=b.join(w,"index.md")}}else{let u=b.join(s,l);if(!x.existsSync(u))x.mkdirSync(u,{recursive:!0});g=b.join(u,"index.md")}else{let u=o.toLowerCase();if(/^\d/.test(u))u=`pkg-${u}`;u=u.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,""),g=b.join(s,`${u}.md`)}let p=r.description||"",k=(u)=>{if(!r.versions||r.versions.length===0)return u.replace(/\{\{/g,"{{").replace(/\}\}/g,"}}");let h=r.versions[0],w=h.split("."),P=w[0]||"",j=w[1]||"",D=w[2]||"",S=j?`${P}.${j}`:P;return u.replace(/\{\{\s*version\.marketing\s*\}\}/g,S).replace(/\{\{\s*version\.major\s*\}\}/g,P).replace(/\{\{\s*version\.minor\s*\}\}/g,j).replace(/\{\{\s*version\.patch\s*\}\}/g,D).replace(/\{\{\s*version\.raw\s*\}\}/g,h).replace(/\{\{\s*version\s*\}\}/g,h).replace(/\{\{(?![^}]*\}\})/g,"{{")},$=k(r.name||l),d=k(p).replace(/\s+/g," "),c=`# ${$}
${d?`> ${d}`:""}
## Package Information
- **Domain**: \`${l}\`
- **Name**: \`${$}\`
- **Homepage**: ${r.homepageUrl||"Not specified"}
- **Source**: [View on GitHub](${r.packageYmlUrl||`https://github.com/pkgxdev/pantry/tree/main/projects/${l}/package.yml`})
## Installation
\`\`\`bash
# Install with launchpad
${We(r)}
\`\`\`
## Programs
This package provides the following executable programs:
`;if(r.programs&&r.programs.length>0)r.programs.forEach((u)=>{let h=k(u);c+=`- \`${h}\`
`});else c+=`*No programs specified*
`;if(r.aliases&&r.aliases.length>0)c+=`
## Aliases
This package can also be accessed using these aliases:
`,r.aliases.forEach((u)=>{let h=k(u);c+=`- \`${h}\`
`});if(r.versions&&r.versions.length>0){c+=`
## Available Versions
<details>
<summary>Show all ${r.versions.length} versions</summary>
`;let u=[];for(let h=0;h<r.versions.length;h+=5)u.push(r.versions.slice(h,h+5));u.forEach((h)=>{c+=`- ${h.map((w)=>`\`${w}\``).join(", ")}
`}),c+=`
</details>
**Latest Version**: \`${r.versions[0]}\`
### Install Specific Version
\`\`\`bash
# Install specific version
${r.pkgxInstallCommand?k(r.pkgxInstallCommand.replace(`+${l}`,`+${l}@${r.versions[0]}`)):`sh <(curl https://pkgx.sh) +${l}@${r.versions[0]} -- $SHELL -i`}
\`\`\`
`}if(r.dependencies&&r.dependencies.length>0)c+=`
## Dependencies
This package depends on:
`,r.dependencies.forEach((u)=>{c+=`- \`${u}\`
`});if(r.companions&&r.companions.length>0){let u=r.companions.filter((h)=>!La(h));if(u.length>0)c+=`
## Related Packages
These packages work well with ${r.name||l}:
`,u.forEach((h)=>{let w=G(h),P=t[w];if(P&&!z(P)){let j=De(h,w,s),D=b.relative(b.dirname(g),j).replace(/\\/g,"/"),S=P.description?.trim();if(S)c+=`- [\`${h}\`](${D}) - ${S}
`;else c+=`- [\`${h}\`](${D})
`}else{let j=De(h,w,s),D=b.relative(b.dirname(g),j).replace(/\\/g,"/"),S=P?.description?.trim()||"Package not available";if(S&&S!=="Package not available")c+=`- [\`${h}\`](${D}) - ${S}
`;else c+=`- [\`${h}\`](${D})
`}})}let y=b.dirname(s),m=`${b.relative(b.dirname(g),y)}/package-catalog.md`.replace(/\\/g,"/"),f=r.aliases&&r.aliases.length>0?r.aliases[0]:r.name||G(l),v=/[^\w$]/.test(f)||/^\d/.test(f)?`pantry['${f}']`:`pantry.${f}`;c+=`
## Usage Examples
\`\`\`typescript
import { pantry } from 'ts-pkgx'
// Access this package
const pkg = ${v}
console.log(\`Package: \${pkg.name}\`)
console.log(\`Description: \${pkg.description}\`)
console.log(\`Programs: \${pkg.programs.join(', ')}\`)
\`\`\`
## Links
- [Package Source](${r.packageYmlUrl||`https://github.com/pkgxdev/pantry/tree/main/projects/${l}/package.yml`})
- [Homepage](${r.homepageUrl||"#"})
- [Back to Package Catalog](${m})
---
*This documentation was auto-generated from package data.*
`,await x.promises.writeFile(g,ue(c)),n.push(g)}catch(l){console.error(`Error generating page for ${o}:`,l)}return n}async function Ta(e,a){let t=await pe(a),s=await H(a),n=Ne(),i=b.join(e,"categories");if(!x.existsSync(i))x.mkdirSync(i,{recursive:!0});let o=[],r=(l)=>{if(t[l])return{domainVarName:l,pkg:t[l]};if(s[l]){let g=s[l],p=G(g);if(t[p])return{domainVarName:p,pkg:t[p]}}return null};for(let[l,g]of Object.entries(n)){let p=new Map;g.forEach((y)=>{let m=r(y);if(m&&!z(m.pkg)){let f=m.pkg.domain||m.pkg.fullPath||"unknown";if(!p.has(f))p.set(f,m);else{let v=p.get(f);if(m.domainVarName.length<v.domainVarName.length||m.domainVarName.length===v.domainVarName.length&&m.domainVarName<v.domainVarName)p.set(f,m)}}});let k=Array.from(p.values()).sort((y,m)=>(y.pkg.domain||y.domainVarName).localeCompare(m.pkg.domain||m.domainVarName));if(k.length===0)continue;let $=`${l.toLowerCase().replace(/[^a-z0-9]+/g,"-")}.md`,d=b.join(i,$),c=`# ${l}
*${k.length} packages in this category*
${l==="Programming Languages"?"Popular programming languages and their runtimes available through pkgx.":l==="Databases"?"Database systems and data storage solutions.":l==="Development Tools"?"Development environments, editors, and programming tools.":l==="Build Tools"?"Build systems, compilers, and development infrastructure.":l==="DevOps"?"Tools for deployment, orchestration, and infrastructure management.":l==="Multimedia"?"Audio, video, and image processing tools.":l==="Security"?"Security tools, encryption, and authentication systems.":l==="Networking"?"Network tools, protocols, and communication software.":l==="CLI Tools & Utilities"?"Command-line utilities and system tools.":`Packages related to ${l.toLowerCase()}.`}
## Packages
`;k.forEach(({domainVarName:y,pkg:m})=>{let f=m.domain||m.fullPath||"unknown",v=(D)=>{if(!m.versions||m.versions.length===0)return D.replace(/\{\{/g,"{{").replace(/\}\}/g,"}}");let S=m.versions[0],C=S.split("."),E=C[0]||"",N=C[1]||"",F=C[2]||"",ee=N?`${E}.${N}`:E;return D.replace(/\{\{\s*version\.marketing\s*\}\}/g,ee).replace(/\{\{\s*version\.major\s*\}\}/g,E).replace(/\{\{\s*version\.minor\s*\}\}/g,N).replace(/\{\{\s*version\.patch\s*\}\}/g,F).replace(/\{\{\s*version\.raw\s*\}\}/g,S).replace(/\{\{\s*version\s*\}\}/g,S).replace(/\{\{(?![^}]*\}\})/g,"{{")},u=[];if(m.name&&m.name!==f)u.push(m.name);if(m.aliases&&m.aliases.length>0)u.push(...m.aliases);let h=u.length>0?` (${u.join(", ")})`:"",w=m.description||"",P=v(w).replace(/\s+/g," "),j;if(f.includes("."))if(f.startsWith("github.com/")&&f.includes("/")){let D=f.replace("github.com/","").split("/");if(D.length>=2){let S=D[0],C=D.slice(1).join("-");j=`../packages/github.com/${S}/${C}.md`}else{let S=y.toLowerCase();if(/^\d/.test(S))S=`pkg-${S}`;S=S.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,""),j=`../packages/${S}.md`}}else j=`../packages/${f}/index.md`;else{let D=y.toLowerCase();if(/^\d/.test(D))D=`pkg-${D}`;D=D.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,""),j=`../packages/${D}.md`}c+=`### [${f}](${j})${h}
${P?`${P}`:""}
**Programs**: ${m.programs&&m.programs.length>0?m.programs.map((D)=>v(D)).join(", "):"None specified"}
**Install**: \`${We(m)}\`
---
`}),c+=`[\u2190 Back to Package Catalog](../package-catalog.md)
`,await x.promises.writeFile(d,ue(c)),o.push(d)}return o}async function Se(e=le,a){console.log("\uD83D\uDE80 Generating comprehensive package documentation...");try{if(!x.existsSync(e))x.mkdirSync(e,{recursive:!0});console.log("\uD83D\uDCDA Generating package catalog...");let t=await Ga(e,a);console.log(`\u2705 Generated: ${t}`),console.log("\uD83D\uDCC4 Generating individual package pages...");let s=await Ua(e,a);console.log(`\u2705 Generated ${s.length} package pages`),console.log("\uD83D\uDCC2 Generating category pages...");let n=await Ta(e,a);console.log(`\u2705 Generated ${n.length} category pages`),console.log(`
\uD83C\uDF89 Documentation generation complete!`),console.log(`\uD83D\uDCCD Output directory: ${e}`),console.log(`\uD83D\uDCCA Total files generated: ${1+s.length+n.length}`),console.log(`
Files generated:`),console.log(`- Package catalog: ${t}`),console.log(`- Package pages: ${s.length} files in docs/packages/`),console.log(`- Category pages: ${n.length} files in docs/categories/`)}catch(t){throw console.error("\u274C Error generating documentation:",t),t}}async function je(){try{console.log("\uD83C\uDFAF Updating Dependencies type timestamp...");let e=b.join(V.cwd(),"src","dependencies.ts");if(!x.existsSync(e)){console.log("dependencies.ts not found, skipping update");return}let a=x.readFileSync(e,"utf-8"),t=new Date().toISOString(),s=a.replace(/\/\/ Auto-generated precise dependency types/,`// Auto-generated precise dependency types
// Last updated: ${t}`);x.writeFileSync(e,s),console.log("\u2705 Updated dependencies.ts timestamp")}catch(e){console.error("Error updating dependencies.ts:",e)}}async function za(){try{let e=V.argv.slice(2);switch(e[0]||"index"){case"index":{if(console.log("\uD83D\uDD27 Generating package index..."),!await xe())console.error("\u274C Failed to generate index"),V.exit(1);if(console.log("\uD83C\uDFF7\uFE0F Generating aliases..."),!await Pe())console.error("\u274C Failed to generate aliases"),V.exit(1);console.log("\uD83C\uDFAF Updating PackageVersionMap..."),await je(),console.log("\u2728 Index and aliases generation completed successfully!");break}case"docs":{let a=e[1]||le;console.log(`\uD83D\uDCDA Generating documentation to ${a}...`),await Se(a),console.log("\u2728 Documentation generation completed successfully!");break}case"all":{if(console.log("\uD83D\uDE80 Generating everything..."),console.log("\uD83D\uDD27 Generating package index..."),!await xe())console.error("\u274C Failed to generate index"),V.exit(1);if(console.log("\uD83C\uDFF7\uFE0F Generating aliases..."),!await Pe())console.error("\u274C Failed to generate aliases"),V.exit(1);console.log("\uD83C\uDFAF Updating PackageVersionMap..."),await je();let a=e[1]||le;console.log(`\uD83D\uDCDA Generating documentation to ${a}...`),await Se(a),console.log("\u2728 All generation completed successfully!");break}default:console.log(`
Usage: bun run src/generate.ts [command] [options]
Commands:
index Generate package index and aliases (default)
docs [output-dir] Generate documentation (default: ./docs)
all [output-dir] Generate everything (index, aliases, and docs)
Examples:
bun run src/generate.ts
bun run src/generate.ts index
bun run src/generate.ts docs
bun run src/generate.ts docs ./custom-docs
bun run src/generate.ts all
bun run src/generate.ts all ./custom-docs
`);break}}catch(e){console.error("\uD83D\uDCA5 Error during generation:",e),V.exit(1)}}var Qa=import.meta.url===`file://${V.argv[1]}`||import.meta.url===`file:///${V.argv[1]}`;if(Qa)za();async function Ja(e,a={}){let{targetOs:t=_.platform==="darwin"?"darwin":_.platform==="win32"?"windows":"linux",includeOsSpecific:s=!0,maxDepth:n=10,verbose:i=!1}=a,o=await Va(e,{targetOs:t,includeOsSpecific:s,maxDepth:n,verbose:i}),r=Oe(e),l=o.allDependencies.map((d)=>({name:d.name,version:d.version,constraint:d.constraint,isOsSpecific:d.isOsSpecific,os:d.os})),g=r.map((d)=>d.name),p=`pkgx install ${g.join(" ")}`,k=`launchpad install ${g.join(" ")}`,$=o.conflicts.map((d)=>{let c=l.find((y)=>y.name===d.package);return{package:d.package,versions:d.versions,resolved:c?.version||"latest"}});return{packages:l,directCount:r.length,totalCount:l.length,conflicts:$,pkgxCommand:p,launchpadCommand:k}}async function Rt(e,a={}){let t=Ba.join(_.cwd(),`.temp-deps-${Date.now()}.yaml`);try{return re.writeFileSync(t,e,"utf-8"),await Ja(t,a)}finally{if(re.existsSync(t))re.unlinkSync(t)}}async function _t(e,a={}){let{targetOs:t=_.platform==="darwin"?"darwin":_.platform==="win32"?"windows":"linux",includeOsSpecific:s=!0,maxDepth:n=10}=a,i=await Y(e,{targetOs:t,includeOsSpecific:s,maxDepth:n});return i.unshift({name:e,version:"latest",constraint:"*",isOsSpecific:!1}),(await Ie(i,{targetOs:t,includeOsSpecific:s,maxDepth:n})).allDependencies.map((o)=>({name:o.name,version:o.version,constraint:o.constraint,isOsSpecific:o.isOsSpecific,os:o.os}))}function Zt(e,a="launchpad"){if(a==="pkgx")return`pkgx install ${e.join(" ")}`;return`launchpad install ${e.join(" ")}`}M();var Z=new Map;async function Ra(e,a={}){let{timeout:t=15000}=a,s=new AbortController,n=setTimeout(()=>s.abort(),t);try{let i=`https://pkgx.dev/pkgs/${e}.json`,o=await fetch(i,{headers:{"User-Agent":"ts-pkgx",Accept:"application/json"},signal:s.signal});if(!o.ok)throw Error(`HTTP ${o.status}: ${o.statusText}`);let r=await o.json();return{name:r.displayName||r.name||e.split("/").pop()||e,domain:r.project||e,brief:r.brief,description:r.description||r.brief,displayName:r.displayName,homepage:r.homepage,github:r.github,brew_url:r.brew_url,license:r.license,provides:r.provides,...r}}finally{clearTimeout(n)}}async function Ce(e,a={}){let{timeout:t=15000,includeRaw:s=!1,githubToken:n,branch:i="main"}=a,o=new AbortController,r=setTimeout(()=>o.abort(),t);try{let l=`https://raw.githubusercontent.com/pkgxdev/pantry/${i}/projects/${e}/package.yml`,g={"User-Agent":"ts-pkgx"};if(n)g.Authorization=`token ${n}`;let p=await fetch(l,{headers:g,signal:o.signal});if(!p.ok)throw Error(`Failed to fetch package.yml: ${p.status} ${p.statusText}`);let k=await p.text(),$=Bun.YAML.parse(k),d=e,c=e.split("/"),y=c[c.length-1],m={name:y,domain:d,description:$.display_name||$.description||`${y} package`,...$};if($.versions?.github)m.github=`https://github.com/${$.versions.github}`;if($.distributable?.url&&!m.homepage)try{let f=$.distributable.url.split("/"),v=new URL(`${f[0]}//${f[2]}`);m.homepage=v.origin}catch{}if(s)m._raw=k;return m}finally{clearTimeout(r)}}async function de(e,a={}){let{useCache:t=!0,preferGitHub:s=!1}=a;if(t){let i=Z.get(e);if(i&&Date.now()-i.timestamp<3600000)return i.data}let n;try{if(s)n=await Ce(e,a);else try{n=await Ra(e,a)}catch(i){console.warn(`pkgx.dev API failed for ${e}, trying GitHub fallback:`,i),n=await Ce(e,a)}if(t)Z.set(e,{data:n,timestamp:Date.now()});return n}catch(i){throw Error(`Failed to fetch package ${e}: ${i}`)}}async function _a(e,a={}){let t=new Map,s=e.map(async(n)=>{try{let i=await de(n,a);t.set(n,i)}catch(i){console.error(`Failed to fetch ${n}:`,i)}});return await Promise.all(s),t}async function Za(e={}){let{timeout:a=15000}=e,t=new AbortController,s=setTimeout(()=>t.abort(),a);try{let n=await fetch("https://pkgx.dev/pkgs/index.json",{headers:{"User-Agent":"ts-pkgx",Accept:"application/json"},signal:t.signal});if(!n.ok)throw Error(`Failed to list packages: ${n.status} ${n.statusText}`);return(await n.json()).map((i)=>i.project)}finally{clearTimeout(s)}}async function qt(e,a={}){let t=(await Za(a)).filter((n)=>{let i=e.toLowerCase();return n.toLowerCase().includes(i)}),s=await _a(t,a);return Array.from(s.values())}async function Mt(e,a={}){let t=await de(e,a),s=[],n=[];if(t.dependencies){for(let[o,r]of Object.entries(t.dependencies))if(typeof r==="string")n.push(o);else if(typeof r==="object")for(let l of Object.keys(r))n.push(l)}let i=[];if(t.companions)i.push(...Object.keys(t.companions));return{package:t,versions:s,dependencies:n,companions:i}}async function Kt(e,a={}){try{return await de(e,{...a,timeout:a.timeout||5000}),!0}catch{return!1}}function Yt(){Z.clear()}function Xt(){return{size:Z.size,packages:Array.from(Z.keys())}}export{ne as validatePackageSpec,St as validatePackage,$t as v,je as updatePackageVersionMap,Tt as toTypeName,Ia as toSafeVarName,zt as toPackageVarName,ha as startPeriodicCleanup,bt as showPackageInfo,Me as shouldProceedWithGitHubRequest,fa as setupCleanupHandlers,qt as searchPkgxPackages,vt as searchPackagesCommand,ye as searchPackages,oa as scrapePkgxPackages,ia as scrapePkgxPackage,la as scrapePkgxIndex,ya as scanPantryPackages,pa as saveToCacheAndOutput,qe as saveRateLimitInfo,ca as savePackageAsTypeScript,Ye as saveGitHubPackageCache,ve as resolveVersionConstraint,$e as resolveVersion,Y as resolveTransitiveDependencies,pt as resolvePackageName,ta as resolvePackageDomain,_t as resolvePackageDependencies,Va as resolveDependencyFile,Rt as resolveDependenciesFromYaml,Ja as resolveDependencies,wa as readPantryPackageInfo,Kt as pkgxPackageExists,yt as pkg,ut as parsePackageSpec,Oe as parseDependencyFile,va as pantry,xa as packages,He as logPkgxProjects,xt as listPopularPackages,Za as listPkgxPackages,Dt as listAliases,Pt as listActivePackages,ke as isVersionAvailable,ot as isValidPackageName,lt as isSupportedPlatform,ct as isSupportedArchitecture,kt as isPackageInCategory,Da as isPackageDomain,Ve as isPackageAlias,na as isKnownAlias,ce as guessOriginalDomain,Ct as getVersionInfo,ga as getValidCachedPackage,Ot as getSystemInfo,se as getPopularPackages,Mt as getPkgxPackageMetadata,Xt as getPkgxCacheStats,Te as getPhpVersionsForWorkflow,Qe as getPackagesByPattern,ht as getPackagesByCategory,W as getPackageInfo,sa as getPackageAliases,B as getLatestVersion,Zt as getInstallCommand,Ke as getGitHubPackageCache,ra as getCanonicalDomain,Ft as getAvailableVersionsForPackage,K as getAvailableVersions,gt as getAllPackageDomains,Sa as getAllPackageAliases,we as getActivePackages,xe as generateIndex,Se as generateDocs,Pe as generateAliases,Vt as formatSearchResults,dt as formatPackageSpec,At as formatPackageInfo,ea as formatObjectWithoutQuotedKeys,Et as formatInstallPlan,Wt as findDependencyFiles,da as fetchPkgxProjects,_a as fetchPkgxPackages,de as fetchPkgxPackage,ba as fetchPantryPackageWithMetadata,ma as fetchPantryPackage,Xe as fetchPackageListFromGitHub,$a as fetchAndSavePackage,ka as fetchAndSaveAllPackages,Se as e,ge as detectPlatform,wt as dependencies,Ie as deduplicateDependencies,Pe as d,mt as createInstallationContext,jt as createInstallPlan,G as convertDomainToVarName,aa as convertDomainToFileName,L as compareVersions,Yt as clearPkgxCache,ua as cleanupBrowserResources,xe as c,Wt as b,I as aliases,Va as a,ft as VERSION_SPECS,Ee as PACKAGE_CATEGORIES,_e as PACKAGE_ALIASES,Re as DEFAULT_TIMEOUT_MS,Je as DEFAULT_CACHE_EXPIRATION_MINUTES,Be as DEFAULT_CACHE_DIR,Ze as ALL_KNOWN_PACKAGES};export{Va as C};
//# debugId=FD69321991854F9D64756E2164756E21