@effect/cluster 0.28.4 → 0.29.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +731 -91
  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 +64 -133
  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 +729 -90
  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 +1059 -186
  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
@@ -0,0 +1,273 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as HttpApp from "@effect/platform/HttpApp"
5
+ import type * as HttpClient from "@effect/platform/HttpClient"
6
+ import * as HttpRouter from "@effect/platform/HttpRouter"
7
+ import * as HttpServer from "@effect/platform/HttpServer"
8
+ import type * as Socket from "@effect/platform/Socket"
9
+ import type * as RpcSerialization from "@effect/rpc/RpcSerialization"
10
+ import * as RpcServer from "@effect/rpc/RpcServer"
11
+ import * as Effect from "effect/Effect"
12
+ import { identity } from "effect/Function"
13
+ import * as Layer from "effect/Layer"
14
+ import type { Scope } from "effect/Scope"
15
+ import { layerClientProtocolHttp, layerClientProtocolWebsocket } from "./HttpCommon.js"
16
+ import * as MessageStorage from "./MessageStorage.js"
17
+ import * as RunnerHealth from "./RunnerHealth.js"
18
+ import * as Runners from "./Runners.js"
19
+ import type { ShardingConfig } from "./ShardingConfig.js"
20
+ import * as ShardManager from "./ShardManager.js"
21
+ import type { ShardStorage } from "./ShardStorage.js"
22
+
23
+ /**
24
+ * @since 1.0.0
25
+ * @category Http App
26
+ */
27
+ export const toHttpApp: Effect.Effect<
28
+ HttpApp.Default<never, Scope>,
29
+ never,
30
+ Scope | RpcSerialization.RpcSerialization | ShardManager.ShardManager
31
+ > = Effect.gen(function*() {
32
+ const handlers = yield* Layer.build(ShardManager.layerServerHandlers)
33
+ return yield* RpcServer.toHttpApp(ShardManager.Rpcs).pipe(
34
+ Effect.provide(handlers)
35
+ )
36
+ })
37
+
38
+ /**
39
+ * @since 1.0.0
40
+ * @category Http App
41
+ */
42
+ export const toHttpAppWebsocket: Effect.Effect<
43
+ HttpApp.Default<never, Scope>,
44
+ never,
45
+ Scope | RpcSerialization.RpcSerialization | ShardManager.ShardManager
46
+ > = Effect.gen(function*() {
47
+ const handlers = yield* Layer.build(ShardManager.layerServerHandlers)
48
+ return yield* RpcServer.toHttpAppWebsocket(ShardManager.Rpcs).pipe(
49
+ Effect.provide(handlers)
50
+ )
51
+ })
52
+
53
+ /**
54
+ * A layer for the `ShardManager` service, that does not run a server.
55
+ *
56
+ * It only provides the `Runners` rpc client.
57
+ *
58
+ * You can use this with the `toHttpApp` and `toHttpAppWebsocket` apis
59
+ * to run a complete `ShardManager` server.
60
+ *
61
+ * @since 1.0.0
62
+ * @category Layers
63
+ */
64
+ export const layerNoServerHttp = (
65
+ options: {
66
+ readonly runnerPath: string
67
+ readonly runnerHttps?: boolean | undefined
68
+ }
69
+ ): Layer.Layer<
70
+ ShardManager.ShardManager,
71
+ never,
72
+ | RpcSerialization.RpcSerialization
73
+ | ShardStorage
74
+ | RunnerHealth.RunnerHealth
75
+ | HttpClient.HttpClient
76
+ | ShardManager.Config
77
+ | ShardingConfig
78
+ > =>
79
+ ShardManager.layer.pipe(
80
+ Layer.provide(Runners.layerRpc.pipe(
81
+ Layer.provide([
82
+ layerClientProtocolHttp({
83
+ path: options.runnerPath,
84
+ https: options.runnerHttps
85
+ }),
86
+ MessageStorage.layerNoop
87
+ ])
88
+ ))
89
+ )
90
+
91
+ /**
92
+ * A layer for the `ShardManager` service, that does not run a server.
93
+ *
94
+ * It only provides the `Runners` rpc client.
95
+ *
96
+ * You can use this with the `toHttpApp` and `toHttpAppWebsocket` apis
97
+ * to run a complete `ShardManager` server.
98
+ *
99
+ * @since 1.0.0
100
+ * @category Layers
101
+ */
102
+ export const layerNoServerWebsocket = (
103
+ options: {
104
+ readonly runnerPath: string
105
+ readonly runnerHttps?: boolean | undefined
106
+ }
107
+ ): Layer.Layer<
108
+ ShardManager.ShardManager,
109
+ never,
110
+ | RpcSerialization.RpcSerialization
111
+ | ShardStorage
112
+ | RunnerHealth.RunnerHealth
113
+ | Socket.WebSocketConstructor
114
+ | ShardManager.Config
115
+ | ShardingConfig
116
+ > =>
117
+ ShardManager.layer.pipe(
118
+ Layer.provide(Runners.layerRpc.pipe(
119
+ Layer.provide([
120
+ layerClientProtocolWebsocket({
121
+ path: options.runnerPath,
122
+ https: options.runnerHttps
123
+ }),
124
+ MessageStorage.layerNoop
125
+ ])
126
+ ))
127
+ )
128
+
129
+ /**
130
+ * A HTTP layer for the `ShardManager` server, that adds a route to the provided
131
+ * `HttpRouter.Tag`.
132
+ *
133
+ * By default, it uses the `HttpRouter.Default` tag.
134
+ *
135
+ * @since 1.0.0
136
+ * @category Layers
137
+ */
138
+ export const layerHttpOptions = <I = HttpRouter.Default>(
139
+ options: {
140
+ readonly path: HttpRouter.PathInput
141
+ readonly routerTag?: HttpRouter.HttpRouter.TagClass<I, string, any, any>
142
+ readonly runnerPath: string
143
+ readonly runnerHttps?: boolean | undefined
144
+ readonly logAddress?: boolean | undefined
145
+ }
146
+ ): Layer.Layer<
147
+ ShardManager.ShardManager,
148
+ never,
149
+ | RpcSerialization.RpcSerialization
150
+ | ShardStorage
151
+ | RunnerHealth.RunnerHealth
152
+ | HttpClient.HttpClient
153
+ | HttpServer.HttpServer
154
+ | ShardManager.Config
155
+ | ShardingConfig
156
+ > => {
157
+ const routerTag = options.routerTag ?? HttpRouter.Default
158
+ return routerTag.serve().pipe(
159
+ options.logAddress ? withLogAddress : identity,
160
+ Layer.merge(ShardManager.layerServer),
161
+ Layer.provide(RpcServer.layerProtocolHttp(options)),
162
+ Layer.provideMerge(layerNoServerHttp(options))
163
+ )
164
+ }
165
+
166
+ /**
167
+ * A WebSocket layer for the `ShardManager` server, that adds a route to the provided
168
+ * `HttpRouter.Tag`.
169
+ *
170
+ * By default, it uses the `HttpRouter.Default` tag.
171
+ *
172
+ * @since 1.0.0
173
+ * @category Layers
174
+ */
175
+ export const layerWebsocketOptions = <I = HttpRouter.Default>(
176
+ options: {
177
+ readonly path: HttpRouter.PathInput
178
+ readonly routerTag?: HttpRouter.HttpRouter.TagClass<I, string, any, any>
179
+ readonly runnerPath: string
180
+ readonly runnerHttps?: boolean | undefined
181
+ readonly logAddress?: boolean | undefined
182
+ }
183
+ ): Layer.Layer<
184
+ ShardManager.ShardManager,
185
+ never,
186
+ | RpcSerialization.RpcSerialization
187
+ | ShardStorage
188
+ | RunnerHealth.RunnerHealth
189
+ | HttpServer.HttpServer
190
+ | Socket.WebSocketConstructor
191
+ | ShardManager.Config
192
+ | ShardingConfig
193
+ > => {
194
+ const routerTag = options.routerTag ?? HttpRouter.Default
195
+ return routerTag.serve().pipe(
196
+ options.logAddress ? withLogAddress : identity,
197
+ Layer.merge(ShardManager.layerServer),
198
+ Layer.provide(RpcServer.layerProtocolWebsocket(options)),
199
+ Layer.provideMerge(layerNoServerWebsocket(options))
200
+ )
201
+ }
202
+
203
+ const withLogAddress = <A, E, R>(layer: Layer.Layer<A, E, R>): Layer.Layer<A, E, R | HttpServer.HttpServer> =>
204
+ Layer.effectDiscard(
205
+ HttpServer.addressFormattedWith((address) =>
206
+ Effect.annotateLogs(Effect.logInfo(`Listening on: ${address}`), {
207
+ package: "@effect/cluster",
208
+ service: "ShardManager"
209
+ })
210
+ )
211
+ ).pipe(Layer.provideMerge(layer))
212
+
213
+ /**
214
+ * A HTTP layer for the `ShardManager` server, that adds a route to the provided
215
+ * `HttpRouter.Tag`.
216
+ *
217
+ * By default, it uses the `HttpRouter.Default` tag.
218
+ *
219
+ * @since 1.0.0
220
+ * @category Layers
221
+ */
222
+ export const layerHttp: Layer.Layer<
223
+ ShardManager.ShardManager,
224
+ never,
225
+ | RpcSerialization.RpcSerialization
226
+ | ShardStorage
227
+ | RunnerHealth.RunnerHealth
228
+ | HttpClient.HttpClient
229
+ | HttpServer.HttpServer
230
+ | ShardManager.Config
231
+ | ShardingConfig
232
+ > = layerHttpOptions({ path: "/", runnerPath: "/" })
233
+
234
+ /**
235
+ * A Websocket layer for the `ShardManager` server, that adds a route to the provided
236
+ * `HttpRouter.Tag`.
237
+ *
238
+ * By default, it uses the `HttpRouter.Default` tag.
239
+ *
240
+ * @since 1.0.0
241
+ * @category Layers
242
+ */
243
+ export const layerWebsocket: Layer.Layer<
244
+ ShardManager.ShardManager,
245
+ never,
246
+ | RpcSerialization.RpcSerialization
247
+ | ShardStorage
248
+ | RunnerHealth.RunnerHealth
249
+ | Socket.WebSocketConstructor
250
+ | HttpServer.HttpServer
251
+ | ShardManager.Config
252
+ | ShardingConfig
253
+ > = layerWebsocketOptions({ path: "/", runnerPath: "/" })
254
+
255
+ /**
256
+ * @since 1.0.0
257
+ * @category Layers
258
+ */
259
+ export const layerRunnerHealthHttp: Layer.Layer<
260
+ RunnerHealth.RunnerHealth,
261
+ never,
262
+ RpcSerialization.RpcSerialization | HttpClient.HttpClient | ShardingConfig
263
+ > = Layer.provide(RunnerHealth.layerRpc, layerClientProtocolHttp({ path: "/" }))
264
+
265
+ /**
266
+ * @since 1.0.0
267
+ * @category Layers
268
+ */
269
+ export const layerRunnerHealthWebsocket: Layer.Layer<
270
+ RunnerHealth.RunnerHealth,
271
+ never,
272
+ RpcSerialization.RpcSerialization | Socket.WebSocketConstructor | ShardingConfig
273
+ > = Layer.provide(RunnerHealth.layerRpc, layerClientProtocolWebsocket({ path: "/" }))
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Schema from "effect/Schema"
5
+
6
+ /**
7
+ * @since 1.0.0
8
+ * @category constructors
9
+ */
10
+ export const MachineId = Schema.Int.pipe(
11
+ Schema.brand("MachineId"),
12
+ Schema.annotations({
13
+ pretty: () => (machineId) => `MachineId(${machineId})`
14
+ })
15
+ )
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ * @category models
20
+ */
21
+ export type MachineId = typeof MachineId.Type
22
+
23
+ /**
24
+ * @since 1.0.0
25
+ * @category Constructors
26
+ */
27
+ export const make = (shardId: number): MachineId => MachineId.make(shardId)
package/src/Message.ts CHANGED
@@ -1,133 +1,184 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import type * as Exit_ from "effect/Exit"
5
- import type * as PrimaryKey from "effect/PrimaryKey"
6
- import type * as Schema from "effect/Schema"
7
- import type * as Types from "effect/Types"
8
- import * as internal from "./internal/message.js"
4
+ import type * as Rpc from "@effect/rpc/Rpc"
5
+ import { FiberRef } from "effect"
6
+ import type { Context } from "effect/Context"
7
+ import * as Data from "effect/Data"
8
+ import * as Effect from "effect/Effect"
9
+ import * as Option from "effect/Option"
10
+ import * as Schema from "effect/Schema"
11
+ import type { PersistenceError } from "./ClusterError.js"
12
+ import { MalformedMessage } from "./ClusterError.js"
13
+ import * as Envelope from "./Envelope.js"
14
+ import type * as Reply from "./Reply.js"
9
15
 
