@effect/cluster 0.0.0-snapshot-d33d8b050b8e3c87dcde9587083e6c1cf733f72b

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.
Files changed (375) hide show
  1. package/AtLeastOnce/package.json +6 -0
  2. package/AtLeastOnceStorage/package.json +6 -0
  3. package/Broadcaster/package.json +6 -0
  4. package/LICENSE +21 -0
  5. package/ManagerConfig/package.json +6 -0
  6. package/Message/package.json +6 -0
  7. package/MessageState/package.json +6 -0
  8. package/Messenger/package.json +6 -0
  9. package/Pod/package.json +6 -0
  10. package/PodAddress/package.json +6 -0
  11. package/Pods/package.json +6 -0
  12. package/PodsHealth/package.json +6 -0
  13. package/PoisonPill/package.json +6 -0
  14. package/README.md +3 -0
  15. package/RecipientAddress/package.json +6 -0
  16. package/RecipientBehaviour/package.json +6 -0
  17. package/RecipientBehaviourContext/package.json +6 -0
  18. package/RecipientType/package.json +6 -0
  19. package/Serialization/package.json +6 -0
  20. package/SerializedEnvelope/package.json +6 -0
  21. package/SerializedMessage/package.json +6 -0
  22. package/ShardId/package.json +6 -0
  23. package/ShardManager/package.json +6 -0
  24. package/ShardManagerClient/package.json +6 -0
  25. package/Sharding/package.json +6 -0
  26. package/ShardingConfig/package.json +6 -0
  27. package/ShardingEvent/package.json +6 -0
  28. package/ShardingException/package.json +6 -0
  29. package/ShardingRegistrationEvent/package.json +6 -0
  30. package/Storage/package.json +6 -0
  31. package/dist/cjs/AtLeastOnce.js +43 -0
  32. package/dist/cjs/AtLeastOnce.js.map +1 -0
  33. package/dist/cjs/AtLeastOnceStorage.js +48 -0
  34. package/dist/cjs/AtLeastOnceStorage.js.map +1 -0
  35. package/dist/cjs/Broadcaster.js +6 -0
  36. package/dist/cjs/Broadcaster.js.map +1 -0
  37. package/dist/cjs/ManagerConfig.js +57 -0
  38. package/dist/cjs/ManagerConfig.js.map +1 -0
  39. package/dist/cjs/Message.js +64 -0
  40. package/dist/cjs/Message.js.map +1 -0
  41. package/dist/cjs/MessageState.js +78 -0
  42. package/dist/cjs/MessageState.js.map +1 -0
  43. package/dist/cjs/Messenger.js +6 -0
  44. package/dist/cjs/Messenger.js.map +1 -0
  45. package/dist/cjs/Pod.js +101 -0
  46. package/dist/cjs/Pod.js.map +1 -0
  47. package/dist/cjs/PodAddress.js +100 -0
  48. package/dist/cjs/PodAddress.js.map +1 -0
  49. package/dist/cjs/Pods.js +58 -0
  50. package/dist/cjs/Pods.js.map +1 -0
  51. package/dist/cjs/PodsHealth.js +64 -0
  52. package/dist/cjs/PodsHealth.js.map +1 -0
  53. package/dist/cjs/PoisonPill.js +101 -0
  54. package/dist/cjs/PoisonPill.js.map +1 -0
  55. package/dist/cjs/RecipientAddress.js +102 -0
  56. package/dist/cjs/RecipientAddress.js.map +1 -0
  57. package/dist/cjs/RecipientBehaviour.js +61 -0
  58. package/dist/cjs/RecipientBehaviour.js.map +1 -0
  59. package/dist/cjs/RecipientBehaviourContext.js +87 -0
  60. package/dist/cjs/RecipientBehaviourContext.js.map +1 -0
  61. package/dist/cjs/RecipientType.js +142 -0
  62. package/dist/cjs/RecipientType.js.map +1 -0
  63. package/dist/cjs/Serialization.js +55 -0
  64. package/dist/cjs/Serialization.js.map +1 -0
  65. package/dist/cjs/SerializedEnvelope.js +111 -0
  66. package/dist/cjs/SerializedEnvelope.js.map +1 -0
  67. package/dist/cjs/SerializedMessage.js +87 -0
  68. package/dist/cjs/SerializedMessage.js.map +1 -0
  69. package/dist/cjs/ShardId.js +89 -0
  70. package/dist/cjs/ShardId.js.map +1 -0
  71. package/dist/cjs/ShardManager.js +48 -0
  72. package/dist/cjs/ShardManager.js.map +1 -0
  73. package/dist/cjs/ShardManagerClient.js +53 -0
  74. package/dist/cjs/ShardManagerClient.js.map +1 -0
  75. package/dist/cjs/Sharding.js +129 -0
  76. package/dist/cjs/Sharding.js.map +1 -0
  77. package/dist/cjs/ShardingConfig.js +64 -0
  78. package/dist/cjs/ShardingConfig.js.map +1 -0
  79. package/dist/cjs/ShardingEvent.js +72 -0
  80. package/dist/cjs/ShardingEvent.js.map +1 -0
  81. package/dist/cjs/ShardingException.js +130 -0
  82. package/dist/cjs/ShardingException.js.map +1 -0
  83. package/dist/cjs/ShardingRegistrationEvent.js +44 -0
  84. package/dist/cjs/ShardingRegistrationEvent.js.map +1 -0
  85. package/dist/cjs/Storage.js +63 -0
  86. package/dist/cjs/Storage.js.map +1 -0
  87. package/dist/cjs/index.js +88 -0
  88. package/dist/cjs/index.js.map +1 -0
  89. package/dist/cjs/internal/atLeastOnce.js +58 -0
  90. package/dist/cjs/internal/atLeastOnce.js.map +1 -0
  91. package/dist/cjs/internal/atLeastOnceStorage.js +186 -0
  92. package/dist/cjs/internal/atLeastOnceStorage.js.map +1 -0
  93. package/dist/cjs/internal/entityManager.js +191 -0
  94. package/dist/cjs/internal/entityManager.js.map +1 -0
  95. package/dist/cjs/internal/entityState.js +70 -0
  96. package/dist/cjs/internal/entityState.js.map +1 -0
  97. package/dist/cjs/internal/managerConfig.js +69 -0
  98. package/dist/cjs/internal/managerConfig.js.map +1 -0
  99. package/dist/cjs/internal/message.js +68 -0
  100. package/dist/cjs/internal/message.js.map +1 -0
  101. package/dist/cjs/internal/messageState.js +102 -0
  102. package/dist/cjs/internal/messageState.js.map +1 -0
  103. package/dist/cjs/internal/podWithMetadata.js +77 -0
  104. package/dist/cjs/internal/podWithMetadata.js.map +1 -0
  105. package/dist/cjs/internal/pods.js +58 -0
  106. package/dist/cjs/internal/pods.js.map +1 -0
  107. package/dist/cjs/internal/podsHealth.js +63 -0
  108. package/dist/cjs/internal/podsHealth.js.map +1 -0
  109. package/dist/cjs/internal/recipientBehaviour.js +75 -0
  110. package/dist/cjs/internal/recipientBehaviour.js.map +1 -0
  111. package/dist/cjs/internal/recipientBehaviourContext.js +59 -0
  112. package/dist/cjs/internal/recipientBehaviourContext.js.map +1 -0
  113. package/dist/cjs/internal/serialization.js +72 -0
  114. package/dist/cjs/internal/serialization.js.map +1 -0
  115. package/dist/cjs/internal/shardManager.js +291 -0
  116. package/dist/cjs/internal/shardManager.js.map +1 -0
  117. package/dist/cjs/internal/shardManagerClient.js +71 -0
  118. package/dist/cjs/internal/shardManagerClient.js.map +1 -0
  119. package/dist/cjs/internal/shardManagerState.js +67 -0
  120. package/dist/cjs/internal/shardManagerState.js.map +1 -0
  121. package/dist/cjs/internal/sharding.js +329 -0
  122. package/dist/cjs/internal/sharding.js.map +1 -0
  123. package/dist/cjs/internal/shardingConfig.js +79 -0
  124. package/dist/cjs/internal/shardingConfig.js.map +1 -0
  125. package/dist/cjs/internal/storage.js +75 -0
  126. package/dist/cjs/internal/storage.js.map +1 -0
  127. package/dist/cjs/internal/utils.js +92 -0
  128. package/dist/cjs/internal/utils.js.map +1 -0
  129. package/dist/dts/AtLeastOnce.d.ts +20 -0
  130. package/dist/dts/AtLeastOnce.d.ts.map +1 -0
  131. package/dist/dts/AtLeastOnceStorage.d.ts +75 -0
  132. package/dist/dts/AtLeastOnceStorage.d.ts.map +1 -0
  133. package/dist/dts/Broadcaster.d.ts +32 -0
  134. package/dist/dts/Broadcaster.d.ts.map +1 -0
  135. package/dist/dts/ManagerConfig.d.ts +61 -0
  136. package/dist/dts/ManagerConfig.d.ts.map +1 -0
  137. package/dist/dts/Message.d.ts +106 -0
  138. package/dist/dts/Message.d.ts.map +1 -0
  139. package/dist/dts/MessageState.d.ts +107 -0
  140. package/dist/dts/MessageState.d.ts.map +1 -0
  141. package/dist/dts/Messenger.d.ts +32 -0
  142. package/dist/dts/Messenger.d.ts.map +1 -0
  143. package/dist/dts/Pod.d.ts +81 -0
  144. package/dist/dts/Pod.d.ts.map +1 -0
  145. package/dist/dts/PodAddress.d.ts +80 -0
  146. package/dist/dts/PodAddress.d.ts.map +1 -0
  147. package/dist/dts/Pods.d.ts +78 -0
  148. package/dist/dts/Pods.d.ts.map +1 -0
  149. package/dist/dts/PodsHealth.d.ts +66 -0
  150. package/dist/dts/PodsHealth.d.ts.map +1 -0
  151. package/dist/dts/PoisonPill.d.ts +78 -0
  152. package/dist/dts/PoisonPill.d.ts.map +1 -0
  153. package/dist/dts/RecipientAddress.d.ts +57 -0
  154. package/dist/dts/RecipientAddress.d.ts.map +1 -0
  155. package/dist/dts/RecipientBehaviour.d.ts +72 -0
  156. package/dist/dts/RecipientBehaviour.d.ts.map +1 -0
  157. package/dist/dts/RecipientBehaviourContext.d.ts +83 -0
  158. package/dist/dts/RecipientBehaviourContext.d.ts.map +1 -0
  159. package/dist/dts/RecipientType.d.ts +96 -0
  160. package/dist/dts/RecipientType.d.ts.map +1 -0
  161. package/dist/dts/Serialization.d.ts +58 -0
  162. package/dist/dts/Serialization.d.ts.map +1 -0
  163. package/dist/dts/SerializedEnvelope.d.ts +87 -0
  164. package/dist/dts/SerializedEnvelope.d.ts.map +1 -0
  165. package/dist/dts/SerializedMessage.d.ts +66 -0
  166. package/dist/dts/SerializedMessage.d.ts.map +1 -0
  167. package/dist/dts/ShardId.d.ts +70 -0
  168. package/dist/dts/ShardId.d.ts.map +1 -0
  169. package/dist/dts/ShardManager.d.ts +44 -0
  170. package/dist/dts/ShardManager.d.ts.map +1 -0
  171. package/dist/dts/ShardManagerClient.d.ts +50 -0
  172. package/dist/dts/ShardManagerClient.d.ts.map +1 -0
  173. package/dist/dts/Sharding.d.ts +146 -0
  174. package/dist/dts/Sharding.d.ts.map +1 -0
  175. package/dist/dts/ShardingConfig.d.ts +69 -0
  176. package/dist/dts/ShardingConfig.d.ts.map +1 -0
  177. package/dist/dts/ShardingEvent.d.ts +90 -0
  178. package/dist/dts/ShardingEvent.d.ts.map +1 -0
  179. package/dist/dts/ShardingException.d.ts +125 -0
  180. package/dist/dts/ShardingException.d.ts.map +1 -0
  181. package/dist/dts/ShardingRegistrationEvent.d.ts +44 -0
  182. package/dist/dts/ShardingRegistrationEvent.d.ts.map +1 -0
  183. package/dist/dts/Storage.d.ts +78 -0
  184. package/dist/dts/Storage.d.ts.map +1 -0
  185. package/dist/dts/index.d.ts +113 -0
  186. package/dist/dts/index.d.ts.map +1 -0
  187. package/dist/dts/internal/atLeastOnce.d.ts +2 -0
  188. package/dist/dts/internal/atLeastOnce.d.ts.map +1 -0
  189. package/dist/dts/internal/atLeastOnceStorage.d.ts +2 -0
  190. package/dist/dts/internal/atLeastOnceStorage.d.ts.map +1 -0
  191. package/dist/dts/internal/entityManager.d.ts +2 -0
  192. package/dist/dts/internal/entityManager.d.ts.map +1 -0
  193. package/dist/dts/internal/entityState.d.ts +21 -0
  194. package/dist/dts/internal/entityState.d.ts.map +1 -0
  195. package/dist/dts/internal/managerConfig.d.ts +2 -0
  196. package/dist/dts/internal/managerConfig.d.ts.map +1 -0
  197. package/dist/dts/internal/message.d.ts +9 -0
  198. package/dist/dts/internal/message.d.ts.map +1 -0
  199. package/dist/dts/internal/messageState.d.ts +2 -0
  200. package/dist/dts/internal/messageState.d.ts.map +1 -0
  201. package/dist/dts/internal/podWithMetadata.d.ts +2 -0
  202. package/dist/dts/internal/podWithMetadata.d.ts.map +1 -0
  203. package/dist/dts/internal/pods.d.ts +2 -0
  204. package/dist/dts/internal/pods.d.ts.map +1 -0
  205. package/dist/dts/internal/podsHealth.d.ts +2 -0
  206. package/dist/dts/internal/podsHealth.d.ts.map +1 -0
  207. package/dist/dts/internal/recipientBehaviour.d.ts +2 -0
  208. package/dist/dts/internal/recipientBehaviour.d.ts.map +1 -0
  209. package/dist/dts/internal/recipientBehaviourContext.d.ts +2 -0
  210. package/dist/dts/internal/recipientBehaviourContext.d.ts.map +1 -0
  211. package/dist/dts/internal/serialization.d.ts +2 -0
  212. package/dist/dts/internal/serialization.d.ts.map +1 -0
  213. package/dist/dts/internal/shardManager.d.ts +12 -0
  214. package/dist/dts/internal/shardManager.d.ts.map +1 -0
  215. package/dist/dts/internal/shardManagerClient.d.ts +2 -0
  216. package/dist/dts/internal/shardManagerClient.d.ts.map +1 -0
  217. package/dist/dts/internal/shardManagerState.d.ts +26 -0
  218. package/dist/dts/internal/shardManagerState.d.ts.map +1 -0
  219. package/dist/dts/internal/sharding.d.ts +2 -0
  220. package/dist/dts/internal/sharding.d.ts.map +1 -0
  221. package/dist/dts/internal/shardingConfig.d.ts +2 -0
  222. package/dist/dts/internal/shardingConfig.d.ts.map +1 -0
  223. package/dist/dts/internal/storage.d.ts +2 -0
  224. package/dist/dts/internal/storage.d.ts.map +1 -0
  225. package/dist/dts/internal/utils.d.ts +2 -0
  226. package/dist/dts/internal/utils.d.ts.map +1 -0
  227. package/dist/esm/AtLeastOnce.js +12 -0
  228. package/dist/esm/AtLeastOnce.js.map +1 -0
  229. package/dist/esm/AtLeastOnceStorage.js +17 -0
  230. package/dist/esm/AtLeastOnceStorage.js.map +1 -0
  231. package/dist/esm/Broadcaster.js +2 -0
  232. package/dist/esm/Broadcaster.js.map +1 -0
  233. package/dist/esm/ManagerConfig.js +26 -0
  234. package/dist/esm/ManagerConfig.js.map +1 -0
  235. package/dist/esm/Message.js +33 -0
  236. package/dist/esm/Message.js.map +1 -0
  237. package/dist/esm/MessageState.js +47 -0
  238. package/dist/esm/MessageState.js.map +1 -0
  239. package/dist/esm/Messenger.js +2 -0
  240. package/dist/esm/Messenger.js.map +1 -0
  241. package/dist/esm/Pod.js +65 -0
  242. package/dist/esm/Pod.js.map +1 -0
  243. package/dist/esm/PodAddress.js +64 -0
  244. package/dist/esm/PodAddress.js.map +1 -0
  245. package/dist/esm/Pods.js +27 -0
  246. package/dist/esm/Pods.js.map +1 -0
  247. package/dist/esm/PodsHealth.js +33 -0
  248. package/dist/esm/PodsHealth.js.map +1 -0
  249. package/dist/esm/PoisonPill.js +65 -0
  250. package/dist/esm/PoisonPill.js.map +1 -0
  251. package/dist/esm/RecipientAddress.js +67 -0
  252. package/dist/esm/RecipientAddress.js.map +1 -0
  253. package/dist/esm/RecipientBehaviour.js +30 -0
  254. package/dist/esm/RecipientBehaviour.js.map +1 -0
  255. package/dist/esm/RecipientBehaviourContext.js +56 -0
  256. package/dist/esm/RecipientBehaviourContext.js.map +1 -0
  257. package/dist/esm/RecipientType.js +105 -0
  258. package/dist/esm/RecipientType.js.map +1 -0
  259. package/dist/esm/Serialization.js +24 -0
  260. package/dist/esm/Serialization.js.map +1 -0
  261. package/dist/esm/SerializedEnvelope.js +75 -0
  262. package/dist/esm/SerializedEnvelope.js.map +1 -0
  263. package/dist/esm/SerializedMessage.js +51 -0
  264. package/dist/esm/SerializedMessage.js.map +1 -0
  265. package/dist/esm/ShardId.js +54 -0
  266. package/dist/esm/ShardId.js.map +1 -0
  267. package/dist/esm/ShardManager.js +17 -0
  268. package/dist/esm/ShardManager.js.map +1 -0
  269. package/dist/esm/ShardManagerClient.js +22 -0
  270. package/dist/esm/ShardManagerClient.js.map +1 -0
  271. package/dist/esm/Sharding.js +98 -0
  272. package/dist/esm/Sharding.js.map +1 -0
  273. package/dist/esm/ShardingConfig.js +33 -0
  274. package/dist/esm/ShardingConfig.js.map +1 -0
  275. package/dist/esm/ShardingEvent.js +62 -0
  276. package/dist/esm/ShardingEvent.js.map +1 -0
  277. package/dist/esm/ShardingException.js +91 -0
  278. package/dist/esm/ShardingException.js.map +1 -0
  279. package/dist/esm/ShardingRegistrationEvent.js +36 -0
  280. package/dist/esm/ShardingRegistrationEvent.js.map +1 -0
  281. package/dist/esm/Storage.js +32 -0
  282. package/dist/esm/Storage.js.map +1 -0
  283. package/dist/esm/index.js +113 -0
  284. package/dist/esm/index.js.map +1 -0
  285. package/dist/esm/internal/atLeastOnce.js +26 -0
  286. package/dist/esm/internal/atLeastOnce.js.map +1 -0
  287. package/dist/esm/internal/atLeastOnceStorage.js +154 -0
  288. package/dist/esm/internal/atLeastOnceStorage.js.map +1 -0
  289. package/dist/esm/internal/entityManager.js +159 -0
  290. package/dist/esm/internal/entityManager.js.map +1 -0
  291. package/dist/esm/internal/entityState.js +35 -0
  292. package/dist/esm/internal/entityState.js.map +1 -0
  293. package/dist/esm/internal/managerConfig.js +38 -0
  294. package/dist/esm/internal/managerConfig.js.map +1 -0
  295. package/dist/esm/internal/message.js +32 -0
  296. package/dist/esm/internal/message.js.map +1 -0
  297. package/dist/esm/internal/messageState.js +66 -0
  298. package/dist/esm/internal/messageState.js.map +1 -0
  299. package/dist/esm/internal/podWithMetadata.js +41 -0
  300. package/dist/esm/internal/podWithMetadata.js.map +1 -0
  301. package/dist/esm/internal/pods.js +25 -0
  302. package/dist/esm/internal/pods.js.map +1 -0
  303. package/dist/esm/internal/podsHealth.js +30 -0
  304. package/dist/esm/internal/podsHealth.js.map +1 -0
  305. package/dist/esm/internal/recipientBehaviour.js +42 -0
  306. package/dist/esm/internal/recipientBehaviour.js.map +1 -0
  307. package/dist/esm/internal/recipientBehaviourContext.js +26 -0
  308. package/dist/esm/internal/recipientBehaviourContext.js.map +1 -0
  309. package/dist/esm/internal/serialization.js +39 -0
  310. package/dist/esm/internal/serialization.js.map +1 -0
  311. package/dist/esm/internal/shardManager.js +256 -0
  312. package/dist/esm/internal/shardManager.js.map +1 -0
  313. package/dist/esm/internal/shardManagerClient.js +38 -0
  314. package/dist/esm/internal/shardManagerClient.js.map +1 -0
  315. package/dist/esm/internal/shardManagerState.js +36 -0
  316. package/dist/esm/internal/shardManagerState.js.map +1 -0
  317. package/dist/esm/internal/sharding.js +288 -0
  318. package/dist/esm/internal/sharding.js.map +1 -0
  319. package/dist/esm/internal/shardingConfig.js +47 -0
  320. package/dist/esm/internal/shardingConfig.js.map +1 -0
  321. package/dist/esm/internal/storage.js +42 -0
  322. package/dist/esm/internal/storage.js.map +1 -0
  323. package/dist/esm/internal/utils.js +56 -0
  324. package/dist/esm/internal/utils.js.map +1 -0
  325. package/dist/esm/package.json +4 -0
  326. package/package.json +259 -0
  327. package/src/AtLeastOnce.ts +28 -0
  328. package/src/AtLeastOnceStorage.ts +96 -0
  329. package/src/Broadcaster.ts +48 -0
  330. package/src/ManagerConfig.ts +67 -0
  331. package/src/Message.ts +132 -0
  332. package/src/MessageState.ts +126 -0
  333. package/src/Messenger.ts +40 -0
  334. package/src/Pod.ts +95 -0
  335. package/src/PodAddress.ts +94 -0
  336. package/src/Pods.ts +100 -0
  337. package/src/PodsHealth.ts +74 -0
  338. package/src/PoisonPill.ts +105 -0
  339. package/src/RecipientAddress.ts +72 -0
  340. package/src/RecipientBehaviour.ts +108 -0
  341. package/src/RecipientBehaviourContext.ts +101 -0
  342. package/src/RecipientType.ts +134 -0
  343. package/src/Serialization.ts +72 -0
  344. package/src/SerializedEnvelope.ts +109 -0
  345. package/src/SerializedMessage.ts +82 -0
  346. package/src/ShardId.ts +79 -0
  347. package/src/ShardManager.ts +53 -0
  348. package/src/ShardManagerClient.ts +57 -0
  349. package/src/Sharding.ts +214 -0
  350. package/src/ShardingConfig.ts +76 -0
  351. package/src/ShardingEvent.ts +121 -0
  352. package/src/ShardingException.ts +151 -0
  353. package/src/ShardingRegistrationEvent.ts +62 -0
  354. package/src/Storage.ts +92 -0
  355. package/src/index.ts +139 -0
  356. package/src/internal/atLeastOnce.ts +59 -0
  357. package/src/internal/atLeastOnceStorage.ts +218 -0
  358. package/src/internal/entityManager.ts +404 -0
  359. package/src/internal/entityState.ts +64 -0
  360. package/src/internal/managerConfig.ts +84 -0
  361. package/src/internal/message.ts +64 -0
  362. package/src/internal/messageState.ts +98 -0
  363. package/src/internal/podWithMetadata.ts +72 -0
  364. package/src/internal/pods.ts +29 -0
  365. package/src/internal/podsHealth.ts +39 -0
  366. package/src/internal/recipientBehaviour.ts +133 -0
  367. package/src/internal/recipientBehaviourContext.ts +70 -0
  368. package/src/internal/serialization.ts +59 -0
  369. package/src/internal/shardManager.ts +593 -0
  370. package/src/internal/shardManagerClient.ts +49 -0
  371. package/src/internal/shardManagerState.ts +80 -0
  372. package/src/internal/sharding.ts +793 -0
  373. package/src/internal/shardingConfig.ts +97 -0
  374. package/src/internal/storage.ts +60 -0
  375. package/src/internal/utils.ts +54 -0
