@@ -27,16 +27,65 @@ export default async function({login, graphql, rest, data, q, queries, imports},
2727 try {
2828 //Query data from GitHub API
2929 console . debug ( `metrics/compute/${ login } /base > account ${ account } ` )
30- const queried = await graphql ( queries . base [ account ] ( { login, "calendar.from" : new Date ( Date . now ( ) - 14 * 24 * 60 * 60 * 1000 ) . toISOString ( ) , "calendar.to" : ( new Date ( ) ) . toISOString ( ) , forks , affiliations } ) )
30+ const queried = await graphql ( queries . base [ account ] ( { login} ) )
3131 Object . assign ( data , { user :queried [ account ] } )
3232 postprocess ?. [ account ] ( { login, data} )
33+ //Query basic fields
34+ const fields = {
35+ user :[ "packages" , "starredRepositories" , "watching" , "sponsorshipsAsSponsor" , "sponsorshipsAsMaintainer" , "followers" , "following" , "issueComments" , "organizations" , "repositoriesContributedTo(includeUserRepositories: true)" ] ,
36+ organization :[ "packages" , "sponsorshipsAsSponsor" , "sponsorshipsAsMaintainer" , "membersWithRole" ] ,
37+ } [ account ] ?? [ ]
38+ for ( const field of fields ) {
39+ try {
40+ Object . assign ( data . user , ( await graphql ( queries . base . field ( { login, account, field} ) ) ) [ account ] )
41+ }
42+ catch {
43+ console . debug ( `metrics/compute/${ login } /base > failed to retrieve ${ field } ` )
44+ data . user [ field ] = { totalCount :NaN }
45+ }
46+ }
47+ //Query repositories fields
48+ for ( const field of [ "totalCount" , "totalDiskUsage" ] ) {
49+ try {
50+ Object . assign ( data . user . repositories , ( await graphql ( queries . base [ "field.repositories" ] ( { login, account, field} ) ) ) [ account ] . repositories )
51+ }
52+ catch ( error ) {
53+ console . log ( error )
54+ console . debug ( `metrics/compute/${ login } /base > failed to retrieve repositories.${ field } ` )
55+ data . user . repositories [ field ] = NaN
56+ }
57+ }
58+ //Query user account fields
59+ if ( account === "user" ) {
60+ //Query contributions collection
61+ {
62+ const fields = [ "totalRepositoriesWithContributedCommits" , "totalCommitContributions" , "restrictedContributionsCount" , "totalIssueContributions" , "totalPullRequestContributions" , "totalPullRequestReviewContributions" ]
63+ for ( const field of fields ) {
64+ try {
65+ Object . assign ( data . user . contributionsCollection , ( await graphql ( queries . base . contributions ( { login, account, field} ) ) ) [ account ] . contributionsCollection )
66+ }
67+ catch {
68+ console . debug ( `metrics/compute/${ login } /base > failed to retrieve contributionsCollection.${ field } ` )
69+ data . user . contributionsCollection [ field ] = NaN
70+ }
71+ }
72+ }
73+ //Query calendar
74+ try {
75+ Object . assign ( data . user , ( await graphql ( queries . base . calendar ( { login, "calendar.from" :new Date ( Date . now ( ) - 14 * 24 * 60 * 60 * 1000 ) . toISOString ( ) , "calendar.to" :( new Date ( ) ) . toISOString ( ) } ) ) ) [ account ] )
76+ }
77+ catch {
78+ console . debug ( `metrics/compute/${ login } /base > failed to retrieve contributions calendar` )
79+ data . user . calendar = { contributionCalendar :{ weeks :[ ] } }
80+ }
81+ }
3382 //Query repositories from GitHub API
34- data . user . repositoriesContributedTo . nodes = data . user . repositoriesContributedTo . nodes ?? [ ]
3583 for ( const type of ( { user :[ "repositories" , "repositoriesContributedTo" ] , organization :[ "repositories" ] } [ account ] ?? [ ] ) ) {
3684 //Iterate through repositories
3785 let cursor = null
3886 let pushed = 0
3987 const options = { repositories :{ forks, affiliations, constraints :"" } , repositoriesContributedTo :{ forks :"" , affiliations :"" , constraints :", includeUserRepositories: false, contributionTypes: COMMIT" } } [ type ] ?? null
88+ data . user [ type ] = data . user [ type ] ?? { }
4089 data . user [ type ] . nodes = data . user [ type ] . nodes ?? [ ]
4190 do {
4291 console . debug ( `metrics/compute/${ login } /base > retrieving ${ type } after ${ cursor } ` )
@@ -45,7 +94,7 @@ export default async function({login, graphql, rest, data, q, queries, imports},
4594 data . user [ type ] . nodes . push ( ...nodes )
4695 pushed = nodes . length
4796 console . debug ( `metrics/compute/${ login } /base > retrieved ${ pushed } ${ type } after ${ cursor } ` )
48- } while ( ( pushed ) && ( cursor ) && ( data . user . repositories . nodes . length + data . user . repositoriesContributedTo . nodes . length < repositories ) )
97+ } while ( ( pushed ) && ( cursor ) && ( ( data . user . repositories ? .nodes ? .length ?? 0 ) + ( data . user . repositoriesContributedTo ? .nodes ? .length ?? 0 ) < repositories ) )
4998 //Limit repositories
5099 console . debug ( `metrics/compute/${ login } /base > keeping only ${ repositories } ${ type } ` )
51100 data . user [ type ] . nodes . splice ( repositories )
@@ -93,6 +142,8 @@ const postprocess = {
93142 data . account = "user"
94143 Object . assign ( data . user , {
95144 isVerified :false ,
145+ repositories :{ } ,
146+ contributionsCollection :{ } ,
96147 } )
97148 } ,
98149 //Organization
@@ -101,22 +152,23 @@ const postprocess = {
101152 data . account = "organization"
102153 Object . assign ( data . user , {
103154 isHireable :false ,
104- starredRepositories :{ totalCount :0 } ,
105- watching :{ totalCount :0 } ,
155+ repositories :{ } ,
156+ starredRepositories :{ totalCount :NaN } ,
157+ watching :{ totalCount :NaN } ,
106158 contributionsCollection :{
107- totalRepositoriesWithContributedCommits :0 ,
108- totalCommitContributions :0 ,
109- restrictedContributionsCount :0 ,
110- totalIssueContributions :0 ,
111- totalPullRequestContributions :0 ,
112- totalPullRequestReviewContributions :0 ,
159+ totalRepositoriesWithContributedCommits :NaN ,
160+ totalCommitContributions :NaN ,
161+ restrictedContributionsCount :NaN ,
162+ totalIssueContributions :NaN ,
163+ totalPullRequestContributions :NaN ,
164+ totalPullRequestReviewContributions :NaN ,
113165 } ,
114166 calendar :{ contributionCalendar :{ weeks :[ ] } } ,
115- repositoriesContributedTo :{ totalCount :0 } ,
116- followers :{ totalCount :0 } ,
117- following :{ totalCount :0 } ,
118- issueComments :{ totalCount :0 } ,
119- organizations :{ totalCount :0 } ,
167+ repositoriesContributedTo :{ totalCount :NaN , nodes : [ ] } ,
168+ followers :{ totalCount :NaN } ,
169+ following :{ totalCount :NaN } ,
170+ issueComments :{ totalCount :NaN } ,
171+ organizations :{ totalCount :NaN } ,
120172 } )
121173 } ,
122174 //Skip base content query and instantiate an empty user instance
@@ -127,16 +179,16 @@ const postprocess = {
127179 postprocess ?. [ account ] ( { login, data} )
128180 data . account = "bypass"
129181 Object . assign ( data . user , {
130- databaseId :0 ,
182+ databaseId :NaN ,
131183 name :login ,
132184 login,
133185 createdAt :new Date ( ) ,
134186 avatarUrl :`https://github.com/${ login } .png` ,
135187 websiteUrl :null ,
136188 twitterUsername :login ,
137- repositories :{ totalCount :0 , totalDiskUsage :0 , nodes :[ ] } ,
138- packages :{ totalCount :0 } ,
139- repositoriesContributedTo :{ nodes :[ ] } ,
189+ repositories :{ totalCount :NaN , totalDiskUsage :NaN , nodes :[ ] } ,
190+ packages :{ totalCount :NaN } ,
191+ repositoriesContributedTo :{ totalCount : NaN , nodes :[ ] } ,
140192 } )
141193 } ,
142194}
0 commit comments