@abloatai/ablo 0.34.1 → 0.35.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/AGENTS.md +2 -1
- package/CHANGELOG.md +674 -5
- package/README.md +39 -22
- package/dist/BaseSyncedStore.d.ts +152 -44
- package/dist/BaseSyncedStore.js +300 -184
- package/dist/Database.d.ts +9 -24
- package/dist/Database.js +37 -22
- package/dist/InstanceCache.d.ts +25 -4
- package/dist/InstanceCache.js +48 -15
- package/dist/LazyReferenceCollection.d.ts +3 -3
- package/dist/LazyReferenceCollection.js +4 -4
- package/dist/Model.d.ts +6 -6
- package/dist/Model.js +10 -10
- package/dist/ModelRegistry.d.ts +4 -4
- package/dist/ModelRegistry.js +3 -3
- package/dist/{SyncEngineContext.d.ts → RuntimeContext.d.ts} +20 -13
- package/dist/{SyncEngineContext.js → RuntimeContext.js} +11 -12
- package/dist/SyncClient.d.ts +42 -32
- package/dist/SyncClient.js +166 -110
- package/dist/ai-sdk/coordinatedTool.d.ts +2 -2
- package/dist/ai-sdk/coordinatedTool.js +1 -1
- package/dist/ai-sdk/coordinationContext.d.ts +2 -2
- package/dist/ai-sdk/coordinationContext.js +1 -1
- package/dist/ai-sdk/wrap.d.ts +3 -3
- package/dist/ai-sdk/wrap.js +2 -2
- package/dist/auth/index.d.ts +1 -156
- package/dist/auth/index.js +8 -301
- package/dist/cli.cjs +3344 -1073
- package/dist/client/Ablo.d.ts +42 -287
- package/dist/client/Ablo.js +118 -963
- package/dist/client/abloClient.d.ts +309 -0
- package/dist/client/abloClient.js +13 -0
- package/dist/client/clientPrelude.d.ts +52 -0
- package/dist/client/clientPrelude.js +60 -0
- package/dist/client/consoleLogger.d.ts +2 -2
- package/dist/client/coreClient.d.ts +60 -0
- package/dist/client/coreClient.js +118 -0
- package/dist/client/createInternalComponents.d.ts +4 -4
- package/dist/client/createInternalComponents.js +9 -8
- package/dist/client/createModelProxy.d.ts +78 -373
- package/dist/client/createModelProxy.js +114 -86
- package/dist/client/humans.d.ts +48 -0
- package/dist/client/humans.js +52 -0
- package/dist/client/modelRegistration.d.ts +1 -1
- package/dist/client/modelRegistration.js +9 -9
- package/dist/client/options.d.ts +73 -17
- package/dist/client/reactiveEngine.d.ts +48 -0
- package/dist/client/reactiveEngine.js +910 -0
- package/dist/client/resourceTypes.d.ts +9 -250
- package/dist/client/resourceTypes.js +8 -5
- package/dist/client/schemaConfig.d.ts +4 -4
- package/dist/client/schemaConfig.js +6 -2
- package/dist/client/validateAbloOptions.d.ts +3 -2
- package/dist/client/validateAbloOptions.js +1 -1
- package/dist/client/wsMutationExecutor.d.ts +3 -3
- package/dist/client/wsMutationExecutor.js +3 -3
- package/dist/context.d.ts +9 -9
- package/dist/context.js +10 -9
- package/dist/coordination/ClaimLog.d.ts +26 -0
- package/dist/coordination/ClaimLog.js +32 -0
- package/dist/coordination/index.d.ts +1 -15
- package/dist/coordination/index.js +8 -31
- package/dist/core/DatabaseManager.js +1 -1
- package/dist/core/QueryView.d.ts +1 -1
- package/dist/core/QueryView.js +1 -1
- package/dist/core/StoreManager.d.ts +4 -23
- package/dist/core/StoreManager.js +5 -55
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/core/storeContract.d.ts +2 -2
- package/dist/docs/catalog.d.ts +72 -0
- package/dist/docs/catalog.js +227 -0
- package/dist/docs/index.d.ts +10 -0
- package/dist/docs/index.js +10 -0
- package/dist/environment.d.ts +1 -40
- package/dist/environment.js +8 -37
- package/dist/index.d.ts +40 -34
- package/dist/index.js +26 -20
- package/dist/interfaces/index.d.ts +44 -134
- package/dist/keys/index.d.ts +1 -77
- package/dist/keys/index.js +8 -190
- package/dist/mutators/{RecordingTransaction.d.ts → RecordingMutation.d.ts} +4 -4
- package/dist/mutators/{RecordingTransaction.js → RecordingMutation.js} +2 -2
- package/dist/mutators/Transaction.d.ts +1 -1
- package/dist/mutators/Transaction.js +1 -1
- package/dist/mutators/UndoManager.d.ts +6 -6
- package/dist/mutators/UndoManager.js +5 -5
- package/dist/mutators/defineMutators.d.ts +3 -3
- package/dist/mutators/defineMutators.js +1 -1
- package/dist/mutators/inverseOp.js +2 -2
- package/dist/mutators/mutateActions.d.ts +3 -3
- package/dist/mutators/mutateActions.js +1 -1
- package/dist/mutators/readerActions.d.ts +1 -1
- package/dist/mutators/undoApply.d.ts +1 -1
- package/dist/mutators/undoApply.js +1 -1
- package/dist/policy/index.d.ts +2 -2
- package/dist/policy/index.js +1 -1
- package/dist/query/client.d.ts +2 -2
- package/dist/query/client.js +4 -4
- package/dist/query/types.d.ts +6 -41
- package/dist/query/types.js +2 -2
- package/dist/react/AbloProvider.d.ts +6 -8
- package/dist/react/AbloProvider.js +5 -7
- package/dist/react/context.d.ts +1 -1
- package/dist/react/context.js +1 -1
- package/dist/react/index.d.ts +5 -5
- package/dist/react/index.js +3 -3
- package/dist/react/internalContext.d.ts +1 -1
- package/dist/react/useAblo.d.ts +3 -3
- package/dist/react/useAblo.js +1 -1
- package/dist/react/useCurrentUserId.js +1 -1
- package/dist/react/useErrorListener.js +1 -1
- package/dist/react/useMutationFailureListener.d.ts +2 -2
- package/dist/react/useMutationFailureListener.js +1 -1
- package/dist/react/useMutators.d.ts +3 -3
- package/dist/react/useMutators.js +3 -3
- package/dist/react/useUndoScope.d.ts +5 -5
- package/dist/react/useUndoScope.js +1 -1
- package/dist/schema/coordination.d.ts +69 -10
- package/dist/schema/coordination.js +86 -9
- package/dist/schema/ddl.js +2 -2
- package/dist/schema/diff.d.ts +1 -1
- package/dist/schema/generate.js +1 -1
- package/dist/schema/index.d.ts +10 -10
- package/dist/schema/index.js +18 -18
- package/dist/schema/queries.d.ts +27 -27
- package/dist/schema/queries.js +23 -23
- package/dist/schema/select.d.ts +3 -3
- package/dist/schema/select.js +3 -3
- package/dist/schema/serialize.d.ts +15 -6
- package/dist/schema/serialize.js +17 -3
- package/dist/schema/sugar.d.ts +6 -7
- package/dist/schema/sugar.js +9 -12
- package/dist/schema/syncDeltaRow.d.ts +4 -152
- package/dist/schema/syncDeltaRow.js +4 -105
- package/dist/server/adapter.d.ts +18 -1
- package/dist/server/commit.d.ts +10 -16
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/readConfig.d.ts +1 -1
- package/dist/source/adapters/drizzle.d.ts +1 -1
- package/dist/source/adapters/drizzle.js +2 -2
- package/dist/source/adapters/kysely.d.ts +1 -1
- package/dist/source/adapters/kysely.js +1 -1
- package/dist/source/adapters/kyselyMutationCore.d.ts +1 -1
- package/dist/source/adapters/kyselyMutationCore.js +2 -2
- package/dist/source/adapters/memory.js +1 -1
- package/dist/source/adapters/prisma.d.ts +8 -3
- package/dist/source/adapters/prisma.js +1 -1
- package/dist/source/connector.js +1 -1
- package/dist/source/connectorProtocol.d.ts +2 -8
- package/dist/source/connectorProtocol.js +3 -2
- package/dist/source/contract.d.ts +29 -17
- package/dist/source/contract.js +27 -22
- package/dist/source/factory.d.ts +1 -1
- package/dist/source/footprint.d.ts +111 -0
- package/dist/source/footprint.js +0 -0
- package/dist/source/idempotency.js +2 -2
- package/dist/source/index.d.ts +1 -0
- package/dist/source/index.js +3 -0
- package/dist/source/next.d.ts +1 -1
- package/dist/source/signing.d.ts +9 -2
- package/dist/source/signing.js +4 -1
- package/dist/source/types.d.ts +6 -4
- package/dist/source/types.js +1 -1
- package/dist/stores/ObjectStore.d.ts +1 -1
- package/dist/stores/SyncActionStore.d.ts +1 -1
- package/dist/stores/SyncActionStore.js +2 -10
- package/dist/stores/syncAction.d.ts +26 -0
- package/dist/stores/syncAction.js +16 -0
- package/dist/surface.d.ts +3 -3
- package/dist/surface.js +6 -4
- package/dist/sync/BootstrapFetcher.d.ts +123 -6
- package/dist/sync/BootstrapFetcher.js +492 -66
- package/dist/sync/ConnectionManager.d.ts +6 -198
- package/dist/sync/ConnectionManager.js +6 -677
- package/dist/sync/OnDemandLoader.d.ts +2 -2
- package/dist/sync/OnDemandLoader.js +60 -21
- package/dist/sync/SubscriptionManager.d.ts +13 -2
- package/dist/sync/SubscriptionManager.js +23 -5
- package/dist/sync/SyncWebSocket.d.ts +27 -510
- package/dist/sync/SyncWebSocket.js +76 -954
- package/dist/sync/awaitClaimGrant.d.ts +4 -44
- package/dist/sync/awaitClaimGrant.js +4 -109
- package/dist/sync/commitFrames.d.ts +6 -40
- package/dist/sync/commitFrames.js +6 -97
- package/dist/sync/contextPorts.d.ts +18 -0
- package/dist/sync/contextPorts.js +31 -0
- package/dist/sync/createClaimStream.d.ts +5 -49
- package/dist/sync/createClaimStream.js +5 -469
- package/dist/sync/createPresenceStream.d.ts +26 -4
- package/dist/sync/createPresenceStream.js +28 -20
- package/dist/sync/createSnapshot.d.ts +2 -2
- package/dist/sync/createSnapshot.js +1 -1
- package/dist/sync/credentialLifecycle.d.ts +5 -173
- package/dist/sync/credentialLifecycle.js +5 -320
- package/dist/sync/deltaPipeline.d.ts +1 -1
- package/dist/sync/participants.d.ts +5 -4
- package/dist/sync/participants.js +29 -22
- package/dist/sync/schemaDrift.d.ts +55 -0
- package/dist/sync/schemaDrift.js +53 -0
- package/dist/sync/schemas.d.ts +21 -32
- package/dist/sync/schemas.js +26 -17
- package/dist/sync/syncPlan.d.ts +3 -3
- package/dist/sync/wsFrameHandlers.d.ts +6 -114
- package/dist/sync/wsFrameHandlers.js +6 -392
- package/dist/testing/fixtures/bootstrap.d.ts +1 -1
- package/dist/testing/fixtures/deltas.d.ts +1 -1
- package/dist/testing/fixtures/httpResponses.d.ts +70 -0
- package/dist/testing/fixtures/httpResponses.js +90 -0
- package/dist/testing/fixtures/models.js +1 -1
- package/dist/testing/helpers/wait.js +1 -1
- package/dist/testing/mocks/MockMutationExecutor.d.ts +2 -2
- package/dist/testing/mocks/MockMutationExecutor.js +8 -14
- package/dist/testing/mocks/MockSyncContext.d.ts +11 -11
- package/dist/testing/mocks/MockSyncContext.js +10 -9
- package/dist/testing/mocks/MockSyncStore.js +1 -1
- package/dist/testing/mocks/MockWebSocket.d.ts +2 -2
- package/dist/transaction/ablo.d.ts +88 -0
- package/dist/transaction/ablo.js +33 -0
- package/dist/{client/auth.d.ts → transaction/auth/apiKey.d.ts} +43 -8
- package/dist/{client/auth.js → transaction/auth/apiKey.js} +19 -0
- package/dist/transaction/auth/bootstrapScope.d.ts +15 -0
- package/dist/transaction/auth/bootstrapScope.js +1 -0
- package/dist/transaction/auth/capability.d.ts +177 -0
- package/dist/transaction/auth/capability.js +199 -0
- package/dist/{auth → transaction/auth}/credentialSource.d.ts +8 -1
- package/dist/{client → transaction/auth}/identity.d.ts +8 -7
- package/dist/{client → transaction/auth}/identity.js +1 -1
- package/dist/transaction/auth/index.d.ts +162 -0
- package/dist/transaction/auth/index.js +304 -0
- package/dist/{auth → transaction/auth}/schemas.d.ts +1 -1
- package/dist/{auth → transaction/auth}/schemas.js +13 -13
- package/dist/{client → transaction/auth}/sessionMint.d.ts +8 -8
- package/dist/{client → transaction/auth}/sessionMint.js +4 -7
- package/dist/transaction/coordination/awaitClaimGrant.d.ts +49 -0
- package/dist/transaction/coordination/awaitClaimGrant.js +112 -0
- package/dist/transaction/coordination/claimMeta.d.ts +49 -0
- package/dist/transaction/coordination/claimMeta.js +52 -0
- package/dist/transaction/coordination/createClaimStream.d.ts +64 -0
- package/dist/transaction/coordination/createClaimStream.js +475 -0
- package/dist/transaction/coordination/events.d.ts +74 -0
- package/dist/transaction/coordination/events.js +7 -0
- package/dist/transaction/coordination/index.d.ts +19 -0
- package/dist/transaction/coordination/index.js +44 -0
- package/dist/transaction/coordination/locator.d.ts +83 -0
- package/dist/transaction/coordination/locator.js +82 -0
- package/dist/transaction/coordination/schema.d.ts +1473 -0
- package/dist/{coordination → transaction/coordination}/schema.js +490 -55
- package/dist/transaction/coordination/targetConflict.d.ts +2 -0
- package/dist/transaction/coordination/targetConflict.js +103 -0
- package/dist/{coordination → transaction/coordination}/trace.d.ts +7 -18
- package/dist/{coordination → transaction/coordination}/trace.js +18 -25
- package/dist/transaction/durableWrites.d.ts +62 -0
- package/dist/{client → transaction}/durableWrites.js +28 -3
- package/dist/transaction/environment.d.ts +105 -0
- package/dist/transaction/environment.js +108 -0
- package/dist/{errorCodes.d.ts → transaction/errorCodes.d.ts} +11 -11
- package/dist/{errorCodes.js → transaction/errorCodes.js} +35 -12
- package/dist/{errors.d.ts → transaction/errors.d.ts} +37 -13
- package/dist/{errors.js → transaction/errors.js} +85 -16
- package/dist/transaction/index.d.ts +20 -0
- package/dist/transaction/index.js +20 -0
- package/dist/transaction/keys/index.d.ts +87 -0
- package/dist/transaction/keys/index.js +207 -0
- package/dist/transaction/log/syncDeltaRow.d.ts +158 -0
- package/dist/transaction/log/syncDeltaRow.js +95 -0
- package/dist/{sync/syncPosition.d.ts → transaction/logPosition.d.ts} +22 -8
- package/dist/{sync/syncPosition.js → transaction/logPosition.js} +15 -6
- package/dist/transaction/logger.d.ts +16 -0
- package/dist/transaction/logger.js +7 -0
- package/dist/transaction/observability.d.ts +53 -0
- package/dist/transaction/observability.js +19 -0
- package/dist/transaction/plugin.d.ts +192 -0
- package/dist/transaction/plugin.js +87 -0
- package/dist/{policy → transaction/policy}/types.d.ts +3 -3
- package/dist/{policy → transaction/policy}/types.js +2 -0
- package/dist/transaction/resources/httpResources.d.ts +266 -0
- package/dist/transaction/resources/httpResources.js +7 -0
- package/dist/transaction/resources/modelOperations.d.ts +319 -0
- package/dist/transaction/resources/modelOperations.js +12 -0
- package/dist/transaction/resources/mutationOptions.d.ts +66 -0
- package/dist/transaction/resources/mutationOptions.js +9 -0
- package/dist/transaction/resources/where.d.ts +85 -0
- package/dist/transaction/resources/where.js +70 -0
- package/dist/{client → transaction/resources}/writeOptionsSchema.d.ts +2 -6
- package/dist/{client → transaction/resources}/writeOptionsSchema.js +9 -5
- package/dist/{schema → transaction/schema}/field.d.ts +5 -5
- package/dist/{schema → transaction/schema}/field.js +5 -5
- package/dist/transaction/schema/loadStrategy.d.ts +45 -0
- package/dist/transaction/schema/loadStrategy.js +46 -0
- package/dist/{schema → transaction/schema}/model.d.ts +50 -35
- package/dist/{schema → transaction/schema}/model.js +30 -20
- package/dist/transaction/schema/openapi.d.ts +57 -0
- package/dist/transaction/schema/openapi.js +340 -0
- package/dist/{schema → transaction/schema}/relation.d.ts +14 -14
- package/dist/{schema → transaction/schema}/relation.js +7 -7
- package/dist/{schema → transaction/schema}/residency.d.ts +0 -9
- package/dist/{schema → transaction/schema}/residency.js +0 -5
- package/dist/{schema → transaction/schema}/roles.d.ts +5 -5
- package/dist/{schema → transaction/schema}/roles.js +5 -5
- package/dist/{schema → transaction/schema}/schema.d.ts +12 -10
- package/dist/{schema → transaction/schema}/schema.js +4 -3
- package/dist/{schema → transaction/schema}/tenancy.d.ts +1 -1
- package/dist/{schema → transaction/schema}/tenancy.js +7 -4
- package/dist/transaction/transactionLayer.d.ts +82 -0
- package/dist/transaction/transactionLayer.js +24 -0
- package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.d.ts +4 -5
- package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.js +9 -13
- package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.d.ts +9 -2
- package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.js +5 -9
- package/dist/{transactions/durableWriteStore.d.ts → transaction/transactions/settlement/pendingWrite.d.ts} +10 -36
- package/dist/transaction/transactions/settlement/pendingWrite.js +20 -0
- package/dist/transaction/transport/commitFrames.d.ts +90 -0
- package/dist/transaction/transport/commitFrames.js +134 -0
- package/dist/transaction/transport/connectionManager.d.ts +215 -0
- package/dist/transaction/transport/connectionManager.js +673 -0
- package/dist/transaction/transport/credentialLifecycle.d.ts +177 -0
- package/dist/transaction/transport/credentialLifecycle.js +324 -0
- package/dist/{sync → transaction/transport}/heartbeat.d.ts +3 -1
- package/dist/{sync → transaction/transport}/heartbeat.js +6 -4
- package/dist/{client → transaction/transport}/httpClient.d.ts +59 -16
- package/dist/{client → transaction/transport}/httpClient.js +5 -5
- package/dist/transaction/transport/httpOptions.d.ts +33 -0
- package/dist/transaction/transport/httpOptions.js +12 -0
- package/dist/{client → transaction/transport}/httpTransport.js +171 -85
- package/dist/{sync/NetworkProbe.d.ts → transaction/transport/networkProbe.d.ts} +7 -4
- package/dist/{sync/NetworkProbe.js → transaction/transport/networkProbe.js} +14 -13
- package/dist/transaction/transport/wsFrameHandlers.d.ts +128 -0
- package/dist/transaction/transport/wsFrameHandlers.js +429 -0
- package/dist/transaction/transport/wsTransport.d.ts +576 -0
- package/dist/transaction/transport/wsTransport.js +1017 -0
- package/dist/transaction/types/assertExact.d.ts +17 -0
- package/dist/transaction/types/assertExact.js +1 -0
- package/dist/{types → transaction/types}/global.d.ts +17 -2
- package/dist/{types → transaction/types}/global.js +2 -1
- package/dist/{types → transaction/types}/index.d.ts +14 -46
- package/dist/{types → transaction/types}/index.js +7 -16
- package/dist/{types → transaction/types}/streams.d.ts +63 -45
- package/dist/{utils → transaction/utils}/json.d.ts +18 -0
- package/dist/transaction/utils/json.js +276 -0
- package/dist/transaction/wire/accountResponses.d.ts +351 -0
- package/dist/transaction/wire/accountResponses.js +255 -0
- package/dist/transaction/wire/auth.d.ts +49 -0
- package/dist/transaction/wire/auth.js +57 -0
- package/dist/transaction/wire/claimEvent.d.ts +76 -0
- package/dist/transaction/wire/claimEvent.js +73 -0
- package/dist/transaction/wire/claims.d.ts +463 -0
- package/dist/transaction/wire/claims.js +229 -0
- package/dist/{wire → transaction/wire}/commit.d.ts +125 -193
- package/dist/{wire → transaction/wire}/commit.js +68 -47
- package/dist/{wire → transaction/wire}/delta.d.ts +66 -17
- package/dist/{wire → transaction/wire}/delta.js +37 -13
- package/dist/transaction/wire/errorEnvelope.d.ts +72 -0
- package/dist/{wire → transaction/wire}/errorEnvelope.js +36 -5
- package/dist/transaction/wire/feedCursor.d.ts +60 -0
- package/dist/transaction/wire/feedCursor.js +82 -0
- package/dist/transaction/wire/feedEvent.d.ts +177 -0
- package/dist/transaction/wire/feedEvent.js +39 -0
- package/dist/transaction/wire/frames.d.ts +194 -0
- package/dist/transaction/wire/frames.js +50 -0
- package/dist/transaction/wire/inboundFrames.d.ts +552 -0
- package/dist/transaction/wire/inboundFrames.js +116 -0
- package/dist/transaction/wire/index.d.ts +50 -0
- package/dist/transaction/wire/index.js +74 -0
- package/dist/{wire → transaction/wire}/listEnvelope.d.ts +13 -14
- package/dist/transaction/wire/listEnvelope.js +42 -0
- package/dist/transaction/wire/modelResponses.d.ts +85 -0
- package/dist/transaction/wire/modelResponses.js +43 -0
- package/dist/transactions/{TransactionQueue.d.ts → mutations/MutationQueue.d.ts} +79 -38
- package/dist/transactions/{TransactionQueue.js → mutations/MutationQueue.js} +110 -59
- package/dist/transactions/{TransactionStore.d.ts → mutations/MutationStore.d.ts} +8 -8
- package/dist/transactions/{TransactionStore.js → mutations/MutationStore.js} +2 -2
- package/dist/transactions/{coalesceRules.d.ts → mutations/coalesceRules.d.ts} +10 -10
- package/dist/transactions/{coalesceRules.js → mutations/coalesceRules.js} +1 -1
- package/dist/transactions/mutations/commitLatency.d.ts +52 -0
- package/dist/transactions/mutations/commitLatency.js +130 -0
- package/dist/transactions/{commitOutboxStore.d.ts → mutations/commitOutboxStore.d.ts} +1 -5
- package/dist/transactions/{commitOutboxStore.js → mutations/commitOutboxStore.js} +1 -1
- package/dist/transactions/{commitPayload.d.ts → mutations/commitPayload.d.ts} +16 -15
- package/dist/transactions/{commitPayload.js → mutations/commitPayload.js} +12 -12
- package/dist/transactions/{deltaConfirmation.d.ts → mutations/deltaConfirmation.d.ts} +11 -11
- package/dist/transactions/{deltaConfirmation.js → mutations/deltaConfirmation.js} +7 -7
- package/dist/transactions/mutations/durableWriteStore.d.ts +14 -0
- package/dist/transactions/mutations/durableWriteStore.js +12 -0
- package/dist/transactions/{optimisticApply.d.ts → mutations/optimisticApply.d.ts} +7 -7
- package/dist/transactions/{replayValidation.d.ts → mutations/replayValidation.d.ts} +3 -3
- package/dist/transactions/{replayValidation.js → mutations/replayValidation.js} +4 -3
- package/dist/utils/mobxSetup.d.ts +1 -1
- package/dist/utils/mobxSetup.js +5 -2
- package/dist/webhooks/events.d.ts +2 -2
- package/dist/wire/index.d.ts +1 -34
- package/dist/wire/index.js +8 -49
- package/docs/agent-messaging.md +3 -3
- package/docs/agents.md +19 -12
- package/docs/api-keys.md +8 -4
- package/docs/api.md +22 -18
- package/docs/audit.md +2 -0
- package/docs/cli.md +31 -3
- package/docs/client-behavior.md +8 -6
- package/docs/concurrency-convention.md +30 -24
- package/docs/coordination.md +48 -38
- package/docs/data-sources.md +3 -1
- package/docs/debugging.md +5 -3
- package/docs/deployment.md +267 -0
- package/docs/examples/agent-human.md +49 -42
- package/docs/examples/ai-sdk-tool.md +69 -44
- package/docs/examples/existing-python-backend.md +8 -6
- package/docs/examples/nextjs.md +129 -47
- package/docs/examples/scoped-agent.md +45 -44
- package/docs/examples/server-agent.md +46 -26
- package/docs/groups.md +32 -29
- package/docs/guarantees.md +4 -2
- package/docs/how-it-works.md +9 -7
- package/docs/idempotency.md +126 -0
- package/docs/identity.md +58 -54
- package/docs/index.md +172 -86
- package/docs/integration-guide.md +17 -16
- package/docs/interaction-model.md +6 -4
- package/docs/mcp.md +41 -16
- package/docs/migration.md +63 -5
- package/docs/operating-on-your-database.md +3 -1
- package/docs/projects.md +2 -0
- package/docs/quickstart.md +22 -5
- package/docs/react.md +12 -10
- package/docs/schema-contract.md +5 -3
- package/docs/session-settings.md +108 -0
- package/docs/sessions.md +3 -1
- package/docs/webhooks.md +3 -1
- package/llms.txt +47 -17
- package/package.json +10 -8
- package/dist/agent/Agent.d.ts +0 -366
- package/dist/agent/Agent.js +0 -514
- package/dist/agent/index.d.ts +0 -115
- package/dist/agent/index.js +0 -128
- package/dist/agent/session.d.ts +0 -93
- package/dist/agent/session.js +0 -149
- package/dist/agent/types.d.ts +0 -68
- package/dist/agent/types.js +0 -9
- package/dist/client/durableWrites.d.ts +0 -21
- package/dist/coordination/schema.d.ts +0 -722
- package/dist/schema/openapi.d.ts +0 -29
- package/dist/schema/openapi.js +0 -124
- package/dist/transactions/durableWriteStore.js +0 -30
- package/dist/utils/json.js +0 -88
- package/dist/wire/errorEnvelope.d.ts +0 -55
- package/dist/wire/frames.d.ts +0 -197
- package/dist/wire/frames.js +0 -49
- package/dist/wire/listEnvelope.js +0 -18
- /package/dist/{client → transaction/auth}/credentialEndpoint.d.ts +0 -0
- /package/dist/{client → transaction/auth}/credentialEndpoint.js +0 -0
- /package/dist/{auth → transaction/auth}/credentialPolicy.d.ts +0 -0
- /package/dist/{auth → transaction/auth}/credentialPolicy.js +0 -0
- /package/dist/{auth → transaction/auth}/credentialSource.js +0 -0
- /package/dist/{client → transaction/auth}/hostedEndpoints.d.ts +0 -0
- /package/dist/{client → transaction/auth}/hostedEndpoints.js +0 -0
- /package/dist/{client → transaction/coordination}/claimHeartbeatLoop.d.ts +0 -0
- /package/dist/{client → transaction/coordination}/claimHeartbeatLoop.js +0 -0
- /package/dist/{client → transaction}/persistence.d.ts +0 -0
- /package/dist/{client → transaction}/persistence.js +0 -0
- /package/dist/{client → transaction/resources}/functionalUpdate.d.ts +0 -0
- /package/dist/{client → transaction/resources}/functionalUpdate.js +0 -0
- /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.d.ts +0 -0
- /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.js +0 -0
- /package/dist/{client → transaction/transport}/httpTransport.d.ts +0 -0
- /package/dist/{types → transaction/types}/modelData.d.ts +0 -0
- /package/dist/{types → transaction/types}/modelData.js +0 -0
- /package/dist/{types → transaction/types}/participant.d.ts +0 -0
- /package/dist/{types → transaction/types}/participant.js +0 -0
- /package/dist/{types → transaction/types}/streams.js +0 -0
- /package/dist/{utils → transaction/utils}/asyncIterator.d.ts +0 -0
- /package/dist/{utils → transaction/utils}/asyncIterator.js +0 -0
- /package/dist/{utils → transaction/utils}/duration.d.ts +0 -0
- /package/dist/{utils → transaction/utils}/duration.js +0 -0
- /package/dist/{wire → transaction/wire}/bootstrapReason.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/bootstrapReason.js +0 -0
- /package/dist/{wire → transaction/wire}/protocol.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/protocol.js +0 -0
- /package/dist/{wire → transaction/wire}/protocolVersion.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/protocolVersion.js +0 -0
- /package/dist/transactions/{UnconfirmedWrites.d.ts → mutations/UnconfirmedWrites.d.ts} +0 -0
- /package/dist/transactions/{UnconfirmedWrites.js → mutations/UnconfirmedWrites.js} +0 -0
- /package/dist/transactions/{optimisticApply.js → mutations/optimisticApply.js} +0 -0
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* RuntimeContext — Runtime dependency container
|
|
3
3
|
*
|
|
4
4
|
* All SDK classes receive this context at construction time.
|
|
5
5
|
* It bundles every injectable dependency so constructors stay clean.
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
8
|
-
|
|
7
|
+
import type { Logger, ObservabilityProvider, Analytics, SessionErrorDetector, OnlineStatusProvider, ModelDebugLoggerContract, MutationExecutor, RuntimeConfig } from './interfaces/index.js';
|
|
8
|
+
import type { ModelMetadata } from './transaction/types/index.js';
|
|
9
|
+
export interface RuntimeContext {
|
|
9
10
|
/** Structured logger */
|
|
10
|
-
logger:
|
|
11
|
+
logger: Logger;
|
|
11
12
|
/** Error tracking & performance monitoring */
|
|
12
|
-
observability:
|
|
13
|
+
observability: ObservabilityProvider;
|
|
13
14
|
/** Product analytics (optional) */
|
|
14
|
-
analytics?:
|
|
15
|
+
analytics?: Analytics;
|
|
15
16
|
/** Session error detection for auth redirect decisions */
|
|
16
17
|
sessionErrorDetector: SessionErrorDetector;
|
|
17
18
|
/** Network connectivity detection */
|
|
@@ -21,17 +22,23 @@ export interface SyncEngineContext {
|
|
|
21
22
|
/** Backend mutation transport (GraphQL, REST, etc.) */
|
|
22
23
|
mutationExecutor: MutationExecutor;
|
|
23
24
|
/** Application-specific sync configuration */
|
|
24
|
-
config:
|
|
25
|
+
config: RuntimeConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Model metadata lookup. Injected by the client (it wires this from its
|
|
28
|
+
* `ModelRegistry`) so the settlement core can resolve a model's metadata
|
|
29
|
+
* without importing the registry — the dependency inversion that keeps the
|
|
30
|
+
* core free of the client's `Model` layer (ADR 0013).
|
|
31
|
+
*/
|
|
32
|
+
getModelMetadata: (name: string) => ModelMetadata | undefined;
|
|
25
33
|
}
|
|
26
|
-
|
|
27
|
-
export declare const noopLogger: SyncLogger;
|
|
34
|
+
export { noopLogger } from './transaction/logger.js';
|
|
28
35
|
/** No-op observability — silently discards all observability calls */
|
|
29
|
-
export declare const noopObservability:
|
|
36
|
+
export declare const noopObservability: ObservabilityProvider;
|
|
30
37
|
/** No-op analytics — silently discards all analytics calls */
|
|
31
|
-
export declare const noopAnalytics:
|
|
38
|
+
export declare const noopAnalytics: Analytics;
|
|
32
39
|
/** Browser-native online status provider */
|
|
33
40
|
export declare const browserOnlineStatus: OnlineStatusProvider;
|
|
34
|
-
/** Session error detector — delegates to
|
|
41
|
+
/** Session error detector — delegates to AbloSessionError so detection is
|
|
35
42
|
* code-aware (only genuine session/JWT expiry counts), not a blunt 401/403. */
|
|
36
43
|
export declare const defaultSessionErrorDetector: SessionErrorDetector;
|
|
37
44
|
/**
|
|
@@ -42,4 +49,4 @@ export declare const defaultSessionErrorDetector: SessionErrorDetector;
|
|
|
42
49
|
* never exercise FK ordering; consumers who do rely on it should finish
|
|
43
50
|
* wiring the engine before the first `create()` fires.
|
|
44
51
|
*/
|
|
45
|
-
export declare const emptyConfig:
|
|
52
|
+
export declare const emptyConfig: RuntimeConfig;
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* RuntimeContext — Runtime dependency container
|
|
3
3
|
*
|
|
4
4
|
* All SDK classes receive this context at construction time.
|
|
5
5
|
* It bundles every injectable dependency so constructors stay clean.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { AbloSessionError } from './transaction/errors.js';
|
|
8
8
|
// ─────────────────────────────────────────────
|
|
9
9
|
// No-op defaults for optional dependencies
|
|
10
10
|
// ─────────────────────────────────────────────
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
11
|
+
// Re-exported, not redeclared. `@ablo/transaction/logger` owns the no-op that
|
|
12
|
+
// sits beside the `Logger` port. This package held a second, behaviourally
|
|
13
|
+
// identical copy, and half of it imported the canonical one while the other
|
|
14
|
+
// half imported this — so any change of semantics there would have reached
|
|
15
|
+
// only one side, invisibly, because the identifier reads the same at both.
|
|
16
|
+
export { noopLogger } from './transaction/logger.js';
|
|
18
17
|
/** No-op observability — silently discards all observability calls */
|
|
19
18
|
export const noopObservability = {
|
|
20
19
|
setContext() { },
|
|
21
20
|
setConnectionState() { },
|
|
22
21
|
breadcrumb() { },
|
|
23
22
|
captureRollback() { },
|
|
24
|
-
|
|
23
|
+
captureMutationFailure() { },
|
|
25
24
|
captureBootstrapFailure() { },
|
|
26
25
|
captureReconciliation() { },
|
|
27
26
|
captureDeltaRetryExhausted() { },
|
|
@@ -51,7 +50,7 @@ export const browserOnlineStatus = {
|
|
|
51
50
|
return !(typeof navigator !== 'undefined' && navigator.onLine === false);
|
|
52
51
|
},
|
|
53
52
|
};
|
|
54
|
-
/** Session error detector — delegates to
|
|
53
|
+
/** Session error detector — delegates to AbloSessionError so detection is
|
|
55
54
|
* code-aware (only genuine session/JWT expiry counts), not a blunt 401/403. */
|
|
56
55
|
export const defaultSessionErrorDetector = {
|
|
57
56
|
isSessionError(error) {
|
|
@@ -61,7 +60,7 @@ export const defaultSessionErrorDetector = {
|
|
|
61
60
|
return false;
|
|
62
61
|
},
|
|
63
62
|
isSessionErrorResponse(status, body) {
|
|
64
|
-
return
|
|
63
|
+
return AbloSessionError.isSessionErrorResponse(status, body);
|
|
65
64
|
},
|
|
66
65
|
};
|
|
67
66
|
/**
|
package/dist/SyncClient.d.ts
CHANGED
|
@@ -4,18 +4,19 @@
|
|
|
4
4
|
* optimistic changes, holds them while the client is offline, sends them to
|
|
5
5
|
* the server when connectivity returns, and resolves conflicts when the
|
|
6
6
|
* server's version of a row disagrees with the local one. It sits between the
|
|
7
|
-
* reactive object pool and the {@link
|
|
7
|
+
* reactive object pool and the {@link MutationQueue} that delivers writes
|
|
8
8
|
* over the network.
|
|
9
9
|
*/
|
|
10
10
|
import { InstanceCache } from './InstanceCache.js';
|
|
11
11
|
import { Model } from './Model.js';
|
|
12
12
|
import { EventEmitter } from 'events';
|
|
13
|
-
import {
|
|
14
|
-
import { type
|
|
13
|
+
import { MutationQueue } from './transactions/mutations/MutationQueue.js';
|
|
14
|
+
import { type CommitLatencySample } from './transactions/mutations/commitLatency.js';
|
|
15
|
+
import { type UnconfirmedWritesMetrics } from './transactions/mutations/UnconfirmedWrites.js';
|
|
15
16
|
import type { Database } from './Database.js';
|
|
16
17
|
import type { WriteOptions } from './interfaces/index.js';
|
|
17
|
-
import {
|
|
18
|
-
import type { DurableWriteStore } from './transactions/durableWriteStore.js';
|
|
18
|
+
import { LogPosition } from './transaction/logPosition.js';
|
|
19
|
+
import type { DurableWriteStore } from './transactions/mutations/durableWriteStore.js';
|
|
19
20
|
interface SyncObserver {
|
|
20
21
|
onSync?: (event: SyncEvent) => void;
|
|
21
22
|
}
|
|
@@ -71,11 +72,11 @@ export declare class SyncClient extends EventEmitter {
|
|
|
71
72
|
private isDisposed;
|
|
72
73
|
/**
|
|
73
74
|
* The client's position in the global delta order, held as the single
|
|
74
|
-
* canonical {@link
|
|
75
|
+
* canonical {@link LogPosition} instance. The store advances `applied` and
|
|
75
76
|
* `persisted` as deltas land, the queue advances `acked` on commit
|
|
76
77
|
* responses, and snapshots and claims read `readFloor`.
|
|
77
78
|
*/
|
|
78
|
-
readonly position:
|
|
79
|
+
readonly position: LogPosition;
|
|
79
80
|
constructor(objectPool: InstanceCache, database: Database, commitOutbox?: DurableWriteStore, commitOutboxNamespace?: string);
|
|
80
81
|
/**
|
|
81
82
|
* Setup network monitoring handlers
|
|
@@ -98,13 +99,13 @@ export declare class SyncClient extends EventEmitter {
|
|
|
98
99
|
* discard the optimistic state silently.
|
|
99
100
|
*
|
|
100
101
|
* Treating both paths the same caused the deletion-flicker bug: every
|
|
101
|
-
* cancelled update on a multi-
|
|
102
|
+
* cancelled update on a multi-child record fired a per-model observer
|
|
102
103
|
* event and a `[SyncClient.rollback]` warn, producing N renders and N
|
|
103
104
|
* spam log lines for one user-initiated delete.
|
|
104
105
|
*/
|
|
105
106
|
private setupTransactionRollbackHandling;
|
|
106
107
|
/**
|
|
107
|
-
* Forward reconciliation requests from the {@link
|
|
108
|
+
* Forward reconciliation requests from the {@link MutationQueue} to the
|
|
108
109
|
* sync layer. When delta confirmation times out, the queue emits
|
|
109
110
|
* `reconciliation:needed` instead of rolling back, so optimistic state the
|
|
110
111
|
* server may already have committed is never destroyed.
|
|
@@ -145,7 +146,7 @@ export declare class SyncClient extends EventEmitter {
|
|
|
145
146
|
* 2. **Required-field gate** — if the row is missing any field listed
|
|
146
147
|
* in the model's `requiredFields`, return `null` so the caller
|
|
147
148
|
* skips this record. Used for FK columns whose absence renders the
|
|
148
|
-
* row unrecoverable (e.g. a
|
|
149
|
+
* row unrecoverable (e.g. a Block with no sectionId).
|
|
149
150
|
*
|
|
150
151
|
* The engine itself is product-neutral: model identity (which fields
|
|
151
152
|
* to back-fill, which absences are fatal) lives entirely in the
|
|
@@ -196,10 +197,10 @@ export declare class SyncClient extends EventEmitter {
|
|
|
196
197
|
/**
|
|
197
198
|
* Update existing model with pre-computed changes.
|
|
198
199
|
* Used by saveManyOptimized when incoming models have empty change-tracking
|
|
199
|
-
* (e.g. freshly constructed
|
|
200
|
+
* (e.g. freshly constructed cell models from a bulk document decomposition).
|
|
200
201
|
*/
|
|
201
202
|
updateWithChanges(model: Model, changes?: Record<string, unknown>): void;
|
|
202
|
-
/** Expose the GraphQL client for atomic mutations (e.g.,
|
|
203
|
+
/** Expose the GraphQL client for atomic mutations (e.g., createSectionWithBlocks).
|
|
203
204
|
* Used by SyncedStore for operations that bypass the transaction queue
|
|
204
205
|
* but still need optimistic pool updates at the sync layer. */
|
|
205
206
|
get gql(): import("./interfaces/index.js").MutationExecutor;
|
|
@@ -207,12 +208,12 @@ export declare class SyncClient extends EventEmitter {
|
|
|
207
208
|
delete(model: Model, options?: WriteOptions): void;
|
|
208
209
|
/**
|
|
209
210
|
* Clear all pending mutations for a specific model
|
|
210
|
-
* Called before deletion to prevent "
|
|
211
|
+
* Called before deletion to prevent "record not found" errors on the server
|
|
211
212
|
*/
|
|
212
213
|
private clearPendingMutationsForModel;
|
|
213
214
|
/**
|
|
214
215
|
* Upload a file and create its attachment record. The upload runs through
|
|
215
|
-
* the {@link
|
|
216
|
+
* the {@link MutationQueue}, and a model is built from the server's
|
|
216
217
|
* response and added to the pool.
|
|
217
218
|
*/
|
|
218
219
|
uploadFile(file: File, options: {
|
|
@@ -246,7 +247,7 @@ export declare class SyncClient extends EventEmitter {
|
|
|
246
247
|
* IndexedDB persistence and the server push are deferred to a microtask, so
|
|
247
248
|
* many pushes within the same tick collapse into a single serialization and
|
|
248
249
|
* a single process call. Without the deferral, queueing a hundred mutations
|
|
249
|
-
* at once — a large paste, a document import, bulk
|
|
250
|
+
* at once — a large paste, a document import, bulk row creation — would
|
|
250
251
|
* reserialize the whole growing queue a hundred times, an O(N²) cost in
|
|
251
252
|
* `model.toJSON()`.
|
|
252
253
|
*
|
|
@@ -275,11 +276,11 @@ export declare class SyncClient extends EventEmitter {
|
|
|
275
276
|
*
|
|
276
277
|
* Best Practice: Only sync models that still exist locally (local-first principle)
|
|
277
278
|
* - If a model was deleted locally → skip any pending updates/creates for it
|
|
278
|
-
* - This prevents "
|
|
279
|
+
* - This prevents "record not found" errors from fast copy-paste-delete workflows
|
|
279
280
|
*/
|
|
280
281
|
processPendingMutations(): Promise<void>;
|
|
281
282
|
/**
|
|
282
|
-
* Stage mutation to
|
|
283
|
+
* Stage mutation to MutationQueue - mutations in same tick are batched via microtask
|
|
283
284
|
*
|
|
284
285
|
* @param mutation.capturedChanges - Pre-captured changes to use instead of re-reading from model
|
|
285
286
|
*/
|
|
@@ -347,7 +348,7 @@ export declare class SyncClient extends EventEmitter {
|
|
|
347
348
|
*/
|
|
348
349
|
dispose(): void;
|
|
349
350
|
/**
|
|
350
|
-
* Notify the {@link
|
|
351
|
+
* Notify the {@link MutationQueue} of an incoming delta so it can confirm
|
|
351
352
|
* hosted writes by sync-id threshold and queued forwards by their echoed
|
|
352
353
|
* source-batch correlation id.
|
|
353
354
|
* @param syncId - The sync id of the received delta.
|
|
@@ -360,15 +361,15 @@ export declare class SyncClient extends EventEmitter {
|
|
|
360
361
|
* deletion. The store calls this when a delete delta arrives for a parent,
|
|
361
362
|
* cancelling any queued writes on children that reference it.
|
|
362
363
|
*
|
|
363
|
-
* @param childModelName - The child model type (for example, `
|
|
364
|
-
* @param foreignKey - The foreign-key property name (for example, `
|
|
364
|
+
* @param childModelName - The child model type (for example, `Block`).
|
|
365
|
+
* @param foreignKey - The foreign-key property name (for example, `sectionId`).
|
|
365
366
|
* @param parentId - The id of the deleted parent.
|
|
366
367
|
* @returns The number of transactions cancelled.
|
|
367
368
|
*/
|
|
368
369
|
cancelTransactionsByForeignKey(childModelName: string, foreignKey: string, parentId: string): number;
|
|
369
370
|
/**
|
|
370
371
|
* Wait for a transaction to be confirmed by its delta echo. Delegates to the
|
|
371
|
-
* {@link
|
|
372
|
+
* {@link MutationQueue}, which handles the confirmation timeout.
|
|
372
373
|
*/
|
|
373
374
|
waitForDeltaConfirmation(transactionId: string): Promise<void>;
|
|
374
375
|
/**
|
|
@@ -386,7 +387,7 @@ export declare class SyncClient extends EventEmitter {
|
|
|
386
387
|
objectPoolStats: ReturnType<InstanceCache['getStats']>;
|
|
387
388
|
};
|
|
388
389
|
/**
|
|
389
|
-
* Get pending transaction count from
|
|
390
|
+
* Get pending transaction count from MutationQueue
|
|
390
391
|
* Used by SyncedStore to compute hasUnsyncedChanges
|
|
391
392
|
*/
|
|
392
393
|
getPendingTransactionCount(): number;
|
|
@@ -397,7 +398,7 @@ export declare class SyncClient extends EventEmitter {
|
|
|
397
398
|
onTransactionEvent(event: 'created' | 'completed' | 'failed', callback: () => void): () => void;
|
|
398
399
|
/**
|
|
399
400
|
* Subscribe to mutation failures with the full payload. Mirrors the
|
|
400
|
-
* underlying
|
|
401
|
+
* underlying MutationQueue 'transaction:failed' shape so consumers
|
|
401
402
|
* can render typed UI (toast keyed by `AbloError.type`, route-level
|
|
402
403
|
* "this entity reverted" boundaries, telemetry).
|
|
403
404
|
*
|
|
@@ -407,28 +408,37 @@ export declare class SyncClient extends EventEmitter {
|
|
|
407
408
|
* this typed listener drives user-visible surfaces.
|
|
408
409
|
*/
|
|
409
410
|
onMutationFailure(listener: (payload: {
|
|
410
|
-
transaction: import('./transactions/
|
|
411
|
+
transaction: import('./transactions/mutations/MutationQueue.js').QueuedMutation;
|
|
411
412
|
error: Error;
|
|
412
413
|
permanent?: boolean;
|
|
413
414
|
}) => void): () => void;
|
|
414
415
|
/**
|
|
415
|
-
* Subscribe to
|
|
416
|
+
* Subscribe to commit round-trip latency, split into the local seal and the
|
|
417
|
+
* remote acknowledgement. Fires once per completed commit.
|
|
418
|
+
*
|
|
419
|
+
* Taps the {@link MutationQueue} emitter for the same reason
|
|
420
|
+
* {@link onMutationFailure} does: the commit lifecycle events originate
|
|
421
|
+
* there and the SyncClient's own emitter never rebroadcasts them.
|
|
422
|
+
*/
|
|
423
|
+
onCommitLatency(listener: (sample: CommitLatencySample) => void): () => void;
|
|
424
|
+
/**
|
|
425
|
+
* Subscribe to local transaction creation with the full {@link QueuedMutation}
|
|
416
426
|
* payload (`type`, `modelName`, `modelId`, `data`, `previousData`). This is
|
|
417
427
|
* the feed the store's local-mutation subscription taps for undo recording.
|
|
418
428
|
*
|
|
419
|
-
* It subscribes to the {@link
|
|
429
|
+
* It subscribes to the {@link MutationQueue}'s emitter directly, since
|
|
420
430
|
* that is the only emitter that fires `transaction:created`. The SyncClient's
|
|
421
431
|
* own emitter (reached through {@link subscribe}) never rebroadcasts that
|
|
422
432
|
* event, so routing undo through `subscribe('transaction:created')` would
|
|
423
433
|
* record nothing. {@link onMutationFailure} taps the queue for the same
|
|
424
434
|
* reason.
|
|
425
435
|
*/
|
|
426
|
-
onLocalTransaction(listener: (tx: import('./transactions/
|
|
436
|
+
onLocalTransaction(listener: (tx: import('./transactions/mutations/MutationQueue.js').QueuedMutation) => void): () => void;
|
|
427
437
|
/**
|
|
428
438
|
* Wait for the latest in-flight transaction for (modelName, modelId)
|
|
429
439
|
* to be confirmed by the server, or reject if it's rolled back.
|
|
430
440
|
* Resolves immediately when no transaction is in flight — see
|
|
431
|
-
* `
|
|
441
|
+
* `MutationQueue.confirmationFor` for the lookup contract.
|
|
432
442
|
*
|
|
433
443
|
* Distinct from `waitForDeltaConfirmation(transactionId)` which keys
|
|
434
444
|
* off a known tx id; this variant is for call sites that hold a
|
|
@@ -441,7 +451,7 @@ export declare class SyncClient extends EventEmitter {
|
|
|
441
451
|
getDebugInfo(): {
|
|
442
452
|
connectionState: "connected" | "disconnected" | "connecting";
|
|
443
453
|
pendingMutationsCount: number;
|
|
444
|
-
|
|
454
|
+
mutationQueue: {
|
|
445
455
|
lastSeenSyncId: number;
|
|
446
456
|
awaitingDeltaCount: number;
|
|
447
457
|
awaitingDeltaTransactions: {
|
|
@@ -478,7 +488,7 @@ export declare class SyncClient extends EventEmitter {
|
|
|
478
488
|
* Mark a local transaction as optimistically applied. The matching
|
|
479
489
|
* server delta (when it arrives with the same `transactionId`) will
|
|
480
490
|
* be recognized as an echo and skip the pool mutation. Called
|
|
481
|
-
* automatically by `
|
|
491
|
+
* automatically by `MutationQueue` when a transaction is staged;
|
|
482
492
|
* exposed publicly so tests can drive the API directly.
|
|
483
493
|
*/
|
|
484
494
|
markTransactionPending(transactionId: string): void;
|
|
@@ -490,14 +500,14 @@ export declare class SyncClient extends EventEmitter {
|
|
|
490
500
|
*/
|
|
491
501
|
getEchoMetrics(): Readonly<UnconfirmedWritesMetrics>;
|
|
492
502
|
/**
|
|
493
|
-
* Package-internal accessor for the {@link
|
|
503
|
+
* Package-internal accessor for the {@link MutationQueue}. Used by
|
|
494
504
|
* `Ablo.commits.create()` to route raw multi-operation envelopes through the
|
|
495
505
|
* same retry-on-reconnect lane as the model proxy path, and by tests to
|
|
496
506
|
* exercise the queue's interaction with {@link markTransactionPending} on the
|
|
497
507
|
* real instance the SyncClient subscribes to. It is not re-exported to SDK
|
|
498
508
|
* consumers; `Ablo` is the public surface.
|
|
499
509
|
*/
|
|
500
|
-
|
|
510
|
+
getMutationQueue(): MutationQueue;
|
|
501
511
|
applyDeltaBatchToPool(dbResults: {
|
|
502
512
|
action: string;
|
|
503
513
|
modelName: string;
|