@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
@@ -1,218 +0,0 @@
1
- import * as SqlClient from "@effect/sql/SqlClient"
2
- import type * as SqlError from "@effect/sql/SqlError"
3
- import * as SqlResolver from "@effect/sql/SqlResolver"
4
- import * as Context from "effect/Context"
5
- import * as Effect from "effect/Effect"
6
- import * as Layer from "effect/Layer"
7
- import * as PrimaryKey from "effect/PrimaryKey"
8
- import * as Schema from "effect/Schema"
9
- import * as Stream from "effect/Stream"
10
- import type * as AtLeastOnceStorage from "../AtLeastOnceStorage.js"
11
- import * as RecipientAddress from "../RecipientAddress.js"
12
- import type * as Serialization from "../Serialization.js"
13
- import * as SerializedEnvelope from "../SerializedEnvelope.js"
14
- import * as SerializedMessage from "../SerializedMessage.js"
15
- import * as InternalSerialization from "./serialization.js"
16
-
17
- /** @internal */
18
- const SymbolKey = "@effect/cluster/AtLeastOnceStorage"
19
-
20
- /** @internal */
21
- export const TypeId: AtLeastOnceStorage.TypeId = Symbol.for(
22
- SymbolKey
23
- ) as AtLeastOnceStorage.TypeId
24
-
25
- /** @internal */
26
- export const atLeastOnceStorageTag: Context.Tag<
27
- AtLeastOnceStorage.AtLeastOnceStorage,
28
- AtLeastOnceStorage.AtLeastOnceStorage
29
- > = Context.GenericTag<AtLeastOnceStorage.AtLeastOnceStorage>(SymbolKey)
30
-
31
- const make = ({ table }: AtLeastOnceStorage.AtLeastOnceStorage.MakeOptions): Effect.Effect<
32
- AtLeastOnceStorage.AtLeastOnceStorage,
33
- SqlError.SqlError,
34
- SqlClient.SqlClient | Serialization.Serialization
35
- > =>
36
- Effect.gen(function*() {
37
- const sql = yield* SqlClient.SqlClient
38
- const serialization = yield* InternalSerialization.serializationTag
39
-
40
- yield* sql.onDialectOrElse({
41
- mssql: () =>
42
- sql`
43
- IF OBJECT_ID(N'${sql.literal(table)}', N'U') IS NULL
44
- CREATE TABLE ${sql(table)} (
45
- recipient_name VARCHAR(255) NOT NULL,
46
- shard_id INT NOT NULL DEFAULT 0,
47
- entity_id VARCHAR(255) NOT NULL,
48
- message_id VARCHAR(255) NOT NULL,
49
- message_body TEXT NOT NULL,
50
- processed BIT NOT NULL DEFAULT 0,
51
- CONSTRAINT ${sql(table)}_pkey PRIMARY KEY (recipient_name, entity_id, message_id)
52
- WITH (IGNORE_DUP_KEY = ON)
53
- )
54
- `,
55
- mysql: () =>
56
- sql`
57
- CREATE TABLE IF NOT EXISTS ${sql(table)} (
58
- recipient_name VARCHAR(255) NOT NULL,
59
- shard_id INT NOT NULL DEFAULT 0,
60
- entity_id VARCHAR(255) NOT NULL,
61
- message_id VARCHAR(255) NOT NULL,
62
- message_body TEXT NOT NULL,
63
- processed BOOLEAN NOT NULL DEFAULT FALSE,
64
- CONSTRAINT ${sql(table)}_pkey PRIMARY KEY (recipient_name, entity_id, message_id)
65
- )
66
- `,
67
- pg: () =>
68
- Effect.catchAll(sql`SELECT ${table}::regclass`, () =>
69
- sql`
70
- CREATE TABLE IF NOT EXISTS ${sql(table)} (
71
- recipient_name VARCHAR(255) NOT NULL,
72
- shard_id INT NOT NULL DEFAULT 0,
73
- entity_id VARCHAR(255) NOT NULL,
74
- message_id VARCHAR(255) NOT NULL,
75
- message_body TEXT NOT NULL,
76
- processed BOOLEAN NOT NULL DEFAULT FALSE,
77
- CONSTRAINT ${sql(table)}_pkey PRIMARY KEY (recipient_name, entity_id, message_id)
78
- )
79
- `),
80
- orElse: () =>
81
- sql`
82
- CREATE TABLE IF NOT EXISTS ${sql.literal(table)} (
83
- recipient_name VARCHAR(255) NOT NULL,
84
- shard_id INT NOT NULL DEFAULT (0),
85
- entity_id VARCHAR(255) NOT NULL,
86
- message_id VARCHAR(255) NOT NULL,
87
- message_body CLOB NOT NULL,
88
- processed BOOLEAN NOT NULL DEFAULT (0),
89
- CONSTRAINT ${sql.literal(table)}_pkey PRIMARY KEY (recipient_name, entity_id, message_id)
90
- )
91
- `
92
- })
93
-
94
- const UpsertEntryResolver = yield* SqlResolver.void("UpsertEntry", {
95
- Request: Schema.Struct({
96
- recipient_name: Schema.String,
97
- shard_id: Schema.Number,
98
- entity_id: Schema.String,
99
- message_id: Schema.String,
100
- message_body: Schema.String
101
- }),
102
- execute: (requests) =>
103
- sql.onDialectOrElse({
104
- mssql: () =>
105
- sql`
106
- INSERT INTO ${sql(table)}
107
- ${sql.insert(requests)}
108
- `,
109
- mysql: () =>
110
- sql`
111
- INSERT INTO ${sql(table)}
112
- ${sql.insert(requests)}
113
- ON DUPLICATE KEY UPDATE
114
- recipient_name = recipient_name,
115
- entity_id = entity_id,
116
- message_id = message_id
117
- `,
118
- pg: () =>
119
- sql`
120
- INSERT INTO ${sql(table)}
121
- ${sql.insert(requests)}
122
- ON CONFLICT ON CONSTRAINT ${sql(table)}_pkey DO NOTHING
123
- `,
124
- orElse: () =>
125
- sql`
126
- INSERT INTO ${sql(table)}
127
- ${sql.insert(requests)}
128
- ON CONFLICT (recipient_name, entity_id, message_id) DO NOTHING
129
- `
130
- })
131
- })
132
-
133
- const SweepPendingResolver = yield* SqlResolver.ordered("SweepPending", {
134
- Request: Schema.Number,
135
- Result: Schema.Struct({
136
- shard_id: Schema.Number,
137
- entity_id: Schema.String,
138
- message_id: Schema.String,
139
- recipient_name: Schema.String,
140
- message_body: Schema.String
141
- }),
142
- execute: (shard_ids) =>
143
- sql`
144
- SELECT
145
- shard_id,
146
- entity_id,
147
- message_id,
148
- recipient_name,
149
- message_body
150
- FROM ${sql(table)}
151
- WHERE ${
152
- sql.and([
153
- sql`processed = ${false}`,
154
- sql.in("shard_id", shard_ids)
155
- ])
156
- }
157
- `
158
- })
159
-
160
- return {
161
- [TypeId]: TypeId,
162
- upsert: (recipientType, shardId, entityId, message) =>
163
- serialization.encode(recipientType.schema, message).pipe(
164
- Effect.flatMap(
165
- (message_body) =>
166
- UpsertEntryResolver.execute({
167
- recipient_name: recipientType.name,
168
- shard_id: shardId.value,
169
- entity_id: entityId,
170
- message_id: PrimaryKey.value(message),
171
- message_body: message_body.value
172
- })
173
- ),
174
- Effect.catchAllCause(Effect.logError)
175
- ),
176
- markAsProcessed: (recipientType, _shardId, entityId, message) => {
177
- return sql`
178
- UPDATE ${sql(table)}
179
- SET ${
180
- sql.onDialectOrElse({
181
- pg: () => sql.update({ processed: "TRUE" }),
182
- orElse: () => sql.update({ processed: 1 })
183
- })
184
- }
185
- WHERE ${
186
- sql.and([
187
- sql`recipient_name = ${recipientType.name}`,
188
- sql`entity_id = ${entityId}`,
189
- sql`message_id = ${PrimaryKey.value(message)}`
190
- ])
191
- }`.pipe(Effect.catchAllCause(Effect.logError))
192
- },
193
- sweepPending: (shardIds) =>
194
- Effect.forEach(shardIds, (id) =>
195
- Effect.withRequestCaching(true)(
196
- SweepPendingResolver.execute(id.value)
197
- ), {
198
- batching: true
199
- }).pipe(
200
- Effect.orDie,
201
- Stream.fromIterableEffect,
202
- Stream.map((entry) =>
203
- SerializedEnvelope.make(
204
- RecipientAddress.makeRecipientAddress(entry.recipient_name, entry.entity_id),
205
- entry.message_id,
206
- SerializedMessage.make(entry.message_body)
207
- )
208
- )
209
- )
210
- }
211
- })
212
-
213
- /** @internal */
214
- export const layer = (options: AtLeastOnceStorage.AtLeastOnceStorage.MakeOptions): Layer.Layer<
215
- AtLeastOnceStorage.AtLeastOnceStorage,
216
- SqlError.SqlError,
217
- SqlClient.SqlClient | Serialization.Serialization
218
- > => Layer.effect(atLeastOnceStorageTag, make(options))
@@ -1,64 +0,0 @@
1
- import * as Data from "effect/Data"
2
- import type * as Effect from "effect/Effect"
3
- import type * as Fiber from "effect/Fiber"
4
- import * as Option from "effect/Option"
5
- import type * as Scope from "effect/Scope"
6
- import type * as MessageState from "../MessageState.js"
7
- import type * as SerializedEnvelope from "../SerializedEnvelope.js"
8
- import type * as SerializedMessage from "../SerializedMessage.js"
9
- import type * as ShardingException from "../ShardingException.js"
10
-
11
- /** @internal */
12
- const EntityStateSymbolKey = "@effect/cluster/EntityState"
13
-
14
- /** @internal */
15
- export const EntityStateTypeId = Symbol.for(EntityStateSymbolKey)
16
-
17
- /** @internal */
18
- export type EntityStateTypeId = typeof EntityStateTypeId
19
-
20
- /**
21
- * @since 1.0.0
22
- * @category models
23
- */
24
- export interface EntityState {
25
- readonly [EntityStateTypeId]: EntityStateTypeId
26
- readonly sendAndGetState: (
27
- envelope: SerializedEnvelope.SerializedEnvelope
28
- ) => Effect.Effect<
29
- MessageState.MessageState<SerializedMessage.SerializedMessage>,
30
- ShardingException.ExceptionWhileOfferingMessageException | ShardingException.SerializationException
31
- >
32
- readonly expirationFiber: Fiber.RuntimeFiber<void, never>
33
- readonly executionScope: Scope.CloseableScope
34
- readonly terminationFiber: Option.Option<Fiber.RuntimeFiber<void, never>>
35
- readonly lastReceivedAt: number
36
- }
37
-
38
- /** @internal */
39
- export function make(
40
- data: Omit<EntityState, EntityStateTypeId>
41
- ): EntityState {
42
- return Data.struct({ [EntityStateTypeId]: EntityStateTypeId, ...data })
43
- }
44
-
45
- /** @internal */
46
- export function withTerminationFiber(
47
- terminationFiber: Fiber.RuntimeFiber<void, never>
48
- ): (entityState: EntityState) => EntityState {
49
- return (entityState) => ({ ...entityState, terminationFiber: Option.some(terminationFiber) })
50
- }
51
-
52
- /** @internal */
53
- export function withExpirationFiber(
54
- expirationFiber: Fiber.RuntimeFiber<void, never>
55
- ): (entityState: EntityState) => EntityState {
56
- return (entityState) => ({ ...entityState, expirationFiber })
57
- }
58
-
59
- /** @internal */
60
- export function withLastReceivedAd(
61
- lastReceivedAt: number
62
- ): (entityState: EntityState) => EntityState {
63
- return (entityState) => ({ ...entityState, lastReceivedAt })
64
- }
@@ -1,84 +0,0 @@
1
- import * as Config from "effect/Config"
2
- import type * as ConfigError from "effect/ConfigError"
3
- import * as Context from "effect/Context"
4
- import * as Duration from "effect/Duration"
5
- import { pipe } from "effect/Function"
6
- import * as Layer from "effect/Layer"
7
- import type * as ManagerConfig from "../ManagerConfig.js"
8
-
9
- /** @internal */
10
- const ManagerConfigSymbolKey = "@effect/cluster/ManagerConfig"
11
-
12
- /** @internal */
13
- export const ManagerConfigTypeId: ManagerConfig.ManagerConfigTypeId = Symbol.for(
14
- ManagerConfigSymbolKey
15
- ) as ManagerConfig.ManagerConfigTypeId
16
-
17
- /** @internal */
18
- export const managerConfigTag: Context.Tag<ManagerConfig.ManagerConfig, ManagerConfig.ManagerConfig> = Context
19
- .GenericTag(ManagerConfigSymbolKey)
20
-
21
- /** @internal */
22
- const defaultValues: ManagerConfig.ManagerConfig = {
23
- numberOfShards: 300,
24
- apiPort: 8080,
25
- rebalanceInterval: Duration.seconds(20),
26
- rebalanceRetryInterval: Duration.seconds(10),
27
- pingTimeout: Duration.seconds(3),
28
- persistRetryInterval: Duration.seconds(3),
29
- persistRetryCount: 100,
30
- rebalanceRate: 2 / 100
31
- }
32
-
33
- /** @internal */
34
- export const defaults: Layer.Layer<ManagerConfig.ManagerConfig> = Layer.succeed(managerConfigTag, defaultValues)
35
-
36
- /** @internal */
37
- const config: Config.Config<ManagerConfig.ManagerConfig> = Config.all({
38
- numberOfShards: pipe(
39
- Config.number("NUMBER_OF_SHARDS"),
40
- Config.withDefault(defaultValues.numberOfShards),
41
- Config.withDescription("Number of shards")
42
- ),
43
- apiPort: pipe(
44
- Config.integer("API_PORT"),
45
- Config.withDefault(defaultValues.apiPort),
46
- Config.withDescription("API port")
47
- ),
48
- rebalanceInterval: pipe(
49
- Config.map(Config.number("REBALANCE_INTERVAL"), Duration.millis),
50
- Config.withDefault(defaultValues.rebalanceInterval),
51
- Config.withDescription("Interval of rebalance")
52
- ),
53
- rebalanceRetryInterval: pipe(
54
- Config.map(Config.number("REBALANCE_RETRY_INTERVAL"), Duration.millis),
55
- Config.withDefault(defaultValues.rebalanceRetryInterval),
56
- Config.withDescription("Retry interval of rebalance")
57
- ),
58
- pingTimeout: pipe(
59
- Config.map(Config.number("PING_TIMEOUT"), Duration.millis),
60
- Config.withDefault(defaultValues.pingTimeout),
61
- Config.withDescription("Ping timeout")
62
- ),
63
- persistRetryInterval: pipe(
64
- Config.map(Config.number("PERSIST_RETRY_INTERVAL"), Duration.millis),
65
- Config.withDefault(defaultValues.persistRetryInterval),
66
- Config.withDescription("Persist retry interval")
67
- ),
68
- persistRetryCount: pipe(
69
- Config.number("PERSIST_RETRY_COUNT"),
70
- Config.withDefault(defaultValues.persistRetryCount),
71
- Config.withDescription("Persist retry count")
72
- ),
73
- rebalanceRate: pipe(
74
- Config.number("REBALANCE_RATE"),
75
- Config.withDefault(defaultValues.rebalanceRate),
76
- Config.withDescription("Rebalance rate")
77
- )
78
- })
79
-
80
- /** @internal */
81
- export const fromConfig: Layer.Layer<ManagerConfig.ManagerConfig, ConfigError.ConfigError> = Layer.effect(
82
- managerConfigTag,
83
- config
84
- )
@@ -1,63 +0,0 @@
1
- import * as PrimaryKey from "effect/PrimaryKey"
2
- import * as Schema from "effect/Schema"
3
- import type * as Types from "effect/Types"
4
- import type * as Message from "../Message.js"
5
-
6
- /** @internal */
7
- export function isMessageWithResult(value: unknown): value is Message.Message<unknown, unknown, unknown, unknown> {
8
- return (
9
- typeof value === "object" && value !== null &&
10
- Schema.symbolWithResult in value
11
- )
12
- }
13
-
14
- /** @internal */
15
- export function exitSchema<A extends Message.Message.Any>(
16
- message: A
17
- ): Schema.Schema<Message.Message.Exit<A>, unknown> {
18
- return Schema.exitSchema(message as any) as any
19
- }
20
-
21
- /** @internal */
22
- export function successSchema<A extends Message.Message.Any>(
23
- message: A
24
- ): Schema.Schema<Message.Message.Success<A>, unknown> {
25
- return Schema.successSchema(message as any) as any
26
- }
27
-
28
- /** @internal */
29
- export function failureSchema<A extends Message.Message.Any>(
30
- message: A
31
- ): Schema.Schema<Message.Message.Error<A>, unknown> {
32
- return Schema.failureSchema(message as any) as any
33
- }
34
-
35
- /**
36
- * @since 1.0.0
37
- * @category schemas
38
- */
39
- export const TaggedMessage_ = <Self>() =>
40
- <Tag extends string, E, IE, A, IA, Fields extends Schema.Struct.Fields>(
41
- tag: Tag,
42
- failure: Schema.Schema<E, IE, never>,
43
- success: Schema.Schema<A, IA, never>,
44
- fields: Fields,
45
- messageToId: (message: Schema.Struct.Encoded<Fields>) => string
46
- ): Message.TaggedMessageConstructor<
47
- Tag,
48
- Self,
49
- Schema.Schema.Context<Fields[keyof Fields]>,
50
- Types.Simplify<Schema.Struct.Encoded<Fields>>,
51
- Types.Simplify<Schema.Struct.Type<Fields>>,
52
- IE,
53
- E,
54
- IA,
55
- A
56
- > => {
57
- return class extends (Schema.TaggedRequest<{}>()(tag, { failure, success, payload: fields }) as any) {
58
- constructor(props: any, disableValidation?: boolean) {
59
- super(props, disableValidation)
60
- ;(this as any)[PrimaryKey.symbol] = () => messageToId(this as any)
61
- }
62
- } as any
63
- }
@@ -1,98 +0,0 @@
1
- import * as Effect from "effect/Effect"
2
- import { pipe } from "effect/Function"
3
- import * as Schema from "effect/Schema"
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
- }
@@ -1,72 +0,0 @@
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
- }
@@ -1,29 +0,0 @@
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
- })
@@ -1,39 +0,0 @@
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
- )