Skip to content

Commit 9fe1b25

Browse files
committed
feat: set role prop to contributor object (+ change member list type to Set)
1 parent da79836 commit 9fe1b25

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

server/api/contributors.get.ts

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2725
export 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

Comments
 (0)