@abloatai/ablo 0.36.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 -2013
- package/NOTICE +2 -2
- package/README.md +25 -71
- 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,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The public resource-type surface.
|
|
3
|
-
*
|
|
4
|
-
* The transport-facing half of these types moved down into the settlement core
|
|
5
|
-
* (ADR 0016). This module keeps the
|
|
6
|
-
* consumer-facing import path intact and rejoins it with the model-proxy types
|
|
7
|
-
* that stay here — `ModelOperations` chief among them, because it returns the
|
|
8
|
-
* live participant handle.
|
|
9
|
-
*/
|
|
10
|
-
export * from '../transaction/resources/httpResources.js';
|
|
11
|
-
export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, ClaimOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease, } from '../transaction/resources/modelOperations.js';
|
|
12
|
-
export type { ModelOperations } from './createModelProxy.js';
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The public resource-type surface.
|
|
3
|
-
*
|
|
4
|
-
* The transport-facing half of these types moved down into the settlement core
|
|
5
|
-
* (ADR 0016). This module keeps the
|
|
6
|
-
* consumer-facing import path intact and rejoins it with the model-proxy types
|
|
7
|
-
* that stay here — `ModelOperations` chief among them, because it returns the
|
|
8
|
-
* live participant handle.
|
|
9
|
-
*/
|
|
10
|
-
export * from '../transaction/resources/httpResources.js';
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Derives engine configuration from a schema. This module holds two pure
|
|
3
|
-
* functions: {@link computeFKDepthPriority} works out a safe row-insertion
|
|
4
|
-
* order from the schema's foreign-key relations, and
|
|
5
|
-
* {@link deriveConfigFromSchema} packages that ordering, together with a few
|
|
6
|
-
* defaults, into the {@link RuntimeConfig} a client uses at startup. Both
|
|
7
|
-
* are deterministic transforms of the schema and hold no engine state.
|
|
8
|
-
*/
|
|
9
|
-
import type { Schema } from '../transaction/schema/schema.js';
|
|
10
|
-
import type { RuntimeConfig } from '../interfaces/index.js';
|
|
11
|
-
/**
|
|
12
|
-
* Computes a create-priority map that gives the engine a safe order for
|
|
13
|
-
* inserting rows, so a child row is never written before the parent its
|
|
14
|
-
* foreign key references.
|
|
15
|
-
*
|
|
16
|
-
* Every `belongsTo` relation is an edge from a child model to its parent. This
|
|
17
|
-
* function runs Tarjan's strongly-connected-components algorithm over that
|
|
18
|
-
* graph, which does two things at once: it groups any models that reference
|
|
19
|
-
* each other in a cycle into a single component, and it produces those
|
|
20
|
-
* components in an order where parents come before children. Each model then
|
|
21
|
-
* gets a numeric priority from that order, where a lower number means "insert
|
|
22
|
-
* earlier". Top-level models with no parent — an organization or a theme, say —
|
|
23
|
-
* come first, and the deepest descendants come last.
|
|
24
|
-
*
|
|
25
|
-
* Models in the same cycle share a priority, so within a cycle the order rows
|
|
26
|
-
* were queued in breaks the tie. To break a cycle deterministically instead,
|
|
27
|
-
* mark one side of it with `belongsTo(target, fk, { defer: true })`. A deferred
|
|
28
|
-
* edge is left out of the graph, which turns the cycle into a chain and gives
|
|
29
|
-
* the deferred child a strictly higher priority than its parent. Pair it with a
|
|
30
|
-
* Postgres `DEFERRABLE INITIALLY DEFERRED` constraint if you also want the
|
|
31
|
-
* database to relax its check. See {@link BelongsToOptions.defer}.
|
|
32
|
-
*
|
|
33
|
-
* The returned map is keyed by each model's wire type name
|
|
34
|
-
* ({@link ModelDef.typename}, falling back to the schema key), because that is
|
|
35
|
-
* the name the engine looks up at commit time. Keying by the schema key would
|
|
36
|
-
* miss that lookup, and every model would fall back to the default priority.
|
|
37
|
-
*
|
|
38
|
-
* The result does not depend on which model the walk starts from, and the
|
|
39
|
-
* algorithm runs in time linear in the number of models plus relations.
|
|
40
|
-
* Reference: Tarjan, R. (1972), "Depth-first search and linear graph
|
|
41
|
-
* algorithms."
|
|
42
|
-
*/
|
|
43
|
-
export declare function computeFKDepthPriority(schema: Schema): ReadonlyMap<string, number>;
|
|
44
|
-
export declare function deriveConfigFromSchema(schema: Schema): RuntimeConfig;
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Derives engine configuration from a schema. This module holds two pure
|
|
3
|
-
* functions: {@link computeFKDepthPriority} works out a safe row-insertion
|
|
4
|
-
* order from the schema's foreign-key relations, and
|
|
5
|
-
* {@link deriveConfigFromSchema} packages that ordering, together with a few
|
|
6
|
-
* defaults, into the {@link RuntimeConfig} a client uses at startup. Both
|
|
7
|
-
* are deterministic transforms of the schema and hold no engine state.
|
|
8
|
-
*/
|
|
9
|
-
import { schemaHash, modelHash, toSchemaJSON } from '../schema/serialize.js';
|
|
10
|
-
// ── Config derivation from schema ─────────────────────────────────────────
|
|
11
|
-
/**
|
|
12
|
-
* Computes a create-priority map that gives the engine a safe order for
|
|
13
|
-
* inserting rows, so a child row is never written before the parent its
|
|
14
|
-
* foreign key references.
|
|
15
|
-
*
|
|
16
|
-
* Every `belongsTo` relation is an edge from a child model to its parent. This
|
|
17
|
-
* function runs Tarjan's strongly-connected-components algorithm over that
|
|
18
|
-
* graph, which does two things at once: it groups any models that reference
|
|
19
|
-
* each other in a cycle into a single component, and it produces those
|
|
20
|
-
* components in an order where parents come before children. Each model then
|
|
21
|
-
* gets a numeric priority from that order, where a lower number means "insert
|
|
22
|
-
* earlier". Top-level models with no parent — an organization or a theme, say —
|
|
23
|
-
* come first, and the deepest descendants come last.
|
|
24
|
-
*
|
|
25
|
-
* Models in the same cycle share a priority, so within a cycle the order rows
|
|
26
|
-
* were queued in breaks the tie. To break a cycle deterministically instead,
|
|
27
|
-
* mark one side of it with `belongsTo(target, fk, { defer: true })`. A deferred
|
|
28
|
-
* edge is left out of the graph, which turns the cycle into a chain and gives
|
|
29
|
-
* the deferred child a strictly higher priority than its parent. Pair it with a
|
|
30
|
-
* Postgres `DEFERRABLE INITIALLY DEFERRED` constraint if you also want the
|
|
31
|
-
* database to relax its check. See {@link BelongsToOptions.defer}.
|
|
32
|
-
*
|
|
33
|
-
* The returned map is keyed by each model's wire type name
|
|
34
|
-
* ({@link ModelDef.typename}, falling back to the schema key), because that is
|
|
35
|
-
* the name the engine looks up at commit time. Keying by the schema key would
|
|
36
|
-
* miss that lookup, and every model would fall back to the default priority.
|
|
37
|
-
*
|
|
38
|
-
* The result does not depend on which model the walk starts from, and the
|
|
39
|
-
* algorithm runs in time linear in the number of models plus relations.
|
|
40
|
-
* Reference: Tarjan, R. (1972), "Depth-first search and linear graph
|
|
41
|
-
* algorithms."
|
|
42
|
-
*/
|
|
43
|
-
export function computeFKDepthPriority(schema) {
|
|
44
|
-
// schemaKey → typename (wire name used at transaction time)
|
|
45
|
-
const keyToTypename = new Map();
|
|
46
|
-
for (const [key, def] of Object.entries(schema.models)) {
|
|
47
|
-
keyToTypename.set(key, def.typename ?? key);
|
|
48
|
-
}
|
|
49
|
-
// Adjacency: schemaKey → parent schema keys pulled from `belongsTo`.
|
|
50
|
-
// Parents not in the schema (e.g. external types) are dropped so the
|
|
51
|
-
// graph stays closed. Edges marked `{ defer: true }` are also
|
|
52
|
-
// dropped — the schema author has declared this side of a cycle to
|
|
53
|
-
// be the "soft" one (insert with null FK, patch later), so the
|
|
54
|
-
// dependency-graph walker treats it as if the edge weren't there.
|
|
55
|
-
// That breaks the cycle deterministically and lets the other side
|
|
56
|
-
// become a strict topological predecessor.
|
|
57
|
-
const parentsOf = new Map();
|
|
58
|
-
for (const [key, def] of Object.entries(schema.models)) {
|
|
59
|
-
const out = [];
|
|
60
|
-
for (const rel of Object.values(def.relations)) {
|
|
61
|
-
if (rel.type !== 'belongsTo')
|
|
62
|
-
continue;
|
|
63
|
-
if (!keyToTypename.has(rel.target))
|
|
64
|
-
continue;
|
|
65
|
-
if (rel.options?.defer === true)
|
|
66
|
-
continue;
|
|
67
|
-
out.push(rel.target);
|
|
68
|
-
}
|
|
69
|
-
parentsOf.set(key, out);
|
|
70
|
-
}
|
|
71
|
-
// Tarjan SCC bookkeeping
|
|
72
|
-
const dfsIndex = new Map();
|
|
73
|
-
const lowlink = new Map();
|
|
74
|
-
const onStack = new Set();
|
|
75
|
-
const stack = [];
|
|
76
|
-
const sccs = [];
|
|
77
|
-
let counter = 0;
|
|
78
|
-
function strongconnect(v) {
|
|
79
|
-
dfsIndex.set(v, counter);
|
|
80
|
-
lowlink.set(v, counter);
|
|
81
|
-
counter++;
|
|
82
|
-
stack.push(v);
|
|
83
|
-
onStack.add(v);
|
|
84
|
-
for (const w of parentsOf.get(v) ?? []) {
|
|
85
|
-
if (!dfsIndex.has(w)) {
|
|
86
|
-
strongconnect(w);
|
|
87
|
-
lowlink.set(v, Math.min(lowlink.get(v), lowlink.get(w)));
|
|
88
|
-
}
|
|
89
|
-
else if (onStack.has(w)) {
|
|
90
|
-
// Back-edge into the active DFS path — w is in the same SCC as v.
|
|
91
|
-
lowlink.set(v, Math.min(lowlink.get(v), dfsIndex.get(w)));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// v is the root of an SCC: pop everything down to v inclusive.
|
|
95
|
-
if (lowlink.get(v) === dfsIndex.get(v)) {
|
|
96
|
-
const component = [];
|
|
97
|
-
let w;
|
|
98
|
-
do {
|
|
99
|
-
w = stack.pop();
|
|
100
|
-
onStack.delete(w);
|
|
101
|
-
component.push(w);
|
|
102
|
-
} while (w !== v);
|
|
103
|
-
sccs.push(component);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
for (const key of keyToTypename.keys()) {
|
|
107
|
-
if (!dfsIndex.has(key))
|
|
108
|
-
strongconnect(key);
|
|
109
|
-
}
|
|
110
|
-
// Tarjan emits SCCs in reverse topological order of the condensation.
|
|
111
|
-
// In our edge convention (child→parent), reverse-topo of the
|
|
112
|
-
// condensation means root-SCCs (no outgoing edges = no parents)
|
|
113
|
-
// first, leaf-SCCs (deepest descendants) last. We could just use
|
|
114
|
-
// emit-order as the priority — but that gives independent sibling
|
|
115
|
-
// SCCs different priorities, which is semantically wrong: siblings
|
|
116
|
-
// don't depend on each other and shouldn't be ordered relative to
|
|
117
|
-
// each other.
|
|
118
|
-
//
|
|
119
|
-
// Instead, do one more pass to compute *longest-path depth* on the
|
|
120
|
-
// condensation DAG: depth(SCC) = max(depth(parent SCC)) + 1, or 0
|
|
121
|
-
// for SCCs with no in-schema parents. SCCs at the same depth get
|
|
122
|
-
// the same priority — siblings stay tied, insertion order in the
|
|
123
|
-
// queue breaks the tie. Priority = (depth + 1) * 10.
|
|
124
|
-
//
|
|
125
|
-
// We can compute this in a single pass over the SCCs because
|
|
126
|
-
// Tarjan's emit-order *is* a valid topological order of the
|
|
127
|
-
// condensation: when we process sccs[i], every parent SCC has
|
|
128
|
-
// already been assigned a depth.
|
|
129
|
-
const nodeToSccIdx = new Map();
|
|
130
|
-
sccs.forEach((scc, i) => {
|
|
131
|
-
for (const node of scc)
|
|
132
|
-
nodeToSccIdx.set(node, i);
|
|
133
|
-
});
|
|
134
|
-
const sccDepth = new Map();
|
|
135
|
-
sccs.forEach((scc, i) => {
|
|
136
|
-
let maxParentDepth = -1;
|
|
137
|
-
for (const node of scc) {
|
|
138
|
-
for (const parent of parentsOf.get(node) ?? []) {
|
|
139
|
-
const parentSccIdx = nodeToSccIdx.get(parent);
|
|
140
|
-
if (parentSccIdx === undefined)
|
|
141
|
-
continue;
|
|
142
|
-
if (parentSccIdx === i)
|
|
143
|
-
continue; // intra-SCC edge — not a dep
|
|
144
|
-
const d = sccDepth.get(parentSccIdx);
|
|
145
|
-
if (d !== undefined && d > maxParentDepth)
|
|
146
|
-
maxParentDepth = d;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
sccDepth.set(i, maxParentDepth + 1);
|
|
150
|
-
});
|
|
151
|
-
const out = new Map();
|
|
152
|
-
sccs.forEach((scc, i) => {
|
|
153
|
-
const priority = (sccDepth.get(i) + 1) * 10;
|
|
154
|
-
for (const key of scc) {
|
|
155
|
-
out.set(keyToTypename.get(key), priority);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
return out;
|
|
159
|
-
}
|
|
160
|
-
export function deriveConfigFromSchema(schema) {
|
|
161
|
-
// Field-level serialization for commits happens in the transaction queue,
|
|
162
|
-
// which reads each model's declared fields from the model registry at commit
|
|
163
|
-
// time. There is no per-field metadata to configure here, so these maps stay
|
|
164
|
-
// empty.
|
|
165
|
-
return {
|
|
166
|
-
modelCreatePriority: computeFKDepthPriority(schema),
|
|
167
|
-
defaultCreatePriority: 40,
|
|
168
|
-
defaultNonCreatePriority: 50,
|
|
169
|
-
essentialFields: {},
|
|
170
|
-
classNameFallbackMap: {},
|
|
171
|
-
// Hash this schema once, so startup can detect when it has drifted from the
|
|
172
|
-
// schema the server currently has active. The server and the `ablo push`
|
|
173
|
-
// command compute this same hash.
|
|
174
|
-
expectedSchemaHash: schemaHash(schema),
|
|
175
|
-
// Per-model hashes for the SEMANTIC drift check: on a whole-hash mismatch
|
|
176
|
-
// the client compares only the models it declares, so an additive server
|
|
177
|
-
// change stays silent and a real divergence names the exact models.
|
|
178
|
-
expectedModelHashes: Object.fromEntries(Object.entries(toSchemaJSON(schema).models).map(([key, model]) => [key, modelHash(model)])),
|
|
179
|
-
// For a projection (`selectModels`/`omitModels`), also carry the full source
|
|
180
|
-
// schema's hash. The drift check accepts a server match on either hash, so a
|
|
181
|
-
// subset client stays quiet against a server running its full source schema.
|
|
182
|
-
// Undefined for a directly-authored schema — plain equality applies there.
|
|
183
|
-
expectedSourceSchemaHash: schema.sourceSchemaHash,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The store cluster — what `humans()` constructs at `init` now that the
|
|
3
|
-
* plugin context carries the resolved url and the credential source
|
|
4
|
-
* (ADR 0016; docs/plans/package-split.md, sequence step 2): this client's
|
|
5
|
-
* runtime, the internal component graph, the registered model classes, and
|
|
6
|
-
* the `BaseSyncedStore` that orchestrates them. The engine consumes the
|
|
7
|
-
* cluster instead of constructing it; what remains in the composition root
|
|
8
|
-
* (credential lifecycle, ready(), model proxies, resources) migrates in
|
|
9
|
-
* later steps.
|
|
10
|
-
*
|
|
11
|
-
* The cluster rides the humans surface under {@link kStoreCluster}, a
|
|
12
|
-
* symbol: `layerPluginSurface` merges only string-keyed members onto the
|
|
13
|
-
* client, so the handoff never becomes public client API. When the plugin
|
|
14
|
-
* contract adopts context patches (the decoration end-state), this channel
|
|
15
|
-
* dissolves into them.
|
|
16
|
-
*/
|
|
17
|
-
import type { PluginContext } from '../transaction/plugin.js';
|
|
18
|
-
import type { Schema, SchemaRecord } from '../transaction/schema/schema.js';
|
|
19
|
-
import { type RuntimeContext } from '../RuntimeContext.js';
|
|
20
|
-
import { BaseSyncedStore } from '../BaseSyncedStore.js';
|
|
21
|
-
import { type DefaultCollaborationEvents } from '../sync/SyncWebSocket.js';
|
|
22
|
-
import { type InternalComponents } from './createInternalComponents.js';
|
|
23
|
-
import type { InternalAbloOptions } from './options.js';
|
|
24
|
-
/**
|
|
25
|
-
* The private handoff slot on the humans surface. Symbol-keyed on purpose:
|
|
26
|
-
* surface members merge onto the client by string key, and the cluster is
|
|
27
|
-
* construction machinery, not client API.
|
|
28
|
-
*/
|
|
29
|
-
export declare const kStoreCluster: unique symbol;
|
|
30
|
-
/** What `humans().init` constructs and the engine consumes. */
|
|
31
|
-
export interface StoreCluster {
|
|
32
|
-
/** This client's runtime — every component below was constructed with it. */
|
|
33
|
-
readonly runtime: RuntimeContext;
|
|
34
|
-
/** The component graph: registry, pool, bootstrap, database, sync client, hydration. */
|
|
35
|
-
readonly components: InternalComponents;
|
|
36
|
-
/** The store orchestrating the graph, holding the host-built connection. */
|
|
37
|
-
readonly store: BaseSyncedStore<DefaultCollaborationEvents, Schema<SchemaRecord>>;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Builds the cluster from what the context carries, or returns `null` when
|
|
41
|
-
* it does not carry enough (no connection, no resolved url, no credential
|
|
42
|
-
* source, or no schema on the options bag) — the same tolerance the
|
|
43
|
-
* presence stream established: `init` constructs what the context can
|
|
44
|
-
* support and no more. The reactive factory always supplies all four and
|
|
45
|
-
* treats a missing cluster as a configuration fault.
|
|
46
|
-
*/
|
|
47
|
-
export declare function buildStoreCluster(context: PluginContext<InternalAbloOptions<SchemaRecord>>): StoreCluster | null;
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The store cluster — what `humans()` constructs at `init` now that the
|
|
3
|
-
* plugin context carries the resolved url and the credential source
|
|
4
|
-
* (ADR 0016; docs/plans/package-split.md, sequence step 2): this client's
|
|
5
|
-
* runtime, the internal component graph, the registered model classes, and
|
|
6
|
-
* the `BaseSyncedStore` that orchestrates them. The engine consumes the
|
|
7
|
-
* cluster instead of constructing it; what remains in the composition root
|
|
8
|
-
* (credential lifecycle, ready(), model proxies, resources) migrates in
|
|
9
|
-
* later steps.
|
|
10
|
-
*
|
|
11
|
-
* The cluster rides the humans surface under {@link kStoreCluster}, a
|
|
12
|
-
* symbol: `layerPluginSurface` merges only string-keyed members onto the
|
|
13
|
-
* client, so the handoff never becomes public client API. When the plugin
|
|
14
|
-
* contract adopts context patches (the decoration end-state), this channel
|
|
15
|
-
* dissolves into them.
|
|
16
|
-
*/
|
|
17
|
-
import { shouldUseInMemoryPersistence } from '../transaction/persistence.js';
|
|
18
|
-
import { noopObservability, browserOnlineStatus, defaultSessionErrorDetector, noopAnalytics, } from '../RuntimeContext.js';
|
|
19
|
-
import { initRuntime } from '../context.js';
|
|
20
|
-
import { alwaysOnline } from '../adapters/alwaysOnline.js';
|
|
21
|
-
import { BaseSyncedStore } from '../BaseSyncedStore.js';
|
|
22
|
-
import { SyncWebSocket } from '../sync/SyncWebSocket.js';
|
|
23
|
-
import { createInternalComponents, } from './createInternalComponents.js';
|
|
24
|
-
import { registerModelsFromSchema } from './modelRegistration.js';
|
|
25
|
-
import { deriveConfigFromSchema } from './schemaConfig.js';
|
|
26
|
-
import { createDefaultMutationExecutor } from './wsMutationExecutor.js';
|
|
27
|
-
/**
|
|
28
|
-
* The private handoff slot on the humans surface. Symbol-keyed on purpose:
|
|
29
|
-
* surface members merge onto the client by string key, and the cluster is
|
|
30
|
-
* construction machinery, not client API.
|
|
31
|
-
*/
|
|
32
|
-
export const kStoreCluster = Symbol('ablo.humans.storeCluster');
|
|
33
|
-
/**
|
|
34
|
-
* The contract types the connection as the core `WsTransport`; on the
|
|
35
|
-
* reactive path the factory constructs the materialising subclass with the
|
|
36
|
-
* default collaboration vocabulary, and this guard is where that knowledge
|
|
37
|
-
* becomes a type. A connection that is not the subclass means the cluster
|
|
38
|
-
* cannot be built here.
|
|
39
|
-
*/
|
|
40
|
-
function isReactiveSocket(transport) {
|
|
41
|
-
return transport instanceof SyncWebSocket;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Builds the cluster from what the context carries, or returns `null` when
|
|
45
|
-
* it does not carry enough (no connection, no resolved url, no credential
|
|
46
|
-
* source, or no schema on the options bag) — the same tolerance the
|
|
47
|
-
* presence stream established: `init` constructs what the context can
|
|
48
|
-
* support and no more. The reactive factory always supplies all four and
|
|
49
|
-
* treats a missing cluster as a configuration fault.
|
|
50
|
-
*/
|
|
51
|
-
export function buildStoreCluster(context) {
|
|
52
|
-
const options = context.options;
|
|
53
|
-
const { url, auth, transport, logger } = context;
|
|
54
|
-
if (!options?.schema || !url || !auth || !isReactiveSocket(transport)) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
const schema = options.schema;
|
|
58
|
-
// Config derives from the schema; caller-supplied overrides layer on top,
|
|
59
|
-
// caller winning per key.
|
|
60
|
-
const config = {
|
|
61
|
-
...deriveConfigFromSchema(schema),
|
|
62
|
-
...options.configOverrides,
|
|
63
|
-
};
|
|
64
|
-
// The default executor sends `{ type: 'commit', ... }` over the context's
|
|
65
|
-
// connection; before it opens, sends reject with the diagnosed not-ready
|
|
66
|
-
// error and the MutationQueue owns the retry. A caller-supplied executor
|
|
67
|
-
// still wins (test mocks, alternative transports).
|
|
68
|
-
const executor = options.mutationExecutor ?? createDefaultMutationExecutor(() => transport);
|
|
69
|
-
// This client's runtime — the instance the whole graph is constructed
|
|
70
|
-
// with, so two clients in one process never read each other's logger,
|
|
71
|
-
// config, or executor. `getModelMetadata` closes over this client's own
|
|
72
|
-
// registry (assigned once the graph exists below), never the
|
|
73
|
-
// active-registry global.
|
|
74
|
-
let registryForMetadata;
|
|
75
|
-
const runtime = {
|
|
76
|
-
logger,
|
|
77
|
-
observability: options.observability ?? noopObservability,
|
|
78
|
-
analytics: options.analytics ?? noopAnalytics,
|
|
79
|
-
sessionErrorDetector: options.sessionErrorDetector ?? defaultSessionErrorDetector,
|
|
80
|
-
onlineStatus: options.onlineStatus ??
|
|
81
|
-
(shouldUseInMemoryPersistence(options) ? alwaysOnline() : browserOnlineStatus),
|
|
82
|
-
config,
|
|
83
|
-
mutationExecutor: executor,
|
|
84
|
-
getModelMetadata: (name) => registryForMetadata?.getMetadata(name),
|
|
85
|
-
};
|
|
86
|
-
// The module-global bridge: code not yet constructed with an instance
|
|
87
|
-
// (model instances, the react hooks, the socket's context ports) still
|
|
88
|
-
// reads it. Last-writer-wins there, exactly as before the runtime became
|
|
89
|
-
// per-client. Retired reference by reference (docs/plans/package-split.md).
|
|
90
|
-
initRuntime(runtime);
|
|
91
|
-
const components = createInternalComponents({
|
|
92
|
-
schema,
|
|
93
|
-
url,
|
|
94
|
-
options,
|
|
95
|
-
auth,
|
|
96
|
-
runtime,
|
|
97
|
-
});
|
|
98
|
-
registryForMetadata = components.modelRegistry;
|
|
99
|
-
registerModelsFromSchema(schema, components.modelRegistry);
|
|
100
|
-
const store = new BaseSyncedStore({
|
|
101
|
-
syncClient: components.syncClient,
|
|
102
|
-
database: components.database,
|
|
103
|
-
objectPool: components.objectPool,
|
|
104
|
-
modelRegistry: components.modelRegistry,
|
|
105
|
-
syncWebSocket: transport,
|
|
106
|
-
schema,
|
|
107
|
-
url,
|
|
108
|
-
auth,
|
|
109
|
-
runtime,
|
|
110
|
-
// The resolved list, so the store's delta pipeline dispatches the
|
|
111
|
-
// declared stage handlers — including this plugin's own `apply`.
|
|
112
|
-
stagePlugins: context.plugins ?? [],
|
|
113
|
-
},
|
|
114
|
-
// Collaboration vocabulary is the application's: the SDK subscribes to
|
|
115
|
-
// the event types the caller declares and to nothing by default.
|
|
116
|
-
{ collaborationEvents: options.collaborationEvents ?? [] });
|
|
117
|
-
return { runtime, components, store };
|
|
118
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The materialiser's lifecycle: the first credential mint, identity
|
|
3
|
-
* resolution, the credential-refresh machinery, and the idempotent `ready()`
|
|
4
|
-
* that drives the store's initialize generator to completion. Extracted from
|
|
5
|
-
* the composition root along the humans() seam (docs/plans/package-split.md):
|
|
6
|
-
* the engine wires it with the prelude's credential slice and consumes
|
|
7
|
-
* `ready`; resolved identity flows back through one callback, so the
|
|
8
|
-
* engine-side state it seeds (the self locals, the streams) stays with the
|
|
9
|
-
* engine.
|
|
10
|
-
*/
|
|
11
|
-
import type { SchemaRecord, Schema } from '../transaction/schema/schema.js';
|
|
12
|
-
import type { ParticipantKind } from '../transaction/types/participant.js';
|
|
13
|
-
import type { Logger } from '../transaction/logger.js';
|
|
14
|
-
import type { AuthCredentialSource } from '../transaction/auth/credentialSource.js';
|
|
15
|
-
import type { ApiKeySetter } from '../transaction/auth/apiKey.js';
|
|
16
|
-
import type { AbloError } from '../transaction/errors.js';
|
|
17
|
-
import type { InternalAbloOptions } from './options.js';
|
|
18
|
-
import type { StoreCluster } from './storeCluster.js';
|
|
19
|
-
/** What identity resolution settled, handed back for the engine to seed. */
|
|
20
|
-
export interface IdentitySeed {
|
|
21
|
-
readonly userId: string;
|
|
22
|
-
readonly participantKind: ParticipantKind;
|
|
23
|
-
/** The resolved account scope; null until known. */
|
|
24
|
-
readonly accountScope: string | null;
|
|
25
|
-
readonly syncGroups: readonly string[];
|
|
26
|
-
}
|
|
27
|
-
export interface StoreLifecycle {
|
|
28
|
-
/**
|
|
29
|
-
* Drives initialization to completion: first mint, identity resolution,
|
|
30
|
-
* seeding, then the store's initialize generator. Idempotent — the first
|
|
31
|
-
* call starts it, later calls share the promise; a failed attempt clears
|
|
32
|
-
* the memo so retry triggers can re-bootstrap.
|
|
33
|
-
*/
|
|
34
|
-
ready(): Promise<void>;
|
|
35
|
-
/** Stops the credential refresh scheduler, if identity resolution installed one. */
|
|
36
|
-
dispose(): void;
|
|
37
|
-
}
|
|
38
|
-
export interface StoreLifecycleDeps<S extends SchemaRecord> {
|
|
39
|
-
readonly cluster: StoreCluster;
|
|
40
|
-
readonly schema: Schema<S>;
|
|
41
|
-
readonly internalOptions: InternalAbloOptions<S>;
|
|
42
|
-
readonly authCredentials: AuthCredentialSource;
|
|
43
|
-
readonly credentialResolver: (() => Promise<string | null>) | null;
|
|
44
|
-
readonly configuredApiKey: string | ApiKeySetter | null;
|
|
45
|
-
readonly configuredAuthToken: string | null;
|
|
46
|
-
readonly url: string;
|
|
47
|
-
readonly kind: ParticipantKind;
|
|
48
|
-
readonly logger: Logger;
|
|
49
|
-
/** The engine's up-front options validation; a present error makes `ready()` reject with it. */
|
|
50
|
-
readonly validationError: AbloError | null;
|
|
51
|
-
/** Seeds resolved identity into the engine's own state: the self locals and the streams. */
|
|
52
|
-
readonly onIdentityResolved: (seed: IdentitySeed) => void;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Wires the credential machinery onto the cluster and returns the `ready`
|
|
56
|
-
* the client exposes. Wiring happens now — the refresh lifecycle, the
|
|
57
|
-
* lazy-query auth recovery, the executor binding, and the opt-in auto-start;
|
|
58
|
-
* the first mint waits for `ready()` so the first connection carries a
|
|
59
|
-
* token.
|
|
60
|
-
*/
|
|
61
|
-
export declare function startStoreLifecycle<S extends SchemaRecord>(deps: StoreLifecycleDeps<S>): StoreLifecycle;
|