@@ -0,0 +1,98 @@
1
+ import * as Schema from "@effect/schema/Schema"
2
+ import * as Effect from "effect/Effect"
3
+ import { pipe } from "effect/Function"
4
+ import type * as MessageState from "../MessageState.js"
5
+
6
+ /** @internal */
7
+ const MessageStateSymbolKey = "@effect/cluster/MessageState"
8
+
9
+ /** @internal */
10
+ export const MessageStateTypeId: MessageState.MessageStateTypeId = Symbol.for(
11
+ MessageStateSymbolKey
12
+ ) as MessageState.MessageStateTypeId
13
+
14
+ /** @internal */
15
+ export function isMessageState(value: unknown): value is MessageState.MessageState<unknown> {
16
+ return typeof value === "object" && value !== null && MessageStateTypeId in value
17
+ }
18
+
19
+ /** @internal */
20
+ export const Acknowledged: MessageState.MessageStateAcknowledged = {
21
+ [MessageStateTypeId]: MessageStateTypeId,
22
+ _tag: "@effect/cluster/MessageState/Acknowledged"
23
+ }
24
+
25
+ /** @internal */
26
+ export function Processed<A>(result: A): MessageState.MessageStateProcessed<A> {
27
+ return ({
28
+ [MessageStateTypeId]: MessageStateTypeId,
29
+ _tag: "@effect/cluster/MessageState/Processed",
30
+ result
31
+ })
32
+ }
33
+
34
+ /** @internal */
35
+ export function match<A, B, C = B>(
36
+ cases: {
37
+ onAcknowledged: (value: MessageState.MessageStateAcknowledged) => B
38
+ onProcessed: (exit: MessageState.MessageStateProcessed<A>) => C
39
+ }
40
+ ) {
41
+ return (value: MessageState.MessageState<A>) => {
42
+ switch (value._tag) {
43
+ case "@effect/cluster/MessageState/Acknowledged":
44
+ return cases.onAcknowledged(value)
45
+ case "@effect/cluster/MessageState/Processed":
46
+ return cases.onProcessed(value)
47
+ }
48
+ }
49
+ }
50
+
51
+ /** @internal */
52
+ export function mapEffect<A, B, R, E>(
53
+ value: MessageState.MessageState<A>,
54
+ fn: (value: A) => Effect.Effect<B, E, R>
55
+ ): Effect.Effect<MessageState.MessageState<B>, E, R> {
56
+ return pipe(
57
+ value,
58
+ match({
59
+ onAcknowledged: Effect.succeed,
60
+ onProcessed: (_) =>
61
+ Effect.map(fn(_.result), (_) => Processed(_)) as Effect.Effect<MessageState.MessageState<B>, E, R>
62
+ })
63
+ )
64
+ }
65
+
66
+ /** @internal */
67
+ export function schema<A, I>(
68
+ result: Schema.Schema<A, I>
69
+ ): Schema.Schema<
70
+ MessageState.MessageState<A>,
71
+ MessageState.MessageState.Encoded<I>
72
+ > {
73
+ return Schema.Union(
74
+ Schema.rename(
75
+ Schema.Struct({
76
+ [MessageStateSymbolKey]: Schema.compose(
77
+ Schema.compose(Schema.Literal(MessageStateSymbolKey), Schema.Symbol, { strict: false }),
78
+ Schema.UniqueSymbolFromSelf(MessageStateTypeId),
79
+ { strict: false }
80
+ ),
81
+ _tag: Schema.Literal("@effect/cluster/MessageState/Acknowledged")
82
+ }),
83
+ { [MessageStateSymbolKey]: MessageStateTypeId }
84
+ ),
85
+ Schema.rename(
86
+ Schema.Struct({
87
+ [MessageStateSymbolKey]: Schema.compose(
88
+ Schema.compose(Schema.Literal(MessageStateSymbolKey), Schema.Symbol, { strict: false }),
89
+ Schema.UniqueSymbolFromSelf(MessageStateTypeId),
90
+ { strict: false }
91
+ ),
92
+ _tag: Schema.Literal("@effect/cluster/MessageState/Processed"),
93
+ result
94
+ }),
95
+ { [MessageStateSymbolKey]: MessageStateTypeId }
96
+ )
97
+ )
98
+ }
@@ -0,0 +1,72 @@
1
+ import * as Data from "effect/Data"
2
+ import { pipe } from "effect/Function"
3
+ import * as List from "effect/List"
4
+ import * as Option from "effect/Option"
5
+ import type * as Pod from "../Pod.js"
6
+
7
+ /** @internal */
8
+ const PodWithMetadataSymbolKey = "@effect/cluster/PodWithMetadata"
9
+
10
+ /** @internal */
11
+ export const PodWithMetadataTypeId = Symbol.for(PodWithMetadataSymbolKey)
12
+
13
+ /** @internal */
14
+ export type PodWithMetadataTypeId = typeof PodWithMetadataTypeId
15
+
16
+ /** @internal */
17
+ export class PodWithMetadata extends Data.Class<{
18
+ [PodWithMetadataTypeId]: PodWithMetadataTypeId
19
+ pod: Pod.Pod
20
+ registered: number
21
+ }> {}
22
+
23
+ /** @internal */
24
+ export function make(pod: Pod.Pod, registered: number): PodWithMetadata {
25
+ return new PodWithMetadata({ [PodWithMetadataTypeId]: PodWithMetadataTypeId, pod, registered })
26
+ }
27
+
28
+ /** @internal */
29
+ export function isPodWithMetadata(value: unknown): value is PodWithMetadata {
30
+ return (
31
+ typeof value === "object" &&
32
+ value !== null &&
33
+ PodWithMetadataTypeId in value &&
34
+ value[PodWithMetadataTypeId] === PodWithMetadataTypeId
35
+ )
36
+ }
37
+
38
+ /** @internal */
39
+ export function extractVersion(pod: PodWithMetadata): List.List<number> {
40
+ return pipe(
41
+ List.fromIterable(pod.pod.version.split(".")),
42
+ List.map((_) => parseInt(_, 10))
43
+ )
44
+ }
45
+
46
+ /** @internal */
47
+ export function compareVersion(a: List.List<number>, b: List.List<number>): 0 | 1 | -1 {
48
+ let restA = a
49
+ let restB = b
50
+ while (List.size(restA) > 0 || List.size(restB) > 0) {
51
+ const numA = pipe(
52
+ List.head(restA),
53
+ Option.getOrElse(() => 0)
54
+ )
55
+ const numB = pipe(
56
+ List.head(restB),
57
+ Option.getOrElse(() => 0)
58
+ )
59
+
60
+ if (numA < numB) return -1
61
+ if (numB > numA) return 1
62
+ restA = pipe(
63
+ List.tail(restA),
64
+ Option.getOrElse(() => List.empty())
65
+ )
66
+ restB = pipe(
67
+ List.tail(restB),
68
+ Option.getOrElse(() => List.empty())
69
+ )
70
+ }
71
+ return 0
72
+ }
@@ -0,0 +1,29 @@
1
+ import * as Context from "effect/Context"
2
+ import * as Effect from "effect/Effect"
3
+ import * as Layer from "effect/Layer"
4
+ import type * as Pods from "../Pods.js"
5
+
6
+ /** @internal */
7
+ const PodsSymbolKey = "@effect/cluster/Pods"
8
+
9
+ /** @internal */
10
+ export const PodsTypeId: Pods.PodsTypeId = Symbol.for(PodsSymbolKey) as Pods.PodsTypeId
11
+
12
+ /** @internal */
13
+ export const podsTag = Context.GenericTag<Pods.Pods>(PodsSymbolKey)
14
+
15
+ /** @internal */
16
+ export function make(
17
+ args: Omit<Pods.Pods, Pods.PodsTypeId>
18
+ ): Pods.Pods {
19
+ return { [PodsTypeId]: PodsTypeId, ...args }
20
+ }
21
+
22
+ /** @internal */
23
+ export const noop = Layer.succeed(podsTag, {
24
+ [PodsTypeId]: PodsTypeId,
25
+ assignShards: () => Effect.void,
26
+ unassignShards: () => Effect.void,
27
+ ping: () => Effect.void,
28
+ sendAndGetState: () => Effect.never
29
+ })
@@ -0,0 +1,39 @@
1
+ import * as Context from "effect/Context"
2
+ import * as Data from "effect/Data"
3
+ import * as Effect from "effect/Effect"
4
+ import { pipe } from "effect/Function"
5
+ import * as Layer from "effect/Layer"
6
+ import * as Option from "effect/Option"
7
+ import * as Pods from "../Pods.js"
8
+ import type * as PodsHealth from "../PodsHealth.js"
9
+
10
+ /** @internal */
11
+ const PodsHealthSymbolKey = "@effect/cluster/PodsHealth"
12
+
13
+ /** @internal */
14
+ export const PodsHealthTypeId: PodsHealth.PodsHealthTypeId = Symbol.for(
15
+ PodsHealthSymbolKey
16
+ ) as PodsHealth.PodsHealthTypeId
17
+
18
+ /** @internal */
19
+ export const podsHealthTag = Context.GenericTag<PodsHealth.PodsHealth>(PodsHealthSymbolKey)
20
+
21
+ /** @internal */
22
+ export function make(args: Omit<PodsHealth.PodsHealth, PodsHealth.PodsHealthTypeId>): PodsHealth.PodsHealth {
23
+ return Data.struct({ [PodsHealthTypeId]: PodsHealthTypeId, ...args })
24
+ }
25
+
26
+ /** @internal */
27
+ export const noop = Layer.succeed(podsHealthTag, {
28
+ [PodsHealthTypeId]: PodsHealthTypeId,
29
+ isAlive: () => Effect.succeed(true)
30
+ })
31
+
32
+ /** @internal */
33
+ export const local = Layer.effect(
34
+ podsHealthTag,
35
+ Effect.map(Pods.Pods, (podApi) =>
36
+ make({
37
+ isAlive: (address) => pipe(podApi.ping(address), Effect.option, Effect.map(Option.isSome))
38
+ }))
39
+ )
@@ -0,0 +1,133 @@
1
+ import * as Deferred from "effect/Deferred"
2
+ import * as Effect from "effect/Effect"
3
+ import { pipe } from "effect/Function"
4
+ import * as HashMap from "effect/HashMap"
5
+ import * as Option from "effect/Option"
6
+ import * as PrimaryKey from "effect/PrimaryKey"
7
+ import * as Queue from "effect/Queue"
8
+ import * as Ref from "effect/Ref"
9
+ import type * as Message from "../Message.js"
10
+ import * as MessageState from "../MessageState.js"
11
+ import * as PoisonPill from "../PoisonPill.js"
12
+ import type * as RecipientBehaviour from "../RecipientBehaviour.js"
13
+ import * as RecipientBehaviourContext from "../RecipientBehaviourContext.js"
14
+
15
+ /** @internal */
16
+ export function fromFunctionEffect<Msg extends Message.Message.Any, R>(
17
+ handler: (
18
+ entityId: string,
19
+ message: Msg
20
+ ) => Effect.Effect<MessageState.MessageState<Message.Message.Exit<Msg>>, never, R>
21
+ ): RecipientBehaviour.RecipientBehaviour<Msg, R> {
22
+ return Effect.flatMap(RecipientBehaviourContext.entityId, (entityId) =>
23
+ pipe(
24
+ Effect.context<R>(),
25
+ Effect.map((context) => (message: Msg) =>
26
+ pipe(
27
+ handler(entityId, message),
28
+ Effect.provide(context)
29
+ )
30
+ )
31
+ ))
32
+ }
33
+
34
+ /** @internal */
35
+ export function fromFunctionEffectStateful<S, R, Msg extends Message.Message.Any, R2>(
36
+ initialState: (entityId: string) => Effect.Effect<S, never, R>,
37
+ handler: (
38
+ entityId: string,
39
+ message: Msg,
40
+ stateRef: Ref.Ref<S>
41
+ ) => Effect.Effect<MessageState.MessageState<Message.Message.Exit<Msg>>, never, R2>
42
+ ): RecipientBehaviour.RecipientBehaviour<Msg, R | R2> {
43
+ return Effect.flatMap(RecipientBehaviourContext.entityId, (entityId) =>
44
+ pipe(
45
+ initialState(entityId),
46
+ Effect.flatMap(Ref.make),
47
+ Effect.flatMap((stateRef) =>
48
+ pipe(
49
+ Effect.context<R2>(),
50
+ Effect.map((context) => (message: Msg) =>
51
+ pipe(
52
+ handler(entityId, message, stateRef),
53
+ Effect.provide(context)
54
+ )
55
+ )
56
+ )
57
+ )
58
+ ))
59
+ }
60
+
61
+ /** @internal */
62
+ export function fromInMemoryQueue<Msg extends Message.Message.Any, R>(
63
+ handler: (
64
+ entityId: string,
65
+ dequeue: Queue.Dequeue<Msg | PoisonPill.PoisonPill>,
66
+ processed: <A extends Msg>(
67
+ message: A,
68
+ value: Option.Option<Message.Message.Exit<A>>
69
+ ) => Effect.Effect<void>
70
+ ) => Effect.Effect<void, never, R>
71
+ ): RecipientBehaviour.RecipientBehaviour<Msg, R> {
72
+ return Effect.gen(function*(_) {
73
+ const entityId = yield* _(RecipientBehaviourContext.entityId)
74
+ const messageStates = yield* _(Ref.make(HashMap.empty<string, MessageState.MessageState<any>>()))
75
+
76
+ function updateMessageState(message: Msg, state: MessageState.MessageState<any>) {
77
+ return pipe(Ref.update(messageStates, HashMap.set(PrimaryKey.value(message), state)), Effect.as(state))
78
+ }
79
+
80
+ function getMessageState(message: Msg) {
81
+ return pipe(
82
+ Ref.get(messageStates),
83
+ Effect.map(HashMap.get(PrimaryKey.value(message)))
84
+ )
85
+ }
86
+
87
+ function reply<A extends Msg>(message: A, reply: Option.Option<Message.Message.Exit<A>>) {
88
+ return updateMessageState(message, MessageState.Processed(reply))
89
+ }
90
+
91
+ return yield* _(pipe(
92
+ Deferred.make<boolean>(),
93
+ Effect.flatMap((shutdownCompleted) =>
94
+ pipe(
95
+ Effect.acquireRelease(
96
+ Queue.unbounded<Msg | PoisonPill.PoisonPill>(),
97
+ (queue) =>
98
+ pipe(
99
+ PoisonPill.make,
100
+ Effect.flatMap((msg) => Queue.offer(queue, msg)),
101
+ Effect.zipLeft(Deferred.await(shutdownCompleted)),
102
+ Effect.uninterruptible
103
+ )
104
+ ),
105
+ Effect.tap((queue) =>
106
+ pipe(
107
+ Effect.logDebug("Behaviour started."),
108
+ Effect.zipRight(handler(entityId, queue, reply)),
109
+ Effect.ensuring(Deferred.succeed(shutdownCompleted, true)),
110
+ Effect.zipRight(Effect.logDebug("Behaviour exited.")),
111
+ Effect.annotateLogs("entityId", entityId),
112
+ Effect.forkDaemon
113
+ )
114
+ ),
115
+ Effect.map((queue) => (message: Msg) => {
116
+ return pipe(
117
+ getMessageState(message),
118
+ Effect.flatMap(Option.match({
119
+ onNone: () =>
120
+ pipe(
121
+ Queue.offer(queue, message),
122
+ Effect.zipRight(updateMessageState(message, MessageState.Acknowledged))
123
+ ),
124
+ onSome: (state) => Effect.succeed(state)
125
+ }))
126
+ )
127
+ }),
128
+ Effect.annotateLogs("entityId", entityId)
129
+ )
130
+ )
131
+ ))
132
+ })
133
+ }
@@ -0,0 +1,70 @@
1
+ import * as Context from "effect/Context"
2
+ import * as Effect from "effect/Effect"
3
+ import type * as Message from "../Message.js"
4
+ import type * as RecipientAddress from "../RecipientAddress.js"
5
+ import type * as RecipientBehaviourContext from "../RecipientBehaviourContext.js"
6
+ import type * as RecipientType from "../RecipientType.js"
7
+ import type * as ShardId from "../ShardId.js"
8
+
9
+ /** @internal */
10
+ const RecipientBehaviourContextSymbolKey = "@effect/cluster/RecipientBehaviourContext"
11
+
12
+ /** @internal */
13
+ export const RecipientBehaviourContextTypeId: RecipientBehaviourContext.RecipientBehaviourContextTypeId = Symbol.for(
14
+ RecipientBehaviourContextSymbolKey
15
+ ) as RecipientBehaviourContext.RecipientBehaviourContextTypeId
16
+
17
+ /** @internal */
18
+ export const recipientBehaviourContextTag = Context.GenericTag<RecipientBehaviourContext.RecipientBehaviourContext>(
19
+ RecipientBehaviourContextSymbolKey
20
+ )
21
+
22
+ /** @internal */
23
+ export function make(
24
+ args: Omit<
25
+ RecipientBehaviourContext.RecipientBehaviourContext,
26
+ RecipientBehaviourContext.RecipientBehaviourContextTypeId
27
+ >
28
+ ): RecipientBehaviourContext.RecipientBehaviourContext {
29
+ return ({ [RecipientBehaviourContextTypeId]: RecipientBehaviourContextTypeId, ...args })
30
+ }
31
+
32
+ /** @internal */
33
+ export const recipientAddress: Effect.Effect<
34
+ RecipientAddress.RecipientAddress,
35
+ never,
36
+ RecipientBehaviourContext.RecipientBehaviourContext
37
+ > = Effect.map(
38
+ recipientBehaviourContextTag,
39
+ (_) => _.recipientAddress
40
+ )
41
+
42
+ /** @internal */
43
+ export const entityId: Effect.Effect<string, never, RecipientBehaviourContext.RecipientBehaviourContext> = Effect.map(
44
+ recipientAddress,
45
+ (_) => _.entityId
46
+ )
47
+
48
+ /** @internal */
49
+ export const shardId: Effect.Effect<ShardId.ShardId, never, RecipientBehaviourContext.RecipientBehaviourContext> =
50
+ Effect.map(
51
+ recipientBehaviourContextTag,
52
+ (_) => _.shardId
53
+ )
54
+
55
+ /** @internal */
56
+ export const recipientType: Effect.Effect<
57
+ RecipientType.RecipientType<Message.Message.Any>,
58
+ never,
59
+ RecipientBehaviourContext.RecipientBehaviourContext
60
+ > = Effect.map(
61
+ recipientBehaviourContextTag,
62
+ (_) => _.recipientType
63
+ )
64
+
65
+ /** @internal */
66
+ export const forkShutdown: Effect.Effect<void, never, RecipientBehaviourContext.RecipientBehaviourContext> = Effect
67
+ .flatMap(
68
+ recipientBehaviourContextTag,
69
+ (_) => _.forkShutdown
70
+ )
@@ -0,0 +1,59 @@
1
+ import * as Schema from "@effect/schema/Schema"
2
+ import * as TreeFormatter from "@effect/schema/TreeFormatter"
3
+ import * as Context from "effect/Context"
4
+ import * as Effect from "effect/Effect"
5
+ import { pipe } from "effect/Function"
6
+ import * as Layer from "effect/Layer"
7
+ import type * as Serialization from "../Serialization.js"
8
+ import * as SerializedMessage from "../SerializedMessage.js"
9
+ import * as ShardingException from "../ShardingException.js"
10
+
11
+ /** @internal */
12
+ const SerializationSymbolKey = "@effect/cluster/Serialization"
13
+
14
+ /** @internal */
15
+ export const SerializationTypeId: Serialization.SerializationTypeId = Symbol.for(
16
+ SerializationSymbolKey
17
+ ) as Serialization.SerializationTypeId
18
+
19
+ /** @internal */
20
+ export const serializationTag = Context.GenericTag<Serialization.Serialization>(SerializationSymbolKey)
21
+
22
+ /** @internal */
23
+ function jsonStringify<A, I>(value: A, schema: Schema.Schema<A, I>) {
24
+ return pipe(
25
+ value,
26
+ Schema.encode(schema),
27
+ Effect.mapError((e) => new ShardingException.SerializationException({ error: TreeFormatter.formatError(e) })),
28
+ Effect.map((_) => JSON.stringify(_))
29
+ )
30
+ }
31
+
32
+ /** @internal */
33
+ function jsonParse<A, I>(value: string, schema: Schema.Schema<A, I>) {
34
+ return pipe(
35
+ Effect.sync(() => JSON.parse(value)),
36
+ Effect.flatMap(Schema.decode(schema)),
37
+ Effect.mapError((e) => new ShardingException.SerializationException({ error: TreeFormatter.formatError(e) }))
38
+ )
39
+ }
40
+
41
+ /** @internal */
42
+ export function make(
43
+ args: Omit<Serialization.Serialization, Serialization.SerializationTypeId>
44
+ ): Serialization.Serialization {
45
+ return ({ ...args, [SerializationTypeId]: SerializationTypeId })
46
+ }
47
+
48
+ /** @internal */
49
+ export const json: Layer.Layer<Serialization.Serialization> = Layer.succeed(
50
+ serializationTag,
51
+ make({
52
+ encode: (schema, message) =>
53
+ pipe(
54
+ jsonStringify(message, schema),
55
+ Effect.map(SerializedMessage.make)
56
+ ),
57
+ decode: (schema, body) => jsonParse(body.value, schema)
58
+ })
59
+ )