Files
Web_FreeCAD_Bitbybit/scripts/check-pwa-assets.mjs

15 lines
1.3 KiB
JavaScript

import { readFile } from 'node:fs/promises'
import { resolve } from 'node:path'
const root = resolve(new URL('..', import.meta.url).pathname)
const manifest = JSON.parse(await readFile(resolve(root, 'public/manifest.webmanifest'), 'utf8'))
const serviceWorker = await readFile(resolve(root, 'public/sw.js'), 'utf8')
const main = await readFile(resolve(root, 'src/main.tsx'), 'utf8')
const fail = (message) => { throw new Error(`PWA asset check: ${message}`) }
if (manifest.name !== 'BitBybit CAD Studio' || manifest.start_url !== '/start' || manifest.scope !== '/' || manifest.display !== 'standalone' || manifest.theme_color !== '#111519') fail('manifest metadata is invalid.')
if (!serviceWorker.includes("const CACHE_NAME = 'bitbybit-cad-shell-v1'") || !serviceWorker.includes('skipWaiting') || !serviceWorker.includes('clients.claim') || !serviceWorker.includes('caches.match') || !serviceWorker.includes('keys.filter((key) => key !== CACHE_NAME)') || !serviceWorker.includes('caches.delete(key)')) fail('service worker install/activate/fallback/migration policy is incomplete.')
if (!main.includes("navigator.serviceWorker.register('/sw.js'")) fail('production service worker registration is missing.')
console.log(JSON.stringify({ status: 'pwa-assets-pass', name: manifest.name, startUrl: manifest.start_url, cache: 'bitbybit-cad-shell-v1' }, null, 2))