MCPcopy Index your code
hub / github.com/npmx-dev/npmx.dev / fetchDailyRangeCached

Function fetchDailyRangeCached

app/composables/useCharts.ts:218–245  ·  view source on GitHub ↗
(packageName: string, startIso: string, endIso: string)

Source from the content-addressed store, hash-verified

216}
217
218async function fetchDailyRangeCached(packageName: string, startIso: string, endIso: string) {
219 const cache = npmDailyRangeCache
220
221 if (!cache) {
222 const response = await fetchNpmDownloadsRange(packageName, startIso, endIso)
223 return [...response.downloads]
224 .sort((a, b) => a.day.localeCompare(b.day))
225 .map(d => ({ day: d.day, value: d.downloads }))
226 }
227
228 const cacheKey = `${packageName}:${startIso}:${endIso}`
229 const cachedPromise = cache.get(cacheKey)
230 if (cachedPromise) return cachedPromise
231
232 const promise = fetchNpmDownloadsRange(packageName, startIso, endIso)
233 .then(response =>
234 [...response.downloads]
235 .sort((a, b) => a.day.localeCompare(b.day))
236 .map(d => ({ day: d.day, value: d.downloads })),
237 )
238 .catch(error => {
239 cache.delete(cacheKey)
240 throw error
241 })
242
243 cache.set(cacheKey, promise)
244 return promise
245}
246
247/**
248 * API limit workaround:

Callers 1

fetchDailyRangeChunkedFunction · 0.85

Calls 4

fetchNpmDownloadsRangeFunction · 0.90
getMethod · 0.65
deleteMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected