@swoff/cli 0.3.7 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -610
- package/dist/__tests__/assemble-sw.test.js +4 -4
- package/dist/__tests__/assemble-sw.test.js.map +1 -1
- package/dist/__tests__/config-types.test.js +7 -4
- package/dist/__tests__/config-types.test.js.map +1 -1
- package/dist/__tests__/validator.test.js +50 -1
- package/dist/__tests__/validator.test.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/commands/add.js +5 -4
- package/dist/lib/commands/add.js.map +1 -1
- package/dist/lib/commands/generate-guide.js +3 -3
- package/dist/lib/commands/generate-guide.js.map +1 -1
- package/dist/lib/commands/info.js +29 -6
- package/dist/lib/commands/info.js.map +1 -1
- package/dist/lib/config/validator.js +85 -4
- package/dist/lib/config/validator.js.map +1 -1
- package/dist/lib/generators/file-generators/client-injector.js +1 -1
- package/dist/lib/generators/file-generators/client-injector.js.map +1 -1
- package/dist/lib/generators/file-generators/fetch-wrapper.js +55 -14
- package/dist/lib/generators/file-generators/fetch-wrapper.js.map +1 -1
- package/dist/lib/generators/file-generators/generate-hooks.js +5 -1
- package/dist/lib/generators/file-generators/generate-hooks.js.map +1 -1
- package/dist/lib/generators/file-generators/gql-wrapper.js +152 -0
- package/dist/lib/generators/file-generators/gql-wrapper.js.map +1 -0
- package/dist/lib/generators/file-generators/guide-generator.js +214 -10
- package/dist/lib/generators/file-generators/guide-generator.js.map +1 -1
- package/dist/lib/generators/file-generators/mutation-queue.js +117 -49
- package/dist/lib/generators/file-generators/mutation-queue.js.map +1 -1
- package/dist/lib/generators/file-generators/mutation-state.js +126 -0
- package/dist/lib/generators/file-generators/mutation-state.js.map +1 -0
- package/dist/lib/generators/file-generators/quick-readme.js +59 -9
- package/dist/lib/generators/file-generators/quick-readme.js.map +1 -1
- package/dist/lib/generators/file-generators/server-push.js +136 -0
- package/dist/lib/generators/file-generators/server-push.js.map +1 -0
- package/dist/lib/generators/file-generators/type-definitions.js +28 -0
- package/dist/lib/generators/file-generators/type-definitions.js.map +1 -1
- package/dist/lib/generators/sw-sections/assemble-sw.js +6 -1
- package/dist/lib/generators/sw-sections/assemble-sw.js.map +1 -1
- package/dist/lib/generators/sw-sections/background-sync-handler.js +22 -8
- package/dist/lib/generators/sw-sections/background-sync-handler.js.map +1 -1
- package/dist/lib/generators/sw-sections/config-header.js +1 -1
- package/dist/lib/generators/sw-sections/config-header.js.map +1 -1
- package/dist/lib/generators/sw-sections/default-template.js +2 -1
- package/dist/lib/generators/sw-sections/default-template.js.map +1 -1
- package/dist/lib/generators/sw-sections/fetch-handler.js +137 -98
- package/dist/lib/generators/sw-sections/fetch-handler.js.map +1 -1
- package/dist/lib/generators/sw-sections/server-push-handler.js +114 -0
- package/dist/lib/generators/sw-sections/server-push-handler.js.map +1 -0
- package/dist/lib/generators/sw-sections/tag-management.js +6 -5
- package/dist/lib/generators/sw-sections/tag-management.js.map +1 -1
- package/dist/lib/generators/swoff-files-generator.js +7 -1
- package/dist/lib/generators/swoff-files-generator.js.map +1 -1
- package/dist/lib/shared/config-types.js +40 -2
- package/dist/lib/shared/config-types.js.map +1 -1
- package/package.json +1 -1
- package/templates/hooks/useCachedFetch.jsx +43 -4
- package/templates/hooks/useCachedFetch.tsx +49 -6
- package/templates/hooks/useMutation.jsx +76 -0
- package/templates/hooks/useMutation.tsx +97 -0
- package/templates/hooks/useMutationQueue.jsx +19 -11
- package/templates/hooks/useMutationQueue.tsx +30 -15
- package/templates/hooks/useMutationState.jsx +27 -0
- package/templates/hooks/useMutationState.tsx +41 -0
- package/templates/hooks/usePrefetch.jsx +10 -0
- package/templates/hooks/usePrefetch.tsx +25 -0
|
@@ -34,6 +34,67 @@ export function generateGuide(ctx) {
|
|
|
34
34
|
w("- `handleUpdateApproved(version)` — accepts a pending update and reloads on activation");
|
|
35
35
|
w("- `skipWaiting()` — activates a waiting SW without reloading");
|
|
36
36
|
w("");
|
|
37
|
+
// ── Stale Time & Auto-Refresh ──
|
|
38
|
+
wb("## ⏱️ Stale Time — fresh vs stale data");
|
|
39
|
+
w("`staleTime` controls how long cached data is considered **fresh** before it becomes **stale**.");
|
|
40
|
+
w("When data is fresh, the SW serves it immediately from cache — no network request.");
|
|
41
|
+
w("When data is stale, the SW serves the cached copy but triggers a **background refresh**,");
|
|
42
|
+
w("so the next read returns fresh data.");
|
|
43
|
+
w("");
|
|
44
|
+
w("This is different from `maxCacheAge` (which **evicts** old entries entirely). StaleTime keeps the");
|
|
45
|
+
w("entry usable while silently refreshing it — the user never sees a loading spinner.");
|
|
46
|
+
w("");
|
|
47
|
+
w("**3-tier staleTime resolution (like strategies):**");
|
|
48
|
+
w("1. **Per-request** — `fetchWithCache(url, { staleTime: 30 })` overrides everything");
|
|
49
|
+
w("2. **Route pattern** — `\"/api/*\": { staleTime: 60 }` in `swoff.config.json`");
|
|
50
|
+
w("3. **Global default** — `features.serviceWorker.staleTime`");
|
|
51
|
+
w("");
|
|
52
|
+
w("**How staleTime changes each strategy:**");
|
|
53
|
+
w("| Strategy | Fresh data (within staleTime) | Stale data (past staleTime) |");
|
|
54
|
+
w("|----------|------------------------------|----------------------------|");
|
|
55
|
+
w("| `cache-first` | Serve from cache, no network | Serve from cache + background refresh |");
|
|
56
|
+
w("| `network-first` | Serve from cache, skip network | Try network first, fall back to cache |");
|
|
57
|
+
w("| `stale-while-revalidate` | Serve from cache, no refresh | Serve + background refresh (was always-refresh) |");
|
|
58
|
+
w("| `cache-only` | Serve from cache | Serve from cache + best-effort refresh |");
|
|
59
|
+
w("| `network-only` | No effect | No effect |");
|
|
60
|
+
w("");
|
|
61
|
+
// ── Auto-refetch (Window Focus / Reconnect / Interval) ──
|
|
62
|
+
wb("## 🔄 Auto-refetch — keep data fresh automatically");
|
|
63
|
+
w("Three events can trigger an automatic refetch at the hook level:");
|
|
64
|
+
w("");
|
|
65
|
+
w("- **refetchOnWindowFocus**: When the user returns to the tab, re-fetch stale data");
|
|
66
|
+
w("- **refetchOnReconnect**: When the browser comes back online, re-fetch stale data");
|
|
67
|
+
w("- **refetchInterval**: Poll the server every N seconds for fresh data");
|
|
68
|
+
w("");
|
|
69
|
+
w("These are configured at 3 tiers too:");
|
|
70
|
+
w("- Global: `features.serviceWorker.refetchOnWindowFocus: true`");
|
|
71
|
+
w("- Per-route: `\"/api/*\": { refetchOnWindowFocus: false }`");
|
|
72
|
+
w("- Per-request: `useCachedFetch(url, { refetchOnWindowFocus: true })`");
|
|
73
|
+
w("");
|
|
74
|
+
if (ctx.frameworkName === "react") {
|
|
75
|
+
w("### React Hook: `useMutation`");
|
|
76
|
+
w("Track mutation state (loading, error, success) per-operation.");
|
|
77
|
+
w("```tsx");
|
|
78
|
+
w(`import { useMutation } from "./swoff/hooks/useMutation.${ext}x";`);
|
|
79
|
+
w("");
|
|
80
|
+
w('const { mutate, isLoading, isError, isSuccess, data, error, reset } = useMutation({');
|
|
81
|
+
w(" onSuccess: (data) => console.log('done', data),");
|
|
82
|
+
w(" onError: (err) => console.error('failed', err),");
|
|
83
|
+
w("});");
|
|
84
|
+
w("");
|
|
85
|
+
w('mutate("/api/todos", { method: "POST", body: JSON.stringify({ title: "New" }) });');
|
|
86
|
+
w("```");
|
|
87
|
+
w("");
|
|
88
|
+
w("### React Hook: `usePrefetch`");
|
|
89
|
+
w("Warm the cache proactively, e.g., on link hover.");
|
|
90
|
+
w("```tsx");
|
|
91
|
+
w(`import { usePrefetch } from "./swoff/hooks/usePrefetch.${ext}x";`);
|
|
92
|
+
w("");
|
|
93
|
+
w("const prefetch = usePrefetch();");
|
|
94
|
+
w('return <a onMouseEnter={() => prefetch("/api/todos")} href="/todos">Todos</a>;');
|
|
95
|
+
w("```");
|
|
96
|
+
w("");
|
|
97
|
+
}
|
|
37
98
|
// ── Fetch Wrapper ──
|
|
38
99
|
wb("## 🌐 fetchWithCache — API calls with caching");
|
|
39
100
|
w("A drop-in replacement for `fetch()` that communicates with the service worker about caching strategy.");
|
|
@@ -79,6 +140,27 @@ export function generateGuide(ctx) {
|
|
|
79
140
|
w("The hook listens for `cache-invalidated` events (when tag invalidation is enabled) and automatically");
|
|
80
141
|
w("re-fetches if the event's tags match the URL. Call `refetch()` to manually refresh.");
|
|
81
142
|
w("");
|
|
143
|
+
w("### Dependent queries");
|
|
144
|
+
w("Use `enabled: false` or pass a nullable URL to skip fetching until a condition is met.");
|
|
145
|
+
w("When `enabled` becomes `true` or the URL becomes non-null, the query automatically starts fetching.");
|
|
146
|
+
w("```tsx");
|
|
147
|
+
w('const { data: user } = useCachedFetch<User>("/api/me");');
|
|
148
|
+
w('const { data: posts } = useCachedFetch<Post[]>(user ? "/api/posts" : null);');
|
|
149
|
+
w("// or");
|
|
150
|
+
w('const { data: posts2 } = useCachedFetch<Post[]>("/api/posts", { enabled: !!user });');
|
|
151
|
+
w("```");
|
|
152
|
+
w("");
|
|
153
|
+
w("### Query cancellation (AbortController)");
|
|
154
|
+
w("`fetchWithCache` integrates with the dedup map so duplicate requests are automatically deduplicated.");
|
|
155
|
+
w("Pass an AbortSignal to cancel an in-flight request:");
|
|
156
|
+
w("```tsx");
|
|
157
|
+
w("useEffect(() => {");
|
|
158
|
+
w(" const ctrl = new AbortController();");
|
|
159
|
+
w(' fetchWithCache("/api/search", { signal: ctrl.signal });');
|
|
160
|
+
w(" return () => ctrl.abort();");
|
|
161
|
+
w("}, [query]);");
|
|
162
|
+
w("```");
|
|
163
|
+
w("");
|
|
82
164
|
w("### React Hook: `useNetworkStatus`");
|
|
83
165
|
w("Tracks online/offline state reactively.");
|
|
84
166
|
w("```tsx");
|
|
@@ -116,20 +198,78 @@ export function generateGuide(ctx) {
|
|
|
116
198
|
w("");
|
|
117
199
|
w("### Available strategies");
|
|
118
200
|
w("");
|
|
119
|
-
w("| Strategy | Behavior | Best for |");
|
|
120
|
-
w("
|
|
121
|
-
w("| `cache-first` | Return cached if available, else fetch + cache. Default | Static assets, images, fonts |");
|
|
122
|
-
w("| `network-first` | Try network, cache on success, fall back to cache | API endpoints, dynamic content |");
|
|
123
|
-
w("| `stale-while-revalidate` | Return cached immediately, refresh in background | Fast UI, non-critical data |");
|
|
124
|
-
w("| `cache-only` | Serve from cache only (404 if missing) | Offline-critical assets |");
|
|
125
|
-
w("| `network-only` | Always fetch, never cache | Sensitive or real-time data |");
|
|
201
|
+
w("| Strategy | Behavior (without staleTime) | Behavior (with staleTime) | Best for |");
|
|
202
|
+
w("|----------|------------------------------|---------------------------|----------|");
|
|
203
|
+
w("| `cache-first` | Return cached if available, else fetch + cache. Default | Fresh: pure cache. Stale: cache + bg refresh | Static assets, images, fonts |");
|
|
204
|
+
w("| `network-first` | Try network, cache on success, fall back to cache | Fresh: pure cache (skip network!). Stale: try network | API endpoints, dynamic content |");
|
|
205
|
+
w("| `stale-while-revalidate` | Return cached immediately, refresh in background | Fresh: pure cache (no refresh). Stale: cache + bg refresh | Fast UI, non-critical data |");
|
|
206
|
+
w("| `cache-only` | Serve from cache only (404 if missing) | Fresh: pure cache. Stale: cache + best-effort refresh | Offline-critical assets |");
|
|
207
|
+
w("| `network-only` | Always fetch, never cache | No effect | Sensitive or real-time data |");
|
|
126
208
|
w("");
|
|
209
|
+
// ── GraphQL ──
|
|
210
|
+
if (config.features.graphql.enabled) {
|
|
211
|
+
wb("## ⚡ GraphQL");
|
|
212
|
+
w("Swoff brings caching, offline queue, auth, and tag-based invalidation to GraphQL APIs via `fetchWithGql`. It hashes");
|
|
213
|
+
w("the query + variables into a deterministic cache key (`X-SW-Cache-Key`) for SW-level caching, and auto-generates");
|
|
214
|
+
w("tags from operation names for automatic cache invalidation after mutations.");
|
|
215
|
+
w("");
|
|
216
|
+
w("### `gql-wrapper.ts`");
|
|
217
|
+
w("```ts");
|
|
218
|
+
w(`import { queryGql, mutateGql } from "./swoff/gql-wrapper.${ext}";`);
|
|
219
|
+
w("");
|
|
220
|
+
w("// Query — cached with body-hash key");
|
|
221
|
+
w('const { data } = await queryGql("{ todos { id title } }");');
|
|
222
|
+
w("");
|
|
223
|
+
w("// Query with variables");
|
|
224
|
+
w('const { data: todo } = await queryGql(');
|
|
225
|
+
w(' "query GetTodo($id: ID!) { todo(id: $id) { id title } }",');
|
|
226
|
+
w(' { id: "42" },');
|
|
227
|
+
w(");");
|
|
228
|
+
w("");
|
|
229
|
+
w("// Mutation — auto-invalidates 'todos' cache");
|
|
230
|
+
w('const { data: created } = await mutateGql(');
|
|
231
|
+
w(' "mutation CreateTodo($title: String!) { createTodo(title: $title) { id } }",');
|
|
232
|
+
w(' { title: "New task" },');
|
|
233
|
+
w(");");
|
|
234
|
+
w("");
|
|
235
|
+
w("// With auth, stale-while-revalidate, and custom tags");
|
|
236
|
+
w('const { data, fromCache } = await queryGql(');
|
|
237
|
+
w(' "query Me { me { name } }",');
|
|
238
|
+
w(" {},");
|
|
239
|
+
w(' { auth: true, staleWhileRevalidate: true, tags: ["users"] },');
|
|
240
|
+
w(");");
|
|
241
|
+
w("```");
|
|
242
|
+
w("");
|
|
243
|
+
w("**How it works:**");
|
|
244
|
+
w("- Queries are POSTed as `type: \"read\"` with `X-SW-Cache-Key: gql:<sha256-hash>`");
|
|
245
|
+
w("- The SW caches responses under a virtual URL (`/__swc/gql:<hash>`) so different queries never collide");
|
|
246
|
+
w("- Mutations are POSTed as `type: \"mutation\"` — auto-invalidate tags from operation name");
|
|
247
|
+
w("- Offline mutations are queued via the mutation queue (if enabled)");
|
|
248
|
+
w("- Auth, strategy override, and custom tags work the same as `fetchWithCache`");
|
|
249
|
+
w("");
|
|
250
|
+
w("**Functions:**");
|
|
251
|
+
w("- `fetchWithGql<T>(query, options?)` — core GQL fetch with all Swoff features");
|
|
252
|
+
w("- `queryGql<T>(query, variables?, options?)` — shorthand for queries");
|
|
253
|
+
w("- `mutateGql<T>(mutation, variables?, options?)` — shorthand for mutations");
|
|
254
|
+
w("");
|
|
255
|
+
w("**Config:**");
|
|
256
|
+
w("```json");
|
|
257
|
+
w('"graphql": { "enabled": true, "endpoint": "/graphql" }');
|
|
258
|
+
w("```");
|
|
259
|
+
w("");
|
|
260
|
+
}
|
|
127
261
|
// ── Mutation Queue ──
|
|
128
|
-
if (config.features.mutationQueue) {
|
|
262
|
+
if (config.features.mutationQueue.enabled) {
|
|
129
263
|
wb("## 📝 Mutation Queue — offline writes that sync when back online");
|
|
130
264
|
w("When the user is offline and performs a write (POST/PUT/PATCH/DELETE), `queueMutation` stores it");
|
|
131
265
|
w("in IndexedDB. When the connection returns, `processMutationQueue` replays them in order.");
|
|
132
266
|
w("");
|
|
267
|
+
w("**Configurable batching:** set `batchSize`, `batchDelayMs`, `maxRetries`, and `retryBackoffMs` in `swoff.config.json` under `features.mutationQueue`.");
|
|
268
|
+
w("- `batchSize` (default 1) — mutations per progress event");
|
|
269
|
+
w("- `batchDelayMs` (default 0) — delay between mutations (rate limiting)");
|
|
270
|
+
w("- `maxRetries` (default 5) — max attempts before dropping");
|
|
271
|
+
w("- `retryBackoffMs` (default 1000) — exponential backoff base (nextRetry = backoff × 2^retryCount)");
|
|
272
|
+
w("");
|
|
133
273
|
w("### `mutation-queue.ts`");
|
|
134
274
|
w("```ts");
|
|
135
275
|
w(`import { queueMutation, processMutationQueue, flushMutations, getPendingCount } from "./swoff/mutation-queue.${ext}";`);
|
|
@@ -148,7 +288,7 @@ export function generateGuide(ctx) {
|
|
|
148
288
|
w("");
|
|
149
289
|
w("**Functions:**");
|
|
150
290
|
w("- `queueMutation(mutation)` — store a write for later sync");
|
|
151
|
-
w("- `processMutationQueue()` — replay all queued writes.
|
|
291
|
+
w("- `processMutationQueue()` — replay all queued writes. Respects batchDelayMs, maxRetries, retryBackoffMs.");
|
|
152
292
|
w("- `flushMutations()` — same as processMutationQueue. Call after re-login.");
|
|
153
293
|
w("- `getPendingCount()` — number of mutations waiting to sync.");
|
|
154
294
|
w("");
|
|
@@ -340,6 +480,62 @@ export function generateGuide(ctx) {
|
|
|
340
480
|
w("");
|
|
341
481
|
}
|
|
342
482
|
}
|
|
483
|
+
// ── Server Push ──
|
|
484
|
+
if (config.features.serverPush.enabled) {
|
|
485
|
+
wb("## 📡 Server Push Events — real-time cache invalidation");
|
|
486
|
+
w("Instead of polling, the service worker maintains an SSE or WebSocket connection to your push endpoint.");
|
|
487
|
+
w("When the server signals that data has changed (via an `invalidate` event), the SW automatically");
|
|
488
|
+
w("calls `invalidateByTag()` so the next read gets fresh data.");
|
|
489
|
+
w("");
|
|
490
|
+
const pushType = config.features.serverPush.type;
|
|
491
|
+
w(`### Transport: **${pushType.toUpperCase()}**`);
|
|
492
|
+
if (pushType === "sse") {
|
|
493
|
+
w("The SW establishes an `EventSource` connection. The server sends events with event name `invalidate`");
|
|
494
|
+
w("and a JSON payload: `{ tags: string[] }`. On receiving it, the SW calls `invalidateByTags(tags)`.");
|
|
495
|
+
w("");
|
|
496
|
+
w("**Server format (SSE):**");
|
|
497
|
+
w("```");
|
|
498
|
+
w("event: invalidate");
|
|
499
|
+
w("data: {\"tags\":[\"todos\",\"categories\"]}");
|
|
500
|
+
w("");
|
|
501
|
+
w("```");
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
w("The SW establishes a WebSocket connection. The server sends text frames with JSON payload:");
|
|
505
|
+
w('`{ "event": "invalidate", "tags": string[] }`. On receiving it, the SW calls `invalidateByTags(tags)`.');
|
|
506
|
+
w("");
|
|
507
|
+
w("**Server format (WebSocket):**");
|
|
508
|
+
w("```json");
|
|
509
|
+
w('{ "event": "invalidate", "tags": ["todos", "categories"] }');
|
|
510
|
+
w("```");
|
|
511
|
+
}
|
|
512
|
+
w("");
|
|
513
|
+
w("### `server-push.ts` — Client-side connection manager");
|
|
514
|
+
w("```ts");
|
|
515
|
+
w(`import { startPushEvents, stopPushEvents, isPushConnected } from "./swoff/server-push.${ext}";`);
|
|
516
|
+
w("");
|
|
517
|
+
w("// Start listening for push events");
|
|
518
|
+
w("startPushEvents();");
|
|
519
|
+
w("");
|
|
520
|
+
w("// Check connection");
|
|
521
|
+
w('if (isPushConnected()) {');
|
|
522
|
+
w(' console.log("Connected to push endpoint");');
|
|
523
|
+
w("}");
|
|
524
|
+
w("```");
|
|
525
|
+
w("");
|
|
526
|
+
w("**Functions:**");
|
|
527
|
+
w("- `startPushEvents()` — connect to the push endpoint and begin listening for invalidation events");
|
|
528
|
+
w("- `stopPushEvents()` — disconnect from the push endpoint");
|
|
529
|
+
w("- `isPushConnected()` — check if the connection is active");
|
|
530
|
+
w("");
|
|
531
|
+
w("> ⚠️ The service worker directly manages the SSE/WS connection for reliability across page navigations.");
|
|
532
|
+
w("> The client-side `server-push.ts` is a fallback that starts the connection when the SW is not yet active.");
|
|
533
|
+
w("");
|
|
534
|
+
if (ctx.frameworkName === "react") {
|
|
535
|
+
w("### React Hook: `useServerPush()` (coming in a future release)");
|
|
536
|
+
w("");
|
|
537
|
+
}
|
|
538
|
+
}
|
|
343
539
|
// ── Push Notifications ──
|
|
344
540
|
if (config.features.pushNotifications?.enabled) {
|
|
345
541
|
wb("## 🔔 Push Notifications — subscription management");
|
|
@@ -434,15 +630,23 @@ export function generateGuide(ctx) {
|
|
|
434
630
|
w("Re-run `npx @swoff/cli generate` after changing it.");
|
|
435
631
|
w("");
|
|
436
632
|
w("### Features you can toggle:");
|
|
437
|
-
w("- `mutationQueue` — offline write queue with IndexedDB");
|
|
633
|
+
w("- `mutationQueue.enabled` — offline write queue with IndexedDB. Object: `{ enabled, batchSize, batchDelayMs, maxRetries, retryBackoffMs }`");
|
|
438
634
|
w("- `backgroundSync` — Background Sync API (Chrome/Edge only)");
|
|
439
635
|
w("- `auth.enabled` — auth module (bearer/cookie/custom)");
|
|
440
636
|
w("- `crossTabSync` — broadcast changes across tabs");
|
|
441
637
|
w("- `tagInvalidation` — cache invalidation by tags");
|
|
638
|
+
w("- `graphql.enabled` — GraphQL wrapper with body-hash caching. Object: `{ enabled, endpoint }`");
|
|
442
639
|
w("- `pwa.enabled` — PWA install prompt and manifest");
|
|
640
|
+
w("- `serverPush.enabled` — real-time cache invalidation via SSE/WebSocket. Object: `{ enabled, type, endpoint, reconnectDelayMs }`");
|
|
443
641
|
w("- `serviceWorker.cacheStrategy` — caching strategy mode (`\"all\"` or `\"explicit-only\"`)");
|
|
444
642
|
w("- `serviceWorker.defaultStrategy` — default caching strategy");
|
|
445
643
|
w("- `serviceWorker.strategies` — per-route strategy overrides");
|
|
644
|
+
w("- `serviceWorker.staleTime` — global stale time in seconds (data considered fresh for N seconds)");
|
|
645
|
+
w("- `serviceWorker.refetchOnWindowFocus` — auto-refetch on tab focus (hook-level)");
|
|
646
|
+
w("- `serviceWorker.refetchOnReconnect` — auto-refetch on reconnect");
|
|
647
|
+
w("- `serviceWorker.refetchInterval` — auto-refetch every N seconds");
|
|
648
|
+
w("- `serviceWorker.maxCacheEntries` — max entries in runtime cache (oldest evicted)");
|
|
649
|
+
w("- `serviceWorker.maxCacheAge` — max age of cache entries in ms");
|
|
446
650
|
w("");
|
|
447
651
|
w("---");
|
|
448
652
|
writeFile(ctx, "GUIDE.md", lines.join("\n"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide-generator.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/guide-generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"guide-generator.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/guide-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generates mutation-queue.js - offline mutation queue with IndexedDB.
|
|
3
|
-
*/
|
|
4
1
|
import { writeFile } from "./context.js";
|
|
5
2
|
export function generateMutationQueue(ctx) {
|
|
6
3
|
const ext = ctx.ext;
|
|
@@ -10,24 +7,32 @@ export function generateMutationQueue(ctx) {
|
|
|
10
7
|
const PT = (type) => (ts ? `<${type}>` : "");
|
|
11
8
|
const AS = (type) => (ts ? ` as ${type}` : "");
|
|
12
9
|
const authEnabled = ctx.config.features.auth.enabled;
|
|
10
|
+
const mqConfig = ctx.config.features.mutationQueue;
|
|
11
|
+
const batchSize = mqConfig.batchSize;
|
|
12
|
+
const batchDelayMs = mqConfig.batchDelayMs;
|
|
13
|
+
const maxRetries = mqConfig.maxRetries;
|
|
14
|
+
const retryBackoffMs = mqConfig.retryBackoffMs;
|
|
13
15
|
const importLines = authEnabled
|
|
14
16
|
? `import { getAuth } from "./auth/store.${ext}";
|
|
15
17
|
`
|
|
16
18
|
: "";
|
|
17
19
|
const additionalImports = `import { invalidateByTags } from "./cache.${ext}";
|
|
18
|
-
${ts
|
|
19
|
-
`
|
|
20
|
-
|
|
20
|
+
${ts
|
|
21
|
+
? `import type { MutationQueueItem } from "./swoff.d.ts";
|
|
22
|
+
`
|
|
23
|
+
: ""}`;
|
|
24
|
+
const authReplayHeaders = authEnabled
|
|
21
25
|
? ` const auth = await getAuth();
|
|
22
26
|
const authHeader${T("Record<string, string>")} = auth?.token ? { Authorization: \`Bearer \${auth.token}\` } : {};
|
|
23
27
|
`
|
|
24
28
|
: "";
|
|
25
|
-
const
|
|
26
|
-
? ` ...authHeader
|
|
27
|
-
: "";
|
|
29
|
+
const authHeaderSpread = authEnabled
|
|
30
|
+
? ` ...authHeader,\n`
|
|
31
|
+
: " ";
|
|
28
32
|
const code = `/**
|
|
29
33
|
* Swoff Mutation Queue
|
|
30
34
|
* Queue offline writes and sync when connection returns.
|
|
35
|
+
* Supports configurable batch size, rate limiting, and exponential backoff.
|
|
31
36
|
*
|
|
32
37
|
* Usage:
|
|
33
38
|
* import { queueMutation, processMutationQueue, flushMutations, getPendingCount } from './swoff/mutation-queue.${ext}';
|
|
@@ -44,11 +49,24 @@ ${ts ? `import type { MutationQueueItem } from "./swoff.d.ts";
|
|
|
44
49
|
* await flushMutations();
|
|
45
50
|
*
|
|
46
51
|
* // Auto-processes on online event
|
|
52
|
+
*
|
|
53
|
+
* Config:
|
|
54
|
+
* batchSize: ${batchSize} — mutations per progress event
|
|
55
|
+
* batchDelayMs: ${batchDelayMs} — delay between mutations (rate limiting)
|
|
56
|
+
* maxRetries: ${maxRetries} — max retries before dropping
|
|
57
|
+
* retryBackoffMs: ${retryBackoffMs} — exponential backoff base
|
|
47
58
|
*/
|
|
48
59
|
|
|
49
60
|
${importLines}${additionalImports}const DB_NAME = "swoff-queue";
|
|
50
61
|
const STORE_NAME = "mutations";
|
|
51
|
-
const
|
|
62
|
+
const BATCH_SIZE = ${batchSize};
|
|
63
|
+
const BATCH_DELAY_MS = ${batchDelayMs};
|
|
64
|
+
const MAX_RETRIES = ${maxRetries};
|
|
65
|
+
const RETRY_BACKOFF_MS = ${retryBackoffMs};
|
|
66
|
+
|
|
67
|
+
function sleep(ms${T("number")})${R("Promise<void>")}{
|
|
68
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
69
|
+
}
|
|
52
70
|
|
|
53
71
|
function openQueueDB()${R("Promise<IDBDatabase>")}{
|
|
54
72
|
return new Promise${PT("IDBDatabase")}((resolve, reject) => {
|
|
@@ -93,6 +111,7 @@ export async function queueMutation(mutation${T("Partial<MutationQueueItem>")})$
|
|
|
93
111
|
headers: mutation.headers || {},
|
|
94
112
|
timestamp: Date.now(),
|
|
95
113
|
retryCount: 0,
|
|
114
|
+
nextRetryAt: 0,
|
|
96
115
|
tags: mutation.tags || [],
|
|
97
116
|
});
|
|
98
117
|
|
|
@@ -104,13 +123,57 @@ export async function queueMutation(mutation${T("Partial<MutationQueueItem>")})$
|
|
|
104
123
|
window.dispatchEvent(new CustomEvent("mutation-queue-changed"));
|
|
105
124
|
}
|
|
106
125
|
|
|
107
|
-
/**
|
|
126
|
+
/** Replay a single queued mutation. Returns true on success, false on failure. */
|
|
127
|
+
async function replayMutation(item${T("MutationQueueItem")})${R("Promise<boolean>")}{
|
|
128
|
+
try {
|
|
129
|
+
${authReplayHeaders} let replayBody${T("BodyInit | null")}${ts ? " = null" : ""};
|
|
130
|
+
let contentType${T("string | undefined")};
|
|
131
|
+
const bt = item.bodyType || "json";
|
|
132
|
+
if (bt === "formdata") {
|
|
133
|
+
replayBody = new FormData();
|
|
134
|
+
for (const [key, value] of (item.body || [])${AS("[string, FormDataEntryValue][]")}) {
|
|
135
|
+
replayBody.append(key, value);
|
|
136
|
+
}
|
|
137
|
+
} else if (bt === "blob") {
|
|
138
|
+
replayBody = item.body${AS("BodyInit | null")};
|
|
139
|
+
} else if (bt === "buffer") {
|
|
140
|
+
replayBody = item.body instanceof ArrayBuffer ? new Uint8Array(item.body)${AS("BodyInit")} : item.body${AS("BodyInit")};
|
|
141
|
+
} else {
|
|
142
|
+
replayBody = JSON.stringify(item.body);
|
|
143
|
+
contentType = "application/json";
|
|
144
|
+
}
|
|
145
|
+
const response = await fetch(item.url, {
|
|
146
|
+
method: item.method,
|
|
147
|
+
headers: {
|
|
148
|
+
...(contentType ? { "Content-Type": contentType } : {}),
|
|
149
|
+
${authHeaderSpread} ...item.headers,
|
|
150
|
+
},
|
|
151
|
+
body: replayBody,
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
if (!response.ok) throw new Error(\`HTTP \${response.status}\`);
|
|
155
|
+
|
|
156
|
+
if (item.tags && item.tags.length > 0) {
|
|
157
|
+
await invalidateByTags(item.tags);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
await removeFromQueue(item.id);
|
|
161
|
+
return true;
|
|
162
|
+
} catch {
|
|
163
|
+
item.retryCount++;
|
|
164
|
+
item.nextRetryAt = Date.now() + RETRY_BACKOFF_MS * Math.pow(2, item.retryCount - 1);
|
|
165
|
+
await updateInQueue(item);
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/** Process all queued mutations in order. Sends them to the server. Runs automatically on the online event. Respects batchSize for progress reporting and batchDelayMs for rate limiting. */
|
|
108
171
|
export async function processMutationQueue()${R("Promise<void>")}{
|
|
109
172
|
if (!navigator.onLine || isSyncing) return;
|
|
110
173
|
isSyncing = true;
|
|
111
174
|
|
|
112
175
|
try {
|
|
113
|
-
|
|
176
|
+
const db = await openQueueDB();
|
|
114
177
|
const tx = db.transaction(STORE_NAME, "readonly");
|
|
115
178
|
const store = tx.objectStore(STORE_NAME);
|
|
116
179
|
const index = store.index("by-timestamp");
|
|
@@ -122,6 +185,7 @@ ${authReplayBlock} const db = await openQueueDB();
|
|
|
122
185
|
|
|
123
186
|
let succeeded = 0;
|
|
124
187
|
let failed = 0;
|
|
188
|
+
const total = queue.length;
|
|
125
189
|
|
|
126
190
|
for (const item of queue) {
|
|
127
191
|
if (item.retryCount >= MAX_RETRIES) {
|
|
@@ -130,50 +194,36 @@ ${authReplayBlock} const db = await openQueueDB();
|
|
|
130
194
|
continue;
|
|
131
195
|
}
|
|
132
196
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
if (bt === "formdata") {
|
|
138
|
-
replayBody = new FormData();
|
|
139
|
-
for (const [key, value] of (item.body || [])${AS("[string, FormDataEntryValue][]")}) {
|
|
140
|
-
replayBody.append(key, value);
|
|
141
|
-
}
|
|
142
|
-
} else if (bt === "blob") {
|
|
143
|
-
replayBody = item.body${AS("BodyInit | null")};
|
|
144
|
-
} else if (bt === "buffer") {
|
|
145
|
-
replayBody = item.body instanceof ArrayBuffer ? new Uint8Array(item.body)${AS("BodyInit")} : item.body${AS("BodyInit")};
|
|
146
|
-
} else {
|
|
147
|
-
replayBody = JSON.stringify(item.body);
|
|
148
|
-
contentType = "application/json";
|
|
149
|
-
}
|
|
150
|
-
const response = await fetch(item.url, {
|
|
151
|
-
method: item.method,
|
|
152
|
-
headers: {
|
|
153
|
-
...(contentType ? { "Content-Type": contentType } : {}),
|
|
154
|
-
${authHeadersSpread} ...item.headers,
|
|
155
|
-
},
|
|
156
|
-
body: replayBody,
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
if (!response.ok) throw new Error(\`HTTP \${response.status}\`);
|
|
160
|
-
|
|
161
|
-
if (item.tags && item.tags.length > 0) {
|
|
162
|
-
await invalidateByTags(item.tags);
|
|
163
|
-
}
|
|
197
|
+
// Skip items whose backoff delay hasn't elapsed yet
|
|
198
|
+
if (item.nextRetryAt && Date.now() < item.nextRetryAt) {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
164
201
|
|
|
165
|
-
|
|
202
|
+
const ok = await replayMutation(item);
|
|
203
|
+
if (ok) {
|
|
166
204
|
succeeded++;
|
|
167
|
-
}
|
|
168
|
-
item.retryCount++;
|
|
169
|
-
await updateInQueue(item);
|
|
205
|
+
} else {
|
|
170
206
|
failed++;
|
|
171
207
|
}
|
|
208
|
+
|
|
209
|
+
// Rate limiting delay between mutations
|
|
210
|
+
if (BATCH_DELAY_MS > 0 && succeeded + (failed - succeeded) < total) {
|
|
211
|
+
await sleep(BATCH_DELAY_MS);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Emit progress after every BATCH_SIZE mutations
|
|
215
|
+
if ((succeeded + failed) % BATCH_SIZE === 0 || succeeded + failed === total) {
|
|
216
|
+
window.dispatchEvent(
|
|
217
|
+
new CustomEvent("mutation-sync-complete", {
|
|
218
|
+
detail: { succeeded, failed, total, current: succeeded + failed },
|
|
219
|
+
})
|
|
220
|
+
);
|
|
221
|
+
}
|
|
172
222
|
}
|
|
173
223
|
|
|
174
224
|
window.dispatchEvent(
|
|
175
225
|
new CustomEvent("mutation-sync-complete", {
|
|
176
|
-
detail: { succeeded, failed },
|
|
226
|
+
detail: { succeeded, failed, total },
|
|
177
227
|
})
|
|
178
228
|
);
|
|
179
229
|
} finally {
|
|
@@ -187,7 +237,6 @@ export async function flushMutations()${R("Promise<void>")}{
|
|
|
187
237
|
await processMutationQueue();
|
|
188
238
|
}
|
|
189
239
|
`;
|
|
190
|
-
// Helper functions appended outside the template string
|
|
191
240
|
const helpers = `
|
|
192
241
|
async function removeFromQueue(id${T("string")})${R("Promise<void>")}{
|
|
193
242
|
const db = await openQueueDB();
|
|
@@ -219,6 +268,25 @@ export async function getPendingCount()${R("Promise<number>")}{
|
|
|
219
268
|
request.onerror = () => reject((request${AS("IDBRequest")}).error);
|
|
220
269
|
});
|
|
221
270
|
}
|
|
271
|
+
|
|
272
|
+
/** Get the position of a mutation in the queue (0-based). Returns -1 if not found. */
|
|
273
|
+
export async function getQueuePosition(id${T("string")})${R("Promise<number>")}{
|
|
274
|
+
const items = await getQueueItems();
|
|
275
|
+
return items.findIndex((item) => item.id === id);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/** Get all pending queue items with their details. */
|
|
279
|
+
export async function getQueueItems()${R("Promise<MutationQueueItem[]>")}{
|
|
280
|
+
const db = await openQueueDB();
|
|
281
|
+
const tx = db.transaction(STORE_NAME, "readonly");
|
|
282
|
+
const store = tx.objectStore(STORE_NAME);
|
|
283
|
+
const index = store.index("by-timestamp");
|
|
284
|
+
return new Promise${PT("MutationQueueItem[]")}((resolve, reject) => {
|
|
285
|
+
const request = index.getAll();
|
|
286
|
+
request.onsuccess = () => resolve(request.result);
|
|
287
|
+
request.onerror = () => reject(request.error);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
222
290
|
`;
|
|
223
291
|
writeFile(ctx, `mutation-queue.${ext}`, code + helpers);
|
|
224
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-queue.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/mutation-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mutation-queue.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/mutation-queue.ts"],"names":[],"mappings":"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"}
|