chore(sw.js): add lightweight service worker
This commit is contained in:
parent
2b3a15bf9b
commit
5accae02cc
6 changed files with 86 additions and 3 deletions
4
package-lock.json
generated
4
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "coryd.dev",
|
"name": "coryd.dev",
|
||||||
"version": "4.0.6",
|
"version": "4.1.7",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "coryd.dev",
|
"name": "coryd.dev",
|
||||||
"version": "4.0.6",
|
"version": "4.1.7",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"html-minifier-terser": "7.2.0",
|
"html-minifier-terser": "7.2.0",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "coryd.dev",
|
"name": "coryd.dev",
|
||||||
"version": "4.0.6",
|
"version": "4.1.7",
|
||||||
"description": "The source for my personal site. Built using 11ty (and other tools).",
|
"description": "The source for my personal site. Built using 11ty (and other tools).",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
window.addEventListener("load", () => {
|
window.addEventListener("load", () => {
|
||||||
|
// service worker
|
||||||
|
if ('serviceWorker' in navigator) navigator.serviceWorker.register('/assets/scripts/sw.js');
|
||||||
|
|
||||||
// dialog controls
|
// dialog controls
|
||||||
(() => {
|
(() => {
|
||||||
const dialogButtons = document.querySelectorAll(".dialog-open");
|
const dialogButtons = document.querySelectorAll(".dialog-open");
|
||||||
|
|
59
src/assets/scripts/sw.js
Normal file
59
src/assets/scripts/sw.js
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
const cacheName = 'coryd.dev-static-assets';
|
||||||
|
const staticAssets = [
|
||||||
|
'/assets/styles/index.css',
|
||||||
|
'/assets/styles/noscript.css',
|
||||||
|
'/assets/fonts/sg.woff2',
|
||||||
|
'/assets/fonts/dm.woff2',
|
||||||
|
'/assets/fonts/dmi.woff2',
|
||||||
|
'/assets/fonts/ml.woff2',
|
||||||
|
'/assets/scripts/index.js',
|
||||||
|
'/assets/scripts/components/now-playing.js',
|
||||||
|
'/assets/scripts/components/select-pagination.js',
|
||||||
|
];
|
||||||
|
|
||||||
|
self.addEventListener('install', event => {
|
||||||
|
event.waitUntil(
|
||||||
|
caches.open(cacheName)
|
||||||
|
.then(cache => cache.addAll(staticAssets))
|
||||||
|
.then(() => self.skipWaiting())
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
self.addEventListener('activate', event => {
|
||||||
|
event.waitUntil(
|
||||||
|
(async () => {
|
||||||
|
const keys = await caches.keys();
|
||||||
|
await Promise.all(
|
||||||
|
keys.filter(key => key !== cacheName).map(key => caches.delete(key))
|
||||||
|
);
|
||||||
|
|
||||||
|
if (self.registration.navigationPreload) await self.registration.navigationPreload.enable();
|
||||||
|
|
||||||
|
await self.clients.claim();
|
||||||
|
})()
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
self.addEventListener('fetch', event => {
|
||||||
|
const request = event.request;
|
||||||
|
|
||||||
|
if (request.method !== 'GET') return;
|
||||||
|
if (request.headers.get('Accept').includes('text/html')) {
|
||||||
|
event.respondWith(
|
||||||
|
(async () => {
|
||||||
|
try {
|
||||||
|
const preloadResponse = await event.preloadResponse;
|
||||||
|
if (preloadResponse) return preloadResponse;
|
||||||
|
|
||||||
|
return await fetch(request);
|
||||||
|
} catch (err) {
|
||||||
|
return Response.error();
|
||||||
|
}
|
||||||
|
})()
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.respondWith(caches.match(request).then(response => response || fetch(request))
|
||||||
|
);
|
||||||
|
});
|
21
src/feeds/manifest.json.liquid
Normal file
21
src/feeds/manifest.json.liquid
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
permalink: "/manifest.json"
|
||||||
|
layout: null
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
excludeFromSitemap: true
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"lang": "{{ globals.lang }}",
|
||||||
|
"name": "{{ globals.site_name }}",
|
||||||
|
"description": "{{ globals.site_description }}",
|
||||||
|
"background_color": "#f9fafb",
|
||||||
|
"theme_color": "#f9fafb"
|
||||||
|
"display": "minimal-ui",
|
||||||
|
"dir": "ltr",
|
||||||
|
"icons": [
|
||||||
|
{ "src": "{{ globals.url }}/og/w200/{% appVersion %}{{ globals.avatar }}", "type": "image/png", "sizes": "192x192" },
|
||||||
|
{ "src": "{{ globals.url }}/og/w800/{% appVersion %}{{ globals.avatar }}", "type": "image/png", "sizes": "512x512" },
|
||||||
|
{ "src": "{{ globals.url }}/og/w800/{% appVersion %}{{ globals.avatar }}", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }
|
||||||
|
],
|
||||||
|
"start_url": "/",
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue