[READ-ONLY] a fast, modern browser for the npm registry
at main 29 lines 930 B view raw
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}