@quereus/sync-client 0.7.3 → 0.9.0

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 CHANGED
@@ -1,152 +1,154 @@
1
- # @quereus/sync-client
2
-
3
- WebSocket sync client for [Quereus](https://github.com/gotchoices/quereus). Handles connection management, reconnection, and bidirectional change synchronization.
4
-
5
- ## Features
6
-
7
- - **Automatic reconnection**: Exponential backoff (1s → 60s max) on connection loss
8
- - **Local change batching**: Debounces rapid changes into efficient batches
9
- - **Delta sync**: Only sends changes since last successful sync
10
- - **Framework agnostic**: Works in any JavaScript environment with WebSocket support
11
- - **Type-safe**: Full TypeScript support
12
-
13
- ## Installation
14
-
15
- ```bash
16
- npm install @quereus/sync-client
17
- ```
18
-
19
- ## Quick Start
20
-
21
- ```typescript
22
- import { SyncClient } from '@quereus/sync-client';
23
- import { createSyncModule } from '@quereus/sync';
24
-
25
- // Assuming you have a SyncManager from sync
26
- const { syncManager, syncEvents } = await createSyncModule(kvStore, storeEvents);
27
-
28
- // Create the sync client
29
- const client = new SyncClient({
30
- syncManager,
31
- syncEvents,
32
- onStatusChange: (status) => {
33
- console.log('Connection status:', status.status);
34
- },
35
- onRemoteChanges: (result, changeSets) => {
36
- console.log(`Applied ${result.applied} changes`);
37
- },
38
- onError: (error) => {
39
- console.error('Sync error:', error);
40
- },
41
- });
42
-
43
- // Connect to the sync server
44
- await client.connect('wss://your-server.com/sync/ws', 'a1-s1', authToken);
45
-
46
- // Changes are synced automatically via syncEvents listener
47
- // When done:
48
- await client.disconnect();
49
- ```
50
-
51
- ## API
52
-
53
- ### `SyncClient`
54
-
55
- Main class for WebSocket-based synchronization.
56
-
57
- #### Constructor Options
58
-
59
- ```typescript
60
- interface SyncClientOptions {
61
- /** SyncManager from @quereus/sync */
62
- syncManager: SyncManager;
63
-
64
- /** SyncEventEmitter for local change notifications */
65
- syncEvents?: SyncEventEmitter;
66
-
67
- /** Called when connection status changes */
68
- onStatusChange?: (status: SyncStatus) => void;
69
-
70
- /** Called when remote changes are applied */
71
- onRemoteChanges?: (result: ApplyResult, changeSets: ChangeSet[]) => void;
72
-
73
- /** Called on sync events (for logging/UI) */
74
- onSyncEvent?: (event: SyncEvent) => void;
75
-
76
- /** Called on errors */
77
- onError?: (error: Error) => void;
78
-
79
- /** Enable automatic reconnection (default: true) */
80
- autoReconnect?: boolean;
81
-
82
- /** Initial reconnect delay in ms (default: 1000) */
83
- reconnectDelayMs?: number;
84
-
85
- /** Maximum reconnect delay in ms (default: 60000) */
86
- maxReconnectDelayMs?: number;
87
-
88
- /** Debounce window for local changes in ms (default: 50) */
89
- localChangeDebounceMs?: number;
90
- }
91
- ```
92
-
93
- #### Methods
94
-
95
- - `connect(url: string, databaseId: string, token?: string): Promise<void>` - Connect to sync server
96
- - `disconnect(): Promise<void>` - Disconnect and stop reconnection attempts
97
- - `getStatus(): SyncStatus` - Get current connection status
98
-
99
- ### Serialization Helpers
100
-
101
- The package exports helpers for ChangeSet serialization:
102
-
103
- ```typescript
104
- import {
105
- serializeChangeSet,
106
- deserializeChangeSet,
107
- serializeHLC,
108
- deserializeHLC,
109
- } from '@quereus/sync-client';
110
- ```
111
-
112
- ## Connection States
113
-
114
- The client goes through these states:
115
-
116
- ```
117
- DISCONNECTED → CONNECTING → SYNCING → SYNCED
118
- ↑ │
119
- └────────────────────┘ (on connection loss)
120
- ```
121
-
122
- - `disconnected`: Not connected
123
- - `connecting`: WebSocket connecting, handshake in progress
124
- - `syncing`: Connected, exchanging initial changes
125
- - `synced`: Fully synchronized, real-time updates active
126
- - `error`: Connection error (will auto-reconnect if enabled)
127
-
128
- ## Protocol
129
-
130
- The client implements the Quereus sync WebSocket protocol:
131
-
132
- | Message | Direction | Purpose |
133
- |---------|-----------|---------|
134
- | `handshake` | Client→Server | Authenticate with siteId and token |
135
- | `handshake_ack` | Server→Client | Confirm connection |
136
- | `get_changes` | Client→Server | Request changes since HLC |
137
- | `changes` | Server→Client | Initial/requested changes |
138
- | `apply_changes` | Client→Server | Send local changes |
139
- | `apply_result` | Server→Client | Confirm changes applied |
140
- | `push_changes` | Server→Client | Real-time changes from other clients |
141
- | `ping`/`pong` | Both | Keepalive |
142
-
143
- ## Related Packages
144
-
145
- - [`@quereus/sync`](../quereus-sync/) - Sync module (provides SyncManager)
146
- - [`@quereus/sync-coordinator`](../sync-coordinator/) - Server-side coordinator
147
- - [`@quereus/store`](../quereus-store/) - Storage base layer
148
-
149
- ## License
150
-
151
- MIT
152
-
1
+ # @quereus/sync-client
2
+
3
+ WebSocket sync client for [Quereus](https://github.com/gotchoices/quereus). Handles connection management, reconnection, and bidirectional change synchronization.
4
+
5
+ ## Features
6
+
7
+ - **Automatic reconnection**: Exponential backoff (1s → 60s max) on connection loss
8
+ - **Local change batching**: Debounces rapid changes into efficient batches
9
+ - **Delta sync**: Only sends changes since last successful sync
10
+ - **Framework agnostic**: Works in any JavaScript environment with WebSocket support
11
+ - **Type-safe**: Full TypeScript support
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @quereus/sync-client
17
+ ```
18
+
19
+ ## Quick Start
20
+
21
+ ```typescript
22
+ import { SyncClient } from '@quereus/sync-client';
23
+ import { createSyncModule } from '@quereus/sync';
24
+
25
+ // Assuming you have a SyncManager from sync
26
+ const { syncManager, syncEvents } = await createSyncModule(kvStore, storeEvents);
27
+
28
+ // Create the sync client
29
+ const client = new SyncClient({
30
+ syncManager,
31
+ syncEvents,
32
+ onStatusChange: (status) => {
33
+ console.log('Connection status:', status.status);
34
+ },
35
+ onRemoteChanges: (result, changeSets) => {
36
+ console.log(`Applied ${result.applied} changes`);
37
+ },
38
+ onError: (error) => {
39
+ console.error('Sync error:', error);
40
+ },
41
+ });
42
+
43
+ // Connect to the sync server
44
+ await client.connect('wss://your-server.com/sync/ws', 'a1-s1', authToken);
45
+
46
+ // Changes are synced automatically via syncEvents listener
47
+ // When done:
48
+ await client.disconnect();
49
+ ```
50
+
51
+ ## API
52
+
53
+ ### `SyncClient`
54
+
55
+ Main class for WebSocket-based synchronization.
56
+
57
+ #### Constructor Options
58
+
59
+ ```typescript
60
+ interface SyncClientOptions {
61
+ /** SyncManager from @quereus/sync */
62
+ syncManager: SyncManager;
63
+
64
+ /** SyncEventEmitter for local change notifications */
65
+ syncEvents: SyncEventEmitter;
66
+
67
+ /** Called when connection status changes */
68
+ onStatusChange?: (status: SyncStatus) => void;
69
+
70
+ /** Called when remote changes are applied */
71
+ onRemoteChanges?: (result: ApplyResult, changeSets: ChangeSet[]) => void;
72
+
73
+ /** Called on sync events (for logging/UI) */
74
+ onSyncEvent?: (event: SyncEvent) => void;
75
+
76
+ /** Called on errors */
77
+ onError?: (error: Error) => void;
78
+
79
+ /** Enable automatic reconnection (default: true) */
80
+ autoReconnect?: boolean;
81
+
82
+ /** Initial reconnect delay in ms (default: 1000) */
83
+ reconnectDelayMs?: number;
84
+
85
+ /** Maximum reconnect delay in ms (default: 60000) */
86
+ maxReconnectDelayMs?: number;
87
+
88
+ /** Debounce window for local changes in ms (default: 50) */
89
+ localChangeDebounceMs?: number;
90
+ }
91
+ ```
92
+
93
+ #### Methods
94
+
95
+ - `connect(url: string, databaseId: string, token?: string): Promise<void>` - Connect to sync server
96
+ - `disconnect(): Promise<void>` - Disconnect and stop reconnection attempts
97
+ - `status: SyncStatus` - Current connection status (getter property)
98
+ - `isConnected: boolean` - Whether the WebSocket is open (getter property)
99
+ - `isSynced: boolean` - Whether the client is fully synced (getter property)
100
+
101
+ ### Serialization Helpers
102
+
103
+ The package exports helpers for ChangeSet serialization:
104
+
105
+ ```typescript
106
+ import {
107
+ serializeChangeSet,
108
+ deserializeChangeSet,
109
+ serializeHLCForTransport,
110
+ deserializeHLCFromTransport,
111
+ } from '@quereus/sync-client';
112
+ ```
113
+
114
+ ## Connection States
115
+
116
+ The client goes through these states:
117
+
118
+ ```
119
+ DISCONNECTED → CONNECTING → SYNCING → SYNCED
120
+ ↑ │
121
+ └────────────────────┘ (on connection loss)
122
+ ```
123
+
124
+ - `disconnected`: Not connected
125
+ - `connecting`: WebSocket connecting, handshake in progress
126
+ - `syncing`: Connected, exchanging initial changes
127
+ - `synced`: Fully synchronized, real-time updates active
128
+ - `error`: Connection error (will auto-reconnect if enabled)
129
+
130
+ ## Protocol
131
+
132
+ The client implements the Quereus sync WebSocket protocol:
133
+
134
+ | Message | Direction | Purpose |
135
+ |---------|-----------|---------|
136
+ | `handshake` | Client→Server | Authenticate with siteId and token |
137
+ | `handshake_ack` | Server→Client | Confirm connection |
138
+ | `get_changes` | Client→Server | Request changes since HLC |
139
+ | `changes` | Server→Client | Initial/requested changes |
140
+ | `apply_changes` | Client→Server | Send local changes |
141
+ | `apply_result` | Server→Client | Confirm changes applied |
142
+ | `push_changes` | Server→Client | Real-time changes from other clients |
143
+ | `ping`/`pong` | Both | Keepalive |
144
+
145
+ ## Related Packages
146
+
147
+ - [`@quereus/sync`](../quereus-sync/) - Sync module (provides SyncManager)
148
+ - [`@quereus/sync-coordinator`](../sync-coordinator/) - Server-side coordinator
149
+ - [`@quereus/store`](../quereus-store/) - Storage base layer
150
+
151
+ ## License
152
+
153
+ MIT
154
+
@@ -1 +1 @@
1
- {"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../../src/sync-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EAGX,MAAM,YAAY,CAAC;AAcpB;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAED;IAGvB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,YAAY,CAAuB;IAG3C,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAiC;IAGxD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,qBAAqB,CAAS;IAGtC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,cAAc,CAAoB;IAG1C,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,uBAAuB,CAAK;IAGpC,OAAO,CAAC,sBAAsB,CAA6B;gBAE/C,OAAO,EAAE,iBAAiB;IAYtC,gCAAgC;IAChC,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,iDAAiD;IACjD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,yCAAyC;IACzC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;;OAOG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D7E;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA8BnB,aAAa;YAoCb,kBAAkB;YAoBlB,aAAa;IAgC3B,OAAO,CAAC,iBAAiB;YASX,oBAAoB;IAqBlC,OAAO,CAAC,aAAa;YAUP,wBAAwB;IAatC,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,wBAAwB;YASlB,gBAAgB;IAyC9B,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,aAAa;CAatB"}
1
+ {"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../../src/sync-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EAKX,MAAM,YAAY,CAAC;AAyBpB;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAED;IAGvB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,YAAY,CAAuB;IAG3C,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAiC;IAGxD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,qBAAqB,CAAS;IAGtC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,cAAc,CAAoB;IAG1C,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,uBAAuB,CAAK;IAGpC,OAAO,CAAC,sBAAsB,CAA6B;gBAE/C,OAAO,EAAE,iBAAiB;IAYtC,gCAAgC;IAChC,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,iDAAiD;IACjD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,yCAAyC;IACzC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;;OAOG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D7E;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA8BnB,aAAa;YAwCb,kBAAkB;YAuBlB,aAAa;IA2B3B,OAAO,CAAC,iBAAiB;YASX,oBAAoB;IAqBlC,OAAO,CAAC,aAAa;YAUP,wBAAwB;IAYtC,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,wBAAwB;YASlB,gBAAgB;IAoC9B,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,aAAa;CAatB"}
@@ -14,6 +14,16 @@ import { serializeChangeSet, deserializeChangeSet, serializeHLCForTransport, des
14
14
  const DEFAULT_RECONNECT_DELAY_MS = 1000;
15
15
  const DEFAULT_MAX_RECONNECT_DELAY_MS = 60_000;
16
16
  const DEFAULT_LOCAL_CHANGE_DEBOUNCE_MS = 50;
17
+ /** Find the maximum HLC in a list of change sets. */
18
+ function maxHLCFromChangeSets(changeSets) {
19
+ let max;
20
+ for (const cs of changeSets) {
21
+ if (!max || compareHLC(cs.hlc, max) > 0) {
22
+ max = cs.hlc;
23
+ }
24
+ }
25
+ return max;
26
+ }
17
27
  /**
18
28
  * WebSocket sync client for Quereus.
19
29
  *
@@ -181,7 +191,12 @@ export class SyncClient {
181
191
  await this.handleRequestChanges(message);
182
192
  break;
183
193
  default:
184
- console.warn('Unknown sync message type:', message.type);
194
+ if (this.options.onUnhandledMessage) {
195
+ this.options.onUnhandledMessage(message);
196
+ }
197
+ else {
198
+ console.warn('Unknown sync message type:', message.type);
199
+ }
185
200
  }
186
201
  }
187
202
  async handleHandshakeAck(message) {
@@ -191,22 +206,20 @@ export class SyncClient {
191
206
  this.emitSyncEvent('state-change', `Authenticated with server (connection: ${message.connectionId?.slice(0, 8) ?? 'unknown'})`);
192
207
  // Request changes from server since our last sync with this peer
193
208
  await this.requestChangesFromServer();
194
- // Subscribe to local changes for pushing to server
195
- this.subscribeToLocalChanges();
196
- // Push any existing local changes to server (changes made while offline)
197
- await this.pushLocalChanges();
209
+ // In read-only (pull-only) mode, skip push entirely
210
+ if (!this.options.readOnly) {
211
+ // Subscribe to local changes for pushing to server
212
+ this.subscribeToLocalChanges();
213
+ // Push any existing local changes to server (changes made while offline)
214
+ await this.pushLocalChanges();
215
+ }
198
216
  }
199
217
  async handleChanges(serializedChangeSets) {
200
218
  const changeSets = serializedChangeSets.map(cs => deserializeChangeSet(cs));
201
219
  const result = await this.syncManager.applyChanges(changeSets);
202
220
  // Update peer sync state with the max HLC from received changes
203
221
  if (changeSets.length > 0 && this.serverSiteId) {
204
- let maxHLC;
205
- for (const cs of changeSets) {
206
- if (!maxHLC || compareHLC(cs.hlc, maxHLC) > 0) {
207
- maxHLC = cs.hlc;
208
- }
209
- }
222
+ const maxHLC = maxHLCFromChangeSets(changeSets);
210
223
  if (maxHLC) {
211
224
  await this.syncManager.updatePeerSyncState(this.serverSiteId, maxHLC);
212
225
  }
@@ -259,11 +272,12 @@ export class SyncClient {
259
272
  if (!this.serverSiteId)
260
273
  return;
261
274
  const lastSyncHLC = await this.syncManager.getPeerSyncState(this.serverSiteId);
262
- const msg = { type: 'get_changes' };
263
275
  if (lastSyncHLC) {
264
- msg.sinceHLC = serializeHLCForTransport(lastSyncHLC);
276
+ this.send({ type: 'get_changes', sinceHLC: serializeHLCForTransport(lastSyncHLC) });
277
+ }
278
+ else {
279
+ this.send({ type: 'get_changes' });
265
280
  }
266
- this.send(msg);
267
281
  }
268
282
  send(message) {
269
283
  if (this.ws?.readyState === WebSocket.OPEN) {
@@ -292,6 +306,8 @@ export class SyncClient {
292
306
  }, this.options.localChangeDebounceMs);
293
307
  }
294
308
  async pushLocalChanges() {
309
+ if (this.options.readOnly)
310
+ return;
295
311
  if (!this.isConnected || !this.serverSiteId)
296
312
  return;
297
313
  // Get changes since lastSentHLC (delta sync)
@@ -301,13 +317,7 @@ export class SyncClient {
301
317
  if (changes.length === 0)
302
318
  return;
303
319
  // Track the max HLC we're sending for delta sync
304
- let maxHLC;
305
- for (const cs of changes) {
306
- if (!maxHLC || compareHLC(cs.hlc, maxHLC) > 0) {
307
- maxHLC = cs.hlc;
308
- }
309
- }
310
- this.pendingSentHLC = maxHLC ?? null;
320
+ this.pendingSentHLC = maxHLCFromChangeSets(changes) ?? null;
311
321
  // Serialize and send
312
322
  const serialized = changes.map(cs => serializeChangeSet(cs));
313
323
  this.emitSyncEvent('local-change', `Sending ${changes.length} change set(s) to server`, {
@@ -1 +1 @@
1
- {"version":3,"file":"sync-client.js","sourceRoot":"","sources":["../../src/sync-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-client.js","sourceRoot":"","sources":["../../src/sync-client.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,11 @@ export interface SyncClientOptions {
66
66
  * Callback when an error occurs.
67
67
  */
68
68
  onError?: (error: Error) => void;
69
+ /**
70
+ * Callback for messages the client doesn't handle (e.g., topology).
71
+ * Receives the raw parsed JSON message object.
72
+ */
73
+ onUnhandledMessage?: (message: Record<string, unknown>) => void;
69
74
  /**
70
75
  * Whether to automatically reconnect on disconnect.
71
76
  * @default true
@@ -86,6 +91,13 @@ export interface SyncClientOptions {
86
91
  * @default 50
87
92
  */
88
93
  localChangeDebounceMs?: number;
94
+ /**
95
+ * When true, the client operates in pull-only mode: it receives remote
96
+ * changes but never pushes local changes to the server. Useful for
97
+ * read-only / view-permission shared scenarios.
98
+ * @default false
99
+ */
100
+ readOnly?: boolean;
89
101
  }
90
102
  /** Client → Server: Handshake */
91
103
  export interface HandshakeMessage {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quereus/sync-client",
3
- "version": "0.7.3",
3
+ "version": "0.9.0",
4
4
  "type": "module",
5
5
  "description": "WebSocket sync client for Quereus - handles connection, reconnection, and change synchronization",
6
6
  "keywords": [
@@ -39,7 +39,7 @@
39
39
  "test:single": "cd ../.. && node --import ./packages/quereus-sync-client/register.mjs node_modules/mocha/bin/mocha.js --bail"
40
40
  },
41
41
  "peerDependencies": {
42
- "@quereus/sync": "^0.6.3"
42
+ "@quereus/sync": "^0.8.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@quereus/sync": "*",