(value: unknown, maximumAgeInDays = 365)
| 9 | } |
| 10 | |
| 11 | function toFreshnessScore(value: unknown, maximumAgeInDays = 365): number | null { |
| 12 | if (!value) { |
| 13 | return null |
| 14 | } |
| 15 | |
| 16 | const date = value instanceof Date ? value : new Date(String(value)) |
| 17 | |
| 18 | if (Number.isNaN(date.getTime())) { |
| 19 | return null |
| 20 | } |
| 21 | |
| 22 | const ageInMilliseconds = Date.now() - date.getTime() |
| 23 | const ageInDays = ageInMilliseconds / MILLISECONDS_IN_A_DAY |
| 24 | const normalizedFreshness = 1 - ageInDays / maximumAgeInDays |
| 25 | |
| 26 | if (normalizedFreshness < 0) { |
| 27 | return 0 |
| 28 | } |
| 29 | |
| 30 | if (normalizedFreshness > 1) { |
| 31 | return 100 |
| 32 | } |
| 33 | |
| 34 | return normalizedFreshness * 100 |
| 35 | } |
| 36 | |
| 37 | function getNumericFacetValue( |
| 38 | packageData: PackageComparisonData, |
no outgoing calls
no test coverage detected