(data: DailyCosts["daily"])
| 29 | import { RegionGroupedSummary, RegionResourceBreakdown } from "./types"; |
| 30 | |
| 31 | export function aggregateByDay(data: DailyCosts["daily"]) { |
| 32 | const days = new Map<string, DailyCosts["daily"][0]>(); |
| 33 | for (const slice of data) { |
| 34 | const startDate = parseISO(slice.startDate); |
| 35 | const formattedDate = formatDateInUtc(startDate); |
| 36 | let day = days.get(formattedDate); |
| 37 | if (!day) { |
| 38 | startDate.setUTCHours(0, 0, 0, 0); |
| 39 | day = { |
| 40 | costs: structuredClone(slice.costs), |
| 41 | startDate: formatUtcIso(startDate), |
| 42 | endDate: formatUtcIso(addDays(startDate, 1)), |
| 43 | subtotal: slice.subtotal, |
| 44 | total: slice.total, |
| 45 | }; |
| 46 | } else { |
| 47 | day = rollupSlice(day, slice); |
| 48 | } |
| 49 | days.set(formattedDate, day); |
| 50 | } |
| 51 | return Array.from(days.values()); |
| 52 | } |
| 53 | |
| 54 | function rollupSlice( |
| 55 | day: DailyCosts["daily"][0], |
no test coverage detected