10
16
  /**
11
- * A Message is a request for an entity that will process it.
12
- * A Message also has a PrimaryKey so that the receiver is eventually able to detect duplicated messages.
13
- *
14
17
  * @since 1.0.0
15
- * @category models
18
+ * @category incoming
16
19
  */
17
- export interface Message<A, AI, E, EI>
18
- extends Schema.SerializableWithResult<any, any, never, A, AI, E, EI, never>, PrimaryKey.PrimaryKey
19
- {}
20
+ export type Incoming<R extends Rpc.Any> = IncomingRequest<R> | IncomingEnvelope
20
21
 
21
22
  /**
22
23
  * @since 1.0.0
23
- * @category models
24
+ * @category incoming
24
25
  */
25
- export namespace Message {
26
- /**
27
- * @since 1.0.0
28
- * @category models
29
- */
30
- export type Any =
31
- | Message<any, any, any, any>
32
- | Message<any, any, never, never>
26
+ export type IncomingLocal<R extends Rpc.Any> = IncomingRequestLocal<R> | IncomingEnvelope
33
27
 
34
- /**
35
- * Extracts the success type from a `Message`.
36
- *
37
- * @since 1.0.0
38
- * @category utils
39
- */
40
- export type Success<S> = S extends Message<infer A, infer _AI, infer _E, infer _EI> ? A : never
28
+ /**
29
+ * @since 1.0.0
30
+ * @category incoming
31
+ */
32
+ export const incomingLocalFromOutgoing = <R extends Rpc.Any>(self: Outgoing<R>): IncomingLocal<R> => {
33
+ if (self._tag === "OutgoingEnvelope") {
34
+ return new IncomingEnvelope({ envelope: self.envelope })
35
+ }
36
+ return new IncomingRequestLocal({
37
+ envelope: self.envelope,
38
+ respond: self.respond,
39
+ lastSentReply: Option.none()
40
+ })
41
+ }
41
42
 
42
- /**
43
- * Extracts the success type from a `Message`.
44
- *
45
- * @since 1.0.0
46
- * @category utils
47
- */
48
- export type SuccessEncoded<S> = S extends Message<infer _A, infer _AI, infer _E, infer _EI> ? _AI : never
43
+ /**
44
+ * @since 1.0.0
45
+ * @category incoming
46
+ */
47
+ export class IncomingRequest<R extends Rpc.Any> extends Data.TaggedClass("IncomingRequest")<{
48
+ readonly envelope: Envelope.Request.PartialEncoded
49
+ readonly lastSentReply: Option.Option<Reply.ReplyEncoded<R>>
50
+ readonly respond: (reply: Reply.ReplyWithContext<R>) => Effect.Effect<void, MalformedMessage | PersistenceError>
51
+ }> {}
49
52
 
50
- /**
51
- * Extracts the error type from a `Message`.
52
- *
53
- * @since 1.0.0
54
- * @category utils
55
- */
56
- export type Error<S> = S extends Message<infer _A, infer _AI, infer E, infer _EI> ? E : never
53
+ /**
54
+ * @since 1.0.0
55
+ * @category outgoing
56
+ */
57
+ export class IncomingRequestLocal<R extends Rpc.Any> extends Data.TaggedClass("IncomingRequestLocal")<{
58
+ readonly envelope: Envelope.Request<R>
59
+ readonly lastSentReply: Option.Option<Reply.Reply<R>>
60
+ readonly respond: (reply: Reply.Reply<R>) => Effect.Effect<void, MalformedMessage | PersistenceError>
61
+ }> {}
57
62
 
58
- /**
59
- * Extracts the error type from a `Message`.
60
- *
61
- * @since 1.0.0
62
- * @category utils
63
- */
64
- export type ErrorEncoded<S> = S extends Message<infer _A, infer _AI, infer _E, infer _EI> ? _EI : never
63
+ /**
64
+ * @since 1.0.0
65
+ * @category incoming
66
+ */
67
+ export class IncomingEnvelope extends Data.TaggedClass("IncomingEnvelope")<{
68
+ readonly _tag: "IncomingEnvelope"
69
+ readonly envelope: Envelope.AckChunk | Envelope.Interrupt
70
+ }> {}
65
71
 
66
- /**
67
- * Extracts the exit type from a `Message`.
68
- *
69
- * @since 1.0.0
70
- * @category utils
71
- */
72
- export type Exit<S> = S extends Schema.WithResult<infer A, infer _AI, infer E, infer _EI, infer _R> ? Exit_.Exit<A, E>
73
- : never
74
- }
72
+ /**
73
+ * @since 1.0.0
74
+ * @category outgoing
75
+ */
76
+ export type Outgoing<R extends Rpc.Any> = OutgoingRequest<R> | OutgoingEnvelope
75
77
 
