@firtoz/collection-sync 4.0.0 → 6.0.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 +46 -0
- package/dist/cache-manager.d.ts +52 -0
- package/dist/cache-manager.js +5 -0
- package/dist/cache-manager.js.map +1 -0
- package/dist/chunk-3EHHMLSV.js +57 -0
- package/dist/chunk-3EHHMLSV.js.map +1 -0
- package/dist/chunk-43KYAIKY.js +46 -0
- package/dist/chunk-43KYAIKY.js.map +1 -0
- package/dist/chunk-4BEXLBCH.js +64 -0
- package/dist/chunk-4BEXLBCH.js.map +1 -0
- package/dist/chunk-5V6BSQAB.js +148 -0
- package/dist/chunk-5V6BSQAB.js.map +1 -0
- package/dist/chunk-5VMFQT5Z.js +112 -0
- package/dist/chunk-5VMFQT5Z.js.map +1 -0
- package/dist/chunk-6EHROJFY.js +111 -0
- package/dist/chunk-6EHROJFY.js.map +1 -0
- package/dist/chunk-6X3434GJ.js +21 -0
- package/dist/chunk-6X3434GJ.js.map +1 -0
- package/dist/chunk-BGJH6PH2.js +175 -0
- package/dist/chunk-BGJH6PH2.js.map +1 -0
- package/dist/chunk-BJJEAKXL.js +252 -0
- package/dist/chunk-BJJEAKXL.js.map +1 -0
- package/dist/chunk-GWIOC5CP.js +51 -0
- package/dist/chunk-GWIOC5CP.js.map +1 -0
- package/dist/chunk-HMLY7DHA.js +12 -0
- package/dist/chunk-HMLY7DHA.js.map +1 -0
- package/dist/chunk-I6RJWBGF.js +112 -0
- package/dist/chunk-I6RJWBGF.js.map +1 -0
- package/dist/chunk-M5MJHS6A.js +10 -0
- package/dist/chunk-M5MJHS6A.js.map +1 -0
- package/dist/chunk-O3KBDCEI.js +615 -0
- package/dist/chunk-O3KBDCEI.js.map +1 -0
- package/dist/chunk-OP53UBPN.js +19 -0
- package/dist/chunk-OP53UBPN.js.map +1 -0
- package/dist/chunk-P3JOTUAB.js +802 -0
- package/dist/chunk-P3JOTUAB.js.map +1 -0
- package/dist/chunk-QJP4GSJH.js +373 -0
- package/dist/chunk-QJP4GSJH.js.map +1 -0
- package/dist/chunk-RDDS7JQW.js +623 -0
- package/dist/chunk-RDDS7JQW.js.map +1 -0
- package/dist/chunk-TEH7V76G.js +209 -0
- package/dist/chunk-TEH7V76G.js.map +1 -0
- package/dist/chunk-UJ24XW52.js +20 -0
- package/dist/chunk-UJ24XW52.js.map +1 -0
- package/dist/chunk-UVZJL6QV.js +18 -0
- package/dist/chunk-UVZJL6QV.js.map +1 -0
- package/dist/chunk-XC4QNFSQ.js +238 -0
- package/dist/chunk-XC4QNFSQ.js.map +1 -0
- package/dist/chunk-YD5LVGWX.js +125 -0
- package/dist/chunk-YD5LVGWX.js.map +1 -0
- package/dist/chunk-YYGPIHHJ.js +166 -0
- package/dist/chunk-YYGPIHHJ.js.map +1 -0
- package/dist/connect-partial-sync.d.ts +41 -0
- package/dist/connect-partial-sync.js +6 -0
- package/dist/connect-partial-sync.js.map +1 -0
- package/dist/connect-sync.d.ts +26 -0
- package/dist/connect-sync.js +5 -0
- package/dist/connect-sync.js.map +1 -0
- package/dist/create-partial-synced-collection.d.ts +24 -0
- package/dist/create-partial-synced-collection.js +8 -0
- package/dist/create-partial-synced-collection.js.map +1 -0
- package/dist/create-synced-collection.d.ts +26 -0
- package/dist/create-synced-collection.js +8 -0
- package/dist/create-synced-collection.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/partial-sync-client-bridge.d.ts +157 -0
- package/dist/partial-sync-client-bridge.js +6 -0
- package/dist/partial-sync-client-bridge.js.map +1 -0
- package/dist/partial-sync-interest.d.ts +48 -0
- package/dist/partial-sync-interest.js +6 -0
- package/dist/partial-sync-interest.js.map +1 -0
- package/dist/partial-sync-mutation-handler.d.ts +31 -0
- package/dist/partial-sync-mutation-handler.js +6 -0
- package/dist/partial-sync-mutation-handler.js.map +1 -0
- package/dist/partial-sync-predicate-match.d.ts +8 -0
- package/dist/partial-sync-predicate-match.js +4 -0
- package/dist/partial-sync-predicate-match.js.map +1 -0
- package/dist/partial-sync-row-key.d.ts +41 -0
- package/dist/partial-sync-row-key.js +4 -0
- package/dist/partial-sync-row-key.js.map +1 -0
- package/dist/partial-sync-server-bridge.d.ts +102 -0
- package/dist/partial-sync-server-bridge.js +8 -0
- package/dist/partial-sync-server-bridge.js.map +1 -0
- package/dist/react/constants.d.ts +12 -0
- package/dist/react/constants.js +4 -0
- package/dist/react/constants.js.map +1 -0
- package/dist/react/index.d.ts +19 -0
- package/dist/react/index.js +17 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/partial-sync-adapter.d.ts +40 -0
- package/dist/react/partial-sync-adapter.js +4 -0
- package/dist/react/partial-sync-adapter.js.map +1 -0
- package/dist/react/partial-sync-utils.d.ts +42 -0
- package/dist/react/partial-sync-utils.js +5 -0
- package/dist/react/partial-sync-utils.js.map +1 -0
- package/dist/react/range-conditions-expression.d.ts +49 -0
- package/dist/react/range-conditions-expression.js +4 -0
- package/dist/react/range-conditions-expression.js.map +1 -0
- package/dist/react/types.d.ts +196 -0
- package/dist/react/types.js +3 -0
- package/dist/react/types.js.map +1 -0
- package/dist/react/usePartialSyncCollection.d.ts +20 -0
- package/dist/react/usePartialSyncCollection.js +10 -0
- package/dist/react/usePartialSyncCollection.js.map +1 -0
- package/dist/react/usePartialSyncViewport.d.ts +20 -0
- package/dist/react/usePartialSyncViewport.js +7 -0
- package/dist/react/usePartialSyncViewport.js.map +1 -0
- package/dist/react/usePartialSyncWindow.d.ts +17 -0
- package/dist/react/usePartialSyncWindow.js +12 -0
- package/dist/react/usePartialSyncWindow.js.map +1 -0
- package/dist/react/usePredicateFilteredRows.d.ts +20 -0
- package/dist/react/usePredicateFilteredRows.js +6 -0
- package/dist/react/usePredicateFilteredRows.js.map +1 -0
- package/dist/sync-client-bridge.d.ts +48 -0
- package/dist/sync-client-bridge.js +6 -0
- package/dist/sync-client-bridge.js.map +1 -0
- package/dist/sync-protocol.d.ts +378 -0
- package/dist/sync-protocol.js +4 -0
- package/dist/sync-protocol.js.map +1 -0
- package/dist/sync-server-bridge.d.ts +35 -0
- package/dist/sync-server-bridge.js +6 -0
- package/dist/sync-server-bridge.js.map +1 -0
- package/dist/with-sync.d.ts +107 -0
- package/dist/with-sync.js +7 -0
- package/dist/with-sync.js.map +1 -0
- package/package.json +27 -21
- package/src/connect-partial-sync.ts +16 -12
- package/src/connect-sync.ts +12 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { exhaustiveGuard } from "@firtoz/maybe-error";
|
|
2
2
|
import type { SyncMessage } from "@firtoz/db-helpers";
|
|
3
|
-
import {
|
|
3
|
+
import { StandardSchemaWebSocketClient } from "@firtoz/websocket-do/schema-client";
|
|
4
4
|
import type { PartialSyncClientBridge } from "./partial-sync-client-bridge";
|
|
5
5
|
import type { SyncClientBridge } from "./sync-client-bridge";
|
|
6
6
|
import {
|
|
@@ -241,7 +241,7 @@ export function connectPartialSync<
|
|
|
241
241
|
await drainRangePatchCoalesceBuffer();
|
|
242
242
|
};
|
|
243
243
|
|
|
244
|
-
const
|
|
244
|
+
const schemaClient = new StandardSchemaWebSocketClient({
|
|
245
245
|
url: options.url,
|
|
246
246
|
clientSchema,
|
|
247
247
|
serverSchema,
|
|
@@ -278,18 +278,22 @@ export function connectPartialSync<
|
|
|
278
278
|
const flushPendingOutbound = () => {
|
|
279
279
|
while (
|
|
280
280
|
pendingOutbound.length > 0 &&
|
|
281
|
-
|
|
281
|
+
schemaClient.socket.readyState === WebSocket.OPEN
|
|
282
282
|
) {
|
|
283
283
|
const message = pendingOutbound.shift();
|
|
284
284
|
if (message !== undefined) {
|
|
285
|
-
|
|
285
|
+
void schemaClient.send(message).catch((err: unknown) => {
|
|
286
|
+
console.error("[connectPartialSync] WebSocket send failed", err);
|
|
287
|
+
});
|
|
286
288
|
}
|
|
287
289
|
}
|
|
288
290
|
};
|
|
289
291
|
|
|
290
292
|
options.setTransportSend((message) => {
|
|
291
|
-
if (
|
|
292
|
-
|
|
293
|
+
if (schemaClient.socket.readyState === WebSocket.OPEN) {
|
|
294
|
+
void schemaClient.send(message).catch((err: unknown) => {
|
|
295
|
+
console.error("[connectPartialSync] WebSocket send failed", err);
|
|
296
|
+
});
|
|
293
297
|
} else {
|
|
294
298
|
pendingOutbound.push(message);
|
|
295
299
|
}
|
|
@@ -308,10 +312,10 @@ export function connectPartialSync<
|
|
|
308
312
|
mutationBridge?.setConnected(false);
|
|
309
313
|
};
|
|
310
314
|
|
|
311
|
-
|
|
312
|
-
|
|
315
|
+
schemaClient.socket.addEventListener("open", onOpen);
|
|
316
|
+
schemaClient.socket.addEventListener("close", onClose);
|
|
313
317
|
|
|
314
|
-
if (
|
|
318
|
+
if (schemaClient.socket.readyState === WebSocket.OPEN) {
|
|
315
319
|
onOpen();
|
|
316
320
|
}
|
|
317
321
|
|
|
@@ -338,12 +342,12 @@ export function connectPartialSync<
|
|
|
338
342
|
cancelCoalescedRangePatchDeferredFlush();
|
|
339
343
|
inboundWorkQueue.length = 0;
|
|
340
344
|
rangePatchCoalesceBuffer = [];
|
|
341
|
-
|
|
342
|
-
|
|
345
|
+
schemaClient.socket.removeEventListener("open", onOpen);
|
|
346
|
+
schemaClient.socket.removeEventListener("close", onClose);
|
|
343
347
|
pendingOutbound.length = 0;
|
|
344
348
|
bridge.setConnected(false);
|
|
345
349
|
mutationBridge?.setConnected(false);
|
|
346
350
|
options.setTransportSend(() => {});
|
|
347
|
-
|
|
351
|
+
schemaClient.close();
|
|
348
352
|
};
|
|
349
353
|
}
|
package/src/connect-sync.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StandardSchemaWebSocketClient } from "@firtoz/websocket-do/schema-client";
|
|
2
2
|
import type { SyncClientBridge } from "./sync-client-bridge";
|
|
3
3
|
import type { PartialSyncRowShape } from "./partial-sync-row-key";
|
|
4
4
|
import {
|
|
@@ -25,7 +25,7 @@ export type ConnectSyncOptions<TItem = unknown> = {
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
* Connects a {@link SyncClientBridge} to a WebSocket using the same codec as
|
|
28
|
+
* Connects a {@link SyncClientBridge} to a WebSocket using the same codec as `StandardSchemaSession` (`@firtoz/websocket-do`) on the server.
|
|
29
29
|
*/
|
|
30
30
|
export function connectSync<TItem extends PartialSyncRowShape>(
|
|
31
31
|
bridge: SyncClientBridge<TItem>,
|
|
@@ -35,7 +35,7 @@ export function connectSync<TItem extends PartialSyncRowShape>(
|
|
|
35
35
|
const serverSchema = createServerMessageSchema<TItem>();
|
|
36
36
|
const useMsgpack = options.transport === "msgpack";
|
|
37
37
|
|
|
38
|
-
const
|
|
38
|
+
const schemaClient = new StandardSchemaWebSocketClient({
|
|
39
39
|
url: options.url,
|
|
40
40
|
clientSchema,
|
|
41
41
|
serverSchema,
|
|
@@ -53,7 +53,9 @@ export function connectSync<TItem extends PartialSyncRowShape>(
|
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
options.setTransportSend((message) => {
|
|
56
|
-
|
|
56
|
+
void schemaClient.send(message).catch((err: unknown) => {
|
|
57
|
+
console.error("[connectSync] WebSocket send failed", err);
|
|
58
|
+
});
|
|
57
59
|
});
|
|
58
60
|
|
|
59
61
|
bridge.setConnected(false);
|
|
@@ -65,18 +67,18 @@ export function connectSync<TItem extends PartialSyncRowShape>(
|
|
|
65
67
|
bridge.setConnected(false);
|
|
66
68
|
};
|
|
67
69
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
schemaClient.socket.addEventListener("open", onOpen);
|
|
71
|
+
schemaClient.socket.addEventListener("close", onClose);
|
|
70
72
|
|
|
71
|
-
if (
|
|
73
|
+
if (schemaClient.socket.readyState === WebSocket.OPEN) {
|
|
72
74
|
onOpen();
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
return () => {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
schemaClient.socket.removeEventListener("open", onOpen);
|
|
79
|
+
schemaClient.socket.removeEventListener("close", onClose);
|
|
78
80
|
bridge.setConnected(false);
|
|
79
81
|
options.setTransportSend(() => {});
|
|
80
|
-
|
|
82
|
+
schemaClient.close();
|
|
81
83
|
};
|
|
82
84
|
}
|