@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
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/client - Tracked SelectFrom
|
|
3
|
-
*
|
|
4
|
-
* Provides a wrapped selectFrom that:
|
|
5
|
-
* 1. Tracks tables as watched scopes when called
|
|
6
|
-
* 2. Intercepts .execute() to auto-generate fingerprints
|
|
7
|
-
*/
|
|
8
|
-
import { computeRowFingerprint, computeValueFingerprint, hasKeyField, } from './fingerprint.js';
|
|
9
|
-
function isExecutableQuery(value) {
|
|
10
|
-
if (typeof value !== 'object' || value === null)
|
|
11
|
-
return false;
|
|
12
|
-
return (typeof Reflect.get(value, 'execute') === 'function' &&
|
|
13
|
-
typeof Reflect.get(value, 'executeTakeFirst') === 'function' &&
|
|
14
|
-
typeof Reflect.get(value, 'executeTakeFirstOrThrow') === 'function');
|
|
15
|
-
}
|
|
16
|
-
function createExecuteProxy(builder, table, collector, engine, keyField) {
|
|
17
|
-
return new Proxy(builder, {
|
|
18
|
-
get(target, prop) {
|
|
19
|
-
if (prop === 'execute') {
|
|
20
|
-
return async () => {
|
|
21
|
-
const rows = await target.execute();
|
|
22
|
-
// Auto-detect fingerprint mode based on result shape
|
|
23
|
-
if (Array.isArray(rows)) {
|
|
24
|
-
if (hasKeyField(rows, keyField)) {
|
|
25
|
-
// Row-level fingerprinting - result has keyField
|
|
26
|
-
const fp = computeRowFingerprint(rows, table, engine, keyField);
|
|
27
|
-
collector.add(fp);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
// Value-based fingerprinting - for aggregates/scalars
|
|
31
|
-
const fp = computeValueFingerprint(table, rows);
|
|
32
|
-
collector.add(fp);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
// Unexpected, but keep rerender behavior deterministic.
|
|
37
|
-
const fp = computeValueFingerprint(table, rows);
|
|
38
|
-
collector.add(fp);
|
|
39
|
-
}
|
|
40
|
-
return rows;
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
if (prop === 'executeTakeFirst') {
|
|
44
|
-
return async () => {
|
|
45
|
-
const row = await target.executeTakeFirst();
|
|
46
|
-
// Value-based fingerprinting for single-row queries
|
|
47
|
-
const fp = computeValueFingerprint(table, row);
|
|
48
|
-
collector.add(fp);
|
|
49
|
-
return row;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
if (prop === 'executeTakeFirstOrThrow') {
|
|
53
|
-
return async () => {
|
|
54
|
-
const row = await target.executeTakeFirstOrThrow();
|
|
55
|
-
// Value-based fingerprinting for single-row queries
|
|
56
|
-
const fp = computeValueFingerprint(table, row);
|
|
57
|
-
collector.add(fp);
|
|
58
|
-
return row;
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
// For other methods, return wrapped builder for chaining
|
|
62
|
-
const value = Reflect.get(target, prop, target);
|
|
63
|
-
if (typeof value === 'function') {
|
|
64
|
-
return (...args) => {
|
|
65
|
-
const result = Reflect.apply(value, target, args);
|
|
66
|
-
if (isExecutableQuery(result)) {
|
|
67
|
-
return createExecuteProxy(result, table, collector, engine, keyField);
|
|
68
|
-
}
|
|
69
|
-
return result;
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
return value;
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Create a tracked selectFrom that registers scopes and generates fingerprints.
|
|
78
|
-
*/
|
|
79
|
-
export function createTrackedSelectFrom(db, scopeCollector, fingerprintCollector, engine, keyField = 'id') {
|
|
80
|
-
const selectFrom = (table) => {
|
|
81
|
-
// 1. Register this table as a watched scope
|
|
82
|
-
scopeCollector.add(table);
|
|
83
|
-
// 2. Get the real query builder
|
|
84
|
-
const builder = db.selectFrom(table);
|
|
85
|
-
// 3. Return a proxy that intercepts .execute()
|
|
86
|
-
return createExecuteProxy(builder, table, fingerprintCollector, engine, keyField);
|
|
87
|
-
};
|
|
88
|
-
return selectFrom;
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=tracked-select.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracked-select.js","sourceRoot":"","sources":["../../src/query/tracked-select.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/client - Sync client schema types (SQLite reference)
|
|
3
|
-
*
|
|
4
|
-
* These tables are sync-internal and should not collide with app tables.
|
|
5
|
-
*/
|
|
6
|
-
import type { Generated, Kysely } from 'kysely';
|
|
7
|
-
import type { SyncBlobClientDb } from './blobs/types';
|
|
8
|
-
/**
|
|
9
|
-
* Database executor type that both Kysely and Transaction satisfy.
|
|
10
|
-
* Use this when a function needs to work with either a raw Kysely instance
|
|
11
|
-
* or within a transaction context.
|
|
12
|
-
*/
|
|
13
|
-
export type SyncClientExecutor<DB extends SyncClientDb = SyncClientDb> = Pick<Kysely<DB>, 'selectFrom' | 'insertInto' | 'updateTable' | 'deleteFrom'>;
|
|
14
|
-
export type OutboxCommitStatus = 'pending' | 'sending' | 'acked' | 'failed';
|
|
15
|
-
export type SubscriptionStatus = 'active' | 'revoked';
|
|
16
|
-
export interface SyncSubscriptionStateTable {
|
|
17
|
-
/** Logical profile id (default: 'default') */
|
|
18
|
-
state_id: string;
|
|
19
|
-
/** Subscription identifier (client-chosen) */
|
|
20
|
-
subscription_id: string;
|
|
21
|
-
/** Table name for this subscription */
|
|
22
|
-
table: string;
|
|
23
|
-
/** JSON string of ScopeValues for this subscription */
|
|
24
|
-
scopes_json: string;
|
|
25
|
-
/** JSON string of params */
|
|
26
|
-
params_json: string;
|
|
27
|
-
/** Per-subscription cursor (last applied commit_seq) */
|
|
28
|
-
cursor: number;
|
|
29
|
-
/**
|
|
30
|
-
* JSON string of SyncBootstrapState (or null).
|
|
31
|
-
* When set, indicates a paginated bootstrap is in progress for this subscription.
|
|
32
|
-
*/
|
|
33
|
-
bootstrap_state_json: string | null;
|
|
34
|
-
/** active | revoked */
|
|
35
|
-
status: SubscriptionStatus;
|
|
36
|
-
created_at: number;
|
|
37
|
-
updated_at: number;
|
|
38
|
-
}
|
|
39
|
-
export interface SyncOutboxCommitsTable {
|
|
40
|
-
/** Local row id (uuid) */
|
|
41
|
-
id: string;
|
|
42
|
-
/** Client-provided idempotency key (uuid) */
|
|
43
|
-
client_commit_id: string;
|
|
44
|
-
/** pending | sending | acked | failed */
|
|
45
|
-
status: OutboxCommitStatus;
|
|
46
|
-
/** JSON string of SyncOperation[] */
|
|
47
|
-
operations_json: string;
|
|
48
|
-
/** JSON string of the last SyncPushResponse (optional) */
|
|
49
|
-
last_response_json: string | null;
|
|
50
|
-
/** Last error (if any) */
|
|
51
|
-
error: string | null;
|
|
52
|
-
/** Created timestamp (ms since epoch) */
|
|
53
|
-
created_at: number;
|
|
54
|
-
/** Updated timestamp (ms since epoch) */
|
|
55
|
-
updated_at: number;
|
|
56
|
-
/** How many send attempts have been made */
|
|
57
|
-
attempt_count: Generated<number>;
|
|
58
|
-
/** Server commit_seq if acked (optional) */
|
|
59
|
-
acked_commit_seq: number | null;
|
|
60
|
-
/** Client schema version when commit was created (default: 1 for legacy) */
|
|
61
|
-
schema_version: Generated<number>;
|
|
62
|
-
}
|
|
63
|
-
export interface SyncClientDb extends SyncBlobClientDb {
|
|
64
|
-
sync_subscription_state: SyncSubscriptionStateTable;
|
|
65
|
-
sync_outbox_commits: SyncOutboxCommitsTable;
|
|
66
|
-
sync_conflicts: SyncConflictsTable;
|
|
67
|
-
}
|
|
68
|
-
export type ConflictResultStatus = 'conflict' | 'error';
|
|
69
|
-
export interface SyncConflictsTable {
|
|
70
|
-
id: string;
|
|
71
|
-
outbox_commit_id: string;
|
|
72
|
-
client_commit_id: string;
|
|
73
|
-
op_index: number;
|
|
74
|
-
result_status: ConflictResultStatus;
|
|
75
|
-
message: string;
|
|
76
|
-
code: string | null;
|
|
77
|
-
server_version: number | null;
|
|
78
|
-
server_row_json: string | null;
|
|
79
|
-
created_at: number;
|
|
80
|
-
resolved_at: number | null;
|
|
81
|
-
resolution: string | null;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=schema.d.ts.map
|
package/dist/schema.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,EAAE,SAAS,YAAY,GAAG,YAAY,IAAI,IAAI,CAC3E,MAAM,CAAC,EAAE,CAAC,EACV,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,CAC3D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,0BAA0B;IACzC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4EAA4E;IAC5E,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,uBAAuB,EAAE,0BAA0B,CAAC;IACpD,mBAAmB,EAAE,sBAAsB,CAAC;IAC5C,cAAc,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,oBAAoB,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
|
package/dist/schema.js
DELETED
package/dist/schema.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/client - Subscription state helpers
|
|
3
|
-
*
|
|
4
|
-
* Stable accessors for sync subscription metadata.
|
|
5
|
-
*/
|
|
6
|
-
import type { ScopeValues, SyncBootstrapState } from '@syncular/core';
|
|
7
|
-
import type { Kysely } from 'kysely';
|
|
8
|
-
import type { SubscriptionStatus, SyncClientDb } from './schema';
|
|
9
|
-
export declare const DEFAULT_SYNC_STATE_ID = "default";
|
|
10
|
-
export interface SubscriptionState {
|
|
11
|
-
stateId: string;
|
|
12
|
-
subscriptionId: string;
|
|
13
|
-
table: string;
|
|
14
|
-
scopes: ScopeValues;
|
|
15
|
-
params: Record<string, unknown>;
|
|
16
|
-
cursor: number;
|
|
17
|
-
bootstrapState: SyncBootstrapState | null;
|
|
18
|
-
status: SubscriptionStatus;
|
|
19
|
-
createdAt: number;
|
|
20
|
-
updatedAt: number;
|
|
21
|
-
}
|
|
22
|
-
export interface ListSubscriptionStatesOptions {
|
|
23
|
-
stateId?: string;
|
|
24
|
-
table?: string;
|
|
25
|
-
status?: SubscriptionStatus;
|
|
26
|
-
}
|
|
27
|
-
export interface GetSubscriptionStateOptions {
|
|
28
|
-
stateId?: string;
|
|
29
|
-
subscriptionId: string;
|
|
30
|
-
}
|
|
31
|
-
export interface UpsertSubscriptionStateInput {
|
|
32
|
-
stateId?: string;
|
|
33
|
-
subscriptionId: string;
|
|
34
|
-
table: string;
|
|
35
|
-
scopes: ScopeValues;
|
|
36
|
-
params?: Record<string, unknown>;
|
|
37
|
-
cursor: number;
|
|
38
|
-
bootstrapState?: SyncBootstrapState | null;
|
|
39
|
-
status?: SubscriptionStatus;
|
|
40
|
-
nowMs?: number;
|
|
41
|
-
}
|
|
42
|
-
export declare function parseBootstrapState(value: string | object | null | undefined): SyncBootstrapState | null;
|
|
43
|
-
export declare function listSubscriptionStates<DB extends SyncClientDb>(db: Kysely<DB>, options?: ListSubscriptionStatesOptions): Promise<SubscriptionState[]>;
|
|
44
|
-
export declare function getSubscriptionState<DB extends SyncClientDb>(db: Kysely<DB>, options: GetSubscriptionStateOptions): Promise<SubscriptionState | null>;
|
|
45
|
-
export declare function upsertSubscriptionState<DB extends SyncClientDb>(db: Kysely<DB>, input: UpsertSubscriptionStateInput): Promise<SubscriptionState>;
|
|
46
|
-
//# sourceMappingURL=subscription-state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-state.d.ts","sourceRoot":"","sources":["../src/subscription-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EAEb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACxC,kBAAkB,GAAG,IAAI,CAyB3B;AAqCD,wBAAsB,sBAAsB,CAAC,EAAE,SAAS,YAAY,EAClE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiC9B;AAED,wBAAsB,oBAAoB,CAAC,EAAE,SAAS,YAAY,EAChE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAwBnC;AAED,wBAAsB,uBAAuB,CAAC,EAAE,SAAS,YAAY,EACnE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAwD5B"}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/client - Subscription state helpers
|
|
3
|
-
*
|
|
4
|
-
* Stable accessors for sync subscription metadata.
|
|
5
|
-
*/
|
|
6
|
-
import { isRecord } from '@syncular/core';
|
|
7
|
-
import { sql } from 'kysely';
|
|
8
|
-
export const DEFAULT_SYNC_STATE_ID = 'default';
|
|
9
|
-
function isScopeValues(value) {
|
|
10
|
-
if (!isRecord(value))
|
|
11
|
-
return false;
|
|
12
|
-
for (const entry of Object.values(value)) {
|
|
13
|
-
if (typeof entry === 'string')
|
|
14
|
-
continue;
|
|
15
|
-
if (Array.isArray(entry) && entry.every((v) => typeof v === 'string')) {
|
|
16
|
-
continue;
|
|
17
|
-
}
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
export function parseBootstrapState(value) {
|
|
23
|
-
if (!value)
|
|
24
|
-
return null;
|
|
25
|
-
try {
|
|
26
|
-
const parsed = typeof value === 'string' ? JSON.parse(value) : value;
|
|
27
|
-
if (!isRecord(parsed))
|
|
28
|
-
return null;
|
|
29
|
-
if (typeof parsed.asOfCommitSeq !== 'number')
|
|
30
|
-
return null;
|
|
31
|
-
if (!Array.isArray(parsed.tables))
|
|
32
|
-
return null;
|
|
33
|
-
if (!parsed.tables.every((table) => typeof table === 'string'))
|
|
34
|
-
return null;
|
|
35
|
-
if (typeof parsed.tableIndex !== 'number')
|
|
36
|
-
return null;
|
|
37
|
-
if (parsed.rowCursor !== null && typeof parsed.rowCursor !== 'string') {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
asOfCommitSeq: parsed.asOfCommitSeq,
|
|
42
|
-
tables: parsed.tables,
|
|
43
|
-
tableIndex: parsed.tableIndex,
|
|
44
|
-
rowCursor: parsed.rowCursor,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function parseScopes(value) {
|
|
52
|
-
try {
|
|
53
|
-
const parsed = JSON.parse(value);
|
|
54
|
-
return isScopeValues(parsed) ? parsed : {};
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return {};
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
function parseParams(value) {
|
|
61
|
-
try {
|
|
62
|
-
const parsed = JSON.parse(value);
|
|
63
|
-
return isRecord(parsed) ? parsed : {};
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
return {};
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function mapSubscriptionState(row) {
|
|
70
|
-
return {
|
|
71
|
-
stateId: row.state_id,
|
|
72
|
-
subscriptionId: row.subscription_id,
|
|
73
|
-
table: row.table,
|
|
74
|
-
scopes: parseScopes(row.scopes_json),
|
|
75
|
-
params: parseParams(row.params_json),
|
|
76
|
-
cursor: row.cursor,
|
|
77
|
-
bootstrapState: parseBootstrapState(row.bootstrap_state_json),
|
|
78
|
-
status: row.status,
|
|
79
|
-
createdAt: row.created_at,
|
|
80
|
-
updatedAt: row.updated_at,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
export async function listSubscriptionStates(db, options = {}) {
|
|
84
|
-
const filters = [];
|
|
85
|
-
if (options.stateId) {
|
|
86
|
-
filters.push(sql `${sql.ref('state_id')} = ${sql.val(options.stateId)}`);
|
|
87
|
-
}
|
|
88
|
-
if (options.table) {
|
|
89
|
-
filters.push(sql `${sql.ref('table')} = ${sql.val(options.table)}`);
|
|
90
|
-
}
|
|
91
|
-
if (options.status) {
|
|
92
|
-
filters.push(sql `${sql.ref('status')} = ${sql.val(options.status)}`);
|
|
93
|
-
}
|
|
94
|
-
const whereClause = filters.length > 0 ? sql `where ${sql.join(filters, sql ` and `)}` : sql ``;
|
|
95
|
-
const rows = await sql `
|
|
96
|
-
select
|
|
97
|
-
${sql.ref('state_id')},
|
|
98
|
-
${sql.ref('subscription_id')},
|
|
99
|
-
${sql.ref('table')},
|
|
100
|
-
${sql.ref('scopes_json')},
|
|
101
|
-
${sql.ref('params_json')},
|
|
102
|
-
${sql.ref('cursor')},
|
|
103
|
-
${sql.ref('bootstrap_state_json')},
|
|
104
|
-
${sql.ref('status')},
|
|
105
|
-
${sql.ref('created_at')},
|
|
106
|
-
${sql.ref('updated_at')}
|
|
107
|
-
from ${sql.table('sync_subscription_state')}
|
|
108
|
-
${whereClause}
|
|
109
|
-
order by ${sql.ref('state_id')} asc, ${sql.ref('subscription_id')} asc
|
|
110
|
-
`.execute(db);
|
|
111
|
-
return rows.rows.map((row) => mapSubscriptionState(row));
|
|
112
|
-
}
|
|
113
|
-
export async function getSubscriptionState(db, options) {
|
|
114
|
-
const stateId = options.stateId ?? DEFAULT_SYNC_STATE_ID;
|
|
115
|
-
const rows = await sql `
|
|
116
|
-
select
|
|
117
|
-
${sql.ref('state_id')},
|
|
118
|
-
${sql.ref('subscription_id')},
|
|
119
|
-
${sql.ref('table')},
|
|
120
|
-
${sql.ref('scopes_json')},
|
|
121
|
-
${sql.ref('params_json')},
|
|
122
|
-
${sql.ref('cursor')},
|
|
123
|
-
${sql.ref('bootstrap_state_json')},
|
|
124
|
-
${sql.ref('status')},
|
|
125
|
-
${sql.ref('created_at')},
|
|
126
|
-
${sql.ref('updated_at')}
|
|
127
|
-
from ${sql.table('sync_subscription_state')}
|
|
128
|
-
where
|
|
129
|
-
${sql.ref('state_id')} = ${sql.val(stateId)}
|
|
130
|
-
and ${sql.ref('subscription_id')} = ${sql.val(options.subscriptionId)}
|
|
131
|
-
limit 1
|
|
132
|
-
`.execute(db);
|
|
133
|
-
const row = rows.rows[0];
|
|
134
|
-
return row ? mapSubscriptionState(row) : null;
|
|
135
|
-
}
|
|
136
|
-
export async function upsertSubscriptionState(db, input) {
|
|
137
|
-
const now = input.nowMs ?? Date.now();
|
|
138
|
-
const stateId = input.stateId ?? DEFAULT_SYNC_STATE_ID;
|
|
139
|
-
const bootstrapStateJson = input.bootstrapState === null || input.bootstrapState === undefined
|
|
140
|
-
? null
|
|
141
|
-
: JSON.stringify(input.bootstrapState);
|
|
142
|
-
await sql `
|
|
143
|
-
insert into ${sql.table('sync_subscription_state')} (
|
|
144
|
-
${sql.ref('state_id')},
|
|
145
|
-
${sql.ref('subscription_id')},
|
|
146
|
-
${sql.ref('table')},
|
|
147
|
-
${sql.ref('scopes_json')},
|
|
148
|
-
${sql.ref('params_json')},
|
|
149
|
-
${sql.ref('cursor')},
|
|
150
|
-
${sql.ref('bootstrap_state_json')},
|
|
151
|
-
${sql.ref('status')},
|
|
152
|
-
${sql.ref('created_at')},
|
|
153
|
-
${sql.ref('updated_at')}
|
|
154
|
-
) values (
|
|
155
|
-
${sql.val(stateId)},
|
|
156
|
-
${sql.val(input.subscriptionId)},
|
|
157
|
-
${sql.val(input.table)},
|
|
158
|
-
${sql.val(JSON.stringify(input.scopes ?? {}))},
|
|
159
|
-
${sql.val(JSON.stringify(input.params ?? {}))},
|
|
160
|
-
${sql.val(input.cursor)},
|
|
161
|
-
${sql.val(bootstrapStateJson)},
|
|
162
|
-
${sql.val(input.status ?? 'active')},
|
|
163
|
-
${sql.val(now)},
|
|
164
|
-
${sql.val(now)}
|
|
165
|
-
)
|
|
166
|
-
on conflict (${sql.join([sql.ref('state_id'), sql.ref('subscription_id')])})
|
|
167
|
-
do update set
|
|
168
|
-
${sql.ref('table')} = ${sql.val(input.table)},
|
|
169
|
-
${sql.ref('scopes_json')} = ${sql.val(JSON.stringify(input.scopes ?? {}))},
|
|
170
|
-
${sql.ref('params_json')} = ${sql.val(JSON.stringify(input.params ?? {}))},
|
|
171
|
-
${sql.ref('cursor')} = ${sql.val(input.cursor)},
|
|
172
|
-
${sql.ref('bootstrap_state_json')} = ${sql.val(bootstrapStateJson)},
|
|
173
|
-
${sql.ref('status')} = ${sql.val(input.status ?? 'active')},
|
|
174
|
-
${sql.ref('updated_at')} = ${sql.val(now)}
|
|
175
|
-
`.execute(db);
|
|
176
|
-
const next = await getSubscriptionState(db, {
|
|
177
|
-
stateId,
|
|
178
|
-
subscriptionId: input.subscriptionId,
|
|
179
|
-
});
|
|
180
|
-
if (!next) {
|
|
181
|
-
throw new Error(`[subscription-state] Failed to load upserted state for "${input.subscriptionId}"`);
|
|
182
|
-
}
|
|
183
|
-
return next;
|
|
184
|
-
}
|
|
185
|
-
//# sourceMappingURL=subscription-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-state.js","sourceRoot":"","sources":["../src/subscription-state.ts"],"names":[],"mappings":"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"}
|
package/dist/sync-loop.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/client - High-level sync loops
|
|
3
|
-
*
|
|
4
|
-
* Helpers that run push/pull repeatedly until the client is caught up.
|
|
5
|
-
*/
|
|
6
|
-
import type { SyncPullResponse, SyncSubscriptionRequest, SyncTransport } from '@syncular/core';
|
|
7
|
-
import type { Kysely } from 'kysely';
|
|
8
|
-
import type { ClientHandlerCollection } from './handlers/collection';
|
|
9
|
-
import { type SyncPushOnceOptions } from './push-engine';
|
|
10
|
-
import type { SyncClientDb } from './schema';
|
|
11
|
-
export interface SyncOnceOptions {
|
|
12
|
-
clientId: string;
|
|
13
|
-
actorId?: string;
|
|
14
|
-
plugins?: SyncPushOnceOptions['plugins'];
|
|
15
|
-
subscriptions: Array<Omit<SyncSubscriptionRequest, 'cursor'>>;
|
|
16
|
-
limitCommits?: number;
|
|
17
|
-
limitSnapshotRows?: number;
|
|
18
|
-
maxSnapshotPages?: number;
|
|
19
|
-
dedupeRows?: boolean;
|
|
20
|
-
stateId?: string;
|
|
21
|
-
maxPushCommits?: number;
|
|
22
|
-
maxPullRounds?: number;
|
|
23
|
-
/** When 'ws', peek outbox first and skip push if empty. */
|
|
24
|
-
trigger?: 'ws' | 'local' | 'poll';
|
|
25
|
-
/** Custom SHA-256 hash function (for platforms without crypto.subtle) */
|
|
26
|
-
sha256?: (bytes: Uint8Array) => Promise<string>;
|
|
27
|
-
}
|
|
28
|
-
export interface SyncOnceResult {
|
|
29
|
-
pushedCommits: number;
|
|
30
|
-
pullRounds: number;
|
|
31
|
-
pullResponse: SyncPullResponse;
|
|
32
|
-
}
|
|
33
|
-
export declare function syncOnce<DB extends SyncClientDb>(db: Kysely<DB>, transport: SyncTransport, handlers: ClientHandlerCollection<DB>, options: SyncOnceOptions): Promise<SyncOnceResult>;
|
|
34
|
-
//# sourceMappingURL=sync-loop.d.ts.map
|
package/dist/sync-loop.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync-loop.d.ts","sourceRoot":"","sources":["../src/sync-loop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAIhB,uBAAuB,EACvB,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAgBrE,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA0H7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAkMD,wBAAsB,QAAQ,CAAC,EAAE,SAAS,YAAY,EACpD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB"}
|