@abloatai/ablo 0.34.1 → 0.36.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 -1
- package/CHANGELOG.md +758 -5
- package/README.md +56 -502
- package/bin/ablo.cjs +39 -0
- package/dist/BaseSyncedStore.d.ts +176 -48
- package/dist/BaseSyncedStore.js +346 -214
- package/dist/Database.d.ts +17 -44
- package/dist/Database.js +96 -79
- package/dist/InstanceCache.d.ts +31 -6
- package/dist/InstanceCache.js +65 -30
- package/dist/LazyReferenceCollection.d.ts +3 -3
- package/dist/LazyReferenceCollection.js +4 -4
- package/dist/Model.d.ts +23 -13
- package/dist/Model.js +27 -17
- package/dist/ModelRegistry.d.ts +8 -4
- package/dist/ModelRegistry.js +20 -18
- package/dist/NetworkMonitor.d.ts +3 -1
- package/dist/NetworkMonitor.js +7 -5
- package/dist/{SyncEngineContext.d.ts → RuntimeContext.d.ts} +20 -13
- package/dist/{SyncEngineContext.js → RuntimeContext.js} +11 -12
- package/dist/SyncClient.d.ts +47 -47
- package/dist/SyncClient.js +215 -156
- package/dist/ai-sdk/coordinatedTool.d.ts +2 -2
- package/dist/ai-sdk/coordinatedTool.js +1 -1
- package/dist/ai-sdk/coordinationContext.d.ts +2 -2
- package/dist/ai-sdk/coordinationContext.js +1 -1
- package/dist/ai-sdk/wrap.d.ts +3 -3
- package/dist/ai-sdk/wrap.js +2 -2
- package/dist/auth/index.d.ts +1 -156
- package/dist/auth/index.js +8 -301
- package/dist/client/Ablo.d.ts +42 -287
- package/dist/client/Ablo.js +129 -963
- package/dist/client/abloClient.d.ts +309 -0
- package/dist/client/abloClient.js +13 -0
- package/dist/client/clientPrelude.d.ts +52 -0
- package/dist/client/clientPrelude.js +60 -0
- package/dist/client/consoleLogger.d.ts +2 -2
- package/dist/client/coreClient.d.ts +60 -0
- package/dist/client/coreClient.js +118 -0
- package/dist/client/createInternalComponents.d.ts +8 -4
- package/dist/client/createInternalComponents.js +17 -10
- package/dist/client/createModelProxy.d.ts +98 -373
- package/dist/client/createModelProxy.js +233 -139
- package/dist/client/humans.d.ts +69 -0
- package/dist/client/humans.js +78 -0
- package/dist/client/modelRegistration.d.ts +1 -1
- package/dist/client/modelRegistration.js +9 -9
- package/dist/client/options.d.ts +73 -17
- package/dist/client/reactiveEngine.d.ts +53 -0
- package/dist/client/reactiveEngine.js +688 -0
- package/dist/client/resourceTypes.d.ts +9 -250
- package/dist/client/resourceTypes.js +8 -5
- package/dist/client/schemaConfig.d.ts +4 -4
- package/dist/client/schemaConfig.js +6 -2
- package/dist/client/storeCluster.d.ts +47 -0
- package/dist/client/storeCluster.js +118 -0
- package/dist/client/storeLifecycle.d.ts +61 -0
- package/dist/client/storeLifecycle.js +231 -0
- package/dist/client/validateAbloOptions.d.ts +3 -2
- package/dist/client/validateAbloOptions.js +1 -1
- package/dist/client/wsMutationExecutor.d.ts +3 -3
- package/dist/client/wsMutationExecutor.js +3 -3
- package/dist/context.d.ts +22 -9
- package/dist/context.js +33 -9
- package/dist/coordination/ClaimLog.d.ts +26 -0
- package/dist/coordination/ClaimLog.js +32 -0
- package/dist/coordination/index.d.ts +1 -15
- package/dist/coordination/index.js +8 -31
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js +2 -2
- package/dist/docs/catalog.d.ts +72 -0
- package/dist/docs/catalog.js +230 -0
- package/dist/docs/index.d.ts +10 -0
- package/dist/docs/index.js +10 -0
- package/dist/environment.d.ts +1 -40
- package/dist/environment.js +8 -37
- package/dist/index.d.ts +44 -36
- package/dist/index.js +30 -22
- package/dist/interfaces/index.d.ts +44 -134
- package/dist/keys/index.d.ts +1 -77
- package/dist/keys/index.js +8 -190
- package/dist/mutators/{RecordingTransaction.d.ts → RecordingMutation.d.ts} +4 -4
- package/dist/mutators/{RecordingTransaction.js → RecordingMutation.js} +2 -2
- package/dist/mutators/Transaction.d.ts +1 -1
- package/dist/mutators/Transaction.js +1 -1
- package/dist/mutators/UndoManager.d.ts +6 -6
- package/dist/mutators/UndoManager.js +5 -5
- package/dist/mutators/defineMutators.d.ts +3 -3
- package/dist/mutators/defineMutators.js +1 -1
- package/dist/mutators/inverseOp.js +2 -2
- package/dist/mutators/mutateActions.d.ts +3 -3
- package/dist/mutators/mutateActions.js +1 -1
- package/dist/mutators/readerActions.d.ts +1 -1
- package/dist/mutators/undoApply.d.ts +1 -1
- package/dist/mutators/undoApply.js +1 -1
- package/dist/policy/index.d.ts +2 -2
- package/dist/policy/index.js +1 -1
- package/dist/query/client.d.ts +5 -2
- package/dist/query/client.js +10 -9
- package/dist/query/types.d.ts +6 -41
- package/dist/query/types.js +2 -2
- package/dist/react/AbloProvider.d.ts +18 -8
- package/dist/react/AbloProvider.js +10 -9
- package/dist/react/context.d.ts +3 -3
- package/dist/react/context.js +1 -1
- package/dist/react/createAbloReact.d.ts +56 -0
- package/dist/react/createAbloReact.js +51 -0
- package/dist/react/index.d.ts +6 -5
- package/dist/react/index.js +6 -3
- package/dist/react/internalContext.d.ts +1 -1
- package/dist/react/useAblo.d.ts +12 -5
- package/dist/react/useAblo.js +26 -8
- package/dist/react/useCurrentUserId.js +1 -1
- package/dist/react/useErrorListener.js +1 -1
- package/dist/react/useMutationFailureListener.d.ts +2 -2
- package/dist/react/useMutationFailureListener.js +1 -1
- package/dist/react/useMutators.d.ts +3 -3
- package/dist/react/useMutators.js +3 -3
- package/dist/react/useUndoScope.d.ts +5 -5
- package/dist/react/useUndoScope.js +1 -1
- package/dist/schema/coordination.d.ts +69 -10
- package/dist/schema/coordination.js +90 -9
- package/dist/schema/ddl.js +2 -2
- package/dist/schema/diff.d.ts +1 -1
- package/dist/schema/generate.js +1 -1
- package/dist/schema/index.d.ts +11 -10
- package/dist/schema/index.js +22 -18
- package/dist/schema/queries.d.ts +27 -27
- package/dist/schema/queries.js +23 -23
- package/dist/schema/select.d.ts +3 -3
- package/dist/schema/select.js +6 -3
- package/dist/schema/serialize.d.ts +15 -6
- package/dist/schema/serialize.js +20 -3
- package/dist/schema/sugar.d.ts +6 -7
- package/dist/schema/sugar.js +9 -12
- package/dist/schema/syncDeltaRow.d.ts +4 -152
- package/dist/schema/syncDeltaRow.js +4 -105
- package/dist/server/adapter.d.ts +18 -1
- package/dist/server/commit.d.ts +10 -16
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/readConfig.d.ts +1 -1
- package/dist/source/adapter.d.ts +7 -5
- package/dist/source/adapter.js +7 -5
- package/dist/source/adapters/drizzle.d.ts +1 -1
- package/dist/source/adapters/drizzle.js +2 -2
- package/dist/source/adapters/kysely.d.ts +1 -1
- package/dist/source/adapters/kysely.js +1 -1
- package/dist/source/adapters/kyselyMutationCore.d.ts +1 -1
- package/dist/source/adapters/kyselyMutationCore.js +2 -2
- package/dist/source/adapters/memory.js +1 -1
- package/dist/source/adapters/prisma.d.ts +8 -3
- package/dist/source/adapters/prisma.js +1 -1
- package/dist/source/connector.js +1 -1
- package/dist/source/connectorProtocol.d.ts +2 -8
- package/dist/source/connectorProtocol.js +3 -2
- package/dist/source/contract.d.ts +29 -17
- package/dist/source/contract.js +27 -22
- package/dist/source/factory.d.ts +1 -1
- package/dist/source/idempotency.js +2 -2
- package/dist/source/index.d.ts +1 -0
- package/dist/source/index.js +3 -0
- package/dist/source/next.d.ts +1 -1
- package/dist/source/signing.d.ts +9 -2
- package/dist/source/signing.js +4 -1
- package/dist/source/types.d.ts +6 -4
- package/dist/source/types.js +1 -1
- package/dist/{core/storeContract.d.ts → storeContract.d.ts} +6 -6
- package/dist/{core → stores}/DatabaseManager.d.ts +3 -1
- package/dist/{core → stores}/DatabaseManager.js +14 -13
- package/dist/stores/ObjectStore.d.ts +1 -1
- package/dist/{core → stores}/StoreManager.d.ts +9 -26
- package/dist/{core → stores}/StoreManager.js +29 -77
- package/dist/stores/SyncActionStore.d.ts +4 -2
- package/dist/stores/SyncActionStore.js +11 -17
- package/dist/stores/syncAction.d.ts +26 -0
- package/dist/stores/syncAction.js +16 -0
- package/dist/surface.d.ts +3 -3
- package/dist/surface.js +6 -4
- package/dist/sync/BootstrapFetcher.d.ts +127 -6
- package/dist/sync/BootstrapFetcher.js +511 -83
- package/dist/sync/ConnectionManager.d.ts +6 -198
- package/dist/sync/ConnectionManager.js +6 -677
- package/dist/sync/OnDemandLoader.d.ts +5 -2
- package/dist/sync/OnDemandLoader.js +61 -21
- package/dist/sync/SubscriptionManager.d.ts +13 -2
- package/dist/sync/SubscriptionManager.js +23 -5
- package/dist/sync/SyncWebSocket.d.ts +27 -510
- package/dist/sync/SyncWebSocket.js +76 -954
- package/dist/sync/awaitClaimGrant.d.ts +4 -44
- package/dist/sync/awaitClaimGrant.js +4 -109
- package/dist/sync/bootstrapApply.d.ts +3 -0
- package/dist/sync/bootstrapApply.js +2 -2
- package/dist/sync/commitFrames.d.ts +6 -40
- package/dist/sync/commitFrames.js +6 -97
- package/dist/sync/contextPorts.d.ts +18 -0
- package/dist/sync/contextPorts.js +31 -0
- package/dist/sync/createClaimStream.d.ts +5 -49
- package/dist/sync/createClaimStream.js +5 -469
- package/dist/sync/createPresenceStream.d.ts +26 -4
- package/dist/sync/createPresenceStream.js +28 -20
- package/dist/sync/createSnapshot.d.ts +2 -2
- package/dist/sync/createSnapshot.js +1 -1
- package/dist/sync/credentialLifecycle.d.ts +5 -173
- package/dist/sync/credentialLifecycle.js +5 -320
- package/dist/sync/deltaPipeline.d.ts +13 -12
- package/dist/sync/deltaPipeline.js +21 -4
- package/dist/sync/groupChange.d.ts +3 -0
- package/dist/sync/groupChange.js +16 -14
- package/dist/sync/participants.d.ts +24 -6
- package/dist/sync/participants.js +32 -23
- package/dist/sync/schemaDrift.d.ts +55 -0
- package/dist/sync/schemaDrift.js +53 -0
- package/dist/sync/schemas.d.ts +23 -33
- package/dist/sync/schemas.js +29 -20
- package/dist/sync/syncPlan.d.ts +3 -3
- package/dist/sync/wsFrameHandlers.d.ts +6 -114
- package/dist/sync/wsFrameHandlers.js +6 -392
- package/dist/syncLog/contract.d.ts +20 -0
- package/dist/syncLog/contract.js +19 -0
- package/dist/syncLog/index.d.ts +1 -0
- package/dist/syncLog/index.js +1 -0
- package/dist/transaction/ablo.d.ts +88 -0
- package/dist/transaction/ablo.js +33 -0
- package/dist/{client/auth.d.ts → transaction/auth/apiKey.d.ts} +43 -8
- package/dist/{client/auth.js → transaction/auth/apiKey.js} +19 -0
- package/dist/transaction/auth/bootstrapScope.d.ts +15 -0
- package/dist/transaction/auth/bootstrapScope.js +1 -0
- package/dist/transaction/auth/capability.d.ts +212 -0
- package/dist/transaction/auth/capability.js +224 -0
- package/dist/{auth → transaction/auth}/credentialSource.d.ts +8 -1
- package/dist/{client → transaction/auth}/identity.d.ts +8 -7
- package/dist/{client → transaction/auth}/identity.js +1 -1
- package/dist/transaction/auth/index.d.ts +162 -0
- package/dist/transaction/auth/index.js +304 -0
- package/dist/{auth → transaction/auth}/schemas.d.ts +1 -1
- package/dist/{auth → transaction/auth}/schemas.js +13 -13
- package/dist/{client → transaction/auth}/sessionMint.d.ts +8 -8
- package/dist/{client → transaction/auth}/sessionMint.js +4 -7
- package/dist/transaction/coordination/awaitClaimGrant.d.ts +56 -0
- package/dist/transaction/coordination/awaitClaimGrant.js +124 -0
- package/dist/{client → transaction/coordination}/claimHeartbeatLoop.d.ts +34 -0
- package/dist/{client → transaction/coordination}/claimHeartbeatLoop.js +20 -0
- package/dist/transaction/coordination/claimMeta.d.ts +49 -0
- package/dist/transaction/coordination/claimMeta.js +52 -0
- package/dist/transaction/coordination/createClaimStream.d.ts +64 -0
- package/dist/transaction/coordination/createClaimStream.js +475 -0
- package/dist/transaction/coordination/events.d.ts +74 -0
- package/dist/transaction/coordination/events.js +7 -0
- package/dist/transaction/coordination/index.d.ts +19 -0
- package/dist/transaction/coordination/index.js +45 -0
- package/dist/transaction/coordination/locator.d.ts +104 -0
- package/dist/transaction/coordination/locator.js +102 -0
- package/dist/transaction/coordination/schema.d.ts +1536 -0
- package/dist/transaction/coordination/schema.js +1177 -0
- package/dist/transaction/coordination/targetConflict.d.ts +2 -0
- package/dist/transaction/coordination/targetConflict.js +107 -0
- package/dist/{coordination → transaction/coordination}/trace.d.ts +7 -18
- package/dist/{coordination → transaction/coordination}/trace.js +18 -25
- package/dist/transaction/durableWrites.d.ts +62 -0
- package/dist/{client → transaction}/durableWrites.js +28 -3
- package/dist/transaction/environment.d.ts +105 -0
- package/dist/transaction/environment.js +108 -0
- package/dist/{errorCodes.d.ts → transaction/errorCodes.d.ts} +12 -12
- package/dist/{errorCodes.js → transaction/errorCodes.js} +45 -18
- package/dist/{errors.d.ts → transaction/errors.d.ts} +37 -13
- package/dist/{errors.js → transaction/errors.js} +85 -16
- package/dist/transaction/footprint.d.ts +111 -0
- package/dist/transaction/footprint.js +0 -0
- package/dist/transaction/index.d.ts +20 -0
- package/dist/transaction/index.js +20 -0
- package/dist/transaction/keys/index.d.ts +87 -0
- package/dist/transaction/keys/index.js +207 -0
- package/dist/transaction/log/syncDeltaRow.d.ts +158 -0
- package/dist/transaction/log/syncDeltaRow.js +95 -0
- package/dist/{sync/syncPosition.d.ts → transaction/logPosition.d.ts} +22 -8
- package/dist/{sync/syncPosition.js → transaction/logPosition.js} +15 -6
- package/dist/transaction/logger.d.ts +16 -0
- package/dist/transaction/logger.js +7 -0
- package/dist/transaction/observability.d.ts +53 -0
- package/dist/transaction/observability.js +19 -0
- package/dist/transaction/plugin.d.ts +285 -0
- package/dist/transaction/plugin.js +106 -0
- package/dist/{policy → transaction/policy}/types.d.ts +3 -3
- package/dist/{policy → transaction/policy}/types.js +2 -0
- package/dist/transaction/resources/httpResources.d.ts +321 -0
- package/dist/transaction/resources/httpResources.js +7 -0
- package/dist/transaction/resources/modelOperations.d.ts +427 -0
- package/dist/transaction/resources/modelOperations.js +12 -0
- package/dist/transaction/resources/mutationOptions.d.ts +66 -0
- package/dist/transaction/resources/mutationOptions.js +9 -0
- package/dist/transaction/resources/where.d.ts +101 -0
- package/dist/transaction/resources/where.js +115 -0
- package/dist/{client → transaction/resources}/writeOptionsSchema.d.ts +2 -6
- package/dist/{client → transaction/resources}/writeOptionsSchema.js +9 -5
- package/dist/{schema → transaction/schema}/field.d.ts +17 -23
- package/dist/{schema → transaction/schema}/field.js +5 -5
- package/dist/transaction/schema/fieldRef.d.ts +38 -0
- package/dist/transaction/schema/fieldRef.js +11 -0
- package/dist/transaction/schema/loadStrategy.d.ts +45 -0
- package/dist/transaction/schema/loadStrategy.js +46 -0
- package/dist/{schema → transaction/schema}/model.d.ts +50 -35
- package/dist/{schema → transaction/schema}/model.js +30 -20
- package/dist/transaction/schema/openapi.d.ts +58 -0
- package/dist/transaction/schema/openapi.js +501 -0
- package/dist/{schema → transaction/schema}/relation.d.ts +21 -16
- package/dist/{schema → transaction/schema}/relation.js +7 -7
- package/dist/{schema → transaction/schema}/residency.d.ts +0 -9
- package/dist/{schema → transaction/schema}/residency.js +0 -5
- package/dist/{schema → transaction/schema}/roles.d.ts +5 -5
- package/dist/{schema → transaction/schema}/roles.js +5 -5
- package/dist/{schema → transaction/schema}/schema.d.ts +39 -10
- package/dist/{schema → transaction/schema}/schema.js +24 -3
- package/dist/{schema → transaction/schema}/tenancy.d.ts +1 -1
- package/dist/{schema → transaction/schema}/tenancy.js +7 -4
- package/dist/transaction/transactionLayer.d.ts +82 -0
- package/dist/transaction/transactionLayer.js +24 -0
- package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.d.ts +5 -6
- package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.js +9 -13
- package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.d.ts +9 -2
- package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.js +5 -9
- package/dist/{transactions/durableWriteStore.d.ts → transaction/transactions/settlement/pendingWrite.d.ts} +11 -37
- package/dist/transaction/transactions/settlement/pendingWrite.js +20 -0
- package/dist/transaction/transport/commitFrames.d.ts +90 -0
- package/dist/transaction/transport/commitFrames.js +134 -0
- package/dist/transaction/transport/connectionManager.d.ts +215 -0
- package/dist/transaction/transport/connectionManager.js +673 -0
- package/dist/transaction/transport/credentialLifecycle.d.ts +177 -0
- package/dist/transaction/transport/credentialLifecycle.js +324 -0
- package/dist/{sync → transaction/transport}/heartbeat.d.ts +3 -1
- package/dist/{sync → transaction/transport}/heartbeat.js +6 -4
- package/dist/transaction/transport/httpClient.d.ts +131 -0
- package/dist/{client → transaction/transport}/httpClient.js +6 -5
- package/dist/transaction/transport/httpOptions.d.ts +33 -0
- package/dist/transaction/transport/httpOptions.js +12 -0
- package/dist/{client → transaction/transport}/httpTransport.js +295 -97
- package/dist/{sync/NetworkProbe.d.ts → transaction/transport/networkProbe.d.ts} +7 -4
- package/dist/{sync/NetworkProbe.js → transaction/transport/networkProbe.js} +14 -13
- package/dist/transaction/transport/wsFrameHandlers.d.ts +128 -0
- package/dist/transaction/transport/wsFrameHandlers.js +429 -0
- package/dist/transaction/transport/wsTransport.d.ts +574 -0
- package/dist/transaction/transport/wsTransport.js +1023 -0
- package/dist/transaction/types/assertExact.d.ts +17 -0
- package/dist/transaction/types/assertExact.js +1 -0
- package/dist/{types → transaction/types}/global.d.ts +17 -2
- package/dist/{types → transaction/types}/global.js +2 -1
- package/dist/{types → transaction/types}/index.d.ts +14 -46
- package/dist/{types → transaction/types}/index.js +7 -16
- package/dist/{types → transaction/types}/streams.d.ts +73 -45
- package/dist/transaction/utils/duration.d.ts +50 -0
- package/dist/{utils → transaction/utils}/duration.js +32 -0
- package/dist/{utils → transaction/utils}/json.d.ts +18 -0
- package/dist/transaction/utils/json.js +276 -0
- package/dist/transaction/wire/accountResponses.d.ts +420 -0
- package/dist/transaction/wire/accountResponses.js +290 -0
- package/dist/transaction/wire/auth.d.ts +56 -0
- package/dist/transaction/wire/auth.js +63 -0
- package/dist/transaction/wire/claimEvent.d.ts +76 -0
- package/dist/transaction/wire/claimEvent.js +73 -0
- package/dist/transaction/wire/claims.d.ts +530 -0
- package/dist/transaction/wire/claims.js +327 -0
- package/dist/{wire → transaction/wire}/commit.d.ts +125 -193
- package/dist/{wire → transaction/wire}/commit.js +68 -47
- package/dist/{wire → transaction/wire}/delta.d.ts +66 -17
- package/dist/{wire → transaction/wire}/delta.js +37 -13
- package/dist/transaction/wire/errorEnvelope.d.ts +72 -0
- package/dist/{wire → transaction/wire}/errorEnvelope.js +36 -5
- package/dist/transaction/wire/feedCursor.d.ts +60 -0
- package/dist/transaction/wire/feedCursor.js +82 -0
- package/dist/transaction/wire/feedEvent.d.ts +204 -0
- package/dist/transaction/wire/feedEvent.js +65 -0
- package/dist/transaction/wire/frames.d.ts +194 -0
- package/dist/transaction/wire/frames.js +50 -0
- package/dist/transaction/wire/inboundFrames.d.ts +562 -0
- package/dist/transaction/wire/inboundFrames.js +116 -0
- package/dist/transaction/wire/index.d.ts +54 -0
- package/dist/transaction/wire/index.js +83 -0
- package/dist/{wire → transaction/wire}/listEnvelope.d.ts +13 -14
- package/dist/transaction/wire/listEnvelope.js +42 -0
- package/dist/transaction/wire/modelMutations.d.ts +31 -0
- package/dist/transaction/wire/modelMutations.js +52 -0
- package/dist/transaction/wire/modelResponses.d.ts +85 -0
- package/dist/transaction/wire/modelResponses.js +43 -0
- package/dist/transaction/wire/modelShape.d.ts +78 -0
- package/dist/transaction/wire/modelShape.js +74 -0
- package/dist/transactions/{TransactionQueue.d.ts → mutations/MutationQueue.d.ts} +85 -38
- package/dist/transactions/{TransactionQueue.js → mutations/MutationQueue.js} +141 -80
- package/dist/transactions/{TransactionStore.d.ts → mutations/MutationStore.d.ts} +8 -8
- package/dist/transactions/{TransactionStore.js → mutations/MutationStore.js} +2 -2
- package/dist/transactions/{coalesceRules.d.ts → mutations/coalesceRules.d.ts} +10 -10
- package/dist/transactions/{coalesceRules.js → mutations/coalesceRules.js} +1 -1
- package/dist/transactions/mutations/commitLatency.d.ts +52 -0
- package/dist/transactions/mutations/commitLatency.js +130 -0
- package/dist/transactions/{commitOutboxStore.d.ts → mutations/commitOutboxStore.d.ts} +1 -5
- package/dist/transactions/{commitOutboxStore.js → mutations/commitOutboxStore.js} +1 -1
- package/dist/transactions/{commitPayload.d.ts → mutations/commitPayload.d.ts} +18 -16
- package/dist/transactions/{commitPayload.js → mutations/commitPayload.js} +15 -15
- package/dist/transactions/{deltaConfirmation.d.ts → mutations/deltaConfirmation.d.ts} +15 -11
- package/dist/transactions/{deltaConfirmation.js → mutations/deltaConfirmation.js} +14 -12
- package/dist/transactions/mutations/durableWriteStore.d.ts +14 -0
- package/dist/transactions/mutations/durableWriteStore.js +12 -0
- package/dist/transactions/{optimisticApply.d.ts → mutations/optimisticApply.d.ts} +7 -7
- package/dist/transactions/{replayValidation.d.ts → mutations/replayValidation.d.ts} +4 -3
- package/dist/transactions/{replayValidation.js → mutations/replayValidation.js} +7 -5
- package/dist/utils/mobxSetup.d.ts +1 -1
- package/dist/utils/mobxSetup.js +5 -2
- package/dist/{core → views}/QueryView.d.ts +2 -2
- package/dist/{core → views}/QueryView.js +2 -2
- package/dist/{core → views}/ViewRegistry.d.ts +1 -1
- package/dist/{core/queryUtils.d.ts → views/incrementalView.d.ts} +6 -6
- package/dist/{core/queryUtils.js → views/incrementalView.js} +6 -6
- package/dist/webhooks/events.d.ts +2 -2
- package/dist/wire/index.d.ts +1 -34
- package/dist/wire/index.js +8 -49
- package/docs/agent-messaging.md +3 -3
- package/docs/agents.md +20 -13
- package/docs/api-keys.md +14 -10
- package/docs/api.md +27 -61
- package/docs/audit.md +6 -3
- package/docs/cli.md +41 -13
- package/docs/client-behavior.md +11 -9
- package/docs/concurrency-convention.md +49 -57
- package/docs/coordination.md +283 -121
- package/docs/data-sources.md +7 -5
- package/docs/debugging.md +39 -15
- package/docs/deployment.md +267 -0
- package/docs/examples/agent-human.md +49 -42
- package/docs/examples/ai-sdk-tool.md +69 -44
- package/docs/examples/existing-python-backend.md +8 -6
- package/docs/examples/nextjs.md +129 -47
- package/docs/examples/scoped-agent.md +46 -45
- package/docs/examples/server-agent.md +46 -26
- package/docs/groups.md +87 -30
- package/docs/guarantees.md +41 -12
- package/docs/how-it-works.md +38 -12
- package/docs/idempotency.md +126 -0
- package/docs/identity.md +77 -74
- package/docs/index.md +172 -86
- package/docs/integration-guide.md +31 -19
- package/docs/mcp.md +46 -21
- package/docs/migration.md +95 -18
- package/docs/operating-on-your-database.md +3 -1
- package/docs/projects.md +3 -1
- package/docs/quickstart.md +22 -5
- package/docs/react.md +31 -18
- package/docs/schema-contract.md +5 -3
- package/docs/session-settings.md +108 -0
- package/docs/sessions.md +4 -2
- package/docs/webhooks.md +12 -10
- package/llms.txt +48 -18
- package/package.json +21 -26
- package/dist/agent/Agent.d.ts +0 -366
- package/dist/agent/Agent.js +0 -514
- package/dist/agent/index.d.ts +0 -115
- package/dist/agent/index.js +0 -128
- package/dist/agent/session.d.ts +0 -93
- package/dist/agent/session.js +0 -149
- package/dist/agent/types.d.ts +0 -68
- package/dist/agent/types.js +0 -9
- package/dist/cli.cjs +0 -286329
- package/dist/client/durableWrites.d.ts +0 -21
- package/dist/client/httpClient.d.ts +0 -80
- package/dist/coordination/schema.d.ts +0 -722
- package/dist/coordination/schema.js +0 -578
- package/dist/schema/openapi.d.ts +0 -29
- package/dist/schema/openapi.js +0 -124
- 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/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 -192
- 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 -71
- 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/transactions/durableWriteStore.js +0 -30
- package/dist/utils/duration.d.ts +0 -25
- package/dist/utils/json.js +0 -88
- package/dist/wire/errorEnvelope.d.ts +0 -55
- package/dist/wire/frames.d.ts +0 -197
- package/dist/wire/frames.js +0 -49
- package/dist/wire/listEnvelope.js +0 -18
- package/docs/interaction-model.md +0 -97
- /package/dist/{core → query}/QueryProcessor.d.ts +0 -0
- /package/dist/{core → query}/QueryProcessor.js +0 -0
- /package/dist/{core/storeContract.js → storeContract.js} +0 -0
- /package/dist/{core → stores}/openIDBWithTimeout.d.ts +0 -0
- /package/dist/{core → stores}/openIDBWithTimeout.js +0 -0
- /package/dist/{client → transaction/auth}/credentialEndpoint.d.ts +0 -0
- /package/dist/{client → transaction/auth}/credentialEndpoint.js +0 -0
- /package/dist/{auth → transaction/auth}/credentialPolicy.d.ts +0 -0
- /package/dist/{auth → transaction/auth}/credentialPolicy.js +0 -0
- /package/dist/{auth → transaction/auth}/credentialSource.js +0 -0
- /package/dist/{client → transaction/auth}/hostedEndpoints.d.ts +0 -0
- /package/dist/{client → transaction/auth}/hostedEndpoints.js +0 -0
- /package/dist/{client → transaction}/persistence.d.ts +0 -0
- /package/dist/{client → transaction}/persistence.js +0 -0
- /package/dist/{client → transaction/resources}/functionalUpdate.d.ts +0 -0
- /package/dist/{client → transaction/resources}/functionalUpdate.js +0 -0
- /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.d.ts +0 -0
- /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.js +0 -0
- /package/dist/{client → transaction/transport}/httpTransport.d.ts +0 -0
- /package/dist/{types → transaction/types}/modelData.d.ts +0 -0
- /package/dist/{types → transaction/types}/modelData.js +0 -0
- /package/dist/{types → transaction/types}/participant.d.ts +0 -0
- /package/dist/{types → transaction/types}/participant.js +0 -0
- /package/dist/{types → transaction/types}/streams.js +0 -0
- /package/dist/{utils → transaction/utils}/asyncIterator.d.ts +0 -0
- /package/dist/{utils → transaction/utils}/asyncIterator.js +0 -0
- /package/dist/{wire → transaction/wire}/bootstrapReason.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/bootstrapReason.js +0 -0
- /package/dist/{wire → transaction/wire}/protocol.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/protocol.js +0 -0
- /package/dist/{wire → transaction/wire}/protocolVersion.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/protocolVersion.js +0 -0
- /package/dist/transactions/{UnconfirmedWrites.d.ts → mutations/UnconfirmedWrites.d.ts} +0 -0
- /package/dist/transactions/{UnconfirmedWrites.js → mutations/UnconfirmedWrites.js} +0 -0
- /package/dist/transactions/{optimisticApply.js → mutations/optimisticApply.js} +0 -0
- /package/dist/{core → views}/ViewRegistry.js +0 -0
package/dist/schema/openapi.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
// Pulled from the endpoints module to keep this schema file free of the client's
|
|
2
|
-
// error-handling and credential dependencies.
|
|
3
|
-
import { ABLO_HOSTED_HTTP_BASE_URL } from '../client/hostedEndpoints.js';
|
|
4
|
-
function fieldSchema(f) {
|
|
5
|
-
switch (f.type) {
|
|
6
|
-
case 'number':
|
|
7
|
-
return { type: 'number' };
|
|
8
|
-
case 'boolean':
|
|
9
|
-
return { type: 'boolean' };
|
|
10
|
-
case 'date':
|
|
11
|
-
return { type: 'string', format: 'date-time' };
|
|
12
|
-
case 'enum':
|
|
13
|
-
return f.enumValues ? { type: 'string', enum: [...f.enumValues] } : { type: 'string' };
|
|
14
|
-
case 'json':
|
|
15
|
-
return { type: 'object', additionalProperties: true };
|
|
16
|
-
case 'string':
|
|
17
|
-
default:
|
|
18
|
-
return { type: 'string' };
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
const pascal = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
22
|
-
const idParam = () => ({ name: 'id', in: 'path', required: true, schema: { type: 'string' } });
|
|
23
|
-
const jsonBody = (schema) => ({
|
|
24
|
-
required: true,
|
|
25
|
-
content: { 'application/json': { schema } },
|
|
26
|
-
});
|
|
27
|
-
const jsonResp = (description, schema) => ({
|
|
28
|
-
description,
|
|
29
|
-
content: { 'application/json': { schema } },
|
|
30
|
-
});
|
|
31
|
-
const commitReceipt = () => jsonResp('Commit receipt', {
|
|
32
|
-
type: 'object',
|
|
33
|
-
properties: {
|
|
34
|
-
object: { type: 'string', enum: ['commit_receipt'] },
|
|
35
|
-
clientTxId: { type: 'string' },
|
|
36
|
-
serverTxId: { type: 'string' },
|
|
37
|
-
success: { type: 'boolean' },
|
|
38
|
-
lastSyncId: { type: 'integer' },
|
|
39
|
-
},
|
|
40
|
-
});
|
|
41
|
-
export function schemaToOpenApi(schema, options = {}) {
|
|
42
|
-
const models = schema.models;
|
|
43
|
-
const paths = {};
|
|
44
|
-
const schemas = {};
|
|
45
|
-
for (const [key, def] of Object.entries(models)) {
|
|
46
|
-
const ref = { $ref: `#/components/schemas/${pascal(key)}` };
|
|
47
|
-
const properties = { id: { type: 'string' } };
|
|
48
|
-
const required = ['id'];
|
|
49
|
-
const createProps = {};
|
|
50
|
-
for (const [fname, fmeta] of Object.entries(def.fields)) {
|
|
51
|
-
const fs = fieldSchema(fmeta);
|
|
52
|
-
properties[fname] = fs;
|
|
53
|
-
createProps[fname] = fs;
|
|
54
|
-
if (!fmeta.isOptional)
|
|
55
|
-
required.push(fname);
|
|
56
|
-
}
|
|
57
|
-
schemas[pascal(key)] = { type: 'object', properties, required };
|
|
58
|
-
const createBody = jsonBody({ type: 'object', properties: createProps });
|
|
59
|
-
paths[`/v1/models/${key}`] = {
|
|
60
|
-
get: {
|
|
61
|
-
tags: [key],
|
|
62
|
-
summary: `List ${key}`,
|
|
63
|
-
parameters: [
|
|
64
|
-
{ name: 'limit', in: 'query', schema: { type: 'integer' } },
|
|
65
|
-
{ name: 'order_by', in: 'query', schema: { type: 'string' } },
|
|
66
|
-
{ name: 'order', in: 'query', schema: { type: 'string', enum: ['asc', 'desc'] } },
|
|
67
|
-
],
|
|
68
|
-
responses: {
|
|
69
|
-
'200': jsonResp('List of rows', {
|
|
70
|
-
type: 'object',
|
|
71
|
-
properties: { object: { type: 'string', enum: ['list'] }, data: { type: 'array', items: ref } },
|
|
72
|
-
}),
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
post: { tags: [key], summary: `Create a ${key}`, requestBody: createBody, responses: { '200': commitReceipt() } },
|
|
76
|
-
};
|
|
77
|
-
paths[`/v1/models/${key}/{id}`] = {
|
|
78
|
-
get: {
|
|
79
|
-
tags: [key],
|
|
80
|
-
summary: `Retrieve a ${key}`,
|
|
81
|
-
parameters: [idParam()],
|
|
82
|
-
responses: {
|
|
83
|
-
'200': jsonResp('The row', {
|
|
84
|
-
type: 'object',
|
|
85
|
-
properties: { data: ref, stamp: { type: 'integer' } },
|
|
86
|
-
}),
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
patch: { tags: [key], summary: `Update a ${key}`, parameters: [idParam()], requestBody: createBody, responses: { '200': commitReceipt() } },
|
|
90
|
-
delete: { tags: [key], summary: `Delete a ${key}`, parameters: [idParam()], responses: { '200': commitReceipt() } },
|
|
91
|
-
};
|
|
92
|
-
paths[`/v1/models/${key}/{id}/claim`] = {
|
|
93
|
-
post: { tags: [key], summary: `Claim a ${key} (acquire lease)`, parameters: [idParam()], responses: { '200': jsonResp('Claim acquired', { type: 'object' }) } },
|
|
94
|
-
delete: { tags: [key], summary: `Release a ${key} claim`, parameters: [idParam()], responses: { '200': jsonResp('Released', { type: 'object' }) } },
|
|
95
|
-
};
|
|
96
|
-
paths[`/v1/models/${key}/{id}/claim/heartbeat`] = {
|
|
97
|
-
post: { tags: [key], summary: `Heartbeat a held ${key} claim (extend the lease for long-running work)`, parameters: [idParam()], responses: { '200': jsonResp('Lease extended (or queued slot refreshed)', { type: 'object', properties: { object: { type: 'string', enum: ['claim_heartbeat'] }, claimId: { type: 'string' }, status: { type: 'string', enum: ['held', 'queued'] }, expiresAt: { type: 'integer' }, position: { type: 'integer' } } }) } },
|
|
98
|
-
};
|
|
99
|
-
paths[`/v1/models/${key}/{id}/claim/reorder`] = {
|
|
100
|
-
post: { tags: [key], summary: `Reorder the ${key} wait-line (privileged)`, parameters: [idParam()], responses: { '200': jsonResp('Reordered', { type: 'object' }) } },
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
paths['/v1/commits'] = {
|
|
104
|
-
post: { tags: ['commits'], summary: 'Commit a batch of operations atomically', responses: { '200': commitReceipt() } },
|
|
105
|
-
};
|
|
106
|
-
return {
|
|
107
|
-
openapi: '3.1.0',
|
|
108
|
-
info: {
|
|
109
|
-
title: options.title ?? 'Ablo API',
|
|
110
|
-
version: options.version ?? '1.0.0',
|
|
111
|
-
description: 'Generated from your pushed Ablo schema — these routes are your models. ' +
|
|
112
|
-
'Authenticate every request with your API key as a Bearer token.',
|
|
113
|
-
},
|
|
114
|
-
servers: [{ url: options.serverUrl ?? `${ABLO_HOSTED_HTTP_BASE_URL}/api` }],
|
|
115
|
-
security: [{ bearerAuth: [] }],
|
|
116
|
-
components: {
|
|
117
|
-
securitySchemes: {
|
|
118
|
-
bearerAuth: { type: 'http', scheme: 'bearer', description: 'Your Ablo API key (sk_… / rk_…).' },
|
|
119
|
-
},
|
|
120
|
-
schemas,
|
|
121
|
-
},
|
|
122
|
-
paths,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Factories that build well-formed bootstrap responses for tests. A
|
|
3
|
-
* bootstrap response is what the server returns when a client first syncs:
|
|
4
|
-
* either a full snapshot of the models or a partial batch of deltas since a
|
|
5
|
-
* known point. These helpers produce the same shapes, so tests can exercise
|
|
6
|
-
* client sync logic without a live server.
|
|
7
|
-
*/
|
|
8
|
-
import type { BootstrapType } from '../../types/index.js';
|
|
9
|
-
export type BootstrapModelData = Record<string, Record<string, unknown>[]>;
|
|
10
|
-
export interface BootstrapResponse {
|
|
11
|
-
type: BootstrapType;
|
|
12
|
-
lastSyncId: number;
|
|
13
|
-
models?: BootstrapModelData;
|
|
14
|
-
deltas?: {
|
|
15
|
-
id: number;
|
|
16
|
-
modelName: string;
|
|
17
|
-
modelId: string;
|
|
18
|
-
action: string;
|
|
19
|
-
data: Record<string, unknown>;
|
|
20
|
-
}[];
|
|
21
|
-
deltaCount?: number;
|
|
22
|
-
failedModels?: string[];
|
|
23
|
-
timestamp: number;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Builds a full bootstrap response — a fresh snapshot of the given models,
|
|
27
|
-
* as the server sends on a client's first sync.
|
|
28
|
-
*/
|
|
29
|
-
export declare function createFullBootstrapResponse(models: BootstrapModelData, lastSyncId?: number): BootstrapResponse;
|
|
30
|
-
/**
|
|
31
|
-
* Builds a partial bootstrap response — a batch of deltas applied on top of
|
|
32
|
-
* the client's last known sync point, given by `lastSyncId`.
|
|
33
|
-
*/
|
|
34
|
-
export declare function createPartialBootstrapResponse(deltas: BootstrapResponse['deltas'], lastSyncId: number): BootstrapResponse;
|
|
35
|
-
/**
|
|
36
|
-
* Builds a full bootstrap response with the common test models
|
|
37
|
-
* pre-populated. Pass any of the named model arrays to include them in the
|
|
38
|
-
* snapshot.
|
|
39
|
-
*/
|
|
40
|
-
export declare function createTestBootstrapResponse(options?: {
|
|
41
|
-
tasks?: Record<string, unknown>[];
|
|
42
|
-
projects?: Record<string, unknown>[];
|
|
43
|
-
slideDecks?: Record<string, unknown>[];
|
|
44
|
-
slides?: Record<string, unknown>[];
|
|
45
|
-
slideLayers?: Record<string, unknown>[];
|
|
46
|
-
comments?: Record<string, unknown>[];
|
|
47
|
-
lastSyncId?: number;
|
|
48
|
-
failedModels?: string[];
|
|
49
|
-
}): BootstrapResponse;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Factories that build well-formed bootstrap responses for tests. A
|
|
3
|
-
* bootstrap response is what the server returns when a client first syncs:
|
|
4
|
-
* either a full snapshot of the models or a partial batch of deltas since a
|
|
5
|
-
* known point. These helpers produce the same shapes, so tests can exercise
|
|
6
|
-
* client sync logic without a live server.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Builds a full bootstrap response — a fresh snapshot of the given models,
|
|
10
|
-
* as the server sends on a client's first sync.
|
|
11
|
-
*/
|
|
12
|
-
export function createFullBootstrapResponse(models, lastSyncId = 100) {
|
|
13
|
-
return {
|
|
14
|
-
type: 'full',
|
|
15
|
-
lastSyncId,
|
|
16
|
-
models,
|
|
17
|
-
timestamp: Date.now(),
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Builds a partial bootstrap response — a batch of deltas applied on top of
|
|
22
|
-
* the client's last known sync point, given by `lastSyncId`.
|
|
23
|
-
*/
|
|
24
|
-
export function createPartialBootstrapResponse(deltas, lastSyncId) {
|
|
25
|
-
return {
|
|
26
|
-
type: 'partial',
|
|
27
|
-
lastSyncId,
|
|
28
|
-
deltas,
|
|
29
|
-
deltaCount: deltas?.length ?? 0,
|
|
30
|
-
timestamp: Date.now(),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Builds a full bootstrap response with the common test models
|
|
35
|
-
* pre-populated. Pass any of the named model arrays to include them in the
|
|
36
|
-
* snapshot.
|
|
37
|
-
*/
|
|
38
|
-
export function createTestBootstrapResponse(options = {}) {
|
|
39
|
-
const models = {};
|
|
40
|
-
if (options.tasks)
|
|
41
|
-
models.Task = options.tasks;
|
|
42
|
-
if (options.projects)
|
|
43
|
-
models.Project = options.projects;
|
|
44
|
-
if (options.slideDecks)
|
|
45
|
-
models.SlideDeck = options.slideDecks;
|
|
46
|
-
if (options.slides)
|
|
47
|
-
models.Slide = options.slides;
|
|
48
|
-
if (options.slideLayers)
|
|
49
|
-
models.SlideLayer = options.slideLayers;
|
|
50
|
-
if (options.comments)
|
|
51
|
-
models.Comment = options.comments;
|
|
52
|
-
return {
|
|
53
|
-
type: 'full',
|
|
54
|
-
lastSyncId: options.lastSyncId ?? 100,
|
|
55
|
-
models,
|
|
56
|
-
failedModels: options.failedModels,
|
|
57
|
-
timestamp: Date.now(),
|
|
58
|
-
};
|
|
59
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Factories that build well-formed delta objects for tests. A delta, a
|
|
3
|
-
* {@link SyncAction}, is a single change to one model instance in the wire
|
|
4
|
-
* format the server sends: an insert, update, delete, archive, and so on.
|
|
5
|
-
* These helpers let tests construct deltas without a live server.
|
|
6
|
-
*/
|
|
7
|
-
import type { SyncActionType, SyncAction } from '../../types/index.js';
|
|
8
|
-
/** Reset the delta counter (call in beforeEach for deterministic IDs) */
|
|
9
|
-
export declare function resetDeltaCounter(): void;
|
|
10
|
-
export interface CreateDeltaOptions {
|
|
11
|
-
/** Sync ID (auto-increments if not provided) */
|
|
12
|
-
id?: number;
|
|
13
|
-
/** Model name (e.g., 'Task', 'Slide') */
|
|
14
|
-
modelName: string;
|
|
15
|
-
/** Model ID */
|
|
16
|
-
modelId: string;
|
|
17
|
-
/** Action type: I=Insert, U=Update, D=Delete, A=Archive, V=Unarchive */
|
|
18
|
-
action: SyncActionType;
|
|
19
|
-
/** Delta payload data */
|
|
20
|
-
data?: Record<string, unknown>;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Builds a single delta ({@link SyncAction}) in the server's wire format.
|
|
24
|
-
*/
|
|
25
|
-
export declare function createDelta(options: CreateDeltaOptions): SyncAction;
|
|
26
|
-
/**
|
|
27
|
-
* Builds an insert delta for a new entity.
|
|
28
|
-
*/
|
|
29
|
-
export declare function createInsertDelta(modelName: string, modelId: string, data: Record<string, unknown>, syncId?: number): SyncAction;
|
|
30
|
-
/**
|
|
31
|
-
* Builds an update delta for an existing entity.
|
|
32
|
-
*/
|
|
33
|
-
export declare function createUpdateDelta(modelName: string, modelId: string, data: Record<string, unknown>, syncId?: number): SyncAction;
|
|
34
|
-
/**
|
|
35
|
-
* Builds a delete delta.
|
|
36
|
-
*/
|
|
37
|
-
export declare function createDeleteDelta(modelName: string, modelId: string, syncId?: number): SyncAction;
|
|
38
|
-
/**
|
|
39
|
-
* Builds an archive delta, stamping `archivedAt` with the current time.
|
|
40
|
-
*/
|
|
41
|
-
export declare function createArchiveDelta(modelName: string, modelId: string, syncId?: number): SyncAction;
|
|
42
|
-
/**
|
|
43
|
-
* Builds an unarchive delta, clearing `archivedAt`.
|
|
44
|
-
*/
|
|
45
|
-
export declare function createUnarchiveDelta(modelName: string, modelId: string, syncId?: number): SyncAction;
|
|
46
|
-
/**
|
|
47
|
-
* Builds a covering ('C') delta. It signals that the client has gained
|
|
48
|
-
* permission to see an entity that already exists. The client treats it
|
|
49
|
-
* like an insert, adding the entity to its local store as if newly created.
|
|
50
|
-
* A covering delta typically follows a group-added delta.
|
|
51
|
-
*/
|
|
52
|
-
export declare function createCoveringDelta(modelName: string, modelId: string, data: Record<string, unknown>, syncId?: number): SyncAction;
|
|
53
|
-
/**
|
|
54
|
-
* Builds a group-added ('G') delta in the incremental payload shape. It
|
|
55
|
-
* signals that the recipient was added to a single sync group. The client
|
|
56
|
-
* updates its subscription state and waits for covering deltas to deliver
|
|
57
|
-
* the newly visible entities. Unlike the older payload that carries both
|
|
58
|
-
* added and removed groups, this shape does not trigger a re-bootstrap.
|
|
59
|
-
*/
|
|
60
|
-
export declare function createGroupAddedDelta(userId: string, group: string, syncId?: number): SyncAction;
|
|
61
|
-
/**
|
|
62
|
-
* Builds a group-change ('G') delta in the older payload shape, which
|
|
63
|
-
* carries both added and removed groups in one delta and forces a full
|
|
64
|
-
* re-bootstrap on the client. Useful for testing backward compatibility
|
|
65
|
-
* with that older shape.
|
|
66
|
-
*/
|
|
67
|
-
export declare function createLegacyGroupChangeDelta(userId: string, added: string[], removed: string[], syncId?: number): SyncAction;
|
|
68
|
-
/**
|
|
69
|
-
* Builds a group-removed ('S') delta. It signals that the recipient lost
|
|
70
|
-
* access to a sync group. The client purges the affected local state and
|
|
71
|
-
* re-bootstraps with the updated group list.
|
|
72
|
-
*/
|
|
73
|
-
export declare function createGroupRemovedDelta(userId: string, group: string, syncId?: number): SyncAction;
|
|
74
|
-
/**
|
|
75
|
-
* Builds a batch of deltas with sequential sync IDs.
|
|
76
|
-
*/
|
|
77
|
-
export declare function createDeltaBatch(deltas: Omit<CreateDeltaOptions, 'id'>[], startingSyncId?: number): SyncAction[];
|
|
78
|
-
/**
|
|
79
|
-
* Builds a confirmation delta, which signals that a mutation was persisted
|
|
80
|
-
* by the server. The client's transaction queue watches for these to
|
|
81
|
-
* confirm its in-flight writes.
|
|
82
|
-
*/
|
|
83
|
-
export declare function createConfirmationDelta(modelName: string, modelId: string, syncId: number, action?: SyncActionType, data?: Record<string, unknown>): SyncAction;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Factories that build well-formed delta objects for tests. A delta, a
|
|
3
|
-
* {@link SyncAction}, is a single change to one model instance in the wire
|
|
4
|
-
* format the server sends: an insert, update, delete, archive, and so on.
|
|
5
|
-
* These helpers let tests construct deltas without a live server.
|
|
6
|
-
*/
|
|
7
|
-
let deltaCounter = 0;
|
|
8
|
-
/** Reset the delta counter (call in beforeEach for deterministic IDs) */
|
|
9
|
-
export function resetDeltaCounter() {
|
|
10
|
-
deltaCounter = 0;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Builds a single delta ({@link SyncAction}) in the server's wire format.
|
|
14
|
-
*/
|
|
15
|
-
export function createDelta(options) {
|
|
16
|
-
deltaCounter++;
|
|
17
|
-
return {
|
|
18
|
-
id: options.id ?? deltaCounter,
|
|
19
|
-
modelName: options.modelName,
|
|
20
|
-
modelId: options.modelId,
|
|
21
|
-
action: options.action,
|
|
22
|
-
data: options.data ?? {},
|
|
23
|
-
__class: 'SyncAction',
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Builds an insert delta for a new entity.
|
|
28
|
-
*/
|
|
29
|
-
export function createInsertDelta(modelName, modelId, data, syncId) {
|
|
30
|
-
return createDelta({ modelName, modelId, action: 'I', data, id: syncId });
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Builds an update delta for an existing entity.
|
|
34
|
-
*/
|
|
35
|
-
export function createUpdateDelta(modelName, modelId, data, syncId) {
|
|
36
|
-
return createDelta({ modelName, modelId, action: 'U', data, id: syncId });
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Builds a delete delta.
|
|
40
|
-
*/
|
|
41
|
-
export function createDeleteDelta(modelName, modelId, syncId) {
|
|
42
|
-
return createDelta({ modelName, modelId, action: 'D', data: {}, id: syncId });
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Builds an archive delta, stamping `archivedAt` with the current time.
|
|
46
|
-
*/
|
|
47
|
-
export function createArchiveDelta(modelName, modelId, syncId) {
|
|
48
|
-
return createDelta({
|
|
49
|
-
modelName,
|
|
50
|
-
modelId,
|
|
51
|
-
action: 'A',
|
|
52
|
-
data: { archivedAt: new Date().toISOString() },
|
|
53
|
-
id: syncId,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Builds an unarchive delta, clearing `archivedAt`.
|
|
58
|
-
*/
|
|
59
|
-
export function createUnarchiveDelta(modelName, modelId, syncId) {
|
|
60
|
-
return createDelta({
|
|
61
|
-
modelName,
|
|
62
|
-
modelId,
|
|
63
|
-
action: 'V',
|
|
64
|
-
data: { archivedAt: null },
|
|
65
|
-
id: syncId,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Builds a covering ('C') delta. It signals that the client has gained
|
|
70
|
-
* permission to see an entity that already exists. The client treats it
|
|
71
|
-
* like an insert, adding the entity to its local store as if newly created.
|
|
72
|
-
* A covering delta typically follows a group-added delta.
|
|
73
|
-
*/
|
|
74
|
-
export function createCoveringDelta(modelName, modelId, data, syncId) {
|
|
75
|
-
return createDelta({ modelName, modelId, action: 'C', data, id: syncId });
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Builds a group-added ('G') delta in the incremental payload shape. It
|
|
79
|
-
* signals that the recipient was added to a single sync group. The client
|
|
80
|
-
* updates its subscription state and waits for covering deltas to deliver
|
|
81
|
-
* the newly visible entities. Unlike the older payload that carries both
|
|
82
|
-
* added and removed groups, this shape does not trigger a re-bootstrap.
|
|
83
|
-
*/
|
|
84
|
-
export function createGroupAddedDelta(userId, group, syncId) {
|
|
85
|
-
return createDelta({
|
|
86
|
-
modelName: 'SyncGroupChange',
|
|
87
|
-
modelId: `sga_${userId}`,
|
|
88
|
-
action: 'G',
|
|
89
|
-
data: { group, userId },
|
|
90
|
-
id: syncId,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Builds a group-change ('G') delta in the older payload shape, which
|
|
95
|
-
* carries both added and removed groups in one delta and forces a full
|
|
96
|
-
* re-bootstrap on the client. Useful for testing backward compatibility
|
|
97
|
-
* with that older shape.
|
|
98
|
-
*/
|
|
99
|
-
export function createLegacyGroupChangeDelta(userId, added, removed, syncId) {
|
|
100
|
-
return createDelta({
|
|
101
|
-
modelName: 'SyncGroupChange',
|
|
102
|
-
modelId: `sgc_${userId}`,
|
|
103
|
-
action: 'G',
|
|
104
|
-
data: { addedGroups: added, removedGroups: removed },
|
|
105
|
-
id: syncId,
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Builds a group-removed ('S') delta. It signals that the recipient lost
|
|
110
|
-
* access to a sync group. The client purges the affected local state and
|
|
111
|
-
* re-bootstraps with the updated group list.
|
|
112
|
-
*/
|
|
113
|
-
export function createGroupRemovedDelta(userId, group, syncId) {
|
|
114
|
-
return createDelta({
|
|
115
|
-
modelName: 'SyncGroupChange',
|
|
116
|
-
modelId: `sgr_${userId}`,
|
|
117
|
-
action: 'S',
|
|
118
|
-
data: { group, userId },
|
|
119
|
-
id: syncId,
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Builds a batch of deltas with sequential sync IDs.
|
|
124
|
-
*/
|
|
125
|
-
export function createDeltaBatch(deltas, startingSyncId) {
|
|
126
|
-
const start = startingSyncId ?? deltaCounter + 1;
|
|
127
|
-
return deltas.map((d, i) => createDelta({ ...d, id: start + i }));
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Builds a confirmation delta, which signals that a mutation was persisted
|
|
131
|
-
* by the server. The client's transaction queue watches for these to
|
|
132
|
-
* confirm its in-flight writes.
|
|
133
|
-
*/
|
|
134
|
-
export function createConfirmationDelta(modelName, modelId, syncId, action = 'U', data = {}) {
|
|
135
|
-
return createDelta({ modelName, modelId, action, data, id: syncId });
|
|
136
|
-
}
|
|
@@ -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;
|