From 1dc3b914580c5812f228055d2b151ea051ff6b5a Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 13 Jun 2026 19:18:50 +0200 Subject: [PATCH] refactor(timeline): move pure month-bucket math to $lib/shared/utils/monthBuckets Relocate the 10 pure helpers (monthBoundaryFrom/To, buildMonthSequence, fillDensityGaps, clipBucketsToRange, aggregateToYears, selectionBoundaryFrom/To, tickIndicesFor, formatTickLabel) and their unit tests out of document/timeline.ts into a shared module so lib/timeline/ can consume them without importing lib/document/. The /api/documents/density glue (buildDensityUrl, fetchDensity, DensityState, DensityFilters) stays in document/timeline.ts. Re-point the three density components and the density-filter spec at the shared module. Refs #779 Co-Authored-By: Claude Opus 4.8 --- frontend/src/lib/document/TimelineBars.svelte | 2 +- .../lib/document/TimelineDensityFilter.svelte | 2 +- .../TimelineDensityFilter.svelte.spec.ts | 2 +- .../src/lib/document/TimelineXAxis.svelte | 2 +- frontend/src/lib/document/timeline.spec.ts | 269 +----------------- frontend/src/lib/document/timeline.ts | 154 ---------- .../src/lib/shared/utils/monthBuckets.spec.ts | 267 +++++++++++++++++ frontend/src/lib/shared/utils/monthBuckets.ts | 163 +++++++++++ 8 files changed, 435 insertions(+), 426 deletions(-) create mode 100644 frontend/src/lib/shared/utils/monthBuckets.spec.ts create mode 100644 frontend/src/lib/shared/utils/monthBuckets.ts diff --git a/frontend/src/lib/document/TimelineBars.svelte b/frontend/src/lib/document/TimelineBars.svelte index fb0db1ca..c5784028 100644 --- a/frontend/src/lib/document/TimelineBars.svelte +++ b/frontend/src/lib/document/TimelineBars.svelte @@ -1,6 +1,6 @@