@@ -4,24 +4,22 @@ export interface GitHubContributor {
44 avatar_url : string
55 html_url : string
66 contributions : number
7+ role : Role
78}
89
910// TODO: stub - need to fetch list of role members from somewhere to avoid hardcoding (
10- type Role = 'stewards' | 'core' | 'maintainers'
11- const roleMembers : Record < Role , GitHubContributor [ 'login' ] [ ] > = {
12- stewards : [ 'danielroe' , 'patak-dev' ] ,
13- core : [ ] ,
14- maintainers : [ ] ,
11+ type Role = 'stewards' | 'core' | 'maintainers' | 'contributor'
12+ const roleMembers : Record < Exclude < Role , 'contributor' > , Set < GitHubContributor [ 'login' ] > > = {
13+ stewards : new Set ( [ 'danielroe' , 'patak-dev' ] ) ,
14+ core : new Set ( [ ] ) ,
15+ maintainers : new Set ( [ ] ) ,
1516}
1617
17- function getRoleOrder ( login : GitHubContributor [ 'login' ] ) {
18- return roleMembers . stewards . includes ( login )
19- ? 0
20- : roleMembers . core . includes ( login )
21- ? 1
22- : roleMembers . maintainers . includes ( login )
23- ? 2
24- : 3
18+ function getRoleInfo ( login : string ) : { role : Role ; order : number } {
19+ if ( roleMembers . stewards . has ( login ) ) return { role : 'stewards' , order : 0 }
20+ if ( roleMembers . core . has ( login ) ) return { role : 'core' , order : 1 }
21+ if ( roleMembers . maintainers . has ( login ) ) return { role : 'maintainers' , order : 2 }
22+ return { role : 'contributor' , order : 3 }
2523}
2624
2725export default defineCachedEventHandler (
@@ -68,9 +66,14 @@ export default defineCachedEventHandler(
6866 allContributors
6967 // Filter out bots
7068 . filter ( c => ! c . login . includes ( '[bot]' ) )
71-
69+ // Assign role
70+ . map ( c => {
71+ const { role, order } = getRoleInfo ( c . login )
72+ return Object . assign ( c , { role, order } )
73+ } )
7274 // Sort by role (steward > core > maintainer > contributor)
73- . sort ( ( a , b ) => getRoleOrder ( a . login ) - getRoleOrder ( b . login ) )
75+ . sort ( ( a , b ) => a . order - b . order )
76+ . map ( ( { order : _ , ...rest } ) => rest )
7477 )
7578 } ,
7679 {
0 commit comments