actor-ts 0.9.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/CHANGELOG.md +885 -0
- package/LICENSE +201 -0
- package/README.md +269 -0
- package/dist/Actor.d.ts +49 -0
- package/dist/Actor.d.ts.map +1 -0
- package/dist/Actor.js +45 -0
- package/dist/Actor.js.map +1 -0
- package/dist/ActorContext.d.ts +171 -0
- package/dist/ActorContext.d.ts.map +1 -0
- package/dist/ActorContext.js +13 -0
- package/dist/ActorContext.js.map +1 -0
- package/dist/ActorPath.d.ts +23 -0
- package/dist/ActorPath.d.ts.map +1 -0
- package/dist/ActorPath.js +56 -0
- package/dist/ActorPath.js.map +1 -0
- package/dist/ActorRef.d.ts +54 -0
- package/dist/ActorRef.d.ts.map +1 -0
- package/dist/ActorRef.js +105 -0
- package/dist/ActorRef.js.map +1 -0
- package/dist/ActorSelection.d.ts +48 -0
- package/dist/ActorSelection.d.ts.map +1 -0
- package/dist/ActorSelection.js +84 -0
- package/dist/ActorSelection.js.map +1 -0
- package/dist/ActorSystem.d.ts +152 -0
- package/dist/ActorSystem.d.ts.map +1 -0
- package/dist/ActorSystem.js +248 -0
- package/dist/ActorSystem.js.map +1 -0
- package/dist/CoordinatedShutdown.d.ts +112 -0
- package/dist/CoordinatedShutdown.d.ts.map +1 -0
- package/dist/CoordinatedShutdown.js +252 -0
- package/dist/CoordinatedShutdown.js.map +1 -0
- package/dist/Dispatcher.d.ts +47 -0
- package/dist/Dispatcher.d.ts.map +1 -0
- package/dist/Dispatcher.js +90 -0
- package/dist/Dispatcher.js.map +1 -0
- package/dist/EventStream.d.ts +58 -0
- package/dist/EventStream.d.ts.map +1 -0
- package/dist/EventStream.js +74 -0
- package/dist/EventStream.js.map +1 -0
- package/dist/Extension.d.ts +45 -0
- package/dist/Extension.d.ts.map +1 -0
- package/dist/Extension.js +51 -0
- package/dist/Extension.js.map +1 -0
- package/dist/LogContext.d.ts +44 -0
- package/dist/LogContext.d.ts.map +1 -0
- package/dist/LogContext.js +87 -0
- package/dist/LogContext.js.map +1 -0
- package/dist/Logger.d.ts +57 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +81 -0
- package/dist/Logger.js.map +1 -0
- package/dist/Props.d.ts +32 -0
- package/dist/Props.d.ts.map +1 -0
- package/dist/Props.js +27 -0
- package/dist/Props.js.map +1 -0
- package/dist/Router.d.ts +32 -0
- package/dist/Router.d.ts.map +1 -0
- package/dist/Router.js +78 -0
- package/dist/Router.js.map +1 -0
- package/dist/Scheduler.d.ts +25 -0
- package/dist/Scheduler.d.ts.map +1 -0
- package/dist/Scheduler.js +112 -0
- package/dist/Scheduler.js.map +1 -0
- package/dist/Supervision.d.ts +66 -0
- package/dist/Supervision.d.ts.map +1 -0
- package/dist/Supervision.js +75 -0
- package/dist/Supervision.js.map +1 -0
- package/dist/SystemMessages.d.ts +56 -0
- package/dist/SystemMessages.d.ts.map +1 -0
- package/dist/SystemMessages.js +71 -0
- package/dist/SystemMessages.js.map +1 -0
- package/dist/cache/Cache.d.ts +75 -0
- package/dist/cache/Cache.d.ts.map +1 -0
- package/dist/cache/Cache.js +10 -0
- package/dist/cache/Cache.js.map +1 -0
- package/dist/cache/CacheExtension.d.ts +44 -0
- package/dist/cache/CacheExtension.d.ts.map +1 -0
- package/dist/cache/CacheExtension.js +77 -0
- package/dist/cache/CacheExtension.js.map +1 -0
- package/dist/cache/InMemoryCache.d.ts +16 -0
- package/dist/cache/InMemoryCache.d.ts.map +1 -0
- package/dist/cache/InMemoryCache.js +86 -0
- package/dist/cache/InMemoryCache.js.map +1 -0
- package/dist/cache/MemcachedCache.d.ts +71 -0
- package/dist/cache/MemcachedCache.d.ts.map +1 -0
- package/dist/cache/MemcachedCache.js +243 -0
- package/dist/cache/MemcachedCache.js.map +1 -0
- package/dist/cache/RedisCache.d.ts +80 -0
- package/dist/cache/RedisCache.d.ts.map +1 -0
- package/dist/cache/RedisCache.js +194 -0
- package/dist/cache/RedisCache.js.map +1 -0
- package/dist/cache/index.d.ts +9 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +6 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cluster/Cluster.d.ts +251 -0
- package/dist/cluster/Cluster.d.ts.map +1 -0
- package/dist/cluster/Cluster.js +837 -0
- package/dist/cluster/Cluster.js.map +1 -0
- package/dist/cluster/ClusterBootstrap.d.ts +107 -0
- package/dist/cluster/ClusterBootstrap.d.ts.map +1 -0
- package/dist/cluster/ClusterBootstrap.js +184 -0
- package/dist/cluster/ClusterBootstrap.js.map +1 -0
- package/dist/cluster/ClusterClient.d.ts +112 -0
- package/dist/cluster/ClusterClient.d.ts.map +1 -0
- package/dist/cluster/ClusterClient.js +280 -0
- package/dist/cluster/ClusterClient.js.map +1 -0
- package/dist/cluster/ClusterClientReceptionist.d.ts +85 -0
- package/dist/cluster/ClusterClientReceptionist.d.ts.map +1 -0
- package/dist/cluster/ClusterClientReceptionist.js +159 -0
- package/dist/cluster/ClusterClientReceptionist.js.map +1 -0
- package/dist/cluster/ClusterEvents.d.ts +99 -0
- package/dist/cluster/ClusterEvents.d.ts.map +1 -0
- package/dist/cluster/ClusterEvents.js +124 -0
- package/dist/cluster/ClusterEvents.js.map +1 -0
- package/dist/cluster/FailureDetector.d.ts +32 -0
- package/dist/cluster/FailureDetector.d.ts.map +1 -0
- package/dist/cluster/FailureDetector.js +50 -0
- package/dist/cluster/FailureDetector.js.map +1 -0
- package/dist/cluster/Member.d.ts +38 -0
- package/dist/cluster/Member.d.ts.map +1 -0
- package/dist/cluster/Member.js +69 -0
- package/dist/cluster/Member.js.map +1 -0
- package/dist/cluster/NodeAddress.d.ts +24 -0
- package/dist/cluster/NodeAddress.d.ts.map +1 -0
- package/dist/cluster/NodeAddress.js +44 -0
- package/dist/cluster/NodeAddress.js.map +1 -0
- package/dist/cluster/PhiAccrualFailureDetector.d.ts +49 -0
- package/dist/cluster/PhiAccrualFailureDetector.d.ts.map +1 -0
- package/dist/cluster/PhiAccrualFailureDetector.js +139 -0
- package/dist/cluster/PhiAccrualFailureDetector.js.map +1 -0
- package/dist/cluster/Protocol.d.ts +151 -0
- package/dist/cluster/Protocol.d.ts.map +1 -0
- package/dist/cluster/Protocol.js +90 -0
- package/dist/cluster/Protocol.js.map +1 -0
- package/dist/cluster/RefCodec.d.ts +40 -0
- package/dist/cluster/RefCodec.d.ts.map +1 -0
- package/dist/cluster/RefCodec.js +134 -0
- package/dist/cluster/RefCodec.js.map +1 -0
- package/dist/cluster/RemoteActorRef.d.ts +22 -0
- package/dist/cluster/RemoteActorRef.d.ts.map +1 -0
- package/dist/cluster/RemoteActorRef.js +48 -0
- package/dist/cluster/RemoteActorRef.js.map +1 -0
- package/dist/cluster/Transport.d.ts +96 -0
- package/dist/cluster/Transport.d.ts.map +1 -0
- package/dist/cluster/Transport.js +299 -0
- package/dist/cluster/Transport.js.map +1 -0
- package/dist/cluster/downing/DowningProvider.d.ts +32 -0
- package/dist/cluster/downing/DowningProvider.d.ts.map +1 -0
- package/dist/cluster/downing/DowningProvider.js +5 -0
- package/dist/cluster/downing/DowningProvider.js.map +1 -0
- package/dist/cluster/downing/KeepMajority.d.ts +21 -0
- package/dist/cluster/downing/KeepMajority.d.ts.map +1 -0
- package/dist/cluster/downing/KeepMajority.js +39 -0
- package/dist/cluster/downing/KeepMajority.js.map +1 -0
- package/dist/cluster/downing/KeepOldest.d.ts +23 -0
- package/dist/cluster/downing/KeepOldest.d.ts.map +1 -0
- package/dist/cluster/downing/KeepOldest.js +37 -0
- package/dist/cluster/downing/KeepOldest.js.map +1 -0
- package/dist/cluster/downing/KeepReferee.d.ts +23 -0
- package/dist/cluster/downing/KeepReferee.d.ts.map +1 -0
- package/dist/cluster/downing/KeepReferee.js +35 -0
- package/dist/cluster/downing/KeepReferee.js.map +1 -0
- package/dist/cluster/downing/LeaseMajority.d.ts +70 -0
- package/dist/cluster/downing/LeaseMajority.d.ts.map +1 -0
- package/dist/cluster/downing/LeaseMajority.js +129 -0
- package/dist/cluster/downing/LeaseMajority.js.map +1 -0
- package/dist/cluster/downing/StaticQuorum.d.ts +21 -0
- package/dist/cluster/downing/StaticQuorum.d.ts.map +1 -0
- package/dist/cluster/downing/StaticQuorum.js +30 -0
- package/dist/cluster/downing/StaticQuorum.js.map +1 -0
- package/dist/cluster/downing/index.d.ts +13 -0
- package/dist/cluster/downing/index.d.ts.map +1 -0
- package/dist/cluster/downing/index.js +7 -0
- package/dist/cluster/downing/index.js.map +1 -0
- package/dist/cluster/index.d.ts +49 -0
- package/dist/cluster/index.d.ts.map +1 -0
- package/dist/cluster/index.js +33 -0
- package/dist/cluster/index.js.map +1 -0
- package/dist/cluster/pubsub/DistributedPubSubExtension.d.ts +30 -0
- package/dist/cluster/pubsub/DistributedPubSubExtension.d.ts.map +1 -0
- package/dist/cluster/pubsub/DistributedPubSubExtension.js +42 -0
- package/dist/cluster/pubsub/DistributedPubSubExtension.js.map +1 -0
- package/dist/cluster/pubsub/DistributedPubSubMediator.d.ts +56 -0
- package/dist/cluster/pubsub/DistributedPubSubMediator.d.ts.map +1 -0
- package/dist/cluster/pubsub/DistributedPubSubMediator.js +240 -0
- package/dist/cluster/pubsub/DistributedPubSubMediator.js.map +1 -0
- package/dist/cluster/pubsub/Messages.d.ts +75 -0
- package/dist/cluster/pubsub/Messages.d.ts.map +1 -0
- package/dist/cluster/pubsub/Messages.js +66 -0
- package/dist/cluster/pubsub/Messages.js.map +1 -0
- package/dist/cluster/pubsub/index.d.ts +5 -0
- package/dist/cluster/pubsub/index.d.ts.map +1 -0
- package/dist/cluster/pubsub/index.js +4 -0
- package/dist/cluster/pubsub/index.js.map +1 -0
- package/dist/cluster/router/ClusterRouter.d.ts +87 -0
- package/dist/cluster/router/ClusterRouter.d.ts.map +1 -0
- package/dist/cluster/router/ClusterRouter.js +116 -0
- package/dist/cluster/router/ClusterRouter.js.map +1 -0
- package/dist/cluster/router/ConsistentHashing.d.ts +27 -0
- package/dist/cluster/router/ConsistentHashing.d.ts.map +1 -0
- package/dist/cluster/router/ConsistentHashing.js +69 -0
- package/dist/cluster/router/ConsistentHashing.js.map +1 -0
- package/dist/cluster/router/index.d.ts +4 -0
- package/dist/cluster/router/index.d.ts.map +1 -0
- package/dist/cluster/router/index.js +3 -0
- package/dist/cluster/router/index.js.map +1 -0
- package/dist/cluster/sharding/AllocationStrategy.d.ts +45 -0
- package/dist/cluster/sharding/AllocationStrategy.d.ts.map +1 -0
- package/dist/cluster/sharding/AllocationStrategy.js +95 -0
- package/dist/cluster/sharding/AllocationStrategy.js.map +1 -0
- package/dist/cluster/sharding/CassandraRememberEntitiesStore.d.ts +77 -0
- package/dist/cluster/sharding/CassandraRememberEntitiesStore.d.ts.map +1 -0
- package/dist/cluster/sharding/CassandraRememberEntitiesStore.js +98 -0
- package/dist/cluster/sharding/CassandraRememberEntitiesStore.js.map +1 -0
- package/dist/cluster/sharding/ClusterSharding.d.ts +116 -0
- package/dist/cluster/sharding/ClusterSharding.d.ts.map +1 -0
- package/dist/cluster/sharding/ClusterSharding.js +133 -0
- package/dist/cluster/sharding/ClusterSharding.js.map +1 -0
- package/dist/cluster/sharding/CoordinatorState.d.ts +83 -0
- package/dist/cluster/sharding/CoordinatorState.d.ts.map +1 -0
- package/dist/cluster/sharding/CoordinatorState.js +46 -0
- package/dist/cluster/sharding/CoordinatorState.js.map +1 -0
- package/dist/cluster/sharding/Passivate.d.ts +23 -0
- package/dist/cluster/sharding/Passivate.d.ts.map +1 -0
- package/dist/cluster/sharding/Passivate.js +25 -0
- package/dist/cluster/sharding/Passivate.js.map +1 -0
- package/dist/cluster/sharding/RememberEntitiesStore.d.ts +60 -0
- package/dist/cluster/sharding/RememberEntitiesStore.d.ts.map +1 -0
- package/dist/cluster/sharding/RememberEntitiesStore.js +35 -0
- package/dist/cluster/sharding/RememberEntitiesStore.js.map +1 -0
- package/dist/cluster/sharding/ShardAllocator.d.ts +23 -0
- package/dist/cluster/sharding/ShardAllocator.d.ts.map +1 -0
- package/dist/cluster/sharding/ShardAllocator.js +54 -0
- package/dist/cluster/sharding/ShardAllocator.js.map +1 -0
- package/dist/cluster/sharding/ShardCoordinator.d.ts +218 -0
- package/dist/cluster/sharding/ShardCoordinator.d.ts.map +1 -0
- package/dist/cluster/sharding/ShardCoordinator.js +719 -0
- package/dist/cluster/sharding/ShardCoordinator.js.map +1 -0
- package/dist/cluster/sharding/ShardRegion.d.ts +156 -0
- package/dist/cluster/sharding/ShardRegion.d.ts.map +1 -0
- package/dist/cluster/sharding/ShardRegion.js +526 -0
- package/dist/cluster/sharding/ShardRegion.js.map +1 -0
- package/dist/cluster/sharding/ShardedDaemonProcess.d.ts +64 -0
- package/dist/cluster/sharding/ShardedDaemonProcess.d.ts.map +1 -0
- package/dist/cluster/sharding/ShardedDaemonProcess.js +107 -0
- package/dist/cluster/sharding/ShardedDaemonProcess.js.map +1 -0
- package/dist/cluster/sharding/ShardingProtocol.d.ts +92 -0
- package/dist/cluster/sharding/ShardingProtocol.d.ts.map +1 -0
- package/dist/cluster/sharding/ShardingProtocol.js +7 -0
- package/dist/cluster/sharding/ShardingProtocol.js.map +1 -0
- package/dist/cluster/singleton/ClusterSingleton.d.ts +59 -0
- package/dist/cluster/singleton/ClusterSingleton.d.ts.map +1 -0
- package/dist/cluster/singleton/ClusterSingleton.js +63 -0
- package/dist/cluster/singleton/ClusterSingleton.js.map +1 -0
- package/dist/cluster/singleton/ClusterSingletonManager.d.ts +116 -0
- package/dist/cluster/singleton/ClusterSingletonManager.d.ts.map +1 -0
- package/dist/cluster/singleton/ClusterSingletonManager.js +300 -0
- package/dist/cluster/singleton/ClusterSingletonManager.js.map +1 -0
- package/dist/cluster/singleton/ClusterSingletonProxy.d.ts +32 -0
- package/dist/cluster/singleton/ClusterSingletonProxy.d.ts.map +1 -0
- package/dist/cluster/singleton/ClusterSingletonProxy.js +81 -0
- package/dist/cluster/singleton/ClusterSingletonProxy.js.map +1 -0
- package/dist/cluster/singleton/index.d.ts +6 -0
- package/dist/cluster/singleton/index.d.ts.map +1 -0
- package/dist/cluster/singleton/index.js +4 -0
- package/dist/cluster/singleton/index.js.map +1 -0
- package/dist/cluster/transports/MessageChannelTransport.d.ts +52 -0
- package/dist/cluster/transports/MessageChannelTransport.d.ts.map +1 -0
- package/dist/cluster/transports/MessageChannelTransport.js +59 -0
- package/dist/cluster/transports/MessageChannelTransport.js.map +1 -0
- package/dist/config/Config.d.ts +73 -0
- package/dist/config/Config.d.ts.map +1 -0
- package/dist/config/Config.js +240 -0
- package/dist/config/Config.js.map +1 -0
- package/dist/config/ConfigKeys.d.ts +94 -0
- package/dist/config/ConfigKeys.d.ts.map +1 -0
- package/dist/config/ConfigKeys.js +94 -0
- package/dist/config/ConfigKeys.js.map +1 -0
- package/dist/config/Duration.d.ts +2 -0
- package/dist/config/Duration.d.ts.map +1 -0
- package/dist/config/Duration.js +70 -0
- package/dist/config/Duration.js.map +1 -0
- package/dist/config/HoconParser.d.ts +19 -0
- package/dist/config/HoconParser.d.ts.map +1 -0
- package/dist/config/HoconParser.js +473 -0
- package/dist/config/HoconParser.js.map +1 -0
- package/dist/config/Size.d.ts +2 -0
- package/dist/config/Size.d.ts.map +1 -0
- package/dist/config/Size.js +53 -0
- package/dist/config/Size.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/reference.d.ts +11 -0
- package/dist/config/reference.d.ts.map +1 -0
- package/dist/config/reference.js +86 -0
- package/dist/config/reference.js.map +1 -0
- package/dist/coordination/Lease.d.ts +40 -0
- package/dist/coordination/Lease.d.ts.map +1 -0
- package/dist/coordination/Lease.js +2 -0
- package/dist/coordination/Lease.js.map +1 -0
- package/dist/coordination/index.d.ts +5 -0
- package/dist/coordination/index.d.ts.map +1 -0
- package/dist/coordination/index.js +3 -0
- package/dist/coordination/index.js.map +1 -0
- package/dist/coordination/leases/InMemoryLease.d.ts +40 -0
- package/dist/coordination/leases/InMemoryLease.d.ts.map +1 -0
- package/dist/coordination/leases/InMemoryLease.js +109 -0
- package/dist/coordination/leases/InMemoryLease.js.map +1 -0
- package/dist/coordination/leases/KubernetesLease.d.ts +78 -0
- package/dist/coordination/leases/KubernetesLease.d.ts.map +1 -0
- package/dist/coordination/leases/KubernetesLease.js +244 -0
- package/dist/coordination/leases/KubernetesLease.js.map +1 -0
- package/dist/coordination/leases/k8sApi.d.ts +82 -0
- package/dist/coordination/leases/k8sApi.d.ts.map +1 -0
- package/dist/coordination/leases/k8sApi.js +191 -0
- package/dist/coordination/leases/k8sApi.js.map +1 -0
- package/dist/crdt/Crdt.d.ts +52 -0
- package/dist/crdt/Crdt.d.ts.map +1 -0
- package/dist/crdt/Crdt.js +2 -0
- package/dist/crdt/Crdt.js.map +1 -0
- package/dist/crdt/DistributedData.d.ts +314 -0
- package/dist/crdt/DistributedData.d.ts.map +1 -0
- package/dist/crdt/DistributedData.js +658 -0
- package/dist/crdt/DistributedData.js.map +1 -0
- package/dist/crdt/DurableDistributedDataStore.d.ts +50 -0
- package/dist/crdt/DurableDistributedDataStore.d.ts.map +1 -0
- package/dist/crdt/DurableDistributedDataStore.js +75 -0
- package/dist/crdt/DurableDistributedDataStore.js.map +1 -0
- package/dist/crdt/GCounter.d.ts +42 -0
- package/dist/crdt/GCounter.d.ts.map +1 -0
- package/dist/crdt/GCounter.js +75 -0
- package/dist/crdt/GCounter.js.map +1 -0
- package/dist/crdt/GCounterMap.d.ts +60 -0
- package/dist/crdt/GCounterMap.d.ts.map +1 -0
- package/dist/crdt/GCounterMap.js +102 -0
- package/dist/crdt/GCounterMap.js.map +1 -0
- package/dist/crdt/GSet.d.ts +63 -0
- package/dist/crdt/GSet.d.ts.map +1 -0
- package/dist/crdt/GSet.js +77 -0
- package/dist/crdt/GSet.js.map +1 -0
- package/dist/crdt/LWWMap.d.ts +75 -0
- package/dist/crdt/LWWMap.d.ts.map +1 -0
- package/dist/crdt/LWWMap.js +136 -0
- package/dist/crdt/LWWMap.js.map +1 -0
- package/dist/crdt/LWWRegister.d.ts +54 -0
- package/dist/crdt/LWWRegister.d.ts.map +1 -0
- package/dist/crdt/LWWRegister.js +83 -0
- package/dist/crdt/LWWRegister.js.map +1 -0
- package/dist/crdt/MVRegister.d.ts +36 -0
- package/dist/crdt/MVRegister.d.ts.map +1 -0
- package/dist/crdt/MVRegister.js +138 -0
- package/dist/crdt/MVRegister.js.map +1 -0
- package/dist/crdt/ORMap.d.ts +104 -0
- package/dist/crdt/ORMap.d.ts.map +1 -0
- package/dist/crdt/ORMap.js +178 -0
- package/dist/crdt/ORMap.js.map +1 -0
- package/dist/crdt/ORSet.d.ts +81 -0
- package/dist/crdt/ORSet.d.ts.map +1 -0
- package/dist/crdt/ORSet.js +206 -0
- package/dist/crdt/ORSet.js.map +1 -0
- package/dist/crdt/PNCounter.d.ts +34 -0
- package/dist/crdt/PNCounter.d.ts.map +1 -0
- package/dist/crdt/PNCounter.js +51 -0
- package/dist/crdt/PNCounter.js.map +1 -0
- package/dist/crdt/index.d.ts +23 -0
- package/dist/crdt/index.d.ts.map +1 -0
- package/dist/crdt/index.js +12 -0
- package/dist/crdt/index.js.map +1 -0
- package/dist/delivery/ConsumerController.d.ts +28 -0
- package/dist/delivery/ConsumerController.d.ts.map +1 -0
- package/dist/delivery/ConsumerController.js +64 -0
- package/dist/delivery/ConsumerController.js.map +1 -0
- package/dist/delivery/Messages.d.ts +23 -0
- package/dist/delivery/Messages.d.ts.map +1 -0
- package/dist/delivery/Messages.js +2 -0
- package/dist/delivery/Messages.js.map +1 -0
- package/dist/delivery/ProducerController.d.ts +46 -0
- package/dist/delivery/ProducerController.d.ts.map +1 -0
- package/dist/delivery/ProducerController.js +84 -0
- package/dist/delivery/ProducerController.js.map +1 -0
- package/dist/delivery/ReliableDelivery.d.ts +36 -0
- package/dist/delivery/ReliableDelivery.d.ts.map +1 -0
- package/dist/delivery/ReliableDelivery.js +32 -0
- package/dist/delivery/ReliableDelivery.js.map +1 -0
- package/dist/delivery/index.d.ts +8 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +4 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/discovery/AggregateSeedProvider.d.ts +15 -0
- package/dist/discovery/AggregateSeedProvider.d.ts.map +1 -0
- package/dist/discovery/AggregateSeedProvider.js +28 -0
- package/dist/discovery/AggregateSeedProvider.js.map +1 -0
- package/dist/discovery/ConfigSeedProvider.d.ts +20 -0
- package/dist/discovery/ConfigSeedProvider.d.ts.map +1 -0
- package/dist/discovery/ConfigSeedProvider.js +24 -0
- package/dist/discovery/ConfigSeedProvider.js.map +1 -0
- package/dist/discovery/DnsSeedProvider.d.ts +49 -0
- package/dist/discovery/DnsSeedProvider.d.ts.map +1 -0
- package/dist/discovery/DnsSeedProvider.js +57 -0
- package/dist/discovery/DnsSeedProvider.js.map +1 -0
- package/dist/discovery/KubernetesApiSeedProvider.d.ts +30 -0
- package/dist/discovery/KubernetesApiSeedProvider.d.ts.map +1 -0
- package/dist/discovery/KubernetesApiSeedProvider.js +66 -0
- package/dist/discovery/KubernetesApiSeedProvider.js.map +1 -0
- package/dist/discovery/Receptionist.d.ts +55 -0
- package/dist/discovery/Receptionist.d.ts.map +1 -0
- package/dist/discovery/Receptionist.js +207 -0
- package/dist/discovery/Receptionist.js.map +1 -0
- package/dist/discovery/ReceptionistMessages.d.ts +65 -0
- package/dist/discovery/ReceptionistMessages.d.ts.map +1 -0
- package/dist/discovery/ReceptionistMessages.js +76 -0
- package/dist/discovery/ReceptionistMessages.js.map +1 -0
- package/dist/discovery/SeedProvider.d.ts +17 -0
- package/dist/discovery/SeedProvider.d.ts.map +1 -0
- package/dist/discovery/SeedProvider.js +2 -0
- package/dist/discovery/SeedProvider.js.map +1 -0
- package/dist/discovery/ServiceKey.d.ts +15 -0
- package/dist/discovery/ServiceKey.d.ts.map +1 -0
- package/dist/discovery/ServiceKey.js +17 -0
- package/dist/discovery/ServiceKey.js.map +1 -0
- package/dist/discovery/autoDiscovery.d.ts +63 -0
- package/dist/discovery/autoDiscovery.d.ts.map +1 -0
- package/dist/discovery/autoDiscovery.js +91 -0
- package/dist/discovery/autoDiscovery.js.map +1 -0
- package/dist/discovery/index.d.ts +16 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +9 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/fsm/FSM.d.ts +60 -0
- package/dist/fsm/FSM.d.ts.map +1 -0
- package/dist/fsm/FSM.js +102 -0
- package/dist/fsm/FSM.js.map +1 -0
- package/dist/fsm/PersistentFSM.d.ts +230 -0
- package/dist/fsm/PersistentFSM.d.ts.map +1 -0
- package/dist/fsm/PersistentFSM.js +170 -0
- package/dist/fsm/PersistentFSM.js.map +1 -0
- package/dist/fsm/index.d.ts +5 -0
- package/dist/fsm/index.d.ts.map +1 -0
- package/dist/fsm/index.js +3 -0
- package/dist/fsm/index.js.map +1 -0
- package/dist/http/HttpClient.d.ts +34 -0
- package/dist/http/HttpClient.d.ts.map +1 -0
- package/dist/http/HttpClient.js +72 -0
- package/dist/http/HttpClient.js.map +1 -0
- package/dist/http/HttpExtension.d.ts +29 -0
- package/dist/http/HttpExtension.d.ts.map +1 -0
- package/dist/http/HttpExtension.js +64 -0
- package/dist/http/HttpExtension.js.map +1 -0
- package/dist/http/Marshalling.d.ts +20 -0
- package/dist/http/Marshalling.d.ts.map +1 -0
- package/dist/http/Marshalling.js +54 -0
- package/dist/http/Marshalling.js.map +1 -0
- package/dist/http/Route.d.ts +59 -0
- package/dist/http/Route.d.ts.map +1 -0
- package/dist/http/Route.js +93 -0
- package/dist/http/Route.js.map +1 -0
- package/dist/http/backend/ExpressBackend.d.ts +86 -0
- package/dist/http/backend/ExpressBackend.d.ts.map +1 -0
- package/dist/http/backend/ExpressBackend.js +260 -0
- package/dist/http/backend/ExpressBackend.js.map +1 -0
- package/dist/http/backend/FastifyBackend.d.ts +31 -0
- package/dist/http/backend/FastifyBackend.d.ts.map +1 -0
- package/dist/http/backend/FastifyBackend.js +193 -0
- package/dist/http/backend/FastifyBackend.js.map +1 -0
- package/dist/http/backend/HonoBackend.d.ts +72 -0
- package/dist/http/backend/HonoBackend.d.ts.map +1 -0
- package/dist/http/backend/HonoBackend.js +212 -0
- package/dist/http/backend/HonoBackend.js.map +1 -0
- package/dist/http/backend/HttpServerBackend.d.ts +31 -0
- package/dist/http/backend/HttpServerBackend.d.ts.map +1 -0
- package/dist/http/backend/HttpServerBackend.js +2 -0
- package/dist/http/backend/HttpServerBackend.js.map +1 -0
- package/dist/http/cache/IdempotencyKey.d.ts +48 -0
- package/dist/http/cache/IdempotencyKey.d.ts.map +1 -0
- package/dist/http/cache/IdempotencyKey.js +154 -0
- package/dist/http/cache/IdempotencyKey.js.map +1 -0
- package/dist/http/cache/RateLimit.d.ts +65 -0
- package/dist/http/cache/RateLimit.d.ts.map +1 -0
- package/dist/http/cache/RateLimit.js +60 -0
- package/dist/http/cache/RateLimit.js.map +1 -0
- package/dist/http/cache/ResponseCache.d.ts +49 -0
- package/dist/http/cache/ResponseCache.d.ts.map +1 -0
- package/dist/http/cache/ResponseCache.js +84 -0
- package/dist/http/cache/ResponseCache.js.map +1 -0
- package/dist/http/cache/index.d.ts +7 -0
- package/dist/http/cache/index.d.ts.map +1 -0
- package/dist/http/cache/index.js +4 -0
- package/dist/http/cache/index.js.map +1 -0
- package/dist/http/index.d.ts +18 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +11 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/types.d.ts +54 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/http/types.js +40 -0
- package/dist/http/types.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +87 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/ActorCell.d.ts +116 -0
- package/dist/internal/ActorCell.d.ts.map +1 -0
- package/dist/internal/ActorCell.js +681 -0
- package/dist/internal/ActorCell.js.map +1 -0
- package/dist/internal/DeadLetterRef.d.ts +15 -0
- package/dist/internal/DeadLetterRef.d.ts.map +1 -0
- package/dist/internal/DeadLetterRef.js +24 -0
- package/dist/internal/DeadLetterRef.js.map +1 -0
- package/dist/internal/Guardian.d.ts +18 -0
- package/dist/internal/Guardian.d.ts.map +1 -0
- package/dist/internal/Guardian.js +23 -0
- package/dist/internal/Guardian.js.map +1 -0
- package/dist/internal/LocalActorRef.d.ts +17 -0
- package/dist/internal/LocalActorRef.d.ts.map +1 -0
- package/dist/internal/LocalActorRef.js +38 -0
- package/dist/internal/LocalActorRef.js.map +1 -0
- package/dist/internal/Mailbox.d.ts +49 -0
- package/dist/internal/Mailbox.d.ts.map +1 -0
- package/dist/internal/Mailbox.js +49 -0
- package/dist/internal/Mailbox.js.map +1 -0
- package/dist/internal/SystemCommand.d.ts +31 -0
- package/dist/internal/SystemCommand.d.ts.map +1 -0
- package/dist/internal/SystemCommand.js +2 -0
- package/dist/internal/SystemCommand.js.map +1 -0
- package/dist/io/broker/AmqpActor.d.ts +78 -0
- package/dist/io/broker/AmqpActor.d.ts.map +1 -0
- package/dist/io/broker/AmqpActor.js +137 -0
- package/dist/io/broker/AmqpActor.js.map +1 -0
- package/dist/io/broker/BrokerActor.d.ts +125 -0
- package/dist/io/broker/BrokerActor.d.ts.map +1 -0
- package/dist/io/broker/BrokerActor.js +289 -0
- package/dist/io/broker/BrokerActor.js.map +1 -0
- package/dist/io/broker/BrokerEvents.d.ts +59 -0
- package/dist/io/broker/BrokerEvents.d.ts.map +1 -0
- package/dist/io/broker/BrokerEvents.js +79 -0
- package/dist/io/broker/BrokerEvents.js.map +1 -0
- package/dist/io/broker/BrokerSettings.d.ts +72 -0
- package/dist/io/broker/BrokerSettings.d.ts.map +1 -0
- package/dist/io/broker/BrokerSettings.js +73 -0
- package/dist/io/broker/BrokerSettings.js.map +1 -0
- package/dist/io/broker/GrpcClientActor.d.ts +112 -0
- package/dist/io/broker/GrpcClientActor.d.ts.map +1 -0
- package/dist/io/broker/GrpcClientActor.js +212 -0
- package/dist/io/broker/GrpcClientActor.js.map +1 -0
- package/dist/io/broker/GrpcServerActor.d.ts +101 -0
- package/dist/io/broker/GrpcServerActor.d.ts.map +1 -0
- package/dist/io/broker/GrpcServerActor.js +230 -0
- package/dist/io/broker/GrpcServerActor.js.map +1 -0
- package/dist/io/broker/JetStreamActor.d.ts +352 -0
- package/dist/io/broker/JetStreamActor.d.ts.map +1 -0
- package/dist/io/broker/JetStreamActor.js +378 -0
- package/dist/io/broker/JetStreamActor.js.map +1 -0
- package/dist/io/broker/KafkaActor.d.ts +316 -0
- package/dist/io/broker/KafkaActor.d.ts.map +1 -0
- package/dist/io/broker/KafkaActor.js +355 -0
- package/dist/io/broker/KafkaActor.js.map +1 -0
- package/dist/io/broker/MqttActor.d.ts +149 -0
- package/dist/io/broker/MqttActor.d.ts.map +1 -0
- package/dist/io/broker/MqttActor.js +255 -0
- package/dist/io/broker/MqttActor.js.map +1 -0
- package/dist/io/broker/NatsActor.d.ts +65 -0
- package/dist/io/broker/NatsActor.d.ts.map +1 -0
- package/dist/io/broker/NatsActor.js +126 -0
- package/dist/io/broker/NatsActor.js.map +1 -0
- package/dist/io/broker/RedisStreamsActor.d.ts +69 -0
- package/dist/io/broker/RedisStreamsActor.d.ts.map +1 -0
- package/dist/io/broker/RedisStreamsActor.js +140 -0
- package/dist/io/broker/RedisStreamsActor.js.map +1 -0
- package/dist/io/broker/ServerWebSocketActor.d.ts +109 -0
- package/dist/io/broker/ServerWebSocketActor.d.ts.map +1 -0
- package/dist/io/broker/ServerWebSocketActor.js +128 -0
- package/dist/io/broker/ServerWebSocketActor.js.map +1 -0
- package/dist/io/broker/SseActor.d.ts +45 -0
- package/dist/io/broker/SseActor.d.ts.map +1 -0
- package/dist/io/broker/SseActor.js +129 -0
- package/dist/io/broker/SseActor.js.map +1 -0
- package/dist/io/broker/TcpSocketActor.d.ts +73 -0
- package/dist/io/broker/TcpSocketActor.d.ts.map +1 -0
- package/dist/io/broker/TcpSocketActor.js +168 -0
- package/dist/io/broker/TcpSocketActor.js.map +1 -0
- package/dist/io/broker/UdpSocketActor.d.ts +54 -0
- package/dist/io/broker/UdpSocketActor.d.ts.map +1 -0
- package/dist/io/broker/UdpSocketActor.js +100 -0
- package/dist/io/broker/UdpSocketActor.js.map +1 -0
- package/dist/io/broker/WebSocketActor.d.ts +77 -0
- package/dist/io/broker/WebSocketActor.d.ts.map +1 -0
- package/dist/io/broker/WebSocketActor.js +217 -0
- package/dist/io/broker/WebSocketActor.js.map +1 -0
- package/dist/io/broker/WebSocketServerAdapters.d.ts +140 -0
- package/dist/io/broker/WebSocketServerAdapters.d.ts.map +1 -0
- package/dist/io/broker/WebSocketServerAdapters.js +155 -0
- package/dist/io/broker/WebSocketServerAdapters.js.map +1 -0
- package/dist/io/broker/index.d.ts +32 -0
- package/dist/io/broker/index.d.ts.map +1 -0
- package/dist/io/broker/index.js +22 -0
- package/dist/io/broker/index.js.map +1 -0
- package/dist/io/index.d.ts +2 -0
- package/dist/io/index.d.ts.map +1 -0
- package/dist/io/index.js +2 -0
- package/dist/io/index.js.map +1 -0
- package/dist/mailbox/BoundedMailbox.d.ts +28 -0
- package/dist/mailbox/BoundedMailbox.d.ts.map +1 -0
- package/dist/mailbox/BoundedMailbox.js +41 -0
- package/dist/mailbox/BoundedMailbox.js.map +1 -0
- package/dist/mailbox/PriorityMailbox.d.ts +32 -0
- package/dist/mailbox/PriorityMailbox.d.ts.map +1 -0
- package/dist/mailbox/PriorityMailbox.js +58 -0
- package/dist/mailbox/PriorityMailbox.js.map +1 -0
- package/dist/mailbox/index.d.ts +5 -0
- package/dist/mailbox/index.d.ts.map +1 -0
- package/dist/mailbox/index.js +3 -0
- package/dist/mailbox/index.js.map +1 -0
- package/dist/management/HealthCheck.d.ts +21 -0
- package/dist/management/HealthCheck.d.ts.map +1 -0
- package/dist/management/HealthCheck.js +46 -0
- package/dist/management/HealthCheck.js.map +1 -0
- package/dist/management/HttpManagement.d.ts +43 -0
- package/dist/management/HttpManagement.d.ts.map +1 -0
- package/dist/management/HttpManagement.js +158 -0
- package/dist/management/HttpManagement.js.map +1 -0
- package/dist/management/index.d.ts +5 -0
- package/dist/management/index.d.ts.map +1 -0
- package/dist/management/index.js +3 -0
- package/dist/management/index.js.map +1 -0
- package/dist/metrics/Metrics.d.ts +142 -0
- package/dist/metrics/Metrics.d.ts.map +1 -0
- package/dist/metrics/Metrics.js +231 -0
- package/dist/metrics/Metrics.js.map +1 -0
- package/dist/metrics/MetricsExtension.d.ts +51 -0
- package/dist/metrics/MetricsExtension.d.ts.map +1 -0
- package/dist/metrics/MetricsExtension.js +63 -0
- package/dist/metrics/MetricsExtension.js.map +1 -0
- package/dist/metrics/PromClientAdapter.d.ts +102 -0
- package/dist/metrics/PromClientAdapter.d.ts.map +1 -0
- package/dist/metrics/PromClientAdapter.js +244 -0
- package/dist/metrics/PromClientAdapter.js.map +1 -0
- package/dist/metrics/PrometheusExporter.d.ts +31 -0
- package/dist/metrics/PrometheusExporter.d.ts.map +1 -0
- package/dist/metrics/PrometheusExporter.js +128 -0
- package/dist/metrics/PrometheusExporter.js.map +1 -0
- package/dist/metrics/index.d.ts +7 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +5 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/pattern/BackoffPolicy.d.ts +67 -0
- package/dist/pattern/BackoffPolicy.d.ts.map +1 -0
- package/dist/pattern/BackoffPolicy.js +87 -0
- package/dist/pattern/BackoffPolicy.js.map +1 -0
- package/dist/pattern/BackoffSupervisor.d.ts +234 -0
- package/dist/pattern/BackoffSupervisor.d.ts.map +1 -0
- package/dist/pattern/BackoffSupervisor.js +292 -0
- package/dist/pattern/BackoffSupervisor.js.map +1 -0
- package/dist/pattern/CircuitBreaker.d.ts +49 -0
- package/dist/pattern/CircuitBreaker.d.ts.map +1 -0
- package/dist/pattern/CircuitBreaker.js +110 -0
- package/dist/pattern/CircuitBreaker.js.map +1 -0
- package/dist/pattern/Status.d.ts +13 -0
- package/dist/pattern/Status.d.ts.map +1 -0
- package/dist/pattern/Status.js +13 -0
- package/dist/pattern/Status.js.map +1 -0
- package/dist/pattern/after.d.ts +13 -0
- package/dist/pattern/after.d.ts.map +1 -0
- package/dist/pattern/after.js +26 -0
- package/dist/pattern/after.js.map +1 -0
- package/dist/pattern/index.d.ts +14 -0
- package/dist/pattern/index.d.ts.map +1 -0
- package/dist/pattern/index.js +8 -0
- package/dist/pattern/index.js.map +1 -0
- package/dist/pattern/pipeTo.d.ts +20 -0
- package/dist/pattern/pipeTo.d.ts.map +1 -0
- package/dist/pattern/pipeTo.js +22 -0
- package/dist/pattern/pipeTo.js.map +1 -0
- package/dist/pattern/retry.d.ts +24 -0
- package/dist/pattern/retry.d.ts.map +1 -0
- package/dist/pattern/retry.js +35 -0
- package/dist/pattern/retry.js.map +1 -0
- package/dist/persistence/DurableStateActor.d.ts +62 -0
- package/dist/persistence/DurableStateActor.d.ts.map +1 -0
- package/dist/persistence/DurableStateActor.js +120 -0
- package/dist/persistence/DurableStateActor.js.map +1 -0
- package/dist/persistence/DurableStateStore.d.ts +43 -0
- package/dist/persistence/DurableStateStore.d.ts.map +1 -0
- package/dist/persistence/DurableStateStore.js +13 -0
- package/dist/persistence/DurableStateStore.js.map +1 -0
- package/dist/persistence/EventDispatcher.d.ts +88 -0
- package/dist/persistence/EventDispatcher.d.ts.map +1 -0
- package/dist/persistence/EventDispatcher.js +81 -0
- package/dist/persistence/EventDispatcher.js.map +1 -0
- package/dist/persistence/Journal.d.ts +40 -0
- package/dist/persistence/Journal.d.ts.map +1 -0
- package/dist/persistence/Journal.js +2 -0
- package/dist/persistence/Journal.js.map +1 -0
- package/dist/persistence/JournalEventBus.d.ts +47 -0
- package/dist/persistence/JournalEventBus.d.ts.map +1 -0
- package/dist/persistence/JournalEventBus.js +26 -0
- package/dist/persistence/JournalEventBus.js.map +1 -0
- package/dist/persistence/JournalTypes.d.ts +39 -0
- package/dist/persistence/JournalTypes.d.ts.map +1 -0
- package/dist/persistence/JournalTypes.js +28 -0
- package/dist/persistence/JournalTypes.js.map +1 -0
- package/dist/persistence/PersistenceExtension.d.ts +32 -0
- package/dist/persistence/PersistenceExtension.d.ts.map +1 -0
- package/dist/persistence/PersistenceExtension.js +69 -0
- package/dist/persistence/PersistenceExtension.js.map +1 -0
- package/dist/persistence/PersistenceOptions.d.ts +95 -0
- package/dist/persistence/PersistenceOptions.d.ts.map +1 -0
- package/dist/persistence/PersistenceOptions.js +20 -0
- package/dist/persistence/PersistenceOptions.js.map +1 -0
- package/dist/persistence/PersistentActor.d.ts +120 -0
- package/dist/persistence/PersistentActor.d.ts.map +1 -0
- package/dist/persistence/PersistentActor.js +246 -0
- package/dist/persistence/PersistentActor.js.map +1 -0
- package/dist/persistence/ReplicatedEventSourcedActor.d.ts +238 -0
- package/dist/persistence/ReplicatedEventSourcedActor.d.ts.map +1 -0
- package/dist/persistence/ReplicatedEventSourcedActor.js +430 -0
- package/dist/persistence/ReplicatedEventSourcedActor.js.map +1 -0
- package/dist/persistence/SnapshotStore.d.ts +31 -0
- package/dist/persistence/SnapshotStore.d.ts.map +1 -0
- package/dist/persistence/SnapshotStore.js +2 -0
- package/dist/persistence/SnapshotStore.js.map +1 -0
- package/dist/persistence/durable-state-stores/InMemoryDurableStateStore.d.ts +14 -0
- package/dist/persistence/durable-state-stores/InMemoryDurableStateStore.d.ts.map +1 -0
- package/dist/persistence/durable-state-stores/InMemoryDurableStateStore.js +31 -0
- package/dist/persistence/durable-state-stores/InMemoryDurableStateStore.js.map +1 -0
- package/dist/persistence/durable-state-stores/ObjectStorageDurableStateStore.d.ts +27 -0
- package/dist/persistence/durable-state-stores/ObjectStorageDurableStateStore.d.ts.map +1 -0
- package/dist/persistence/durable-state-stores/ObjectStorageDurableStateStore.js +157 -0
- package/dist/persistence/durable-state-stores/ObjectStorageDurableStateStore.js.map +1 -0
- package/dist/persistence/index.d.ts +65 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +44 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/journals/CassandraClient.d.ts +81 -0
- package/dist/persistence/journals/CassandraClient.d.ts.map +1 -0
- package/dist/persistence/journals/CassandraClient.js +65 -0
- package/dist/persistence/journals/CassandraClient.js.map +1 -0
- package/dist/persistence/journals/CassandraJournal.d.ts +96 -0
- package/dist/persistence/journals/CassandraJournal.d.ts.map +1 -0
- package/dist/persistence/journals/CassandraJournal.js +247 -0
- package/dist/persistence/journals/CassandraJournal.js.map +1 -0
- package/dist/persistence/journals/CassandraPlugin.d.ts +30 -0
- package/dist/persistence/journals/CassandraPlugin.d.ts.map +1 -0
- package/dist/persistence/journals/CassandraPlugin.js +18 -0
- package/dist/persistence/journals/CassandraPlugin.js.map +1 -0
- package/dist/persistence/journals/InMemoryJournal.d.ts +35 -0
- package/dist/persistence/journals/InMemoryJournal.d.ts.map +1 -0
- package/dist/persistence/journals/InMemoryJournal.js +97 -0
- package/dist/persistence/journals/InMemoryJournal.js.map +1 -0
- package/dist/persistence/journals/SqliteJournal.d.ts +68 -0
- package/dist/persistence/journals/SqliteJournal.d.ts.map +1 -0
- package/dist/persistence/journals/SqliteJournal.js +225 -0
- package/dist/persistence/journals/SqliteJournal.js.map +1 -0
- package/dist/persistence/migration/Adapter.d.ts +72 -0
- package/dist/persistence/migration/Adapter.d.ts.map +1 -0
- package/dist/persistence/migration/Adapter.js +24 -0
- package/dist/persistence/migration/Adapter.js.map +1 -0
- package/dist/persistence/migration/Codec.d.ts +103 -0
- package/dist/persistence/migration/Codec.d.ts.map +1 -0
- package/dist/persistence/migration/Codec.js +92 -0
- package/dist/persistence/migration/Codec.js.map +1 -0
- package/dist/persistence/migration/Envelope.d.ts +37 -0
- package/dist/persistence/migration/Envelope.d.ts.map +1 -0
- package/dist/persistence/migration/Envelope.js +79 -0
- package/dist/persistence/migration/Envelope.js.map +1 -0
- package/dist/persistence/migration/MigrationChain.d.ts +100 -0
- package/dist/persistence/migration/MigrationChain.d.ts.map +1 -0
- package/dist/persistence/migration/MigrationChain.js +159 -0
- package/dist/persistence/migration/MigrationChain.js.map +1 -0
- package/dist/persistence/migration/SchemaRegistry.d.ts +114 -0
- package/dist/persistence/migration/SchemaRegistry.d.ts.map +1 -0
- package/dist/persistence/migration/SchemaRegistry.js +112 -0
- package/dist/persistence/migration/SchemaRegistry.js.map +1 -0
- package/dist/persistence/migration/defaultsAdapter.d.ts +56 -0
- package/dist/persistence/migration/defaultsAdapter.d.ts.map +1 -0
- package/dist/persistence/migration/defaultsAdapter.js +119 -0
- package/dist/persistence/migration/defaultsAdapter.js.map +1 -0
- package/dist/persistence/migration/index.d.ts +18 -0
- package/dist/persistence/migration/index.d.ts.map +1 -0
- package/dist/persistence/migration/index.js +12 -0
- package/dist/persistence/migration/index.js.map +1 -0
- package/dist/persistence/migration/journalMigration.d.ts +155 -0
- package/dist/persistence/migration/journalMigration.d.ts.map +1 -0
- package/dist/persistence/migration/journalMigration.js +149 -0
- package/dist/persistence/migration/journalMigration.js.map +1 -0
- package/dist/persistence/migration/migratingAdapter.d.ts +43 -0
- package/dist/persistence/migration/migratingAdapter.d.ts.map +1 -0
- package/dist/persistence/migration/migratingAdapter.js +65 -0
- package/dist/persistence/migration/migratingAdapter.js.map +1 -0
- package/dist/persistence/migration/validatedAdapter.d.ts +48 -0
- package/dist/persistence/migration/validatedAdapter.d.ts.map +1 -0
- package/dist/persistence/migration/validatedAdapter.js +86 -0
- package/dist/persistence/migration/validatedAdapter.js.map +1 -0
- package/dist/persistence/migration/wrapLegacy.d.ts +83 -0
- package/dist/persistence/migration/wrapLegacy.d.ts.map +1 -0
- package/dist/persistence/migration/wrapLegacy.js +126 -0
- package/dist/persistence/migration/wrapLegacy.js.map +1 -0
- package/dist/persistence/object-storage/BodyCodec.d.ts +88 -0
- package/dist/persistence/object-storage/BodyCodec.d.ts.map +1 -0
- package/dist/persistence/object-storage/BodyCodec.js +171 -0
- package/dist/persistence/object-storage/BodyCodec.js.map +1 -0
- package/dist/persistence/object-storage/Compression.d.ts +31 -0
- package/dist/persistence/object-storage/Compression.d.ts.map +1 -0
- package/dist/persistence/object-storage/Compression.js +99 -0
- package/dist/persistence/object-storage/Compression.js.map +1 -0
- package/dist/persistence/object-storage/Encryption.d.ts +73 -0
- package/dist/persistence/object-storage/Encryption.d.ts.map +1 -0
- package/dist/persistence/object-storage/Encryption.js +167 -0
- package/dist/persistence/object-storage/Encryption.js.map +1 -0
- package/dist/persistence/object-storage/FilesystemObjectStorageBackend.d.ts +79 -0
- package/dist/persistence/object-storage/FilesystemObjectStorageBackend.d.ts.map +1 -0
- package/dist/persistence/object-storage/FilesystemObjectStorageBackend.js +325 -0
- package/dist/persistence/object-storage/FilesystemObjectStorageBackend.js.map +1 -0
- package/dist/persistence/object-storage/ObjectStorageBackend.d.ts +86 -0
- package/dist/persistence/object-storage/ObjectStorageBackend.d.ts.map +1 -0
- package/dist/persistence/object-storage/ObjectStorageBackend.js +24 -0
- package/dist/persistence/object-storage/ObjectStorageBackend.js.map +1 -0
- package/dist/persistence/object-storage/ObjectStoragePlugin.d.ts +93 -0
- package/dist/persistence/object-storage/ObjectStoragePlugin.d.ts.map +1 -0
- package/dist/persistence/object-storage/ObjectStoragePlugin.js +113 -0
- package/dist/persistence/object-storage/ObjectStoragePlugin.js.map +1 -0
- package/dist/persistence/object-storage/PluginConfig.d.ts +67 -0
- package/dist/persistence/object-storage/PluginConfig.d.ts.map +1 -0
- package/dist/persistence/object-storage/PluginConfig.js +93 -0
- package/dist/persistence/object-storage/PluginConfig.js.map +1 -0
- package/dist/persistence/object-storage/S3ObjectStorageBackend.d.ts +104 -0
- package/dist/persistence/object-storage/S3ObjectStorageBackend.d.ts.map +1 -0
- package/dist/persistence/object-storage/S3ObjectStorageBackend.js +202 -0
- package/dist/persistence/object-storage/S3ObjectStorageBackend.js.map +1 -0
- package/dist/persistence/object-storage/reEncryptionSweep.d.ts +110 -0
- package/dist/persistence/object-storage/reEncryptionSweep.d.ts.map +1 -0
- package/dist/persistence/object-storage/reEncryptionSweep.js +157 -0
- package/dist/persistence/object-storage/reEncryptionSweep.js.map +1 -0
- package/dist/persistence/projection/OffsetStore.d.ts +69 -0
- package/dist/persistence/projection/OffsetStore.d.ts.map +1 -0
- package/dist/persistence/projection/OffsetStore.js +103 -0
- package/dist/persistence/projection/OffsetStore.js.map +1 -0
- package/dist/persistence/projection/ProjectionActor.d.ts +62 -0
- package/dist/persistence/projection/ProjectionActor.d.ts.map +1 -0
- package/dist/persistence/projection/ProjectionActor.js +120 -0
- package/dist/persistence/projection/ProjectionActor.js.map +1 -0
- package/dist/persistence/query/CassandraQuery.d.ts +42 -0
- package/dist/persistence/query/CassandraQuery.d.ts.map +1 -0
- package/dist/persistence/query/CassandraQuery.js +118 -0
- package/dist/persistence/query/CassandraQuery.js.map +1 -0
- package/dist/persistence/query/InMemoryQuery.d.ts +31 -0
- package/dist/persistence/query/InMemoryQuery.d.ts.map +1 -0
- package/dist/persistence/query/InMemoryQuery.js +285 -0
- package/dist/persistence/query/InMemoryQuery.js.map +1 -0
- package/dist/persistence/query/PersistenceQuery.d.ts +162 -0
- package/dist/persistence/query/PersistenceQuery.d.ts.map +1 -0
- package/dist/persistence/query/PersistenceQuery.js +78 -0
- package/dist/persistence/query/PersistenceQuery.js.map +1 -0
- package/dist/persistence/query/SqliteQuery.d.ts +58 -0
- package/dist/persistence/query/SqliteQuery.d.ts.map +1 -0
- package/dist/persistence/query/SqliteQuery.js +173 -0
- package/dist/persistence/query/SqliteQuery.js.map +1 -0
- package/dist/persistence/replicated/ConflictResolver.d.ts +70 -0
- package/dist/persistence/replicated/ConflictResolver.d.ts.map +1 -0
- package/dist/persistence/replicated/ConflictResolver.js +47 -0
- package/dist/persistence/replicated/ConflictResolver.js.map +1 -0
- package/dist/persistence/replicated/ReplicatedSnapshot.d.ts +43 -0
- package/dist/persistence/replicated/ReplicatedSnapshot.d.ts.map +1 -0
- package/dist/persistence/replicated/ReplicatedSnapshot.js +2 -0
- package/dist/persistence/replicated/ReplicatedSnapshot.js.map +1 -0
- package/dist/persistence/replicated/VectorClock.d.ts +57 -0
- package/dist/persistence/replicated/VectorClock.d.ts.map +1 -0
- package/dist/persistence/replicated/VectorClock.js +79 -0
- package/dist/persistence/replicated/VectorClock.js.map +1 -0
- package/dist/persistence/snapshot-stores/CachedSnapshotStore.d.ts +27 -0
- package/dist/persistence/snapshot-stores/CachedSnapshotStore.d.ts.map +1 -0
- package/dist/persistence/snapshot-stores/CachedSnapshotStore.js +82 -0
- package/dist/persistence/snapshot-stores/CachedSnapshotStore.js.map +1 -0
- package/dist/persistence/snapshot-stores/CassandraSnapshotStore.d.ts +42 -0
- package/dist/persistence/snapshot-stores/CassandraSnapshotStore.d.ts.map +1 -0
- package/dist/persistence/snapshot-stores/CassandraSnapshotStore.js +121 -0
- package/dist/persistence/snapshot-stores/CassandraSnapshotStore.js.map +1 -0
- package/dist/persistence/snapshot-stores/InMemorySnapshotStore.d.ts +19 -0
- package/dist/persistence/snapshot-stores/InMemorySnapshotStore.d.ts.map +1 -0
- package/dist/persistence/snapshot-stores/InMemorySnapshotStore.js +44 -0
- package/dist/persistence/snapshot-stores/InMemorySnapshotStore.js.map +1 -0
- package/dist/persistence/snapshot-stores/ObjectStorageSnapshotStore.d.ts +46 -0
- package/dist/persistence/snapshot-stores/ObjectStorageSnapshotStore.d.ts.map +1 -0
- package/dist/persistence/snapshot-stores/ObjectStorageSnapshotStore.js +172 -0
- package/dist/persistence/snapshot-stores/ObjectStorageSnapshotStore.js.map +1 -0
- package/dist/persistence/snapshot-stores/SqliteSnapshotStore.d.ts +42 -0
- package/dist/persistence/snapshot-stores/SqliteSnapshotStore.d.ts.map +1 -0
- package/dist/persistence/snapshot-stores/SqliteSnapshotStore.js +108 -0
- package/dist/persistence/snapshot-stores/SqliteSnapshotStore.js.map +1 -0
- package/dist/persistence/storage/KeyValidator.d.ts +80 -0
- package/dist/persistence/storage/KeyValidator.d.ts.map +1 -0
- package/dist/persistence/storage/KeyValidator.js +88 -0
- package/dist/persistence/storage/KeyValidator.js.map +1 -0
- package/dist/runtime/detect.d.ts +35 -0
- package/dist/runtime/detect.d.ts.map +1 -0
- package/dist/runtime/detect.js +60 -0
- package/dist/runtime/detect.js.map +1 -0
- package/dist/runtime/http/BunHonoRunner.d.ts +16 -0
- package/dist/runtime/http/BunHonoRunner.d.ts.map +1 -0
- package/dist/runtime/http/BunHonoRunner.js +26 -0
- package/dist/runtime/http/BunHonoRunner.js.map +1 -0
- package/dist/runtime/http/DenoHonoRunner.d.ts +16 -0
- package/dist/runtime/http/DenoHonoRunner.d.ts.map +1 -0
- package/dist/runtime/http/DenoHonoRunner.js +33 -0
- package/dist/runtime/http/DenoHonoRunner.js.map +1 -0
- package/dist/runtime/http/HonoServerRunner.d.ts +28 -0
- package/dist/runtime/http/HonoServerRunner.d.ts.map +1 -0
- package/dist/runtime/http/HonoServerRunner.js +16 -0
- package/dist/runtime/http/HonoServerRunner.js.map +1 -0
- package/dist/runtime/http/NodeHonoRunner.d.ts +19 -0
- package/dist/runtime/http/NodeHonoRunner.d.ts.map +1 -0
- package/dist/runtime/http/NodeHonoRunner.js +70 -0
- package/dist/runtime/http/NodeHonoRunner.js.map +1 -0
- package/dist/runtime/http/index.d.ts +13 -0
- package/dist/runtime/http/index.d.ts.map +1 -0
- package/dist/runtime/http/index.js +40 -0
- package/dist/runtime/http/index.js.map +1 -0
- package/dist/runtime/sqlite/BetterSqliteDriver.d.ts +18 -0
- package/dist/runtime/sqlite/BetterSqliteDriver.d.ts.map +1 -0
- package/dist/runtime/sqlite/BetterSqliteDriver.js +64 -0
- package/dist/runtime/sqlite/BetterSqliteDriver.js.map +1 -0
- package/dist/runtime/sqlite/BunSqliteDriver.d.ts +17 -0
- package/dist/runtime/sqlite/BunSqliteDriver.d.ts.map +1 -0
- package/dist/runtime/sqlite/BunSqliteDriver.js +34 -0
- package/dist/runtime/sqlite/BunSqliteDriver.js.map +1 -0
- package/dist/runtime/sqlite/SqliteDriver.d.ts +35 -0
- package/dist/runtime/sqlite/SqliteDriver.d.ts.map +1 -0
- package/dist/runtime/sqlite/SqliteDriver.js +13 -0
- package/dist/runtime/sqlite/SqliteDriver.js.map +1 -0
- package/dist/runtime/sqlite/index.d.ts +14 -0
- package/dist/runtime/sqlite/index.d.ts.map +1 -0
- package/dist/runtime/sqlite/index.js +41 -0
- package/dist/runtime/sqlite/index.js.map +1 -0
- package/dist/runtime/tcp/BunTcpBackend.d.ts +24 -0
- package/dist/runtime/tcp/BunTcpBackend.d.ts.map +1 -0
- package/dist/runtime/tcp/BunTcpBackend.js +66 -0
- package/dist/runtime/tcp/BunTcpBackend.js.map +1 -0
- package/dist/runtime/tcp/DenoTcpBackend.d.ts +30 -0
- package/dist/runtime/tcp/DenoTcpBackend.d.ts.map +1 -0
- package/dist/runtime/tcp/DenoTcpBackend.js +145 -0
- package/dist/runtime/tcp/DenoTcpBackend.js.map +1 -0
- package/dist/runtime/tcp/NodeTcpBackend.d.ts +25 -0
- package/dist/runtime/tcp/NodeTcpBackend.d.ts.map +1 -0
- package/dist/runtime/tcp/NodeTcpBackend.js +102 -0
- package/dist/runtime/tcp/NodeTcpBackend.js.map +1 -0
- package/dist/runtime/tcp/TcpBackend.d.ts +65 -0
- package/dist/runtime/tcp/TcpBackend.d.ts.map +1 -0
- package/dist/runtime/tcp/TcpBackend.js +17 -0
- package/dist/runtime/tcp/TcpBackend.js.map +1 -0
- package/dist/runtime/tcp/index.d.ts +13 -0
- package/dist/runtime/tcp/index.d.ts.map +1 -0
- package/dist/runtime/tcp/index.js +40 -0
- package/dist/runtime/tcp/index.js.map +1 -0
- package/dist/runtime/worker/NodeWorkerBackend.d.ts +19 -0
- package/dist/runtime/worker/NodeWorkerBackend.d.ts.map +1 -0
- package/dist/runtime/worker/NodeWorkerBackend.js +84 -0
- package/dist/runtime/worker/NodeWorkerBackend.js.map +1 -0
- package/dist/runtime/worker/WebWorkerBackend.d.ts +12 -0
- package/dist/runtime/worker/WebWorkerBackend.d.ts.map +1 -0
- package/dist/runtime/worker/WebWorkerBackend.js +55 -0
- package/dist/runtime/worker/WebWorkerBackend.js.map +1 -0
- package/dist/runtime/worker/WorkerBackend.d.ts +45 -0
- package/dist/runtime/worker/WorkerBackend.d.ts.map +1 -0
- package/dist/runtime/worker/WorkerBackend.js +18 -0
- package/dist/runtime/worker/WorkerBackend.js.map +1 -0
- package/dist/runtime/worker/index.d.ts +14 -0
- package/dist/runtime/worker/index.d.ts.map +1 -0
- package/dist/runtime/worker/index.js +34 -0
- package/dist/runtime/worker/index.js.map +1 -0
- package/dist/serialization/CborCodec.d.ts +51 -0
- package/dist/serialization/CborCodec.d.ts.map +1 -0
- package/dist/serialization/CborCodec.js +321 -0
- package/dist/serialization/CborCodec.js.map +1 -0
- package/dist/serialization/CborSerializer.d.ts +23 -0
- package/dist/serialization/CborSerializer.d.ts.map +1 -0
- package/dist/serialization/CborSerializer.js +27 -0
- package/dist/serialization/CborSerializer.js.map +1 -0
- package/dist/serialization/JsonSerializer.d.ts +18 -0
- package/dist/serialization/JsonSerializer.d.ts.map +1 -0
- package/dist/serialization/JsonSerializer.js +114 -0
- package/dist/serialization/JsonSerializer.js.map +1 -0
- package/dist/serialization/SerializationExtension.d.ts +46 -0
- package/dist/serialization/SerializationExtension.d.ts.map +1 -0
- package/dist/serialization/SerializationExtension.js +105 -0
- package/dist/serialization/SerializationExtension.js.map +1 -0
- package/dist/serialization/Serializer.d.ts +44 -0
- package/dist/serialization/Serializer.d.ts.map +1 -0
- package/dist/serialization/Serializer.js +7 -0
- package/dist/serialization/Serializer.js.map +1 -0
- package/dist/serialization/index.d.ts +7 -0
- package/dist/serialization/index.d.ts.map +1 -0
- package/dist/serialization/index.js +6 -0
- package/dist/serialization/index.js.map +1 -0
- package/dist/testkit/ManualScheduler.d.ts +35 -0
- package/dist/testkit/ManualScheduler.d.ts.map +1 -0
- package/dist/testkit/ManualScheduler.js +126 -0
- package/dist/testkit/ManualScheduler.js.map +1 -0
- package/dist/testkit/MultiNodeSpec.d.ts +132 -0
- package/dist/testkit/MultiNodeSpec.d.ts.map +1 -0
- package/dist/testkit/MultiNodeSpec.js +237 -0
- package/dist/testkit/MultiNodeSpec.js.map +1 -0
- package/dist/testkit/ParallelMultiNodeSpec.d.ts +117 -0
- package/dist/testkit/ParallelMultiNodeSpec.d.ts.map +1 -0
- package/dist/testkit/ParallelMultiNodeSpec.js +310 -0
- package/dist/testkit/ParallelMultiNodeSpec.js.map +1 -0
- package/dist/testkit/TestKit.d.ts +40 -0
- package/dist/testkit/TestKit.d.ts.map +1 -0
- package/dist/testkit/TestKit.js +60 -0
- package/dist/testkit/TestKit.js.map +1 -0
- package/dist/testkit/TestProbe.d.ts +56 -0
- package/dist/testkit/TestProbe.d.ts.map +1 -0
- package/dist/testkit/TestProbe.js +184 -0
- package/dist/testkit/TestProbe.js.map +1 -0
- package/dist/testkit/index.d.ts +11 -0
- package/dist/testkit/index.d.ts.map +1 -0
- package/dist/testkit/index.js +6 -0
- package/dist/testkit/index.js.map +1 -0
- package/dist/testkit/internal/MultiNodeBroker.d.ts +39 -0
- package/dist/testkit/internal/MultiNodeBroker.d.ts.map +1 -0
- package/dist/testkit/internal/MultiNodeBroker.js +96 -0
- package/dist/testkit/internal/MultiNodeBroker.js.map +1 -0
- package/dist/testkit/internal/MultiNodeTransport.d.ts +58 -0
- package/dist/testkit/internal/MultiNodeTransport.d.ts.map +1 -0
- package/dist/testkit/internal/MultiNodeTransport.js +96 -0
- package/dist/testkit/internal/MultiNodeTransport.js.map +1 -0
- package/dist/testkit/internal/parallel-multi-node-bootstrap.d.ts +54 -0
- package/dist/testkit/internal/parallel-multi-node-bootstrap.d.ts.map +1 -0
- package/dist/testkit/internal/parallel-multi-node-bootstrap.js +157 -0
- package/dist/testkit/internal/parallel-multi-node-bootstrap.js.map +1 -0
- package/dist/tracing/NoopTracer.d.ts +11 -0
- package/dist/tracing/NoopTracer.d.ts.map +1 -0
- package/dist/tracing/NoopTracer.js +29 -0
- package/dist/tracing/NoopTracer.js.map +1 -0
- package/dist/tracing/OtelAdapter.d.ts +106 -0
- package/dist/tracing/OtelAdapter.d.ts.map +1 -0
- package/dist/tracing/OtelAdapter.js +164 -0
- package/dist/tracing/OtelAdapter.js.map +1 -0
- package/dist/tracing/RecordingTracer.d.ts +54 -0
- package/dist/tracing/RecordingTracer.d.ts.map +1 -0
- package/dist/tracing/RecordingTracer.js +129 -0
- package/dist/tracing/RecordingTracer.js.map +1 -0
- package/dist/tracing/Tracer.d.ts +100 -0
- package/dist/tracing/Tracer.d.ts.map +1 -0
- package/dist/tracing/Tracer.js +76 -0
- package/dist/tracing/Tracer.js.map +1 -0
- package/dist/tracing/TracingExtension.d.ts +32 -0
- package/dist/tracing/TracingExtension.d.ts.map +1 -0
- package/dist/tracing/TracingExtension.js +38 -0
- package/dist/tracing/TracingExtension.js.map +1 -0
- package/dist/tracing/index.d.ts +9 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +6 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/typed/Behavior.d.ts +78 -0
- package/dist/typed/Behavior.d.ts.map +1 -0
- package/dist/typed/Behavior.js +2 -0
- package/dist/typed/Behavior.js.map +1 -0
- package/dist/typed/Behaviors.d.ts +60 -0
- package/dist/typed/Behaviors.d.ts.map +1 -0
- package/dist/typed/Behaviors.js +77 -0
- package/dist/typed/Behaviors.js.map +1 -0
- package/dist/typed/TypedActor.d.ts +28 -0
- package/dist/typed/TypedActor.d.ts.map +1 -0
- package/dist/typed/TypedActor.js +194 -0
- package/dist/typed/TypedActor.js.map +1 -0
- package/dist/typed/TypedActorContext.d.ts +29 -0
- package/dist/typed/TypedActorContext.d.ts.map +1 -0
- package/dist/typed/TypedActorContext.js +2 -0
- package/dist/typed/TypedActorContext.js.map +1 -0
- package/dist/typed/index.d.ts +7 -0
- package/dist/typed/index.d.ts.map +1 -0
- package/dist/typed/index.js +4 -0
- package/dist/typed/index.js.map +1 -0
- package/dist/typed/spawn.d.ts +14 -0
- package/dist/typed/spawn.d.ts.map +1 -0
- package/dist/typed/spawn.js +16 -0
- package/dist/typed/spawn.js.map +1 -0
- package/dist/util/Constants.d.ts +66 -0
- package/dist/util/Constants.d.ts.map +1 -0
- package/dist/util/Constants.js +66 -0
- package/dist/util/Constants.js.map +1 -0
- package/dist/util/Either.d.ts +100 -0
- package/dist/util/Either.d.ts.map +1 -0
- package/dist/util/Either.js +128 -0
- package/dist/util/Either.js.map +1 -0
- package/dist/util/Lazy.d.ts +82 -0
- package/dist/util/Lazy.d.ts.map +1 -0
- package/dist/util/Lazy.js +119 -0
- package/dist/util/Lazy.js.map +1 -0
- package/dist/util/LazyImport.d.ts +68 -0
- package/dist/util/LazyImport.d.ts.map +1 -0
- package/dist/util/LazyImport.js +64 -0
- package/dist/util/LazyImport.js.map +1 -0
- package/dist/util/Option.d.ts +105 -0
- package/dist/util/Option.d.ts.map +1 -0
- package/dist/util/Option.js +123 -0
- package/dist/util/Option.js.map +1 -0
- package/dist/util/TokenBucket.d.ts +59 -0
- package/dist/util/TokenBucket.d.ts.map +1 -0
- package/dist/util/TokenBucket.js +76 -0
- package/dist/util/TokenBucket.js.map +1 -0
- package/dist/util/Try.d.ts +103 -0
- package/dist/util/Try.d.ts.map +1 -0
- package/dist/util/Try.js +176 -0
- package/dist/util/Try.js.map +1 -0
- package/dist/util/WrapError.d.ts +42 -0
- package/dist/util/WrapError.d.ts.map +1 -0
- package/dist/util/WrapError.js +46 -0
- package/dist/util/WrapError.js.map +1 -0
- package/dist/worker/WorkerBroker.d.ts +29 -0
- package/dist/worker/WorkerBroker.d.ts.map +1 -0
- package/dist/worker/WorkerBroker.js +74 -0
- package/dist/worker/WorkerBroker.js.map +1 -0
- package/dist/worker/WorkerCluster.d.ts +68 -0
- package/dist/worker/WorkerCluster.d.ts.map +1 -0
- package/dist/worker/WorkerCluster.js +161 -0
- package/dist/worker/WorkerCluster.js.map +1 -0
- package/dist/worker/WorkerNode.d.ts +20 -0
- package/dist/worker/WorkerNode.d.ts.map +1 -0
- package/dist/worker/WorkerNode.js +84 -0
- package/dist/worker/WorkerNode.js.map +1 -0
- package/dist/worker/index.d.ts +6 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +4 -0
- package/dist/worker/index.js.map +1 -0
- package/package.json +148 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Actor } from '../Actor.js';
|
|
2
|
+
import type { PersistentEvent, Snapshot } from './JournalTypes.js';
|
|
3
|
+
import type { CompressionConfig, EncryptionConfig } from './PersistenceOptions.js';
|
|
4
|
+
import type { EventAdapter, SnapshotAdapter } from './migration/Adapter.js';
|
|
5
|
+
/**
|
|
6
|
+
* How often to take snapshots — called after every event apply. Returning
|
|
7
|
+
* true means "snapshot the current state".
|
|
8
|
+
*/
|
|
9
|
+
export type SnapshotPolicy<State, Event> = (seq: number, state: State, event: Event) => boolean;
|
|
10
|
+
/** Convenience: snapshot every N events. */
|
|
11
|
+
export declare function everyNEvents<State, Event>(n: number): SnapshotPolicy<State, Event>;
|
|
12
|
+
/**
|
|
13
|
+
* Classic-style event-sourced actor. Subclasses override `onCommand`
|
|
14
|
+
* (which decides what to persist), `onEvent` (pure state update from the
|
|
15
|
+
* event), and optionally `onRecoveryComplete`. Commands are automatically
|
|
16
|
+
* stashed while `persist(...)` is pending, so user code can assume the
|
|
17
|
+
* state is caught up by the time its callback fires.
|
|
18
|
+
*
|
|
19
|
+
* class AccountActor extends PersistentActor<Cmd, Event, State> {
|
|
20
|
+
* readonly persistenceId = 'account-42';
|
|
21
|
+
* initialState(): State { return { balance: 0 }; }
|
|
22
|
+
* onEvent(state: State, e: Event): State {
|
|
23
|
+
* if (e.kind === 'deposited') return { balance: state.balance + e.amount };
|
|
24
|
+
* return state;
|
|
25
|
+
* }
|
|
26
|
+
* onCommand(state: State, cmd: Cmd): void {
|
|
27
|
+
* if (cmd.kind === 'deposit') {
|
|
28
|
+
* this.persist({ kind: 'deposited', amount: cmd.amount }, (s) => {
|
|
29
|
+
* this.sender?.tell({ ok: s.balance });
|
|
30
|
+
* });
|
|
31
|
+
* }
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
*/
|
|
35
|
+
export declare abstract class PersistentActor<Cmd, Event, State> extends Actor<Cmd> {
|
|
36
|
+
abstract readonly persistenceId: string;
|
|
37
|
+
/** Default initial state when no snapshot and no events exist. */
|
|
38
|
+
abstract initialState(): State;
|
|
39
|
+
/** Pure state-update function — MUST be deterministic. */
|
|
40
|
+
abstract onEvent(state: State, event: Event): State;
|
|
41
|
+
/** Handle an incoming command — typically calls `persist(event, cb)`. */
|
|
42
|
+
abstract onCommand(state: State, cmd: Cmd): void | Promise<void>;
|
|
43
|
+
/** Called once recovery finishes, with the final replayed state. */
|
|
44
|
+
onRecoveryComplete(_state: State): void | Promise<void>;
|
|
45
|
+
/** Called when recovery itself throws. Default = propagate to supervision. */
|
|
46
|
+
onRecoveryFailure(reason: Error): void;
|
|
47
|
+
/** Snapshot policy — return true to snapshot the current state. */
|
|
48
|
+
snapshotPolicy(): SnapshotPolicy<State, Event>;
|
|
49
|
+
/** Optional tags attached to every persisted event (for Persistence Query). */
|
|
50
|
+
tagsFor(_event: Event): ReadonlyArray<string> | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Optional event adapter for schema evolution. When defined, every
|
|
53
|
+
* persisted event is wrapped into a `{ _v, _t, _e }` envelope on the
|
|
54
|
+
* write path and unwrapped (with up-casting through the adapter) on
|
|
55
|
+
* the read path. Recovery is **strict** when an adapter is set: a
|
|
56
|
+
* raw, non-envelope event in the journal will throw `MigrationError`.
|
|
57
|
+
* See `src/persistence/migration/`.
|
|
58
|
+
*/
|
|
59
|
+
eventAdapter(): EventAdapter<Event> | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Optional snapshot adapter — same semantics as `eventAdapter`, but
|
|
62
|
+
* applied to the `state` blob persisted by the snapshot store. When
|
|
63
|
+
* a snapshot adapter is set and a stored snapshot is not an envelope,
|
|
64
|
+
* recovery throws.
|
|
65
|
+
*/
|
|
66
|
+
snapshotAdapter(): SnapshotAdapter<State> | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Per-actor compression — overrides the plugin default for THIS actor's
|
|
69
|
+
* snapshots. Stores that don't compress (in-memory, SQLite, Cassandra)
|
|
70
|
+
* ignore the value. Returning `undefined` (the default) defers to the
|
|
71
|
+
* plugin's resolver / configured default.
|
|
72
|
+
*/
|
|
73
|
+
compression(): CompressionConfig | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Per-actor encryption — overrides the plugin default for THIS actor's
|
|
76
|
+
* snapshots. Honoured by stores that encrypt at rest (object-storage);
|
|
77
|
+
* other stores ignore it. Used on both the write path (encrypt) and
|
|
78
|
+
* the read path (derive subkey from master to decrypt).
|
|
79
|
+
*/
|
|
80
|
+
encryption(): EncryptionConfig | undefined;
|
|
81
|
+
private _state;
|
|
82
|
+
private _seq;
|
|
83
|
+
private _journal;
|
|
84
|
+
private _snapshotStore;
|
|
85
|
+
private _recovering;
|
|
86
|
+
/** Set while a persist is in flight — incoming commands get stashed. */
|
|
87
|
+
private _persisting;
|
|
88
|
+
private _pendingCallbacks;
|
|
89
|
+
/** Current state — only reliable after recovery. */
|
|
90
|
+
protected get state(): State;
|
|
91
|
+
/** Highest sequence number reflected in `state`. */
|
|
92
|
+
protected get lastSequenceNr(): number;
|
|
93
|
+
/** True while the actor is still replaying history. */
|
|
94
|
+
protected get recovering(): boolean;
|
|
95
|
+
preStart(): Promise<void>;
|
|
96
|
+
private recover;
|
|
97
|
+
onReceive(message: Cmd): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Persist a single event. The callback runs once the event has been
|
|
100
|
+
* applied to the state — use it to reply to the sender. Further
|
|
101
|
+
* incoming commands are deferred until the callback returns.
|
|
102
|
+
*/
|
|
103
|
+
protected persist(event: Event, cb?: (state: State) => void | Promise<void>): Promise<void>;
|
|
104
|
+
/** Persist several events atomically. Must also be awaited in onCommand. */
|
|
105
|
+
protected persistAll(events: ReadonlyArray<Event>, cb?: (state: State) => void | Promise<void>): Promise<void>;
|
|
106
|
+
/** Force a snapshot of the current state. */
|
|
107
|
+
protected saveSnapshot(): Promise<Snapshot<State>>;
|
|
108
|
+
private saveSnapshotNow;
|
|
109
|
+
/**
|
|
110
|
+
* Build the per-call `PersistenceOptions` from the actor's hooks.
|
|
111
|
+
* Returns `undefined` when neither hook is set so the store defaults
|
|
112
|
+
* (plugin resolver / config) take effect with zero overhead.
|
|
113
|
+
*/
|
|
114
|
+
private persistenceOptions;
|
|
115
|
+
/** Delete snapshots and events up to `toSeq` for compaction. */
|
|
116
|
+
protected deleteHistory(toSeq: number): Promise<void>;
|
|
117
|
+
/** Read back the persisted events — handy for tests. */
|
|
118
|
+
protected readEvents(fromSeq?: number, toSeq?: number): Promise<PersistentEvent<Event>[]>;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=PersistentActor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersistentActor.d.ts","sourceRoot":"","sources":["../../src/persistence/PersistentActor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { Actor } from '../Actor.js';
|
|
2
|
+
import { PersistenceExtensionId } from './PersistenceExtension.js';
|
|
3
|
+
import { decodeEvent, decodeState, encodeEvent, encodeState, } from './migration/Envelope.js';
|
|
4
|
+
/** Convenience: snapshot every N events. */
|
|
5
|
+
export function everyNEvents(n) {
|
|
6
|
+
if (n <= 0)
|
|
7
|
+
throw new Error('everyNEvents expects a positive number');
|
|
8
|
+
return (seq) => seq > 0 && seq % n === 0;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Classic-style event-sourced actor. Subclasses override `onCommand`
|
|
12
|
+
* (which decides what to persist), `onEvent` (pure state update from the
|
|
13
|
+
* event), and optionally `onRecoveryComplete`. Commands are automatically
|
|
14
|
+
* stashed while `persist(...)` is pending, so user code can assume the
|
|
15
|
+
* state is caught up by the time its callback fires.
|
|
16
|
+
*
|
|
17
|
+
* class AccountActor extends PersistentActor<Cmd, Event, State> {
|
|
18
|
+
* readonly persistenceId = 'account-42';
|
|
19
|
+
* initialState(): State { return { balance: 0 }; }
|
|
20
|
+
* onEvent(state: State, e: Event): State {
|
|
21
|
+
* if (e.kind === 'deposited') return { balance: state.balance + e.amount };
|
|
22
|
+
* return state;
|
|
23
|
+
* }
|
|
24
|
+
* onCommand(state: State, cmd: Cmd): void {
|
|
25
|
+
* if (cmd.kind === 'deposit') {
|
|
26
|
+
* this.persist({ kind: 'deposited', amount: cmd.amount }, (s) => {
|
|
27
|
+
* this.sender?.tell({ ok: s.balance });
|
|
28
|
+
* });
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* }
|
|
32
|
+
*/
|
|
33
|
+
export class PersistentActor extends Actor {
|
|
34
|
+
/** Called once recovery finishes, with the final replayed state. */
|
|
35
|
+
onRecoveryComplete(_state) { }
|
|
36
|
+
/** Called when recovery itself throws. Default = propagate to supervision. */
|
|
37
|
+
onRecoveryFailure(reason) { throw reason; }
|
|
38
|
+
/** Snapshot policy — return true to snapshot the current state. */
|
|
39
|
+
snapshotPolicy() { return () => false; }
|
|
40
|
+
/** Optional tags attached to every persisted event (for Persistence Query). */
|
|
41
|
+
tagsFor(_event) { return undefined; }
|
|
42
|
+
/**
|
|
43
|
+
* Optional event adapter for schema evolution. When defined, every
|
|
44
|
+
* persisted event is wrapped into a `{ _v, _t, _e }` envelope on the
|
|
45
|
+
* write path and unwrapped (with up-casting through the adapter) on
|
|
46
|
+
* the read path. Recovery is **strict** when an adapter is set: a
|
|
47
|
+
* raw, non-envelope event in the journal will throw `MigrationError`.
|
|
48
|
+
* See `src/persistence/migration/`.
|
|
49
|
+
*/
|
|
50
|
+
eventAdapter() { return undefined; }
|
|
51
|
+
/**
|
|
52
|
+
* Optional snapshot adapter — same semantics as `eventAdapter`, but
|
|
53
|
+
* applied to the `state` blob persisted by the snapshot store. When
|
|
54
|
+
* a snapshot adapter is set and a stored snapshot is not an envelope,
|
|
55
|
+
* recovery throws.
|
|
56
|
+
*/
|
|
57
|
+
snapshotAdapter() { return undefined; }
|
|
58
|
+
/**
|
|
59
|
+
* Per-actor compression — overrides the plugin default for THIS actor's
|
|
60
|
+
* snapshots. Stores that don't compress (in-memory, SQLite, Cassandra)
|
|
61
|
+
* ignore the value. Returning `undefined` (the default) defers to the
|
|
62
|
+
* plugin's resolver / configured default.
|
|
63
|
+
*/
|
|
64
|
+
compression() { return undefined; }
|
|
65
|
+
/**
|
|
66
|
+
* Per-actor encryption — overrides the plugin default for THIS actor's
|
|
67
|
+
* snapshots. Honoured by stores that encrypt at rest (object-storage);
|
|
68
|
+
* other stores ignore it. Used on both the write path (encrypt) and
|
|
69
|
+
* the read path (derive subkey from master to decrypt).
|
|
70
|
+
*/
|
|
71
|
+
encryption() { return undefined; }
|
|
72
|
+
/* ----------------------------- Internal state ---------------------------- */
|
|
73
|
+
_state;
|
|
74
|
+
_seq = 0;
|
|
75
|
+
_journal;
|
|
76
|
+
_snapshotStore;
|
|
77
|
+
_recovering = true;
|
|
78
|
+
/** Set while a persist is in flight — incoming commands get stashed. */
|
|
79
|
+
_persisting = false;
|
|
80
|
+
_pendingCallbacks = [];
|
|
81
|
+
/** Current state — only reliable after recovery. */
|
|
82
|
+
get state() { return this._state; }
|
|
83
|
+
/** Highest sequence number reflected in `state`. */
|
|
84
|
+
get lastSequenceNr() { return this._seq; }
|
|
85
|
+
/** True while the actor is still replaying history. */
|
|
86
|
+
get recovering() { return this._recovering; }
|
|
87
|
+
/* ----------------------------- Lifecycle API ----------------------------- */
|
|
88
|
+
async preStart() {
|
|
89
|
+
const ext = this.system.extension(PersistenceExtensionId);
|
|
90
|
+
this._journal = ext.journal;
|
|
91
|
+
this._snapshotStore = ext.snapshotStore;
|
|
92
|
+
try {
|
|
93
|
+
await this.recover();
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
this.onRecoveryFailure(e instanceof Error ? e : new Error(String(e)));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async recover() {
|
|
100
|
+
this._state = this.initialState();
|
|
101
|
+
this._seq = 0;
|
|
102
|
+
const snapAdapter = this.snapshotAdapter();
|
|
103
|
+
const evAdapter = this.eventAdapter();
|
|
104
|
+
const persistOpts = this.persistenceOptions();
|
|
105
|
+
this.log.debug(`[persistence] '${this.persistenceId}' recovery starting`);
|
|
106
|
+
const snapshot = await this._snapshotStore.loadLatest(this.persistenceId, persistOpts);
|
|
107
|
+
if (snapshot.isSome()) {
|
|
108
|
+
const snapSeq = snapshot.value.sequenceNr;
|
|
109
|
+
// Security: validate the snapshot's claimed seq number BEFORE
|
|
110
|
+
// trusting it for replay. An attacker with write access to
|
|
111
|
+
// the snapshot store (shared bucket, co-tenant, insider) could
|
|
112
|
+
// craft a snapshot with `sequenceNr = MAX_SAFE_INTEGER` (or
|
|
113
|
+
// NaN, Infinity, -1, etc.); the old code accepted it and
|
|
114
|
+
// skipped event replay entirely, recovering with the
|
|
115
|
+
// attacker's chosen state. Two-layer check:
|
|
116
|
+
// 1. seq must be a finite non-negative integer
|
|
117
|
+
// 2. seq must not exceed what the journal can corroborate
|
|
118
|
+
if (!Number.isInteger(snapSeq) || snapSeq < 0) {
|
|
119
|
+
throw new Error(`[persistence] '${this.persistenceId}' snapshot has malformed sequenceNr=${snapSeq} ` +
|
|
120
|
+
`— refusing to recover from a corrupted or tampered snapshot`);
|
|
121
|
+
}
|
|
122
|
+
// Cross-check against the journal's highest seq: a snapshot that
|
|
123
|
+
// claims to be AHEAD of the journal but the journal *has*
|
|
124
|
+
// events for this pid is the classic attack vector — the
|
|
125
|
+
// attacker pumps the seq sky-high so all real events get
|
|
126
|
+
// skipped during replay. An empty journal is fine (legitimate
|
|
127
|
+
// when state-only snapshots survive a journal compaction or
|
|
128
|
+
// migration).
|
|
129
|
+
const journalHigh = await this._journal.highestSeq(this.persistenceId);
|
|
130
|
+
if (journalHigh > 0 && snapSeq > journalHigh) {
|
|
131
|
+
throw new Error(`[persistence] '${this.persistenceId}' snapshot claims sequenceNr=${snapSeq} ` +
|
|
132
|
+
`but journal's highest seq is ${journalHigh} — refusing to recover from a ` +
|
|
133
|
+
`corrupted or tampered snapshot (would silently skip event replay)`);
|
|
134
|
+
}
|
|
135
|
+
this._state = decodeState(snapshot.value.state, snapAdapter);
|
|
136
|
+
this._seq = snapSeq;
|
|
137
|
+
this.log.debug(`[persistence] '${this.persistenceId}' loaded snapshot @seq=${this._seq}`);
|
|
138
|
+
}
|
|
139
|
+
const events = await this._journal.read(this.persistenceId, this._seq + 1);
|
|
140
|
+
for (const ev of events) {
|
|
141
|
+
const decoded = decodeEvent(ev.event, evAdapter);
|
|
142
|
+
this._state = this.onEvent(this._state, decoded);
|
|
143
|
+
this._seq = ev.sequenceNr;
|
|
144
|
+
}
|
|
145
|
+
this.log.debug(`[persistence] '${this.persistenceId}' recovery complete: replayed ${events.length} event(s), seq=${this._seq}`);
|
|
146
|
+
this._recovering = false;
|
|
147
|
+
await this.onRecoveryComplete(this._state);
|
|
148
|
+
// Any commands that arrived during recovery are already stashed by the
|
|
149
|
+
// ActorCell — release them now so the actor processes them in order.
|
|
150
|
+
this.context.unstashAll();
|
|
151
|
+
}
|
|
152
|
+
async onReceive(message) {
|
|
153
|
+
if (this._recovering || this._persisting) {
|
|
154
|
+
this.context.stash();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
await this.onCommand(this._state, message);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Persist a single event. The callback runs once the event has been
|
|
161
|
+
* applied to the state — use it to reply to the sender. Further
|
|
162
|
+
* incoming commands are deferred until the callback returns.
|
|
163
|
+
*/
|
|
164
|
+
async persist(event, cb) {
|
|
165
|
+
await this.persistAll([event], cb);
|
|
166
|
+
}
|
|
167
|
+
/** Persist several events atomically. Must also be awaited in onCommand. */
|
|
168
|
+
async persistAll(events, cb) {
|
|
169
|
+
if (events.length === 0) {
|
|
170
|
+
await cb?.(this._state);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
this._persisting = true;
|
|
174
|
+
try {
|
|
175
|
+
// Collect tags from the first event — tags are per-event but a single
|
|
176
|
+
// persistAll keeps them grouped so they share the same tag set.
|
|
177
|
+
const tags = this.tagsFor(events[0]);
|
|
178
|
+
// If an event adapter is active, wrap each event into a `{_v,_t,_e}`
|
|
179
|
+
// envelope before handing it to the journal. Domain events stay in-
|
|
180
|
+
// memory unchanged so `onEvent` and `snapshotPolicy` see the original
|
|
181
|
+
// (current-version) shape.
|
|
182
|
+
const evAdapter = this.eventAdapter();
|
|
183
|
+
const wireEvents = evAdapter
|
|
184
|
+
? events.map((e) => encodeEvent(e, evAdapter))
|
|
185
|
+
: events;
|
|
186
|
+
const written = await this._journal.append(this.persistenceId, wireEvents, this._seq, tags);
|
|
187
|
+
this.log.debug(`[persistence] '${this.persistenceId}' persisted ${written.length} event(s) → seq=${written[written.length - 1]?.sequenceNr ?? this._seq}`);
|
|
188
|
+
const policy = this.snapshotPolicy();
|
|
189
|
+
let shouldSnapshot = false;
|
|
190
|
+
for (let i = 0; i < written.length; i++) {
|
|
191
|
+
const pe = written[i];
|
|
192
|
+
const domainEvent = events[i]; // pre-envelope domain shape
|
|
193
|
+
this._state = this.onEvent(this._state, domainEvent);
|
|
194
|
+
this._seq = pe.sequenceNr;
|
|
195
|
+
if (policy(pe.sequenceNr, this._state, domainEvent))
|
|
196
|
+
shouldSnapshot = true;
|
|
197
|
+
}
|
|
198
|
+
if (shouldSnapshot)
|
|
199
|
+
await this.saveSnapshotNow();
|
|
200
|
+
await cb?.(this._state);
|
|
201
|
+
// Drain any callbacks queued while we were busy (nested persists).
|
|
202
|
+
while (this._pendingCallbacks.length > 0) {
|
|
203
|
+
const next = this._pendingCallbacks.shift();
|
|
204
|
+
await next(this._state);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
this._persisting = false;
|
|
209
|
+
// Replay messages stashed during the persist.
|
|
210
|
+
this.context.unstashAll();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/** Force a snapshot of the current state. */
|
|
214
|
+
async saveSnapshot() {
|
|
215
|
+
return this.saveSnapshotNow();
|
|
216
|
+
}
|
|
217
|
+
async saveSnapshotNow() {
|
|
218
|
+
const snapAdapter = this.snapshotAdapter();
|
|
219
|
+
const wire = snapAdapter ? encodeState(this._state, snapAdapter) : this._state;
|
|
220
|
+
// The store is generic over <State>; when we wrap, we store an envelope
|
|
221
|
+
// and the cast simply re-exposes the typed state to the caller.
|
|
222
|
+
return this._snapshotStore.save(this.persistenceId, this._seq, wire, this.persistenceOptions());
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Build the per-call `PersistenceOptions` from the actor's hooks.
|
|
226
|
+
* Returns `undefined` when neither hook is set so the store defaults
|
|
227
|
+
* (plugin resolver / config) take effect with zero overhead.
|
|
228
|
+
*/
|
|
229
|
+
persistenceOptions() {
|
|
230
|
+
const compression = this.compression();
|
|
231
|
+
const encryption = this.encryption();
|
|
232
|
+
if (!compression && !encryption)
|
|
233
|
+
return undefined;
|
|
234
|
+
return { compression, encryption };
|
|
235
|
+
}
|
|
236
|
+
/** Delete snapshots and events up to `toSeq` for compaction. */
|
|
237
|
+
async deleteHistory(toSeq) {
|
|
238
|
+
await this._snapshotStore.delete(this.persistenceId, toSeq);
|
|
239
|
+
await this._journal.delete(this.persistenceId, toSeq);
|
|
240
|
+
}
|
|
241
|
+
/** Read back the persisted events — handy for tests. */
|
|
242
|
+
async readEvents(fromSeq = 1, toSeq) {
|
|
243
|
+
return this._journal.read(this.persistenceId, fromSeq, toSeq);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=PersistentActor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersistentActor.js","sourceRoot":"","sources":["../../src/persistence/PersistentActor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAQnE,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAYjC,4CAA4C;AAC5C,MAAM,UAAU,YAAY,CAAe,CAAS;IAClD,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAgB,eAAmC,SAAQ,KAAU;IAYzE,oEAAoE;IACpE,kBAAkB,CAAC,MAAa,IAAyB,CAAC;IAE1D,+EAA+E;IAC/E,iBAAiB,CAAC,MAAa,IAAU,MAAM,MAAM,CAAC,CAAC,CAAC;IAExD,mEAAmE;IACnE,cAAc,KAAmC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtE,+EAA+E;IAC/E,OAAO,CAAC,MAAa,IAAuC,OAAO,SAAS,CAAC,CAAC,CAAC;IAE/E;;;;;;;OAOG;IACH,YAAY,KAAsC,OAAO,SAAS,CAAC,CAAC,CAAC;IAErE;;;;;OAKG;IACH,eAAe,KAAyC,OAAO,SAAS,CAAC,CAAC,CAAC;IAE3E;;;;;OAKG;IACH,WAAW,KAAoC,OAAO,SAAS,CAAC,CAAC,CAAC;IAElE;;;;;OAKG;IACH,UAAU,KAAmC,OAAO,SAAS,CAAC,CAAC,CAAC;IAEhE,+EAA+E;IAEvE,MAAM,CAAS;IACf,IAAI,GAAG,CAAC,CAAC;IACT,QAAQ,CAAW;IACnB,cAAc,CAAiB;IAC/B,WAAW,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IAChE,WAAW,GAAG,KAAK,CAAC;IACpB,iBAAiB,GAAkD,EAAE,CAAC;IAE9E,oDAAoD;IACpD,IAAc,KAAK,KAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpD,oDAAoD;IACpD,IAAc,cAAc,KAAa,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,uDAAuD;IACvD,IAAc,UAAU,KAAc,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAEhE,+EAA+E;IAEtE,KAAK,CAAC,QAAQ;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,iBAAiB,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,aAAa,qBAAqB,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAU,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAChG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;YAC1C,8DAA8D;YAC9D,4DAA4D;YAC5D,+DAA+D;YAC/D,4DAA4D;YAC5D,yDAAyD;YACzD,qDAAqD;YACrD,6CAA6C;YAC7C,iDAAiD;YACjD,4DAA4D;YAC5D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,aAAa,uCAAuC,OAAO,GAAG;oBACrF,6DAA6D,CAC9D,CAAC;YACJ,CAAC;YACD,iEAAiE;YACjE,0DAA0D;YAC1D,yDAAyD;YACzD,yDAAyD;YACzD,+DAA+D;YAC/D,4DAA4D;YAC5D,cAAc;YACd,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvE,IAAI,WAAW,GAAG,CAAC,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,aAAa,gCAAgC,OAAO,GAAG;oBAC9E,gCAAgC,WAAW,gCAAgC;oBAC3E,mEAAmE,CACpE,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAQ,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,aAAa,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAU,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACpF,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,WAAW,CAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,kBAAkB,IAAI,CAAC,aAAa,iCAAiC,MAAM,CAAC,MAAM,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAChH,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,uEAAuE;QACvE,qEAAqE;QACrE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAEQ,KAAK,CAAC,SAAS,CAAC,OAAY;QACnC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,OAAO,CACrB,KAAY,EACZ,EAA2C;QAE3C,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,6EAA6E;IACnE,KAAK,CAAC,UAAU,CACxB,MAA4B,EAC5B,EAA2C;QAE3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,sEAAsE;YACtE,gEAAgE;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;YACtC,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,UAAU,GAA2B,SAAS;gBAClD,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC9C,CAAC,CAAC,MAAM,CAAC;YACX,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAChD,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,kBAAkB,IAAI,CAAC,aAAa,eAAe,OAAO,CAAC,MAAM,mBAAmB,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAC3I,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,CAAE,4BAA4B;gBAC7D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACrD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC;gBAC1B,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;oBAAE,cAAc,GAAG,IAAI,CAAC;YAC7E,CAAC;YACD,IAAI,cAAc;gBAAE,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,mEAAmE;YACnE,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAG,CAAC;gBAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,8CAA8C;YAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,6CAA6C;IACnC,KAAK,CAAC,YAAY;QAC1B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/E,wEAAwE;QACxE,gEAAgE;QAChE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,IAAwB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CACnF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,kBAAkB;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,gEAAgE;IACtD,KAAK,CAAC,aAAa,CAAC,KAAa;QACzC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,wDAAwD;IAC9C,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,EAAE,KAAc;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAQ,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;CACF"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { Actor } from '../Actor.js';
|
|
2
|
+
import type { Cluster } from '../cluster/Cluster.js';
|
|
3
|
+
import type { Lease } from '../coordination/Lease.js';
|
|
4
|
+
import { type SubscribeAck } from '../cluster/pubsub/Messages.js';
|
|
5
|
+
import type { ReplicaId } from '../crdt/Crdt.js';
|
|
6
|
+
import type { SnapshotPolicy } from './PersistentActor.js';
|
|
7
|
+
import { type ConflictResolver } from './replicated/ConflictResolver.js';
|
|
8
|
+
import { VectorClock, type VectorClockData } from './replicated/VectorClock.js';
|
|
9
|
+
/**
|
|
10
|
+
* Replicated Event Sourcing — multiple nodes can write events for the
|
|
11
|
+
* **same** persistenceId concurrently; vector clocks let every replica
|
|
12
|
+
* recognise the divergent histories and a {@link ConflictResolver}
|
|
13
|
+
* (default: last-writer-wins) decides how to merge them.
|
|
14
|
+
*
|
|
15
|
+
* **Mental model.** The canonical history at each replica is the
|
|
16
|
+
* union of every event ever persisted by any replica, sorted in a
|
|
17
|
+
* deterministic order (by default: `(timestamp, replicaId,
|
|
18
|
+
* sequenceAtReplica)` via `LastWriterWinsResolver`). State is the
|
|
19
|
+
* fold of `onEvent` over that ordered history. Two replicas that
|
|
20
|
+
* have received the same set of events compute the same state — that
|
|
21
|
+
* is the convergence guarantee.
|
|
22
|
+
*
|
|
23
|
+
* **Cross-replica delivery** rides on `DistributedPubSub` — each
|
|
24
|
+
* replica subscribes to a topic derived from its `persistenceId` and
|
|
25
|
+
* publishes its own persisted events to that same topic. PubSub
|
|
26
|
+
* already gives at-least-once gossip-replicated fan-out; the actor
|
|
27
|
+
* dedupes by `(replica, sequenceAtReplica)`, so re-delivery is
|
|
28
|
+
* harmless.
|
|
29
|
+
*
|
|
30
|
+
* **Local journal**: each replica still appends every event it
|
|
31
|
+
* **observes** to its local journal (its own + every remote it
|
|
32
|
+
* receives). This means on recovery, replaying the local journal
|
|
33
|
+
* is sufficient to rebuild state — no cross-replica chatter at
|
|
34
|
+
* startup. Storage cost: events live N times across N replicas;
|
|
35
|
+
* fine for the small-write/many-read workloads where Replicated ES
|
|
36
|
+
* shines.
|
|
37
|
+
*
|
|
38
|
+
* class ReplicatedCounter extends ReplicatedEventSourcedActor<
|
|
39
|
+
* Cmd, Event, { value: number }
|
|
40
|
+
* > {
|
|
41
|
+
* readonly persistenceId = 'counter-1';
|
|
42
|
+
* readonly replicaId: string;
|
|
43
|
+
* constructor(cluster: Cluster) {
|
|
44
|
+
* super(cluster);
|
|
45
|
+
* this.replicaId = cluster.selfAddress.toString();
|
|
46
|
+
* }
|
|
47
|
+
* initialState() { return { value: 0 }; }
|
|
48
|
+
* onEvent(s, e) { return { value: s.value + e.amount }; }
|
|
49
|
+
* onCommand(s, c) { this.persist({ amount: c.delta }); }
|
|
50
|
+
* }
|
|
51
|
+
*
|
|
52
|
+
* **Out of scope (for v1):**
|
|
53
|
+
* - Cross-DC replication (PubSub gossip is intra-cluster only).
|
|
54
|
+
* - Vector-clock garbage collection. VC entries grow with replicas
|
|
55
|
+
* ever seen — fine for a stable cluster, but a node-churn-heavy
|
|
56
|
+
* deployment will eventually want compaction.
|
|
57
|
+
* - Snapshotting (the local journal is replayed in full on every
|
|
58
|
+
* restart).
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* Wire envelope for a single replicated event. Persisted to the
|
|
62
|
+
* journal and broadcast over PubSub. `seqAtReplica` is monotonic
|
|
63
|
+
* within a replica — the (replica, seqAtReplica) pair uniquely
|
|
64
|
+
* identifies an event across the whole cluster, which is what we
|
|
65
|
+
* dedupe on.
|
|
66
|
+
*/
|
|
67
|
+
export interface ReplicatedEventEnvelope<E> {
|
|
68
|
+
readonly persistenceId: string;
|
|
69
|
+
readonly replica: ReplicaId;
|
|
70
|
+
readonly seqAtReplica: number;
|
|
71
|
+
readonly vc: VectorClockData;
|
|
72
|
+
readonly timestamp: number;
|
|
73
|
+
readonly event: E;
|
|
74
|
+
}
|
|
75
|
+
export declare abstract class ReplicatedEventSourcedActor<Cmd, Event, State> extends Actor<Cmd | ReplicatedEventEnvelope<Event>> {
|
|
76
|
+
readonly cluster: Cluster;
|
|
77
|
+
abstract readonly persistenceId: string;
|
|
78
|
+
/** Stable id for this replica. Default: cluster.selfAddress.toString(). */
|
|
79
|
+
abstract readonly replicaId: ReplicaId;
|
|
80
|
+
abstract initialState(): State;
|
|
81
|
+
abstract onEvent(state: State, event: Event): State;
|
|
82
|
+
abstract onCommand(state: State, cmd: Cmd): void | Promise<void>;
|
|
83
|
+
/** Resolver consulted only as the deterministic order comparator. */
|
|
84
|
+
protected resolver(): ConflictResolver<Event>;
|
|
85
|
+
/**
|
|
86
|
+
* How often the underlying DistributedPubSub mediator gossips its
|
|
87
|
+
* subscription set. Default 250 ms — tight enough that fresh
|
|
88
|
+
* actors reach a steady-state cross-replica delivery within a
|
|
89
|
+
* second, slow enough not to flood small clusters. Override in
|
|
90
|
+
* tests for snappier convergence.
|
|
91
|
+
*/
|
|
92
|
+
protected pubsubGossipIntervalMs(): number;
|
|
93
|
+
/**
|
|
94
|
+
* Snapshot policy — return true after applying an event to take a
|
|
95
|
+
* snapshot of current state. Default: never snapshot, full journal
|
|
96
|
+
* is replayed on every restart.
|
|
97
|
+
*
|
|
98
|
+
* The `seqNr` argument is the running TOTAL count of events the
|
|
99
|
+
* actor has observed (own + remote), not just locally-issued ones —
|
|
100
|
+
* "snapshot every 100 events from any source" is the natural unit.
|
|
101
|
+
* Re-uses the shared `SnapshotPolicy` helper from `PersistentActor`,
|
|
102
|
+
* so `everyNEvents(N)` works the same way it does for classic
|
|
103
|
+
* event-sourced actors.
|
|
104
|
+
*/
|
|
105
|
+
protected snapshotPolicy(): SnapshotPolicy<State, Event>;
|
|
106
|
+
/** Recovery hook — called after the local journal has been replayed. */
|
|
107
|
+
onRecoveryComplete(_state: State): void | Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Optional lease (#89) — when this returns a non-null `Lease`, the
|
|
110
|
+
* actor goes into single-writer mode: only the lease holder may
|
|
111
|
+
* `persist`, observers passively apply replicated events from
|
|
112
|
+
* peers. Default `null` = multi-master semantics (every replica
|
|
113
|
+
* can persist; vector clocks reconcile concurrent writes).
|
|
114
|
+
*
|
|
115
|
+
* Use cases the multi-master default doesn't fit:
|
|
116
|
+
*
|
|
117
|
+
* - **Non-replayable side effects** — charging a credit card,
|
|
118
|
+
* emitting an external webhook, sending an email. The
|
|
119
|
+
* framework can't dedupe these for you; restricting writes to
|
|
120
|
+
* a single replica ensures the side effect fires once.
|
|
121
|
+
* - **Heartbeat / external-rate actors** — N replicas pushing
|
|
122
|
+
* beats to a downstream multiplies the rate; the lease binds
|
|
123
|
+
* the active emitter to one replica at a time.
|
|
124
|
+
*
|
|
125
|
+
* Mechanics: `preStart` calls `lease.acquire()`. On success the
|
|
126
|
+
* actor is a holder and persist works normally; on failure it's an
|
|
127
|
+
* observer (every `persist` call throws). Lease loss flips the
|
|
128
|
+
* actor to observer mode and invokes {@link onLeaseLost}; recovery
|
|
129
|
+
* is restart-driven for this v1.
|
|
130
|
+
*/
|
|
131
|
+
protected lease(): Lease | null;
|
|
132
|
+
/**
|
|
133
|
+
* Hook invoked when this replica unexpectedly loses its lease
|
|
134
|
+
* (TTL expired, another holder took over, backend failure). The
|
|
135
|
+
* actor is already in observer mode by the time this fires — use
|
|
136
|
+
* the hook to stop downstream side-effect processing, page an
|
|
137
|
+
* operator, etc. Default is a no-op.
|
|
138
|
+
*/
|
|
139
|
+
protected onLeaseLost(_reason: string): void | Promise<void>;
|
|
140
|
+
private _state;
|
|
141
|
+
private _vc;
|
|
142
|
+
/** Strict order: every observed event, deduped, sorted via resolver. */
|
|
143
|
+
private _events;
|
|
144
|
+
private _seenIds;
|
|
145
|
+
private _journal;
|
|
146
|
+
private _snapshotStore;
|
|
147
|
+
private _mediator;
|
|
148
|
+
private _localSeq;
|
|
149
|
+
/** Journal seq up to which we've absorbed events. Updated on each
|
|
150
|
+
* successful `_appendOne`; persisted as part of the snapshot so
|
|
151
|
+
* recovery only re-reads the post-snapshot delta. */
|
|
152
|
+
private _journalSeq;
|
|
153
|
+
/** Total observed events count — snapshot policy operates on this. */
|
|
154
|
+
private _observedCount;
|
|
155
|
+
/** Guard so concurrent absorbs don't issue overlapping snapshot saves. */
|
|
156
|
+
private _snapshotInFlight;
|
|
157
|
+
/** Optional lease this actor holds (or attempted to hold). See `lease()`. */
|
|
158
|
+
private _lease;
|
|
159
|
+
/**
|
|
160
|
+
* `true` when this replica may issue new `persist` calls. Without a
|
|
161
|
+
* lease configured the default is `true` (multi-master); with a
|
|
162
|
+
* lease, this flips based on `acquire` outcome and `onLost` events.
|
|
163
|
+
*/
|
|
164
|
+
private _isLeaseHolder;
|
|
165
|
+
private _leaseUnsubLost;
|
|
166
|
+
constructor(cluster: Cluster);
|
|
167
|
+
/** Current state — updated after every event apply. */
|
|
168
|
+
protected get state(): State;
|
|
169
|
+
/**
|
|
170
|
+
* Whether this replica currently holds the configured lease (#89).
|
|
171
|
+
* Always `true` when no lease is configured (multi-master mode);
|
|
172
|
+
* dynamic when a lease IS configured — flips to `false` on
|
|
173
|
+
* `acquire` failure or `onLost` notification. Use to gate
|
|
174
|
+
* side-effect logic in `onCommand`.
|
|
175
|
+
*/
|
|
176
|
+
protected get isLeaseHolder(): boolean;
|
|
177
|
+
preStart(): Promise<void>;
|
|
178
|
+
postStop(): void;
|
|
179
|
+
onReceive(msg: Cmd | ReplicatedEventEnvelope<Event> | SubscribeAck): Promise<void>;
|
|
180
|
+
/**
|
|
181
|
+
* Persist a fresh local event. Increments this replica's VC
|
|
182
|
+
* component, appends to the journal tagged `replicated-es`, applies
|
|
183
|
+
* to local state, and broadcasts to peer replicas.
|
|
184
|
+
*
|
|
185
|
+
* When a lease is configured (#89) and this replica is NOT the
|
|
186
|
+
* holder, throws — the actor is in observer mode and writes must
|
|
187
|
+
* route to the holder. Users that don't want the throw can gate
|
|
188
|
+
* on `isLeaseHolder` before calling `persist`.
|
|
189
|
+
*/
|
|
190
|
+
protected persist(event: Event, cb?: (state: State) => void): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* Append exactly one envelope to the local journal. We read the
|
|
193
|
+
* current highestSeq inside the same actor mailbox tick so the
|
|
194
|
+
* `expectedSeq` argument is always accurate — the actor is the
|
|
195
|
+
* single writer to its own persistenceId, so no other coroutine
|
|
196
|
+
* can interleave between the read and the append.
|
|
197
|
+
*
|
|
198
|
+
* Updates `_journalSeq` so the next snapshot records the
|
|
199
|
+
* just-appended journal position.
|
|
200
|
+
*/
|
|
201
|
+
private _appendOne;
|
|
202
|
+
private _handleRemote;
|
|
203
|
+
/**
|
|
204
|
+
* Insert an envelope into the canonical event list, dedupe by
|
|
205
|
+
* (replica, seqAtReplica), refold state from the divergence point.
|
|
206
|
+
*
|
|
207
|
+
* `persistLocally` controls whether we also append the event to
|
|
208
|
+
* our local journal (true for events received from peers; false
|
|
209
|
+
* for replays + own broadcasts since those are already on disk).
|
|
210
|
+
*
|
|
211
|
+
* `broadcast` controls whether we publish the event to PubSub
|
|
212
|
+
* (true only for fresh local persists).
|
|
213
|
+
*/
|
|
214
|
+
private _absorb;
|
|
215
|
+
/**
|
|
216
|
+
* Force a snapshot of the current state. Useful for tests + manual
|
|
217
|
+
* compaction. Returns the saved snapshot or `null` if a save was
|
|
218
|
+
* already in flight.
|
|
219
|
+
*/
|
|
220
|
+
protected saveSnapshot(): Promise<void>;
|
|
221
|
+
/**
|
|
222
|
+
* Triggered by the policy check in `_absorb`. Fire-and-forget so
|
|
223
|
+
* the actor's mailbox doesn't block on disk I/O; the in-flight
|
|
224
|
+
* guard prevents overlapping saves. Recovery is correct even if a
|
|
225
|
+
* mid-save crash drops the snapshot — we just fall back to the
|
|
226
|
+
* previous snapshot or full replay.
|
|
227
|
+
*/
|
|
228
|
+
private _maybeSaveSnapshot;
|
|
229
|
+
private _saveSnapshotNow;
|
|
230
|
+
private _findInsertIndex;
|
|
231
|
+
private _compare;
|
|
232
|
+
private _isEnvelope;
|
|
233
|
+
}
|
|
234
|
+
export { LastWriterWinsResolver, CustomMergeResolver } from './replicated/ConflictResolver.js';
|
|
235
|
+
export type { ConflictResolver, ConflictCandidate } from './replicated/ConflictResolver.js';
|
|
236
|
+
export { VectorClock };
|
|
237
|
+
export type { VectorClockData };
|
|
238
|
+
//# sourceMappingURL=ReplicatedEventSourcedActor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplicatedEventSourcedActor.d.ts","sourceRoot":"","sources":["../../src/persistence/ReplicatedEventSourcedActor.ts"],"names":[],"mappings":"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"}
|