@syncular/server-service-worker 0.0.6-229 → 0.0.6-232

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/dist/index.d.ts CHANGED
@@ -90,6 +90,7 @@ export interface AttachServiceWorkerServerOptions {
90
90
  export declare function attachServiceWorkerServer(globalScope: ServiceWorkerGlobalScopeLike, server: ServiceWorkerServer, options?: AttachServiceWorkerServerOptions): void;
91
91
  export interface ConfigureServiceWorkerServerOptions {
92
92
  scriptPath: string;
93
+ scriptVersion?: string;
93
94
  healthPath?: string;
94
95
  healthCheck?: (response: Response) => boolean | Promise<boolean>;
95
96
  enabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -149,9 +149,13 @@ async function getSyncPushContext(request, syncPathnameSet) {
149
149
  return null;
150
150
  if (!isRecord(payload.push))
151
151
  return null;
152
- if (!Array.isArray(payload.push.operations))
153
- return null;
154
- if (payload.push.operations.length === 0)
152
+ const push = payload.push;
153
+ const hasLegacyOperations = Array.isArray(push.operations) && push.operations.length > 0;
154
+ const hasBatchOperations = Array.isArray(push.commits) &&
155
+ push.commits.some((commit) => isRecord(commit) &&
156
+ Array.isArray(commit.operations) &&
157
+ commit.operations.length > 0);
158
+ if (!hasLegacyOperations && !hasBatchOperations)
155
159
  return null;
156
160
  const sourceClientId = typeof payload.clientId === 'string' && payload.clientId.length > 0
157
161
  ? payload.clientId
@@ -171,10 +175,30 @@ async function getAppliedCommitCursor(response) {
171
175
  return undefined;
172
176
  if (!isRecord(payload.push))
173
177
  return undefined;
174
- if (payload.push.status !== 'applied')
178
+ const push = payload.push;
179
+ if (Array.isArray(push.commits)) {
180
+ const commitSeqs = push.commits
181
+ .map((commit) => {
182
+ if (!isRecord(commit))
183
+ return null;
184
+ if (commit.status !== 'applied' &&
185
+ commit.status !== 'cached' &&
186
+ commit.status !== 'rejected') {
187
+ return null;
188
+ }
189
+ return typeof commit.commitSeq === 'number' ? commit.commitSeq : null;
190
+ })
191
+ .filter((commitSeq) => commitSeq !== null);
192
+ if (commitSeqs.length > 0) {
193
+ return Math.max(...commitSeqs);
194
+ }
195
+ return undefined;
196
+ }
197
+ if (push.status !== 'applied' && push.status !== 'cached') {
175
198
  return undefined;
176
- if (typeof payload.push.commitSeq === 'number') {
177
- return payload.push.commitSeq;
199
+ }
200
+ if (typeof push.commitSeq === 'number') {
201
+ return push.commitSeq;
178
202
  }
179
203
  return undefined;
180
204
  }
@@ -327,24 +351,38 @@ export async function unregisterServiceWorkerRegistrations(scriptPath) {
327
351
  return;
328
352
  }
329
353
  const registrations = await navigator.serviceWorker.getRegistrations();
354
+ const targetPathname = new URL(scriptPath, window.location.origin).pathname;
330
355
  const unregisterTasks = registrations
331
356
  .filter((registration) => {
332
357
  const scriptUrl = registration.active?.scriptURL ??
333
358
  registration.waiting?.scriptURL ??
334
359
  registration.installing?.scriptURL;
335
- return scriptUrl?.includes(scriptPath) === true;
360
+ if (!scriptUrl)
361
+ return false;
362
+ try {
363
+ return new URL(scriptUrl).pathname === targetPathname;
364
+ }
365
+ catch {
366
+ return scriptUrl.includes(targetPathname);
367
+ }
336
368
  })
337
369
  .map((registration) => registration.unregister());
338
370
  await Promise.all(unregisterTasks);
339
371
  }
340
- function waitForControllerChange(timeoutMs) {
341
- if (typeof navigator === 'undefined' ||
342
- !('serviceWorker' in navigator) ||
343
- navigator.serviceWorker.controller) {
372
+ function waitForControllerChange(timeoutMs, previousController) {
373
+ if (typeof navigator === 'undefined' || !('serviceWorker' in navigator)) {
374
+ return Promise.resolve();
375
+ }
376
+ const hasChanged = () => navigator.serviceWorker.controller !== null &&
377
+ navigator.serviceWorker.controller !== previousController;
378
+ if (hasChanged()) {
344
379
  return Promise.resolve();
345
380
  }
346
381
  return new Promise((resolve) => {
347
382
  const onControllerChange = () => {
383
+ if (!hasChanged()) {
384
+ return;
385
+ }
348
386
  clearTimeout(timeoutId);
349
387
  navigator.serviceWorker.removeEventListener('controllerchange', onControllerChange);
350
388
  resolve();
@@ -356,6 +394,14 @@ function waitForControllerChange(timeoutMs) {
356
394
  navigator.serviceWorker.addEventListener('controllerchange', onControllerChange);
357
395
  });
358
396
  }
397
+ function versionServiceWorkerScriptPath(scriptPath, version) {
398
+ const trimmedVersion = version?.trim();
399
+ if (!trimmedVersion)
400
+ return scriptPath;
401
+ const scriptUrl = new URL(scriptPath, window.location.origin);
402
+ scriptUrl.searchParams.set('v', trimmedVersion);
403
+ return `${scriptUrl.pathname}${scriptUrl.search}`;
404
+ }
359
405
  async function waitForHealth(args) {
360
406
  const started = Date.now();
361
407
  while (Date.now() - started < args.timeoutMs) {
@@ -406,13 +452,26 @@ export async function configureServiceWorkerServer(options) {
406
452
  return false;
407
453
  }
408
454
  try {
409
- await navigator.serviceWorker.register(options.scriptPath, {
455
+ const previousController = navigator.serviceWorker.controller ?? null;
456
+ const versionedScriptPath = versionServiceWorkerScriptPath(options.scriptPath, options.scriptVersion);
457
+ const registration = await navigator.serviceWorker.register(versionedScriptPath, {
410
458
  scope: options.scope,
411
459
  type: options.type ?? 'module',
412
460
  updateViaCache: options.updateViaCache ?? 'none',
413
461
  });
462
+ try {
463
+ await registration.update();
464
+ }
465
+ catch {
466
+ // best-effort refresh; continue to health check even if the browser declines
467
+ }
414
468
  await navigator.serviceWorker.ready;
415
- await waitForControllerChange(options.controllerTimeoutMs ?? 5_000);
469
+ await new Promise((resolve) => setTimeout(resolve, 50));
470
+ if (previousController === null ||
471
+ registration.installing ||
472
+ registration.waiting) {
473
+ await waitForControllerChange(options.controllerTimeoutMs ?? 5_000, previousController);
474
+ }
416
475
  const healthy = await waitForHealth({
417
476
  path: options.healthPath ?? '/api/health',
418
477
  timeoutMs: options.healthTimeoutMs ?? 10_000,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/server-service-worker",
3
- "version": "0.0.6-229",
3
+ "version": "0.0.6-232",
4
4
  "description": "Service Worker server/runtime + wake transport helpers for Syncular",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Benjamin Kniffler",
@@ -43,8 +43,8 @@
43
43
  },
44
44
  "sideEffects": false,
45
45
  "dependencies": {
46
- "@syncular/core": "0.0.6-229",
47
- "@syncular/transport-http": "0.0.6-229"
46
+ "@syncular/core": "0.0.6-232",
47
+ "@syncular/transport-http": "0.0.6-232"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@syncular/config": "0.0.0"
package/src/index.test.ts CHANGED
@@ -1,9 +1,11 @@
1
- import { describe, expect, test } from 'bun:test';
1
+ import { afterEach, describe, expect, mock, test } from 'bun:test';
2
2
  import {
3
+ configureServiceWorkerServer,
3
4
  createServiceWorkerServer,
4
5
  createSyncWakeMessageResolver,
5
6
  isServiceWorkerWakeMessage,
6
7
  SERVICE_WORKER_WAKE_MESSAGE_TYPE,
8
+ unregisterServiceWorkerRegistrations,
7
9
  } from './index';
8
10
 
9
11
  describe('isServiceWorkerWakeMessage', () => {
@@ -46,7 +48,13 @@ describe('createSyncWakeMessageResolver', () => {
46
48
  body: JSON.stringify({
47
49
  clientId: 'client-a',
48
50
  push: {
49
- operations: [{ table: 'tasks', op: 'upsert' }],
51
+ commits: [
52
+ {
53
+ clientCommitId: 'commit-1',
54
+ operations: [{ table: 'tasks', op: 'upsert' }],
55
+ schemaVersion: 1,
56
+ },
57
+ ],
50
58
  },
51
59
  }),
52
60
  });
@@ -54,8 +62,15 @@ describe('createSyncWakeMessageResolver', () => {
54
62
  const response = new Response(
55
63
  JSON.stringify({
56
64
  push: {
57
- status: 'applied',
58
- commitSeq: 42,
65
+ ok: true,
66
+ commits: [
67
+ {
68
+ clientCommitId: 'commit-1',
69
+ status: 'applied',
70
+ commitSeq: 42,
71
+ results: [],
72
+ },
73
+ ],
59
74
  },
60
75
  }),
61
76
  {
@@ -78,6 +93,49 @@ describe('createSyncWakeMessageResolver', () => {
78
93
  expect(wakeMessage?.sourceClientId).toBe('client-a');
79
94
  expect(typeof wakeMessage?.timestamp).toBe('number');
80
95
  });
96
+
97
+ test('supports legacy single-commit push payloads for wake messages', async () => {
98
+ const resolver = createSyncWakeMessageResolver();
99
+ const request = new Request('https://demo.local/api/sync', {
100
+ method: 'POST',
101
+ headers: {
102
+ 'content-type': 'application/json',
103
+ },
104
+ body: JSON.stringify({
105
+ clientId: 'client-a',
106
+ push: {
107
+ clientCommitId: 'commit-legacy',
108
+ operations: [{ table: 'tasks', op: 'upsert' }],
109
+ schemaVersion: 1,
110
+ },
111
+ }),
112
+ });
113
+
114
+ const response = new Response(
115
+ JSON.stringify({
116
+ push: {
117
+ status: 'applied',
118
+ commitSeq: 43,
119
+ },
120
+ }),
121
+ {
122
+ status: 200,
123
+ headers: {
124
+ 'content-type': 'application/json',
125
+ },
126
+ }
127
+ );
128
+
129
+ const wakeContext = await resolver.captureContext(request);
130
+ const wakeMessage = await resolver.resolveMessage({
131
+ request,
132
+ response,
133
+ wakeContext,
134
+ });
135
+
136
+ expect(wakeMessage?.cursor).toBe(43);
137
+ expect(wakeMessage?.sourceClientId).toBe('client-a');
138
+ });
81
139
  });
82
140
 
83
141
  describe('createServiceWorkerServer', () => {
@@ -131,7 +189,13 @@ describe('createServiceWorkerServer', () => {
131
189
  body: JSON.stringify({
132
190
  clientId: 'client-x',
133
191
  push: {
134
- operations: [{ table: 'tasks', op: 'upsert' }],
192
+ commits: [
193
+ {
194
+ clientCommitId: 'commit-1',
195
+ operations: [{ table: 'tasks', op: 'upsert' }],
196
+ schemaVersion: 1,
197
+ },
198
+ ],
135
199
  },
136
200
  }),
137
201
  });
@@ -148,3 +212,135 @@ describe('createServiceWorkerServer', () => {
148
212
  expect(wakeMessage?.sourceClientId).toBe('client-x');
149
213
  });
150
214
  });
215
+
216
+ describe('service worker registration helpers', () => {
217
+ const originalWindow = globalThis.window;
218
+ const originalNavigator = globalThis.navigator;
219
+
220
+ afterEach(() => {
221
+ if (originalWindow) {
222
+ Object.defineProperty(globalThis, 'window', {
223
+ configurable: true,
224
+ value: originalWindow,
225
+ });
226
+ } else {
227
+ // @ts-expect-error test cleanup
228
+ delete globalThis.window;
229
+ }
230
+
231
+ if (originalNavigator) {
232
+ Object.defineProperty(globalThis, 'navigator', {
233
+ configurable: true,
234
+ value: originalNavigator,
235
+ });
236
+ } else {
237
+ // @ts-expect-error test cleanup
238
+ delete globalThis.navigator;
239
+ }
240
+ });
241
+
242
+ test('unregisters versioned service worker registrations by pathname', async () => {
243
+ const unregister = mock(async () => true);
244
+ const registrations = [
245
+ {
246
+ active: {
247
+ scriptURL: 'https://demo.local/__demo/sw-server.js?v=old-release',
248
+ },
249
+ unregister,
250
+ },
251
+ {
252
+ active: {
253
+ scriptURL: 'https://demo.local/__demo/other-worker.js?v=old-release',
254
+ },
255
+ unregister: mock(async () => true),
256
+ },
257
+ ];
258
+
259
+ Object.defineProperty(globalThis, 'window', {
260
+ configurable: true,
261
+ value: { location: { origin: 'https://demo.local' } },
262
+ });
263
+ Object.defineProperty(globalThis, 'navigator', {
264
+ configurable: true,
265
+ value: {
266
+ serviceWorker: {
267
+ getRegistrations: async () => registrations,
268
+ },
269
+ },
270
+ });
271
+
272
+ await unregisterServiceWorkerRegistrations(
273
+ '/__demo/sw-server.js?v=current-release'
274
+ );
275
+
276
+ expect(unregister).toHaveBeenCalledTimes(1);
277
+ });
278
+
279
+ test('waits for controller takeover when a pending update exists', async () => {
280
+ const listeners = new Map<string, Set<() => void>>();
281
+ const previousController = {
282
+ scriptURL: 'https://demo.local/__demo/sw-server.js?v=old',
283
+ };
284
+ const nextController = {
285
+ scriptURL: 'https://demo.local/__demo/sw-server.js?v=new',
286
+ };
287
+ let controller: typeof previousController | null = previousController;
288
+ const registration = {
289
+ installing: { scriptURL: nextController.scriptURL },
290
+ waiting: null,
291
+ update: async () => undefined,
292
+ };
293
+
294
+ const serviceWorker = {
295
+ controller,
296
+ ready: Promise.resolve(registration),
297
+ register: async () => registration,
298
+ addEventListener: (type: string, listener: () => void) => {
299
+ const set = listeners.get(type) ?? new Set();
300
+ set.add(listener);
301
+ listeners.set(type, set);
302
+ },
303
+ removeEventListener: (type: string, listener: () => void) => {
304
+ listeners.get(type)?.delete(listener);
305
+ },
306
+ };
307
+
308
+ Object.defineProperty(globalThis, 'window', {
309
+ configurable: true,
310
+ value: { location: { origin: 'https://demo.local' } },
311
+ });
312
+ Object.defineProperty(globalThis, 'navigator', {
313
+ configurable: true,
314
+ value: {
315
+ serviceWorker,
316
+ },
317
+ });
318
+
319
+ const fetchCalls: string[] = [];
320
+ const configurePromise = configureServiceWorkerServer({
321
+ scriptPath: '/__demo/sw-server.js',
322
+ scriptVersion: 'next-release',
323
+ fetchImpl: async (input) => {
324
+ fetchCalls.push(String(input));
325
+ return new Response(null, {
326
+ status: 200,
327
+ headers: { 'x-syncular-sw-server': '1' },
328
+ });
329
+ },
330
+ healthCheck: (response) =>
331
+ response.headers.get('x-syncular-sw-server') === '1',
332
+ logger: {},
333
+ });
334
+
335
+ await Promise.resolve();
336
+ controller = nextController;
337
+ serviceWorker.controller = nextController;
338
+ registration.installing = null;
339
+ listeners.get('controllerchange')?.forEach((listener) => {
340
+ listener();
341
+ });
342
+
343
+ await expect(configurePromise).resolves.toBe(true);
344
+ expect(fetchCalls).toContain('/api/health');
345
+ });
346
+ });
package/src/index.ts CHANGED
@@ -260,8 +260,18 @@ async function getSyncPushContext(
260
260
  const payload = await request.clone().json();
261
261
  if (!isRecord(payload)) return null;
262
262
  if (!isRecord(payload.push)) return null;
263
- if (!Array.isArray(payload.push.operations)) return null;
264
- if (payload.push.operations.length === 0) return null;
263
+ const push = payload.push;
264
+ const hasLegacyOperations =
265
+ Array.isArray(push.operations) && push.operations.length > 0;
266
+ const hasBatchOperations =
267
+ Array.isArray(push.commits) &&
268
+ push.commits.some(
269
+ (commit) =>
270
+ isRecord(commit) &&
271
+ Array.isArray(commit.operations) &&
272
+ commit.operations.length > 0
273
+ );
274
+ if (!hasLegacyOperations && !hasBatchOperations) return null;
265
275
 
266
276
  const sourceClientId =
267
277
  typeof payload.clientId === 'string' && payload.clientId.length > 0
@@ -283,10 +293,33 @@ async function getAppliedCommitCursor(
283
293
  const payload = await response.clone().json();
284
294
  if (!isRecord(payload)) return undefined;
285
295
  if (!isRecord(payload.push)) return undefined;
286
- if (payload.push.status !== 'applied') return undefined;
296
+ const push = payload.push;
297
+ if (Array.isArray(push.commits)) {
298
+ const commitSeqs = push.commits
299
+ .map((commit) => {
300
+ if (!isRecord(commit)) return null;
301
+ if (
302
+ commit.status !== 'applied' &&
303
+ commit.status !== 'cached' &&
304
+ commit.status !== 'rejected'
305
+ ) {
306
+ return null;
307
+ }
308
+ return typeof commit.commitSeq === 'number' ? commit.commitSeq : null;
309
+ })
310
+ .filter((commitSeq): commitSeq is number => commitSeq !== null);
311
+ if (commitSeqs.length > 0) {
312
+ return Math.max(...commitSeqs);
313
+ }
314
+ return undefined;
315
+ }
287
316
 
288
- if (typeof payload.push.commitSeq === 'number') {
289
- return payload.push.commitSeq;
317
+ if (push.status !== 'applied' && push.status !== 'cached') {
318
+ return undefined;
319
+ }
320
+
321
+ if (typeof push.commitSeq === 'number') {
322
+ return push.commitSeq;
290
323
  }
291
324
 
292
325
  return undefined;
@@ -520,6 +553,7 @@ export function attachServiceWorkerServer(
520
553
 
521
554
  export interface ConfigureServiceWorkerServerOptions {
522
555
  scriptPath: string;
556
+ scriptVersion?: string;
523
557
  healthPath?: string;
524
558
  healthCheck?: (response: Response) => boolean | Promise<boolean>;
525
559
  enabled?: boolean;
@@ -547,30 +581,46 @@ export async function unregisterServiceWorkerRegistrations(
547
581
  }
548
582
 
549
583
  const registrations = await navigator.serviceWorker.getRegistrations();
584
+ const targetPathname = new URL(scriptPath, window.location.origin).pathname;
550
585
  const unregisterTasks = registrations
551
586
  .filter((registration) => {
552
587
  const scriptUrl =
553
588
  registration.active?.scriptURL ??
554
589
  registration.waiting?.scriptURL ??
555
590
  registration.installing?.scriptURL;
556
- return scriptUrl?.includes(scriptPath) === true;
591
+ if (!scriptUrl) return false;
592
+ try {
593
+ return new URL(scriptUrl).pathname === targetPathname;
594
+ } catch {
595
+ return scriptUrl.includes(targetPathname);
596
+ }
557
597
  })
558
598
  .map((registration) => registration.unregister());
559
599
 
560
600
  await Promise.all(unregisterTasks);
561
601
  }
562
602
 
563
- function waitForControllerChange(timeoutMs: number): Promise<void> {
564
- if (
565
- typeof navigator === 'undefined' ||
566
- !('serviceWorker' in navigator) ||
567
- navigator.serviceWorker.controller
568
- ) {
603
+ function waitForControllerChange(
604
+ timeoutMs: number,
605
+ previousController: ServiceWorker | null
606
+ ): Promise<void> {
607
+ if (typeof navigator === 'undefined' || !('serviceWorker' in navigator)) {
608
+ return Promise.resolve();
609
+ }
610
+
611
+ const hasChanged = () =>
612
+ navigator.serviceWorker.controller !== null &&
613
+ navigator.serviceWorker.controller !== previousController;
614
+
615
+ if (hasChanged()) {
569
616
  return Promise.resolve();
570
617
  }
571
618
 
572
619
  return new Promise((resolve) => {
573
620
  const onControllerChange = () => {
621
+ if (!hasChanged()) {
622
+ return;
623
+ }
574
624
  clearTimeout(timeoutId);
575
625
  navigator.serviceWorker.removeEventListener(
576
626
  'controllerchange',
@@ -594,6 +644,18 @@ function waitForControllerChange(timeoutMs: number): Promise<void> {
594
644
  });
595
645
  }
596
646
 
647
+ function versionServiceWorkerScriptPath(
648
+ scriptPath: string,
649
+ version: string | undefined
650
+ ): string {
651
+ const trimmedVersion = version?.trim();
652
+ if (!trimmedVersion) return scriptPath;
653
+
654
+ const scriptUrl = new URL(scriptPath, window.location.origin);
655
+ scriptUrl.searchParams.set('v', trimmedVersion);
656
+ return `${scriptUrl.pathname}${scriptUrl.search}`;
657
+ }
658
+
597
659
  async function waitForHealth(args: {
598
660
  path: string;
599
661
  timeoutMs: number;
@@ -663,14 +725,39 @@ export async function configureServiceWorkerServer(
663
725
  }
664
726
 
665
727
  try {
666
- await navigator.serviceWorker.register(options.scriptPath, {
667
- scope: options.scope,
668
- type: options.type ?? 'module',
669
- updateViaCache: options.updateViaCache ?? 'none',
670
- });
728
+ const previousController = navigator.serviceWorker.controller ?? null;
729
+ const versionedScriptPath = versionServiceWorkerScriptPath(
730
+ options.scriptPath,
731
+ options.scriptVersion
732
+ );
733
+
734
+ const registration = await navigator.serviceWorker.register(
735
+ versionedScriptPath,
736
+ {
737
+ scope: options.scope,
738
+ type: options.type ?? 'module',
739
+ updateViaCache: options.updateViaCache ?? 'none',
740
+ }
741
+ );
742
+
743
+ try {
744
+ await registration.update();
745
+ } catch {
746
+ // best-effort refresh; continue to health check even if the browser declines
747
+ }
671
748
 
672
749
  await navigator.serviceWorker.ready;
673
- await waitForControllerChange(options.controllerTimeoutMs ?? 5_000);
750
+ await new Promise((resolve) => setTimeout(resolve, 50));
751
+ if (
752
+ previousController === null ||
753
+ registration.installing ||
754
+ registration.waiting
755
+ ) {
756
+ await waitForControllerChange(
757
+ options.controllerTimeoutMs ?? 5_000,
758
+ previousController
759
+ );
760
+ }
674
761
 
675
762
  const healthy = await waitForHealth({
676
763
  path: options.healthPath ?? '/api/health',