@@ -356,6 +356,7 @@ const renderMarkdownSponsors = async (sponsors) => {
356
356
}
357
357
358
358
const filterSponsors = ( fn ) => Object . values ( sponsors )
359
+ . filter ( ( { hide} ) => ! hide )
359
360
. filter ( fn )
360
361
. sort ( ( a , b ) => new Date ( a . createdAt ) - new Date ( b . createdAt ) ) ;
361
362
@@ -517,14 +518,15 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
517
518
tiers,
518
519
scoreTierPriceFactor = 0.5 ,
519
520
scoreTotalAmountFactor = 0.2 ,
520
- creditDays = 0
521
+ creditDays = 0 ,
522
+ hide = { }
521
523
} = await readJSON ( sponsorsConfig ) || { } ;
522
524
523
525
const mergedSponsors = { } ;
524
526
525
527
// merge Open Collective sponsors
526
528
collectiveSponsors . forEach ( sponsor => {
527
- if ( sponsor . role !== 'BACKER' && sponsor . role ) {
529
+ if ( ( sponsor . role !== 'BACKER' && sponsor . role ) || hide [ sponsor . login ?. toLowerCase ( ) ] || hide [ sponsor . name ?. toLowerCase ( ) ] ) {
528
530
return ;
529
531
}
530
532
@@ -572,6 +574,12 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
572
574
573
575
if ( lastTransactionAmount ) {
574
576
sponsor . tier = findTier ( lastTransactionAmount , sponsorTiers ) ;
577
+
578
+ let partiallyPaid = findTier ( lastTransactionAmount * 1.1 , sponsorTiers ) ;
579
+
580
+ if ( sponsor . tier !== partiallyPaid ) {
581
+ sponsor . tier = partiallyPaid ;
582
+ }
575
583
}
576
584
577
585
const tierId = sponsor . tier ? sponsor . tier ?. toLowerCase ( ) : null ;
@@ -581,7 +589,17 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
581
589
console . log ( `Unknown tier [${ sponsor . tier } ]` ) ;
582
590
}
583
591
584
- const { price, benefits, period = PERIOD } = tierData || { } ;
592
+ let { price, benefits, period = PERIOD , credit = 3 } = tierData || { } ;
593
+
594
+ let shortageFactor = price && lastTransactionAmount < price ? lastTransactionAmount / price * 0.9 : 1 ;
595
+
596
+ period = period * shortageFactor ;
597
+
598
+ sponsor . isNew = ! ! ( sponsor . createdAt && days ( sponsor . createdAt ) < 7 ) ;
599
+
600
+ sponsor . credit ??= credit || 0 ;
601
+
602
+ period += sponsor . credit ;
585
603
586
604
if ( sponsor . isActive == null ) {
587
605
sponsor . isActive = tierData && days ( lastTransactionAt ) <= period && sponsor . lastTransactionAmount >= price ;
@@ -593,8 +611,8 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
593
611
594
612
const isCustomTier = ! ! ( tierData && price !== originalTierPrice ) ;
595
613
sponsor . tierId = tierId ;
596
- sponsor . tier = sponsor . tier + ( lastTransactionAmount > originalTierPrice ? '+' : '' )
597
- sponsor . tierPrice = price ;
614
+ sponsor . tier = sponsor . tier ? sponsor . tier + ( lastTransactionAmount > originalTierPrice ? '+' : '' ) : null ;
615
+ sponsor . tierPrice = price || 0 ;
598
616
sponsor . originalTierPrice = originalTierPrice ;
599
617
sponsor . isCustomTier = isCustomTier ;
600
618
sponsor . totalAmountDonated = sponsor . totalAmountDonated || lastTransactionAmount || 0 ;
@@ -677,10 +695,19 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
677
695
opacity : timeLeft == null || timeLeft > 0 ? 1 :( sponsor . timeLeft / ( creditDays * DAY ) )
678
696
}
679
697
698
+ const score = Math . round (
699
+ sponsor . totalAmountDonated * scoreTotalAmountFactor +
700
+ averageMonthlyContribution +
701
+ tierPrice * scoreTierPriceFactor
702
+ ) ;
703
+
680
704
console . log (
681
705
`Add sponsor badge [${ sponsor . displayName } ]
682
- - tier: ${ tier ? tier + '(' + tierPrice + '$)' : '< none >' }
706
+ - score : ${ score }
707
+ - tier: ${ tier || '< null >' }
708
+ - tier price: ${ tierPrice }
683
709
- total amount donated: ${ sponsor . totalAmountDonated } $
710
+ - averageMonthlyContribution: ${ averageMonthlyContribution }
684
711
- last donation date: ${ sponsor . lastTransactionAt }
685
712
- created: ${ sponsor . createdAt }
686
713
- target link: ${ sponsor . targetLink }
@@ -693,7 +720,7 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
693
720
return {
694
721
...sponsor ,
695
722
averageMonthlyContribution,
696
- score : Math . round ( sponsor . totalAmountDonated * scoreTotalAmountFactor + averageMonthlyContribution + tierPrice * scoreTierPriceFactor )
723
+ score
697
724
} ;
698
725
} )
699
726
. sort ( ( a , b ) => b . score - a . score )
0 commit comments