Skip to content

Commit 32e1595

Browse files
committed
feat: return stale value when fetch error
1 parent 0c34ad4 commit 32e1595

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

src/utils/cache.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { LRUCache } from 'lru-cache'
44

55
export function createCachedFetch<T extends object>(
66
key: string,
7-
fetchMethod: (name: string, staleValue: T | undefined, options: LRUCache.FetcherOptions<string, T, unknown>) => Promise<T | undefined>,
7+
fetchMethod: (name: string, options: LRUCache.FetcherOptions<string, T, unknown>) => Promise<T | undefined>,
88
) {
99
const cache = new LRUCache<string, T>({
1010
max: 500,
@@ -14,11 +14,12 @@ export function createCachedFetch<T extends object>(
1414
fetchMethod: async (name, staleValue, options) => {
1515
try {
1616
logger.info(`[${name}]: fetching ${key}...`)
17-
const r = await fetchMethod(name, staleValue, options)
17+
const r = await fetchMethod(name, options)
1818
logger.info(`[${name}] fetching ${key} done!`)
1919
return r
2020
} catch (err) {
2121
logger.warn(`[${name}] fetching ${key} error: `, err)
22+
return staleValue
2223
}
2324
},
2425
})

src/utils/npm.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export function encodePackageName(name: string): string {
2727

2828
export const getPackageInfo = createCachedFetch<ResolvedPackument>(
2929
'package info',
30-
async (name, staleValue, { signal }) => {
30+
async (name, { signal }) => {
3131
const encodedName = encodePackageName(name)
3232

3333
const pkg = await ofetch<Packument>(`${NPM_REGISTRY}/${encodedName}`, { signal })

src/utils/npmx.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ export const NPMX_DEV_API = 'https://npmx.dev/api'
77

88
export const getReplacement = createCachedFetch<ModuleReplacement>(
99
'replacement',
10-
(name, staleValue, { signal }) => {
10+
async (name, { signal }) => {
1111
const encodedName = encodePackageName(name)
1212

13-
return ofetch<ModuleReplacement>(`${NPMX_DEV_API}/replacements/${encodedName}`, { signal })
13+
return await ofetch<ModuleReplacement>(`${NPMX_DEV_API}/replacements/${encodedName}`, { signal })
1414
// Fallback for cache compatibility (LRUCache rejects null/undefined)
1515
?? {}
1616
},

0 commit comments

Comments
 (0)