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.
Files changed (105) hide show
  1. package/README.md +275 -25
  2. package/dist/big-orange/compare.d.ts.map +1 -1
  3. package/dist/big-orange/compare.js +14 -16
  4. package/dist/big-orange/compare.js.map +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +137 -1
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/auto.d.ts.map +1 -1
  9. package/dist/commands/auto.js +69 -12
  10. package/dist/commands/auto.js.map +1 -1
  11. package/dist/commands/bi-sync.d.ts.map +1 -1
  12. package/dist/commands/bi-sync.js +10 -3
  13. package/dist/commands/bi-sync.js.map +1 -1
  14. package/dist/commands/drift.d.ts +16 -0
  15. package/dist/commands/drift.d.ts.map +1 -0
  16. package/dist/commands/drift.js +517 -0
  17. package/dist/commands/drift.js.map +1 -0
  18. package/dist/commands/git.d.ts +25 -0
  19. package/dist/commands/git.d.ts.map +1 -0
  20. package/dist/commands/git.js +355 -0
  21. package/dist/commands/git.js.map +1 -0
  22. package/dist/commands/init.d.ts.map +1 -1
  23. package/dist/commands/init.js +5 -4
  24. package/dist/commands/init.js.map +1 -1
  25. package/dist/commands/migrate.d.ts +11 -0
  26. package/dist/commands/migrate.d.ts.map +1 -0
  27. package/dist/commands/migrate.js +85 -0
  28. package/dist/commands/migrate.js.map +1 -0
  29. package/dist/commands/rename.d.ts +18 -0
  30. package/dist/commands/rename.d.ts.map +1 -0
  31. package/dist/commands/rename.js +211 -0
  32. package/dist/commands/rename.js.map +1 -0
  33. package/dist/commands/taf-init.d.ts +14 -0
  34. package/dist/commands/taf-init.d.ts.map +1 -0
  35. package/dist/commands/taf-init.js +138 -0
  36. package/dist/commands/taf-init.js.map +1 -0
  37. package/dist/commands/taf-log.d.ts +30 -0
  38. package/dist/commands/taf-log.d.ts.map +1 -0
  39. package/dist/commands/taf-log.js +303 -0
  40. package/dist/commands/taf-log.js.map +1 -0
  41. package/dist/commands/taf-stats.d.ts +8 -0
  42. package/dist/commands/taf-stats.d.ts.map +1 -0
  43. package/dist/commands/taf-stats.js +133 -0
  44. package/dist/commands/taf-stats.js.map +1 -0
  45. package/dist/commands/taf-validate.d.ts +8 -0
  46. package/dist/commands/taf-validate.d.ts.map +1 -0
  47. package/dist/commands/taf-validate.js +108 -0
  48. package/dist/commands/taf-validate.js.map +1 -0
  49. package/dist/commands/taf.d.ts +13 -0
  50. package/dist/commands/taf.d.ts.map +1 -0
  51. package/dist/commands/taf.js +97 -0
  52. package/dist/commands/taf.js.map +1 -0
  53. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  54. package/dist/compiler/faf-compiler.js +18 -0
  55. package/dist/compiler/faf-compiler.js.map +1 -1
  56. package/dist/generators/faf-generator-championship.d.ts.map +1 -1
  57. package/dist/generators/faf-generator-championship.js +1 -0
  58. package/dist/generators/faf-generator-championship.js.map +1 -1
  59. package/dist/github/github-extractor.d.ts +56 -0
  60. package/dist/github/github-extractor.d.ts.map +1 -0
  61. package/dist/github/github-extractor.js +328 -0
  62. package/dist/github/github-extractor.js.map +1 -0
  63. package/dist/github/popular-repos.d.ts +43 -0
  64. package/dist/github/popular-repos.d.ts.map +1 -0
  65. package/dist/github/popular-repos.js +205 -0
  66. package/dist/github/popular-repos.js.map +1 -0
  67. package/dist/github/repo-selector.d.ts +48 -0
  68. package/dist/github/repo-selector.d.ts.map +1 -0
  69. package/dist/github/repo-selector.js +277 -0
  70. package/dist/github/repo-selector.js.map +1 -0
  71. package/dist/taf/index.d.ts +17 -0
  72. package/dist/taf/index.d.ts.map +1 -0
  73. package/dist/taf/index.js +57 -0
  74. package/dist/taf/index.js.map +1 -0
  75. package/dist/taf/logger.d.ts +88 -0
  76. package/dist/taf/logger.d.ts.map +1 -0
  77. package/dist/taf/logger.js +137 -0
  78. package/dist/taf/logger.js.map +1 -0
  79. package/dist/taf/parser.d.ts +32 -0
  80. package/dist/taf/parser.d.ts.map +1 -0
  81. package/dist/taf/parser.js +161 -0
  82. package/dist/taf/parser.js.map +1 -0
  83. package/dist/taf/stats.d.ts +31 -0
  84. package/dist/taf/stats.d.ts.map +1 -0
  85. package/dist/taf/stats.js +182 -0
  86. package/dist/taf/stats.js.map +1 -0
  87. package/dist/taf/types.d.ts +77 -0
  88. package/dist/taf/types.d.ts.map +1 -0
  89. package/dist/taf/types.js +9 -0
  90. package/dist/taf/types.js.map +1 -0
  91. package/dist/taf/validator.d.ts +18 -0
  92. package/dist/taf/validator.d.ts.map +1 -0
  93. package/dist/taf/validator.js +148 -0
  94. package/dist/taf/validator.js.map +1 -0
  95. package/dist/utils/file-utils.d.ts +10 -0
  96. package/dist/utils/file-utils.d.ts.map +1 -1
  97. package/dist/utils/file-utils.js +196 -33
  98. package/dist/utils/file-utils.js.map +1 -1
  99. package/dist/utils/native-file-finder.js +1 -1
  100. package/dist/utils/native-file-finder.js.map +1 -1
  101. package/dist/utils/yaml-generator.d.ts +1 -0
  102. package/dist/utils/yaml-generator.d.ts.map +1 -1
  103. package/dist/utils/yaml-generator.js +1 -0
  104. package/dist/utils/yaml-generator.js.map +1 -1
  105. 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":"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"}
@@ -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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"}