@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
@@ -0,0 +1,352 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Headers from "@effect/platform/Headers"
5
+ import type * as Rpc from "@effect/rpc/Rpc"
6
+ import * as Predicate from "effect/Predicate"
7
+ import * as PrimaryKey from "effect/PrimaryKey"
8
+ import type { ReadonlyRecord } from "effect/Record"
9
+ import * as Schema from "effect/Schema"
10
+ import { EntityAddress, EntityAddressFromSelf } from "./EntityAddress.js"
11
+ import { type Snowflake, SnowflakeFromString } from "./Snowflake.js"
12
+
13
+ /**
14
+ * @since 1.0.0
15
+ * @category type ids
16
+ */
17
+ export const TypeId: unique symbol = Symbol.for("@effect/cluster/Envelope")
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category type ids
22
+ */
23
+ export type TypeId = typeof TypeId
24
+
25
+ /**
26
+ * @since 1.0.0
27
+ * @category models
28
+ */
29
+ export type Envelope<R extends Rpc.Any> = Request<R> | AckChunk | Interrupt
30
+
31
+ /**
32
+ * @since 1.0.0
33
+ */
34
+ export declare namespace Envelope {
35
+ /**
36
+ * @since 1.0.0
37
+ * @category models
38
+ */
39
+ export type Any = Envelope<any>
40
+
41
+ /**
42
+ * @since 1.0.0
43
+ * @category models
44
+ */
45
+ export type Encoded = Request.Encoded | typeof AckChunk.Encoded | typeof Interrupt.Encoded
46
+
47
+ /**
48
+ * @since 1.0.0
49
+ * @category models
50
+ */
51
+ export type PartialEncoded = Request.PartialEncoded | AckChunk | Interrupt
52
+ }
53
+
54
+ /**
55
+ * @since 1.0.0
56
+ * @category models
57
+ */
58
+ export interface Request<in out Rpc extends Rpc.Any> {
59
+ readonly [TypeId]: TypeId
60
+ readonly _tag: "Request"
61
+ readonly requestId: Snowflake
62
+ readonly address: EntityAddress
63
+ readonly tag: Rpc.Tag<Rpc>
64
+ readonly payload: Rpc.Payload<Rpc>
65
+ readonly headers: Headers.Headers
66
+ readonly traceId: string
67
+ readonly spanId: string
68
+ readonly sampled: boolean
69
+ }
70
+
71
+ /**
72
+ * @since 1.0.0
73
+ * @category models
74
+ */
75
+ export class AckChunk extends Schema.TaggedClass<AckChunk>("@effect/cluster/Envelope/AckChunk")("AckChunk", {
76
+ id: SnowflakeFromString,
77
+ address: EntityAddress,
78
+ requestId: SnowflakeFromString,
79
+ replyId: SnowflakeFromString
80
+ }) {
81
+ /**
82
+ * @since 1.0.0
83
+ */
84
+ readonly [TypeId]: TypeId = TypeId
85
+
86
+ /**
87
+ * @since 1.0.0
88
+ */
89
+ withRequestId(requestId: Snowflake): AckChunk {
90
+ return new AckChunk({
91
+ ...this,
92
+ requestId
93
+ })
94
+ }
95
+ }
96
+
97
+ /**
98
+ * @since 1.0.0
99
+ * @category models
100
+ */
101
+ export class Interrupt extends Schema.TaggedClass<Interrupt>("@effect/cluster/Envelope/Interrupt")("Interrupt", {
102
+ id: SnowflakeFromString,
103
+ address: EntityAddress,
104
+ requestId: SnowflakeFromString
105
+ }) {
106
+ /**
107
+ * @since 1.0.0
108
+ */
109
+ readonly [TypeId]: TypeId = TypeId
110
+
111
+ /**
112
+ * @since 1.0.0
113
+ */
114
+ withRequestId(requestId: Snowflake): Interrupt {
115
+ return new Interrupt({
116
+ ...this,
117
+ requestId
118
+ })
119
+ }
120
+ }
121
+
122
+ /**
123
+ * @since 1.0.0
124
+ */
125
+ export declare namespace Request {
126
+ /**
127
+ * @since 1.0.0
128
+ * @category models
129
+ */
130
+ export type Any = Request<any>
131
+
132
+ /**
133
+ * @since 1.0.0
134
+ * @category models
135
+ */
136
+ export interface Encoded {
137
+ readonly _tag: "Request"
138
+ readonly requestId: string
139
+ readonly address: typeof EntityAddress.Encoded
140
+ readonly tag: string
141
+ readonly payload: unknown
142
+ readonly headers: ReadonlyRecord<string, string>
143
+ readonly traceId: string
144
+ readonly spanId: string
145
+ readonly sampled: boolean
146
+ }
147
+
148
+ /**
149
+ * @since 1.0.0
150
+ * @category models
151
+ */
152
+ export interface PartialEncoded {
153
+ readonly _tag: "Request"
154
+ readonly requestId: Snowflake
155
+ readonly address: EntityAddress
156
+ readonly tag: string
157
+ readonly payload: unknown
158
+ readonly headers: Headers.Headers
159
+ readonly traceId: string
160
+ readonly spanId: string
161
+ readonly sampled: boolean
162
+ }
163
+ }
164
+
165
+ /**
166
+ * @since 1.0.0
167
+ * @category refinements
168
+ */
169
+ export const isEnvelope = (u: unknown): u is Envelope<any> => Predicate.hasProperty(u, TypeId)
170
+
171
+ /**
172
+ * @since 1.0.0
173
+ * @category constructors
174
+ */
175
+ export const makeRequest = <Rpc extends Rpc.Any>(
176
+ options: {
177
+ readonly requestId: Snowflake
178
+ readonly address: EntityAddress
179
+ readonly tag: Rpc.Tag<Rpc>
180
+ readonly payload: Rpc.Payload<Rpc>
181
+ readonly headers: Headers.Headers
182
+ readonly traceId: string
183
+ readonly spanId: string
184
+ readonly sampled: boolean
185
+ }
186
+ ): Request<Rpc> => ({
187
+ [TypeId]: TypeId,
188
+ _tag: "Request",
189
+ requestId: options.requestId,
190
+ tag: options.tag,
191
+ address: options.address,
192
+ payload: options.payload,
193
+ headers: options.headers,
194
+ traceId: options.traceId,
195
+ spanId: options.spanId,
196
+ sampled: options.sampled
197
+ })
198
+
199
+ /**
200
+ * @since 1.0.0
201
+ * @category serialization / deserialization
202
+ */
203
+ export const EnvelopeFromSelf: Schema.Schema<
204
+ Envelope.Any,
205
+ Envelope.Any
206
+ > = Schema.declare(isEnvelope, {
207
+ identifier: "Envelope"
208
+ })
209
+
210
+ /**
211
+ * @since 1.0.0
212
+ * @category serialization / deserialization
213
+ */
214
+ export const RequestFromSelf: Schema.Schema<
215
+ Request.Any,
216
+ Request.Any
217
+ > = Schema.declare((u): u is Request.Any => isEnvelope(u) && u._tag === "Request", {
218
+ identifier: "Envelope"
219
+ })
220
+
221
+ /**
222
+ * @since 1.0.0
223
+ * @category serialization / deserialization
224
+ */
225
+ export const PartialEncodedRequest: Schema.Struct<
226
+ {
227
+ _tag: Schema.Literal<["Request"]>
228
+ requestId: Schema.Schema<Snowflake, string>
229
+ address: typeof EntityAddress
230
+ tag: typeof Schema.String
231
+ payload: typeof Schema.Unknown
232
+ headers: Schema.Schema<Headers.Headers, ReadonlyRecord<string, string>>
233
+ traceId: typeof Schema.String
234
+ spanId: typeof Schema.String
235
+ sampled: typeof Schema.Boolean
236
+ }
237
+ > = Schema.Struct({
238
+ _tag: Schema.Literal("Request"),
239
+ requestId: SnowflakeFromString,
240
+ address: EntityAddress,
241
+ tag: Schema.String,
242
+ payload: Schema.Unknown,
243
+ headers: Headers.schema,
244
+ traceId: Schema.String,
245
+ spanId: Schema.String,
246
+ sampled: Schema.Boolean
247
+ }) satisfies Schema.Schema<Request.PartialEncoded, Request.Encoded>
248
+
249
+ /**
250
+ * @since 1.0.0
251
+ * @category serialization / deserialization
252
+ */
253
+ export const PartialEncoded: Schema.Union<
254
+ [
255
+ Schema.Struct<
256
+ {
257
+ _tag: Schema.Literal<["Request"]>
258
+ requestId: Schema.Schema<Snowflake, string>
259
+ address: typeof EntityAddress
260
+ tag: typeof Schema.String
261
+ payload: typeof Schema.Unknown
262
+ headers: Schema.Schema<Headers.Headers, ReadonlyRecord<string, string>>
263
+ traceId: typeof Schema.String
264
+ spanId: typeof Schema.String
265
+ sampled: typeof Schema.Boolean
266
+ }
267
+ >,
268
+ typeof AckChunk,
269
+ typeof Interrupt
270
+ ]
271
+ > = Schema.Union(PartialEncodedRequest, AckChunk, Interrupt) satisfies Schema.Schema<
272
+ Envelope.PartialEncoded,
273
+ Envelope.Encoded
274
+ >
275
+
276
+ /**
277
+ * @since 1.0.0
278
+ * @category serialization / deserialization
279
+ */
280
+ export const PartialEncodedArray: Schema.Schema<
281
+ Array<Envelope.PartialEncoded>,
282
+ Array<Envelope.Encoded>
283
+ > = Schema.mutable(Schema.Array(PartialEncoded))
284
+
285
+ /**
286
+ * @since 1.0.0
287
+ * @category serialization / deserialization
288
+ */
289
+ export const PartialEncodedRequestFromSelf: Schema.Struct<
290
+ {
291
+ _tag: Schema.Literal<["Request"]>
292
+ requestId: Schema.Schema<Snowflake>
293
+ address: Schema.Schema<EntityAddress>
294
+ tag: typeof Schema.String
295
+ payload: typeof Schema.Unknown
296
+ headers: Schema.Schema<Headers.Headers>
297
+ traceId: typeof Schema.String
298
+ spanId: typeof Schema.String
299
+ sampled: typeof Schema.Boolean
300
+ }
301
+ > = Schema.Struct({
302
+ _tag: Schema.Literal("Request"),
303
+ requestId: Schema.typeSchema(SnowflakeFromString),
304
+ address: EntityAddressFromSelf,
305
+ tag: Schema.String,
306
+ payload: Schema.Unknown,
307
+ headers: Headers.schemaFromSelf,
308
+ traceId: Schema.String,
309
+ spanId: Schema.String,
310
+ sampled: Schema.Boolean
311
+ }) satisfies Schema.Schema<Request.PartialEncoded>
312
+
313
+ /**
314
+ * @since 1.0.0
315
+ * @category serialization / deserialization
316
+ */
317
+ export const PartialEncodedFromSelf: Schema.Union<
318
+ [
319
+ Schema.Struct<
320
+ {
321
+ _tag: Schema.Literal<["Request"]>
322
+ requestId: Schema.Schema<Snowflake>
323
+ address: Schema.Schema<EntityAddress>
324
+ tag: typeof Schema.String
325
+ payload: typeof Schema.Unknown
326
+ headers: Schema.Schema<Headers.Headers>
327
+ traceId: typeof Schema.String
328
+ spanId: typeof Schema.String
329
+ sampled: typeof Schema.Boolean
330
+ }
331
+ >,
332
+ Schema.Schema<AckChunk>,
333
+ Schema.Schema<Interrupt>
334
+ ]
335
+ > = Schema.Union(
336
+ PartialEncodedRequestFromSelf,
337
+ Schema.typeSchema(AckChunk),
338
+ Schema.typeSchema(Interrupt)
339
+ ) satisfies Schema.Schema<Envelope.PartialEncoded>
340
+
341
+ /**
342
+ * @since 1.0.0
343
+ * @category primary key
344
+ */
345
+ export const primaryKey = <R extends Rpc.Any>(envelope: Envelope<R>): string | null => {
346
+ if (envelope._tag !== "Request" || !(Predicate.hasProperty(envelope.payload, PrimaryKey.symbol))) {
347
+ return null
348
+ }
349
+ const value = PrimaryKey.value(envelope.payload)
350
+ // hash the entity address to save space?
351
+ return `${envelope.address.entityType}/${envelope.address.entityId}/${envelope.tag}/${value}`
352
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as HttpClient from "@effect/platform/HttpClient"
5
+ import * as HttpClientRequest from "@effect/platform/HttpClientRequest"
6
+ import * as Socket from "@effect/platform/Socket"
7
+ import * as RpcClient from "@effect/rpc/RpcClient"
8
+ import * as RpcSerialization from "@effect/rpc/RpcSerialization"
9
+ import * as Effect from "effect/Effect"
10
+ import * as Layer from "effect/Layer"
11
+ import { RpcClientProtocol } from "./Runners.js"
12
+
13
+ /**
14
+ * @since 1.0.0
15
+ * @category Layers
16
+ */
17
+ export const layerClientProtocolHttp = (options: {
18
+ readonly path: string
19
+ readonly https?: boolean | undefined
20
+ }): Layer.Layer<
21
+ RpcClientProtocol,
22
+ never,
23
+ RpcSerialization.RpcSerialization | HttpClient.HttpClient
24
+ > =>
25
+ Layer.effect(
26
+ RpcClientProtocol,
27
+ Effect.gen(function*() {
28
+ const serialization = yield* RpcSerialization.RpcSerialization
29
+ const client = yield* HttpClient.HttpClient
30
+ const https = options.https ?? false
31
+ return (address) => {
32
+ const clientWithUrl = HttpClient.mapRequest(
33
+ client,
34
+ HttpClientRequest.prependUrl(`http${https ? "s" : ""}://${address.host}:${address.port}/${options.path}`)
35
+ )
36
+ return RpcClient.makeProtocolHttp(clientWithUrl).pipe(
37
+ Effect.provideService(RpcSerialization.RpcSerialization, serialization)
38
+ )
39
+ }
40
+ })
41
+ )
42
+
43
+ /**
44
+ * @since 1.0.0
45
+ * @category Layers
46
+ */
47
+ export const layerClientProtocolWebsocket = (options: {
48
+ readonly path: string
49
+ readonly https?: boolean | undefined
50
+ }): Layer.Layer<
51
+ RpcClientProtocol,
52
+ never,
53
+ RpcSerialization.RpcSerialization | Socket.WebSocketConstructor
54
+ > =>
55
+ Layer.effect(
56
+ RpcClientProtocol,
57
+ Effect.gen(function*() {
58
+ const serialization = yield* RpcSerialization.RpcSerialization
59
+ const https = options.https ?? false
60
+ const constructor = yield* Socket.WebSocketConstructor
61
+ return Effect.fnUntraced(function*(address) {
62
+ const socket = yield* Socket.makeWebSocket(
63
+ `ws${https ? "s" : ""}://${address.host}:${address.port}/${options.path}`
64
+ ).pipe(
65
+ Effect.provideService(Socket.WebSocketConstructor, constructor)
66
+ )
67
+ return yield* RpcClient.makeProtocolSocket.pipe(
68
+ Effect.provideService(Socket.Socket, socket),
69
+ Effect.provideService(RpcSerialization.RpcSerialization, serialization)
70
+ )
71
+ })
72
+ })
73
+ )
@@ -0,0 +1,196 @@
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 * as Layer from "effect/Layer"
13
+ import type { Scope } from "effect/Scope"
14
+ import { layerClientProtocolHttp, layerClientProtocolWebsocket } from "./HttpCommon.js"
15
+ import type { MessageStorage } from "./MessageStorage.js"
16
+ import * as Runners from "./Runners.js"
17
+ import * as RunnerServer from "./RunnerServer.js"
18
+ import * as Sharding from "./Sharding.js"
19
+ import type * as ShardingConfig from "./ShardingConfig.js"
20
+ import * as ShardManager from "./ShardManager.js"
21
+ import type { ShardStorage } from "./ShardStorage.js"
22
+ import * as SynchronizedClock from "./SynchronizedClock.js"
23
+
24
+ /**
25
+ * @since 1.0.0
26
+ * @category Http App
27
+ */
28
+ export const toHttpApp: Effect.Effect<
29
+ HttpApp.Default<never, Scope>,
30
+ never,
31
+ Scope | Sharding.Sharding | RpcSerialization.RpcSerialization | MessageStorage
32
+ > = Effect.gen(function*() {
33
+ const handlers = yield* Layer.build(RunnerServer.layerHandlers)
34
+ return yield* RpcServer.toHttpApp(Runners.Rpcs, {
35
+ spanPrefix: "RunnerServer",
36
+ disableTracing: true
37
+ }).pipe(Effect.provide(handlers))
38
+ })
39
+
40
+ /**
41
+ * @since 1.0.0
42
+ * @category Http App
43
+ */
44
+ export const toHttpAppWebsocket: Effect.Effect<
45
+ HttpApp.Default<never, Scope>,
46
+ never,
47
+ Scope | Sharding.Sharding | RpcSerialization.RpcSerialization | MessageStorage
48
+ > = Effect.gen(function*() {
49
+ const handlers = yield* Layer.build(RunnerServer.layerHandlers)
50
+ return yield* RpcServer.toHttpAppWebsocket(Runners.Rpcs, {
51
+ spanPrefix: "RunnerServer",
52
+ disableTracing: true
53
+ }).pipe(
54
+ Effect.provide(handlers)
55
+ )
56
+ })
57
+
58
+ /**
59
+ * @since 1.0.0
60
+ * @category Layers
61
+ */
62
+ export const layerClient: Layer.Layer<
63
+ Sharding.Sharding | Runners.Runners,
64
+ never,
65
+ ShardingConfig.ShardingConfig | Runners.RpcClientProtocol | MessageStorage | ShardStorage
66
+ > = Sharding.layer.pipe(
67
+ Layer.provideMerge(Runners.layerRpc),
68
+ Layer.provideMerge(SynchronizedClock.layer),
69
+ Layer.provide(ShardManager.layerClientRpc)
70
+ )
71
+
72
+ /**
73
+ * A HTTP layer for the `Runners` services, that adds a route to the provided
74
+ * `HttpRouter.Tag`.
75
+ *
76
+ * By default, it uses the `HttpRouter.Default` tag.
77
+ *
78
+ * @since 1.0.0
79
+ * @category Layers
80
+ */
81
+ export const layer = <I = HttpRouter.Default>(options: {
82
+ readonly path: HttpRouter.PathInput
83
+ readonly routerTag?: HttpRouter.HttpRouter.TagClass<I, string, any, any>
84
+ readonly logAddress?: boolean | undefined
85
+ }): Layer.Layer<
86
+ Sharding.Sharding | Runners.Runners,
87
+ never,
88
+ | RpcSerialization.RpcSerialization
89
+ | ShardingConfig.ShardingConfig
90
+ | Runners.RpcClientProtocol
91
+ | HttpServer.HttpServer
92
+ | MessageStorage
93
+ | ShardStorage
94
+ > => {
95
+ const layer = RunnerServer.layerWithClients.pipe(
96
+ Layer.provide(RpcServer.layerProtocolHttp(options))
97
+ )
98
+ return options.logAddress ? withLogAddress(layer) : layer
99
+ }
100
+
101
+ /**
102
+ * @since 1.0.0
103
+ * @category Layers
104
+ */
105
+ export const layerWebsocketOptions = <I = HttpRouter.Default>(options: {
106
+ readonly path: HttpRouter.PathInput
107
+ readonly routerTag?: HttpRouter.HttpRouter.TagClass<I, string, any, any>
108
+ readonly logAddress?: boolean | undefined
109
+ }): Layer.Layer<
110
+ Sharding.Sharding | Runners.Runners,
111
+ never,
112
+ | RpcSerialization.RpcSerialization
113
+ | ShardingConfig.ShardingConfig
114
+ | Runners.RpcClientProtocol
115
+ | HttpServer.HttpServer
116
+ | MessageStorage
117
+ | ShardStorage
118
+ > => {
119
+ const layer = RunnerServer.layerWithClients.pipe(
120
+ Layer.provide(RpcServer.layerProtocolWebsocket(options))
121
+ )
122
+ return options.logAddress ? withLogAddress(layer) : layer
123
+ }
124
+
125
+ const withLogAddress = <A, E, R>(layer: Layer.Layer<A, E, R>): Layer.Layer<A, E, R | HttpServer.HttpServer> =>
126
+ Layer.effectDiscard(
127
+ HttpServer.addressFormattedWith((address) =>
128
+ Effect.annotateLogs(Effect.logInfo(`Listening on: ${address}`), {
129
+ package: "@effect/cluster",
130
+ service: "Runner"
131
+ })
132
+ )
133
+ ).pipe(Layer.provideMerge(layer))
134
+
135
+ /**
136
+ * @since 1.0.0
137
+ * @category Layers
138
+ */
139
+ export const layerHttp: Layer.Layer<
140
+ Sharding.Sharding | Runners.Runners,
141
+ never,
142
+ | RpcSerialization.RpcSerialization
143
+ | ShardingConfig.ShardingConfig
144
+ | HttpClient.HttpClient
145
+ | HttpServer.HttpServer
146
+ | MessageStorage
147
+ | ShardStorage
148
+ > = HttpRouter.Default.serve().pipe(
149
+ Layer.provideMerge(layer({ path: "/", logAddress: true })),
150
+ Layer.provide(layerClientProtocolHttp({ path: "/" }))
151
+ )
152
+
153
+ /**
154
+ * @since 1.0.0
155
+ * @category Layers
156
+ */
157
+ export const layerHttpClientOnly: Layer.Layer<
158
+ Sharding.Sharding | Runners.Runners,
159
+ never,
160
+ | RpcSerialization.RpcSerialization
161
+ | ShardingConfig.ShardingConfig
162
+ | HttpClient.HttpClient
163
+ | MessageStorage
164
+ > = RunnerServer.layerClientOnly.pipe(
165
+ Layer.provide(layerClientProtocolHttp({ path: "/" }))
166
+ )
167
+
168
+ /**
169
+ * @since 1.0.0
170
+ * @category Layers
171
+ */
172
+ export const layerWebsocket: Layer.Layer<
173
+ Sharding.Sharding | Runners.Runners,
174
+ never,
175
+ | RpcSerialization.RpcSerialization
176
+ | ShardingConfig.ShardingConfig
177
+ | Socket.WebSocketConstructor
178
+ | HttpServer.HttpServer
179
+ | MessageStorage
180
+ | ShardStorage
181
+ > = HttpRouter.Default.serve().pipe(
182
+ Layer.provideMerge(layerWebsocketOptions({ path: "/", logAddress: true })),
183
+ Layer.provide(layerClientProtocolWebsocket({ path: "/" }))
184
+ )
185
+
186
+ /**
187
+ * @since 1.0.0
188
+ * @category Layers
189
+ */
190
+ export const layerWebsocketClientOnly: Layer.Layer<
191
+ Sharding.Sharding | Runners.Runners,
192
+ never,
193
+ ShardingConfig.ShardingConfig | MessageStorage | RpcSerialization.RpcSerialization | Socket.WebSocketConstructor
194
+ > = RunnerServer.layerClientOnly.pipe(
195
+ Layer.provide(layerClientProtocolWebsocket({ path: "/" }))
196
+ )