@syncular/client 0.0.1-60
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/blobs/index.d.ts +7 -0
- package/dist/blobs/index.d.ts.map +1 -0
- package/dist/blobs/index.js +7 -0
- package/dist/blobs/index.js.map +1 -0
- package/dist/blobs/manager.d.ts +345 -0
- package/dist/blobs/manager.d.ts.map +1 -0
- package/dist/blobs/manager.js +749 -0
- package/dist/blobs/manager.js.map +1 -0
- package/dist/blobs/migrate.d.ts +14 -0
- package/dist/blobs/migrate.d.ts.map +1 -0
- package/dist/blobs/migrate.js +59 -0
- package/dist/blobs/migrate.js.map +1 -0
- package/dist/blobs/types.d.ts +62 -0
- package/dist/blobs/types.d.ts.map +1 -0
- package/dist/blobs/types.js +5 -0
- package/dist/blobs/types.js.map +1 -0
- package/dist/client.d.ts +338 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +834 -0
- package/dist/client.js.map +1 -0
- package/dist/conflicts.d.ts +31 -0
- package/dist/conflicts.d.ts.map +1 -0
- package/dist/conflicts.js +118 -0
- package/dist/conflicts.js.map +1 -0
- package/dist/create-client.d.ts +115 -0
- package/dist/create-client.d.ts.map +1 -0
- package/dist/create-client.js +162 -0
- package/dist/create-client.js.map +1 -0
- package/dist/engine/SyncEngine.d.ts +215 -0
- package/dist/engine/SyncEngine.d.ts.map +1 -0
- package/dist/engine/SyncEngine.js +1066 -0
- package/dist/engine/SyncEngine.js.map +1 -0
- package/dist/engine/index.d.ts +6 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +6 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/types.d.ts +230 -0
- package/dist/engine/types.d.ts.map +1 -0
- package/dist/engine/types.js +7 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/handlers/create-handler.d.ts +110 -0
- package/dist/handlers/create-handler.d.ts.map +1 -0
- package/dist/handlers/create-handler.js +140 -0
- package/dist/handlers/create-handler.js.map +1 -0
- package/dist/handlers/registry.d.ts +15 -0
- package/dist/handlers/registry.d.ts.map +1 -0
- package/dist/handlers/registry.js +29 -0
- package/dist/handlers/registry.js.map +1 -0
- package/dist/handlers/types.d.ts +83 -0
- package/dist/handlers/types.d.ts.map +1 -0
- package/dist/handlers/types.js +5 -0
- package/dist/handlers/types.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/migrate.d.ts +19 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +106 -0
- package/dist/migrate.js.map +1 -0
- package/dist/mutations.d.ts +138 -0
- package/dist/mutations.d.ts.map +1 -0
- package/dist/mutations.js +611 -0
- package/dist/mutations.js.map +1 -0
- package/dist/outbox.d.ts +112 -0
- package/dist/outbox.d.ts.map +1 -0
- package/dist/outbox.js +304 -0
- package/dist/outbox.js.map +1 -0
- package/dist/plugins/incrementing-version.d.ts +34 -0
- package/dist/plugins/incrementing-version.d.ts.map +1 -0
- package/dist/plugins/incrementing-version.js +83 -0
- package/dist/plugins/incrementing-version.js.map +1 -0
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/types.d.ts +49 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +15 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/proxy/connection.d.ts +33 -0
- package/dist/proxy/connection.d.ts.map +1 -0
- package/dist/proxy/connection.js +153 -0
- package/dist/proxy/connection.js.map +1 -0
- package/dist/proxy/dialect.d.ts +46 -0
- package/dist/proxy/dialect.d.ts.map +1 -0
- package/dist/proxy/dialect.js +58 -0
- package/dist/proxy/dialect.js.map +1 -0
- package/dist/proxy/driver.d.ts +42 -0
- package/dist/proxy/driver.d.ts.map +1 -0
- package/dist/proxy/driver.js +78 -0
- package/dist/proxy/driver.js.map +1 -0
- package/dist/proxy/index.d.ts +10 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +10 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/mutations.d.ts +9 -0
- package/dist/proxy/mutations.d.ts.map +1 -0
- package/dist/proxy/mutations.js +11 -0
- package/dist/proxy/mutations.js.map +1 -0
- package/dist/pull-engine.d.ts +45 -0
- package/dist/pull-engine.d.ts.map +1 -0
- package/dist/pull-engine.js +391 -0
- package/dist/pull-engine.js.map +1 -0
- package/dist/push-engine.d.ts +18 -0
- package/dist/push-engine.d.ts.map +1 -0
- package/dist/push-engine.js +155 -0
- package/dist/push-engine.js.map +1 -0
- package/dist/query/FingerprintCollector.d.ts +18 -0
- package/dist/query/FingerprintCollector.d.ts.map +1 -0
- package/dist/query/FingerprintCollector.js +28 -0
- package/dist/query/FingerprintCollector.js.map +1 -0
- package/dist/query/QueryContext.d.ts +33 -0
- package/dist/query/QueryContext.d.ts.map +1 -0
- package/dist/query/QueryContext.js +16 -0
- package/dist/query/QueryContext.js.map +1 -0
- package/dist/query/fingerprint.d.ts +61 -0
- package/dist/query/fingerprint.d.ts.map +1 -0
- package/dist/query/fingerprint.js +91 -0
- package/dist/query/fingerprint.js.map +1 -0
- package/dist/query/index.d.ts +7 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +7 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/tracked-select.d.ts +18 -0
- package/dist/query/tracked-select.d.ts.map +1 -0
- package/dist/query/tracked-select.js +90 -0
- package/dist/query/tracked-select.js.map +1 -0
- package/dist/schema.d.ts +83 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +7 -0
- package/dist/schema.js.map +1 -0
- package/dist/sync-loop.d.ts +32 -0
- package/dist/sync-loop.d.ts.map +1 -0
- package/dist/sync-loop.js +249 -0
- package/dist/sync-loop.js.map +1 -0
- package/dist/utils/id.d.ts +8 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +19 -0
- package/dist/utils/id.js.map +1 -0
- package/package.json +58 -0
- package/src/blobs/index.ts +7 -0
- package/src/blobs/manager.ts +1027 -0
- package/src/blobs/migrate.ts +67 -0
- package/src/blobs/types.ts +84 -0
- package/src/client.ts +1222 -0
- package/src/conflicts.ts +180 -0
- package/src/create-client.ts +297 -0
- package/src/engine/SyncEngine.ts +1337 -0
- package/src/engine/index.ts +6 -0
- package/src/engine/types.ts +268 -0
- package/src/handlers/create-handler.ts +287 -0
- package/src/handlers/registry.ts +36 -0
- package/src/handlers/types.ts +102 -0
- package/src/index.ts +25 -0
- package/src/migrate.ts +122 -0
- package/src/mutations.ts +926 -0
- package/src/outbox.ts +397 -0
- package/src/plugins/incrementing-version.ts +133 -0
- package/src/plugins/index.ts +2 -0
- package/src/plugins/types.ts +63 -0
- package/src/proxy/connection.ts +191 -0
- package/src/proxy/dialect.ts +76 -0
- package/src/proxy/driver.ts +126 -0
- package/src/proxy/index.ts +10 -0
- package/src/proxy/mutations.ts +18 -0
- package/src/pull-engine.ts +518 -0
- package/src/push-engine.ts +201 -0
- package/src/query/FingerprintCollector.ts +29 -0
- package/src/query/QueryContext.ts +54 -0
- package/src/query/fingerprint.ts +109 -0
- package/src/query/index.ts +10 -0
- package/src/query/tracked-select.ts +139 -0
- package/src/schema.ts +94 -0
- package/src/sync-loop.ts +368 -0
- package/src/utils/id.ts +20 -0
|
@@ -0,0 +1,215 @@
|
|
|
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 { ConflictInfo, OutboxStats, PresenceEntry, SyncEngineConfig, SyncEngineState, SyncEventListener, SyncEventType, SyncResult } from './types';
|
|
11
|
+
export declare class SyncEngine<DB extends SyncClientDb = SyncClientDb> {
|
|
12
|
+
private config;
|
|
13
|
+
private state;
|
|
14
|
+
private listeners;
|
|
15
|
+
private pollerId;
|
|
16
|
+
private fallbackPollerId;
|
|
17
|
+
private realtimeDisconnect;
|
|
18
|
+
private realtimePresenceUnsub;
|
|
19
|
+
private isDestroyed;
|
|
20
|
+
private migrated;
|
|
21
|
+
private syncPromise;
|
|
22
|
+
private syncRequestedWhileRunning;
|
|
23
|
+
private retryTimeoutId;
|
|
24
|
+
private realtimeCatchupTimeoutId;
|
|
25
|
+
private hasRealtimeConnectedOnce;
|
|
26
|
+
/**
|
|
27
|
+
* In-memory map tracking local mutation timestamps by rowId.
|
|
28
|
+
* Used for efficient fingerprint-based rerender optimization.
|
|
29
|
+
* Key format: `${table}:${rowId}`, Value: timestamp (Date.now())
|
|
30
|
+
*/
|
|
31
|
+
private mutationTimestamps;
|
|
32
|
+
/**
|
|
33
|
+
* In-memory map tracking table-level mutation timestamps.
|
|
34
|
+
* Used for coarse invalidation during large bootstrap snapshots to avoid
|
|
35
|
+
* storing timestamps for every row.
|
|
36
|
+
*/
|
|
37
|
+
private tableMutationTimestamps;
|
|
38
|
+
/**
|
|
39
|
+
* In-memory presence state by scope key.
|
|
40
|
+
* Updated via realtime presence events.
|
|
41
|
+
*/
|
|
42
|
+
private presenceByScopeKey;
|
|
43
|
+
constructor(config: SyncEngineConfig<DB>);
|
|
44
|
+
/**
|
|
45
|
+
* Get mutation timestamp for a row (used by query hooks for fingerprinting).
|
|
46
|
+
* Returns 0 if row has no recorded mutation timestamp.
|
|
47
|
+
*/
|
|
48
|
+
getMutationTimestamp(table: string, rowId: string): number;
|
|
49
|
+
/**
|
|
50
|
+
* Get presence entries for a scope key.
|
|
51
|
+
* Returns empty array if no presence data for the scope.
|
|
52
|
+
*/
|
|
53
|
+
getPresence<TMetadata = Record<string, unknown>>(scopeKey: string): PresenceEntry<TMetadata>[];
|
|
54
|
+
/**
|
|
55
|
+
* Update presence for a scope key (called by realtime transport).
|
|
56
|
+
* Emits presence:change event for listeners.
|
|
57
|
+
*/
|
|
58
|
+
updatePresence(scopeKey: string, presence: PresenceEntry[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Join presence for a scope key.
|
|
61
|
+
* Sends via transport (if available) and updates local state optimistically.
|
|
62
|
+
*/
|
|
63
|
+
joinPresence(scopeKey: string, metadata?: Record<string, unknown>): void;
|
|
64
|
+
/**
|
|
65
|
+
* Leave presence for a scope key.
|
|
66
|
+
*/
|
|
67
|
+
leavePresence(scopeKey: string): void;
|
|
68
|
+
/**
|
|
69
|
+
* Update presence metadata for a scope key.
|
|
70
|
+
*/
|
|
71
|
+
updatePresenceMetadata(scopeKey: string, metadata: Record<string, unknown>): void;
|
|
72
|
+
/**
|
|
73
|
+
* Handle a single presence event (join/leave/update).
|
|
74
|
+
* Updates the in-memory presence state and emits change event.
|
|
75
|
+
*/
|
|
76
|
+
handlePresenceEvent(event: {
|
|
77
|
+
action: 'join' | 'leave' | 'update';
|
|
78
|
+
scopeKey: string;
|
|
79
|
+
clientId: string;
|
|
80
|
+
actorId: string;
|
|
81
|
+
metadata?: Record<string, unknown>;
|
|
82
|
+
}): void;
|
|
83
|
+
private createInitialState;
|
|
84
|
+
private isEnabled;
|
|
85
|
+
private detectTransportMode;
|
|
86
|
+
/**
|
|
87
|
+
* Get current engine state.
|
|
88
|
+
* Returns the same object reference to avoid useSyncExternalStore infinite loops.
|
|
89
|
+
*/
|
|
90
|
+
getState(): Readonly<SyncEngineState>;
|
|
91
|
+
/**
|
|
92
|
+
* Get database instance
|
|
93
|
+
*/
|
|
94
|
+
getDb(): Kysely<DB>;
|
|
95
|
+
/**
|
|
96
|
+
* Get current actor id (sync scoping).
|
|
97
|
+
*/
|
|
98
|
+
getActorId(): string | null | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Get current client id (device/app install id).
|
|
101
|
+
*/
|
|
102
|
+
getClientId(): string | null | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* Subscribe to sync events
|
|
105
|
+
*/
|
|
106
|
+
on<T extends SyncEventType>(event: T, listener: SyncEventListener<T>): () => void;
|
|
107
|
+
/**
|
|
108
|
+
* Subscribe to any state change (for useSyncExternalStore)
|
|
109
|
+
*/
|
|
110
|
+
subscribe(callback: () => void): () => void;
|
|
111
|
+
private emit;
|
|
112
|
+
private updateState;
|
|
113
|
+
private setConnectionState;
|
|
114
|
+
/**
|
|
115
|
+
* Start the sync engine
|
|
116
|
+
*/
|
|
117
|
+
start(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Stop the sync engine (cleanup without destroy)
|
|
120
|
+
*/
|
|
121
|
+
stop(): void;
|
|
122
|
+
/**
|
|
123
|
+
* Destroy the engine (cannot be restarted)
|
|
124
|
+
*/
|
|
125
|
+
destroy(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Trigger a manual sync
|
|
128
|
+
*/
|
|
129
|
+
sync(opts?: {
|
|
130
|
+
trigger?: 'ws' | 'local' | 'poll';
|
|
131
|
+
}): Promise<SyncResult>;
|
|
132
|
+
private performSyncLoop;
|
|
133
|
+
private performSyncOnce;
|
|
134
|
+
private extractChangedTables;
|
|
135
|
+
private applyWsDeliveredChanges;
|
|
136
|
+
private handleWsDelivery;
|
|
137
|
+
private timestampCounter;
|
|
138
|
+
private nextPreciseTimestamp;
|
|
139
|
+
private bumpMutationTimestamp;
|
|
140
|
+
private bumpTableMutationTimestamp;
|
|
141
|
+
/**
|
|
142
|
+
* Record local mutations that were already applied to the DB.
|
|
143
|
+
*
|
|
144
|
+
* This updates in-memory mutation timestamps (for fingerprint-based rerenders),
|
|
145
|
+
* and emits a single `data:change` event for the affected tables.
|
|
146
|
+
*
|
|
147
|
+
* This is intentionally separate from applyLocalMutation() so callers that
|
|
148
|
+
* perform their own DB transactions (e.g. `useMutations`) can still keep UI
|
|
149
|
+
* updates correct without double-writing.
|
|
150
|
+
*/
|
|
151
|
+
recordLocalMutations(inputs: Array<{
|
|
152
|
+
table: string;
|
|
153
|
+
rowId: string;
|
|
154
|
+
op: 'upsert' | 'delete';
|
|
155
|
+
}>, now?: number): void;
|
|
156
|
+
private recordMutationTimestampsFromPullResponse;
|
|
157
|
+
private scheduleRetry;
|
|
158
|
+
private handleError;
|
|
159
|
+
private setupPolling;
|
|
160
|
+
private stopPolling;
|
|
161
|
+
private setupRealtime;
|
|
162
|
+
private stopRealtime;
|
|
163
|
+
private scheduleRealtimeReconnectCatchupSync;
|
|
164
|
+
private startFallbackPolling;
|
|
165
|
+
private stopFallbackPolling;
|
|
166
|
+
/**
|
|
167
|
+
* Clear all in-memory mutation state and emit data:change so UI re-renders.
|
|
168
|
+
* Call this after deleting local data (e.g. reset flow) so that React hooks
|
|
169
|
+
* recompute fingerprints from scratch instead of seeing stale timestamps.
|
|
170
|
+
*/
|
|
171
|
+
resetLocalState(): void;
|
|
172
|
+
/**
|
|
173
|
+
* Reconnect
|
|
174
|
+
*/
|
|
175
|
+
reconnect(): void;
|
|
176
|
+
/**
|
|
177
|
+
* Disconnect (pause syncing)
|
|
178
|
+
*/
|
|
179
|
+
disconnect(): void;
|
|
180
|
+
/**
|
|
181
|
+
* Refresh outbox statistics
|
|
182
|
+
*/
|
|
183
|
+
refreshOutboxStats(options?: {
|
|
184
|
+
emit?: boolean;
|
|
185
|
+
}): Promise<OutboxStats>;
|
|
186
|
+
/**
|
|
187
|
+
* Get pending conflicts with operation details from outbox
|
|
188
|
+
*/
|
|
189
|
+
getConflicts(): Promise<ConflictInfo[]>;
|
|
190
|
+
/**
|
|
191
|
+
* Update subscriptions dynamically
|
|
192
|
+
*/
|
|
193
|
+
updateSubscriptions(subscriptions: Array<Omit<SyncSubscriptionRequest, 'cursor'>>): void;
|
|
194
|
+
/**
|
|
195
|
+
* Apply local mutations immediately to the database and emit change events.
|
|
196
|
+
* Used for instant UI updates before the sync cycle completes.
|
|
197
|
+
*/
|
|
198
|
+
applyLocalMutation(inputs: Array<{
|
|
199
|
+
table: string;
|
|
200
|
+
rowId: string;
|
|
201
|
+
op: 'upsert' | 'delete';
|
|
202
|
+
payload?: Record<string, unknown> | null;
|
|
203
|
+
}>): Promise<void>;
|
|
204
|
+
/**
|
|
205
|
+
* Clear failed commits from the outbox.
|
|
206
|
+
* Use this to discard commits that keep failing (e.g., version conflicts).
|
|
207
|
+
*/
|
|
208
|
+
clearFailedCommits(): Promise<number>;
|
|
209
|
+
/**
|
|
210
|
+
* Clear all pending and failed commits from the outbox.
|
|
211
|
+
* Use this to reset the outbox completely (e.g., for testing).
|
|
212
|
+
*/
|
|
213
|
+
clearAllCommits(): Promise<number>;
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=SyncEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncEngine.d.ts","sourceRoot":"","sources":["../../src/engine/SyncEngine.ts"],"names":[],"mappings":"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"}
|