@effect/cluster 0.50.6 → 0.51.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 (223) hide show
  1. package/RunnerStorage/package.json +6 -0
  2. package/SqlRunnerStorage/package.json +6 -0
  3. package/dist/cjs/ClusterError.js +2 -24
  4. package/dist/cjs/ClusterError.js.map +1 -1
  5. package/dist/cjs/ClusterMetrics.js +13 -15
  6. package/dist/cjs/ClusterMetrics.js.map +1 -1
  7. package/dist/cjs/ClusterWorkflowEngine.js +41 -81
  8. package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
  9. package/dist/cjs/Entity.js.map +1 -1
  10. package/dist/cjs/EntityAddress.js +9 -1
  11. package/dist/cjs/EntityAddress.js.map +1 -1
  12. package/dist/cjs/EntityId.js +7 -1
  13. package/dist/cjs/EntityId.js.map +1 -1
  14. package/dist/cjs/EntityProxy.js +1 -1
  15. package/dist/cjs/EntityProxy.js.map +1 -1
  16. package/dist/cjs/HttpRunner.js +69 -43
  17. package/dist/cjs/HttpRunner.js.map +1 -1
  18. package/dist/cjs/MessageStorage.js +64 -16
  19. package/dist/cjs/MessageStorage.js.map +1 -1
  20. package/dist/cjs/Runner.js +3 -3
  21. package/dist/cjs/Runner.js.map +1 -1
  22. package/dist/cjs/RunnerAddress.js +7 -0
  23. package/dist/cjs/RunnerAddress.js.map +1 -1
  24. package/dist/cjs/RunnerHealth.js +91 -32
  25. package/dist/cjs/RunnerHealth.js.map +1 -1
  26. package/dist/cjs/RunnerServer.js +38 -24
  27. package/dist/cjs/RunnerServer.js.map +1 -1
  28. package/dist/cjs/RunnerStorage.js +100 -0
  29. package/dist/cjs/RunnerStorage.js.map +1 -0
  30. package/dist/cjs/Runners.js +18 -22
  31. package/dist/cjs/Runners.js.map +1 -1
  32. package/dist/cjs/ShardId.js +17 -7
  33. package/dist/cjs/ShardId.js.map +1 -1
  34. package/dist/cjs/Sharding.js +435 -318
  35. package/dist/cjs/Sharding.js.map +1 -1
  36. package/dist/cjs/ShardingConfig.js +10 -14
  37. package/dist/cjs/ShardingConfig.js.map +1 -1
  38. package/dist/cjs/Snowflake.js +1 -1
  39. package/dist/cjs/SocketRunner.js +1 -1
  40. package/dist/cjs/SocketRunner.js.map +1 -1
  41. package/dist/cjs/SqlMessageStorage.js +22 -28
  42. package/dist/cjs/SqlMessageStorage.js.map +1 -1
  43. package/dist/cjs/SqlRunnerStorage.js +378 -0
  44. package/dist/cjs/SqlRunnerStorage.js.map +1 -0
  45. package/dist/cjs/index.js +5 -15
  46. package/dist/cjs/internal/entityManager.js +40 -9
  47. package/dist/cjs/internal/entityManager.js.map +1 -1
  48. package/dist/dts/ClusterError.d.ts +0 -22
  49. package/dist/dts/ClusterError.d.ts.map +1 -1
  50. package/dist/dts/ClusterMetrics.d.ts +4 -14
  51. package/dist/dts/ClusterMetrics.d.ts.map +1 -1
  52. package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
  53. package/dist/dts/Entity.d.ts +2 -2
  54. package/dist/dts/Entity.d.ts.map +1 -1
  55. package/dist/dts/EntityAddress.d.ts +11 -0
  56. package/dist/dts/EntityAddress.d.ts.map +1 -1
  57. package/dist/dts/EntityId.d.ts +5 -0
  58. package/dist/dts/EntityId.d.ts.map +1 -1
  59. package/dist/dts/EntityProxy.d.ts +5 -6
  60. package/dist/dts/EntityProxy.d.ts.map +1 -1
  61. package/dist/dts/HttpRunner.d.ts +48 -25
  62. package/dist/dts/HttpRunner.d.ts.map +1 -1
  63. package/dist/dts/MessageStorage.d.ts +13 -5
  64. package/dist/dts/MessageStorage.d.ts.map +1 -1
  65. package/dist/dts/Runner.d.ts +4 -4
  66. package/dist/dts/Runner.d.ts.map +1 -1
  67. package/dist/dts/RunnerAddress.d.ts +5 -0
  68. package/dist/dts/RunnerAddress.d.ts.map +1 -1
  69. package/dist/dts/RunnerHealth.d.ts +24 -16
  70. package/dist/dts/RunnerHealth.d.ts.map +1 -1
  71. package/dist/dts/RunnerServer.d.ts +5 -4
  72. package/dist/dts/RunnerServer.d.ts.map +1 -1
  73. package/dist/dts/{ShardStorage.d.ts → RunnerStorage.d.ts} +41 -54
  74. package/dist/dts/RunnerStorage.d.ts.map +1 -0
  75. package/dist/dts/Runners.d.ts +15 -11
  76. package/dist/dts/Runners.d.ts.map +1 -1
  77. package/dist/dts/ShardId.d.ts +1 -1
  78. package/dist/dts/ShardId.d.ts.map +1 -1
  79. package/dist/dts/Sharding.d.ts +20 -10
  80. package/dist/dts/Sharding.d.ts.map +1 -1
  81. package/dist/dts/ShardingConfig.d.ts +40 -14
  82. package/dist/dts/ShardingConfig.d.ts.map +1 -1
  83. package/dist/dts/SocketRunner.d.ts +4 -3
  84. package/dist/dts/SocketRunner.d.ts.map +1 -1
  85. package/dist/dts/SqlMessageStorage.d.ts +2 -3
  86. package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
  87. package/dist/dts/SqlRunnerStorage.d.ts +40 -0
  88. package/dist/dts/SqlRunnerStorage.d.ts.map +1 -0
  89. package/dist/dts/index.d.ts +4 -24
  90. package/dist/dts/index.d.ts.map +1 -1
  91. package/dist/esm/ClusterError.js +0 -21
  92. package/dist/esm/ClusterError.js.map +1 -1
  93. package/dist/esm/ClusterMetrics.js +12 -14
  94. package/dist/esm/ClusterMetrics.js.map +1 -1
  95. package/dist/esm/ClusterWorkflowEngine.js +41 -81
  96. package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
  97. package/dist/esm/Entity.js.map +1 -1
  98. package/dist/esm/EntityAddress.js +7 -0
  99. package/dist/esm/EntityAddress.js.map +1 -1
  100. package/dist/esm/EntityId.js +5 -0
  101. package/dist/esm/EntityId.js.map +1 -1
  102. package/dist/esm/EntityProxy.js +2 -2
  103. package/dist/esm/EntityProxy.js.map +1 -1
  104. package/dist/esm/HttpRunner.js +62 -39
  105. package/dist/esm/HttpRunner.js.map +1 -1
  106. package/dist/esm/MessageStorage.js +65 -17
  107. package/dist/esm/MessageStorage.js.map +1 -1
  108. package/dist/esm/Runner.js +3 -3
  109. package/dist/esm/Runner.js.map +1 -1
  110. package/dist/esm/RunnerAddress.js +7 -0
  111. package/dist/esm/RunnerAddress.js.map +1 -1
  112. package/dist/esm/RunnerHealth.js +88 -30
  113. package/dist/esm/RunnerHealth.js.map +1 -1
  114. package/dist/esm/RunnerServer.js +38 -24
  115. package/dist/esm/RunnerServer.js.map +1 -1
  116. package/dist/esm/RunnerStorage.js +90 -0
  117. package/dist/esm/RunnerStorage.js.map +1 -0
  118. package/dist/esm/Runners.js +19 -23
  119. package/dist/esm/Runners.js.map +1 -1
  120. package/dist/esm/ShardId.js +16 -6
  121. package/dist/esm/ShardId.js.map +1 -1
  122. package/dist/esm/Sharding.js +438 -321
  123. package/dist/esm/Sharding.js.map +1 -1
  124. package/dist/esm/ShardingConfig.js +10 -14
  125. package/dist/esm/ShardingConfig.js.map +1 -1
  126. package/dist/esm/Snowflake.js +1 -1
  127. package/dist/esm/SocketRunner.js +1 -1
  128. package/dist/esm/SocketRunner.js.map +1 -1
  129. package/dist/esm/SqlMessageStorage.js +22 -28
  130. package/dist/esm/SqlMessageStorage.js.map +1 -1
  131. package/dist/esm/SqlRunnerStorage.js +369 -0
  132. package/dist/esm/SqlRunnerStorage.js.map +1 -0
  133. package/dist/esm/index.js +4 -24
  134. package/dist/esm/index.js.map +1 -1
  135. package/dist/esm/internal/entityManager.js +40 -9
  136. package/dist/esm/internal/entityManager.js.map +1 -1
  137. package/package.json +20 -60
  138. package/src/ClusterError.ts +0 -24
  139. package/src/ClusterMetrics.ts +12 -16
  140. package/src/ClusterWorkflowEngine.ts +38 -78
  141. package/src/Entity.ts +2 -7
  142. package/src/EntityAddress.ts +10 -0
  143. package/src/EntityId.ts +6 -0
  144. package/src/EntityProxy.ts +10 -10
  145. package/src/HttpRunner.ts +132 -67
  146. package/src/MessageStorage.ts +89 -24
  147. package/src/Runner.ts +4 -4
  148. package/src/RunnerAddress.ts +8 -0
  149. package/src/RunnerHealth.ts +119 -56
  150. package/src/RunnerServer.ts +64 -47
  151. package/src/RunnerStorage.ts +218 -0
  152. package/src/Runners.ts +32 -45
  153. package/src/ShardId.ts +14 -3
  154. package/src/Sharding.ts +548 -413
  155. package/src/ShardingConfig.ts +39 -31
  156. package/src/Snowflake.ts +1 -1
  157. package/src/SocketRunner.ts +6 -4
  158. package/src/SqlMessageStorage.ts +28 -30
  159. package/src/SqlRunnerStorage.ts +541 -0
  160. package/src/index.ts +4 -29
  161. package/src/internal/entityManager.ts +44 -10
  162. package/HttpCommon/package.json +0 -6
  163. package/HttpShardManager/package.json +0 -6
  164. package/ShardManager/package.json +0 -6
  165. package/ShardStorage/package.json +0 -6
  166. package/SocketShardManager/package.json +0 -6
  167. package/SqlShardStorage/package.json +0 -6
  168. package/SynchronizedClock/package.json +0 -6
  169. package/dist/cjs/HttpCommon.js +0 -48
  170. package/dist/cjs/HttpCommon.js.map +0 -1
  171. package/dist/cjs/HttpShardManager.js +0 -139
  172. package/dist/cjs/HttpShardManager.js.map +0 -1
  173. package/dist/cjs/ShardManager.js +0 -549
  174. package/dist/cjs/ShardManager.js.map +0 -1
  175. package/dist/cjs/ShardStorage.js +0 -151
  176. package/dist/cjs/ShardStorage.js.map +0 -1
  177. package/dist/cjs/SocketShardManager.js +0 -32
  178. package/dist/cjs/SocketShardManager.js.map +0 -1
  179. package/dist/cjs/SqlShardStorage.js +0 -253
  180. package/dist/cjs/SqlShardStorage.js.map +0 -1
  181. package/dist/cjs/SynchronizedClock.js +0 -65
  182. package/dist/cjs/SynchronizedClock.js.map +0 -1
  183. package/dist/cjs/internal/shardManager.js +0 -353
  184. package/dist/cjs/internal/shardManager.js.map +0 -1
  185. package/dist/dts/HttpCommon.d.ts +0 -25
  186. package/dist/dts/HttpCommon.d.ts.map +0 -1
  187. package/dist/dts/HttpShardManager.d.ts +0 -119
  188. package/dist/dts/HttpShardManager.d.ts.map +0 -1
  189. package/dist/dts/ShardManager.d.ts +0 -459
  190. package/dist/dts/ShardManager.d.ts.map +0 -1
  191. package/dist/dts/ShardStorage.d.ts.map +0 -1
  192. package/dist/dts/SocketShardManager.d.ts +0 -17
  193. package/dist/dts/SocketShardManager.d.ts.map +0 -1
  194. package/dist/dts/SqlShardStorage.d.ts +0 -38
  195. package/dist/dts/SqlShardStorage.d.ts.map +0 -1
  196. package/dist/dts/SynchronizedClock.d.ts +0 -19
  197. package/dist/dts/SynchronizedClock.d.ts.map +0 -1
  198. package/dist/dts/internal/shardManager.d.ts +0 -2
  199. package/dist/dts/internal/shardManager.d.ts.map +0 -1
  200. package/dist/esm/HttpCommon.js +0 -38
  201. package/dist/esm/HttpCommon.js.map +0 -1
  202. package/dist/esm/HttpShardManager.js +0 -128
  203. package/dist/esm/HttpShardManager.js.map +0 -1
  204. package/dist/esm/ShardManager.js +0 -535
  205. package/dist/esm/ShardManager.js.map +0 -1
  206. package/dist/esm/ShardStorage.js +0 -141
  207. package/dist/esm/ShardStorage.js.map +0 -1
  208. package/dist/esm/SocketShardManager.js +0 -24
  209. package/dist/esm/SocketShardManager.js.map +0 -1
  210. package/dist/esm/SqlShardStorage.js +0 -244
  211. package/dist/esm/SqlShardStorage.js.map +0 -1
  212. package/dist/esm/SynchronizedClock.js +0 -57
  213. package/dist/esm/SynchronizedClock.js.map +0 -1
  214. package/dist/esm/internal/shardManager.js +0 -342
  215. package/dist/esm/internal/shardManager.js.map +0 -1
  216. package/src/HttpCommon.ts +0 -73
  217. package/src/HttpShardManager.ts +0 -273
  218. package/src/ShardManager.ts +0 -823
  219. package/src/ShardStorage.ts +0 -297
  220. package/src/SocketShardManager.ts +0 -48
  221. package/src/SqlShardStorage.ts +0 -329
  222. package/src/SynchronizedClock.ts +0 -82
  223. package/src/internal/shardManager.ts +0 -412
