blob: 15cbd6cb7a5a3686b7219a02c6b23004f784e32b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import { query } from "@solidjs/router"
export const github = query(async () => {
"use server"
try {
const [meta, releases, contributors] = await Promise.all([
fetch("https://api.github.com/repos/sst/opencode").then(async (res) => {
const text = await res.text()
console.log(text)
const json = JSON.parse(text)
return json
}),
fetch("https://api.github.com/repos/sst/opencode/releases").then(async (res) => {
const text = await res.text()
console.log(text)
const json = JSON.parse(text)
return json
}),
fetch("https://api.github.com/repos/sst/opencode/contributors?per_page=1"),
])
const [release] = releases
const contributorCount = Number.parseInt(
contributors.headers
.get("Link")!
.match(/&page=(\d+)>; rel="last"/)!
.at(1)!,
)
return {
stars: meta.stargazers_count,
release: {
name: release.name,
url: release.html_url,
},
contributors: contributorCount,
}
} catch (e) {
console.error(e)
}
return undefined
}, "github")
|