tutu/src/serviceworker/main.ts

36 lines
936 B
TypeScript
Raw Normal View History

import { cleanupOutdatedCaches, precacheAndRoute } from "workbox-precaching";
import { clientsClaim } from "workbox-core";
import type { AnyCall } from "./services";
function checkServiceWorker(
self: WorkerGlobalScope,
): self is ServiceWorkerGlobalScope {
return !!(self as unknown as ServiceWorkerGlobalScope).registration;
}
if (checkServiceWorker(self)) {
cleanupOutdatedCaches();
precacheAndRoute(self.__WB_MANIFEST, {
cleanURLs: false
});
// auto update
self.skipWaiting();
clientsClaim();
} else {
throw new TypeError("This entry point must be run in a service worker");
}
self.addEventListener("message", (event: MessageEvent<AnyCall>) => {
if (event.data.method === "ping") {
event.source.postMessage({id: event.data.id, jsonrpc: "2.0", result: undefined})
} else {
event.source.postMessage({
error: {
code: -32601,
message: "Method not found"
}
})
}
})