@abloatai/ablo 0.35.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/CHANGELOG.md +71 -1929
- package/NOTICE +2 -2
- package/README.md +23 -532
- package/assets/banner.png +0 -0
- package/dist/auth.d.ts +2 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +2 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -0
- package/dist/coordination.d.ts +2 -0
- package/dist/coordination.d.ts.map +1 -0
- package/dist/coordination.js +2 -0
- package/dist/coordination.js.map +1 -0
- package/dist/index.d.ts +3 -112
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -161
- package/dist/index.js.map +1 -0
- package/dist/react.d.ts +4 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +3 -0
- package/dist/react.js.map +1 -0
- package/dist/schema.d.ts +2 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -0
- package/dist/source-conformance.d.ts +2 -0
- package/dist/source-conformance.d.ts.map +1 -0
- package/dist/source-conformance.js +2 -0
- package/dist/source-conformance.js.map +1 -0
- package/dist/source-drizzle.d.ts +2 -0
- package/dist/source-drizzle.d.ts.map +1 -0
- package/dist/source-drizzle.js +2 -0
- package/dist/source-drizzle.js.map +1 -0
- package/dist/source-kysely.d.ts +2 -0
- package/dist/source-kysely.d.ts.map +1 -0
- package/dist/source-kysely.js +2 -0
- package/dist/source-kysely.js.map +1 -0
- package/dist/source-next.d.ts +2 -0
- package/dist/source-next.d.ts.map +1 -0
- package/dist/source-next.js +2 -0
- package/dist/source-next.js.map +1 -0
- package/dist/source.d.ts +2 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +2 -0
- package/dist/source.js.map +1 -0
- package/dist/wire.d.ts +2 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +2 -0
- package/dist/wire.js.map +1 -0
- package/docs/agents.md +2 -2
- package/docs/api-keys.md +13 -12
- package/docs/api.md +15 -53
- package/docs/audit.md +4 -3
- package/docs/cli.md +11 -11
- package/docs/client-behavior.md +9 -9
- package/docs/concurrency-convention.md +28 -42
- package/docs/coordination.md +228 -86
- package/docs/data-sources.md +5 -5
- package/docs/debugging.md +34 -12
- package/docs/deployment.md +8 -8
- package/docs/examples/agent-human.md +4 -4
- package/docs/examples/ai-sdk-tool.md +1 -1
- package/docs/examples/existing-python-backend.md +15 -4
- package/docs/examples/nextjs.md +27 -6
- package/docs/examples/scoped-agent.md +3 -3
- package/docs/examples/server-agent.md +2 -2
- package/docs/groups.md +57 -3
- package/docs/guarantees.md +37 -10
- package/docs/how-it-works.md +32 -8
- package/docs/idempotency.md +6 -6
- package/docs/identity.md +24 -24
- package/docs/index.md +8 -8
- package/docs/integration-guide.md +38 -16
- package/docs/internal/README.md +18 -0
- package/docs/internal/agent-fleet-coordination-design.md +171 -0
- package/docs/internal/agent-orchestration.md +58 -0
- package/docs/internal/commit-identifiers.md +91 -0
- package/docs/internal/concurrency-open-decisions.md +37 -0
- package/docs/internal/data-source-reverse-channel.md +150 -0
- package/docs/internal/per-field-conflict-detection.md +165 -0
- package/docs/internal/postgres-replication.md +64 -0
- package/docs/internal/serializable-schema.md +119 -0
- package/docs/internal/structure.md +32 -0
- package/docs/mcp.md +9 -9
- package/docs/migration.md +37 -18
- package/docs/projects.md +1 -1
- package/docs/quickstart.md +2 -2
- package/docs/react.md +24 -13
- package/docs/schema-contract.md +3 -3
- package/docs/sessions.md +91 -37
- package/docs/webhooks.md +9 -9
- package/examples/README.md +2 -2
- package/examples/data-source/README.md +1 -1
- package/examples/data-source/ablo-driver.ts +1 -1
- package/examples/data-source/customer-server.ts +1 -1
- package/examples/data-source/run.ts +1 -1
- package/examples/data-source/schema.ts +1 -1
- package/examples/quickstart.ts +2 -2
- package/llms.txt +12 -12
- package/package.json +64 -174
- package/dist/BaseSyncedStore.d.ts +0 -823
- package/dist/BaseSyncedStore.js +0 -1955
- package/dist/Database.d.ts +0 -335
- package/dist/Database.js +0 -1500
- package/dist/InstanceCache.d.ts +0 -233
- package/dist/InstanceCache.js +0 -1164
- package/dist/LazyReferenceCollection.d.ts +0 -177
- package/dist/LazyReferenceCollection.js +0 -461
- package/dist/Model.d.ts +0 -444
- package/dist/Model.js +0 -909
- package/dist/ModelRegistry.d.ts +0 -221
- package/dist/ModelRegistry.js +0 -537
- package/dist/NetworkMonitor.d.ts +0 -26
- package/dist/NetworkMonitor.js +0 -77
- package/dist/RuntimeContext.d.ts +0 -52
- package/dist/RuntimeContext.js +0 -80
- package/dist/SyncClient.d.ts +0 -551
- package/dist/SyncClient.js +0 -2199
- package/dist/adapters/alwaysOnline.d.ts +0 -14
- package/dist/adapters/alwaysOnline.js +0 -17
- package/dist/adapters/inMemoryStorage.d.ts +0 -31
- package/dist/adapters/inMemoryStorage.js +0 -110
- package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
- package/dist/ai-sdk/coordinatedTool.js +0 -134
- package/dist/ai-sdk/coordinationContext.d.ts +0 -46
- package/dist/ai-sdk/coordinationContext.js +0 -106
- package/dist/ai-sdk/index.d.ts +0 -121
- package/dist/ai-sdk/index.js +0 -121
- package/dist/ai-sdk/wrap.d.ts +0 -65
- package/dist/ai-sdk/wrap.js +0 -39
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js +0 -8
- package/dist/batching/index.d.ts +0 -55
- package/dist/batching/index.js +0 -147
- package/dist/cli.cjs +0 -288600
- package/dist/client/Ablo.d.ts +0 -231
- package/dist/client/Ablo.js +0 -149
- package/dist/client/abloClient.d.ts +0 -309
- package/dist/client/abloClient.js +0 -13
- package/dist/client/clientPrelude.d.ts +0 -52
- package/dist/client/clientPrelude.js +0 -60
- package/dist/client/consoleLogger.d.ts +0 -35
- package/dist/client/consoleLogger.js +0 -44
- package/dist/client/coreClient.d.ts +0 -60
- package/dist/client/coreClient.js +0 -118
- package/dist/client/createInternalComponents.d.ts +0 -46
- package/dist/client/createInternalComponents.js +0 -92
- package/dist/client/createModelProxy.d.ts +0 -228
- package/dist/client/createModelProxy.js +0 -818
- package/dist/client/humans.d.ts +0 -48
- package/dist/client/humans.js +0 -52
- package/dist/client/modelRegistration.d.ts +0 -10
- package/dist/client/modelRegistration.js +0 -312
- package/dist/client/options.d.ts +0 -461
- package/dist/client/options.js +0 -7
- package/dist/client/reactiveEngine.d.ts +0 -48
- package/dist/client/reactiveEngine.js +0 -910
- package/dist/client/resourceTypes.d.ts +0 -12
- package/dist/client/resourceTypes.js +0 -10
- package/dist/client/schemaConfig.d.ts +0 -44
- package/dist/client/schemaConfig.js +0 -185
- package/dist/client/validateAbloOptions.d.ts +0 -42
- package/dist/client/validateAbloOptions.js +0 -43
- package/dist/client/wsMutationExecutor.d.ts +0 -27
- package/dist/client/wsMutationExecutor.js +0 -72
- package/dist/context.d.ts +0 -29
- package/dist/context.js +0 -58
- package/dist/coordination/ClaimLog.d.ts +0 -26
- package/dist/coordination/ClaimLog.js +0 -32
- package/dist/coordination/index.d.ts +0 -1
- package/dist/coordination/index.js +0 -8
- package/dist/core/DatabaseManager.d.ts +0 -105
- package/dist/core/DatabaseManager.js +0 -387
- package/dist/core/QueryProcessor.d.ts +0 -75
- package/dist/core/QueryProcessor.js +0 -255
- package/dist/core/QueryView.d.ts +0 -79
- package/dist/core/QueryView.js +0 -218
- package/dist/core/StoreManager.d.ts +0 -112
- package/dist/core/StoreManager.js +0 -302
- package/dist/core/ViewRegistry.d.ts +0 -20
- package/dist/core/ViewRegistry.js +0 -55
- package/dist/core/index.d.ts +0 -33
- package/dist/core/index.js +0 -48
- package/dist/core/openIDBWithTimeout.d.ts +0 -65
- package/dist/core/openIDBWithTimeout.js +0 -153
- package/dist/core/queryUtils.d.ts +0 -45
- package/dist/core/queryUtils.js +0 -69
- package/dist/core/storeContract.d.ts +0 -145
- package/dist/core/storeContract.js +0 -12
- package/dist/docs/catalog.d.ts +0 -72
- package/dist/docs/catalog.js +0 -227
- package/dist/docs/index.d.ts +0 -10
- package/dist/docs/index.js +0 -10
- package/dist/environment.d.ts +0 -1
- package/dist/environment.js +0 -8
- package/dist/interfaces/index.d.ts +0 -311
- package/dist/interfaces/index.js +0 -9
- package/dist/keys/index.d.ts +0 -1
- package/dist/keys/index.js +0 -8
- package/dist/mutators/RecordingMutation.d.ts +0 -36
- package/dist/mutators/RecordingMutation.js +0 -182
- package/dist/mutators/Transaction.d.ts +0 -40
- package/dist/mutators/Transaction.js +0 -58
- package/dist/mutators/UndoManager.d.ts +0 -258
- package/dist/mutators/UndoManager.js +0 -658
- package/dist/mutators/defineMutators.d.ts +0 -60
- package/dist/mutators/defineMutators.js +0 -18
- package/dist/mutators/inverseOp.d.ts +0 -126
- package/dist/mutators/inverseOp.js +0 -71
- package/dist/mutators/mutateActions.d.ts +0 -45
- package/dist/mutators/mutateActions.js +0 -105
- package/dist/mutators/readerActions.d.ts +0 -33
- package/dist/mutators/readerActions.js +0 -57
- package/dist/mutators/undoApply.d.ts +0 -51
- package/dist/mutators/undoApply.js +0 -117
- package/dist/policy/index.d.ts +0 -21
- package/dist/policy/index.js +0 -20
- package/dist/query/client.d.ts +0 -61
- package/dist/query/client.js +0 -137
- package/dist/query/types.d.ts +0 -85
- package/dist/query/types.js +0 -16
- package/dist/react/AbloProvider.d.ts +0 -230
- package/dist/react/AbloProvider.js +0 -455
- package/dist/react/ClientSideSuspense.d.ts +0 -36
- package/dist/react/ClientSideSuspense.js +0 -17
- package/dist/react/DefaultFallback.d.ts +0 -24
- package/dist/react/DefaultFallback.js +0 -43
- package/dist/react/context.d.ts +0 -55
- package/dist/react/context.js +0 -29
- package/dist/react/index.d.ts +0 -61
- package/dist/react/index.js +0 -66
- package/dist/react/internalContext.d.ts +0 -33
- package/dist/react/internalContext.js +0 -3
- package/dist/react/useAblo.d.ts +0 -75
- package/dist/react/useAblo.js +0 -102
- package/dist/react/useCurrentUserId.d.ts +0 -22
- package/dist/react/useCurrentUserId.js +0 -34
- package/dist/react/useErrorListener.d.ts +0 -20
- package/dist/react/useErrorListener.js +0 -38
- package/dist/react/useMutationFailureListener.d.ts +0 -26
- package/dist/react/useMutationFailureListener.js +0 -38
- package/dist/react/useMutators.d.ts +0 -56
- package/dist/react/useMutators.js +0 -84
- package/dist/react/useReactive.d.ts +0 -35
- package/dist/react/useReactive.js +0 -123
- package/dist/react/useSyncStatus.d.ts +0 -59
- package/dist/react/useSyncStatus.js +0 -76
- package/dist/react/useUndoScope.d.ts +0 -34
- package/dist/react/useUndoScope.js +0 -81
- package/dist/schema/coordination.d.ts +0 -112
- package/dist/schema/coordination.js +0 -129
- package/dist/schema/ddl.d.ts +0 -97
- package/dist/schema/ddl.js +0 -491
- package/dist/schema/ddlLock.d.ts +0 -35
- package/dist/schema/ddlLock.js +0 -46
- package/dist/schema/diff.d.ts +0 -225
- package/dist/schema/diff.js +0 -289
- package/dist/schema/generate.d.ts +0 -19
- package/dist/schema/generate.js +0 -86
- package/dist/schema/index.d.ts +0 -41
- package/dist/schema/index.js +0 -76
- package/dist/schema/queries.d.ts +0 -201
- package/dist/schema/queries.js +0 -144
- package/dist/schema/select.d.ts +0 -40
- package/dist/schema/select.js +0 -87
- package/dist/schema/serialize.d.ts +0 -115
- package/dist/schema/serialize.js +0 -262
- package/dist/schema/sugar.d.ts +0 -109
- package/dist/schema/sugar.js +0 -83
- package/dist/schema/syncDeltaRow.d.ts +0 -6
- package/dist/schema/syncDeltaRow.js +0 -6
- package/dist/server/adapter.d.ts +0 -173
- package/dist/server/adapter.js +0 -18
- package/dist/server/commit.d.ts +0 -107
- package/dist/server/commit.js +0 -1
- package/dist/server/index.d.ts +0 -14
- package/dist/server/index.js +0 -2
- package/dist/server/readConfig.d.ts +0 -80
- package/dist/server/readConfig.js +0 -8
- package/dist/server/storageMode.d.ts +0 -23
- package/dist/server/storageMode.js +0 -17
- package/dist/source/adapter.d.ts +0 -81
- package/dist/source/adapter.js +0 -22
- package/dist/source/adapters/drizzle.d.ts +0 -48
- package/dist/source/adapters/drizzle.js +0 -219
- package/dist/source/adapters/kysely.d.ts +0 -42
- package/dist/source/adapters/kysely.js +0 -205
- package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
- package/dist/source/adapters/kyselyMutationCore.js +0 -125
- package/dist/source/adapters/memory.d.ts +0 -13
- package/dist/source/adapters/memory.js +0 -130
- package/dist/source/adapters/prisma.d.ts +0 -63
- package/dist/source/adapters/prisma.js +0 -202
- package/dist/source/conformance.d.ts +0 -37
- package/dist/source/conformance.js +0 -215
- package/dist/source/connector.d.ts +0 -95
- package/dist/source/connector.js +0 -266
- package/dist/source/connectorProtocol.d.ts +0 -154
- package/dist/source/connectorProtocol.js +0 -163
- package/dist/source/contract.d.ts +0 -195
- package/dist/source/contract.js +0 -164
- package/dist/source/factory.d.ts +0 -92
- package/dist/source/factory.js +0 -286
- package/dist/source/footprint.d.ts +0 -111
- package/dist/source/footprint.js +0 -0
- package/dist/source/idempotency.d.ts +0 -61
- package/dist/source/idempotency.js +0 -144
- package/dist/source/index.d.ts +0 -23
- package/dist/source/index.js +0 -30
- package/dist/source/migrations.d.ts +0 -21
- package/dist/source/migrations.js +0 -103
- package/dist/source/next.d.ts +0 -32
- package/dist/source/next.js +0 -25
- package/dist/source/pushQueue.d.ts +0 -134
- package/dist/source/pushQueue.js +0 -256
- package/dist/source/signing.d.ts +0 -92
- package/dist/source/signing.js +0 -162
- package/dist/source/types.d.ts +0 -401
- package/dist/source/types.js +0 -59
- package/dist/stores/ObjectStore.d.ts +0 -115
- package/dist/stores/ObjectStore.js +0 -393
- package/dist/stores/ObjectStoreContract.d.ts +0 -38
- package/dist/stores/ObjectStoreContract.js +0 -1
- package/dist/stores/SyncActionStore.d.ts +0 -97
- package/dist/stores/SyncActionStore.js +0 -504
- package/dist/stores/syncAction.d.ts +0 -26
- package/dist/stores/syncAction.js +0 -16
- package/dist/surface.d.ts +0 -36
- package/dist/surface.js +0 -75
- package/dist/sync/BootstrapFetcher.d.ts +0 -280
- package/dist/sync/BootstrapFetcher.js +0 -962
- package/dist/sync/ConnectionManager.d.ts +0 -8
- package/dist/sync/ConnectionManager.js +0 -8
- package/dist/sync/OnDemandLoader.d.ts +0 -228
- package/dist/sync/OnDemandLoader.js +0 -742
- package/dist/sync/SubscriptionManager.d.ts +0 -159
- package/dist/sync/SubscriptionManager.js +0 -243
- package/dist/sync/SyncWebSocket.d.ts +0 -173
- package/dist/sync/SyncWebSocket.js +0 -438
- package/dist/sync/awaitClaimGrant.d.ts +0 -6
- package/dist/sync/awaitClaimGrant.js +0 -6
- package/dist/sync/bootstrapApply.d.ts +0 -70
- package/dist/sync/bootstrapApply.js +0 -73
- package/dist/sync/commitFrames.d.ts +0 -8
- package/dist/sync/commitFrames.js +0 -8
- package/dist/sync/contextPorts.d.ts +0 -18
- package/dist/sync/contextPorts.js +0 -31
- package/dist/sync/createClaimStream.d.ts +0 -7
- package/dist/sync/createClaimStream.js +0 -7
- package/dist/sync/createPresenceStream.d.ts +0 -69
- package/dist/sync/createPresenceStream.js +0 -200
- package/dist/sync/createSnapshot.d.ts +0 -29
- package/dist/sync/createSnapshot.js +0 -118
- package/dist/sync/credentialLifecycle.d.ts +0 -7
- package/dist/sync/credentialLifecycle.js +0 -7
- package/dist/sync/deltaPipeline.d.ts +0 -113
- package/dist/sync/deltaPipeline.js +0 -261
- package/dist/sync/groupChange.d.ts +0 -113
- package/dist/sync/groupChange.js +0 -242
- package/dist/sync/participants.d.ts +0 -115
- package/dist/sync/participants.js +0 -344
- package/dist/sync/persistedPrefix.d.ts +0 -12
- package/dist/sync/persistedPrefix.js +0 -22
- package/dist/sync/schemaDrift.d.ts +0 -55
- package/dist/sync/schemaDrift.js +0 -53
- package/dist/sync/schemas.d.ts +0 -70
- package/dist/sync/schemas.js +0 -94
- package/dist/sync/syncCursor.d.ts +0 -40
- package/dist/sync/syncCursor.js +0 -55
- package/dist/sync/syncPlan.d.ts +0 -54
- package/dist/sync/syncPlan.js +0 -50
- package/dist/sync/wsFrameHandlers.d.ts +0 -8
- package/dist/sync/wsFrameHandlers.js +0 -8
- package/dist/testing/fixtures/bootstrap.d.ts +0 -49
- package/dist/testing/fixtures/bootstrap.js +0 -59
- package/dist/testing/fixtures/deltas.d.ts +0 -83
- package/dist/testing/fixtures/deltas.js +0 -136
- package/dist/testing/fixtures/httpResponses.d.ts +0 -70
- package/dist/testing/fixtures/httpResponses.js +0 -90
- package/dist/testing/fixtures/models.d.ts +0 -83
- package/dist/testing/fixtures/models.js +0 -272
- package/dist/testing/helpers/reactWrapper.d.ts +0 -69
- package/dist/testing/helpers/reactWrapper.js +0 -67
- package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
- package/dist/testing/helpers/syncEngineHarness.js +0 -73
- package/dist/testing/helpers/wait.d.ts +0 -30
- package/dist/testing/helpers/wait.js +0 -49
- package/dist/testing/index.d.ts +0 -23
- package/dist/testing/index.js +0 -33
- package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
- package/dist/testing/mocks/FakeDatabase.js +0 -10
- package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
- package/dist/testing/mocks/MockMutationExecutor.js +0 -186
- package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
- package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
- package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
- package/dist/testing/mocks/MockSyncContext.js +0 -72
- package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
- package/dist/testing/mocks/MockSyncStore.js +0 -171
- package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
- package/dist/testing/mocks/MockWebSocket.js +0 -118
- package/dist/transaction/ablo.d.ts +0 -88
- package/dist/transaction/ablo.js +0 -33
- package/dist/transaction/auth/apiKey.d.ts +0 -152
- package/dist/transaction/auth/apiKey.js +0 -419
- package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
- package/dist/transaction/auth/bootstrapScope.js +0 -1
- package/dist/transaction/auth/capability.d.ts +0 -177
- package/dist/transaction/auth/capability.js +0 -199
- package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
- package/dist/transaction/auth/credentialEndpoint.js +0 -86
- package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
- package/dist/transaction/auth/credentialPolicy.js +0 -125
- package/dist/transaction/auth/credentialSource.d.ts +0 -30
- package/dist/transaction/auth/credentialSource.js +0 -55
- package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
- package/dist/transaction/auth/hostedEndpoints.js +0 -21
- package/dist/transaction/auth/identity.d.ts +0 -55
- package/dist/transaction/auth/identity.js +0 -210
- package/dist/transaction/auth/index.d.ts +0 -162
- package/dist/transaction/auth/index.js +0 -304
- package/dist/transaction/auth/schemas.d.ts +0 -59
- package/dist/transaction/auth/schemas.js +0 -85
- package/dist/transaction/auth/sessionMint.d.ts +0 -28
- package/dist/transaction/auth/sessionMint.js +0 -85
- package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -49
- package/dist/transaction/coordination/awaitClaimGrant.js +0 -112
- package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -50
- package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -88
- package/dist/transaction/coordination/claimMeta.d.ts +0 -49
- package/dist/transaction/coordination/claimMeta.js +0 -52
- package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
- package/dist/transaction/coordination/createClaimStream.js +0 -475
- package/dist/transaction/coordination/events.d.ts +0 -74
- package/dist/transaction/coordination/events.js +0 -7
- package/dist/transaction/coordination/index.d.ts +0 -19
- package/dist/transaction/coordination/index.js +0 -44
- package/dist/transaction/coordination/locator.d.ts +0 -83
- package/dist/transaction/coordination/locator.js +0 -82
- package/dist/transaction/coordination/schema.d.ts +0 -1473
- package/dist/transaction/coordination/schema.js +0 -1013
- package/dist/transaction/coordination/targetConflict.d.ts +0 -2
- package/dist/transaction/coordination/targetConflict.js +0 -103
- package/dist/transaction/coordination/trace.d.ts +0 -78
- package/dist/transaction/coordination/trace.js +0 -138
- package/dist/transaction/durableWrites.d.ts +0 -62
- package/dist/transaction/durableWrites.js +0 -71
- package/dist/transaction/environment.d.ts +0 -105
- package/dist/transaction/environment.js +0 -108
- package/dist/transaction/errorCodes.d.ts +0 -403
- package/dist/transaction/errorCodes.js +0 -480
- package/dist/transaction/errors.d.ts +0 -428
- package/dist/transaction/errors.js +0 -686
- package/dist/transaction/index.d.ts +0 -20
- package/dist/transaction/index.js +0 -20
- package/dist/transaction/keys/index.d.ts +0 -87
- package/dist/transaction/keys/index.js +0 -207
- package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
- package/dist/transaction/log/syncDeltaRow.js +0 -95
- package/dist/transaction/logPosition.d.ts +0 -97
- package/dist/transaction/logPosition.js +0 -125
- package/dist/transaction/logger.d.ts +0 -16
- package/dist/transaction/logger.js +0 -7
- package/dist/transaction/observability.d.ts +0 -53
- package/dist/transaction/observability.js +0 -19
- package/dist/transaction/persistence.d.ts +0 -12
- package/dist/transaction/persistence.js +0 -11
- package/dist/transaction/plugin.d.ts +0 -192
- package/dist/transaction/plugin.js +0 -87
- package/dist/transaction/policy/types.d.ts +0 -217
- package/dist/transaction/policy/types.js +0 -126
- package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
- package/dist/transaction/resources/functionalUpdate.js +0 -87
- package/dist/transaction/resources/httpResources.d.ts +0 -266
- package/dist/transaction/resources/httpResources.js +0 -7
- package/dist/transaction/resources/modelOperations.d.ts +0 -319
- package/dist/transaction/resources/modelOperations.js +0 -12
- package/dist/transaction/resources/mutationOptions.d.ts +0 -66
- package/dist/transaction/resources/mutationOptions.js +0 -9
- package/dist/transaction/resources/where.d.ts +0 -85
- package/dist/transaction/resources/where.js +0 -70
- package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
- package/dist/transaction/resources/writeOptionsSchema.js +0 -73
- package/dist/transaction/schema/field.d.ts +0 -126
- package/dist/transaction/schema/field.js +0 -265
- package/dist/transaction/schema/loadStrategy.d.ts +0 -45
- package/dist/transaction/schema/loadStrategy.js +0 -46
- package/dist/transaction/schema/model.d.ts +0 -379
- package/dist/transaction/schema/model.js +0 -123
- package/dist/transaction/schema/openapi.d.ts +0 -57
- package/dist/transaction/schema/openapi.js +0 -340
- package/dist/transaction/schema/relation.d.ts +0 -199
- package/dist/transaction/schema/relation.js +0 -104
- package/dist/transaction/schema/residency.d.ts +0 -29
- package/dist/transaction/schema/residency.js +0 -25
- package/dist/transaction/schema/roles.d.ts +0 -249
- package/dist/transaction/schema/roles.js +0 -230
- package/dist/transaction/schema/schema.d.ts +0 -324
- package/dist/transaction/schema/schema.js +0 -305
- package/dist/transaction/schema/tenancy.d.ts +0 -139
- package/dist/transaction/schema/tenancy.js +0 -190
- package/dist/transaction/transactionLayer.d.ts +0 -82
- package/dist/transaction/transactionLayer.js +0 -24
- package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
- package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
- package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
- package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
- package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
- package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
- package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
- package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
- package/dist/transaction/transport/commitFrames.d.ts +0 -90
- package/dist/transaction/transport/commitFrames.js +0 -134
- package/dist/transaction/transport/connectionManager.d.ts +0 -215
- package/dist/transaction/transport/connectionManager.js +0 -673
- package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
- package/dist/transaction/transport/credentialLifecycle.js +0 -324
- package/dist/transaction/transport/heartbeat.d.ts +0 -65
- package/dist/transaction/transport/heartbeat.js +0 -93
- package/dist/transaction/transport/httpClient.d.ts +0 -123
- package/dist/transaction/transport/httpClient.js +0 -145
- package/dist/transaction/transport/httpOptions.d.ts +0 -33
- package/dist/transaction/transport/httpOptions.js +0 -12
- package/dist/transaction/transport/httpTransport.d.ts +0 -8
- package/dist/transaction/transport/httpTransport.js +0 -1276
- package/dist/transaction/transport/networkProbe.d.ts +0 -84
- package/dist/transaction/transport/networkProbe.js +0 -207
- package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
- package/dist/transaction/transport/wsFrameHandlers.js +0 -429
- package/dist/transaction/transport/wsTransport.d.ts +0 -576
- package/dist/transaction/transport/wsTransport.js +0 -1017
- package/dist/transaction/types/assertExact.d.ts +0 -17
- package/dist/transaction/types/assertExact.js +0 -1
- package/dist/transaction/types/global.d.ts +0 -107
- package/dist/transaction/types/global.js +0 -40
- package/dist/transaction/types/index.d.ts +0 -205
- package/dist/transaction/types/index.js +0 -56
- package/dist/transaction/types/modelData.d.ts +0 -10
- package/dist/transaction/types/modelData.js +0 -9
- package/dist/transaction/types/participant.d.ts +0 -20
- package/dist/transaction/types/participant.js +0 -10
- package/dist/transaction/types/streams.d.ts +0 -540
- package/dist/transaction/types/streams.js +0 -11
- package/dist/transaction/utils/asyncIterator.d.ts +0 -34
- package/dist/transaction/utils/asyncIterator.js +0 -135
- package/dist/transaction/utils/duration.d.ts +0 -25
- package/dist/transaction/utils/duration.js +0 -45
- package/dist/transaction/utils/json.d.ts +0 -57
- package/dist/transaction/utils/json.js +0 -276
- package/dist/transaction/wire/accountResponses.d.ts +0 -351
- package/dist/transaction/wire/accountResponses.js +0 -255
- package/dist/transaction/wire/auth.d.ts +0 -49
- package/dist/transaction/wire/auth.js +0 -57
- package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
- package/dist/transaction/wire/bootstrapReason.js +0 -8
- package/dist/transaction/wire/claimEvent.d.ts +0 -76
- package/dist/transaction/wire/claimEvent.js +0 -73
- package/dist/transaction/wire/claims.d.ts +0 -463
- package/dist/transaction/wire/claims.js +0 -229
- package/dist/transaction/wire/commit.d.ts +0 -603
- package/dist/transaction/wire/commit.js +0 -321
- package/dist/transaction/wire/delta.d.ts +0 -250
- package/dist/transaction/wire/delta.js +0 -147
- package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
- package/dist/transaction/wire/errorEnvelope.js +0 -123
- package/dist/transaction/wire/feedCursor.d.ts +0 -60
- package/dist/transaction/wire/feedCursor.js +0 -82
- package/dist/transaction/wire/feedEvent.d.ts +0 -177
- package/dist/transaction/wire/feedEvent.js +0 -39
- package/dist/transaction/wire/frames.d.ts +0 -194
- package/dist/transaction/wire/frames.js +0 -50
- package/dist/transaction/wire/inboundFrames.d.ts +0 -552
- package/dist/transaction/wire/inboundFrames.js +0 -116
- package/dist/transaction/wire/index.d.ts +0 -50
- package/dist/transaction/wire/index.js +0 -74
- package/dist/transaction/wire/listEnvelope.d.ts +0 -37
- package/dist/transaction/wire/listEnvelope.js +0 -42
- package/dist/transaction/wire/modelResponses.d.ts +0 -85
- package/dist/transaction/wire/modelResponses.js +0 -43
- package/dist/transaction/wire/protocol.d.ts +0 -38
- package/dist/transaction/wire/protocol.js +0 -38
- package/dist/transaction/wire/protocolVersion.d.ts +0 -73
- package/dist/transaction/wire/protocolVersion.js +0 -83
- package/dist/transactions/mutations/MutationQueue.d.ts +0 -655
- package/dist/transactions/mutations/MutationQueue.js +0 -2797
- package/dist/transactions/mutations/MutationStore.d.ts +0 -20
- package/dist/transactions/mutations/MutationStore.js +0 -53
- package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
- package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
- package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
- package/dist/transactions/mutations/coalesceRules.js +0 -140
- package/dist/transactions/mutations/commitLatency.d.ts +0 -52
- package/dist/transactions/mutations/commitLatency.js +0 -130
- package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
- package/dist/transactions/mutations/commitOutboxStore.js +0 -26
- package/dist/transactions/mutations/commitPayload.d.ts +0 -164
- package/dist/transactions/mutations/commitPayload.js +0 -152
- package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -59
- package/dist/transactions/mutations/deltaConfirmation.js +0 -233
- package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
- package/dist/transactions/mutations/durableWriteStore.js +0 -12
- package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
- package/dist/transactions/mutations/optimisticApply.js +0 -65
- package/dist/transactions/mutations/replayValidation.d.ts +0 -186
- package/dist/transactions/mutations/replayValidation.js +0 -163
- package/dist/utils/mobxSetup.d.ts +0 -53
- package/dist/utils/mobxSetup.js +0 -330
- package/dist/webhooks/events.d.ts +0 -43
- package/dist/webhooks/events.js +0 -42
- package/dist/webhooks/index.d.ts +0 -8
- package/dist/webhooks/index.js +0 -8
- package/dist/wire/index.d.ts +0 -1
- package/dist/wire/index.js +0 -8
- package/docs/interaction-model.md +0 -99
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Response bodies for a fake HTTP server, built in the shapes the real one
|
|
3
|
-
* answers with.
|
|
4
|
-
*
|
|
5
|
-
* A test that hand-rolls `{ data, stamp }` is asserting against a server it
|
|
6
|
-
* invented. That is how a client and its server drift apart while every test
|
|
7
|
-
* stays green: the fixture and the client agree, and neither has met the
|
|
8
|
-
* route. Each builder here is `satisfies`-pinned to the wire schema the server
|
|
9
|
-
* answers with and the client parses — so a change to the contract breaks these
|
|
10
|
-
* fixtures at compile time, and the tests that use them describe a server that
|
|
11
|
-
* exists.
|
|
12
|
-
*
|
|
13
|
-
* Only the fields a test actually varies are parameters; everything else is a
|
|
14
|
-
* plausible default, because a fixture that makes you fill in `object: 'model'`
|
|
15
|
-
* teaches nothing and gets copy-pasted wrong.
|
|
16
|
-
*/
|
|
17
|
-
import type { ModelReadResponse, ModelListResponse, ClaimAcquiredResponse, ClaimQueuedResponse, ClaimListResponse, ClaimHeartbeatReply } from '../../transaction/wire/index.js';
|
|
18
|
-
import type { ModelClaim } from '../../transaction/coordination/index.js';
|
|
19
|
-
/** `GET /v1/models/{model}/{id}`. Pass `data: null` for a miss. */
|
|
20
|
-
export declare function modelReadResponse(args: {
|
|
21
|
-
model: string;
|
|
22
|
-
id: string;
|
|
23
|
-
data: unknown;
|
|
24
|
-
stamp?: number;
|
|
25
|
-
claims?: readonly ModelClaim[];
|
|
26
|
-
}): ModelReadResponse;
|
|
27
|
-
/** `GET /v1/models/{model}`. */
|
|
28
|
-
export declare function modelListResponse(args: {
|
|
29
|
-
model: string;
|
|
30
|
-
data: readonly unknown[];
|
|
31
|
-
hasMore?: boolean;
|
|
32
|
-
nextCursor?: string | null;
|
|
33
|
-
stamp?: number;
|
|
34
|
-
}): ModelListResponse;
|
|
35
|
-
/** One claim in the shape the HTTP claim routes return it. */
|
|
36
|
-
export declare function modelClaim(args: {
|
|
37
|
-
id: string;
|
|
38
|
-
model: string;
|
|
39
|
-
entityId: string;
|
|
40
|
-
actor?: string;
|
|
41
|
-
participantKind?: ModelClaim['participantKind'];
|
|
42
|
-
description?: string;
|
|
43
|
-
status?: 'active' | 'queued';
|
|
44
|
-
position?: number;
|
|
45
|
-
expiresAt?: number;
|
|
46
|
-
fenceToken?: number;
|
|
47
|
-
field?: string;
|
|
48
|
-
}): ModelClaim;
|
|
49
|
-
/** `POST /v1/models/{model}/{id}/claim` — 201, the lease is yours. */
|
|
50
|
-
export declare function claimAcquiredResponse(claim: ModelClaim): ClaimAcquiredResponse;
|
|
51
|
-
/** `POST /v1/models/{model}/{id}/claim` — 202, you are in the wait line. */
|
|
52
|
-
export declare function claimQueuedResponse(args: {
|
|
53
|
-
claimId: string;
|
|
54
|
-
position: number;
|
|
55
|
-
heldBy?: string;
|
|
56
|
-
expiresAt?: number;
|
|
57
|
-
}): ClaimQueuedResponse;
|
|
58
|
-
/** `GET /v1/claims`. */
|
|
59
|
-
export declare function claimListResponse(args?: {
|
|
60
|
-
claims?: readonly ModelClaim[];
|
|
61
|
-
queue?: readonly ModelClaim[];
|
|
62
|
-
}): ClaimListResponse;
|
|
63
|
-
/** `POST /v1/models/{model}/{id}/claim/heartbeat`. */
|
|
64
|
-
export declare function claimHeartbeatReply(args: {
|
|
65
|
-
claimId: string;
|
|
66
|
-
status?: 'held' | 'queued';
|
|
67
|
-
expiresAt?: number;
|
|
68
|
-
queueDepth?: number;
|
|
69
|
-
position?: number;
|
|
70
|
-
}): ClaimHeartbeatReply;
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Response bodies for a fake HTTP server, built in the shapes the real one
|
|
3
|
-
* answers with.
|
|
4
|
-
*
|
|
5
|
-
* A test that hand-rolls `{ data, stamp }` is asserting against a server it
|
|
6
|
-
* invented. That is how a client and its server drift apart while every test
|
|
7
|
-
* stays green: the fixture and the client agree, and neither has met the
|
|
8
|
-
* route. Each builder here is `satisfies`-pinned to the wire schema the server
|
|
9
|
-
* answers with and the client parses — so a change to the contract breaks these
|
|
10
|
-
* fixtures at compile time, and the tests that use them describe a server that
|
|
11
|
-
* exists.
|
|
12
|
-
*
|
|
13
|
-
* Only the fields a test actually varies are parameters; everything else is a
|
|
14
|
-
* plausible default, because a fixture that makes you fill in `object: 'model'`
|
|
15
|
-
* teaches nothing and gets copy-pasted wrong.
|
|
16
|
-
*/
|
|
17
|
-
/** `GET /v1/models/{model}/{id}`. Pass `data: null` for a miss. */
|
|
18
|
-
export function modelReadResponse(args) {
|
|
19
|
-
return {
|
|
20
|
-
object: 'model',
|
|
21
|
-
model: args.model,
|
|
22
|
-
id: args.id,
|
|
23
|
-
data: args.data,
|
|
24
|
-
stamp: args.stamp ?? 0,
|
|
25
|
-
claims: args.claims ?? [],
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
/** `GET /v1/models/{model}`. */
|
|
29
|
-
export function modelListResponse(args) {
|
|
30
|
-
return {
|
|
31
|
-
object: 'list',
|
|
32
|
-
model: args.model,
|
|
33
|
-
data: [...args.data],
|
|
34
|
-
has_more: args.hasMore ?? false,
|
|
35
|
-
next_cursor: args.nextCursor ?? null,
|
|
36
|
-
stamp: args.stamp ?? 0,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
/** One claim in the shape the HTTP claim routes return it. */
|
|
40
|
-
export function modelClaim(args) {
|
|
41
|
-
return {
|
|
42
|
-
id: args.id,
|
|
43
|
-
actor: args.actor ?? 'user_fixture',
|
|
44
|
-
participantKind: args.participantKind ?? 'user',
|
|
45
|
-
description: args.description ?? 'editing',
|
|
46
|
-
...(args.field !== undefined ? { field: args.field } : {}),
|
|
47
|
-
...(args.status !== undefined ? { status: args.status } : {}),
|
|
48
|
-
...(args.position !== undefined ? { position: args.position } : {}),
|
|
49
|
-
expiresAt: args.expiresAt ?? Date.now() + 60_000,
|
|
50
|
-
...(args.fenceToken !== undefined ? { fenceToken: args.fenceToken } : {}),
|
|
51
|
-
target: { model: args.model, id: args.entityId },
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
/** `POST /v1/models/{model}/{id}/claim` — 201, the lease is yours. */
|
|
55
|
-
export function claimAcquiredResponse(claim) {
|
|
56
|
-
return { id: claim.id, object: 'claim', claim };
|
|
57
|
-
}
|
|
58
|
-
/** `POST /v1/models/{model}/{id}/claim` — 202, you are in the wait line. */
|
|
59
|
-
export function claimQueuedResponse(args) {
|
|
60
|
-
return {
|
|
61
|
-
status: 'queued',
|
|
62
|
-
claimId: args.claimId,
|
|
63
|
-
position: args.position,
|
|
64
|
-
...(args.heldBy !== undefined ? { heldBy: args.heldBy } : {}),
|
|
65
|
-
...(args.expiresAt !== undefined ? { expiresAt: args.expiresAt } : {}),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/** `GET /v1/claims`. */
|
|
69
|
-
export function claimListResponse(args = {}) {
|
|
70
|
-
return {
|
|
71
|
-
object: 'list',
|
|
72
|
-
claims: args.claims ?? [],
|
|
73
|
-
queue: args.queue ?? [],
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
/** `POST /v1/models/{model}/{id}/claim/heartbeat`. */
|
|
77
|
-
export function claimHeartbeatReply(args) {
|
|
78
|
-
const status = args.status ?? 'held';
|
|
79
|
-
return {
|
|
80
|
-
object: 'claim_heartbeat',
|
|
81
|
-
claimId: args.claimId,
|
|
82
|
-
status,
|
|
83
|
-
...(status === 'held'
|
|
84
|
-
? {
|
|
85
|
-
expiresAt: args.expiresAt ?? Date.now() + 60_000,
|
|
86
|
-
...(args.queueDepth !== undefined ? { queueDepth: args.queueDepth } : {}),
|
|
87
|
-
}
|
|
88
|
-
: { position: args.position ?? 0 }),
|
|
89
|
-
};
|
|
90
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A small set of {@link Model} subclasses used across the package's tests.
|
|
3
|
-
* They form two foreign-key chains and carry the creation priorities the
|
|
4
|
-
* transaction queue uses to order dependent writes:
|
|
5
|
-
* TestProject (10) → TestTask (10, references Project) → TestComment (30, references Task)
|
|
6
|
-
* TestSlideDeck (10) → TestSlide (15, references SlideDeck) → TestSlideLayer (20, references Slide)
|
|
7
|
-
*/
|
|
8
|
-
import { Model } from '../../Model.js';
|
|
9
|
-
import { ModelRegistry } from '../../ModelRegistry.js';
|
|
10
|
-
export declare class TestProject extends Model {
|
|
11
|
-
name: string;
|
|
12
|
-
description: string;
|
|
13
|
-
organizationId: string;
|
|
14
|
-
constructor(data?: Partial<TestProject> & Record<string, unknown>);
|
|
15
|
-
getModelName(): string;
|
|
16
|
-
}
|
|
17
|
-
export declare class TestTask extends Model {
|
|
18
|
-
title: string;
|
|
19
|
-
status: string;
|
|
20
|
-
projectId: string | null;
|
|
21
|
-
assigneeId: string | null;
|
|
22
|
-
organizationId: string;
|
|
23
|
-
constructor(data?: Partial<TestTask> & Record<string, unknown>);
|
|
24
|
-
getModelName(): string;
|
|
25
|
-
}
|
|
26
|
-
export declare class TestComment extends Model {
|
|
27
|
-
body: string;
|
|
28
|
-
taskId: string | null;
|
|
29
|
-
organizationId: string;
|
|
30
|
-
constructor(data?: Partial<TestComment> & Record<string, unknown>);
|
|
31
|
-
getModelName(): string;
|
|
32
|
-
}
|
|
33
|
-
export declare class TestSlideDeck extends Model {
|
|
34
|
-
title: string;
|
|
35
|
-
organizationId: string;
|
|
36
|
-
constructor(data?: Partial<TestSlideDeck> & Record<string, unknown>);
|
|
37
|
-
getModelName(): string;
|
|
38
|
-
}
|
|
39
|
-
export declare class TestSlide extends Model {
|
|
40
|
-
order: number;
|
|
41
|
-
deckId: string | null;
|
|
42
|
-
organizationId: string;
|
|
43
|
-
constructor(data?: Partial<TestSlide> & Record<string, unknown>);
|
|
44
|
-
getModelName(): string;
|
|
45
|
-
}
|
|
46
|
-
export declare class TestSlideLayer extends Model {
|
|
47
|
-
slideId: string | null;
|
|
48
|
-
zIndex: number;
|
|
49
|
-
type: string;
|
|
50
|
-
content: string;
|
|
51
|
-
organizationId: string;
|
|
52
|
-
constructor(data?: Partial<TestSlideLayer> & Record<string, unknown>);
|
|
53
|
-
getModelName(): string;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Maps each test model to its creation priority, matching the order the
|
|
57
|
-
* transaction queue uses when writing dependent models.
|
|
58
|
-
*/
|
|
59
|
-
export declare const TEST_MODEL_PRIORITIES: Map<string, number>;
|
|
60
|
-
/**
|
|
61
|
-
* Registers every test model with a {@link ModelRegistry}, wiring up their
|
|
62
|
-
* properties, references, and foreign-key relationships.
|
|
63
|
-
*/
|
|
64
|
-
export declare function registerTestModels(registry: ModelRegistry): void;
|
|
65
|
-
/**
|
|
66
|
-
* Builds a sync engine configuration pre-loaded with the test models'
|
|
67
|
-
* creation priorities and related settings.
|
|
68
|
-
*/
|
|
69
|
-
export declare function createTestConfig(): {
|
|
70
|
-
modelCreatePriority: ReadonlyMap<string, number>;
|
|
71
|
-
defaultCreatePriority: number;
|
|
72
|
-
defaultNonCreatePriority: number;
|
|
73
|
-
essentialFields: Readonly<Record<string, readonly string[]>>;
|
|
74
|
-
classNameFallbackMap: Readonly<Record<string, string>>;
|
|
75
|
-
};
|
|
76
|
-
/** Reset the counter (call in beforeEach for deterministic IDs) */
|
|
77
|
-
export declare function resetFixtureCounter(): void;
|
|
78
|
-
export declare function createProjectFixture(overrides?: Partial<Record<string, unknown>>): TestProject;
|
|
79
|
-
export declare function createTaskFixture(overrides?: Partial<Record<string, unknown>>): TestTask;
|
|
80
|
-
export declare function createCommentFixture(overrides?: Partial<Record<string, unknown>>): TestComment;
|
|
81
|
-
export declare function createSlideDeckFixture(overrides?: Partial<Record<string, unknown>>): TestSlideDeck;
|
|
82
|
-
export declare function createSlideFixture(overrides?: Partial<Record<string, unknown>>): TestSlide;
|
|
83
|
-
export declare function createSlideLayerFixture(overrides?: Partial<Record<string, unknown>>): TestSlideLayer;
|
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A small set of {@link Model} subclasses used across the package's tests.
|
|
3
|
-
* They form two foreign-key chains and carry the creation priorities the
|
|
4
|
-
* transaction queue uses to order dependent writes:
|
|
5
|
-
* TestProject (10) → TestTask (10, references Project) → TestComment (30, references Task)
|
|
6
|
-
* TestSlideDeck (10) → TestSlide (15, references SlideDeck) → TestSlideLayer (20, references Slide)
|
|
7
|
-
*/
|
|
8
|
-
import { Model } from '../../Model.js';
|
|
9
|
-
import { ModelRegistry } from '../../ModelRegistry.js';
|
|
10
|
-
import { PropertyType, LoadStrategy } from '../../transaction/types/index.js';
|
|
11
|
-
// ─────────────────────────────────────────────
|
|
12
|
-
// Test Model Classes
|
|
13
|
-
// ─────────────────────────────────────────────
|
|
14
|
-
export class TestProject extends Model {
|
|
15
|
-
name = '';
|
|
16
|
-
description = '';
|
|
17
|
-
organizationId = 'test-org';
|
|
18
|
-
constructor(data = {}) {
|
|
19
|
-
super(data);
|
|
20
|
-
if (data.name != null)
|
|
21
|
-
this.name = data.name;
|
|
22
|
-
if (data.description != null)
|
|
23
|
-
this.description = data.description;
|
|
24
|
-
if (data.organizationId != null)
|
|
25
|
-
this.organizationId = data.organizationId;
|
|
26
|
-
}
|
|
27
|
-
getModelName() {
|
|
28
|
-
return 'Project';
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export class TestTask extends Model {
|
|
32
|
-
title = '';
|
|
33
|
-
status = 'todo';
|
|
34
|
-
projectId = null;
|
|
35
|
-
assigneeId = null;
|
|
36
|
-
organizationId = 'test-org';
|
|
37
|
-
constructor(data = {}) {
|
|
38
|
-
super(data);
|
|
39
|
-
if (data.title != null)
|
|
40
|
-
this.title = data.title;
|
|
41
|
-
if (data.status != null)
|
|
42
|
-
this.status = data.status;
|
|
43
|
-
if (data.projectId !== undefined)
|
|
44
|
-
this.projectId = data.projectId;
|
|
45
|
-
if (data.assigneeId !== undefined)
|
|
46
|
-
this.assigneeId = data.assigneeId;
|
|
47
|
-
if (data.organizationId != null)
|
|
48
|
-
this.organizationId = data.organizationId;
|
|
49
|
-
}
|
|
50
|
-
getModelName() {
|
|
51
|
-
return 'Task';
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
export class TestComment extends Model {
|
|
55
|
-
body = '';
|
|
56
|
-
taskId = null;
|
|
57
|
-
organizationId = 'test-org';
|
|
58
|
-
constructor(data = {}) {
|
|
59
|
-
super(data);
|
|
60
|
-
if (data.body != null)
|
|
61
|
-
this.body = data.body;
|
|
62
|
-
if (data.taskId !== undefined)
|
|
63
|
-
this.taskId = data.taskId;
|
|
64
|
-
if (data.organizationId != null)
|
|
65
|
-
this.organizationId = data.organizationId;
|
|
66
|
-
}
|
|
67
|
-
getModelName() {
|
|
68
|
-
return 'Comment';
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
export class TestSlideDeck extends Model {
|
|
72
|
-
title = '';
|
|
73
|
-
organizationId = 'test-org';
|
|
74
|
-
constructor(data = {}) {
|
|
75
|
-
super(data);
|
|
76
|
-
if (data.title != null)
|
|
77
|
-
this.title = data.title;
|
|
78
|
-
if (data.organizationId != null)
|
|
79
|
-
this.organizationId = data.organizationId;
|
|
80
|
-
}
|
|
81
|
-
getModelName() {
|
|
82
|
-
return 'SlideDeck';
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
export class TestSlide extends Model {
|
|
86
|
-
order = 0;
|
|
87
|
-
deckId = null;
|
|
88
|
-
organizationId = 'test-org';
|
|
89
|
-
constructor(data = {}) {
|
|
90
|
-
super(data);
|
|
91
|
-
if (data.order != null)
|
|
92
|
-
this.order = data.order;
|
|
93
|
-
if (data.deckId !== undefined)
|
|
94
|
-
this.deckId = data.deckId;
|
|
95
|
-
if (data.organizationId != null)
|
|
96
|
-
this.organizationId = data.organizationId;
|
|
97
|
-
}
|
|
98
|
-
getModelName() {
|
|
99
|
-
return 'Slide';
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
export class TestSlideLayer extends Model {
|
|
103
|
-
slideId = null;
|
|
104
|
-
zIndex = 0;
|
|
105
|
-
type = 'text';
|
|
106
|
-
content = '';
|
|
107
|
-
organizationId = 'test-org';
|
|
108
|
-
constructor(data = {}) {
|
|
109
|
-
super(data);
|
|
110
|
-
if (data.slideId !== undefined)
|
|
111
|
-
this.slideId = data.slideId;
|
|
112
|
-
if (data.zIndex != null)
|
|
113
|
-
this.zIndex = data.zIndex;
|
|
114
|
-
if (data.type != null)
|
|
115
|
-
this.type = data.type;
|
|
116
|
-
if (data.content != null)
|
|
117
|
-
this.content = data.content;
|
|
118
|
-
if (data.organizationId != null)
|
|
119
|
-
this.organizationId = data.organizationId;
|
|
120
|
-
}
|
|
121
|
-
getModelName() {
|
|
122
|
-
return 'SlideLayer';
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// ─────────────────────────────────────────────
|
|
126
|
-
// Model Registration Helper
|
|
127
|
-
// ─────────────────────────────────────────────
|
|
128
|
-
/**
|
|
129
|
-
* Maps each test model to its creation priority, matching the order the
|
|
130
|
-
* transaction queue uses when writing dependent models.
|
|
131
|
-
*/
|
|
132
|
-
export const TEST_MODEL_PRIORITIES = new Map([
|
|
133
|
-
['Project', 10],
|
|
134
|
-
['Task', 10],
|
|
135
|
-
['SlideDeck', 10],
|
|
136
|
-
['Slide', 15],
|
|
137
|
-
['SlideLayer', 20],
|
|
138
|
-
['Comment', 30],
|
|
139
|
-
]);
|
|
140
|
-
/**
|
|
141
|
-
* Registers every test model with a {@link ModelRegistry}, wiring up their
|
|
142
|
-
* properties, references, and foreign-key relationships.
|
|
143
|
-
*/
|
|
144
|
-
export function registerTestModels(registry) {
|
|
145
|
-
registry.startBatch();
|
|
146
|
-
// Register model classes
|
|
147
|
-
registry.registerModel('Project', TestProject, { loadStrategy: LoadStrategy.instant });
|
|
148
|
-
registry.registerModel('Task', TestTask, { loadStrategy: LoadStrategy.instant });
|
|
149
|
-
registry.registerModel('Comment', TestComment, { loadStrategy: LoadStrategy.instant });
|
|
150
|
-
registry.registerModel('SlideDeck', TestSlideDeck, { loadStrategy: LoadStrategy.instant });
|
|
151
|
-
registry.registerModel('Slide', TestSlide, { loadStrategy: LoadStrategy.instant });
|
|
152
|
-
registry.registerModel('SlideLayer', TestSlideLayer, { loadStrategy: LoadStrategy.instant });
|
|
153
|
-
// Register properties
|
|
154
|
-
registry.registerProperty('Project', 'name', { type: PropertyType.property });
|
|
155
|
-
registry.registerProperty('Project', 'description', { type: PropertyType.property, optional: true });
|
|
156
|
-
registry.registerProperty('Project', 'organizationId', { type: PropertyType.property });
|
|
157
|
-
registry.registerProperty('Task', 'title', { type: PropertyType.property });
|
|
158
|
-
registry.registerProperty('Task', 'status', { type: PropertyType.property });
|
|
159
|
-
registry.registerProperty('Task', 'projectId', { type: PropertyType.reference, nullable: true });
|
|
160
|
-
registry.registerProperty('Task', 'assigneeId', { type: PropertyType.reference, nullable: true });
|
|
161
|
-
registry.registerProperty('Task', 'organizationId', { type: PropertyType.property });
|
|
162
|
-
registry.registerProperty('Comment', 'body', { type: PropertyType.property });
|
|
163
|
-
registry.registerProperty('Comment', 'taskId', { type: PropertyType.reference, nullable: true });
|
|
164
|
-
registry.registerProperty('Comment', 'organizationId', { type: PropertyType.property });
|
|
165
|
-
registry.registerProperty('SlideDeck', 'title', { type: PropertyType.property });
|
|
166
|
-
registry.registerProperty('SlideDeck', 'organizationId', { type: PropertyType.property });
|
|
167
|
-
registry.registerProperty('Slide', 'order', { type: PropertyType.property });
|
|
168
|
-
registry.registerProperty('Slide', 'deckId', { type: PropertyType.reference, nullable: true });
|
|
169
|
-
registry.registerProperty('Slide', 'organizationId', { type: PropertyType.property });
|
|
170
|
-
registry.registerProperty('SlideLayer', 'slideId', { type: PropertyType.reference, nullable: true });
|
|
171
|
-
registry.registerProperty('SlideLayer', 'zIndex', { type: PropertyType.property });
|
|
172
|
-
registry.registerProperty('SlideLayer', 'type', { type: PropertyType.property });
|
|
173
|
-
registry.registerProperty('SlideLayer', 'content', { type: PropertyType.property });
|
|
174
|
-
registry.registerProperty('SlideLayer', 'organizationId', { type: PropertyType.property });
|
|
175
|
-
// Register back-references for cascade-aware transaction handling
|
|
176
|
-
registry.registerBackReference('Task', { parentModel: 'Project', foreignKey: 'projectId', cascadeDelete: true });
|
|
177
|
-
registry.registerBackReference('Comment', { parentModel: 'Task', foreignKey: 'taskId', cascadeDelete: true });
|
|
178
|
-
registry.registerBackReference('Slide', { parentModel: 'SlideDeck', foreignKey: 'deckId', cascadeDelete: true });
|
|
179
|
-
registry.registerBackReference('SlideLayer', { parentModel: 'Slide', foreignKey: 'slideId', cascadeDelete: true });
|
|
180
|
-
registry.endBatch();
|
|
181
|
-
}
|
|
182
|
-
// ─────────────────────────────────────────────
|
|
183
|
-
// Test SyncEngineConfig factory
|
|
184
|
-
// ─────────────────────────────────────────────
|
|
185
|
-
/**
|
|
186
|
-
* Builds a sync engine configuration pre-loaded with the test models'
|
|
187
|
-
* creation priorities and related settings.
|
|
188
|
-
*/
|
|
189
|
-
export function createTestConfig() {
|
|
190
|
-
return {
|
|
191
|
-
modelCreatePriority: TEST_MODEL_PRIORITIES,
|
|
192
|
-
defaultCreatePriority: 40,
|
|
193
|
-
defaultNonCreatePriority: 50,
|
|
194
|
-
essentialFields: {
|
|
195
|
-
Task: ['title', 'projectId'],
|
|
196
|
-
Slide: ['deckId', 'order'],
|
|
197
|
-
},
|
|
198
|
-
classNameFallbackMap: {
|
|
199
|
-
TestProject: 'Project',
|
|
200
|
-
TestTask: 'Task',
|
|
201
|
-
TestComment: 'Comment',
|
|
202
|
-
TestSlideDeck: 'SlideDeck',
|
|
203
|
-
TestSlide: 'Slide',
|
|
204
|
-
TestSlideLayer: 'SlideLayer',
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
// ─────────────────────────────────────────────
|
|
209
|
-
// Fixture factories
|
|
210
|
-
// ─────────────────────────────────────────────
|
|
211
|
-
let fixtureCounter = 0;
|
|
212
|
-
/** Reset the counter (call in beforeEach for deterministic IDs) */
|
|
213
|
-
export function resetFixtureCounter() {
|
|
214
|
-
fixtureCounter = 0;
|
|
215
|
-
}
|
|
216
|
-
export function createProjectFixture(overrides = {}) {
|
|
217
|
-
fixtureCounter++;
|
|
218
|
-
return new TestProject({
|
|
219
|
-
id: `project-${fixtureCounter}`,
|
|
220
|
-
name: `Test Project ${fixtureCounter}`,
|
|
221
|
-
organizationId: 'test-org',
|
|
222
|
-
...overrides,
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
export function createTaskFixture(overrides = {}) {
|
|
226
|
-
fixtureCounter++;
|
|
227
|
-
return new TestTask({
|
|
228
|
-
id: `task-${fixtureCounter}`,
|
|
229
|
-
title: `Test Task ${fixtureCounter}`,
|
|
230
|
-
status: 'todo',
|
|
231
|
-
organizationId: 'test-org',
|
|
232
|
-
...overrides,
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
export function createCommentFixture(overrides = {}) {
|
|
236
|
-
fixtureCounter++;
|
|
237
|
-
return new TestComment({
|
|
238
|
-
id: `comment-${fixtureCounter}`,
|
|
239
|
-
body: `Test comment ${fixtureCounter}`,
|
|
240
|
-
organizationId: 'test-org',
|
|
241
|
-
...overrides,
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
export function createSlideDeckFixture(overrides = {}) {
|
|
245
|
-
fixtureCounter++;
|
|
246
|
-
return new TestSlideDeck({
|
|
247
|
-
id: `deck-${fixtureCounter}`,
|
|
248
|
-
title: `Test Deck ${fixtureCounter}`,
|
|
249
|
-
organizationId: 'test-org',
|
|
250
|
-
...overrides,
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
export function createSlideFixture(overrides = {}) {
|
|
254
|
-
fixtureCounter++;
|
|
255
|
-
return new TestSlide({
|
|
256
|
-
id: `slide-${fixtureCounter}`,
|
|
257
|
-
order: fixtureCounter,
|
|
258
|
-
organizationId: 'test-org',
|
|
259
|
-
...overrides,
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
export function createSlideLayerFixture(overrides = {}) {
|
|
263
|
-
fixtureCounter++;
|
|
264
|
-
return new TestSlideLayer({
|
|
265
|
-
id: `layer-${fixtureCounter}`,
|
|
266
|
-
zIndex: fixtureCounter,
|
|
267
|
-
type: 'text',
|
|
268
|
-
content: `Layer content ${fixtureCounter}`,
|
|
269
|
-
organizationId: 'test-org',
|
|
270
|
-
...overrides,
|
|
271
|
-
});
|
|
272
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React testing helpers for this package. They wire the package's
|
|
3
|
-
* `SyncProvider` into `@testing-library/react` so you can test components
|
|
4
|
-
* and hooks built on `useModel`, `useModels`, and `useMutations` against a
|
|
5
|
-
* mock store, with no live server.
|
|
6
|
-
*/
|
|
7
|
-
import * as React from 'react';
|
|
8
|
-
import { type SyncStoreContract } from '../../react/context.js';
|
|
9
|
-
import { MockSyncStore, createMockSyncStore } from '../mocks/MockSyncStore.js';
|
|
10
|
-
export interface TestWrapperOptions {
|
|
11
|
-
/** Mock sync store. If omitted, a new MockSyncStore is created. */
|
|
12
|
-
store?: SyncStoreContract;
|
|
13
|
-
/** Organization ID. Default: "test-org-id". */
|
|
14
|
-
organizationId?: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Builds a wrapper component for `@testing-library/react`'s `renderHook`
|
|
18
|
-
* and `render`. It wraps the children in the package's `SyncProvider`,
|
|
19
|
-
* backed by a mock store, so the hooks and components under test can read
|
|
20
|
-
* from it. Pass your own store to seed specific data, or let one be created.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* import { renderHook } from '@testing-library/react';
|
|
24
|
-
* import { createReactTestWrapper, createMockSyncStore } from '@abloatai/ablo/testing';
|
|
25
|
-
*
|
|
26
|
-
* const mockStore = createMockSyncStore();
|
|
27
|
-
* mockStore.setModels(Task, [task1, task2]);
|
|
28
|
-
*
|
|
29
|
-
* const { result } = renderHook(
|
|
30
|
-
* () => useModels(Task),
|
|
31
|
-
* { wrapper: createReactTestWrapper({ store: mockStore }) }
|
|
32
|
-
* );
|
|
33
|
-
*/
|
|
34
|
-
export declare function createReactTestWrapper(options?: TestWrapperOptions): React.FC<{
|
|
35
|
-
children: React.ReactNode;
|
|
36
|
-
}>;
|
|
37
|
-
/**
|
|
38
|
-
* A drop-in replacement for `@testing-library/react`'s `renderHook` that
|
|
39
|
-
* wraps the hook in the package's `SyncProvider` and a mock store for you,
|
|
40
|
-
* so you don't build the wrapper by hand.
|
|
41
|
-
*
|
|
42
|
-
* `@testing-library/react` is loaded lazily, so projects that don't use
|
|
43
|
-
* these helpers never have to install it.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* import { renderSyncHook, createMockSyncStore } from '@abloatai/ablo/testing';
|
|
47
|
-
*
|
|
48
|
-
* const mockStore = createMockSyncStore();
|
|
49
|
-
* mockStore.addModel(Task, myTask);
|
|
50
|
-
*
|
|
51
|
-
* const { result } = renderSyncHook(
|
|
52
|
-
* () => useModel(Task, myTask.id),
|
|
53
|
-
* { store: mockStore }
|
|
54
|
-
* );
|
|
55
|
-
* expect(result.current?.id).toBe(myTask.id);
|
|
56
|
-
*/
|
|
57
|
-
export declare function renderSyncHook<TProps, TResult>(callback: (props: TProps) => TResult, options?: TestWrapperOptions & {
|
|
58
|
-
initialProps?: TProps;
|
|
59
|
-
}): {
|
|
60
|
-
result: {
|
|
61
|
-
current: TResult;
|
|
62
|
-
};
|
|
63
|
-
rerender: (props?: TProps) => void;
|
|
64
|
-
unmount: () => void;
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* Re-export MockSyncStore for convenience.
|
|
68
|
-
*/
|
|
69
|
-
export { MockSyncStore, createMockSyncStore };
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React testing helpers for this package. They wire the package's
|
|
3
|
-
* `SyncProvider` into `@testing-library/react` so you can test components
|
|
4
|
-
* and hooks built on `useModel`, `useModels`, and `useMutations` against a
|
|
5
|
-
* mock store, with no live server.
|
|
6
|
-
*/
|
|
7
|
-
import * as React from 'react';
|
|
8
|
-
import { SyncProvider } from '../../react/context.js';
|
|
9
|
-
import { MockSyncStore, createMockSyncStore } from '../mocks/MockSyncStore.js';
|
|
10
|
-
/**
|
|
11
|
-
* Builds a wrapper component for `@testing-library/react`'s `renderHook`
|
|
12
|
-
* and `render`. It wraps the children in the package's `SyncProvider`,
|
|
13
|
-
* backed by a mock store, so the hooks and components under test can read
|
|
14
|
-
* from it. Pass your own store to seed specific data, or let one be created.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* import { renderHook } from '@testing-library/react';
|
|
18
|
-
* import { createReactTestWrapper, createMockSyncStore } from '@abloatai/ablo/testing';
|
|
19
|
-
*
|
|
20
|
-
* const mockStore = createMockSyncStore();
|
|
21
|
-
* mockStore.setModels(Task, [task1, task2]);
|
|
22
|
-
*
|
|
23
|
-
* const { result } = renderHook(
|
|
24
|
-
* () => useModels(Task),
|
|
25
|
-
* { wrapper: createReactTestWrapper({ store: mockStore }) }
|
|
26
|
-
* );
|
|
27
|
-
*/
|
|
28
|
-
export function createReactTestWrapper(options = {}) {
|
|
29
|
-
const store = options.store ?? createMockSyncStore();
|
|
30
|
-
const organizationId = options.organizationId ?? 'test-org-id';
|
|
31
|
-
const Wrapper = ({ children }) => React.createElement(SyncProvider, { store, organizationId }, children);
|
|
32
|
-
return Wrapper;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* A drop-in replacement for `@testing-library/react`'s `renderHook` that
|
|
36
|
-
* wraps the hook in the package's `SyncProvider` and a mock store for you,
|
|
37
|
-
* so you don't build the wrapper by hand.
|
|
38
|
-
*
|
|
39
|
-
* `@testing-library/react` is loaded lazily, so projects that don't use
|
|
40
|
-
* these helpers never have to install it.
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* import { renderSyncHook, createMockSyncStore } from '@abloatai/ablo/testing';
|
|
44
|
-
*
|
|
45
|
-
* const mockStore = createMockSyncStore();
|
|
46
|
-
* mockStore.addModel(Task, myTask);
|
|
47
|
-
*
|
|
48
|
-
* const { result } = renderSyncHook(
|
|
49
|
-
* () => useModel(Task, myTask.id),
|
|
50
|
-
* { store: mockStore }
|
|
51
|
-
* );
|
|
52
|
-
* expect(result.current?.id).toBe(myTask.id);
|
|
53
|
-
*/
|
|
54
|
-
export function renderSyncHook(callback, options = {}) {
|
|
55
|
-
// Load @testing-library/react lazily so projects that never call these
|
|
56
|
-
// helpers don't have to install it.
|
|
57
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
58
|
-
const rtl = require('@testing-library/react');
|
|
59
|
-
return rtl.renderHook(callback, {
|
|
60
|
-
wrapper: createReactTestWrapper(options),
|
|
61
|
-
initialProps: options.initialProps,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Re-export MockSyncStore for convenience.
|
|
66
|
-
*/
|
|
67
|
-
export { MockSyncStore, createMockSyncStore };
|