Skip to content

Commit f1b952f

Browse files
committed
add stat counters to library pages
1 parent 962f0b6 commit f1b952f

14 files changed

+491
-289
lines changed

convex/_generated/api.d.ts

Lines changed: 90 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,40 @@ export declare const components: {
5757
updatedAt: number;
5858
}>
5959
>;
60+
getGithubRepo: FunctionReference<
61+
"query",
62+
"internal",
63+
{ name: string },
64+
null | {
65+
contributorCount: number;
66+
dependentCount: number;
67+
dependentCountPrevious?: { count: number; updatedAt: number };
68+
dependentCountUpdatedAt?: number;
69+
name: string;
70+
nameNormalized: string;
71+
owner: string;
72+
ownerNormalized: string;
73+
starCount: number;
74+
updatedAt: number;
75+
}
76+
>;
77+
getGithubRepos: FunctionReference<
78+
"query",
79+
"internal",
80+
{ names: Array<string> },
81+
Array<null | {
82+
contributorCount: number;
83+
dependentCount: number;
84+
dependentCountPrevious?: { count: number; updatedAt: number };
85+
dependentCountUpdatedAt?: number;
86+
name: string;
87+
nameNormalized: string;
88+
owner: string;
89+
ownerNormalized: string;
90+
starCount: number;
91+
updatedAt: number;
92+
}>
93+
>;
6094
updateGithubOwner: FunctionReference<
6195
"mutation",
6296
"internal",
@@ -75,6 +109,12 @@ export declare const components: {
75109
{ name: string; owner: string; starCount: number },
76110
any
77111
>;
112+
updateGithubRepoStats: FunctionReference<
113+
"action",
114+
"internal",
115+
{ githubAccessToken: string; repo: string },
116+
any
117+
>;
78118
updateGithubRepos: FunctionReference<
79119
"mutation",
80120
"internal",
@@ -96,9 +136,11 @@ export declare const components: {
96136
"internal",
97137
{
98138
githubAccessToken: string;
99-
githubOwners: Array<string>;
100-
minStars: number;
101-
npmOrgs: Array<string>;
139+
githubOwners?: Array<string>;
140+
githubRepos?: Array<string>;
141+
minStars?: number;
142+
npmOrgs?: Array<string>;
143+
npmPackages?: Array<string>;
102144
},
103145
any
104146
>;
@@ -119,9 +161,11 @@ export declare const components: {
119161
"internal",
120162
{
121163
githubAccessToken: string;
122-
githubOwners: Array<string>;
123-
minStars: number;
124-
npmOrgs: Array<string>;
164+
githubOwners?: Array<string>;
165+
githubRepos?: Array<string>;
166+
minStars?: number;
167+
npmOrgs?: Array<string>;
168+
npmPackages?: Array<string>;
125169
},
126170
null
127171
>;
@@ -139,6 +183,30 @@ export declare const components: {
139183
updatedAt: number;
140184
}>
141185
>;
186+
getNpmPackage: FunctionReference<
187+
"query",
188+
"internal",
189+
{ name: string },
190+
null | {
191+
dayOfWeekAverages: Array<number>;
192+
downloadCount: number;
193+
downloadCountUpdatedAt?: number;
194+
name: string;
195+
org?: string;
196+
updatedAt: number;
197+
}
198+
>;
199+
getNpmPackages: FunctionReference<
200+
"query",
201+
"internal",
202+
{ names: Array<string> },
203+
{
204+
dayOfWeekAverages: Array<number>;
205+
downloadCount: number;
206+
downloadCountUpdatedAt: number;
207+
updatedAt: number;
208+
}
209+
>;
142210
updateNpmOrg: FunctionReference<
143211
"mutation",
144212
"internal",
@@ -151,6 +219,22 @@ export declare const components: {
151219
{ org: string; page?: number },
152220
any
153221
>;
222+
updateNpmPackage: FunctionReference<
223+
"mutation",
224+
"internal",
225+
{
226+
dayOfWeekAverages: Array<number>;
227+
downloadCount: number;
228+
name: string;
229+
},
230+
any
231+
>;
232+
updateNpmPackageStats: FunctionReference<
233+
"action",
234+
"internal",
235+
{ name: string },
236+
any
237+
>;
154238
updateNpmPackagesForOrg: FunctionReference<
155239
"mutation",
156240
"internal",

convex/stats.ts

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,48 @@
11
import { OssStats } from '@erquhart/convex-oss-stats'
22
import { components } from './_generated/api'
3+
import { query } from './_generated/server'
4+
import { v } from 'convex/values'
35

46
export const ossStats = new OssStats(components.ossStats, {
57
githubOwners: ['tanstack'],
68
npmOrgs: ['tanstack', 'tannerlinsley'],
79
})
810

9-
export const { getGithubOwner, getNpmOrg, sync, clearAndSync } = ossStats.api()
11+
export const getStats = query({
12+
args: {
13+
library: v.optional(
14+
v.object({
15+
id: v.string(),
16+
repo: v.string(),
17+
frameworks: v.array(v.string()),
18+
})
19+
),
20+
},
21+
handler: async (ctx, args) => {
22+
const githubData = args.library
23+
? await ossStats.getGithubRepo(ctx, args.library.repo)
24+
: await ossStats.getGithubOwner(ctx, 'tanstack')
25+
const npmData = args.library
26+
? await ossStats.getNpmPackages(
27+
ctx,
28+
args.library.frameworks.map(
29+
(framework) => `@tanstack/${framework}-${args.library?.id}`
30+
)
31+
)
32+
: await ossStats.getNpmOrg(ctx, 'tanstack')
33+
return {
34+
github: githubData,
35+
npm: npmData,
36+
}
37+
},
38+
})
39+
40+
export const {
41+
getGithubOwner,
42+
getNpmOrg,
43+
getGithubRepo,
44+
getGithubRepos,
45+
getNpmPackages,
46+
sync,
47+
clearAndSync,
48+
} = ossStats.api()

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
"dependencies": {
2020
"@convex-dev/react-query": "0.0.0-alpha.8",
21-
"@erquhart/convex-oss-stats": "^0.5.5",
21+
"@erquhart/convex-oss-stats": "^0.8.1",
2222
"@floating-ui/react": "^0.27.8",
2323
"@headlessui/react": "1.7.18",
2424
"@number-flow/react": "^0.4.1",
@@ -50,6 +50,7 @@
5050
"axios": "^1.6.7",
5151
"cmdk": "^1.1.1",
5252
"convex": "^1.17.2",
53+
"convex-oss-stats": "link:../../../erquhart/convex-oss-stats",
5354
"d3": "^7.9.0",
5455
"date-fns": "^2.30.0",
5556
"downshift": "^9.0.9",
@@ -81,6 +82,7 @@
8182
"@content-collections/core": "^0.8.2",
8283
"@content-collections/vite": "^0.2.4",
8384
"@shikijs/transformers": "^1.10.3",
85+
"@types/node": "^24.0.15",
8486
"@types/react": "^18.3.12",
8587
"@types/react-dom": "^18.3.1",
8688
"@types/remove-markdown": "^0.3.4",

0 commit comments

Comments
 (0)