|
1 | | -import type { GitHubFile, GitHubRepo } from '../types' |
| 1 | +import type { NpmPackage, UnjsPackage } from '../types' |
2 | 2 |
|
3 | 3 | export default defineEventHandler(async (event) => { |
4 | | - const repos = await $fetch<{ repos: GitHubRepo[] }>('https://ungh.cc/orgs/unjs/repos').then(({ repos }) => repos.filter(repo => !internalRepos.has(repo.name))) |
| 4 | + const unjsProjects = await $fetch<UnjsPackage[]>('https://unjs.io/api/content/packages.json') |
| 5 | + const packages = unjsProjects.filter(project => project.npm).sort((a, b) => b.title.localeCompare(a.title)) |
| 6 | + const packageNames = packages.map(pkg => pkg.npm?.name) |
5 | 7 |
|
6 | | - const reposNames = repos.map(repo => repo.name) |
7 | | - |
8 | | - const unjsDepsPerRepo = await Promise.all(repos.map(repo => $fetch<GitHubFile>(`https://ungh.cc/repos/unjs/${repo.name}/files/main/package.json`).then((file) => { |
9 | | - const pkg = JSON.parse(file.file.contents) |
| 8 | + const npmPackages = await Promise.all(packages.map(pkg => $fetch<{ package: NpmPackage }>(`https://unnpm.pages.dev/packages/${pkg.npm?.name}`))) |
10 | 9 |
|
| 10 | + setResponseHeader(event, 'Content-Type', 'application/json') |
| 11 | + return npmPackages.map(({ package: pkg }) => { |
11 | 12 | return { |
12 | | - name: repo.name, |
13 | | - description: repo.description, |
14 | | - dependencies: Object.keys(pkg.dependencies || {}).filter(dependency => reposNames.includes(dependency)), |
15 | | - devDependencies: Object.keys(pkg.devDependencies || {}).filter(dependency => reposNames.includes(dependency)), |
| 13 | + name: pkg.name, |
| 14 | + description: pkg.description, |
| 15 | + dependencies: Object.keys(pkg.dependencies || {}).filter(dep => packageNames.includes(dep)), |
| 16 | + devDependencies: Object.keys(pkg.devDependencies || {}).filter(dep => packageNames.includes(dep)), |
16 | 17 | } |
17 | | - }))) |
18 | | - |
19 | | - setResponseHeader(event, 'Content-Type', 'application/json') |
20 | | - return unjsDepsPerRepo.sort((a, b) => b.name.localeCompare(a.name)) |
| 18 | + }) |
21 | 19 | }) |
0 commit comments