faf-cli 3.0.6 → 3.1.1
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.
- package/README.md +275 -25
- package/dist/big-orange/compare.d.ts.map +1 -1
- package/dist/big-orange/compare.js +14 -16
- package/dist/big-orange/compare.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +137 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto.d.ts.map +1 -1
- package/dist/commands/auto.js +69 -12
- package/dist/commands/auto.js.map +1 -1
- package/dist/commands/bi-sync.d.ts.map +1 -1
- package/dist/commands/bi-sync.js +10 -3
- package/dist/commands/bi-sync.js.map +1 -1
- package/dist/commands/drift.d.ts +16 -0
- package/dist/commands/drift.d.ts.map +1 -0
- package/dist/commands/drift.js +517 -0
- package/dist/commands/drift.js.map +1 -0
- package/dist/commands/git.d.ts +25 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +355 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +85 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/rename.d.ts +18 -0
- package/dist/commands/rename.d.ts.map +1 -0
- package/dist/commands/rename.js +211 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/taf-init.d.ts +14 -0
- package/dist/commands/taf-init.d.ts.map +1 -0
- package/dist/commands/taf-init.js +138 -0
- package/dist/commands/taf-init.js.map +1 -0
- package/dist/commands/taf-log.d.ts +30 -0
- package/dist/commands/taf-log.d.ts.map +1 -0
- package/dist/commands/taf-log.js +303 -0
- package/dist/commands/taf-log.js.map +1 -0
- package/dist/commands/taf-stats.d.ts +8 -0
- package/dist/commands/taf-stats.d.ts.map +1 -0
- package/dist/commands/taf-stats.js +133 -0
- package/dist/commands/taf-stats.js.map +1 -0
- package/dist/commands/taf-validate.d.ts +8 -0
- package/dist/commands/taf-validate.d.ts.map +1 -0
- package/dist/commands/taf-validate.js +108 -0
- package/dist/commands/taf-validate.js.map +1 -0
- package/dist/commands/taf.d.ts +13 -0
- package/dist/commands/taf.d.ts.map +1 -0
- package/dist/commands/taf.js +97 -0
- package/dist/commands/taf.js.map +1 -0
- package/dist/compiler/faf-compiler.d.ts.map +1 -1
- package/dist/compiler/faf-compiler.js +18 -0
- package/dist/compiler/faf-compiler.js.map +1 -1
- package/dist/generators/faf-generator-championship.d.ts.map +1 -1
- package/dist/generators/faf-generator-championship.js +1 -0
- package/dist/generators/faf-generator-championship.js.map +1 -1
- package/dist/github/github-extractor.d.ts +56 -0
- package/dist/github/github-extractor.d.ts.map +1 -0
- package/dist/github/github-extractor.js +328 -0
- package/dist/github/github-extractor.js.map +1 -0
- package/dist/github/popular-repos.d.ts +43 -0
- package/dist/github/popular-repos.d.ts.map +1 -0
- package/dist/github/popular-repos.js +205 -0
- package/dist/github/popular-repos.js.map +1 -0
- package/dist/github/repo-selector.d.ts +48 -0
- package/dist/github/repo-selector.d.ts.map +1 -0
- package/dist/github/repo-selector.js +277 -0
- package/dist/github/repo-selector.js.map +1 -0
- package/dist/taf/index.d.ts +17 -0
- package/dist/taf/index.d.ts.map +1 -0
- package/dist/taf/index.js +57 -0
- package/dist/taf/index.js.map +1 -0
- package/dist/taf/logger.d.ts +88 -0
- package/dist/taf/logger.d.ts.map +1 -0
- package/dist/taf/logger.js +137 -0
- package/dist/taf/logger.js.map +1 -0
- package/dist/taf/parser.d.ts +32 -0
- package/dist/taf/parser.d.ts.map +1 -0
- package/dist/taf/parser.js +161 -0
- package/dist/taf/parser.js.map +1 -0
- package/dist/taf/stats.d.ts +31 -0
- package/dist/taf/stats.d.ts.map +1 -0
- package/dist/taf/stats.js +182 -0
- package/dist/taf/stats.js.map +1 -0
- package/dist/taf/types.d.ts +77 -0
- package/dist/taf/types.d.ts.map +1 -0
- package/dist/taf/types.js +9 -0
- package/dist/taf/types.js.map +1 -0
- package/dist/taf/validator.d.ts +18 -0
- package/dist/taf/validator.d.ts.map +1 -0
- package/dist/taf/validator.js +148 -0
- package/dist/taf/validator.js.map +1 -0
- package/dist/utils/file-utils.d.ts +10 -0
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +196 -33
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/native-file-finder.js +1 -1
- package/dist/utils/native-file-finder.js.map +1 -1
- package/dist/utils/yaml-generator.d.ts +1 -0
- package/dist/utils/yaml-generator.d.ts.map +1 -1
- package/dist/utils/yaml-generator.js +1 -0
- package/dist/utils/yaml-generator.js.map +1 -1
- package/package.json +9 -4
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🏆 GitHub Repository Metadata Extractor
|
|
4
|
+
*
|
|
5
|
+
* Port of Chrome Extension GitHub extraction logic for CLI
|
|
6
|
+
* Fetches rich metadata without cloning the repository
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.parseGitHubUrl = parseGitHubUrl;
|
|
10
|
+
exports.fetchGitHubMetadata = fetchGitHubMetadata;
|
|
11
|
+
exports.fetchGitHubFileTree = fetchGitHubFileTree;
|
|
12
|
+
exports.detectStackFromMetadata = detectStackFromMetadata;
|
|
13
|
+
exports.calculateRepoQualityScore = calculateRepoQualityScore;
|
|
14
|
+
/**
|
|
15
|
+
* Parse GitHub URL to extract owner and repo
|
|
16
|
+
*/
|
|
17
|
+
function parseGitHubUrl(url) {
|
|
18
|
+
try {
|
|
19
|
+
// Handle different URL formats:
|
|
20
|
+
// https://github.com/owner/repo
|
|
21
|
+
// github.com/owner/repo
|
|
22
|
+
// owner/repo
|
|
23
|
+
// Strip query parameters and hash fragments first
|
|
24
|
+
let cleanedUrl = url.split('?')[0].split('#')[0];
|
|
25
|
+
// First, check if it's actually a GitHub URL (if it contains a domain)
|
|
26
|
+
if (cleanedUrl.includes('://') || cleanedUrl.includes('.com')) {
|
|
27
|
+
// Extract domain to validate it's GitHub
|
|
28
|
+
const domainMatch = cleanedUrl.match(/^(?:https?:\/\/)?(?:www\.)?([^\/]+)/);
|
|
29
|
+
if (domainMatch && domainMatch[1] !== 'github.com') {
|
|
30
|
+
return null; // Not a GitHub URL
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Clean the URL: remove protocol and GitHub domain (with or without www)
|
|
34
|
+
const cleanUrl = cleanedUrl
|
|
35
|
+
.replace(/^https?:\/\//, '')
|
|
36
|
+
.replace(/^www\./, '')
|
|
37
|
+
.replace(/^github\.com\//, '');
|
|
38
|
+
const parts = cleanUrl.split('/').filter(Boolean);
|
|
39
|
+
if (parts.length >= 2) {
|
|
40
|
+
const owner = parts[0];
|
|
41
|
+
let repo = parts[1];
|
|
42
|
+
// Strip .git extension if present
|
|
43
|
+
repo = repo.replace(/\.git$/, '');
|
|
44
|
+
// Strip /tree/, /blob/, /releases/, /issues/ etc
|
|
45
|
+
const validParts = ['tree', 'blob', 'releases', 'issues', 'pull', 'wiki'];
|
|
46
|
+
if (parts.length > 2 && validParts.includes(parts[2])) {
|
|
47
|
+
// URL like owner/repo/blob/main/file.ts
|
|
48
|
+
// We just want owner/repo
|
|
49
|
+
}
|
|
50
|
+
return { owner, repo };
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Fetch repository metadata from GitHub API
|
|
60
|
+
* (No auth required for public repos, 60 requests/hour limit)
|
|
61
|
+
*/
|
|
62
|
+
async function fetchGitHubMetadata(owner, repo, includeFiles = false) {
|
|
63
|
+
const apiUrl = `https://api.github.com/repos/${owner}/${repo}`;
|
|
64
|
+
try {
|
|
65
|
+
const response = await fetch(apiUrl, {
|
|
66
|
+
headers: {
|
|
67
|
+
'Accept': 'application/vnd.github.v3+json',
|
|
68
|
+
'User-Agent': 'faf-cli'
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
if (response.status === 404) {
|
|
73
|
+
throw new Error(`Repository ${owner}/${repo} not found`);
|
|
74
|
+
}
|
|
75
|
+
if (response.status === 403) {
|
|
76
|
+
throw new Error('GitHub API rate limit exceeded. Try again later or set GITHUB_TOKEN.');
|
|
77
|
+
}
|
|
78
|
+
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`);
|
|
79
|
+
}
|
|
80
|
+
const data = await response.json();
|
|
81
|
+
// Extract metadata
|
|
82
|
+
const metadata = {
|
|
83
|
+
owner,
|
|
84
|
+
repo,
|
|
85
|
+
url: `https://github.com/${owner}/${repo}`,
|
|
86
|
+
description: data.description || undefined,
|
|
87
|
+
topics: data.topics || undefined,
|
|
88
|
+
stars: formatNumber(data.stargazers_count),
|
|
89
|
+
forks: formatNumber(data.forks_count),
|
|
90
|
+
license: data.license?.spdx_id || data.license?.name || undefined,
|
|
91
|
+
lastUpdated: data.updated_at || data.pushed_at || undefined,
|
|
92
|
+
defaultBranch: data.default_branch || 'main',
|
|
93
|
+
openIssues: data.open_issues_count || 0,
|
|
94
|
+
watchers: data.watchers_count || 0,
|
|
95
|
+
};
|
|
96
|
+
// Fetch language breakdown
|
|
97
|
+
if (data.languages_url) {
|
|
98
|
+
const langResponse = await fetch(data.languages_url, {
|
|
99
|
+
headers: {
|
|
100
|
+
'Accept': 'application/vnd.github.v3+json',
|
|
101
|
+
'User-Agent': 'faf-cli'
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
if (langResponse.ok) {
|
|
105
|
+
const languages = await langResponse.json();
|
|
106
|
+
const total = Object.values(languages).reduce((sum, bytes) => sum + bytes, 0);
|
|
107
|
+
metadata.languages = Object.entries(languages)
|
|
108
|
+
.map(([lang, bytes]) => {
|
|
109
|
+
const percentage = ((bytes / total) * 100).toFixed(1);
|
|
110
|
+
return `${lang} (${percentage}%)`;
|
|
111
|
+
})
|
|
112
|
+
.sort((a, b) => {
|
|
113
|
+
const aPercent = parseFloat(a.match(/\((.+)%\)/)?.[1] || '0');
|
|
114
|
+
const bPercent = parseFloat(b.match(/\((.+)%\)/)?.[1] || '0');
|
|
115
|
+
return bPercent - aPercent;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Check for common files (if requested)
|
|
120
|
+
if (includeFiles) {
|
|
121
|
+
const fileChecks = await Promise.allSettled([
|
|
122
|
+
checkFileExists(owner, repo, 'README.md', metadata.defaultBranch),
|
|
123
|
+
checkFileExists(owner, repo, 'package.json', metadata.defaultBranch),
|
|
124
|
+
checkFileExists(owner, repo, 'tsconfig.json', metadata.defaultBranch),
|
|
125
|
+
checkFileExists(owner, repo, 'Dockerfile', metadata.defaultBranch),
|
|
126
|
+
]);
|
|
127
|
+
metadata.readme = fileChecks[0].status === 'fulfilled' && fileChecks[0].value;
|
|
128
|
+
metadata.hasPackageJson = fileChecks[1].status === 'fulfilled' && fileChecks[1].value;
|
|
129
|
+
metadata.hasTsConfig = fileChecks[2].status === 'fulfilled' && fileChecks[2].value;
|
|
130
|
+
metadata.hasDockerfile = fileChecks[3].status === 'fulfilled' && fileChecks[3].value;
|
|
131
|
+
}
|
|
132
|
+
return metadata;
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
if (error instanceof Error) {
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
throw new Error(`Failed to fetch GitHub metadata: ${String(error)}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Check if a file exists in the repository
|
|
143
|
+
*/
|
|
144
|
+
async function checkFileExists(owner, repo, path, branch = 'main') {
|
|
145
|
+
const url = `https://api.github.com/repos/${owner}/${repo}/contents/${path}?ref=${branch}`;
|
|
146
|
+
try {
|
|
147
|
+
const response = await fetch(url, {
|
|
148
|
+
headers: {
|
|
149
|
+
'Accept': 'application/vnd.github.v3+json',
|
|
150
|
+
'User-Agent': 'faf-cli'
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
return response.ok;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Fetch repository file tree
|
|
161
|
+
*/
|
|
162
|
+
async function fetchGitHubFileTree(owner, repo, branch = 'main', path = '') {
|
|
163
|
+
const url = `https://api.github.com/repos/${owner}/${repo}/contents/${path}?ref=${branch}`;
|
|
164
|
+
try {
|
|
165
|
+
const response = await fetch(url, {
|
|
166
|
+
headers: {
|
|
167
|
+
'Accept': 'application/vnd.github.v3+json',
|
|
168
|
+
'User-Agent': 'faf-cli'
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
if (!response.ok) {
|
|
172
|
+
throw new Error(`Failed to fetch file tree: ${response.status}`);
|
|
173
|
+
}
|
|
174
|
+
const data = await response.json();
|
|
175
|
+
// API returns an array for directories, object for files
|
|
176
|
+
const items = Array.isArray(data) ? data : [data];
|
|
177
|
+
return items.map((item) => ({
|
|
178
|
+
path: item.path,
|
|
179
|
+
type: item.type === 'dir' ? 'dir' : 'file',
|
|
180
|
+
size: item.size,
|
|
181
|
+
url: item.html_url,
|
|
182
|
+
}));
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.warn(`Failed to fetch file tree: ${error}`);
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Format large numbers with K/M suffix
|
|
191
|
+
*/
|
|
192
|
+
function formatNumber(num) {
|
|
193
|
+
if (num >= 1_000_000) {
|
|
194
|
+
return `${(num / 1_000_000).toFixed(1)}M`;
|
|
195
|
+
}
|
|
196
|
+
if (num >= 1_000) {
|
|
197
|
+
return `${(num / 1_000).toFixed(1)}K`;
|
|
198
|
+
}
|
|
199
|
+
return num.toString();
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Detect framework/stack from repository metadata
|
|
203
|
+
*/
|
|
204
|
+
function detectStackFromMetadata(metadata) {
|
|
205
|
+
const stacks = [];
|
|
206
|
+
// From topics
|
|
207
|
+
if (metadata.topics) {
|
|
208
|
+
const topicMap = {
|
|
209
|
+
'react': 'React',
|
|
210
|
+
'nextjs': 'Next.js',
|
|
211
|
+
'vue': 'Vue',
|
|
212
|
+
'svelte': 'Svelte',
|
|
213
|
+
'angular': 'Angular',
|
|
214
|
+
'typescript': 'TypeScript',
|
|
215
|
+
'javascript': 'JavaScript',
|
|
216
|
+
'nodejs': 'Node.js',
|
|
217
|
+
'docker': 'Docker',
|
|
218
|
+
'kubernetes': 'Kubernetes',
|
|
219
|
+
};
|
|
220
|
+
for (const topic of metadata.topics) {
|
|
221
|
+
const normalized = topic.toLowerCase();
|
|
222
|
+
if (topicMap[normalized]) {
|
|
223
|
+
stacks.push(topicMap[normalized]);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// From languages
|
|
228
|
+
if (metadata.languages) {
|
|
229
|
+
for (const lang of metadata.languages) {
|
|
230
|
+
const language = lang.split(' ')[0]; // Extract "TypeScript" from "TypeScript (85.3%)"
|
|
231
|
+
if (!stacks.includes(language)) {
|
|
232
|
+
stacks.push(language);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// From file presence
|
|
237
|
+
if (metadata.hasPackageJson) {
|
|
238
|
+
if (!stacks.includes('Node.js'))
|
|
239
|
+
stacks.push('Node.js');
|
|
240
|
+
}
|
|
241
|
+
if (metadata.hasTsConfig) {
|
|
242
|
+
if (!stacks.includes('TypeScript'))
|
|
243
|
+
stacks.push('TypeScript');
|
|
244
|
+
}
|
|
245
|
+
if (metadata.hasDockerfile) {
|
|
246
|
+
if (!stacks.includes('Docker'))
|
|
247
|
+
stacks.push('Docker');
|
|
248
|
+
}
|
|
249
|
+
return stacks;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Generate quality score based on metadata
|
|
253
|
+
*/
|
|
254
|
+
function calculateRepoQualityScore(metadata) {
|
|
255
|
+
let score = 0;
|
|
256
|
+
// Stars (max 30 points)
|
|
257
|
+
const stars = parseStars(metadata.stars);
|
|
258
|
+
if (stars >= 10000)
|
|
259
|
+
score += 30;
|
|
260
|
+
else if (stars >= 5000)
|
|
261
|
+
score += 25;
|
|
262
|
+
else if (stars >= 1000)
|
|
263
|
+
score += 20;
|
|
264
|
+
else if (stars >= 500)
|
|
265
|
+
score += 15;
|
|
266
|
+
else if (stars >= 100)
|
|
267
|
+
score += 10;
|
|
268
|
+
else if (stars >= 10)
|
|
269
|
+
score += 5;
|
|
270
|
+
// Has description (10 points)
|
|
271
|
+
if (metadata.description && metadata.description.length > 10)
|
|
272
|
+
score += 10;
|
|
273
|
+
// Has topics (10 points)
|
|
274
|
+
if (metadata.topics && metadata.topics.length > 0)
|
|
275
|
+
score += 10;
|
|
276
|
+
// Has license (10 points)
|
|
277
|
+
if (metadata.license)
|
|
278
|
+
score += 10;
|
|
279
|
+
// Has README (10 points)
|
|
280
|
+
if (metadata.readme)
|
|
281
|
+
score += 10;
|
|
282
|
+
// Recent activity (10 points)
|
|
283
|
+
if (metadata.lastUpdated) {
|
|
284
|
+
const lastUpdate = new Date(metadata.lastUpdated);
|
|
285
|
+
const now = new Date();
|
|
286
|
+
const daysSinceUpdate = (now.getTime() - lastUpdate.getTime()) / (1000 * 60 * 60 * 24);
|
|
287
|
+
if (daysSinceUpdate < 30)
|
|
288
|
+
score += 10;
|
|
289
|
+
else if (daysSinceUpdate < 90)
|
|
290
|
+
score += 7;
|
|
291
|
+
else if (daysSinceUpdate < 180)
|
|
292
|
+
score += 5;
|
|
293
|
+
else if (daysSinceUpdate < 365)
|
|
294
|
+
score += 3;
|
|
295
|
+
}
|
|
296
|
+
// Has package.json (5 points)
|
|
297
|
+
if (metadata.hasPackageJson)
|
|
298
|
+
score += 5;
|
|
299
|
+
// Has TypeScript (5 points)
|
|
300
|
+
if (metadata.hasTsConfig)
|
|
301
|
+
score += 5;
|
|
302
|
+
// Language diversity (10 points)
|
|
303
|
+
if (metadata.languages) {
|
|
304
|
+
if (metadata.languages.length >= 3)
|
|
305
|
+
score += 10;
|
|
306
|
+
else if (metadata.languages.length >= 2)
|
|
307
|
+
score += 5;
|
|
308
|
+
}
|
|
309
|
+
return Math.min(100, score);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Parse star count string to number
|
|
313
|
+
*/
|
|
314
|
+
function parseStars(stars) {
|
|
315
|
+
if (!stars)
|
|
316
|
+
return 0;
|
|
317
|
+
const match = stars.match(/^([\d.]+)([KM]?)$/);
|
|
318
|
+
if (!match)
|
|
319
|
+
return 0;
|
|
320
|
+
const num = parseFloat(match[1]);
|
|
321
|
+
const suffix = match[2];
|
|
322
|
+
if (suffix === 'K')
|
|
323
|
+
return num * 1000;
|
|
324
|
+
if (suffix === 'M')
|
|
325
|
+
return num * 1_000_000;
|
|
326
|
+
return num;
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=github-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-extractor.js","sourceRoot":"","sources":["../../src/github/github-extractor.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAgCH,wCAgDC;AAMD,kDA2FC;AA8BD,kDAmCC;AAkBD,0DAgDC;AAKD,8DAiDC;AA7UD;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,gCAAgC;QAChC,gCAAgC;QAChC,wBAAwB;QACxB,aAAa;QAEb,kDAAkD;QAClD,IAAI,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjD,uEAAuE;QACvE,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,yCAAyC;YACzC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC5E,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAC,CAAC,mBAAmB;YAClC,CAAC;QACH,CAAC;QAED,yEAAyE;QACzE,MAAM,QAAQ,GAAG,UAAU;aACxB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;aAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAEjC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEpB,kCAAkC;YAClC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAElC,iDAAiD;YACjD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,wCAAwC;gBACxC,0BAA0B;YAC5B,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,mBAAmB,CACvC,KAAa,EACb,IAAY,EACZ,eAAwB,KAAK;IAE7B,MAAM,MAAM,GAAG,gCAAgC,KAAK,IAAI,IAAI,EAAE,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACnC,OAAO,EAAE;gBACP,QAAQ,EAAE,gCAAgC;gBAC1C,YAAY,EAAE,SAAS;aACxB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,YAAY,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,mBAAmB;QACnB,MAAM,QAAQ,GAAmB;YAC/B,KAAK;YACL,IAAI;YACJ,GAAG,EAAE,sBAAsB,KAAK,IAAI,IAAI,EAAE;YAC1C,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;YAChC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC1C,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,SAAS;YACjE,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS;YAC3D,aAAa,EAAE,IAAI,CAAC,cAAc,IAAI,MAAM;YAC5C,UAAU,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC;SACnC,CAAC;QAEF,2BAA2B;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE;gBACnD,OAAO,EAAE;oBACP,QAAQ,EAAE,gCAAgC;oBAC1C,YAAY,EAAE,SAAS;iBACxB;aACF,CAAC,CAAC;YAEH,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;gBACpB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;gBAE3F,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;qBAC3C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;oBACrB,MAAM,UAAU,GAAG,CAAC,CAAC,KAAe,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChE,OAAO,GAAG,IAAI,KAAK,UAAU,IAAI,CAAC;gBACpC,CAAC,CAAC;qBACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACb,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oBAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oBAC9D,OAAO,QAAQ,GAAG,QAAQ,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;gBAC1C,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;gBACjE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,aAAa,CAAC;gBACpE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC;gBACrE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC;aACnE,CAAC,CAAC;YAEH,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC9E,QAAQ,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACtF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACnF,QAAQ,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACvF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,KAAa,EACb,IAAY,EACZ,IAAY,EACZ,SAAiB,MAAM;IAEvB,MAAM,GAAG,GAAG,gCAAgC,KAAK,IAAI,IAAI,aAAa,IAAI,QAAQ,MAAM,EAAE,CAAC;IAE3F,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE;gBACP,QAAQ,EAAE,gCAAgC;gBAC1C,YAAY,EAAE,SAAS;aACxB;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,KAAa,EACb,IAAY,EACZ,SAAiB,MAAM,EACvB,OAAe,EAAE;IAEjB,MAAM,GAAG,GAAG,gCAAgC,KAAK,IAAI,IAAI,aAAa,IAAI,QAAQ,MAAM,EAAE,CAAC;IAE3F,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE;gBACP,QAAQ,EAAE,gCAAgC;gBAC1C,YAAY,EAAE,SAAS;aACxB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,yDAAyD;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAElD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YAC1C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,QAAQ;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,CAAC;IACD,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,QAAwB;IAC9D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,cAAc;IACd,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,QAAQ,GAA2B;YACvC,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,YAAY;YAC1B,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD;YACtF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,QAAwB;IAChE,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,wBAAwB;IACxB,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,KAAK,IAAI,KAAK;QAAE,KAAK,IAAI,EAAE,CAAC;SAC3B,IAAI,KAAK,IAAI,IAAI;QAAE,KAAK,IAAI,EAAE,CAAC;SAC/B,IAAI,KAAK,IAAI,IAAI;QAAE,KAAK,IAAI,EAAE,CAAC;SAC/B,IAAI,KAAK,IAAI,GAAG;QAAE,KAAK,IAAI,EAAE,CAAC;SAC9B,IAAI,KAAK,IAAI,GAAG;QAAE,KAAK,IAAI,EAAE,CAAC;SAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,IAAI,CAAC,CAAC;IAEjC,8BAA8B;IAC9B,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE;QAAE,KAAK,IAAI,EAAE,CAAC;IAE1E,yBAAyB;IACzB,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;IAE/D,0BAA0B;IAC1B,IAAI,QAAQ,CAAC,OAAO;QAAE,KAAK,IAAI,EAAE,CAAC;IAElC,yBAAyB;IACzB,IAAI,QAAQ,CAAC,MAAM;QAAE,KAAK,IAAI,EAAE,CAAC;IAEjC,8BAA8B;IAC9B,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAEvF,IAAI,eAAe,GAAG,EAAE;YAAE,KAAK,IAAI,EAAE,CAAC;aACjC,IAAI,eAAe,GAAG,EAAE;YAAE,KAAK,IAAI,CAAC,CAAC;aACrC,IAAI,eAAe,GAAG,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;aACtC,IAAI,eAAe,GAAG,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,8BAA8B;IAC9B,IAAI,QAAQ,CAAC,cAAc;QAAE,KAAK,IAAI,CAAC,CAAC;IAExC,4BAA4B;IAC5B,IAAI,QAAQ,CAAC,WAAW;QAAE,KAAK,IAAI,CAAC,CAAC;IAErC,iCAAiC;IACjC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;YAAE,KAAK,IAAI,EAAE,CAAC;aAC3C,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IAErB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IAErB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,GAAG,GAAG,IAAI,CAAC;IACtC,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,GAAG,GAAG,SAAS,CAAC;IAC3C,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🏆 Popular GitHub Repositories Registry
|
|
3
|
+
*
|
|
4
|
+
* Top 100 most-used repositories for instant shorthand resolution
|
|
5
|
+
* Organized by category for maintainability
|
|
6
|
+
*/
|
|
7
|
+
export interface RepoMapping {
|
|
8
|
+
shorthand: string;
|
|
9
|
+
owner: string;
|
|
10
|
+
repo: string;
|
|
11
|
+
category: string;
|
|
12
|
+
weeklyDownloads?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Popular repository mappings
|
|
16
|
+
* Format: shorthand → { owner, repo, category }
|
|
17
|
+
*/
|
|
18
|
+
export declare const POPULAR_REPOS: Record<string, RepoMapping>;
|
|
19
|
+
/**
|
|
20
|
+
* Get repo info from shorthand
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveShorthand(query: string): RepoMapping | null;
|
|
23
|
+
/**
|
|
24
|
+
* Search for repos matching query (fuzzy)
|
|
25
|
+
*/
|
|
26
|
+
export declare function searchRepos(query: string, limit?: number): RepoMapping[];
|
|
27
|
+
/**
|
|
28
|
+
* Get all repos in a category
|
|
29
|
+
*/
|
|
30
|
+
export declare function getReposByCategory(category: string): RepoMapping[];
|
|
31
|
+
/**
|
|
32
|
+
* Get all unique categories
|
|
33
|
+
*/
|
|
34
|
+
export declare function getCategories(): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Calculate Levenshtein distance for fuzzy matching
|
|
37
|
+
*/
|
|
38
|
+
export declare function levenshteinDistance(a: string, b: string): number;
|
|
39
|
+
/**
|
|
40
|
+
* Find closest match for typo correction
|
|
41
|
+
*/
|
|
42
|
+
export declare function findClosestMatch(query: string, maxDistance?: number): RepoMapping | null;
|
|
43
|
+
//# sourceMappingURL=popular-repos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popular-repos.d.ts","sourceRoot":"","sources":["../../src/github/popular-repos.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA4FrD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAGlE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE,CA0C5E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAIlE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAMxC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA0BhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,GAAG,WAAW,GAAG,IAAI,CAe3F"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🏆 Popular GitHub Repositories Registry
|
|
4
|
+
*
|
|
5
|
+
* Top 100 most-used repositories for instant shorthand resolution
|
|
6
|
+
* Organized by category for maintainability
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.POPULAR_REPOS = void 0;
|
|
10
|
+
exports.resolveShorthand = resolveShorthand;
|
|
11
|
+
exports.searchRepos = searchRepos;
|
|
12
|
+
exports.getReposByCategory = getReposByCategory;
|
|
13
|
+
exports.getCategories = getCategories;
|
|
14
|
+
exports.levenshteinDistance = levenshteinDistance;
|
|
15
|
+
exports.findClosestMatch = findClosestMatch;
|
|
16
|
+
/**
|
|
17
|
+
* Popular repository mappings
|
|
18
|
+
* Format: shorthand → { owner, repo, category }
|
|
19
|
+
*/
|
|
20
|
+
exports.POPULAR_REPOS = {
|
|
21
|
+
// ===== FRAMEWORKS (TROPHY TIER 🏆) =====
|
|
22
|
+
'react': { shorthand: 'react', owner: 'facebook', repo: 'react', category: 'framework', weeklyDownloads: 20_000_000 },
|
|
23
|
+
'next': { shorthand: 'next', owner: 'vercel', repo: 'next.js', category: 'framework', weeklyDownloads: 5_000_000 },
|
|
24
|
+
'nextjs': { shorthand: 'nextjs', owner: 'vercel', repo: 'next.js', category: 'framework', weeklyDownloads: 5_000_000 },
|
|
25
|
+
'vue': { shorthand: 'vue', owner: 'vuejs', repo: 'core', category: 'framework', weeklyDownloads: 4_500_000 },
|
|
26
|
+
'svelte': { shorthand: 'svelte', owner: 'sveltejs', repo: 'svelte', category: 'framework', weeklyDownloads: 400_000 },
|
|
27
|
+
'angular': { shorthand: 'angular', owner: 'angular', repo: 'angular', category: 'framework', weeklyDownloads: 2_500_000 },
|
|
28
|
+
// ===== LANGUAGES & RUNTIMES =====
|
|
29
|
+
'typescript': { shorthand: 'typescript', owner: 'microsoft', repo: 'TypeScript', category: 'language', weeklyDownloads: 40_000_000 },
|
|
30
|
+
'node': { shorthand: 'node', owner: 'nodejs', repo: 'node', category: 'runtime', weeklyDownloads: 50_000_000 },
|
|
31
|
+
'deno': { shorthand: 'deno', owner: 'denoland', repo: 'deno', category: 'runtime', weeklyDownloads: 100_000 },
|
|
32
|
+
'bun': { shorthand: 'bun', owner: 'oven-sh', repo: 'bun', category: 'runtime', weeklyDownloads: 500_000 },
|
|
33
|
+
// ===== BUILD TOOLS (GOLD TIER 🥇) =====
|
|
34
|
+
'vite': { shorthand: 'vite', owner: 'vitejs', repo: 'vite', category: 'build-tool', weeklyDownloads: 9_000_000 },
|
|
35
|
+
'webpack': { shorthand: 'webpack', owner: 'webpack', repo: 'webpack', category: 'build-tool', weeklyDownloads: 20_000_000 },
|
|
36
|
+
'rollup': { shorthand: 'rollup', owner: 'rollup', repo: 'rollup', category: 'build-tool', weeklyDownloads: 8_000_000 },
|
|
37
|
+
'esbuild': { shorthand: 'esbuild', owner: 'evanw', repo: 'esbuild', category: 'build-tool', weeklyDownloads: 15_000_000 },
|
|
38
|
+
'turbo': { shorthand: 'turbo', owner: 'vercel', repo: 'turbo', category: 'build-tool', weeklyDownloads: 1_000_000 },
|
|
39
|
+
'turborepo': { shorthand: 'turborepo', owner: 'vercel', repo: 'turbo', category: 'build-tool', weeklyDownloads: 1_000_000 },
|
|
40
|
+
// ===== STYLING =====
|
|
41
|
+
'tailwind': { shorthand: 'tailwind', owner: 'tailwindlabs', repo: 'tailwindcss', category: 'styling', weeklyDownloads: 7_000_000 },
|
|
42
|
+
'tailwindcss': { shorthand: 'tailwindcss', owner: 'tailwindlabs', repo: 'tailwindcss', category: 'styling', weeklyDownloads: 7_000_000 },
|
|
43
|
+
'sass': { shorthand: 'sass', owner: 'sass', repo: 'sass', category: 'styling', weeklyDownloads: 10_000_000 },
|
|
44
|
+
'postcss': { shorthand: 'postcss', owner: 'postcss', repo: 'postcss', category: 'styling', weeklyDownloads: 20_000_000 },
|
|
45
|
+
// ===== STATE MANAGEMENT =====
|
|
46
|
+
'redux': { shorthand: 'redux', owner: 'reduxjs', repo: 'redux', category: 'state', weeklyDownloads: 6_000_000 },
|
|
47
|
+
'zustand': { shorthand: 'zustand', owner: 'pmndrs', repo: 'zustand', category: 'state', weeklyDownloads: 1_500_000 },
|
|
48
|
+
'mobx': { shorthand: 'mobx', owner: 'mobxjs', repo: 'mobx', category: 'state', weeklyDownloads: 1_000_000 },
|
|
49
|
+
'jotai': { shorthand: 'jotai', owner: 'pmndrs', repo: 'jotai', category: 'state', weeklyDownloads: 500_000 },
|
|
50
|
+
// ===== VALIDATION =====
|
|
51
|
+
'zod': { shorthand: 'zod', owner: 'colinhacks', repo: 'zod', category: 'validation', weeklyDownloads: 5_000_000 },
|
|
52
|
+
'yup': { shorthand: 'yup', owner: 'jquense', repo: 'yup', category: 'validation', weeklyDownloads: 3_000_000 },
|
|
53
|
+
// ===== TESTING =====
|
|
54
|
+
'jest': { shorthand: 'jest', owner: 'jestjs', repo: 'jest', category: 'testing', weeklyDownloads: 20_000_000 },
|
|
55
|
+
'vitest': { shorthand: 'vitest', owner: 'vitest-dev', repo: 'vitest', category: 'testing', weeklyDownloads: 3_000_000 },
|
|
56
|
+
'playwright': { shorthand: 'playwright', owner: 'microsoft', repo: 'playwright', category: 'testing', weeklyDownloads: 3_000_000 },
|
|
57
|
+
'cypress': { shorthand: 'cypress', owner: 'cypress-io', repo: 'cypress', category: 'testing', weeklyDownloads: 4_000_000 },
|
|
58
|
+
// ===== DATABASES & ORM =====
|
|
59
|
+
'prisma': { shorthand: 'prisma', owner: 'prisma', repo: 'prisma', category: 'database', weeklyDownloads: 2_000_000 },
|
|
60
|
+
'drizzle': { shorthand: 'drizzle', owner: 'drizzle-team', repo: 'drizzle-orm', category: 'database', weeklyDownloads: 500_000 },
|
|
61
|
+
'mongoose': { shorthand: 'mongoose', owner: 'Automattic', repo: 'mongoose', category: 'database', weeklyDownloads: 3_000_000 },
|
|
62
|
+
'typeorm': { shorthand: 'typeorm', owner: 'typeorm', repo: 'typeorm', category: 'database', weeklyDownloads: 2_000_000 },
|
|
63
|
+
// ===== AUTHENTICATION =====
|
|
64
|
+
'nextauth': { shorthand: 'nextauth', owner: 'nextauthjs', repo: 'next-auth', category: 'auth', weeklyDownloads: 1_000_000 },
|
|
65
|
+
'lucia': { shorthand: 'lucia', owner: 'lucia-auth', repo: 'lucia', category: 'auth', weeklyDownloads: 100_000 },
|
|
66
|
+
'passport': { shorthand: 'passport', owner: 'jaredhanson', repo: 'passport', category: 'auth', weeklyDownloads: 2_000_000 },
|
|
67
|
+
// ===== API & HTTP =====
|
|
68
|
+
'axios': { shorthand: 'axios', owner: 'axios', repo: 'axios', category: 'http', weeklyDownloads: 30_000_000 },
|
|
69
|
+
'fetch': { shorthand: 'fetch', owner: 'node-fetch', repo: 'node-fetch', category: 'http', weeklyDownloads: 25_000_000 },
|
|
70
|
+
'graphql': { shorthand: 'graphql', owner: 'graphql', repo: 'graphql-js', category: 'api', weeklyDownloads: 8_000_000 },
|
|
71
|
+
'apollo': { shorthand: 'apollo', owner: 'apollographql', repo: 'apollo-client', category: 'api', weeklyDownloads: 1_500_000 },
|
|
72
|
+
'trpc': { shorthand: 'trpc', owner: 'trpc', repo: 'trpc', category: 'api', weeklyDownloads: 800_000 },
|
|
73
|
+
// ===== UI LIBRARIES =====
|
|
74
|
+
'shadcn': { shorthand: 'shadcn', owner: 'shadcn-ui', repo: 'ui', category: 'ui', weeklyDownloads: 500_000 },
|
|
75
|
+
'radix': { shorthand: 'radix', owner: 'radix-ui', repo: 'primitives', category: 'ui', weeklyDownloads: 2_000_000 },
|
|
76
|
+
'mui': { shorthand: 'mui', owner: 'mui', repo: 'material-ui', category: 'ui', weeklyDownloads: 3_000_000 },
|
|
77
|
+
'chakra': { shorthand: 'chakra', owner: 'chakra-ui', repo: 'chakra-ui', category: 'ui', weeklyDownloads: 1_000_000 },
|
|
78
|
+
// ===== UTILITIES =====
|
|
79
|
+
'lodash': { shorthand: 'lodash', owner: 'lodash', repo: 'lodash', category: 'utility', weeklyDownloads: 40_000_000 },
|
|
80
|
+
'dayjs': { shorthand: 'dayjs', owner: 'iamkun', repo: 'dayjs', category: 'utility', weeklyDownloads: 10_000_000 },
|
|
81
|
+
'date-fns': { shorthand: 'date-fns', owner: 'date-fns', repo: 'date-fns', category: 'utility', weeklyDownloads: 12_000_000 },
|
|
82
|
+
// ===== LINTING & FORMATTING =====
|
|
83
|
+
'eslint': { shorthand: 'eslint', owner: 'eslint', repo: 'eslint', category: 'linting', weeklyDownloads: 25_000_000 },
|
|
84
|
+
'prettier': { shorthand: 'prettier', owner: 'prettier', repo: 'prettier', category: 'formatting', weeklyDownloads: 20_000_000 },
|
|
85
|
+
'biome': { shorthand: 'biome', owner: 'biomejs', repo: 'biome', category: 'linting', weeklyDownloads: 200_000 },
|
|
86
|
+
// ===== DEPLOYMENT & INFRASTRUCTURE =====
|
|
87
|
+
'docker': { shorthand: 'docker', owner: 'docker', repo: 'docker', category: 'infrastructure', weeklyDownloads: 10_000_000 },
|
|
88
|
+
'kubernetes': { shorthand: 'kubernetes', owner: 'kubernetes', repo: 'kubernetes', category: 'infrastructure', weeklyDownloads: 5_000_000 },
|
|
89
|
+
'k8s': { shorthand: 'k8s', owner: 'kubernetes', repo: 'kubernetes', category: 'infrastructure', weeklyDownloads: 5_000_000 },
|
|
90
|
+
// ===== FAF ECOSYSTEM =====
|
|
91
|
+
'faf': { shorthand: 'faf', owner: 'Wolfe-Jam', repo: 'faf-cli', category: 'faf', weeklyDownloads: 5_000 },
|
|
92
|
+
'faf-cli': { shorthand: 'faf-cli', owner: 'Wolfe-Jam', repo: 'faf-cli', category: 'faf', weeklyDownloads: 5_000 },
|
|
93
|
+
'faf-mcp': { shorthand: 'faf-mcp', owner: 'Wolfe-Jam', repo: 'claude-faf-mcp', category: 'faf', weeklyDownloads: 3_600 },
|
|
94
|
+
'claude-faf-mcp': { shorthand: 'claude-faf-mcp', owner: 'Wolfe-Jam', repo: 'claude-faf-mcp', category: 'faf', weeklyDownloads: 3_600 },
|
|
95
|
+
// ===== WORKFLOW AUTOMATION (TURBO) =====
|
|
96
|
+
'n8n': { shorthand: 'n8n', owner: 'n8n-io', repo: 'n8n', category: 'automation', weeklyDownloads: 401_000 },
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Get repo info from shorthand
|
|
100
|
+
*/
|
|
101
|
+
function resolveShorthand(query) {
|
|
102
|
+
const normalized = query.toLowerCase().trim();
|
|
103
|
+
return exports.POPULAR_REPOS[normalized] || null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Search for repos matching query (fuzzy)
|
|
107
|
+
*/
|
|
108
|
+
function searchRepos(query, limit = 10) {
|
|
109
|
+
const normalized = query.toLowerCase().trim();
|
|
110
|
+
const results = [];
|
|
111
|
+
for (const [key, repo] of Object.entries(exports.POPULAR_REPOS)) {
|
|
112
|
+
let score = 0;
|
|
113
|
+
// Exact match (highest priority)
|
|
114
|
+
if (key === normalized) {
|
|
115
|
+
score = 1000;
|
|
116
|
+
}
|
|
117
|
+
// Starts with query
|
|
118
|
+
else if (key.startsWith(normalized)) {
|
|
119
|
+
score = 500;
|
|
120
|
+
}
|
|
121
|
+
// Contains query
|
|
122
|
+
else if (key.includes(normalized)) {
|
|
123
|
+
score = 250;
|
|
124
|
+
}
|
|
125
|
+
// Repo name matches
|
|
126
|
+
else if (repo.repo.toLowerCase().includes(normalized)) {
|
|
127
|
+
score = 100;
|
|
128
|
+
}
|
|
129
|
+
// Owner matches
|
|
130
|
+
else if (repo.owner.toLowerCase().includes(normalized)) {
|
|
131
|
+
score = 50;
|
|
132
|
+
}
|
|
133
|
+
if (score > 0) {
|
|
134
|
+
// Boost by popularity (weekly downloads)
|
|
135
|
+
if (repo.weeklyDownloads) {
|
|
136
|
+
score += Math.log10(repo.weeklyDownloads);
|
|
137
|
+
}
|
|
138
|
+
results.push({ repo, score });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Sort by score descending
|
|
142
|
+
results.sort((a, b) => b.score - a.score);
|
|
143
|
+
return results.slice(0, limit).map(r => r.repo);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get all repos in a category
|
|
147
|
+
*/
|
|
148
|
+
function getReposByCategory(category) {
|
|
149
|
+
return Object.values(exports.POPULAR_REPOS)
|
|
150
|
+
.filter(repo => repo.category === category)
|
|
151
|
+
.sort((a, b) => (b.weeklyDownloads || 0) - (a.weeklyDownloads || 0));
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get all unique categories
|
|
155
|
+
*/
|
|
156
|
+
function getCategories() {
|
|
157
|
+
const categories = new Set();
|
|
158
|
+
for (const repo of Object.values(exports.POPULAR_REPOS)) {
|
|
159
|
+
categories.add(repo.category);
|
|
160
|
+
}
|
|
161
|
+
return Array.from(categories).sort();
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Calculate Levenshtein distance for fuzzy matching
|
|
165
|
+
*/
|
|
166
|
+
function levenshteinDistance(a, b) {
|
|
167
|
+
const matrix = [];
|
|
168
|
+
for (let i = 0; i <= b.length; i++) {
|
|
169
|
+
matrix[i] = [i];
|
|
170
|
+
}
|
|
171
|
+
for (let j = 0; j <= a.length; j++) {
|
|
172
|
+
matrix[0][j] = j;
|
|
173
|
+
}
|
|
174
|
+
for (let i = 1; i <= b.length; i++) {
|
|
175
|
+
for (let j = 1; j <= a.length; j++) {
|
|
176
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
177
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
181
|
+
matrix[i][j - 1] + 1, // insertion
|
|
182
|
+
matrix[i - 1][j] + 1 // deletion
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return matrix[b.length][a.length];
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Find closest match for typo correction
|
|
191
|
+
*/
|
|
192
|
+
function findClosestMatch(query, maxDistance = 2) {
|
|
193
|
+
const normalized = query.toLowerCase().trim();
|
|
194
|
+
let closestRepo = null;
|
|
195
|
+
let closestDistance = Infinity;
|
|
196
|
+
for (const [key, repo] of Object.entries(exports.POPULAR_REPOS)) {
|
|
197
|
+
const distance = levenshteinDistance(normalized, key);
|
|
198
|
+
if (distance <= maxDistance && distance < closestDistance) {
|
|
199
|
+
closestDistance = distance;
|
|
200
|
+
closestRepo = repo;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return closestRepo;
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=popular-repos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popular-repos.js","sourceRoot":"","sources":["../../src/github/popular-repos.ts"],"names":[],"mappings":"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"}
|