import { build } from "esbuild"; import { readFile, writeFile } from "node:fs/promises"; import { fileURLToPath } from "node:url"; const output = new URL("../public/sw.js", import.meta.url); const result = await build({ entryPoints: [fileURLToPath(new URL("../src/lib/pwa/service-worker.ts", import.meta.url))], bundle: true, format: "iife", platform: "browser", target: "es2020", write: false, banner: { js: "// Generated from src/lib/pwa/service-worker.ts; run npm run assets:pwa." }, }); const bytes = result.outputFiles[0].contents; if (process.argv.includes("--check")) { const existing = await readFile(output); if (!existing.equals(Buffer.from(bytes))) throw new Error("PWA worker is stale. Run npm run assets:pwa."); } else { const existing = await readFile(output).catch(() => null); if (!existing?.equals(Buffer.from(bytes))) await writeFile(output, bytes); }