ts-pantry 0.11.37 → 0.11.39

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 (104) hide show
  1. package/dist/bin/cli.js +50 -59
  2. package/dist/chunk-2vc7kdam.js +1 -0
  3. package/dist/chunk-3dbeqd3c.js +315 -0
  4. package/dist/{chunk-gqzj0edb.js → chunk-415b756j.js} +2 -2
  5. package/dist/chunk-5y7jxjtz.js +42 -0
  6. package/dist/chunk-7qhxan0b.js +1 -0
  7. package/dist/chunk-7tw8z583.js +1 -0
  8. package/dist/chunk-8rg91cqd.js +2 -0
  9. package/dist/chunk-92zrwkxc.js +1 -0
  10. package/dist/{chunk-6zb03z2q.js → chunk-a20hctx6.js} +1 -1
  11. package/dist/chunk-afzfbcrx.js +3 -0
  12. package/dist/chunk-agh1vkqm.js +11 -0
  13. package/dist/chunk-btrd677x.js +1 -0
  14. package/dist/chunk-gr5aqxxx.js +1 -0
  15. package/dist/{chunk-gzwcsenc.js → chunk-hxd34yh9.js} +2 -2
  16. package/dist/chunk-k004pgye.js +1 -0
  17. package/dist/chunk-nfdg722p.js +141 -0
  18. package/dist/chunk-p763mye8.js +2 -0
  19. package/dist/{chunk-cye3q2ph.js → chunk-rqny4g8r.js} +2 -2
  20. package/dist/chunk-tp1d7cq1.js +2 -0
  21. package/dist/chunk-w55vdzzf.js +1 -0
  22. package/dist/src/index.js +1 -1
  23. package/dist/src/installer.d.ts +0 -3
  24. package/dist/src/packages/anthropic.com/claude-code.d.ts +2 -2
  25. package/dist/src/packages/apps/bitwardencom.d.ts +1 -1
  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/diabrowsercom.d.ts +1 -1
  29. package/dist/src/packages/apps/obsidianmd.d.ts +2 -2
  30. package/dist/src/packages/apps/rectangleapp.d.ts +1 -1
  31. package/dist/src/packages/apps/whatsappcom.d.ts +1 -1
  32. package/dist/src/packages/apps/zeddev.d.ts +1 -1
  33. package/dist/src/packages/argoproj.github.io/workflows.d.ts +3 -3
  34. package/dist/src/packages/arkadedev.d.ts +3 -3
  35. package/dist/src/packages/buncom.d.ts +3 -3
  36. package/dist/src/packages/casdoororg.d.ts +3 -3
  37. package/dist/src/packages/changiedev.d.ts +1 -1
  38. package/dist/src/packages/circlecicom.d.ts +1 -1
  39. package/dist/src/packages/cligithubcom.d.ts +1 -1
  40. package/dist/src/packages/cnqueryio.d.ts +1 -1
  41. package/dist/src/packages/codercom.d.ts +1 -1
  42. package/dist/src/packages/craft-native.org.d.ts +1 -1
  43. package/dist/src/packages/cythonorg.d.ts +3 -3
  44. package/dist/src/packages/depotdev.d.ts +3 -3
  45. package/dist/src/packages/dprintdev.d.ts +3 -3
  46. package/dist/src/packages/flyio.d.ts +1 -1
  47. package/dist/src/packages/fonts/jetbrainsmononerdfont.d.ts +1 -1
  48. package/dist/src/packages/fonts/meslolgnerdfont.d.ts +1 -1
  49. package/dist/src/packages/getzolaorg.d.ts +1 -1
  50. package/dist/src/packages/github.com/chainguard-dev/apko.d.ts +1 -1
  51. package/dist/src/packages/github.com/ggerganov/llama.cpp.d.ts +3 -3
  52. package/dist/src/packages/github.com/mail-os/mail.d.ts +1 -1
  53. package/dist/src/packages/github.com/router-for-me/CLIProxyAPI.d.ts +3 -3
  54. package/dist/src/packages/github.com/tw93/mole.d.ts +3 -3
  55. package/dist/src/packages/index.d.ts +2 -0
  56. package/dist/src/packages/libgeosorg.d.ts +1 -1
  57. package/dist/src/packages/llmdatasetteio.d.ts +3 -3
  58. package/dist/src/packages/localaiio.d.ts +1 -1
  59. package/dist/src/packages/mailpitaxllentorg.d.ts +3 -3
  60. package/dist/src/packages/materializecom.d.ts +1 -1
  61. package/dist/src/packages/misejdxdev.d.ts +1 -1
  62. package/dist/src/packages/moonrepo.dev/moon.d.ts +1 -1
  63. package/dist/src/packages/nginxorg.d.ts +1 -1
  64. package/dist/src/packages/ollamaai.d.ts +1 -1
  65. package/dist/src/packages/openai.com/codex.d.ts +1 -1
  66. package/dist/src/packages/opencodeai.d.ts +3 -3
  67. package/dist/src/packages/openexrcom.d.ts +3 -3
  68. package/dist/src/packages/openshiftcom.d.ts +3 -3
  69. package/dist/src/packages/pipenvpypaio.d.ts +1 -1
  70. package/dist/src/packages/planetscalecom.d.ts +3 -3
  71. package/dist/src/packages/postgrestorg.d.ts +3 -3
  72. package/dist/src/packages/projenio.d.ts +3 -3
  73. package/dist/src/packages/protobufdev.d.ts +1 -1
  74. package/dist/src/packages/pulumiio.d.ts +1 -1
  75. package/dist/src/packages/railwayapp.d.ts +3 -3
  76. package/dist/src/packages/rubygemsorg.d.ts +1 -1
  77. package/dist/src/packages/runatlantisio.d.ts +1 -1
  78. package/dist/src/packages/seaweedfscom.d.ts +3 -3
  79. package/dist/src/packages/stripecom.d.ts +3 -3
  80. package/dist/src/packages/tailscalecom.d.ts +1 -1
  81. package/dist/src/packages/valesh.d.ts +1 -1
  82. package/dist/src/packages/wasmerio.d.ts +3 -3
  83. package/dist/src/packages/watchexecgithubio.d.ts +3 -3
  84. package/dist/src/packages/zarfdev.d.ts +1 -1
  85. package/dist/src/packages/ziglangorg.d.ts +3 -3
  86. package/dist/src/testing/index.js +1 -1
  87. package/dist/src/utils.d.ts +11 -0
  88. package/package.json +2 -2
  89. package/dist/chunk-1d97zpdr.js +0 -141
  90. package/dist/chunk-2e5b7mwg.js +0 -1
  91. package/dist/chunk-3h7dfjr4.js +0 -1
  92. package/dist/chunk-4dmq776q.js +0 -42
  93. package/dist/chunk-4pgde91f.js +0 -3
  94. package/dist/chunk-63t6cwcs.js +0 -313
  95. package/dist/chunk-7dz33118.js +0 -1
  96. package/dist/chunk-9maq76y2.js +0 -1
  97. package/dist/chunk-aa72n836.js +0 -1
  98. package/dist/chunk-b9105y5x.js +0 -2
  99. package/dist/chunk-btvyp7sq.js +0 -1
  100. package/dist/chunk-fndnz9td.js +0 -1
  101. package/dist/chunk-hh0g2d6f.js +0 -11
  102. package/dist/chunk-k9awpjtg.js +0 -1
  103. package/dist/chunk-sdd8tnwv.js +0 -2
  104. package/dist/chunk-ve2dx3d9.js +0 -2
