@effect/cluster 0.0.0-snapshot-d33d8b050b8e3c87dcde9587083e6c1cf733f72b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/AtLeastOnce/package.json +6 -0
  2. package/AtLeastOnceStorage/package.json +6 -0
  3. package/Broadcaster/package.json +6 -0
  4. package/LICENSE +21 -0
  5. package/ManagerConfig/package.json +6 -0
  6. package/Message/package.json +6 -0
  7. package/MessageState/package.json +6 -0
  8. package/Messenger/package.json +6 -0
  9. package/Pod/package.json +6 -0
  10. package/PodAddress/package.json +6 -0
  11. package/Pods/package.json +6 -0
  12. package/PodsHealth/package.json +6 -0
  13. package/PoisonPill/package.json +6 -0
  14. package/README.md +3 -0
  15. package/RecipientAddress/package.json +6 -0
  16. package/RecipientBehaviour/package.json +6 -0
  17. package/RecipientBehaviourContext/package.json +6 -0
  18. package/RecipientType/package.json +6 -0
  19. package/Serialization/package.json +6 -0
  20. package/SerializedEnvelope/package.json +6 -0
  21. package/SerializedMessage/package.json +6 -0
  22. package/ShardId/package.json +6 -0
  23. package/ShardManager/package.json +6 -0
  24. package/ShardManagerClient/package.json +6 -0
  25. package/Sharding/package.json +6 -0
  26. package/ShardingConfig/package.json +6 -0
  27. package/ShardingEvent/package.json +6 -0
  28. package/ShardingException/package.json +6 -0
  29. package/ShardingRegistrationEvent/package.json +6 -0
  30. package/Storage/package.json +6 -0
  31. package/dist/cjs/AtLeastOnce.js +43 -0
  32. package/dist/cjs/AtLeastOnce.js.map +1 -0
  33. package/dist/cjs/AtLeastOnceStorage.js +48 -0
  34. package/dist/cjs/AtLeastOnceStorage.js.map +1 -0
  35. package/dist/cjs/Broadcaster.js +6 -0
  36. package/dist/cjs/Broadcaster.js.map +1 -0
  37. package/dist/cjs/ManagerConfig.js +57 -0
  38. package/dist/cjs/ManagerConfig.js.map +1 -0
  39. package/dist/cjs/Message.js +64 -0
  40. package/dist/cjs/Message.js.map +1 -0
  41. package/dist/cjs/MessageState.js +78 -0
  42. package/dist/cjs/MessageState.js.map +1 -0
  43. package/dist/cjs/Messenger.js +6 -0
  44. package/dist/cjs/Messenger.js.map +1 -0
  45. package/dist/cjs/Pod.js +101 -0
  46. package/dist/cjs/Pod.js.map +1 -0
  47. package/dist/cjs/PodAddress.js +100 -0
  48. package/dist/cjs/PodAddress.js.map +1 -0
  49. package/dist/cjs/Pods.js +58 -0
  50. package/dist/cjs/Pods.js.map +1 -0
  51. package/dist/cjs/PodsHealth.js +64 -0
  52. package/dist/cjs/PodsHealth.js.map +1 -0
  53. package/dist/cjs/PoisonPill.js +101 -0
  54. package/dist/cjs/PoisonPill.js.map +1 -0
  55. package/dist/cjs/RecipientAddress.js +102 -0
  56. package/dist/cjs/RecipientAddress.js.map +1 -0
  57. package/dist/cjs/RecipientBehaviour.js +61 -0
  58. package/dist/cjs/RecipientBehaviour.js.map +1 -0
  59. package/dist/cjs/RecipientBehaviourContext.js +87 -0
  60. package/dist/cjs/RecipientBehaviourContext.js.map +1 -0
  61. package/dist/cjs/RecipientType.js +142 -0
  62. package/dist/cjs/RecipientType.js.map +1 -0
  63. package/dist/cjs/Serialization.js +55 -0
  64. package/dist/cjs/Serialization.js.map +1 -0
  65. package/dist/cjs/SerializedEnvelope.js +111 -0
  66. package/dist/cjs/SerializedEnvelope.js.map +1 -0
  67. package/dist/cjs/SerializedMessage.js +87 -0
  68. package/dist/cjs/SerializedMessage.js.map +1 -0
  69. package/dist/cjs/ShardId.js +89 -0
  70. package/dist/cjs/ShardId.js.map +1 -0
  71. package/dist/cjs/ShardManager.js +48 -0
  72. package/dist/cjs/ShardManager.js.map +1 -0
  73. package/dist/cjs/ShardManagerClient.js +53 -0
  74. package/dist/cjs/ShardManagerClient.js.map +1 -0
  75. package/dist/cjs/Sharding.js +129 -0
  76. package/dist/cjs/Sharding.js.map +1 -0
  77. package/dist/cjs/ShardingConfig.js +64 -0
  78. package/dist/cjs/ShardingConfig.js.map +1 -0
  79. package/dist/cjs/ShardingEvent.js +72 -0
  80. package/dist/cjs/ShardingEvent.js.map +1 -0
  81. package/dist/cjs/ShardingException.js +130 -0
  82. package/dist/cjs/ShardingException.js.map +1 -0
  83. package/dist/cjs/ShardingRegistrationEvent.js +44 -0
  84. package/dist/cjs/ShardingRegistrationEvent.js.map +1 -0
  85. package/dist/cjs/Storage.js +63 -0
  86. package/dist/cjs/Storage.js.map +1 -0
  87. package/dist/cjs/index.js +88 -0
  88. package/dist/cjs/index.js.map +1 -0
  89. package/dist/cjs/internal/atLeastOnce.js +58 -0
  90. package/dist/cjs/internal/atLeastOnce.js.map +1 -0
  91. package/dist/cjs/internal/atLeastOnceStorage.js +186 -0
  92. package/dist/cjs/internal/atLeastOnceStorage.js.map +1 -0
  93. package/dist/cjs/internal/entityManager.js +191 -0
  94. package/dist/cjs/internal/entityManager.js.map +1 -0
  95. package/dist/cjs/internal/entityState.js +70 -0
  96. package/dist/cjs/internal/entityState.js.map +1 -0
  97. package/dist/cjs/internal/managerConfig.js +69 -0
  98. package/dist/cjs/internal/managerConfig.js.map +1 -0
  99. package/dist/cjs/internal/message.js +68 -0
  100. package/dist/cjs/internal/message.js.map +1 -0
  101. package/dist/cjs/internal/messageState.js +102 -0
  102. package/dist/cjs/internal/messageState.js.map +1 -0
  103. package/dist/cjs/internal/podWithMetadata.js +77 -0
  104. package/dist/cjs/internal/podWithMetadata.js.map +1 -0
  105. package/dist/cjs/internal/pods.js +58 -0
  106. package/dist/cjs/internal/pods.js.map +1 -0
  107. package/dist/cjs/internal/podsHealth.js +63 -0
  108. package/dist/cjs/internal/podsHealth.js.map +1 -0
  109. package/dist/cjs/internal/recipientBehaviour.js +75 -0
  110. package/dist/cjs/internal/recipientBehaviour.js.map +1 -0
  111. package/dist/cjs/internal/recipientBehaviourContext.js +59 -0
  112. package/dist/cjs/internal/recipientBehaviourContext.js.map +1 -0
  113. package/dist/cjs/internal/serialization.js +72 -0
  114. package/dist/cjs/internal/serialization.js.map +1 -0
  115. package/dist/cjs/internal/shardManager.js +291 -0
  116. package/dist/cjs/internal/shardManager.js.map +1 -0
  117. package/dist/cjs/internal/shardManagerClient.js +71 -0
  118. package/dist/cjs/internal/shardManagerClient.js.map +1 -0
  119. package/dist/cjs/internal/shardManagerState.js +67 -0
  120. package/dist/cjs/internal/shardManagerState.js.map +1 -0
  121. package/dist/cjs/internal/sharding.js +329 -0
  122. package/dist/cjs/internal/sharding.js.map +1 -0
  123. package/dist/cjs/internal/shardingConfig.js +79 -0
  124. package/dist/cjs/internal/shardingConfig.js.map +1 -0
  125. package/dist/cjs/internal/storage.js +75 -0
  126. package/dist/cjs/internal/storage.js.map +1 -0
  127. package/dist/cjs/internal/utils.js +92 -0
  128. package/dist/cjs/internal/utils.js.map +1 -0
  129. package/dist/dts/AtLeastOnce.d.ts +20 -0
  130. package/dist/dts/AtLeastOnce.d.ts.map +1 -0
  131. package/dist/dts/AtLeastOnceStorage.d.ts +75 -0
  132. package/dist/dts/AtLeastOnceStorage.d.ts.map +1 -0
  133. package/dist/dts/Broadcaster.d.ts +32 -0
  134. package/dist/dts/Broadcaster.d.ts.map +1 -0
  135. package/dist/dts/ManagerConfig.d.ts +61 -0
  136. package/dist/dts/ManagerConfig.d.ts.map +1 -0
  137. package/dist/dts/Message.d.ts +106 -0
  138. package/dist/dts/Message.d.ts.map +1 -0
  139. package/dist/dts/MessageState.d.ts +107 -0
  140. package/dist/dts/MessageState.d.ts.map +1 -0
  141. package/dist/dts/Messenger.d.ts +32 -0
  142. package/dist/dts/Messenger.d.ts.map +1 -0
  143. package/dist/dts/Pod.d.ts +81 -0
  144. package/dist/dts/Pod.d.ts.map +1 -0
  145. package/dist/dts/PodAddress.d.ts +80 -0
  146. package/dist/dts/PodAddress.d.ts.map +1 -0
  147. package/dist/dts/Pods.d.ts +78 -0
  148. package/dist/dts/Pods.d.ts.map +1 -0
  149. package/dist/dts/PodsHealth.d.ts +66 -0
  150. package/dist/dts/PodsHealth.d.ts.map +1 -0
  151. package/dist/dts/PoisonPill.d.ts +78 -0
  152. package/dist/dts/PoisonPill.d.ts.map +1 -0
  153. package/dist/dts/RecipientAddress.d.ts +57 -0
  154. package/dist/dts/RecipientAddress.d.ts.map +1 -0
  155. package/dist/dts/RecipientBehaviour.d.ts +72 -0
  156. package/dist/dts/RecipientBehaviour.d.ts.map +1 -0
  157. package/dist/dts/RecipientBehaviourContext.d.ts +83 -0
  158. package/dist/dts/RecipientBehaviourContext.d.ts.map +1 -0
  159. package/dist/dts/RecipientType.d.ts +96 -0
  160. package/dist/dts/RecipientType.d.ts.map +1 -0
  161. package/dist/dts/Serialization.d.ts +58 -0
  162. package/dist/dts/Serialization.d.ts.map +1 -0
  163. package/dist/dts/SerializedEnvelope.d.ts +87 -0
  164. package/dist/dts/SerializedEnvelope.d.ts.map +1 -0
  165. package/dist/dts/SerializedMessage.d.ts +66 -0
  166. package/dist/dts/SerializedMessage.d.ts.map +1 -0
  167. package/dist/dts/ShardId.d.ts +70 -0
  168. package/dist/dts/ShardId.d.ts.map +1 -0
  169. package/dist/dts/ShardManager.d.ts +44 -0
  170. package/dist/dts/ShardManager.d.ts.map +1 -0
  171. package/dist/dts/ShardManagerClient.d.ts +50 -0
  172. package/dist/dts/ShardManagerClient.d.ts.map +1 -0
  173. package/dist/dts/Sharding.d.ts +146 -0
  174. package/dist/dts/Sharding.d.ts.map +1 -0
  175. package/dist/dts/ShardingConfig.d.ts +69 -0
  176. package/dist/dts/ShardingConfig.d.ts.map +1 -0
  177. package/dist/dts/ShardingEvent.d.ts +90 -0
  178. package/dist/dts/ShardingEvent.d.ts.map +1 -0
  179. package/dist/dts/ShardingException.d.ts +125 -0
  180. package/dist/dts/ShardingException.d.ts.map +1 -0
  181. package/dist/dts/ShardingRegistrationEvent.d.ts +44 -0
  182. package/dist/dts/ShardingRegistrationEvent.d.ts.map +1 -0
  183. package/dist/dts/Storage.d.ts +78 -0
  184. package/dist/dts/Storage.d.ts.map +1 -0
  185. package/dist/dts/index.d.ts +113 -0
  186. package/dist/dts/index.d.ts.map +1 -0
  187. package/dist/dts/internal/atLeastOnce.d.ts +2 -0
  188. package/dist/dts/internal/atLeastOnce.d.ts.map +1 -0
  189. package/dist/dts/internal/atLeastOnceStorage.d.ts +2 -0
  190. package/dist/dts/internal/atLeastOnceStorage.d.ts.map +1 -0
  191. package/dist/dts/internal/entityManager.d.ts +2 -0
  192. package/dist/dts/internal/entityManager.d.ts.map +1 -0
  193. package/dist/dts/internal/entityState.d.ts +21 -0
  194. package/dist/dts/internal/entityState.d.ts.map +1 -0
  195. package/dist/dts/internal/managerConfig.d.ts +2 -0
  196. package/dist/dts/internal/managerConfig.d.ts.map +1 -0
  197. package/dist/dts/internal/message.d.ts +9 -0
  198. package/dist/dts/internal/message.d.ts.map +1 -0
  199. package/dist/dts/internal/messageState.d.ts +2 -0
  200. package/dist/dts/internal/messageState.d.ts.map +1 -0
  201. package/dist/dts/internal/podWithMetadata.d.ts +2 -0
  202. package/dist/dts/internal/podWithMetadata.d.ts.map +1 -0
  203. package/dist/dts/internal/pods.d.ts +2 -0
  204. package/dist/dts/internal/pods.d.ts.map +1 -0
  205. package/dist/dts/internal/podsHealth.d.ts +2 -0
  206. package/dist/dts/internal/podsHealth.d.ts.map +1 -0
  207. package/dist/dts/internal/recipientBehaviour.d.ts +2 -0
  208. package/dist/dts/internal/recipientBehaviour.d.ts.map +1 -0
  209. package/dist/dts/internal/recipientBehaviourContext.d.ts +2 -0
  210. package/dist/dts/internal/recipientBehaviourContext.d.ts.map +1 -0
  211. package/dist/dts/internal/serialization.d.ts +2 -0
  212. package/dist/dts/internal/serialization.d.ts.map +1 -0
  213. package/dist/dts/internal/shardManager.d.ts +12 -0
  214. package/dist/dts/internal/shardManager.d.ts.map +1 -0
  215. package/dist/dts/internal/shardManagerClient.d.ts +2 -0
  216. package/dist/dts/internal/shardManagerClient.d.ts.map +1 -0
  217. package/dist/dts/internal/shardManagerState.d.ts +26 -0
  218. package/dist/dts/internal/shardManagerState.d.ts.map +1 -0
  219. package/dist/dts/internal/sharding.d.ts +2 -0
  220. package/dist/dts/internal/sharding.d.ts.map +1 -0
  221. package/dist/dts/internal/shardingConfig.d.ts +2 -0
  222. package/dist/dts/internal/shardingConfig.d.ts.map +1 -0
  223. package/dist/dts/internal/storage.d.ts +2 -0
  224. package/dist/dts/internal/storage.d.ts.map +1 -0
  225. package/dist/dts/internal/utils.d.ts +2 -0
  226. package/dist/dts/internal/utils.d.ts.map +1 -0
  227. package/dist/esm/AtLeastOnce.js +12 -0
  228. package/dist/esm/AtLeastOnce.js.map +1 -0
  229. package/dist/esm/AtLeastOnceStorage.js +17 -0
  230. package/dist/esm/AtLeastOnceStorage.js.map +1 -0
  231. package/dist/esm/Broadcaster.js +2 -0
  232. package/dist/esm/Broadcaster.js.map +1 -0
  233. package/dist/esm/ManagerConfig.js +26 -0
  234. package/dist/esm/ManagerConfig.js.map +1 -0
  235. package/dist/esm/Message.js +33 -0
  236. package/dist/esm/Message.js.map +1 -0
  237. package/dist/esm/MessageState.js +47 -0
  238. package/dist/esm/MessageState.js.map +1 -0
  239. package/dist/esm/Messenger.js +2 -0
  240. package/dist/esm/Messenger.js.map +1 -0
  241. package/dist/esm/Pod.js +65 -0
  242. package/dist/esm/Pod.js.map +1 -0
  243. package/dist/esm/PodAddress.js +64 -0
  244. package/dist/esm/PodAddress.js.map +1 -0
  245. package/dist/esm/Pods.js +27 -0
  246. package/dist/esm/Pods.js.map +1 -0
  247. package/dist/esm/PodsHealth.js +33 -0
  248. package/dist/esm/PodsHealth.js.map +1 -0
  249. package/dist/esm/PoisonPill.js +65 -0
  250. package/dist/esm/PoisonPill.js.map +1 -0
  251. package/dist/esm/RecipientAddress.js +67 -0
  252. package/dist/esm/RecipientAddress.js.map +1 -0
  253. package/dist/esm/RecipientBehaviour.js +30 -0
  254. package/dist/esm/RecipientBehaviour.js.map +1 -0
  255. package/dist/esm/RecipientBehaviourContext.js +56 -0
  256. package/dist/esm/RecipientBehaviourContext.js.map +1 -0
  257. package/dist/esm/RecipientType.js +105 -0
  258. package/dist/esm/RecipientType.js.map +1 -0
  259. package/dist/esm/Serialization.js +24 -0
  260. package/dist/esm/Serialization.js.map +1 -0
  261. package/dist/esm/SerializedEnvelope.js +75 -0
  262. package/dist/esm/SerializedEnvelope.js.map +1 -0
  263. package/dist/esm/SerializedMessage.js +51 -0
  264. package/dist/esm/SerializedMessage.js.map +1 -0
  265. package/dist/esm/ShardId.js +54 -0
  266. package/dist/esm/ShardId.js.map +1 -0
  267. package/dist/esm/ShardManager.js +17 -0
  268. package/dist/esm/ShardManager.js.map +1 -0
  269. package/dist/esm/ShardManagerClient.js +22 -0
  270. package/dist/esm/ShardManagerClient.js.map +1 -0
  271. package/dist/esm/Sharding.js +98 -0
  272. package/dist/esm/Sharding.js.map +1 -0
  273. package/dist/esm/ShardingConfig.js +33 -0
  274. package/dist/esm/ShardingConfig.js.map +1 -0
  275. package/dist/esm/ShardingEvent.js +62 -0
  276. package/dist/esm/ShardingEvent.js.map +1 -0
  277. package/dist/esm/ShardingException.js +91 -0
  278. package/dist/esm/ShardingException.js.map +1 -0
  279. package/dist/esm/ShardingRegistrationEvent.js +36 -0
  280. package/dist/esm/ShardingRegistrationEvent.js.map +1 -0
  281. package/dist/esm/Storage.js +32 -0
  282. package/dist/esm/Storage.js.map +1 -0
  283. package/dist/esm/index.js +113 -0
  284. package/dist/esm/index.js.map +1 -0
  285. package/dist/esm/internal/atLeastOnce.js +26 -0
  286. package/dist/esm/internal/atLeastOnce.js.map +1 -0
  287. package/dist/esm/internal/atLeastOnceStorage.js +154 -0
  288. package/dist/esm/internal/atLeastOnceStorage.js.map +1 -0
  289. package/dist/esm/internal/entityManager.js +159 -0
  290. package/dist/esm/internal/entityManager.js.map +1 -0
  291. package/dist/esm/internal/entityState.js +35 -0
  292. package/dist/esm/internal/entityState.js.map +1 -0
  293. package/dist/esm/internal/managerConfig.js +38 -0
  294. package/dist/esm/internal/managerConfig.js.map +1 -0
  295. package/dist/esm/internal/message.js +32 -0
  296. package/dist/esm/internal/message.js.map +1 -0
  297. package/dist/esm/internal/messageState.js +66 -0
  298. package/dist/esm/internal/messageState.js.map +1 -0
  299. package/dist/esm/internal/podWithMetadata.js +41 -0
  300. package/dist/esm/internal/podWithMetadata.js.map +1 -0
  301. package/dist/esm/internal/pods.js +25 -0
  302. package/dist/esm/internal/pods.js.map +1 -0
  303. package/dist/esm/internal/podsHealth.js +30 -0
  304. package/dist/esm/internal/podsHealth.js.map +1 -0
  305. package/dist/esm/internal/recipientBehaviour.js +42 -0
  306. package/dist/esm/internal/recipientBehaviour.js.map +1 -0
  307. package/dist/esm/internal/recipientBehaviourContext.js +26 -0
  308. package/dist/esm/internal/recipientBehaviourContext.js.map +1 -0
  309. package/dist/esm/internal/serialization.js +39 -0
  310. package/dist/esm/internal/serialization.js.map +1 -0
  311. package/dist/esm/internal/shardManager.js +256 -0
  312. package/dist/esm/internal/shardManager.js.map +1 -0
  313. package/dist/esm/internal/shardManagerClient.js +38 -0
  314. package/dist/esm/internal/shardManagerClient.js.map +1 -0
  315. package/dist/esm/internal/shardManagerState.js +36 -0
  316. package/dist/esm/internal/shardManagerState.js.map +1 -0
  317. package/dist/esm/internal/sharding.js +288 -0
  318. package/dist/esm/internal/sharding.js.map +1 -0
  319. package/dist/esm/internal/shardingConfig.js +47 -0
  320. package/dist/esm/internal/shardingConfig.js.map +1 -0
  321. package/dist/esm/internal/storage.js +42 -0
  322. package/dist/esm/internal/storage.js.map +1 -0
  323. package/dist/esm/internal/utils.js +56 -0
  324. package/dist/esm/internal/utils.js.map +1 -0
  325. package/dist/esm/package.json +4 -0
  326. package/package.json +259 -0
  327. package/src/AtLeastOnce.ts +28 -0
  328. package/src/AtLeastOnceStorage.ts +96 -0
  329. package/src/Broadcaster.ts +48 -0
  330. package/src/ManagerConfig.ts +67 -0
  331. package/src/Message.ts +132 -0
  332. package/src/MessageState.ts +126 -0
  333. package/src/Messenger.ts +40 -0
  334. package/src/Pod.ts +95 -0
  335. package/src/PodAddress.ts +94 -0
  336. package/src/Pods.ts +100 -0
  337. package/src/PodsHealth.ts +74 -0
  338. package/src/PoisonPill.ts +105 -0
  339. package/src/RecipientAddress.ts +72 -0
  340. package/src/RecipientBehaviour.ts +108 -0
  341. package/src/RecipientBehaviourContext.ts +101 -0
  342. package/src/RecipientType.ts +134 -0
  343. package/src/Serialization.ts +72 -0
  344. package/src/SerializedEnvelope.ts +109 -0
  345. package/src/SerializedMessage.ts +82 -0
  346. package/src/ShardId.ts +79 -0
  347. package/src/ShardManager.ts +53 -0
  348. package/src/ShardManagerClient.ts +57 -0
  349. package/src/Sharding.ts +214 -0
  350. package/src/ShardingConfig.ts +76 -0
  351. package/src/ShardingEvent.ts +121 -0
  352. package/src/ShardingException.ts +151 -0
  353. package/src/ShardingRegistrationEvent.ts +62 -0
  354. package/src/Storage.ts +92 -0
  355. package/src/index.ts +139 -0
  356. package/src/internal/atLeastOnce.ts +59 -0
  357. package/src/internal/atLeastOnceStorage.ts +218 -0
  358. package/src/internal/entityManager.ts +404 -0
  359. package/src/internal/entityState.ts +64 -0
  360. package/src/internal/managerConfig.ts +84 -0
  361. package/src/internal/message.ts +64 -0
  362. package/src/internal/messageState.ts +98 -0
  363. package/src/internal/podWithMetadata.ts +72 -0
  364. package/src/internal/pods.ts +29 -0
  365. package/src/internal/podsHealth.ts +39 -0
  366. package/src/internal/recipientBehaviour.ts +133 -0
  367. package/src/internal/recipientBehaviourContext.ts +70 -0
  368. package/src/internal/serialization.ts +59 -0
  369. package/src/internal/shardManager.ts +593 -0
  370. package/src/internal/shardManagerClient.ts +49 -0
  371. package/src/internal/shardManagerState.ts +80 -0
  372. package/src/internal/sharding.ts +793 -0
  373. package/src/internal/shardingConfig.ts +97 -0
  374. package/src/internal/storage.ts +60 -0
  375. package/src/internal/utils.ts +54 -0
