Commit 7e14272
Changed files (3)
src/main.ts
@@ -8,6 +8,7 @@ import { updateReadme } from './update-readme.js'
import { updateBadges } from './update-badges.js'
import { presentBadges } from './present-badges.js'
import { getBadges } from './get-badges.js'
+import { allBadges } from './all-badges/index.js'
void (async function main() {
try {
@@ -63,6 +64,7 @@ void (async function main() {
)
userBadges = presentBadges(
+ allBadges.map((m) => m.default),
data,
userBadges,
pickBadges,
src/present-badges.ts
@@ -10,21 +10,21 @@ export const mergeBadges = (...badges: (Badge | Badge[])[]): Badge[] =>
.flat()
.reduce<Record<string, Badge>>(
(m, v) => Object.assign(m, { [v.id]: v }),
- {},
- ),
+ {}
+ )
)
const parseRegexp = (value: string): RegExp =>
new RegExp(`^${value}$`.replace('*', '.+'))
export const presentBadges = (
+ presenters: BadgePresenter[],
data: Data,
userBadges: Badge[],
pickBadges: string[],
omitBadges: string[],
- compact: boolean,
+ compact: boolean
): Badge[] => {
- const presenters: BadgePresenter[] = allBadges.map((m) => m.default)
for (const presenter of presenters) {
const newBadges: Badge[] = []
const grant = badgeCollection(newBadges)
@@ -45,28 +45,28 @@ export const presentBadges = (
continue
}
const touchedBadges = userBadges.filter(({ id }) =>
- (presenter.badges as ID[]).includes(id),
+ (presenter.badges as ID[]).includes(id)
)
const newHighestTierBadge = touchedBadges.reduce(
(prev, curr) => (prev.tier > curr.tier ? prev : curr),
- {} as Badge,
+ {} as Badge
)
omitBadges.push(
...touchedBadges
.map(({ id }) => id)
- .filter((id) => id !== newHighestTierBadge.id),
+ .filter((id) => id !== newHighestTierBadge.id)
)
}
}
if (pickBadges.length > 0) {
userBadges = userBadges.filter((x) =>
- pickBadges.map(parseRegexp).some((r) => r.test(x.id)),
+ pickBadges.map(parseRegexp).some((r) => r.test(x.id))
)
}
if (omitBadges.length > 0) {
userBadges = userBadges.filter((x) =>
- omitBadges.map(parseRegexp).every((r) => !r.test(x.id)),
+ omitBadges.map(parseRegexp).every((r) => !r.test(x.id))
)
}
test/present-badges.test.ts
@@ -32,8 +32,11 @@ describe('present-badges', () => {
] as Data['repos'],
}
- it('presentBadges() applies `pick`', () => {
+ it('presentBadges() applies `pick`', async () => {
const userBadges = presentBadges(
+ [
+ await import('../src/all-badges/stars/stars.js'),
+ ].map((m) => m.default),
data,
[],
['stars-100', 'stars-500'],
@@ -71,8 +74,11 @@ describe('present-badges', () => {
])
})
- it('presentBadges() applies `omit`', () => {
+ it('presentBadges() applies `omit`', async () => {
const userBadges = presentBadges(
+ [
+ await import('../src/all-badges/stars/stars.js'),
+ ].map((m) => m.default),
data,
[],
['stars-100', 'stars-500'],
@@ -97,8 +103,11 @@ describe('present-badges', () => {
])
})
- it('presentBadges() supports masks for `omit` && `pick`', () => {
+ it('presentBadges() supports masks for `omit` && `pick`', async () => {
const userBadges = presentBadges(
+ [
+ await import('../src/all-badges/stars/stars.js'),
+ ].map((m) => m.default),
data,
[],
['stars-*'],
@@ -136,8 +145,11 @@ describe('present-badges', () => {
])
})
- it('presentBadges() applies `compact`', () => {
+ it('presentBadges() applies `compact`', async () => {
const userBadges = presentBadges(
+ [
+ await import('../src/all-badges/stars/stars.js'),
+ ].map((m) => m.default),
data,
[],
['stars-1000', 'stars-2000', 'stars-5000'],