76
78
  /**
77
79
  * @since 1.0.0
78
- * @category schemas
80
+ * @category outgoing
79
81
  */
80
- export interface TaggedMessageConstructor<Tag extends string, Self, R, IS, S, IE, E, IA, A>
81
- extends Schema.Schema<Self, Types.Simplify<IS & { readonly _tag: Tag }>, R>
82
- {
83
- new(
84
- props: Types.Equals<S, {}> extends true ? void : S,
85
- disableValidation?: boolean
86
- ):
87
- & Schema.TaggedRequest<Tag, S, IS & { readonly _tag: Tag }, never, A, IA, E, IE, never>
88
- & S
89
- & PrimaryKey.PrimaryKey
82
+ export class OutgoingRequest<R extends Rpc.Any> extends Data.TaggedClass("OutgoingRequest")<{
83
+ readonly envelope: Envelope.Request<R>
84
+ readonly context: Context<Rpc.Context<R>>
85
+ readonly lastReceivedReply: Option.Option<Reply.Reply<R>>
86
+ readonly rpc: R
87
+ readonly respond: (reply: Reply.Reply<R>) => Effect.Effect<void, PersistenceError>
88
+ }> {
89
+ /**
90
+ * @since 1.0.0
91
+ */
92
+ public encodedCache?: Envelope.Request.PartialEncoded
90
93
  }
91
94
 
92
95
  /**
93
96
  * @since 1.0.0
94
- * @category schemas
97
+ * @category outgoing
95
98
  */
96
- export const TaggedMessage = internal.TaggedMessage_
99
+ export class OutgoingEnvelope extends Data.TaggedClass("OutgoingEnvelope")<{
100
+ readonly envelope: Envelope.AckChunk | Envelope.Interrupt
101
+ readonly rpc: Rpc.AnyWithProps
102
+ }> {}
97
103
 
98
104
  /**
99
105
  * @since 1.0.0
100
- * @category utils
106
+ * @category serialization / deserialization
101
107
  */
102
- export const isMessageWithResult: (value: unknown) => value is Message<unknown, unknown, unknown, unknown> =
103
- internal.isMessageWithResult
108
+ export const serialize = <Rpc extends Rpc.Any>(
109
+ message: Outgoing<Rpc>
110
+ ): Effect.Effect<Envelope.Envelope.PartialEncoded, MalformedMessage> => {
111
+ if (message._tag !== "OutgoingRequest") {
112
+ return Effect.succeed(message.envelope)
113
+ }
114
+ return Effect.suspend(() =>
115
+ message.encodedCache
116
+ ? Effect.succeed(message.encodedCache)
117
+ : serializeRequest(message)
118
+ )
119
+ }
104
120
 
105
121
  /**
106
- * Extracts the exit schema from a Message. This schema will be used to encode the remote exit of the Message processor.
107
- *
108
122
  * @since 1.0.0
109
- * @category utils
123
+ * @category serialization / deserialization
110
124
  */
111
- export const exitSchema: <A extends Message.Any>(
112
- message: A
113
- ) => Schema.Schema<Message.Exit<A>, unknown> = internal.exitSchema
125
+ export const serializeEnvelope = <Rpc extends Rpc.Any>(
126
+ message: Outgoing<Rpc>
127
+ ): Effect.Effect<Envelope.Envelope.Encoded, MalformedMessage> =>
128
+ Effect.flatMap(
129
+ serialize(message),
130
+ (envelope) => MalformedMessage.refail(Schema.encode(Envelope.PartialEncoded)(envelope))
131
+ )
114
132
 
115
133
  /**
116
- * Extracts the failure schema from a Message. This schema will be used to encode remote failures of the Message processor.
117
- *
118
134
  * @since 1.0.0
119
- * @category utils
135
+ * @category serialization / deserialization
120
136
  */
121
- export const failureSchema: <A extends Message.Any>(
122
- message: A
123
- ) => Schema.Schema<Message.Error<A>, unknown> = internal.failureSchema
137
+ export const serializeRequest = <Rpc extends Rpc.Any>(
138
+ self: OutgoingRequest<Rpc>
139
+ ): Effect.Effect<Envelope.Request.PartialEncoded, MalformedMessage> => {
140
+ const rpc = self.rpc as any as Rpc.AnyWithProps
141
+ return Schema.encode(rpc.payloadSchema)(self.envelope.payload).pipe(
142
+ Effect.locally(FiberRef.currentContext, self.context),
143
+ MalformedMessage.refail,
144
+ Effect.map((payload) => ({
145
+ ...self.envelope,
146
+ payload
147
+ }))
148
+ ) as any as Effect.Effect<Envelope.Request.PartialEncoded, MalformedMessage>
149
+ }
124
150
 
125
151
  /**
126
- * Extracts the success schema from a Message. This schema will be used to encode the remote success of the Message processor.
127
- *
128
152
  * @since 1.0.0
129
- * @category utils
153
+ * @category serialization / deserialization
130
154
  */
131
- export const successSchema: <A extends Message.Any>(
132
- message: A
133
- ) => Schema.Schema<Message.Success<A>, unknown> = internal.successSchema
155
+ export const deserializeLocal = <Rpc extends Rpc.Any>(
156
+ self: Outgoing<Rpc>,
157
+ encoded: Envelope.Envelope.PartialEncoded
158
+ ): Effect.Effect<
159
+ IncomingLocal<Rpc>,
160
+ MalformedMessage
161
+ > => {
162
+ if (encoded._tag !== "Request") {
163
+ return Effect.succeed(new IncomingEnvelope({ envelope: encoded }))
164
+ } else if (self._tag !== "OutgoingRequest") {
165
+ return Effect.fail(
166
+ new MalformedMessage({ cause: new Error("Can only deserialize a Request with an OutgoingRequest message") })
167
+ )
168
+ }
169
+ const rpc = self.rpc as any as Rpc.AnyWithProps
170
+ return Schema.decode(rpc.payloadSchema)(encoded.payload).pipe(
171
+ Effect.locally(FiberRef.currentContext, self.context),
172
+ MalformedMessage.refail,
173
+ Effect.map((payload) =>
174
+ new IncomingRequestLocal({
175
+ envelope: Envelope.makeRequest({
176
+ ...encoded,
177
+ payload
178
+ } as any),
179
+ lastSentReply: Option.none(),
180
+ respond: self.respond
181
+ })
182
+ )
183
+ ) as Effect.Effect<IncomingRequestLocal<Rpc>, MalformedMessage>
184
+ }