@effect/cluster 0.28.4 → 0.29.1
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/ClusterError/package.json +6 -0
- package/ClusterMetrics/package.json +6 -0
- package/ClusterSchema/package.json +6 -0
- package/DeliverAt/package.json +6 -0
- package/Entity/package.json +6 -0
- package/EntityAddress/package.json +6 -0
- package/EntityId/package.json +6 -0
- package/EntityType/package.json +6 -0
- package/Envelope/package.json +6 -0
- package/HttpCommon/package.json +6 -0
- package/HttpRunner/package.json +6 -0
- package/HttpShardManager/package.json +6 -0
- package/MachineId/package.json +6 -0
- package/MessageStorage/package.json +6 -0
- package/README.md +2 -2
- package/Reply/package.json +6 -0
- package/Runner/package.json +6 -0
- package/RunnerAddress/package.json +6 -0
- package/RunnerHealth/package.json +6 -0
- package/RunnerServer/package.json +6 -0
- package/Runners/package.json +6 -0
- package/ShardStorage/package.json +6 -0
- package/Singleton/package.json +6 -0
- package/SingletonAddress/package.json +6 -0
- package/Snowflake/package.json +6 -0
- package/SocketRunner/package.json +6 -0
- package/SocketShardManager/package.json +6 -0
- package/SqlMessageStorage/package.json +6 -0
- package/SqlShardStorage/package.json +6 -0
- package/SynchronizedClock/package.json +6 -0
- package/dist/cjs/ClusterError.js +180 -0
- package/dist/cjs/ClusterError.js.map +1 -0
- package/dist/cjs/ClusterMetrics.js +63 -0
- package/dist/cjs/ClusterMetrics.js.map +1 -0
- package/dist/cjs/{Pods.js → ClusterSchema.js} +10 -22
- package/dist/cjs/ClusterSchema.js.map +1 -0
- package/dist/cjs/DeliverAt.js +30 -0
- package/dist/cjs/DeliverAt.js.map +1 -0
- package/dist/cjs/Entity.js +187 -0
- package/dist/cjs/Entity.js.map +1 -0
- package/dist/cjs/EntityAddress.js +54 -0
- package/dist/cjs/EntityAddress.js.map +1 -0
- package/dist/cjs/{AtLeastOnce.js → EntityId.js} +6 -7
- package/dist/cjs/EntityId.js.map +1 -0
- package/dist/cjs/{ShardManagerClient.js → EntityType.js} +5 -16
- package/dist/cjs/EntityType.js.map +1 -0
- package/dist/cjs/Envelope.js +168 -0
- package/dist/cjs/Envelope.js.map +1 -0
- package/dist/cjs/HttpCommon.js +49 -0
- package/dist/cjs/HttpCommon.js.map +1 -0
- package/dist/cjs/HttpRunner.js +108 -0
- package/dist/cjs/HttpRunner.js.map +1 -0
- package/dist/cjs/HttpShardManager.js +140 -0
- package/dist/cjs/HttpShardManager.js.map +1 -0
- package/dist/cjs/{AtLeastOnceStorage.js → MachineId.js} +11 -9
- package/dist/cjs/MachineId.js.map +1 -0
- package/dist/cjs/Message.js +99 -18
- package/dist/cjs/Message.js.map +1 -1
- package/dist/cjs/MessageStorage.js +356 -0
- package/dist/cjs/MessageStorage.js.map +1 -0
- package/dist/cjs/Reply.js +200 -0
- package/dist/cjs/Reply.js.map +1 -0
- package/dist/cjs/Runner.js +79 -0
- package/dist/cjs/Runner.js.map +1 -0
- package/dist/cjs/RunnerAddress.js +63 -0
- package/dist/cjs/RunnerAddress.js.map +1 -0
- package/dist/cjs/RunnerHealth.js +68 -0
- package/dist/cjs/RunnerHealth.js.map +1 -0
- package/dist/cjs/RunnerServer.js +125 -0
- package/dist/cjs/RunnerServer.js.map +1 -0
- package/dist/cjs/Runners.js +344 -0
- package/dist/cjs/Runners.js.map +1 -0
- package/dist/cjs/ShardId.js +7 -46
- package/dist/cjs/ShardId.js.map +1 -1
- package/dist/cjs/ShardManager.js +493 -8
- package/dist/cjs/ShardManager.js.map +1 -1
- package/dist/cjs/ShardStorage.js +139 -0
- package/dist/cjs/ShardStorage.js.map +1 -0
- package/dist/cjs/Sharding.js +731 -91
- package/dist/cjs/Sharding.js.map +1 -1
- package/dist/cjs/ShardingConfig.js +85 -18
- package/dist/cjs/ShardingConfig.js.map +1 -1
- package/dist/cjs/ShardingRegistrationEvent.js +26 -32
- package/dist/cjs/ShardingRegistrationEvent.js.map +1 -1
- package/dist/cjs/{ManagerConfig.js → Singleton.js} +11 -20
- package/dist/cjs/Singleton.js.map +1 -0
- package/dist/cjs/SingletonAddress.js +50 -0
- package/dist/cjs/SingletonAddress.js.map +1 -0
- package/dist/cjs/Snowflake.js +133 -0
- package/dist/cjs/Snowflake.js.map +1 -0
- package/dist/cjs/SocketRunner.js +40 -0
- package/dist/cjs/SocketRunner.js.map +1 -0
- package/dist/cjs/SocketShardManager.js +33 -0
- package/dist/cjs/SocketShardManager.js.map +1 -0
- package/dist/cjs/SqlMessageStorage.js +668 -0
- package/dist/cjs/SqlMessageStorage.js.map +1 -0
- package/dist/cjs/SqlShardStorage.js +228 -0
- package/dist/cjs/SqlShardStorage.js.map +1 -0
- package/dist/cjs/SynchronizedClock.js +66 -0
- package/dist/cjs/SynchronizedClock.js.map +1 -0
- package/dist/cjs/index.js +57 -45
- package/dist/cjs/internal/entityManager.js +311 -143
- package/dist/cjs/internal/entityManager.js.map +1 -1
- package/dist/cjs/internal/entityReaper.js +47 -0
- package/dist/cjs/internal/entityReaper.js.map +1 -0
- package/dist/cjs/internal/hash.js +20 -0
- package/dist/cjs/internal/hash.js.map +1 -0
- package/dist/cjs/internal/interruptors.js +9 -0
- package/dist/cjs/internal/interruptors.js.map +1 -0
- package/dist/cjs/internal/resourceMap.js +88 -0
- package/dist/cjs/internal/resourceMap.js.map +1 -0
- package/dist/cjs/internal/resourceRef.js +92 -0
- package/dist/cjs/internal/resourceRef.js.map +1 -0
- package/dist/cjs/internal/shardManager.js +219 -235
- package/dist/cjs/internal/shardManager.js.map +1 -1
- package/dist/dts/ClusterError.d.ts +169 -0
- package/dist/dts/ClusterError.d.ts.map +1 -0
- package/dist/dts/ClusterMetrics.d.ts +50 -0
- package/dist/dts/ClusterMetrics.d.ts.map +1 -0
- package/dist/dts/ClusterSchema.d.ts +13 -0
- package/dist/dts/ClusterSchema.d.ts.map +1 -0
- package/dist/dts/DeliverAt.d.ts +27 -0
- package/dist/dts/DeliverAt.d.ts.map +1 -0
- package/dist/dts/Entity.d.ts +180 -0
- package/dist/dts/Entity.d.ts.map +1 -0
- package/dist/dts/EntityAddress.d.ts +55 -0
- package/dist/dts/EntityAddress.d.ts.map +1 -0
- package/dist/dts/EntityId.d.ts +15 -0
- package/dist/dts/EntityId.d.ts.map +1 -0
- package/dist/dts/EntityType.d.ts +15 -0
- package/dist/dts/EntityType.d.ts.map +1 -0
- package/dist/dts/Envelope.d.ts +252 -0
- package/dist/dts/Envelope.d.ts.map +1 -0
- package/dist/dts/HttpCommon.d.ts +25 -0
- package/dist/dts/HttpCommon.d.ts.map +1 -0
- package/dist/dts/HttpRunner.d.ts +76 -0
- package/dist/dts/HttpRunner.d.ts.map +1 -0
- package/dist/dts/HttpShardManager.d.ts +119 -0
- package/dist/dts/HttpShardManager.d.ts.map +1 -0
- package/dist/dts/MachineId.d.ts +20 -0
- package/dist/dts/MachineId.d.ts.map +1 -0
- package/dist/dts/Message.d.ts +91 -74
- package/dist/dts/Message.d.ts.map +1 -1
- package/dist/dts/MessageStorage.d.ts +336 -0
- package/dist/dts/MessageStorage.d.ts.map +1 -0
- package/dist/dts/Reply.d.ts +171 -0
- package/dist/dts/Reply.d.ts.map +1 -0
- package/dist/dts/Runner.d.ts +81 -0
- package/dist/dts/Runner.d.ts.map +1 -0
- package/dist/dts/RunnerAddress.d.ts +56 -0
- package/dist/dts/RunnerAddress.d.ts.map +1 -0
- package/dist/dts/RunnerHealth.d.ts +54 -0
- package/dist/dts/RunnerHealth.d.ts.map +1 -0
- package/dist/dts/RunnerServer.d.ts +44 -0
- package/dist/dts/RunnerServer.d.ts.map +1 -0
- package/dist/dts/Runners.d.ts +161 -0
- package/dist/dts/Runners.d.ts.map +1 -0
- package/dist/dts/ShardId.d.ts +5 -55
- package/dist/dts/ShardId.d.ts.map +1 -1
- package/dist/dts/ShardManager.d.ts +435 -23
- package/dist/dts/ShardManager.d.ts.map +1 -1
- package/dist/dts/ShardStorage.d.ts +200 -0
- package/dist/dts/ShardStorage.d.ts.map +1 -0
- package/dist/dts/Sharding.d.ts +64 -133
- package/dist/dts/Sharding.d.ts.map +1 -1
- package/dist/dts/ShardingConfig.d.ts +147 -44
- package/dist/dts/ShardingConfig.d.ts.map +1 -1
- package/dist/dts/ShardingRegistrationEvent.d.ts +38 -23
- package/dist/dts/ShardingRegistrationEvent.d.ts.map +1 -1
- package/dist/dts/Singleton.d.ts +13 -0
- package/dist/dts/Singleton.d.ts.map +1 -0
- package/dist/dts/SingletonAddress.d.ts +49 -0
- package/dist/dts/SingletonAddress.d.ts.map +1 -0
- package/dist/dts/Snowflake.d.ts +121 -0
- package/dist/dts/Snowflake.d.ts.map +1 -0
- package/dist/dts/SocketRunner.d.ts +22 -0
- package/dist/dts/SocketRunner.d.ts.map +1 -0
- package/dist/dts/SocketShardManager.d.ts +17 -0
- package/dist/dts/SocketShardManager.d.ts.map +1 -0
- package/dist/dts/SqlMessageStorage.d.ts +43 -0
- package/dist/dts/SqlMessageStorage.d.ts.map +1 -0
- package/dist/dts/SqlShardStorage.d.ts +38 -0
- package/dist/dts/SqlShardStorage.d.ts.map +1 -0
- package/dist/dts/SynchronizedClock.d.ts +19 -0
- package/dist/dts/SynchronizedClock.d.ts.map +1 -0
- package/dist/dts/index.d.ts +48 -24
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/entityReaper.d.ts +2 -0
- package/dist/dts/internal/entityReaper.d.ts.map +1 -0
- package/dist/dts/internal/hash.d.ts +2 -0
- package/dist/dts/internal/hash.d.ts.map +1 -0
- package/dist/dts/internal/interruptors.d.ts +2 -0
- package/dist/dts/internal/interruptors.d.ts.map +1 -0
- package/dist/dts/internal/resourceMap.d.ts +22 -0
- package/dist/dts/internal/resourceMap.d.ts.map +1 -0
- package/dist/dts/internal/resourceRef.d.ts +25 -0
- package/dist/dts/internal/resourceRef.d.ts.map +1 -0
- package/dist/dts/internal/shardManager.d.ts +1 -11
- package/dist/dts/internal/shardManager.d.ts.map +1 -1
- package/dist/esm/ClusterError.js +164 -0
- package/dist/esm/ClusterError.js.map +1 -0
- package/dist/esm/ClusterMetrics.js +54 -0
- package/dist/esm/ClusterMetrics.js.map +1 -0
- package/dist/esm/ClusterSchema.js +13 -0
- package/dist/esm/ClusterSchema.js.map +1 -0
- package/dist/esm/DeliverAt.js +22 -0
- package/dist/esm/DeliverAt.js.map +1 -0
- package/dist/esm/Entity.js +173 -0
- package/dist/esm/Entity.js.map +1 -0
- package/dist/esm/EntityAddress.js +44 -0
- package/dist/esm/EntityAddress.js.map +1 -0
- package/dist/esm/EntityId.js +10 -0
- package/dist/esm/EntityId.js.map +1 -0
- package/dist/esm/EntityType.js +10 -0
- package/dist/esm/EntityType.js.map +1 -0
- package/dist/esm/Envelope.js +154 -0
- package/dist/esm/Envelope.js.map +1 -0
- package/dist/esm/HttpCommon.js +38 -0
- package/dist/esm/HttpCommon.js.map +1 -0
- package/dist/esm/HttpRunner.js +98 -0
- package/dist/esm/HttpRunner.js.map +1 -0
- package/dist/esm/HttpShardManager.js +128 -0
- package/dist/esm/HttpShardManager.js.map +1 -0
- package/dist/esm/MachineId.js +17 -0
- package/dist/esm/MachineId.js.map +1 -0
- package/dist/esm/Message.js +88 -17
- package/dist/esm/Message.js.map +1 -1
- package/dist/esm/MessageStorage.js +345 -0
- package/dist/esm/MessageStorage.js.map +1 -0
- package/dist/esm/Reply.js +184 -0
- package/dist/esm/Reply.js.map +1 -0
- package/dist/esm/Runner.js +68 -0
- package/dist/esm/Runner.js.map +1 -0
- package/dist/esm/RunnerAddress.js +52 -0
- package/dist/esm/RunnerAddress.js.map +1 -0
- package/dist/esm/RunnerHealth.js +58 -0
- package/dist/esm/RunnerHealth.js.map +1 -0
- package/dist/esm/RunnerServer.js +116 -0
- package/dist/esm/RunnerServer.js.map +1 -0
- package/dist/esm/Runners.js +332 -0
- package/dist/esm/Runners.js.map +1 -0
- package/dist/esm/ShardId.js +5 -42
- package/dist/esm/ShardId.js.map +1 -1
- package/dist/esm/ShardManager.js +486 -7
- package/dist/esm/ShardManager.js.map +1 -1
- package/dist/esm/ShardStorage.js +129 -0
- package/dist/esm/ShardStorage.js.map +1 -0
- package/dist/esm/Sharding.js +729 -90
- package/dist/esm/Sharding.js.map +1 -1
- package/dist/esm/ShardingConfig.js +80 -17
- package/dist/esm/ShardingConfig.js.map +1 -1
- package/dist/esm/ShardingRegistrationEvent.js +19 -29
- package/dist/esm/ShardingRegistrationEvent.js.map +1 -1
- package/dist/esm/Singleton.js +15 -0
- package/dist/esm/Singleton.js.map +1 -0
- package/dist/esm/SingletonAddress.js +40 -0
- package/dist/esm/SingletonAddress.js.map +1 -0
- package/dist/esm/Snowflake.js +117 -0
- package/dist/esm/Snowflake.js.map +1 -0
- package/dist/esm/SocketRunner.js +31 -0
- package/dist/esm/SocketRunner.js.map +1 -0
- package/dist/esm/SocketShardManager.js +24 -0
- package/dist/esm/SocketShardManager.js.map +1 -0
- package/dist/esm/SqlMessageStorage.js +658 -0
- package/dist/esm/SqlMessageStorage.js.map +1 -0
- package/dist/esm/SqlShardStorage.js +218 -0
- package/dist/esm/SqlShardStorage.js.map +1 -0
- package/dist/esm/SynchronizedClock.js +57 -0
- package/dist/esm/SynchronizedClock.js.map +1 -0
- package/dist/esm/index.js +48 -24
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/entityManager.js +311 -142
- package/dist/esm/internal/entityManager.js.map +1 -1
- package/dist/esm/internal/entityReaper.js +38 -0
- package/dist/esm/internal/entityReaper.js.map +1 -0
- package/dist/esm/internal/hash.js +12 -0
- package/dist/esm/internal/hash.js.map +1 -0
- package/dist/esm/internal/interruptors.js +3 -0
- package/dist/esm/internal/interruptors.js.map +1 -0
- package/dist/esm/internal/resourceMap.js +79 -0
- package/dist/esm/internal/resourceMap.js.map +1 -0
- package/dist/esm/internal/resourceRef.js +83 -0
- package/dist/esm/internal/resourceRef.js.map +1 -0
- package/dist/esm/internal/shardManager.js +217 -233
- package/dist/esm/internal/shardManager.js.map +1 -1
- package/package.json +212 -154
- package/src/ClusterError.ts +193 -0
- package/src/ClusterMetrics.ts +62 -0
- package/src/ClusterSchema.ts +13 -0
- package/src/DeliverAt.ts +36 -0
- package/src/Entity.ts +438 -0
- package/src/EntityAddress.ts +55 -0
- package/src/EntityId.ts +16 -0
- package/src/EntityType.ts +16 -0
- package/src/Envelope.ts +352 -0
- package/src/HttpCommon.ts +73 -0
- package/src/HttpRunner.ts +196 -0
- package/src/HttpShardManager.ts +273 -0
- package/src/MachineId.ts +27 -0
- package/src/Message.ts +143 -92
- package/src/MessageStorage.ts +697 -0
- package/src/Reply.ts +295 -0
- package/src/Runner.ts +84 -0
- package/src/RunnerAddress.ts +61 -0
- package/src/RunnerHealth.ts +87 -0
- package/src/RunnerServer.ts +156 -0
- package/src/Runners.ts +533 -0
- package/src/ShardId.ts +10 -62
- package/src/ShardManager.ts +780 -29
- package/src/ShardStorage.ts +289 -0
- package/src/Sharding.ts +1059 -186
- package/src/ShardingConfig.ts +186 -45
- package/src/ShardingRegistrationEvent.ts +38 -39
- package/src/Singleton.ts +20 -0
- package/src/SingletonAddress.ts +47 -0
- package/src/Snowflake.ts +194 -0
- package/src/SocketRunner.ts +59 -0
- package/src/SocketShardManager.ts +48 -0
- package/src/SqlMessageStorage.ts +833 -0
- package/src/SqlShardStorage.ts +292 -0
- package/src/SynchronizedClock.ts +82 -0
- package/src/index.ts +54 -24
- package/src/internal/entityManager.ts +464 -361
- package/src/internal/entityReaper.ts +53 -0
- package/src/internal/hash.ts +11 -0
- package/src/internal/interruptors.ts +4 -0
- package/src/internal/resourceMap.ts +89 -0
- package/src/internal/resourceRef.ts +88 -0
- package/src/internal/shardManager.ts +273 -546
- package/AtLeastOnce/package.json +0 -6
- package/AtLeastOnceStorage/package.json +0 -6
- package/Broadcaster/package.json +0 -6
- package/ManagerConfig/package.json +0 -6
- package/MessageState/package.json +0 -6
- package/Messenger/package.json +0 -6
- package/Pod/package.json +0 -6
- package/PodAddress/package.json +0 -6
- package/Pods/package.json +0 -6
- package/PodsHealth/package.json +0 -6
- package/PoisonPill/package.json +0 -6
- package/RecipientAddress/package.json +0 -6
- package/RecipientBehaviour/package.json +0 -6
- package/RecipientBehaviourContext/package.json +0 -6
- package/RecipientType/package.json +0 -6
- package/Serialization/package.json +0 -6
- package/SerializedEnvelope/package.json +0 -6
- package/SerializedMessage/package.json +0 -6
- package/ShardManagerClient/package.json +0 -6
- package/ShardingEvent/package.json +0 -6
- package/ShardingException/package.json +0 -6
- package/Storage/package.json +0 -6
- package/dist/cjs/AtLeastOnce.js.map +0 -1
- package/dist/cjs/AtLeastOnceStorage.js.map +0 -1
- package/dist/cjs/Broadcaster.js +0 -6
- package/dist/cjs/Broadcaster.js.map +0 -1
- package/dist/cjs/ManagerConfig.js.map +0 -1
- package/dist/cjs/MessageState.js +0 -55
- package/dist/cjs/MessageState.js.map +0 -1
- package/dist/cjs/Messenger.js +0 -6
- package/dist/cjs/Messenger.js.map +0 -1
- package/dist/cjs/Pod.js +0 -78
- package/dist/cjs/Pod.js.map +0 -1
- package/dist/cjs/PodAddress.js +0 -77
- package/dist/cjs/PodAddress.js.map +0 -1
- package/dist/cjs/Pods.js.map +0 -1
- package/dist/cjs/PodsHealth.js +0 -41
- package/dist/cjs/PodsHealth.js.map +0 -1
- package/dist/cjs/PoisonPill.js +0 -78
- package/dist/cjs/PoisonPill.js.map +0 -1
- package/dist/cjs/RecipientAddress.js +0 -79
- package/dist/cjs/RecipientAddress.js.map +0 -1
- package/dist/cjs/RecipientBehaviour.js +0 -38
- package/dist/cjs/RecipientBehaviour.js.map +0 -1
- package/dist/cjs/RecipientBehaviourContext.js +0 -64
- package/dist/cjs/RecipientBehaviourContext.js.map +0 -1
- package/dist/cjs/RecipientType.js +0 -123
- package/dist/cjs/RecipientType.js.map +0 -1
- package/dist/cjs/Serialization.js +0 -32
- package/dist/cjs/Serialization.js.map +0 -1
- package/dist/cjs/SerializedEnvelope.js +0 -87
- package/dist/cjs/SerializedEnvelope.js.map +0 -1
- package/dist/cjs/SerializedMessage.js +0 -64
- package/dist/cjs/SerializedMessage.js.map +0 -1
- package/dist/cjs/ShardManagerClient.js.map +0 -1
- package/dist/cjs/ShardingEvent.js +0 -72
- package/dist/cjs/ShardingEvent.js.map +0 -1
- package/dist/cjs/ShardingException.js +0 -107
- package/dist/cjs/ShardingException.js.map +0 -1
- package/dist/cjs/Storage.js +0 -40
- package/dist/cjs/Storage.js.map +0 -1
- package/dist/cjs/internal/atLeastOnce.js +0 -35
- package/dist/cjs/internal/atLeastOnce.js.map +0 -1
- package/dist/cjs/internal/atLeastOnceStorage.js +0 -163
- package/dist/cjs/internal/atLeastOnceStorage.js.map +0 -1
- package/dist/cjs/internal/entityState.js +0 -47
- package/dist/cjs/internal/entityState.js.map +0 -1
- package/dist/cjs/internal/managerConfig.js +0 -46
- package/dist/cjs/internal/managerConfig.js.map +0 -1
- package/dist/cjs/internal/message.js +0 -48
- package/dist/cjs/internal/message.js.map +0 -1
- package/dist/cjs/internal/messageState.js +0 -79
- package/dist/cjs/internal/messageState.js.map +0 -1
- package/dist/cjs/internal/podWithMetadata.js +0 -54
- package/dist/cjs/internal/podWithMetadata.js.map +0 -1
- package/dist/cjs/internal/pods.js +0 -35
- package/dist/cjs/internal/pods.js.map +0 -1
- package/dist/cjs/internal/podsHealth.js +0 -40
- package/dist/cjs/internal/podsHealth.js.map +0 -1
- package/dist/cjs/internal/recipientBehaviour.js +0 -52
- package/dist/cjs/internal/recipientBehaviour.js.map +0 -1
- package/dist/cjs/internal/recipientBehaviourContext.js +0 -36
- package/dist/cjs/internal/recipientBehaviourContext.js.map +0 -1
- package/dist/cjs/internal/serialization.js +0 -48
- package/dist/cjs/internal/serialization.js.map +0 -1
- package/dist/cjs/internal/shardManagerClient.js +0 -48
- package/dist/cjs/internal/shardManagerClient.js.map +0 -1
- package/dist/cjs/internal/shardManagerState.js +0 -44
- package/dist/cjs/internal/shardManagerState.js.map +0 -1
- package/dist/cjs/internal/sharding.js +0 -306
- package/dist/cjs/internal/sharding.js.map +0 -1
- package/dist/cjs/internal/shardingConfig.js +0 -56
- package/dist/cjs/internal/shardingConfig.js.map +0 -1
- package/dist/cjs/internal/storage.js +0 -52
- package/dist/cjs/internal/storage.js.map +0 -1
- package/dist/cjs/internal/utils.js +0 -69
- package/dist/cjs/internal/utils.js.map +0 -1
- package/dist/dts/AtLeastOnce.d.ts +0 -20
- package/dist/dts/AtLeastOnce.d.ts.map +0 -1
- package/dist/dts/AtLeastOnceStorage.d.ts +0 -75
- package/dist/dts/AtLeastOnceStorage.d.ts.map +0 -1
- package/dist/dts/Broadcaster.d.ts +0 -32
- package/dist/dts/Broadcaster.d.ts.map +0 -1
- package/dist/dts/ManagerConfig.d.ts +0 -61
- package/dist/dts/ManagerConfig.d.ts.map +0 -1
- package/dist/dts/MessageState.d.ts +0 -107
- package/dist/dts/MessageState.d.ts.map +0 -1
- package/dist/dts/Messenger.d.ts +0 -32
- package/dist/dts/Messenger.d.ts.map +0 -1
- package/dist/dts/Pod.d.ts +0 -81
- package/dist/dts/Pod.d.ts.map +0 -1
- package/dist/dts/PodAddress.d.ts +0 -80
- package/dist/dts/PodAddress.d.ts.map +0 -1
- package/dist/dts/Pods.d.ts +0 -78
- package/dist/dts/Pods.d.ts.map +0 -1
- package/dist/dts/PodsHealth.d.ts +0 -66
- package/dist/dts/PodsHealth.d.ts.map +0 -1
- package/dist/dts/PoisonPill.d.ts +0 -78
- package/dist/dts/PoisonPill.d.ts.map +0 -1
- package/dist/dts/RecipientAddress.d.ts +0 -57
- package/dist/dts/RecipientAddress.d.ts.map +0 -1
- package/dist/dts/RecipientBehaviour.d.ts +0 -72
- package/dist/dts/RecipientBehaviour.d.ts.map +0 -1
- package/dist/dts/RecipientBehaviourContext.d.ts +0 -83
- package/dist/dts/RecipientBehaviourContext.d.ts.map +0 -1
- package/dist/dts/RecipientType.d.ts +0 -93
- package/dist/dts/RecipientType.d.ts.map +0 -1
- package/dist/dts/Serialization.d.ts +0 -58
- package/dist/dts/Serialization.d.ts.map +0 -1
- package/dist/dts/SerializedEnvelope.d.ts +0 -86
- package/dist/dts/SerializedEnvelope.d.ts.map +0 -1
- package/dist/dts/SerializedMessage.d.ts +0 -66
- package/dist/dts/SerializedMessage.d.ts.map +0 -1
- package/dist/dts/ShardManagerClient.d.ts +0 -50
- package/dist/dts/ShardManagerClient.d.ts.map +0 -1
- package/dist/dts/ShardingEvent.d.ts +0 -90
- package/dist/dts/ShardingEvent.d.ts.map +0 -1
- package/dist/dts/ShardingException.d.ts +0 -125
- package/dist/dts/ShardingException.d.ts.map +0 -1
- package/dist/dts/Storage.d.ts +0 -78
- package/dist/dts/Storage.d.ts.map +0 -1
- package/dist/dts/internal/atLeastOnce.d.ts +0 -2
- package/dist/dts/internal/atLeastOnce.d.ts.map +0 -1
- package/dist/dts/internal/atLeastOnceStorage.d.ts +0 -2
- package/dist/dts/internal/atLeastOnceStorage.d.ts.map +0 -1
- package/dist/dts/internal/entityState.d.ts +0 -21
- package/dist/dts/internal/entityState.d.ts.map +0 -1
- package/dist/dts/internal/managerConfig.d.ts +0 -2
- package/dist/dts/internal/managerConfig.d.ts.map +0 -1
- package/dist/dts/internal/message.d.ts +0 -9
- package/dist/dts/internal/message.d.ts.map +0 -1
- package/dist/dts/internal/messageState.d.ts +0 -2
- package/dist/dts/internal/messageState.d.ts.map +0 -1
- package/dist/dts/internal/podWithMetadata.d.ts +0 -2
- package/dist/dts/internal/podWithMetadata.d.ts.map +0 -1
- package/dist/dts/internal/pods.d.ts +0 -2
- package/dist/dts/internal/pods.d.ts.map +0 -1
- package/dist/dts/internal/podsHealth.d.ts +0 -2
- package/dist/dts/internal/podsHealth.d.ts.map +0 -1
- package/dist/dts/internal/recipientBehaviour.d.ts +0 -2
- package/dist/dts/internal/recipientBehaviour.d.ts.map +0 -1
- package/dist/dts/internal/recipientBehaviourContext.d.ts +0 -2
- package/dist/dts/internal/recipientBehaviourContext.d.ts.map +0 -1
- package/dist/dts/internal/serialization.d.ts +0 -2
- package/dist/dts/internal/serialization.d.ts.map +0 -1
- package/dist/dts/internal/shardManagerClient.d.ts +0 -2
- package/dist/dts/internal/shardManagerClient.d.ts.map +0 -1
- package/dist/dts/internal/shardManagerState.d.ts +0 -26
- package/dist/dts/internal/shardManagerState.d.ts.map +0 -1
- package/dist/dts/internal/sharding.d.ts +0 -2
- package/dist/dts/internal/sharding.d.ts.map +0 -1
- package/dist/dts/internal/shardingConfig.d.ts +0 -2
- package/dist/dts/internal/shardingConfig.d.ts.map +0 -1
- package/dist/dts/internal/storage.d.ts +0 -2
- package/dist/dts/internal/storage.d.ts.map +0 -1
- package/dist/dts/internal/utils.d.ts +0 -2
- package/dist/dts/internal/utils.d.ts.map +0 -1
- package/dist/esm/AtLeastOnce.js +0 -12
- package/dist/esm/AtLeastOnce.js.map +0 -1
- package/dist/esm/AtLeastOnceStorage.js +0 -17
- package/dist/esm/AtLeastOnceStorage.js.map +0 -1
- package/dist/esm/Broadcaster.js +0 -2
- package/dist/esm/Broadcaster.js.map +0 -1
- package/dist/esm/ManagerConfig.js +0 -26
- package/dist/esm/ManagerConfig.js.map +0 -1
- package/dist/esm/MessageState.js +0 -47
- package/dist/esm/MessageState.js.map +0 -1
- package/dist/esm/Messenger.js +0 -2
- package/dist/esm/Messenger.js.map +0 -1
- package/dist/esm/Pod.js +0 -65
- package/dist/esm/Pod.js.map +0 -1
- package/dist/esm/PodAddress.js +0 -64
- package/dist/esm/PodAddress.js.map +0 -1
- package/dist/esm/Pods.js +0 -27
- package/dist/esm/Pods.js.map +0 -1
- package/dist/esm/PodsHealth.js +0 -33
- package/dist/esm/PodsHealth.js.map +0 -1
- package/dist/esm/PoisonPill.js +0 -65
- package/dist/esm/PoisonPill.js.map +0 -1
- package/dist/esm/RecipientAddress.js +0 -67
- package/dist/esm/RecipientAddress.js.map +0 -1
- package/dist/esm/RecipientBehaviour.js +0 -30
- package/dist/esm/RecipientBehaviour.js.map +0 -1
- package/dist/esm/RecipientBehaviourContext.js +0 -56
- package/dist/esm/RecipientBehaviourContext.js.map +0 -1
- package/dist/esm/RecipientType.js +0 -108
- package/dist/esm/RecipientType.js.map +0 -1
- package/dist/esm/Serialization.js +0 -24
- package/dist/esm/Serialization.js.map +0 -1
- package/dist/esm/SerializedEnvelope.js +0 -74
- package/dist/esm/SerializedEnvelope.js.map +0 -1
- package/dist/esm/SerializedMessage.js +0 -51
- package/dist/esm/SerializedMessage.js.map +0 -1
- package/dist/esm/ShardManagerClient.js +0 -22
- package/dist/esm/ShardManagerClient.js.map +0 -1
- package/dist/esm/ShardingEvent.js +0 -62
- package/dist/esm/ShardingEvent.js.map +0 -1
- package/dist/esm/ShardingException.js +0 -91
- package/dist/esm/ShardingException.js.map +0 -1
- package/dist/esm/Storage.js +0 -32
- package/dist/esm/Storage.js.map +0 -1
- package/dist/esm/internal/atLeastOnce.js +0 -26
- package/dist/esm/internal/atLeastOnce.js.map +0 -1
- package/dist/esm/internal/atLeastOnceStorage.js +0 -154
- package/dist/esm/internal/atLeastOnceStorage.js.map +0 -1
- package/dist/esm/internal/entityState.js +0 -35
- package/dist/esm/internal/entityState.js.map +0 -1
- package/dist/esm/internal/managerConfig.js +0 -38
- package/dist/esm/internal/managerConfig.js.map +0 -1
- package/dist/esm/internal/message.js +0 -35
- package/dist/esm/internal/message.js.map +0 -1
- package/dist/esm/internal/messageState.js +0 -66
- package/dist/esm/internal/messageState.js.map +0 -1
- package/dist/esm/internal/podWithMetadata.js +0 -41
- package/dist/esm/internal/podWithMetadata.js.map +0 -1
- package/dist/esm/internal/pods.js +0 -25
- package/dist/esm/internal/pods.js.map +0 -1
- package/dist/esm/internal/podsHealth.js +0 -30
- package/dist/esm/internal/podsHealth.js.map +0 -1
- package/dist/esm/internal/recipientBehaviour.js +0 -42
- package/dist/esm/internal/recipientBehaviour.js.map +0 -1
- package/dist/esm/internal/recipientBehaviourContext.js +0 -26
- package/dist/esm/internal/recipientBehaviourContext.js.map +0 -1
- package/dist/esm/internal/serialization.js +0 -38
- package/dist/esm/internal/serialization.js.map +0 -1
- package/dist/esm/internal/shardManagerClient.js +0 -38
- package/dist/esm/internal/shardManagerClient.js.map +0 -1
- package/dist/esm/internal/shardManagerState.js +0 -36
- package/dist/esm/internal/shardManagerState.js.map +0 -1
- package/dist/esm/internal/sharding.js +0 -288
- package/dist/esm/internal/sharding.js.map +0 -1
- package/dist/esm/internal/shardingConfig.js +0 -47
- package/dist/esm/internal/shardingConfig.js.map +0 -1
- package/dist/esm/internal/storage.js +0 -42
- package/dist/esm/internal/storage.js.map +0 -1
- package/dist/esm/internal/utils.js +0 -56
- package/dist/esm/internal/utils.js.map +0 -1
- package/src/AtLeastOnce.ts +0 -28
- package/src/AtLeastOnceStorage.ts +0 -96
- package/src/Broadcaster.ts +0 -48
- package/src/ManagerConfig.ts +0 -67
- package/src/MessageState.ts +0 -126
- package/src/Messenger.ts +0 -40
- package/src/Pod.ts +0 -95
- package/src/PodAddress.ts +0 -94
- package/src/Pods.ts +0 -100
- package/src/PodsHealth.ts +0 -74
- package/src/PoisonPill.ts +0 -105
- package/src/RecipientAddress.ts +0 -72
- package/src/RecipientBehaviour.ts +0 -108
- package/src/RecipientBehaviourContext.ts +0 -101
- package/src/RecipientType.ts +0 -134
- package/src/Serialization.ts +0 -72
- package/src/SerializedEnvelope.ts +0 -108
- package/src/SerializedMessage.ts +0 -82
- package/src/ShardManagerClient.ts +0 -57
- package/src/ShardingEvent.ts +0 -121
- package/src/ShardingException.ts +0 -151
- package/src/Storage.ts +0 -92
- package/src/internal/atLeastOnce.ts +0 -59
- package/src/internal/atLeastOnceStorage.ts +0 -218
- package/src/internal/entityState.ts +0 -64
- package/src/internal/managerConfig.ts +0 -84
- package/src/internal/message.ts +0 -63
- package/src/internal/messageState.ts +0 -98
- package/src/internal/podWithMetadata.ts +0 -72
- package/src/internal/pods.ts +0 -29
- package/src/internal/podsHealth.ts +0 -39
- package/src/internal/recipientBehaviour.ts +0 -133
- package/src/internal/recipientBehaviourContext.ts +0 -70
- package/src/internal/serialization.ts +0 -63
- package/src/internal/shardManagerClient.ts +0 -49
- package/src/internal/shardManagerState.ts +0 -80
- package/src/internal/sharding.ts +0 -789
- package/src/internal/shardingConfig.ts +0 -97
- package/src/internal/storage.ts +0 -60
- package/src/internal/utils.ts +0 -54
package/src/PoisonPill.ts
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @since 1.0.0
|
3
|
-
*/
|
4
|
-
import * as Effect from "effect/Effect"
|
5
|
-
import { pipe } from "effect/Function"
|
6
|
-
import * as Queue from "effect/Queue"
|
7
|
-
import * as Schema from "effect/Schema"
|
8
|
-
import { TypeIdSchema } from "./internal/utils.js"
|
9
|
-
|
10
|
-
/** @internal */
|
11
|
-
const PoisonPillSymbolKey = "@effect/cluster/PoisonPill"
|
12
|
-
|
13
|
-
/**
|
14
|
-
* @since 1.0.0
|
15
|
-
* @category symbols
|
16
|
-
*/
|
17
|
-
export const PoisonPillTypeId: unique symbol = Symbol.for(PoisonPillSymbolKey)
|
18
|
-
|
19
|
-
/**
|
20
|
-
* @since 1.0.0
|
21
|
-
* @category symbols
|
22
|
-
*/
|
23
|
-
export type PoisonPillTypeId = typeof PoisonPillTypeId
|
24
|
-
|
25
|
-
/** @internal */
|
26
|
-
const PoisonPillTypeIdSchema = TypeIdSchema(PoisonPillSymbolKey, PoisonPillTypeId)
|
27
|
-
|
28
|
-
/**
|
29
|
-
* @since 1.0.0
|
30
|
-
*/
|
31
|
-
export namespace PoisonPill {
|
32
|
-
/**
|
33
|
-
* This is the shape that a PoisonPill takes over the wire.
|
34
|
-
*
|
35
|
-
* @since 1.0.0
|
36
|
-
* @category models
|
37
|
-
*/
|
38
|
-
export interface Encoded extends Schema.Schema.Encoded<typeof PoisonPill> {}
|
39
|
-
}
|
40
|
-
|
41
|
-
/**
|
42
|
-
* A PoisonPill is a special value that tells a behaviour entity to shut itself down.
|
43
|
-
* PoisonPill is handled only when you are using a Queue-based RecipientBehaviour.
|
44
|
-
* Other RecipientBehaviour such as fromFunctionEffect would not care about PoisonPill.
|
45
|
-
*
|
46
|
-
* @since 1.0.0
|
47
|
-
* @category models
|
48
|
-
*/
|
49
|
-
export class PoisonPill extends Schema.Class<PoisonPill>(PoisonPillSymbolKey)({
|
50
|
-
[PoisonPillTypeId]: Schema.propertySignature(PoisonPillTypeIdSchema).pipe(Schema.fromKey(PoisonPillSymbolKey))
|
51
|
-
}) {
|
52
|
-
}
|
53
|
-
|
54
|
-
/**
|
55
|
-
* Constructs a new PosionPill
|
56
|
-
*
|
57
|
-
* @since 1.0.0
|
58
|
-
* @category constructors
|
59
|
-
*/
|
60
|
-
export const make: Effect.Effect<PoisonPill> = Effect.succeed(
|
61
|
-
new PoisonPill({ [PoisonPillTypeId]: PoisonPillTypeId })
|
62
|
-
)
|
63
|
-
|
64
|
-
/**
|
65
|
-
* Checks if the given value is a PoisonPill.
|
66
|
-
*
|
67
|
-
* @since 1.0.0
|
68
|
-
* @category utils
|
69
|
-
*/
|
70
|
-
export function isPoisonPill(value: unknown): value is PoisonPill {
|
71
|
-
return (
|
72
|
-
typeof value === "object" &&
|
73
|
-
value !== null &&
|
74
|
-
PoisonPillTypeId in value &&
|
75
|
-
value[PoisonPillTypeId] === PoisonPillTypeId
|
76
|
-
)
|
77
|
-
}
|
78
|
-
|
79
|
-
/**
|
80
|
-
* This is the schema for a PoisonPill that is used to encode the value over the wire.
|
81
|
-
* This is useful if you want a behavior that can be shut down from an external message.
|
82
|
-
*
|
83
|
-
* @since 1.0.0
|
84
|
-
* @category schema
|
85
|
-
*/
|
86
|
-
export const schema: Schema.Schema<
|
87
|
-
PoisonPill,
|
88
|
-
PoisonPill.Encoded
|
89
|
-
> = Schema.asSchema(PoisonPill)
|
90
|
-
|
91
|
-
/**
|
92
|
-
* Attempts to take a message from the queue in the same way Queue.take does.
|
93
|
-
* If the result is a PoisonPill, it will interrupt the effect.
|
94
|
-
*
|
95
|
-
* @since 1.0.0
|
96
|
-
* @category utils
|
97
|
-
*/
|
98
|
-
export function takeOrInterrupt<Req>(
|
99
|
-
dequeue: Queue.Dequeue<Req | PoisonPill>
|
100
|
-
): Effect.Effect<Req> {
|
101
|
-
return pipe(
|
102
|
-
Queue.take(dequeue),
|
103
|
-
Effect.flatMap((msg) => isPoisonPill(msg) ? Effect.interrupt : Effect.succeed(msg))
|
104
|
-
)
|
105
|
-
}
|
package/src/RecipientAddress.ts
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @since 1.0.0
|
3
|
-
*/
|
4
|
-
import * as Equal from "effect/Equal"
|
5
|
-
import * as Hash from "effect/Hash"
|
6
|
-
import * as Schema from "effect/Schema"
|
7
|
-
import { TypeIdSchema } from "./internal/utils.js"
|
8
|
-
|
9
|
-
const RecipientAddressSymbolKey = "@effect/cluster/RecipientAddress"
|
10
|
-
|
11
|
-
/**
|
12
|
-
* @since 1.0.0
|
13
|
-
* @category symbols
|
14
|
-
*/
|
15
|
-
export const RecipientAddressTypeId: unique symbol = Symbol.for(RecipientAddressSymbolKey)
|
16
|
-
|
17
|
-
/** @internal */
|
18
|
-
const RecipientAddressTypeIdSchema = TypeIdSchema(RecipientAddressSymbolKey, RecipientAddressTypeId)
|
19
|
-
|
20
|
-
/**
|
21
|
-
* A RecipientAddress uniquely identifies a RecipientType + EntityId instance.
|
22
|
-
*
|
23
|
-
* @since 1.0.0
|
24
|
-
* @category models
|
25
|
-
*/
|
26
|
-
export class RecipientAddress extends Schema.Class<RecipientAddress>(RecipientAddressSymbolKey)({
|
27
|
-
[RecipientAddressTypeId]: Schema.propertySignature(RecipientAddressTypeIdSchema).pipe(
|
28
|
-
Schema.fromKey(RecipientAddressSymbolKey)
|
29
|
-
),
|
30
|
-
recipientTypeName: Schema.String,
|
31
|
-
entityId: Schema.String
|
32
|
-
}) {
|
33
|
-
/**
|
34
|
-
* @since 1.0.0
|
35
|
-
*/
|
36
|
-
[Hash.symbol](): number {
|
37
|
-
return Hash.structure({ recipientTypeName: this.recipientTypeName, entityId: this.entityId })
|
38
|
-
}
|
39
|
-
|
40
|
-
/**
|
41
|
-
* @since 1.0.0
|
42
|
-
*/
|
43
|
-
[Equal.symbol](this: RecipientAddress, that: Equal.Equal): boolean {
|
44
|
-
if (isRecipientAddress(that)) {
|
45
|
-
return this.recipientTypeName === that.recipientTypeName && this.entityId === that.entityId
|
46
|
-
}
|
47
|
-
return false
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
/**
|
52
|
-
* Ensure that given value is a RecipientAddress
|
53
|
-
* @since 1.0.0
|
54
|
-
* @category constructors
|
55
|
-
*/
|
56
|
-
export function isRecipientAddress(value: unknown): value is RecipientAddress {
|
57
|
-
return typeof value === "object" && value !== null && RecipientAddressTypeId in value &&
|
58
|
-
value[RecipientAddressTypeId] === RecipientAddressTypeId
|
59
|
-
}
|
60
|
-
|
61
|
-
/**
|
62
|
-
* Given a name and a schema for the protocol, constructs an EntityType.
|
63
|
-
*
|
64
|
-
* @since 1.0.0
|
65
|
-
* @category constructors
|
66
|
-
*/
|
67
|
-
export function makeRecipientAddress(
|
68
|
-
recipientTypeName: string,
|
69
|
-
entityId: string
|
70
|
-
): RecipientAddress {
|
71
|
-
return new RecipientAddress({ [RecipientAddressTypeId]: RecipientAddressTypeId, recipientTypeName, entityId })
|
72
|
-
}
|
@@ -1,108 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @since 1.0.0
|
3
|
-
*/
|
4
|
-
import type * as Message from "@effect/cluster/Message"
|
5
|
-
import type * as Duration from "effect/Duration"
|
6
|
-
import type * as Effect from "effect/Effect"
|
7
|
-
import type * as Option from "effect/Option"
|
8
|
-
import type * as Queue from "effect/Queue"
|
9
|
-
import type * as Ref from "effect/Ref"
|
10
|
-
import type * as Scope from "effect/Scope"
|
11
|
-
import * as internal from "./internal/recipientBehaviour.js"
|
12
|
-
import type * as MessageState from "./MessageState.js"
|
13
|
-
import type * as PoisonPill from "./PoisonPill.js"
|
14
|
-
import type * as RecipientBehaviourContext from "./RecipientBehaviourContext.js"
|
15
|
-
import type * as ShardingException from "./ShardingException.js"
|
16
|
-
|
17
|
-
/**
|
18
|
-
* A RecipientBehaviour describes how a specific RecipientType should behave.
|
19
|
-
* This is the actual implementation of what an entity should do upon receiving a Msg,
|
20
|
-
* this could require additional context.
|
21
|
-
*
|
22
|
-
* The scope provided in the context is controlled by the cluster EntityManager,
|
23
|
-
* and is used to request the shoutdown of the entity,
|
24
|
-
* so you can safely scope whatever resource you want to use for your behaviour
|
25
|
-
* and the EntityManager will close the scope for you when the entity is shoutdown.
|
26
|
-
*
|
27
|
-
* The function returned by the RecipientBehaviour effect is what we call "offer" effect.
|
28
|
-
* The offer effect is used by the EntityManager to give messages to the RecipientBehaviour.
|
29
|
-
*
|
30
|
-
* @since 1.0.0
|
31
|
-
* @category models
|
32
|
-
*/
|
33
|
-
export interface RecipientBehaviour<Msg, R> extends
|
34
|
-
Effect.Effect<
|
35
|
-
<A extends Msg>(
|
36
|
-
message: A
|
37
|
-
) => Effect.Effect<
|
38
|
-
MessageState.MessageState<Message.Message.Exit<A>>,
|
39
|
-
ShardingException.ExceptionWhileOfferingMessageException
|
40
|
-
>,
|
41
|
-
never,
|
42
|
-
R | RecipientBehaviourContext.RecipientBehaviourContext | Scope.Scope
|
43
|
-
>
|
44
|
-
{}
|
45
|
-
|
46
|
-
/**
|
47
|
-
* This are the options for an EntityBehaviour. This controls the entityMaxIdleTime,
|
48
|
-
* check out more on that over the ShardingConfig.
|
49
|
-
* This allows to override the setting for a specific entity.
|
50
|
-
*
|
51
|
-
* @since 1.0.0
|
52
|
-
* @category utils
|
53
|
-
*/
|
54
|
-
export type EntityBehaviourOptions = {
|
55
|
-
entityMaxIdleTime?: Option.Option<Duration.Duration>
|
56
|
-
}
|
57
|
-
|
58
|
-
/**
|
59
|
-
* This is the simplest behaviour you can have.
|
60
|
-
* You provide a function that given the entityId and the message, it will immediatly process it.
|
61
|
-
* You are then required to return a MessageState to tell the caller
|
62
|
-
* if the message has just arrived and will be later processed or it has been processed.
|
63
|
-
*
|
64
|
-
* @since 1.0.0
|
65
|
-
* @category utils
|
66
|
-
*/
|
67
|
-
export const fromFunctionEffect: <Msg extends Message.Message.Any, R>(
|
68
|
-
handler: (
|
69
|
-
entityId: string,
|
70
|
-
message: Msg
|
71
|
-
) => Effect.Effect<MessageState.MessageState<Message.Message.Exit<Msg>>, never, R>
|
72
|
-
) => RecipientBehaviour<Msg, R> = internal.fromFunctionEffect
|
73
|
-
|
74
|
-
/**
|
75
|
-
* This is a stateful version of fromFunctionEffect.
|
76
|
-
* You can provide a function to get the initialState, and then it will be passed as Ref.
|
77
|
-
* Everything here is just stored in memory, so eventual persistence of the state is up to you!
|
78
|
-
*
|
79
|
-
* @since 1.0.0
|
80
|
-
* @category utils
|
81
|
-
*/
|
82
|
-
export const fromFunctionEffectStateful: <S, R, Msg extends Message.Message.Any, R2>(
|
83
|
-
initialState: (entityId: string) => Effect.Effect<S, never, R>,
|
84
|
-
handler: (
|
85
|
-
entityId: string,
|
86
|
-
message: Msg,
|
87
|
-
stateRef: Ref.Ref<S>
|
88
|
-
) => Effect.Effect<MessageState.MessageState<Message.Message.Exit<Msg>>, never, R2>
|
89
|
-
) => RecipientBehaviour<Msg, R | R2> = internal.fromFunctionEffectStateful
|
90
|
-
|
91
|
-
/**
|
92
|
-
* This behaviour uses a Queue where the entity will accumulate messages to be processed,
|
93
|
-
* and then you can use the Dequeue to take messages and process them.
|
94
|
-
* A PoisonPill is provided to request interruption of the entity behaviour.
|
95
|
-
*
|
96
|
-
* @since 1.0.0
|
97
|
-
* @category utils
|
98
|
-
*/
|
99
|
-
export const fromInMemoryQueue: <Msg extends Message.Message.Any, R>(
|
100
|
-
handler: (
|
101
|
-
entityId: string,
|
102
|
-
dequeue: Queue.Dequeue<Msg | PoisonPill.PoisonPill>,
|
103
|
-
processed: <A extends Msg>(
|
104
|
-
message: A,
|
105
|
-
value: Option.Option<Message.Message.Exit<A>>
|
106
|
-
) => Effect.Effect<void, never, never>
|
107
|
-
) => Effect.Effect<void, never, R>
|
108
|
-
) => RecipientBehaviour<Msg, R> = internal.fromInMemoryQueue
|
@@ -1,101 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @since 1.0.0
|
3
|
-
*/
|
4
|
-
import type * as Context from "effect/Context"
|
5
|
-
import type * as Effect from "effect/Effect"
|
6
|
-
import * as internal from "./internal/recipientBehaviourContext.js"
|
7
|
-
import type * as Message from "./Message.js"
|
8
|
-
import type * as RecipientAddress from "./RecipientAddress.js"
|
9
|
-
import type * as RecipientType from "./RecipientType.js"
|
10
|
-
import type * as ShardId from "./ShardId.js"
|
11
|
-
|
12
|
-
/**
|
13
|
-
* @since 1.0.0
|
14
|
-
* @category symbols
|
15
|
-
*/
|
16
|
-
export const RecipientBehaviourContextTypeId: unique symbol = internal.RecipientBehaviourContextTypeId
|
17
|
-
|
18
|
-
/**
|
19
|
-
* @since 1.0.0
|
20
|
-
* @category symbols
|
21
|
-
*/
|
22
|
-
export type RecipientBehaviourContextTypeId = typeof RecipientBehaviourContextTypeId
|
23
|
-
|
24
|
-
/**
|
25
|
-
* This is the context information that is available to the RecipientBehaviour and has general informations
|
26
|
-
* about this specific entity, like the entityId or the recipientType.
|
27
|
-
*
|
28
|
-
* @since 1.0.0
|
29
|
-
* @category models
|
30
|
-
*/
|
31
|
-
export interface RecipientBehaviourContext {
|
32
|
-
readonly [RecipientBehaviourContextTypeId]: RecipientBehaviourContextTypeId
|
33
|
-
readonly recipientAddress: RecipientAddress.RecipientAddress
|
34
|
-
readonly shardId: ShardId.ShardId
|
35
|
-
readonly recipientType: RecipientType.RecipientType<Message.Message.Any>
|
36
|
-
readonly forkShutdown: Effect.Effect<void>
|
37
|
-
}
|
38
|
-
|
39
|
-
/**
|
40
|
-
* A tag to access current RecipientBehaviourContext
|
41
|
-
*
|
42
|
-
* @since 1.0.0
|
43
|
-
* @category context
|
44
|
-
*/
|
45
|
-
export const RecipientBehaviourContext: Context.Tag<RecipientBehaviourContext, RecipientBehaviourContext> =
|
46
|
-
internal.recipientBehaviourContextTag
|
47
|
-
|
48
|
-
/**
|
49
|
-
* Creates a new RecipientBehaviourContext
|
50
|
-
*
|
51
|
-
* @since 1.0.0
|
52
|
-
* @category constructors
|
53
|
-
*/
|
54
|
-
export const make: (
|
55
|
-
args: Omit<RecipientBehaviourContext, typeof RecipientBehaviourContextTypeId>
|
56
|
-
) => RecipientBehaviourContext = internal.make
|
57
|
-
|
58
|
-
/**
|
59
|
-
* Gets the current entityId
|
60
|
-
*
|
61
|
-
* @since 1.0.0
|
62
|
-
* @category utils
|
63
|
-
*/
|
64
|
-
export const entityId: Effect.Effect<string, never, RecipientBehaviourContext> = internal.entityId
|
65
|
-
|
66
|
-
/**
|
67
|
-
* Gets the current entityId
|
68
|
-
*
|
69
|
-
* @since 1.0.0
|
70
|
-
* @category utils
|
71
|
-
*/
|
72
|
-
export const recipientAddress: Effect.Effect<RecipientAddress.RecipientAddress, never, RecipientBehaviourContext> =
|
73
|
-
internal.recipientAddress
|
74
|
-
|
75
|
-
/**
|
76
|
-
* Gets the current shardId
|
77
|
-
*
|
78
|
-
* @since 1.0.0
|
79
|
-
* @category utils
|
80
|
-
*/
|
81
|
-
export const shardId: Effect.Effect<ShardId.ShardId, never, RecipientBehaviourContext> = internal.shardId
|
82
|
-
|
83
|
-
/**
|
84
|
-
* Gets the current recipientType
|
85
|
-
*
|
86
|
-
* @since 1.0.0
|
87
|
-
* @category utils
|
88
|
-
*/
|
89
|
-
export const recipientType: Effect.Effect<
|
90
|
-
RecipientType.RecipientType<Message.Message.Any>,
|
91
|
-
never,
|
92
|
-
RecipientBehaviourContext
|
93
|
-
> = internal.recipientType
|
94
|
-
|
95
|
-
/**
|
96
|
-
* Forks the shutdown of the current recipient behaviour as soon as possible.
|
97
|
-
*
|
98
|
-
* @since 1.0.0
|
99
|
-
* @category utils
|
100
|
-
*/
|
101
|
-
export const forkShutdown: Effect.Effect<void, never, RecipientBehaviourContext> = internal.forkShutdown
|
package/src/RecipientType.ts
DELETED
@@ -1,134 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @since 1.0.0
|
3
|
-
*/
|
4
|
-
import * as Data from "effect/Data"
|
5
|
-
import * as Equal from "effect/Equal"
|
6
|
-
import * as Hash from "effect/Hash"
|
7
|
-
import type * as Schema from "effect/Schema"
|
8
|
-
import type * as Message from "./Message.js"
|
9
|
-
import * as ShardId from "./ShardId.js"
|
10
|
-
|
11
|
-
const RecipientTypeSymbolKey = "@effect/cluster/RecipientType"
|
12
|
-
|
13
|
-
/**
|
14
|
-
* @since 1.0.0
|
15
|
-
* @category symbols
|
16
|
-
*/
|
17
|
-
export const RecipientTypeTypeId: unique symbol = Symbol.for(RecipientTypeSymbolKey)
|
18
|
-
|
19
|
-
/**
|
20
|
-
* An EntityType is a RecipientType that is ensured to be alive only on a single Pod at a time.
|
21
|
-
*
|
22
|
-
* @since 1.0.0
|
23
|
-
* @category models
|
24
|
-
*/
|
25
|
-
export class EntityType<Msg extends Message.Message.Any> extends Data.TaggedClass("EntityType")<{
|
26
|
-
readonly name: string
|
27
|
-
readonly schema: Schema.Schema<Msg, unknown>
|
28
|
-
}> {
|
29
|
-
/**
|
30
|
-
* @since 1.0.0
|
31
|
-
*/
|
32
|
-
readonly [RecipientTypeTypeId] = RecipientTypeTypeId;
|
33
|
-
|
34
|
-
/**
|
35
|
-
* @since 1.0.0
|
36
|
-
*/
|
37
|
-
[Hash.symbol](): number {
|
38
|
-
return Hash.structure({ _tag: this._tag, name: this.name })
|
39
|
-
}
|
40
|
-
|
41
|
-
/**
|
42
|
-
* @since 1.0.0
|
43
|
-
*/
|
44
|
-
[Equal.symbol](this: TopicType<Msg>, that: Equal.Equal): boolean {
|
45
|
-
if (isRecipientType(that)) {
|
46
|
-
return this._tag === that._tag && this.name === that.name
|
47
|
-
}
|
48
|
-
return false
|
49
|
-
}
|
50
|
-
}
|
51
|
-
|
52
|
-
/**
|
53
|
-
* A TopicType can live on multiple Pods at the same time.
|
54
|
-
*
|
55
|
-
* @since 1.0.0
|
56
|
-
* @category models
|
57
|
-
*/
|
58
|
-
export class TopicType<Msg extends Message.Message.Any> extends Data.TaggedClass("TopicType")<{
|
59
|
-
readonly name: string
|
60
|
-
readonly schema: Schema.Schema<Msg, unknown>
|
61
|
-
}> {
|
62
|
-
/**
|
63
|
-
* @since 1.0.0
|
64
|
-
*/
|
65
|
-
readonly [RecipientTypeTypeId] = RecipientTypeTypeId;
|
66
|
-
|
67
|
-
/**
|
68
|
-
* @since 1.0.0
|
69
|
-
*/
|
70
|
-
[Hash.symbol](): number {
|
71
|
-
return Hash.structure({ _tag: this._tag, name: this.name })
|
72
|
-
}
|
73
|
-
|
74
|
-
/**
|
75
|
-
* @since 1.0.0
|
76
|
-
*/
|
77
|
-
[Equal.symbol](this: EntityType<Msg>, that: Equal.Equal): boolean {
|
78
|
-
if (isRecipientType(that)) {
|
79
|
-
return this._tag === that._tag && this.name === that.name
|
80
|
-
}
|
81
|
-
return false
|
82
|
-
}
|
83
|
-
}
|
84
|
-
|
85
|
-
/**
|
86
|
-
* A RecipientType is basically a pointer to a logical grouping of multiple enties having the same RecipientBehaviour.
|
87
|
-
* This value is required to be able to message with an entity/topic since it holds the Schema for the messages over the wire.
|
88
|
-
* Without the schema, you cannot ensure that the messages sent are what the receiver expects.
|
89
|
-
* Ideally, you can share this definition between the caller and the receiver.
|
90
|
-
*
|
91
|
-
* @since 1.0.0
|
92
|
-
* @category models
|
93
|
-
*/
|
94
|
-
export type RecipientType<Msg extends Message.Message.Any> = EntityType<Msg> | TopicType<Msg>
|
95
|
-
|
96
|
-
/**
|
97
|
-
* Ensure that given value is a RecipientType
|
98
|
-
* @since 1.0.0
|
99
|
-
* @category constructors
|
100
|
-
*/
|
101
|
-
export function isRecipientType<A extends Message.Message.Any>(value: unknown): value is RecipientType<A> {
|
102
|
-
return typeof value === "object" && value !== null && RecipientTypeTypeId in value &&
|
103
|
-
value[RecipientTypeTypeId] === RecipientTypeTypeId
|
104
|
-
}
|
105
|
-
|
106
|
-
/**
|
107
|
-
* Given a name and a schema for the protocol, constructs an EntityType.
|
108
|
-
*
|
109
|
-
* @since 1.0.0
|
110
|
-
* @category constructors
|
111
|
-
*/
|
112
|
-
export function makeEntityType<Msg extends Message.Message.Any, I>(
|
113
|
-
name: string,
|
114
|
-
schema: Schema.Schema<Msg, I>
|
115
|
-
): EntityType<Msg> {
|
116
|
-
return new EntityType({ name, schema: schema as any })
|
117
|
-
}
|
118
|
-
|
119
|
-
/**
|
120
|
-
* Given a name and a schema for the protocol, constructs an TopicType.
|
121
|
-
*
|
122
|
-
* @since 1.0.0
|
123
|
-
* @category constructors
|
124
|
-
*/
|
125
|
-
export function makeTopicType<Msg extends Message.Message.Any, I>(
|
126
|
-
name: string,
|
127
|
-
schema: Schema.Schema<Msg, I>
|
128
|
-
): TopicType<Msg> {
|
129
|
-
return new TopicType({ name, schema: schema as any })
|
130
|
-
}
|
131
|
-
|
132
|
-
/** @internal */
|
133
|
-
export const getShardId = (entityId: string, numberOfShards: number): ShardId.ShardId =>
|
134
|
-
ShardId.make(Math.abs(Hash.string(entityId) % numberOfShards) + 1)
|
package/src/Serialization.ts
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @since 1.0.0
|
3
|
-
*/
|
4
|
-
import type * as Context from "effect/Context"
|
5
|
-
import type * as Effect from "effect/Effect"
|
6
|
-
import type * as Layer from "effect/Layer"
|
7
|
-
import type * as Schema from "effect/Schema"
|
8
|
-
import * as internal from "./internal/serialization.js"
|
9
|
-
import type * as SerializedMessage from "./SerializedMessage.js"
|
10
|
-
import type * as ShardingException from "./ShardingException.js"
|
11
|
-
|
12
|
-
/**
|
13
|
-
* @since 1.0.0
|
14
|
-
* @category symbols
|
15
|
-
*/
|
16
|
-
export const SerializationTypeId: unique symbol = internal.SerializationTypeId
|
17
|
-
|
18
|
-
/**
|
19
|
-
* @since 1.0.0
|
20
|
-
* @category symbols
|
21
|
-
*/
|
22
|
-
export type SerializationTypeId = typeof SerializationTypeId
|
23
|
-
|
24
|
-
/**
|
25
|
-
* An interface to serialize user messages that will be sent between pods.
|
26
|
-
* @since 1.0.0
|
27
|
-
* @category models
|
28
|
-
*/
|
29
|
-
export interface Serialization {
|
30
|
-
/**
|
31
|
-
* @since 1.0.0
|
32
|
-
*/
|
33
|
-
readonly [SerializationTypeId]: SerializationTypeId
|
34
|
-
|
35
|
-
/**
|
36
|
-
* Transforms the given message into binary
|
37
|
-
* @since 1.0.0
|
38
|
-
*/
|
39
|
-
readonly encode: <A, I>(
|
40
|
-
schema: Schema.Schema<A, I>,
|
41
|
-
message: A
|
42
|
-
) => Effect.Effect<SerializedMessage.SerializedMessage, ShardingException.SerializationException>
|
43
|
-
|
44
|
-
/**
|
45
|
-
* Transform binary back into the given type
|
46
|
-
* @since 1.0.0
|
47
|
-
*/
|
48
|
-
readonly decode: <A, I>(
|
49
|
-
schema: Schema.Schema<A, I>,
|
50
|
-
bytes: SerializedMessage.SerializedMessage
|
51
|
-
) => Effect.Effect<A, ShardingException.SerializationException>
|
52
|
-
}
|
53
|
-
|
54
|
-
/**
|
55
|
-
* @since 1.0.0
|
56
|
-
* @category context
|
57
|
-
*/
|
58
|
-
export const Serialization: Context.Tag<Serialization, Serialization> = internal.serializationTag
|
59
|
-
|
60
|
-
/**
|
61
|
-
* @since 1.0.0
|
62
|
-
* @category constructors
|
63
|
-
*/
|
64
|
-
export const make: (args: Omit<Serialization, typeof SerializationTypeId>) => Serialization = internal.make
|
65
|
-
|
66
|
-
/**
|
67
|
-
* A layer that uses JSON serialization for encoding and decoding messages.
|
68
|
-
* This is useful for testing and not recommended to use in production.
|
69
|
-
* @since 1.0.0
|
70
|
-
* @category layers
|
71
|
-
*/
|
72
|
-
export const json: Layer.Layer<Serialization> = internal.json
|
@@ -1,108 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @since 1.0.0
|
3
|
-
*/
|
4
|
-
import * as PrimaryKey from "effect/PrimaryKey"
|
5
|
-
import * as Schema from "effect/Schema"
|
6
|
-
import { TypeIdSchema } from "./internal/utils.js"
|
7
|
-
import * as RecipientAddress from "./RecipientAddress.js"
|
8
|
-
import * as SerializedMessage from "./SerializedMessage.js"
|
9
|
-
|
10
|
-
/** @internal */
|
11
|
-
const SerializedEnvelopeSymbolKey = "@effect/cluster/SerializedEnvelope"
|
12
|
-
|
13
|
-
/**
|
14
|
-
* @since 1.0.0
|
15
|
-
* @category symbols
|
16
|
-
*/
|
17
|
-
export const SerializedEnvelopeTypeId: unique symbol = Symbol.for(SerializedEnvelopeSymbolKey)
|
18
|
-
|
19
|
-
/** @internal */
|
20
|
-
const SerializedEnvelopeTypeIdSchema = TypeIdSchema(SerializedEnvelopeSymbolKey, SerializedEnvelopeTypeId)
|
21
|
-
|
22
|
-
/**
|
23
|
-
* @since 1.0.0
|
24
|
-
* @category symbols
|
25
|
-
*/
|
26
|
-
export type SerializedEnvelopeTypeId = typeof SerializedEnvelopeTypeId
|
27
|
-
|
28
|
-
/**
|
29
|
-
* A SerializedEnvelope is the message that goes over the wire between pods.
|
30
|
-
* Inside the Envelope, you have the encoded messages, plus some informations on where it should be routed to.
|
31
|
-
*
|
32
|
-
* @since 1.0.0
|
33
|
-
* @category models
|
34
|
-
*/
|
35
|
-
export class SerializedEnvelope extends Schema.Class<SerializedEnvelope>(SerializedEnvelopeSymbolKey)({
|
36
|
-
[SerializedEnvelopeTypeId]: Schema.propertySignature(SerializedEnvelopeTypeIdSchema).pipe(
|
37
|
-
Schema.fromKey(SerializedEnvelopeSymbolKey)
|
38
|
-
),
|
39
|
-
recipientAddress: RecipientAddress.RecipientAddress,
|
40
|
-
messageId: Schema.String,
|
41
|
-
body: SerializedMessage.schema
|
42
|
-
}) {
|
43
|
-
get [Schema.symbolSerializable]() {
|
44
|
-
return this.constructor
|
45
|
-
}
|
46
|
-
get [Schema.symbolWithResult]() {
|
47
|
-
return { Success: Schema.Void, Failure: Schema.Never }
|
48
|
-
}
|
49
|
-
get [PrimaryKey.symbol]() {
|
50
|
-
return this.messageId + "@" + this.recipientAddress.recipientTypeName + "#" + this.recipientAddress.entityId
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
/**
|
55
|
-
* @since 1.0.0
|
56
|
-
* @category models
|
57
|
-
*/
|
58
|
-
export namespace SerializedEnvelope {
|
59
|
-
/**
|
60
|
-
* @since 1.0.0
|
61
|
-
* @category models
|
62
|
-
*/
|
63
|
-
export interface Encoded extends Schema.Schema.Encoded<typeof SerializedEnvelope> {}
|
64
|
-
}
|
65
|
-
|
66
|
-
/**
|
67
|
-
* Construct a new `SerializedEnvelope`
|
68
|
-
*
|
69
|
-
* @since 1.0.0
|
70
|
-
* @category constructors
|
71
|
-
*/
|
72
|
-
export function make(
|
73
|
-
recipientAddress: RecipientAddress.RecipientAddress,
|
74
|
-
messageId: string,
|
75
|
-
body: SerializedMessage.SerializedMessage
|
76
|
-
): SerializedEnvelope {
|
77
|
-
return new SerializedEnvelope({
|
78
|
-
[SerializedEnvelopeTypeId]: SerializedEnvelopeTypeId,
|
79
|
-
messageId,
|
80
|
-
recipientAddress,
|
81
|
-
body
|
82
|
-
})
|
83
|
-
}
|
84
|
-
|
85
|
-
/**
|
86
|
-
* Ensures that the given value is a SerializedEnvelope.
|
87
|
-
*
|
88
|
-
* @since 1.0.0
|
89
|
-
* @category utils
|
90
|
-
*/
|
91
|
-
export function isSerializedEnvelope(value: unknown): value is SerializedEnvelope {
|
92
|
-
return (
|
93
|
-
typeof value === "object" &&
|
94
|
-
value !== null &&
|
95
|
-
SerializedEnvelopeTypeId in value &&
|
96
|
-
value[SerializedEnvelopeTypeId] === SerializedEnvelopeTypeId
|
97
|
-
)
|
98
|
-
}
|
99
|
-
|
100
|
-
/**
|
101
|
-
* This is the schema for a value.
|
102
|
-
*
|
103
|
-
* @since 1.0.0
|
104
|
-
* @category schema
|
105
|
-
*/
|
106
|
-
export const schema: Schema.Schema<SerializedEnvelope, SerializedEnvelope.Encoded, never> = Schema.asSchema(
|
107
|
-
SerializedEnvelope
|
108
|
-
)
|