@effect/cluster 0.52.10 → 0.53.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.
@@ -12,6 +12,7 @@ import { identity } from "effect/Function";
12
12
  import * as HashMap from "effect/HashMap";
13
13
  import * as Metric from "effect/Metric";
14
14
  import * as Option from "effect/Option";
15
+ import * as ParseResult from "effect/ParseResult";
15
16
  import * as Runtime from "effect/Runtime";
16
17
  import * as Schedule from "effect/Schedule";
17
18
  import * as Schema from "effect/Schema";
@@ -19,8 +20,7 @@ import * as Scope from "effect/Scope";
19
20
  import { AlreadyProcessingMessage, EntityNotAssignedToRunner, MailboxFull, MalformedMessage } from "../ClusterError.js";
20
21
  import * as ClusterMetrics from "../ClusterMetrics.js";
21
22
  import { Persisted, Uninterruptible } from "../ClusterSchema.js";
22
- import { CurrentAddress, CurrentRunnerAddress, Request } from "../Entity.js";
23
- import * as Envelope from "../Envelope.js";
23
+ import { CurrentAddress, CurrentRunnerAddress, KeepAliveLatch, KeepAliveRpc, Request } from "../Entity.js";
24
24
  import * as Message from "../Message.js";
25
25
  import * as MessageStorage from "../MessageStorage.js";
26
26
  import * as Reply from "../Reply.js";
@@ -41,6 +41,9 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
41
41
  const clock = yield* Effect.clock;
42
42
  const context = yield* Effect.context();
43
43
  const retryDriver = yield* Schedule.driver(options.defectRetryPolicy ? Schedule.andThen(options.defectRetryPolicy, defaultRetryPolicy) : defaultRetryPolicy);
44
+ const entityRpcs = new Map(entity.protocol.requests);
45
+ // add internal rpcs
46
+ entityRpcs.set(KeepAliveRpc._tag, KeepAliveRpc);
44
47
  const activeServers = new Map();
45
48
  const serverCloseLatches = new Map();
46
49
  const processedRequestIds = new Set();
@@ -51,7 +54,8 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
51
54
  });
52
55
  }
53
56
  const scope = yield* Effect.scope;
54
- const endLatch = yield* Effect.makeLatch();
57
+ const endLatch = Effect.unsafeMakeLatch();
58
+ const keepAliveLatch = Effect.unsafeMakeLatch();
55
59
  // on shutdown, reset the storage for the entity
56
60
  yield* Scope.addFinalizerExit(scope, () => {
57
61
  serverCloseLatches.get(address)?.unsafeOpen();
@@ -65,7 +69,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
65
69
  const writeRef = yield* ResourceRef.from(scope, Effect.fnUntraced(function* (scope) {
66
70
  let isShuttingDown = false;
67
71
  // Initiate the behavior for the entity
68
- const handlers = yield* entity.protocol.toHandlersContext(buildHandlers).pipe(Effect.provide(context.pipe(Context.add(CurrentAddress, address), Context.add(CurrentRunnerAddress, options.runnerAddress), Context.add(Scope.Scope, scope))), Effect.locally(FiberRef.currentLogAnnotations, HashMap.empty()));
72
+ const handlers = yield* entity.protocol.toHandlersContext(buildHandlers).pipe(Effect.provide(context.pipe(Context.add(CurrentAddress, address), Context.add(CurrentRunnerAddress, options.runnerAddress), Context.add(KeepAliveLatch, keepAliveLatch), Context.add(Scope.Scope, scope))), Effect.locally(FiberRef.currentLogAnnotations, HashMap.empty()));
69
73
  const server = yield* RpcServer.makeNoSerialization(entity.protocol, {
70
74
  spanPrefix: `${entity.type}(${address.entityId})`,
71
75
  spanAttributes: {
@@ -183,6 +187,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
183
187
  }), Effect.catchAllCause(onDefect));
184
188
  }
185
189
  const state = {
190
+ scope,
186
191
  address,
187
192
  write(clientId, message) {
188
193
  if (writeRef.state.current._tag !== "Acquired") {
@@ -191,7 +196,9 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
191
196
  return writeRef.state.current.value(clientId, message);
192
197
  },
193
198
  activeRequests,
194
- lastActiveCheck: clock.unsafeCurrentTimeMillis()
199
+ lastActiveCheck: clock.unsafeCurrentTimeMillis(),
200
+ keepAliveLatch,
201
+ keepAliveEnabled: false
195
202
  };
196
203
  // During shutdown, signal that no more messages will be processed
197
204
  // and wait for the fiber to complete.
@@ -237,10 +244,27 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
237
244
  address: message.envelope.address
238
245
  }));
239
246
  }
240
- const rpc = entity.protocol.requests.get(message.envelope.tag);
247
+ const rpc = entityRpcs.get(message.envelope.tag);
241
248
  if (!storageEnabled && Context.get(rpc.annotations, Persisted)) {
242
249
  return Effect.dieMessage("EntityManager.sendLocal: Cannot process a persisted message without MessageStorage");
243
250
  }
251
+ // Cluster internal RPCs
252
+ // keep-alive RPC
253
+ if (rpc._tag === KeepAliveRpc._tag) {
254
+ const msg = message;
255
+ const reply = Effect.suspend(() => Effect.orDie(retryRespond(4, msg.respond(new Reply.WithExit({
256
+ requestId: message.envelope.requestId,
257
+ id: snowflakeGen.unsafeNext(),
258
+ exit: Exit.void
259
+ })))));
260
+ if (server.keepAliveEnabled) return reply;
261
+ server.keepAliveEnabled = true;
262
+ server.keepAliveLatch.unsafeClose();
263
+ return server.keepAliveLatch.whenOpen(Effect.suspend(() => {
264
+ server.keepAliveEnabled = false;
265
+ return reply;
266
+ })).pipe(Effect.forkIn(server.scope), Effect.asVoid);
267
+ }
244
268
  if (mailboxCapacity !== "unbounded" && server.activeRequests.size >= mailboxCapacity) {
245
269
  return Effect.fail(new MailboxFull({
246
270
  address: message.envelope.address
@@ -286,7 +310,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
286
310
  }
287
311
  }), FiberRef.currentLogAnnotations, HashMap.empty());
288
312
  }
289
- const decodeMessage = Schema.decode(makeMessageSchema(entity));
313
+ const decodeMessage = makeMessageDecode(entity, entityRpcs);
290
314
  const runFork = Runtime.runFork(yield* Effect.runtime().pipe(Effect.interruptible));
291
315
  return identity({
292
316
  interruptShard: shardId => Effect.suspend(function loop() {
@@ -362,24 +386,31 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
362
386
  });
363
387
  });
