Review a service-worker asset update

src/service-worker.tsTypeScript
@@ -0,0 +1,47 @@
1+/// <reference lib="webworker" />
2+
3+declare const self: ServiceWorkerGlobalScope;
4+
5+const CACHE_NAME = "app-shell-v7";
6+const CORE_ASSETS = ["/index.html", "/assets/app.css", "/assets/app.js"];
7+
8+self.addEventListener("install", (event) => {
9+ event.waitUntil(
10+ caches.open(CACHE_NAME).then((cache) => cache.addAll(CORE_ASSETS)),
11+ );
12+ void self.skipWaiting();
13+});
14+
15+self.addEventListener("activate", (event) => {
16+ event.waitUntil(
17+ caches.keys().then(async (names) => {
18+ await Promise.all(
19+ names
20+ .filter((name) => name !== CACHE_NAME)
21+ .map((name) => caches.delete(name)),
22+ );
23+ }),
24+ );
25+ void self.clients.claim();
26+});
27+
28+self.addEventListener("fetch", (event) => {
29+ if (event.request.method !== "GET") {
30+ return;
31+ }
32+
33+ event.respondWith(
34+ caches.open(CACHE_NAME).then(async (cache) => {
35+ const cached = await cache.match(event.request);
36+ if (cached) {
37+ return cached;
38+ }
39+
40+ const response = await fetch(event.request);
41+ await cache.put(event.request, response);
42+ return response;
43+ }),
44+ );
45+});
46+
47+export {};