MCPcopy
hub / github.com/npmx-dev/npmx.dev / resolveDateRange

Function resolveDateRange

app/composables/useCharts.ts:290–337  ·  view source on GitHub ↗
(
    evolutionOptions: EvolutionOptions,
    packageCreatedIso: string | null,
  )

Source from the content-addressed store, hash-verified

288
289export function useCharts() {
290 function resolveDateRange(
291 evolutionOptions: EvolutionOptions,
292 packageCreatedIso: string | null,
293 ): { start: Date; end: Date } {
294 const today = new Date()
295 const yesterday = new Date(
296 Date.UTC(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate() - 1),
297 )
298
299 const endDateOnly = toDateOnly(evolutionOptions.endDate)
300 const end = endDateOnly ? parseIsoDate(endDateOnly) : yesterday
301
302 const startDateOnly = toDateOnly(evolutionOptions.startDate)
303 if (startDateOnly) {
304 const start = parseIsoDate(startDateOnly)
305 return { start, end }
306 }
307
308 let start: Date
309
310 if (evolutionOptions.granularity === 'year') {
311 if (packageCreatedIso) {
312 start = startOfUtcYear(new Date(packageCreatedIso))
313 } else {
314 start = addDays(end, -(5 * 365) + 1)
315 }
316 } else if (evolutionOptions.granularity === 'month') {
317 const monthCount = evolutionOptions.months ?? 12
318 const firstOfThisMonth = startOfUtcMonth(end)
319 start = new Date(
320 Date.UTC(
321 firstOfThisMonth.getUTCFullYear(),
322 firstOfThisMonth.getUTCMonth() - (monthCount - 1),
323 1,
324 ),
325 )
326 } else if (evolutionOptions.granularity === 'week') {
327 const weekCount = evolutionOptions.weeks ?? 52
328
329 // Full rolling weeks ending on `end` (yesterday by default)
330 // Range length is exactly weekCount * 7 days (inclusive)
331 start = addDays(end, -(weekCount * 7) + 1)
332 } else {
333 start = addDays(end, -30 + 1)
334 }
335
336 return { start, end }
337 }
338
339 async function fetchPackageDownloadEvolution(
340 packageName: MaybeRefOrGetter<string>,

Callers 3

Calls 5

toDateOnlyFunction · 0.85
parseIsoDateFunction · 0.85
startOfUtcYearFunction · 0.85
addDaysFunction · 0.85
startOfUtcMonthFunction · 0.85

Tested by

no test coverage detected