Skip to content

Commit 9fe09d2

Browse files
Ajit Pratap Singhclaude
authored andcommitted
feat(website-v2): bundle analyzer, next/image, WASM service worker caching
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 7b92e17 commit 9fe09d2

8 files changed

Lines changed: 265 additions & 10 deletions

File tree

website/next.config.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
import type { NextConfig } from 'next';
2+
import withBundleAnalyzer from '@next/bundle-analyzer';
3+
4+
const withAnalyzer = withBundleAnalyzer({
5+
enabled: process.env.ANALYZE === 'true',
6+
});
27

38
const nextConfig: NextConfig = {
49
async headers() {
@@ -43,4 +48,4 @@ const nextConfig: NextConfig = {
4348
},
4449
};
4550

46-
export default nextConfig;
51+
export default withAnalyzer(nextConfig);

website/package-lock.json

Lines changed: 206 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

website/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"dev": "next dev",
77
"prebuild": "node scripts/split-changelog.js",
88
"build": "next build",
9-
"start": "next start"
9+
"start": "next start",
10+
"analyze": "ANALYZE=true next build"
1011
},
1112
"dependencies": {
1213
"@codemirror/lang-sql": "^6.10.0",
@@ -31,6 +32,7 @@
3132
"unist-util-visit": "^5.1.0"
3233
},
3334
"devDependencies": {
35+
"@next/bundle-analyzer": "^16.1.7",
3436
"@tailwindcss/postcss": "^4",
3537
"@types/node": "^20",
3638
"@types/react": "^19",

website/public/wasm-sw.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
const WASM_CACHE = 'gosqlx-wasm-v1';
2+
const WASM_URL = '/wasm/gosqlx.wasm';
3+
4+
self.addEventListener('install', (event) => {
5+
event.waitUntil(
6+
caches.open(WASM_CACHE).then((cache) => cache.add(WASM_URL))
7+
);
8+
self.skipWaiting();
9+
});
10+
11+
self.addEventListener('activate', (event) => {
12+
event.waitUntil(
13+
caches.keys().then((keys) =>
14+
Promise.all(keys.filter((k) => k !== WASM_CACHE).map((k) => caches.delete(k)))
15+
)
16+
);
17+
self.clients.claim();
18+
});
19+
20+
self.addEventListener('fetch', (event) => {
21+
if (event.request.url.endsWith('gosqlx.wasm')) {
22+
event.respondWith(
23+
caches.match(event.request).then((cached) => {
24+
if (cached) return cached;
25+
return fetch(event.request).then((response) => {
26+
const clone = response.clone();
27+
caches.open(WASM_CACHE).then((cache) => cache.put(event.request, clone));
28+
return response;
29+
});
30+
})
31+
);
32+
}
33+
});

0 commit comments

Comments
 (0)