diff --git a/src/browser/register.ts b/src/browser/register.ts index c773f776..76558037 100644 --- a/src/browser/register.ts +++ b/src/browser/register.ts @@ -16,8 +16,23 @@ export async function registerServiceWorker(navigator: Navigator, path: string, } } -if (typeof navigator !== "undefined" && "serviceWorker" in navigator) { - const options = getOptions() - const path = normalize(`${options.csStaticBase}/dist/serviceWorker.js`) - registerServiceWorker(navigator, path, options) +interface HandleServiceWorkerRegistration { + getOptions: () => Options + normalize: (url: string, keepTrailing?: boolean) => string + registerServiceWorker: (navigator: Navigator, path: string, options: Options) => Promise } + +export function handleServiceWorkerRegistration({ + getOptions, + normalize, + registerServiceWorker, +}: HandleServiceWorkerRegistration): void { + if (typeof navigator !== "undefined" && "serviceWorker" in navigator) { + const options = getOptions() + const path = normalize(`${options.csStaticBase}/dist/serviceWorker.js`) + registerServiceWorker(navigator, path, options) + } +} + +// Written this way so that it's easier to test +handleServiceWorkerRegistration({ getOptions, normalize, registerServiceWorker })