refactor(pwa): ♻️ remove outdated fetch strategies
This commit is contained in:
parent
3d38315e1b
commit
e0cc73b6a7
|
|
@ -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
|
||||
>()
|
||||
|
|
|
|||
Loading…
Reference in a new issue