@effect/cluster 0.50.6 → 0.52.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 (232) 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/ClusterSchema.js +17 -2
  8. package/dist/cjs/ClusterSchema.js.map +1 -1
  9. package/dist/cjs/ClusterWorkflowEngine.js +50 -83
  10. package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
  11. package/dist/cjs/Entity.js +1 -13
  12. package/dist/cjs/Entity.js.map +1 -1
  13. package/dist/cjs/EntityAddress.js +9 -1
  14. package/dist/cjs/EntityAddress.js.map +1 -1
  15. package/dist/cjs/EntityId.js +7 -1
  16. package/dist/cjs/EntityId.js.map +1 -1
  17. package/dist/cjs/EntityProxy.js +1 -1
  18. package/dist/cjs/EntityProxy.js.map +1 -1
  19. package/dist/cjs/HttpRunner.js +69 -43
  20. package/dist/cjs/HttpRunner.js.map +1 -1
  21. package/dist/cjs/MessageStorage.js +64 -16
  22. package/dist/cjs/MessageStorage.js.map +1 -1
  23. package/dist/cjs/Runner.js +3 -3
  24. package/dist/cjs/Runner.js.map +1 -1
  25. package/dist/cjs/RunnerAddress.js +7 -0
  26. package/dist/cjs/RunnerAddress.js.map +1 -1
  27. package/dist/cjs/RunnerHealth.js +91 -32
  28. package/dist/cjs/RunnerHealth.js.map +1 -1
  29. package/dist/cjs/RunnerServer.js +38 -24
  30. package/dist/cjs/RunnerServer.js.map +1 -1
  31. package/dist/cjs/RunnerStorage.js +100 -0
  32. package/dist/cjs/RunnerStorage.js.map +1 -0
  33. package/dist/cjs/Runners.js +18 -22
  34. package/dist/cjs/Runners.js.map +1 -1
  35. package/dist/cjs/ShardId.js +17 -7
  36. package/dist/cjs/ShardId.js.map +1 -1
  37. package/dist/cjs/Sharding.js +444 -320
  38. package/dist/cjs/Sharding.js.map +1 -1
  39. package/dist/cjs/ShardingConfig.js +10 -14
  40. package/dist/cjs/ShardingConfig.js.map +1 -1
  41. package/dist/cjs/Snowflake.js +1 -1
  42. package/dist/cjs/SocketRunner.js +1 -1
  43. package/dist/cjs/SocketRunner.js.map +1 -1
  44. package/dist/cjs/SqlMessageStorage.js +22 -28
  45. package/dist/cjs/SqlMessageStorage.js.map +1 -1
  46. package/dist/cjs/SqlRunnerStorage.js +375 -0
  47. package/dist/cjs/SqlRunnerStorage.js.map +1 -0
  48. package/dist/cjs/index.js +5 -15
  49. package/dist/cjs/internal/entityManager.js +42 -23
  50. package/dist/cjs/internal/entityManager.js.map +1 -1
  51. package/dist/dts/ClusterError.d.ts +0 -22
  52. package/dist/dts/ClusterError.d.ts.map +1 -1
  53. package/dist/dts/ClusterMetrics.d.ts +4 -14
  54. package/dist/dts/ClusterMetrics.d.ts.map +1 -1
  55. package/dist/dts/ClusterSchema.d.ts +9 -1
  56. package/dist/dts/ClusterSchema.d.ts.map +1 -1
  57. package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
  58. package/dist/dts/Entity.d.ts +3 -14
  59. package/dist/dts/Entity.d.ts.map +1 -1
  60. package/dist/dts/EntityAddress.d.ts +11 -0
  61. package/dist/dts/EntityAddress.d.ts.map +1 -1
  62. package/dist/dts/EntityId.d.ts +5 -0
  63. package/dist/dts/EntityId.d.ts.map +1 -1
  64. package/dist/dts/EntityProxy.d.ts +5 -6
  65. package/dist/dts/EntityProxy.d.ts.map +1 -1
  66. package/dist/dts/HttpRunner.d.ts +48 -25
  67. package/dist/dts/HttpRunner.d.ts.map +1 -1
  68. package/dist/dts/MessageStorage.d.ts +13 -5
  69. package/dist/dts/MessageStorage.d.ts.map +1 -1
  70. package/dist/dts/Runner.d.ts +4 -4
  71. package/dist/dts/Runner.d.ts.map +1 -1
  72. package/dist/dts/RunnerAddress.d.ts +5 -0
  73. package/dist/dts/RunnerAddress.d.ts.map +1 -1
  74. package/dist/dts/RunnerHealth.d.ts +24 -16
  75. package/dist/dts/RunnerHealth.d.ts.map +1 -1
  76. package/dist/dts/RunnerServer.d.ts +5 -4
  77. package/dist/dts/RunnerServer.d.ts.map +1 -1
  78. package/dist/dts/{ShardStorage.d.ts → RunnerStorage.d.ts} +41 -54
  79. package/dist/dts/RunnerStorage.d.ts.map +1 -0
  80. package/dist/dts/Runners.d.ts +15 -11
  81. package/dist/dts/Runners.d.ts.map +1 -1
  82. package/dist/dts/ShardId.d.ts +1 -1
  83. package/dist/dts/ShardId.d.ts.map +1 -1
  84. package/dist/dts/Sharding.d.ts +20 -10
  85. package/dist/dts/Sharding.d.ts.map +1 -1
  86. package/dist/dts/ShardingConfig.d.ts +40 -14
  87. package/dist/dts/ShardingConfig.d.ts.map +1 -1
  88. package/dist/dts/SocketRunner.d.ts +4 -3
  89. package/dist/dts/SocketRunner.d.ts.map +1 -1
  90. package/dist/dts/SqlMessageStorage.d.ts +2 -3
  91. package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
  92. package/dist/dts/SqlRunnerStorage.d.ts +40 -0
  93. package/dist/dts/SqlRunnerStorage.d.ts.map +1 -0
  94. package/dist/dts/index.d.ts +4 -24
  95. package/dist/dts/index.d.ts.map +1 -1
  96. package/dist/esm/ClusterError.js +0 -21
  97. package/dist/esm/ClusterError.js.map +1 -1
  98. package/dist/esm/ClusterMetrics.js +12 -14
  99. package/dist/esm/ClusterMetrics.js.map +1 -1
  100. package/dist/esm/ClusterSchema.js +17 -2
  101. package/dist/esm/ClusterSchema.js.map +1 -1
  102. package/dist/esm/ClusterWorkflowEngine.js +50 -83
  103. package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
  104. package/dist/esm/Entity.js +0 -12
  105. package/dist/esm/Entity.js.map +1 -1
  106. package/dist/esm/EntityAddress.js +7 -0
  107. package/dist/esm/EntityAddress.js.map +1 -1
  108. package/dist/esm/EntityId.js +5 -0
  109. package/dist/esm/EntityId.js.map +1 -1
  110. package/dist/esm/EntityProxy.js +2 -2
  111. package/dist/esm/EntityProxy.js.map +1 -1
  112. package/dist/esm/HttpRunner.js +62 -39
  113. package/dist/esm/HttpRunner.js.map +1 -1
  114. package/dist/esm/MessageStorage.js +65 -17
  115. package/dist/esm/MessageStorage.js.map +1 -1
  116. package/dist/esm/Runner.js +3 -3
  117. package/dist/esm/Runner.js.map +1 -1
  118. package/dist/esm/RunnerAddress.js +7 -0
  119. package/dist/esm/RunnerAddress.js.map +1 -1
  120. package/dist/esm/RunnerHealth.js +88 -30
  121. package/dist/esm/RunnerHealth.js.map +1 -1
  122. package/dist/esm/RunnerServer.js +38 -24
  123. package/dist/esm/RunnerServer.js.map +1 -1
  124. package/dist/esm/RunnerStorage.js +90 -0
  125. package/dist/esm/RunnerStorage.js.map +1 -0
  126. package/dist/esm/Runners.js +19 -23
  127. package/dist/esm/Runners.js.map +1 -1
  128. package/dist/esm/ShardId.js +16 -6
  129. package/dist/esm/ShardId.js.map +1 -1
  130. package/dist/esm/Sharding.js +447 -323
  131. package/dist/esm/Sharding.js.map +1 -1
  132. package/dist/esm/ShardingConfig.js +10 -14
  133. package/dist/esm/ShardingConfig.js.map +1 -1
  134. package/dist/esm/Snowflake.js +1 -1
  135. package/dist/esm/SocketRunner.js +1 -1
  136. package/dist/esm/SocketRunner.js.map +1 -1
  137. package/dist/esm/SqlMessageStorage.js +22 -28
  138. package/dist/esm/SqlMessageStorage.js.map +1 -1
  139. package/dist/esm/SqlRunnerStorage.js +366 -0
  140. package/dist/esm/SqlRunnerStorage.js.map +1 -0
  141. package/dist/esm/index.js +4 -24
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/internal/entityManager.js +41 -22
  144. package/dist/esm/internal/entityManager.js.map +1 -1
  145. package/package.json +20 -60
  146. package/src/ClusterError.ts +0 -24
  147. package/src/ClusterMetrics.ts +12 -16
  148. package/src/ClusterSchema.ts +17 -2
  149. package/src/ClusterWorkflowEngine.ts +48 -80
  150. package/src/Entity.ts +3 -21
  151. package/src/EntityAddress.ts +10 -0
  152. package/src/EntityId.ts +6 -0
  153. package/src/EntityProxy.ts +10 -10
  154. package/src/HttpRunner.ts +132 -67
  155. package/src/MessageStorage.ts +89 -24
  156. package/src/Runner.ts +4 -4
  157. package/src/RunnerAddress.ts +8 -0
  158. package/src/RunnerHealth.ts +119 -56
  159. package/src/RunnerServer.ts +64 -47
  160. package/src/RunnerStorage.ts +218 -0
  161. package/src/Runners.ts +32 -45
  162. package/src/ShardId.ts +14 -3
  163. package/src/Sharding.ts +561 -417
  164. package/src/ShardingConfig.ts +39 -31
  165. package/src/Snowflake.ts +1 -1
  166. package/src/SocketRunner.ts +6 -4
  167. package/src/SqlMessageStorage.ts +28 -30
  168. package/src/SqlRunnerStorage.ts +537 -0
  169. package/src/index.ts +4 -29
  170. package/src/internal/entityManager.ts +45 -29
  171. package/HttpCommon/package.json +0 -6
  172. package/HttpShardManager/package.json +0 -6
  173. package/ShardManager/package.json +0 -6
  174. package/ShardStorage/package.json +0 -6
  175. package/SocketShardManager/package.json +0 -6
  176. package/SqlShardStorage/package.json +0 -6
  177. package/SynchronizedClock/package.json +0 -6
  178. package/dist/cjs/HttpCommon.js +0 -48
  179. package/dist/cjs/HttpCommon.js.map +0 -1
  180. package/dist/cjs/HttpShardManager.js +0 -139
  181. package/dist/cjs/HttpShardManager.js.map +0 -1
  182. package/dist/cjs/ShardManager.js +0 -549
  183. package/dist/cjs/ShardManager.js.map +0 -1
  184. package/dist/cjs/ShardStorage.js +0 -151
  185. package/dist/cjs/ShardStorage.js.map +0 -1
  186. package/dist/cjs/SocketShardManager.js +0 -32
  187. package/dist/cjs/SocketShardManager.js.map +0 -1
  188. package/dist/cjs/SqlShardStorage.js +0 -253
  189. package/dist/cjs/SqlShardStorage.js.map +0 -1
  190. package/dist/cjs/SynchronizedClock.js +0 -65
  191. package/dist/cjs/SynchronizedClock.js.map +0 -1
  192. package/dist/cjs/internal/shardManager.js +0 -353
  193. package/dist/cjs/internal/shardManager.js.map +0 -1
  194. package/dist/dts/HttpCommon.d.ts +0 -25
  195. package/dist/dts/HttpCommon.d.ts.map +0 -1
  196. package/dist/dts/HttpShardManager.d.ts +0 -119
  197. package/dist/dts/HttpShardManager.d.ts.map +0 -1
  198. package/dist/dts/ShardManager.d.ts +0 -459
  199. package/dist/dts/ShardManager.d.ts.map +0 -1
  200. package/dist/dts/ShardStorage.d.ts.map +0 -1
  201. package/dist/dts/SocketShardManager.d.ts +0 -17
  202. package/dist/dts/SocketShardManager.d.ts.map +0 -1
  203. package/dist/dts/SqlShardStorage.d.ts +0 -38
  204. package/dist/dts/SqlShardStorage.d.ts.map +0 -1
  205. package/dist/dts/SynchronizedClock.d.ts +0 -19
  206. package/dist/dts/SynchronizedClock.d.ts.map +0 -1
  207. package/dist/dts/internal/shardManager.d.ts +0 -2
  208. package/dist/dts/internal/shardManager.d.ts.map +0 -1
  209. package/dist/esm/HttpCommon.js +0 -38
  210. package/dist/esm/HttpCommon.js.map +0 -1
  211. package/dist/esm/HttpShardManager.js +0 -128
  212. package/dist/esm/HttpShardManager.js.map +0 -1
  213. package/dist/esm/ShardManager.js +0 -535
  214. package/dist/esm/ShardManager.js.map +0 -1
  215. package/dist/esm/ShardStorage.js +0 -141
  216. package/dist/esm/ShardStorage.js.map +0 -1
  217. package/dist/esm/SocketShardManager.js +0 -24
  218. package/dist/esm/SocketShardManager.js.map +0 -1
  219. package/dist/esm/SqlShardStorage.js +0 -244
  220. package/dist/esm/SqlShardStorage.js.map +0 -1
  221. package/dist/esm/SynchronizedClock.js +0 -57
  222. package/dist/esm/SynchronizedClock.js.map +0 -1
  223. package/dist/esm/internal/shardManager.js +0 -342
  224. package/dist/esm/internal/shardManager.js.map +0 -1
  225. package/src/HttpCommon.ts +0 -73
  226. package/src/HttpShardManager.ts +0 -273
  227. package/src/ShardManager.ts +0 -823
  228. package/src/ShardStorage.ts +0 -297
  229. package/src/SocketShardManager.ts +0 -48
  230. package/src/SqlShardStorage.ts +0 -329
  231. package/src/SynchronizedClock.ts +0 -82
  232. package/src/internal/shardManager.ts +0 -412
