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,316 @@
|
|
|
1
|
+
import type { Config } from '../../config/Config.js';
|
|
2
|
+
import type { ActorRef } from '../../ActorRef.js';
|
|
3
|
+
import { BrokerActor, type OutboundEnvelope } from './BrokerActor.js';
|
|
4
|
+
import type { BrokerCommonSettings } from './BrokerSettings.js';
|
|
5
|
+
/** Inbound Kafka record delivered to subscribers. */
|
|
6
|
+
export interface KafkaRecord {
|
|
7
|
+
readonly topic: string;
|
|
8
|
+
readonly partition: number;
|
|
9
|
+
readonly offset: string;
|
|
10
|
+
readonly key: Uint8Array | null;
|
|
11
|
+
readonly value: Uint8Array | null;
|
|
12
|
+
readonly timestamp: string;
|
|
13
|
+
readonly headers: Readonly<Record<string, Uint8Array | string | null>>;
|
|
14
|
+
}
|
|
15
|
+
/** Outbound Kafka publish envelope. `key` / `partition` optional. */
|
|
16
|
+
export interface KafkaPublish {
|
|
17
|
+
readonly topic: string;
|
|
18
|
+
readonly value: Uint8Array | string;
|
|
19
|
+
readonly key?: Uint8Array | string;
|
|
20
|
+
readonly partition?: number;
|
|
21
|
+
readonly headers?: Readonly<Record<string, string | Uint8Array>>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Offset-commit policy (#2):
|
|
25
|
+
*
|
|
26
|
+
* - `'auto'` — kafkajs commits after the message handler returns
|
|
27
|
+
* successfully (the default). At-least-once delivery: the actor
|
|
28
|
+
* might re-deliver a message if it crashes between handler and
|
|
29
|
+
* commit, so handlers must be idempotent.
|
|
30
|
+
* - `'manual'` — the consumer pump pauses on each message and
|
|
31
|
+
* waits for an explicit `{ kind: 'commit', topic, partition,
|
|
32
|
+
* offset }` command before resolving the kafkajs promise and
|
|
33
|
+
* advancing the partition. Combined with idempotent producing,
|
|
34
|
+
* this gives "exactly-once-with-processing" semantics.
|
|
35
|
+
*/
|
|
36
|
+
export type KafkaCommitMode = 'auto' | 'manual';
|
|
37
|
+
export interface KafkaActorSettings extends BrokerCommonSettings {
|
|
38
|
+
/** Bootstrap servers (`'kafka-1:9092,kafka-2:9092'` or array). */
|
|
39
|
+
readonly brokers?: ReadonlyArray<string> | string;
|
|
40
|
+
/** Stable client id reported to the broker. */
|
|
41
|
+
readonly clientId?: string;
|
|
42
|
+
/** Optional SASL credentials. */
|
|
43
|
+
readonly sasl?: {
|
|
44
|
+
readonly mechanism: 'plain' | 'scram-sha-256' | 'scram-sha-512';
|
|
45
|
+
readonly username: string;
|
|
46
|
+
readonly password: string;
|
|
47
|
+
};
|
|
48
|
+
/** Enable TLS. */
|
|
49
|
+
readonly ssl?: boolean;
|
|
50
|
+
/** Producer settings. */
|
|
51
|
+
readonly producer?: {
|
|
52
|
+
readonly idempotent?: boolean;
|
|
53
|
+
readonly allowAutoTopicCreation?: boolean;
|
|
54
|
+
};
|
|
55
|
+
/** Consumer settings. `groupId` is required to start a consumer. */
|
|
56
|
+
readonly consumer?: {
|
|
57
|
+
readonly groupId?: string;
|
|
58
|
+
readonly fromBeginning?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Offset-commit policy. Default `'auto'` — kafkajs auto-commits
|
|
61
|
+
* after the handler returns (at-least-once). See
|
|
62
|
+
* {@link KafkaCommitMode} for the `'manual'` (exactly-once-with-
|
|
63
|
+
* processing) shape.
|
|
64
|
+
*/
|
|
65
|
+
readonly commitMode?: KafkaCommitMode;
|
|
66
|
+
/**
|
|
67
|
+
* Max time in ms the manual-commit pump waits for an external
|
|
68
|
+
* `commit` / `nack` before giving up on a message and letting
|
|
69
|
+
* kafkajs reject it (which triggers a rebalance and re-delivery).
|
|
70
|
+
* Only used when `commitMode === 'manual'`. Default 30s.
|
|
71
|
+
*/
|
|
72
|
+
readonly commitTimeoutMs?: number;
|
|
73
|
+
};
|
|
74
|
+
/** Subscriber that receives every consumed record. */
|
|
75
|
+
readonly target?: ActorRef<KafkaRecord>;
|
|
76
|
+
/** Topics the consumer subscribes to at connect time. */
|
|
77
|
+
readonly topics?: ReadonlyArray<string>;
|
|
78
|
+
}
|
|
79
|
+
export type KafkaCmd = {
|
|
80
|
+
readonly kind: 'publish';
|
|
81
|
+
readonly publish: KafkaPublish;
|
|
82
|
+
} | {
|
|
83
|
+
readonly kind: 'subscribe';
|
|
84
|
+
readonly topic: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Commit the offset for a message that was delivered in
|
|
88
|
+
* `commitMode: 'manual'` mode. The pump's `eachMessage` promise
|
|
89
|
+
* resolves; kafkajs commits `offset + 1` and reads the next message
|
|
90
|
+
* on this partition. Sending `commit` outside manual-commit mode
|
|
91
|
+
* is silently ignored.
|
|
92
|
+
*/
|
|
93
|
+
| {
|
|
94
|
+
readonly kind: 'commit';
|
|
95
|
+
readonly topic: string;
|
|
96
|
+
readonly partition: number;
|
|
97
|
+
readonly offset: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Negative-acknowledge a manual-commit message — the offset is
|
|
101
|
+
* **not** committed and the eachMessage promise rejects, so
|
|
102
|
+
* kafkajs treats the partition as having failed: on rebalance /
|
|
103
|
+
* restart the same offset will be re-delivered. The optional
|
|
104
|
+
* `reason` shows up in the actor's warn log.
|
|
105
|
+
*/
|
|
106
|
+
| {
|
|
107
|
+
readonly kind: 'nack';
|
|
108
|
+
readonly topic: string;
|
|
109
|
+
readonly partition: number;
|
|
110
|
+
readonly offset: string;
|
|
111
|
+
readonly reason?: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Bump the consumer's session-deadline mid-processing (#78).
|
|
115
|
+
* `commitMode: 'manual'` pauses the eachMessage pump until the
|
|
116
|
+
* handler ack's; if the handler runs longer than the consumer's
|
|
117
|
+
* `sessionTimeoutMs` (kafkajs default 30 s) the broker evicts the
|
|
118
|
+
* member, the partition rebalances, and the message is
|
|
119
|
+
* re-delivered after the rebalance settles.
|
|
120
|
+
*
|
|
121
|
+
* `heartbeat` invokes the captured kafkajs `heartbeat()` callback
|
|
122
|
+
* for the still-pending record, which restarts the session clock
|
|
123
|
+
* without touching the offset. Send it periodically from any
|
|
124
|
+
* handler that's likely to exceed `sessionTimeoutMs / 3`; the
|
|
125
|
+
* `withAutoHeartbeat()` helper schedules it for you. Heartbeats
|
|
126
|
+
* for an unknown / already-committed record are a silent no-op.
|
|
127
|
+
*/
|
|
128
|
+
| {
|
|
129
|
+
readonly kind: 'heartbeat';
|
|
130
|
+
readonly topic: string;
|
|
131
|
+
readonly partition: number;
|
|
132
|
+
readonly offset: string;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Kafka producer + consumer in one actor, backed by `kafkajs`. When
|
|
136
|
+
* `consumer.groupId` is set, a consumer is started after `connectImpl`
|
|
137
|
+
* and consumed records are delivered to `target`. When a producer is
|
|
138
|
+
* the only goal, leave `consumer` and `topics` empty.
|
|
139
|
+
*
|
|
140
|
+
* **Offset-commit semantics.**
|
|
141
|
+
*
|
|
142
|
+
* - `commitMode: 'auto'` (default) — kafkajs commits after each
|
|
143
|
+
* handler returns successfully → **at-least-once**. Cheap; OK
|
|
144
|
+
* for idempotent handlers.
|
|
145
|
+
* - `commitMode: 'manual'` — pump pauses on each message and waits
|
|
146
|
+
* for an explicit `commit` command from the handler (#2). The
|
|
147
|
+
* handler is responsible for sending exactly one `commit` (or
|
|
148
|
+
* `nack`) per delivered record. If neither arrives within
|
|
149
|
+
* `commitTimeoutMs` the pump rejects internally, kafkajs treats
|
|
150
|
+
* the partition as failed, and re-delivery happens on rebalance.
|
|
151
|
+
* Produces **exactly-once-with-processing**: a message that
|
|
152
|
+
* successfully passed through `commit` is committed; a crash or
|
|
153
|
+
* `nack` re-delivers.
|
|
154
|
+
*
|
|
155
|
+
* const kafka = system.spawnAnonymous(Props.create(() => new KafkaActor({
|
|
156
|
+
* brokers: ['kafka:9092'],
|
|
157
|
+
* consumer: { groupId: 'orders', commitMode: 'manual' },
|
|
158
|
+
* topics: ['orders'],
|
|
159
|
+
* target: orderProcessor,
|
|
160
|
+
* })));
|
|
161
|
+
*
|
|
162
|
+
* class OrderProcessor extends Actor<KafkaRecord> {
|
|
163
|
+
* constructor(private readonly kafka: ActorRef<KafkaCmd>) { super(); }
|
|
164
|
+
* async onReceive(rec: KafkaRecord) {
|
|
165
|
+
* try {
|
|
166
|
+
* await db.insertOrder(JSON.parse(rec.value!.toString()));
|
|
167
|
+
* this.kafka.tell({ kind: 'commit', topic: rec.topic,
|
|
168
|
+
* partition: rec.partition, offset: rec.offset });
|
|
169
|
+
* } catch (e) {
|
|
170
|
+
* this.kafka.tell({ kind: 'nack', topic: rec.topic,
|
|
171
|
+
* partition: rec.partition, offset: rec.offset });
|
|
172
|
+
* }
|
|
173
|
+
* }
|
|
174
|
+
* }
|
|
175
|
+
*/
|
|
176
|
+
export declare class KafkaActor extends BrokerActor<KafkaActorSettings, KafkaCmd, KafkaPublish> {
|
|
177
|
+
private kafka;
|
|
178
|
+
private producer;
|
|
179
|
+
private consumer;
|
|
180
|
+
/**
|
|
181
|
+
* Map of `<topic>|<partition>|<offset>` → in-flight commit promise
|
|
182
|
+
* resolver. Only populated in `commitMode: 'manual'`; entries are
|
|
183
|
+
* inserted by the eachMessage pump and removed by `commit` /
|
|
184
|
+
* `nack` / the timeout.
|
|
185
|
+
*/
|
|
186
|
+
private readonly pendingCommits;
|
|
187
|
+
constructor(settings?: Partial<KafkaActorSettings>);
|
|
188
|
+
protected configKey(): string;
|
|
189
|
+
protected builtInDefaults(): Partial<KafkaActorSettings>;
|
|
190
|
+
protected readSettingsFromConfig(c: Config): Partial<KafkaActorSettings>;
|
|
191
|
+
protected requiredSettings(): ReadonlyArray<keyof KafkaActorSettings>;
|
|
192
|
+
protected endpointLabel(): string;
|
|
193
|
+
/**
|
|
194
|
+
* Build a `KafkaInstanceLike` from the configured settings. Override
|
|
195
|
+
* in a subclass for tests that want to inject mock producers /
|
|
196
|
+
* consumers without going through the kafkajs peer dep — that's the
|
|
197
|
+
* test seam used by `tests/unit/io/broker/KafkaActor.test.ts`.
|
|
198
|
+
*/
|
|
199
|
+
protected createKafkaInstance(): Promise<KafkaInstanceLike>;
|
|
200
|
+
protected connectImpl(): Promise<void>;
|
|
201
|
+
protected disconnectImpl(): Promise<void>;
|
|
202
|
+
protected dispatchOutgoing(env: OutboundEnvelope<KafkaPublish>): Promise<void>;
|
|
203
|
+
onReceive(cmd: KafkaCmd): void;
|
|
204
|
+
private handleCommit;
|
|
205
|
+
/**
|
|
206
|
+
* Forward a `heartbeat` command to the captured kafkajs callback —
|
|
207
|
+
* keeps the record's session-deadline alive without affecting the
|
|
208
|
+
* offset. Unknown record (auto-mode, already-committed, expired)
|
|
209
|
+
* is a silent no-op so handlers can call this unconditionally
|
|
210
|
+
* without checking `commitMode` or whether the record's commit has
|
|
211
|
+
* already landed elsewhere.
|
|
212
|
+
*/
|
|
213
|
+
private handleHeartbeat;
|
|
214
|
+
private handleNack;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Minimal Kafka surface the actor depends on. Exported so test seams
|
|
218
|
+
* (subclasses overriding `createKafkaInstance`) can satisfy the same
|
|
219
|
+
* shape without pulling kafkajs.
|
|
220
|
+
*/
|
|
221
|
+
export interface KafkaInstanceLike {
|
|
222
|
+
producer(config?: {
|
|
223
|
+
idempotent?: boolean;
|
|
224
|
+
allowAutoTopicCreation?: boolean;
|
|
225
|
+
}): KafkaProducerLike;
|
|
226
|
+
consumer(config: {
|
|
227
|
+
groupId: string;
|
|
228
|
+
}): KafkaConsumerLike;
|
|
229
|
+
}
|
|
230
|
+
export interface KafkaProducerLike {
|
|
231
|
+
connect(): Promise<void>;
|
|
232
|
+
disconnect(): Promise<void>;
|
|
233
|
+
send(args: {
|
|
234
|
+
topic: string;
|
|
235
|
+
messages: Array<{
|
|
236
|
+
value: Uint8Array | null;
|
|
237
|
+
key?: Uint8Array | null;
|
|
238
|
+
partition?: number;
|
|
239
|
+
headers?: Record<string, string | Uint8Array>;
|
|
240
|
+
}>;
|
|
241
|
+
}): Promise<unknown>;
|
|
242
|
+
}
|
|
243
|
+
interface KafkaConsumedMessage {
|
|
244
|
+
topic: string;
|
|
245
|
+
partition: number;
|
|
246
|
+
message: {
|
|
247
|
+
offset: string;
|
|
248
|
+
key: Uint8Array | null;
|
|
249
|
+
value: Uint8Array | null;
|
|
250
|
+
timestamp: string;
|
|
251
|
+
headers?: Record<string, Uint8Array | string | null>;
|
|
252
|
+
};
|
|
253
|
+
/** kafkajs callback for explicit heartbeats during long handler runs. */
|
|
254
|
+
heartbeat?: () => Promise<void>;
|
|
255
|
+
}
|
|
256
|
+
export interface KafkaConsumerLike {
|
|
257
|
+
connect(): Promise<void>;
|
|
258
|
+
disconnect(): Promise<void>;
|
|
259
|
+
subscribe(args: {
|
|
260
|
+
topic: string;
|
|
261
|
+
fromBeginning?: boolean;
|
|
262
|
+
}): Promise<void>;
|
|
263
|
+
run(args: {
|
|
264
|
+
autoCommit?: boolean;
|
|
265
|
+
eachMessage: (m: KafkaConsumedMessage) => Promise<void>;
|
|
266
|
+
}): Promise<void>;
|
|
267
|
+
/**
|
|
268
|
+
* Manual offset commit (#2). Each entry's `offset` is the **next**
|
|
269
|
+
* message to consume — i.e., one past the message we just finished
|
|
270
|
+
* processing. Required for `commitMode: 'manual'`; older kafkajs
|
|
271
|
+
* releases that lack it surface a clear error at commit time.
|
|
272
|
+
*/
|
|
273
|
+
commitOffsets?(args: ReadonlyArray<{
|
|
274
|
+
topic: string;
|
|
275
|
+
partition: number;
|
|
276
|
+
offset: string;
|
|
277
|
+
}>): Promise<void>;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Reference to a Kafka record for use with {@link withAutoHeartbeat} —
|
|
281
|
+
* exactly the (topic, partition, offset) triple a `KafkaCmd.heartbeat`
|
|
282
|
+
* command needs. `KafkaRecord` itself satisfies this shape, so the
|
|
283
|
+
* `eachMessage` payload from the consumer pump can be passed directly.
|
|
284
|
+
*/
|
|
285
|
+
export interface KafkaRecordRef {
|
|
286
|
+
readonly topic: string;
|
|
287
|
+
readonly partition: number;
|
|
288
|
+
readonly offset: string;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Run `body` while periodically telling `kafka` to heartbeat the
|
|
292
|
+
* record. Cancels the timer on success or failure; the body's
|
|
293
|
+
* resolution / rejection is propagated. Use this when a manual-commit
|
|
294
|
+
* handler is likely to exceed the consumer's `sessionTimeoutMs / 3` —
|
|
295
|
+
* the rule of thumb being three heartbeats per session window so a
|
|
296
|
+
* single dropped tick doesn't trigger eviction.
|
|
297
|
+
*
|
|
298
|
+
* Default `everyMs` is 10 s, suitable for kafkajs's default 30 s
|
|
299
|
+
* `sessionTimeout`. If you tuned the consumer's session timeout up,
|
|
300
|
+
* scale `everyMs` to match.
|
|
301
|
+
*
|
|
302
|
+
* @example
|
|
303
|
+
* ```ts
|
|
304
|
+
* await withAutoHeartbeat({ kafka, record: rec, everyMs: 5_000 }, async () => {
|
|
305
|
+
* await reallySlowDatabaseWork(rec.value);
|
|
306
|
+
* });
|
|
307
|
+
* kafka.tell({ kind: 'commit', ...rec });
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
export declare function withAutoHeartbeat<T>(args: {
|
|
311
|
+
readonly kafka: ActorRef<KafkaCmd>;
|
|
312
|
+
readonly record: KafkaRecordRef;
|
|
313
|
+
readonly everyMs?: number;
|
|
314
|
+
}, body: () => Promise<T>): Promise<T>;
|
|
315
|
+
export {};
|
|
316
|
+
//# sourceMappingURL=KafkaActor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KafkaActor.d.ts","sourceRoot":"","sources":["../../../src/io/broker/KafkaActor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import { match } from 'ts-pattern';
|
|
2
|
+
import { ConfigKeys } from '../../config/ConfigKeys.js';
|
|
3
|
+
import { Lazy } from '../../util/Lazy.js';
|
|
4
|
+
import { lazyImportModule } from '../../util/LazyImport.js';
|
|
5
|
+
import { BrokerActor } from './BrokerActor.js';
|
|
6
|
+
/**
|
|
7
|
+
* Kafka producer + consumer in one actor, backed by `kafkajs`. When
|
|
8
|
+
* `consumer.groupId` is set, a consumer is started after `connectImpl`
|
|
9
|
+
* and consumed records are delivered to `target`. When a producer is
|
|
10
|
+
* the only goal, leave `consumer` and `topics` empty.
|
|
11
|
+
*
|
|
12
|
+
* **Offset-commit semantics.**
|
|
13
|
+
*
|
|
14
|
+
* - `commitMode: 'auto'` (default) — kafkajs commits after each
|
|
15
|
+
* handler returns successfully → **at-least-once**. Cheap; OK
|
|
16
|
+
* for idempotent handlers.
|
|
17
|
+
* - `commitMode: 'manual'` — pump pauses on each message and waits
|
|
18
|
+
* for an explicit `commit` command from the handler (#2). The
|
|
19
|
+
* handler is responsible for sending exactly one `commit` (or
|
|
20
|
+
* `nack`) per delivered record. If neither arrives within
|
|
21
|
+
* `commitTimeoutMs` the pump rejects internally, kafkajs treats
|
|
22
|
+
* the partition as failed, and re-delivery happens on rebalance.
|
|
23
|
+
* Produces **exactly-once-with-processing**: a message that
|
|
24
|
+
* successfully passed through `commit` is committed; a crash or
|
|
25
|
+
* `nack` re-delivers.
|
|
26
|
+
*
|
|
27
|
+
* const kafka = system.spawnAnonymous(Props.create(() => new KafkaActor({
|
|
28
|
+
* brokers: ['kafka:9092'],
|
|
29
|
+
* consumer: { groupId: 'orders', commitMode: 'manual' },
|
|
30
|
+
* topics: ['orders'],
|
|
31
|
+
* target: orderProcessor,
|
|
32
|
+
* })));
|
|
33
|
+
*
|
|
34
|
+
* class OrderProcessor extends Actor<KafkaRecord> {
|
|
35
|
+
* constructor(private readonly kafka: ActorRef<KafkaCmd>) { super(); }
|
|
36
|
+
* async onReceive(rec: KafkaRecord) {
|
|
37
|
+
* try {
|
|
38
|
+
* await db.insertOrder(JSON.parse(rec.value!.toString()));
|
|
39
|
+
* this.kafka.tell({ kind: 'commit', topic: rec.topic,
|
|
40
|
+
* partition: rec.partition, offset: rec.offset });
|
|
41
|
+
* } catch (e) {
|
|
42
|
+
* this.kafka.tell({ kind: 'nack', topic: rec.topic,
|
|
43
|
+
* partition: rec.partition, offset: rec.offset });
|
|
44
|
+
* }
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
*/
|
|
48
|
+
export class KafkaActor extends BrokerActor {
|
|
49
|
+
kafka = null;
|
|
50
|
+
producer = null;
|
|
51
|
+
consumer = null;
|
|
52
|
+
/**
|
|
53
|
+
* Map of `<topic>|<partition>|<offset>` → in-flight commit promise
|
|
54
|
+
* resolver. Only populated in `commitMode: 'manual'`; entries are
|
|
55
|
+
* inserted by the eachMessage pump and removed by `commit` /
|
|
56
|
+
* `nack` / the timeout.
|
|
57
|
+
*/
|
|
58
|
+
pendingCommits = new Map();
|
|
59
|
+
constructor(settings = {}) { super(settings); }
|
|
60
|
+
configKey() { return ConfigKeys.io.broker.kafka; }
|
|
61
|
+
builtInDefaults() {
|
|
62
|
+
return { ssl: false, producer: { idempotent: false, allowAutoTopicCreation: false } };
|
|
63
|
+
}
|
|
64
|
+
readSettingsFromConfig(c) {
|
|
65
|
+
const out = {};
|
|
66
|
+
if (c.hasPath('brokers'))
|
|
67
|
+
out.brokers = c.getStringList('brokers');
|
|
68
|
+
if (c.hasPath('clientId'))
|
|
69
|
+
out.clientId = c.getString('clientId');
|
|
70
|
+
if (c.hasPath('ssl'))
|
|
71
|
+
out.ssl = c.getBoolean('ssl');
|
|
72
|
+
if (c.hasPath('sasl')) {
|
|
73
|
+
const s = c.getConfig('sasl');
|
|
74
|
+
out.sasl = {
|
|
75
|
+
mechanism: s.getString('mechanism'),
|
|
76
|
+
username: s.getString('username'),
|
|
77
|
+
password: s.getString('password'),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (c.hasPath('consumer')) {
|
|
81
|
+
const cc = c.getConfig('consumer');
|
|
82
|
+
out.consumer = {
|
|
83
|
+
groupId: cc.hasPath('groupId') ? cc.getString('groupId') : undefined,
|
|
84
|
+
fromBeginning: cc.hasPath('fromBeginning') ? cc.getBoolean('fromBeginning') : undefined,
|
|
85
|
+
commitMode: cc.hasPath('commitMode')
|
|
86
|
+
? cc.getString('commitMode')
|
|
87
|
+
: undefined,
|
|
88
|
+
commitTimeoutMs: cc.hasPath('commitTimeoutMs') ? cc.getNumber('commitTimeoutMs') : undefined,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (c.hasPath('topics'))
|
|
92
|
+
out.topics = c.getStringList('topics');
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
requiredSettings() { return ['brokers']; }
|
|
96
|
+
endpointLabel() {
|
|
97
|
+
const brokers = this.settings.brokers;
|
|
98
|
+
return Array.isArray(brokers) ? `kafka://${brokers.join(',')}` : `kafka://${brokers ?? ''}`;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Build a `KafkaInstanceLike` from the configured settings. Override
|
|
102
|
+
* in a subclass for tests that want to inject mock producers /
|
|
103
|
+
* consumers without going through the kafkajs peer dep — that's the
|
|
104
|
+
* test seam used by `tests/unit/io/broker/KafkaActor.test.ts`.
|
|
105
|
+
*/
|
|
106
|
+
async createKafkaInstance() {
|
|
107
|
+
const kafkajs = await kafkaLazy.get();
|
|
108
|
+
const Ctor = kafkajs.Kafka ?? kafkajs.default.Kafka;
|
|
109
|
+
const brokersRaw = this.settings.brokers;
|
|
110
|
+
const brokers = Array.isArray(brokersRaw)
|
|
111
|
+
? brokersRaw
|
|
112
|
+
: (typeof brokersRaw === 'string' ? brokersRaw : '')
|
|
113
|
+
.split(',').map((s) => s.trim()).filter(Boolean);
|
|
114
|
+
return new Ctor({
|
|
115
|
+
clientId: this.settings.clientId,
|
|
116
|
+
brokers: [...brokers],
|
|
117
|
+
ssl: this.settings.ssl,
|
|
118
|
+
sasl: this.settings.sasl,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
async connectImpl() {
|
|
122
|
+
this.kafka = await this.createKafkaInstance();
|
|
123
|
+
this.producer = this.kafka.producer({
|
|
124
|
+
idempotent: this.settings.producer?.idempotent,
|
|
125
|
+
allowAutoTopicCreation: this.settings.producer?.allowAutoTopicCreation,
|
|
126
|
+
});
|
|
127
|
+
await this.producer.connect();
|
|
128
|
+
if (this.settings.consumer?.groupId) {
|
|
129
|
+
this.consumer = this.kafka.consumer({ groupId: this.settings.consumer.groupId });
|
|
130
|
+
await this.consumer.connect();
|
|
131
|
+
for (const topic of this.settings.topics ?? []) {
|
|
132
|
+
await this.consumer.subscribe({
|
|
133
|
+
topic, fromBeginning: this.settings.consumer.fromBeginning ?? false,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
const target = this.settings.target;
|
|
137
|
+
const manualCommit = this.settings.consumer.commitMode === 'manual';
|
|
138
|
+
const commitTimeoutMs = this.settings.consumer.commitTimeoutMs ?? 30_000;
|
|
139
|
+
// We deliberately don't await `run` — it's a long-running pump.
|
|
140
|
+
void this.consumer.run({
|
|
141
|
+
// kafkajs v2: `autoCommit: false` disables the auto-commit
|
|
142
|
+
// path so eachMessage's resolution doesn't trigger a commit.
|
|
143
|
+
// We drive commits from the actor via `commitOffsets` instead.
|
|
144
|
+
autoCommit: !manualCommit,
|
|
145
|
+
eachMessage: async ({ topic, partition, message, heartbeat }) => {
|
|
146
|
+
if (!target)
|
|
147
|
+
return;
|
|
148
|
+
target.tell({
|
|
149
|
+
topic, partition,
|
|
150
|
+
offset: message.offset,
|
|
151
|
+
key: message.key,
|
|
152
|
+
value: message.value,
|
|
153
|
+
timestamp: message.timestamp,
|
|
154
|
+
headers: message.headers ?? {},
|
|
155
|
+
});
|
|
156
|
+
if (!manualCommit)
|
|
157
|
+
return;
|
|
158
|
+
// Wait for an external `commit` / `nack` before resolving.
|
|
159
|
+
// The promise rejects on `nack`, the timeout, or disconnect
|
|
160
|
+
// cleanup — kafkajs treats a rejected eachMessage as a
|
|
161
|
+
// partition failure → rebalance → re-delivery (#2).
|
|
162
|
+
const key = pendingKey(topic, partition, message.offset);
|
|
163
|
+
await new Promise((resolve, reject) => {
|
|
164
|
+
const timer = setTimeout(() => {
|
|
165
|
+
this.pendingCommits.delete(key);
|
|
166
|
+
reject(new Error(`KafkaActor: no commit/nack received for ${key} within ${commitTimeoutMs}ms`));
|
|
167
|
+
}, commitTimeoutMs);
|
|
168
|
+
this.pendingCommits.set(key, {
|
|
169
|
+
done: () => { clearTimeout(timer); resolve(); },
|
|
170
|
+
fail: (err) => { clearTimeout(timer); reject(err); },
|
|
171
|
+
heartbeat,
|
|
172
|
+
topic, partition, offset: message.offset,
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async disconnectImpl() {
|
|
180
|
+
// Reject every still-pending commit so the kafkajs eachMessage
|
|
181
|
+
// pump unwinds cleanly — otherwise consumer.disconnect would
|
|
182
|
+
// hang waiting for the in-flight handler to resolve.
|
|
183
|
+
if (this.pendingCommits.size > 0) {
|
|
184
|
+
for (const p of this.pendingCommits.values()) {
|
|
185
|
+
p.fail(new Error('KafkaActor: disconnecting before commit/nack arrived'));
|
|
186
|
+
}
|
|
187
|
+
this.pendingCommits.clear();
|
|
188
|
+
}
|
|
189
|
+
const errors = [];
|
|
190
|
+
if (this.consumer) {
|
|
191
|
+
try {
|
|
192
|
+
await this.consumer.disconnect();
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
errors.push(e);
|
|
196
|
+
}
|
|
197
|
+
this.consumer = null;
|
|
198
|
+
}
|
|
199
|
+
if (this.producer) {
|
|
200
|
+
try {
|
|
201
|
+
await this.producer.disconnect();
|
|
202
|
+
}
|
|
203
|
+
catch (e) {
|
|
204
|
+
errors.push(e);
|
|
205
|
+
}
|
|
206
|
+
this.producer = null;
|
|
207
|
+
}
|
|
208
|
+
this.kafka = null;
|
|
209
|
+
if (errors.length > 0) {
|
|
210
|
+
this.log.warn(`KafkaActor disconnect: ${errors.map((e) => e.message).join('; ')}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async dispatchOutgoing(env) {
|
|
214
|
+
if (!this.producer)
|
|
215
|
+
throw new Error('KafkaActor: producer not connected');
|
|
216
|
+
const p = env.payload;
|
|
217
|
+
const value = typeof p.value === 'string' ? Buffer.from(p.value) : p.value;
|
|
218
|
+
const key = p.key === undefined ? null
|
|
219
|
+
: (typeof p.key === 'string' ? Buffer.from(p.key) : p.key);
|
|
220
|
+
await this.producer.send({
|
|
221
|
+
topic: p.topic,
|
|
222
|
+
messages: [{ value, key, partition: p.partition, headers: p.headers }],
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
onReceive(cmd) {
|
|
226
|
+
// Compile-time exhaustiveness: adding a new KafkaCmd variant
|
|
227
|
+
// forces this site to handle it explicitly.
|
|
228
|
+
match(cmd)
|
|
229
|
+
.with({ kind: 'publish' }, (c) => {
|
|
230
|
+
this.enqueueOutbound(c.publish);
|
|
231
|
+
})
|
|
232
|
+
.with({ kind: 'subscribe' }, (c) => {
|
|
233
|
+
// Runtime topic-add — kafkajs requires the consumer already be running.
|
|
234
|
+
if (this.consumer && this.connectionState === 'connected') {
|
|
235
|
+
void this.consumer.subscribe({ topic: c.topic, fromBeginning: false });
|
|
236
|
+
}
|
|
237
|
+
})
|
|
238
|
+
.with({ kind: 'commit' }, (c) => { void this.handleCommit(c); })
|
|
239
|
+
.with({ kind: 'nack' }, (c) => this.handleNack(c))
|
|
240
|
+
.with({ kind: 'heartbeat' }, (c) => { void this.handleHeartbeat(c); })
|
|
241
|
+
.exhaustive();
|
|
242
|
+
}
|
|
243
|
+
/* ----------------------------- internals ------------------------------ */
|
|
244
|
+
async handleCommit(cmd) {
|
|
245
|
+
const key = pendingKey(cmd.topic, cmd.partition, cmd.offset);
|
|
246
|
+
const pending = this.pendingCommits.get(key);
|
|
247
|
+
if (!pending) {
|
|
248
|
+
// Already committed, expired, or — most commonly — auto-mode
|
|
249
|
+
// (where no pending entry was ever inserted). Silent no-op
|
|
250
|
+
// either way: handlers can be written to send `commit`
|
|
251
|
+
// unconditionally without checking the configured mode.
|
|
252
|
+
this.log.debug(`KafkaActor: commit for unknown ${key} — ignored (already committed, expired, or auto-mode)`);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (!this.consumer || !this.consumer.commitOffsets) {
|
|
256
|
+
pending.fail(new Error('KafkaActor: commit arrived but consumer is not connected or kafkajs lacks commitOffsets'));
|
|
257
|
+
this.pendingCommits.delete(key);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
try {
|
|
261
|
+
// kafkajs `commitOffsets` takes the **next** offset to consume,
|
|
262
|
+
// i.e., one past the message we just processed. Offsets are
|
|
263
|
+
// decimal strings; we use BigInt so very large values stay
|
|
264
|
+
// exact (Kafka offsets are 64-bit).
|
|
265
|
+
const next = String(BigInt(cmd.offset) + 1n);
|
|
266
|
+
await this.consumer.commitOffsets([
|
|
267
|
+
{ topic: cmd.topic, partition: cmd.partition, offset: next },
|
|
268
|
+
]);
|
|
269
|
+
pending.done();
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
pending.fail(err instanceof Error ? err : new Error(String(err)));
|
|
273
|
+
}
|
|
274
|
+
finally {
|
|
275
|
+
this.pendingCommits.delete(key);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Forward a `heartbeat` command to the captured kafkajs callback —
|
|
280
|
+
* keeps the record's session-deadline alive without affecting the
|
|
281
|
+
* offset. Unknown record (auto-mode, already-committed, expired)
|
|
282
|
+
* is a silent no-op so handlers can call this unconditionally
|
|
283
|
+
* without checking `commitMode` or whether the record's commit has
|
|
284
|
+
* already landed elsewhere.
|
|
285
|
+
*/
|
|
286
|
+
async handleHeartbeat(cmd) {
|
|
287
|
+
const key = pendingKey(cmd.topic, cmd.partition, cmd.offset);
|
|
288
|
+
const pending = this.pendingCommits.get(key);
|
|
289
|
+
if (!pending || !pending.heartbeat) {
|
|
290
|
+
this.log.debug(`KafkaActor: heartbeat for unknown ${key} — ignored`);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
try {
|
|
294
|
+
await pending.heartbeat();
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
// A failing heartbeat shouldn't reject the in-flight commit —
|
|
298
|
+
// the handler still has a chance to commit/nack normally. We
|
|
299
|
+
// just log and let the existing timeout / handler path run.
|
|
300
|
+
this.log.warn(`KafkaActor: heartbeat call failed for ${key}: ${err.message}`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
handleNack(cmd) {
|
|
304
|
+
const key = pendingKey(cmd.topic, cmd.partition, cmd.offset);
|
|
305
|
+
const pending = this.pendingCommits.get(key);
|
|
306
|
+
if (!pending)
|
|
307
|
+
return;
|
|
308
|
+
this.log.warn(`KafkaActor: nack for ${key}${cmd.reason ? ` (${cmd.reason})` : ''} — `
|
|
309
|
+
+ `re-delivery will happen on next rebalance`);
|
|
310
|
+
pending.fail(new Error(cmd.reason ?? 'KafkaActor: nack from handler'));
|
|
311
|
+
this.pendingCommits.delete(key);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
function pendingKey(topic, partition, offset) {
|
|
315
|
+
return `${topic}|${partition}|${offset}`;
|
|
316
|
+
}
|
|
317
|
+
const kafkaLazy = Lazy.of(() => lazyImportModule('kafkajs', { context: 'KafkaActor' }));
|
|
318
|
+
/**
|
|
319
|
+
* Run `body` while periodically telling `kafka` to heartbeat the
|
|
320
|
+
* record. Cancels the timer on success or failure; the body's
|
|
321
|
+
* resolution / rejection is propagated. Use this when a manual-commit
|
|
322
|
+
* handler is likely to exceed the consumer's `sessionTimeoutMs / 3` —
|
|
323
|
+
* the rule of thumb being three heartbeats per session window so a
|
|
324
|
+
* single dropped tick doesn't trigger eviction.
|
|
325
|
+
*
|
|
326
|
+
* Default `everyMs` is 10 s, suitable for kafkajs's default 30 s
|
|
327
|
+
* `sessionTimeout`. If you tuned the consumer's session timeout up,
|
|
328
|
+
* scale `everyMs` to match.
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```ts
|
|
332
|
+
* await withAutoHeartbeat({ kafka, record: rec, everyMs: 5_000 }, async () => {
|
|
333
|
+
* await reallySlowDatabaseWork(rec.value);
|
|
334
|
+
* });
|
|
335
|
+
* kafka.tell({ kind: 'commit', ...rec });
|
|
336
|
+
* ```
|
|
337
|
+
*/
|
|
338
|
+
export async function withAutoHeartbeat(args, body) {
|
|
339
|
+
const intervalMs = args.everyMs ?? 10_000;
|
|
340
|
+
const timer = setInterval(() => {
|
|
341
|
+
args.kafka.tell({
|
|
342
|
+
kind: 'heartbeat',
|
|
343
|
+
topic: args.record.topic,
|
|
344
|
+
partition: args.record.partition,
|
|
345
|
+
offset: args.record.offset,
|
|
346
|
+
});
|
|
347
|
+
}, intervalMs);
|
|
348
|
+
try {
|
|
349
|
+
return await body();
|
|
350
|
+
}
|
|
351
|
+
finally {
|
|
352
|
+
clearInterval(timer);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=KafkaActor.js.map
|