@syncular/client 0.0.6-95 → 0.1.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 +713 -11
- package/dist/auth-leases.d.ts +11 -0
- package/dist/auth-leases.d.ts.map +1 -0
- package/dist/auth-leases.js +140 -0
- package/dist/auth-leases.js.map +1 -0
- package/dist/blob-limits.d.ts +15 -0
- package/dist/blob-limits.d.ts.map +1 -0
- package/dist/blob-limits.js +66 -0
- package/dist/blob-limits.js.map +1 -0
- package/dist/bridge-client.d.ts +69 -0
- package/dist/bridge-client.d.ts.map +1 -0
- package/dist/bridge-client.js +282 -0
- package/dist/bridge-client.js.map +1 -0
- package/dist/client-config.d.ts +6 -0
- package/dist/client-config.d.ts.map +1 -0
- package/dist/client-config.js +18 -0
- package/dist/client-config.js.map +1 -0
- package/dist/client.d.ts +65 -397
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +150 -960
- package/dist/client.js.map +1 -1
- package/dist/command-history.d.ts +35 -0
- package/dist/command-history.d.ts.map +1 -0
- package/dist/command-history.js +378 -0
- package/dist/command-history.js.map +1 -0
- package/dist/console-diagnostics.d.ts +33 -0
- package/dist/console-diagnostics.d.ts.map +1 -0
- package/dist/console-diagnostics.js +496 -0
- package/dist/console-diagnostics.js.map +1 -0
- package/dist/crdt-yjs/index.d.ts +4 -0
- package/dist/crdt-yjs/index.d.ts.map +1 -0
- package/dist/crdt-yjs/index.js +4 -0
- package/dist/crdt-yjs/index.js.map +1 -0
- package/dist/crdt-yjs/webview-host-facade.d.ts +126 -0
- package/dist/crdt-yjs/webview-host-facade.d.ts.map +1 -0
- package/dist/crdt-yjs/webview-host-facade.js +284 -0
- package/dist/crdt-yjs/webview-host-facade.js.map +1 -0
- package/dist/crdt-yjs/yjs-document-field-adapter.d.ts +153 -0
- package/dist/crdt-yjs/yjs-document-field-adapter.d.ts.map +1 -0
- package/dist/crdt-yjs/yjs-document-field-adapter.js +406 -0
- package/dist/crdt-yjs/yjs-document-field-adapter.js.map +1 -0
- package/dist/crdt-yjs/yjs-prosemirror-bridge.d.ts +73 -0
- package/dist/crdt-yjs/yjs-prosemirror-bridge.d.ts.map +1 -0
- package/dist/crdt-yjs/yjs-prosemirror-bridge.js +169 -0
- package/dist/crdt-yjs/yjs-prosemirror-bridge.js.map +1 -0
- package/dist/database.d.ts +83 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +916 -0
- package/dist/database.js.map +1 -0
- package/dist/diagnostics.d.ts +10 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +83 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/errors.d.ts +24 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +211 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated-bridge.d.ts +365 -0
- package/dist/generated-bridge.d.ts.map +1 -0
- package/dist/generated-bridge.js +250 -0
- package/dist/generated-bridge.js.map +1 -0
- package/dist/index.d.ts +13 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -25
- package/dist/index.js.map +1 -1
- package/dist/mutations.d.ts +4 -72
- package/dist/mutations.d.ts.map +1 -1
- package/dist/mutations.js +2 -568
- package/dist/mutations.js.map +1 -1
- package/dist/network.d.ts +3 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +17 -0
- package/dist/network.js.map +1 -0
- package/dist/react/index.d.ts +169 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +628 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react-native/index.d.ts +35 -0
- package/dist/react-native/index.d.ts.map +1 -0
- package/dist/react-native/index.js +49 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/runtime-contract.d.ts +13 -0
- package/dist/runtime-contract.d.ts.map +1 -0
- package/dist/runtime-contract.js +24 -0
- package/dist/runtime-contract.js.map +1 -0
- package/dist/rust-client.d.ts +106 -0
- package/dist/rust-client.d.ts.map +1 -0
- package/dist/rust-client.js +936 -0
- package/dist/rust-client.js.map +1 -0
- package/dist/sentry.d.ts +35 -0
- package/dist/sentry.d.ts.map +1 -0
- package/dist/sentry.js +155 -0
- package/dist/sentry.js.map +1 -0
- package/dist/sql-safety.d.ts +3 -0
- package/dist/sql-safety.d.ts.map +1 -0
- package/dist/sql-safety.js +62 -0
- package/dist/sql-safety.js.map +1 -0
- package/dist/syncular-runtime-artifacts.json +61 -0
- package/dist/tauri/index.d.ts +35 -0
- package/dist/tauri/index.d.ts.map +1 -0
- package/dist/tauri/index.js +114 -0
- package/dist/tauri/index.js.map +1 -0
- package/dist/types.d.ts +1059 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/wasm/.syncular-wasm-profile +1 -0
- package/dist/wasm/syncular-runtime-artifact.json +21 -0
- package/dist/wasm/syncular.d.ts +207 -0
- package/dist/wasm/syncular.js +2341 -0
- package/dist/wasm/syncular_bg.wasm +0 -0
- package/dist/wasm/syncular_bg.wasm.d.ts +97 -0
- package/dist/wasm-bindings/runtime-contract.d.ts +22 -0
- package/dist/wasm-bindings/runtime-contract.d.ts.map +1 -0
- package/dist/wasm-bindings/runtime-contract.js +112 -0
- package/dist/wasm-bindings/runtime-contract.js.map +1 -0
- package/dist/wasm-core/.syncular-wasm-profile +1 -0
- package/dist/wasm-core/syncular-runtime-artifact.json +17 -0
- package/dist/wasm-core/syncular.d.ts +162 -0
- package/dist/wasm-core/syncular.js +1847 -0
- package/dist/wasm-core/syncular_bg.wasm +0 -0
- package/dist/wasm-core/syncular_bg.wasm.d.ts +77 -0
- package/dist/wasm-perf/.syncular-wasm-profile +1 -0
- package/dist/wasm-perf/syncular-runtime-artifact.json +21 -0
- package/dist/wasm-perf/syncular.d.ts +207 -0
- package/dist/wasm-perf/syncular.js +2341 -0
- package/dist/wasm-perf/syncular_bg.wasm +0 -0
- package/dist/wasm-perf/syncular_bg.wasm.d.ts +97 -0
- package/dist/wasm-runtime.d.ts +18 -0
- package/dist/wasm-runtime.d.ts.map +1 -0
- package/dist/wasm-runtime.js +28 -0
- package/dist/wasm-runtime.js.map +1 -0
- package/dist/worker-client.d.ts +123 -0
- package/dist/worker-client.d.ts.map +1 -0
- package/dist/worker-client.js +1686 -0
- package/dist/worker-client.js.map +1 -0
- package/dist/worker-entry.d.ts +2 -0
- package/dist/worker-entry.d.ts.map +1 -0
- package/dist/worker-entry.js +479 -0
- package/dist/worker-entry.js.map +1 -0
- package/dist/worker-protocol.d.ts +64 -0
- package/dist/worker-protocol.d.ts.map +1 -0
- package/dist/worker-protocol.js +16 -0
- package/dist/worker-protocol.js.map +1 -0
- package/dist/worker-realtime.d.ts +39 -0
- package/dist/worker-realtime.d.ts.map +1 -0
- package/dist/worker-realtime.js +677 -0
- package/dist/worker-realtime.js.map +1 -0
- package/package.json +124 -17
- package/src/auth-leases.ts +251 -0
- package/src/blob-limits.ts +98 -0
- package/src/bridge-client.ts +512 -0
- package/src/client-config.ts +29 -0
- package/src/client.ts +256 -1414
- package/src/command-history.ts +623 -0
- package/src/console-diagnostics.ts +617 -0
- package/src/crdt-yjs/index.ts +3 -0
- package/src/crdt-yjs/webview-host-facade.ts +477 -0
- package/src/crdt-yjs/yjs-document-field-adapter.ts +733 -0
- package/src/crdt-yjs/yjs-prosemirror-bridge.ts +272 -0
- package/src/database.ts +1342 -0
- package/src/diagnostics.ts +116 -0
- package/src/errors.ts +269 -0
- package/src/generated-bridge.ts +741 -0
- package/src/index.ts +21 -25
- package/src/mutations.ts +12 -821
- package/src/network.ts +32 -0
- package/src/react/index.ts +1036 -0
- package/src/react-native/index.ts +152 -0
- package/src/runtime-contract.ts +48 -0
- package/src/rust-client.ts +1488 -0
- package/src/sentry.ts +215 -0
- package/src/sql-safety.ts +61 -0
- package/src/tauri/index.ts +211 -0
- package/src/types.ts +1356 -0
- package/src/wasm-bindings/generated-wasm-bindings.d.ts +70 -0
- package/src/wasm-bindings/runtime-contract.ts +158 -0
- package/src/wasm-runtime.ts +76 -0
- package/src/worker-client.ts +2215 -0
- package/src/worker-entry.ts +584 -0
- package/src/worker-protocol.ts +109 -0
- package/src/worker-realtime.ts +843 -0
- package/dist/blobs/index.d.ts +0 -7
- package/dist/blobs/index.d.ts.map +0 -1
- package/dist/blobs/index.js +0 -7
- package/dist/blobs/index.js.map +0 -1
- package/dist/blobs/manager.d.ts +0 -345
- package/dist/blobs/manager.d.ts.map +0 -1
- package/dist/blobs/manager.js +0 -749
- package/dist/blobs/manager.js.map +0 -1
- package/dist/blobs/migrate.d.ts +0 -14
- package/dist/blobs/migrate.d.ts.map +0 -1
- package/dist/blobs/migrate.js +0 -59
- package/dist/blobs/migrate.js.map +0 -1
- package/dist/blobs/types.d.ts +0 -62
- package/dist/blobs/types.d.ts.map +0 -1
- package/dist/blobs/types.js +0 -5
- package/dist/blobs/types.js.map +0 -1
- package/dist/conflicts.d.ts +0 -31
- package/dist/conflicts.d.ts.map +0 -1
- package/dist/conflicts.js +0 -112
- package/dist/conflicts.js.map +0 -1
- package/dist/create-client.d.ts +0 -118
- package/dist/create-client.d.ts.map +0 -1
- package/dist/create-client.js +0 -178
- package/dist/create-client.js.map +0 -1
- package/dist/engine/SyncEngine.d.ts +0 -272
- package/dist/engine/SyncEngine.d.ts.map +0 -1
- package/dist/engine/SyncEngine.js +0 -1860
- package/dist/engine/SyncEngine.js.map +0 -1
- package/dist/engine/index.d.ts +0 -6
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js +0 -6
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/types.d.ts +0 -345
- package/dist/engine/types.d.ts.map +0 -1
- package/dist/engine/types.js +0 -7
- package/dist/engine/types.js.map +0 -1
- package/dist/handlers/collection.d.ts +0 -6
- package/dist/handlers/collection.d.ts.map +0 -1
- package/dist/handlers/collection.js +0 -21
- package/dist/handlers/collection.js.map +0 -1
- package/dist/handlers/create-handler.d.ts +0 -120
- package/dist/handlers/create-handler.d.ts.map +0 -1
- package/dist/handlers/create-handler.js +0 -145
- package/dist/handlers/create-handler.js.map +0 -1
- package/dist/handlers/types.d.ts +0 -83
- package/dist/handlers/types.d.ts.map +0 -1
- package/dist/handlers/types.js +0 -5
- package/dist/handlers/types.js.map +0 -1
- package/dist/migrate.d.ts +0 -19
- package/dist/migrate.d.ts.map +0 -1
- package/dist/migrate.js +0 -238
- package/dist/migrate.js.map +0 -1
- package/dist/outbox.d.ts +0 -112
- package/dist/outbox.d.ts.map +0 -1
- package/dist/outbox.js +0 -294
- package/dist/outbox.js.map +0 -1
- package/dist/plugins/incrementing-version.d.ts +0 -34
- package/dist/plugins/incrementing-version.d.ts.map +0 -1
- package/dist/plugins/incrementing-version.js +0 -83
- package/dist/plugins/incrementing-version.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -3
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -3
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -49
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/plugins/types.js +0 -15
- package/dist/plugins/types.js.map +0 -1
- package/dist/proxy/connection.d.ts +0 -33
- package/dist/proxy/connection.d.ts.map +0 -1
- package/dist/proxy/connection.js +0 -153
- package/dist/proxy/connection.js.map +0 -1
- package/dist/proxy/dialect.d.ts +0 -46
- package/dist/proxy/dialect.d.ts.map +0 -1
- package/dist/proxy/dialect.js +0 -58
- package/dist/proxy/dialect.js.map +0 -1
- package/dist/proxy/driver.d.ts +0 -42
- package/dist/proxy/driver.d.ts.map +0 -1
- package/dist/proxy/driver.js +0 -78
- package/dist/proxy/driver.js.map +0 -1
- package/dist/proxy/index.d.ts +0 -10
- package/dist/proxy/index.d.ts.map +0 -1
- package/dist/proxy/index.js +0 -10
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/mutations.d.ts +0 -9
- package/dist/proxy/mutations.d.ts.map +0 -1
- package/dist/proxy/mutations.js +0 -11
- package/dist/proxy/mutations.js.map +0 -1
- package/dist/pull-engine.d.ts +0 -48
- package/dist/pull-engine.d.ts.map +0 -1
- package/dist/pull-engine.js +0 -648
- package/dist/pull-engine.js.map +0 -1
- package/dist/push-engine.d.ts +0 -18
- package/dist/push-engine.d.ts.map +0 -1
- package/dist/push-engine.js +0 -167
- package/dist/push-engine.js.map +0 -1
- package/dist/query/FingerprintCollector.d.ts +0 -18
- package/dist/query/FingerprintCollector.d.ts.map +0 -1
- package/dist/query/FingerprintCollector.js +0 -28
- package/dist/query/FingerprintCollector.js.map +0 -1
- package/dist/query/QueryContext.d.ts +0 -33
- package/dist/query/QueryContext.d.ts.map +0 -1
- package/dist/query/QueryContext.js +0 -16
- package/dist/query/QueryContext.js.map +0 -1
- package/dist/query/fingerprint.d.ts +0 -61
- package/dist/query/fingerprint.d.ts.map +0 -1
- package/dist/query/fingerprint.js +0 -91
- package/dist/query/fingerprint.js.map +0 -1
- package/dist/query/index.d.ts +0 -7
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js +0 -7
- package/dist/query/index.js.map +0 -1
- package/dist/query/tracked-select.d.ts +0 -18
- package/dist/query/tracked-select.d.ts.map +0 -1
- package/dist/query/tracked-select.js +0 -90
- package/dist/query/tracked-select.js.map +0 -1
- package/dist/schema.d.ts +0 -83
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -7
- package/dist/schema.js.map +0 -1
- package/dist/subscription-state.d.ts +0 -46
- package/dist/subscription-state.d.ts.map +0 -1
- package/dist/subscription-state.js +0 -185
- package/dist/subscription-state.js.map +0 -1
- package/dist/sync-loop.d.ts +0 -34
- package/dist/sync-loop.d.ts.map +0 -1
- package/dist/sync-loop.js +0 -253
- package/dist/sync-loop.js.map +0 -1
- package/dist/sync.d.ts +0 -32
- package/dist/sync.d.ts.map +0 -1
- package/dist/sync.js +0 -55
- package/dist/sync.js.map +0 -1
- package/dist/utils/id.d.ts +0 -17
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js +0 -46
- package/dist/utils/id.js.map +0 -1
- package/src/blobs/index.ts +0 -7
- package/src/blobs/manager.ts +0 -1027
- package/src/blobs/migrate.ts +0 -67
- package/src/blobs/types.ts +0 -84
- package/src/client.test.ts +0 -417
- package/src/conflicts.ts +0 -171
- package/src/create-client.test.ts +0 -83
- package/src/create-client.ts +0 -330
- package/src/engine/SyncEngine.test.ts +0 -254
- package/src/engine/SyncEngine.ts +0 -2375
- package/src/engine/index.ts +0 -6
- package/src/engine/types.ts +0 -419
- package/src/handlers/collection.ts +0 -36
- package/src/handlers/create-handler.ts +0 -330
- package/src/handlers/types.ts +0 -108
- package/src/migrate.ts +0 -318
- package/src/outbox.ts +0 -383
- package/src/plugins/incrementing-version.ts +0 -133
- package/src/plugins/index.ts +0 -2
- package/src/plugins/types.ts +0 -63
- package/src/proxy/connection.ts +0 -191
- package/src/proxy/dialect.ts +0 -76
- package/src/proxy/driver.ts +0 -126
- package/src/proxy/index.ts +0 -10
- package/src/proxy/mutations.ts +0 -18
- package/src/pull-engine.test.ts +0 -151
- package/src/pull-engine.ts +0 -855
- package/src/push-engine.ts +0 -216
- package/src/query/FingerprintCollector.ts +0 -29
- package/src/query/QueryContext.ts +0 -54
- package/src/query/fingerprint.ts +0 -109
- package/src/query/index.ts +0 -10
- package/src/query/tracked-select.ts +0 -139
- package/src/schema.ts +0 -94
- package/src/subscription-state.ts +0 -259
- package/src/sync-loop.ts +0 -379
- package/src/sync.ts +0 -170
- package/src/utils/id.ts +0 -55
package/dist/create-client.js
DELETED
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simplified client factory
|
|
3
|
-
*
|
|
4
|
-
* Breaking changes from legacy Client:
|
|
5
|
-
* - handlers: plain array (no registry class)
|
|
6
|
-
* - url: string instead of transport (transport auto-created)
|
|
7
|
-
* - subscriptions: derived from handler.subscribe (no separate param)
|
|
8
|
-
* - clientId: auto-generated (no longer required)
|
|
9
|
-
*/
|
|
10
|
-
import { extractScopeVars } from '@syncular/core';
|
|
11
|
-
import { createHttpTransport } from '@syncular/transport-http';
|
|
12
|
-
import { Client } from './client.js';
|
|
13
|
-
import { createClientHandlerCollection } from './handlers/collection.js';
|
|
14
|
-
import { createClientHandler } from './handlers/create-handler.js';
|
|
15
|
-
import { randomUUID } from './utils/id.js';
|
|
16
|
-
function deriveDefaultSubscriptionScopes(args) {
|
|
17
|
-
const patterns = args.handler.scopePatterns ?? [];
|
|
18
|
-
const vars = new Set();
|
|
19
|
-
for (const pattern of patterns) {
|
|
20
|
-
for (const v of extractScopeVars(pattern)) {
|
|
21
|
-
vars.add(v);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
const allVars = Array.from(vars);
|
|
25
|
-
if (allVars.length !== 1) {
|
|
26
|
-
throw new Error(`Handler "${args.handler.table}" has subscribe=true but no explicit subscription scopes. ` +
|
|
27
|
-
'Set subscribe: { scopes: { ... } } on the handler. ' +
|
|
28
|
-
`(Cannot infer defaults from scopePatterns: ${patterns.length > 0 ? patterns.join(', ') : '(none)'})`);
|
|
29
|
-
}
|
|
30
|
-
const varName = allVars[0];
|
|
31
|
-
return { [varName]: args.actorId };
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Auto-generate a simple handler for a table.
|
|
35
|
-
* Uses 'id' as primary key and provided scopes.
|
|
36
|
-
*/
|
|
37
|
-
function createAutoHandler(table, scopes, options) {
|
|
38
|
-
return createClientHandler({
|
|
39
|
-
table: table,
|
|
40
|
-
scopes: scopes,
|
|
41
|
-
codecs: options.codecs,
|
|
42
|
-
codecDialect: options.codecDialect,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
function normalizeTransportBaseUrl(url) {
|
|
46
|
-
const trimmed = url.trim().replace(/\/+$/, '');
|
|
47
|
-
if (!trimmed.endsWith('/sync')) {
|
|
48
|
-
return trimmed;
|
|
49
|
-
}
|
|
50
|
-
const baseUrl = trimmed.slice(0, -'/sync'.length);
|
|
51
|
-
return baseUrl.length > 0 ? baseUrl : '/';
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Create a simplified sync client.
|
|
55
|
-
*
|
|
56
|
-
* Auto-generates clientId, creates transport from URL (default: '/api/sync'),
|
|
57
|
-
* builds subscriptions from handlers.
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```typescript
|
|
61
|
-
* // Auto-generate handlers for simple tables (default URL: '/api/sync')
|
|
62
|
-
* const { client } = await createClient({
|
|
63
|
-
* db,
|
|
64
|
-
* actorId: 'user-123',
|
|
65
|
-
* tables: ['tasks', 'notes'],
|
|
66
|
-
* scopes: ['user:{user_id}'],
|
|
67
|
-
* });
|
|
68
|
-
*
|
|
69
|
-
* // With custom handlers for advanced cases
|
|
70
|
-
* const { client } = await createClient({
|
|
71
|
-
* db,
|
|
72
|
-
* actorId: 'user-123',
|
|
73
|
-
* handlers: [
|
|
74
|
-
* tasksHandler, // subscribe: true by default
|
|
75
|
-
* notesHandler, // subscribe: true by default
|
|
76
|
-
* draftsHandler, // subscribe: false (local-only)
|
|
77
|
-
* ],
|
|
78
|
-
* });
|
|
79
|
-
*
|
|
80
|
-
* // Listen for events
|
|
81
|
-
* client.on('sync:error', (err) => console.error(err));
|
|
82
|
-
* client.on('data:change', (scopes) => console.log('Data changed:', scopes));
|
|
83
|
-
* ```
|
|
84
|
-
*/
|
|
85
|
-
export async function createClient(options) {
|
|
86
|
-
const { db, url = '/api/sync', handlers: providedHandlers, tables, scopes, actorId, clientId = randomUUID(), transport: customTransport, getHeaders, sync = {}, blobStorage, plugins, stateId, codecs, codecDialect, autoStart = true, } = options;
|
|
87
|
-
// Validate options
|
|
88
|
-
if (!providedHandlers && !tables) {
|
|
89
|
-
throw new Error('Either handlers or tables must be provided');
|
|
90
|
-
}
|
|
91
|
-
if (tables && !scopes) {
|
|
92
|
-
throw new Error('scopes is required when using tables option');
|
|
93
|
-
}
|
|
94
|
-
// Auto-generate handlers from tables if needed
|
|
95
|
-
const handlers = providedHandlers ??
|
|
96
|
-
tables.map((table) => createAutoHandler(table, scopes, {
|
|
97
|
-
codecs,
|
|
98
|
-
codecDialect,
|
|
99
|
-
}));
|
|
100
|
-
const tableHandlers = createClientHandlerCollection(handlers);
|
|
101
|
-
// Create transport from URL if not provided
|
|
102
|
-
let transport = customTransport;
|
|
103
|
-
if (!transport && url) {
|
|
104
|
-
transport = createHttpTransport({
|
|
105
|
-
baseUrl: normalizeTransportBaseUrl(url),
|
|
106
|
-
getHeaders,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
if (!transport) {
|
|
110
|
-
throw new Error('Either url or transport must be provided');
|
|
111
|
-
}
|
|
112
|
-
// Build subscriptions from handlers
|
|
113
|
-
const subscriptions = handlers
|
|
114
|
-
.map((handler) => {
|
|
115
|
-
const sub = handler.subscribe;
|
|
116
|
-
// Skip handlers that are explicitly disabled
|
|
117
|
-
if (sub === false)
|
|
118
|
-
return null;
|
|
119
|
-
if (sub === true || sub === undefined) {
|
|
120
|
-
// Default: subscribe to the handler's single scope var using actorId.
|
|
121
|
-
// This avoids sending `{}` which would be treated as revoked by the server.
|
|
122
|
-
const scopes = deriveDefaultSubscriptionScopes({
|
|
123
|
-
handler,
|
|
124
|
-
actorId,
|
|
125
|
-
});
|
|
126
|
-
return {
|
|
127
|
-
id: handler.table,
|
|
128
|
-
table: handler.table,
|
|
129
|
-
scopes,
|
|
130
|
-
params: {},
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
// Custom subscription config
|
|
134
|
-
const scopes = {};
|
|
135
|
-
for (const [scopeKey, scopeValue] of Object.entries(sub.scopes ?? {})) {
|
|
136
|
-
if (scopeValue === undefined)
|
|
137
|
-
continue;
|
|
138
|
-
scopes[scopeKey] = scopeValue;
|
|
139
|
-
}
|
|
140
|
-
if (Object.keys(scopes).length === 0) {
|
|
141
|
-
throw new Error(`Handler "${handler.table}" subscription scopes cannot be empty. ` +
|
|
142
|
-
'Set subscribe: false or provide subscribe.scopes.');
|
|
143
|
-
}
|
|
144
|
-
return {
|
|
145
|
-
id: handler.table,
|
|
146
|
-
table: handler.table,
|
|
147
|
-
scopes,
|
|
148
|
-
params: sub.params ?? {},
|
|
149
|
-
};
|
|
150
|
-
})
|
|
151
|
-
.filter((sub) => sub !== null);
|
|
152
|
-
// Create client
|
|
153
|
-
const client = new Client({
|
|
154
|
-
db,
|
|
155
|
-
transport,
|
|
156
|
-
tableHandlers,
|
|
157
|
-
clientId,
|
|
158
|
-
actorId,
|
|
159
|
-
subscriptions,
|
|
160
|
-
blobStorage,
|
|
161
|
-
plugins,
|
|
162
|
-
stateId,
|
|
163
|
-
codecs,
|
|
164
|
-
codecDialect,
|
|
165
|
-
realtimeEnabled: sync.realtime ?? true,
|
|
166
|
-
pollIntervalMs: sync.pollIntervalMs,
|
|
167
|
-
});
|
|
168
|
-
// Auto-start
|
|
169
|
-
if (autoStart) {
|
|
170
|
-
await client.start();
|
|
171
|
-
}
|
|
172
|
-
return {
|
|
173
|
-
client,
|
|
174
|
-
stop: () => client.stop(),
|
|
175
|
-
destroy: () => client.destroy(),
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
//# sourceMappingURL=create-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-client.js","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/client - Core sync engine
|
|
3
|
-
*
|
|
4
|
-
* Event-driven sync engine that manages push/pull cycles, connection state,
|
|
5
|
-
* and provides a clean API for framework bindings to consume.
|
|
6
|
-
*/
|
|
7
|
-
import { type SyncSubscriptionRequest } from '@syncular/core';
|
|
8
|
-
import { type Kysely } from 'kysely';
|
|
9
|
-
import type { SyncClientDb } from '../schema';
|
|
10
|
-
import { type SubscriptionState } from '../subscription-state';
|
|
11
|
-
import type { ConflictInfo, OutboxStats, PresenceEntry, SyncAwaitBootstrapOptions, SyncAwaitPhaseOptions, SyncDiagnostics, SyncEngineConfig, SyncEngineState, SyncEventListener, SyncEventType, SyncInspectorOptions, SyncInspectorSnapshot, SyncProgress, SyncRepairOptions, SyncResetOptions, SyncResetResult, SyncResult, TransportHealth } from './types';
|
|
12
|
-
export declare class SyncEngine<DB extends SyncClientDb = SyncClientDb> {
|
|
13
|
-
private config;
|
|
14
|
-
private state;
|
|
15
|
-
private listeners;
|
|
16
|
-
private pollerId;
|
|
17
|
-
private fallbackPollerId;
|
|
18
|
-
private realtimeDisconnect;
|
|
19
|
-
private realtimePresenceUnsub;
|
|
20
|
-
private isDestroyed;
|
|
21
|
-
private migrated;
|
|
22
|
-
private syncPromise;
|
|
23
|
-
private syncRequestedWhileRunning;
|
|
24
|
-
private retryTimeoutId;
|
|
25
|
-
private realtimeCatchupTimeoutId;
|
|
26
|
-
private hasRealtimeConnectedOnce;
|
|
27
|
-
private transportHealth;
|
|
28
|
-
private activeBootstrapSubscriptions;
|
|
29
|
-
private bootstrapStartedAt;
|
|
30
|
-
private inspectorEvents;
|
|
31
|
-
private nextInspectorEventId;
|
|
32
|
-
/**
|
|
33
|
-
* In-memory map tracking local mutation timestamps by rowId.
|
|
34
|
-
* Used for efficient fingerprint-based rerender optimization.
|
|
35
|
-
* Key format: `${table}:${rowId}`, Value: timestamp (Date.now())
|
|
36
|
-
*/
|
|
37
|
-
private mutationTimestamps;
|
|
38
|
-
/**
|
|
39
|
-
* In-memory map tracking table-level mutation timestamps.
|
|
40
|
-
* Used for coarse invalidation during large bootstrap snapshots to avoid
|
|
41
|
-
* storing timestamps for every row.
|
|
42
|
-
*/
|
|
43
|
-
private tableMutationTimestamps;
|
|
44
|
-
/**
|
|
45
|
-
* In-memory presence state by scope key.
|
|
46
|
-
* Updated via realtime presence events.
|
|
47
|
-
*/
|
|
48
|
-
private presenceByScopeKey;
|
|
49
|
-
constructor(config: SyncEngineConfig<DB>);
|
|
50
|
-
/**
|
|
51
|
-
* Get mutation timestamp for a row (used by query hooks for fingerprinting).
|
|
52
|
-
* Returns 0 if row has no recorded mutation timestamp.
|
|
53
|
-
*/
|
|
54
|
-
getMutationTimestamp(table: string, rowId: string): number;
|
|
55
|
-
/**
|
|
56
|
-
* Get presence entries for a scope key.
|
|
57
|
-
* Returns empty array if no presence data for the scope.
|
|
58
|
-
*/
|
|
59
|
-
getPresence<TMetadata = Record<string, unknown>>(scopeKey: string): PresenceEntry<TMetadata>[];
|
|
60
|
-
/**
|
|
61
|
-
* Update presence for a scope key (called by realtime transport).
|
|
62
|
-
* Emits presence:change event for listeners.
|
|
63
|
-
*/
|
|
64
|
-
updatePresence(scopeKey: string, presence: PresenceEntry[]): void;
|
|
65
|
-
/**
|
|
66
|
-
* Join presence for a scope key.
|
|
67
|
-
* Sends via transport (if available) and updates local state optimistically.
|
|
68
|
-
*/
|
|
69
|
-
joinPresence(scopeKey: string, metadata?: Record<string, unknown>): void;
|
|
70
|
-
/**
|
|
71
|
-
* Leave presence for a scope key.
|
|
72
|
-
*/
|
|
73
|
-
leavePresence(scopeKey: string): void;
|
|
74
|
-
/**
|
|
75
|
-
* Update presence metadata for a scope key.
|
|
76
|
-
*/
|
|
77
|
-
updatePresenceMetadata(scopeKey: string, metadata: Record<string, unknown>): void;
|
|
78
|
-
/**
|
|
79
|
-
* Handle a single presence event (join/leave/update).
|
|
80
|
-
* Updates the in-memory presence state and emits change event.
|
|
81
|
-
*/
|
|
82
|
-
handlePresenceEvent(event: {
|
|
83
|
-
action: 'join' | 'leave' | 'update';
|
|
84
|
-
scopeKey: string;
|
|
85
|
-
clientId: string;
|
|
86
|
-
actorId: string;
|
|
87
|
-
metadata?: Record<string, unknown>;
|
|
88
|
-
}): void;
|
|
89
|
-
private createInitialState;
|
|
90
|
-
private isEnabled;
|
|
91
|
-
private detectTransportMode;
|
|
92
|
-
/**
|
|
93
|
-
* Get current engine state.
|
|
94
|
-
* Returns the same object reference to avoid useSyncExternalStore infinite loops.
|
|
95
|
-
*/
|
|
96
|
-
getState(): Readonly<SyncEngineState>;
|
|
97
|
-
/**
|
|
98
|
-
* Get transport health details (realtime/polling/fallback).
|
|
99
|
-
*/
|
|
100
|
-
getTransportHealth(): Readonly<TransportHealth>;
|
|
101
|
-
/**
|
|
102
|
-
* Get subscription state metadata for the current profile.
|
|
103
|
-
*/
|
|
104
|
-
listSubscriptionStates(args?: {
|
|
105
|
-
stateId?: string;
|
|
106
|
-
table?: string;
|
|
107
|
-
status?: 'active' | 'revoked';
|
|
108
|
-
}): Promise<SubscriptionState[]>;
|
|
109
|
-
/**
|
|
110
|
-
* Get a single subscription state by id.
|
|
111
|
-
*/
|
|
112
|
-
getSubscriptionState(subscriptionId: string, options?: {
|
|
113
|
-
stateId?: string;
|
|
114
|
-
}): Promise<SubscriptionState | null>;
|
|
115
|
-
/**
|
|
116
|
-
* Get normalized progress for all active subscriptions in this state profile.
|
|
117
|
-
*/
|
|
118
|
-
getProgress(): Promise<SyncProgress>;
|
|
119
|
-
/**
|
|
120
|
-
* Wait until the channel reaches a target phase.
|
|
121
|
-
*/
|
|
122
|
-
awaitPhase(phase: SyncProgress['channelPhase'], options?: SyncAwaitPhaseOptions): Promise<SyncProgress>;
|
|
123
|
-
/**
|
|
124
|
-
* Wait until bootstrap finishes for a state or a specific subscription.
|
|
125
|
-
*/
|
|
126
|
-
awaitBootstrapComplete(options?: SyncAwaitBootstrapOptions): Promise<SyncProgress>;
|
|
127
|
-
/**
|
|
128
|
-
* Get a diagnostics snapshot suitable for debug UIs and bug reports.
|
|
129
|
-
*/
|
|
130
|
-
getDiagnostics(): Promise<SyncDiagnostics>;
|
|
131
|
-
/**
|
|
132
|
-
* Get a serializable inspector snapshot for app debug UIs and support tooling.
|
|
133
|
-
*/
|
|
134
|
-
getInspectorSnapshot(options?: SyncInspectorOptions): Promise<SyncInspectorSnapshot>;
|
|
135
|
-
/**
|
|
136
|
-
* Get database instance
|
|
137
|
-
*/
|
|
138
|
-
getDb(): Kysely<DB>;
|
|
139
|
-
/**
|
|
140
|
-
* Get current actor id (sync scoping).
|
|
141
|
-
*/
|
|
142
|
-
getActorId(): string | null | undefined;
|
|
143
|
-
/**
|
|
144
|
-
* Get current client id (device/app install id).
|
|
145
|
-
*/
|
|
146
|
-
getClientId(): string | null | undefined;
|
|
147
|
-
private getStateId;
|
|
148
|
-
private makeBootstrapKey;
|
|
149
|
-
private updateTransportHealth;
|
|
150
|
-
private waitForProgressSignal;
|
|
151
|
-
private mapSubscriptionToProgress;
|
|
152
|
-
private resolveChannelPhase;
|
|
153
|
-
private deriveProgressFromPullSubscription;
|
|
154
|
-
private handleBootstrapLifecycle;
|
|
155
|
-
private resolveResetTargets;
|
|
156
|
-
private clearSyncedTablesForReset;
|
|
157
|
-
reset(options: SyncResetOptions): Promise<SyncResetResult>;
|
|
158
|
-
repair(options: SyncRepairOptions): Promise<SyncResetResult>;
|
|
159
|
-
/**
|
|
160
|
-
* Subscribe to sync events
|
|
161
|
-
*/
|
|
162
|
-
on<T extends SyncEventType>(event: T, listener: SyncEventListener<T>): () => void;
|
|
163
|
-
/**
|
|
164
|
-
* Subscribe to any state change (for useSyncExternalStore)
|
|
165
|
-
*/
|
|
166
|
-
subscribe(callback: () => void): () => void;
|
|
167
|
-
private emit;
|
|
168
|
-
private updateState;
|
|
169
|
-
private setConnectionState;
|
|
170
|
-
/**
|
|
171
|
-
* Start the sync engine
|
|
172
|
-
*/
|
|
173
|
-
start(): Promise<void>;
|
|
174
|
-
/**
|
|
175
|
-
* Stop the sync engine (cleanup without destroy)
|
|
176
|
-
*/
|
|
177
|
-
stop(): void;
|
|
178
|
-
/**
|
|
179
|
-
* Destroy the engine (cannot be restarted)
|
|
180
|
-
*/
|
|
181
|
-
destroy(): void;
|
|
182
|
-
/**
|
|
183
|
-
* Trigger a manual sync
|
|
184
|
-
*/
|
|
185
|
-
sync(opts?: {
|
|
186
|
-
trigger?: 'ws' | 'local' | 'poll';
|
|
187
|
-
}): Promise<SyncResult>;
|
|
188
|
-
private performSyncLoop;
|
|
189
|
-
private performSyncOnce;
|
|
190
|
-
private extractChangedTables;
|
|
191
|
-
private applyWsDeliveredChanges;
|
|
192
|
-
private handleWsDelivery;
|
|
193
|
-
private timestampCounter;
|
|
194
|
-
private nextPreciseTimestamp;
|
|
195
|
-
private bumpMutationTimestamp;
|
|
196
|
-
private bumpTableMutationTimestamp;
|
|
197
|
-
/**
|
|
198
|
-
* Record local mutations that were already applied to the DB.
|
|
199
|
-
*
|
|
200
|
-
* This updates in-memory mutation timestamps (for fingerprint-based rerenders),
|
|
201
|
-
* and emits a single `data:change` event for the affected tables.
|
|
202
|
-
*
|
|
203
|
-
* This is intentionally separate from applyLocalMutation() so callers that
|
|
204
|
-
* perform their own DB transactions (e.g. `useMutations`) can still keep UI
|
|
205
|
-
* updates correct without double-writing.
|
|
206
|
-
*/
|
|
207
|
-
recordLocalMutations(inputs: Array<{
|
|
208
|
-
table: string;
|
|
209
|
-
rowId: string;
|
|
210
|
-
op: 'upsert' | 'delete';
|
|
211
|
-
}>, now?: number): void;
|
|
212
|
-
private recordMutationTimestampsFromPullResponse;
|
|
213
|
-
private scheduleRetry;
|
|
214
|
-
private handleError;
|
|
215
|
-
private triggerSyncInBackground;
|
|
216
|
-
private setupPolling;
|
|
217
|
-
private stopPolling;
|
|
218
|
-
private setupRealtime;
|
|
219
|
-
private stopRealtime;
|
|
220
|
-
private scheduleRealtimeReconnectCatchupSync;
|
|
221
|
-
private startFallbackPolling;
|
|
222
|
-
private stopFallbackPolling;
|
|
223
|
-
/**
|
|
224
|
-
* Clear all in-memory mutation state and emit data:change so UI re-renders.
|
|
225
|
-
* Call this after deleting local data (e.g. reset flow) so that React hooks
|
|
226
|
-
* recompute fingerprints from scratch instead of seeing stale timestamps.
|
|
227
|
-
*/
|
|
228
|
-
resetLocalState(): void;
|
|
229
|
-
/**
|
|
230
|
-
* Reconnect
|
|
231
|
-
*/
|
|
232
|
-
reconnect(): void;
|
|
233
|
-
/**
|
|
234
|
-
* Disconnect (pause syncing)
|
|
235
|
-
*/
|
|
236
|
-
disconnect(): void;
|
|
237
|
-
/**
|
|
238
|
-
* Refresh outbox statistics
|
|
239
|
-
*/
|
|
240
|
-
refreshOutboxStats(options?: {
|
|
241
|
-
emit?: boolean;
|
|
242
|
-
}): Promise<OutboxStats>;
|
|
243
|
-
/**
|
|
244
|
-
* Get pending conflicts with operation details from outbox
|
|
245
|
-
*/
|
|
246
|
-
getConflicts(): Promise<ConflictInfo[]>;
|
|
247
|
-
/**
|
|
248
|
-
* Update subscriptions dynamically
|
|
249
|
-
*/
|
|
250
|
-
updateSubscriptions(subscriptions: Array<Omit<SyncSubscriptionRequest, 'cursor'>>): void;
|
|
251
|
-
/**
|
|
252
|
-
* Apply local mutations immediately to the database and emit change events.
|
|
253
|
-
* Used for instant UI updates before the sync cycle completes.
|
|
254
|
-
*/
|
|
255
|
-
applyLocalMutation(inputs: Array<{
|
|
256
|
-
table: string;
|
|
257
|
-
rowId: string;
|
|
258
|
-
op: 'upsert' | 'delete';
|
|
259
|
-
payload?: Record<string, unknown> | null;
|
|
260
|
-
}>): Promise<void>;
|
|
261
|
-
/**
|
|
262
|
-
* Clear failed commits from the outbox.
|
|
263
|
-
* Use this to discard commits that keep failing (e.g., version conflicts).
|
|
264
|
-
*/
|
|
265
|
-
clearFailedCommits(): Promise<number>;
|
|
266
|
-
/**
|
|
267
|
-
* Clear all pending and failed commits from the outbox.
|
|
268
|
-
* Use this to reset the outbox completely (e.g., for testing).
|
|
269
|
-
*/
|
|
270
|
-
clearAllCommits(): Promise<number>;
|
|
271
|
-
}
|
|
272
|
-
//# sourceMappingURL=SyncEngine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEngine.d.ts","sourceRoot":"","sources":["../../src/engine/SyncEngine.ts"],"names":[],"mappings":"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"}
|