From 9bf6d9596c164928bc4a11d01fd82b87a4cea21e Mon Sep 17 00:00:00 2001 From: Julien Oculi Date: Thu, 18 Jul 2024 15:39:54 +0200 Subject: [PATCH] feat(pwa): :sparkles: add new network only strategy --- src/serviceworker/src/strategy.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/serviceworker/src/strategy.ts b/src/serviceworker/src/strategy.ts index 3500bc6..df622fb 100644 --- a/src/serviceworker/src/strategy.ts +++ b/src/serviceworker/src/strategy.ts @@ -54,6 +54,32 @@ export class Strategy { } } } + + networkOnly( + { request, preloadResponse }: Pick, + ac: AbortController = new AbortController() + ): Promise { + // Browser preload + const preload = getPreload(preloadResponse, ac) + .then(response => { + if (response === undefined) { + throw new Error(`no preload response for ${request.url}`) + } + // Cancel fetch event + ac.abort() + return response + }) + + // Client fetch + const fetched = fetch(request, { signal: ac.signal }) + .then(response => { + // Cancel preload event + ac.abort() + return response + }) + + return Promise.race([preload, fetched]) + } } function getPreload(