UNPKG

buddy-bot

Version:

Automated & optimized dependency updates for JavaScript & TypeScript projects. Like Renovate & Dependabot.

14 lines (12 loc) 8.64 kB
// @bun import{pa as g,qa as w}from"./chunk-8wk4nc61.js";import"./chunk-vd04qkw4.js";import{ua as A,wa as G}from"./chunk-pvk7bcsa.js";import u from"fs";import v from"path";import j from"process";w();var h=v.join(j.cwd(),"github-rate-limit.json"),p=v.join(j.cwd(),"github-cache.json"),H=10,d=3600000;function $(t){try{let e=t.get("X-RateLimit-Remaining"),o=t.get("X-RateLimit-Reset"),i=t.get("X-RateLimit-Limit");if(e&&o&&i){let a=new Date(Number(o)*1000),r={remaining:Number(e),limit:Number(i),resetTime:a.toISOString(),resetTimestamp:Number(o)*1000,lastUpdated:new Date().toISOString()};u.writeFileSync(h,JSON.stringify(r,null,2)),console.warn(`GitHub API rate limit info saved to ${h}`),console.warn(`Rate limit: ${e}/${i} remaining, resets at ${a.toLocaleString()}`)}}catch(e){console.error("Failed to save GitHub rate limit info:",e)}}function b(){try{if(!u.existsSync(h))return!0;let t=JSON.parse(u.readFileSync(h,"utf8")),e=Date.now();if(e>=t.resetTimestamp)return!0;if(t.remaining<=H){let o=new Date(t.resetTimestamp);console.warn(`GitHub API rate limit almost exhausted (${t.remaining}/${t.limit} remaining). Preserving remaining calls until reset at ${o.toLocaleString()}`);let i=t.resetTimestamp-e;if(i<300000)console.error(`Waiting ${Math.round(i/1000)} seconds for rate limit to reset...`);return!1}return!0}catch(t){return console.error("Error checking GitHub rate limit:",t),!0}}function P(){try{if(!u.existsSync(p))return null;let t=JSON.parse(u.readFileSync(p,"utf8")),e=Date.now();if(t.timestamp&&e-t.timestamp<d){let o=new Date(t.timestamp+d);if(console.error(`Using GitHub API cache from ${new Date(t.timestamp).toLocaleString()}, expires at ${o.toLocaleString()}`),Array.isArray(t.packages))return console.error(`Using ${t.packages.length} packages from GitHub API cache`),t.packages;else if(Array.isArray(t.data))return console.error(`Using ${t.data.length} packages from GitHub API cache (old format)`),t.data;else return console.error("GitHub API cache has invalid format, fetching fresh data"),null}return console.error(`GitHub API cache expired (older than ${d/1000/60} minutes), fetching fresh data`),null}catch(t){return console.error("Error reading GitHub cache:",t),null}}function y(t){try{let e={timestamp:Date.now(),packages:t};u.writeFileSync(p,JSON.stringify(e,null,2)),console.error(`GitHub API package list cached to ${p} (${t.length} packages)`)}catch(e){console.error("Error saving GitHub cache:",e)}}async function C(t=0,e){if(e){if(e.startsWith("/")||e.includes("/bin/"))return console.error(`Error: '${e}' appears to be a path, not a valid package name.`),[];return console.log(`Single package mode: only fetching '${e}'`),[e]}console.log("Fetching package list from GitHub API...");let o=P();if(o)return console.log("Using cached package list, no GitHub API calls needed"),t>0?o.slice(0,t):o;try{if(!b()){console.warn("GitHub API rate limit preventing request - using cached data or hardcoded list");let n=["node","bun.sh","python.org","go.dev","rust-lang.org","deno.land","ruby-lang.org","php.net","dart.dev","postgresql.org","mozilla.org","mysql.com","nginx.org","redis.io","mongodb.com"];return y(n),t>0?n.slice(0,t):n}console.error("No valid cache found, making GitHub API requests");let i=await fetch("https://api.github.com/repos/pkgxdev/pantry/contents/projects",{headers:{Accept:"application/vnd.github.v3+json","User-Agent":"ts-pkgx"}});if($(i.headers),!i.ok)throw Error(`GitHub API responded with ${i.status}: ${i.statusText}`);let a=(await i.json()).filter((n)=>n.type==="dir").map((n)=>n.name);console.error(`Found ${a.length} base projects on GitHub`);let r=[...a],c=["agwa.name","acorn.io","apache.org","aquasecurity.github.io","aws.amazon.com"],s=["alsa-project.org/alsa-lib","apple.com/remote_cmds","android.com/cmdline-tools","anchore.com/syft","argoproj.github.io/cd","argoproj.github.io/workflows","amrdeveloper.github.io/GQL","authzed.com/spicedb","arduino.github.io/arduino-cli","aomedia.googlesource.com/aom","akuity.io/kargo","asciinema.org/agg","ansible.com/ansible-lint","astral.sh/ruff","astral.sh/uv","apollographql.com/rover","brxken128.github.io/dexios","cedarpolicy.com/cli","blake2.net/libb2"];for(let n of c){if(!b()){console.error(`Skipping nested path check for ${n} due to rate limit concerns`);continue}try{console.error(`Checking for nested projects in ${n}...`);let l=await fetch(`https://api.github.com/repos/pkgxdev/pantry/contents/projects/${n}`,{headers:{Accept:"application/vnd.github.v3+json","User-Agent":"ts-pkgx"}});if($(l.headers),!l.ok){console.error(`Failed to fetch nested projects for ${n}: ${l.status}`);continue}let f=(await l.json()).filter((m)=>m.type==="dir").map((m)=>`${n}/${m.name}`);console.error(`Found ${f.length} nested projects for ${n}: ${f.join(", ")}`),r.push(...f)}catch(l){console.error(`Error fetching nested projects for ${n}:`,l)}}for(let n of s)if(!r.includes(n))console.error(`Adding known nested project: ${n}`),r.push(n);y(r),console.error(`Cached ${r.length} packages for future use (valid for ${d/60000} minutes)`);let W=t>0?r.slice(0,t):r;return console.error(`Total of ${r.length} projects found (including nested paths)`),W}catch(i){return console.error("Error fetching package list from GitHub:",i),[]}}async function E(){try{let{fetchPkgxProjects:t}=await import("./chunk-72vxav2c.js"),e=await t();if(console.error(`Found ${e.length} projects`),e.length>0){if(console.error("First 10 projects:"),e.slice(0,10).forEach((o)=>{console.error(`- ${o.name}`)}),e.length>10)console.error(`... and ${e.length-10} more`)}return e}catch(t){return console.error("Failed to fetch projects:",t),[]}}function k(t,e=2){if(t===null)return"null";if(t===void 0)return"undefined";if(Array.isArray(t)){if(t.length===0)return"[]";if(t.every((i)=>typeof i==="string")){if(t.length===1)return`[${JSON.stringify(t[0])}]`;let i=t.map((a)=>JSON.stringify(a)).join(`, ${" ".repeat(e)}`);return`[ ${" ".repeat(e)}${i} ${" ".repeat(e-2)}]`}let o=t.map((i)=>k(i,e+2)).join(`, ${" ".repeat(e+2)}`);return`[ ${" ".repeat(e+2)}${o} ${" ".repeat(e)}]`}if(typeof t==="object")return`{ ${Object.entries(t).map(([o,i])=>{let a=typeof i==="string"?JSON.stringify(i):k(i,e+2);return`${" ".repeat(e)}${o}: ${a}`}).join(`, `)} }`;return String(t)}function T(t){if(t.includes("/")){let e=t.split("/"),o=e[0],i=e.slice(1),a=o.replace(/[.-]/g,""),r=i.map((s)=>s.replace(/[.-]/g,"")),c="";if(r.length>0){let s=r[0];if(a.includes(s.toLowerCase()))c="";else if(r.length===1)c=s;else c=s}return`${a}${c}`.toLowerCase()}return t.replace(/[.-]/g,"").toLowerCase()}function q(t){if(t.includes("/")){let[e,o]=t.split("/"),i=e.replace(/\./g,""),a=o.replace(/\//g,"-");return`${i}-${a}`.toLowerCase()}return t.replace(/\./g,"").toLowerCase()}function R(t){if(t.includes("-")){let o=t.indexOf("-"),i=t.substring(0,o),a=t.substring(o+1),r=i;if(r.endsWith("org")&&!r.endsWith(".org"))r=r.replace(/org$/,".org");if(r.endsWith("io")&&!r.endsWith(".io"))r=r.replace(/io$/,".io");if(r.endsWith("com")&&!r.endsWith(".com"))r=r.replace(/com$/,".com");if(r.endsWith("sh")&&!r.endsWith(".sh"))r=r.replace(/sh$/,".sh");if(r.endsWith("dev")&&!r.endsWith(".dev"))r=r.replace(/dev$/,".dev");if(r.endsWith("net")&&!r.endsWith(".net"))r=r.replace(/net$/,".net");if(r.endsWith("name")&&!r.endsWith(".name"))r=r.replace(/name$/,".name");return`${r}/${a}`}let e=t;if(e.endsWith("org")&&!e.endsWith(".org"))e=e.replace(/org$/,".org");if(e.endsWith("io")&&!e.endsWith(".io"))e=e.replace(/io$/,".io");if(e.endsWith("com")&&!e.endsWith(".com"))e=e.replace(/com$/,".com");if(e.endsWith("sh")&&!e.endsWith(".sh"))e=e.replace(/sh$/,".sh");if(e.endsWith("dev")&&!e.endsWith(".dev"))e=e.replace(/dev$/,".dev");if(e.endsWith("net")&&!e.endsWith(".net"))e=e.replace(/net$/,".net");if(e.endsWith("land")&&!e.endsWith(".land"))e=e.replace(/land$/,".land");return e}function S(t){let[e]=t.split("@");if(g[e])return g[e];if(e.includes("."))return e;return`${e}.org`}function U(){return{...g}}function Z(t){let[e]=t.split("@");return e in g}function z(t){return S(t)}export{y as z,P as y,b as x,$ as w,b as shouldProceedWithGitHubRequest,$ as saveRateLimitInfo,y as saveGitHubPackageCache,S as resolvePackageDomain,E as logPkgxProjects,Z as isKnownAlias,R as guessOriginalDomain,U as getPackageAliases,P as getGitHubPackageCache,z as getCanonicalDomain,k as formatObjectWithoutQuotedKeys,C as fetchPackageListFromGitHub,T as convertDomainToVarName,q as convertDomainToFileName,z as J,Z as I,U as H,S as G,R as F,q as E,T as D,k as C,E as B,C as A};export{$ as U,b as V,P as W,y as X,C as Y,E as Z,k as _,T as $,q as aa,R as ba,S as ca,U as da,Z as ea,z as fa}; //# debugId=71838CA4B5F761D064756E2164756E21