@abloatai/ablo 0.26.0 → 0.28.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/CHANGELOG.md +42 -2
- package/README.md +102 -86
- package/dist/BaseSyncedStore.d.ts +85 -88
- package/dist/BaseSyncedStore.js +134 -151
- package/dist/Database.d.ts +68 -69
- package/dist/Database.js +316 -135
- package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
- package/dist/{ObjectPool.js → InstanceCache.js} +85 -83
- package/dist/LazyReferenceCollection.d.ts +11 -15
- package/dist/LazyReferenceCollection.js +12 -16
- package/dist/Model.d.ts +54 -52
- package/dist/Model.js +78 -62
- package/dist/ModelRegistry.d.ts +21 -19
- package/dist/ModelRegistry.js +23 -27
- package/dist/NetworkMonitor.d.ts +5 -6
- package/dist/NetworkMonitor.js +5 -6
- package/dist/SyncClient.d.ts +122 -118
- package/dist/SyncClient.js +541 -245
- package/dist/adapters/alwaysOnline.d.ts +6 -8
- package/dist/adapters/alwaysOnline.js +6 -8
- package/dist/adapters/inMemoryStorage.d.ts +10 -9
- package/dist/adapters/inMemoryStorage.js +21 -9
- package/dist/agent/Agent.d.ts +27 -32
- package/dist/agent/Agent.js +18 -19
- package/dist/agent/index.d.ts +4 -4
- package/dist/agent/index.js +5 -5
- package/dist/agent/session.d.ts +47 -44
- package/dist/agent/session.js +37 -48
- package/dist/agent/types.d.ts +26 -31
- package/dist/agent/types.js +6 -7
- package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
- package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
- package/dist/ai-sdk/coordinationContext.d.ts +46 -0
- package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +26 -33
- package/dist/ai-sdk/index.d.ts +25 -22
- package/dist/ai-sdk/index.js +25 -22
- package/dist/ai-sdk/wrap.d.ts +6 -7
- package/dist/ai-sdk/wrap.js +1 -1
- package/dist/auth/credentialPolicy.d.ts +69 -74
- package/dist/auth/credentialPolicy.js +51 -56
- package/dist/auth/credentialSource.d.ts +6 -5
- package/dist/auth/credentialSource.js +9 -10
- package/dist/auth/index.d.ts +59 -58
- package/dist/auth/index.js +31 -37
- package/dist/auth/schemas.d.ts +5 -4
- package/dist/auth/schemas.js +5 -4
- package/dist/batching/index.d.ts +19 -21
- package/dist/batching/index.js +14 -17
- package/dist/cli.cjs +173 -121
- package/dist/client/Ablo.d.ts +97 -74
- package/dist/client/Ablo.js +129 -163
- package/dist/client/ApiClient.d.ts +30 -19
- package/dist/client/ApiClient.js +442 -81
- package/dist/client/auth.d.ts +47 -47
- package/dist/client/auth.js +108 -117
- package/dist/client/claimHeartbeatLoop.d.ts +50 -0
- package/dist/client/claimHeartbeatLoop.js +88 -0
- package/dist/client/consoleLogger.d.ts +5 -6
- package/dist/client/consoleLogger.js +5 -6
- package/dist/client/createInternalComponents.d.ts +16 -17
- package/dist/client/createInternalComponents.js +26 -31
- package/dist/client/createModelProxy.d.ts +130 -120
- package/dist/client/createModelProxy.js +152 -122
- package/dist/client/credentialEndpoint.d.ts +40 -42
- package/dist/client/credentialEndpoint.js +35 -36
- package/dist/client/functionalUpdate.d.ts +29 -27
- package/dist/client/functionalUpdate.js +21 -21
- package/dist/client/hostedEndpoints.d.ts +9 -12
- package/dist/client/hostedEndpoints.js +9 -12
- package/dist/client/httpClient.d.ts +59 -53
- package/dist/client/httpClient.js +29 -31
- package/dist/client/identity.d.ts +15 -20
- package/dist/client/identity.js +47 -58
- package/dist/client/modelRegistration.d.ts +5 -9
- package/dist/client/modelRegistration.js +78 -87
- package/dist/client/options.d.ts +157 -157
- package/dist/client/options.js +3 -7
- package/dist/client/registerDataSource.d.ts +9 -9
- package/dist/client/registerDataSource.js +15 -16
- package/dist/client/resourceTypes.d.ts +64 -75
- package/dist/client/resourceTypes.js +4 -10
- package/dist/client/schemaConfig.d.ts +31 -43
- package/dist/client/schemaConfig.js +38 -50
- package/dist/client/sessionMint.d.ts +16 -12
- package/dist/client/sessionMint.js +26 -31
- package/dist/client/validateAbloOptions.d.ts +12 -14
- package/dist/client/validateAbloOptions.js +8 -9
- package/dist/client/writeOptionsSchema.d.ts +18 -16
- package/dist/client/writeOptionsSchema.js +23 -20
- package/dist/client/wsMutationExecutor.d.ts +16 -20
- package/dist/client/wsMutationExecutor.js +18 -23
- package/dist/commit/contract.d.ts +493 -0
- package/dist/commit/contract.js +187 -0
- package/dist/commit/index.d.ts +6 -0
- package/dist/commit/index.js +5 -0
- package/dist/context.d.ts +6 -4
- package/dist/context.js +6 -4
- package/dist/coordination/index.d.ts +10 -8
- package/dist/coordination/index.js +14 -12
- package/dist/coordination/schema.d.ts +176 -128
- package/dist/coordination/schema.js +197 -133
- package/dist/coordination/trace.d.ts +9 -10
- package/dist/coordination/trace.js +13 -14
- package/dist/core/DatabaseManager.d.ts +5 -7
- package/dist/core/DatabaseManager.js +15 -19
- package/dist/core/QueryProcessor.d.ts +7 -9
- package/dist/core/QueryProcessor.js +22 -28
- package/dist/core/QueryView.d.ts +8 -8
- package/dist/core/QueryView.js +2 -2
- package/dist/core/StoreManager.d.ts +14 -14
- package/dist/core/StoreManager.js +33 -24
- package/dist/core/ViewRegistry.d.ts +5 -5
- package/dist/core/ViewRegistry.js +4 -4
- package/dist/core/index.d.ts +17 -12
- package/dist/core/index.js +32 -26
- package/dist/core/openIDBWithTimeout.d.ts +38 -36
- package/dist/core/openIDBWithTimeout.js +42 -43
- package/dist/core/queryUtils.d.ts +45 -0
- package/dist/core/queryUtils.js +69 -0
- package/dist/core/storeContract.d.ts +63 -61
- package/dist/core/storeContract.js +8 -12
- package/dist/environment.d.ts +28 -0
- package/dist/environment.js +21 -0
- package/dist/errorCodes.d.ts +107 -99
- package/dist/errorCodes.js +137 -134
- package/dist/errors.d.ts +160 -166
- package/dist/errors.js +155 -158
- package/dist/index.d.ts +36 -27
- package/dist/index.js +91 -86
- package/dist/interfaces/index.d.ts +102 -113
- package/dist/interfaces/index.js +5 -4
- package/dist/keys/index.d.ts +27 -29
- package/dist/keys/index.js +41 -40
- package/dist/mutators/RecordingTransaction.d.ts +16 -16
- package/dist/mutators/RecordingTransaction.js +31 -37
- package/dist/mutators/Transaction.d.ts +18 -26
- package/dist/mutators/Transaction.js +14 -20
- package/dist/mutators/UndoManager.d.ts +124 -131
- package/dist/mutators/UndoManager.js +177 -156
- package/dist/mutators/defineMutators.d.ts +23 -34
- package/dist/mutators/defineMutators.js +14 -20
- package/dist/mutators/inverseOp.d.ts +12 -15
- package/dist/mutators/inverseOp.js +12 -15
- package/dist/mutators/mutateActions.d.ts +10 -9
- package/dist/mutators/mutateActions.js +1 -1
- package/dist/mutators/readerActions.d.ts +9 -8
- package/dist/mutators/readerActions.js +2 -2
- package/dist/mutators/undoApply.d.ts +31 -27
- package/dist/mutators/undoApply.js +26 -24
- package/dist/policy/index.d.ts +5 -3
- package/dist/policy/index.js +5 -3
- package/dist/policy/types.d.ts +104 -100
- package/dist/policy/types.js +67 -66
- package/dist/query/client.d.ts +28 -23
- package/dist/query/client.js +45 -43
- package/dist/query/types.d.ts +37 -60
- package/dist/query/types.js +13 -33
- package/dist/react/AbloProvider.d.ts +1 -1
- package/dist/react/AbloProvider.js +2 -2
- package/dist/react/context.d.ts +25 -28
- package/dist/react/context.js +9 -10
- package/dist/react/index.d.ts +41 -42
- package/dist/react/index.js +37 -38
- package/dist/react/internalContext.d.ts +17 -19
- package/dist/react/useAblo.d.ts +28 -25
- package/dist/react/useAblo.js +41 -17
- package/dist/react/useCurrentUserId.d.ts +8 -7
- package/dist/react/useCurrentUserId.js +8 -7
- package/dist/react/useErrorListener.d.ts +7 -7
- package/dist/react/useErrorListener.js +10 -11
- package/dist/react/useMutationFailureListener.d.ts +8 -8
- package/dist/react/useMutationFailureListener.js +8 -8
- package/dist/react/useMutators.d.ts +11 -11
- package/dist/react/useMutators.js +3 -3
- package/dist/react/useReactive.js +2 -2
- package/dist/react/useSyncStatus.d.ts +4 -6
- package/dist/react/useUndoScope.d.ts +7 -9
- package/dist/react/useUndoScope.js +1 -1
- package/dist/schema/coordination.d.ts +21 -25
- package/dist/schema/coordination.js +21 -25
- package/dist/schema/ddl.d.ts +43 -39
- package/dist/schema/ddl.js +75 -68
- package/dist/schema/ddlLock.d.ts +20 -24
- package/dist/schema/ddlLock.js +18 -23
- package/dist/schema/diff.d.ts +99 -61
- package/dist/schema/diff.js +43 -34
- package/dist/schema/field.d.ts +37 -42
- package/dist/schema/field.js +35 -48
- package/dist/schema/generate.d.ts +12 -12
- package/dist/schema/generate.js +12 -12
- package/dist/schema/index.d.ts +3 -3
- package/dist/schema/index.js +21 -23
- package/dist/schema/model.d.ts +118 -143
- package/dist/schema/model.js +22 -33
- package/dist/schema/openapi.d.ts +10 -9
- package/dist/schema/openapi.js +5 -3
- package/dist/schema/queries.d.ts +29 -31
- package/dist/schema/queries.js +23 -25
- package/dist/schema/relation.d.ts +89 -99
- package/dist/schema/relation.js +13 -13
- package/dist/schema/residency.d.ts +16 -13
- package/dist/schema/residency.js +16 -13
- package/dist/schema/roles.d.ts +36 -43
- package/dist/schema/roles.js +31 -37
- package/dist/schema/schema.d.ts +64 -43
- package/dist/schema/schema.js +31 -32
- package/dist/schema/select.d.ts +13 -13
- package/dist/schema/select.js +13 -13
- package/dist/schema/serialize.d.ts +28 -31
- package/dist/schema/serialize.js +27 -31
- package/dist/schema/sugar.d.ts +17 -32
- package/dist/schema/sugar.js +14 -29
- package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +26 -49
- package/dist/schema/syncDeltaRow.js +89 -0
- package/dist/schema/tenancy.d.ts +44 -46
- package/dist/schema/tenancy.js +46 -48
- package/dist/server/adapter.d.ts +58 -58
- package/dist/server/adapter.js +13 -14
- package/dist/server/commit.d.ts +60 -64
- package/dist/server/index.d.ts +9 -10
- package/dist/server/index.js +1 -1
- package/dist/server/readConfig.d.ts +70 -0
- package/dist/server/readConfig.js +8 -0
- package/dist/server/storageMode.d.ts +23 -0
- package/dist/server/storageMode.js +17 -0
- package/dist/source/adapter.d.ts +30 -25
- package/dist/source/adapter.js +10 -10
- package/dist/source/adapters/drizzle.d.ts +28 -23
- package/dist/source/adapters/drizzle.js +30 -25
- package/dist/source/adapters/kysely.d.ts +27 -25
- package/dist/source/adapters/kysely.js +24 -23
- package/dist/source/adapters/memory.d.ts +8 -7
- package/dist/source/adapters/memory.js +9 -8
- package/dist/source/adapters/prisma.d.ts +13 -12
- package/dist/source/adapters/prisma.js +22 -25
- package/dist/source/conformance.d.ts +18 -11
- package/dist/source/conformance.js +17 -11
- package/dist/source/connector.d.ts +31 -32
- package/dist/source/connector.js +28 -28
- package/dist/source/connectorProtocol.d.ts +160 -0
- package/dist/source/connectorProtocol.js +162 -0
- package/dist/source/contract.d.ts +26 -27
- package/dist/source/contract.js +28 -29
- package/dist/source/factory.d.ts +46 -58
- package/dist/source/factory.js +22 -27
- package/dist/source/index.d.ts +7 -9
- package/dist/source/index.js +12 -14
- package/dist/source/migrations.d.ts +9 -9
- package/dist/source/migrations.js +9 -9
- package/dist/source/next.d.ts +9 -10
- package/dist/source/next.js +6 -7
- package/dist/source/pushQueue.d.ts +69 -47
- package/dist/source/pushQueue.js +32 -28
- package/dist/source/signing.d.ts +46 -17
- package/dist/source/signing.js +28 -11
- package/dist/source/types.d.ts +121 -104
- package/dist/source/types.js +13 -14
- package/dist/stores/ObjectStore.d.ts +24 -12
- package/dist/stores/ObjectStore.js +38 -16
- package/dist/stores/ObjectStoreContract.d.ts +14 -15
- package/dist/stores/SyncActionStore.d.ts +7 -11
- package/dist/stores/SyncActionStore.js +13 -17
- package/dist/surface.d.ts +28 -21
- package/dist/surface.js +29 -20
- package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +36 -42
- package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +76 -76
- package/dist/sync/ConnectionManager.d.ts +39 -50
- package/dist/sync/ConnectionManager.js +55 -66
- package/dist/sync/NetworkProbe.d.ts +24 -29
- package/dist/sync/NetworkProbe.js +63 -69
- package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +42 -41
- package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +59 -54
- package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +43 -57
- package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +43 -51
- package/dist/sync/SyncWebSocket.d.ts +141 -166
- package/dist/sync/SyncWebSocket.js +191 -223
- package/dist/sync/awaitClaimGrant.d.ts +18 -18
- package/dist/sync/awaitClaimGrant.js +11 -11
- package/dist/sync/bootstrapApply.d.ts +34 -24
- package/dist/sync/bootstrapApply.js +27 -19
- package/dist/sync/commitFrames.d.ts +21 -20
- package/dist/sync/commitFrames.js +18 -18
- package/dist/sync/createClaimStream.d.ts +23 -22
- package/dist/sync/createClaimStream.js +105 -23
- package/dist/sync/createPresenceStream.d.ts +19 -18
- package/dist/sync/createPresenceStream.js +25 -26
- package/dist/sync/createSnapshot.d.ts +12 -14
- package/dist/sync/createSnapshot.js +20 -26
- package/dist/sync/credentialLifecycle.d.ts +104 -104
- package/dist/sync/credentialLifecycle.js +140 -147
- package/dist/sync/deltaPipeline.d.ts +36 -34
- package/dist/sync/deltaPipeline.js +64 -65
- package/dist/sync/groupChange.d.ts +63 -61
- package/dist/sync/groupChange.js +74 -78
- package/dist/sync/heartbeat.d.ts +34 -33
- package/dist/sync/heartbeat.js +31 -31
- package/dist/sync/participants.d.ts +19 -19
- package/dist/sync/persistedPrefix.d.ts +12 -0
- package/dist/sync/persistedPrefix.js +22 -0
- package/dist/sync/schemas.d.ts +3 -2
- package/dist/sync/schemas.js +14 -10
- package/dist/sync/syncCursor.d.ts +17 -21
- package/dist/sync/syncCursor.js +17 -21
- package/dist/sync/syncPlan.d.ts +28 -36
- package/dist/sync/syncPlan.js +18 -19
- package/dist/sync/syncPosition.d.ts +54 -49
- package/dist/sync/syncPosition.js +57 -52
- package/dist/sync/wsFrameHandlers.d.ts +35 -36
- package/dist/sync/wsFrameHandlers.js +63 -67
- package/dist/testing/fixtures/bootstrap.d.ts +12 -6
- package/dist/testing/fixtures/bootstrap.js +12 -6
- package/dist/testing/fixtures/deltas.d.ts +30 -33
- package/dist/testing/fixtures/deltas.js +30 -33
- package/dist/testing/fixtures/models.d.ts +11 -10
- package/dist/testing/fixtures/models.js +11 -10
- package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
- package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
- package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -15
- package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +12 -10
- package/dist/testing/helpers/wait.d.ts +13 -8
- package/dist/testing/helpers/wait.js +13 -8
- package/dist/testing/index.d.ts +5 -3
- package/dist/testing/index.js +3 -2
- package/dist/testing/mocks/FakeDatabase.d.ts +18 -0
- package/dist/testing/mocks/FakeDatabase.js +10 -0
- package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
- package/dist/testing/mocks/MockMutationExecutor.js +15 -14
- package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
- package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
- package/dist/testing/mocks/MockSyncContext.d.ts +20 -17
- package/dist/testing/mocks/MockSyncContext.js +15 -13
- package/dist/testing/mocks/MockSyncStore.d.ts +10 -10
- package/dist/testing/mocks/MockSyncStore.js +11 -11
- package/dist/testing/mocks/MockWebSocket.d.ts +28 -23
- package/dist/testing/mocks/MockWebSocket.js +22 -21
- package/dist/transactions/TransactionQueue.d.ts +244 -181
- package/dist/transactions/TransactionQueue.js +929 -423
- package/dist/transactions/TransactionStore.d.ts +6 -4
- package/dist/transactions/TransactionStore.js +6 -4
- package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
- package/dist/transactions/UnconfirmedWrites.js +104 -0
- package/dist/transactions/coalesceRules.d.ts +41 -17
- package/dist/transactions/coalesceRules.js +40 -17
- package/dist/transactions/commitEnvelope.d.ts +132 -0
- package/dist/transactions/commitEnvelope.js +139 -0
- package/dist/transactions/commitOutboxStore.d.ts +32 -0
- package/dist/transactions/commitOutboxStore.js +26 -0
- package/dist/transactions/commitPayload.d.ts +63 -52
- package/dist/transactions/commitPayload.js +54 -57
- package/dist/transactions/deltaConfirmation.d.ts +20 -22
- package/dist/transactions/deltaConfirmation.js +37 -45
- package/dist/transactions/httpCommitEnvelope.d.ts +43 -0
- package/dist/transactions/httpCommitEnvelope.js +179 -0
- package/dist/transactions/optimisticApply.d.ts +49 -0
- package/dist/transactions/optimisticApply.js +65 -0
- package/dist/transactions/replayValidation.d.ts +182 -0
- package/dist/transactions/replayValidation.js +156 -0
- package/dist/types/global.d.ts +46 -41
- package/dist/types/global.js +20 -19
- package/dist/types/index.d.ts +71 -77
- package/dist/types/index.js +22 -22
- package/dist/types/modelData.d.ts +6 -8
- package/dist/types/modelData.js +5 -7
- package/dist/types/participant.d.ts +10 -11
- package/dist/types/participant.js +6 -8
- package/dist/types/streams.d.ts +208 -195
- package/dist/types/streams.js +7 -7
- package/dist/utils/asyncIterator.d.ts +25 -32
- package/dist/utils/asyncIterator.js +25 -32
- package/dist/utils/duration.d.ts +12 -15
- package/dist/utils/duration.js +12 -15
- package/dist/utils/mobxSetup.d.ts +53 -0
- package/dist/utils/{mobx-setup.js → mobxSetup.js} +42 -98
- package/dist/webhooks/events.d.ts +21 -16
- package/dist/webhooks/events.js +10 -8
- package/dist/webhooks/index.d.ts +5 -7
- package/dist/webhooks/index.js +5 -7
- package/dist/wire/bootstrapReason.d.ts +9 -0
- package/dist/wire/bootstrapReason.js +8 -0
- package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
- package/dist/wire/delta.js +114 -0
- package/dist/wire/errorEnvelope.d.ts +30 -31
- package/dist/wire/errorEnvelope.js +34 -40
- package/dist/wire/frames.d.ts +315 -86
- package/dist/wire/frames.js +47 -33
- package/dist/wire/index.d.ts +18 -14
- package/dist/wire/index.js +32 -27
- package/dist/wire/listEnvelope.d.ts +16 -23
- package/dist/wire/listEnvelope.js +7 -6
- package/dist/wire/protocol.d.ts +25 -32
- package/dist/wire/protocol.js +25 -32
- package/dist/wire/protocolVersion.d.ts +44 -40
- package/dist/wire/protocolVersion.js +44 -40
- package/docs/api.md +10 -10
- package/docs/coordination.md +59 -0
- package/docs/mcp.md +1 -1
- package/package.json +17 -11
- package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
- package/dist/ai-sdk/coordination-context.d.ts +0 -52
- package/dist/core/query-utils.d.ts +0 -34
- package/dist/core/query-utils.js +0 -59
- package/dist/schema/sync-delta-row.js +0 -103
- package/dist/schema/sync-delta-wire.js +0 -102
- package/dist/server/read-config.d.ts +0 -67
- package/dist/server/read-config.js +0 -8
- package/dist/server/storage-mode.d.ts +0 -8
- package/dist/server/storage-mode.js +0 -28
- package/dist/source/connector-protocol.d.ts +0 -159
- package/dist/source/connector-protocol.js +0 -161
- package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
- package/dist/transactions/OptimisticEchoTracker.js +0 -104
- package/dist/transactions/mutation-error-handler.d.ts +0 -5
- package/dist/transactions/mutation-error-handler.js +0 -39
- package/dist/transactions/optimistic.d.ts +0 -24
- package/dist/transactions/optimistic.js +0 -45
- package/dist/transactions/persistedReplay.d.ts +0 -93
- package/dist/transactions/persistedReplay.js +0 -105
- package/dist/utils/mobx-setup.d.ts +0 -42
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Stores and manages sync actions received from the server.
|
|
5
|
-
* Critical for delta sync and maintaining sync state consistency.
|
|
2
|
+
* A local, IndexedDB-backed store for the sync actions (change deltas) the
|
|
3
|
+
* server sends. See {@link SyncActionStore}.
|
|
6
4
|
*/
|
|
7
5
|
import type { SyncAction } from '../types/index.js';
|
|
8
6
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* - Enables rewind/replay for conflict resolution
|
|
15
|
-
* - Maintains sync watermark
|
|
7
|
+
* Stores the sync actions (the change deltas) the server sends, keyed by
|
|
8
|
+
* their sync id, and tracks which ones have been applied. It keeps a
|
|
9
|
+
* watermark of the last applied id, holds not-yet-applied actions as
|
|
10
|
+
* pending, and can rewind a range of actions back to pending so they can be
|
|
11
|
+
* replayed while resolving a conflict.
|
|
16
12
|
*/
|
|
17
13
|
export declare class SyncActionStore {
|
|
18
14
|
private db;
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Stores and manages sync actions received from the server.
|
|
5
|
-
* Critical for delta sync and maintaining sync state consistency.
|
|
2
|
+
* A local, IndexedDB-backed store for the sync actions (change deltas) the
|
|
3
|
+
* server sends. See {@link SyncActionStore}.
|
|
6
4
|
*/
|
|
7
5
|
// Uses native IndexedDB for maximum performance
|
|
8
6
|
import { z } from 'zod';
|
|
9
7
|
import { getContext } from '../context.js';
|
|
10
8
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* (`storedAt
|
|
15
|
-
*
|
|
16
|
-
*
|
|
9
|
+
* The validation boundary for rows read back from the store. A row may have
|
|
10
|
+
* been written by an earlier session, so this build cannot assume its shape.
|
|
11
|
+
* Parsing in strip mode also drops the storage bookkeeping fields
|
|
12
|
+
* (`storedAt`, `applied`, `appliedAt`) that are not part of a
|
|
13
|
+
* {@link SyncAction}. A row that fails to parse is dropped and logged rather
|
|
14
|
+
* than replayed as a malformed delta.
|
|
17
15
|
*/
|
|
18
16
|
const storedSyncActionSchema = z.object({
|
|
19
17
|
id: z.number(),
|
|
@@ -35,13 +33,11 @@ function toSyncAction(row) {
|
|
|
35
33
|
return parsed.data;
|
|
36
34
|
}
|
|
37
35
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* - Enables rewind/replay for conflict resolution
|
|
44
|
-
* - Maintains sync watermark
|
|
36
|
+
* Stores the sync actions (the change deltas) the server sends, keyed by
|
|
37
|
+
* their sync id, and tracks which ones have been applied. It keeps a
|
|
38
|
+
* watermark of the last applied id, holds not-yet-applied actions as
|
|
39
|
+
* pending, and can rewind a range of actions back to pending so they can be
|
|
40
|
+
* replayed while resolving a conflict.
|
|
45
41
|
*/
|
|
46
42
|
export class SyncActionStore {
|
|
47
43
|
db;
|
package/dist/surface.d.ts
CHANGED
|
@@ -1,29 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* A machine-checked manifest of this package's public API surface. It lists,
|
|
3
|
+
* as string tuples, the method names on `ablo.<model>`, the keys accepted by
|
|
4
|
+
* the list-style read options, and the keys of the client constructor
|
|
5
|
+
* options. Each tuple is proven equal to the keys of its source interface at
|
|
6
|
+
* compile time, so the lists cannot drift from the real types: add or remove
|
|
7
|
+
* a name on either side without updating the matching tuple and this file
|
|
8
|
+
* fails to compile, in both directions — no name the interface lacks, and no
|
|
9
|
+
* interface key the tuple omits.
|
|
5
10
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* NAMES are guaranteed; descriptions stay hand-written (prose can't be type-checked).
|
|
11
|
+
* Documentation tooling reads these tuples to describe the surface, which
|
|
12
|
+
* guarantees a generated summary never names a method or option that does
|
|
13
|
+
* not exist. The names are verified here; their prose descriptions are
|
|
14
|
+
* written by hand, since prose cannot be type-checked.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* The names of every method available on `ablo.<model>`, matching the keys of
|
|
18
|
+
* the {@link ModelOperations} interface. Documentation tooling reads this
|
|
19
|
+
* tuple, so it is the one list of model-verb names a generated summary can
|
|
20
|
+
* describe.
|
|
17
21
|
*/
|
|
18
|
-
/** Every method on `ablo.<model>` (the stateful `ModelOperations`). The single
|
|
19
|
-
* source of truth for the model-verb names the docs/MCP may describe. */
|
|
20
22
|
export declare const PUBLIC_MODEL_VERBS: readonly ["retrieve", "list", "get", "getAll", "getCount", "create", "update", "delete", "claim", "watch", "onChange"];
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
+
/**
|
|
24
|
+
* The option keys accepted by `list`, `getAll`, and `onChange`, matching the
|
|
25
|
+
* keys of {@link LocalReadOptions}. Note that the lifecycle filter is named
|
|
26
|
+
* `state`, not `scope`.
|
|
27
|
+
*/
|
|
23
28
|
export declare const PUBLIC_LIST_OPTION_KEYS: readonly ["where", "filter", "orderBy", "limit", "offset", "state"];
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
|
|
29
|
+
/**
|
|
30
|
+
* The keys of the client constructor options, {@link AbloOptions}. Only
|
|
31
|
+
* `schema` is required; every other key is optional.
|
|
32
|
+
*/
|
|
33
|
+
export declare const PUBLIC_ABLO_OPTION_KEYS: readonly ["schema", "apiKey", "authEndpoint", "databaseUrl", "persistence", "commitOutbox", "commitOutboxScope", "transport", "debug", "logLevel", "authToken", "baseURL", "fetch", "defaultHeaders", "defaultQuery", "dangerouslyAllowBrowser"];
|
|
27
34
|
export type ModelVerb = (typeof PUBLIC_MODEL_VERBS)[number];
|
|
28
35
|
export type ListOptionKey = (typeof PUBLIC_LIST_OPTION_KEYS)[number];
|
|
29
36
|
export type AbloOptionKey = (typeof PUBLIC_ABLO_OPTION_KEYS)[number];
|
package/dist/surface.js
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* A machine-checked manifest of this package's public API surface. It lists,
|
|
3
|
+
* as string tuples, the method names on `ablo.<model>`, the keys accepted by
|
|
4
|
+
* the list-style read options, and the keys of the client constructor
|
|
5
|
+
* options. Each tuple is proven equal to the keys of its source interface at
|
|
6
|
+
* compile time, so the lists cannot drift from the real types: add or remove
|
|
7
|
+
* a name on either side without updating the matching tuple and this file
|
|
8
|
+
* fails to compile, in both directions — no name the interface lacks, and no
|
|
9
|
+
* interface key the tuple omits.
|
|
5
10
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `Expect<Equal<…>>`. Add or remove a verb/option without updating the matching
|
|
11
|
-
* tuple and THIS FILE FAILS TO COMPILE (the `Equal` constraint is checked eagerly
|
|
12
|
-
* at the alias declaration — both directions: no phantom name, no missing name).
|
|
13
|
-
*
|
|
14
|
-
* Consumers (the MCP `get_api_surface`) import these NAME tuples and build their
|
|
15
|
-
* prose from them, so a summary can never reference a verb that doesn't exist.
|
|
16
|
-
* NAMES are guaranteed; descriptions stay hand-written (prose can't be type-checked).
|
|
11
|
+
* Documentation tooling reads these tuples to describe the surface, which
|
|
12
|
+
* guarantees a generated summary never names a method or option that does
|
|
13
|
+
* not exist. The names are verified here; their prose descriptions are
|
|
14
|
+
* written by hand, since prose cannot be type-checked.
|
|
17
15
|
*/
|
|
18
16
|
// ── the per-`ablo.<model>` verb surface ────────────────────────────────────
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
17
|
+
/**
|
|
18
|
+
* The names of every method available on `ablo.<model>`, matching the keys of
|
|
19
|
+
* the {@link ModelOperations} interface. Documentation tooling reads this
|
|
20
|
+
* tuple, so it is the one list of model-verb names a generated summary can
|
|
21
|
+
* describe.
|
|
22
|
+
*/
|
|
21
23
|
export const PUBLIC_MODEL_VERBS = [
|
|
22
24
|
'retrieve',
|
|
23
25
|
'list',
|
|
@@ -32,8 +34,11 @@ export const PUBLIC_MODEL_VERBS = [
|
|
|
32
34
|
'onChange',
|
|
33
35
|
];
|
|
34
36
|
// ── the read/list query option surface ─────────────────────────────────────
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
+
/**
|
|
38
|
+
* The option keys accepted by `list`, `getAll`, and `onChange`, matching the
|
|
39
|
+
* keys of {@link LocalReadOptions}. Note that the lifecycle filter is named
|
|
40
|
+
* `state`, not `scope`.
|
|
41
|
+
*/
|
|
37
42
|
export const PUBLIC_LIST_OPTION_KEYS = [
|
|
38
43
|
'where',
|
|
39
44
|
'filter',
|
|
@@ -43,14 +48,18 @@ export const PUBLIC_LIST_OPTION_KEYS = [
|
|
|
43
48
|
'state',
|
|
44
49
|
];
|
|
45
50
|
// ── the `Ablo({ … })` constructor option surface ───────────────────────────
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
51
|
+
/**
|
|
52
|
+
* The keys of the client constructor options, {@link AbloOptions}. Only
|
|
53
|
+
* `schema` is required; every other key is optional.
|
|
54
|
+
*/
|
|
48
55
|
export const PUBLIC_ABLO_OPTION_KEYS = [
|
|
49
56
|
'schema',
|
|
50
57
|
'apiKey',
|
|
51
58
|
'authEndpoint',
|
|
52
59
|
'databaseUrl',
|
|
53
60
|
'persistence',
|
|
61
|
+
'commitOutbox',
|
|
62
|
+
'commitOutboxScope',
|
|
54
63
|
'transport',
|
|
55
64
|
'debug',
|
|
56
65
|
'logLevel',
|
|
@@ -1,25 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Fetches the initial snapshot the sync engine needs before it can go live: the
|
|
3
|
+
* current rows for the requested models plus the sync position from which to
|
|
4
|
+
* resume live updates. It calls the sync server's `/sync/bootstrap` HTTP
|
|
5
|
+
* endpoint, retries transient failures with backoff, and can fall back to a
|
|
6
|
+
* cached snapshot when the device is offline. {@link BootstrapData} is the
|
|
7
|
+
* shape it returns; {@link BootstrapOptions} configures it.
|
|
4
8
|
*/
|
|
5
9
|
export interface BootstrapData {
|
|
6
10
|
type: 'full' | 'partial';
|
|
7
11
|
lastSyncId: number;
|
|
8
12
|
/**
|
|
9
|
-
* Model rows keyed by
|
|
10
|
-
*
|
|
11
|
-
*
|
|
13
|
+
* Model rows keyed by type name. Each row is opaque at this boundary; the
|
|
14
|
+
* engine asserts the per-model shape against the registered schema when it
|
|
15
|
+
* reduces the rows and writes them to local storage.
|
|
12
16
|
*/
|
|
13
17
|
models?: Record<string, unknown[]>;
|
|
14
18
|
deltas?: ValidatedServerDelta[];
|
|
15
19
|
deltaCount?: number;
|
|
16
|
-
/** Model types whose server-side query failed (timeout, RLS error,
|
|
20
|
+
/** Model types whose server-side query failed (timeout, RLS error, and the like). */
|
|
17
21
|
failedModels?: string[];
|
|
18
22
|
timestamp: number;
|
|
19
23
|
/**
|
|
20
|
-
* The
|
|
21
|
-
* the
|
|
22
|
-
* client compares it
|
|
24
|
+
* The content hash of the schema the server currently has active for this
|
|
25
|
+
* tenant — the same hash `ablo push` computes. Present once a schema has been
|
|
26
|
+
* pushed. The client compares it against its own `expectedSchemaHash` to warn
|
|
27
|
+
* when the app's schema and the deployed schema have drifted apart.
|
|
23
28
|
*/
|
|
24
29
|
schemaHash?: string;
|
|
25
30
|
}
|
|
@@ -40,40 +45,38 @@ export interface BootstrapOptions {
|
|
|
40
45
|
*/
|
|
41
46
|
baseUrl?: string;
|
|
42
47
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* account
|
|
48
|
+
* Namespace for the offline bootstrap cache. Most callers leave this unset;
|
|
49
|
+
* the SDK fills it in once authentication has resolved the account scope, so
|
|
50
|
+
* the fallback cache is partitioned per account.
|
|
46
51
|
*/
|
|
47
52
|
cacheScope?: string | null;
|
|
48
53
|
/**
|
|
49
|
-
* @deprecated Use `cacheScope`.
|
|
50
|
-
*
|
|
54
|
+
* @deprecated Use `cacheScope`. Retained so code that constructs
|
|
55
|
+
* {@link BootstrapFetcher} directly keeps its cache namespace.
|
|
51
56
|
*/
|
|
52
57
|
organizationId?: string;
|
|
53
58
|
syncGroups?: string[];
|
|
54
59
|
maxRetries?: number;
|
|
55
60
|
retryDelay?: number;
|
|
56
|
-
/**
|
|
61
|
+
/** How long to wait for a single fetch before timing out, in milliseconds. Default 10000 (10 seconds). */
|
|
57
62
|
fetchTimeout?: number;
|
|
58
63
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* When absent, the server returns all models (backward compatible with
|
|
65
|
-
* old clients that don't send a models param).
|
|
64
|
+
* The model names to request. When set, the server returns only these models
|
|
65
|
+
* and skips the rest. This is derived from each model's `load` strategy: only
|
|
66
|
+
* models loaded instantly (the default) are included. When unset, the server
|
|
67
|
+
* returns every model.
|
|
66
68
|
*/
|
|
67
69
|
instantModels?: string[];
|
|
68
70
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
+
* Getter for the current credential, read at request time so a refreshed
|
|
72
|
+
* token takes effect without recreating the helper. Preferred over
|
|
73
|
+
* {@link BootstrapFetcher.setAuthToken}.
|
|
71
74
|
*/
|
|
72
75
|
getAuthToken?: AuthTokenGetter;
|
|
73
76
|
}
|
|
74
77
|
import { type AuthTokenGetter } from '../auth/credentialSource.js';
|
|
75
78
|
import { type ValidatedServerDelta } from './schemas.js';
|
|
76
|
-
export declare class
|
|
79
|
+
export declare class BootstrapFetcher {
|
|
77
80
|
private options;
|
|
78
81
|
private abortController;
|
|
79
82
|
/** Warn about schema drift at most once per helper. */
|
|
@@ -95,20 +98,10 @@ export declare class BootstrapHelper {
|
|
|
95
98
|
setCacheScope(cacheScope: string): void;
|
|
96
99
|
setSyncGroups(syncGroups: readonly string[] | undefined): void;
|
|
97
100
|
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
101
|
+
* Sets a fixed credential for callers that construct the helper directly.
|
|
102
|
+
* The SDK instead supplies `getAuthToken` and never calls this.
|
|
100
103
|
*/
|
|
101
104
|
setAuthToken(authToken: string | undefined): void;
|
|
102
|
-
/**
|
|
103
|
-
* Create a promise that rejects after a timeout
|
|
104
|
-
* Used to race against fetch requests that may hang indefinitely
|
|
105
|
-
*/
|
|
106
|
-
private createTimeoutPromise;
|
|
107
|
-
/**
|
|
108
|
-
* Wrap a promise with a timeout - if the promise doesn't resolve within
|
|
109
|
-
* the timeout period, the AbortController is triggered and an error is thrown
|
|
110
|
-
*/
|
|
111
|
-
private withTimeout;
|
|
112
105
|
/**
|
|
113
106
|
* Fetch bootstrap data from sync engine with partial bootstrap support
|
|
114
107
|
* @param lastSyncId - Optional: client's current lastSyncId for partial bootstrap
|
|
@@ -116,11 +109,12 @@ export declare class BootstrapHelper {
|
|
|
116
109
|
*/
|
|
117
110
|
fetchBootstrap(lastSyncId?: number,
|
|
118
111
|
/**
|
|
119
|
-
*
|
|
120
|
-
* the request uses
|
|
121
|
-
*
|
|
122
|
-
* unaffected
|
|
123
|
-
* holds the
|
|
112
|
+
* A per-call set of sync groups for a scoped hydrate-on-enter. When given,
|
|
113
|
+
* the request uses these groups instead of the configured `syncGroups`, and
|
|
114
|
+
* does so without mutating the shared options, so a concurrent full
|
|
115
|
+
* bootstrap is unaffected. It also bypasses the offline snapshot cache,
|
|
116
|
+
* which holds the full bootstrap and would be a wrong answer to a subset
|
|
117
|
+
* request.
|
|
124
118
|
*/
|
|
125
119
|
syncGroupsOverride?: readonly string[]): Promise<BootstrapData>;
|
|
126
120
|
/**
|