Skip to content

Commit 614009b

Browse files
authored
Take GraphQL over HTTP scoring into account + clean sort-libraries function (graphql#1352)
1 parent 3df768b commit 614009b

File tree

7 files changed

+435
-235
lines changed

7 files changed

+435
-235
lines changed

gatsby-node.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { promisify } from "util"
44
import { readFile } from "fs/promises"
55
import * as globby from "globby"
66
import * as frontmatterParser from "parser-front-matter"
7-
import { sortLibs } from "./scripts/sort-libraries"
7+
import { sortLibs } from "./scripts/sort-libraries/sort-libraries"
88

99
const parse$ = promisify(frontmatterParser.parse)
1010

@@ -186,6 +186,7 @@ export const onCreatePage: GatsbyNode["onCreatePage"] = async ({
186186
Object.keys(libraryCategoryMap).map(async libraryCategoryName => {
187187
const libraries = libraryCategoryMap[libraryCategoryName]
188188
const { sortedLibs, totalStars } = await sortLibs(libraries)
189+
189190
libraryCategoryMap[libraryCategoryName] = sortedLibs
190191
languageTotalStars += totalStars || 0
191192
})

scripts/sort-libraries.ts

Lines changed: 0 additions & 234 deletions
This file was deleted.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
type GemStatsFetchRespone = {
2+
name: string
3+
downloads: number
4+
version: string
5+
version_created_at: string
6+
version_downloads: number
7+
platform: string
8+
authors: string
9+
info: string
10+
licenses: Array<string>
11+
metadata: {
12+
homepage_uri: string
13+
changelog_uri: string
14+
bug_tracker_uri: string
15+
source_code_uri: string
16+
mailing_list_uri: string
17+
}
18+
yanked: boolean
19+
sha: string
20+
gem_uri: string
21+
homepage_uri: string
22+
wiki_uri: string
23+
documentation_uri: string
24+
mailing_list_uri: string
25+
source_code_uri: string
26+
bug_tracker_uri: string
27+
changelog_uri: string
28+
funding_uri: string
29+
dependencies: {
30+
development: Array<string>
31+
runtime: Array<string>
32+
}
33+
}
34+
35+
export async function getGemStats(packageName: string): Promise<number> {
36+
const response = await fetch(
37+
`https://rubygems.org/api/v1/gems/${encodeURIComponent(packageName)}.json`
38+
)
39+
if (!response.ok) {
40+
console.warn(`Get invalid response from GEM for ${packageName}:`, response)
41+
return 0
42+
}
43+
const responseJson: GemStatsFetchRespone = await response.json()
44+
if (!responseJson) {
45+
console.warn(
46+
`Get invalid response from GEM for ${packageName}:`,
47+
responseJson
48+
)
49+
return 0
50+
}
51+
return responseJson.downloads ?? 0
52+
}

0 commit comments

Comments
 (0)