aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/sw/sw.ts
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-10-31 00:42:06 +0800
committerGitHub <noreply@github.com>2020-10-31 00:42:06 +0800
commit1b80b699e477a0c14a069401cf39126d19668bf0 (patch)
tree0d1c10cd42398bea87e0169e8a4ec385b71f49bc /FrontEnd/src/sw/sw.ts
parent0062a22423806c9501752132133e14de02355760 (diff)
parent5875e7a19ff8eb244e2849647ba35aa898de6b52 (diff)
downloadtimeline-1b80b699e477a0c14a069401cf39126d19668bf0.tar.gz
timeline-1b80b699e477a0c14a069401cf39126d19668bf0.tar.bz2
timeline-1b80b699e477a0c14a069401cf39126d19668bf0.zip
Merge pull request #161 from crupest/upgrade
Upgrade packages and split front end and back end.
Diffstat (limited to 'FrontEnd/src/sw/sw.ts')
-rw-r--r--FrontEnd/src/sw/sw.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/FrontEnd/src/sw/sw.ts b/FrontEnd/src/sw/sw.ts
new file mode 100644
index 00000000..d6202f36
--- /dev/null
+++ b/FrontEnd/src/sw/sw.ts
@@ -0,0 +1,28 @@
+import { precacheAndRoute, matchPrecache } from "workbox-precaching";
+import { setDefaultHandler } from "workbox-routing";
+import { NetworkOnly } from "workbox-strategies";
+
+declare let self: ServiceWorkerGlobalScope;
+
+self.addEventListener("message", (event) => {
+ if (event.data && (event.data as { type: string }).type === "SKIP_WAITING") {
+ void self.skipWaiting();
+ }
+});
+
+precacheAndRoute(self.__WB_MANIFEST);
+
+const networkOnly = new NetworkOnly();
+
+setDefaultHandler((options) => {
+ const { request, url } = options;
+ if (url && url.pathname.startsWith("/api/")) {
+ return networkOnly.handle(options);
+ }
+
+ if (request instanceof Request && request.destination === "document")
+ return matchPrecache("/index.html").then((r) =>
+ r == null ? Response.error() : r
+ );
+ else return networkOnly.handle(options);
+});