@abloatai/ablo 0.35.0 → 0.37.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 -2
- package/CHANGELOG.md +71 -1929
- package/NOTICE +2 -2
- package/README.md +23 -532
- package/assets/banner.png +0 -0
- package/dist/auth.d.ts +2 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +2 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -0
- package/dist/coordination.d.ts +2 -0
- package/dist/coordination.d.ts.map +1 -0
- package/dist/coordination.js +2 -0
- package/dist/coordination.js.map +1 -0
- package/dist/index.d.ts +3 -112
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -161
- package/dist/index.js.map +1 -0
- package/dist/react.d.ts +4 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +3 -0
- package/dist/react.js.map +1 -0
- package/dist/schema.d.ts +2 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -0
- package/dist/source-conformance.d.ts +2 -0
- package/dist/source-conformance.d.ts.map +1 -0
- package/dist/source-conformance.js +2 -0
- package/dist/source-conformance.js.map +1 -0
- package/dist/source-drizzle.d.ts +2 -0
- package/dist/source-drizzle.d.ts.map +1 -0
- package/dist/source-drizzle.js +2 -0
- package/dist/source-drizzle.js.map +1 -0
- package/dist/source-kysely.d.ts +2 -0
- package/dist/source-kysely.d.ts.map +1 -0
- package/dist/source-kysely.js +2 -0
- package/dist/source-kysely.js.map +1 -0
- package/dist/source-next.d.ts +2 -0
- package/dist/source-next.d.ts.map +1 -0
- package/dist/source-next.js +2 -0
- package/dist/source-next.js.map +1 -0
- package/dist/source.d.ts +2 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +2 -0
- package/dist/source.js.map +1 -0
- package/dist/wire.d.ts +2 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +2 -0
- package/dist/wire.js.map +1 -0
- package/docs/agents.md +2 -2
- package/docs/api-keys.md +13 -12
- package/docs/api.md +15 -53
- package/docs/audit.md +4 -3
- package/docs/cli.md +11 -11
- package/docs/client-behavior.md +9 -9
- package/docs/concurrency-convention.md +28 -42
- package/docs/coordination.md +228 -86
- package/docs/data-sources.md +5 -5
- package/docs/debugging.md +34 -12
- package/docs/deployment.md +8 -8
- package/docs/examples/agent-human.md +4 -4
- package/docs/examples/ai-sdk-tool.md +1 -1
- package/docs/examples/existing-python-backend.md +15 -4
- package/docs/examples/nextjs.md +27 -6
- package/docs/examples/scoped-agent.md +3 -3
- package/docs/examples/server-agent.md +2 -2
- package/docs/groups.md +57 -3
- package/docs/guarantees.md +37 -10
- package/docs/how-it-works.md +32 -8
- package/docs/idempotency.md +6 -6
- package/docs/identity.md +24 -24
- package/docs/index.md +8 -8
- package/docs/integration-guide.md +38 -16
- package/docs/internal/README.md +18 -0
- package/docs/internal/agent-fleet-coordination-design.md +171 -0
- package/docs/internal/agent-orchestration.md +58 -0
- package/docs/internal/commit-identifiers.md +91 -0
- package/docs/internal/concurrency-open-decisions.md +37 -0
- package/docs/internal/data-source-reverse-channel.md +150 -0
- package/docs/internal/per-field-conflict-detection.md +165 -0
- package/docs/internal/postgres-replication.md +64 -0
- package/docs/internal/serializable-schema.md +119 -0
- package/docs/internal/structure.md +32 -0
- package/docs/mcp.md +9 -9
- package/docs/migration.md +37 -18
- package/docs/projects.md +1 -1
- package/docs/quickstart.md +2 -2
- package/docs/react.md +24 -13
- package/docs/schema-contract.md +3 -3
- package/docs/sessions.md +91 -37
- package/docs/webhooks.md +9 -9
- package/examples/README.md +2 -2
- package/examples/data-source/README.md +1 -1
- package/examples/data-source/ablo-driver.ts +1 -1
- package/examples/data-source/customer-server.ts +1 -1
- package/examples/data-source/run.ts +1 -1
- package/examples/data-source/schema.ts +1 -1
- package/examples/quickstart.ts +2 -2
- package/llms.txt +12 -12
- package/package.json +64 -174
- package/dist/BaseSyncedStore.d.ts +0 -823
- package/dist/BaseSyncedStore.js +0 -1955
- package/dist/Database.d.ts +0 -335
- package/dist/Database.js +0 -1500
- package/dist/InstanceCache.d.ts +0 -233
- package/dist/InstanceCache.js +0 -1164
- package/dist/LazyReferenceCollection.d.ts +0 -177
- package/dist/LazyReferenceCollection.js +0 -461
- package/dist/Model.d.ts +0 -444
- package/dist/Model.js +0 -909
- package/dist/ModelRegistry.d.ts +0 -221
- package/dist/ModelRegistry.js +0 -537
- package/dist/NetworkMonitor.d.ts +0 -26
- package/dist/NetworkMonitor.js +0 -77
- package/dist/RuntimeContext.d.ts +0 -52
- package/dist/RuntimeContext.js +0 -80
- package/dist/SyncClient.d.ts +0 -551
- package/dist/SyncClient.js +0 -2199
- package/dist/adapters/alwaysOnline.d.ts +0 -14
- package/dist/adapters/alwaysOnline.js +0 -17
- package/dist/adapters/inMemoryStorage.d.ts +0 -31
- package/dist/adapters/inMemoryStorage.js +0 -110
- package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
- package/dist/ai-sdk/coordinatedTool.js +0 -134
- package/dist/ai-sdk/coordinationContext.d.ts +0 -46
- package/dist/ai-sdk/coordinationContext.js +0 -106
- package/dist/ai-sdk/index.d.ts +0 -121
- package/dist/ai-sdk/index.js +0 -121
- package/dist/ai-sdk/wrap.d.ts +0 -65
- package/dist/ai-sdk/wrap.js +0 -39
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js +0 -8
- package/dist/batching/index.d.ts +0 -55
- package/dist/batching/index.js +0 -147
- package/dist/cli.cjs +0 -288600
- package/dist/client/Ablo.d.ts +0 -231
- package/dist/client/Ablo.js +0 -149
- package/dist/client/abloClient.d.ts +0 -309
- package/dist/client/abloClient.js +0 -13
- package/dist/client/clientPrelude.d.ts +0 -52
- package/dist/client/clientPrelude.js +0 -60
- package/dist/client/consoleLogger.d.ts +0 -35
- package/dist/client/consoleLogger.js +0 -44
- package/dist/client/coreClient.d.ts +0 -60
- package/dist/client/coreClient.js +0 -118
- package/dist/client/createInternalComponents.d.ts +0 -46
- package/dist/client/createInternalComponents.js +0 -92
- package/dist/client/createModelProxy.d.ts +0 -228
- package/dist/client/createModelProxy.js +0 -818
- package/dist/client/humans.d.ts +0 -48
- package/dist/client/humans.js +0 -52
- package/dist/client/modelRegistration.d.ts +0 -10
- package/dist/client/modelRegistration.js +0 -312
- package/dist/client/options.d.ts +0 -461
- package/dist/client/options.js +0 -7
- package/dist/client/reactiveEngine.d.ts +0 -48
- package/dist/client/reactiveEngine.js +0 -910
- package/dist/client/resourceTypes.d.ts +0 -12
- package/dist/client/resourceTypes.js +0 -10
- package/dist/client/schemaConfig.d.ts +0 -44
- package/dist/client/schemaConfig.js +0 -185
- package/dist/client/validateAbloOptions.d.ts +0 -42
- package/dist/client/validateAbloOptions.js +0 -43
- package/dist/client/wsMutationExecutor.d.ts +0 -27
- package/dist/client/wsMutationExecutor.js +0 -72
- package/dist/context.d.ts +0 -29
- package/dist/context.js +0 -58
- package/dist/coordination/ClaimLog.d.ts +0 -26
- package/dist/coordination/ClaimLog.js +0 -32
- package/dist/coordination/index.d.ts +0 -1
- package/dist/coordination/index.js +0 -8
- package/dist/core/DatabaseManager.d.ts +0 -105
- package/dist/core/DatabaseManager.js +0 -387
- package/dist/core/QueryProcessor.d.ts +0 -75
- package/dist/core/QueryProcessor.js +0 -255
- package/dist/core/QueryView.d.ts +0 -79
- package/dist/core/QueryView.js +0 -218
- package/dist/core/StoreManager.d.ts +0 -112
- package/dist/core/StoreManager.js +0 -302
- package/dist/core/ViewRegistry.d.ts +0 -20
- package/dist/core/ViewRegistry.js +0 -55
- package/dist/core/index.d.ts +0 -33
- package/dist/core/index.js +0 -48
- package/dist/core/openIDBWithTimeout.d.ts +0 -65
- package/dist/core/openIDBWithTimeout.js +0 -153
- package/dist/core/queryUtils.d.ts +0 -45
- package/dist/core/queryUtils.js +0 -69
- package/dist/core/storeContract.d.ts +0 -145
- package/dist/core/storeContract.js +0 -12
- package/dist/docs/catalog.d.ts +0 -72
- package/dist/docs/catalog.js +0 -227
- package/dist/docs/index.d.ts +0 -10
- package/dist/docs/index.js +0 -10
- package/dist/environment.d.ts +0 -1
- package/dist/environment.js +0 -8
- package/dist/interfaces/index.d.ts +0 -311
- package/dist/interfaces/index.js +0 -9
- package/dist/keys/index.d.ts +0 -1
- package/dist/keys/index.js +0 -8
- package/dist/mutators/RecordingMutation.d.ts +0 -36
- package/dist/mutators/RecordingMutation.js +0 -182
- package/dist/mutators/Transaction.d.ts +0 -40
- package/dist/mutators/Transaction.js +0 -58
- package/dist/mutators/UndoManager.d.ts +0 -258
- package/dist/mutators/UndoManager.js +0 -658
- package/dist/mutators/defineMutators.d.ts +0 -60
- package/dist/mutators/defineMutators.js +0 -18
- package/dist/mutators/inverseOp.d.ts +0 -126
- package/dist/mutators/inverseOp.js +0 -71
- package/dist/mutators/mutateActions.d.ts +0 -45
- package/dist/mutators/mutateActions.js +0 -105
- package/dist/mutators/readerActions.d.ts +0 -33
- package/dist/mutators/readerActions.js +0 -57
- package/dist/mutators/undoApply.d.ts +0 -51
- package/dist/mutators/undoApply.js +0 -117
- package/dist/policy/index.d.ts +0 -21
- package/dist/policy/index.js +0 -20
- package/dist/query/client.d.ts +0 -61
- package/dist/query/client.js +0 -137
- package/dist/query/types.d.ts +0 -85
- package/dist/query/types.js +0 -16
- package/dist/react/AbloProvider.d.ts +0 -230
- package/dist/react/AbloProvider.js +0 -455
- package/dist/react/ClientSideSuspense.d.ts +0 -36
- package/dist/react/ClientSideSuspense.js +0 -17
- package/dist/react/DefaultFallback.d.ts +0 -24
- package/dist/react/DefaultFallback.js +0 -43
- package/dist/react/context.d.ts +0 -55
- package/dist/react/context.js +0 -29
- package/dist/react/index.d.ts +0 -61
- package/dist/react/index.js +0 -66
- package/dist/react/internalContext.d.ts +0 -33
- package/dist/react/internalContext.js +0 -3
- package/dist/react/useAblo.d.ts +0 -75
- package/dist/react/useAblo.js +0 -102
- package/dist/react/useCurrentUserId.d.ts +0 -22
- package/dist/react/useCurrentUserId.js +0 -34
- package/dist/react/useErrorListener.d.ts +0 -20
- package/dist/react/useErrorListener.js +0 -38
- package/dist/react/useMutationFailureListener.d.ts +0 -26
- package/dist/react/useMutationFailureListener.js +0 -38
- package/dist/react/useMutators.d.ts +0 -56
- package/dist/react/useMutators.js +0 -84
- package/dist/react/useReactive.d.ts +0 -35
- package/dist/react/useReactive.js +0 -123
- package/dist/react/useSyncStatus.d.ts +0 -59
- package/dist/react/useSyncStatus.js +0 -76
- package/dist/react/useUndoScope.d.ts +0 -34
- package/dist/react/useUndoScope.js +0 -81
- package/dist/schema/coordination.d.ts +0 -112
- package/dist/schema/coordination.js +0 -129
- package/dist/schema/ddl.d.ts +0 -97
- package/dist/schema/ddl.js +0 -491
- package/dist/schema/ddlLock.d.ts +0 -35
- package/dist/schema/ddlLock.js +0 -46
- package/dist/schema/diff.d.ts +0 -225
- package/dist/schema/diff.js +0 -289
- package/dist/schema/generate.d.ts +0 -19
- package/dist/schema/generate.js +0 -86
- package/dist/schema/index.d.ts +0 -41
- package/dist/schema/index.js +0 -76
- package/dist/schema/queries.d.ts +0 -201
- package/dist/schema/queries.js +0 -144
- package/dist/schema/select.d.ts +0 -40
- package/dist/schema/select.js +0 -87
- package/dist/schema/serialize.d.ts +0 -115
- package/dist/schema/serialize.js +0 -262
- package/dist/schema/sugar.d.ts +0 -109
- package/dist/schema/sugar.js +0 -83
- package/dist/schema/syncDeltaRow.d.ts +0 -6
- package/dist/schema/syncDeltaRow.js +0 -6
- package/dist/server/adapter.d.ts +0 -173
- package/dist/server/adapter.js +0 -18
- package/dist/server/commit.d.ts +0 -107
- package/dist/server/commit.js +0 -1
- package/dist/server/index.d.ts +0 -14
- package/dist/server/index.js +0 -2
- package/dist/server/readConfig.d.ts +0 -80
- package/dist/server/readConfig.js +0 -8
- package/dist/server/storageMode.d.ts +0 -23
- package/dist/server/storageMode.js +0 -17
- package/dist/source/adapter.d.ts +0 -81
- package/dist/source/adapter.js +0 -22
- package/dist/source/adapters/drizzle.d.ts +0 -48
- package/dist/source/adapters/drizzle.js +0 -219
- package/dist/source/adapters/kysely.d.ts +0 -42
- package/dist/source/adapters/kysely.js +0 -205
- package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
- package/dist/source/adapters/kyselyMutationCore.js +0 -125
- package/dist/source/adapters/memory.d.ts +0 -13
- package/dist/source/adapters/memory.js +0 -130
- package/dist/source/adapters/prisma.d.ts +0 -63
- package/dist/source/adapters/prisma.js +0 -202
- package/dist/source/conformance.d.ts +0 -37
- package/dist/source/conformance.js +0 -215
- package/dist/source/connector.d.ts +0 -95
- package/dist/source/connector.js +0 -266
- package/dist/source/connectorProtocol.d.ts +0 -154
- package/dist/source/connectorProtocol.js +0 -163
- package/dist/source/contract.d.ts +0 -195
- package/dist/source/contract.js +0 -164
- package/dist/source/factory.d.ts +0 -92
- package/dist/source/factory.js +0 -286
- package/dist/source/footprint.d.ts +0 -111
- package/dist/source/footprint.js +0 -0
- package/dist/source/idempotency.d.ts +0 -61
- package/dist/source/idempotency.js +0 -144
- package/dist/source/index.d.ts +0 -23
- package/dist/source/index.js +0 -30
- package/dist/source/migrations.d.ts +0 -21
- package/dist/source/migrations.js +0 -103
- package/dist/source/next.d.ts +0 -32
- package/dist/source/next.js +0 -25
- package/dist/source/pushQueue.d.ts +0 -134
- package/dist/source/pushQueue.js +0 -256
- package/dist/source/signing.d.ts +0 -92
- package/dist/source/signing.js +0 -162
- package/dist/source/types.d.ts +0 -401
- package/dist/source/types.js +0 -59
- package/dist/stores/ObjectStore.d.ts +0 -115
- package/dist/stores/ObjectStore.js +0 -393
- package/dist/stores/ObjectStoreContract.d.ts +0 -38
- package/dist/stores/ObjectStoreContract.js +0 -1
- package/dist/stores/SyncActionStore.d.ts +0 -97
- package/dist/stores/SyncActionStore.js +0 -504
- package/dist/stores/syncAction.d.ts +0 -26
- package/dist/stores/syncAction.js +0 -16
- package/dist/surface.d.ts +0 -36
- package/dist/surface.js +0 -75
- package/dist/sync/BootstrapFetcher.d.ts +0 -280
- package/dist/sync/BootstrapFetcher.js +0 -962
- package/dist/sync/ConnectionManager.d.ts +0 -8
- package/dist/sync/ConnectionManager.js +0 -8
- package/dist/sync/OnDemandLoader.d.ts +0 -228
- package/dist/sync/OnDemandLoader.js +0 -742
- package/dist/sync/SubscriptionManager.d.ts +0 -159
- package/dist/sync/SubscriptionManager.js +0 -243
- package/dist/sync/SyncWebSocket.d.ts +0 -173
- package/dist/sync/SyncWebSocket.js +0 -438
- package/dist/sync/awaitClaimGrant.d.ts +0 -6
- package/dist/sync/awaitClaimGrant.js +0 -6
- package/dist/sync/bootstrapApply.d.ts +0 -70
- package/dist/sync/bootstrapApply.js +0 -73
- package/dist/sync/commitFrames.d.ts +0 -8
- package/dist/sync/commitFrames.js +0 -8
- package/dist/sync/contextPorts.d.ts +0 -18
- package/dist/sync/contextPorts.js +0 -31
- package/dist/sync/createClaimStream.d.ts +0 -7
- package/dist/sync/createClaimStream.js +0 -7
- package/dist/sync/createPresenceStream.d.ts +0 -69
- package/dist/sync/createPresenceStream.js +0 -200
- package/dist/sync/createSnapshot.d.ts +0 -29
- package/dist/sync/createSnapshot.js +0 -118
- package/dist/sync/credentialLifecycle.d.ts +0 -7
- package/dist/sync/credentialLifecycle.js +0 -7
- package/dist/sync/deltaPipeline.d.ts +0 -113
- package/dist/sync/deltaPipeline.js +0 -261
- package/dist/sync/groupChange.d.ts +0 -113
- package/dist/sync/groupChange.js +0 -242
- package/dist/sync/participants.d.ts +0 -115
- package/dist/sync/participants.js +0 -344
- package/dist/sync/persistedPrefix.d.ts +0 -12
- package/dist/sync/persistedPrefix.js +0 -22
- package/dist/sync/schemaDrift.d.ts +0 -55
- package/dist/sync/schemaDrift.js +0 -53
- package/dist/sync/schemas.d.ts +0 -70
- package/dist/sync/schemas.js +0 -94
- package/dist/sync/syncCursor.d.ts +0 -40
- package/dist/sync/syncCursor.js +0 -55
- package/dist/sync/syncPlan.d.ts +0 -54
- package/dist/sync/syncPlan.js +0 -50
- package/dist/sync/wsFrameHandlers.d.ts +0 -8
- package/dist/sync/wsFrameHandlers.js +0 -8
- package/dist/testing/fixtures/bootstrap.d.ts +0 -49
- package/dist/testing/fixtures/bootstrap.js +0 -59
- package/dist/testing/fixtures/deltas.d.ts +0 -83
- package/dist/testing/fixtures/deltas.js +0 -136
- package/dist/testing/fixtures/httpResponses.d.ts +0 -70
- package/dist/testing/fixtures/httpResponses.js +0 -90
- package/dist/testing/fixtures/models.d.ts +0 -83
- package/dist/testing/fixtures/models.js +0 -272
- package/dist/testing/helpers/reactWrapper.d.ts +0 -69
- package/dist/testing/helpers/reactWrapper.js +0 -67
- package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
- package/dist/testing/helpers/syncEngineHarness.js +0 -73
- package/dist/testing/helpers/wait.d.ts +0 -30
- package/dist/testing/helpers/wait.js +0 -49
- package/dist/testing/index.d.ts +0 -23
- package/dist/testing/index.js +0 -33
- package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
- package/dist/testing/mocks/FakeDatabase.js +0 -10
- package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
- package/dist/testing/mocks/MockMutationExecutor.js +0 -186
- package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
- package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
- package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
- package/dist/testing/mocks/MockSyncContext.js +0 -72
- package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
- package/dist/testing/mocks/MockSyncStore.js +0 -171
- package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
- package/dist/testing/mocks/MockWebSocket.js +0 -118
- package/dist/transaction/ablo.d.ts +0 -88
- package/dist/transaction/ablo.js +0 -33
- package/dist/transaction/auth/apiKey.d.ts +0 -152
- package/dist/transaction/auth/apiKey.js +0 -419
- package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
- package/dist/transaction/auth/bootstrapScope.js +0 -1
- package/dist/transaction/auth/capability.d.ts +0 -177
- package/dist/transaction/auth/capability.js +0 -199
- package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
- package/dist/transaction/auth/credentialEndpoint.js +0 -86
- package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
- package/dist/transaction/auth/credentialPolicy.js +0 -125
- package/dist/transaction/auth/credentialSource.d.ts +0 -30
- package/dist/transaction/auth/credentialSource.js +0 -55
- package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
- package/dist/transaction/auth/hostedEndpoints.js +0 -21
- package/dist/transaction/auth/identity.d.ts +0 -55
- package/dist/transaction/auth/identity.js +0 -210
- package/dist/transaction/auth/index.d.ts +0 -162
- package/dist/transaction/auth/index.js +0 -304
- package/dist/transaction/auth/schemas.d.ts +0 -59
- package/dist/transaction/auth/schemas.js +0 -85
- package/dist/transaction/auth/sessionMint.d.ts +0 -28
- package/dist/transaction/auth/sessionMint.js +0 -85
- package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -49
- package/dist/transaction/coordination/awaitClaimGrant.js +0 -112
- package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -50
- package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -88
- package/dist/transaction/coordination/claimMeta.d.ts +0 -49
- package/dist/transaction/coordination/claimMeta.js +0 -52
- package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
- package/dist/transaction/coordination/createClaimStream.js +0 -475
- package/dist/transaction/coordination/events.d.ts +0 -74
- package/dist/transaction/coordination/events.js +0 -7
- package/dist/transaction/coordination/index.d.ts +0 -19
- package/dist/transaction/coordination/index.js +0 -44
- package/dist/transaction/coordination/locator.d.ts +0 -83
- package/dist/transaction/coordination/locator.js +0 -82
- package/dist/transaction/coordination/schema.d.ts +0 -1473
- package/dist/transaction/coordination/schema.js +0 -1013
- package/dist/transaction/coordination/targetConflict.d.ts +0 -2
- package/dist/transaction/coordination/targetConflict.js +0 -103
- package/dist/transaction/coordination/trace.d.ts +0 -78
- package/dist/transaction/coordination/trace.js +0 -138
- package/dist/transaction/durableWrites.d.ts +0 -62
- package/dist/transaction/durableWrites.js +0 -71
- package/dist/transaction/environment.d.ts +0 -105
- package/dist/transaction/environment.js +0 -108
- package/dist/transaction/errorCodes.d.ts +0 -403
- package/dist/transaction/errorCodes.js +0 -480
- package/dist/transaction/errors.d.ts +0 -428
- package/dist/transaction/errors.js +0 -686
- package/dist/transaction/index.d.ts +0 -20
- package/dist/transaction/index.js +0 -20
- package/dist/transaction/keys/index.d.ts +0 -87
- package/dist/transaction/keys/index.js +0 -207
- package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
- package/dist/transaction/log/syncDeltaRow.js +0 -95
- package/dist/transaction/logPosition.d.ts +0 -97
- package/dist/transaction/logPosition.js +0 -125
- package/dist/transaction/logger.d.ts +0 -16
- package/dist/transaction/logger.js +0 -7
- package/dist/transaction/observability.d.ts +0 -53
- package/dist/transaction/observability.js +0 -19
- package/dist/transaction/persistence.d.ts +0 -12
- package/dist/transaction/persistence.js +0 -11
- package/dist/transaction/plugin.d.ts +0 -192
- package/dist/transaction/plugin.js +0 -87
- package/dist/transaction/policy/types.d.ts +0 -217
- package/dist/transaction/policy/types.js +0 -126
- package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
- package/dist/transaction/resources/functionalUpdate.js +0 -87
- package/dist/transaction/resources/httpResources.d.ts +0 -266
- package/dist/transaction/resources/httpResources.js +0 -7
- package/dist/transaction/resources/modelOperations.d.ts +0 -319
- package/dist/transaction/resources/modelOperations.js +0 -12
- package/dist/transaction/resources/mutationOptions.d.ts +0 -66
- package/dist/transaction/resources/mutationOptions.js +0 -9
- package/dist/transaction/resources/where.d.ts +0 -85
- package/dist/transaction/resources/where.js +0 -70
- package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
- package/dist/transaction/resources/writeOptionsSchema.js +0 -73
- package/dist/transaction/schema/field.d.ts +0 -126
- package/dist/transaction/schema/field.js +0 -265
- package/dist/transaction/schema/loadStrategy.d.ts +0 -45
- package/dist/transaction/schema/loadStrategy.js +0 -46
- package/dist/transaction/schema/model.d.ts +0 -379
- package/dist/transaction/schema/model.js +0 -123
- package/dist/transaction/schema/openapi.d.ts +0 -57
- package/dist/transaction/schema/openapi.js +0 -340
- package/dist/transaction/schema/relation.d.ts +0 -199
- package/dist/transaction/schema/relation.js +0 -104
- package/dist/transaction/schema/residency.d.ts +0 -29
- package/dist/transaction/schema/residency.js +0 -25
- package/dist/transaction/schema/roles.d.ts +0 -249
- package/dist/transaction/schema/roles.js +0 -230
- package/dist/transaction/schema/schema.d.ts +0 -324
- package/dist/transaction/schema/schema.js +0 -305
- package/dist/transaction/schema/tenancy.d.ts +0 -139
- package/dist/transaction/schema/tenancy.js +0 -190
- package/dist/transaction/transactionLayer.d.ts +0 -82
- package/dist/transaction/transactionLayer.js +0 -24
- package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
- package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
- package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
- package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
- package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
- package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
- package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
- package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
- package/dist/transaction/transport/commitFrames.d.ts +0 -90
- package/dist/transaction/transport/commitFrames.js +0 -134
- package/dist/transaction/transport/connectionManager.d.ts +0 -215
- package/dist/transaction/transport/connectionManager.js +0 -673
- package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
- package/dist/transaction/transport/credentialLifecycle.js +0 -324
- package/dist/transaction/transport/heartbeat.d.ts +0 -65
- package/dist/transaction/transport/heartbeat.js +0 -93
- package/dist/transaction/transport/httpClient.d.ts +0 -123
- package/dist/transaction/transport/httpClient.js +0 -145
- package/dist/transaction/transport/httpOptions.d.ts +0 -33
- package/dist/transaction/transport/httpOptions.js +0 -12
- package/dist/transaction/transport/httpTransport.d.ts +0 -8
- package/dist/transaction/transport/httpTransport.js +0 -1276
- package/dist/transaction/transport/networkProbe.d.ts +0 -84
- package/dist/transaction/transport/networkProbe.js +0 -207
- package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
- package/dist/transaction/transport/wsFrameHandlers.js +0 -429
- package/dist/transaction/transport/wsTransport.d.ts +0 -576
- package/dist/transaction/transport/wsTransport.js +0 -1017
- package/dist/transaction/types/assertExact.d.ts +0 -17
- package/dist/transaction/types/assertExact.js +0 -1
- package/dist/transaction/types/global.d.ts +0 -107
- package/dist/transaction/types/global.js +0 -40
- package/dist/transaction/types/index.d.ts +0 -205
- package/dist/transaction/types/index.js +0 -56
- package/dist/transaction/types/modelData.d.ts +0 -10
- package/dist/transaction/types/modelData.js +0 -9
- package/dist/transaction/types/participant.d.ts +0 -20
- package/dist/transaction/types/participant.js +0 -10
- package/dist/transaction/types/streams.d.ts +0 -540
- package/dist/transaction/types/streams.js +0 -11
- package/dist/transaction/utils/asyncIterator.d.ts +0 -34
- package/dist/transaction/utils/asyncIterator.js +0 -135
- package/dist/transaction/utils/duration.d.ts +0 -25
- package/dist/transaction/utils/duration.js +0 -45
- package/dist/transaction/utils/json.d.ts +0 -57
- package/dist/transaction/utils/json.js +0 -276
- package/dist/transaction/wire/accountResponses.d.ts +0 -351
- package/dist/transaction/wire/accountResponses.js +0 -255
- package/dist/transaction/wire/auth.d.ts +0 -49
- package/dist/transaction/wire/auth.js +0 -57
- package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
- package/dist/transaction/wire/bootstrapReason.js +0 -8
- package/dist/transaction/wire/claimEvent.d.ts +0 -76
- package/dist/transaction/wire/claimEvent.js +0 -73
- package/dist/transaction/wire/claims.d.ts +0 -463
- package/dist/transaction/wire/claims.js +0 -229
- package/dist/transaction/wire/commit.d.ts +0 -603
- package/dist/transaction/wire/commit.js +0 -321
- package/dist/transaction/wire/delta.d.ts +0 -250
- package/dist/transaction/wire/delta.js +0 -147
- package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
- package/dist/transaction/wire/errorEnvelope.js +0 -123
- package/dist/transaction/wire/feedCursor.d.ts +0 -60
- package/dist/transaction/wire/feedCursor.js +0 -82
- package/dist/transaction/wire/feedEvent.d.ts +0 -177
- package/dist/transaction/wire/feedEvent.js +0 -39
- package/dist/transaction/wire/frames.d.ts +0 -194
- package/dist/transaction/wire/frames.js +0 -50
- package/dist/transaction/wire/inboundFrames.d.ts +0 -552
- package/dist/transaction/wire/inboundFrames.js +0 -116
- package/dist/transaction/wire/index.d.ts +0 -50
- package/dist/transaction/wire/index.js +0 -74
- package/dist/transaction/wire/listEnvelope.d.ts +0 -37
- package/dist/transaction/wire/listEnvelope.js +0 -42
- package/dist/transaction/wire/modelResponses.d.ts +0 -85
- package/dist/transaction/wire/modelResponses.js +0 -43
- package/dist/transaction/wire/protocol.d.ts +0 -38
- package/dist/transaction/wire/protocol.js +0 -38
- package/dist/transaction/wire/protocolVersion.d.ts +0 -73
- package/dist/transaction/wire/protocolVersion.js +0 -83
- package/dist/transactions/mutations/MutationQueue.d.ts +0 -655
- package/dist/transactions/mutations/MutationQueue.js +0 -2797
- package/dist/transactions/mutations/MutationStore.d.ts +0 -20
- package/dist/transactions/mutations/MutationStore.js +0 -53
- package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
- package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
- package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
- package/dist/transactions/mutations/coalesceRules.js +0 -140
- package/dist/transactions/mutations/commitLatency.d.ts +0 -52
- package/dist/transactions/mutations/commitLatency.js +0 -130
- package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
- package/dist/transactions/mutations/commitOutboxStore.js +0 -26
- package/dist/transactions/mutations/commitPayload.d.ts +0 -164
- package/dist/transactions/mutations/commitPayload.js +0 -152
- package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -59
- package/dist/transactions/mutations/deltaConfirmation.js +0 -233
- package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
- package/dist/transactions/mutations/durableWriteStore.js +0 -12
- package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
- package/dist/transactions/mutations/optimisticApply.js +0 -65
- package/dist/transactions/mutations/replayValidation.d.ts +0 -186
- package/dist/transactions/mutations/replayValidation.js +0 -163
- package/dist/utils/mobxSetup.d.ts +0 -53
- package/dist/utils/mobxSetup.js +0 -330
- package/dist/webhooks/events.d.ts +0 -43
- package/dist/webhooks/events.js +0 -42
- package/dist/webhooks/index.d.ts +0 -8
- package/dist/webhooks/index.js +0 -8
- package/dist/wire/index.d.ts +0 -1
- package/dist/wire/index.js +0 -8
- package/docs/interaction-model.md +0 -99
|
@@ -1,655 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MutationQueue manages the lifecycle of local writes on their way to the
|
|
3
|
-
* server: it applies each change optimistically, batches the writes made in one
|
|
4
|
-
* event-loop tick into a single commit, retries transient failures, and rolls
|
|
5
|
-
* back on permanent rejection.
|
|
6
|
-
*
|
|
7
|
-
* Key behaviours:
|
|
8
|
-
* - Optimistic updates with rollback on failure.
|
|
9
|
-
* - Configurable conflict resolution.
|
|
10
|
-
* - Microtask batching: transactions created in the same event-loop tick share
|
|
11
|
-
* a batch id and commit together in one round trip.
|
|
12
|
-
* - A dependency-injected executor, so several queues can coexist.
|
|
13
|
-
*/
|
|
14
|
-
import { EventEmitter } from 'events';
|
|
15
|
-
import type { Database } from '../../Database.js';
|
|
16
|
-
import { Model } from '../../Model.js';
|
|
17
|
-
import { LogPosition } from '../../transaction/logPosition.js';
|
|
18
|
-
import type { WriteOptions } from '../../interfaces/index.js';
|
|
19
|
-
import type { OnStaleMode, StaleNotification, ReadDependency, TrackDependency } from '../../transaction/coordination/schema.js';
|
|
20
|
-
import { type MutationInput, type QueuedMutation, type UserContext } from './commitPayload.js';
|
|
21
|
-
import { type DurableCommitEnvelope, type DurableCommitOperation, type CommitOutboxScope } from '../../transaction/transactions/settlement/commitEnvelope.js';
|
|
22
|
-
import type { DurableWriteStore } from './durableWriteStore.js';
|
|
23
|
-
export type { QueuedMutation, UserContext } from './commitPayload.js';
|
|
24
|
-
/**
|
|
25
|
-
* A pre-built, multi-operation commit submitted through
|
|
26
|
-
* `ablo.commits.create()`. Unlike the per-model {@link QueuedMutation} (see
|
|
27
|
-
* `./commitPayload.js`), the caller supplies the operations and the whole
|
|
28
|
-
* envelope commits atomically: the queue does not coalesce it, reorder its
|
|
29
|
-
* operations for foreign keys, or apply it optimistically. It runs through the
|
|
30
|
-
* same `mutationExecutor.commit()` as the model batch path, so its
|
|
31
|
-
* retry-on-reconnect behaviour is identical.
|
|
32
|
-
*/
|
|
33
|
-
interface CommitTransaction {
|
|
34
|
-
id: string;
|
|
35
|
-
kind: 'commit';
|
|
36
|
-
operations: {
|
|
37
|
-
type: DurableCommitOperation['type'];
|
|
38
|
-
model: string;
|
|
39
|
-
id: string;
|
|
40
|
-
input?: Record<string, unknown>;
|
|
41
|
-
transactionId?: string;
|
|
42
|
-
readAt?: number | null;
|
|
43
|
-
onStale?: OnStaleMode | null;
|
|
44
|
-
}[];
|
|
45
|
-
/** The premise for the whole batch, forwarded to the executor so the server can detect stale-context writes. */
|
|
46
|
-
reads?: ReadDependency[] | null;
|
|
47
|
-
/** Durable premises (`track`) to register for the batch's participant, forwarded to the executor. */
|
|
48
|
-
track?: TrackDependency[] | null;
|
|
49
|
-
status: 'pending' | 'executing' | 'awaiting_delta' | 'completed' | 'failed';
|
|
50
|
-
createdAt: number;
|
|
51
|
-
attempts: number;
|
|
52
|
-
/**
|
|
53
|
-
* Transient failures that were NOT the transport being down. Waiting out a
|
|
54
|
-
* dropped connection is unbounded on purpose — that is what lets a commit
|
|
55
|
-
* survive a reconnect — so connection errors are deliberately not counted
|
|
56
|
-
* here, and only a server that keeps rejecting can exhaust the lane.
|
|
57
|
-
*/
|
|
58
|
-
transientAttempts?: number;
|
|
59
|
-
lastSyncId?: number;
|
|
60
|
-
/** Opaque customer-side batch ledger key returned by a queued receipt. */
|
|
61
|
-
correlationId?: string;
|
|
62
|
-
error?: Error;
|
|
63
|
-
sealedAt: number;
|
|
64
|
-
sequence: number;
|
|
65
|
-
sealPromise?: Promise<void>;
|
|
66
|
-
durableEnvelope?: DurableCommitEnvelope;
|
|
67
|
-
/** Journal entries atomically consumed when this request was sealed. */
|
|
68
|
-
sourceMutationIds?: string[];
|
|
69
|
-
}
|
|
70
|
-
interface ConflictResolution {
|
|
71
|
-
strategy: 'last-write-wins' | 'merge' | 'reject' | 'custom';
|
|
72
|
-
resolver?: (local: MutationInput | undefined, remote: MutationInput) => MutationInput;
|
|
73
|
-
}
|
|
74
|
-
interface MutationQueueConfig {
|
|
75
|
-
/** Shared client position (see logPosition.ts). One per client. */
|
|
76
|
-
position?: LogPosition;
|
|
77
|
-
maxBatchSize: number;
|
|
78
|
-
batchDelay: number;
|
|
79
|
-
maxRetries: number;
|
|
80
|
-
conflictResolution: ConflictResolution;
|
|
81
|
-
enablePersistence: boolean;
|
|
82
|
-
enableOptimistic: boolean;
|
|
83
|
-
maxExecutingTransactions: number;
|
|
84
|
-
deltaConfirmationTimeout: number;
|
|
85
|
-
/**
|
|
86
|
-
* Exponential backoff for retryable server responses (HTTP 429/503).
|
|
87
|
-
* `baseMs` is the first retry delay; each subsequent attempt doubles
|
|
88
|
-
* up to `capMs`. Final delay = min(capMs, baseMs * 2^(attempt-1)) +
|
|
89
|
-
* up to 100ms of jitter. Defaults: 200ms / 1500ms.
|
|
90
|
-
*/
|
|
91
|
-
retryBackoff: {
|
|
92
|
-
baseMs: number;
|
|
93
|
-
capMs: number;
|
|
94
|
-
};
|
|
95
|
-
/**
|
|
96
|
-
* How long, in milliseconds, to wait after the connection drops before
|
|
97
|
-
* failing any in-flight commit-lane transaction with an
|
|
98
|
-
* {@link AbloConnectionError}. Brief disconnects, such as a server restart
|
|
99
|
-
* or mobile network jitter, are absorbed transparently; only a disconnect
|
|
100
|
-
* that outlasts this window surfaces as a failure. Set it lower for
|
|
101
|
-
* interactive use (for example 10 seconds for chat) and higher for
|
|
102
|
-
* background batch work. Defaults to 30 seconds.
|
|
103
|
-
*
|
|
104
|
-
* Without this deadline, `commits.create({ wait: 'confirmed' })` would wait
|
|
105
|
-
* forever if the connection died while a commit was in flight.
|
|
106
|
-
*/
|
|
107
|
-
commitOfflineGraceMs: number;
|
|
108
|
-
/**
|
|
109
|
-
* How long, in milliseconds, to wait for the transport to acknowledge a
|
|
110
|
-
* dispatched commit before treating the silence as a retryable no-receipt
|
|
111
|
-
* failure. A transport that never answers — a half-open socket, a dropped
|
|
112
|
-
* response frame — would otherwise hold the commit in flight forever, and
|
|
113
|
-
* with it the client's staged-batch lock: every later write in the session
|
|
114
|
-
* queues silently behind the unanswered one. The envelope's idempotency key
|
|
115
|
-
* is stable across retries, so a commit the server DID apply before the
|
|
116
|
-
* timeout is deduplicated on the retry rather than double-applied.
|
|
117
|
-
* Defaults to 30 seconds. Set `0` to disable the bound.
|
|
118
|
-
*/
|
|
119
|
-
commitDispatchTimeoutMs: number;
|
|
120
|
-
}
|
|
121
|
-
export declare class MutationQueue extends EventEmitter {
|
|
122
|
-
private static readonly DURABLE_REPLAY_WINDOW_MS;
|
|
123
|
-
private store;
|
|
124
|
-
private lastPermanentErrorSig?;
|
|
125
|
-
private _mutationExecutor;
|
|
126
|
-
private get mutationExecutor();
|
|
127
|
-
private executionQueue;
|
|
128
|
-
private isProcessing;
|
|
129
|
-
private processTimer?;
|
|
130
|
-
private processScheduled;
|
|
131
|
-
private createdTransactions;
|
|
132
|
-
private commitScheduled;
|
|
133
|
-
private inFlightByModel;
|
|
134
|
-
private pendingMergeByModel;
|
|
135
|
-
private deferredDeletesByCreate;
|
|
136
|
-
private commitLane;
|
|
137
|
-
private commitStore;
|
|
138
|
-
/**
|
|
139
|
-
* Small race buffer for authoritative echoes that arrive before the queued
|
|
140
|
-
* mutation receipt. The forward and WAL stream are independent channels, so
|
|
141
|
-
* either can win without changing the settlement result.
|
|
142
|
-
*/
|
|
143
|
-
private recentDeltaCorrelations;
|
|
144
|
-
/**
|
|
145
|
-
* Client-facing confirmation deadlines for source-forwarded writes. These
|
|
146
|
-
* timers settle only the caller waiting for `confirmed`; the accepted write
|
|
147
|
-
* remains in `awaiting_delta`, with its durable envelope intact, until the
|
|
148
|
-
* authoritative WAL echo arrives.
|
|
149
|
-
*/
|
|
150
|
-
private replicationLagTimeouts;
|
|
151
|
-
private replicationLagErrors;
|
|
152
|
-
private commitProcessing;
|
|
153
|
-
private lastCommitSequence;
|
|
154
|
-
private durableReplayBlock;
|
|
155
|
-
/** Browser-backed strict outbox; absent for standalone/in-memory consumers. */
|
|
156
|
-
private commitOutbox;
|
|
157
|
-
private commitOutboxScope;
|
|
158
|
-
private nextCommitSequence;
|
|
159
|
-
private emitCommitLifecycle;
|
|
160
|
-
private assertDurableReplayOpen;
|
|
161
|
-
private assertEnvelopeInsideReplayWindow;
|
|
162
|
-
private computePriorityScore;
|
|
163
|
-
private ensureDerivedFields;
|
|
164
|
-
private entityKey;
|
|
165
|
-
/** Collision-safe receipt target identity across models sharing a row id. */
|
|
166
|
-
private receiptTargetKey;
|
|
167
|
-
/**
|
|
168
|
-
* Relates stale notifications back to write targets without assuming the
|
|
169
|
-
* server's canonical model name uses the same spelling as the public schema
|
|
170
|
-
* key (`Task` versus `tasks`). Exact `(model,id)` wins; a globally unique id
|
|
171
|
-
* is the compatibility fallback. An ambiguous same-id cross-model mismatch
|
|
172
|
-
* is deliberately left unclassified, so it cannot falsely settle a queued
|
|
173
|
-
* write. A notification with no write-target id (or an explicit group) is a
|
|
174
|
-
* declared-read conflict and holds the whole batch.
|
|
175
|
-
*/
|
|
176
|
-
private classifyReceiptNotifications;
|
|
177
|
-
private resolveConfirmation;
|
|
178
|
-
private takeUnsentCreateForModel;
|
|
179
|
-
private cancelUnsentCreateForDelete;
|
|
180
|
-
private findCreateBarrierForDelete;
|
|
181
|
-
private completeLocalDelete;
|
|
182
|
-
private deferDeleteUntilCreateSettles;
|
|
183
|
-
private releaseDeferredDeletesForCreate;
|
|
184
|
-
private config;
|
|
185
|
-
private executingCount;
|
|
186
|
-
private optimisticUpdates;
|
|
187
|
-
private commitNotifications;
|
|
188
|
-
/** Zero-row targets returned on a successful atomic commit receipt. */
|
|
189
|
-
private commitMissingIds;
|
|
190
|
-
private readonly deltaConfirmation;
|
|
191
|
-
private isConnectedFn;
|
|
192
|
-
private commitOfflineGraceTimer;
|
|
193
|
-
/**
|
|
194
|
-
* This client's place in the global order of sync deltas. The instance is
|
|
195
|
-
* shared: the client injects one, and a standalone queue creates its own. The
|
|
196
|
-
* queue advances the `acked` cursor as commit responses arrive, the store
|
|
197
|
-
* advances `applied` and `persisted`, and snapshots and claims read
|
|
198
|
-
* `readFloor`. See `../logPosition.js` for the full contract.
|
|
199
|
-
*/
|
|
200
|
-
readonly position: LogPosition;
|
|
201
|
-
/** Applied-cursor alias, kept so the many internal read sites stay legible. */
|
|
202
|
-
private get lastSeenSyncId();
|
|
203
|
-
private noteAck;
|
|
204
|
-
private batchIndex;
|
|
205
|
-
/** Mints the request identity once; retry paths only read the stored value. */
|
|
206
|
-
private generateCommitIdempotencyKey;
|
|
207
|
-
/**
|
|
208
|
-
* Binds an ordered transaction batch to one wire-level idempotency key.
|
|
209
|
-
* Existing envelopes are validated and restored to their original order;
|
|
210
|
-
* they are never extended with newly queued work.
|
|
211
|
-
*/
|
|
212
|
-
private ensureCommitEnvelope;
|
|
213
|
-
/** Bind the strict local outbox used before any mutation reaches the wire. */
|
|
214
|
-
setCommitOutbox(outbox: DurableWriteStore): void;
|
|
215
|
-
setCommitOutboxScope(scope: CommitOutboxScope): void;
|
|
216
|
-
private sourceMutationIdsFor;
|
|
217
|
-
/**
|
|
218
|
-
* Atomically replaces staged mutation journal rows with one exact request.
|
|
219
|
-
* The returned operations are the JSON-normalized values that must be sent;
|
|
220
|
-
* callers never send a separately reconstructed payload after sealing.
|
|
221
|
-
*/
|
|
222
|
-
private sealDurableCommit;
|
|
223
|
-
/** Best-effort cleanup after a definitive rejection, confirmed ack, or echo. */
|
|
224
|
-
private removeDurableCommit;
|
|
225
|
-
/**
|
|
226
|
-
* Upgrade a sealed request with permanent connected-source acceptance before
|
|
227
|
-
* exposing the queued receipt. This is not completion: the envelope remains
|
|
228
|
-
* until the matching WAL correlation arrives. The upgrade only makes a
|
|
229
|
-
* crash/restart safe after the hosted 24-hour replay window has elapsed.
|
|
230
|
-
*/
|
|
231
|
-
private persistDurableCommitAcceptance;
|
|
232
|
-
/** Parse an untrusted/custom executor receipt without making ambiguity fatal. */
|
|
233
|
-
private parseMutationCommitResult;
|
|
234
|
-
/**
|
|
235
|
-
* Dispatch a sealed envelope to the transport, bounded by
|
|
236
|
-
* `commitDispatchTimeoutMs`. Every executor call site routes through here:
|
|
237
|
-
* a transport that never answers must become a retryable no-receipt failure
|
|
238
|
-
* (the same class as a malformed receipt) instead of an eternally in-flight
|
|
239
|
-
* commit, because an unanswered commit holds the staged-batch lock and
|
|
240
|
-
* silently stalls every later write in the session. The abandoned commit's
|
|
241
|
-
* eventual result, if it ever arrives, is discarded; the retry re-sends the
|
|
242
|
-
* identical idempotency key, so the server deduplicates an already-applied
|
|
243
|
-
* write.
|
|
244
|
-
*/
|
|
245
|
-
private dispatchCommitBounded;
|
|
246
|
-
private clearReplicationLagState;
|
|
247
|
-
/**
|
|
248
|
-
* Bounds the public `wait: 'confirmed'` promise without changing the
|
|
249
|
-
* accepted write's lifecycle. A lag timeout is not a rejection from the
|
|
250
|
-
* source database, so it must never emit `transaction:failed`, roll back
|
|
251
|
-
* optimistic state, or remove the durable replay envelope.
|
|
252
|
-
*/
|
|
253
|
-
private scheduleReplicationLagTimeout;
|
|
254
|
-
/**
|
|
255
|
-
* Takes either one complete retry envelope or a fresh batch. A retry waits
|
|
256
|
-
* until every original member has re-entered the queue, preventing an
|
|
257
|
-
* ambiguous A+B commit from being replayed later as A and B separately.
|
|
258
|
-
*/
|
|
259
|
-
private takeNextExecutionBatch;
|
|
260
|
-
/**
|
|
261
|
-
* Selects one reconnect batch without changing the request identity of work
|
|
262
|
-
* that was already attempted. Explicit caller keys remain one-call batches;
|
|
263
|
-
* an existing envelope is replayed only with all of its original members.
|
|
264
|
-
*/
|
|
265
|
-
private takeOfflineFlushBatch;
|
|
266
|
-
/**
|
|
267
|
-
* Resolvers for per-transaction `confirmation` promises. Populated in
|
|
268
|
-
* `attachConfirmation` at staging time, consumed by the constructor-time
|
|
269
|
-
* listeners on `transaction:completed` / `transaction:failed`. Kept off
|
|
270
|
-
* the QueuedMutation row so the store's iteration order stays plain-data
|
|
271
|
-
* and serialization-friendly.
|
|
272
|
-
*/
|
|
273
|
-
private confirmationResolvers;
|
|
274
|
-
constructor(config?: Partial<MutationQueueConfig>);
|
|
275
|
-
/**
|
|
276
|
-
* Returns the in-flight confirmation promise for a given model and id. When
|
|
277
|
-
* several transactions match, it returns the most recent one's promise; when
|
|
278
|
-
* none is open it resolves immediately, which covers both "already confirmed"
|
|
279
|
-
* and "never staged".
|
|
280
|
-
*
|
|
281
|
-
* It considers the three non-terminal statuses in which the write can still
|
|
282
|
-
* be rolled back — `pending`, `executing`, and `awaiting_delta` — and ignores
|
|
283
|
-
* `completed` (already settled) and `failed`/`rolled_back` (already
|
|
284
|
-
* rejected). This complements the `confirmation` promise carried on a known
|
|
285
|
-
* {@link QueuedMutation}: use this method at call sites that hold a model
|
|
286
|
-
* returned by `ablo.<model>.create()` but never see the underlying
|
|
287
|
-
* transaction.
|
|
288
|
-
*/
|
|
289
|
-
confirmationFor(modelName: string, modelId: string): Promise<void>;
|
|
290
|
-
/**
|
|
291
|
-
* Attaches a `confirmation` promise to a newly created transaction. Call this
|
|
292
|
-
* before the transaction is staged so a caller can `await tx.confirmation`
|
|
293
|
-
* immediately after a create, update, or delete returns. It is idempotent and
|
|
294
|
-
* returns early if one is already attached.
|
|
295
|
-
*
|
|
296
|
-
* It also attaches a no-op rejection handler. Most callers never await the
|
|
297
|
-
* confirmation, and without this the runtime would report an unhandled
|
|
298
|
-
* rejection when a write fails. Callers that do want to observe failure simply
|
|
299
|
-
* attach their own `.then`/`.catch`.
|
|
300
|
-
*/
|
|
301
|
-
private attachConfirmation;
|
|
302
|
-
/**
|
|
303
|
-
* Registers a predicate the queue uses to check whether it is connected.
|
|
304
|
-
* While disconnected, confirmation timeouts re-schedule themselves instead of
|
|
305
|
-
* escalating, so a transaction is never rolled back merely because the client
|
|
306
|
-
* was briefly offline.
|
|
307
|
-
*/
|
|
308
|
-
setConnectionChecker(fn: () => boolean): void;
|
|
309
|
-
/**
|
|
310
|
-
* Drives the offline-grace timer for in-flight commit-lane transactions.
|
|
311
|
-
*
|
|
312
|
-
* On `'disconnected'` it starts a one-shot timer of
|
|
313
|
-
* `config.commitOfflineGraceMs`. If that timer fires — meaning the disconnect
|
|
314
|
-
* outlasted the grace window — every commit-lane transaction still `pending`
|
|
315
|
-
* or `executing` is failed with an {@link AbloConnectionError}, so
|
|
316
|
-
* {@link waitForCommitReceipt} rejects within seconds instead of hanging.
|
|
317
|
-
*
|
|
318
|
-
* On `'connected'` it clears any pending grace timer. Brief disconnects are
|
|
319
|
-
* absorbed transparently; {@link processCommitLane} and
|
|
320
|
-
* {@link flushOfflineQueue} resume the work on reconnect.
|
|
321
|
-
*/
|
|
322
|
-
setConnectionState(state: 'connected' | 'disconnected'): void;
|
|
323
|
-
private failInFlightCommitsOnOffline;
|
|
324
|
-
/**
|
|
325
|
-
* Binds the mutation executor for this queue instance. The owning client
|
|
326
|
-
* calls this right after construction, so commits made here always dispatch
|
|
327
|
-
* through this instance's connection even when several client instances exist
|
|
328
|
-
* in the same process.
|
|
329
|
-
*/
|
|
330
|
-
setMutationExecutor(executor: import('../../interfaces/index.js').MutationExecutor): void;
|
|
331
|
-
/**
|
|
332
|
-
* Stages a transaction for commit. Transactions staged within the same
|
|
333
|
-
* event-loop tick are committed together.
|
|
334
|
-
*/
|
|
335
|
-
private stageTransaction;
|
|
336
|
-
/**
|
|
337
|
-
* Schedules the staged transactions to commit on a microtask, so all
|
|
338
|
-
* transactions created synchronously within one tick are batched together.
|
|
339
|
-
*/
|
|
340
|
-
private scheduleCommit;
|
|
341
|
-
/**
|
|
342
|
-
* Moves all staged transactions onto the execution queue, assigning them a
|
|
343
|
-
* single shared batch index so they commit together.
|
|
344
|
-
*/
|
|
345
|
-
private commitCreatedTransactions;
|
|
346
|
-
/**
|
|
347
|
-
* Flushes every pending transaction in one commit, the fast path taken on
|
|
348
|
-
* reconnect. If transport fails, the transactions retain this exact commit
|
|
349
|
-
* envelope when they fall back to normal queue processing.
|
|
350
|
-
*/
|
|
351
|
-
flushOfflineQueue(): Promise<void>;
|
|
352
|
-
/**
|
|
353
|
-
* Records a create and applies it optimistically, then stages it for the next
|
|
354
|
-
* batched commit. Returns the {@link QueuedMutation}, whose `confirmation`
|
|
355
|
-
* promise settles once the server confirms the write.
|
|
356
|
-
*/
|
|
357
|
-
create(model: Model, context: UserContext, writeOptions?: WriteOptions, sourceMutationId?: string): Promise<QueuedMutation>;
|
|
358
|
-
/**
|
|
359
|
-
* Records an update and applies it optimistically, then stages it for the next
|
|
360
|
-
* batched commit. Rapid updates to the same entity coalesce into a single wire
|
|
361
|
-
* operation.
|
|
362
|
-
* @param precomputedChanges - Optional pre-captured changes, used instead of re-reading them from the model.
|
|
363
|
-
*/
|
|
364
|
-
update(model: Model, context: UserContext, precomputedChanges?: Record<string, unknown>, writeOptions?: WriteOptions, sourceMutationId?: string): Promise<QueuedMutation>;
|
|
365
|
-
/**
|
|
366
|
-
* Records a delete and applies it optimistically. If the row's own create has
|
|
367
|
-
* not yet been sent, both are cancelled locally rather than sending a create
|
|
368
|
-
* followed by a delete; if the create is already in flight, the delete waits
|
|
369
|
-
* until it settles so the server never sees a delete before the create.
|
|
370
|
-
*/
|
|
371
|
-
delete(model: Model, context: UserContext, writeOptions?: WriteOptions, sourceMutationId?: string): Promise<QueuedMutation>;
|
|
372
|
-
/**
|
|
373
|
-
* Uploads a single attachment, delegating to the mutation executor.
|
|
374
|
-
*/
|
|
375
|
-
uploadAttachment(_file: File, options: {
|
|
376
|
-
id: string;
|
|
377
|
-
[key: string]: unknown;
|
|
378
|
-
}, _context: UserContext): Promise<{
|
|
379
|
-
url: string;
|
|
380
|
-
} | null>;
|
|
381
|
-
/**
|
|
382
|
-
* Uploads several attachments in one call, delegating to the mutation executor.
|
|
383
|
-
*/
|
|
384
|
-
batchUploadAttachments(_files: File[], items: {
|
|
385
|
-
id: string;
|
|
386
|
-
[key: string]: unknown;
|
|
387
|
-
}[], _context: UserContext): Promise<{
|
|
388
|
-
id: string;
|
|
389
|
-
url: string;
|
|
390
|
-
}[]>;
|
|
391
|
-
/**
|
|
392
|
-
* Records an archive and applies it optimistically, then stages it for the
|
|
393
|
-
* next batched commit.
|
|
394
|
-
*/
|
|
395
|
-
archive(model: Model, context: UserContext, writeOptions?: WriteOptions, sourceMutationId?: string): Promise<QueuedMutation>;
|
|
396
|
-
/**
|
|
397
|
-
* Records an unarchive and applies it optimistically, then stages it for the
|
|
398
|
-
* next batched commit.
|
|
399
|
-
*/
|
|
400
|
-
unarchive(model: Model, context: UserContext): Promise<QueuedMutation>;
|
|
401
|
-
/**
|
|
402
|
-
* Places a transaction on the execution queue, coalescing it into an existing
|
|
403
|
-
* same-entity update where possible so redundant writes collapse.
|
|
404
|
-
*/
|
|
405
|
-
private enqueue;
|
|
406
|
-
private scheduleProcessing;
|
|
407
|
-
/**
|
|
408
|
-
* Processes one batch of transactions in a single commit. Rather than calling
|
|
409
|
-
* the server once per operation type or model, it collects every batchable
|
|
410
|
-
* operation and sends them together; the server applies the mixed operations
|
|
411
|
-
* atomically within one transaction. This turns many round trips into one and
|
|
412
|
-
* greatly reduces batch latency.
|
|
413
|
-
*/
|
|
414
|
-
private processBatch;
|
|
415
|
-
private rememberDeltaCorrelation;
|
|
416
|
-
private queuedCommitEchoSyncId;
|
|
417
|
-
private queuedCommitMatchesCorrelation;
|
|
418
|
-
private completeQueuedCommit;
|
|
419
|
-
/**
|
|
420
|
-
* Confirms awaiting writes. Hosted/anomaly receipts keep their sync-id
|
|
421
|
-
* threshold semantics; queued forwards require the exact server correlation.
|
|
422
|
-
*/
|
|
423
|
-
onDeltaReceived(syncId: number, _transactionId?: string, correlationId?: string): void;
|
|
424
|
-
private scheduleDeltaConfirmationTimeout;
|
|
425
|
-
/**
|
|
426
|
-
* Resolves once the given transaction is confirmed and rejects if it fails.
|
|
427
|
-
* The confirming delta's timeout is handled by
|
|
428
|
-
* {@link scheduleDeltaConfirmationTimeout}.
|
|
429
|
-
*/
|
|
430
|
-
waitForConfirmation(transactionId: string): Promise<void>;
|
|
431
|
-
hasClientMutationId(id: string): boolean;
|
|
432
|
-
/**
|
|
433
|
-
* Enqueues a pre-built, multi-operation atomic commit — the
|
|
434
|
-
* `ablo.commits.create()` path. The caller supplies the operations; the queue
|
|
435
|
-
* only retries on reconnect and de-duplicates, and does not apply the change
|
|
436
|
-
* optimistically or reorder for foreign keys. A duplicate `clientTxId`
|
|
437
|
-
* already in flight is ignored. After an accepted write exceeds its
|
|
438
|
-
* replication-confirmation deadline, an explicit same-key retry reuses the
|
|
439
|
-
* exact sealed envelope as an idempotent status probe; the server's
|
|
440
|
-
* `mutation_log` still prevents a second logical write.
|
|
441
|
-
*/
|
|
442
|
-
enqueueCommit(clientTxId: string, operations: CommitTransaction['operations'], options?: {
|
|
443
|
-
reads?: ReadDependency[] | null;
|
|
444
|
-
track?: TrackDependency[] | null;
|
|
445
|
-
}): Promise<void>;
|
|
446
|
-
/**
|
|
447
|
-
* Drains the pending commit-lane envelopes one at a time. A transient
|
|
448
|
-
* failure, such as a network error, leaves the envelope at the head of the
|
|
449
|
-
* lane in `pending` and stops; reconnect re-kicks it through
|
|
450
|
-
* {@link flushOfflineQueue}. A permanent failure emits
|
|
451
|
-
* `transaction:failed:<id>` and drops the envelope.
|
|
452
|
-
*/
|
|
453
|
-
private processCommitLane;
|
|
454
|
-
/**
|
|
455
|
-
* Resolves once a commit-lane transaction is confirmed, returning the server's
|
|
456
|
-
* `lastSyncId` and any stale-context notifications; rejects on permanent
|
|
457
|
-
* failure. This backs the `wait: 'confirmed'` semantics of
|
|
458
|
-
* `ablo.commits.create()`.
|
|
459
|
-
*/
|
|
460
|
-
waitForCommitReceipt(clientTxId: string): Promise<{
|
|
461
|
-
lastSyncId: number;
|
|
462
|
-
notifications?: StaleNotification[];
|
|
463
|
-
missingIds?: string[];
|
|
464
|
-
}>;
|
|
465
|
-
private isReorderPayload;
|
|
466
|
-
/**
|
|
467
|
-
* Classifies an error as transient (worth retrying) or permanent. The
|
|
468
|
-
* approach is deliberately conservative: only known-transient errors are
|
|
469
|
-
* retried, and anything unrecognized is treated as permanent so a failing
|
|
470
|
-
* write cannot loop forever.
|
|
471
|
-
*
|
|
472
|
-
* Transient (retried):
|
|
473
|
-
* - Network failures, connection errors, and timeouts.
|
|
474
|
-
* - Server errors (HTTP 5xx).
|
|
475
|
-
* - Rate limiting (HTTP 429).
|
|
476
|
-
*
|
|
477
|
-
* Permanent (not retried), among others:
|
|
478
|
-
* - Validation errors and constraint violations.
|
|
479
|
-
* - Not found, unauthorized, and forbidden.
|
|
480
|
-
* - Any other business-logic error from the server.
|
|
481
|
-
*/
|
|
482
|
-
private isPermanentError;
|
|
483
|
-
/** True only when the server definitively rejected before applying. */
|
|
484
|
-
private isDefinitiveRejection;
|
|
485
|
-
/**
|
|
486
|
-
* Handles a failed transaction: retries transient failures with backoff and
|
|
487
|
-
* rolls back permanent ones, settling the transaction's confirmation promise
|
|
488
|
-
* either way.
|
|
489
|
-
*/
|
|
490
|
-
private handleFailure;
|
|
491
|
-
/**
|
|
492
|
-
* Resolves a conflict against server data using the configured strategy:
|
|
493
|
-
* last-write-wins rolls the local change back, merge and reject re-enqueue it,
|
|
494
|
-
* and custom applies the caller's resolver.
|
|
495
|
-
*/
|
|
496
|
-
handleConflict(transaction: QueuedMutation, serverData: MutationInput): Promise<void>;
|
|
497
|
-
/**
|
|
498
|
-
* Optimistic updates. The apply and rollback rules live in `./optimisticApply.js`;
|
|
499
|
-
* these methods bind them to the queue's own tracking map and event emitter.
|
|
500
|
-
*/
|
|
501
|
-
private applyOptimisticCreate;
|
|
502
|
-
private applyOptimisticUpdate;
|
|
503
|
-
private applyOptimisticDelete;
|
|
504
|
-
private rollbackOptimistic;
|
|
505
|
-
/**
|
|
506
|
-
* Loads transactions persisted from a previous session and re-enqueues them,
|
|
507
|
-
* so writes made while offline survive a restart. Does nothing when
|
|
508
|
-
* persistence is disabled.
|
|
509
|
-
*/
|
|
510
|
-
loadPersistedTransactions(database: Database): Promise<void>;
|
|
511
|
-
/**
|
|
512
|
-
* Restore exact sealed requests after the local database is open. Sealed
|
|
513
|
-
* envelopes replay through the atomic commit lane and are never re-projected
|
|
514
|
-
* through model/schema state from the new process.
|
|
515
|
-
*/
|
|
516
|
-
restoreDurableCommits(): Promise<Set<string>>;
|
|
517
|
-
/**
|
|
518
|
-
* Validates and rehydrates one persisted row. Rows written to the same store
|
|
519
|
-
* by other subsystems are skipped, and rows that fail the persisted
|
|
520
|
-
* transaction schema — from an older version or corruption — are dropped and
|
|
521
|
-
* reported rather than replayed as commits.
|
|
522
|
-
*/
|
|
523
|
-
private deserializeTransaction;
|
|
524
|
-
/**
|
|
525
|
-
* Cancels every pending or executing transaction for a given model id,
|
|
526
|
-
* optionally limited to one operation type, rolling back their optimistic
|
|
527
|
-
* state. Returns the cancelled transactions.
|
|
528
|
-
*/
|
|
529
|
-
cancelTransactionsForModel(modelId: string, transactionType?: string): QueuedMutation[];
|
|
530
|
-
/**
|
|
531
|
-
* Cancels pending transactions for child rows that reference a deleted parent,
|
|
532
|
-
* used to cascade a parent deletion. The caller supplies the foreign-key
|
|
533
|
-
* relationship; this method performs the cancellation.
|
|
534
|
-
*
|
|
535
|
-
* @param childModelName - The child model type (for example 'Block').
|
|
536
|
-
* @param foreignKey - The foreign-key property name (for example 'sectionId').
|
|
537
|
-
* @param parentId - The deleted parent's id.
|
|
538
|
-
* @returns The number of transactions cancelled.
|
|
539
|
-
*/
|
|
540
|
-
cancelTransactionsByForeignKey(childModelName: string, foreignKey: string, parentId: string): number;
|
|
541
|
-
/**
|
|
542
|
-
* Returns the number of transactions still pending or executing.
|
|
543
|
-
*/
|
|
544
|
-
getOutstandingTransactionCount(): number;
|
|
545
|
-
/** Generates a unique local transaction id. */
|
|
546
|
-
private generateId;
|
|
547
|
-
private mergeData;
|
|
548
|
-
private extractCreateData;
|
|
549
|
-
private mapChangesToInput;
|
|
550
|
-
private extractUpdateData;
|
|
551
|
-
private extractPreviousData;
|
|
552
|
-
/** Returns a snapshot of queue counts and the current configuration. */
|
|
553
|
-
getStats(): {
|
|
554
|
-
pending: number;
|
|
555
|
-
executing: number;
|
|
556
|
-
completed: number;
|
|
557
|
-
failed: number;
|
|
558
|
-
optimistic: number;
|
|
559
|
-
totalTransactions: number;
|
|
560
|
-
batchIndex: number;
|
|
561
|
-
config: {
|
|
562
|
-
/** Shared client position (see logPosition.ts). One per client. */
|
|
563
|
-
position?: LogPosition;
|
|
564
|
-
maxBatchSize: number;
|
|
565
|
-
batchDelay: number;
|
|
566
|
-
maxRetries: number;
|
|
567
|
-
conflictResolution: ConflictResolution;
|
|
568
|
-
enablePersistence: boolean;
|
|
569
|
-
enableOptimistic: boolean;
|
|
570
|
-
maxExecutingTransactions: number;
|
|
571
|
-
deltaConfirmationTimeout: number;
|
|
572
|
-
/**
|
|
573
|
-
* Exponential backoff for retryable server responses (HTTP 429/503).
|
|
574
|
-
* `baseMs` is the first retry delay; each subsequent attempt doubles
|
|
575
|
-
* up to `capMs`. Final delay = min(capMs, baseMs * 2^(attempt-1)) +
|
|
576
|
-
* up to 100ms of jitter. Defaults: 200ms / 1500ms.
|
|
577
|
-
*/
|
|
578
|
-
retryBackoff: {
|
|
579
|
-
baseMs: number;
|
|
580
|
-
capMs: number;
|
|
581
|
-
};
|
|
582
|
-
/**
|
|
583
|
-
* How long, in milliseconds, to wait after the connection drops before
|
|
584
|
-
* failing any in-flight commit-lane transaction with an
|
|
585
|
-
* {@link AbloConnectionError}. Brief disconnects, such as a server restart
|
|
586
|
-
* or mobile network jitter, are absorbed transparently; only a disconnect
|
|
587
|
-
* that outlasts this window surfaces as a failure. Set it lower for
|
|
588
|
-
* interactive use (for example 10 seconds for chat) and higher for
|
|
589
|
-
* background batch work. Defaults to 30 seconds.
|
|
590
|
-
*
|
|
591
|
-
* Without this deadline, `commits.create({ wait: 'confirmed' })` would wait
|
|
592
|
-
* forever if the connection died while a commit was in flight.
|
|
593
|
-
*/
|
|
594
|
-
commitOfflineGraceMs: number;
|
|
595
|
-
/**
|
|
596
|
-
* How long, in milliseconds, to wait for the transport to acknowledge a
|
|
597
|
-
* dispatched commit before treating the silence as a retryable no-receipt
|
|
598
|
-
* failure. A transport that never answers — a half-open socket, a dropped
|
|
599
|
-
* response frame — would otherwise hold the commit in flight forever, and
|
|
600
|
-
* with it the client's staged-batch lock: every later write in the session
|
|
601
|
-
* queues silently behind the unanswered one. The envelope's idempotency key
|
|
602
|
-
* is stable across retries, so a commit the server DID apply before the
|
|
603
|
-
* timeout is deduplicated on the retry rather than double-applied.
|
|
604
|
-
* Defaults to 30 seconds. Set `0` to disable the bound.
|
|
605
|
-
*/
|
|
606
|
-
commitDispatchTimeoutMs: number;
|
|
607
|
-
};
|
|
608
|
-
};
|
|
609
|
-
/**
|
|
610
|
-
* Returns detailed internal state — pending, executing, and awaiting-delta
|
|
611
|
-
* transactions — to help diagnose delta-confirmation issues.
|
|
612
|
-
*/
|
|
613
|
-
getDebugInfo(): {
|
|
614
|
-
lastSeenSyncId: number;
|
|
615
|
-
awaitingDeltaCount: number;
|
|
616
|
-
awaitingDeltaTransactions: {
|
|
617
|
-
id: string;
|
|
618
|
-
type: "update" | "create" | "delete" | "archive" | "unarchive";
|
|
619
|
-
modelName: string;
|
|
620
|
-
modelId: string;
|
|
621
|
-
syncIdNeeded: number | undefined;
|
|
622
|
-
createdAt: number;
|
|
623
|
-
age: number;
|
|
624
|
-
}[];
|
|
625
|
-
pendingTransactions: {
|
|
626
|
-
id: string;
|
|
627
|
-
type: "update" | "create" | "delete" | "archive" | "unarchive";
|
|
628
|
-
modelName: string;
|
|
629
|
-
modelId: string;
|
|
630
|
-
}[];
|
|
631
|
-
executingTransactions: {
|
|
632
|
-
id: string;
|
|
633
|
-
type: "update" | "create" | "delete" | "archive" | "unarchive";
|
|
634
|
-
modelName: string;
|
|
635
|
-
modelId: string;
|
|
636
|
-
}[];
|
|
637
|
-
};
|
|
638
|
-
/** Merges the given options into the queue's configuration. */
|
|
639
|
-
setConfig(config: Partial<MutationQueueConfig>): void;
|
|
640
|
-
/**
|
|
641
|
-
* Re-emits an incoming sync delta on the `sync:delta` event for the store to
|
|
642
|
-
* apply. Because rows use stable ids, no id reconciliation is needed here.
|
|
643
|
-
*/
|
|
644
|
-
handleSyncDelta(delta: {
|
|
645
|
-
id: string;
|
|
646
|
-
modelName: string;
|
|
647
|
-
action: string;
|
|
648
|
-
data: any;
|
|
649
|
-
}): boolean;
|
|
650
|
-
/**
|
|
651
|
-
* Releases the queue's resources: rolls back outstanding optimistic updates,
|
|
652
|
-
* clears all timers and stored transactions, and removes event listeners.
|
|
653
|
-
*/
|
|
654
|
-
dispose(): void;
|
|
655
|
-
}
|