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
mod
node_modules
pack
package-lock.json
three.js
tmp
pack
web/boot/bundle.bin

View file

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

View file

@ -3,7 +3,7 @@ import path from 'path';
import uglify from 'uglify-js';
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
// --- recursive directory walker (follows symlinks safely) ---
@ -42,6 +42,9 @@ let offset = 0;
let cache = new Map();
for (const { file, virt } of entries) {
if (file.endsWith('/bundle.bin')) {
continue;
}
let record = cache.get(file);
if (record) {
// console.log({ dup: file });

View file

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

View file

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