@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,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds the typed client for a single schema model — the object reached as
|
|
3
|
+
* `ablo.<model>`.
|
|
4
|
+
*
|
|
5
|
+
* Each schema model gets one {@link ModelOperations}: the async server reads
|
|
6
|
+
* `get` and `list`, with the same point lookup restricted to the local graph under
|
|
7
|
+
* `local`, the writes `create`, `update`, and `delete`, the coordination
|
|
8
|
+
* namespace `claim` (callable as `claim({ id })`, plus `claim.state`,
|
|
9
|
+
* `claim.queue`, `claim.release`, and `claim.reorder`), `join`, and `onChange`.
|
|
10
|
+
* The factory returns a plain object; the client assembles the `ablo.<model>`
|
|
11
|
+
* lookup table from one of these per model.
|
|
12
|
+
*/
|
|
13
|
+
import type { ModelTarget } from '@abloatai/transaction/coordination/schema';
|
|
14
|
+
import type { ModelRegistry } from '../ModelRegistry.js';
|
|
15
|
+
import type { InstanceCache } from '../InstanceCache.js';
|
|
16
|
+
import type { SyncClient } from '../SyncClient.js';
|
|
17
|
+
import type { OnDemandLoader } from '../sync/OnDemandLoader.js';
|
|
18
|
+
import type { JoinedParticipant } from '../sync/participants.js';
|
|
19
|
+
import type { Duration, Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease, ClaimWaitOptions, Snapshot } from '@abloatai/transaction/types/streams';
|
|
20
|
+
export type { ModelListScope, ModelTrackParams, ModelTrackResult, LocalReadOptions, LocalCountOptions, ServerReadOptions, ServerGetOptions, ServerRetrieveOptions, ClaimTargetOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, ClaimOptions, ClaimReadApi, AwaitedClaimMethod, ClaimApi, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, JoinOptions, } from '@abloatai/transaction/resources/modelOperations';
|
|
21
|
+
export type { Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease };
|
|
22
|
+
import type { ClaimApi, JoinOptions, LocalCountOptions, LocalReadOptions } from '@abloatai/transaction/resources/modelOperations';
|
|
23
|
+
import type { HttpModelClient } from '@abloatai/transaction/transport/httpClient';
|
|
24
|
+
import type { ParticipantKind } from '@abloatai/transaction/types/participant';
|
|
25
|
+
export interface ModelClientMeta {
|
|
26
|
+
readonly key: string;
|
|
27
|
+
readonly typename: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function getModelClientMeta(modelClient: unknown): ModelClientMeta | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* The entity a coordination read names, without the sub-entity narrowing —
|
|
32
|
+
* projected from {@link ModelTarget} so the two members are spelled once.
|
|
33
|
+
*/
|
|
34
|
+
type EntityHalf = Pick<ModelTarget, 'model' | 'id'>;
|
|
35
|
+
export interface ModelCollaboration {
|
|
36
|
+
createClaim(options: {
|
|
37
|
+
/**
|
|
38
|
+
* The locator, in the spelling the SDK surface and the HTTP routes use.
|
|
39
|
+
* The canonical {@link ModelTarget} rather than a shape spelled here: this
|
|
40
|
+
* boundary is what a claim's narrowing has to cross, and a member missing
|
|
41
|
+
* from it dies before the socket sees it.
|
|
42
|
+
*/
|
|
43
|
+
target: ModelTarget;
|
|
44
|
+
/** Peer-visible description of the work (`'rewriting the risk section'`). */
|
|
45
|
+
description?: string;
|
|
46
|
+
ttl?: Duration;
|
|
47
|
+
/**
|
|
48
|
+
* Block on the server's fair FIFO queue when the target is held, rather
|
|
49
|
+
* than failing. Resolves only once the lease is genuinely ours (the head
|
|
50
|
+
* of the line). `takeClaim` sets this so writers serialize on contention.
|
|
51
|
+
*/
|
|
52
|
+
queue?: boolean;
|
|
53
|
+
/** Reject (don't wait) if the queue is already this deep when we join. */
|
|
54
|
+
maxQueueDepth?: number;
|
|
55
|
+
/** Cap on the queued wait before rejecting with `grant_timeout`. */
|
|
56
|
+
waitTimeoutMs?: number;
|
|
57
|
+
/** Abort the queued wait — rejects with `claim_wait_aborted`. */
|
|
58
|
+
signal?: AbortSignal;
|
|
59
|
+
}): Promise<Claim>;
|
|
60
|
+
createSnapshot(modelKey: string, id: string): Snapshot;
|
|
61
|
+
/**
|
|
62
|
+
* Current coordination state on a target — who (if anyone) holds it.
|
|
63
|
+
* Synchronous reactive snapshot read off the presence/claim stream;
|
|
64
|
+
* `null` when the target is free. The wiring site computes it because
|
|
65
|
+
* only it knows the local participant id (needed to distinguish "I
|
|
66
|
+
* hold it" from "someone else holds it").
|
|
67
|
+
*
|
|
68
|
+
* Named `state` to match the public `ablo.<model>.claim.state({ id })` read —
|
|
69
|
+
* one verb for "who holds this" across every claim surface; the only
|
|
70
|
+
* difference is this internal contract takes an explicit `{ model, id }`
|
|
71
|
+
* target because it isn't bound to a single model.
|
|
72
|
+
*/
|
|
73
|
+
state(target: EntityHalf): Claim | null;
|
|
74
|
+
/**
|
|
75
|
+
* Every active claim on a target, not just one. Sub-row claims on disjoint
|
|
76
|
+
* parts of a row are all granted, so a row can have several holders at once
|
|
77
|
+
* and `state` answers with only the first of them.
|
|
78
|
+
*/
|
|
79
|
+
holders(target: EntityHalf): readonly Claim[];
|
|
80
|
+
/**
|
|
81
|
+
* The reactive wait queue on a target — the FIFO line of queued claims
|
|
82
|
+
* behind the holder. Synchronous snapshot off the synced claim stream.
|
|
83
|
+
*/
|
|
84
|
+
queue(target: EntityHalf): readonly Claim[];
|
|
85
|
+
/**
|
|
86
|
+
* Re-rank the wait queue on a target (privileged — server-gated). `order` is
|
|
87
|
+
* the desired front-of-line ordering, taken from `queue(target)`.
|
|
88
|
+
*/
|
|
89
|
+
reorder(target: EntityHalf, order: readonly Claim[]): void;
|
|
90
|
+
/**
|
|
91
|
+
* Resolve once no participant holds an active claim on the target.
|
|
92
|
+
* The contender's "wait until it's free" — delegates to the claim
|
|
93
|
+
* stream's `waitFor`.
|
|
94
|
+
*/
|
|
95
|
+
waitFor(target: EntityHalf, options?: ClaimWaitOptions): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* The local participant's id. Used to distinguish "I already hold this"
|
|
98
|
+
* from "someone else holds it" in `claimOrWait`.
|
|
99
|
+
*/
|
|
100
|
+
readonly selfParticipantId: string;
|
|
101
|
+
/**
|
|
102
|
+
* The local participant's kind (`'user' | 'agent' | 'system'`). Used to stamp
|
|
103
|
+
* the synthesized self-claim returned from `claim.state` when this client
|
|
104
|
+
* holds the lease: server presence frames exclude a holder's own claims, so
|
|
105
|
+
* the holder builds its own view.
|
|
106
|
+
*/
|
|
107
|
+
readonly selfParticipantKind?: ParticipantKind;
|
|
108
|
+
/**
|
|
109
|
+
* Subscribes the connection to a scope's sync group(s) — read interest. The
|
|
110
|
+
* typed surface calls this on single-entity reads and claim observation so a
|
|
111
|
+
* client lands in the same entity-scoped group the holder's claim presence
|
|
112
|
+
* fans out on; a peer subscribed only to broader `org:` or `user:` groups
|
|
113
|
+
* would otherwise never see claim broadcasts. Fire-and-forget and best-effort:
|
|
114
|
+
* read interest must never make a read reject or stall. Optional so minimal
|
|
115
|
+
* test doubles can omit it.
|
|
116
|
+
*/
|
|
117
|
+
enterScope?(scope: Record<string, string>): void | Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Pins a scope's sync group(s) — write intent: a row this client holds an
|
|
120
|
+
* active claim on stays subscribed regardless of navigation. Same
|
|
121
|
+
* fire-and-forget, best-effort semantics as `enterScope`.
|
|
122
|
+
*/
|
|
123
|
+
pinScope?(scope: Record<string, string>): void | Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Opens a presence and claim subscription on this model's sync group(s) and
|
|
126
|
+
* returns the live participant handle. Backs `ablo.<model>.join(ids)`.
|
|
127
|
+
* WebSocket only, since presence needs a live socket; it is absent on other
|
|
128
|
+
* client constructions, where the proxy throws a clear error.
|
|
129
|
+
*/
|
|
130
|
+
createJoin?(modelKey: string, ids: string | readonly string[], options?: JoinOptions): Promise<JoinedParticipant>;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* The synchronous, local-only reads — reached as `ablo.<model>.local.*`.
|
|
134
|
+
*
|
|
135
|
+
* Every verb mirrors its asynchronous sibling on the base surface, and the one
|
|
136
|
+
* word in front is the whole difference. It is a narrowing, not a claim about
|
|
137
|
+
* the other side: `get` consults the local graph and then the network,
|
|
138
|
+
* while `local.get` is restricted to what is already resident — which is
|
|
139
|
+
* also why it can return a value instead of a promise. There is nothing to
|
|
140
|
+
* await.
|
|
141
|
+
*
|
|
142
|
+
* These reads exist only here. Exposing them at the top level too would undo
|
|
143
|
+
* the distinction the namespace draws.
|
|
144
|
+
*/
|
|
145
|
+
export interface LocalReads<T> {
|
|
146
|
+
/**
|
|
147
|
+
* Snapshot of a single row from the local graph. `undefined` when the row is
|
|
148
|
+
* not resident — a graph that is still empty, or a `lazy` model not yet
|
|
149
|
+
* loaded. Pairs with reactive selectors:
|
|
150
|
+
* `useAblo((ablo) => ablo.<model>.local.get(id))`.
|
|
151
|
+
*/
|
|
152
|
+
get(id: string): T | undefined;
|
|
153
|
+
/**
|
|
154
|
+
* Snapshot of a filtered collection from the local graph. Empty until
|
|
155
|
+
* `get`, `list`, or bootstrap has warmed the graph.
|
|
156
|
+
*/
|
|
157
|
+
list(options?: LocalReadOptions<T>): T[];
|
|
158
|
+
/** Count rows in the local graph. */
|
|
159
|
+
count(options?: LocalCountOptions<T>): number;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* What a reactive client adds on top of the base per-model surface: a live
|
|
163
|
+
* graph to read (`local`), the synchronous projection of the claim reads, and
|
|
164
|
+
* the two subscriptions a persistent socket makes possible.
|
|
165
|
+
*
|
|
166
|
+
* `claim` is here rather than inherited because the two transports carry
|
|
167
|
+
* deliberately different claim types, and the difference is load-bearing: a
|
|
168
|
+
* stateless client has no local copy, so `state`/`queue`/`reorder` must be
|
|
169
|
+
* awaited, while a reactive client resolves them synchronously — which is
|
|
170
|
+
* precisely what lets a React render read claim state inline. The stateless
|
|
171
|
+
* form is *derived* from this one through {@link AwaitedClaimMethod}, so the
|
|
172
|
+
* only permitted difference between them is that promise wrapper.
|
|
173
|
+
*/
|
|
174
|
+
interface ReactiveModelSurface<T, Fields = T> {
|
|
175
|
+
/** The synchronous local-graph reads. */
|
|
176
|
+
local: LocalReads<T>;
|
|
177
|
+
/**
|
|
178
|
+
* Claim a row so other writers wait or are rejected until you're done, and
|
|
179
|
+
* inspect or manage that coordination through the same namespace. Call it to
|
|
180
|
+
* take a claim handle; reach for its members to observe and steer the wait line:
|
|
181
|
+
*
|
|
182
|
+
* - `claim.state({ id })` — who holds the row now, or `null` when free
|
|
183
|
+
* - `claim.queue({ id })` — who's lined up behind the holder
|
|
184
|
+
* - `claim.release({ id })` — drop a claim early (usually implicit on scope exit)
|
|
185
|
+
* - `claim.reorder({ id, order })` — re-rank the wait line
|
|
186
|
+
*
|
|
187
|
+
* ```ts
|
|
188
|
+
* const claim = await ablo.weatherReports.claim({
|
|
189
|
+
* id: 'report_stockholm',
|
|
190
|
+
* description: 'Fetching fresh weather before updating the report.',
|
|
191
|
+
* });
|
|
192
|
+
* const weather = await getWeather(claim.data.location);
|
|
193
|
+
* await ablo.weatherReports.update({
|
|
194
|
+
* id: claim.target.id,
|
|
195
|
+
* data: { forecast: weather },
|
|
196
|
+
* claim,
|
|
197
|
+
* });
|
|
198
|
+
* await claim.release();
|
|
199
|
+
*
|
|
200
|
+
* const holder = ablo.weatherReports.claim.state({ id: 'report_stockholm' });
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
claim: ClaimApi<T, Fields>;
|
|
204
|
+
/**
|
|
205
|
+
* Joins the sync group(s) for one or more rows of this model and returns a
|
|
206
|
+
* live participant handle — presence (`.peers`), the scoped claim stream
|
|
207
|
+
* (`.claims`), and `.leave()` / `await using` disposal. This is a presence
|
|
208
|
+
* subscription: it reports who else is here and what they hold, not row
|
|
209
|
+
* values changing — for the latter, use `onChange`.
|
|
210
|
+
*
|
|
211
|
+
* WebSocket only: presence needs a live socket, so this is absent on HTTP
|
|
212
|
+
* clients and throws on any non-WebSocket construction.
|
|
213
|
+
*
|
|
214
|
+
* ```ts
|
|
215
|
+
* await using participant = await ablo.sections.join(sectionIds, { ttl: '5m' });
|
|
216
|
+
* participant.peers; // who else is here
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
join(ids: string | readonly string[], options?: JoinOptions): Promise<JoinedParticipant>;
|
|
220
|
+
/** Subscribe to changes; the callback runs on every change. */
|
|
221
|
+
onChange(callback: (entities: T[]) => void, options?: LocalReadOptions<T>): () => void;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Everything reachable as `ablo.<model>` on a reactive client.
|
|
225
|
+
*
|
|
226
|
+
* The base is not written here — it is the transport-independent per-model
|
|
227
|
+
* surface, taken whole. A reactive client is that surface plus what a live
|
|
228
|
+
* graph makes possible, so this type states the relationship instead of
|
|
229
|
+
* restating the members, and a verb added to the base arrives here on its own.
|
|
230
|
+
*
|
|
231
|
+
* `claim` is the one member the base cannot supply directly: the two forms
|
|
232
|
+
* differ by an awaitedness transform, so it is replaced rather than inherited.
|
|
233
|
+
* See {@link ReactiveModelSurface}.
|
|
234
|
+
*/
|
|
235
|
+
export type ModelOperations<T, CreateInput> = Omit<HttpModelClient<T, CreateInput>, 'claim'> & ReactiveModelSurface<T, CreateInput>;
|
|
236
|
+
export declare function createModelProxy<T, C>(schemaKey: string, registeredModelName: string, objectPool: Pick<InstanceCache, 'get' | 'getByType' | 'getOfType'>, syncClient: Pick<SyncClient, 'add' | 'delete' | 'getMutationQueue' | 'getOrganizationId' | 'syncNow' | 'update' | 'waitForConfirmation'>, registry: Pick<ModelRegistry, 'getModelByName'>,
|
|
237
|
+
/**
|
|
238
|
+
* The one thing this factory asks of the loader: fetch rows for a model.
|
|
239
|
+
*
|
|
240
|
+
* Declared as the slice rather than the whole `OnDemandLoader` because the
|
|
241
|
+
* whole is a class, and a parameter typed as a class can only ever be
|
|
242
|
+
* satisfied by an instance of it — so every caller that has a narrower
|
|
243
|
+
* collaborator, a test most of all, is pushed into a cast through `unknown`
|
|
244
|
+
* to supply the one method that is actually read.
|
|
245
|
+
*/
|
|
246
|
+
hydration: Pick<OnDemandLoader, 'fetch'>, collaboration?: ModelCollaboration,
|
|
247
|
+
/** The client-wide `wait` default; a per-call `wait` still wins over it. */
|
|
248
|
+
defaultWait?: 'queued' | 'confirmed'): ModelOperations<T, C>;
|