@effect/cluster 0.28.3 → 0.29.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.
Files changed (626) hide show
  1. package/ClusterError/package.json +6 -0
  2. package/ClusterMetrics/package.json +6 -0
  3. package/ClusterSchema/package.json +6 -0
  4. package/DeliverAt/package.json +6 -0
  5. package/Entity/package.json +6 -0
  6. package/EntityAddress/package.json +6 -0
  7. package/EntityId/package.json +6 -0
  8. package/EntityType/package.json +6 -0
  9. package/Envelope/package.json +6 -0
  10. package/HttpCommon/package.json +6 -0
  11. package/HttpRunner/package.json +6 -0
  12. package/HttpShardManager/package.json +6 -0
  13. package/MachineId/package.json +6 -0
  14. package/MessageStorage/package.json +6 -0
  15. package/README.md +2 -2
  16. package/Reply/package.json +6 -0
  17. package/Runner/package.json +6 -0
  18. package/RunnerAddress/package.json +6 -0
  19. package/RunnerHealth/package.json +6 -0
  20. package/RunnerServer/package.json +6 -0
  21. package/Runners/package.json +6 -0
  22. package/ShardStorage/package.json +6 -0
  23. package/Singleton/package.json +6 -0
  24. package/SingletonAddress/package.json +6 -0
  25. package/Snowflake/package.json +6 -0
  26. package/SocketRunner/package.json +6 -0
  27. package/SocketShardManager/package.json +6 -0
  28. package/SqlMessageStorage/package.json +6 -0
  29. package/SqlShardStorage/package.json +6 -0
  30. package/SynchronizedClock/package.json +6 -0
  31. package/dist/cjs/ClusterError.js +180 -0
  32. package/dist/cjs/ClusterError.js.map +1 -0
  33. package/dist/cjs/ClusterMetrics.js +63 -0
  34. package/dist/cjs/ClusterMetrics.js.map +1 -0
  35. package/dist/cjs/{Pods.js → ClusterSchema.js} +10 -22
  36. package/dist/cjs/ClusterSchema.js.map +1 -0
  37. package/dist/cjs/DeliverAt.js +30 -0
  38. package/dist/cjs/DeliverAt.js.map +1 -0
  39. package/dist/cjs/Entity.js +187 -0
  40. package/dist/cjs/Entity.js.map +1 -0
  41. package/dist/cjs/EntityAddress.js +54 -0
  42. package/dist/cjs/EntityAddress.js.map +1 -0
  43. package/dist/cjs/{AtLeastOnce.js → EntityId.js} +6 -7
  44. package/dist/cjs/EntityId.js.map +1 -0
  45. package/dist/cjs/{ShardManagerClient.js → EntityType.js} +5 -16
  46. package/dist/cjs/EntityType.js.map +1 -0
  47. package/dist/cjs/Envelope.js +168 -0
  48. package/dist/cjs/Envelope.js.map +1 -0
  49. package/dist/cjs/HttpCommon.js +49 -0
  50. package/dist/cjs/HttpCommon.js.map +1 -0
  51. package/dist/cjs/HttpRunner.js +108 -0
  52. package/dist/cjs/HttpRunner.js.map +1 -0
  53. package/dist/cjs/HttpShardManager.js +140 -0
  54. package/dist/cjs/HttpShardManager.js.map +1 -0
  55. package/dist/cjs/{AtLeastOnceStorage.js → MachineId.js} +11 -9
  56. package/dist/cjs/MachineId.js.map +1 -0
  57. package/dist/cjs/Message.js +99 -18
  58. package/dist/cjs/Message.js.map +1 -1
  59. package/dist/cjs/MessageStorage.js +356 -0
  60. package/dist/cjs/MessageStorage.js.map +1 -0
  61. package/dist/cjs/Reply.js +200 -0
  62. package/dist/cjs/Reply.js.map +1 -0
  63. package/dist/cjs/Runner.js +79 -0
  64. package/dist/cjs/Runner.js.map +1 -0
  65. package/dist/cjs/RunnerAddress.js +63 -0
  66. package/dist/cjs/RunnerAddress.js.map +1 -0
  67. package/dist/cjs/RunnerHealth.js +68 -0
  68. package/dist/cjs/RunnerHealth.js.map +1 -0
  69. package/dist/cjs/RunnerServer.js +125 -0
  70. package/dist/cjs/RunnerServer.js.map +1 -0
  71. package/dist/cjs/Runners.js +344 -0
  72. package/dist/cjs/Runners.js.map +1 -0
  73. package/dist/cjs/ShardId.js +7 -46
  74. package/dist/cjs/ShardId.js.map +1 -1
  75. package/dist/cjs/ShardManager.js +493 -8
  76. package/dist/cjs/ShardManager.js.map +1 -1
  77. package/dist/cjs/ShardStorage.js +139 -0
  78. package/dist/cjs/ShardStorage.js.map +1 -0
  79. package/dist/cjs/Sharding.js +732 -88
  80. package/dist/cjs/Sharding.js.map +1 -1
  81. package/dist/cjs/ShardingConfig.js +85 -18
  82. package/dist/cjs/ShardingConfig.js.map +1 -1
  83. package/dist/cjs/ShardingRegistrationEvent.js +26 -32
  84. package/dist/cjs/ShardingRegistrationEvent.js.map +1 -1
  85. package/dist/cjs/{ManagerConfig.js → Singleton.js} +11 -20
  86. package/dist/cjs/Singleton.js.map +1 -0
  87. package/dist/cjs/SingletonAddress.js +50 -0
  88. package/dist/cjs/SingletonAddress.js.map +1 -0
  89. package/dist/cjs/Snowflake.js +133 -0
  90. package/dist/cjs/Snowflake.js.map +1 -0
  91. package/dist/cjs/SocketRunner.js +40 -0
  92. package/dist/cjs/SocketRunner.js.map +1 -0
  93. package/dist/cjs/SocketShardManager.js +33 -0
  94. package/dist/cjs/SocketShardManager.js.map +1 -0
  95. package/dist/cjs/SqlMessageStorage.js +668 -0
  96. package/dist/cjs/SqlMessageStorage.js.map +1 -0
  97. package/dist/cjs/SqlShardStorage.js +228 -0
  98. package/dist/cjs/SqlShardStorage.js.map +1 -0
  99. package/dist/cjs/SynchronizedClock.js +66 -0
  100. package/dist/cjs/SynchronizedClock.js.map +1 -0
  101. package/dist/cjs/index.js +57 -45
  102. package/dist/cjs/internal/entityManager.js +311 -143
  103. package/dist/cjs/internal/entityManager.js.map +1 -1
  104. package/dist/cjs/internal/entityReaper.js +47 -0
  105. package/dist/cjs/internal/entityReaper.js.map +1 -0
  106. package/dist/cjs/internal/hash.js +20 -0
  107. package/dist/cjs/internal/hash.js.map +1 -0
  108. package/dist/cjs/internal/interruptors.js +9 -0
  109. package/dist/cjs/internal/interruptors.js.map +1 -0
  110. package/dist/cjs/internal/resourceMap.js +88 -0
  111. package/dist/cjs/internal/resourceMap.js.map +1 -0
  112. package/dist/cjs/internal/resourceRef.js +92 -0
  113. package/dist/cjs/internal/resourceRef.js.map +1 -0
  114. package/dist/cjs/internal/shardManager.js +219 -235
  115. package/dist/cjs/internal/shardManager.js.map +1 -1
  116. package/dist/dts/ClusterError.d.ts +169 -0
  117. package/dist/dts/ClusterError.d.ts.map +1 -0
  118. package/dist/dts/ClusterMetrics.d.ts +50 -0
  119. package/dist/dts/ClusterMetrics.d.ts.map +1 -0
  120. package/dist/dts/ClusterSchema.d.ts +13 -0
  121. package/dist/dts/ClusterSchema.d.ts.map +1 -0
  122. package/dist/dts/DeliverAt.d.ts +27 -0
  123. package/dist/dts/DeliverAt.d.ts.map +1 -0
  124. package/dist/dts/Entity.d.ts +180 -0
  125. package/dist/dts/Entity.d.ts.map +1 -0
  126. package/dist/dts/EntityAddress.d.ts +55 -0
  127. package/dist/dts/EntityAddress.d.ts.map +1 -0
  128. package/dist/dts/EntityId.d.ts +15 -0
  129. package/dist/dts/EntityId.d.ts.map +1 -0
  130. package/dist/dts/EntityType.d.ts +15 -0
  131. package/dist/dts/EntityType.d.ts.map +1 -0
  132. package/dist/dts/Envelope.d.ts +252 -0
  133. package/dist/dts/Envelope.d.ts.map +1 -0
  134. package/dist/dts/HttpCommon.d.ts +25 -0
  135. package/dist/dts/HttpCommon.d.ts.map +1 -0
  136. package/dist/dts/HttpRunner.d.ts +76 -0
  137. package/dist/dts/HttpRunner.d.ts.map +1 -0
  138. package/dist/dts/HttpShardManager.d.ts +119 -0
  139. package/dist/dts/HttpShardManager.d.ts.map +1 -0
  140. package/dist/dts/MachineId.d.ts +20 -0
  141. package/dist/dts/MachineId.d.ts.map +1 -0
  142. package/dist/dts/Message.d.ts +91 -74
  143. package/dist/dts/Message.d.ts.map +1 -1
  144. package/dist/dts/MessageStorage.d.ts +336 -0
  145. package/dist/dts/MessageStorage.d.ts.map +1 -0
  146. package/dist/dts/Reply.d.ts +171 -0
  147. package/dist/dts/Reply.d.ts.map +1 -0
  148. package/dist/dts/Runner.d.ts +81 -0
  149. package/dist/dts/Runner.d.ts.map +1 -0
  150. package/dist/dts/RunnerAddress.d.ts +56 -0
  151. package/dist/dts/RunnerAddress.d.ts.map +1 -0
  152. package/dist/dts/RunnerHealth.d.ts +54 -0
  153. package/dist/dts/RunnerHealth.d.ts.map +1 -0
  154. package/dist/dts/RunnerServer.d.ts +44 -0
  155. package/dist/dts/RunnerServer.d.ts.map +1 -0
  156. package/dist/dts/Runners.d.ts +161 -0
  157. package/dist/dts/Runners.d.ts.map +1 -0
  158. package/dist/dts/ShardId.d.ts +5 -55
  159. package/dist/dts/ShardId.d.ts.map +1 -1
  160. package/dist/dts/ShardManager.d.ts +435 -23
  161. package/dist/dts/ShardManager.d.ts.map +1 -1
  162. package/dist/dts/ShardStorage.d.ts +200 -0
  163. package/dist/dts/ShardStorage.d.ts.map +1 -0
  164. package/dist/dts/Sharding.d.ts +109 -131
  165. package/dist/dts/Sharding.d.ts.map +1 -1
  166. package/dist/dts/ShardingConfig.d.ts +147 -44
  167. package/dist/dts/ShardingConfig.d.ts.map +1 -1
  168. package/dist/dts/ShardingRegistrationEvent.d.ts +38 -23
  169. package/dist/dts/ShardingRegistrationEvent.d.ts.map +1 -1
  170. package/dist/dts/Singleton.d.ts +13 -0
  171. package/dist/dts/Singleton.d.ts.map +1 -0
  172. package/dist/dts/SingletonAddress.d.ts +49 -0
  173. package/dist/dts/SingletonAddress.d.ts.map +1 -0
  174. package/dist/dts/Snowflake.d.ts +121 -0
  175. package/dist/dts/Snowflake.d.ts.map +1 -0
  176. package/dist/dts/SocketRunner.d.ts +22 -0
  177. package/dist/dts/SocketRunner.d.ts.map +1 -0
  178. package/dist/dts/SocketShardManager.d.ts +17 -0
  179. package/dist/dts/SocketShardManager.d.ts.map +1 -0
  180. package/dist/dts/SqlMessageStorage.d.ts +43 -0
  181. package/dist/dts/SqlMessageStorage.d.ts.map +1 -0
  182. package/dist/dts/SqlShardStorage.d.ts +38 -0
  183. package/dist/dts/SqlShardStorage.d.ts.map +1 -0
  184. package/dist/dts/SynchronizedClock.d.ts +19 -0
  185. package/dist/dts/SynchronizedClock.d.ts.map +1 -0
  186. package/dist/dts/index.d.ts +48 -24
  187. package/dist/dts/index.d.ts.map +1 -1
  188. package/dist/dts/internal/entityReaper.d.ts +2 -0
  189. package/dist/dts/internal/entityReaper.d.ts.map +1 -0
  190. package/dist/dts/internal/hash.d.ts +2 -0
  191. package/dist/dts/internal/hash.d.ts.map +1 -0
  192. package/dist/dts/internal/interruptors.d.ts +2 -0
  193. package/dist/dts/internal/interruptors.d.ts.map +1 -0
  194. package/dist/dts/internal/resourceMap.d.ts +22 -0
  195. package/dist/dts/internal/resourceMap.d.ts.map +1 -0
  196. package/dist/dts/internal/resourceRef.d.ts +25 -0
  197. package/dist/dts/internal/resourceRef.d.ts.map +1 -0
  198. package/dist/dts/internal/shardManager.d.ts +1 -11
  199. package/dist/dts/internal/shardManager.d.ts.map +1 -1
  200. package/dist/esm/ClusterError.js +164 -0
  201. package/dist/esm/ClusterError.js.map +1 -0
  202. package/dist/esm/ClusterMetrics.js +54 -0
  203. package/dist/esm/ClusterMetrics.js.map +1 -0
  204. package/dist/esm/ClusterSchema.js +13 -0
  205. package/dist/esm/ClusterSchema.js.map +1 -0
  206. package/dist/esm/DeliverAt.js +22 -0
  207. package/dist/esm/DeliverAt.js.map +1 -0
  208. package/dist/esm/Entity.js +173 -0
  209. package/dist/esm/Entity.js.map +1 -0
  210. package/dist/esm/EntityAddress.js +44 -0
  211. package/dist/esm/EntityAddress.js.map +1 -0
  212. package/dist/esm/EntityId.js +10 -0
  213. package/dist/esm/EntityId.js.map +1 -0
  214. package/dist/esm/EntityType.js +10 -0
  215. package/dist/esm/EntityType.js.map +1 -0
  216. package/dist/esm/Envelope.js +154 -0
  217. package/dist/esm/Envelope.js.map +1 -0
  218. package/dist/esm/HttpCommon.js +38 -0
  219. package/dist/esm/HttpCommon.js.map +1 -0
  220. package/dist/esm/HttpRunner.js +98 -0
  221. package/dist/esm/HttpRunner.js.map +1 -0
  222. package/dist/esm/HttpShardManager.js +128 -0
  223. package/dist/esm/HttpShardManager.js.map +1 -0
  224. package/dist/esm/MachineId.js +17 -0
  225. package/dist/esm/MachineId.js.map +1 -0
  226. package/dist/esm/Message.js +88 -17
  227. package/dist/esm/Message.js.map +1 -1
  228. package/dist/esm/MessageStorage.js +345 -0
  229. package/dist/esm/MessageStorage.js.map +1 -0
  230. package/dist/esm/Reply.js +184 -0
  231. package/dist/esm/Reply.js.map +1 -0
  232. package/dist/esm/Runner.js +68 -0
  233. package/dist/esm/Runner.js.map +1 -0
  234. package/dist/esm/RunnerAddress.js +52 -0
  235. package/dist/esm/RunnerAddress.js.map +1 -0
  236. package/dist/esm/RunnerHealth.js +58 -0
  237. package/dist/esm/RunnerHealth.js.map +1 -0
  238. package/dist/esm/RunnerServer.js +116 -0
  239. package/dist/esm/RunnerServer.js.map +1 -0
  240. package/dist/esm/Runners.js +332 -0
  241. package/dist/esm/Runners.js.map +1 -0
  242. package/dist/esm/ShardId.js +5 -42
  243. package/dist/esm/ShardId.js.map +1 -1
  244. package/dist/esm/ShardManager.js +486 -7
  245. package/dist/esm/ShardManager.js.map +1 -1
  246. package/dist/esm/ShardStorage.js +129 -0
  247. package/dist/esm/ShardStorage.js.map +1 -0
  248. package/dist/esm/Sharding.js +730 -87
  249. package/dist/esm/Sharding.js.map +1 -1
  250. package/dist/esm/ShardingConfig.js +80 -17
  251. package/dist/esm/ShardingConfig.js.map +1 -1
  252. package/dist/esm/ShardingRegistrationEvent.js +19 -29
  253. package/dist/esm/ShardingRegistrationEvent.js.map +1 -1
  254. package/dist/esm/Singleton.js +15 -0
  255. package/dist/esm/Singleton.js.map +1 -0
  256. package/dist/esm/SingletonAddress.js +40 -0
  257. package/dist/esm/SingletonAddress.js.map +1 -0
  258. package/dist/esm/Snowflake.js +117 -0
  259. package/dist/esm/Snowflake.js.map +1 -0
  260. package/dist/esm/SocketRunner.js +31 -0
  261. package/dist/esm/SocketRunner.js.map +1 -0
  262. package/dist/esm/SocketShardManager.js +24 -0
  263. package/dist/esm/SocketShardManager.js.map +1 -0
  264. package/dist/esm/SqlMessageStorage.js +658 -0
  265. package/dist/esm/SqlMessageStorage.js.map +1 -0
  266. package/dist/esm/SqlShardStorage.js +218 -0
  267. package/dist/esm/SqlShardStorage.js.map +1 -0
  268. package/dist/esm/SynchronizedClock.js +57 -0
  269. package/dist/esm/SynchronizedClock.js.map +1 -0
  270. package/dist/esm/index.js +48 -24
  271. package/dist/esm/index.js.map +1 -1
  272. package/dist/esm/internal/entityManager.js +311 -142
  273. package/dist/esm/internal/entityManager.js.map +1 -1
  274. package/dist/esm/internal/entityReaper.js +38 -0
  275. package/dist/esm/internal/entityReaper.js.map +1 -0
  276. package/dist/esm/internal/hash.js +12 -0
  277. package/dist/esm/internal/hash.js.map +1 -0
  278. package/dist/esm/internal/interruptors.js +3 -0
  279. package/dist/esm/internal/interruptors.js.map +1 -0
  280. package/dist/esm/internal/resourceMap.js +79 -0
  281. package/dist/esm/internal/resourceMap.js.map +1 -0
  282. package/dist/esm/internal/resourceRef.js +83 -0
  283. package/dist/esm/internal/resourceRef.js.map +1 -0
  284. package/dist/esm/internal/shardManager.js +217 -233
  285. package/dist/esm/internal/shardManager.js.map +1 -1
  286. package/package.json +212 -154
  287. package/src/ClusterError.ts +193 -0
  288. package/src/ClusterMetrics.ts +62 -0
  289. package/src/ClusterSchema.ts +13 -0
  290. package/src/DeliverAt.ts +36 -0
  291. package/src/Entity.ts +438 -0
  292. package/src/EntityAddress.ts +55 -0
  293. package/src/EntityId.ts +16 -0
  294. package/src/EntityType.ts +16 -0
  295. package/src/Envelope.ts +352 -0
  296. package/src/HttpCommon.ts +73 -0
  297. package/src/HttpRunner.ts +196 -0
  298. package/src/HttpShardManager.ts +273 -0
  299. package/src/MachineId.ts +27 -0
  300. package/src/Message.ts +143 -92
  301. package/src/MessageStorage.ts +697 -0
  302. package/src/Reply.ts +295 -0
  303. package/src/Runner.ts +84 -0
  304. package/src/RunnerAddress.ts +61 -0
  305. package/src/RunnerHealth.ts +87 -0
  306. package/src/RunnerServer.ts +156 -0
  307. package/src/Runners.ts +533 -0
  308. package/src/ShardId.ts +10 -62
  309. package/src/ShardManager.ts +780 -29
  310. package/src/ShardStorage.ts +289 -0
  311. package/src/Sharding.ts +1060 -183
  312. package/src/ShardingConfig.ts +186 -45
  313. package/src/ShardingRegistrationEvent.ts +38 -39
  314. package/src/Singleton.ts +20 -0
  315. package/src/SingletonAddress.ts +47 -0
  316. package/src/Snowflake.ts +194 -0
  317. package/src/SocketRunner.ts +59 -0
  318. package/src/SocketShardManager.ts +48 -0
  319. package/src/SqlMessageStorage.ts +833 -0
  320. package/src/SqlShardStorage.ts +292 -0
  321. package/src/SynchronizedClock.ts +82 -0
  322. package/src/index.ts +54 -24
  323. package/src/internal/entityManager.ts +464 -361
  324. package/src/internal/entityReaper.ts +53 -0
  325. package/src/internal/hash.ts +11 -0
  326. package/src/internal/interruptors.ts +4 -0
  327. package/src/internal/resourceMap.ts +89 -0
  328. package/src/internal/resourceRef.ts +88 -0
  329. package/src/internal/shardManager.ts +273 -546
  330. package/AtLeastOnce/package.json +0 -6
  331. package/AtLeastOnceStorage/package.json +0 -6
  332. package/Broadcaster/package.json +0 -6
  333. package/ManagerConfig/package.json +0 -6
  334. package/MessageState/package.json +0 -6
  335. package/Messenger/package.json +0 -6
  336. package/Pod/package.json +0 -6
  337. package/PodAddress/package.json +0 -6
  338. package/Pods/package.json +0 -6
  339. package/PodsHealth/package.json +0 -6
  340. package/PoisonPill/package.json +0 -6
  341. package/RecipientAddress/package.json +0 -6
  342. package/RecipientBehaviour/package.json +0 -6
  343. package/RecipientBehaviourContext/package.json +0 -6
  344. package/RecipientType/package.json +0 -6
  345. package/Serialization/package.json +0 -6
  346. package/SerializedEnvelope/package.json +0 -6
  347. package/SerializedMessage/package.json +0 -6
  348. package/ShardManagerClient/package.json +0 -6
  349. package/ShardingEvent/package.json +0 -6
  350. package/ShardingException/package.json +0 -6
  351. package/Storage/package.json +0 -6
  352. package/dist/cjs/AtLeastOnce.js.map +0 -1
  353. package/dist/cjs/AtLeastOnceStorage.js.map +0 -1
  354. package/dist/cjs/Broadcaster.js +0 -6
  355. package/dist/cjs/Broadcaster.js.map +0 -1
  356. package/dist/cjs/ManagerConfig.js.map +0 -1
  357. package/dist/cjs/MessageState.js +0 -55
  358. package/dist/cjs/MessageState.js.map +0 -1
  359. package/dist/cjs/Messenger.js +0 -6
  360. package/dist/cjs/Messenger.js.map +0 -1
  361. package/dist/cjs/Pod.js +0 -78
  362. package/dist/cjs/Pod.js.map +0 -1
  363. package/dist/cjs/PodAddress.js +0 -77
  364. package/dist/cjs/PodAddress.js.map +0 -1
  365. package/dist/cjs/Pods.js.map +0 -1
  366. package/dist/cjs/PodsHealth.js +0 -41
  367. package/dist/cjs/PodsHealth.js.map +0 -1
  368. package/dist/cjs/PoisonPill.js +0 -78
  369. package/dist/cjs/PoisonPill.js.map +0 -1
  370. package/dist/cjs/RecipientAddress.js +0 -79
  371. package/dist/cjs/RecipientAddress.js.map +0 -1
  372. package/dist/cjs/RecipientBehaviour.js +0 -38
  373. package/dist/cjs/RecipientBehaviour.js.map +0 -1
  374. package/dist/cjs/RecipientBehaviourContext.js +0 -64
  375. package/dist/cjs/RecipientBehaviourContext.js.map +0 -1
  376. package/dist/cjs/RecipientType.js +0 -123
  377. package/dist/cjs/RecipientType.js.map +0 -1
  378. package/dist/cjs/Serialization.js +0 -32
  379. package/dist/cjs/Serialization.js.map +0 -1
  380. package/dist/cjs/SerializedEnvelope.js +0 -87
  381. package/dist/cjs/SerializedEnvelope.js.map +0 -1
  382. package/dist/cjs/SerializedMessage.js +0 -64
  383. package/dist/cjs/SerializedMessage.js.map +0 -1
  384. package/dist/cjs/ShardManagerClient.js.map +0 -1
  385. package/dist/cjs/ShardingEvent.js +0 -72
  386. package/dist/cjs/ShardingEvent.js.map +0 -1
  387. package/dist/cjs/ShardingException.js +0 -107
  388. package/dist/cjs/ShardingException.js.map +0 -1
  389. package/dist/cjs/Storage.js +0 -40
  390. package/dist/cjs/Storage.js.map +0 -1
  391. package/dist/cjs/internal/atLeastOnce.js +0 -35
  392. package/dist/cjs/internal/atLeastOnce.js.map +0 -1
  393. package/dist/cjs/internal/atLeastOnceStorage.js +0 -163
  394. package/dist/cjs/internal/atLeastOnceStorage.js.map +0 -1
  395. package/dist/cjs/internal/entityState.js +0 -47
  396. package/dist/cjs/internal/entityState.js.map +0 -1
  397. package/dist/cjs/internal/managerConfig.js +0 -46
  398. package/dist/cjs/internal/managerConfig.js.map +0 -1
  399. package/dist/cjs/internal/message.js +0 -48
  400. package/dist/cjs/internal/message.js.map +0 -1
  401. package/dist/cjs/internal/messageState.js +0 -79
  402. package/dist/cjs/internal/messageState.js.map +0 -1
  403. package/dist/cjs/internal/podWithMetadata.js +0 -54
  404. package/dist/cjs/internal/podWithMetadata.js.map +0 -1
  405. package/dist/cjs/internal/pods.js +0 -35
  406. package/dist/cjs/internal/pods.js.map +0 -1
  407. package/dist/cjs/internal/podsHealth.js +0 -40
  408. package/dist/cjs/internal/podsHealth.js.map +0 -1
  409. package/dist/cjs/internal/recipientBehaviour.js +0 -52
  410. package/dist/cjs/internal/recipientBehaviour.js.map +0 -1
  411. package/dist/cjs/internal/recipientBehaviourContext.js +0 -36
  412. package/dist/cjs/internal/recipientBehaviourContext.js.map +0 -1
  413. package/dist/cjs/internal/serialization.js +0 -48
  414. package/dist/cjs/internal/serialization.js.map +0 -1
  415. package/dist/cjs/internal/shardManagerClient.js +0 -48
  416. package/dist/cjs/internal/shardManagerClient.js.map +0 -1
  417. package/dist/cjs/internal/shardManagerState.js +0 -44
  418. package/dist/cjs/internal/shardManagerState.js.map +0 -1
  419. package/dist/cjs/internal/sharding.js +0 -306
  420. package/dist/cjs/internal/sharding.js.map +0 -1
  421. package/dist/cjs/internal/shardingConfig.js +0 -56
  422. package/dist/cjs/internal/shardingConfig.js.map +0 -1
  423. package/dist/cjs/internal/storage.js +0 -52
  424. package/dist/cjs/internal/storage.js.map +0 -1
  425. package/dist/cjs/internal/utils.js +0 -69
  426. package/dist/cjs/internal/utils.js.map +0 -1
  427. package/dist/dts/AtLeastOnce.d.ts +0 -20
  428. package/dist/dts/AtLeastOnce.d.ts.map +0 -1
  429. package/dist/dts/AtLeastOnceStorage.d.ts +0 -75
  430. package/dist/dts/AtLeastOnceStorage.d.ts.map +0 -1
  431. package/dist/dts/Broadcaster.d.ts +0 -32
  432. package/dist/dts/Broadcaster.d.ts.map +0 -1
  433. package/dist/dts/ManagerConfig.d.ts +0 -61
  434. package/dist/dts/ManagerConfig.d.ts.map +0 -1
  435. package/dist/dts/MessageState.d.ts +0 -107
  436. package/dist/dts/MessageState.d.ts.map +0 -1
  437. package/dist/dts/Messenger.d.ts +0 -32
  438. package/dist/dts/Messenger.d.ts.map +0 -1
  439. package/dist/dts/Pod.d.ts +0 -81
  440. package/dist/dts/Pod.d.ts.map +0 -1
  441. package/dist/dts/PodAddress.d.ts +0 -80
  442. package/dist/dts/PodAddress.d.ts.map +0 -1
  443. package/dist/dts/Pods.d.ts +0 -78
  444. package/dist/dts/Pods.d.ts.map +0 -1
  445. package/dist/dts/PodsHealth.d.ts +0 -66
  446. package/dist/dts/PodsHealth.d.ts.map +0 -1
  447. package/dist/dts/PoisonPill.d.ts +0 -78
  448. package/dist/dts/PoisonPill.d.ts.map +0 -1
  449. package/dist/dts/RecipientAddress.d.ts +0 -57
  450. package/dist/dts/RecipientAddress.d.ts.map +0 -1
  451. package/dist/dts/RecipientBehaviour.d.ts +0 -72
  452. package/dist/dts/RecipientBehaviour.d.ts.map +0 -1
  453. package/dist/dts/RecipientBehaviourContext.d.ts +0 -83
  454. package/dist/dts/RecipientBehaviourContext.d.ts.map +0 -1
  455. package/dist/dts/RecipientType.d.ts +0 -93
  456. package/dist/dts/RecipientType.d.ts.map +0 -1
  457. package/dist/dts/Serialization.d.ts +0 -58
  458. package/dist/dts/Serialization.d.ts.map +0 -1
  459. package/dist/dts/SerializedEnvelope.d.ts +0 -86
  460. package/dist/dts/SerializedEnvelope.d.ts.map +0 -1
  461. package/dist/dts/SerializedMessage.d.ts +0 -66
  462. package/dist/dts/SerializedMessage.d.ts.map +0 -1
  463. package/dist/dts/ShardManagerClient.d.ts +0 -50
  464. package/dist/dts/ShardManagerClient.d.ts.map +0 -1
  465. package/dist/dts/ShardingEvent.d.ts +0 -90
  466. package/dist/dts/ShardingEvent.d.ts.map +0 -1
  467. package/dist/dts/ShardingException.d.ts +0 -125
  468. package/dist/dts/ShardingException.d.ts.map +0 -1
  469. package/dist/dts/Storage.d.ts +0 -78
  470. package/dist/dts/Storage.d.ts.map +0 -1
  471. package/dist/dts/internal/atLeastOnce.d.ts +0 -2
  472. package/dist/dts/internal/atLeastOnce.d.ts.map +0 -1
  473. package/dist/dts/internal/atLeastOnceStorage.d.ts +0 -2
  474. package/dist/dts/internal/atLeastOnceStorage.d.ts.map +0 -1
  475. package/dist/dts/internal/entityState.d.ts +0 -21
  476. package/dist/dts/internal/entityState.d.ts.map +0 -1
  477. package/dist/dts/internal/managerConfig.d.ts +0 -2
  478. package/dist/dts/internal/managerConfig.d.ts.map +0 -1
  479. package/dist/dts/internal/message.d.ts +0 -9
  480. package/dist/dts/internal/message.d.ts.map +0 -1
  481. package/dist/dts/internal/messageState.d.ts +0 -2
  482. package/dist/dts/internal/messageState.d.ts.map +0 -1
  483. package/dist/dts/internal/podWithMetadata.d.ts +0 -2
  484. package/dist/dts/internal/podWithMetadata.d.ts.map +0 -1
  485. package/dist/dts/internal/pods.d.ts +0 -2
  486. package/dist/dts/internal/pods.d.ts.map +0 -1
  487. package/dist/dts/internal/podsHealth.d.ts +0 -2
  488. package/dist/dts/internal/podsHealth.d.ts.map +0 -1
  489. package/dist/dts/internal/recipientBehaviour.d.ts +0 -2
  490. package/dist/dts/internal/recipientBehaviour.d.ts.map +0 -1
  491. package/dist/dts/internal/recipientBehaviourContext.d.ts +0 -2
  492. package/dist/dts/internal/recipientBehaviourContext.d.ts.map +0 -1
  493. package/dist/dts/internal/serialization.d.ts +0 -2
  494. package/dist/dts/internal/serialization.d.ts.map +0 -1
  495. package/dist/dts/internal/shardManagerClient.d.ts +0 -2
  496. package/dist/dts/internal/shardManagerClient.d.ts.map +0 -1
  497. package/dist/dts/internal/shardManagerState.d.ts +0 -26
  498. package/dist/dts/internal/shardManagerState.d.ts.map +0 -1
  499. package/dist/dts/internal/sharding.d.ts +0 -2
  500. package/dist/dts/internal/sharding.d.ts.map +0 -1
  501. package/dist/dts/internal/shardingConfig.d.ts +0 -2
  502. package/dist/dts/internal/shardingConfig.d.ts.map +0 -1
  503. package/dist/dts/internal/storage.d.ts +0 -2
  504. package/dist/dts/internal/storage.d.ts.map +0 -1
  505. package/dist/dts/internal/utils.d.ts +0 -2
  506. package/dist/dts/internal/utils.d.ts.map +0 -1
  507. package/dist/esm/AtLeastOnce.js +0 -12
  508. package/dist/esm/AtLeastOnce.js.map +0 -1
  509. package/dist/esm/AtLeastOnceStorage.js +0 -17
  510. package/dist/esm/AtLeastOnceStorage.js.map +0 -1
  511. package/dist/esm/Broadcaster.js +0 -2
  512. package/dist/esm/Broadcaster.js.map +0 -1
  513. package/dist/esm/ManagerConfig.js +0 -26
  514. package/dist/esm/ManagerConfig.js.map +0 -1
  515. package/dist/esm/MessageState.js +0 -47
  516. package/dist/esm/MessageState.js.map +0 -1
  517. package/dist/esm/Messenger.js +0 -2
  518. package/dist/esm/Messenger.js.map +0 -1
  519. package/dist/esm/Pod.js +0 -65
  520. package/dist/esm/Pod.js.map +0 -1
  521. package/dist/esm/PodAddress.js +0 -64
  522. package/dist/esm/PodAddress.js.map +0 -1
  523. package/dist/esm/Pods.js +0 -27
  524. package/dist/esm/Pods.js.map +0 -1
  525. package/dist/esm/PodsHealth.js +0 -33
  526. package/dist/esm/PodsHealth.js.map +0 -1
  527. package/dist/esm/PoisonPill.js +0 -65
  528. package/dist/esm/PoisonPill.js.map +0 -1
  529. package/dist/esm/RecipientAddress.js +0 -67
  530. package/dist/esm/RecipientAddress.js.map +0 -1
  531. package/dist/esm/RecipientBehaviour.js +0 -30
  532. package/dist/esm/RecipientBehaviour.js.map +0 -1
  533. package/dist/esm/RecipientBehaviourContext.js +0 -56
  534. package/dist/esm/RecipientBehaviourContext.js.map +0 -1
  535. package/dist/esm/RecipientType.js +0 -108
  536. package/dist/esm/RecipientType.js.map +0 -1
  537. package/dist/esm/Serialization.js +0 -24
  538. package/dist/esm/Serialization.js.map +0 -1
  539. package/dist/esm/SerializedEnvelope.js +0 -74
  540. package/dist/esm/SerializedEnvelope.js.map +0 -1
  541. package/dist/esm/SerializedMessage.js +0 -51
  542. package/dist/esm/SerializedMessage.js.map +0 -1
  543. package/dist/esm/ShardManagerClient.js +0 -22
  544. package/dist/esm/ShardManagerClient.js.map +0 -1
  545. package/dist/esm/ShardingEvent.js +0 -62
  546. package/dist/esm/ShardingEvent.js.map +0 -1
  547. package/dist/esm/ShardingException.js +0 -91
  548. package/dist/esm/ShardingException.js.map +0 -1
  549. package/dist/esm/Storage.js +0 -32
  550. package/dist/esm/Storage.js.map +0 -1
  551. package/dist/esm/internal/atLeastOnce.js +0 -26
  552. package/dist/esm/internal/atLeastOnce.js.map +0 -1
  553. package/dist/esm/internal/atLeastOnceStorage.js +0 -154
  554. package/dist/esm/internal/atLeastOnceStorage.js.map +0 -1
  555. package/dist/esm/internal/entityState.js +0 -35
  556. package/dist/esm/internal/entityState.js.map +0 -1
  557. package/dist/esm/internal/managerConfig.js +0 -38
  558. package/dist/esm/internal/managerConfig.js.map +0 -1
  559. package/dist/esm/internal/message.js +0 -35
  560. package/dist/esm/internal/message.js.map +0 -1
  561. package/dist/esm/internal/messageState.js +0 -66
  562. package/dist/esm/internal/messageState.js.map +0 -1
  563. package/dist/esm/internal/podWithMetadata.js +0 -41
  564. package/dist/esm/internal/podWithMetadata.js.map +0 -1
  565. package/dist/esm/internal/pods.js +0 -25
  566. package/dist/esm/internal/pods.js.map +0 -1
  567. package/dist/esm/internal/podsHealth.js +0 -30
  568. package/dist/esm/internal/podsHealth.js.map +0 -1
  569. package/dist/esm/internal/recipientBehaviour.js +0 -42
  570. package/dist/esm/internal/recipientBehaviour.js.map +0 -1
  571. package/dist/esm/internal/recipientBehaviourContext.js +0 -26
  572. package/dist/esm/internal/recipientBehaviourContext.js.map +0 -1
  573. package/dist/esm/internal/serialization.js +0 -38
  574. package/dist/esm/internal/serialization.js.map +0 -1
  575. package/dist/esm/internal/shardManagerClient.js +0 -38
  576. package/dist/esm/internal/shardManagerClient.js.map +0 -1
  577. package/dist/esm/internal/shardManagerState.js +0 -36
  578. package/dist/esm/internal/shardManagerState.js.map +0 -1
  579. package/dist/esm/internal/sharding.js +0 -288
  580. package/dist/esm/internal/sharding.js.map +0 -1
  581. package/dist/esm/internal/shardingConfig.js +0 -47
  582. package/dist/esm/internal/shardingConfig.js.map +0 -1
  583. package/dist/esm/internal/storage.js +0 -42
  584. package/dist/esm/internal/storage.js.map +0 -1
  585. package/dist/esm/internal/utils.js +0 -56
  586. package/dist/esm/internal/utils.js.map +0 -1
  587. package/src/AtLeastOnce.ts +0 -28
  588. package/src/AtLeastOnceStorage.ts +0 -96
  589. package/src/Broadcaster.ts +0 -48
  590. package/src/ManagerConfig.ts +0 -67
  591. package/src/MessageState.ts +0 -126
  592. package/src/Messenger.ts +0 -40
  593. package/src/Pod.ts +0 -95
  594. package/src/PodAddress.ts +0 -94
  595. package/src/Pods.ts +0 -100
  596. package/src/PodsHealth.ts +0 -74
  597. package/src/PoisonPill.ts +0 -105
  598. package/src/RecipientAddress.ts +0 -72
  599. package/src/RecipientBehaviour.ts +0 -108
  600. package/src/RecipientBehaviourContext.ts +0 -101
  601. package/src/RecipientType.ts +0 -134
  602. package/src/Serialization.ts +0 -72
  603. package/src/SerializedEnvelope.ts +0 -108
  604. package/src/SerializedMessage.ts +0 -82
  605. package/src/ShardManagerClient.ts +0 -57
  606. package/src/ShardingEvent.ts +0 -121
  607. package/src/ShardingException.ts +0 -151
  608. package/src/Storage.ts +0 -92
  609. package/src/internal/atLeastOnce.ts +0 -59
  610. package/src/internal/atLeastOnceStorage.ts +0 -218
  611. package/src/internal/entityState.ts +0 -64
  612. package/src/internal/managerConfig.ts +0 -84
  613. package/src/internal/message.ts +0 -63
  614. package/src/internal/messageState.ts +0 -98
  615. package/src/internal/podWithMetadata.ts +0 -72
  616. package/src/internal/pods.ts +0 -29
  617. package/src/internal/podsHealth.ts +0 -39
  618. package/src/internal/recipientBehaviour.ts +0 -133
  619. package/src/internal/recipientBehaviourContext.ts +0 -70
  620. package/src/internal/serialization.ts +0 -63
  621. package/src/internal/shardManagerClient.ts +0 -49
  622. package/src/internal/shardManagerState.ts +0 -80
  623. package/src/internal/sharding.ts +0 -789
  624. package/src/internal/shardingConfig.ts +0 -97
  625. package/src/internal/storage.ts +0 -60
  626. 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
- }
@@ -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
@@ -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)
@@ -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
- )