@abloatai/ablo 0.36.0 → 0.37.1
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 +55 -2014
- package/NOTICE +2 -2
- package/README.md +45 -63
- 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 -114
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -163
- 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 +1 -1
- package/docs/api-keys.md +7 -6
- package/docs/api.md +10 -10
- package/docs/client-behavior.md +5 -5
- package/docs/coordination.md +52 -62
- package/docs/data-sources.md +1 -1
- 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/server-agent.md +2 -2
- package/docs/how-it-works.md +4 -4
- package/docs/identity.md +2 -1
- package/docs/integration-guide.md +24 -13
- 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 +2 -2
- package/docs/migration.md +3 -3
- package/docs/quickstart.md +2 -2
- package/docs/react.md +5 -5
- package/docs/schema-contract.md +3 -3
- package/docs/sessions.md +91 -37
- 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 +8 -8
- package/package.json +63 -166
- package/bin/ablo.cjs +0 -39
- package/dist/BaseSyncedStore.d.ts +0 -843
- package/dist/BaseSyncedStore.js +0 -1971
- package/dist/Database.d.ts +0 -323
- package/dist/Database.js +0 -1502
- package/dist/InstanceCache.d.ts +0 -237
- package/dist/InstanceCache.js +0 -1166
- package/dist/LazyReferenceCollection.d.ts +0 -177
- package/dist/LazyReferenceCollection.js +0 -461
- package/dist/Model.d.ts +0 -454
- package/dist/Model.js +0 -919
- package/dist/ModelRegistry.d.ts +0 -225
- package/dist/ModelRegistry.js +0 -539
- package/dist/NetworkMonitor.d.ts +0 -28
- package/dist/NetworkMonitor.js +0 -79
- package/dist/RuntimeContext.d.ts +0 -52
- package/dist/RuntimeContext.js +0 -80
- package/dist/SyncClient.d.ts +0 -541
- package/dist/SyncClient.js +0 -2202
- 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/client/Ablo.d.ts +0 -231
- package/dist/client/Ablo.js +0 -160
- 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 -50
- package/dist/client/createInternalComponents.js +0 -98
- package/dist/client/createModelProxy.d.ts +0 -248
- package/dist/client/createModelProxy.js +0 -884
- package/dist/client/humans.d.ts +0 -69
- package/dist/client/humans.js +0 -78
- 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 -53
- package/dist/client/reactiveEngine.js +0 -688
- 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/storeCluster.d.ts +0 -47
- package/dist/client/storeCluster.js +0 -118
- package/dist/client/storeLifecycle.d.ts +0 -61
- package/dist/client/storeLifecycle.js +0 -231
- 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 -42
- package/dist/context.js +0 -81
- 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/index.d.ts +0 -33
- package/dist/core/index.js +0 -48
- package/dist/docs/catalog.d.ts +0 -72
- package/dist/docs/catalog.js +0 -230
- 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/QueryProcessor.d.ts +0 -75
- package/dist/query/QueryProcessor.js +0 -255
- package/dist/query/client.d.ts +0 -64
- package/dist/query/client.js +0 -138
- package/dist/query/types.d.ts +0 -85
- package/dist/query/types.js +0 -16
- package/dist/react/AbloProvider.d.ts +0 -242
- package/dist/react/AbloProvider.js +0 -458
- 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/createAbloReact.d.ts +0 -56
- package/dist/react/createAbloReact.js +0 -51
- package/dist/react/index.d.ts +0 -62
- package/dist/react/index.js +0 -69
- package/dist/react/internalContext.d.ts +0 -33
- package/dist/react/internalContext.js +0 -3
- package/dist/react/useAblo.d.ts +0 -82
- package/dist/react/useAblo.js +0 -120
- 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 -133
- 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 -42
- package/dist/schema/index.js +0 -80
- 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 -90
- package/dist/schema/serialize.d.ts +0 -115
- package/dist/schema/serialize.js +0 -265
- 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 -83
- package/dist/source/adapter.js +0 -24
- 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/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/storeContract.d.ts +0 -145
- package/dist/storeContract.js +0 -12
- package/dist/stores/DatabaseManager.d.ts +0 -107
- package/dist/stores/DatabaseManager.js +0 -388
- 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/StoreManager.d.ts +0 -114
- package/dist/stores/StoreManager.js +0 -304
- package/dist/stores/SyncActionStore.d.ts +0 -99
- package/dist/stores/SyncActionStore.js +0 -506
- package/dist/stores/openIDBWithTimeout.d.ts +0 -65
- package/dist/stores/openIDBWithTimeout.js +0 -153
- 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 -284
- package/dist/sync/BootstrapFetcher.js +0 -964
- package/dist/sync/ConnectionManager.d.ts +0 -8
- package/dist/sync/ConnectionManager.js +0 -8
- package/dist/sync/OnDemandLoader.d.ts +0 -231
- package/dist/sync/OnDemandLoader.js +0 -743
- 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 -73
- 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 -114
- package/dist/sync/deltaPipeline.js +0 -278
- package/dist/sync/groupChange.d.ts +0 -116
- package/dist/sync/groupChange.js +0 -244
- package/dist/sync/participants.d.ts +0 -132
- package/dist/sync/participants.js +0 -346
- 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 -71
- 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/syncLog/contract.d.ts +0 -20
- package/dist/syncLog/contract.js +0 -19
- package/dist/syncLog/index.d.ts +0 -1
- package/dist/syncLog/index.js +0 -1
- 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 -212
- package/dist/transaction/auth/capability.js +0 -224
- 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 -56
- package/dist/transaction/coordination/awaitClaimGrant.js +0 -124
- package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -84
- package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -108
- 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 -45
- package/dist/transaction/coordination/locator.d.ts +0 -104
- package/dist/transaction/coordination/locator.js +0 -102
- package/dist/transaction/coordination/schema.d.ts +0 -1536
- package/dist/transaction/coordination/schema.js +0 -1177
- package/dist/transaction/coordination/targetConflict.d.ts +0 -2
- package/dist/transaction/coordination/targetConflict.js +0 -107
- 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 -484
- package/dist/transaction/errors.d.ts +0 -428
- package/dist/transaction/errors.js +0 -686
- package/dist/transaction/footprint.d.ts +0 -111
- package/dist/transaction/footprint.js +0 -0
- 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 -285
- package/dist/transaction/plugin.js +0 -106
- 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 -321
- package/dist/transaction/resources/httpResources.js +0 -7
- package/dist/transaction/resources/modelOperations.d.ts +0 -427
- 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 -101
- package/dist/transaction/resources/where.js +0 -115
- 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 -120
- package/dist/transaction/schema/field.js +0 -265
- package/dist/transaction/schema/fieldRef.d.ts +0 -38
- package/dist/transaction/schema/fieldRef.js +0 -11
- 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 -58
- package/dist/transaction/schema/openapi.js +0 -501
- package/dist/transaction/schema/relation.d.ts +0 -204
- 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 -351
- package/dist/transaction/schema/schema.js +0 -325
- 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 -131
- package/dist/transaction/transport/httpClient.js +0 -146
- 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 -1388
- 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 -574
- package/dist/transaction/transport/wsTransport.js +0 -1023
- 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 -550
- 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 -50
- package/dist/transaction/utils/duration.js +0 -77
- 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 -420
- package/dist/transaction/wire/accountResponses.js +0 -290
- package/dist/transaction/wire/auth.d.ts +0 -56
- package/dist/transaction/wire/auth.js +0 -63
- 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 -530
- package/dist/transaction/wire/claims.js +0 -327
- 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 -204
- package/dist/transaction/wire/feedEvent.js +0 -65
- 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 -562
- package/dist/transaction/wire/inboundFrames.js +0 -116
- package/dist/transaction/wire/index.d.ts +0 -54
- package/dist/transaction/wire/index.js +0 -83
- package/dist/transaction/wire/listEnvelope.d.ts +0 -37
- package/dist/transaction/wire/listEnvelope.js +0 -42
- package/dist/transaction/wire/modelMutations.d.ts +0 -31
- package/dist/transaction/wire/modelMutations.js +0 -52
- package/dist/transaction/wire/modelResponses.d.ts +0 -85
- package/dist/transaction/wire/modelResponses.js +0 -43
- package/dist/transaction/wire/modelShape.d.ts +0 -78
- package/dist/transaction/wire/modelShape.js +0 -74
- 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 -661
- package/dist/transactions/mutations/MutationQueue.js +0 -2807
- 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 -165
- package/dist/transactions/mutations/commitPayload.js +0 -152
- package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -63
- package/dist/transactions/mutations/deltaConfirmation.js +0 -235
- 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 -187
- package/dist/transactions/mutations/replayValidation.js +0 -164
- package/dist/utils/mobxSetup.d.ts +0 -53
- package/dist/utils/mobxSetup.js +0 -330
- package/dist/views/QueryView.d.ts +0 -79
- package/dist/views/QueryView.js +0 -218
- package/dist/views/ViewRegistry.d.ts +0 -20
- package/dist/views/ViewRegistry.js +0 -55
- package/dist/views/incrementalView.d.ts +0 -45
- package/dist/views/incrementalView.js +0 -69
- 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
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Manages the {@link ObjectStore} instances the sync engine keeps in the
|
|
3
|
-
* browser — one per registered model — alongside the single
|
|
4
|
-
* {@link SyncActionStore} for pending changes. It creates each store from the
|
|
5
|
-
* model's metadata, tracks readiness, and provisions the underlying IndexedDB
|
|
6
|
-
* object stores. A model's load strategy — instant or lazy — decides how and
|
|
7
|
-
* when its data is loaded.
|
|
8
|
-
*/
|
|
9
|
-
import { ModelRegistry } from '../ModelRegistry.js';
|
|
10
|
-
import { ObjectStore } from './ObjectStore.js';
|
|
11
|
-
import { SyncActionStore } from './SyncActionStore.js';
|
|
12
|
-
import { LoadStrategy } from '../transaction/types/index.js';
|
|
13
|
-
import { AbloValidationError } from '../transaction/errors.js';
|
|
14
|
-
/**
|
|
15
|
-
* StoreManager - Central manager for all ObjectStore instances
|
|
16
|
-
*
|
|
17
|
-
* Key responsibilities:
|
|
18
|
-
* - Creates ObjectStore instances for each registered model
|
|
19
|
-
* - Manages store lifecycle and readiness
|
|
20
|
-
* - Provides unified interface for database operations
|
|
21
|
-
* - Handles store-specific optimizations based on load strategies
|
|
22
|
-
*/
|
|
23
|
-
export class StoreManager {
|
|
24
|
-
runtime;
|
|
25
|
-
stores = new Map();
|
|
26
|
-
/** Strict-durability wrapper for the client write journal and commit outbox. */
|
|
27
|
-
transactionStore = null;
|
|
28
|
-
syncactionStore = null;
|
|
29
|
-
db = null;
|
|
30
|
-
isInitialized = false;
|
|
31
|
-
modelRegistry;
|
|
32
|
-
constructor(modelRegistry, runtime = globalRuntime) {
|
|
33
|
-
this.runtime = runtime;
|
|
34
|
-
this.modelRegistry = modelRegistry;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Initialize all stores for registered models
|
|
38
|
-
*/
|
|
39
|
-
async initializeStores(db) {
|
|
40
|
-
this.db = db;
|
|
41
|
-
if (this.isInitialized) {
|
|
42
|
-
// Idempotent re-entry — harmless, nothing for the consumer to act on → debug.
|
|
43
|
-
this.runtime.logger.debug('StoreManager already initialized');
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
this.runtime.logger.info('Initializing ObjectStore instances for all models');
|
|
47
|
-
const startTime = performance.now();
|
|
48
|
-
// Get all registered models
|
|
49
|
-
const allModels = this.modelRegistry.getRegisteredModelNames();
|
|
50
|
-
for (const modelName of allModels) {
|
|
51
|
-
await this.createStoreForModel(modelName);
|
|
52
|
-
}
|
|
53
|
-
// Special stores are created during the IDB upgrade, but unlike model
|
|
54
|
-
// stores they have no registry metadata and therefore need an explicit
|
|
55
|
-
// runtime wrapper. Outbox acknowledgement must mean disk-backed, so this
|
|
56
|
-
// store opts into strict durability rather than the cache stores' relaxed
|
|
57
|
-
// mode.
|
|
58
|
-
this.transactionStore = new ObjectStore(this.db, '__transactions', '__transactions', { loadStrategy: LoadStrategy.instant }, 'strict');
|
|
59
|
-
// Initialize SyncactionStore
|
|
60
|
-
this.syncactionStore = new SyncActionStore(this.db, this.runtime);
|
|
61
|
-
await this.syncactionStore.initialize();
|
|
62
|
-
this.isInitialized = true;
|
|
63
|
-
const duration = performance.now() - startTime;
|
|
64
|
-
this.runtime.logger.info('Initialized ObjectStores and SyncactionStore', {
|
|
65
|
-
count: this.stores.size,
|
|
66
|
-
ms: duration.toFixed(2),
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Create ObjectStore for a specific model
|
|
71
|
-
*/
|
|
72
|
-
async createStoreForModel(modelName) {
|
|
73
|
-
const metadata = this.modelRegistry.getMetadata(modelName);
|
|
74
|
-
if (!metadata) {
|
|
75
|
-
throw new AbloValidationError(`No metadata found for model: ${modelName}`, {
|
|
76
|
-
code: 'store_manager_unknown_model',
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
// Use model name directly as store name
|
|
80
|
-
const storeName = modelName;
|
|
81
|
-
// Create the ObjectStore. One store type currently serves every load strategy.
|
|
82
|
-
const store = new ObjectStore(this.db, modelName, storeName, metadata);
|
|
83
|
-
this.stores.set(modelName, store);
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Create stores (tables) in IndexedDB
|
|
87
|
-
*/
|
|
88
|
-
async createStores(db) {
|
|
89
|
-
this.runtime.logger.info('Creating tables for all registered models');
|
|
90
|
-
for (const modelName of this.modelRegistry.getRegisteredModelNames()) {
|
|
91
|
-
const storeName = modelName;
|
|
92
|
-
// Skip if store already exists
|
|
93
|
-
if (db.objectStoreNames.contains(storeName)) {
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
this.runtime.logger.debug('Creating table', { storeName, modelName });
|
|
97
|
-
// Create object store with id as keyPath
|
|
98
|
-
const store = db.createObjectStore(storeName, { keyPath: 'id' });
|
|
99
|
-
// Create indexes for indexed properties
|
|
100
|
-
const indexedProperties = this.modelRegistry.getIndexedProperties(modelName);
|
|
101
|
-
for (const propName of indexedProperties) {
|
|
102
|
-
try {
|
|
103
|
-
store.createIndex(propName, propName, { unique: false });
|
|
104
|
-
this.runtime.logger.debug('Created index', { store: storeName, prop: propName });
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
// Internal IndexedDB index setup — a miss only affects local query
|
|
108
|
-
// speed and isn't consumer-actionable → debug.
|
|
109
|
-
this.runtime.logger.debug('Failed to create index', { store: storeName, prop: propName, error });
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// Create special tables
|
|
114
|
-
this.createSpecialTables(db);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Create special tables (sync_action_table, model_table, model_table_partial, __meta, __transactions)
|
|
118
|
-
*/
|
|
119
|
-
createSpecialTables(db) {
|
|
120
|
-
// Create sync_action_table for sync actions (delta packets)
|
|
121
|
-
if (!db.objectStoreNames.contains('sync_action_table')) {
|
|
122
|
-
const syncActionStore = db.createObjectStore('sync_action_table', { keyPath: 'id' });
|
|
123
|
-
syncActionStore.createIndex('syncId', 'id');
|
|
124
|
-
this.runtime.logger.debug('Created sync_action_table');
|
|
125
|
-
}
|
|
126
|
-
// Create __meta table for model persistence state and database metadata
|
|
127
|
-
if (!db.objectStoreNames.contains('__meta')) {
|
|
128
|
-
db.createObjectStore('__meta');
|
|
129
|
-
this.runtime.logger.debug('Created __meta table');
|
|
130
|
-
}
|
|
131
|
-
// Create __transactions table for unsent transactions
|
|
132
|
-
if (!db.objectStoreNames.contains('__transactions')) {
|
|
133
|
-
const transactionStore = db.createObjectStore('__transactions', {
|
|
134
|
-
keyPath: 'id',
|
|
135
|
-
autoIncrement: false,
|
|
136
|
-
});
|
|
137
|
-
// Create indexes for transaction queries
|
|
138
|
-
transactionStore.createIndex('timestamp', 'timestamp');
|
|
139
|
-
transactionStore.createIndex('status', 'status');
|
|
140
|
-
this.runtime.logger.debug('Created __transactions table');
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get ObjectStore for a model
|
|
145
|
-
*/
|
|
146
|
-
getStore(modelName) {
|
|
147
|
-
if (modelName === '__transactions') {
|
|
148
|
-
return this.transactionStore ?? undefined;
|
|
149
|
-
}
|
|
150
|
-
return this.stores.get(modelName);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Get SyncactionStore instance
|
|
154
|
-
*/
|
|
155
|
-
getSyncactionStore() {
|
|
156
|
-
return this.syncactionStore;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Get all stores
|
|
160
|
-
*/
|
|
161
|
-
getAllStores() {
|
|
162
|
-
return new Map(this.stores);
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Check readiness of all stores
|
|
166
|
-
*/
|
|
167
|
-
async checkReadinessOfStores() {
|
|
168
|
-
const readyStores = [];
|
|
169
|
-
const notReadyStores = [];
|
|
170
|
-
for (const [modelName, store] of Array.from(this.stores)) {
|
|
171
|
-
const isReady = await store.checkIsReady();
|
|
172
|
-
if (isReady) {
|
|
173
|
-
readyStores.push(modelName);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
notReadyStores.push(modelName);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
const allReady = notReadyStores.length === 0;
|
|
180
|
-
this.runtime.logger.debug('Store readiness', {
|
|
181
|
-
ready: readyStores.length,
|
|
182
|
-
total: this.stores.size,
|
|
183
|
-
notReady: notReadyStores,
|
|
184
|
-
});
|
|
185
|
-
return {
|
|
186
|
-
ready: allReady,
|
|
187
|
-
readyStores,
|
|
188
|
-
notReadyStores,
|
|
189
|
-
totalStores: this.stores.size,
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Reports whether any data store holds at least one record. This is a
|
|
194
|
-
* cache-validity check: if the stores are empty, the sync cursor
|
|
195
|
-
* (`lastSyncId`) is meaningless no matter what the metadata says, because the
|
|
196
|
-
* cursor and the data must travel together — no data means no cursor, which
|
|
197
|
-
* forces a full bootstrap. To stay cheap it samples up to three stores rather
|
|
198
|
-
* than scanning them all, and returns true as soon as one has records.
|
|
199
|
-
*/
|
|
200
|
-
async hasAnyData() {
|
|
201
|
-
const storeEntries = Array.from(this.stores);
|
|
202
|
-
// Sample a few stores — don't check all 30+ if the first one has data
|
|
203
|
-
const samplesToCheck = Math.min(storeEntries.length, 3);
|
|
204
|
-
for (let i = 0; i < samplesToCheck; i++) {
|
|
205
|
-
const entry = storeEntries[i];
|
|
206
|
-
if (!entry)
|
|
207
|
-
break;
|
|
208
|
-
const [, store] = entry;
|
|
209
|
-
try {
|
|
210
|
-
const count = await store.count();
|
|
211
|
-
if (count > 0)
|
|
212
|
-
return true;
|
|
213
|
-
}
|
|
214
|
-
catch {
|
|
215
|
-
// Store not accessible — treat as empty
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Get stores by load strategy
|
|
222
|
-
*/
|
|
223
|
-
getStoresByStrategy(strategy) {
|
|
224
|
-
const stores = [];
|
|
225
|
-
for (const [modelName, store] of Array.from(this.stores)) {
|
|
226
|
-
const metadata = this.modelRegistry.getMetadata(modelName);
|
|
227
|
-
if (metadata?.loadStrategy === strategy) {
|
|
228
|
-
stores.push(store);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return stores;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Perform maintenance on all stores
|
|
235
|
-
*/
|
|
236
|
-
async performMaintenance() {
|
|
237
|
-
this.runtime.logger.info('Performing maintenance on all stores');
|
|
238
|
-
const promises = Array.from(this.stores.values()).map((store) => store.performMaintenance());
|
|
239
|
-
await Promise.all(promises);
|
|
240
|
-
this.runtime.logger.info('Store maintenance completed');
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Clear all stores
|
|
244
|
-
*/
|
|
245
|
-
async clearAllStores() {
|
|
246
|
-
// Lifecycle chatter (logout / identity switch / reset), not a warning.
|
|
247
|
-
// Logged at `debug` so it stays silent under the default `warn` threshold.
|
|
248
|
-
this.runtime.logger.debug('Clearing all stores');
|
|
249
|
-
const promises = Array.from(this.stores.values()).map((store) => store.clear());
|
|
250
|
-
await Promise.all(promises);
|
|
251
|
-
this.runtime.logger.info('All stores cleared');
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Mark all stores as closing to prevent new operations
|
|
255
|
-
* Called before database connection is closed
|
|
256
|
-
*/
|
|
257
|
-
markAllStoresAsClosing() {
|
|
258
|
-
this.runtime.logger.debug('Marking all stores as closing');
|
|
259
|
-
for (const store of this.stores.values()) {
|
|
260
|
-
store.markAsClosing();
|
|
261
|
-
}
|
|
262
|
-
this.transactionStore?.markAsClosing();
|
|
263
|
-
// SyncActionStore is a standalone store that does not extend ObjectStore
|
|
264
|
-
// and has no markAsClosing equivalent, so it is intentionally skipped here.
|
|
265
|
-
// If closing-state coordination is ever needed for sync actions, add it
|
|
266
|
-
// explicitly to SyncActionStore rather than casting to reach a method that
|
|
267
|
-
// may not exist.
|
|
268
|
-
this.runtime.logger.debug('All stores marked as closing');
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Get comprehensive statistics
|
|
272
|
-
*/
|
|
273
|
-
async getComprehensiveStats() {
|
|
274
|
-
const storeDetails = [];
|
|
275
|
-
let totalRecords = 0;
|
|
276
|
-
let readyCount = 0;
|
|
277
|
-
for (const [modelName, store] of Array.from(this.stores)) {
|
|
278
|
-
const metadata = this.modelRegistry.getMetadata(modelName);
|
|
279
|
-
const storeName = modelName;
|
|
280
|
-
const ready = await store.checkIsReady();
|
|
281
|
-
const count = await store.count();
|
|
282
|
-
if (ready)
|
|
283
|
-
readyCount++;
|
|
284
|
-
totalRecords += count;
|
|
285
|
-
storeDetails.push({
|
|
286
|
-
modelName,
|
|
287
|
-
storeName,
|
|
288
|
-
strategy: metadata.loadStrategy,
|
|
289
|
-
ready,
|
|
290
|
-
count,
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
return {
|
|
294
|
-
totalStores: this.stores.size,
|
|
295
|
-
readiness: {
|
|
296
|
-
ready: readyCount,
|
|
297
|
-
notReady: this.stores.size - readyCount,
|
|
298
|
-
},
|
|
299
|
-
totalRecords,
|
|
300
|
-
storeDetails,
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
import { globalRuntime } from '../context.js';
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A local, IndexedDB-backed store for the sync actions (change deltas) the
|
|
3
|
-
* server sends. See {@link SyncActionStore}.
|
|
4
|
-
*/
|
|
5
|
-
import type { RuntimeContext } from '../RuntimeContext.js';
|
|
6
|
-
import { type SyncAction } from './syncAction.js';
|
|
7
|
-
/**
|
|
8
|
-
* Stores the sync actions (the change deltas) the server sends, keyed by
|
|
9
|
-
* their sync id, and tracks which ones have been applied. It keeps a
|
|
10
|
-
* watermark of the last applied id, holds not-yet-applied actions as
|
|
11
|
-
* pending, and can rewind a range of actions back to pending so they can be
|
|
12
|
-
* replayed while resolving a conflict.
|
|
13
|
-
*/
|
|
14
|
-
export declare class SyncActionStore {
|
|
15
|
-
private readonly runtime;
|
|
16
|
-
private db;
|
|
17
|
-
private storeName;
|
|
18
|
-
private lastAppliedSyncId;
|
|
19
|
-
private pendingActions;
|
|
20
|
-
constructor(db: IDBDatabase, runtime?: RuntimeContext);
|
|
21
|
-
/**
|
|
22
|
-
* Initialize store (create if needed)
|
|
23
|
-
*/
|
|
24
|
-
initialize(): Promise<void>;
|
|
25
|
-
/**
|
|
26
|
-
* Store a sync action
|
|
27
|
-
*/
|
|
28
|
-
storeSyncAction(action: SyncAction): Promise<void>;
|
|
29
|
-
/**
|
|
30
|
-
* Store multiple sync actions
|
|
31
|
-
*/
|
|
32
|
-
storeSyncActions(actions: SyncAction[]): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Get sync action by ID
|
|
35
|
-
*/
|
|
36
|
-
getSyncAction(id: number): Promise<SyncAction | undefined>;
|
|
37
|
-
/**
|
|
38
|
-
* Get sync actions in range
|
|
39
|
-
*/
|
|
40
|
-
getSyncActionsInRange(startId: number, endId: number): Promise<SyncAction[]>;
|
|
41
|
-
/**
|
|
42
|
-
* Get pending sync actions (not yet applied)
|
|
43
|
-
*/
|
|
44
|
-
getPendingSyncActions(): Promise<SyncAction[]>;
|
|
45
|
-
/**
|
|
46
|
-
* Mark sync action as applied
|
|
47
|
-
*/
|
|
48
|
-
markAsApplied(syncId: number): Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* Mark multiple actions as applied
|
|
51
|
-
*/
|
|
52
|
-
markManyAsApplied(syncIds: number[]): Promise<void>;
|
|
53
|
-
/**
|
|
54
|
-
* Get last applied sync ID
|
|
55
|
-
*/
|
|
56
|
-
getLastAppliedSyncId(): number;
|
|
57
|
-
/**
|
|
58
|
-
* Check if we have a gap in sync IDs
|
|
59
|
-
*/
|
|
60
|
-
hasGap(fromId: number, toId: number): Promise<boolean>;
|
|
61
|
-
/**
|
|
62
|
-
* Get missing sync IDs in range
|
|
63
|
-
*/
|
|
64
|
-
getMissingSyncIds(fromId: number, toId: number): Promise<number[]>;
|
|
65
|
-
/**
|
|
66
|
-
* Clean up old sync actions
|
|
67
|
-
*/
|
|
68
|
-
cleanup(keepDays?: number): Promise<number>;
|
|
69
|
-
/**
|
|
70
|
-
* Clear all sync actions
|
|
71
|
-
*/
|
|
72
|
-
clear(): Promise<void>;
|
|
73
|
-
/**
|
|
74
|
-
* Get statistics
|
|
75
|
-
*/
|
|
76
|
-
getStats(): Promise<{
|
|
77
|
-
total: number;
|
|
78
|
-
applied: number;
|
|
79
|
-
pending: number;
|
|
80
|
-
lastAppliedId: number;
|
|
81
|
-
oldestAction: Date | null;
|
|
82
|
-
newestAction: Date | null;
|
|
83
|
-
}>;
|
|
84
|
-
/**
|
|
85
|
-
* Update last sync ID in metadata
|
|
86
|
-
*/
|
|
87
|
-
private updateLastSyncId;
|
|
88
|
-
/**
|
|
89
|
-
* Get metadata. Shape mirrors what's written by the database manager
|
|
90
|
-
* — currently only `lastSyncId` is consumed here (in `initialize`),
|
|
91
|
-
* so the return type is narrowed to that read surface. Returns
|
|
92
|
-
* `undefined` when the row hasn't been written yet (fresh DB).
|
|
93
|
-
*/
|
|
94
|
-
private getMetadata;
|
|
95
|
-
/**
|
|
96
|
-
* Rewind to a specific sync ID (for conflict resolution)
|
|
97
|
-
*/
|
|
98
|
-
rewindTo(syncId: number): Promise<SyncAction[]>;
|
|
99
|
-
}
|