@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,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Assembles a ready-to-use {@link RuntimeContext} for tests. The context
|
|
3
|
-
* bundles every dependency the engine needs — logger, network monitor,
|
|
4
|
-
* mutation executor, and configuration — so a test can start the engine
|
|
5
|
-
* without a real backend. {@link createTestContext} is the entry point: it
|
|
6
|
-
* wires the mocks, installs the context globally through {@link initRuntime},
|
|
7
|
-
* and returns handles to each mock for assertions.
|
|
8
|
-
*/
|
|
9
|
-
import type { RuntimeContext } from '../../RuntimeContext.js';
|
|
10
|
-
import type { Logger, ObservabilityProvider, SessionErrorDetector, RuntimeConfig } from '../../interfaces/index.js';
|
|
11
|
-
import { MockMutationExecutor } from './MockMutationExecutor.js';
|
|
12
|
-
import { MockNetworkMonitor } from './MockNetworkMonitor.js';
|
|
13
|
-
export interface TestContextOptions {
|
|
14
|
-
/** Replaces the default no-op logger. */
|
|
15
|
-
logger?: Logger;
|
|
16
|
-
/** Replaces the default no-op observability provider. */
|
|
17
|
-
observability?: ObservabilityProvider;
|
|
18
|
-
/** Replaces the detector that decides whether an error means the session has expired. */
|
|
19
|
-
sessionErrorDetector?: SessionErrorDetector;
|
|
20
|
-
/** Options forwarded to the {@link MockMutationExecutor} that the context creates. */
|
|
21
|
-
mutationExecutorOptions?: ConstructorParameters<typeof MockMutationExecutor>[0];
|
|
22
|
-
/** A partial {@link RuntimeConfig} merged over the defaults. */
|
|
23
|
-
config?: Partial<RuntimeConfig>;
|
|
24
|
-
/** Starts the network monitor offline. Defaults to online. */
|
|
25
|
-
startOffline?: boolean;
|
|
26
|
-
}
|
|
27
|
-
export interface TestContextResult {
|
|
28
|
-
/** The assembled context that {@link createTestContext} installed globally. */
|
|
29
|
-
context: RuntimeContext;
|
|
30
|
-
/** Handles to the underlying mocks, so tests can drive them and assert on them. */
|
|
31
|
-
mocks: {
|
|
32
|
-
mutationExecutor: MockMutationExecutor;
|
|
33
|
-
networkMonitor: MockNetworkMonitor;
|
|
34
|
-
};
|
|
35
|
-
/** Tears the test down by resetting the engine and the mocks. Call it when the test finishes. */
|
|
36
|
-
cleanup: () => void;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Builds a {@link RuntimeContext} with every mock pre-wired and installs it
|
|
40
|
-
* globally through {@link initRuntime}, so code under test reaches the engine
|
|
41
|
-
* the same way it would in production. Returns the context, the mock handles,
|
|
42
|
-
* and a cleanup function to call when the test finishes.
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* ```ts
|
|
46
|
-
* const { context, mocks, cleanup } = createTestContext();
|
|
47
|
-
* // ... run tests using mocks.mutationExecutor, mocks.networkMonitor
|
|
48
|
-
* cleanup();
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export declare function createTestContext(options?: TestContextOptions): TestContextResult;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Assembles a ready-to-use {@link RuntimeContext} for tests. The context
|
|
3
|
-
* bundles every dependency the engine needs — logger, network monitor,
|
|
4
|
-
* mutation executor, and configuration — so a test can start the engine
|
|
5
|
-
* without a real backend. {@link createTestContext} is the entry point: it
|
|
6
|
-
* wires the mocks, installs the context globally through {@link initRuntime},
|
|
7
|
-
* and returns handles to each mock for assertions.
|
|
8
|
-
*/
|
|
9
|
-
import { noopLogger, noopObservability, noopAnalytics, defaultSessionErrorDetector, emptyConfig, } from '../../RuntimeContext.js';
|
|
10
|
-
import { initRuntime, resetRuntime } from '../../context.js';
|
|
11
|
-
import { ModelRegistry, getActiveRegistry, setActiveRegistry, hasActiveRegistry, clearActiveRegistry, } from '../../ModelRegistry.js';
|
|
12
|
-
import { registerTestModels } from '../fixtures/models.js';
|
|
13
|
-
import { MockMutationExecutor } from './MockMutationExecutor.js';
|
|
14
|
-
import { MockNetworkMonitor } from './MockNetworkMonitor.js';
|
|
15
|
-
/**
|
|
16
|
-
* Builds a {@link RuntimeContext} with every mock pre-wired and installs it
|
|
17
|
-
* globally through {@link initRuntime}, so code under test reaches the engine
|
|
18
|
-
* the same way it would in production. Returns the context, the mock handles,
|
|
19
|
-
* and a cleanup function to call when the test finishes.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* const { context, mocks, cleanup } = createTestContext();
|
|
24
|
-
* // ... run tests using mocks.mutationExecutor, mocks.networkMonitor
|
|
25
|
-
* cleanup();
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export function createTestContext(options = {}) {
|
|
29
|
-
const mutationExecutor = new MockMutationExecutor(options.mutationExecutorOptions);
|
|
30
|
-
const networkMonitor = new MockNetworkMonitor(!options.startOffline);
|
|
31
|
-
const config = {
|
|
32
|
-
...emptyConfig,
|
|
33
|
-
...options.config,
|
|
34
|
-
// Merge maps/sets properly if overrides provided
|
|
35
|
-
modelCreatePriority: options.config?.modelCreatePriority ?? emptyConfig.modelCreatePriority,
|
|
36
|
-
};
|
|
37
|
-
const context = {
|
|
38
|
-
getModelMetadata: (name) => (hasActiveRegistry() ? getActiveRegistry().getMetadata(name) : undefined),
|
|
39
|
-
logger: options.logger ?? noopLogger,
|
|
40
|
-
observability: options.observability ?? noopObservability,
|
|
41
|
-
analytics: noopAnalytics,
|
|
42
|
-
sessionErrorDetector: options.sessionErrorDetector ?? defaultSessionErrorDetector,
|
|
43
|
-
onlineStatus: networkMonitor,
|
|
44
|
-
mutationExecutor,
|
|
45
|
-
config,
|
|
46
|
-
};
|
|
47
|
-
initRuntime(context);
|
|
48
|
-
// Bootstrap a default ModelRegistry with test models if none is active.
|
|
49
|
-
// Tests that manage their own registry call setActiveRegistry before this.
|
|
50
|
-
const bootstrappedRegistry = !hasActiveRegistry();
|
|
51
|
-
if (bootstrappedRegistry) {
|
|
52
|
-
const defaultRegistry = new ModelRegistry();
|
|
53
|
-
setActiveRegistry(defaultRegistry);
|
|
54
|
-
registerTestModels(defaultRegistry);
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
context,
|
|
58
|
-
mocks: {
|
|
59
|
-
mutationExecutor,
|
|
60
|
-
networkMonitor,
|
|
61
|
-
},
|
|
62
|
-
cleanup: () => {
|
|
63
|
-
resetRuntime();
|
|
64
|
-
// Leave the active ModelRegistry in place on purpose. Async callbacks
|
|
65
|
-
// from in-flight transactions can call Model.toJSON() after a test's
|
|
66
|
-
// teardown has run; keeping the default registry available keeps those
|
|
67
|
-
// late calls valid, and the next createTestContext simply reuses it.
|
|
68
|
-
mutationExecutor.reset();
|
|
69
|
-
networkMonitor.reset();
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An in-memory {@link SyncStoreContract} for tests. It lets you seed rows,
|
|
3
|
-
* read and write them synchronously, and inspect every call the code under
|
|
4
|
-
* test made — all without a real sync backend.
|
|
5
|
-
*/
|
|
6
|
-
import type { Model } from '../../Model.js';
|
|
7
|
-
import type { ModelScope } from '../../InstanceCache.js';
|
|
8
|
-
import type { SyncStoreContract } from '../../react/context.js';
|
|
9
|
-
interface QueryOptions<T extends Model> {
|
|
10
|
-
predicate?: (model: T) => boolean;
|
|
11
|
-
scope?: ModelScope;
|
|
12
|
-
orderBy?: keyof T;
|
|
13
|
-
order?: 'asc' | 'desc';
|
|
14
|
-
limit?: number;
|
|
15
|
-
offset?: number;
|
|
16
|
-
}
|
|
17
|
-
interface QueryResult<T extends Model> {
|
|
18
|
-
data: T[];
|
|
19
|
-
}
|
|
20
|
-
type ModelCtor<T extends Model> = abstract new (...args: never[]) => T;
|
|
21
|
-
/**
|
|
22
|
-
* An in-memory implementation of {@link SyncStoreContract}. Seed rows with
|
|
23
|
-
* {@link MockSyncStore.setModels}, then read and write through the contract
|
|
24
|
-
* methods; every call is recorded on {@link MockSyncStore.calls} so tests can
|
|
25
|
-
* assert on what happened.
|
|
26
|
-
*/
|
|
27
|
-
export declare class MockSyncStore implements SyncStoreContract {
|
|
28
|
-
private byClass;
|
|
29
|
-
calls: {
|
|
30
|
-
retrieve: {
|
|
31
|
-
modelClass: ModelCtor<Model>;
|
|
32
|
-
id: string;
|
|
33
|
-
}[];
|
|
34
|
-
query: {
|
|
35
|
-
modelClass: ModelCtor<Model>;
|
|
36
|
-
options?: QueryOptions<Model>;
|
|
37
|
-
}[];
|
|
38
|
-
save: Model[];
|
|
39
|
-
delete: Model[];
|
|
40
|
-
archive: Model[];
|
|
41
|
-
unarchive: Model[];
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Seed the store with models of a specific class.
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* mockStore.setModels(Task, [task1, task2]);
|
|
48
|
-
*/
|
|
49
|
-
setModels<T extends Model>(modelClass: ModelCtor<T>, models: T[]): void;
|
|
50
|
-
/**
|
|
51
|
-
* Adds or replaces a single model, keyed by its id.
|
|
52
|
-
*/
|
|
53
|
-
addModel<T extends Model>(modelClass: ModelCtor<T>, model: T): void;
|
|
54
|
-
/**
|
|
55
|
-
* Remove a model by ID.
|
|
56
|
-
*/
|
|
57
|
-
removeModel<T extends Model>(modelClass: ModelCtor<T>, id: string): void;
|
|
58
|
-
/**
|
|
59
|
-
* Clear all seeded data and call history.
|
|
60
|
-
*/
|
|
61
|
-
reset(): void;
|
|
62
|
-
retrieve<T extends Model>(modelClass: ModelCtor<T>, id: string): T | undefined;
|
|
63
|
-
queryByClass<T extends Model>(modelClass: ModelCtor<T>, options?: QueryOptions<T>): QueryResult<T>;
|
|
64
|
-
save(model: Model): Promise<void>;
|
|
65
|
-
delete(model: Model): Promise<void>;
|
|
66
|
-
archive(model: Model): Promise<void>;
|
|
67
|
-
unarchive(model: Model): Promise<void>;
|
|
68
|
-
isReady: boolean;
|
|
69
|
-
isSyncing: boolean;
|
|
70
|
-
isOffline: boolean;
|
|
71
|
-
isReconnecting: boolean;
|
|
72
|
-
isError: boolean;
|
|
73
|
-
hasUnsyncedChanges: boolean;
|
|
74
|
-
syncStatus: {
|
|
75
|
-
state: "idle";
|
|
76
|
-
progress: number;
|
|
77
|
-
pendingChanges: number;
|
|
78
|
-
isSessionError: boolean;
|
|
79
|
-
};
|
|
80
|
-
/** A minimal object pool backing the useEntity and useEntities hooks in tests. */
|
|
81
|
-
pool: SyncStoreContract['pool'];
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Create a new MockSyncStore.
|
|
85
|
-
* Shorthand for `new MockSyncStore()`.
|
|
86
|
-
*/
|
|
87
|
-
export declare function createMockSyncStore(): MockSyncStore;
|
|
88
|
-
export {};
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An in-memory {@link SyncStoreContract} for tests. It lets you seed rows,
|
|
3
|
-
* read and write them synchronously, and inspect every call the code under
|
|
4
|
-
* test made — all without a real sync backend.
|
|
5
|
-
*/
|
|
6
|
-
import { ViewRegistry } from '../../core/ViewRegistry.js';
|
|
7
|
-
import { AbloValidationError } from '../../transaction/errors.js';
|
|
8
|
-
/**
|
|
9
|
-
* An in-memory implementation of {@link SyncStoreContract}. Seed rows with
|
|
10
|
-
* {@link MockSyncStore.setModels}, then read and write through the contract
|
|
11
|
-
* methods; every call is recorded on {@link MockSyncStore.calls} so tests can
|
|
12
|
-
* assert on what happened.
|
|
13
|
-
*/
|
|
14
|
-
export class MockSyncStore {
|
|
15
|
-
// Seeded data, keyed by model class
|
|
16
|
-
byClass = new Map();
|
|
17
|
-
// Call tracking for assertions
|
|
18
|
-
calls = {
|
|
19
|
-
retrieve: [],
|
|
20
|
-
query: [],
|
|
21
|
-
save: [],
|
|
22
|
-
delete: [],
|
|
23
|
-
archive: [],
|
|
24
|
-
unarchive: [],
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Seed the store with models of a specific class.
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* mockStore.setModels(Task, [task1, task2]);
|
|
31
|
-
*/
|
|
32
|
-
setModels(modelClass, models) {
|
|
33
|
-
const map = new Map();
|
|
34
|
-
for (const m of models) {
|
|
35
|
-
map.set(m.id, m);
|
|
36
|
-
}
|
|
37
|
-
this.byClass.set(modelClass, map);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Adds or replaces a single model, keyed by its id.
|
|
41
|
-
*/
|
|
42
|
-
addModel(modelClass, model) {
|
|
43
|
-
let map = this.byClass.get(modelClass);
|
|
44
|
-
if (!map) {
|
|
45
|
-
map = new Map();
|
|
46
|
-
this.byClass.set(modelClass, map);
|
|
47
|
-
}
|
|
48
|
-
map.set(model.id, model);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Remove a model by ID.
|
|
52
|
-
*/
|
|
53
|
-
removeModel(modelClass, id) {
|
|
54
|
-
this.byClass.get(modelClass)?.delete(id);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Clear all seeded data and call history.
|
|
58
|
-
*/
|
|
59
|
-
reset() {
|
|
60
|
-
this.byClass.clear();
|
|
61
|
-
this.calls = {
|
|
62
|
-
retrieve: [],
|
|
63
|
-
query: [],
|
|
64
|
-
save: [],
|
|
65
|
-
delete: [],
|
|
66
|
-
archive: [],
|
|
67
|
-
unarchive: [],
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
// ── SyncStoreContract implementation ──────────────────────────────────
|
|
71
|
-
retrieve(modelClass, id) {
|
|
72
|
-
this.calls.retrieve.push({ modelClass: modelClass, id });
|
|
73
|
-
return this.byClass.get(modelClass)?.get(id);
|
|
74
|
-
}
|
|
75
|
-
queryByClass(modelClass, options) {
|
|
76
|
-
this.calls.query.push({
|
|
77
|
-
modelClass: modelClass,
|
|
78
|
-
options: options,
|
|
79
|
-
});
|
|
80
|
-
const map = this.byClass.get(modelClass);
|
|
81
|
-
if (!map) {
|
|
82
|
-
return { data: [] };
|
|
83
|
-
}
|
|
84
|
-
let data = Array.from(map.values());
|
|
85
|
-
// Apply predicate
|
|
86
|
-
if (options?.predicate) {
|
|
87
|
-
data = data.filter(options.predicate);
|
|
88
|
-
}
|
|
89
|
-
// Apply ordering
|
|
90
|
-
if (options?.orderBy) {
|
|
91
|
-
const key = options.orderBy;
|
|
92
|
-
const order = options.order ?? 'asc';
|
|
93
|
-
data.sort((a, b) => {
|
|
94
|
-
const av = a[key];
|
|
95
|
-
const bv = b[key];
|
|
96
|
-
if (av === bv)
|
|
97
|
-
return 0;
|
|
98
|
-
const cmp = av < bv ? -1 : 1;
|
|
99
|
-
return order === 'asc' ? cmp : -cmp;
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
// Apply pagination
|
|
103
|
-
if (options?.offset) {
|
|
104
|
-
data = data.slice(options.offset);
|
|
105
|
-
}
|
|
106
|
-
if (options?.limit !== undefined) {
|
|
107
|
-
data = data.slice(0, options.limit);
|
|
108
|
-
}
|
|
109
|
-
return { data };
|
|
110
|
-
}
|
|
111
|
-
async save(model) {
|
|
112
|
-
this.calls.save.push(model);
|
|
113
|
-
// Store the model under its constructor so a later retrieve or query
|
|
114
|
-
// returns it.
|
|
115
|
-
const ctor = model.constructor;
|
|
116
|
-
this.addModel(ctor, model);
|
|
117
|
-
}
|
|
118
|
-
async delete(model) {
|
|
119
|
-
this.calls.delete.push(model);
|
|
120
|
-
const ctor = model.constructor;
|
|
121
|
-
this.removeModel(ctor, model.id);
|
|
122
|
-
}
|
|
123
|
-
async archive(model) {
|
|
124
|
-
this.calls.archive.push(model);
|
|
125
|
-
}
|
|
126
|
-
async unarchive(model) {
|
|
127
|
-
this.calls.unarchive.push(model);
|
|
128
|
-
}
|
|
129
|
-
// Sync-status getters default to "ready, idle". Tests that exercise
|
|
130
|
-
// offline/reconnect flows can set these before rendering.
|
|
131
|
-
isReady = true;
|
|
132
|
-
isSyncing = false;
|
|
133
|
-
isOffline = false;
|
|
134
|
-
isReconnecting = false;
|
|
135
|
-
isError = false;
|
|
136
|
-
hasUnsyncedChanges = false;
|
|
137
|
-
syncStatus = {
|
|
138
|
-
state: 'idle',
|
|
139
|
-
progress: 100,
|
|
140
|
-
pendingChanges: 0,
|
|
141
|
-
isSessionError: false,
|
|
142
|
-
};
|
|
143
|
-
/** A minimal object pool backing the useEntity and useEntities hooks in tests. */
|
|
144
|
-
pool = {
|
|
145
|
-
get: (id) => {
|
|
146
|
-
for (const models of this.byClass.values()) {
|
|
147
|
-
const model = models.get(id);
|
|
148
|
-
if (model)
|
|
149
|
-
return model;
|
|
150
|
-
}
|
|
151
|
-
return undefined;
|
|
152
|
-
},
|
|
153
|
-
getByTypeName: (_typename) => [],
|
|
154
|
-
getByForeignKey: () => [],
|
|
155
|
-
createFromData: () => null,
|
|
156
|
-
hasForeignKeyIndex: () => false,
|
|
157
|
-
createView: () => {
|
|
158
|
-
throw new AbloValidationError('MockSyncStore does not support createView', {
|
|
159
|
-
code: 'mock_unsupported_operation',
|
|
160
|
-
});
|
|
161
|
-
},
|
|
162
|
-
viewRegistry: new ViewRegistry(),
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Create a new MockSyncStore.
|
|
167
|
-
* Shorthand for `new MockSyncStore()`.
|
|
168
|
-
*/
|
|
169
|
-
export function createMockSyncStore() {
|
|
170
|
-
return new MockSyncStore();
|
|
171
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A controllable WebSocket stand-in for sync engine tests. It reproduces the
|
|
3
|
-
* event interface of the real connection without opening a socket, so tests
|
|
4
|
-
* can drive connection changes, deltas, and bootstrap hints by hand.
|
|
5
|
-
*/
|
|
6
|
-
import type { SyncActionType } from '../../stores/syncAction.js';
|
|
7
|
-
import type { BootstrapReason } from '../../transaction/wire/bootstrapReason.js';
|
|
8
|
-
/** The shape of a single delta — one change the server pushes to the client. */
|
|
9
|
-
export interface MockDelta {
|
|
10
|
-
id: number;
|
|
11
|
-
modelName: string;
|
|
12
|
-
modelId: string;
|
|
13
|
-
action: SyncActionType;
|
|
14
|
-
data: Record<string, unknown>;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* A hint from the server that the client has fallen too far behind and should
|
|
18
|
-
* rebuild its data from scratch rather than catch up one delta at a time.
|
|
19
|
-
*/
|
|
20
|
-
export interface MockBootstrapHint {
|
|
21
|
-
reason: BootstrapReason;
|
|
22
|
-
tables?: string[];
|
|
23
|
-
staleTables?: string[];
|
|
24
|
-
}
|
|
25
|
-
type EventHandler = (...args: unknown[]) => void;
|
|
26
|
-
/**
|
|
27
|
-
* A controllable, event-based stand-in for the sync engine's WebSocket
|
|
28
|
-
* connection. Subscribe with {@link MockWebSocket.on} exactly as production
|
|
29
|
-
* code does, then use the `simulate*` and `receive*` methods to push
|
|
30
|
-
* connection changes, deltas, and bootstrap hints. Every event the mock emits
|
|
31
|
-
* is recorded on {@link MockWebSocket.emittedEvents} for assertions.
|
|
32
|
-
*/
|
|
33
|
-
export declare class MockWebSocket {
|
|
34
|
-
private _connected;
|
|
35
|
-
private _sessionError;
|
|
36
|
-
private _listeners;
|
|
37
|
-
/** Every event the mock has emitted, in order, for assertions. */
|
|
38
|
-
readonly emittedEvents: {
|
|
39
|
-
type: string;
|
|
40
|
-
data: unknown;
|
|
41
|
-
}[];
|
|
42
|
-
get connected(): boolean;
|
|
43
|
-
get sessionError(): boolean;
|
|
44
|
-
on(event: string, handler: EventHandler): () => void;
|
|
45
|
-
private emit;
|
|
46
|
-
/** Fires a successful connection, emitting the `connected` event. */
|
|
47
|
-
simulateConnect(): void;
|
|
48
|
-
/** Drops the connection, emitting the `disconnected` event. */
|
|
49
|
-
simulateDisconnect(): void;
|
|
50
|
-
/** Emits a `reconnecting` event carrying the attempt number and retry delay. */
|
|
51
|
-
simulateReconnecting(attempt: number, delay: number): void;
|
|
52
|
-
/** Emits a `session_error` event, as when the server rejects the session as unauthorized. The code defaults to 401. */
|
|
53
|
-
simulateSessionError(code?: number): void;
|
|
54
|
-
/** Emits a `reconnect_failed` event, signaling the client gave up after exhausting its retries. */
|
|
55
|
-
simulateReconnectFailed(): void;
|
|
56
|
-
/** Delivers a single delta, emitting a `delta` event as if the server had sent it. */
|
|
57
|
-
receiveDelta(delta: MockDelta): void;
|
|
58
|
-
/** Delivers a batch of deltas, emitting a `delta_batch` event. */
|
|
59
|
-
receiveDeltas(deltas: MockDelta[]): void;
|
|
60
|
-
/** Emits a `bootstrap_required` hint, telling the client to rebuild its data instead of catching up. */
|
|
61
|
-
simulateBootstrapHint(hint: MockBootstrapHint): void;
|
|
62
|
-
/** Emits a `presence_update` event carrying the given payload. */
|
|
63
|
-
simulatePresenceUpdate(data: Record<string, unknown>): void;
|
|
64
|
-
/** Returns the payloads of every emitted event of the given type, in order. */
|
|
65
|
-
getEvents(type: string): unknown[];
|
|
66
|
-
/** Reports whether an event of the given type has been emitted. */
|
|
67
|
-
hasEmitted(type: string): boolean;
|
|
68
|
-
/** Clears connection state, listeners, and the record of emitted events. */
|
|
69
|
-
reset(): void;
|
|
70
|
-
}
|
|
71
|
-
export {};
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A controllable WebSocket stand-in for sync engine tests. It reproduces the
|
|
3
|
-
* event interface of the real connection without opening a socket, so tests
|
|
4
|
-
* can drive connection changes, deltas, and bootstrap hints by hand.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* A controllable, event-based stand-in for the sync engine's WebSocket
|
|
8
|
-
* connection. Subscribe with {@link MockWebSocket.on} exactly as production
|
|
9
|
-
* code does, then use the `simulate*` and `receive*` methods to push
|
|
10
|
-
* connection changes, deltas, and bootstrap hints. Every event the mock emits
|
|
11
|
-
* is recorded on {@link MockWebSocket.emittedEvents} for assertions.
|
|
12
|
-
*/
|
|
13
|
-
export class MockWebSocket {
|
|
14
|
-
_connected = false;
|
|
15
|
-
_sessionError = false;
|
|
16
|
-
_listeners = new Map();
|
|
17
|
-
/** Every event the mock has emitted, in order, for assertions. */
|
|
18
|
-
emittedEvents = [];
|
|
19
|
-
get connected() {
|
|
20
|
-
return this._connected;
|
|
21
|
-
}
|
|
22
|
-
get sessionError() {
|
|
23
|
-
return this._sessionError;
|
|
24
|
-
}
|
|
25
|
-
// ─────────────────────────────────────────────
|
|
26
|
-
// Event subscription (matches the real connection's API)
|
|
27
|
-
// ─────────────────────────────────────────────
|
|
28
|
-
on(event, handler) {
|
|
29
|
-
if (!this._listeners.has(event)) {
|
|
30
|
-
this._listeners.set(event, new Set());
|
|
31
|
-
}
|
|
32
|
-
this._listeners.get(event).add(handler);
|
|
33
|
-
return () => {
|
|
34
|
-
this._listeners.get(event)?.delete(handler);
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
emit(event, ...args) {
|
|
38
|
-
this.emittedEvents.push({ type: event, data: args[0] });
|
|
39
|
-
const handlers = this._listeners.get(event);
|
|
40
|
-
if (handlers) {
|
|
41
|
-
for (const handler of handlers) {
|
|
42
|
-
handler(...args);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// ─────────────────────────────────────────────
|
|
47
|
-
// Test control: connection lifecycle
|
|
48
|
-
// ─────────────────────────────────────────────
|
|
49
|
-
/** Fires a successful connection, emitting the `connected` event. */
|
|
50
|
-
simulateConnect() {
|
|
51
|
-
this._connected = true;
|
|
52
|
-
this._sessionError = false;
|
|
53
|
-
this.emit('connected');
|
|
54
|
-
}
|
|
55
|
-
/** Drops the connection, emitting the `disconnected` event. */
|
|
56
|
-
simulateDisconnect() {
|
|
57
|
-
this._connected = false;
|
|
58
|
-
this.emit('disconnected');
|
|
59
|
-
}
|
|
60
|
-
/** Emits a `reconnecting` event carrying the attempt number and retry delay. */
|
|
61
|
-
simulateReconnecting(attempt, delay) {
|
|
62
|
-
this.emit('reconnecting', { attempt, delay });
|
|
63
|
-
}
|
|
64
|
-
/** Emits a `session_error` event, as when the server rejects the session as unauthorized. The code defaults to 401. */
|
|
65
|
-
simulateSessionError(code = 401) {
|
|
66
|
-
this._sessionError = true;
|
|
67
|
-
this._connected = false;
|
|
68
|
-
this.emit('session_error', { code });
|
|
69
|
-
}
|
|
70
|
-
/** Emits a `reconnect_failed` event, signaling the client gave up after exhausting its retries. */
|
|
71
|
-
simulateReconnectFailed() {
|
|
72
|
-
this._connected = false;
|
|
73
|
-
this.emit('reconnect_failed');
|
|
74
|
-
}
|
|
75
|
-
// ─────────────────────────────────────────────
|
|
76
|
-
// Test control: delta injection
|
|
77
|
-
// ─────────────────────────────────────────────
|
|
78
|
-
/** Delivers a single delta, emitting a `delta` event as if the server had sent it. */
|
|
79
|
-
receiveDelta(delta) {
|
|
80
|
-
this.emit('delta', delta);
|
|
81
|
-
}
|
|
82
|
-
/** Delivers a batch of deltas, emitting a `delta_batch` event. */
|
|
83
|
-
receiveDeltas(deltas) {
|
|
84
|
-
this.emit('delta_batch', deltas);
|
|
85
|
-
}
|
|
86
|
-
// ─────────────────────────────────────────────
|
|
87
|
-
// Test control: bootstrap hints
|
|
88
|
-
// ─────────────────────────────────────────────
|
|
89
|
-
/** Emits a `bootstrap_required` hint, telling the client to rebuild its data instead of catching up. */
|
|
90
|
-
simulateBootstrapHint(hint) {
|
|
91
|
-
this.emit('bootstrap_required', hint);
|
|
92
|
-
}
|
|
93
|
-
// ─────────────────────────────────────────────
|
|
94
|
-
// Test control: presence
|
|
95
|
-
// ─────────────────────────────────────────────
|
|
96
|
-
/** Emits a `presence_update` event carrying the given payload. */
|
|
97
|
-
simulatePresenceUpdate(data) {
|
|
98
|
-
this.emit('presence_update', data);
|
|
99
|
-
}
|
|
100
|
-
// ─────────────────────────────────────────────
|
|
101
|
-
// Assertions
|
|
102
|
-
// ─────────────────────────────────────────────
|
|
103
|
-
/** Returns the payloads of every emitted event of the given type, in order. */
|
|
104
|
-
getEvents(type) {
|
|
105
|
-
return this.emittedEvents.filter((e) => e.type === type).map((e) => e.data);
|
|
106
|
-
}
|
|
107
|
-
/** Reports whether an event of the given type has been emitted. */
|
|
108
|
-
hasEmitted(type) {
|
|
109
|
-
return this.emittedEvents.some((e) => e.type === type);
|
|
110
|
-
}
|
|
111
|
-
/** Clears connection state, listeners, and the record of emitted events. */
|
|
112
|
-
reset() {
|
|
113
|
-
this._connected = false;
|
|
114
|
-
this._sessionError = false;
|
|
115
|
-
this._listeners.clear();
|
|
116
|
-
this.emittedEvents.length = 0;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `Ablo` — the entry point to the coordination layer.
|
|
3
|
-
*
|
|
4
|
-
* The factory constructs the stateless client: typed model resources, commits,
|
|
5
|
-
* claims, and session minting over request/response HTTP. It holds no socket,
|
|
6
|
-
* no store, and no local copy of anything — the bearer credential is the
|
|
7
|
-
* identity and the server resolves it on every request. This is the client a
|
|
8
|
-
* server-side actor installs: an agent, a worker, a cron job, a route handler.
|
|
9
|
-
*
|
|
10
|
-
* ```ts
|
|
11
|
-
* import { Ablo } from '@abloatai/ablo';
|
|
12
|
-
* import { schema } from './schema';
|
|
13
|
-
*
|
|
14
|
-
* const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY, transport: 'http' });
|
|
15
|
-
* await ablo.tasks.update({ id: taskId, data: { status: 'done' } });
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* The reactive materialiser — local store, live queries, presence rendering —
|
|
19
|
-
* is the consumer package's entry point (`@abloatai/ablo`), which layers
|
|
20
|
-
* above this one and shares the same `ablo.<model>` surface (ADR 0016).
|
|
21
|
-
*/
|
|
22
|
-
import { type AbloHttpClient, type AbloHttpClientOptions } from './transport/httpClient.js';
|
|
23
|
-
import type { SchemaRecord } from './schema/schema.js';
|
|
24
|
-
import type * as _Streams from './types/streams.js';
|
|
25
|
-
import type * as _SchemaTypes from './schema/schema.js';
|
|
26
|
-
import type * as _Global from './types/global.js';
|
|
27
|
-
import type * as _Policy from './policy/types.js';
|
|
28
|
-
import type * as _Http from './resources/httpResources.js';
|
|
29
|
-
/**
|
|
30
|
-
* Create a coordination-layer client in one call.
|
|
31
|
-
*
|
|
32
|
-
* The core carries one transport today — request/response HTTP — so
|
|
33
|
-
* `transport: 'http'` is accepted for symmetry with the reactive package's
|
|
34
|
-
* factory and may be omitted. The duplex transport joins this slot when the
|
|
35
|
-
* socket carve lands (ADR 0016, follow-up 3a).
|
|
36
|
-
*/
|
|
37
|
-
export declare function Ablo<const S extends SchemaRecord>(options: AbloHttpClientOptions<S> & {
|
|
38
|
-
transport?: 'http';
|
|
39
|
-
}): AbloHttpClient<S>;
|
|
40
|
-
export declare namespace Ablo {
|
|
41
|
-
type ClaimTarget = _Streams.ClaimTarget;
|
|
42
|
-
type PresenceTarget = _Streams.PresenceTarget;
|
|
43
|
-
type Duration = _Streams.Duration;
|
|
44
|
-
type Peer = _Streams.Peer;
|
|
45
|
-
type Activity = _Streams.Activity;
|
|
46
|
-
type Claim = _Streams.Claim;
|
|
47
|
-
type ClaimHeartbeat = _Streams.ClaimHeartbeat;
|
|
48
|
-
type ClaimHeartbeatOptions = _Streams.ClaimHeartbeatOptions;
|
|
49
|
-
namespace Claim {
|
|
50
|
-
type Held<T = Record<string, unknown>, M = _Global.ResolveClaimMeta> = _Streams.HeldClaim<T, M>;
|
|
51
|
-
type WaitOptions = _Streams.ClaimWaitOptions;
|
|
52
|
-
type LeaseOptions = _Streams.ClaimLeaseOptions;
|
|
53
|
-
}
|
|
54
|
-
type Schema<S extends _SchemaTypes.SchemaRecord = _SchemaTypes.SchemaRecord> = _SchemaTypes.Schema<S>;
|
|
55
|
-
/**
|
|
56
|
-
* The schema this program has registered via `interface Register { Schema }`
|
|
57
|
-
* (falls back to a loose shape when unregistered). Use it where shared code
|
|
58
|
-
* needs "this app's schema" without importing a specific one.
|
|
59
|
-
*/
|
|
60
|
-
type ResolveSchema = _Global.ResolveSchema;
|
|
61
|
-
/**
|
|
62
|
-
* The claim metadata shape this program has registered via
|
|
63
|
-
* `interface Register { ClaimMeta }` (falls back to a loose record when
|
|
64
|
-
* unregistered). Every claim surface reads `target.meta` as this.
|
|
65
|
-
*/
|
|
66
|
-
type ResolveClaimMeta = _Global.ResolveClaimMeta;
|
|
67
|
-
namespace Schema {
|
|
68
|
-
type Model<S extends _SchemaTypes.Schema, K extends keyof S['models']> = _SchemaTypes.Model<S, K>;
|
|
69
|
-
type InferCreate<S extends _SchemaTypes.Schema, K extends keyof S['models']> = _SchemaTypes.InferCreate<S, K>;
|
|
70
|
-
type InferModelNames<S extends _SchemaTypes.Schema> = _SchemaTypes.InferModelNames<S>;
|
|
71
|
-
}
|
|
72
|
-
type Conflict = _Policy.Conflict;
|
|
73
|
-
namespace Conflict {
|
|
74
|
-
type Kind = _Policy.ConflictKind;
|
|
75
|
-
type Operation = _Policy.ConflictOperation;
|
|
76
|
-
type Decision = _Policy.ConflictDecision;
|
|
77
|
-
type Policy = _Policy.ConflictPolicy;
|
|
78
|
-
type Axis = _Policy.ConflictAxis;
|
|
79
|
-
}
|
|
80
|
-
namespace Commit {
|
|
81
|
-
type Wait = _Http.CommitWait;
|
|
82
|
-
type OperationAction = _Http.ModelOperationAction;
|
|
83
|
-
type OperationInput = _Http.CommitOperationInput;
|
|
84
|
-
type CreateOptions = _Http.CommitCreateOptions;
|
|
85
|
-
type Receipt = _Http.CommitReceipt;
|
|
86
|
-
type Client = _Http.CommitResource;
|
|
87
|
-
}
|
|
88
|
-
}
|