refactor(pwa): ♻️ remove outdated fetch strategies

This commit is contained in:
Julien Oculi 2024-07-18 16:06:56 +02:00
parent 3d38315e1b
commit e0cc73b6a7

View file

@ -5,34 +5,6 @@ export class FetchStrategy {
)
}
static cacheFirst(
cache: Cache,
{ request, preloadResponse }: Pick<
FetchEvent,
'request' | 'preloadResponse'
>,
) {
const fetchRequest = async () => {
const response = await fetch(request)
if (response.ok) {
cache.put(request, response)
}
}
// Get navigator preload request
preloadResponse
.then((preload: Response | undefined) => {
if (preload?.ok) {
return cache.put(request, preload)
}
throw new Error()
})
// Else fetch request
.catch(fetchRequest)
return cache.match(request)
}
static fastestAndCacheRefresh(
cache: Cache,
{ request, preloadResponse }: Pick<
@ -66,38 +38,6 @@ export class FetchStrategy {
return Promise.race([cachedOrError, fetchedAndCached])
}
static async networkFirst(
cache: Cache,
{ request, preloadResponse }: Pick<
FetchEvent,
'request' | 'preloadResponse'
>,
{ fallbackUrl, timeout }: { fallbackUrl?: string; timeout?: number },
) {
const signal = timeout ? AbortSignal.timeout(timeout) : undefined
try {
// Get navigator preload (see: https://developer.mozilla.org/en-US/docs/Web/API/Pick<FetchEvent, 'request' | 'preloadResponse'>/preloadResponse)
const preload = await getPreload(preloadResponse)
if (preload?.ok) {
cache.put(request, preload.clone())
return preload
}
} catch {
try {
// Else fetch request
const response = await fetch(request, { signal })
if (response.ok) {
cache.put(request, response.clone())
return response
}
} catch {
// Else return fallback or cached response
return cache.match(fallbackUrl ?? request)
}
}
}
static networkOnly(
{ request, preloadResponse }: Pick<
FetchEvent,
@ -132,6 +72,7 @@ function getPreload(
preloadResponse: FetchEvent['preloadResponse'],
ac?: { signal?: AbortSignal },
): Promise<Response | undefined> {
// Get navigator preload (see: https://developer.mozilla.org/en-US/docs/Web/API/Pick<FetchEvent, 'request' | 'preloadResponse'>/preloadResponse)
const { promise, resolve, reject } = Promise.withResolvers<
Response | undefined
>()