From 654bc4035810377fa1e73947cfa9230e9826cbfd Mon Sep 17 00:00:00 2001 From: Julien Oculi Date: Wed, 17 Jul 2024 13:08:36 +0200 Subject: [PATCH] feat(pwa): :sparkles: update precache version with build_id --- routes/api/serviceworker/precache.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/routes/api/serviceworker/precache.tsx b/routes/api/serviceworker/precache.tsx index 57a8b63..9d763bf 100644 --- a/routes/api/serviceworker/precache.tsx +++ b/routes/api/serviceworker/precache.tsx @@ -1,11 +1,17 @@ import { expandGlob } from '$std/fs/mod.ts' import { SessionHandlers } from ':src/session/mod.ts' import { respondApi } from ':src/utils.ts' +import { BUILD_ID } from '$fresh/src/server/build_id.ts' +import { encodeBase64 } from '@std/encoding' export type PrecacheResponse = { version: string; preCachedUrls: string[] } -// Updated only at server start -const version = crypto.randomUUID() +async function getVersion() { + const versionRaw = crypto.randomUUID() + BUILD_ID + const versionBytes = new TextEncoder().encode(versionRaw) + const versionHash = await crypto.subtle.digest('SHA-256', versionBytes) + return encodeBase64(versionHash) +} export const handler: SessionHandlers = { async GET() { @@ -13,6 +19,7 @@ export const handler: SessionHandlers = { const preCachedUrls: string[] = ['/', '/imports/markdown_css'] const paths = ['/static/**', '/_fresh/static/**'] const routes = '/routes/*/index.tsx' + const version = await getVersion() //Pre-cache routes for await (const route of expandGlob(routes, { root: '.' })) {