@@ -9,12 +9,9 @@ import type { DurationInput } from "effect/Duration"
9
9
  import * as Effect from "effect/Effect"
10
10
  import * as Equal from "effect/Equal"
11
11
  import * as Exit from "effect/Exit"
12
- import * as FiberId from "effect/FiberId"
13
12
  import * as FiberRef from "effect/FiberRef"
14
13
  import { identity } from "effect/Function"
15
- import * as Function from "effect/Function"
16
14
  import * as HashMap from "effect/HashMap"
17
- import * as HashSet from "effect/HashSet"
18
15
  import * as Metric from "effect/Metric"
19
16
  import * as Option from "effect/Option"
20
17
  import * as Schedule from "effect/Schedule"
@@ -54,6 +51,7 @@ export interface EntityManager {
54
51
  readonly isProcessingFor: (message: Message.Incoming<any>, options?: {
55
52
  readonly excludeReplies?: boolean
56
53
  }) => boolean
54
+ readonly clearProcessed: () => void
57
55
 
58
56
  readonly interruptShard: (shardId: ShardId) => Effect.Effect<void>
59
57
 
@@ -108,13 +106,15 @@ export const make = Effect.fnUntraced(function*<
108
106
  )
109
107
 
110
108
  const activeServers = new Map<EntityId, EntityState>()
109
+ const serverCloseLatches = new Map<EntityAddress, Effect.Latch>()
110
+ const processedRequestIds = new Set<Snowflake.Snowflake>()
111
111
 
112
112
  const entities: ResourceMap<
113
113
  EntityAddress,
114
114
  EntityState,
115
115
  EntityNotAssignedToRunner
116
116
  > = yield* ResourceMap.make(Effect.fnUntraced(function*(address: EntityAddress) {
117
- if (yield* options.sharding.isShutdown) {
117
+ if (!options.sharding.hasShardId(address.shardId)) {
118
118
  return yield* new EntityNotAssignedToRunner({ address })
119
119
  }
120
120
 
@@ -122,9 +122,13 @@ export const make = Effect.fnUntraced(function*<
122
122
  const endLatch = yield* Effect.makeLatch()
123
123
 
124
124
  // on shutdown, reset the storage for the entity
125
- yield* Scope.addFinalizer(
125
+ yield* Scope.addFinalizerExit(
126
126
  scope,
127
- Effect.ignore(options.storage.resetAddress(address))
127
+ () => {
128
+ serverCloseLatches.get(address)?.unsafeOpen()
129
+ serverCloseLatches.delete(address)
130
+ return Effect.ignore(options.storage.resetAddress(address))
131
+ }
128
132
  )
129
133
 
130
134
  const activeRequests: EntityState["activeRequests"] = new Map()
@@ -173,9 +177,22 @@ export const make = Effect.fnUntraced(function*<
173
177
  Context.get(request.rpc.annotations, Persisted) &&
174
178
  Exit.isFailure(response.exit) &&
175
179
  Exit.isInterrupted(response.exit) &&
176
- (isShuttingDown || Context.get(request.rpc.annotations, Uninterruptible) ||
177
- isInterruptIgnore(response.exit.cause))
180
+ (isShuttingDown || Uninterruptible.forServer(request.rpc.annotations))
178
181
  ) {
182
+ if (!isShuttingDown) {
183
+ return server.write(0, {
184
+ ...request.message.envelope,
185
+ id: RequestId(request.message.envelope.requestId),
186
+ tag: request.message.envelope.tag as any,
187
+ payload: new Request({
188
+ ...request.message.envelope,
189
+ lastSentChunk: request.lastSentChunk
190
+ } as any) as any
191
+ }).pipe(
192
+ Effect.forkIn(scope)
193
+ )
194
+ }
195
+ activeRequests.delete(response.requestId)
179
196
  return options.storage.unregisterReplyHandler(request.message.envelope.requestId)
180
197
  }
181
198
  return retryRespond(
@@ -191,6 +208,7 @@ export const make = Effect.fnUntraced(function*<
191
208
  )
192
209
  ).pipe(
193
210
  Effect.flatMap(() => {
211
+ processedRequestIds.add(request.message.envelope.requestId)
194
212
  activeRequests.delete(response.requestId)
195
213
 
196
214
  // ensure that the reaper does not remove the entity as we haven't
@@ -304,6 +322,7 @@ export const make = Effect.fnUntraced(function*<
304
322
  scope,
305
323
  Effect.withFiberRuntime((fiber) => {
306
324
  activeServers.delete(address.entityId)
325
+ serverCloseLatches.set(address, Effect.unsafeMakeLatch(false))
307
326
  internalInterruptors.add(fiber.id())
308
327
  return state.write(0, { _tag: "Eof" }).pipe(
309
328
  Effect.andThen(Effect.interruptible(endLatch.await)),
@@ -349,7 +368,7 @@ export const make = Effect.fnUntraced(function*<
349
368
  // one sender for the same request. In this case, the other senders
350
369
  // should resume from storage only.
351
370
  let entry = server.activeRequests.get(message.envelope.requestId)
352
- if (entry) {
371
+ if (entry || processedRequestIds.has(message.envelope.requestId)) {
353
372
  return Effect.fail(
354
373
  new AlreadyProcessingMessage({
355
374
  envelopeId: message.envelope.requestId,
@@ -417,17 +436,22 @@ export const make = Effect.fnUntraced(function*<
417
436
 
418
437
  const interruptShard = (shardId: ShardId) =>
419
438
  Effect.suspend(function loop(): Effect.Effect<void> {
420
- const toInterrupt = new Set<EntityState>()
421
- for (const state of activeServers.values()) {
439
+ const toAwait = Arr.empty<Effect.Effect<void>>()
440
+ activeServers.forEach((state) => {
422
441
  if (shardId[Equal.symbol](state.address.shardId)) {
423
- toInterrupt.add(state)
442
+ toAwait.push(entities.removeIgnore(state.address))
424
443
  }
425
- }
426
- if (toInterrupt.size === 0) {
444
+ })
445
+ serverCloseLatches.forEach((latch, address) => {
446
+ if (shardId[Equal.symbol](address.shardId)) {
447
+ toAwait.push(latch.await)
448
+ }
449
+ })
450
+ if (toAwait.length === 0) {
427
451
  return Effect.void
428
452
  }
429
453
  return Effect.flatMap(
430
- Effect.forEach(toInterrupt, (state) => entities.removeIgnore(state.address), {
454
+ Effect.all(toAwait, {
431
455
  concurrency: "unbounded",
432
456
  discard: true
433
457
  }),
@@ -440,6 +464,9 @@ export const make = Effect.fnUntraced(function*<
440
464
  return identity<EntityManager>({
441
465
  interruptShard,
442
466
  isProcessingFor(message, options) {
467
+ if (options?.excludeReplies !== true && processedRequestIds.has(message.envelope.requestId)) {
468
+ return true
469
+ }
443
470
  const state = activeServers.get(message.envelope.address.entityId)
444
471
  if (!state) return false
445
472
  const request = state.activeRequests.get(message.envelope.requestId)
@@ -450,6 +477,9 @@ export const make = Effect.fnUntraced(function*<
450
477
  }
451
478
  return true
452
479
  },
480
+ clearProcessed() {
481
+ processedRequestIds.clear()
482
+ },
453
483
  sendLocal,
454
484
  send: (message) =>
455
485
  decodeMessage(message).pipe(
@@ -553,17 +583,3 @@ const retryRespond = <A, E, R>(times: number, effect: Effect.Effect<A, E, R>): E
553
583
  times === 0 ?
554
584
  effect :
555
585
  Effect.catchAll(effect, () => Effect.delay(retryRespond(times - 1, effect), 200))
556
-
557
- const IsInterruptedIgnoreReducer: Cause.CauseReducer<unknown, unknown, boolean> = {
558
- emptyCase: Function.constFalse,
559
- failCase: Function.constFalse,
560
- dieCase: Function.constFalse,
561
- interruptCase: (_, fiberId) => HashSet.has(FiberId.ids(fiberId), -1),
562
- sequentialCase: (_, left, right) => left || right,
563
- parallelCase: (_, left, right) => left || right
564
- }
565
-
566
- const isInterruptIgnore: (self: Cause.Cause<unknown>) => boolean = Cause.reduceWithContext(
567
- undefined,
568
- IsInterruptedIgnoreReducer
569
- )
@@ -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":"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","ignoreList":[]}