12 lines
886 B
JavaScript
12 lines
886 B
JavaScript
import { readFile } from 'node:fs/promises'
|
|
import { resolve } from 'node:path'
|
|
|
|
const root = resolve(new URL('..', import.meta.url).pathname)
|
|
const serviceWorker = await readFile(resolve(root, 'dist/sw.js'), 'utf8')
|
|
const shellMatch = serviceWorker.match(/const SHELL = (\[[^\n]+\])/)
|
|
if (!shellMatch) throw new Error('Built PWA Service Worker shell is missing.')
|
|
const shell = JSON.parse(shellMatch[1])
|
|
const assetCount = shell.filter((entry) => entry.startsWith('/assets/')).length
|
|
if (!shell.includes('/index.html') || !shell.includes('/manifest.webmanifest') || assetCount < 5 || !shell.some((entry) => entry.endsWith('.wasm'))) throw new Error(`Built PWA precache is incomplete: ${assetCount} assets.`)
|
|
console.log(JSON.stringify({ status: 'built-pwa-assets-pass', shellEntries: shell.length, assetCount, wasmPrecached: shell.some((entry) => entry.endsWith('.wasm')) }, null, 2))
|