@@ -54,6 +54,7 @@ export interface EntityManager {
54
54
  readonly isProcessingFor: (message: Message.Incoming<any>, options?: {
55
55
  readonly excludeReplies?: boolean
56
56
  }) => boolean
57
+ readonly clearProcessed: () => void
57
58
 
58
59
  readonly interruptShard: (shardId: ShardId) => Effect.Effect<void>
59
60
 
@@ -108,13 +109,15 @@ export const make = Effect.fnUntraced(function*<
108
109
  )
109
110
 
110
111
  const activeServers = new Map<EntityId, EntityState>()
112
+ const serverCloseLatches = new Map<EntityAddress, Effect.Latch>()
113
+ const processedRequestIds = new Set<Snowflake.Snowflake>()
111
114
 
112
115
  const entities: ResourceMap<
113
116
  EntityAddress,
114
117
  EntityState,
115
118
  EntityNotAssignedToRunner
116
119
  > = yield* ResourceMap.make(Effect.fnUntraced(function*(address: EntityAddress) {
117
- if (yield* options.sharding.isShutdown) {
120
+ if (!options.sharding.hasShardId(address.shardId)) {
118
121
  return yield* new EntityNotAssignedToRunner({ address })
119
122
  }
120
123
 
@@ -122,9 +125,13 @@ export const make = Effect.fnUntraced(function*<
122
125
  const endLatch = yield* Effect.makeLatch()
123
126
 
124
127
  // on shutdown, reset the storage for the entity
125
- yield* Scope.addFinalizer(
128
+ yield* Scope.addFinalizerExit(
126
129
  scope,
127
- Effect.ignore(options.storage.resetAddress(address))
130
+ () => {
131
+ serverCloseLatches.get(address)?.unsafeOpen()
132
+ serverCloseLatches.delete(address)
133
+ return Effect.ignore(options.storage.resetAddress(address))
134
+ }
128
135
  )
129
136
 
130
137
  const activeRequests: EntityState["activeRequests"] = new Map()
@@ -176,6 +183,20 @@ export const make = Effect.fnUntraced(function*<
176
183
  (isShuttingDown || Context.get(request.rpc.annotations, Uninterruptible) ||
177
184
  isInterruptIgnore(response.exit.cause))
178
185
  ) {
186
+ if (!isShuttingDown) {
187
+ return server.write(0, {
188
+ ...request.message.envelope,
189
+ id: RequestId(request.message.envelope.requestId),
190
+ tag: request.message.envelope.tag as any,
191
+ payload: new Request({
192
+ ...request.message.envelope,
193
+ lastSentChunk: request.lastSentChunk
194
+ } as any) as any
195
+ }).pipe(
196
+ Effect.forkIn(scope)
197
+ )
198
+ }
199
+ activeRequests.delete(response.requestId)
179
200
  return options.storage.unregisterReplyHandler(request.message.envelope.requestId)
180
201
  }
181
202
  return retryRespond(
@@ -191,6 +212,7 @@ export const make = Effect.fnUntraced(function*<
191
212
  )
192
213
  ).pipe(
193
214
  Effect.flatMap(() => {
215
+ processedRequestIds.add(request.message.envelope.requestId)
194
216
  activeRequests.delete(response.requestId)
195
217
 
196
218
  // ensure that the reaper does not remove the entity as we haven't
@@ -304,6 +326,7 @@ export const make = Effect.fnUntraced(function*<
304
326
  scope,
305
327
  Effect.withFiberRuntime((fiber) => {
306
328
  activeServers.delete(address.entityId)
329
+ serverCloseLatches.set(address, Effect.unsafeMakeLatch(false))
307
330
  internalInterruptors.add(fiber.id())
308
331
  return state.write(0, { _tag: "Eof" }).pipe(
309
332
  Effect.andThen(Effect.interruptible(endLatch.await)),
@@ -349,7 +372,7 @@ export const make = Effect.fnUntraced(function*<
349
372
  // one sender for the same request. In this case, the other senders
350
373
  // should resume from storage only.
351
374
  let entry = server.activeRequests.get(message.envelope.requestId)
352
- if (entry) {
375
+ if (entry || processedRequestIds.has(message.envelope.requestId)) {
353
376
  return Effect.fail(
354
377
  new AlreadyProcessingMessage({
355
378
  envelopeId: message.envelope.requestId,
@@ -417,17 +440,22 @@ export const make = Effect.fnUntraced(function*<
417
440
 
418
441
  const interruptShard = (shardId: ShardId) =>
419
442
  Effect.suspend(function loop(): Effect.Effect<void> {
420
- const toInterrupt = new Set<EntityState>()
421
- for (const state of activeServers.values()) {
443
+ const toAwait = Arr.empty<Effect.Effect<void>>()
444
+ activeServers.forEach((state) => {
422
445
  if (shardId[Equal.symbol](state.address.shardId)) {
423
- toInterrupt.add(state)
446
+ toAwait.push(entities.removeIgnore(state.address))
424
447
  }
425
- }
426
- if (toInterrupt.size === 0) {
448
+ })
449
+ serverCloseLatches.forEach((latch, address) => {
450
+ if (shardId[Equal.symbol](address.shardId)) {
451
+ toAwait.push(latch.await)
452
+ }
453
+ })
454
+ if (toAwait.length === 0) {
427
455
  return Effect.void
428
456
  }
429
457
  return Effect.flatMap(
430
- Effect.forEach(toInterrupt, (state) => entities.removeIgnore(state.address), {
458
+ Effect.all(toAwait, {
431
459
  concurrency: "unbounded",
432
460
  discard: true
433
461
  }),
@@ -440,6 +468,9 @@ export const make = Effect.fnUntraced(function*<
440
468
  return identity<EntityManager>({
441
469
  interruptShard,
442
470
  isProcessingFor(message, options) {
471
+ if (options?.excludeReplies !== true && processedRequestIds.has(message.envelope.requestId)) {
472
+ return true
473
+ }
443
474
  const state = activeServers.get(message.envelope.address.entityId)
444
475
  if (!state) return false
445
476
  const request = state.activeRequests.get(message.envelope.requestId)
@@ -450,6 +481,9 @@ export const make = Effect.fnUntraced(function*<
450
481
  }
451
482
  return true
452
483
  },
484
+ clearProcessed() {
485
+ processedRequestIds.clear()
486
+ },
453
487
  sendLocal,
454
488
  send: (message) =>
455
489
  decodeMessage(message).pipe(
@@ -1,6 +0,0 @@
1
- {
2
- "sideEffects": [],
3
- "main": "../dist/cjs/HttpCommon.js",
4
- "module": "../dist/esm/HttpCommon.js",
5
- "types": "../dist/dts/HttpCommon.d.ts"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "sideEffects": [],
3
- "main": "../dist/cjs/HttpShardManager.js",
4
- "module": "../dist/esm/HttpShardManager.js",
5
- "types": "../dist/dts/HttpShardManager.d.ts"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "sideEffects": [],
3
- "main": "../dist/cjs/ShardManager.js",
4
- "module": "../dist/esm/ShardManager.js",
5
- "types": "../dist/dts/ShardManager.d.ts"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "sideEffects": [],
3
- "main": "../dist/cjs/ShardStorage.js",
4
- "module": "../dist/esm/ShardStorage.js",
5
- "types": "../dist/dts/ShardStorage.d.ts"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "sideEffects": [],
3
- "main": "../dist/cjs/SocketShardManager.js",
4
- "module": "../dist/esm/SocketShardManager.js",
5
- "types": "../dist/dts/SocketShardManager.d.ts"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "sideEffects": [],
3
- "main": "../dist/cjs/SqlShardStorage.js",
4
- "module": "../dist/esm/SqlShardStorage.js",
5
- "types": "../dist/dts/SqlShardStorage.d.ts"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "sideEffects": [],
3
- "main": "../dist/cjs/SynchronizedClock.js",
4
- "module": "../dist/esm/SynchronizedClock.js",
5
- "types": "../dist/dts/SynchronizedClock.d.ts"
6
- }
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.layerClientProtocolWebsocket = exports.layerClientProtocolHttp = void 0;
7
- var HttpClient = _interopRequireWildcard(require("@effect/platform/HttpClient"));
8
- var HttpClientRequest = _interopRequireWildcard(require("@effect/platform/HttpClientRequest"));
9
- var Socket = _interopRequireWildcard(require("@effect/platform/Socket"));
10
- var RpcClient = _interopRequireWildcard(require("@effect/rpc/RpcClient"));
11
- var RpcSerialization = _interopRequireWildcard(require("@effect/rpc/RpcSerialization"));
12
- var Effect = _interopRequireWildcard(require("effect/Effect"));
13
- var Layer = _interopRequireWildcard(require("effect/Layer"));
14
- var _Runners = require("./Runners.js");
15
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
- /**
17
- * @since 1.0.0
18
- */
19
-
20
- /**
21
- * @since 1.0.0
22
- * @category Layers
23
- */
24
- const layerClientProtocolHttp = options => Layer.effect(_Runners.RpcClientProtocol, Effect.gen(function* () {
25
- const serialization = yield* RpcSerialization.RpcSerialization;
26
- const client = yield* HttpClient.HttpClient;
27
- const https = options.https ?? false;
28
- return address => {
29
- const clientWithUrl = HttpClient.mapRequest(client, HttpClientRequest.prependUrl(`http${https ? "s" : ""}://${address.host}:${address.port}/${options.path}`));
30
- return RpcClient.makeProtocolHttp(clientWithUrl).pipe(Effect.provideService(RpcSerialization.RpcSerialization, serialization));
31
- };
32
- }));
33
- /**
34
- * @since 1.0.0
35
- * @category Layers
36
- */
37
- exports.layerClientProtocolHttp = layerClientProtocolHttp;
38
- const layerClientProtocolWebsocket = options => Layer.effect(_Runners.RpcClientProtocol, Effect.gen(function* () {
39
- const serialization = yield* RpcSerialization.RpcSerialization;
40
- const https = options.https ?? false;
41
- const constructor = yield* Socket.WebSocketConstructor;
42
- return Effect.fnUntraced(function* (address) {
43
- const socket = yield* Socket.makeWebSocket(`ws${https ? "s" : ""}://${address.host}:${address.port}/${options.path}`).pipe(Effect.provideService(Socket.WebSocketConstructor, constructor));
44
- return yield* RpcClient.makeProtocolSocket().pipe(Effect.provideService(Socket.Socket, socket), Effect.provideService(RpcSerialization.RpcSerialization, serialization));
45
- });
46
- }));
47
- exports.layerClientProtocolWebsocket = layerClientProtocolWebsocket;
48
- //# sourceMappingURL=HttpCommon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HttpCommon.js","names":["HttpClient","_interopRequireWildcard","require","HttpClientRequest","Socket","RpcClient","RpcSerialization","Effect","Layer","_Runners","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","layerClientProtocolHttp","options","effect","RpcClientProtocol","gen","serialization","client","https","address","clientWithUrl","mapRequest","prependUrl","host","port","path","makeProtocolHttp","pipe","provideService","exports","layerClientProtocolWebsocket","constructor","WebSocketConstructor","fnUntraced","socket","makeWebSocket","makeProtocolSocket"],"sources":["../../src/HttpCommon.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,139 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.toHttpAppWebsocket = exports.toHttpApp = exports.layerWebsocketOptions = exports.layerWebsocket = exports.layerRunnerHealthWebsocket = exports.layerRunnerHealthHttp = exports.layerNoServerWebsocket = exports.layerNoServerHttp = exports.layerHttpOptions = exports.layerHttp = void 0;
7
- var HttpRouter = _interopRequireWildcard(require("@effect/platform/HttpRouter"));
8
- var HttpServer = _interopRequireWildcard(require("@effect/platform/HttpServer"));
9
- var RpcServer = _interopRequireWildcard(require("@effect/rpc/RpcServer"));
10
- var Effect = _interopRequireWildcard(require("effect/Effect"));
11
- var _Function = require("effect/Function");
12
- var Layer = _interopRequireWildcard(require("effect/Layer"));
13
- var _HttpCommon = require("./HttpCommon.js");
14
- var MessageStorage = _interopRequireWildcard(require("./MessageStorage.js"));
15
- var RunnerHealth = _interopRequireWildcard(require("./RunnerHealth.js"));
16
- var Runners = _interopRequireWildcard(require("./Runners.js"));
17
- var ShardManager = _interopRequireWildcard(require("./ShardManager.js"));
18
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
19
- /**
20
- * @since 1.0.0
21
- * @category Http App
22
- */
23
- const toHttpApp = exports.toHttpApp = /*#__PURE__*/Effect.gen(function* () {
24
- const handlers = yield* Layer.build(ShardManager.layerServerHandlers);
25
- return yield* RpcServer.toHttpApp(ShardManager.Rpcs).pipe(Effect.provide(handlers));
26
- });
27
- /**
28
- * @since 1.0.0
29
- * @category Http App
30
- */
31
- const toHttpAppWebsocket = exports.toHttpAppWebsocket = /*#__PURE__*/Effect.gen(function* () {
32
- const handlers = yield* Layer.build(ShardManager.layerServerHandlers);
33
- return yield* RpcServer.toHttpAppWebsocket(ShardManager.Rpcs).pipe(Effect.provide(handlers));
34
- });
35
- /**
36
- * A layer for the `ShardManager` service, that does not run a server.
37
- *
38
- * It only provides the `Runners` rpc client.
39
- *
40
- * You can use this with the `toHttpApp` and `toHttpAppWebsocket` apis
41
- * to run a complete `ShardManager` server.
42
- *
43
- * @since 1.0.0
44
- * @category Layers
45
- */
46
- const layerNoServerHttp = options => ShardManager.layer.pipe(Layer.provide(Runners.layerRpc.pipe(Layer.provide([(0, _HttpCommon.layerClientProtocolHttp)({
47
- path: options.runnerPath,
48
- https: options.runnerHttps
49
- }), MessageStorage.layerNoop]))));
50
- /**
51
- * A layer for the `ShardManager` service, that does not run a server.
52
- *
53
- * It only provides the `Runners` rpc client.
54
- *
55
- * You can use this with the `toHttpApp` and `toHttpAppWebsocket` apis
56
- * to run a complete `ShardManager` server.
57
- *
58
- * @since 1.0.0
59
- * @category Layers
60
- */
61
- exports.layerNoServerHttp = layerNoServerHttp;
62
- const layerNoServerWebsocket = options => ShardManager.layer.pipe(Layer.provide(Runners.layerRpc.pipe(Layer.provide([(0, _HttpCommon.layerClientProtocolWebsocket)({
63
- path: options.runnerPath,
64
- https: options.runnerHttps
65
- }), MessageStorage.layerNoop]))));
66
- /**
67
- * A HTTP layer for the `ShardManager` server, that adds a route to the provided
68
- * `HttpRouter.Tag`.
69
- *
70
- * By default, it uses the `HttpRouter.Default` tag.
71
- *
72
- * @since 1.0.0
73
- * @category Layers
74
- */
75
- exports.layerNoServerWebsocket = layerNoServerWebsocket;
76
- const layerHttpOptions = options => {
77
- const routerTag = options.routerTag ?? HttpRouter.Default;
78
- return routerTag.serve().pipe(options.logAddress ? withLogAddress : _Function.identity, Layer.merge(ShardManager.layerServer), Layer.provide(RpcServer.layerProtocolHttp(options)), Layer.provideMerge(layerNoServerHttp(options)));
79
- };
80
- /**
81
- * A WebSocket layer for the `ShardManager` server, that adds a route to the provided
82
- * `HttpRouter.Tag`.
83
- *
84
- * By default, it uses the `HttpRouter.Default` tag.
85
- *
86
- * @since 1.0.0
87
- * @category Layers
88
- */
89
- exports.layerHttpOptions = layerHttpOptions;
90
- const layerWebsocketOptions = options => {
91
- const routerTag = options.routerTag ?? HttpRouter.Default;
92
- return routerTag.serve().pipe(options.logAddress ? withLogAddress : _Function.identity, Layer.merge(ShardManager.layerServer), Layer.provide(RpcServer.layerProtocolWebsocket(options)), Layer.provideMerge(layerNoServerWebsocket(options)));
93
- };
94
- exports.layerWebsocketOptions = layerWebsocketOptions;
95
- const withLogAddress = layer => Layer.effectDiscard(HttpServer.addressFormattedWith(address => Effect.annotateLogs(Effect.logInfo(`Listening on: ${address}`), {
96
- package: "@effect/cluster",
97
- service: "ShardManager"
98
- }))).pipe(Layer.provideMerge(layer));
99
- /**
100
- * A HTTP layer for the `ShardManager` server, that adds a route to the provided
101
- * `HttpRouter.Tag`.
102
- *
103
- * By default, it uses the `HttpRouter.Default` tag.
104
- *
105
- * @since 1.0.0
106
- * @category Layers
107
- */
108
- const layerHttp = exports.layerHttp = /*#__PURE__*/layerHttpOptions({
109
- path: "/",
110
- runnerPath: "/"
111
- });
112
- /**
113
- * A Websocket layer for the `ShardManager` server, that adds a route to the provided
114
- * `HttpRouter.Tag`.
115
- *
116
- * By default, it uses the `HttpRouter.Default` tag.
117
- *
118
- * @since 1.0.0
119
- * @category Layers
120
- */
121
- const layerWebsocket = exports.layerWebsocket = /*#__PURE__*/layerWebsocketOptions({
122
- path: "/",
123
- runnerPath: "/"
124
- });
125
- /**
126
- * @since 1.0.0
127
- * @category Layers
128
- */
129
- const layerRunnerHealthHttp = exports.layerRunnerHealthHttp = /*#__PURE__*/Layer.provide(RunnerHealth.layerRpc, /*#__PURE__*/(0, _HttpCommon.layerClientProtocolHttp)({
130
- path: "/"
131
- }));
132
- /**
133
- * @since 1.0.0
134
- * @category Layers
135
- */
136
- const layerRunnerHealthWebsocket = exports.layerRunnerHealthWebsocket = /*#__PURE__*/Layer.provide(RunnerHealth.layerRpc, /*#__PURE__*/(0, _HttpCommon.layerClientProtocolWebsocket)({
137
- path: "/"
138
- }));
139
- //# sourceMappingURL=HttpShardManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HttpShardManager.js","names":["HttpRouter","_interopRequireWildcard","require","HttpServer","RpcServer","Effect","_Function","Layer","_HttpCommon","MessageStorage","RunnerHealth","Runners","ShardManager","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","toHttpApp","exports","gen","handlers","build","layerServerHandlers","Rpcs","pipe","provide","toHttpAppWebsocket","layerNoServerHttp","options","layer","layerRpc","layerClientProtocolHttp","path","runnerPath","https","runnerHttps","layerNoop","layerNoServerWebsocket","layerClientProtocolWebsocket","layerHttpOptions","routerTag","Default","serve","logAddress","withLogAddress","identity","merge","layerServer","layerProtocolHttp","provideMerge","layerWebsocketOptions","layerProtocolWebsocket","effectDiscard","addressFormattedWith","address","annotateLogs","logInfo","package","service","layerHttp","layerWebsocket","layerRunnerHealthHttp","layerRunnerHealthWebsocket"],"sources":["../../src/HttpShardManager.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,uBAAA,CAAAC,OAAA;AAGA,IAAAE,SAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAN,uBAAA,CAAAC,OAAA;AAEA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAR,uBAAA,CAAAC,OAAA;AACA,IAAAQ,YAAA,GAAAT,uBAAA,CAAAC,OAAA;AACA,IAAAS,OAAA,GAAAV,uBAAA,CAAAC,OAAA;AAEA,IAAAU,YAAA,GAAAX,uBAAA,CAAAC,OAAA;AAAiD,SAAAD,wBAAAY,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAd,uBAAA,YAAAA,CAAAY,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAGjD;;;;AAIO,MAAMkB,SAAS,GAAAC,OAAA,CAAAD,SAAA,gBAIlB3B,MAAM,CAAC6B,GAAG,CAAC,aAAS;EACtB,MAAMC,QAAQ,GAAG,OAAO5B,KAAK,CAAC6B,KAAK,CAACxB,YAAY,CAACyB,mBAAmB,CAAC;EACrE,OAAO,OAAOjC,SAAS,CAAC4B,SAAS,CAACpB,YAAY,CAAC0B,IAAI,CAAC,CAACC,IAAI,CACvDlC,MAAM,CAACmC,OAAO,CAACL,QAAQ,CAAC,CACzB;AACH,CAAC,CAAC;AAEF;;;;AAIO,MAAMM,kBAAkB,GAAAR,OAAA,CAAAQ,kBAAA,gBAI3BpC,MAAM,CAAC6B,GAAG,CAAC,aAAS;EACtB,MAAMC,QAAQ,GAAG,OAAO5B,KAAK,CAAC6B,KAAK,CAACxB,YAAY,CAACyB,mBAAmB,CAAC;EACrE,OAAO,OAAOjC,SAAS,CAACqC,kBAAkB,CAAC7B,YAAY,CAAC0B,IAAI,CAAC,CAACC,IAAI,CAChElC,MAAM,CAACmC,OAAO,CAACL,QAAQ,CAAC,CACzB;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;AAWO,MAAMO,iBAAiB,GAC5BC,OAGC,IAWD/B,YAAY,CAACgC,KAAK,CAACL,IAAI,CACrBhC,KAAK,CAACiC,OAAO,CAAC7B,OAAO,CAACkC,QAAQ,CAACN,IAAI,CACjChC,KAAK,CAACiC,OAAO,CAAC,CACZ,IAAAM,mCAAuB,EAAC;EACtBC,IAAI,EAAEJ,OAAO,CAACK,UAAU;EACxBC,KAAK,EAAEN,OAAO,CAACO;CAChB,CAAC,EACFzC,cAAc,CAAC0C,SAAS,CACzB,CAAC,CACH,CAAC,CACH;AAEH;;;;;;;;;;;AAAAlB,OAAA,CAAAS,iBAAA,GAAAA,iBAAA;AAWO,MAAMU,sBAAsB,GACjCT,OAGC,IAWD/B,YAAY,CAACgC,KAAK,CAACL,IAAI,CACrBhC,KAAK,CAACiC,OAAO,CAAC7B,OAAO,CAACkC,QAAQ,CAACN,IAAI,CACjChC,KAAK,CAACiC,OAAO,CAAC,CACZ,IAAAa,wCAA4B,EAAC;EAC3BN,IAAI,EAAEJ,OAAO,CAACK,UAAU;EACxBC,KAAK,EAAEN,OAAO,CAACO;CAChB,CAAC,EACFzC,cAAc,CAAC0C,SAAS,CACzB,CAAC,CACH,CAAC,CACH;AAEH;;;;;;;;;AAAAlB,OAAA,CAAAmB,sBAAA,GAAAA,sBAAA;AASO,MAAME,gBAAgB,GAC3BX,OAMC,IAWC;EACF,MAAMY,SAAS,GAAGZ,OAAO,CAACY,SAAS,IAAIvD,UAAU,CAACwD,OAAO;EACzD,OAAOD,SAAS,CAACE,KAAK,EAAE,CAAClB,IAAI,CAC3BI,OAAO,CAACe,UAAU,GAAGC,cAAc,GAAGC,kBAAQ,EAC9CrD,KAAK,CAACsD,KAAK,CAACjD,YAAY,CAACkD,WAAW,CAAC,EACrCvD,KAAK,CAACiC,OAAO,CAACpC,SAAS,CAAC2D,iBAAiB,CAACpB,OAAO,CAAC,CAAC,EACnDpC,KAAK,CAACyD,YAAY,CAACtB,iBAAiB,CAACC,OAAO,CAAC,CAAC,CAC/C;AACH,CAAC;AAED;;;;;;;;;AAAAV,OAAA,CAAAqB,gBAAA,GAAAA,gBAAA;AASO,MAAMW,qBAAqB,GAChCtB,OAMC,IAWC;EACF,MAAMY,SAAS,GAAGZ,OAAO,CAACY,SAAS,IAAIvD,UAAU,CAACwD,OAAO;EACzD,OAAOD,SAAS,CAACE,KAAK,EAAE,CAAClB,IAAI,CAC3BI,OAAO,CAACe,UAAU,GAAGC,cAAc,GAAGC,kBAAQ,EAC9CrD,KAAK,CAACsD,KAAK,CAACjD,YAAY,CAACkD,WAAW,CAAC,EACrCvD,KAAK,CAACiC,OAAO,CAACpC,SAAS,CAAC8D,sBAAsB,CAACvB,OAAO,CAAC,CAAC,EACxDpC,KAAK,CAACyD,YAAY,CAACZ,sBAAsB,CAACT,OAAO,CAAC,CAAC,CACpD;AACH,CAAC;AAAAV,OAAA,CAAAgC,qBAAA,GAAAA,qBAAA;AAED,MAAMN,cAAc,GAAaf,KAA2B,IAC1DrC,KAAK,CAAC4D,aAAa,CACjBhE,UAAU,CAACiE,oBAAoB,CAAEC,OAAO,IACtChE,MAAM,CAACiE,YAAY,CAACjE,MAAM,CAACkE,OAAO,CAAC,iBAAiBF,OAAO,EAAE,CAAC,EAAE;EAC9DG,OAAO,EAAE,iBAAiB;EAC1BC,OAAO,EAAE;CACV,CAAC,CACH,CACF,CAAClC,IAAI,CAAChC,KAAK,CAACyD,YAAY,CAACpB,KAAK,CAAC,CAAC;AAEnC;;;;;;;;;AASO,MAAM8B,SAAS,GAAAzC,OAAA,CAAAyC,SAAA,gBAUlBpB,gBAAgB,CAAC;EAAEP,IAAI,EAAE,GAAG;EAAEC,UAAU,EAAE;AAAG,CAAE,CAAC;AAEpD;;;;;;;;;AASO,MAAM2B,cAAc,GAAA1C,OAAA,CAAA0C,cAAA,gBAUvBV,qBAAqB,CAAC;EAAElB,IAAI,EAAE,GAAG;EAAEC,UAAU,EAAE;AAAG,CAAE,CAAC;AAEzD;;;;AAIO,MAAM4B,qBAAqB,GAAA3C,OAAA,CAAA2C,qBAAA,gBAI9BrE,KAAK,CAACiC,OAAO,CAAC9B,YAAY,CAACmC,QAAQ,eAAE,IAAAC,mCAAuB,EAAC;EAAEC,IAAI,EAAE;AAAG,CAAE,CAAC,CAAC;AAEhF;;;;AAIO,MAAM8B,0BAA0B,GAAA5C,OAAA,CAAA4C,0BAAA,gBAInCtE,KAAK,CAACiC,OAAO,CAAC9B,YAAY,CAACmC,QAAQ,eAAE,IAAAQ,wCAA4B,EAAC;EAAEN,IAAI,EAAE;AAAG,CAAE,CAAC,CAAC","ignoreList":[]}