forked from
npmx.dev/npmx.dev
[READ-ONLY]
a fast, modern browser for the npm registry
1export function sum(numbers: number[]): number {
2 return numbers.reduce((a, b) => a + b, 0)
3}
4
5export function chunkIntoWeeks<T>(items: T[], weekSize = 7): T[][] {
6 const result: T[][] = []
7 for (let index = 0; index < items.length; index += weekSize) {
8 result.push(items.slice(index, index + weekSize))
9 }
10 return result
11}
12
13export function buildWeeklyEvolutionFromDaily(
14 daily: Array<{ day: string; downloads: number }>,
15): Array<{ weekStart: string; weekEnd: string; downloads: number }> {
16 const weeks = chunkIntoWeeks(daily, 7)
17 return weeks.map(weekDays => {
18 const weekStart = weekDays[0]?.day ?? ''
19 const weekEnd = weekDays[weekDays.length - 1]?.day ?? ''
20 const downloads = sum(weekDays.map(d => d.downloads))
21 return { weekStart, weekEnd, downloads }
22 })
23}
24
25export function addDays(date: Date, days: number): Date {
26 const d = new Date(date)
27 d.setUTCDate(d.getUTCDate() + days)
28 return d
29}