@syncular/client 0.0.6-96 → 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-config.d.ts","sourceRoot":"","sources":["../src/client-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,wBAAwB,gBAA0C,CAAC;AAChF,eAAO,MAAM,gCAAgC,8BAA8B,CAAC;AAE5E,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,oBAAoB,GAC3B,4BAA4B,CAW9B;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC,GACjD,OAAO,CAET"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const SYNCULAR_DEFAULT_STORAGE = 'opfsSahPool';
|
|
2
|
+
export const SYNCULAR_LOCAL_DISABLED_BASE_URL = 'syncular-local://disabled';
|
|
3
|
+
export function resolveSyncularClientConfig(config) {
|
|
4
|
+
const mode = config.mode ?? 'remote';
|
|
5
|
+
if (mode === 'remote' && !config.baseUrl) {
|
|
6
|
+
throw new Error('Syncular remote clients require config.baseUrl');
|
|
7
|
+
}
|
|
8
|
+
return {
|
|
9
|
+
...config,
|
|
10
|
+
mode,
|
|
11
|
+
baseUrl: config.baseUrl ?? SYNCULAR_LOCAL_DISABLED_BASE_URL,
|
|
12
|
+
storage: config.storage ?? SYNCULAR_DEFAULT_STORAGE,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function isSyncularRemoteMode(config) {
|
|
16
|
+
return config.mode === 'remote';
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=client-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-config.js","sourceRoot":"","sources":["../src/client-config.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAuC,CAAC;AAChF,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAA2B,CAAC;AAE5E,MAAM,UAAU,2BAA2B,CACzC,MAA4B;IAE5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;IACrC,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO;QACL,GAAG,MAAM;QACT,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,gCAAgC;QAC3D,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,wBAAwB;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAkD;IAElD,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClC,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,410 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import type { Kysely } from 'kysely';
|
|
13
|
-
import type { OutboxStats, PresenceEntry, SubscriptionProgress, SyncAwaitBootstrapOptions, SyncAwaitPhaseOptions, SyncDiagnostics, SyncInspectorOptions, SyncInspectorSnapshot, SyncProgress, SyncRepairOptions, SyncResetOptions, SyncResetResult, SyncResult, TransportHealth } from './engine/types';
|
|
14
|
-
import type { ClientHandlerCollection } from './handlers/collection';
|
|
15
|
-
import { type MutationsApi } from './mutations';
|
|
16
|
-
import type { SyncClientPlugin } from './plugins/types';
|
|
17
|
-
import type { SyncClientDb } from './schema';
|
|
18
|
-
import type { SubscriptionState } from './subscription-state';
|
|
19
|
-
/**
|
|
20
|
-
* Pluggable client-side blob storage adapter.
|
|
21
|
-
* Implementations handle platform-specific binary storage (OPFS, Expo FileSystem, etc.)
|
|
22
|
-
* Metadata is stored separately in the main SQLite db.
|
|
23
|
-
*/
|
|
24
|
-
export interface ClientBlobStorage {
|
|
25
|
-
/** Write blob data from bytes or stream */
|
|
26
|
-
write(hash: string, data: Uint8Array | ReadableStream<Uint8Array>): Promise<void>;
|
|
27
|
-
/** Read blob data, null if not found */
|
|
28
|
-
read(hash: string): Promise<Uint8Array | null>;
|
|
29
|
-
/** Read blob data as stream, null if not found */
|
|
30
|
-
readStream?(hash: string): Promise<ReadableStream<Uint8Array> | null>;
|
|
31
|
-
/** Delete blob data */
|
|
32
|
-
delete(hash: string): Promise<void>;
|
|
33
|
-
/** Check if blob exists in storage */
|
|
34
|
-
exists(hash: string): Promise<boolean>;
|
|
35
|
-
/** Get total storage usage in bytes (for cache management) */
|
|
36
|
-
getUsage?(): Promise<number>;
|
|
37
|
-
/** Clear all blobs (for cache reset) */
|
|
38
|
-
clear?(): Promise<void>;
|
|
1
|
+
import type { BlobRef, SyncAuthLeaseIssueRequest } from '@syncular/core';
|
|
2
|
+
import type { SyncularDatabase } from './database';
|
|
3
|
+
import type { MutationsApi } from './mutations';
|
|
4
|
+
import type { SyncularAuthLeaseRecord, SyncularBlobUploadQueueProcessOptions, SyncularBlobUploadQueueStats, SyncularClientEventSink, SyncularClientEventType, SyncularConflictResolution, SyncularConflictStats, SyncularConflictSummary, SyncularConnectionState, SyncularDiagnosticSnapshot, SyncularLifecycleState, SyncularNetworkStatusSource, SyncularOutboxStats, SyncularPresenceEntry, SyncularPresenceSink, SyncularRealtimeOptions, SyncularRuntimeClient, SyncularSubscriptionSpec, SyncularSyncRequestOptions, SyncularSyncResult } from './types';
|
|
5
|
+
export interface SyncularClientLifecycleOptions {
|
|
6
|
+
initialSync?: boolean;
|
|
7
|
+
realtime?: boolean | SyncularRealtimeOptions;
|
|
8
|
+
syncOnRealtimeConnect?: boolean;
|
|
9
|
+
pollIntervalMs?: number | false;
|
|
10
|
+
network?: SyncularNetworkStatusSource | false;
|
|
11
|
+
subscriptions?: readonly SyncularSubscriptionSpec[];
|
|
39
12
|
}
|
|
40
|
-
export interface
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
tableHandlers: ClientHandlerCollection<DB>;
|
|
47
|
-
/** Unique client identifier (e.g., device ID) */
|
|
48
|
-
clientId: string;
|
|
49
|
-
/** Current actor/user identifier */
|
|
50
|
-
actorId: string;
|
|
51
|
-
/** Subscriptions to sync */
|
|
52
|
-
subscriptions: Array<{
|
|
53
|
-
id: string;
|
|
54
|
-
table: string;
|
|
55
|
-
scopes?: Record<string, string | string[]>;
|
|
56
|
-
params?: Record<string, unknown>;
|
|
57
|
-
}>;
|
|
58
|
-
/** Optional: Local blob storage adapter (enables blob support) */
|
|
59
|
-
blobStorage?: ClientBlobStorage;
|
|
60
|
-
/** Optional: Sync plugins */
|
|
61
|
-
plugins?: SyncClientPlugin[];
|
|
62
|
-
/** Optional: Enable realtime transport mode */
|
|
63
|
-
realtimeEnabled?: boolean;
|
|
64
|
-
/** Optional: Polling interval in milliseconds (default: 10000) */
|
|
65
|
-
pollIntervalMs?: number;
|
|
66
|
-
/** Optional: State ID for multi-tenant scenarios */
|
|
67
|
-
stateId?: string;
|
|
68
|
-
/** Optional: ID column name (default: 'id') */
|
|
69
|
-
idColumn?: string;
|
|
70
|
-
/** Optional: Version column name (default: 'server_version') */
|
|
71
|
-
versionColumn?: string;
|
|
72
|
-
/** Optional: Columns to omit from sync */
|
|
73
|
-
omitColumns?: string[];
|
|
74
|
-
/** Optional: Column codec resolver */
|
|
75
|
-
codecs?: ColumnCodecSource;
|
|
76
|
-
/** Optional: Codec dialect override (default: 'sqlite') */
|
|
77
|
-
codecDialect?: ColumnCodecDialect;
|
|
78
|
-
}
|
|
79
|
-
export interface ClientState {
|
|
80
|
-
/** Client ID */
|
|
81
|
-
clientId: string;
|
|
82
|
-
/** Actor ID */
|
|
83
|
-
actorId: string;
|
|
84
|
-
/** Whether sync is enabled (actorId and clientId are set) */
|
|
85
|
-
enabled: boolean;
|
|
86
|
-
/** Whether a sync is currently in progress */
|
|
13
|
+
export interface SyncularClientStatus {
|
|
14
|
+
lifecycle: SyncularLifecycleState;
|
|
15
|
+
connection: SyncularConnectionState;
|
|
16
|
+
outbox: SyncularOutboxStats | null;
|
|
17
|
+
conflicts: SyncularConflictStats | null;
|
|
18
|
+
isConnected: boolean;
|
|
87
19
|
isSyncing: boolean;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
lastSyncAt: number | null;
|
|
92
|
-
/** Current error if any */
|
|
93
|
-
error: {
|
|
94
|
-
code: string;
|
|
95
|
-
message: string;
|
|
96
|
-
} | null;
|
|
97
|
-
/** Outbox statistics */
|
|
98
|
-
outbox: OutboxStats;
|
|
99
|
-
}
|
|
100
|
-
export interface Conflict {
|
|
101
|
-
id: string;
|
|
102
|
-
table: string;
|
|
103
|
-
rowId: string;
|
|
104
|
-
opIndex: number;
|
|
105
|
-
localPayload: Record<string, unknown> | null;
|
|
106
|
-
serverPayload: Record<string, unknown> | null;
|
|
107
|
-
serverVersion: number | null;
|
|
108
|
-
message: string;
|
|
109
|
-
code: string | null;
|
|
110
|
-
createdAt: number;
|
|
111
|
-
}
|
|
112
|
-
export interface ConflictResolution {
|
|
113
|
-
strategy: 'keep-local' | 'keep-server' | 'custom';
|
|
114
|
-
payload?: Record<string, unknown>;
|
|
20
|
+
hasPendingMutations: boolean;
|
|
21
|
+
hasConflicts: boolean;
|
|
22
|
+
requiresAction: boolean;
|
|
115
23
|
}
|
|
116
|
-
interface
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
/** Upload immediately vs queue for later */
|
|
120
|
-
immediate?: boolean;
|
|
121
|
-
}
|
|
122
|
-
export interface BlobClient {
|
|
123
|
-
/** Store a blob locally and queue for upload */
|
|
124
|
-
store(data: Blob | File | Uint8Array, options?: BlobStoreOptions): Promise<BlobRef>;
|
|
125
|
-
/** Retrieve a blob (from local storage or fetch from server) */
|
|
126
|
-
retrieve(ref: BlobRef): Promise<Uint8Array>;
|
|
127
|
-
/** Check if blob is available locally */
|
|
128
|
-
isLocal(hash: string): Promise<boolean>;
|
|
129
|
-
/** Preload blobs for offline use */
|
|
130
|
-
preload(refs: BlobRef[]): Promise<void>;
|
|
131
|
-
/** Process pending uploads */
|
|
132
|
-
processUploadQueue(): Promise<{
|
|
24
|
+
export interface SyncularBlobClientLike {
|
|
25
|
+
getUploadQueueStats(): Promise<SyncularBlobUploadQueueStats>;
|
|
26
|
+
processUploadQueue(options?: SyncularBlobUploadQueueProcessOptions): Promise<{
|
|
133
27
|
uploaded: number;
|
|
134
28
|
failed: number;
|
|
135
29
|
}>;
|
|
136
|
-
|
|
137
|
-
getUploadQueueStats(): Promise<{
|
|
138
|
-
pending: number;
|
|
139
|
-
uploading: number;
|
|
140
|
-
failed: number;
|
|
141
|
-
}>;
|
|
142
|
-
/** Get cache statistics */
|
|
143
|
-
getCacheStats(): Promise<{
|
|
144
|
-
count: number;
|
|
145
|
-
totalBytes: number;
|
|
146
|
-
}>;
|
|
147
|
-
/** Prune cache to free space */
|
|
148
|
-
pruneCache(maxBytes?: number): Promise<number>;
|
|
149
|
-
/** Clear all cached blobs */
|
|
150
|
-
clearCache(): Promise<void>;
|
|
30
|
+
retrieve(ref: BlobRef): Promise<Uint8Array>;
|
|
151
31
|
}
|
|
152
|
-
export interface
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
32
|
+
export interface SyncularPresenceClientLike {
|
|
33
|
+
get<TMetadata = Record<string, unknown>>(scopeKey: string): SyncularPresenceEntry<TMetadata>[];
|
|
34
|
+
join(scopeKey: string, metadata?: Record<string, unknown>): void;
|
|
35
|
+
leave(scopeKey: string): void;
|
|
36
|
+
updateMetadata(scopeKey: string, metadata: Record<string, unknown>): void;
|
|
37
|
+
onChange<TMetadata = Record<string, unknown>>(listener: SyncularPresenceSink<TMetadata>): () => void;
|
|
157
38
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
current: string;
|
|
191
|
-
};
|
|
192
|
-
'data:change': {
|
|
193
|
-
scopes: string[];
|
|
194
|
-
timestamp: number;
|
|
195
|
-
};
|
|
196
|
-
'outbox:change': OutboxStats;
|
|
197
|
-
'conflict:new': Conflict;
|
|
198
|
-
'conflict:resolved': Conflict;
|
|
199
|
-
'blob:upload:complete': BlobRef;
|
|
200
|
-
'blob:upload:error': {
|
|
201
|
-
hash: string;
|
|
202
|
-
error: string;
|
|
203
|
-
};
|
|
204
|
-
'presence:change': {
|
|
205
|
-
scopeKey: string;
|
|
206
|
-
presence: PresenceEntry[];
|
|
207
|
-
};
|
|
208
|
-
};
|
|
209
|
-
type ClientEventHandler<E extends ClientEventType> = (payload: ClientEventPayloads[E]) => void;
|
|
210
|
-
/**
|
|
211
|
-
* Unified sync client.
|
|
212
|
-
*
|
|
213
|
-
* @example
|
|
214
|
-
* ```typescript
|
|
215
|
-
* import { Client } from '@syncular/client';
|
|
216
|
-
* import { createHttpTransport } from '@syncular/transport-http';
|
|
217
|
-
*
|
|
218
|
-
* const client = new Client({
|
|
219
|
-
* db,
|
|
220
|
-
* transport: createHttpTransport({ baseUrl: '/api/sync', getHeaders }),
|
|
221
|
-
* tableHandlers,
|
|
222
|
-
* clientId: 'device-123',
|
|
223
|
-
* actorId: 'user-456',
|
|
224
|
-
* subscriptions: [{ id: 'tasks', table: 'tasks', scopes: { user_id: 'user-456' } }],
|
|
225
|
-
* });
|
|
226
|
-
*
|
|
227
|
-
* await client.start();
|
|
228
|
-
*
|
|
229
|
-
* // Mutations
|
|
230
|
-
* await client.mutations.tasks.insert({ title: 'New task' });
|
|
231
|
-
*
|
|
232
|
-
* // Events
|
|
233
|
-
* client.on('sync:complete', () => console.log('synced'));
|
|
234
|
-
* ```
|
|
235
|
-
*/
|
|
236
|
-
export declare class Client<DB extends SyncClientDb = SyncClientDb> {
|
|
39
|
+
export interface SyncularConflictsClientLike {
|
|
40
|
+
list(): Promise<SyncularConflictSummary[]>;
|
|
41
|
+
retryKeepLocal(id: string): Promise<string>;
|
|
42
|
+
resolve(id: string, resolution: SyncularConflictResolution): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
export interface SyncularClientLike<DB> {
|
|
45
|
+
db: SyncularDatabase<DB>['db'];
|
|
46
|
+
dialect?: SyncularDatabase<DB>['dialect'] | unknown;
|
|
47
|
+
mutations: MutationsApi<DB, any>;
|
|
48
|
+
leasedMutations: MutationsApi<DB, any>;
|
|
49
|
+
blobs: SyncularBlobClientLike;
|
|
50
|
+
on<T extends SyncularClientEventType>(event: T, listener: SyncularClientEventSink<T>): () => void;
|
|
51
|
+
getStatus(): SyncularClientStatus;
|
|
52
|
+
setSubscriptions(subscriptions: readonly SyncularSubscriptionSpec[]): Promise<void>;
|
|
53
|
+
resumeFromBackground(options?: SyncularSyncRequestOptions): Promise<SyncularSyncResult>;
|
|
54
|
+
issueAuthLease(request: SyncAuthLeaseIssueRequest): Promise<SyncularAuthLeaseRecord>;
|
|
55
|
+
upsertAuthLease(lease: SyncularAuthLeaseRecord): Promise<void>;
|
|
56
|
+
authLease(leaseId: string): Promise<SyncularAuthLeaseRecord | null>;
|
|
57
|
+
activeAuthLeases(actorId?: string | null, nowMs?: number): Promise<SyncularAuthLeaseRecord[]>;
|
|
58
|
+
diagnosticSnapshot(): Promise<SyncularDiagnosticSnapshot>;
|
|
59
|
+
presence: SyncularPresenceClientLike;
|
|
60
|
+
conflicts: SyncularConflictsClientLike;
|
|
61
|
+
start(): Promise<void>;
|
|
62
|
+
stop(): Promise<void>;
|
|
63
|
+
sync(): Promise<SyncularSyncResult>;
|
|
64
|
+
close(): Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
type LifecycleClient = Pick<SyncularRuntimeClient, 'addDiagnosticListener' | 'connectionState' | 'forceSubscriptionsBootstrap' | 'setSubscriptions' | 'startRealtime' | 'stopRealtime' | 'syncOnce'>;
|
|
67
|
+
export declare function getSyncularClientStatus(client: Pick<SyncularRuntimeClient, 'connectionState' | 'lifecycleState'>): SyncularClientStatus;
|
|
68
|
+
export declare class SyncularClientLifecycle {
|
|
69
|
+
#private;
|
|
70
|
+
private readonly client;
|
|
237
71
|
private readonly options;
|
|
238
|
-
|
|
239
|
-
private started;
|
|
240
|
-
private destroyed;
|
|
241
|
-
private emittedConflictIds;
|
|
242
|
-
private eventListeners;
|
|
243
|
-
private outboxStats;
|
|
244
|
-
/** Mutations API (always available) */
|
|
245
|
-
readonly mutations: MutationsApi<DB>;
|
|
246
|
-
/** Blob client (only available if blobStorage configured) */
|
|
247
|
-
readonly blobs: BlobClient | undefined;
|
|
248
|
-
constructor(options: ClientOptions<DB>);
|
|
249
|
-
/** Client ID */
|
|
250
|
-
get clientId(): string;
|
|
251
|
-
/** Actor ID */
|
|
252
|
-
get actorId(): string;
|
|
253
|
-
/** Database instance */
|
|
254
|
-
get db(): Kysely<DB>;
|
|
255
|
-
/**
|
|
256
|
-
* Start the client.
|
|
257
|
-
* Runs migrations and starts sync engine.
|
|
258
|
-
*/
|
|
72
|
+
constructor(client: LifecycleClient, options?: SyncularClientLifecycleOptions);
|
|
259
73
|
start(): Promise<void>;
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
*/
|
|
263
|
-
stop(): void;
|
|
264
|
-
/**
|
|
265
|
-
* Destroy the client (cannot be restarted).
|
|
266
|
-
*/
|
|
267
|
-
destroy(): void;
|
|
268
|
-
/**
|
|
269
|
-
* Trigger a manual sync.
|
|
270
|
-
*/
|
|
271
|
-
sync(): Promise<SyncResult>;
|
|
272
|
-
/**
|
|
273
|
-
* Update subscriptions.
|
|
274
|
-
*/
|
|
275
|
-
updateSubscriptions(subscriptions: Array<{
|
|
276
|
-
id: string;
|
|
277
|
-
table: string;
|
|
278
|
-
scopes?: Record<string, string | string[]>;
|
|
279
|
-
params?: Record<string, unknown>;
|
|
280
|
-
}>): void;
|
|
281
|
-
/**
|
|
282
|
-
* Get current subscriptions.
|
|
283
|
-
*/
|
|
284
|
-
getSubscriptions(): Array<{
|
|
285
|
-
id: string;
|
|
286
|
-
table: string;
|
|
287
|
-
scopes: Record<string, string | string[]>;
|
|
288
|
-
params: Record<string, unknown>;
|
|
289
|
-
}>;
|
|
290
|
-
/**
|
|
291
|
-
* List persisted subscription metadata rows.
|
|
292
|
-
*/
|
|
293
|
-
listSubscriptionStates(args?: {
|
|
294
|
-
stateId?: string;
|
|
295
|
-
table?: string;
|
|
296
|
-
status?: 'active' | 'revoked';
|
|
297
|
-
}): Promise<SubscriptionState[]>;
|
|
298
|
-
/**
|
|
299
|
-
* Read one persisted subscription metadata row.
|
|
300
|
-
*/
|
|
301
|
-
getSubscriptionState(subscriptionId: string, options?: {
|
|
302
|
-
stateId?: string;
|
|
303
|
-
}): Promise<SubscriptionState | null>;
|
|
304
|
-
/**
|
|
305
|
-
* Get current client state.
|
|
306
|
-
*/
|
|
307
|
-
getState(): ClientState;
|
|
308
|
-
/**
|
|
309
|
-
* Get current transport health details.
|
|
310
|
-
*/
|
|
311
|
-
getTransportHealth(): TransportHealth | null;
|
|
312
|
-
/**
|
|
313
|
-
* Get computed sync progress across subscriptions.
|
|
314
|
-
*/
|
|
315
|
-
getProgress(): Promise<SyncProgress | null>;
|
|
316
|
-
/**
|
|
317
|
-
* Get a diagnostics snapshot for support/debug flows.
|
|
318
|
-
*/
|
|
319
|
-
getDiagnostics(): Promise<SyncDiagnostics | null>;
|
|
320
|
-
/**
|
|
321
|
-
* Get a serializable inspector snapshot for in-app debug tooling.
|
|
322
|
-
*/
|
|
323
|
-
getInspectorSnapshot(options?: SyncInspectorOptions): Promise<SyncInspectorSnapshot | null>;
|
|
324
|
-
/**
|
|
325
|
-
* Reset local sync metadata (and optionally synced app rows/outbox/conflicts).
|
|
326
|
-
*/
|
|
327
|
-
reset(options: SyncResetOptions): Promise<SyncResetResult>;
|
|
328
|
-
/**
|
|
329
|
-
* Run a built-in repair flow for common corruption scenarios.
|
|
330
|
-
*/
|
|
331
|
-
repair(options: SyncRepairOptions): Promise<SyncResetResult>;
|
|
332
|
-
/**
|
|
333
|
-
* Wait until the channel reaches a target phase.
|
|
334
|
-
*/
|
|
335
|
-
awaitPhase(phase: SyncProgress['channelPhase'], options?: SyncAwaitPhaseOptions): Promise<SyncProgress | null>;
|
|
336
|
-
/**
|
|
337
|
-
* Wait until bootstrap completes for the default state or a specific subscription.
|
|
338
|
-
*/
|
|
339
|
-
awaitBootstrapComplete(options?: SyncAwaitBootstrapOptions): Promise<SyncProgress | null>;
|
|
340
|
-
/**
|
|
341
|
-
* Subscribe to state changes (for useSyncExternalStore).
|
|
342
|
-
*/
|
|
343
|
-
subscribe(callback: () => void): () => void;
|
|
344
|
-
/**
|
|
345
|
-
* Subscribe to client events.
|
|
346
|
-
*/
|
|
347
|
-
on<E extends ClientEventType>(event: E, handler: ClientEventHandler<E>): () => void;
|
|
348
|
-
private emit;
|
|
349
|
-
/**
|
|
350
|
-
* Get pending conflicts.
|
|
351
|
-
*/
|
|
352
|
-
getConflicts(): Promise<Conflict[]>;
|
|
353
|
-
/**
|
|
354
|
-
* Resolve a conflict.
|
|
355
|
-
*/
|
|
356
|
-
resolveConflict(id: string, resolution: ConflictResolution): Promise<void>;
|
|
357
|
-
/**
|
|
358
|
-
* Get outbox statistics.
|
|
359
|
-
*/
|
|
360
|
-
getOutboxStats(): Promise<OutboxStats>;
|
|
361
|
-
/**
|
|
362
|
-
* Clear failed commits from outbox.
|
|
363
|
-
*/
|
|
364
|
-
clearFailedCommits(): Promise<number>;
|
|
365
|
-
/**
|
|
366
|
-
* Retry failed commits.
|
|
367
|
-
*/
|
|
368
|
-
retryFailedCommits(): Promise<number>;
|
|
369
|
-
/**
|
|
370
|
-
* Get presence for a scope.
|
|
371
|
-
*/
|
|
372
|
-
getPresence<TMetadata = Record<string, unknown>>(scopeKey: string): PresenceEntry<TMetadata>[];
|
|
373
|
-
/**
|
|
374
|
-
* Join presence for a scope key.
|
|
375
|
-
*/
|
|
376
|
-
joinPresence(scopeKey: string, metadata?: Record<string, unknown>): void;
|
|
377
|
-
/**
|
|
378
|
-
* Leave presence for a scope key.
|
|
379
|
-
*/
|
|
380
|
-
leavePresence(scopeKey: string): void;
|
|
381
|
-
/**
|
|
382
|
-
* Update presence metadata for a scope key.
|
|
383
|
-
*/
|
|
384
|
-
updatePresenceMetadata(scopeKey: string, metadata: Record<string, unknown>): void;
|
|
385
|
-
/**
|
|
386
|
-
* Get migration info.
|
|
387
|
-
*/
|
|
388
|
-
getMigrationInfo(): Promise<MigrationInfo>;
|
|
389
|
-
/**
|
|
390
|
-
* Static: Check if migrations are needed.
|
|
391
|
-
*/
|
|
392
|
-
static checkMigrations<DB extends SyncClientDb>(db: Kysely<DB>): Promise<{
|
|
393
|
-
needsMigration: boolean;
|
|
394
|
-
syncMigrated: boolean;
|
|
395
|
-
blobsMigrated: boolean;
|
|
396
|
-
}>;
|
|
397
|
-
/**
|
|
398
|
-
* Static: Run migrations.
|
|
399
|
-
*/
|
|
400
|
-
static migrate<DB extends SyncClientDb>(db: Kysely<DB>, options?: {
|
|
401
|
-
blobs?: boolean;
|
|
402
|
-
}): Promise<void>;
|
|
403
|
-
private createInitialEngineState;
|
|
404
|
-
private wireEngineEvents;
|
|
405
|
-
private checkForNewConflicts;
|
|
406
|
-
private mapConflictInfo;
|
|
407
|
-
private createBlobClient;
|
|
74
|
+
stop(): Promise<void>;
|
|
75
|
+
sync(): Promise<SyncularSyncResult>;
|
|
408
76
|
}
|
|
409
77
|
export {};
|
|
410
78
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|