Access build artifacts, static files, and prerendered pages in service workers.
// From '$service-worker'
const base: string;
const build: string[];
const files: string[];
const prerendered: string[];
const version: string;Usage:
// src/service-worker.ts
import { build, files, prerendered, version } from '$service-worker';
const CACHE_NAME = `cache-${version}`;
const ASSETS = [...build, ...files, ...prerendered];
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME).then((cache) => {
return cache.addAll(ASSETS);
})
);
});
self.addEventListener('activate', (event) => {
event.waitUntil(
caches.keys().then((keys) => {
return Promise.all(
keys
.filter((key) => key !== CACHE_NAME)
.map((key) => caches.delete(key))
);
})
);
});
self.addEventListener('fetch', (event) => {
if (event.request.method !== 'GET') return;
event.respondWith(
caches.match(event.request).then((cached) => {
return cached || fetch(event.request);
})
);
});src/service-worker.ts (or .js)base: The base path of the deployment (equivalent to config.kit.paths.base)build: App build files (JS, CSS)files: Static files from static/ directoryprerendered: Prerendered page pathsversion: App version from config.kit.version.name/)version for cache bustingconfig.kit.serviceWorker.register = truesrc/service-worker.tsbase but no assets in service workers, since service workers cannot be used if config.kit.paths.assets is specified