///
///
/**
* Cozsweet PWA Service Worker (Serwist source)
*
* 编译链:
* src/app/sw.ts (此文件)
* → esbuild (Serwist Turbopack 在 build 时跑)
* → /serwist/sw.js (App Router Route Handler 服务)
*
* precache 列表由 `withSerwist` 在 build 时注入 `self.__SW_MANIFEST`。
* Runtime cache 用 `defaultCache`(Serwist 推荐的 Google Fonts / Static / Image
* 缓存策略)—— 对聊天类应用够用。
*
* 配置:
* - skipWaiting: true 新 SW 立即 activate,避免旧 SW 卡住页面
* - clientsClaim: true 新 SW 立即接管所有打开的 client
* - navigationPreload: 用 preload API 加速文档请求(资源请求 SW 完成前先发)
*
* Offline fallback:`/~offline` 路由(serwist route handler 里也登记了
* `additionalPrecacheEntries`,双保险)。对应页面:
* `src/app/~offline/page.tsx`。
*/
import { defaultCache } from "@serwist/turbopack/worker";
import type { PrecacheEntry, SerwistGlobalConfig } from "serwist";
import { Serwist } from "serwist";
declare global {
interface WorkerGlobalScope extends SerwistGlobalConfig {
__SW_MANIFEST: (PrecacheEntry | string)[] | undefined;
}
}
declare const self: ServiceWorkerGlobalScope;
const serwist = new Serwist({
precacheEntries: self.__SW_MANIFEST,
skipWaiting: true,
clientsClaim: true,
navigationPreload: true,
runtimeCaching: defaultCache,
fallbacks: {
entries: [
{
url: "/~offline",
matcher({ request }) {
return request.destination === "document";
},
},
],
},
});
serwist.addEventListeners();