exclude bundle from itself. add ability to force SW cache update

This commit is contained in:
Stewart Allen 2025-10-12 20:22:53 -04:00
commit 38a6ef8f03
5 changed files with 14 additions and 9 deletions

3
.gitignore vendored
View file

@ -9,7 +9,8 @@ jszip-esm.js
logs logs
mod mod
node_modules node_modules
pack
package-lock.json package-lock.json
three.js three.js
tmp tmp
pack web/boot/bundle.bin

View file

@ -1,6 +1,6 @@
{ {
"outputs": { "outputs": {
"bundle": "./web/kiri/bundle.bin" "bundle": "./web/boot/bundle.bin"
}, },
"inputs": [ "inputs": [
{ "root": "./web", "prefix": "" }, { "root": "./web", "prefix": "" },

View file

@ -3,7 +3,7 @@ import path from 'path';
import uglify from 'uglify-js'; import uglify from 'uglify-js';
import { Buffer } from 'buffer'; import { Buffer } from 'buffer';
const cfg = JSON.parse(fs.readFileSync(process.argv[2] || './bundle.config.json', 'utf8')); const cfg = JSON.parse(fs.readFileSync(process.argv[2] || './bin/bundle.config.json', 'utf8'));
const compress = process.env.UGLIFY ? true : false const compress = process.env.UGLIFY ? true : false
// --- recursive directory walker (follows symlinks safely) --- // --- recursive directory walker (follows symlinks safely) ---
@ -42,6 +42,9 @@ let offset = 0;
let cache = new Map(); let cache = new Map();
for (const { file, virt } of entries) { for (const { file, virt } of entries) {
if (file.endsWith('/bundle.bin')) {
continue;
}
let record = cache.get(file); let record = cache.get(file);
if (record) { if (record) {
// console.log({ dup: file }); // console.log({ dup: file });

View file

@ -19,8 +19,10 @@
font-weight: bold; font-weight: bold;
} }
</style> </style>
<script> <script type="module">
import { version } from '/lib/moto/license.js';
(async () => { (async () => {
const ver = location.search.slice(1);
const reg = await navigator.serviceWorker.register('/boot/service.js', { scope: '/' }); const reg = await navigator.serviceWorker.register('/boot/service.js', { scope: '/' });
await reg.update(); await reg.update();
await navigator.serviceWorker.ready; await navigator.serviceWorker.ready;
@ -33,7 +35,7 @@
navigator.serviceWorker.controller.postMessage({ navigator.serviceWorker.controller.postMessage({
mode: 'cached', mode: 'cached',
version: 1 version: ver || version
}); });
navigator.serviceWorker.addEventListener('message', e => { navigator.serviceWorker.addEventListener('message', e => {

View file

@ -1,6 +1,6 @@
// --- configurable --- // --- configurable ---
const CACHE_VERSION = 'kiri-v001'; const CACHE_VERSION = 'boot-v001';
const BUNDLE_URL = '/kiri/bundle.bin'; const BUNDLE_URL = '/boot/bundle.bin';
const VERSION_KEY = '/__version__'; const VERSION_KEY = '/__version__';
let mode = 'cached'; let mode = 'cached';
@ -36,8 +36,7 @@ async function ensureVersion(incomingVersion) {
log('no version stored → preload'); log('no version stored → preload');
needPreload = true; needPreload = true;
} else { } else {
const text = await existing.text(); const stored = await existing.text();
const stored = parseInt(text, 10);
if (stored !== incomingVersion) { if (stored !== incomingVersion) {
log(`version mismatch ${stored} ≠ ${incomingVersion} → preload`); log(`version mismatch ${stored} ≠ ${incomingVersion} → preload`);
needPreload = true; needPreload = true;