@stacksjs/launchpad
Version:
Like Homebrew, but faster.
6 lines (5 loc) • 3.36 kB
JavaScript
// @bun
import{C as $,D as _,T as W}from"./chunk-nn4zj7f2.js";import"./chunk-7h9a332h.js";import"./chunk-e2w1vagk.js";function F(Q,X={}){let{limit:R=50,includePrograms:U=!0,caseSensitive:L=!1}=X;if(!Q||Q.trim().length===0)return[];let J=L?Q.trim():Q.trim().toLowerCase(),E=[],M=new Set,Y=(H,q)=>{let j=L?H:H.toLowerCase();if(j===J)return 100;if(j.startsWith(J))return 80;if(j.includes(J))return 60;let O={exact:50,alias:40,domain:30,program:20,description:10}[q];return Math.max(10,O)};for(let[H,q]of Object.entries($)){let j=L?H:H.toLowerCase();if(j.includes(J)){let O=W(H);if(O&&!M.has(O.domain)){M.add(O.domain);let G=j===J?"exact":"alias",N=Y(H,G);E.push({name:H,domain:O.domain,description:O.description,latestVersion:O.latestVersion,totalVersions:O.totalVersions,programs:O.programs,matchType:G,relevanceScore:N})}}}for(let[H,q]of Object.entries(_)){let j=H.replace(/_/g,"."),O=L?j:j.toLowerCase();if(O.includes(J)&&!M.has(j)){let G=W(j);if(G){M.add(j);let N=O===J?"exact":"domain",Z=Y(j,N);E.push({name:"name"in q?q.name:j,domain:G.domain,description:G.description,latestVersion:G.latestVersion,totalVersions:G.totalVersions,programs:G.programs,matchType:N,relevanceScore:Z})}}}for(let[H,q]of Object.entries(_)){let j=H.replace(/_/g,".");if(!M.has(j)&&"description"in q&&q.description){if((L?q.description:q.description.toLowerCase()).includes(J)){let G=W(j);if(G){M.add(j);let N=Y(q.description,"description");E.push({name:"name"in q?q.name:j,domain:G.domain,description:G.description,latestVersion:G.latestVersion,totalVersions:G.totalVersions,programs:G.programs,matchType:"description",relevanceScore:N})}}}}if(U)for(let[H,q]of Object.entries(_)){let j=H.replace(/_/g,".");if(!M.has(j)&&"programs"in q&&Array.isArray(q.programs)){let G=q.programs.find((N)=>{return(L?N:N.toLowerCase()).includes(J)});if(G){let N=W(j);if(N){M.add(j);let Z=Y(G,"program");E.push({name:"name"in q?q.name:j,domain:N.domain,description:N.description,latestVersion:N.latestVersion,totalVersions:N.totalVersions,programs:N.programs,matchType:"program",relevanceScore:Z})}}}}return E.sort((H,q)=>{if(H.relevanceScore!==q.relevanceScore)return q.relevanceScore-H.relevanceScore;return H.name.localeCompare(q.name)}),E.slice(0,R)}function D(Q=20){let X=["go","perl","php","aws","aws/cdk","aws/cli","cdk","protoc","xray","weed"],R=[];for(let U of X){let L=W(U);if(L)R.push({name:U,domain:L.domain,description:L.description,latestVersion:L.latestVersion,totalVersions:L.totalVersions,programs:L.programs,matchType:"exact",relevanceScore:100});if(R.length>=Q)break}return R}function V(Q,X={}){let{showPrograms:R=!0,showVersions:U=!0,compact:L=!1}=X;if(Q.length===0)return"No packages found matching your search.";let J=[];if(!L)J.push(`Found ${Q.length} package(s):
`);for(let E of Q)if(L){let M=E.description?` - ${E.description}`:"";J.push(`${E.name} (${E.domain})${M}`)}else{if(J.push(`\uD83D\uDCE6 ${E.name} (${E.domain})`),E.description)J.push(` ${E.description}`);let M=[];if(U&&E.latestVersion)M.push(`Latest: ${E.latestVersion}`);if(U&&E.totalVersions>0)M.push(`${E.totalVersions} versions available`);if(R&&E.programs&&E.programs.length>0)M.push(`Programs: ${E.programs.join(", ")}`);if(M.length>0)J.push(` ${M.join(" \u2022 ")}`);J.push("")}return J.join(`
`)}export{F as searchPackages,D as getPopularPackages,V as formatSearchResults};
export{F as p,D as q,V as r};