364
388
  const defaultRetryPolicy = /*#__PURE__*/Schedule.exponential(500, 1.5).pipe(/*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.spaced("10 seconds")));
365
- const makeMessageSchema = entity => {
366
- const requests = Arr.empty();
367
- for (const rpc of entity.protocol.requests.values()) {
368
- requests.push(Schema.TaggedStruct("IncomingRequest", {
369
- envelope: Schema.transform(Schema.Struct({
370
- ...Envelope.PartialEncodedRequestFromSelf.fields,
371
- tag: Schema.Literal(rpc._tag),
372
- payload: rpc.payloadSchema
373
- }), Envelope.RequestFromSelf, {
374
- decode: encoded => Envelope.makeRequest(encoded),
375
- encode: identity
376
- }),
377
- lastSentReply: Schema.OptionFromSelf(Reply.Reply(rpc))
378
- }));
379
- }
380
- return Schema.Union(...requests, Schema.TaggedStruct("IncomingEnvelope", {
381
- envelope: Schema.Union(Schema.typeSchema(Envelope.AckChunk), Schema.typeSchema(Envelope.Interrupt))
382
- }));
389
+ const makeMessageDecode = (entity, entityRpcs) => {
390
+ const decodeRequest = (message, rpc) => {
391
+ const payload = Schema.decode(rpc.payloadSchema)(message.envelope.payload);
392
+ const lastSentReply = Option.isSome(message.lastSentReply) ? Effect.asSome(Schema.decode(Reply.Reply(rpc))(message.lastSentReply.value)) : Effect.succeedNone;
393
+ return Effect.flatMap(payload, payload => Effect.map(lastSentReply, lastSentReply => ({
394
+ _tag: "IncomingRequest",
395
+ envelope: {
396
+ ...message.envelope,
397
+ payload
398
+ },
399
+ lastSentReply
400
+ })));
401
+ };
402
+ return message => {
403
+ if (message._tag === "IncomingEnvelope") {
404
+ return Effect.succeed(message);
405
+ }
406
+ const rpc = entityRpcs.get(message.envelope.tag);
407
+ if (!rpc) {
408
+ return Effect.fail(new ParseResult.ParseError({
409
+ issue: new ParseResult.Unexpected(message, `Unknown tag ${message.envelope.tag} for entity type ${entity.type}`)
410
+ }));
411
+ }
412
+ return decodeRequest(message, rpc);
413
+ };
383
414
  };
384
415
  const retryRespond = (times, effect) => times === 0 ? effect : Effect.catchAll(effect, () => Effect.delay(retryRespond(times - 1, effect), 200));
385
416
  //# sourceMappingURL=entityManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entityManager.js","names":["RequestId","RpcServer","Arr","Cause","Context","Duration","Effect","Equal","Exit","FiberRef","identity","HashMap","Metric","Option","Runtime","Schedule","Schema","Scope","AlreadyProcessingMessage","EntityNotAssignedToRunner","MailboxFull","MalformedMessage","ClusterMetrics","Persisted","Uninterruptible","CurrentAddress","CurrentRunnerAddress","Request","Envelope","Message","MessageStorage","Reply","ShardingConfig","Snowflake","EntityReaper","joinAllDiscard","internalInterruptors","ResourceMap","ResourceRef","make","fnUntraced","entity","buildHandlers","options","config","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","retryDriver","driver","defectRetryPolicy","andThen","defaultRetryPolicy","activeServers","Map","serverCloseLatches","processedRequestIds","Set","entities","address","sharding","hasShardId","shardId","endLatch","makeLatch","addFinalizerExit","get","unsafeOpen","delete","void","activeRequests","defectRequestIds","writeRef","from","isShuttingDown","handlers","protocol","toHandlersContext","pipe","provide","add","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","spanAttributes","concurrency","disableFatalDefects","onFromServer","response","_tag","request","requestId","sentReply","rpc","annotations","isFailure","exit","isInterrupted","forServer","write","message","envelope","id","tag","payload","lastSentChunk","forkIn","unregisterReplyHandler","retryRespond","suspend","respond","WithExit","unsafeNext","flatMap","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","some","onDefect","die","defect","open","extend","addFinalizer","sync","length","cause","has","effect","unsafeRebuild","Array","keys","logError","ignore","next","annotateLogs","module","runner","catchAllCause","clientId","current","await","value","withFiberRuntime","fiber","set","unsafeMakeLatch","interruptible","timeoutOption","entityTerminationTimeout","reaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","tagged","unsafeUpdate","BigInt","sleep","forever","sendLocal","entry","fail","envelopeId","requests","dieMessage","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","decodeMessage","decode","makeMessageSchema","runFork","runtime","interruptShard","loop","fibers","forEach","symbol","push","removeIgnore","latch","isProcessingFor","excludeReplies","undefined","clearProcessed","clear","send","matchEffect","onFailure","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","activeEntityCount","exponential","union","spaced","TaggedStruct","transform","Struct","PartialEncodedRequestFromSelf","fields","Literal","payloadSchema","RequestFromSelf","encoded","makeRequest","encode","OptionFromSelf","Union","typeSchema","AckChunk","Interrupt","times","catchAll","delay"],"sources":["../../../src/internal/entityManager.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,SAAS,QAAQ,wBAAwB;AAClD,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAClD,OAAO,KAAKC,GAAG,MAAM,cAAc;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAE3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,IAAI,MAAM,aAAa;AAEnC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,wBAAwB,EAAEC,yBAAyB,EAAEC,WAAW,EAAEC,gBAAgB,QAAQ,oBAAoB;AACvH,OAAO,KAAKC,cAAc,MAAM,sBAAsB;AACtD,SAASC,SAAS,EAAEC,eAAe,QAAQ,qBAAqB;AAEhE,SAASC,cAAc,EAAEC,oBAAoB,EAAEC,OAAO,QAAQ,cAAc;AAG5E,OAAO,KAAKC,QAAQ,MAAM,gBAAgB;AAC1C,OAAO,KAAKC,OAAO,MAAM,eAAe;AACxC,OAAO,KAAKC,cAAc,MAAM,sBAAsB;AACtD,OAAO,KAAKC,KAAK,MAAM,aAAa;AAIpC,SAASC,cAAc,QAAQ,sBAAsB;AACrD,OAAO,KAAKC,SAAS,MAAM,iBAAiB;AAC5C,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,cAAc,QAAQ,YAAY;AAC3C,SAASC,oBAAoB,QAAQ,mBAAmB;AACxD,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,WAAW,QAAQ,kBAAkB;AAqC9C;AACA,OAAO,MAAMC,IAAI,gBAAGjC,MAAM,CAACkC,UAAU,CAAC,WAMpCC,MAA0B,EAC1BC,aAAiD,EACjDC,OAUC;EAED,MAAMC,MAAM,GAAG,OAAOZ,cAAc;EACpC,MAAMa,YAAY,GAAG,OAAOZ,SAAS,CAACa,SAAS;EAC/C,MAAMC,YAAY,GAAG,OAAOzC,MAAM,CAAC0C,KAAK;EACxC,MAAMC,cAAc,GAAGN,OAAO,CAACO,OAAO,KAAKpB,cAAc,CAACqB,IAAI;EAC9D,MAAMC,eAAe,GAAGT,OAAO,CAACS,eAAe,IAAIR,MAAM,CAACS,qBAAqB;EAC/E,MAAMC,KAAK,GAAG,OAAOhD,MAAM,CAACgD,KAAK;EACjC,MAAMC,OAAO,GAAG,OAAOjD,MAAM,CAACiD,OAAO,EAAiD;EACtF,MAAMC,WAAW,GAAG,OAAOzC,QAAQ,CAAC0C,MAAM,CACxCd,OAAO,CAACe,iBAAiB,GAAG3C,QAAQ,CAAC4C,OAAO,CAAChB,OAAO,CAACe,iBAAiB,EAAEE,kBAAkB,CAAC,GAAGA,kBAAkB,CACjH;EAED,MAAMC,aAAa,GAAG,IAAIC,GAAG,EAAyB;EACtD,MAAMC,kBAAkB,GAAG,IAAID,GAAG,EAA+B;EACjE,MAAME,mBAAmB,GAAG,IAAIC,GAAG,EAAuB;EAE1D,MAAMC,QAAQ,GAIV,OAAO7B,WAAW,CAACE,IAAI,CAACjC,MAAM,CAACkC,UAAU,CAAC,WAAU2B,OAAsB;IAC5E,IAAI,CAACxB,OAAO,CAACyB,QAAQ,CAACC,UAAU,CAACF,OAAO,CAACG,OAAO,CAAC,EAAE;MACjD,OAAO,OAAO,IAAInD,yBAAyB,CAAC;QAAEgD;MAAO,CAAE,CAAC;IAC1D;IAEA,MAAMnB,KAAK,GAAG,OAAO1C,MAAM,CAAC0C,KAAK;IACjC,MAAMuB,QAAQ,GAAG,OAAOjE,MAAM,CAACkE,SAAS,EAAE;IAE1C;IACA,OAAOvD,KAAK,CAACwD,gBAAgB,CAC3BzB,KAAK,EACL,MAAK;MACHe,kBAAkB,CAACW,GAAG,CAACP,OAAO,CAAC,EAAEQ,UAAU,EAAE;MAC7CZ,kBAAkB,CAACa,MAAM,CAACT,OAAO,CAAC;MAClC,OAAO7D,MAAM,CAACuE,IAAI;IACpB,CAAC,CACF;IAED,MAAMC,cAAc,GAAkC,IAAIhB,GAAG,EAAE;IAC/D,IAAIiB,gBAAgB,GAAkB,EAAE;IAExC;IACA;IACA,MAAMC,QAAQ,GAAG,OAAO1C,WAAW,CAAC2C,IAAI,CACtCjC,KAAK,EACL1C,MAAM,CAACkC,UAAU,CAAC,WAAUQ,KAAK;MAC/B,IAAIkC,cAAc,GAAG,KAAK;MAE1B;MACA,MAAMC,QAAQ,GAAG,OAAQ1C,MAAM,CAAC2C,QAAQ,CAACC,iBAAiB,CAAC3C,aAAa,CAAC,CAAC4C,IAAI,CAC5EhF,MAAM,CAACiF,OAAO,CAAChC,OAAO,CAAC+B,IAAI,CACzBlF,OAAO,CAACoF,GAAG,CAAC/D,cAAc,EAAE0C,OAAO,CAAC,EACpC/D,OAAO,CAACoF,GAAG,CAAC9D,oBAAoB,EAAEiB,OAAO,CAAC8C,aAAa,CAAC,EACxDrF,OAAO,CAACoF,GAAG,CAACvE,KAAK,CAACA,KAAK,EAAE+B,KAAK,CAAC,CAChC,CAAC,EACF1C,MAAM,CAACoF,OAAO,CAACjF,QAAQ,CAACkF,qBAAqB,EAAEhF,OAAO,CAACiF,KAAK,EAAE,CAAC,CACR;MAEzD,MAAMC,MAAM,GAAG,OAAO5F,SAAS,CAAC6F,mBAAmB,CAACrD,MAAM,CAAC2C,QAAQ,EAAE;QACnEW,UAAU,EAAE,GAAGtD,MAAM,CAACuD,IAAI,IAAI7B,OAAO,CAAC8B,QAAQ,GAAG;QACjDC,cAAc,EAAE;UACd,GAAGvD,OAAO,CAACuD,cAAc;UACzB,aAAa,EAAEzD,MAAM,CAACuD,IAAI;UAC1B,WAAW,EAAE7B,OAAO,CAAC8B;SACtB;QACDE,WAAW,EAAExD,OAAO,CAACwD,WAAW,IAAI,CAAC;QACrCC,mBAAmB,EAAEzD,OAAO,CAACyD,mBAAmB;QAChDC,YAAYA,CAACC,QAAQ;UACnB,QAAQA,QAAQ,CAACC,IAAI;YACnB,KAAK,MAAM;cAAE;gBACX,MAAMC,OAAO,GAAG1B,cAAc,CAACJ,GAAG,CAAC4B,QAAQ,CAACG,SAAS,CAAC;gBACtD,IAAI,CAACD,OAAO,EAAE,OAAOlG,MAAM,CAACuE,IAAI;gBAEhC2B,OAAO,CAACE,SAAS,GAAG,IAAI;gBAExB;gBACA;gBACA;gBACA;gBACA,IACEzD,cAAc,IACd7C,OAAO,CAACsE,GAAG,CAAC8B,OAAO,CAACG,GAAG,CAACC,WAAW,EAAErF,SAAS,CAAC,IAC/Cf,IAAI,CAACqG,SAAS,CAACP,QAAQ,CAACQ,IAAI,CAAC,IAC7BtG,IAAI,CAACuG,aAAa,CAACT,QAAQ,CAACQ,IAAI,CAAC,KAChC5B,cAAc,IAAI1D,eAAe,CAACwF,SAAS,CAACR,OAAO,CAACG,GAAG,CAACC,WAAW,CAAC,CAAC,EACtE;kBACA,IAAI,CAAC1B,cAAc,EAAE;oBACnB,OAAOW,MAAM,CAACoB,KAAK,CAAC,CAAC,EAAE;sBACrB,GAAGT,OAAO,CAACU,OAAO,CAACC,QAAQ;sBAC3BC,EAAE,EAAEpH,SAAS,CAACwG,OAAO,CAACU,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;sBACjDY,GAAG,EAAEb,OAAO,CAACU,OAAO,CAACC,QAAQ,CAACE,GAAU;sBACxCC,OAAO,EAAE,IAAI3F,OAAO,CAAC;wBACnB,GAAG6E,OAAO,CAACU,OAAO,CAACC,QAAQ;wBAC3BI,aAAa,EAAEf,OAAO,CAACe;uBACjB;qBACT,CAAC,CAACjC,IAAI,CACLhF,MAAM,CAACkH,MAAM,CAACxE,KAAK,CAAC,CACrB;kBACH;kBACA8B,cAAc,CAACF,MAAM,CAAC0B,QAAQ,CAACG,SAAS,CAAC;kBACzC,OAAO9D,OAAO,CAACO,OAAO,CAACuE,sBAAsB,CAACjB,OAAO,CAACU,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;gBACnF;gBACA,OAAOiB,YAAY,CACjB,CAAC,EACDpH,MAAM,CAACqH,OAAO,CAAC,MACbnB,OAAO,CAACU,OAAO,CAACU,OAAO,CACrB,IAAI7F,KAAK,CAAC8F,QAAQ,CAAC;kBACjBpB,SAAS,EAAExE,SAAS,CAACA,SAAS,CAACqE,QAAQ,CAACG,SAAS,CAAC;kBAClDW,EAAE,EAAEvE,YAAY,CAACiF,UAAU,EAAE;kBAC7BhB,IAAI,EAAER,QAAQ,CAACQ;iBAChB,CAAC,CACH,CACF,CACF,CAACxB,IAAI,CACJhF,MAAM,CAACyH,OAAO,CAAC,MAAK;kBAClB/D,mBAAmB,CAACwB,GAAG,CAACgB,OAAO,CAACU,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;kBAC3D3B,cAAc,CAACF,MAAM,CAAC0B,QAAQ,CAACG,SAAS,CAAC;kBAEzC;kBACA;kBACA,IAAI3B,cAAc,CAACkD,IAAI,KAAK,CAAC,EAAE;oBAC7BC,KAAK,CAACC,eAAe,GAAG5E,KAAK,CAAC6E,uBAAuB,EAAE;kBACzD;kBAEA,OAAO7H,MAAM,CAACuE,IAAI;gBACpB,CAAC,CAAC,EACFvE,MAAM,CAAC8H,KAAK,CACb;cACH;YACA,KAAK,OAAO;cAAE;gBACZ,MAAM5B,OAAO,GAAG1B,cAAc,CAACJ,GAAG,CAAC4B,QAAQ,CAACG,SAAS,CAAC;gBACtD,IAAI,CAACD,OAAO,EAAE,OAAOlG,MAAM,CAACuE,IAAI;gBAChC,MAAMwD,QAAQ,GAAG7B,OAAO,CAAC6B,QAAQ;gBACjC7B,OAAO,CAAC6B,QAAQ,EAAE;gBAClB,IAAI,CAAC7B,OAAO,CAACE,SAAS,EAAE;kBACtBF,OAAO,CAACE,SAAS,GAAG,IAAI;gBAC1B;gBACA,OAAOpG,MAAM,CAAC8H,KAAK,CAACV,YAAY,CAC9B,CAAC,EACDpH,MAAM,CAACqH,OAAO,CAAC,MAAK;kBAClB,MAAMW,KAAK,GAAG,IAAIvG,KAAK,CAACwG,KAAK,CAAC;oBAC5B9B,SAAS,EAAExE,SAAS,CAACA,SAAS,CAACqE,QAAQ,CAACG,SAAS,CAAC;oBAClDW,EAAE,EAAEvE,YAAY,CAACiF,UAAU,EAAE;oBAC7BO,QAAQ;oBACRG,MAAM,EAAElC,QAAQ,CAACkC;mBAClB,CAAC;kBACFhC,OAAO,CAACe,aAAa,GAAG1G,MAAM,CAAC4H,IAAI,CAACH,KAAK,CAAC;kBAC1C,OAAO9B,OAAO,CAACU,OAAO,CAACU,OAAO,CAACU,KAAK,CAAC;gBACvC,CAAC,CAAC,CACH,CAAC;cACJ;YACA,KAAK,QAAQ;cAAE;gBACb,OAAOhI,MAAM,CAACkH,MAAM,CAACkB,QAAQ,CAACvI,KAAK,CAACwI,GAAG,CAACrC,QAAQ,CAACsC,MAAM,CAAC,CAAC,EAAE7F,YAAY,CAAC;cAC1E;YACA,KAAK,WAAW;cAAE;gBAChB,OAAOwB,QAAQ,CAACsE,IAAI;cACtB;UACF;QACF;OACD,CAAC,CAACvD,IAAI,CACLrE,KAAK,CAAC6H,MAAM,CAAC9F,KAAK,CAAC,EACnB1C,MAAM,CAACiF,OAAO,CAACJ,QAAQ,CAAC,CACzB;MAED,OAAOlE,KAAK,CAAC8H,YAAY,CACvB/F,KAAK,EACL1C,MAAM,CAAC0I,IAAI,CAAC,MAAK;QACf9D,cAAc,GAAG,IAAI;MACvB,CAAC,CAAC,CACH;MAED,IAAIH,gBAAgB,CAACkE,MAAM,GAAG,CAAC,EAAE;QAC/B,KAAK,MAAM7B,EAAE,IAAIrC,gBAAgB,EAAE;UACjC,MAAM;YAAEwC,aAAa;YAAEL;UAAO,CAAE,GAAGpC,cAAc,CAACJ,GAAG,CAAC0C,EAAE,CAAE;UAC1D,OAAOvB,MAAM,CAACoB,KAAK,CAAC,CAAC,EAAE;YACrB,GAAGC,OAAO,CAACC,QAAQ;YACnBC,EAAE,EAAEpH,SAAS,CAACkH,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;YACzCY,GAAG,EAAEH,OAAO,CAACC,QAAQ,CAACE,GAAU;YAChCC,OAAO,EAAE,IAAI3F,OAAO,CAAC;cACnB,GAAGuF,OAAO,CAACC,QAAQ;cACnBI;aACM;WACT,CAAC;QACJ;QACAxC,gBAAgB,GAAG,EAAE;MACvB;MAEA,OAAOc,MAAM,CAACoB,KAAK;IACrB,CAAC,CAAC,CACH;IAED,SAASyB,QAAQA,CAACQ,KAAyB;MACzC,IAAI,CAACrF,aAAa,CAACsF,GAAG,CAAChF,OAAO,CAAC8B,QAAQ,CAAC,EAAE;QACxC,OAAO1B,QAAQ,CAACsE,IAAI;MACtB;MACA,MAAMO,MAAM,GAAGpE,QAAQ,CAACqE,aAAa,EAAE;MACvCtE,gBAAgB,GAAGuE,KAAK,CAACrE,IAAI,CAACH,cAAc,CAACyE,IAAI,EAAE,CAAC;MACpD,OAAOjJ,MAAM,CAACkJ,QAAQ,CAAC,8BAA8B,EAAEN,KAAK,CAAC,CAAC5D,IAAI,CAChEhF,MAAM,CAACqD,OAAO,CAACrD,MAAM,CAACmJ,MAAM,CAACjG,WAAW,CAACkG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACvDpJ,MAAM,CAACyH,OAAO,CAAC,MAAMlE,aAAa,CAACsF,GAAG,CAAChF,OAAO,CAAC8B,QAAQ,CAAC,GAAGmD,MAAM,GAAG7E,QAAQ,CAACsE,IAAI,CAAC,EAClFvI,MAAM,CAACqJ,YAAY,CAAC;QAClBC,MAAM,EAAE,eAAe;QACvBzF,OAAO;QACP0F,MAAM,EAAElH,OAAO,CAAC8C;OACjB,CAAC,EACFnF,MAAM,CAACwJ,aAAa,CAACpB,QAAQ,CAAC,CAC/B;IACH;IAEA,MAAMT,KAAK,GAAgB;MACzB9D,OAAO;MACP8C,KAAKA,CAAC8C,QAAQ,EAAE7C,OAAO;QACrB,IAAIlC,QAAQ,CAACiD,KAAK,CAAC+B,OAAO,CAACzD,IAAI,KAAK,UAAU,EAAE;UAC9C,OAAOjG,MAAM,CAACyH,OAAO,CAAC/C,QAAQ,CAACiF,KAAK,EAAGhD,KAAK,IAAKA,KAAK,CAAC8C,QAAQ,EAAE7C,OAAO,CAAC,CAAC;QAC5E;QACA,OAAOlC,QAAQ,CAACiD,KAAK,CAAC+B,OAAO,CAACE,KAAK,CAACH,QAAQ,EAAE7C,OAAO,CAAC;MACxD,CAAC;MACDpC,cAAc;MACdoD,eAAe,EAAE5E,KAAK,CAAC6E,uBAAuB;KAC/C;IAED;IACA;IACA;IACA;IACA,OAAOlH,KAAK,CAAC8H,YAAY,CACvB/F,KAAK,EACL1C,MAAM,CAAC6J,gBAAgB,CAAEC,KAAK,IAAI;MAChCvG,aAAa,CAACe,MAAM,CAACT,OAAO,CAAC8B,QAAQ,CAAC;MACtClC,kBAAkB,CAACsG,GAAG,CAAClG,OAAO,EAAE7D,MAAM,CAACgK,eAAe,CAAC,KAAK,CAAC,CAAC;MAC9DlI,oBAAoB,CAACoD,GAAG,CAAC4E,KAAK,CAAChD,EAAE,EAAE,CAAC;MACpC,OAAOa,KAAK,CAAChB,KAAK,CAAC,CAAC,EAAE;QAAEV,IAAI,EAAE;MAAK,CAAE,CAAC,CAACjB,IAAI,CACzChF,MAAM,CAACqD,OAAO,CAACrD,MAAM,CAACiK,aAAa,CAAChG,QAAQ,CAAC0F,KAAK,CAAC,CAAC,EACpD3J,MAAM,CAACkK,aAAa,CAAC5H,MAAM,CAAC6H,wBAAwB,CAAC,CACtD;IACH,CAAC,CAAC,CACH;IACD5G,aAAa,CAACwG,GAAG,CAAClG,OAAO,CAAC8B,QAAQ,EAAEgC,KAAK,CAAC;IAE1C,OAAOA,KAAK;EACd,CAAC,EAAE3H,MAAM,CAACoF,OAAO,CAACjF,QAAQ,CAACkF,qBAAqB,EAAEhF,OAAO,CAACiF,KAAK,EAAE,CAAC,CAAC,CAAC;EAEpE,MAAM8E,MAAM,GAAG,OAAOxI,YAAY;EAClC,MAAMyI,WAAW,GAAGtK,QAAQ,CAACuK,QAAQ,CAACjI,OAAO,CAACgI,WAAW,IAAI/H,MAAM,CAACiI,iBAAiB,CAAC;EACtF,IAAIC,MAAM,CAACC,QAAQ,CAACJ,WAAW,CAAC,EAAE;IAChC,OAAOD,MAAM,CAACM,QAAQ,CAAC;MACrBL,WAAW;MACXM,OAAO,EAAEpH,aAAa;MACtBK;KACD,CAAC;EACJ;EAEA;EACA,MAAMgH,KAAK,GAAG5J,cAAc,CAAC4C,QAAQ,CAACoB,IAAI,CAAC1E,MAAM,CAACuK,MAAM,CAAC,MAAM,EAAE1I,MAAM,CAACuD,IAAI,CAAC,CAAC;EAC9E,OAAO1F,MAAM,CAAC0I,IAAI,CAAC,MAAK;IACtBkC,KAAK,CAACE,YAAY,CAACC,MAAM,CAACxH,aAAa,CAACmE,IAAI,CAAC,EAAE,EAAE,CAAC;EACpD,CAAC,CAAC,CAAC1C,IAAI,CACLhF,MAAM,CAACqD,OAAO,CAACrD,MAAM,CAACgL,KAAK,CAAC,IAAI,CAAC,CAAC,EAClChL,MAAM,CAACiL,OAAO,EACdjL,MAAM,CAACkH,MAAM,CAACzE,YAAY,CAAC,CAC5B;EAED,SAASyI,SAASA,CAChBtE,OAAiC;IAEjC,OAAO5G,MAAM,CAACoF,OAAO,CACnBpF,MAAM,CAACyH,OAAO,CACZ7D,QAAQ,CAACQ,GAAG,CAACwC,OAAO,CAACC,QAAQ,CAAChD,OAAO,CAAC,EACrC0B,MAAM,IAA6F;MAClG,QAAQqB,OAAO,CAACX,IAAI;QAClB,KAAK,sBAAsB;UAAE;YAC3B;YACA;YACA;YACA,IAAIkF,KAAK,GAAG5F,MAAM,CAACf,cAAc,CAACJ,GAAG,CAACwC,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;YACjE,IAAIgF,KAAK,IAAIzH,mBAAmB,CAACmF,GAAG,CAACjC,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC,EAAE;cAChE,OAAOnG,MAAM,CAACoL,IAAI,CAChB,IAAIxK,wBAAwB,CAAC;gBAC3ByK,UAAU,EAAEzE,OAAO,CAACC,QAAQ,CAACV,SAAS;gBACtCtC,OAAO,EAAE+C,OAAO,CAACC,QAAQ,CAAChD;eAC3B,CAAC,CACH;YACH;YAEA,MAAMwC,GAAG,GAAGlE,MAAM,CAAC2C,QAAQ,CAACwG,QAAQ,CAAClH,GAAG,CAACwC,OAAO,CAACC,QAAQ,CAACE,GAAG,CAA6B;YAC1F,IAAI,CAACpE,cAAc,IAAI7C,OAAO,CAACsE,GAAG,CAACiC,GAAG,CAACC,WAAW,EAAErF,SAAS,CAAC,EAAE;cAC9D,OAAOjB,MAAM,CAACuL,UAAU,CACtB,oFAAoF,CACrF;YACH;YAEA,IAAIzI,eAAe,KAAK,WAAW,IAAIyC,MAAM,CAACf,cAAc,CAACkD,IAAI,IAAI5E,eAAe,EAAE;cACpF,OAAO9C,MAAM,CAACoL,IAAI,CAAC,IAAItK,WAAW,CAAC;gBAAE+C,OAAO,EAAE+C,OAAO,CAACC,QAAQ,CAAChD;cAAO,CAAE,CAAC,CAAC;YAC5E;YAEAsH,KAAK,GAAG;cACN9E,GAAG;cACHO,OAAO;cACPR,SAAS,EAAE,KAAK;cAChBa,aAAa,EAAEL,OAAO,CAAC4E,aAAoB;cAC3CzD,QAAQ,EAAExH,MAAM,CAACkL,KAAK,CAAC7E,OAAO,CAAC4E,aAAa,EAAE;gBAC5CE,MAAM,EAAEA,CAAA,KAAM,CAAC;gBACfC,MAAM,EAAG3D,KAAK,IAAKA,KAAK,CAAC/B,IAAI,KAAK,OAAO,GAAG+B,KAAK,CAACD,QAAQ,GAAG,CAAC,GAAG;eAClE;aACF;YACDxC,MAAM,CAACf,cAAc,CAACuF,GAAG,CAACnD,OAAO,CAACC,QAAQ,CAACV,SAAS,EAAEgF,KAAK,CAAC;YAC5D,OAAO5F,MAAM,CAACoB,KAAK,CAAC,CAAC,EAAE;cACrB,GAAGC,OAAO,CAACC,QAAQ;cACnBC,EAAE,EAAEpH,SAAS,CAACkH,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;cACzCa,OAAO,EAAE,IAAI3F,OAAO,CAAC;gBACnB,GAAGuF,OAAO,CAACC,QAAQ;gBACnBI,aAAa,EAAEL,OAAO,CAAC4E;eACxB;aACF,CAAC;UACJ;QACA,KAAK,kBAAkB;UAAE;YACvB,MAAML,KAAK,GAAG5F,MAAM,CAACf,cAAc,CAACJ,GAAG,CAACwC,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;YACnE,IAAI,CAACgF,KAAK,EAAE;cACV,OAAOnL,MAAM,CAACuE,IAAI;YACpB,CAAC,MAAM,IACLqC,OAAO,CAACC,QAAQ,CAACZ,IAAI,KAAK,UAAU,IACpC1F,MAAM,CAACqL,MAAM,CAACT,KAAK,CAAClE,aAAa,CAAC,IAClCL,OAAO,CAACC,QAAQ,CAACgF,OAAO,KAAKV,KAAK,CAAClE,aAAa,CAAC2C,KAAK,CAAC9C,EAAE,EACzD;cACA,OAAO9G,MAAM,CAACuE,IAAI;YACpB;YACA,OAAOgB,MAAM,CAACoB,KAAK,CACjB,CAAC,EACDC,OAAO,CAACC,QAAQ,CAACZ,IAAI,KAAK,UAAU,GAChC;cAAEA,IAAI,EAAE,KAAK;cAAEE,SAAS,EAAEzG,SAAS,CAACkH,OAAO,CAACC,QAAQ,CAACV,SAAS;YAAC,CAAE,GACjE;cAAEF,IAAI,EAAE,WAAW;cAAEE,SAAS,EAAEzG,SAAS,CAACkH,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;cAAE2F,YAAY,EAAE;YAAE,CAAE,CAC9F;UACH;MACF;IACF,CAAC,CACF,EACD3L,QAAQ,CAACkF,qBAAqB,EAC9BhF,OAAO,CAACiF,KAAK,EAAE,CAChB;EACH;EAEA,MAAMyG,aAAa,GAAGrL,MAAM,CAACsL,MAAM,CAACC,iBAAiB,CAAC9J,MAAM,CAAC,CAAC;EAE9D,MAAM+J,OAAO,GAAG1L,OAAO,CAAC0L,OAAO,CAC7B,OAAOlM,MAAM,CAACmM,OAAO,EAAS,CAACnH,IAAI,CACjChF,MAAM,CAACiK,aAAa,CACrB,CACF;EAED,OAAO7J,QAAQ,CAAgB;IAC7BgM,cAAc,EAAGpI,OAAgB,IAC/BhE,MAAM,CAACqH,OAAO,CAAC,SAASgF,IAAIA,CAAA;MAC1B,MAAMC,MAAM,GAAG1M,GAAG,CAAC0F,KAAK,EAA4B;MACpD/B,aAAa,CAACgJ,OAAO,CAAE5E,KAAK,IAAI;QAC9B,IAAI3D,OAAO,CAAC/D,KAAK,CAACuM,MAAM,CAAC,CAAC7E,KAAK,CAAC9D,OAAO,CAACG,OAAO,CAAC,EAAE;UAChDsI,MAAM,CAACG,IAAI,CAACP,OAAO,CAACtI,QAAQ,CAAC8I,YAAY,CAAC/E,KAAK,CAAC9D,OAAO,CAAC,CAAC,CAAC;QAC5D;MACF,CAAC,CAAC;MACFJ,kBAAkB,CAAC8I,OAAO,CAAC,CAACI,KAAK,EAAE9I,OAAO,KAAI;QAC5C,IAAIG,OAAO,CAAC/D,KAAK,CAACuM,MAAM,CAAC,CAAC3I,OAAO,CAACG,OAAO,CAAC,EAAE;UAC1CsI,MAAM,CAACG,IAAI,CAACP,OAAO,CAACS,KAAK,CAAChD,KAAK,CAAC,CAAC;QACnC;MACF,CAAC,CAAC;MACF,IAAI2C,MAAM,CAAC3D,MAAM,KAAK,CAAC,EAAE,OAAO3I,MAAM,CAACuE,IAAI;MAC3C,OAAOvE,MAAM,CAACyH,OAAO,CAAC5F,cAAc,CAACyK,MAAM,CAAC,EAAED,IAAI,CAAC;IACrD,CAAC,CAAC;IACJO,eAAeA,CAAChG,OAAO,EAAEvE,OAAO;MAC9B,IAAIA,OAAO,EAAEwK,cAAc,KAAK,IAAI,IAAInJ,mBAAmB,CAACmF,GAAG,CAACjC,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC,EAAE;QAC3F,OAAO,IAAI;MACb;MACA,MAAMwB,KAAK,GAAGpE,aAAa,CAACa,GAAG,CAACwC,OAAO,CAACC,QAAQ,CAAChD,OAAO,CAAC8B,QAAQ,CAAC;MAClE,IAAI,CAACgC,KAAK,EAAE,OAAO,KAAK;MACxB,MAAMzB,OAAO,GAAGyB,KAAK,CAACnD,cAAc,CAACJ,GAAG,CAACwC,OAAO,CAACC,QAAQ,CAACV,SAAS,CAAC;MACpE,IAAID,OAAO,KAAK4G,SAAS,EAAE;QACzB,OAAO,KAAK;MACd,CAAC,MAAM,IAAIzK,OAAO,EAAEwK,cAAc,IAAI3G,OAAO,CAACE,SAAS,EAAE;QACvD,OAAO,KAAK;MACd;MACA,OAAO,IAAI;IACb,CAAC;IACD2G,cAAcA,CAAA;MACZrJ,mBAAmB,CAACsJ,KAAK,EAAE;IAC7B,CAAC;IACD9B,SAAS;IACT+B,IAAI,EAAGrG,OAAO,IACZmF,aAAa,CAACnF,OAAO,CAAC,CAAC5B,IAAI,CACzBhF,MAAM,CAACkN,WAAW,CAAC;MACjBC,SAAS,EAAGvE,KAAK,IAAI;QACnB,IAAIhC,OAAO,CAACX,IAAI,KAAK,kBAAkB,EAAE;UACvC,OAAOjG,MAAM,CAACqI,GAAG,CAAC,IAAItH,gBAAgB,CAAC;YAAE6H;UAAK,CAAE,CAAC,CAAC;QACpD;QACA,OAAO5I,MAAM,CAAC8H,KAAK,CAAClB,OAAO,CAACU,OAAO,CACjC,IAAI7F,KAAK,CAAC2L,gBAAgB,CAAC;UACzBpF,KAAK,EAAE,IAAIvG,KAAK,CAAC8F,QAAQ,CAAC;YACxBT,EAAE,EAAEvE,YAAY,CAACiF,UAAU,EAAE;YAC7BrB,SAAS,EAAES,OAAO,CAACC,QAAQ,CAACV,SAAS;YACrCK,IAAI,EAAEtG,IAAI,CAACmI,GAAG,CAAC,IAAItH,gBAAgB,CAAC;cAAE6H;YAAK,CAAE,CAAC;WAC/C,CAAC;UACFvC,GAAG,EAAElE,MAAM,CAAC2C,QAAQ,CAACwG,QAAQ,CAAClH,GAAG,CAACwC,OAAO,CAACC,QAAQ,CAACE,GAAG,CAAE;UACxD9D;SACD,CAAC,CACH,CAAC;MACJ,CAAC;MACDoK,SAAS,EAAGC,OAAO,IAAI;QACrB,IAAIA,OAAO,CAACrH,IAAI,KAAK,kBAAkB,EAAE;UACvC,OAAOiF,SAAS,CACd,IAAI3J,OAAO,CAACgM,gBAAgB,CAACD,OAAO,CAAC,CACtC;QACH;QACA,MAAMpH,OAAO,GAAGU,OAAuC;QACvD,MAAMP,GAAG,GAAGlE,MAAM,CAAC2C,QAAQ,CAACwG,QAAQ,CAAClH,GAAG,CAACkJ,OAAO,CAACzG,QAAQ,CAACE,GAAG,CAAE;QAC/D,OAAOmE,SAAS,CACd,IAAI3J,OAAO,CAACiM,oBAAoB,CAAC;UAC/B3G,QAAQ,EAAEyG,OAAO,CAACzG,QAAQ;UAC1B2E,aAAa,EAAE8B,OAAO,CAAC9B,aAAa;UACpClE,OAAO,EAAGU,KAAK,IACb9B,OAAO,CAACoB,OAAO,CACb,IAAI7F,KAAK,CAAC2L,gBAAgB,CAAC;YACzBpF,KAAK;YACL3B,GAAG;YACHpD;WACD,CAAC;SAEP,CAAC,CACH;MACH;KACD,CAAC,EACFjD,MAAM,CAACiF,OAAO,CAAChC,OAAmC,CAAC,CACpD;IACHwK,iBAAiB,EAAEzN,MAAM,CAAC0I,IAAI,CAAC,MAAMnF,aAAa,CAACmE,IAAI;GACxD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAMpE,kBAAkB,gBAAG7C,QAAQ,CAACiN,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC1I,IAAI,cAC5DvE,QAAQ,CAACkN,KAAK,cAAClN,QAAQ,CAACmN,MAAM,CAAC,YAAY,CAAC,CAAC,CAC9C;AAED,MAAM3B,iBAAiB,GAA+C9J,MAA0B,IAW5F;EACF,MAAMmJ,QAAQ,GAAG1L,GAAG,CAAC0F,KAAK,EAAqB;EAE/C,KAAK,MAAMe,GAAG,IAAIlE,MAAM,CAAC2C,QAAQ,CAACwG,QAAQ,CAACpD,MAAM,EAAE,EAAE;IACnDoD,QAAQ,CAACmB,IAAI,CACX/L,MAAM,CAACmN,YAAY,CAAC,iBAAiB,EAAE;MACrChH,QAAQ,EAAEnG,MAAM,CAACoN,SAAS,CACxBpN,MAAM,CAACqN,MAAM,CAAC;QACZ,GAAGzM,QAAQ,CAAC0M,6BAA6B,CAACC,MAAM;QAChDlH,GAAG,EAAErG,MAAM,CAACwN,OAAO,CAAC7H,GAAG,CAACJ,IAAI,CAAC;QAC7Be,OAAO,EAAGX,GAA+B,CAAC8H;OAC3C,CAAC,EACF7M,QAAQ,CAAC8M,eAAe,EACxB;QACEpC,MAAM,EAAGqC,OAAO,IAAK/M,QAAQ,CAACgN,WAAW,CAACD,OAAO,CAAC;QAClDE,MAAM,EAAEnO;OACT,CACF;MACDoL,aAAa,EAAE9K,MAAM,CAAC8N,cAAc,CAAC/M,KAAK,CAACA,KAAK,CAAC4E,GAAG,CAAC;KACtD,CAAC,CACH;EACH;EAEA,OAAO3F,MAAM,CAAC+N,KAAK,CACjB,GAAGnD,QAAQ,EACX5K,MAAM,CAACmN,YAAY,CAAC,kBAAkB,EAAE;IACtChH,QAAQ,EAAEnG,MAAM,CAAC+N,KAAK,CACpB/N,MAAM,CAACgO,UAAU,CAACpN,QAAQ,CAACqN,QAAQ,CAAC,EACpCjO,MAAM,CAACgO,UAAU,CAACpN,QAAQ,CAACsN,SAAS,CAAC;GAExC,CAAC,CACI;AACV,CAAC;AAED,MAAMxH,YAAY,GAAGA,CAAUyH,KAAa,EAAE/F,MAA8B,KAC1E+F,KAAK,KAAK,CAAC,GACT/F,MAAM,GACN9I,MAAM,CAAC8O,QAAQ,CAAChG,MAAM,EAAE,MAAM9I,MAAM,CAAC+O,KAAK,CAAC3H,YAAY,CAACyH,KAAK,GAAG,CAAC,EAAE/F,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"entityManager.js","names":["RequestId","RpcServer","Arr","Cause","Context","Duration","Effect","Equal","Exit","FiberRef","identity","HashMap","Metric","Option","ParseResult","Runtime","Schedule","Schema","Scope","AlreadyProcessingMessage","EntityNotAssignedToRunner","MailboxFull","MalformedMessage","ClusterMetrics","Persisted","Uninterruptible","CurrentAddress","CurrentRunnerAddress","KeepAliveLatch","KeepAliveRpc","Request","Message","MessageStorage","Reply","ShardingConfig","Snowflake","EntityReaper","joinAllDiscard","internalInterruptors","ResourceMap","ResourceRef","make","fnUntraced","entity","buildHandlers","options","config","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","retryDriver","driver","defectRetryPolicy","andThen","defaultRetryPolicy","entityRpcs","Map","protocol","requests","set","_tag","activeServers","serverCloseLatches","processedRequestIds","Set","entities","address","sharding","hasShardId","shardId","endLatch","unsafeMakeLatch","keepAliveLatch","addFinalizerExit","get","unsafeOpen","delete","void","activeRequests","defectRequestIds","writeRef","from","isShuttingDown","handlers","toHandlersContext","pipe","provide","add","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","spanAttributes","concurrency","disableFatalDefects","onFromServer","response","request","requestId","sentReply","rpc","annotations","isFailure","exit","isInterrupted","forServer","write","message","envelope","id","tag","payload","lastSentChunk","forkIn","unregisterReplyHandler","retryRespond","suspend","respond","WithExit","unsafeNext","flatMap","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","some","onDefect","die","defect","open","extend","addFinalizer","sync","length","cause","has","effect","unsafeRebuild","Array","keys","logError","ignore","next","annotateLogs","module","runner","catchAllCause","clientId","current","await","value","keepAliveEnabled","withFiberRuntime","fiber","interruptible","timeoutOption","entityTerminationTimeout","reaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","tagged","unsafeUpdate","BigInt","sleep","forever","sendLocal","entry","fail","envelopeId","dieMessage","msg","unsafeClose","whenOpen","asVoid","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","decodeMessage","makeMessageDecode","runFork","runtime","interruptShard","loop","fibers","forEach","symbol","push","removeIgnore","latch","isProcessingFor","excludeReplies","undefined","clearProcessed","clear","send","matchEffect","onFailure","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","activeEntityCount","exponential","union","spaced","decodeRequest","decode","payloadSchema","asSome","succeedNone","map","succeed","ParseError","issue","Unexpected","times","catchAll","delay"],"sources":["../../../src/internal/entityManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/cluster",
3
- "version": "0.52.10",
3
+ "version": "0.53.0",
4
4
  "description": "Unified interfaces for common cluster-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,11 +11,11 @@
11
11
  "sideEffects": [],
12
12
  "homepage": "https://effect.website",
13
13
  "peerDependencies": {
14
- "@effect/rpc": "^0.72.1",
15
- "@effect/platform": "^0.93.2",
14
+ "@effect/platform": "^0.93.3",
15
+ "@effect/rpc": "^0.72.2",
16
16
  "@effect/sql": "^0.48.0",
17
- "@effect/workflow": "^0.12.5",
18
- "effect": "^3.19.4"
17
+ "@effect/workflow": "^0.13.0",
18
+ "effect": "^3.19.5"
19
19
  },
20
20
  "publishConfig": {
21
21
  "provenance": true
@@ -7,14 +7,14 @@ import { DurableDeferred } from "@effect/workflow"
7
7
  import * as Activity from "@effect/workflow/Activity"
8
8
  import * as DurableClock from "@effect/workflow/DurableClock"
9
9
  import * as Workflow from "@effect/workflow/Workflow"
10
- import { WorkflowEngine, WorkflowInstance } from "@effect/workflow/WorkflowEngine"
10
+ import { makeUnsafe, WorkflowEngine, WorkflowInstance } from "@effect/workflow/WorkflowEngine"
11
11
  import * as Arr from "effect/Array"
12
12
  import * as Cause from "effect/Cause"
13
13
  import * as Context from "effect/Context"
14
14
  import * as DateTime from "effect/DateTime"
15
15
  import * as Duration from "effect/Duration"
16
16
  import * as Effect from "effect/Effect"
17
- import type * as Exit from "effect/Exit"
17
+ import * as Exit from "effect/Exit"
18
18
  import * as Fiber from "effect/Fiber"
19
19
  import * as FiberId from "effect/FiberId"
20
20
  import * as Layer from "effect/Layer"
@@ -35,6 +35,7 @@ import { EntityId } from "./EntityId.js"
35
35
  import { EntityType } from "./EntityType.js"
36
36
  import { MessageStorage } from "./MessageStorage.js"
37
37
  import type { WithExitEncoded } from "./Reply.js"
38
+ import * as Reply from "./Reply.js"
38
39
  import * as Sharding from "./Sharding.js"
39
40
  import * as Snowflake from "./Snowflake.js"
40
41
 
@@ -252,11 +253,9 @@ export const make = Effect.gen(function*() {
252
253
  yield* sharding.reset(requestId.value)
253
254
  }, Effect.scoped)
254
255
 
255
- return WorkflowEngine.of({
256
- register(workflow, execute) {
257
- // eslint-disable-next-line @typescript-eslint/no-this-alias
258
- const engine = this
259
- return Effect.suspend(() =>
256
+ const engine = makeUnsafe({
257
+ register: (workflow, execute) =>
258
+ Effect.suspend(() =>
260
259
  sharding.registerEntity(
261
260
  ensureEntity(workflow),
262
261
  Effect.gen(function*() {
@@ -277,8 +276,8 @@ export const make = Effect.gen(function*() {
277
276
  return parent ? ensureSuccess(sendResumeParent(parent)) : Effect.void
278
277
  }
279
278
  return engine.deferredResult(InterruptSignal).pipe(
280
- Effect.flatMap((maybeResult) => {
281
- if (Option.isNone(maybeResult)) {
279
+ Effect.flatMap((maybeExit) => {
280
+ if (maybeExit === undefined) {
282
281
  return Effect.void
283
282
  }
284
283
  instance.suspended = false
@@ -354,10 +353,9 @@ export const make = Effect.gen(function*() {
354
353
  }
355
354
  })
356
355
  ) as Effect.Effect<void, never, Scope.Scope>
357
- )
358
- },
356
+ ),
359
357
 
360
- execute: ({ discard, executionId, parent, payload, workflow }) => {
358
+ execute: (workflow, { discard, executionId, parent, payload }) => {
361
359
  ensureEntity(workflow)
362
360
  return RcMap.get(clients, workflow.name).pipe(
363
361
  Effect.flatMap((make) =>
@@ -376,7 +374,7 @@ export const make = Effect.gen(function*() {
376
374
  )
377
375
  },
378
376
 
379
- poll: Effect.fnUntraced(function*({ executionId, workflow }) {
377
+ poll: Effect.fnUntraced(function*(workflow, executionId) {
380
378
  const entity = ensureEntity(workflow)
381
379
  const exitSchema = Rpc.exitSchema(entity.protocol.requests.get("run")!)
382
380
  const oreply = yield* requestReply({
@@ -395,7 +393,7 @@ export const make = Effect.gen(function*() {
395
393
  }, Effect.orDie),
396
394
 
397
395
  interrupt: Effect.fnUntraced(
398
- function*(this: WorkflowEngine["Type"], workflow, executionId) {
396
+ function*(workflow, executionId) {
399
397
  ensureEntity(workflow)
400
398
  const oreply = yield* requestReply({
401
399
  workflow,
@@ -411,11 +409,11 @@ export const make = Effect.gen(function*() {
411
409
  return
412
410
  }
413
411
 
414
- yield* this.deferredDone({
412
+ yield* engine.deferredDone(InterruptSignal, {
415
413
  workflowName: workflow.name,
416
414
  executionId,
417
415
  deferredName: InterruptSignal.name,
418
- exit: { _tag: "Success", value: void 0 }
416
+ exit: Exit.void
419
417
  })
420
418
  },
421
419
  Effect.retry({
@@ -429,7 +427,7 @@ export const make = Effect.gen(function*() {
429
427
  resume: (workflow, executionId) => ensureSuccess(resume(workflow, executionId)),
430
428
 
431
429
  activityExecute: Effect.fnUntraced(
432
- function*({ activity, attempt }) {
430
+ function*(activity, attempt) {
433
431
  const runtime = yield* Effect.runtime<WorkflowInstance>()
434
432
  const context = runtime.context
435
433
  const instance = Context.get(context, WorkflowInstance)
@@ -466,7 +464,6 @@ export const make = Effect.gen(function*() {
466
464
 
467
465
  deferredResult: (deferred) =>
468
466
  WorkflowInstance.pipe(
469
- Effect.tap((instance) => Effect.annotateCurrentSpan("executionId", instance.executionId)),
470
467
  Effect.flatMap((instance) =>
471
468
  requestReply({
472
469
  workflow: instance.workflow,
@@ -476,11 +473,16 @@ export const make = Effect.gen(function*() {
476
473
  id: deferred.name
477
474
  })
478
475
  ),
479
- Effect.map(Option.map((reply) =>
480
- reply.exit._tag === "Success"
481
- ? reply.exit.value as any as Schema.ExitEncoded<unknown, unknown, unknown>
482
- : reply.exit
483
- )),
476
+ Effect.map((oreply) => {
477
+ if (Option.isNone(oreply)) {
478
+ return undefined
479
+ }
480
+ const reply = oreply.value
481
+ const decoded = decodeDeferredWithExit(reply as any)
482
+ return decoded.exit._tag === "Success"
483
+ ? decoded.exit.value
484
+ : decoded.exit
485
+ }),
484
486
  Effect.retry({
485
487
  while: (e) => e._tag === "PersistenceError",
486
488
  times: 3,
@@ -502,13 +504,13 @@ export const make = Effect.gen(function*() {
502
504
  Effect.scoped
503
505
  ),
504
506
 
505
- scheduleClock(options) {
507
+ scheduleClock(workflow, options) {
506
508
  const client = clockClient(options.executionId)
507
509
  return DateTime.now.pipe(
508
510
  Effect.flatMap((now) =>
509
511
  client.run({
510
512
  name: options.clock.name,
511
- workflowName: options.workflow.name,
513
+ workflowName: workflow.name,
512
514
  wakeUp: DateTime.addDuration(now, options.clock.duration)
513
515
  }, { discard: true })
514
516
  ),
@@ -516,6 +518,8 @@ export const make = Effect.gen(function*() {
516
518
  )
517
519
  }
518
520
  })
521
+
522
+ return engine
519
523
  })
520
524
 
521
525
  const retryPolicy = Schedule.exponential(200, 1.5).pipe(
@@ -569,11 +573,11 @@ const makeWorkflowEntity = (workflow: Workflow.Any) =>
569
573
  ActivityRpc
570
574
  ]).annotateContext(workflow.annotations)
571
575
 
572
- const ExitUnknown = Schema.encodedSchema(Schema.Exit({
576
+ const ExitUnknown = Schema.Exit({
573
577
  success: Schema.Unknown,
574
578
  failure: Schema.Unknown,
575
579
  defect: Schema.Defect
576
- }))
580
+ })
577
581
 
578
582
  const DeferredRpc = Rpc.make("deferred", {
579
583
  payload: {
@@ -586,6 +590,8 @@ const DeferredRpc = Rpc.make("deferred", {
586
590
  .annotate(ClusterSchema.Persisted, true)
587
591
  .annotate(ClusterSchema.Uninterruptible, true)
588
592
 
593
+ const decodeDeferredWithExit = Schema.decodeSync(Reply.WithExit.schema(DeferredRpc))
594
+
589
595
  const ResumeRpc = Rpc.make("resume", {
590
596
  payload: {},
591
597
  primaryKey: () => ""
@@ -628,11 +634,11 @@ const ClockEntityLayer = ClockEntity.toLayer(Effect.gen(function*() {
628
634
  return {
629
635
  run(request) {
630
636
  const deferred = DurableClock.make({ name: request.payload.name, duration: Duration.zero }).deferred
631
- return ensureSuccess(engine.deferredDone({
637
+ return ensureSuccess(engine.deferredDone(deferred, {
632
638
  workflowName: request.payload.workflowName,
633
639
  executionId,
634
640
  deferredName: deferred.name,
635
- exit: { _tag: "Success", value: void 0 }
641
+ exit: Exit.void
636
642
  }))
637
643
  }
638
644
  }
package/src/Entity.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import type * as Rpc from "@effect/rpc/Rpc"
4
+ import * as Headers from "@effect/platform/Headers"
5
+ import * as Rpc from "@effect/rpc/Rpc"
5
6
  import * as RpcClient from "@effect/rpc/RpcClient"
6
7
  import * as RpcGroup from "@effect/rpc/RpcGroup"
7
8
  import * as RpcServer from "@effect/rpc/RpcServer"
@@ -25,12 +26,14 @@ import { Scope } from "effect/Scope"
25
26
  import type * as Stream from "effect/Stream"
26
27
  import type { AlreadyProcessingMessage, MailboxFull, PersistenceError } from "./ClusterError.js"
27
28
  import { ShardGroup } from "./ClusterSchema.js"
29
+ import * as ClusterSchema from "./ClusterSchema.js"
28
30
  import { EntityAddress } from "./EntityAddress.js"
29
31
  import type { EntityId } from "./EntityId.js"
30
32
  import { EntityType } from "./EntityType.js"
31
33
  import * as Envelope from "./Envelope.js"
32
34
  import { hashString } from "./internal/hash.js"
33
35
  import { ResourceMap } from "./internal/resourceMap.js"
36
+ import * as Message from "./Message.js"
34
37
  import type * as Reply from "./Reply.js"
35
38
  import { RunnerAddress } from "./RunnerAddress.js"
36
39
  import * as ShardId from "./ShardId.js"
@@ -584,3 +587,66 @@ export const makeTestClient: <Type extends string, Rpcs extends Rpc.Any, LA, LE,
584
587
 
585
588
  return (entityId: string) => map.get(entityId)
586
589
  })
590
+
591
+ /**
592
+ * @since 1.0.0
593
+ * @category Keep alive
594
+ */
595
+ export const keepAlive: (
596
+ enabled: boolean
597
+ ) => Effect.Effect<
598
+ void,
599
+ never,
600
+ Sharding | CurrentAddress
601
+ > = Effect.fnUntraced(function*(enabled: boolean) {
602
+ const olatch = yield* Effect.serviceOption(KeepAliveLatch)
603
+ if (olatch._tag === "None") return
604
+ if (!enabled) {
605
+ yield* olatch.value.open
606
+ return
607
+ }
608
+ const sharding = yield* shardingTag
609
+ const address = yield* CurrentAddress
610
+ const requestId = yield* sharding.getSnowflake
611
+ const span = yield* Effect.orDie(Effect.currentSpan)
612
+ yield* Effect.orDie(sharding.sendOutgoing(
613
+ new Message.OutgoingRequest({
614
+ rpc: KeepAliveRpc,
615
+ context: Context.empty() as any,
616
+ envelope: Envelope.makeRequest({
617
+ requestId,
618
+ address,
619
+ tag: KeepAliveRpc._tag,
620
+ payload: void 0,
621
+ headers: Headers.empty,
622
+ traceId: span.traceId,
623
+ spanId: span.spanId,
624
+ sampled: span.sampled
625
+ }),
626
+ lastReceivedReply: Option.none(),
627
+ respond: () => Effect.void
628
+ }),
629
+ true
630
+ ))
631
+ }, (effect, enabled) =>
632
+ Effect.withSpan(
633
+ effect,
634
+ "Entity/keepAlive",
635
+ { attributes: { enabled }, captureStackTrace: false }
636
+ ))
637
+
638
+ /**
639
+ * @since 1.0.0
640
+ * @category Keep alive
641
+ */
642
+ export const KeepAliveRpc = Rpc.make("Cluster/Entity/keepAlive")
643
+ .annotate(ClusterSchema.Persisted, true)
644
+ .annotate(ClusterSchema.Uninterruptible, true)
645
+
646
+ /**
647
+ * @since 1.0.0
648
+ * @category Keep alive
649
+ */
650
+ export class KeepAliveLatch extends Context.Tag(
651
+ "effect/cluster/Entity/KeepAliveLatch"
652
+ )<KeepAliveLatch, Effect.Latch>() {}
package/src/Sharding.ts CHANGED
@@ -199,6 +199,7 @@ interface EntityManagerState {
199
199
 
200
200
  const make = Effect.gen(function*() {
201
201
  const config = yield* ShardingConfig
202
+ const clock = yield* Effect.clock
202
203
 
203
204
  const runnersService = yield* Runners
204
205
  const runnerHealth = yield* RunnerHealth.RunnerHealth
@@ -444,6 +445,8 @@ const make = Effect.gen(function*() {
444
445
 
445
446
  if (storageEnabled && Option.isSome(config.runnerAddress)) {
446
447
  const selfAddress = config.runnerAddress.value
448
+ const entityRegistrationTimeoutMillis = Duration.toMillis(config.entityRegistrationTimeout)
449
+ const storageStartMillis = clock.unsafeCurrentTimeMillis()
447
450
 
448
451
  yield* Effect.gen(function*() {
449
452
  yield* Effect.logDebug("Starting")
@@ -469,9 +472,14 @@ const make = Effect.gen(function*() {
469
472
  }
470
473
  const state = entityManagers.get(address.entityType)
471
474
  if (!state) {
472
- // reset address in the case that the entity is slow to register
473
- MutableHashSet.add(resetAddresses, address)
474
- return Effect.void
475
+ const sinceStart = clock.unsafeCurrentTimeMillis() - storageStartMillis
476
+ if (sinceStart < entityRegistrationTimeoutMillis) {
477
+ // reset address in the case that the entity is slow to register
478
+ MutableHashSet.add(resetAddresses, address)
479
+ return Effect.void
480
+ }
481
+ // if the entity did not register in time, we save a defect reply
482
+ return Effect.die(new Error(`Entity type '${address.entityType}' not registered`))
475
483
  } else if (state.status === "closed") {
476
484
  return Effect.void
477
485
  }
@@ -78,6 +78,13 @@ export class ShardingConfig extends Context.Tag("@effect/cluster/ShardingConfig"
78
78
  * after which an entity will be interrupted.
79
79
  */
80
80
  readonly entityMaxIdleTime: DurationInput
81
+ /**
82
+ * If an entity does not register itself within this time after a message is
83
+ * sent to it, the message will be marked as failed.
84
+ *
85
+ * Defaults to 1 minute.
86
+ */
87
+ readonly entityRegistrationTimeout: DurationInput
81
88
  /**
82
89
  * The maximum duration of time to wait for an entity to terminate.
83
90
  *
@@ -129,6 +136,7 @@ export const defaults: ShardingConfig["Type"] = {
129
136
  shardLockExpiration: Duration.seconds(35),
130
137
  entityMailboxCapacity: 4096,
131
138
  entityMaxIdleTime: Duration.minutes(1),
139
+ entityRegistrationTimeout: Duration.minutes(1),
132
140
  entityTerminationTimeout: Duration.seconds(15),
133
141
  entityMessagePollInterval: Duration.seconds(10),
134
142
  entityReplyPollInterval: Duration.millis(200),
@@ -208,6 +216,12 @@ export const config: Config.Config<ShardingConfig["Type"]> = Config.all({
208
216
  "The maximum duration of inactivity (i.e. without receiving a message) after which an entity will be interrupted."
209
217
  )
210
218
  ),
219
+ entityRegistrationTimeout: Config.duration("entityRegistrationTimeout").pipe(
220
+ Config.withDefault(defaults.entityRegistrationTimeout),
221
+ Config.withDescription(
222
+ "If an entity does not register itself within this time after a message is sent to it, the message will be marked as failed."
223
+ )
224
+ ),
211
225
  entityTerminationTimeout: Config.duration("entityTerminationTimeout").pipe(
212
226
  Config.withDefault(defaults.entityTerminationTimeout),
213
227
  Config.withDescription("The maximum duration of time to wait for an entity to terminate.")