@abloatai/humans 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/README.md +52 -0
- package/dist/Ablo.d.ts +208 -0
- package/dist/Ablo.js +120 -0
- package/dist/client.d.ts +317 -0
- package/dist/client.js +13 -0
- package/dist/core.d.ts +35 -0
- package/dist/core.js +48 -0
- package/dist/humans.d.ts +28 -0
- package/dist/humans.js +34 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +6 -0
- package/dist/local/BaseSyncedStore.d.ts +807 -0
- package/dist/local/BaseSyncedStore.js +1516 -0
- package/dist/local/Database.d.ts +322 -0
- package/dist/local/Database.js +1589 -0
- package/dist/local/InstanceCache.d.ts +255 -0
- package/dist/local/InstanceCache.js +1263 -0
- package/dist/local/LazyReferenceCollection.d.ts +177 -0
- package/dist/local/LazyReferenceCollection.js +461 -0
- package/dist/local/Model.d.ts +475 -0
- package/dist/local/Model.js +950 -0
- package/dist/local/ModelRegistry.d.ts +225 -0
- package/dist/local/ModelRegistry.js +539 -0
- package/dist/local/NetworkMonitor.d.ts +28 -0
- package/dist/local/NetworkMonitor.js +79 -0
- package/dist/local/RuntimeContext.d.ts +52 -0
- package/dist/local/RuntimeContext.js +80 -0
- package/dist/local/SyncClient.d.ts +516 -0
- package/dist/local/SyncClient.js +1754 -0
- package/dist/local/adapters/alwaysOnline.d.ts +14 -0
- package/dist/local/adapters/alwaysOnline.js +17 -0
- package/dist/local/adapters/inMemoryStorage.d.ts +37 -0
- package/dist/local/adapters/inMemoryStorage.js +122 -0
- package/dist/local/client/clientPrelude.d.ts +52 -0
- package/dist/local/client/clientPrelude.js +60 -0
- package/dist/local/client/consoleLogger.d.ts +35 -0
- package/dist/local/client/consoleLogger.js +44 -0
- package/dist/local/client/createInternalComponents.d.ts +50 -0
- package/dist/local/client/createInternalComponents.js +98 -0
- package/dist/local/client/createModelProxy.d.ts +248 -0
- package/dist/local/client/createModelProxy.js +880 -0
- package/dist/local/client/modelRegistration.d.ts +10 -0
- package/dist/local/client/modelRegistration.js +316 -0
- package/dist/local/client/options.d.ts +440 -0
- package/dist/local/client/options.js +7 -0
- package/dist/local/client/reactiveEngine.d.ts +53 -0
- package/dist/local/client/reactiveEngine.js +705 -0
- package/dist/local/client/resourceTypes.d.ts +12 -0
- package/dist/local/client/resourceTypes.js +10 -0
- package/dist/local/client/schemaConfig.d.ts +44 -0
- package/dist/local/client/schemaConfig.js +185 -0
- package/dist/local/client/storeCluster.d.ts +46 -0
- package/dist/local/client/storeCluster.js +133 -0
- package/dist/local/client/storeLifecycle.d.ts +61 -0
- package/dist/local/client/storeLifecycle.js +236 -0
- package/dist/local/client/validateAbloOptions.d.ts +42 -0
- package/dist/local/client/validateAbloOptions.js +43 -0
- package/dist/local/client/wsMutationExecutor.d.ts +27 -0
- package/dist/local/client/wsMutationExecutor.js +72 -0
- package/dist/local/context.d.ts +42 -0
- package/dist/local/context.js +81 -0
- package/dist/local/coordination/ClaimLog.d.ts +26 -0
- package/dist/local/coordination/ClaimLog.js +32 -0
- package/dist/local/interfaces/index.d.ts +311 -0
- package/dist/local/interfaces/index.js +9 -0
- package/dist/local/localModelContract.d.ts +14 -0
- package/dist/local/localModelContract.js +1 -0
- package/dist/local/logPosition.d.ts +31 -0
- package/dist/local/logPosition.js +53 -0
- package/dist/local/mutationPersistence.d.ts +6 -0
- package/dist/local/mutationPersistence.js +1 -0
- package/dist/local/mutators/RecordingMutation.d.ts +36 -0
- package/dist/local/mutators/RecordingMutation.js +182 -0
- package/dist/local/mutators/Transaction.d.ts +40 -0
- package/dist/local/mutators/Transaction.js +58 -0
- package/dist/local/mutators/UndoManager.d.ts +258 -0
- package/dist/local/mutators/UndoManager.js +665 -0
- package/dist/local/mutators/defineMutators.d.ts +60 -0
- package/dist/local/mutators/defineMutators.js +18 -0
- package/dist/local/mutators/inverseOp.d.ts +126 -0
- package/dist/local/mutators/inverseOp.js +71 -0
- package/dist/local/mutators/mutateActions.d.ts +45 -0
- package/dist/local/mutators/mutateActions.js +105 -0
- package/dist/local/mutators/readerActions.d.ts +33 -0
- package/dist/local/mutators/readerActions.js +57 -0
- package/dist/local/mutators/undoApply.d.ts +51 -0
- package/dist/local/mutators/undoApply.js +117 -0
- package/dist/local/persistence.d.ts +7 -0
- package/dist/local/persistence.js +9 -0
- package/dist/local/query/QueryProcessor.d.ts +75 -0
- package/dist/local/query/QueryProcessor.js +255 -0
- package/dist/local/query/client.d.ts +64 -0
- package/dist/local/query/client.js +138 -0
- package/dist/local/query/types.d.ts +85 -0
- package/dist/local/query/types.js +16 -0
- package/dist/local/schema/serialize.d.ts +1 -0
- package/dist/local/schema/serialize.js +1 -0
- package/dist/local/store/queryApi.d.ts +13 -0
- package/dist/local/store/queryApi.js +35 -0
- package/dist/local/storeContract.d.ts +145 -0
- package/dist/local/storeContract.js +12 -0
- package/dist/local/stores/DatabaseManager.d.ts +112 -0
- package/dist/local/stores/DatabaseManager.js +400 -0
- package/dist/local/stores/ObjectStore.d.ts +115 -0
- package/dist/local/stores/ObjectStore.js +393 -0
- package/dist/local/stores/ObjectStoreContract.d.ts +38 -0
- package/dist/local/stores/ObjectStoreContract.js +1 -0
- package/dist/local/stores/StoreManager.d.ts +114 -0
- package/dist/local/stores/StoreManager.js +304 -0
- package/dist/local/stores/SyncActionStore.d.ts +99 -0
- package/dist/local/stores/SyncActionStore.js +506 -0
- package/dist/local/stores/openIDBWithTimeout.d.ts +65 -0
- package/dist/local/stores/openIDBWithTimeout.js +153 -0
- package/dist/local/stores/persistenceCleanup.d.ts +7 -0
- package/dist/local/stores/persistenceCleanup.js +26 -0
- package/dist/local/stores/persistenceIdentity.d.ts +27 -0
- package/dist/local/stores/persistenceIdentity.js +38 -0
- package/dist/local/stores/syncAction.d.ts +26 -0
- package/dist/local/stores/syncAction.js +16 -0
- package/dist/local/stores/v1PersistenceDeletion.d.ts +8 -0
- package/dist/local/stores/v1PersistenceDeletion.js +16 -0
- package/dist/local/sync/BootstrapFetcher.d.ts +284 -0
- package/dist/local/sync/BootstrapFetcher.js +964 -0
- package/dist/local/sync/ConnectionManager.d.ts +8 -0
- package/dist/local/sync/ConnectionManager.js +8 -0
- package/dist/local/sync/OnDemandLoader.d.ts +231 -0
- package/dist/local/sync/OnDemandLoader.js +743 -0
- package/dist/local/sync/SubscriptionManager.d.ts +159 -0
- package/dist/local/sync/SubscriptionManager.js +243 -0
- package/dist/local/sync/SyncWebSocket.d.ts +173 -0
- package/dist/local/sync/SyncWebSocket.js +438 -0
- package/dist/local/sync/bootstrapApply.d.ts +73 -0
- package/dist/local/sync/bootstrapApply.js +73 -0
- package/dist/local/sync/commitFrames.d.ts +8 -0
- package/dist/local/sync/commitFrames.js +8 -0
- package/dist/local/sync/connectionManagerLifecycle.d.ts +23 -0
- package/dist/local/sync/connectionManagerLifecycle.js +126 -0
- package/dist/local/sync/contextPorts.d.ts +18 -0
- package/dist/local/sync/contextPorts.js +31 -0
- package/dist/local/sync/createClaimStream.d.ts +64 -0
- package/dist/local/sync/createClaimStream.js +475 -0
- package/dist/local/sync/createSnapshot.d.ts +29 -0
- package/dist/local/sync/createSnapshot.js +116 -0
- package/dist/local/sync/credentialLifecycle.d.ts +7 -0
- package/dist/local/sync/credentialLifecycle.js +7 -0
- package/dist/local/sync/deltaPipeline.d.ts +116 -0
- package/dist/local/sync/deltaPipeline.js +357 -0
- package/dist/local/sync/groupChange.d.ts +116 -0
- package/dist/local/sync/groupChange.js +244 -0
- package/dist/local/sync/initialize.d.ts +27 -0
- package/dist/local/sync/initialize.js +137 -0
- package/dist/local/sync/participants.d.ts +132 -0
- package/dist/local/sync/participants.js +342 -0
- package/dist/local/sync/persistedPrefix.d.ts +12 -0
- package/dist/local/sync/persistedPrefix.js +22 -0
- package/dist/local/sync/reconnect.d.ts +23 -0
- package/dist/local/sync/reconnect.js +55 -0
- package/dist/local/sync/schemaDrift.d.ts +55 -0
- package/dist/local/sync/schemaDrift.js +53 -0
- package/dist/local/sync/schemas.d.ts +71 -0
- package/dist/local/sync/schemas.js +94 -0
- package/dist/local/sync/socketEventWiring.d.ts +31 -0
- package/dist/local/sync/socketEventWiring.js +130 -0
- package/dist/local/sync/syncCursor.d.ts +40 -0
- package/dist/local/sync/syncCursor.js +55 -0
- package/dist/local/sync/syncPlan.d.ts +54 -0
- package/dist/local/sync/syncPlan.js +50 -0
- package/dist/local/sync/terminalSessionLifecycle.d.ts +20 -0
- package/dist/local/sync/terminalSessionLifecycle.js +50 -0
- package/dist/local/sync/wsFrameHandlers.d.ts +8 -0
- package/dist/local/sync/wsFrameHandlers.js +8 -0
- package/dist/local/transactions/databaseCommitOutbox.d.ts +15 -0
- package/dist/local/transactions/databaseCommitOutbox.js +16 -0
- package/dist/local/transactions/localMutation.d.ts +10 -0
- package/dist/local/transactions/localMutation.js +37 -0
- package/dist/local/transactions/mutations/MutationQueue.d.ts +511 -0
- package/dist/local/transactions/mutations/MutationQueue.js +1498 -0
- package/dist/local/transactions/mutations/MutationStore.d.ts +20 -0
- package/dist/local/transactions/mutations/MutationStore.js +53 -0
- package/dist/local/transactions/mutations/UnconfirmedWrites.d.ts +82 -0
- package/dist/local/transactions/mutations/UnconfirmedWrites.js +104 -0
- package/dist/local/transactions/mutations/batchProcessing.d.ts +64 -0
- package/dist/local/transactions/mutations/batchProcessing.js +349 -0
- package/dist/local/transactions/mutations/coalesceRules.d.ts +58 -0
- package/dist/local/transactions/mutations/coalesceRules.js +140 -0
- package/dist/local/transactions/mutations/commitApi.d.ts +19 -0
- package/dist/local/transactions/mutations/commitApi.js +74 -0
- package/dist/local/transactions/mutations/commitLane.d.ts +70 -0
- package/dist/local/transactions/mutations/commitLane.js +140 -0
- package/dist/local/transactions/mutations/commitLatency.d.ts +52 -0
- package/dist/local/transactions/mutations/commitLatency.js +130 -0
- package/dist/local/transactions/mutations/commitPayload.d.ts +165 -0
- package/dist/local/transactions/mutations/commitPayload.js +152 -0
- package/dist/local/transactions/mutations/commitTransport.d.ts +36 -0
- package/dist/local/transactions/mutations/commitTransport.js +104 -0
- package/dist/local/transactions/mutations/deltaConfirmation.d.ts +63 -0
- package/dist/local/transactions/mutations/deltaConfirmation.js +235 -0
- package/dist/local/transactions/mutations/durableCommitRestore.d.ts +17 -0
- package/dist/local/transactions/mutations/durableCommitRestore.js +95 -0
- package/dist/local/transactions/mutations/durableWriteStore.d.ts +14 -0
- package/dist/local/transactions/mutations/durableWriteStore.js +12 -0
- package/dist/local/transactions/mutations/executionSelection.d.ts +6 -0
- package/dist/local/transactions/mutations/executionSelection.js +42 -0
- package/dist/local/transactions/mutations/failureHandling.d.ts +16 -0
- package/dist/local/transactions/mutations/failureHandling.js +130 -0
- package/dist/local/transactions/mutations/failurePolicy.d.ts +13 -0
- package/dist/local/transactions/mutations/failurePolicy.js +48 -0
- package/dist/local/transactions/mutations/localMutation.d.ts +58 -0
- package/dist/local/transactions/mutations/localMutation.js +75 -0
- package/dist/local/transactions/mutations/modelOperations.d.ts +44 -0
- package/dist/local/transactions/mutations/modelOperations.js +144 -0
- package/dist/local/transactions/mutations/mutationPersistence.d.ts +25 -0
- package/dist/local/transactions/mutations/mutationPersistence.js +188 -0
- package/dist/local/transactions/mutations/pendingDrain.d.ts +33 -0
- package/dist/local/transactions/mutations/pendingDrain.js +112 -0
- package/dist/local/transactions/mutations/processingScheduler.d.ts +14 -0
- package/dist/local/transactions/mutations/processingScheduler.js +24 -0
- package/dist/local/transactions/mutations/queueCoalescing.d.ts +13 -0
- package/dist/local/transactions/mutations/queueCoalescing.js +35 -0
- package/dist/local/transactions/mutations/replayValidation.d.ts +187 -0
- package/dist/local/transactions/mutations/replayValidation.js +164 -0
- package/dist/local/transactions/reconnectDrain.d.ts +11 -0
- package/dist/local/transactions/reconnectDrain.js +13 -0
- package/dist/local/utils/mobxSetup.d.ts +53 -0
- package/dist/local/utils/mobxSetup.js +330 -0
- package/dist/local/views/QueryView.d.ts +79 -0
- package/dist/local/views/QueryView.js +218 -0
- package/dist/local/views/ViewRegistry.d.ts +20 -0
- package/dist/local/views/ViewRegistry.js +57 -0
- package/dist/local/views/incrementalView.d.ts +45 -0
- package/dist/local/views/incrementalView.js +69 -0
- package/dist/plugin.d.ts +285 -0
- package/dist/plugin.js +106 -0
- package/dist/presenceStream.d.ts +69 -0
- package/dist/presenceStream.js +200 -0
- package/dist/react/AbloProvider.d.ts +242 -0
- package/dist/react/AbloProvider.js +456 -0
- package/dist/react/ClientSideSuspense.d.ts +36 -0
- package/dist/react/ClientSideSuspense.js +17 -0
- package/dist/react/DefaultFallback.d.ts +24 -0
- package/dist/react/DefaultFallback.js +43 -0
- package/dist/react/context.d.ts +55 -0
- package/dist/react/context.js +29 -0
- package/dist/react/createAbloReact.d.ts +50 -0
- package/dist/react/createAbloReact.js +48 -0
- package/dist/react/internalContext.d.ts +33 -0
- package/dist/react/internalContext.js +3 -0
- package/dist/react/useAblo.d.ts +96 -0
- package/dist/react/useAblo.js +120 -0
- package/dist/react/useCurrentUserId.d.ts +2 -0
- package/dist/react/useCurrentUserId.js +12 -0
- package/dist/react/useErrorListener.d.ts +2 -0
- package/dist/react/useErrorListener.js +14 -0
- package/dist/react/useMutationFailureListener.d.ts +8 -0
- package/dist/react/useMutationFailureListener.js +19 -0
- package/dist/react/useMutators.d.ts +56 -0
- package/dist/react/useMutators.js +84 -0
- package/dist/react/useSyncStatus.d.ts +19 -0
- package/dist/react/useSyncStatus.js +37 -0
- package/dist/react/useUndoScope.d.ts +34 -0
- package/dist/react/useUndoScope.js +73 -0
- package/dist/react.d.ts +18 -0
- package/dist/react.js +14 -0
- package/dist/reactRuntime.d.ts +4 -0
- package/dist/reactRuntime.js +2 -0
- package/dist/surface.d.ts +36 -0
- package/dist/surface.js +77 -0
- package/dist/useReactive.d.ts +6 -0
- package/dist/useReactive.js +43 -0
- package/package.json +119 -0
- package/src/Ablo.ts +456 -0
- package/src/client.ts +374 -0
- package/src/core.ts +104 -0
- package/src/humans.ts +61 -0
- package/src/index.ts +40 -0
- package/src/local/BaseSyncedStore.ts +1991 -0
- package/src/local/Database.ts +2052 -0
- package/src/local/InstanceCache.ts +1503 -0
- package/src/local/LazyReferenceCollection.ts +563 -0
- package/src/local/Model.ts +1124 -0
- package/src/local/ModelRegistry.ts +762 -0
- package/src/local/NetworkMonitor.ts +88 -0
- package/src/local/RuntimeContext.ts +141 -0
- package/src/local/SyncClient.ts +2131 -0
- package/src/local/adapters/alwaysOnline.ts +20 -0
- package/src/local/adapters/inMemoryStorage.ts +141 -0
- package/src/local/client/clientPrelude.ts +112 -0
- package/src/local/client/consoleLogger.ts +60 -0
- package/src/local/client/createInternalComponents.ts +163 -0
- package/src/local/client/createModelProxy.ts +1390 -0
- package/src/local/client/modelRegistration.ts +350 -0
- package/src/local/client/options.ts +526 -0
- package/src/local/client/reactiveEngine.ts +935 -0
- package/src/local/client/resourceTypes.ts +37 -0
- package/src/local/client/schemaConfig.ts +194 -0
- package/src/local/client/storeCluster.ts +172 -0
- package/src/local/client/storeLifecycle.ts +343 -0
- package/src/local/client/validateAbloOptions.ts +95 -0
- package/src/local/client/wsMutationExecutor.ts +110 -0
- package/src/local/context.ts +96 -0
- package/src/local/coordination/ClaimLog.ts +39 -0
- package/src/local/interfaces/index.ts +468 -0
- package/src/local/localModelContract.ts +15 -0
- package/src/local/logPosition.ts +84 -0
- package/src/local/mutationPersistence.ts +7 -0
- package/src/local/mutators/RecordingMutation.ts +222 -0
- package/src/local/mutators/Transaction.ts +97 -0
- package/src/local/mutators/UndoManager.ts +741 -0
- package/src/local/mutators/defineMutators.ts +76 -0
- package/src/local/mutators/inverseOp.ts +83 -0
- package/src/local/mutators/mutateActions.ts +167 -0
- package/src/local/mutators/readerActions.ts +99 -0
- package/src/local/mutators/undoApply.ts +141 -0
- package/src/local/persistence.ts +16 -0
- package/src/local/query/QueryProcessor.ts +347 -0
- package/src/local/query/client.ts +197 -0
- package/src/local/query/types.ts +102 -0
- package/src/local/schema/serialize.ts +1 -0
- package/src/local/store/queryApi.ts +56 -0
- package/src/local/storeContract.ts +146 -0
- package/src/local/stores/DatabaseManager.ts +507 -0
- package/src/local/stores/ObjectStore.ts +449 -0
- package/src/local/stores/ObjectStoreContract.ts +48 -0
- package/src/local/stores/StoreManager.ts +388 -0
- package/src/local/stores/SyncActionStore.ts +579 -0
- package/src/local/stores/openIDBWithTimeout.ts +195 -0
- package/src/local/stores/persistenceCleanup.ts +43 -0
- package/src/local/stores/persistenceIdentity.ts +83 -0
- package/src/local/stores/syncAction.ts +21 -0
- package/src/local/stores/v1PersistenceDeletion.ts +21 -0
- package/src/local/sync/BootstrapFetcher.ts +1224 -0
- package/src/local/sync/ConnectionManager.ts +15 -0
- package/src/local/sync/OnDemandLoader.ts +927 -0
- package/src/local/sync/SubscriptionManager.ts +300 -0
- package/src/local/sync/SyncWebSocket.ts +584 -0
- package/src/local/sync/bootstrapApply.ts +130 -0
- package/src/local/sync/commitFrames.ts +16 -0
- package/src/local/sync/connectionManagerLifecycle.ts +158 -0
- package/src/local/sync/contextPorts.ts +37 -0
- package/src/local/sync/createClaimStream.ts +668 -0
- package/src/local/sync/createSnapshot.ts +160 -0
- package/src/local/sync/credentialLifecycle.ts +18 -0
- package/src/local/sync/deltaPipeline.ts +473 -0
- package/src/local/sync/groupChange.ts +343 -0
- package/src/local/sync/initialize.ts +205 -0
- package/src/local/sync/participants.ts +564 -0
- package/src/local/sync/persistedPrefix.ts +27 -0
- package/src/local/sync/reconnect.ts +88 -0
- package/src/local/sync/schemaDrift.ts +86 -0
- package/src/local/sync/schemas.ts +118 -0
- package/src/local/sync/socketEventWiring.ts +196 -0
- package/src/local/sync/syncCursor.ts +62 -0
- package/src/local/sync/syncPlan.ts +89 -0
- package/src/local/sync/terminalSessionLifecycle.ts +66 -0
- package/src/local/sync/wsFrameHandlers.ts +20 -0
- package/src/local/transactions/databaseCommitOutbox.ts +33 -0
- package/src/local/transactions/localMutation.ts +58 -0
- package/src/local/transactions/mutations/MutationQueue.ts +1998 -0
- package/src/local/transactions/mutations/MutationStore.ts +65 -0
- package/src/local/transactions/mutations/UnconfirmedWrites.ts +133 -0
- package/src/local/transactions/mutations/batchProcessing.ts +469 -0
- package/src/local/transactions/mutations/coalesceRules.ts +192 -0
- package/src/local/transactions/mutations/commitApi.ts +97 -0
- package/src/local/transactions/mutations/commitLane.ts +191 -0
- package/src/local/transactions/mutations/commitLatency.ts +164 -0
- package/src/local/transactions/mutations/commitPayload.ts +281 -0
- package/src/local/transactions/mutations/commitTransport.ts +174 -0
- package/src/local/transactions/mutations/deltaConfirmation.ts +298 -0
- package/src/local/transactions/mutations/durableCommitRestore.ts +128 -0
- package/src/local/transactions/mutations/durableWriteStore.ts +21 -0
- package/src/local/transactions/mutations/executionSelection.ts +42 -0
- package/src/local/transactions/mutations/failureHandling.ts +154 -0
- package/src/local/transactions/mutations/failurePolicy.ts +61 -0
- package/src/local/transactions/mutations/localMutation.ts +135 -0
- package/src/local/transactions/mutations/modelOperations.ts +210 -0
- package/src/local/transactions/mutations/mutationPersistence.ts +231 -0
- package/src/local/transactions/mutations/pendingDrain.ts +160 -0
- package/src/local/transactions/mutations/processingScheduler.ts +35 -0
- package/src/local/transactions/mutations/queueCoalescing.ts +45 -0
- package/src/local/transactions/mutations/replayValidation.ts +192 -0
- package/src/local/transactions/reconnectDrain.ts +24 -0
- package/src/local/utils/mobxSetup.ts +388 -0
- package/src/local/views/QueryView.ts +311 -0
- package/src/local/views/ViewRegistry.ts +61 -0
- package/src/local/views/incrementalView.ts +92 -0
- package/src/plugin.ts +396 -0
- package/src/presenceStream.ts +279 -0
- package/src/react/AbloProvider.tsx +744 -0
- package/src/react/ClientSideSuspense.tsx +57 -0
- package/src/react/DefaultFallback.tsx +60 -0
- package/src/react/context.ts +89 -0
- package/src/react/createAbloReact.ts +116 -0
- package/src/react/internalContext.ts +38 -0
- package/src/react/useAblo.ts +280 -0
- package/src/react/useCurrentUserId.ts +17 -0
- package/src/react/useErrorListener.ts +22 -0
- package/src/react/useMutationFailureListener.ts +34 -0
- package/src/react/useMutators.ts +184 -0
- package/src/react/useSyncStatus.ts +42 -0
- package/src/react/useUndoScope.ts +143 -0
- package/src/react.ts +69 -0
- package/src/reactRuntime.ts +10 -0
- package/src/surface.ts +106 -0
- package/src/useReactive.ts +51 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { AbloSessionError } from '@abloatai/transaction/errors';
|
|
2
|
+
import { ConnectionManager } from './ConnectionManager.js';
|
|
3
|
+
import { contextLogger, contextSocketObservability } from './contextPorts.js';
|
|
4
|
+
export function createConnectionManager(host, kind) {
|
|
5
|
+
if (kind === 'agent')
|
|
6
|
+
return null;
|
|
7
|
+
return new ConnectionManager({
|
|
8
|
+
baseUrl: host.syncServerUrl,
|
|
9
|
+
getAuthToken: () => host.auth?.getAuthToken() ?? host.syncWebSocket.getAuthToken() ?? null,
|
|
10
|
+
logger: contextLogger,
|
|
11
|
+
observability: contextSocketObservability,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export async function waitForWebSocketConnected(host, timeoutMs) {
|
|
15
|
+
const ws = host.syncWebSocket;
|
|
16
|
+
if (ws.isConnected())
|
|
17
|
+
return true;
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
let resolved = false;
|
|
20
|
+
const unsubscribe = ws.subscribe('connected', () => {
|
|
21
|
+
if (resolved)
|
|
22
|
+
return;
|
|
23
|
+
resolved = true;
|
|
24
|
+
unsubscribe();
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
resolve(true);
|
|
27
|
+
});
|
|
28
|
+
const timer = setTimeout(() => {
|
|
29
|
+
if (resolved)
|
|
30
|
+
return;
|
|
31
|
+
resolved = true;
|
|
32
|
+
unsubscribe();
|
|
33
|
+
host.runtime.logger.debug(`[BaseSyncedStore] waitForWebSocketConnected timed out after ${timeoutMs}ms — initialize() will return but the next mutation may race the upgrade.`);
|
|
34
|
+
resolve(false);
|
|
35
|
+
}, timeoutMs);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export function startConnectionManager(host, kind) {
|
|
39
|
+
host.connectionManager = host.createConnectionManager(kind);
|
|
40
|
+
if (host.connectionManager) {
|
|
41
|
+
const manager = host.connectionManager;
|
|
42
|
+
// Preserve any externally-set onConnectionEvent — chain rather
|
|
43
|
+
// than overwrite, so subclasses that wire a secondary consumer
|
|
44
|
+
// still receive events.
|
|
45
|
+
const priorHook = host.onConnectionEvent;
|
|
46
|
+
host.onConnectionEvent = (event) => {
|
|
47
|
+
try {
|
|
48
|
+
priorHook?.(event);
|
|
49
|
+
}
|
|
50
|
+
catch { /* don't let subclass crash the FSM */ }
|
|
51
|
+
switch (event) {
|
|
52
|
+
case 'WS_CONNECTED':
|
|
53
|
+
manager.send({ type: 'WS_CONNECTED' });
|
|
54
|
+
break;
|
|
55
|
+
case 'WS_DISCONNECTED':
|
|
56
|
+
manager.send({ type: 'WS_DISCONNECTED' });
|
|
57
|
+
break;
|
|
58
|
+
case 'WS_SESSION_ERROR':
|
|
59
|
+
manager.send({ type: 'WS_SESSION_ERROR' });
|
|
60
|
+
break;
|
|
61
|
+
case 'WS_HANDSHAKE_FAILED':
|
|
62
|
+
manager.send({ type: 'WS_HANDSHAKE_FAILED' });
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
manager.start({
|
|
67
|
+
onReconnect: () => host.performReconnect(),
|
|
68
|
+
onRefreshCredential: () => host.performCredentialRefresh(),
|
|
69
|
+
onSessionExpired: () => {
|
|
70
|
+
const err = new AbloSessionError('Session expired');
|
|
71
|
+
host.handleTerminalSessionError(err);
|
|
72
|
+
},
|
|
73
|
+
onDisconnectWebSocket: () => {
|
|
74
|
+
host.syncWebSocket.disconnect();
|
|
75
|
+
},
|
|
76
|
+
// Mirror FSM transitions into the visible `syncStatus.state` so
|
|
77
|
+
// the UI can show "Reconnecting…" while the FSM cycles through
|
|
78
|
+
// probing / reconnecting / backoff. Previously these states
|
|
79
|
+
// were opaque to the UI, leaving the sidebar pinned to
|
|
80
|
+
// "offline" for the entire recovery window — exactly the
|
|
81
|
+
// confusing UX the warning log was trying to surface.
|
|
82
|
+
//
|
|
83
|
+
// We only override `state` here; `error` / `progress` / etc.
|
|
84
|
+
// continue to be set by the WebSocket subscription handlers
|
|
85
|
+
// and bootstrap pipeline, which know more than the FSM does.
|
|
86
|
+
onStateChange: (next) => {
|
|
87
|
+
switch (next) {
|
|
88
|
+
case 'connected':
|
|
89
|
+
// Don't clobber an in-flight 'syncing' / 'idle' update
|
|
90
|
+
// that the bootstrap pipeline might be midway through —
|
|
91
|
+
// those handlers run their own `updateSyncStatus`. Only
|
|
92
|
+
// promote out of an offline / reconnecting / error label.
|
|
93
|
+
if (host.syncStatus.state === 'offline' ||
|
|
94
|
+
host.syncStatus.state === 'reconnecting' ||
|
|
95
|
+
host.syncStatus.state === 'error') {
|
|
96
|
+
host.updateSyncStatus({ state: 'idle', offlineSince: undefined });
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
case 'probing_network':
|
|
100
|
+
case 'refreshing_credential':
|
|
101
|
+
case 'reconnecting':
|
|
102
|
+
case 'backoff':
|
|
103
|
+
// Active recovery — the UI should reflect that the FSM
|
|
104
|
+
// is doing work, not that we've given up. (Re-minting a stale
|
|
105
|
+
// access key is just another recovery step, surfaced the same
|
|
106
|
+
// way; the user never sees a credential-level distinction.)
|
|
107
|
+
if (host.syncStatus.state !== 'reconnecting') {
|
|
108
|
+
host.updateSyncStatus({ state: 'reconnecting' });
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
case 'waiting_for_network':
|
|
112
|
+
case 'offline':
|
|
113
|
+
if (host.syncStatus.state !== 'offline') {
|
|
114
|
+
host.updateSyncStatus({
|
|
115
|
+
state: 'offline',
|
|
116
|
+
offlineSince: host.syncStatus.offlineSince ?? new Date(),
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
break;
|
|
120
|
+
// 'session_expired' / 'validating_session' are handled by
|
|
121
|
+
// the existing session-error / WS subscription paths.
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime context, sliced into the ports the settlement core's transport
|
|
3
|
+
* takes. The core is injected, never service-located (ADR 0016), while this
|
|
4
|
+
* package resolves its shared dependencies through `getContext()` — so these
|
|
5
|
+
* adapters bridge the two: each method reads the context at call time, which
|
|
6
|
+
* preserves the lazy semantics of `getContext()` (a context installed after
|
|
7
|
+
* construction is still picked up, and the pre-init fallback still applies).
|
|
8
|
+
*/
|
|
9
|
+
import type { Logger } from '@abloatai/transaction/logger';
|
|
10
|
+
import type { SocketObservability } from '@abloatai/transaction/observability';
|
|
11
|
+
/** The context's logger, resolved at call time. */
|
|
12
|
+
export declare const contextLogger: Logger;
|
|
13
|
+
/** The context's observability, resolved at call time, in the transport's shape. */
|
|
14
|
+
export declare const contextSocketObservability: SocketObservability;
|
|
15
|
+
/** The context's online-status provider, resolved at call time. */
|
|
16
|
+
export declare const contextOnlineStatus: {
|
|
17
|
+
isOnline: () => boolean;
|
|
18
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime context, sliced into the ports the settlement core's transport
|
|
3
|
+
* takes. The core is injected, never service-located (ADR 0016), while this
|
|
4
|
+
* package resolves its shared dependencies through `getContext()` — so these
|
|
5
|
+
* adapters bridge the two: each method reads the context at call time, which
|
|
6
|
+
* preserves the lazy semantics of `getContext()` (a context installed after
|
|
7
|
+
* construction is still picked up, and the pre-init fallback still applies).
|
|
8
|
+
*/
|
|
9
|
+
import { getContext } from '../context.js';
|
|
10
|
+
/** The context's logger, resolved at call time. */
|
|
11
|
+
export const contextLogger = {
|
|
12
|
+
debug: (message, ...args) => { getContext().logger.debug(message, ...args); },
|
|
13
|
+
info: (message, ...args) => { getContext().logger.info(message, ...args); },
|
|
14
|
+
warn: (message, ...args) => { getContext().logger.warn(message, ...args); },
|
|
15
|
+
error: (message, ...args) => { getContext().logger.error(message, ...args); },
|
|
16
|
+
};
|
|
17
|
+
/** The context's observability, resolved at call time, in the transport's shape. */
|
|
18
|
+
export const contextSocketObservability = {
|
|
19
|
+
breadcrumb: (message, category, level, data) => {
|
|
20
|
+
getContext().observability.breadcrumb(message, category, level, data);
|
|
21
|
+
},
|
|
22
|
+
captureWebSocketError: (details) => {
|
|
23
|
+
getContext().observability.captureWebSocketError(details);
|
|
24
|
+
},
|
|
25
|
+
captureClaim: (event) => { getContext().observability.captureClaim(event); },
|
|
26
|
+
captureConflict: (event) => { getContext().observability.captureConflict(event); },
|
|
27
|
+
};
|
|
28
|
+
/** The context's online-status provider, resolved at call time. */
|
|
29
|
+
export const contextOnlineStatus = {
|
|
30
|
+
isOnline: () => getContext().onlineStatus.isOnline(),
|
|
31
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a {@link ClaimStream} over a live sync connection. A claim is a
|
|
3
|
+
* short-lived, advisory lease a participant takes on an entity (or a field of
|
|
4
|
+
* one) to signal "I'm working on this"; the stream lets you take claims, see
|
|
5
|
+
* everyone else's, and watch the wait queue when a claim is contended.
|
|
6
|
+
*
|
|
7
|
+
* The stream is built directly on the sync WebSocket and shares that one
|
|
8
|
+
* connection. It learns about other participants' claims from the same
|
|
9
|
+
* `presence_update` frames the {@link createPresenceStream} presence stream
|
|
10
|
+
* consumes — the server piggybacks each participant's `activeClaims` on every
|
|
11
|
+
* presence frame — and sends its own claims as `claim_begin` and
|
|
12
|
+
* `claim_abandon` frames.
|
|
13
|
+
*
|
|
14
|
+
* Wire frames:
|
|
15
|
+
* • Outbound `claim_begin` — announce a claim: `{ claimId, entityType,
|
|
16
|
+
* entityId, description, field?, estimatedMs? }`.
|
|
17
|
+
* • Outbound `claim_abandon` — release it: `{ claimId, entityType?,
|
|
18
|
+
* entityId? }`.
|
|
19
|
+
* • Inbound, via presence — `event.activeClaims`, each stamped with
|
|
20
|
+
* `declaredAt` and `expiresAt`.
|
|
21
|
+
* • Inbound `claim_rejected` — the server refused the claim, with conflict
|
|
22
|
+
* metadata.
|
|
23
|
+
*/
|
|
24
|
+
import type { WsTransport } from '@abloatai/transaction/transport/wsTransport';
|
|
25
|
+
import type { ClaimOptions, Claim, ClaimStream, PresenceTarget } from '@abloatai/transaction/types/streams';
|
|
26
|
+
import { type Logger } from '@abloatai/transaction/logger';
|
|
27
|
+
/**
|
|
28
|
+
* The wire capability the claim stream actually uses: subscribe to typed
|
|
29
|
+
* inbound frames, check liveness, and send outbound frames. The duplex
|
|
30
|
+
* `WsTransport` satisfies it, so production wiring is unchanged — but depending on the port
|
|
31
|
+
* rather than the whole socket class lets a test drive it with a plain object,
|
|
32
|
+
* no cast. `Pick` carries the exact (generic, typed-payload) `subscribe`
|
|
33
|
+
* signature, so every handler stays fully typed.
|
|
34
|
+
*/
|
|
35
|
+
export type ClaimTransport = Pick<WsTransport, 'subscribe' | 'isConnected' | 'send'>;
|
|
36
|
+
export interface ClaimStreamConfig {
|
|
37
|
+
/** Identity used to filter our own active claims out of `others`. */
|
|
38
|
+
participantId: string;
|
|
39
|
+
/** Where the coordination trace is logged. Defaults to silent. */
|
|
40
|
+
logger?: Logger;
|
|
41
|
+
}
|
|
42
|
+
export interface AttachableClaimStream extends ClaimStream {
|
|
43
|
+
/**
|
|
44
|
+
* Mints a lease directly: sends the `claim_begin` frame and returns a held
|
|
45
|
+
* {@link Claim} that carries no row `data` (the resource layer reads the row
|
|
46
|
+
* and stamps it). This is an internal entry point, not part of the public
|
|
47
|
+
* {@link ClaimStream}; application code takes a claim through
|
|
48
|
+
* `ablo.<model>.claim({ id })`, which is built on this.
|
|
49
|
+
*/
|
|
50
|
+
claim(target: PresenceTarget, opts?: ClaimOptions): Claim;
|
|
51
|
+
attach(transport: ClaimTransport): void;
|
|
52
|
+
/**
|
|
53
|
+
* Seeds the participant identity once the host resolves it. The stream can
|
|
54
|
+
* be built before identity is known — a hosted client learns who it is
|
|
55
|
+
* from its credential's scope during connect — and until then the
|
|
56
|
+
* construction-time id (possibly empty) would let the participant's own
|
|
57
|
+
* claims into `others`. Idempotent; later frames filter on the new id.
|
|
58
|
+
*/
|
|
59
|
+
setParticipant(participant: {
|
|
60
|
+
id: string;
|
|
61
|
+
}): void;
|
|
62
|
+
dispose(): void;
|
|
63
|
+
}
|
|
64
|
+
export declare function createClaimStream(config: ClaimStreamConfig, transport?: ClaimTransport | null): AttachableClaimStream;
|