@@ -0,0 +1,126 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Schema from "@effect/schema/Schema"
5
+ import type * as Effect from "effect/Effect"
6
+ import * as internal from "./internal/messageState.js"
7
+
8
+ /**
9
+ * @since 1.0.0
10
+ * @category symbols
11
+ */
12
+ export const MessageStateTypeId: unique symbol = internal.MessageStateTypeId
13
+
14
+ /**
15
+ * @since 1.0.0
16
+ * @category symbols
17
+ */
18
+ export type MessageStateTypeId = typeof MessageStateTypeId
19
+
20
+ /**
21
+ * A message state given to just acknowledged messages.
22
+ * This state tells the sender that the receiver has received the message and will eventually process it later.
23
+ *
24
+ * @since 1.0.0
25
+ * @category models
26
+ */
27
+ export interface MessageStateAcknowledged {
28
+ readonly [MessageStateTypeId]: MessageStateTypeId
29
+ readonly _tag: "@effect/cluster/MessageState/Acknowledged"
30
+ }
31
+
32
+ /**
33
+ * A message state given to processed messages.
34
+ * This state tells the sender that the receiver has already received and processed the message.
35
+ * This will also tell the sender the result for this message.
36
+ *
37
+ * @since 1.0.0
38
+ * @category models
39
+ */
40
+ export interface MessageStateProcessed<A> {
41
+ readonly [MessageStateTypeId]: MessageStateTypeId
42
+ readonly _tag: "@effect/cluster/MessageState/Processed"
43
+ readonly result: A
44
+ }
45
+
46
+ /**
47
+ * Once a Message is sent to an entity to be processed,
48
+ * the state of that message over that entity is either Acknoledged (not yet processed) or Processed.
49
+ *
50
+ * @since 1.0.0
51
+ * @category models
52
+ */
53
+ export type MessageState<A> = MessageStateAcknowledged | MessageStateProcessed<A>
54
+
55
+ /**
56
+ * @since 1.0.0
57
+ * @category models
58
+ */
59
+ export namespace MessageState {
60
+ /**
61
+ * @since 1.0.0
62
+ * @category models
63
+ */
64
+ export type Encoded<I> = {
65
+ readonly "@effect/cluster/MessageState": "@effect/cluster/MessageState"
66
+ readonly _tag: "@effect/cluster/MessageState/Acknowledged"
67
+ } | {
68
+ readonly result: I
69
+ readonly "@effect/cluster/MessageState": "@effect/cluster/MessageState"
70
+ readonly _tag: "@effect/cluster/MessageState/Processed"
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Ensures that the given value is a MessageState
76
+ *
77
+ * @since 1.0.0
78
+ * @category utils
79
+ */
80
+ export const isMessageState = internal.isMessageState
81
+
82
+ /**
83
+ * Match over the possible states of a MessageState
84
+ *
85
+ * @since 1.0.0
86
+ * @category utils
87
+ */
88
+ export const match = internal.match
89
+
90
+ /**
91
+ * Constructs an AcknowledgedMessageState.
92
+ *
93
+ * @since 1.0.0
94
+ * @category constructors
95
+ */
96
+ export const Acknowledged: MessageStateAcknowledged = internal.Acknowledged
97
+
98
+ /**
99
+ * Constructs a ProcessedMessageState from the result of the message being processed.
100
+ *
101
+ * @since 1.0.0
102
+ * @category constructors
103
+ */
104
+ export const Processed: <A>(result: A) => MessageStateProcessed<A> = internal.Processed
105
+
106
+ /**
107
+ * Effectfully transform the <A> type of the MessageState<A>.
108
+ *
109
+ * @since 1.0.0
110
+ * @category utils
111
+ */
112
+ export const mapEffect: <A, B, R, E>(
113
+ value: MessageState<A>,
114
+ fn: (value: A) => Effect.Effect<B, E, R>
115
+ ) => Effect.Effect<MessageState<B>, E, R> = internal.mapEffect
116
+
117
+ /**
118
+ * @since 1.0.0
119
+ * @category schema
120
+ */
121
+ export const schema: <A, I>(
122
+ result: Schema.Schema<A, I>
123
+ ) => Schema.Schema<
124
+ MessageState<A>,
125
+ MessageState.Encoded<I>
126
+ > = internal.schema
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Effect from "effect/Effect"
5
+ import type * as Message from "./Message.js"
6
+ import type * as ShardingException from "./ShardingException.js"
7
+
8
+ /**
9
+ * An interface to communicate with a remote entity.
10
+ *
11
+ * @tparam Msg the type of message that can be sent to this entity type
12
+ * @since 1.0.0
13
+ * @category models
14
+ */
15
+ export interface Messenger<Msg extends Message.Message.Any> {
16
+ /**
17
+ * Send a message without waiting for a response (fire and forget)
18
+ *
19
+ * You can use Effect timeout to get send timeouts. The default behaviour is to send the message indifinetely
20
+ *
21
+ * @since 1.0.0
22
+ */
23
+ sendDiscard(entityId: string): (message: Msg) => Effect.Effect<void, ShardingException.ShardingException>
24
+
25
+ /**
26
+ * Send a message and wait for a response.
27
+ *
28
+ * You can use Effect timeout to get send timeouts. The default behaviour is to send the message indifinetely
29
+ *
30
+ * @since 1.0.0
31
+ */
32
+ send(
33
+ entityId: string
34
+ ): <A extends Msg>(
35
+ message: A
36
+ ) => Effect.Effect<
37
+ Message.Message.Success<A>,
38
+ ShardingException.ShardingException | Message.Message.Error<A>
39
+ >
40
+ }
package/src/Pod.ts ADDED
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Schema from "@effect/schema/Schema"
5
+ import { TypeIdSchema } from "./internal/utils.js"
6
+ import * as PodAddress from "./PodAddress.js"
7
+
8
+ /** @internal */
9
+ const PodSymbolKey = "@effect/cluster/Pod"
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ * @category symbols
14
+ */
15
+ export const PodTypeId: unique symbol = Symbol.for(PodSymbolKey)
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ * @category symbols
20
+ */
21
+ export type PodTypeId = typeof PodTypeId
22
+
23
+ /** @internal */
24
+ const PodTypeIdSchema = TypeIdSchema(PodSymbolKey, PodTypeId)
25
+
26
+ /**
27
+ * A pod is an application server that is able to run entities. A pod can run multiple entities,
28
+ * but a single entity will live on a given pod at a time.
29
+ * Since this is an application server, it needs to have an unique identifier where it's addressed (PodAddress),
30
+ * and has a version of the application that's running on it.
31
+ * Version is used during the rebalance phase to give priority to newer application servers and slowly kill older ones.
32
+ *
33
+ * @since 1.0.0
34
+ * @category models
35
+ */
36
+ export class Pod extends Schema.Class<Pod>(PodSymbolKey)({
37
+ [PodTypeId]: Schema.propertySignature(PodTypeIdSchema).pipe(Schema.fromKey(PodSymbolKey)),
38
+ address: PodAddress.schema,
39
+ version: Schema.String
40
+ }) {
41
+ /**
42
+ * @since 1.0.0
43
+ */
44
+ toString() {
45
+ return `Pod(${this.address}, ${this.version})`
46
+ }
47
+ }
48
+
49
+ /**
50
+ * @since 1.0.0
51
+ * @category models
52
+ */
53
+ export namespace Pod {
54
+ /**
55
+ * This is the shape that a Pod is represented over the wire.
56
+ *
57
+ * @since 1.0.0
58
+ * @category models
59
+ */
60
+ export interface Encoded extends Schema.Schema.Encoded<typeof Pod> {}
61
+ }
62
+
63
+ /**
64
+ * Given a value, ensures that it's a valid Pod.
65
+ *
66
+ * @since 1.0.0
67
+ * @category utils
68
+ */
69
+ export function isPod(value: unknown): value is Pod {
70
+ return (
71
+ typeof value === "object" &&
72
+ value !== null &&
73
+ PodTypeId in value &&
74
+ value[PodTypeId] === PodTypeId
75
+ )
76
+ }
77
+
78
+ /**
79
+ * Constructs a Pod from it's identifing PodAddress and application server version.
80
+ *
81
+ * @since 1.0.0
82
+ * @category constructors
83
+ */
84
+ export function make(address: PodAddress.PodAddress, version: string): Pod {
85
+ return new Pod({ [PodTypeId]: PodTypeId, address, version })
86
+ }
87
+
88
+ /**
89
+ * @since 1.0.0
90
+ * @category schema
91
+ */
92
+ export const schema: Schema.Schema<
93
+ Pod,
94
+ Pod.Encoded
95
+ > = Schema.asSchema(Pod)
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Schema from "@effect/schema/Schema"
5
+ import { TypeIdSchema } from "./internal/utils.js"
6
+
7
+ /** @internal */
8
+ const PodAddressSymbolKey = "@effect/cluster/PodAddress"
9
+
10
+ /**
11
+ * @since 1.0.0
12
+ * @category symbols
13
+ */
14
+ export const PodAddressTypeId: unique symbol = Symbol.for(PodAddressSymbolKey)
15
+
16
+ /** @internal */
17
+ export const PodAddressTypeIdSchema = TypeIdSchema(PodAddressSymbolKey, PodAddressTypeId)
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category symbols
22
+ */
23
+ export type PodAddressTypeId = typeof PodAddressTypeId
24
+
25
+ /**
26
+ * A PodAddress is a unique identifier of a Pod (application server).
27
+ * It is conventially built by using an address and a port, so that messaging implementations may use directly the
28
+ * PodAddress to know how to connect to the specific Pod.
29
+ *
30
+ * @since 1.0.0
31
+ * @category models
32
+ */
33
+ export class PodAddress extends Schema.Class<PodAddress>(PodAddressSymbolKey)({
34
+ [PodAddressTypeId]: Schema.propertySignature(PodAddressTypeIdSchema).pipe(Schema.fromKey(PodAddressSymbolKey)),
35
+ host: Schema.String,
36
+ port: Schema.Number
37
+ }) {
38
+ /**
39
+ * @since 1.0.0
40
+ */
41
+ toString() {
42
+ return `PodAddress(${this.host}:${this.port})`
43
+ }
44
+ }
45
+
46
+ /**
47
+ * @since 1.0.0
48
+ * @category models
49
+ */
50
+ export namespace PodAddress {
51
+ /**
52
+ * This is the shape one PodAddress has over the wire.
53
+ *
54
+ * @since 1.0.0
55
+ * @category models
56
+ */
57
+ export interface Encoded extends Schema.Schema.Encoded<typeof PodAddress> {}
58
+ }
59
+
60
+ /**
61
+ * Constructs a PodAddress from an host and a port.
62
+ *
63
+ * @since 1.0.0
64
+ * @category constructors
65
+ */
66
+ export function make(host: string, port: number): PodAddress {
67
+ return new PodAddress({ [PodAddressTypeId]: PodAddressTypeId, host, port })
68
+ }
69
+
70
+ /**
71
+ * Ensures that the given value is a valid PodAddress.
72
+ *
73
+ * @since 1.0.0
74
+ * @category utils
75
+ */
76
+ export function isPodAddress(value: unknown): value is PodAddress {
77
+ return (
78
+ typeof value === "object" &&
79
+ value !== null &&
80
+ PodAddressTypeId in value &&
81
+ value[PodAddressTypeId] === PodAddressTypeId
82
+ )
83
+ }
84
+
85
+ /**
86
+ * This is the schema for a PodAddress.
87
+ *
88
+ * @since 1.0.0
89
+ * @category schema
90
+ */
91
+ export const schema: Schema.Schema<
92
+ PodAddress,
93
+ PodAddress.Encoded
94
+ > = Schema.asSchema(PodAddress)
package/src/Pods.ts ADDED
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Context from "effect/Context"
5
+ import type * as Effect from "effect/Effect"
6
+ import type * as HashSet from "effect/HashSet"
7
+ import type * as Layer from "effect/Layer"
8
+ import * as internal from "./internal/pods.js"
9
+ import type * as MessageState from "./MessageState.js"
10
+ import type * as PodAddress from "./PodAddress.js"
11
+ import type * as SerializedEnvelope from "./SerializedEnvelope.js"
12
+ import type * as SerializedMessage from "./SerializedMessage.js"
13
+ import type * as ShardId from "./ShardId.js"
14
+ import type * as ShardingException from "./ShardingException.js"
15
+
16
+ /**
17
+ * @since 1.0.0
18
+ * @category symbols
19
+ */
20
+ export const PodsTypeId: unique symbol = internal.PodsTypeId
21
+
22
+ /**
23
+ * @since 1.0.0
24
+ * @category symbols
25
+ */
26
+ export type PodsTypeId = typeof PodsTypeId
27
+
28
+ /**
29
+ * An interface to communicate with remote pods.
30
+ * This is used by the Shard Manager for assigning and unassigning shards.
31
+ * This is also used by pods for internal communication (forward messages to each other).
32
+ *
33
+ * @since 1.0.0
34
+ * @category models
35
+ */
36
+ export interface Pods {
37
+ /**
38
+ * @since 1.0.0
39
+ */
40
+ readonly [PodsTypeId]: PodsTypeId
41
+
42
+ /**
43
+ * Notify a pod that it was assigned a list of shards
44
+ * @since 1.0.0
45
+ */
46
+ readonly assignShards: (
47
+ pod: PodAddress.PodAddress,
48
+ shards: HashSet.HashSet<ShardId.ShardId>
49
+ ) => Effect.Effect<void, ShardingException.PodUnavailableException>
50
+
51
+ /**
52
+ * Notify a pod that it was unassigned a list of shards
53
+ * @since 1.0.0
54
+ */
55
+ readonly unassignShards: (
56
+ pod: PodAddress.PodAddress,
57
+ shards: HashSet.HashSet<ShardId.ShardId>
58
+ ) => Effect.Effect<void, ShardingException.PodUnavailableException>
59
+
60
+ /**
61
+ * Check that a pod is responsive
62
+ * @since 1.0.0
63
+ */
64
+ readonly ping: (pod: PodAddress.PodAddress) => Effect.Effect<void, ShardingException.PodUnavailableException>
65
+
66
+ /**
67
+ * Send a message to a pod and receive its message state
68
+ * @since 1.0.0
69
+ */
70
+ readonly sendAndGetState: (
71
+ pod: PodAddress.PodAddress,
72
+ envelope: SerializedEnvelope.SerializedEnvelope
73
+ ) => Effect.Effect<
74
+ MessageState.MessageState<SerializedMessage.SerializedMessage>,
75
+ ShardingException.ShardingException
76
+ >
77
+ }
78
+
79
+ /**
80
+ * @since 1.0.0
81
+ * @category context
82
+ */
83
+ export const Pods: Context.Tag<Pods, Pods> = internal.podsTag
84
+
85
+ /**
86
+ * Constructs a Pods service from its implementation
87
+ *
88
+ * @since 1.0.0
89
+ * @category context
90
+ */
91
+ export const make: (args: Omit<Pods, typeof PodsTypeId>) => Pods = internal.make
92
+
93
+ /**
94
+ * A layer that creates a service that does nothing when called.
95
+ * Useful for testing ShardManager or when using Sharding.local.
96
+ *
97
+ * @since 1.0.0
98
+ * @category layers
99
+ */
100
+ export const noop: Layer.Layer<Pods> = internal.noop
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Context from "effect/Context"
5
+ import type * as Effect from "effect/Effect"
6
+ import type * as Layer from "effect/Layer"
7
+ import * as internal from "./internal/podsHealth.js"
8
+ import type * as PodAddress from "./PodAddress.js"
9
+ import type * as Pods from "./Pods.js"
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ * @category symbols
14
+ */
15
+ export const PodsHealthTypeId: unique symbol = internal.PodsHealthTypeId
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ * @category symbols
20
+ */
21
+ export type PodsHealthTypeId = typeof PodsHealthTypeId
22
+
23
+ /**
24
+ * An interface to check a pod's health.
25
+ * This is used when a pod is unresponsive, to check if it should be unassigned all its shards or not.
26
+ * If the pod is alive, shards will not be unassigned because the pods might still be processing messages and might be responsive again.
27
+ * If the pod is not alive, shards can be safely reassigned somewhere else.
28
+ * A typical implementation for this is using k8s to check if the pod still exists.
29
+ *
30
+ * @since 1.0.0
31
+ * @category models
32
+ */
33
+ export interface PodsHealth {
34
+ /**
35
+ * @since 1.0.0
36
+ */
37
+ readonly [PodsHealthTypeId]: PodsHealthTypeId
38
+
39
+ /**
40
+ * Check if a pod is still alive.
41
+ * @since 1.0.0
42
+ */
43
+ readonly isAlive: (podAddress: PodAddress.PodAddress) => Effect.Effect<boolean>
44
+ }
45
+
46
+ /**
47
+ * Constructs a PodsHealth from its implementation
48
+ *
49
+ * @since 1.0.0
50
+ * @category constructors
51
+ */
52
+ export const make: (args: Omit<PodsHealth, typeof PodsHealthTypeId>) => PodsHealth = internal.make
53
+
54
+ /**
55
+ * @since 1.0.0
56
+ * @category context
57
+ */
58
+ export const PodsHealth: Context.Tag<PodsHealth, PodsHealth> = internal.podsHealthTag
59
+
60
+ /**
61
+ * A layer that considers pods as always alive.
62
+ * This is useful for testing only.
63
+ * @since 1.0.0
64
+ * @category layers
65
+ */
66
+ export const noop: Layer.Layer<PodsHealth> = internal.noop
67
+
68
+ /**
69
+ * A layer that pings the pod directly to check if it's alive.
70
+ * This is useful for developing and testing but not reliable in production.
71
+ * @since 1.0.0
72
+ * @category layers
73
+ */
74
+ export const local: Layer.Layer<PodsHealth, never, Pods.Pods> = internal.local
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Schema from "@effect/schema/Schema"
5
+ import * as Effect from "effect/Effect"
6
+ import { pipe } from "effect/Function"
7
+ import * as Queue from "effect/Queue"
8
+ import { TypeIdSchema } from "./internal/utils.js"
9
+
10
+ /** @internal */
11
+ const PoisonPillSymbolKey = "@effect/cluster/PoisonPill"
12
+
13
+ /**
14
+ * @since 1.0.0
15
+ * @category symbols
16
+ */
17
+ export const PoisonPillTypeId: unique symbol = Symbol.for(PoisonPillSymbolKey)
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category symbols
22
+ */
23
+ export type PoisonPillTypeId = typeof PoisonPillTypeId
24
+
25
+ /** @internal */
26
+ const PoisonPillTypeIdSchema = TypeIdSchema(PoisonPillSymbolKey, PoisonPillTypeId)
27
+
28
+ /**
29
+ * @since 1.0.0
30
+ */
31
+ export namespace PoisonPill {
32
+ /**
33
+ * This is the shape that a PoisonPill takes over the wire.
34
+ *
35
+ * @since 1.0.0
36
+ * @category models
37
+ */
38
+ export interface Encoded extends Schema.Schema.Encoded<typeof PoisonPill> {}
39
+ }
40
+
41
+ /**
42
+ * A PoisonPill is a special value that tells a behaviour entity to shut itself down.
43
+ * PoisonPill is handled only when you are using a Queue-based RecipientBehaviour.
44
+ * Other RecipientBehaviour such as fromFunctionEffect would not care about PoisonPill.
45
+ *
46
+ * @since 1.0.0
47
+ * @category models
48
+ */
49
+ export class PoisonPill extends Schema.Class<PoisonPill>(PoisonPillSymbolKey)({
50
+ [PoisonPillTypeId]: Schema.propertySignature(PoisonPillTypeIdSchema).pipe(Schema.fromKey(PoisonPillSymbolKey))
51
+ }) {
52
+ }
53
+
54
+ /**
55
+ * Constructs a new PosionPill
56
+ *
57
+ * @since 1.0.0
58
+ * @category constructors
59
+ */
60
+ export const make: Effect.Effect<PoisonPill> = Effect.succeed(
61
+ new PoisonPill({ [PoisonPillTypeId]: PoisonPillTypeId })
62
+ )
63
+
64
+ /**
65
+ * Checks if the given value is a PoisonPill.
66
+ *
67
+ * @since 1.0.0
68
+ * @category utils
69
+ */
70
+ export function isPoisonPill(value: unknown): value is PoisonPill {
71
+ return (
72
+ typeof value === "object" &&
73
+ value !== null &&
74
+ PoisonPillTypeId in value &&
75
+ value[PoisonPillTypeId] === PoisonPillTypeId
76
+ )
77
+ }
78
+
79
+ /**
80
+ * This is the schema for a PoisonPill that is used to encode the value over the wire.
81
+ * This is useful if you want a behavior that can be shut down from an external message.
82
+ *
83
+ * @since 1.0.0
84
+ * @category schema
85
+ */
86
+ export const schema: Schema.Schema<
87
+ PoisonPill,
88
+ PoisonPill.Encoded
89
+ > = Schema.asSchema(PoisonPill)
90
+
91
+ /**
92
+ * Attempts to take a message from the queue in the same way Queue.take does.
93
+ * If the result is a PoisonPill, it will interrupt the effect.
94
+ *
95
+ * @since 1.0.0
96
+ * @category utils
97
+ */
98
+ export function takeOrInterrupt<Req>(
99
+ dequeue: Queue.Dequeue<Req | PoisonPill>
100
+ ): Effect.Effect<Req> {
101
+ return pipe(
102
+ Queue.take(dequeue),
103
+ Effect.flatMap((msg) => isPoisonPill(msg) ? Effect.interrupt : Effect.succeed(msg))
104
+ )
105
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Schema from "@effect/schema/Schema"
5
+ import * as Equal from "effect/Equal"
6
+ import * as Hash from "effect/Hash"
7
+ import { TypeIdSchema } from "./internal/utils.js"
8
+
9
+ const RecipientAddressSymbolKey = "@effect/cluster/RecipientAddress"
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ * @category symbols
14
+ */
15
+ export const RecipientAddressTypeId: unique symbol = Symbol.for(RecipientAddressSymbolKey)
16
+
17
+ /** @internal */
18
+ const RecipientAddressTypeIdSchema = TypeIdSchema(RecipientAddressSymbolKey, RecipientAddressTypeId)
19
+
20
+ /**
21
+ * A RecipientAddress uniquely identifies a RecipientType + EntityId instance.
22
+ *
23
+ * @since 1.0.0
24
+ * @category models
25
+ */
26
+ export class RecipientAddress extends Schema.Class<RecipientAddress>(RecipientAddressSymbolKey)({
27
+ [RecipientAddressTypeId]: Schema.propertySignature(RecipientAddressTypeIdSchema).pipe(
28
+ Schema.fromKey(RecipientAddressSymbolKey)
29
+ ),
30
+ recipientTypeName: Schema.String,
31
+ entityId: Schema.String
32
+ }) {
33
+ /**
34
+ * @since 1.0.0
35
+ */
36
+ [Hash.symbol](): number {
37
+ return Hash.structure({ recipientTypeName: this.recipientTypeName, entityId: this.entityId })
38
+ }
39
+
40
+ /**
41
+ * @since 1.0.0
42
+ */
43
+ [Equal.symbol](this: RecipientAddress, that: Equal.Equal): boolean {
44
+ if (isRecipientAddress(that)) {
45
+ return this.recipientTypeName === that.recipientTypeName && this.entityId === that.entityId
46
+ }
47
+ return false
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Ensure that given value is a RecipientAddress
53
+ * @since 1.0.0
54
+ * @category constructors
55
+ */
56
+ export function isRecipientAddress(value: unknown): value is RecipientAddress {
57
+ return typeof value === "object" && value !== null && RecipientAddressTypeId in value &&
58
+ value[RecipientAddressTypeId] === RecipientAddressTypeId
59
+ }
60
+
61
+ /**
62
+ * Given a name and a schema for the protocol, constructs an EntityType.
63
+ *
64
+ * @since 1.0.0
65
+ * @category constructors
66
+ */
67
+ export function makeRecipientAddress(
68
+ recipientTypeName: string,
69
+ entityId: string
70
+ ): RecipientAddress {
71
+ return new RecipientAddress({ [RecipientAddressTypeId]: RecipientAddressTypeId, recipientTypeName, entityId })
72
+ }