@@ -0,0 +1,315 @@
1
+ import{eb as Je}from"./chunk-nfdg722p.js";import{Yb as at}from"./chunk-415b756j.js";import{ec as Q,fc as Qt,hc as Ve}from"./chunk-agh1vkqm.js";import{Ac as Tt,Bc as Ot,Cc as qe,rc as Dt,sc as It,vc as Et,wc as We,yc as Nt}from"./chunk-p763mye8.js";import{Jc as cs}from"./chunk-8rg91cqd.js";import{Kc as he,Lc as Cr}from"./chunk-hxd34yh9.js";import{Pc as K}from"./chunk-a20hctx6.js";import Ir from"node:process";Cr();import $t from"node:process";function At(e){return e in he}function Dr(e){if(!e.includes(".")||e.startsWith(".")||e.endsWith("."))return!1;if(/^v?\d+(?:\.\d+){0,10}$/.test(e))return!1;return/^[a-z0-9][\w.\-/]*$/i.test(e)}function gs(e){return At(e)||Dr(e)}function ds(e){return["darwin","linux","windows"].includes(e)}function us(e){return["x86_64","aarch64","armv7l","i686"].includes(e)}function Rt(){return Object.keys(he)}function fs(){return Object.values(he)}function ms(e){if(At(e))return{originalName:e,resolvedDomain:he[e],isAlias:!0};return{originalName:e,resolvedDomain:e,isAlias:!1}}function hs(e){let t=e.lastIndexOf("@");if(t===-1)return{name:e};let r=e.slice(0,t),n=e.slice(t+1);return{name:r,version:n,versionSpec:n}}function ys(e,t){return t?`${e}@${t}`:e}function ke(){let e=$t.platform,t=$t.arch,r,n,s=!0;switch(e){case"darwin":r="darwin";break;case"linux":r="linux";break;case"win32":r="windows";break;default:r="linux",s=!1}switch(t){case"x64":n="x86_64";break;case"arm64":n="aarch64";break;case"arm":n="armv7l";break;case"ia32":n="i686";break;default:n="x86_64",s=!1}return{platform:r,architecture:n,isSupported:s}}function bs(e,t="latest",r){let n=r||ke(),s;switch(n.platform){case"darwin":s="tar.xz";break;case"linux":s="tar.xz";break;case"windows":s="zip";break;default:s="tar.xz"}return{packageName:e,version:t,platform:n.platform,architecture:n.architecture,format:s}}var ks={LATEST:"latest",ANY:"*"},Ct={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 xs(e){return Ct[e]}function Ps(e,t){return Ct[t].includes(e)}function ws(e){return e}function Ss(e,t){return[e,t]}function vs(e){return e}async function Ds(e){try{let t=await We(e);if(!t)return{success:!1,error:`Package '${e}' not found. Use 'search' to find available packages.`};return{success:!0,data:t}}catch(t){return{success:!1,error:`Failed to get package info: ${t}`}}}async function Is(e){try{if(!e||e.trim().length===0)return{success:!1,error:"Search term cannot be empty"};return{success:!0,data:await Nt(e.trim())}}catch(t){return{success:!1,error:`Search failed: ${t}`}}}async function Es(e=20){try{return{success:!0,data:(await Tt(e)).slice(0,e)}}catch(t){return{success:!1,error:`Failed to list popular packages: ${t}`}}}async function Ns(e=20){try{return{success:!0,data:await Ot(e)}}catch(t){return{success:!1,error:`Failed to list active packages: ${t}`}}}function Ts(){try{return{success:!0,data:Rt()}}catch(e){return{success:!1,error:`Failed to list aliases: ${e}`}}}async function Os(e){try{let t=await qe(e);if(!t.isValid)return{success:!1,error:t.error};return{success:!0,data:{packageName:t.packageName,version:t.version,isValid:!0}}}catch(t){return{success:!1,error:`Validation failed: ${t}`}}}async function Vs(e){try{let t=await qe(e);if(!t.isValid)return{success:!1,error:t.error};let r=t.packageName,n=t.version||"latest",s=await Et(r,n);if(!s)return{success:!1,error:`Could not resolve version '${n}' for package '${r}'`};let o=await We(r);if(!o)return{success:!1,error:`Package '${r}' not found`};let a=ke(),i={packageName:r,resolvedVersion:s,platform:a.platform,architecture:a.architecture,dependencies:o.dependencies,companions:o.companions,installCommand:`pkgx install ${r}@${s}`},c=[];if(!a.isSupported)c.push(`Platform ${a.platform}/${a.architecture} may not be fully supported`);if(o.dependencies.length>0)c.push(`This package has ${o.dependencies.length} dependencies that will also be installed`);return{success:!0,data:i,warnings:c.length>0?c:void 0}}catch(t){return{success:!1,error:`Failed to create install plan: ${t}`}}}async function js(e){try{let t=await Dt(e);if(!t)return{success:!1,error:`Package '${e}' not found`};let r=await It(e);return{success:!0,data:{latest:t,total:r.length,versions:r}}}catch(t){return{success:!1,error:`Failed to get version info: ${t}`}}}function Fs(e){let t=[`Package: ${e.name}`,`Domain: ${e.domain}`,`Description: ${e.description}`,`Latest Version: ${e.latestVersion}`,`Total Versions: ${e.totalVersions}`];if(e.programs.length>0)t.push(`Programs: ${e.programs.join(", ")}`);if(e.dependencies.length>0)t.push(`Dependencies: ${e.dependencies.join(", ")}`);if(e.companions.length>0)t.push(`Companions: ${e.companions.join(", ")}`);return t.join(`
2
+ `)}function Ms(e){if(e.length===0)return"No packages found matching your search.";let t=[`Found ${e.length} package(s):
3
+ `];for(let r of e)t.push(`${r.name} (${r.domain})`),t.push(` ${r.description}`),t.push(` Latest: ${r.latestVersion} (${r.totalVersions} versions available)`),t.push("");return t.join(`
4
+ `)}function _s(e){let t=[`Installation Plan for ${e.packageName}@${e.resolvedVersion}`,`Platform: ${e.platform}/${e.architecture}`,`Command: ${e.installCommand}`];if(e.dependencies.length>0)t.push(`Dependencies: ${e.dependencies.join(", ")}`);if(e.companions.length>0)t.push(`Companions: ${e.companions.join(", ")}`);return t.join(`
5
+ `)}function Bs(){try{let e=ke();return{success:!0,data:{platform:e.platform,architecture:e.architecture,isSupported:e.isSupported,nodeVersion:Ir.version}}}catch(e){return{success:!1,error:`Failed to get system info: ${e}`}}}import ae from"node:fs";import Pe from"node:path";function we(e){if(!ae.existsSync(e))throw Error(`Dependency file not found: ${e}`);let t=ae.readFileSync(e,"utf-8"),r=[],n=t.split(`
6
+ `),s=!1,o=!1,a=0;for(let i of n){let c=i.trim();if(!c||c.startsWith("#"))continue;if(i.match(/^(dependencies|deps):\s*$/)){s=!0,o=!1,a=i.search(/\S/);continue}if(i.match(/^global:\s*true\s*$/)||i.match(/^global:\s*$/)&&!s){o=!0;continue}if(i.match(/^\w+:/)&&!i.includes(" ")&&s&&a===0){s=!1;continue}if(s||o){if(i.match(/^\s+(dependencies|deps):\s*$/))continue;let l=i.indexOf(":");if(l>0){let g=i.substring(0,l).trim(),d=i.substring(l+1).trim();if(g&&d){let p=g,y=d.replace(/^['"]|['"]$/g,"");if(p==="global"||p==="dependencies"||p==="deps")continue;let f=y,h=y;if(y.startsWith("^"))f=y.substring(1),h=y;else if(y.startsWith("~"))f=y.substring(1),h=y;else if(y.startsWith(">=")||y.startsWith("<=")||y.startsWith(">")||y.startsWith("<")){let m=/^([><=]+)/.exec(y);if(m){let u=m[1];f=y.substring(u.length).trim(),h=y}}else if(y==="*"||y==="latest")f="latest",h="*";else f=y,h=`@${y}`;r.push({name:p,version:f,constraint:h,isOsSpecific:!1})}}}}return r}function Er(e){if(!ae.existsSync(e))throw Error(`Dependency file not found: ${e}`);let t=ae.readFileSync(e,"utf-8"),r=we(e),n;try{let s=typeof Bun<"u"&&Bun.YAML?Bun.YAML.parse(t):Nr(t);if(s?.services){let o=Array.isArray(s.services.autoStart)?s.services.autoStart.map((a)=>String(a)):[];if(o.length>0)n={enabled:s.services.enabled===!0,autoStart:o}}}catch{}return{dependencies:r,services:n}}function Nr(e){let t={},r=e.split(`
7
+ `),n=!1,s=!1,o=[],a=!1;for(let i of r){let c=i.trim();if(!c||c.startsWith("#"))continue;if(i.match(/^services:\s*$/)){n=!0,s=!1;continue}if(n&&!i.startsWith(" ")&&!i.startsWith("\t")&&!c.startsWith("-")){if(c!=="services:"){n=!1,s=!1;continue}}if(n){if(c.startsWith("enabled:")){a=c.includes("true");continue}if(c.match(/^autoStart:\s*$/)){s=!0;continue}if(s&&c.startsWith("- ")){let l=c.slice(2).trim();if(l)o.push(l)}}}if(o.length>0)t.services={enabled:a,autoStart:o};return t}async function Ws(e,t="src/packages"){try{let r;if(e.includes("/"))r=Pe.join(t,`${e}.ts`);else{let g=`${e.replace(/\./g,"")}.ts`;r=Pe.join(t,g)}if(!ae.existsSync(r))return[];let n=ae.readFileSync(r,"utf-8"),s=n.indexOf("versions:");if(s===-1)return[];let o=n.substring(s),a=o.indexOf("["),i=o.indexOf("] as const");if(a===-1||i===-1)return[];let l=o.substring(a+1,i).match(/'([^']+)'/g);if(!l)return[];return l.map((g)=>g.replace(/'/g,""))}catch{return[]}}async function Tr(e){try{let{packages:t}=await import("./chunk-k004pgye.js").catch(()=>import("./src/index.js")),r=e.replace(/[^a-z0-9]/gi,"").toLowerCase(),n=t[r];if(!n){let s=Object.values(t);n=s.find((o)=>o.domain===e)||s.find((o)=>Array.isArray(o.aliases)&&o.aliases.includes(e))}if(n&&n.versions&&Array.isArray(n.versions))return n.versions;return[]}catch{return[]}}async function Vt(e,t){let r=await Tr(e);if(r.length===0)return t.split("#")[0].trim().replace(/^[@^~>=<]+/,"")||"latest";let n=t.split("#")[0].trim();if(n==="*"||n==="latest")return r[0];if(n.startsWith("@")){let o=n.slice(1);return r.includes(o)?o:r[0]}return Or(r,n)||r[0]}function Or(e,t){if(t.startsWith("^")){let r=t.slice(1),[n]=pe(r);return e.filter((o)=>{let[a]=pe(o);return a===n&&oe(o,r)>=0})[0]||null}if(t.startsWith("~")){let r=t.slice(1),[n,s]=pe(r);return e.filter((a)=>{let[i,c]=pe(a);return i===n&&c===s&&oe(a,r)>=0})[0]||null}if(t.startsWith(">=")){let r=t.slice(2).trim();return e.filter((s)=>oe(s,r)>=0)[0]||null}if(t.startsWith(">")){let r=t.slice(1).trim();return e.filter((s)=>oe(s,r)>0)[0]||null}if(t.startsWith("<=")){let r=t.slice(2).trim();return e.filter((s)=>oe(s,r)<=0)[0]||null}if(t.startsWith("<")){let r=t.slice(1).trim();return e.filter((s)=>oe(s,r)<0)[0]||null}if(t.startsWith("=")){let r=t.slice(1).trim();return e.includes(r)?r:null}return e.includes(t)?t:null}function pe(e){let t=e.split(".").map((r)=>{let n=r.match(/^\d+/);return n?Number.parseInt(n[0],10):0});return[t[0]||0,t[1]||0,t[2]||0]}function oe(e,t){if(e==="latest"&&t!=="latest")return 1;if(t==="latest"&&e!=="latest")return-1;if(e==="latest"&&t==="latest")return 0;let r=e.split("#")[0].trim(),n=t.split("#")[0].trim(),[s,o,a]=pe(r),[i,c,l]=pe(n);if(s>i)return 1;if(s<i)return-1;if(o>c)return 1;if(o<c)return-1;if(a>l)return 1;if(a<l)return-1;return 0}var xe=null;async function Vr(){if(xe)return xe;return xe=(await import("./chunk-k004pgye.js").catch(()=>import("./src/index.js"))).packages,xe}async function jr(e){try{let t=await Vr(),r=t[e];if(r)return{dependencies:r.dependencies||[],companions:r.companions||[]};let n=e.replace(/[^a-z0-9]/gi,"").toLowerCase(),s=t[n];if(s)return{dependencies:s.dependencies||[],companions:s.companions||[]};let a=Object.values(t).find((i)=>i.domain===e);if(a)return{dependencies:a.dependencies||[],companions:a.companions||[]};return null}catch(t){return console.warn(`Failed to load package data for ${e}: ${t}`),null}}async function Se(e,t={},r=new Set,n=0){let{maxDepth:s=10,verbose:o=!1,targetOs:a,includeOsSpecific:i=!0}=t;if(n>s){if(o)console.warn(` Warning: max dependency depth (${s}) exceeded for ${e}`);return[]}if(r.has(e))return[];if(r.add(e),o)console.log(`${" ".repeat(n)}Resolving dependencies for: ${e}`);let c=[];try{let g=function(f){let h=f.match(/^(linux|darwin|windows):(.+)$/),m=!!h,u=h?h[2]:f,x=h?h[1]:void 0;if(m&&(!i||a&&x!==a))return null;let w=u,k="latest",b="*",P=u.match(/^(@?[^@^~>=<]+(?:\/[^@^~>=<]+)?)([@^~>=<].+)?$/);if(P){if(w=P[1],P[2]){let S=P[2];if(S.startsWith("@"))k=S.substring(1),b=S;else b=S,k=S.replace(/^\D*/,"")}}return{dep:{name:w,version:k,constraint:b,isOsSpecific:m,os:x},pkgName:w}},l=await jr(e),p=[...l?.dependencies||[],...l?.companions||[]].map(g).filter((f)=>f!==null);for(let{dep:f}of p)c.push(f);let y=await Promise.allSettled(p.map(({pkgName:f})=>Se(f,t,r,n+1)));for(let f of y)if(f.status==="fulfilled")c.push(...f.value);else if(o)console.warn(` Warning: transitive dependency resolution failed: ${f.reason}`)}catch(l){if(o)console.warn(`${" ".repeat(n)}Warning: Could not resolve dependencies for ${e}: ${l}`)}return c}async function Ge(e,t={}){let r=new Map,n=[],s={linux:[],darwin:[],windows:[]};for(let i of e){if(!r.has(i.name))r.set(i.name,[]);if(r.get(i.name).push(i),i.isOsSpecific&&i.os)s[i.os].push(i)}let o=[],a=[];for(let[i,c]of r)if(c.length===1){let l=await Vt(i,c[0].constraint),g={...c[0],version:l};o.push(g),a.push(i)}else{let l=c.map((f)=>f.version),g=[...new Set(l)];if(g.length>1)n.push({package:i,versions:g});let d=await Promise.all(c.map(async(f)=>({...f,resolvedVersion:await Vt(i,f.constraint)}))),p=d[0];for(let f of d.slice(1))if(p.constraint==="*"&&f.constraint!=="*")p=f;else if(p.constraint!=="*"&&f.constraint==="*");else if(oe(f.resolvedVersion,p.resolvedVersion)>0)p=f;let y={...p,version:p.resolvedVersion};delete y.resolvedVersion,o.push(y),a.push(i)}return{allDependencies:o,uniquePackages:a,conflicts:n,osSpecificDeps:s}}async function jt(e,t={}){let{verbose:r=!1}=t;if(r)console.log(`Parsing dependency file: ${e}`);let n=we(e);if(r)console.log(`Found ${n.length} direct dependencies`);let s=[...n],o=await Promise.all(n.map(async(c)=>{if(r)console.log(`Resolving transitive dependencies for: ${c.name}`);return Se(c.name,t)}));for(let c of o)s.push(...c);if(r)console.log(`Total dependencies found (before deduplication): ${s.length}`);let a=await Ge(s,t);if(r){if(console.log(`Unique packages after deduplication: ${a.uniquePackages.length}`),a.conflicts.length>0)console.log(`Version conflicts found: ${a.conflicts.length}`)}let i=Pe.extname(e);if(i===".yaml"||i===".yml"){let c=Er(e);if(c.services)a.services=c.services}return a}function qs(e){let t=["deps.yaml","deps.yml","dependencies.yaml","dependencies.yml","pkgx.yaml","pkgx.yml",".deps.yaml",".deps.yml"],r=[];for(let n of t){let s=Pe.join(e,n);if(ae.existsSync(s))r.push(s)}return r}import*as v from"node:fs";import*as T from"node:path";import*as X from"node:os";import*as Ze from"node:https";import*as Xe from"node:http";import{execFileSync as ve}from"node:child_process";import{createHash as Fr}from"node:crypto";import{Transform as Mr}from"node:stream";import{pipeline as _r}from"node:stream/promises";var Bt=(process.env.PANTRY_REGISTRY_URL||"https://registry.pantry.dev").replace(/\/$/,"");function Br(e,t){if(e!=="ziglang.org")return t;return t.replace(/(-dev\.\d+)\+([0-9A-Za-z-]+)$/,"$1_$2")}function Re(){let e=process.env.XDG_DATA_HOME,t=e&&e.length>0?e:T.join(X.homedir(),".local","share");return T.join(t,"pantry","global","bin")}function Ce(){let e=X.platform(),t=X.arch();return{os:e==="darwin"?"darwin":e==="win32"?"windows":"linux",arch:t==="arm64"?"aarch64":"x86_64"}}function Ke(e,t){let r=e.replace(/(-dev\.\d+)_([0-9A-Za-z-]+)$/,"$1+$2"),n=t.os==="darwin"?"macos":t.os,s=t.arch==="aarch64"?"aarch64":"x86_64",o=t.os==="windows"?"zip":"tar.xz",a=`zig-${s}-${n}-${r}`,i=`${a}.${o}`;return{url:r.includes("-dev.")?`https://ziglang.org/builds/${i}`:`https://ziglang.org/download/${r}/${i}`,format:o,prefix:a}}function Lr(e,t){let[r,n,s]=e.split(".").map(Number);if(r!==3||!Number.isInteger(n)||!Number.isInteger(s))throw Error(`Unsupported SQLite version: ${e}`);let o=n>=52?2026:n>=48?2025:2024,i={"darwin-aarch64":"osx-arm64","darwin-x86_64":"osx-x64","linux-x86_64":"linux-x64","windows-aarch64":"win-arm64","windows-x86_64":"win-x64"}[`${t.os}-${t.arch}`];if(!i)throw Error(`Unsupported platform for SQLite tools: ${t.os}-${t.arch}`);let c=`${r}${n}${String(s).padStart(2,"0")}00`;return`https://sqlite.org/${o}/sqlite-tools-${i}-${c}.zip`}function Lt(e){return e==="bun.sh"||e==="bun.com"}var ce={"github.com/mail-os/mail":{getDownloadUrl(e,t){if(t.os!=="linux"||t.arch!=="x86_64")throw Error("github.com/mail-os/mail currently publishes linux-x86_64 release binaries");let r={darwin:"macos",linux:"linux",windows:"windows"},n=`mail-${t.arch}-${r[t.os]}`;return`https://github.com/mail-os/mail/releases/download/v${e}/${n}.tar.gz`},getArchiveFormat(){return"tar.gz"},getBinaries(e){let t={darwin:"macos",linux:"linux",windows:"windows"};return[`mail-${e.arch}-${t[e.os]}`,"mail"]}},"ziglang.org":{getDownloadUrl(e,t){return Ke(e,t).url},getArchiveFormat(e){return Ke("0.0.0",e).format},getBinaries(e){return e.os==="windows"?["zig.exe"]:["zig"]},getArchivePrefix(e,t){return Ke(e,t).prefix}},"bun.sh":{getDownloadUrl(e,t){let r={"darwin-aarch64":"darwin-aarch64","darwin-x86_64":"darwin-x64","linux-aarch64":"linux-aarch64","linux-x86_64":"linux-x64","windows-x86_64":"windows-x64"},n=`${t.os}-${t.arch}`,s=r[n]||"linux-x64";return`https://github.com/oven-sh/bun/releases/download/bun-v${e}/bun-${s}.zip`},getArchiveFormat(){return"zip"},getBinaries(e){return e.os==="windows"?["bun.exe"]:["bun","bunx"]},getArchivePrefix(e,t){let r={"darwin-aarch64":"bun-darwin-aarch64","darwin-x86_64":"bun-darwin-x64","linux-aarch64":"bun-linux-aarch64","linux-x86_64":"bun-linux-x64","windows-x86_64":"bun-windows-x64"},n=`${t.os}-${t.arch}`,s=r[n];if(!s)throw Error(`Unsupported platform for bun: ${n}`);return s}},"sqlite.org":{getDownloadUrl(e,t){return Lr(e,t)},getArchiveFormat(){return"zip"},getBinaries(e){let t=e.os==="windows"?".exe":"";return[`sqlite3${t}`,`sqldiff${t}`,`sqlite3_analyzer${t}`,`sqlite3_rsync${t}`]}},"nodejs.org":{getDownloadUrl(e,t){let r={darwin:"darwin",linux:"linux",windows:"win"},n={x86_64:"x64",aarch64:"arm64"},s=t.os==="windows"?"zip":"tar.xz";return`https://nodejs.org/dist/v${e}/node-v${e}-${r[t.os]}-${n[t.arch]}.${s}`},getArchiveFormat(e){return e.os==="windows"?"zip":"tar.xz"},getBinaries(e){return e.os==="windows"?["node.exe","npm.cmd","npx.cmd"]:["node","npm","npx"]},getArchivePrefix(e,t){let r={darwin:"darwin",linux:"linux",windows:"win"},n={x86_64:"x64",aarch64:"arm64"};return`node-v${e}-${r[t.os]}-${n[t.arch]}`}}};function Ft(e,t,r,n){v.mkdirSync(r,{recursive:!0});let s=null;for(let o of t){let a=T.join(e,o);if(!v.existsSync(a))a=T.join(e,"bin",o);if(!v.existsSync(a)){if(s){let c=T.join(r,o);try{v.unlinkSync(c)}catch{}if(n.os==="windows")v.copyFileSync(s,c);else v.symlinkSync(s,c)}continue}if(!s)s=a;let i=T.join(r,o);try{v.unlinkSync(i)}catch{}if(n.os==="windows")v.copyFileSync(a,i);else v.symlinkSync(a,i)}}async function zt(e,t,r={}){let n=r.platform||Ce(),s=ce[e];if(!s)throw Error(`Unknown package: ${e}. Supported: ${Object.keys(ce).join(", ")}`);if(/^[\^~>=<]/.test(t))t=await Yr(e,t,n);else if(t==="latest"||t==="*"||!t)t=await Qe(e,n);else if(e==="ziglang.org"&&t.endsWith("-dev")){let h=await Ur(t,n,{onRetry:r.onRetry});if(!h)throw Error(`Could not resolve ${t} to a published ziglang.org development build`);t=h}if(t=Br(e,t),!t)throw Error(`Could not resolve a concrete version for ${e} (got empty string from resolver)`);let o=r.installDir||T.join(process.cwd(),"pantry"),a=T.join(o,".bin"),i=T.join(o,e.replace(/\./g,"-"),t),c=s.getBinaries(n);if(c.length===0)throw Error(`No binaries defined for ${e} on ${n.os}-${n.arch}`);let l=T.join(i,c[0]),g=T.join(i,"bin",c[0]);if(v.existsSync(l)||v.existsSync(g)){if(!r.quiet)console.log(` ✓ ${e}@${t} (cached)`);if(r.createBinLinks!==!1)Ft(i,c,a,n);let h=Mt(i,c,n,r);return{name:e,version:t,installPath:i,binaries:c,globalLinks:h}}let d=s.getDownloadUrl(t,n),p=s.getArchiveFormat(n);if(!r.quiet)console.log(` → ${e}@${t} from ${new URL(d).hostname}`);let y=v.mkdtempSync(T.join(X.tmpdir(),"pantry-")),f=T.join(y,`archive.${p}`);try{let h;if(d.startsWith(`${Bt}/binaries/`)){let k=T.join(y,"archive.sha256");await _t(`${d}.sha256`,k,{quiet:r.quiet,onRetry:r.onRetry});let b=v.readFileSync(k,"utf8").match(/\b([a-f0-9]{64})\b/i)?.[1];if(!b)throw Error(`Invalid SHA-256 checksum response for ${d}`);h=b.toLowerCase()}await _t(d,f,{quiet:r.quiet,onRetry:r.onRetry,expectedSha256:h});let m=T.join(y,"extracted");v.mkdirSync(m,{recursive:!0}),await tn(f,m,p);let u=m,x=s.getArchivePrefix?.(t,n);if(x){let k=T.join(m,x);if(v.existsSync(k))u=k;else{let P=v.readdirSync(m).find((S)=>v.statSync(T.join(m,S)).isDirectory());if(P)u=T.join(m,P)}}if(v.mkdirSync(i,{recursive:!0}),rn(u,i),n.os!=="windows"){for(let k of c){let b=T.join(i,k);if(v.existsSync(b))v.chmodSync(b,493);let P=T.join(i,"bin",k);if(v.existsSync(P))v.chmodSync(P,493)}for(let k of["bin","sbin","libexec"])Ht(T.join(i,k))}if(r.createBinLinks!==!1)Ft(i,c,a,n);if(!r.quiet)console.log(` ✓ ${e}@${t}`);let w=Mt(i,c,n,r);return{name:e,version:t,installPath:i,binaries:c,globalLinks:w}}finally{try{v.rmSync(y,{recursive:!0,force:!0})}catch{}}}function Mt(e,t,r,n){if(!n.globalBin)return[];let s=typeof n.globalBin==="string"?n.globalBin:Re();v.mkdirSync(s,{recursive:!0});let o=[];for(let a of t){let i=T.join(e,a);if(!v.existsSync(i))i=T.join(e,"bin",a);if(!v.existsSync(i))continue;let c=T.join(s,a);try{v.unlinkSync(c)}catch{}if(r.os==="windows")v.copyFileSync(i,c);else v.symlinkSync(i,c);o.push(c)}if(!n.quiet&&o.length>0)console.log(` → linked ${o.length} binary(ies) into ${s}`);return o}async function zr(e,t={}){return Promise.all(e.map((r)=>zt(r.domain,r.version,t)))}async function Qe(e,t=Ce()){if(Lt(e)){let n=(await Y("https://api.github.com/repos/oven-sh/bun/releases/latest").catch(()=>null))?.tag_name?.replace(/^bun-v/,"")||"";if(n)return n;let s=await He(e);if(s)return s;throw Error("Failed to resolve latest bun.sh version (GitHub API unreachable, no bundled metadata)")}if(e==="ziglang.org"){let r=await et(e,t);if(r.length>0)return r.sort(Je)[0];throw Error(`Failed to resolve a ziglang.org version published for ${Ut(t)}`)}if(e==="nodejs.org"){let n=await Y("https://nodejs.org/dist/index.json").catch(()=>null)||[],o=(n.find((i)=>i.lts)?.version||n[0]?.version||"").replace(/^v/,"");if(o)return o;let a=await He(e);if(a)return a;throw Error("Failed to resolve latest nodejs.org version")}if(e==="github.com/mail-os/mail"){let n=(await Y("https://api.github.com/repos/mail-os/mail/releases/latest").catch(()=>null))?.tag_name?.replace(/^v/,"")||"";if(n)return n;let o=((await Y("https://api.github.com/repos/mail-os/mail/tags?per_page=1").catch(()=>null))?.[0]?.name||"").replace(/^v/,"");if(o)return o;let a=await He(e);if(a)return a;throw Error("Failed to resolve latest github.com/mail-os/mail version")}throw Error(`Cannot resolve latest version for ${e}`)}async function He(e){try{let t=e.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:r}=await import("./chunk-k004pgye.js").catch(()=>import("./src/index.js")),s=r[t]?.versions||[];return s.find((o)=>!o.includes("-"))||s[0]||""}catch{return""}}async function Ur(e,t,r={}){let s=(await et("ziglang.org",t,r)).filter((i)=>i.startsWith(`${e}.`)).sort(Je)[0];if(s)return s;let a=(await Y("https://ziglang.org/download/index.json",3,r).catch(()=>null))?.master?.version||"";return a.startsWith(`${e}.`)?a:null}function Ut(e){let t=e.arch==="aarch64"?"arm64":"x86-64";return`${e.os}-${t}`}function Wr(e,t){let r=Ut(t);return Object.entries(e?.versions||{}).filter(([,n])=>Object.hasOwn(n.platforms||{},r)).map(([n])=>n)}async function et(e,t,r={}){let n=await Y(`${Bt}/binaries/${encodeURI(e)}/metadata.json`,5,r).catch(()=>null);return Wr(n,t)}function Wt(e){let t=e.match(/^([~^]|>=|<=|>|<|=)(\d+(?:\.\d+){0,10}(?:-[0-9A-Za-z.-]+)?(?:[+_][0-9A-Za-z.-]+)?)/);if(!t)return null;return{operator:t[1],target:t[2]}}function $e(e){return e.split(/[+_-]/,1)[0].split(".").map((t)=>Number.parseInt(t,10))}function qt(e,t){let r=$e(e),n=$e(t);for(let c=0;c<Math.max(r.length,n.length,3);c++){let l=(r[c]||0)-(n[c]||0);if(l)return l}let s=e.includes("-"),o=t.includes("-");if(s!==o)return s?-1:1;let a=Number.parseInt(e.match(/-dev\.(\d+)/)?.[1]||"0",10),i=Number.parseInt(t.match(/-dev\.(\d+)/)?.[1]||"0",10);return a-i}function qr(e,t){let{operator:r,target:n}=t;if(e.includes("-")&&!n.includes("-"))return!1;let s=$e(e),o=$e(n);if(s.some(Number.isNaN)||o.some(Number.isNaN))return!1;let[a,i,c]=[s[0]||0,s[1]||0,s[2]||0],[l,g,d]=[o[0]||0,o[1]||0,o[2]||0],p=qt(e,n);if(r==="^"){if(p<0)return!1;if(l===0&&g===0)return a===0&&i===0&&c===d;if(l===0)return a===0&&i===g;return a===l}if(r==="~"){if(p<0)return!1;return o.length===1?a===l:a===l&&i===g}if(r===">=")return p>=0;if(r==="<=")return p<=0;if(r===">")return p>0;if(r==="<")return p<0;if(r==="=")return p===0;return!1}async function Gr(e,t){if(Lt(e))return(await Y("https://api.github.com/repos/oven-sh/bun/releases?per_page=100").catch(()=>null)||[]).map((s)=>(s.tag_name||"").replace(/^bun-v/,"")).filter(Boolean);if(e==="nodejs.org")return(await Y("https://nodejs.org/dist/index.json").catch(()=>null)||[]).map((s)=>(s.version||"").replace(/^v/,"")).filter(Boolean);if(e==="ziglang.org"){let r=await Y("https://ziglang.org/download/index.json").catch(()=>null),n=Kr(r,t);if(n.length>0)return n;return await et(e,t)}return[]}function Kr(e,t){let r=`${t.arch}-${t.os==="darwin"?"macos":t.os}`;return Object.entries(e||{}).filter(([,n])=>Boolean(n[r])).map(([n,s])=>s.version||n).filter(Boolean)}function Ye(e,t){return qt(t,e)}function Hr(e,t){let r=Wt(e);if(!r)return null;return[...new Set(t)].sort(Ye).find((n)=>qr(n,r))||null}async function Yr(e,t,r){if(!Wt(t))return Qe(e,r);let n;try{let i=e.replace(/[^a-z0-9]/gi,"").toLowerCase(),{packages:c}=await import("./chunk-k004pgye.js").catch(()=>import("./src/index.js"));n=c[i]?.versions||[]}catch{n=[]}let s=await Gr(e,r),o=e==="ziglang.org"?s.sort(Ye):[...new Set([...s,...n])].sort(Ye),a=Hr(t,o);if(a)return a;throw Error(`No version of ${e} satisfies "${t}" (checked ${o.length} version${o.length===1?"":"s"}${o.length>0?`, newest ${o[0]}`:""}).`)}var Jr=4;function Ae(e){return e instanceof Error?e.message:String(e)}function Zr(e){if(typeof e==="object"&&e!==null&&"statusCode"in e){let r=Number(e.statusCode);if(Number.isFinite(r))return r}let t=Ae(e).match(/\bHTTP\s+(\d{3})\b/i);return t?Number(t[1]):void 0}function Xr(e){if(typeof e!=="object"||e===null)return"";let t="code"in e?String(e.code||""):"";if(t)return t;let r="cause"in e?e.cause:void 0;return typeof r==="object"&&r!==null&&"code"in r?String(r.code||""):""}function Qr(e){let t=Zr(e);if(t!==void 0)return t===408||t===425||t===429||t>=500;if(/^(?:ECONNRESET|ECONNREFUSED|EPIPE|ETIMEDOUT|EAI_AGAIN|ENETDOWN|ENETUNREACH|EHOSTUNREACH|UND_ERR_SOCKET)$/i.test(Xr(e)))return!0;return/socket hang up|connection reset|premature close|aborted|terminated|timed? ?out|temporar|stalled|incomplete download|checksum mismatch/i.test(Ae(e))}async function Gt(e,t,r={}){let n=r.maxAttempts??Jr,s=r.retryDelayMs??1000,o=r.sleep??((i)=>new Promise((c)=>setTimeout(c,i))),a;for(let i=1;i<=n;i+=1)try{return await t()}catch(c){if(a=c,!Qr(c))throw c;if(i===n)break;let l=Math.min(s*2**(i-1),1e4);r.onRetry?.(`${e} failed (${Ae(c)}); retrying in ${l}ms`),await o(l)}throw Error(`${e} failed after ${n} attempts: ${Ae(a)}`)}function Kt(e,t,r){return new Promise((n,s)=>{let a=(e.startsWith("https")?Ze.get:Xe.get)(e,{headers:{"User-Agent":"pantry-installer"}},(i)=>{if(i.statusCode&&i.statusCode>=300&&i.statusCode<400&&i.headers.location){if(i.resume(),t<=0)return s(Error(`Too many redirects for ${e}`));let c=new URL(i.headers.location,e).href;return Kt(c,t-1,r).then(n,s)}if(!i.statusCode||i.statusCode<200||i.statusCode>=300){i.resume();let c=Object.assign(Error(`HTTP ${i.statusCode||"unknown"} downloading ${e}`),{statusCode:i.statusCode});return s(c)}i.setTimeout(r,()=>{i.destroy(Error(`Download stalled (no data for ${r/1000}s): ${e}`))}),n(i)});a.setTimeout(r,()=>{a.destroy(Error(`Download timed out after ${r/1000}s: ${e}`))}),a.once("error",s)})}async function en(e,t,r){let n=`${t}.part`;try{v.rmSync(n,{force:!0})}catch{}let s=await Kt(e,10,r.stallTimeoutMs??60000),o=!r.quiet&&process.stderr.isTTY,a=Number.parseInt(String(s.headers["content-length"]||""),10),i=Number.isFinite(a)?a:0,c=0,l=0,g=r.expectedSha256?Fr("sha256"):void 0,d=new Mr({transform(p,y,f){c+=p.length,g?.update(p);let h=Date.now();if(o&&h-l>200){l=h;let m=(c/1048576).toFixed(1);if(i>0){let u=(i/1048576).toFixed(1),x=Math.floor(c/i*100);process.stderr.write(`\r ${m}/${u} MB (${x}%)`)}else process.stderr.write(`\r ${m} MB`)}f(null,p)}});try{if(await _r(s,d,v.createWriteStream(n)),!s.complete||i>0&&c!==i)throw Error(`Incomplete download for ${e}: received ${c} of ${i||"unknown"} bytes`);if(r.expectedSha256){let p=g.digest("hex");if(p!==r.expectedSha256.toLowerCase())throw Error(`Checksum mismatch for ${e}: expected ${r.expectedSha256}, got ${p}`)}v.renameSync(n,t)}catch(p){try{v.rmSync(n,{force:!0})}catch{}throw p}finally{if(o&&l>0)process.stderr.write("\r\x1B[K")}}async function _t(e,t,r={}){await Gt(`Download ${e}`,()=>en(e,t,r),r)}async function tn(e,t,r){if(r==="zip")if(process.platform==="win32")ve("powershell",["-NoProfile","-Command","Expand-Archive","-Path",e,"-DestinationPath",t,"-Force"],{stdio:"pipe"});else ve("unzip",["-o","-q",e,"-d",t],{stdio:"pipe"});else if(r==="tar.xz")ve("tar",["xJf",e,"-C",t],{stdio:"pipe"});else if(r==="tar.gz")ve("tar",["xzf",e,"-C",t],{stdio:"pipe"});else throw Error(`Unsupported archive format: ${r}`)}function rn(e,t){v.cpSync(e,t,{recursive:!0})}function Ht(e){let t;try{t=v.readdirSync(e,{withFileTypes:!0})}catch{return}for(let r of t){let n=T.join(e,r.name);try{if(r.isDirectory()){Ht(n);continue}if(!r.isFile())continue;let s=v.statSync(n).mode&511,o=s|(s&292)>>2;if(o!==s)v.chmodSync(n,o)}catch{}}}function Yt(e,t){return new Promise((r,n)=>{let s=e.startsWith("https")?Ze.get:Xe.get,o={"User-Agent":"pantry-installer",Accept:"application/json"};if(e.includes("api.github.com")){let i=process.env.GITHUB_TOKEN||process.env.GH_TOKEN;if(i)o.Authorization=`Bearer ${i}`}let a=s(e,{headers:o,timeout:30000},(i)=>{if(i.statusCode&&i.statusCode>=300&&i.statusCode<400&&i.headers.location){if(t<=0)return n(Error(`Too many redirects for ${e}`));let l=new URL(i.headers.location,e).href;return Yt(l,t-1).then(r,n)}if(!i.statusCode||i.statusCode<200||i.statusCode>=300)return n(Object.assign(Error(`HTTP ${i.statusCode||"unknown"} fetching ${e}`),{statusCode:i.statusCode}));let c="";i.on("data",(l)=>c+=l),i.on("end",()=>{try{r(JSON.parse(c))}catch(l){n(l)}})});a.on("error",n),a.on("timeout",()=>{a.destroy(),n(Error(`Request timed out: ${e}`))})})}function Y(e,t=5,r={}){return Gt(`Fetch ${e}`,()=>Yt(e,t),r)}ce["bun.com"]=ce["bun.sh"];function nn(e){return e in ce}function Xs(){return Object.keys(ce)}function Qs(e){let t=ce[e];if(!t)return;let r=Ce();return t.getBinaries(r)[0]}import*as L from"node:fs";import*as Ee from"node:os";import*as le from"node:path";var De="# >>> pantry shell-init >>>",Ie="# <<< pantry shell-init <<<";function Ne(){let e=process.env.SHELL??"";if(e.endsWith("/zsh")||e==="zsh")return"zsh";if(e.endsWith("/bash")||e==="bash")return"bash";if(e.endsWith("/fish")||e==="fish")return"fish";return"unknown"}function tt(e){let t=Ee.homedir();switch(e){case"zsh":{let r=process.env.ZDOTDIR;return le.join(r&&r.length>0?r:t,".zshrc")}case"bash":{if(Ee.platform()==="darwin"){let r=le.join(t,".bash_profile");if(L.existsSync(r))return r}return le.join(t,".bashrc")}case"fish":return le.join(t,".config","fish","config.fish");case"unknown":return null}}function Jt(e={}){let t=e.globalBin??Re();if((e.shell??Ne())==="fish")return[De,`if test -d "${t}"`,` set -gx PATH "${t}" $PATH`,"end",Ie,""].join(`
8
+ `);return[De,`if [ -d "${t}" ] && [[ ":$PATH:" != *":${t}:"* ]]; then`,` export PATH="${t}:$PATH"`,"fi",Ie,""].join(`
9
+ `)}function sn(e={}){let t=e.shell??Ne(),r=tt(t);if(!r)throw Error(`Could not detect a supported shell (got SHELL=${process.env.SHELL??"<unset>"}). Run \`ts-pantry shell-init\` and copy the printed snippet into your rc file manually.`);let n=Jt({...e,shell:t}),s="";if(L.existsSync(r)){if(s=L.readFileSync(r,"utf-8"),s.includes(De))return{rcFile:r,shell:t,changed:!1}}else L.mkdirSync(le.dirname(r),{recursive:!0});let o=s.length>0&&!s.endsWith(`
10
+ `)?`
11
+
12
+ `:`
13
+ `;return L.appendFileSync(r,o+n),{rcFile:r,shell:t,changed:!0}}function on(e={}){let t=e.shell??Ne(),r=tt(t);if(!r||!L.existsSync(r))return{rcFile:r??"<none>",shell:t,changed:!1};let n=L.readFileSync(r,"utf-8"),s=n.indexOf(De);if(s===-1)return{rcFile:r,shell:t,changed:!1};let o=n.indexOf(Ie,s);if(o===-1)return{rcFile:r,shell:t,changed:!1};let a=n.slice(o+Ie.length).replace(/^\n/,""),i=n.slice(0,s).replace(/\n+$/,`
14
+ `);return L.writeFileSync(r,i+a),{rcFile:r,shell:t,changed:!0}}import D from"node:fs";import R from"node:path";import z from"node:process";var er=R.join(z.cwd(),"src","packages"),rt=R.join(z.cwd(),"docs");var de={};async function ct(e){try{let t=e||R.join(z.cwd(),"src","packages"),r=R.join(t,"index.ts");if(D.existsSync(r)){console.log("Using generated index file for package mapping...");let o=await import(R.resolve(r)),a=o.pantry||o.packages;if(a)return console.log(`Successfully loaded ${Object.keys(a).length} packages from index`),a}console.log("Index file not found, falling back to direct file reading...");let n={};if(!D.existsSync(t))return console.log(`Packages directory does not exist: ${t}`),n;let s=[];try{let o=function(a,i=""){let c=[],l=D.readdirSync(a,{withFileTypes:!0});for(let g of l)if(g.isFile()&&g.name.endsWith(".ts")&&g.name!=="index.ts"&&g.name!=="aliases.ts")c.push(R.join(a,g.name));else if(g.isDirectory()&&!g.name.startsWith(".")){let d=R.join(a,g.name),p=i?`${i}/${g.name}`:g.name;c.push(...o(d,p))}return c};s=o(t),console.log(`Found ${s.length} package files`)}catch(o){console.error(`Error reading packages directory ${t}:`,o),s=[]}console.log(`Reading package data from ${s.length} files...`);for(let o of s)try{let a=R.isAbsolute(o)?o:R.join(t,o),i=D.readFileSync(a,"utf-8"),c=R.basename(o,".ts"),l=i.match(/domain:\s*['"]([^'"]*)['"]\s*as const/),g=l?l[1]:Ve(c),d=Q(g),p=an(i,g);if(p)n[d]=p,console.log(`Loaded package data for ${g} -> ${d}`)}catch(a){console.error(`Error processing file ${o}:`,a)}return console.log(`Successfully loaded ${Object.keys(n).length} packages`),n}catch(t){return console.error("Error importing pantry:",t),{}}}function an(e,t){try{let r=e.match(/domain:\s*['"]([^'"]*)['"]\s*as const/),n=r?r[1]:t;if(!e.match(/export const \w+Package = \{([\s\S]*?)\}/))return console.warn(`Could not find package object in file for ${n}`),null;let o=(k)=>{let b=new RegExp(`${k}:\\s*\\[(.*?)\\]\\s*as const`,"s"),P=e.match(b);if(!P)return[];let S=P[1],A=S.match(/'([^']*)'/g);if(A)return A.map((C)=>C.replace(/'/g,""));if(A=S.match(/"([^"]*)"/g),A)return A.map((C)=>C.replace(/"/g,""));return[]},a=(k)=>{let P=new RegExp(`${k}:\\s*'([^']*)'\\s*as const`),S=e.match(P);if(S)return S[1].replace(/\\'/g,"'").replace(/\\\\/g,"\\");if(P=new RegExp(`${k}:\\s*'([^']*)'`),S=e.match(P),S)return S[1].replace(/\\'/g,"'").replace(/\\\\/g,"\\");return""},i=a("name")||n,c=a("description")||`A package from ${n}`,l=a("packageYmlUrl")||"",g=a("homepageUrl")||"",d=a("githubUrl")||"",p=a("installCommand")||"",y=a("pantryInstallCommand")||`pantry install ${n}`,f=a("fullPath")||n,h=o("programs"),m=o("companions"),u=o("dependencies"),x=o("versions"),w=o("aliases");return{name:i,domain:n,description:c,packageYmlUrl:l,homepageUrl:g,githubUrl:d,installCommand:p,pantryInstallCommand:y,programs:h,companions:m,dependencies:u,versions:x,fullPath:f,aliases:w}}catch(r){return console.error(`Error extracting package data for ${t}:`,r),null}}function cn(e,t){let r=["cli","app","tool","server","client","api","lib","core","sdk","dev","bin"];if(r.includes(e.toLowerCase()))return!1;if(e===t)return!1;let n=t.replace(/\./g,"");if(e===n)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(t.includes("/")){let o=t.split("/"),a=o[o.length-1];if(r.includes(a.toLowerCase())&&e===a)return!1}let s=["go","js","py","rb","sh","vi","cc","gc","jq","awk","sed","mc","gh"];if(e.length<3&&!s.includes(e.toLowerCase()))return!1;if(/^[\d.]+$/.test(e)&&/^\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 tr(){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 rr(e){if(de[e])return de[e];return e.replace(/\W/g,"_")}function nr(e){return e.toLowerCase()}function Te(e,t,r){try{let n=t||er,s=r||R.join(n,`${e}.ts`),o=D.readFileSync(s,"utf-8"),a=o.match(/export const (\w+) = \{/),i=a?a[1]:`${e.replace(/\W/g,"")}Package`,c=o.match(/export type (\w+) = typeof/),l=c?c[1]:`${i.charAt(0).toUpperCase()}${i.slice(1)}`;return{packageVarName:i,typeName:l}}catch(n){console.warn(`Could not read package file ${r||`${e}.ts`}, using fallback naming:`,n);let s=pn(e),o=ln(e);return{packageVarName:s,typeName:o}}}function ln(e){if(de[e]){let n=de[e];return`${n.charAt(0).toUpperCase()}${n.slice(1)}Package`}let r=nr(e).replace(/\W/g,"");return`${r.charAt(0).toUpperCase()}${r.slice(1)}Package`}function pn(e){if(de[e])return`${de[e]}Package`;return`${nr(e).replace(/\W/g,"")}Package`}function gn(e,t){let{typeName:r}=Te(e,t);return r}function dn(e,t){let{packageVarName:r}=Te(e,t);return r}async function nt(e){try{console.log("\uD83D\uDD27 Generating package index...");let t=e||er,r=R.resolve(t,"index.ts");if(!D.existsSync(t))console.log(`Creating packages directory: ${t}`),D.mkdirSync(t,{recursive:!0});if(!D.existsSync(t))return console.error(`Failed to create packages directory: ${t}`),null;let n=[];try{let o=function(a,i=""){let c=[],l=D.readdirSync(a,{withFileTypes:!0});for(let g of l)if(g.isFile()&&g.name.endsWith(".ts")&&g.name!=="index.ts"&&g.name!=="aliases.ts")c.push(R.join(a,g.name));else if(g.isDirectory()&&!g.name.startsWith(".")){let d=R.join(a,g.name),p=i?`${i}/${g.name}`:g.name;c.push(...o(d,p))}return c};n=o(t),console.log(`Found ${n.length} package files`)}catch(o){console.error(`Error reading packages directory ${t}:`,o),n=[]}let s=`// Auto-generated package index
15
+ // Do not edit this file directly
16
+
17
+ export interface Pantry {
18
+ }
19
+
20
+ export type Packages = Pantry
21
+
22
+ export const pantry: Pantry = {
23
+ }
24
+
25
+ export const packages: Packages = pantry
26
+ `;if(n.length>0){console.log(`Processing ${n.length} package files...`);let o=`// Auto-generated package index
27
+ // Do not edit this file directly
28
+
29
+ `,a=`export interface Pantry {
30
+ `,i=`export const pantry: Pantry = {
31
+ `,c=new Set,l=new Set,g=n.sort();for(let h of g)try{let m=R.basename(h,".ts"),u=rr(m),w=R.relative(t,h).replace(/\.ts$/,"").replace(/\\/g,"/"),{packageVarName:k}=Te(m,t,h),b=k,P=1;while(l.has(b))b=`${k}${P}`,P++;if(l.add(b),b===k)o+=`import { ${k} } from './${w}'
32
+ `;else o+=`import { ${k} as ${b} } from './${w}'
33
+ `;let S=u,A=1;while(c.has(S))S=`${u}${A}`,A++;c.add(S);let C=/^\d/.test(S)||!/^[a-z_$][\w$]*$/i.test(S)?`'${S}'`:S;a+=` ${C}: typeof ${b}
34
+ `,i+=` ${C}: ${b},
35
+ `;let N=D.readFileSync(h,"utf-8").match(/domain:\s*['"]([^'"]*)['"]\s*as const/),U=N?N[1]:"";if(U){let B=Q(U);if(B!==S){let M=B,E=1;while(c.has(M))M=`${B}${E}`,E++;c.add(M);let O=/^\d/.test(M)||!/^[a-z_$][\w$]*$/i.test(M)?`'${M}'`:M;a+=` ${O}: typeof ${b}
36
+ `,i+=` ${O}: ${b},
37
+ `}}}catch(m){console.error(`Error processing file ${h}:`,m)}let d=await je(t),p=new Map;for(let h of g)try{let u=D.readFileSync(h,"utf-8").match(/domain:\s*['"]([^'"]*)['"]\s*as const/),x=u?u[1]:"";if(x){let w=R.basename(h,".ts"),{packageVarName:k}=Te(w,t,h),b=k,P=1;while(l.has(b)&&b!==k)b=`${k}${P}`,P++;p.set(x,b)}}catch(m){console.error(`Error processing file for alias mapping ${h}:`,m)}for(let[h,m]of Object.entries(d).sort((u,x)=>u[0].localeCompare(x[0]))){let u=p.get(m);if(u){let x=/^\d/.test(h)||!/^[a-z_$][\w$]*$/i.test(h)?`'${h}'`:h;if(c.has(h)){let w=x.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),k=new RegExp(`^\\s*${w}:\\s*typeof\\s+\\w+\\s*$`,"gm"),b=new RegExp(`^\\s*${w}:\\s*\\w+,\\s*$`,"gm");a=a.replace(k,""),i=i.replace(b,"")}a+=` ${x}: typeof ${u}
38
+ `,i+=` ${x}: ${u},
39
+ `,c.add(h)}}for(let[h,m]of Object.entries(at()).sort((u,x)=>u[0].localeCompare(x[0]))){let u=Qt(h),x=p.get(m);if(!u||u===h||c.has(u)||!x)continue;a+=` ${u}: typeof ${x}
40
+ `,i+=` ${u}: ${x},
41
+ `,c.add(u)}a+=`}
42
+
43
+ `,i+=`}
44
+
45
+ `,s=`${o}
46
+ ${a}export type Packages = Pantry
47
+
48
+ ${i}export const packages: Packages = pantry
49
+
50
+ export * from './aliases'
51
+ `}try{D.writeFileSync(r,s),console.log(`Successfully generated ${r}`)}catch(o){return console.error(`Error writing index file ${r}:`,o),null}if(!D.existsSync(r))return console.error(`Index file was not created: ${r}`),null;return r}catch(t){return console.error("Error generating index file:",t),null}}async function je(e){let t={};console.log("Generating aliases from package files (avoiding circular dependency)");let r=e||R.join(z.cwd(),"src","packages");if(!D.existsSync(r))return console.log(`Packages directory does not exist: ${r}`),t;function n(a,i=""){let c=[],l=D.readdirSync(a,{withFileTypes:!0});for(let g of l)if(g.isFile()&&g.name.endsWith(".ts")&&g.name!=="index.ts"&&g.name!=="aliases.ts")c.push(R.join(a,g.name));else if(g.isDirectory()&&!g.name.startsWith(".")){let d=R.join(a,g.name),p=i?`${i}/${g.name}`:g.name;c.push(...n(d,p))}return c}let s=n(r).sort();console.log(`Found ${s.length} package files`);for(let a of s)try{let i=a,c=D.readFileSync(i,"utf-8"),l=R.basename(a,".ts"),g=c.match(/domain:\s*['"]([^'"]*)['"]\s*as const/),d=g?g[1]:Ve(l),p=c.match(/name:\s*['"]([^'"]*)['"]\s*as const/),y=p?p[1]:"";if(y&&y!==d&&cn(y,d))if(!t[y])t[y]=d,console.log(`Auto-generated alias: ${y} -> ${d}`);else console.log(`Skipped auto-generated alias ${y} -> ${d} (already exists as ${t[y]})`);let f=c.match(/aliases:\s*\[([\s\S]*?)\]/);if(f&&f[1]){let h=f[1].match(/["']([^"']*)["']/g);if(h)for(let m of h){let u=m.replace(/["']/g,"");if(!(!u||u.includes("--")||u.includes("$SHELL")||u.includes("curl")||u.includes("sh <(")||u.includes(" -- ")||u.includes(" -i")||u.includes("+")&&u.includes(" ")||u.includes("{{")||u.includes("}}")||u.includes("version.major")||u.includes("version.minor")||u===d))if(!t[u])t[u]=d,console.log(`Found explicit alias ${u} -> ${d}`);else console.log(`Skipped explicit alias ${u} -> ${d} (already exists as ${t[u]})`);else console.log(`Filtered out invalid alias: ${u} for ${d}`)}}if(d==="aws.amazon.com/cli"){if(!t.aws)t.aws=d,console.log(`Added AWS CLI alias: aws -> ${d}`);if(!t["aws/cli"])t["aws/cli"]=d,console.log(`Added AWS CLI path alias: aws/cli -> ${d}`)}if(d==="aws.amazon.com/cdk"){if(!t["aws/cdk"])t["aws/cdk"]=d,console.log(`Added AWS CDK path alias: aws/cdk -> ${d}`)}}catch(i){console.error(`Error extracting aliases from ${a}:`,i)}let o=at();for(let[a,i]of Object.entries(o))if(!t[a])t[a]=i,console.log(`Added alias override: ${a} -> ${i}`);else{let c=t[a];t[a]=i,console.log(`Overrode alias ${a}: ${c} -> ${i}`)}return t}async function st(e){try{let t=await je(e),r=e?R.resolve(e):R.resolve(z.cwd(),"src","packages"),n=R.resolve(r,"aliases.ts"),s=R.dirname(n);if(!D.existsSync(s))D.mkdirSync(s,{recursive:!0});let o=t,a=`/**
52
+ * Auto-generated aliases for pantry packages
53
+ */
54
+
55
+ `;a+=`export const aliases: Record<string, string> = {
56
+ `;let i=Object.entries(o).sort((c,l)=>c[0].localeCompare(l[0]));for(let[c,l]of i)a+=` '${c}': '${l}',
57
+ `;return a+=`}
58
+ `,D.writeFileSync(n,a),console.log(`Successfully generated ${n} with ${i.length} aliases`),n}catch(t){return console.error("Error generating aliases file:",t),""}}function un(e){let t=e.split(`
59
+ `).map((r)=>r.trimEnd()).join(`
60
+ `);return t=fn(t),t=t.replace(/\n{3,}/g,`
61
+
62
+ `),t=`${t.trimEnd()}
63
+ `,t}function lt(e){return un(e)}function fn(e){let t=e.split(`
64
+ `),r=!1;return t.map((n)=>{if(n.trimStart().startsWith("```"))return r=!r,n;if(r)return n;return n.replace(/(?<!\]\()(?<!\()(?<!<)(https?:\/\/[^\s)>\]]+)/g,(s,o,a)=>{if(a>0&&n[a-1]==="<")return s;let i=n.slice(0,a);if(/\]\($/.test(i))return s;if((i.match(/`/g)||[]).length%2===1)return s;return`<${s}>`})}).join(`
65
+ `)}function mn(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 r=["go","rust","zig","nim","dart","julia","scala","kotlin","swift","node","bun","lato","open-sans","source-code-pro","roboto","inter","hack","fira-code","cascadia-code","jetbrains-mono","jetbrains-mono-nerd-font","meslo-lg-nerd-font"];if(!e.includes(".")&&!r.includes(e.toLowerCase()))return!1;if(!e||e.trim().length===0)return!1;if(!/^[\w.\-/]+$/.test(e))return!1;return!0}function hn(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((r)=>r.test(e))}function ge(e){if(!mn(e.domain))return!0;if(!e.description)return!0;return["Go home.","Crafters of fine Open Source products","Package information for","pantry package","Loading...","Please wait...","Package information available in the pantry registry."].some((r)=>e.description.includes(r))}function sr(e){let t=(n)=>{if(!e.versions||e.versions.length===0)return n.replace(/\{\{/g,"&lbrace;&lbrace;").replace(/\}\}/g,"&rbrace;&rbrace;");let s=e.versions[0],o=s.split("."),a=o[0]||"",i=o[1]||"",c=o[2]||"",l=i?`${a}.${i}`:a;return n.replace(/\{\{\s*version\.marketing\s*\}\}/g,l).replace(/\{\{\s*version\.major\s*\}\}/g,a).replace(/\{\{\s*version\.minor\s*\}\}/g,i).replace(/\{\{\s*version\.patch\s*\}\}/g,c).replace(/\{\{\s*version\.raw\s*\}\}/g,s).replace(/\{\{\s*version\s*\}\}/g,s).replace(/\{\{(?![^}]*\}\})/g,"&lbrace;&lbrace;")};if(e.pantryInstallCommand){let n=e.pantryInstallCommand.match(/pantry install (.+)/);if(n){let s=n[1];if(e.aliases&&e.aliases.length>0){let o=[...e.aliases].sort((i,c)=>i.length-c.length);return`pantry install ${t(o[0])}`}if(e.aliases&&e.aliases.some((o)=>o.toLowerCase()===s.toLowerCase()))return`pantry install ${t(s.toLowerCase())}`;return t(e.pantryInstallCommand)}}if(e.installCommand)return t(e.installCommand);let r=e.domain;if(e.aliases&&e.aliases.length>0)r=[...e.aliases].sort((s,o)=>s.length-o.length)[0];return r=t(r),`pantry install ${r}`}async function yn(e,t){let r=await ct(t),n=await je(t),s=tr(),o=R.resolve(e,"package-catalog.md"),a={},i=0;for(let[f,h]of Object.entries(r))if(!ge(h))a[f]=h;else i++,console.log(`Excluding package ${h.domain||f} (placeholder data)`);console.log(`Filtered out ${i} packages with placeholder data`);let c=new Set,l=new Map;for(let[f,h]of Object.entries(a)){let m=h.domain;if(!c.has(m))l.set(m,h),c.add(m)}let g=new Set;Object.values(s).forEach((f)=>{f.forEach((h)=>g.add(h))});let d=[];if(l.forEach((f,h)=>{if(!g.has(h))d.push(h)}),d.length>0)s["Other Utilities"]=d;let p=`# Package Catalog
66
+
67
+ This comprehensive catalog lists all ${l.size}+ packages available in ts-pantry, organized by category.
68
+
69
+ Each package can be accessed using \`getPackage(name)\` or directly via \`pantry.domain\`.
70
+
71
+ ## Quick Stats
72
+
73
+ - **Total Packages**: ${l.size}
74
+ - **Categories**: ${Object.keys(s).length}
75
+ - **Last Updated**: ${new Date().toISOString()}
76
+
77
+ ## Table of Contents
78
+
79
+ `,y=(f)=>{if(r[f])return{domainVarName:f,pkg:r[f]};let h=n[f];if(h){let m=Q(h);if(r[m])return{domainVarName:m,pkg:r[m]}}return null};Object.keys(s).forEach((f)=>{let h=f.toLowerCase().replace(/[^a-z0-9]+/g,"-"),m=s[f],u=new Map;m.forEach((w)=>{let k=y(w);if(k&&!ge(k.pkg)){let b=k.pkg.domain||k.pkg.fullPath||"unknown";if(!u.has(b))u.set(b,k);else{let P=u.get(b);if(k.domainVarName.length<P.domainVarName.length||k.domainVarName.length===P.domainVarName.length&&k.domainVarName<P.domainVarName)u.set(b,k)}}});let x=u.size;if(x>0)p+=`- [${f}](#${h}) (${x} packages)
80
+ `}),p+=`
81
+ `;for(let[f,h]of Object.entries(s)){let m=new Map;h.forEach((x)=>{let w=y(x);if(w&&!ge(w.pkg)){let k=w.pkg.domain||w.pkg.fullPath||"unknown";if(!m.has(k))m.set(k,w);else{let b=m.get(k);if(w.domainVarName.length<b.domainVarName.length||w.domainVarName.length===b.domainVarName.length&&w.domainVarName<b.domainVarName)m.set(k,w)}}});let u=Array.from(m.values()).sort((x,w)=>(x.pkg.domain||x.domainVarName).localeCompare(w.pkg.domain||w.domainVarName));if(u.length===0)continue;p+=`## ${f}
82
+
83
+ `,p+=`${u.length} packages in this category
84
+
85
+ `,p+=`| Package | Description | Programs | Versions | Install |
86
+ `,p+=`|---------|-------------|----------|----------|----------|
87
+ `;for(let{domainVarName:x,pkg:w}of u)try{let k=w.domain||w.fullPath||"unknown",b=w.aliases?` (${w.aliases.map((E)=>E.replace(/\{\{/g,"&lbrace;&lbrace;").replace(/\}\}/g,"&rbrace;&rbrace;")).join(", ")})`:"",P=w.programs.slice(0,3).map((E)=>E.replace(/\{\{/g,"&lbrace;&lbrace;").replace(/\}\}/g,"&rbrace;&rbrace;")).join(", ");if(w.programs.length>3)P+=`, ... (+${w.programs.length-3})`;if(w.programs.length===0)P="-";let S=w.versions?.length||0,A=w.versions?.[0]||"latest",C=S>0?`${A} (+${S-1})`:"latest",I=w.description.replace(/\s+/g," ").replace(/\{\{/g,"&lbrace;&lbrace;").replace(/\}\}/g,"&rbrace;&rbrace;").replace(/\x27/g,"&#39;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\|/g,"\\|");if(I.length>100)I=`${I.substring(0,97)}...`;let N=w.name||k;if(w.aliases&&w.aliases.length>0)N=[...w.aliases].sort((O,W)=>O.length-W.length)[0];N=N.replace(/\{\{/g,"&lbrace;&lbrace;").replace(/\}\}/g,"&rbrace;&rbrace;");let U=`\`pantry install ${N}\``,B;if(k.includes("."))if(k.startsWith("github.com/")&&k.includes("/")){let O=k.replace("github.com/","").split("/");if(O.length>=2){let W=O[0],se=O.slice(1).join("-");B=`./packages/github.com/${W}/${se}.md`}else B=`./packages/${Oe(k,x)}.md`}else B=`./packages/${k}/index.md`;else B=`./packages/${Oe(k,x)}.md`;let M=`| **[${k}](${B})**${b} | ${I} | ${P} | ${C} | ${U} |`.replace(/\r?\n/g," ").replace(/\s+/g," ");p+=`${M}
88
+ `}catch(k){let b=w.domain||w.fullPath||"unknown";console.error(`Error processing ${b}:`,k),p+=`| **${b}** | Error retrieving package information | - | - | - |
89
+ `}p+=`
90
+ `}return p+=`## Usage Examples
91
+
92
+ ### Basic Usage
93
+
94
+ \`\`\`typescript
95
+ import { getPackage, pantry } from 'ts-pantry'
96
+
97
+ // Get a package by domain
98
+ const nodePackage = pantry.nodejsorg
99
+
100
+ // Get a package by alias
101
+ const nodeByAlias = getPackage('node')
102
+
103
+ // Access package properties
104
+ console.log(\`Package: \${nodePackage.name} - \${nodePackage.description}\`)
105
+ console.log(\`Install: \${nodePackage.installCommand}\`)
106
+ console.log(\`Programs: \${nodePackage.programs.join(', ')}\`)
107
+ \`\`\`
108
+
109
+ ### Advanced Usage
110
+
111
+ \`\`\`typescript
112
+ // Find packages by category
113
+ const databases = [
114
+ pantry.postgresqlorg,
115
+ pantry.mysqlcom,
116
+ pantry.redisio,
117
+ pantry.mongodbcom
118
+ ]
119
+
120
+ // Get all available versions
121
+ const nodeVersions = pantry.nodejsorg.versions
122
+ console.log(\`Node.js versions: \${nodeVersions.slice(0, 5).join(', ')}...\`)
123
+
124
+ // Check dependencies
125
+ const nodeDeps = pantry.nodejsorg.dependencies
126
+ console.log(\`Node.js dependencies: \${nodeDeps.join(', ')}\`)
127
+ \`\`\`
128
+
129
+ ### Installation Examples
130
+
131
+ \`\`\`bash
132
+ # Install using pantry
133
+ pantry install node
134
+ pantry install python
135
+ pantry install rust
136
+
137
+ # Install specific versions
138
+ pantry install node@20
139
+ pantry install python@3.11
140
+
141
+ # Install multiple packages
142
+ pantry install node python rust
143
+ \`\`\`
144
+
145
+ ## Package Information
146
+
147
+ Each package includes:
148
+
149
+ - **Name**: Short identifier for the package
150
+ - **Domain**: Full domain identifier
151
+ - **Description**: What the package does
152
+ - **Programs**: Executable programs provided
153
+ - **Versions**: Available versions
154
+ - **Dependencies**: Required dependencies
155
+ - **Companions**: Related packages
156
+ - **Install Command**: How to install with pantry
157
+
158
+ ## Contributing
159
+
160
+ To add or update packages, see the [pantry repository](https://github.com/pantry-pm/pantry).
161
+ `,await D.promises.writeFile(o,lt(p)),o}function Zt(e,t,r){if(e.includes("."))if(e.startsWith("github.com/")){let s=e.replace("github.com/","").split("/");if(s.length>=2){let o=s[0],a=s.slice(1).join("-");return R.join(r,"github.com",o,`${a}.md`)}else{let o=s[0];return R.join(r,"github.com",o,"index.md")}}else return R.join(r,e,"index.md");else return R.join(r,`${Oe(e,t)}.md`)}function Oe(e,t){let r=(e||t).toLowerCase();if(/^\d/.test(r))r=`pkg-${r}`;return r.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}async function bn(e,t){let r=await ct(t),n=R.join(e,"packages");if(!D.existsSync(n))D.mkdirSync(n,{recursive:!0});let s=[],o=new Map;for(let[a,i]of Object.entries(r)){if(ge(i)){console.log(`Skipping package page for ${i.domain||a} (placeholder data)`);continue}let c=i.domain;if(!o.has(c))o.set(c,{domainVarName:a,pkg:i});else{let l=o.get(c);if(a.length<l.domainVarName.length||a.length===l.domainVarName.length&&a<l.domainVarName)o.set(c,{domainVarName:a,pkg:i}),console.log(`Replaced ${l.domainVarName} with ${a} for domain ${c}`)}}for(let{domainVarName:a,pkg:i}of o.values())try{let c=i.domain||i.fullPath||a,l;if(c.includes("."))if(c.startsWith("github.com/")){let P=c.replace("github.com/","").split("/");if(P.length>=2){let S=P[0],A=P.slice(1).join("-"),C=R.join(n,"github.com",S);if(!D.existsSync(C))D.mkdirSync(C,{recursive:!0});l=R.join(C,`${A}.md`)}else{let S=P[0],A=R.join(n,"github.com",S);if(!D.existsSync(A))D.mkdirSync(A,{recursive:!0});l=R.join(A,"index.md")}}else{let b=R.join(n,c);if(!D.existsSync(b))D.mkdirSync(b,{recursive:!0});l=R.join(b,"index.md")}else l=R.join(n,`${Oe(c,a)}.md`);let g=i.description||"",d=(b)=>{if(!i.versions||i.versions.length===0)return b.replace(/\{\{/g,"&lbrace;&lbrace;").replace(/\}\}/g,"&rbrace;&rbrace;");let P=i.versions[0],S=P.split("."),A=S[0]||"",C=S[1]||"",I=S[2]||"",N=C?`${A}.${C}`:A;return b.replace(/\{\{\s*version\.marketing\s*\}\}/g,N).replace(/\{\{\s*version\.major\s*\}\}/g,A).replace(/\{\{\s*version\.minor\s*\}\}/g,C).replace(/\{\{\s*version\.patch\s*\}\}/g,I).replace(/\{\{\s*version\.raw\s*\}\}/g,P).replace(/\{\{\s*version\s*\}\}/g,P).replace(/\{\{(?![^}]*\}\})/g,"&lbrace;&lbrace;")},p=d(i.name||c),y=d(g).replace(/\s+/g," "),f=`# ${p}
162
+
163
+ ${y?`> ${y}`:""}
164
+
165
+ ## Package Information
166
+
167
+ - **Domain**: \`${c}\`
168
+ - **Name**: \`${p}\`
169
+ - **Homepage**: ${i.homepageUrl||"Not specified"}
170
+ - **Source**: [View on GitHub](${i.packageYmlUrl||`https://github.com/pantry-pm/pantry/tree/main/projects/${c}/package.yml`})
171
+
172
+ ## Installation
173
+
174
+ \`\`\`bash
175
+ # Install with pantry
176
+ ${sr(i)}
177
+ \`\`\`
178
+
179
+ ## Programs
180
+
181
+ This package provides the following executable programs:
182
+
183
+ `;if(i.programs&&i.programs.length>0)i.programs.forEach((b)=>{let P=d(b);f+=`- \`${P}\`
184
+ `});else f+=`No programs specified.
185
+ `;if(i.aliases&&i.aliases.length>0)f+=`
186
+ ## Aliases
187
+
188
+ This package can also be accessed using these aliases:
189
+
190
+ `,i.aliases.forEach((b)=>{let P=d(b);f+=`- \`${P}\`
191
+ `});if(i.versions&&i.versions.length>0){f+=`
192
+ ## Available Versions
193
+
194
+ <details>
195
+ <summary>Show all ${i.versions.length} versions</summary>
196
+
197
+ `;let b=new Map,P=[];i.versions.forEach((S)=>{let A=S.split("."),C=A.length>=2?`${A[0]}.${A[1]}`:A[0];if(!b.has(C))b.set(C,[]),P.push(C);b.get(C).push(S)}),P.forEach((S)=>{let A=b.get(S);f+=`- ${A.map((C)=>`\`${C}\``).join(", ")}
198
+ `}),f+=`
199
+ </details>
200
+
201
+ **Latest Version**: \`${i.versions[0]}\`
202
+
203
+ ### Install Specific Version
204
+
205
+ \`\`\`bash
206
+ # Install a specific version
207
+ pantry install ${c}@${i.versions[0]}
208
+ \`\`\`
209
+ `}if(i.dependencies&&i.dependencies.length>0)f+=`
210
+ ## Dependencies
211
+
212
+ This package depends on:
213
+
214
+ `,i.dependencies.forEach((b)=>{f+=`- \`${b}\`
215
+ `});if(i.companions&&i.companions.length>0){let b=i.companions.filter((P)=>!hn(P));if(b.length>0)f+=`
216
+ ## Related Packages
217
+
218
+ These packages work well with ${i.name||c}:
219
+
220
+ `,b.forEach((P)=>{let S=Q(P),A=r[S];if(A&&!ge(A)){let C=Zt(P,S,n),I=R.relative(R.dirname(l),C).replace(/\\/g,"/"),N=A.description?.trim();if(N)f+=`- [\`${P}\`](${I}) - ${N}
221
+ `;else f+=`- [\`${P}\`](${I})
222
+ `}else{let C=Zt(P,S,n),I=R.relative(R.dirname(l),C).replace(/\\/g,"/"),N=A?.description?.trim()||"Package not available";if(N&&N!=="Package not available")f+=`- [\`${P}\`](${I}) - ${N}
223
+ `;else f+=`- [\`${P}\`](${I})
224
+ `}})}let h=R.dirname(n),u=`${R.relative(R.dirname(l),h)}/package-catalog.md`.replace(/\\/g,"/"),x=i.aliases&&i.aliases.length>0?i.aliases[0]:i.name||Q(c),k=/[^\w$]/.test(x)||/^\d/.test(x)?`pantry['${x}']`:`pantry.${x}`;f+=`
225
+ ## Usage Examples
226
+
227
+ \`\`\`typescript
228
+ import { pantry } from 'ts-pantry'
229
+
230
+ // Access this package
231
+ const pkg = ${k}
232
+
233
+ console.log(\`Package: \${pkg.name}\`)
234
+ console.log(\`Description: \${pkg.description}\`)
235
+ console.log(\`Programs: \${pkg.programs.join(', ')}\`)
236
+ \`\`\`
237
+
238
+ ## Links
239
+
240
+ - [Package Source](${i.packageYmlUrl||`https://github.com/pantry-pm/pantry/tree/main/projects/${c}/package.yml`})
241
+ - [Homepage](${i.homepageUrl||"#"})
242
+ - [Back to Package Catalog](${u})
243
+
244
+ ---
245
+
246
+ > Auto-generated from package data.
247
+ `,await D.promises.writeFile(l,lt(f)),s.push(l)}catch(c){console.error(`Error generating page for ${a}:`,c)}return s}async function kn(e,t){let r=await ct(t),n=await je(t),s=tr(),o=R.join(e,"categories");if(!D.existsSync(o))D.mkdirSync(o,{recursive:!0});let a=[],i=(c)=>{if(r[c])return{domainVarName:c,pkg:r[c]};if(n[c]){let l=n[c],g=Q(l);if(r[g])return{domainVarName:g,pkg:r[g]}}return null};for(let[c,l]of Object.entries(s)){let g=new Map;l.forEach((h)=>{let m=i(h);if(m&&!ge(m.pkg)){let u=m.pkg.domain||m.pkg.fullPath||"unknown";if(!g.has(u))g.set(u,m);else{let x=g.get(u);if(m.domainVarName.length<x.domainVarName.length||m.domainVarName.length===x.domainVarName.length&&m.domainVarName<x.domainVarName)g.set(u,m)}}});let d=Array.from(g.values()).sort((h,m)=>(h.pkg.domain||h.domainVarName).localeCompare(m.pkg.domain||m.domainVarName));if(d.length===0)continue;let p=`${c.toLowerCase().replace(/[^a-z0-9]+/g,"-")}.md`,y=R.join(o,p),f=`# ${c}
248
+
249
+ ${d.length} packages in this category
250
+
251
+ ${c==="Programming Languages"?"Popular programming languages and their runtimes available through pantry.":c==="Databases"?"Database systems and data storage solutions.":c==="Development Tools"?"Development environments, editors, and programming tools.":c==="Build Tools"?"Build systems, compilers, and development infrastructure.":c==="DevOps"?"Tools for deployment, orchestration, and infrastructure management.":c==="Multimedia"?"Audio, video, and image processing tools.":c==="Security"?"Security tools, encryption, and authentication systems.":c==="Networking"?"Network tools, protocols, and communication software.":c==="CLI Tools & Utilities"?"Command-line utilities and system tools.":`Packages related to ${c.toLowerCase()}.`}
252
+
253
+ ## Packages
254
+
255
+ `;d.forEach(({domainVarName:h,pkg:m})=>{let u=m.domain||m.fullPath||"unknown",x=(A)=>{if(!m.versions||m.versions.length===0)return A.replace(/\{\{/g,"&lbrace;&lbrace;").replace(/\}\}/g,"&rbrace;&rbrace;");let C=m.versions[0],I=C.split("."),N=I[0]||"",U=I[1]||"",B=I[2]||"",M=U?`${N}.${U}`:N;return A.replace(/\{\{\s*version\.marketing\s*\}\}/g,M).replace(/\{\{\s*version\.major\s*\}\}/g,N).replace(/\{\{\s*version\.minor\s*\}\}/g,U).replace(/\{\{\s*version\.patch\s*\}\}/g,B).replace(/\{\{\s*version\.raw\s*\}\}/g,C).replace(/\{\{\s*version\s*\}\}/g,C).replace(/\{\{(?![^}]*\}\})/g,"&lbrace;&lbrace;")},w=[];if(m.name&&m.name!==u)w.push(m.name);if(m.aliases&&m.aliases.length>0)w.push(...m.aliases);let k=w.length>0?` (${w.join(", ")})`:"",b=m.description||"",P=x(b).replace(/\s+/g," "),S;if(u.includes("."))if(u.startsWith("github.com/")&&u.includes("/")){let C=u.replace("github.com/","").split("/");if(C.length>=2){let I=C[0],N=C.slice(1).join("-");S=`../packages/github.com/${I}/${N}.md`}else{let I=h.toLowerCase();if(/^\d/.test(I))I=`pkg-${I}`;I=I.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,""),S=`../packages/${I}.md`}}else S=`../packages/${u}/index.md`;else{let A=h.toLowerCase();if(/^\d/.test(A))A=`pkg-${A}`;A=A.replace(/[^\w-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,""),S=`../packages/${A}.md`}f+=`### [${u}](${S})${k}
256
+
257
+ ${P?`${P}`:""}
258
+
259
+ **Programs**: ${m.programs&&m.programs.length>0?m.programs.map((A)=>x(A)).join(", "):"None specified"}
260
+
261
+ **Install**: \`${sr(m)}\`
262
+
263
+ ---
264
+
265
+ `}),f+=`[← Back to Package Catalog](../package-catalog.md)
266
+ `,await D.promises.writeFile(y,lt(f)),a.push(y)}return a}async function it(e=rt,t){console.log("\uD83D\uDE80 Generating comprehensive package documentation...");try{if(!D.existsSync(e))D.mkdirSync(e,{recursive:!0});console.log("\uD83D\uDCDA Generating package catalog...");let r=await yn(e,t);console.log(`✅ Generated: ${r}`),console.log("\uD83D\uDCC4 Generating individual package pages...");let n=await bn(e,t);console.log(`✅ Generated ${n.length} package pages`),console.log("\uD83D\uDCC2 Generating category pages...");let s=await kn(e,t);console.log(`✅ Generated ${s.length} category pages`),console.log(`
267
+ \uD83C\uDF89 Documentation generation complete!`),console.log(`\uD83D\uDCCD Output directory: ${e}`),console.log(`\uD83D\uDCCA Total files generated: ${1+n.length+s.length}`),console.log(`
268
+ Files generated:`),console.log(`- Package catalog: ${r}`),console.log(`- Package pages: ${n.length} files in docs/packages/`),console.log(`- Category pages: ${s.length} files in docs/categories/`)}catch(r){throw console.error("❌ Error generating documentation:",r),r}}async function ot(){try{console.log("\uD83C\uDFAF Updating Dependencies type timestamp...");let e=R.join(z.cwd(),"src","dependencies.ts");if(!D.existsSync(e)){console.log("dependencies.ts not found, skipping update");return}let t=D.readFileSync(e,"utf-8"),r=new Date().toISOString(),n=t.replace(/\/\/ Auto-generated precise dependency types/,`// Auto-generated precise dependency types
269
+ // Last updated: ${r}`);D.writeFileSync(e,n),console.log("✅ Updated dependencies.ts timestamp")}catch(e){console.error("Error updating dependencies.ts:",e)}}async function xn(){try{let e=z.argv.slice(2);switch(e[0]||"index"){case"index":{if(console.log("\uD83D\uDD27 Generating package index..."),!await nt())console.error("❌ Failed to generate index"),z.exit(1);if(console.log("\uD83C\uDFF7️ Generating aliases..."),!await st())console.error("❌ Failed to generate aliases"),z.exit(1);console.log("\uD83C\uDFAF Updating PackageVersionMap..."),await ot(),console.log("✨ Index and aliases generation completed successfully!");break}case"docs":{let r=e[1]||rt;console.log(`\uD83D\uDCDA Generating documentation to ${r}...`),await it(r),console.log("✨ Documentation generation completed successfully!");break}case"all":{if(console.log("\uD83D\uDE80 Generating everything..."),console.log("\uD83D\uDD27 Generating package index..."),!await nt())console.error("❌ Failed to generate index"),z.exit(1);if(console.log("\uD83C\uDFF7️ Generating aliases..."),!await st())console.error("❌ Failed to generate aliases"),z.exit(1);console.log("\uD83C\uDFAF Updating PackageVersionMap..."),await ot();let s=e[1]||rt;console.log(`\uD83D\uDCDA Generating documentation to ${s}...`),await it(s),console.log("✨ All generation completed successfully!");break}default:console.log(`
270
+ Usage: bun run src/generate.ts [command] [options]
271
+
272
+ Commands:
273
+ index Generate package index and aliases (default)
274
+ docs [output-dir] Generate documentation (default: ./docs)
275
+ all [output-dir] Generate everything (index, aliases, and docs)
276
+
277
+ Examples:
278
+ bun run src/generate.ts
279
+ bun run src/generate.ts index
280
+ bun run src/generate.ts docs
281
+ bun run src/generate.ts docs ./custom-docs
282
+ bun run src/generate.ts all
283
+ bun run src/generate.ts all ./custom-docs
284
+ `);break}}catch(e){console.error("\uD83D\uDCA5 Error during generation:",e),z.exit(1)}}var Xt=z.argv[1]?.replace(/\\/g,"/"),Pn=Xt?.endsWith("/generate.ts")||Xt==="generate.ts";if(Pn)xn();import fe from"node:fs";import wn from"node:os";import ue from"node:path";import Fe from"node:process";async function Sn(e,t={}){let{targetOs:r=Fe.platform==="darwin"?"darwin":Fe.platform==="win32"?"windows":"linux",includeOsSpecific:n=!0,maxDepth:s=10,verbose:o=!1}=t,a=await jt(e,{targetOs:r,includeOsSpecific:n,maxDepth:s,verbose:o}),i=we(e),c=a.allDependencies.map((p)=>({name:p.name,version:p.version,constraint:p.constraint,isOsSpecific:p.isOsSpecific,os:p.os})),g=`pantry install ${i.map((p)=>p.name).join(" ")}`,d=a.conflicts.map((p)=>{let y=c.find((f)=>f.name===p.package);return{package:p.package,versions:p.versions,resolved:y?.version||"latest"}});return{packages:c,directCount:i.length,totalCount:c.length,conflicts:d,pantryCommand:g}}async function mi(e,t={}){let r=fe.mkdtempSync(ue.join(wn.tmpdir(),"pantry-deps-")),n=ue.join(r,"deps.yaml");try{return fe.writeFileSync(n,e,{encoding:"utf-8",mode:384}),await Sn(n,t)}finally{try{fe.rmSync(r,{recursive:!0,force:!0})}catch{}}}async function hi(e,t={}){let{targetOs:r=Fe.platform==="darwin"?"darwin":Fe.platform==="win32"?"windows":"linux",includeOsSpecific:n=!0,maxDepth:s=10}=t,o=await Se(e,{targetOs:r,includeOsSpecific:n,maxDepth:s});return o.unshift({name:e,version:"latest",constraint:"*",isOsSpecific:!1}),(await Ge(o,{targetOs:r,includeOsSpecific:n,maxDepth:s})).allDependencies.map((i)=>({name:i.name,version:i.version,constraint:i.constraint,isOsSpecific:i.isOsSpecific,os:i.os}))}function yi(e,t="pantry"){if(t==="pkgx")return`pkgx install ${e.join(" ")}`;return`pantry install ${e.join(" ")}`}function bi(e){let t=[],r=ue.join(e,"pantry");try{let o=fe.readdirSync(r,{withFileTypes:!0});for(let a of o){if(!a.isDirectory())continue;if(a.name.startsWith("@")){let i=ue.join(r,a.name);try{let c=fe.readdirSync(i,{withFileTypes:!0});for(let l of c){if(!l.isDirectory())continue;let g=`${a.name}/${l.name}`,d=ue.join(i,l.name,"package.json"),p=ir(d);t.push({name:g,version:p,isWorkspace:g.startsWith("@stacksjs/"),isScoped:!0})}}catch{}}else{let i=ue.join(r,a.name,"package.json"),c=ir(i);t.push({name:a.name,version:c,isWorkspace:!1,isScoped:!1})}}}catch{}t.sort((o,a)=>o.name.localeCompare(a.name));let n=t.filter((o)=>o.isWorkspace).length,s=t.length-n;return{packages:t,thirdPartyCount:s,workspaceCount:n,totalCount:t.length}}function ir(e){try{let t=fe.readFileSync(e,"utf-8");return JSON.parse(t).version||"0.0.0"}catch{return"0.0.0"}}cs();function xi(e){return e}function Pi(e){return e}var wi={baseUrl:"https://dist.pkgx.dev"};function Si(e){return e}import{execFileSync as wt}from"node:child_process";import j from"node:fs";import Ln from"node:os";import V from"node:path";import Me from"node:process";import vn from"node:fs";import or from"node:path";function pt(e,t){let r=or.resolve(e),n=[],s=t.rules.some((a)=>a.negated);function o(a,i){let c;try{c=vn.readdirSync(a,{withFileTypes:!0})}catch{return}for(let l of c){let g=i?`${i}/${l.name}`:l.name,d=or.join(a,l.name),p=l.isSymbolicLink(),y=l.isDirectory()&&!p,f=t.ignores(g);if(y){if(f&&!s)continue;if(!f)n.push({relPath:g,absPath:d,isDir:!0,isSymlink:!1});o(d,g)}else{if(f)continue;n.push({relPath:g,absPath:d,isDir:!1,isSymlink:p})}}}return o(r,""),n.sort((a,i)=>a.relPath<i.relPath?-1:a.relPath>i.relPath?1:0),n}var $n=new Set(["FROM","RUN","CMD","LABEL","MAINTAINER","EXPOSE","ENV","ADD","COPY","ENTRYPOINT","VOLUME","USER","WORKDIR","ARG","ONBUILD","STOPSIGNAL","HEALTHCHECK","SHELL"]);function An(e){let t={},r=0;for(;r<e.length;r++){let s=e[r].trim();if(s==="")continue;let o=/^#\s*([a-z][a-z0-9_-]*)\s*=\s*(.+?)\s*$/i.exec(s);if(!o)break;t[o[1].toLowerCase()]=o[2]}return{directives:t,bodyStart:0}}function Rn(e,t){let r=e.split(`
285
+ `),n=[],s="",o=0,a=new RegExp(`${t==="\\"?"\\\\":"`"}\\s*$`);for(let i=0;i<r.length;i++){let c=r[i].replace(/\r$/,""),l=s!=="";if(!l&&c.trim().startsWith("#"))continue;if(!l)o=i+1;if(a.test(c)){c=c.replace(a,""),s+=c;continue}if(s+=c,s.trim()!=="")n.push({text:s,line:o});s=""}if(s.trim()!=="")n.push({text:s,line:o});return n}function Cn(e){let t={},r=e.trimStart(),n=/^--([a-z][a-z0-9-]*)=("[^"]*"|'[^']*'|\S+)\s*/i,s=n.exec(r);while(s){let o=s[2];if(o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'"))o=o.slice(1,-1);t[s[1]]=o,r=r.slice(s[0].length),s=n.exec(r)}return{flags:t,rest:r.trim()}}function gt(e){let t=e.split(`
286
+ `),{directives:r}=An(t),n=r.escape==="`"?"`":"\\",s=Rn(e,n),o=[],a=[],i=[],c;for(let{text:l,line:g}of s){let d=l.trim();if(d==="")continue;let p=d.search(/\s/),y=(p===-1?d:d.slice(0,p)).toUpperCase(),f=p===-1?"":d.slice(p+1).trim();if(!$n.has(y)){let x={instruction:y,args:f,flags:{},line:g};if(o.push(x),c)c.instructions.push(x);continue}let{flags:h,rest:m}=Cn(f),u={instruction:y,args:m,flags:h,line:g};if(o.push(u),y==="FROM"){let x=Dn(m,h,i.length);i.push(x),c=x;continue}if(!c){if(y==="ARG")a.push(u);continue}c.instructions.push(u)}return{directives:r,globalArgs:a,stages:i,instructions:o}}function Dn(e,t,r){let n=e.split(/\s+/),s=n[0]??"scratch",o,a=n.findIndex((i)=>i.toUpperCase()==="AS");if(a!==-1&&n[a+1])o=n[a+1];return{name:o,baseImage:s,platform:t.platform,index:r,instructions:[]}}function ee(e){let t=e.trim();if(!t.startsWith("["))return;try{let r=JSON.parse(t);if(Array.isArray(r)&&r.every((n)=>typeof n==="string"))return r}catch{}return}function dt(e,t){if(!t)return e.stages;let r=e.stages.findIndex((n)=>n.name===t);if(r===-1)throw Error(`Build target stage "${t}" not found`);return e.stages.slice(0,r+1)}import ar from"node:fs";import ut from"node:path";var In=[".freezer",".dockerignore"];function cr(e){let t=e.trim();if(t=t.replace(/\\/g,"/"),t.startsWith("/"))t=t.slice(1);if(t.endsWith("/"))t=t.slice(0,-1);let n="^";for(let s=0;s<t.length;s++){let o=t[s];if(o==="*")if(t[s+1]==="*"){if(s++,t[s+1]==="/")s++;n+=".*"}else n+="[^/]*";else if(o==="?")n+="[^/]";else if(".+^${}()|[]".includes(o))n+=`\\${o}`;else n+=o}return n+="(?:/.*)?$",new RegExp(n)}function lr(e){let t=[];for(let r of e.split(`
287
+ `)){let n=r.replace(/\r$/,"").trim();if(n===""||n.startsWith("#"))continue;let s=n,o=!1;if(s.startsWith("!"))o=!0,s=s.slice(1).trim();if(s==="")continue;t.push({pattern:s,negated:o,regex:cr(s)})}return t}function pr(e){return{rules:e,ignores(t){let r=t.replace(/\\/g,"/").replace(/^\.\//,"").replace(/^\/+/,""),n=!1;for(let s of e)if(s.regex.test(r))n=!s.negated;return n}}}function ft(e,t){let r="",n,s=t&&ut.resolve(t)!==ut.resolve(e)?[e,t]:[e];e:for(let c of s)for(let l of In){let g=ut.join(c,l);if(ar.existsSync(g)){r=ar.readFileSync(g,"utf8"),n=l;break e}}let o=lr(r),a=[".freezer",".dockerignore",".git"];for(let c of a)if(!o.some((l)=>l.pattern===c||l.negated&&l.pattern===c))o.unshift({pattern:c,negated:!1,regex:cr(c)});let i=pr(o);return i.sourceFile=n,i}import{execFileSync as gr}from"node:child_process";import{createHash as En}from"node:crypto";import F from"node:fs";import _ from"node:path";import{gzipSync as Nn}from"node:zlib";var G={manifest:"application/vnd.oci.image.manifest.v1+json",manifestList:"application/vnd.oci.image.index.v1+json",config:"application/vnd.oci.image.config.v1+json",layerGzip:"application/vnd.oci.image.layer.v1.tar+gzip",dockerManifest:"application/vnd.docker.distribution.manifest.v2+json",dockerManifestList:"application/vnd.docker.distribution.manifest.list.v2+json",dockerConfig:"application/vnd.docker.container.image.v1+json",dockerLayerGzip:"application/vnd.docker.image.rootfs.diff.tar.gzip"};function te(e){return`sha256:${En("sha256").update(e).digest("hex")}`}function H(e){return e.startsWith("sha256:")?e.slice(7):e}function Tn(e){let t=_.join(e,"..",`.layer-${process.pid}-${Date.now()}.tar`);try{return gr("tar",["-cf",t,"--numeric-owner","-C",e,"."],{stdio:"pipe",maxBuffer:536870912}),F.readFileSync(t)}finally{if(F.existsSync(t))F.rmSync(t,{force:!0})}}function mt(e,t){let r=Tn(e),n=te(r),s=Nn(r,{level:6}),o=te(s);F.mkdirSync(t,{recursive:!0});let a=_.join(t,`${H(o)}.tar.gz`),i=_.join(t,`${H(n)}.tar`);return F.writeFileSync(a,s),F.writeFileSync(i,r),{digest:o,diffId:n,size:s.length,path:a,tarPath:i}}function ht(e){let t=Buffer.from(JSON.stringify(e));return{bytes:t,digest:te(t)}}function yt(e,t,r){let n=r.map((a)=>({mediaType:G.layerGzip,digest:a.digest,size:a.size})),s={schemaVersion:2,mediaType:G.manifest,config:{mediaType:G.config,digest:e,size:t},layers:n},o=Buffer.from(JSON.stringify(s));return{manifest:s,bytes:o,digest:te(o)}}function bt(e,t,r,n,s,o,a){let i=_.join(e,"blobs","sha256");F.mkdirSync(i,{recursive:!0}),F.writeFileSync(_.join(e,"oci-layout"),`${JSON.stringify({imageLayoutVersion:"1.0.0"})}
288
+ `),F.writeFileSync(_.join(i,H(s)),n),F.writeFileSync(_.join(i,H(r)),t);for(let l of o)F.copyFileSync(l.path,_.join(i,H(l.digest)));let c={schemaVersion:2,mediaType:G.manifestList,manifests:[{mediaType:G.manifest,digest:r,size:t.length,annotations:a.length?{"org.opencontainers.image.ref.name":a[0]}:void 0}]};F.writeFileSync(_.join(e,"index.json"),JSON.stringify(c))}function kt(e,t,r,n,s){let o=`${e}.stage-${process.pid}`;F.rmSync(o,{recursive:!0,force:!0}),F.mkdirSync(o,{recursive:!0});try{let a=`${H(r)}.json`;F.writeFileSync(_.join(o,a),t);let i=[];for(let l of n){let g=H(l.diffId);F.mkdirSync(_.join(o,g),{recursive:!0}),F.copyFileSync(l.tarPath,_.join(o,g,"layer.tar")),i.push(`${g}/layer.tar`)}let c=[{Config:a,RepoTags:s.length?s:void 0,Layers:i}];F.writeFileSync(_.join(o,"manifest.json"),JSON.stringify(c)),F.mkdirSync(_.dirname(e),{recursive:!0}),F.rmSync(e,{force:!0}),gr("tar",["-cf",e,"-C",o,"."],{stdio:"pipe",maxBuffer:536870912})}finally{F.rmSync(o,{recursive:!0,force:!0})}}function dr(e){let t=process.arch==="arm64"?"arm64":process.arch==="x64"?"amd64":process.arch;if(!e)return{os:"linux",architecture:t};let[r,n]=e.split("/");return{os:r||"linux",architecture:n||t}}import{execFileSync as On}from"node:child_process";import{createHash as Vn}from"node:crypto";import ye from"node:fs";import mr from"node:https";import jn from"node:path";import J from"node:process";var re=(J.env.PANTRY_REGISTRY_URL||"https://registry.pantry.dev").replace(/\/$/,""),ur="registry-1.docker.io",Fn=[G.manifest,G.manifestList,G.dockerManifest,G.dockerManifestList].join(", ");function hr(e){let t=e,r,n=t.indexOf("@");if(n!==-1)r=t.slice(n+1),t=t.slice(0,n);let s=t.indexOf("/"),o="",a=t,i=!0;if(s!==-1){let d=t.slice(0,s);if(d==="localhost"||d.includes(".")||d.includes(":"))o=d,a=t.slice(s+1),i=!1}let c=a,l="latest",g=a.lastIndexOf(":");if(g!==-1&&!a.slice(g).includes("/"))c=a.slice(0,g),l=a.slice(g+1);if(i&&!c.includes("/"))c=`library/${c}`;return{registry:o,repository:c,tag:l,digest:r,implicitRegistry:i}}function Z(e,t={}){let{method:r="GET",headers:n={},body:s,maxRedirects:o=5}=t;return new Promise((a,i)=>{let c=new URL(e),l=mr.request({method:r,hostname:c.hostname,port:c.port||443,path:c.pathname+c.search,headers:{"User-Agent":"pantry-container",...n},timeout:60000},(g)=>{let d=g.statusCode||0;if(d>=300&&d<400&&g.headers.location&&o>0){let y=new URL(g.headers.location,e).toString();g.resume();let f={...n};if(new URL(y).hostname!==c.hostname)delete f.Authorization;return Z(y,{method:r,headers:f,body:s,maxRedirects:o-1}).then(a,i)}let p=[];g.on("data",(y)=>p.push(y)),g.on("end",()=>a({status:d,headers:g.headers,body:Buffer.concat(p)}))});if(l.on("error",i),l.on("timeout",()=>{l.destroy(),i(Error(`timeout: ${e}`))}),s)l.write(s);l.end()})}function yr(e,t,r={},n=5){return new Promise((s,o)=>{let a=new URL(e),i=mr.get({hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,headers:{"User-Agent":"pantry-container",...r},timeout:120000},(c)=>{let l=c.statusCode||0;if(l>=300&&l<400&&c.headers.location&&n>0){c.resume();let p=new URL(c.headers.location,e).toString(),y={...r};if(new URL(p).hostname!==a.hostname)delete y.Authorization;return yr(p,t,y,n-1).then(s,o)}if(l<200||l>=300)return c.resume(),o(Error(`HTTP ${l} downloading ${e}`));let g=ye.createWriteStream(t),d=0;c.on("data",(p)=>{d+=p.length}),c.pipe(g),g.on("finish",()=>g.close(()=>s(d))),g.on("error",o)});i.on("error",o),i.on("timeout",()=>{i.destroy(),o(Error(`timeout: ${e}`))})})}async function br(e,t,r){let n=e==="pantry"?re:`https://${e}`;if(n===re)return J.env.PANTRY_REGISTRY_TOKEN||J.env.PANTRY_TOKEN||void 0;let s=await Z(`${n}/v2/`);if(s.status!==401)return;let o=String(s.headers["www-authenticate"]||""),a=/realm="([^"]+)"/.exec(o)?.[1],i=/service="([^"]+)"/.exec(o)?.[1];if(!a)return;let c=new URL(a);if(i)c.searchParams.set("service",i);c.searchParams.set("scope",`repository:${t}:${r}`);let l={},g=J.env.DOCKER_USERNAME,d=J.env.DOCKER_PASSWORD||J.env.DOCKER_TOKEN;if(g&&d)l.Authorization=`Basic ${Buffer.from(`${g}:${d}`).toString("base64")}`;let p=await Z(c.toString(),{headers:l});if(p.status!==200)return;let y=JSON.parse(p.body.toString());return y.token||y.access_token}function Mn(e){if(!e.implicitRegistry&&e.registry){let t=re.includes(e.registry);return[{base:t?re:`https://${e.registry}`,hostKey:t?"pantry":e.registry}]}return[{base:re,hostKey:"pantry"},{base:`https://${ur}`,hostKey:ur}]}async function fr(e,t,r,n){let s={Accept:Fn};if(n)s.Authorization=`Bearer ${n}`;return Z(`${e}/v2/${t}/manifests/${r}`,{headers:s})}async function xt(e,t,r={}){let n=hr(e),s=r.platform?.split("/")[0]||"linux",o=r.platform?.split("/")[1]||(J.arch==="arm64"?"arm64":"amd64");ye.mkdirSync(t,{recursive:!0});let a;for(let{base:i,hostKey:c}of Mn(n))try{let l=await br(c,n.repository,"pull"),g=n.digest||n.tag,d=await fr(i,n.repository,g,l);if(d.status===404||d.status===401){a=Error(`${i}: HTTP ${d.status} for ${n.repository}:${g}`);continue}if(d.status!==200)throw Error(`${i}: manifest HTTP ${d.status}`);let p=JSON.parse(d.body.toString());if(p.manifests&&Array.isArray(p.manifests)){let k=p.manifests.find((b)=>b.platform?.os===s&&b.platform?.architecture===o)||p.manifests.find((b)=>b.platform?.architecture===o)||p.manifests[0];if(!k)throw Error("no matching platform in image index");if(d=await fr(i,n.repository,k.digest,l),d.status!==200)throw Error(`${i}: platform manifest HTTP ${d.status}`);p=JSON.parse(d.body.toString())}let y=te(d.body),f=l?{Authorization:`Bearer ${l}`}:{},h=p.config.digest,m=await Z(`${i}/v2/${n.repository}/blobs/${h}`,{headers:f});if(m.status!==200)throw Error(`${i}: config blob HTTP ${m.status}`);let u=JSON.parse(m.body.toString()),x=[],w=u.rootfs?.diff_ids||[];for(let k=0;k<p.layers.length;k++){let b=p.layers[k],P=jn.join(t,`${H(b.digest)}.tar.gz`);if(!r.quiet)console.error(` ↓ layer ${k+1}/${p.layers.length} ${b.digest.slice(0,19)}…`);let S=await yr(`${i}/v2/${n.repository}/blobs/${b.digest}`,P,f);x.push({digest:b.digest,diffId:w[k]||"",path:P,size:S})}return{manifest:p,manifestDigest:y,config:u,layers:x,source:i}}catch(l){a=l}throw Error(`Failed to pull ${e}: ${a?.message||"unknown error"}`)}async function _n(e){let t=(e.registry||re).replace(/\/$/,""),r=t===re?"pantry":new URL(t).hostname,n=await br(r,e.repository,"push,pull"),s=n?{Authorization:`Bearer ${n}`}:{},o=async(c,l)=>{if((await Z(`${t}/v2/${e.repository}/blobs/${c}`,{method:"HEAD",headers:s})).status===200)return;let d=await Z(`${t}/v2/${e.repository}/blobs/uploads/`,{method:"POST",headers:s});if(d.status!==202)throw Error(`push: upload start HTTP ${d.status} for ${e.repository}`);let p=String(d.headers.location||""),y=new URL(p,t);y.searchParams.set("digest",c);let f=await Z(y.toString(),{method:"PUT",headers:{...s,"Content-Type":"application/octet-stream"},body:l});if(f.status!==201)throw Error(`push: blob PUT HTTP ${f.status}`)};if(!e.quiet)console.error(" ↑ config");await o(e.configDigest,e.configBytes);for(let c=0;c<e.layers.length;c++){if(!e.quiet)console.error(` ↑ layer ${c+1}/${e.layers.length}`);await o(e.layers[c].digest,ye.readFileSync(e.layers[c].path))}let a=te(e.manifestBytes),i=await Z(`${t}/v2/${e.repository}/manifests/${e.tag}`,{method:"PUT",headers:{...s,"Content-Type":e.manifestMediaType},body:e.manifestBytes});if(i.status!==201&&i.status!==200)throw Error(`push: manifest PUT HTTP ${i.status}`);return{ref:`${t.replace(/^https?:\/\//,"")}/${e.repository}:${e.tag}`,digest:a}}function Bn(e,t){let r=Vn("sha256");return r.update(ye.readFileSync(e)),`sha256:${r.digest("hex")}`===t}function Pt(e,t){ye.mkdirSync(t,{recursive:!0}),On("tar",["xzf",e,"-C",t],{stdio:"pipe",maxBuffer:536870912})}function kr(){return{env:new Map,args:new Map,workdir:"/",labels:new Map,exposed:new Set,volumes:new Set,shell:["/bin/sh","-c"]}}function ne(e,t){let r=(n)=>t.args.get(n)??t.env.get(n)??"";return e.replace(/\$\{([A-Z0-9_]+)\}/gi,(n,s)=>r(s)).replace(/\$([A-Z0-9_]+)/gi,(n,s)=>r(s))}function _e(e){let t=[];if(/^\s*[A-Z0-9_]+=/i.test(e)){let r=/([A-Z0-9_]+)=("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\S+)/gi,n=r.exec(e);while(n){let s=n[2];if(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))s=s.slice(1,-1);t.push([n[1],s]),n=r.exec(e)}}else{let r=e.search(/\s/);if(r!==-1)t.push([e.slice(0,r),e.slice(r+1).trim()])}return t}function zn(e,t,r){let n=r.startsWith("/")?r:V.posix.join(t,r);return V.join(e,n)}function Un(e){if(e&&e!=="auto")return e;let t=Me.platform==="linux",r=typeof Me.getuid==="function"&&Me.getuid()===0;return t&&r?"chroot":"host"}function St(e,t){let r=j.lstatSync(e);if(r.isSymbolicLink()){let n=j.readlinkSync(e);j.mkdirSync(V.dirname(t),{recursive:!0}),j.rmSync(t,{force:!0}),j.symlinkSync(n,t)}else if(r.isDirectory())j.mkdirSync(t,{recursive:!0}),j.cpSync(e,t,{recursive:!0});else j.mkdirSync(V.dirname(t),{recursive:!0}),j.copyFileSync(e,t)}async function Wn(e){let t=V.resolve(e.context),r=e.dockerfile?V.resolve(e.dockerfile):V.join(t,"Dockerfile");if(!j.existsSync(r))throw Error(`Dockerfile not found: ${r}`);let n=gt(j.readFileSync(r,"utf8")),s=dt(n,e.target);if(s.length===0)throw Error("Dockerfile has no FROM instruction");let o=e.quiet??!1,a=(E)=>{if(!o)console.error(E)},i=Un(e.runMode),{os:c,architecture:l}=dr(e.platform),g=j.mkdtempSync(V.join(Ln.tmpdir(),"pantry-build-")),d=V.join(g,"blobs");j.mkdirSync(d,{recursive:!0});let p=new Map,y=ft(t,V.dirname(r)),f=pt(t,y),h=kr(),m="",u=new Map;for(let E of n.globalArgs){let[O,W]=_e(E.args)[0]??[];if(O)u.set(O,e.buildArgs?.[O]??W??"")}for(let E of s){let O=kr();for(let[ie,q]of u)O.args.set(ie,q);let W=V.join(g,`stage-${E.index}`);j.mkdirSync(W,{recursive:!0});let se=ne(E.baseImage,O);if(a(`[stage ${E.index}${E.name?` ${E.name}`:""}] FROM ${se}`),se==="scratch");else if(p.has(se))j.cpSync(p.get(se),W,{recursive:!0});else{let ie=await xt(se,d,{platform:e.platform,quiet:o});for(let me of ie.layers)Pt(me.path,W);let q=ie.config.config||{};for(let me of q.Env||[]){let Ue=me.indexOf("=");if(Ue!==-1)O.env.set(me.slice(0,Ue),me.slice(Ue+1))}if(q.WorkingDir)O.workdir=q.WorkingDir;if(q.Entrypoint)O.entrypoint=q.Entrypoint;if(q.Cmd)O.cmd=q.Cmd;if(q.User)O.user=q.User;a(` pulled base from ${ie.source}`)}for(let ie of E.instructions)qn(ie,O,W,{context:t,contextEntries:f,stageRootfs:p,runMode:i,matcher:y,log:a});if(E.name)p.set(E.name,W);h=O,m=W}a("packaging image layer...");let x=mt(m,d),w=new Date().toISOString(),k={architecture:l,os:c,created:w,config:{User:h.user,ExposedPorts:h.exposed.size?Object.fromEntries([...h.exposed].map((E)=>[E,{}])):void 0,Env:[...h.env].map(([E,O])=>`${E}=${O}`),Entrypoint:h.entrypoint,Cmd:h.cmd,Volumes:h.volumes.size?Object.fromEntries([...h.volumes].map((E)=>[E,{}])):void 0,WorkingDir:h.workdir!=="/"?h.workdir:void 0,Labels:h.labels.size?Object.fromEntries(h.labels):void 0,StopSignal:h.stopSignal},rootfs:{type:"layers",diff_ids:[x.diffId]},history:[{created:w,created_by:"pantry build",comment:"flattened image"}]},{bytes:b,digest:P}=ht(k),{bytes:S,digest:A,manifest:C}=yt(P,b.length,[x]),I=e.tags??[],N=e.outputDir?V.resolve(e.outputDir):V.join(t,".pantry","images");j.mkdirSync(N,{recursive:!0});let U=V.join(N,"oci-layout");j.mkdirSync(U,{recursive:!0}),bt(U,S,A,b,P,[x],I);let B=`${(I[0]||"image").replace(/[/:]/g,"_")}.tar`,M=V.join(N,B);kt(M,b,P,[x],I),a(`built ${A}`);try{j.rmSync(g,{recursive:!0,force:!0})}catch{}return{imageId:A,tags:I,archivePath:M,ociLayoutPath:U,config:k,layers:[x],configBytes:b,configDigest:P,manifestBytes:S,manifestMediaType:C.mediaType}}function qn(e,t,r,n){let s=ne(e.args,t);switch(e.instruction){case"ENV":{for(let[o,a]of _e(e.args))t.env.set(o,ne(a,t));break}case"ARG":{let[o,a]=_e(e.args)[0]??[];if(o&&!t.args.has(o))t.args.set(o,a?ne(a,t):"");break}case"LABEL":{for(let[o,a]of _e(e.args))t.labels.set(o,ne(a,t));break}case"WORKDIR":{let o=s.startsWith("/")?s:V.posix.join(t.workdir,s);t.workdir=o,j.mkdirSync(V.join(r,o),{recursive:!0});break}case"USER":{t.user=s.trim();break}case"EXPOSE":{for(let o of s.split(/\s+/).filter(Boolean))t.exposed.add(o.includes("/")?o:`${o}/tcp`);break}case"VOLUME":{let a=ee(e.args)??s.split(/\s+/).filter(Boolean);for(let i of a)t.volumes.add(i);break}case"STOPSIGNAL":{t.stopSignal=s.trim();break}case"SHELL":{let o=ee(e.args);if(o)t.shell=o;break}case"ENTRYPOINT":{let o=ee(e.args);t.entrypoint=o??[...t.shell,s];break}case"CMD":{let o=ee(e.args);t.cmd=o??[...t.shell,s];break}case"COPY":case"ADD":{Gn(e,t,r,n);break}case"RUN":{Kn(e,t,r,n);break}case"MAINTAINER":{t.labels.set("maintainer",s.trim());break}default:n.log(` (skipping unsupported instruction: ${e.instruction})`)}}function Gn(e,t,r,n){let o=ee(e.args)??ne(e.args,t).split(/\s+/).filter(Boolean);if(o.length<2)return;let a=o[o.length-1],i=o.slice(0,-1),c=e.flags.from,l=zn(r,t.workdir,a),g=a.endsWith("/")||i.length>1;if(c&&n.stageRootfs.has(c)){let d=n.stageRootfs.get(c);if(g)j.mkdirSync(l,{recursive:!0});for(let p of i){let y=V.join(d,p);if(!j.existsSync(y)){n.log(` COPY --from: source not found, skipping: ${p}`);continue}let f=g?V.join(l,V.basename(p)):l;St(y,f)}return}for(let d of i){let p=d.replace(/^\.\/?/,"").replace(/\/+$/,""),y=p===""?"":`${p}/`,f=n.contextEntries.find((m)=>!m.isDir&&m.relPath===p);if(f){let m=g?V.join(l,V.basename(p)):l;St(f.absPath,m);continue}let h=n.contextEntries.filter((m)=>m.relPath!==p&&(y===""?!0:m.relPath.startsWith(y)));if(h.length===0){n.log(` COPY: source not found or empty, skipping: ${d}`);continue}j.mkdirSync(l,{recursive:!0});for(let m of h){let u=y===""?m.relPath:m.relPath.slice(y.length),x=V.join(l,u);if(m.isDir)j.mkdirSync(x,{recursive:!0});else St(m.absPath,x)}}}function Kn(e,t,r,n){if(n.runMode==="skip"){n.log(` RUN (skipped): ${e.args}`);return}let s=ee(e.args),o={...Me.env,...Object.fromEntries(t.env)},a=V.join(r,t.workdir);if(j.mkdirSync(a,{recursive:!0}),n.runMode==="chroot"){let i=s?s:[...t.shell,`cd ${t.workdir} 2>/dev/null; ${ne(e.args,t)}`];n.log(` RUN ${s?s.join(" "):e.args}`),wt("chroot",[r,...i],{stdio:"inherit",env:o});return}if(n.log(` RUN (host) ${s?s.join(" "):e.args}`),s)wt(s[0],s.slice(1),{cwd:a,stdio:"inherit",env:o});else wt(t.shell[0],[...t.shell.slice(1),ne(e.args,t)],{cwd:a,stdio:"inherit",env:o})}import be from"node:fs";import xr from"node:path";var Hn=`# .freezer — pantry's home-themed .dockerignore.
289
+ # Anything matched here is kept OUT of the build context (and the image).
290
+ # Dependencies are reinstalled inside the image, so never ship them.
291
+ node_modules
292
+ **/node_modules
293
+ pantry
294
+ **/pantry
295
+
296
+ # VCS / CI / local noise
297
+ .git
298
+ .github
299
+ .cache
300
+ **/.cache
301
+ tmp
302
+ temp
303
+ **/*.log
304
+ .DS_Store
305
+
306
+ # Local-only env overlays — runtime config is provided at run time
307
+ .env.local
308
+ .env.*.local
309
+
310
+ # Build artifacts the image rebuilds or doesn't need
311
+ .pantry
312
+ coverage
313
+ .ts-cloud
314
+ `;function Pr(e){let t=e.baseImage??"oven/bun:1.3.14-alpine",r=e.workdir??"/app",n=e.installCommand??(e.buildCommand?"bun install --frozen-lockfile":"bun install --frozen-lockfile --production"),s=e.port??3000,o=e.startCommand??["bun","start"],a={APP_ENV:"production",NODE_ENV:"production",PORT:String(s),...e.env??{}},i=[];if(i.push("# Generated by `pantry container:generate` — native, depless container support."),i.push("# Build with: pantry build -t <name> . (no Docker daemon required)"),i.push(`FROM ${t} AS base`),i.push(`WORKDIR ${r}`),i.push(""),i.push("# Bring in the source (filtered by .freezer) and install deps in-image so"),i.push("# the build context / release stays small."),i.push("COPY --chown=bun:bun . ."),i.push(`RUN ${n}`),e.buildCommand){if(i.push(`RUN ${e.buildCommand}`),!e.installCommand)i.push("RUN bun install --frozen-lockfile --production")}i.push(""),i.push("# Source and runtime dependencies are owned by the non-root runtime user."),i.push("USER bun"),i.push("");for(let[c,l]of Object.entries(a))i.push(`ENV ${c}=${l}`);return i.push(""),i.push(`EXPOSE ${s}/tcp`),i.push(`CMD ${JSON.stringify(o)}`),i.push(""),i.join(`
315
+ `)}function Yn(e){be.mkdirSync(e.outDir,{recursive:!0});let t=xr.join(e.outDir,e.dockerfileName??"Dockerfile"),r=xr.join(e.outDir,".freezer"),n=!1,s=!1;if(e.force||!be.existsSync(t))be.writeFileSync(t,Pr(e)),n=!0;if(e.force||!be.existsSync(r))be.writeFileSync(r,Hn),s=!0;return{dockerfilePath:t,freezerPath:r,wroteDockerfile:n,wroteFreezer:s}}import{createPrivateKey as Jn,sign as Zn}from"node:crypto";import{existsSync as Xn,readFileSync as Qn}from"node:fs";var es="https://api.appstoreconnect.apple.com/v1";function $r(e){let t=[e.detail??e.title??e.code].filter((r)=>Boolean(r));for(let r of Object.values(e.meta?.associatedErrors??{}))for(let n of r)t.push(...$r(n));return t}function wr(e){return Buffer.from(JSON.stringify(e)).toString("base64url")}function ts(e){let t={keyId:e.keyId||process.env.APP_STORE_CONNECT_API_KEY_ID||"",issuerId:e.issuerId||process.env.APP_STORE_CONNECT_API_ISSUER_ID||"",keyPath:e.keyPath||process.env.APP_STORE_CONNECT_API_KEY_PATH||""};if(!t.keyId)throw Error("[pantry] APP_STORE_CONNECT_API_KEY_ID is required");if(!t.issuerId)throw Error("[pantry] APP_STORE_CONNECT_API_ISSUER_ID is required");if(!t.keyPath||!Xn(t.keyPath))throw Error("[pantry] APP_STORE_CONNECT_API_KEY_PATH must point to an existing .p8 file");return t}function rs(e,t=Math.floor(Date.now()/1000)){let r={alg:"ES256",kid:e.keyId,typ:"JWT"},n={iss:e.issuerId,iat:t,exp:t+120,aud:"appstoreconnect-v1"},s=`${wr(r)}.${wr(n)}`,o;try{o=Jn(Qn(e.keyPath,"utf8"))}catch(i){throw Error(`[pantry] App Store Connect API key could not be parsed: ${i instanceof Error?i.message:String(i)}`)}let a=Zn("sha256",Buffer.from(s),{key:o,dsaEncoding:"ieee-p1363"});return`${s}.${a.toString("base64url")}`}class Ar{auth;baseUrl;fetcher;now;constructor(e={}){this.auth=ts(e),this.baseUrl=(e.baseUrl??es).replace(/\/$/,""),this.fetcher=e.fetch??globalThis.fetch,this.now=e.now??(()=>Math.floor(Date.now()/1000))}async request(e,t={}){let r=/^https?:\/\//.test(e)?e:/^\/v\d+\//.test(e)?`${new URL(this.baseUrl).origin}${e}`:`${this.baseUrl}${e}`,n=await this.fetcher(r,{...t,headers:{Accept:"application/json",Authorization:`Bearer ${rs(this.auth,this.now())}`,...t.body?{"Content-Type":"application/json"}:{},...t.headers}});if(!n.ok){let s=await n.json().catch(()=>({})),o=[...new Set(s.errors?.flatMap($r)??[])].join("; ");throw Error(`[pantry] App Store Connect ${t.method??"GET"} ${e} failed (${n.status})${o?`: ${o}`:""}`)}if(n.status===204)return;return await n.json()}async upload(e,t){let r=await this.fetcher(e,t);if(!r.ok)throw Error(`[pantry] App Store Connect asset upload failed (${r.status})`)}async findBundleId(e){let t=new URLSearchParams({"filter[identifier]":e});return(await this.request(`/bundleIds?${t}`)).data.find((n)=>n.attributes.identifier===e)}async registerBundleId(e,t,r="MAC_OS"){return(await this.request("/bundleIds",{method:"POST",body:JSON.stringify({data:{type:"bundleIds",attributes:{identifier:e,name:t,platform:r}}})})).data}async ensureBundleId(e,t,r={}){let n=await this.findBundleId(e);if(n)return{bundleId:n,created:!1};if(r.checkOnly)return{created:!1};return{bundleId:await this.registerBundleId(e,t,r.platform),created:!0}}async listBundleIdCapabilities(e){return(await this.request(`/bundleIds/${e}/bundleIdCapabilities?limit=200`)).data}async enableBundleIdCapability(e,t,r=[]){return(await this.request("/bundleIdCapabilities",{method:"POST",body:JSON.stringify({data:{type:"bundleIdCapabilities",attributes:{capabilityType:t,...r.length?{settings:r}:{}},relationships:{bundleId:{data:{type:"bundleIds",id:e}}}}})})).data}async listCertificates(e){let t=new URLSearchParams({"filter[certificateType]":e,"fields[certificates]":"name,certificateType,displayName,serialNumber,platform,expirationDate,certificateContent,activated",limit:"200"});return(await this.request(`/certificates?${t}`)).data}async createCertificate(e,t){return(await this.request("/certificates",{method:"POST",body:JSON.stringify({data:{type:"certificates",attributes:{certificateType:e,csrContent:t}}})})).data}async listProfiles(e){let t=new URLSearchParams({"filter[bundleId]":e,"filter[profileType]":"MAC_APP_STORE","fields[profiles]":"name,platform,profileContent,uuid,createdDate,expirationDate,profileState,profileType,certificates",include:"certificates",limit:"200"});return(await this.request(`/profiles?${t}`)).data}async createMacAppStoreProfile(e,t,r){return(await this.request("/profiles",{method:"POST",body:JSON.stringify({data:{type:"profiles",attributes:{name:e,profileType:"MAC_APP_STORE"},relationships:{bundleId:{data:{type:"bundleIds",id:t}},certificates:{data:[{type:"certificates",id:r}]}}}})})).data}async findApp(e){let t=new URLSearchParams({"filter[bundleId]":e});return(await this.request(`/apps?${t}`)).data.find((n)=>n.attributes.bundleId===e)}async listAppStoreVersions(e){return(await this.request(`/apps/${e}/appStoreVersions?limit=200`)).data}async createAppStoreVersion(e,t,r){return(await this.request("/appStoreVersions",{method:"POST",body:JSON.stringify({data:{type:"appStoreVersions",attributes:{platform:t,versionString:r},relationships:{app:{data:{type:"apps",id:e}}}}})})).data}async updateAppStoreVersion(e,t){return(await this.request(`/appStoreVersions/${e}`,{method:"PATCH",body:JSON.stringify({data:{type:"appStoreVersions",id:e,attributes:{versionString:t}}})})).data}async listBuilds(e,t){let r=new URLSearchParams({"filter[app]":e,"filter[version]":t,include:"preReleaseVersion",limit:"20","fields[builds]":"version,uploadedDate,expired,processingState,preReleaseVersion","fields[preReleaseVersions]":"version,platform"}),n=await this.request(`/builds?${r}`),s=new Map((n.included??[]).filter((o)=>o.type==="preReleaseVersions").map((o)=>[o.id,o.attributes]));return n.data.flatMap((o)=>{let a=o.relationships?.preReleaseVersion?.data?.id,i=a?s.get(a):void 0;if(!i)return[];return[{id:o.id,buildNumber:o.attributes.version,version:i.version,platform:i.platform,processingState:o.attributes.processingState}]})}async attachBuild(e,t){await this.request(`/appStoreVersions/${e}/relationships/build`,{method:"PATCH",body:JSON.stringify({data:{type:"builds",id:t}})})}}var Sr=new Set(["PREPARE_FOR_SUBMISSION","DEVELOPER_REJECTED","REJECTED","METADATA_REJECTED","INVALID_BINARY"]),vr=new Set(["READY_FOR_DISTRIBUTION","READY_FOR_SALE","DEVELOPER_REMOVED_FROM_SALE","REMOVED_FROM_SALE"]);async function Po(e,t,r){let n=await e.listAppStoreVersions(t),s=[],o=new Map(r.map((a)=>[a.platform,a]));for(let{platform:a,version:i}of o.values()){let c=n.find((p)=>p.attributes.platform===a&&p.attributes.versionString===i);if(c){let p=c.attributes.appStoreState,y=Sr.has(p)?"ready":vr.has(p)?"published":"deferred";s.push({platform:a,version:i,created:!1,updated:!1,id:c.id,status:y,appStoreState:p,...y==="deferred"?{reason:`${a} version ${i} is already ${p}`}:{}});continue}let l=n.find((p)=>p.attributes.platform===a&&Sr.has(p.attributes.appStoreState));if(l){let p=await e.updateAppStoreVersion(l.id,i);l.attributes.versionString=i,s.push({platform:a,version:i,created:!1,updated:!0,id:p.id,status:"ready",appStoreState:p.attributes.appStoreState});continue}let g=n.find((p)=>p.attributes.platform===a&&!vr.has(p.attributes.appStoreState));if(g){s.push({platform:a,version:i,created:!1,updated:!1,id:g.id,status:"deferred",appStoreState:g.attributes.appStoreState,reason:`${a} version ${i} is queued behind ${g.attributes.versionString} (${g.attributes.appStoreState})`});continue}let d=await e.createAppStoreVersion(t,a,i);n.push(d),s.push({platform:a,version:i,created:!0,updated:!1,id:d.id,status:"ready",appStoreState:d.attributes.appStoreState})}return s}async function wo(e,t,r,n,s={}){let o=s.timeoutMs??1200000,a=s.pollIntervalMs??15000,i=s.now??Date.now,c=s.sleep??((g)=>new Promise((d)=>setTimeout(d,g))),l=i()+o;while(!0){let g=await e.listBuilds(t,n),d=[];for(let p of r){let y=g.find((f)=>f.platform===p.platform&&f.version===p.version);if(!y)continue;if(y.processingState==="FAILED"||y.processingState==="INVALID")throw Error(`[pantry] ${p.platform} build ${n} failed App Store Connect processing (${y.processingState})`);if(y.processingState!=="VALID")continue;d.push({platform:p.platform,versionId:p.id,buildId:y.id,buildNumber:n})}if(d.length===r.length){for(let p of d)await e.attachBuild(p.versionId,p.buildId);return d}if(i()>=l){let p=r.map((y)=>y.platform).join(", ");throw Error(`[pantry] timed out waiting for ${p} build ${n} to finish App Store Connect processing`)}await c(a)}}function ns(e,t=Date.now()){return e.filter((r)=>r.attributes.activated!==!1).filter((r)=>!r.attributes.expirationDate||Date.parse(r.attributes.expirationDate)>t).sort((r,n)=>Date.parse(n.attributes.expirationDate||"9999-12-31")-Date.parse(r.attributes.expirationDate||"9999-12-31"))[0]}function ss(e,t){let r=e.relationships?.[t]?.data;if(!r)return[];return(Array.isArray(r)?r:[r]).map((n)=>n.id)}async function So(e){let t=new Ar(e),r=e.checkOnly!==!1,n=[],s=await t.ensureBundleId(e.identifier,e.name,{checkOnly:r,platform:"MAC_OS"}),o=s.bundleId;if(!o)n.push(`Register macOS Bundle ID ${e.identifier}`);let a=[],i=[...new Set(e.capabilities??[])].filter(Boolean).sort(),c=o?await t.listBundleIdCapabilities(o.id):[];for(let u of i){if(c.find((w)=>w.attributes.capabilityType===u)){a.push({type:u,enabled:!0,created:!1});continue}if(n.push(`Enable ${u} for ${e.identifier}`),!r&&o)await t.enableBundleIdCapability(o.id,u),a.push({type:u,enabled:!0,created:!0});else a.push({type:u,enabled:!1,created:!1})}let l=[],g=[["MAC_APP_DISTRIBUTION",e.appCertificateCsr],["MAC_INSTALLER_DISTRIBUTION",e.installerCertificateCsr]];for(let[u,x]of g){let w=ns(await t.listCertificates(u));if(w){l.push({type:u,id:w.id,exists:!0,created:!1,expirationDate:w.attributes.expirationDate,certificateContent:w.attributes.certificateContent});continue}if(n.push(`Create ${u} certificate`),!r){if(!x)throw Error(`[pantry] ${u} certificate is missing; provide its CSR to apply the provisioning plan`);let k=await t.createCertificate(u,x);l.push({type:u,id:k.id,exists:!0,created:!0,expirationDate:k.attributes.expirationDate,certificateContent:k.attributes.certificateContent})}else l.push({type:u,exists:!1,created:!1})}let d=l.find((u)=>u.type==="MAC_APP_DISTRIBUTION"),p=e.profileName||`${e.name} Mac App Store`,y=o?await t.listProfiles(o.id):[],f=y.find((u)=>u.attributes.profileState==="ACTIVE"&&(!u.attributes.expirationDate||Date.parse(u.attributes.expirationDate)>Date.now())&&(!d?.id||ss(u,"certificates").includes(d.id))),h;if(f)h={id:f.id,name:f.attributes.name,exists:!0,created:!1,expirationDate:f.attributes.expirationDate,profileContent:f.attributes.profileContent};else if(n.push(`Create MAC_APP_STORE profile ${p}`),!r){if(!o)throw Error("[pantry] Bundle ID was not created");if(!d?.id)throw Error("[pantry] MAC_APP_DISTRIBUTION certificate is required to create the profile");let u=await t.createMacAppStoreProfile(y.some((x)=>x.attributes.name===p)?`${p} ${d.id.slice(0,8)}`:p,o.id,d.id);h={id:u.id,name:u.attributes.name,exists:!0,created:!0,expirationDate:u.attributes.expirationDate,profileContent:u.attributes.profileContent}}else h={name:p,exists:!1,created:!1};let m=await t.findApp(e.identifier);if(!m)n.push(`Create the ${e.identifier} app record in App Store Connect (manual Apple step)`);return{mode:r?"plan":"apply",bundleId:{identifier:e.identifier,id:o?.id,exists:Boolean(o),created:s.created},capabilities:a,certificates:l,profile:h,appRecord:{exists:Boolean(m),id:m?.id,...!m?{manualAction:"Create the app record in App Store Connect; Apple does not expose an app-creation API."}:{}},actions:n}}import{spawnSync as is}from"node:child_process";import{chmodSync as vt,existsSync as ze,mkdirSync as os,rmSync as as}from"node:fs";import{join as Rr,resolve as Be}from"node:path";function Le(e,t){let r=is("openssl",e,{env:t,encoding:"utf8",stdio:["ignore","pipe","pipe"]});if(r.error)throw Error(`[pantry] openssl could not be started: ${r.error.message}`);if(r.status!==0)throw Error(`[pantry] openssl ${e[0]} failed: ${r.stderr.trim()||`exit code ${r.status}`}`)}function Co(e){let t=Be(e.outputDirectory);return os(t,{recursive:!0}),[{type:"MAC_APP_DISTRIBUTION",fileName:"mac-app-distribution",label:"Mac App Distribution"},{type:"MAC_INSTALLER_DISTRIBUTION",fileName:"mac-installer-distribution",label:"Mac Installer Distribution"}].map((n)=>{let s=Rr(t,`${n.fileName}.key`),o=Rr(t,`${n.fileName}.csr`);if(ze(s)||ze(o))throw Error(`[pantry] refusing to replace existing Apple certificate material: ${s}`);return Le(["req","-new","-newkey","rsa:2048","-nodes","-sha256","-subj",`/CN=${`${e.commonName} ${n.label}`.replaceAll("/","-")}`,"-keyout",s,"-out",o]),vt(s,384),vt(o,384),{type:n.type,keyPath:s,csrPath:o}})}function Do(e){let t=Be(e.certificatePath),r=Be(e.privateKeyPath),n=Be(e.outputPath);if(!ze(t))throw Error(`[pantry] Apple certificate does not exist: ${t}`);if(!ze(r))throw Error(`[pantry] certificate private key does not exist: ${r}`);let s=`${t}.pantry.pem`;try{try{Le(["x509","-inform","DER","-in",t,"-out",s])}catch{Le(["x509","-inform","PEM","-in",t,"-out",s])}return Le(["pkcs12","-export","-inkey",r,"-in",s,"-name",e.name,"-out",n,"-passout","env:PANTRY_APPLE_P12_PASSWORD"],{...process.env,PANTRY_APPLE_P12_PASSWORD:e.password}),vt(n,384),n}finally{as(s,{force:!0})}}export{At as a,Dr as b,gs as c,ds as d,us as e,Rt as f,fs as g,ms as h,hs as i,ys as j,bs as k,ks as l,Ct as m,xs as n,Ps as o,ws as p,Ss as q,vs as r,Ds as s,Is as t,Es as u,Ns as v,Ts as w,Os as x,Vs as y,js as z,Fs as A,Ms as B,_s as C,Bs as D,we as E,Er as F,Ws as G,Vt as H,oe as I,Se as J,Ge as K,jt as L,qs as M,Br as N,Re as O,Ce as P,Ke as Q,Lr as R,zt as S,zr as T,Qe as U,Ut as V,Wr as W,Wt as X,qr as Y,Kr as Z,Ye as _,Hr as $,Qr as aa,Gt as ba,_t as ca,nn as da,Xs as ea,Qs as fa,Ne as ga,tt as ha,Jt as ia,sn as ja,on as ka,rr as la,gn as ma,dn as na,nt as oa,st as pa,it as qa,ot as ra,Sn as sa,mi as ta,hi as ua,yi as va,bi as wa,xi as xa,Pi as ya,wi as za,Si as Aa,pt as Ba,gt as Ca,ee as Da,dt as Ea,lr as Fa,pr as Ga,ft as Ha,G as Ia,te as Ja,H as Ka,mt as La,ht as Ma,yt as Na,bt as Oa,kt as Pa,re as Qa,hr as Ra,xt as Sa,_n as Ta,Bn as Ua,Pt as Va,Wn as Wa,Pr as Xa,Yn as Ya,rs as Za,Ar as _a,Po as $a,wo as ab,So as bb,Co as cb,Do as db};
@@ -1,2 +1,2 @@
1
- var j=[{domain:"php.net",aliases:["php"]},{domain:"ruby-lang.org",aliases:["ruby"]},{domain:"go.dev",aliases:["go"]},{domain:"nodejs.org",aliases:["node"]},{domain:"python.org",aliases:["python","py"]},{domain:"openjdk.org",aliases:["java","jdk"]},{domain:"kotlinlang.org",aliases:["kotlin"]},{domain:"scala-lang.org",aliases:["scala"]},{domain:"deno.land",aliases:["deno"]},{domain:"openssl.org",aliases:["openssl"]},{domain:"cmake.org",aliases:["cmake"]},{domain:"gradle.org",aliases:["gradle"]},{domain:"maven.apache.org",aliases:["maven","mvn"]},{domain:"curl.se",aliases:["curl"]},{domain:"git-scm.org",aliases:["git"]},{domain:"vim.org",aliases:["vim","vi"]},{domain:"gnupg.org",aliases:["gpg"]},{domain:"crates.io/ripgrep",aliases:["ripgrep","rg"]},{domain:"npmjs.com",aliases:["npm"]},{domain:"classic.yarnpkg.com",aliases:["yarn"]},{domain:"bun.com",aliases:["bun","bun.sh"]},{domain:"docker.com/cli",aliases:["docker"]},{domain:"terraform.io",aliases:["terraform"]},{domain:"kubernetes.io/kubectl",aliases:["kubectl"]},{domain:"helm.sh",aliases:["helm"]},{domain:"sqlite.org",aliases:["sqlite"]},{domain:"postgresql.org",aliases:["postgres","postgresql"]},{domain:"redis.io",aliases:["redis"]},{domain:"mysql.com",aliases:["mysql"]},{domain:"s3tools.org",aliases:["s3cmd"]},{domain:"aws.amazon.com/cdk",aliases:["cdk","aws/cdk"]},{domain:"info-zip.org/zip",aliases:["zip"]},{domain:"info-zip.org/unzip",aliases:["unzip"]}];function k(b){let c=j.find((h)=>h.domain===b);return c?c.aliases:[]}function q(b){return j.find((h)=>h.domain===b)?.replace===!0}function u(){let b={};for(let c of j)for(let h of c.aliases)b[h]=c.domain;return b}
2
- export{k as Wb,q as Xb,u as Yb};
1
+ var o=[{domain:"php.net",aliases:["php"]},{domain:"ruby-lang.org",aliases:["ruby"]},{domain:"go.dev",aliases:["go"]},{domain:"nodejs.org",aliases:["node"]},{domain:"python.org",aliases:["python","py"]},{domain:"openjdk.org",aliases:["java","jdk"]},{domain:"kotlinlang.org",aliases:["kotlin"]},{domain:"scala-lang.org",aliases:["scala"]},{domain:"deno.land",aliases:["deno"]},{domain:"openssl.org",aliases:["openssl"]},{domain:"cmake.org",aliases:["cmake"]},{domain:"gradle.org",aliases:["gradle"]},{domain:"maven.apache.org",aliases:["maven","mvn"]},{domain:"curl.se",aliases:["curl"]},{domain:"git-scm.org",aliases:["git"]},{domain:"vim.org",aliases:["vim","vi"]},{domain:"gnupg.org",aliases:["gpg"]},{domain:"crates.io/ripgrep",aliases:["ripgrep","rg"]},{domain:"npmjs.com",aliases:["npm"]},{domain:"classic.yarnpkg.com",aliases:["yarn"]},{domain:"bun.com",aliases:["bun","bun.sh"]},{domain:"docker.com/cli",aliases:["docker"]},{domain:"terraform.io",aliases:["terraform"]},{domain:"kubernetes.io/kubectl",aliases:["kubectl"]},{domain:"helm.sh",aliases:["helm"]},{domain:"sqlite.org",aliases:["sqlite"]},{domain:"postgresql.org",aliases:["postgres","postgresql"]},{domain:"redis.io",aliases:["redis"]},{domain:"mysql.com",aliases:["mysql"]},{domain:"s3tools.org",aliases:["s3cmd"]},{domain:"aws.amazon.com/cdk",aliases:["cdk","aws/cdk"]},{domain:"info-zip.org/zip",aliases:["zip"]},{domain:"info-zip.org/unzip",aliases:["unzip"]}];function e(a){let s=o.find((i)=>i.domain===a);return s?s.aliases:[]}function n(a){return o.find((i)=>i.domain===a)?.replace===!0}function r(){let a={};for(let s of o)for(let i of s.aliases)a[i]=s.domain;return a}
2
+ export{e as Wb,n as Xb,r as Yb};