@effect/cluster 0.36.2 → 0.37.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.
- package/ClusterWorkflowEngine/package.json +6 -0
- package/dist/cjs/ClusterSchema.js +9 -1
- package/dist/cjs/ClusterSchema.js.map +1 -1
- package/dist/cjs/ClusterWorkflowEngine.js +386 -0
- package/dist/cjs/ClusterWorkflowEngine.js.map +1 -0
- package/dist/cjs/Envelope.js +14 -4
- package/dist/cjs/Envelope.js.map +1 -1
- package/dist/cjs/Message.js +22 -2
- package/dist/cjs/Message.js.map +1 -1
- package/dist/cjs/MessageStorage.js +59 -21
- package/dist/cjs/MessageStorage.js.map +1 -1
- package/dist/cjs/Reply.js +15 -0
- package/dist/cjs/Reply.js.map +1 -1
- package/dist/cjs/Runners.js +2 -2
- package/dist/cjs/Runners.js.map +1 -1
- package/dist/cjs/Sharding.js +23 -8
- package/dist/cjs/Sharding.js.map +1 -1
- package/dist/cjs/Snowflake.js +2 -2
- package/dist/cjs/Snowflake.js.map +1 -1
- package/dist/cjs/SqlMessageStorage.js +36 -12
- package/dist/cjs/SqlMessageStorage.js.map +1 -1
- package/dist/cjs/SqlShardStorage.js +6 -6
- package/dist/cjs/SqlShardStorage.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internal/entityManager.js +4 -4
- package/dist/cjs/internal/entityManager.js.map +1 -1
- package/dist/dts/ClusterSchema.d.ts +7 -0
- package/dist/dts/ClusterSchema.d.ts.map +1 -1
- package/dist/dts/ClusterWorkflowEngine.d.ts +48 -0
- package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -0
- package/dist/dts/Envelope.d.ts +9 -0
- package/dist/dts/Envelope.d.ts.map +1 -1
- package/dist/dts/Message.d.ts +11 -1
- package/dist/dts/Message.d.ts.map +1 -1
- package/dist/dts/MessageStorage.d.ts +56 -0
- package/dist/dts/MessageStorage.d.ts.map +1 -1
- package/dist/dts/Reply.d.ts +7 -0
- package/dist/dts/Reply.d.ts.map +1 -1
- package/dist/dts/ShardStorage.d.ts +1 -1
- package/dist/dts/Sharding.d.ts +9 -0
- package/dist/dts/Sharding.d.ts.map +1 -1
- package/dist/dts/SqlMessageStorage.d.ts +10 -1
- package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
- package/dist/dts/SqlShardStorage.d.ts +1 -1
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/resourceMap.d.ts +1 -1
- package/dist/dts/internal/resourceMap.d.ts.map +1 -1
- package/dist/dts/internal/resourceRef.d.ts +1 -1
- package/dist/dts/internal/resourceRef.d.ts.map +1 -1
- package/dist/esm/ClusterSchema.js +7 -0
- package/dist/esm/ClusterSchema.js.map +1 -1
- package/dist/esm/ClusterWorkflowEngine.js +378 -0
- package/dist/esm/ClusterWorkflowEngine.js.map +1 -0
- package/dist/esm/Envelope.js +12 -3
- package/dist/esm/Envelope.js.map +1 -1
- package/dist/esm/Message.js +20 -1
- package/dist/esm/Message.js.map +1 -1
- package/dist/esm/MessageStorage.js +59 -21
- package/dist/esm/MessageStorage.js.map +1 -1
- package/dist/esm/Reply.js +15 -0
- package/dist/esm/Reply.js.map +1 -1
- package/dist/esm/Runners.js +2 -2
- package/dist/esm/Runners.js.map +1 -1
- package/dist/esm/Sharding.js +24 -9
- package/dist/esm/Sharding.js.map +1 -1
- package/dist/esm/Snowflake.js +2 -2
- package/dist/esm/Snowflake.js.map +1 -1
- package/dist/esm/SqlMessageStorage.js +36 -12
- package/dist/esm/SqlMessageStorage.js.map +1 -1
- package/dist/esm/SqlShardStorage.js +6 -6
- package/dist/esm/SqlShardStorage.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/entityManager.js +5 -5
- package/dist/esm/internal/entityManager.js.map +1 -1
- package/package.json +14 -5
- package/src/ClusterSchema.ts +10 -0
- package/src/ClusterWorkflowEngine.ts +475 -0
- package/src/Envelope.ts +17 -3
- package/src/Message.ts +24 -2
- package/src/MessageStorage.ts +122 -22
- package/src/Reply.ts +18 -0
- package/src/Runners.ts +2 -2
- package/src/Sharding.ts +45 -9
- package/src/Snowflake.ts +2 -2
- package/src/SqlMessageStorage.ts +74 -16
- package/src/SqlShardStorage.ts +6 -6
- package/src/index.ts +5 -0
- package/src/internal/entityManager.ts +6 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resourceMap.d.ts","sourceRoot":"","sources":["../../../src/internal/resourceMap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAE5B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE;QACjD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;QACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAC3C,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;gBALxC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE;QACjD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;QACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAC3C,CAAC,EACO,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;IAGnD,MAAM,CAAC,IAAI,kBAAwC,CAAC
|
1
|
+
{"version":3,"file":"resourceMap.d.ts","sourceRoot":"","sources":["../../../src/internal/resourceMap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAE5B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE;QACjD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;QACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAC3C,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;gBALxC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE;QACjD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;QACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAC3C,CAAC,EACO,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;IAGnD,MAAM,CAAC,IAAI,kBAAwC,CAAC,gBAAgB,GAAC,KAAK,MAAM,CAAC,MAAM,CAAC,GAAC,EAAE,GAAC,EAAE,CAAC,CAAC,uEA0B9F;IAEF,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAsBhC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAWnC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;CAQ1C"}
|
@@ -15,7 +15,7 @@ export type State<A> = {
|
|
15
15
|
export declare class ResourceRef<A, E = never> {
|
16
16
|
readonly state: MutableRef.MutableRef<State<A>>;
|
17
17
|
readonly acquire: (scope: Scope.Scope) => Effect.Effect<A, E>;
|
18
|
-
static from: <A_1, E_1>(
|
18
|
+
static from: <A_1, E_1>(parentScope: Scope.Scope, acquire: (scope: Scope.Scope) => Effect.Effect<A_1, E_1>) => Effect.Effect<ResourceRef<A_1, E_1>, E_1, never>;
|
19
19
|
constructor(state: MutableRef.MutableRef<State<A>>, acquire: (scope: Scope.Scope) => Effect.Effect<A, E>);
|
20
20
|
latch: Effect.Latch;
|
21
21
|
unsafeGet(): Option.Option<A>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resourceRef.d.ts","sourceRoot":"","sources":["../../../src/internal/resourceRef.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CACxB,GAAG;IACF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;CACrC,GAAG;IACF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB,CAAA;AAED,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;IA0BjC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IA1B/D,MAAM,CAAC,IAAI,
|
1
|
+
{"version":3,"file":"resourceRef.d.ts","sourceRoot":"","sources":["../../../src/internal/resourceRef.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CACxB,GAAG;IACF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;CACrC,GAAG;IACF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB,CAAA;AAED,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;IA0BjC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IA1B/D,MAAM,CAAC,IAAI,wDAEQ,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,GAAC,EAAE,GAAC,CAAC,sDAoBpD;gBAGS,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACtC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAG/D,KAAK,eAA+B;IAEpC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAO7B,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAqBvC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAQrB;CACH"}
|
@@ -10,4 +10,11 @@ import { constFalse } from "effect/Function";
|
|
10
10
|
export class Persisted extends /*#__PURE__*/Context.Reference()("@effect/cluster/ClusterSchema/Persisted", {
|
11
11
|
defaultValue: constFalse
|
12
12
|
}) {}
|
13
|
+
/**
|
14
|
+
* @since 1.0.0
|
15
|
+
* @category Annotations
|
16
|
+
*/
|
17
|
+
export class Uninterruptible extends /*#__PURE__*/Context.Reference()("@effect/cluster/ClusterSchema/Uninterruptible", {
|
18
|
+
defaultValue: constFalse
|
19
|
+
}) {}
|
13
20
|
//# sourceMappingURL=ClusterSchema.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ClusterSchema.js","names":["Context","constFalse","Persisted","Reference","defaultValue"],"sources":["../../src/ClusterSchema.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,SAASC,UAAU,QAAQ,iBAAiB;AAE5C;;;;AAIA,OAAM,MAAOC,SAAU,sBAAQF,OAAO,CAACG,SAAS,EAAa,CAAC,yCAAyC,EAAE;EACvGC,YAAY,EAAEH;CACf,CAAC","ignoreList":[]}
|
1
|
+
{"version":3,"file":"ClusterSchema.js","names":["Context","constFalse","Persisted","Reference","defaultValue","Uninterruptible"],"sources":["../../src/ClusterSchema.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,SAASC,UAAU,QAAQ,iBAAiB;AAE5C;;;;AAIA,OAAM,MAAOC,SAAU,sBAAQF,OAAO,CAACG,SAAS,EAAa,CAAC,yCAAyC,EAAE;EACvGC,YAAY,EAAEH;CACf,CAAC;AAEF;;;;AAIA,OAAM,MAAOI,eACX,sBAAQL,OAAO,CAACG,SAAS,EAAmB,CAAC,+CAA+C,EAAE;EAC5FC,YAAY,EAAEH;CACf,CAAC","ignoreList":[]}
|
@@ -0,0 +1,378 @@
|
|
1
|
+
/**
|
2
|
+
* @since 1.0.0
|
3
|
+
*/
|
4
|
+
import * as Rpc from "@effect/rpc/Rpc";
|
5
|
+
import * as Activity from "@effect/workflow/Activity";
|
6
|
+
import * as DurableClock from "@effect/workflow/DurableClock";
|
7
|
+
import * as Workflow from "@effect/workflow/Workflow";
|
8
|
+
import { WorkflowEngine, WorkflowInstance } from "@effect/workflow/WorkflowEngine";
|
9
|
+
import * as Arr from "effect/Array";
|
10
|
+
import * as Context from "effect/Context";
|
11
|
+
import * as DateTime from "effect/DateTime";
|
12
|
+
import * as Duration from "effect/Duration";
|
13
|
+
import * as Effect from "effect/Effect";
|
14
|
+
import * as Layer from "effect/Layer";
|
15
|
+
import * as Option from "effect/Option";
|
16
|
+
import * as PrimaryKey from "effect/PrimaryKey";
|
17
|
+
import * as RcMap from "effect/RcMap";
|
18
|
+
import * as Schedule from "effect/Schedule";
|
19
|
+
import * as Schema from "effect/Schema";
|
20
|
+
import * as ClusterSchema from "./ClusterSchema.js";
|
21
|
+
import * as DeliverAt from "./DeliverAt.js";
|
22
|
+
import * as Entity from "./Entity.js";
|
23
|
+
import { EntityAddress } from "./EntityAddress.js";
|
24
|
+
import { EntityId } from "./EntityId.js";
|
25
|
+
import { EntityType } from "./EntityType.js";
|
26
|
+
import * as Message from "./Message.js";
|
27
|
+
import { MessageStorage } from "./MessageStorage.js";
|
28
|
+
import * as Reply from "./Reply.js";
|
29
|
+
import * as Sharding from "./Sharding.js";
|
30
|
+
import * as Snowflake from "./Snowflake.js";
|
31
|
+
/**
|
32
|
+
* @since 1.0.0
|
33
|
+
* @category Constructors
|
34
|
+
*/
|
35
|
+
export const make = /*#__PURE__*/Effect.gen(function* () {
|
36
|
+
const sharding = yield* Sharding.Sharding;
|
37
|
+
const storage = yield* MessageStorage;
|
38
|
+
const snowflakeGen = yield* Snowflake.Generator;
|
39
|
+
const entities = new Map();
|
40
|
+
const activities = new Map();
|
41
|
+
const activityLatches = new Map();
|
42
|
+
const clients = yield* RcMap.make({
|
43
|
+
lookup: Effect.fnUntraced(function* (workflowName) {
|
44
|
+
const entity = entities.get(workflowName);
|
45
|
+
if (!entity) {
|
46
|
+
return yield* Effect.dieMessage(`Workflow ${workflowName} not registered`);
|
47
|
+
}
|
48
|
+
return yield* entity.client;
|
49
|
+
}),
|
50
|
+
idleTimeToLive: "5 minutes"
|
51
|
+
});
|
52
|
+
const clockClient = yield* ClockEntity.client;
|
53
|
+
const deferredClient = yield* DeferredEntity.client;
|
54
|
+
const requestIdFor = Effect.fnUntraced(function* (options) {
|
55
|
+
const entityId = EntityId.make(options.executionId);
|
56
|
+
const address = new EntityAddress({
|
57
|
+
entityType: EntityType.make(options.entityType),
|
58
|
+
entityId,
|
59
|
+
shardId: sharding.getShardId(entityId)
|
60
|
+
});
|
61
|
+
return yield* storage.requestIdForPrimaryKey({
|
62
|
+
address,
|
63
|
+
tag: options.tag,
|
64
|
+
id: options.id
|
65
|
+
});
|
66
|
+
});
|
67
|
+
const replyForRequestId = Effect.fnUntraced(function* (requestId) {
|
68
|
+
const replies = yield* storage.repliesForUnfiltered([requestId]);
|
69
|
+
return Arr.last(replies).pipe(Option.filter(reply => reply._tag === "WithExit"), Option.map(reply => reply));
|
70
|
+
});
|
71
|
+
const requestReply = Effect.fnUntraced(function* (options) {
|
72
|
+
const requestId = yield* requestIdFor(options);
|
73
|
+
if (Option.isNone(requestId)) {
|
74
|
+
return Option.none();
|
75
|
+
}
|
76
|
+
return yield* replyForRequestId(requestId.value);
|
77
|
+
});
|
78
|
+
const resetActivityAttempt = Effect.fnUntraced(function* (options) {
|
79
|
+
const requestId = yield* requestIdFor({
|
80
|
+
entityType: `Workflow/${options.workflow.name}`,
|
81
|
+
executionId: options.executionId,
|
82
|
+
tag: "activity",
|
83
|
+
id: activityPrimaryKey(options.activity.name, options.attempt)
|
84
|
+
});
|
85
|
+
if (Option.isNone(requestId)) return;
|
86
|
+
yield* sharding.reset(requestId.value);
|
87
|
+
}, Effect.retry({
|
88
|
+
times: 3,
|
89
|
+
schedule: Schedule.exponential(250)
|
90
|
+
}), Effect.orDie);
|
91
|
+
return WorkflowEngine.of({
|
92
|
+
register: (workflow, execute) => Effect.suspend(() => {
|
93
|
+
if (entities.has(workflow.name)) {
|
94
|
+
return Effect.dieMessage(`Workflow ${workflow.name} already registered`);
|
95
|
+
}
|
96
|
+
const entity = makeWorkflowEntity(workflow);
|
97
|
+
entities.set(workflow.name, entity);
|
98
|
+
return sharding.registerEntity(entity, Effect.gen(function* () {
|
99
|
+
const address = yield* Entity.CurrentAddress;
|
100
|
+
const executionId = address.entityId;
|
101
|
+
return {
|
102
|
+
run: request => execute(request.payload, executionId).pipe(Workflow.intoResult, Effect.provideService(WorkflowInstance, WorkflowInstance.of({
|
103
|
+
workflow,
|
104
|
+
executionId,
|
105
|
+
suspended: false
|
106
|
+
}))),
|
107
|
+
activity: Effect.fnUntraced(function* (request) {
|
108
|
+
const activityId = `${executionId}/${request.payload.name}`;
|
109
|
+
let entry = activities.get(activityId);
|
110
|
+
while (!entry) {
|
111
|
+
const latch = Effect.unsafeMakeLatch();
|
112
|
+
activityLatches.set(activityId, latch);
|
113
|
+
yield* latch.await;
|
114
|
+
entry = activities.get(activityId);
|
115
|
+
}
|
116
|
+
const contextMap = new Map(entry.context.unsafeMap);
|
117
|
+
contextMap.set(Activity.CurrentAttempt.key, request.payload.attempt);
|
118
|
+
contextMap.set(WorkflowInstance.key, WorkflowInstance.of({
|
119
|
+
workflow,
|
120
|
+
executionId,
|
121
|
+
suspended: false
|
122
|
+
}));
|
123
|
+
return yield* entry.activity.executeEncoded.pipe(Workflow.intoResult, Effect.provide(Context.unsafeMake(contextMap)), Effect.ensuring(Effect.sync(() => {
|
124
|
+
activities.delete(activityId);
|
125
|
+
})));
|
126
|
+
}, Rpc.fork)
|
127
|
+
};
|
128
|
+
}));
|
129
|
+
}),
|
130
|
+
execute: ({
|
131
|
+
discard,
|
132
|
+
executionId,
|
133
|
+
payload,
|
134
|
+
workflow
|
135
|
+
}) => RcMap.get(clients, workflow.name).pipe(Effect.flatMap(make => make(executionId).run(payload, {
|
136
|
+
discard
|
137
|
+
})), Effect.orDie, Effect.scoped),
|
138
|
+
interrupt: Effect.fnUntraced(function* (workflow, executionId) {
|
139
|
+
const requestId = yield* requestIdFor({
|
140
|
+
entityType: `Workflow/${workflow.name}`,
|
141
|
+
executionId,
|
142
|
+
tag: "run",
|
143
|
+
id: ""
|
144
|
+
});
|
145
|
+
if (Option.isNone(requestId)) {
|
146
|
+
return;
|
147
|
+
}
|
148
|
+
const reply = yield* replyForRequestId(requestId.value);
|
149
|
+
const nonSuspendedReply = reply.pipe(Option.filter(reply => reply.exit._tag !== "Success" || reply.exit.value._tag !== "Suspended"));
|
150
|
+
if (Option.isSome(nonSuspendedReply)) {
|
151
|
+
return;
|
152
|
+
}
|
153
|
+
const entityId = EntityId.make(executionId);
|
154
|
+
const shardId = sharding.getShardId(entityId);
|
155
|
+
const workflowAddress = new EntityAddress({
|
156
|
+
entityType: EntityType.make(`Workflow/${workflow.name}`),
|
157
|
+
entityId,
|
158
|
+
shardId
|
159
|
+
});
|
160
|
+
const deferredAddress = new EntityAddress({
|
161
|
+
entityType: DeferredEntity.type,
|
162
|
+
entityId,
|
163
|
+
shardId
|
164
|
+
});
|
165
|
+
const clockAddress = new EntityAddress({
|
166
|
+
entityType: ClockEntity.type,
|
167
|
+
entityId,
|
168
|
+
shardId
|
169
|
+
});
|
170
|
+
if (Option.isNone(reply)) {
|
171
|
+
yield* sharding.sendOutgoing(Message.OutgoingEnvelope.interrupt({
|
172
|
+
address: workflowAddress,
|
173
|
+
id: snowflakeGen.unsafeNext(),
|
174
|
+
requestId: requestId.value
|
175
|
+
}), true);
|
176
|
+
} else {
|
177
|
+
yield* sharding.reset(requestId.value);
|
178
|
+
}
|
179
|
+
yield* storage.saveReply(Reply.ReplyWithContext.interrupt({
|
180
|
+
id: snowflakeGen.unsafeNext(),
|
181
|
+
requestId: requestId.value
|
182
|
+
}));
|
183
|
+
yield* storage.clearAddress(deferredAddress);
|
184
|
+
yield* storage.clearAddress(clockAddress);
|
185
|
+
}, Effect.retry({
|
186
|
+
while: e => e._tag === "PersistenceError",
|
187
|
+
times: 3,
|
188
|
+
schedule: Schedule.exponential(250)
|
189
|
+
}), Effect.orDie),
|
190
|
+
resume: Effect.fnUntraced(function* (workflowName, executionId) {
|
191
|
+
const maybeReply = yield* requestReply({
|
192
|
+
entityType: `Workflow/${workflowName}`,
|
193
|
+
executionId,
|
194
|
+
tag: "run",
|
195
|
+
id: ""
|
196
|
+
});
|
197
|
+
const maybeSuspended = Option.filter(maybeReply, reply => reply.exit._tag === "Success" && reply.exit.value._tag === "Suspended");
|
198
|
+
if (Option.isNone(maybeSuspended)) return;
|
199
|
+
yield* sharding.reset(Snowflake.Snowflake(maybeSuspended.value.requestId));
|
200
|
+
}, Effect.retry({
|
201
|
+
while: e => e._tag === "PersistenceError",
|
202
|
+
times: 3,
|
203
|
+
schedule: Schedule.exponential(250)
|
204
|
+
}), Effect.orDie),
|
205
|
+
activityExecute: Effect.fnUntraced(function* ({
|
206
|
+
activity,
|
207
|
+
attempt
|
208
|
+
}) {
|
209
|
+
const context = yield* Effect.context();
|
210
|
+
const instance = Context.get(context, WorkflowInstance);
|
211
|
+
const activityId = `${instance.executionId}/${activity.name}`;
|
212
|
+
activities.set(activityId, {
|
213
|
+
activity,
|
214
|
+
context
|
215
|
+
});
|
216
|
+
const latch = activityLatches.get(activityId);
|
217
|
+
if (latch) {
|
218
|
+
yield* latch.release;
|
219
|
+
activityLatches.delete(activityId);
|
220
|
+
}
|
221
|
+
const client = (yield* RcMap.get(clients, instance.workflow.name))(instance.executionId);
|
222
|
+
while (true) {
|
223
|
+
const result = yield* Effect.orDie(client.activity({
|
224
|
+
name: activity.name,
|
225
|
+
attempt
|
226
|
+
}));
|
227
|
+
// If the activity has suspended and did not execute, we need to resume
|
228
|
+
// it by resetting the attempt and re-executing.
|
229
|
+
if (result._tag === "Suspended" && activities.has(activityId)) {
|
230
|
+
yield* resetActivityAttempt({
|
231
|
+
workflow: instance.workflow,
|
232
|
+
executionId: instance.executionId,
|
233
|
+
activity,
|
234
|
+
attempt
|
235
|
+
});
|
236
|
+
continue;
|
237
|
+
}
|
238
|
+
activities.delete(activityId);
|
239
|
+
return result;
|
240
|
+
}
|
241
|
+
}, Effect.scoped),
|
242
|
+
deferredResult: deferred => WorkflowInstance.pipe(Effect.flatMap(instance => requestReply({
|
243
|
+
entityType: DeferredEntity.type,
|
244
|
+
executionId: instance.executionId,
|
245
|
+
tag: "set",
|
246
|
+
id: deferred.name
|
247
|
+
})), Effect.map(Option.map(reply => reply.exit)), Effect.retry({
|
248
|
+
while: e => e._tag === "PersistenceError",
|
249
|
+
times: 3,
|
250
|
+
schedule: Schedule.exponential(250)
|
251
|
+
}), Effect.orDie),
|
252
|
+
deferredDone({
|
253
|
+
deferred,
|
254
|
+
executionId,
|
255
|
+
exit,
|
256
|
+
workflowName
|
257
|
+
}) {
|
258
|
+
const client = deferredClient(executionId);
|
259
|
+
return Effect.orDie(client.set({
|
260
|
+
workflowName,
|
261
|
+
name: deferred.name,
|
262
|
+
exit
|
263
|
+
}));
|
264
|
+
},
|
265
|
+
scheduleClock(options) {
|
266
|
+
const client = clockClient(options.executionId);
|
267
|
+
return DateTime.now.pipe(Effect.flatMap(now => client.run({
|
268
|
+
name: options.clock.name,
|
269
|
+
workflowName: options.workflow.name,
|
270
|
+
wakeUp: DateTime.addDuration(now, options.clock.duration)
|
271
|
+
}, {
|
272
|
+
discard: true
|
273
|
+
})), Effect.orDie);
|
274
|
+
}
|
275
|
+
});
|
276
|
+
});
|
277
|
+
const ActivityRpc = /*#__PURE__*/Rpc.make("activity", {
|
278
|
+
payload: {
|
279
|
+
name: Schema.String,
|
280
|
+
attempt: Schema.Number
|
281
|
+
},
|
282
|
+
primaryKey: ({
|
283
|
+
attempt,
|
284
|
+
name
|
285
|
+
}) => activityPrimaryKey(name, attempt),
|
286
|
+
success: /*#__PURE__*/Workflow.Result({
|
287
|
+
success: Schema.Unknown,
|
288
|
+
error: Schema.Unknown
|
289
|
+
})
|
290
|
+
});
|
291
|
+
const makeWorkflowEntity = workflow => Entity.make(`Workflow/${workflow.name}`, [Rpc.make("run", {
|
292
|
+
payload: workflow.payloadSchema.fields,
|
293
|
+
primaryKey: () => "",
|
294
|
+
success: Workflow.Result({
|
295
|
+
success: workflow.successSchema,
|
296
|
+
error: workflow.errorSchema
|
297
|
+
})
|
298
|
+
}), ActivityRpc]).annotateRpcs(ClusterSchema.Persisted, true).annotateRpcs(ClusterSchema.Uninterruptible, true);
|
299
|
+
const activityPrimaryKey = (activity, attempt) => `${activity}/${attempt}`;
|
300
|
+
const ExitUnknown = /*#__PURE__*/Schema.encodedSchema(/*#__PURE__*/Schema.Exit({
|
301
|
+
success: Schema.Unknown,
|
302
|
+
failure: Schema.Unknown,
|
303
|
+
defect: Schema.Defect
|
304
|
+
}));
|
305
|
+
const DeferredEntity = /*#__PURE__*/Entity.make("Workflow/-/DurableDeferred", [Rpc.make("set", {
|
306
|
+
payload: {
|
307
|
+
workflowName: Schema.String,
|
308
|
+
name: Schema.String,
|
309
|
+
exit: ExitUnknown
|
310
|
+
},
|
311
|
+
primaryKey: ({
|
312
|
+
name
|
313
|
+
}) => name,
|
314
|
+
success: ExitUnknown
|
315
|
+
}), Rpc.make("resume", {
|
316
|
+
payload: {
|
317
|
+
workflowName: Schema.String,
|
318
|
+
name: Schema.String
|
319
|
+
},
|
320
|
+
primaryKey: ({
|
321
|
+
name
|
322
|
+
}) => name
|
323
|
+
})]).annotateRpcs(ClusterSchema.Persisted, true).annotateRpcs(ClusterSchema.Uninterruptible, true);
|
324
|
+
const DeferredEntityLayer = /*#__PURE__*/DeferredEntity.toLayer(/*#__PURE__*/Effect.gen(function* () {
|
325
|
+
const engine = yield* WorkflowEngine;
|
326
|
+
const address = yield* Entity.CurrentAddress;
|
327
|
+
const executionId = address.entityId;
|
328
|
+
const client = (yield* DeferredEntity.client)(executionId);
|
329
|
+
return {
|
330
|
+
set: request => Effect.as(Effect.orDie(client.resume(request.payload, {
|
331
|
+
discard: true
|
332
|
+
})), request.payload.exit),
|
333
|
+
resume: request => engine.resume(request.payload.workflowName, executionId)
|
334
|
+
};
|
335
|
+
}));
|
336
|
+
class ClockPayload extends /*#__PURE__*/Schema.Class(`Workflow/DurableClock/Run`)({
|
337
|
+
name: Schema.String,
|
338
|
+
workflowName: Schema.String,
|
339
|
+
wakeUp: Schema.DateTimeUtcFromNumber
|
340
|
+
}) {
|
341
|
+
[PrimaryKey.symbol]() {
|
342
|
+
return this.name;
|
343
|
+
}
|
344
|
+
[DeliverAt.symbol]() {
|
345
|
+
return this.wakeUp;
|
346
|
+
}
|
347
|
+
}
|
348
|
+
const ClockEntity = /*#__PURE__*/Entity.make("Workflow/-/DurableClock", [/*#__PURE__*/Rpc.make("run", {
|
349
|
+
payload: ClockPayload
|
350
|
+
}).annotate(ClusterSchema.Persisted, true).annotate(ClusterSchema.Uninterruptible, true)]);
|
351
|
+
const ClockEntityLayer = /*#__PURE__*/ClockEntity.toLayer(/*#__PURE__*/Effect.gen(function* () {
|
352
|
+
const engine = yield* WorkflowEngine;
|
353
|
+
const address = yield* Entity.CurrentAddress;
|
354
|
+
const executionId = address.entityId;
|
355
|
+
return {
|
356
|
+
run(request) {
|
357
|
+
const deferred = DurableClock.make({
|
358
|
+
name: request.payload.name,
|
359
|
+
duration: Duration.zero
|
360
|
+
}).deferred;
|
361
|
+
return engine.deferredDone({
|
362
|
+
workflowName: request.payload.workflowName,
|
363
|
+
executionId,
|
364
|
+
deferred,
|
365
|
+
exit: {
|
366
|
+
_tag: "Success",
|
367
|
+
value: void 0
|
368
|
+
}
|
369
|
+
});
|
370
|
+
}
|
371
|
+
};
|
372
|
+
}));
|
373
|
+
/**
|
374
|
+
* @since 1.0.0
|
375
|
+
* @category Layers
|
376
|
+
*/
|
377
|
+
export const layer = /*#__PURE__*/DeferredEntityLayer.pipe(/*#__PURE__*/Layer.merge(ClockEntityLayer), /*#__PURE__*/Layer.provideMerge(/*#__PURE__*/Layer.scoped(WorkflowEngine, make)), /*#__PURE__*/Layer.provide(Snowflake.layerGenerator));
|
378
|
+
//# sourceMappingURL=ClusterWorkflowEngine.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ClusterWorkflowEngine.js","names":["Rpc","Activity","DurableClock","Workflow","WorkflowEngine","WorkflowInstance","Arr","Context","DateTime","Duration","Effect","Layer","Option","PrimaryKey","RcMap","Schedule","Schema","ClusterSchema","DeliverAt","Entity","EntityAddress","EntityId","EntityType","Message","MessageStorage","Reply","Sharding","Snowflake","make","gen","sharding","storage","snowflakeGen","Generator","entities","Map","activities","activityLatches","clients","lookup","fnUntraced","workflowName","entity","get","dieMessage","client","idleTimeToLive","clockClient","ClockEntity","deferredClient","DeferredEntity","requestIdFor","options","entityId","executionId","address","entityType","shardId","getShardId","requestIdForPrimaryKey","tag","id","replyForRequestId","requestId","replies","repliesForUnfiltered","last","pipe","filter","reply","_tag","map","requestReply","isNone","none","value","resetActivityAttempt","workflow","name","activityPrimaryKey","activity","attempt","reset","retry","times","schedule","exponential","orDie","of","register","execute","suspend","has","makeWorkflowEntity","set","registerEntity","CurrentAddress","run","request","payload","intoResult","provideService","suspended","activityId","entry","latch","unsafeMakeLatch","await","contextMap","context","unsafeMap","CurrentAttempt","key","executeEncoded","provide","unsafeMake","ensuring","sync","delete","fork","discard","flatMap","scoped","interrupt","nonSuspendedReply","exit","isSome","workflowAddress","deferredAddress","type","clockAddress","sendOutgoing","OutgoingEnvelope","unsafeNext","saveReply","ReplyWithContext","clearAddress","while","e","resume","maybeReply","maybeSuspended","activityExecute","instance","release","result","deferredResult","deferred","deferredDone","scheduleClock","now","clock","wakeUp","addDuration","duration","ActivityRpc","String","Number","primaryKey","success","Result","Unknown","error","payloadSchema","fields","successSchema","errorSchema","annotateRpcs","Persisted","Uninterruptible","ExitUnknown","encodedSchema","Exit","failure","defect","Defect","DeferredEntityLayer","toLayer","engine","as","ClockPayload","Class","DateTimeUtcFromNumber","symbol","annotate","ClockEntityLayer","zero","layer","merge","provideMerge","layerGenerator"],"sources":["../../src/ClusterWorkflowEngine.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/Envelope.js
CHANGED
@@ -147,8 +147,17 @@ export const primaryKey = envelope => {
|
|
147
147
|
if (envelope._tag !== "Request" || !Predicate.hasProperty(envelope.payload, PrimaryKey.symbol)) {
|
148
148
|
return null;
|
149
149
|
}
|
150
|
-
|
151
|
-
|
152
|
-
|
150
|
+
return primaryKeyByAddress({
|
151
|
+
address: envelope.address,
|
152
|
+
tag: envelope.tag,
|
153
|
+
id: PrimaryKey.value(envelope.payload)
|
154
|
+
});
|
153
155
|
};
|
156
|
+
/**
|
157
|
+
* @since 1.0.0
|
158
|
+
* @category primary key
|
159
|
+
*/
|
160
|
+
export const primaryKeyByAddress = options =>
|
161
|
+
// hash the entity address to save space?
|
162
|
+
`${options.address.entityType}/${options.address.entityId}/${options.tag}/${options.id}`;
|
154
163
|
//# sourceMappingURL=Envelope.js.map
|
package/dist/esm/Envelope.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Envelope.js","names":["Headers","Predicate","PrimaryKey","Schema","EntityAddress","EntityAddressFromSelf","SnowflakeFromString","TypeId","Symbol","for","AckChunk","TaggedClass","id","address","requestId","replyId","withRequestId","Interrupt","isEnvelope","u","hasProperty","makeRequest","options","_tag","tag","payload","headers","traceId","spanId","sampled","EnvelopeFromSelf","declare","identifier","RequestFromSelf","PartialEncodedRequest","Struct","Literal","String","Unknown","schema","Boolean","PartialEncoded","Union","PartialEncodedArray","mutable","Array","PartialEncodedRequestFromSelf","typeSchema","schemaFromSelf","PartialEncodedFromSelf","primaryKey","envelope","symbol","value","entityType","entityId"],"sources":["../../src/Envelope.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,0BAA0B;AAEnD,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,UAAU,MAAM,mBAAmB;AAE/C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,aAAa,EAAEC,qBAAqB,QAAQ,oBAAoB;AACzE,SAAyBC,mBAAmB,QAAQ,gBAAgB;AAEpE;;;;AAIA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,0BAA0B,CAAC;AAsD3E;;;;AAIA,OAAM,MAAOC,QAAS,sBAAQP,MAAM,CAACQ,WAAW,CAAW,mCAAmC,CAAC,CAAC,UAAU,EAAE;EAC1GC,EAAE,EAAEN,mBAAmB;EACvBO,OAAO,EAAET,aAAa;EACtBU,SAAS,EAAER,mBAAmB;EAC9BS,OAAO,EAAET;CACV,CAAC;EACA;;;EAGS,CAACC,MAAM,IAAYA,MAAM;EAElC;;;EAGAS,aAAaA,CAACF,SAAoB;IAChC,OAAO,IAAIJ,QAAQ,CAAC;MAClB,GAAG,IAAI;MACPI;KACD,CAAC;EACJ;;AAGF;;;;AAIA,OAAM,MAAOG,SAAU,sBAAQd,MAAM,CAACQ,WAAW,CAAY,oCAAoC,CAAC,CAAC,WAAW,EAAE;EAC9GC,EAAE,EAAEN,mBAAmB;EACvBO,OAAO,EAAET,aAAa;EACtBU,SAAS,EAAER;CACZ,CAAC;EACA;;;EAGS,CAACC,MAAM,IAAYA,MAAM;EAElC;;;EAGAS,aAAaA,CAACF,SAAoB;IAChC,OAAO,IAAIG,SAAS,CAAC;MACnB,GAAG,IAAI;MACPH;KACD,CAAC;EACJ;;AA8CF;;;;AAIA,OAAO,MAAMI,UAAU,GAAIC,CAAU,IAAyBlB,SAAS,CAACmB,WAAW,CAACD,CAAC,EAAEZ,MAAM,CAAC;AAE9F;;;;AAIA,OAAO,MAAMc,WAAW,GACtBC,OASC,KACiB;EAClB,CAACf,MAAM,GAAGA,MAAM;EAChBgB,IAAI,EAAE,SAAS;EACfT,SAAS,EAAEQ,OAAO,CAACR,SAAS;EAC5BU,GAAG,EAAEF,OAAO,CAACE,GAAG;EAChBX,OAAO,EAAES,OAAO,CAACT,OAAO;EACxBY,OAAO,EAAEH,OAAO,CAACG,OAAO;EACxBC,OAAO,EAAEJ,OAAO,CAACI,OAAO;EACxBC,OAAO,EAAEL,OAAO,CAACK,OAAO;EACxBC,MAAM,EAAEN,OAAO,CAACM,MAAM;EACtBC,OAAO,EAAEP,OAAO,CAACO;CAClB,CAAC;AAEF;;;;AAIA,OAAO,MAAMC,gBAAgB,gBAGzB3B,MAAM,CAAC4B,OAAO,CAACb,UAAU,EAAE;EAC7Bc,UAAU,EAAE;CACb,CAAC;AAEF;;;;AAIA,OAAO,MAAMC,eAAe,gBAGxB9B,MAAM,CAAC4B,OAAO,CAAEZ,CAAC,IAAuBD,UAAU,CAACC,CAAC,CAAC,IAAIA,CAAC,CAACI,IAAI,KAAK,SAAS,EAAE;EACjFS,UAAU,EAAE;CACb,CAAC;AAEF;;;;AAIA,OAAO,MAAME,qBAAqB,gBAY9B/B,MAAM,CAACgC,MAAM,CAAC;EAChBZ,IAAI,eAAEpB,MAAM,CAACiC,OAAO,CAAC,SAAS,CAAC;EAC/BtB,SAAS,EAAER,mBAAmB;EAC9BO,OAAO,EAAET,aAAa;EACtBoB,GAAG,EAAErB,MAAM,CAACkC,MAAM;EAClBZ,OAAO,EAAEtB,MAAM,CAACmC,OAAO;EACvBZ,OAAO,EAAE1B,OAAO,CAACuC,MAAM;EACvBZ,OAAO,EAAExB,MAAM,CAACkC,MAAM;EACtBT,MAAM,EAAEzB,MAAM,CAACkC,MAAM;EACrBR,OAAO,EAAE1B,MAAM,CAACqC;CACjB,CAAkE;AAEnE;;;;AAIA,OAAO,MAAMC,cAAc,gBAkBvBtC,MAAM,CAACuC,KAAK,CAACR,qBAAqB,EAAExB,QAAQ,EAAEO,SAAS,CAG1D;AAED;;;;AAIA,OAAO,MAAM0B,mBAAmB,gBAG5BxC,MAAM,CAACyC,OAAO,cAACzC,MAAM,CAAC0C,KAAK,CAACJ,cAAc,CAAC,CAAC;AAEhD;;;;AAIA,OAAO,MAAMK,6BAA6B,gBAYtC3C,MAAM,CAACgC,MAAM,CAAC;EAChBZ,IAAI,eAAEpB,MAAM,CAACiC,OAAO,CAAC,SAAS,CAAC;EAC/BtB,SAAS,eAAEX,MAAM,CAAC4C,UAAU,CAACzC,mBAAmB,CAAC;EACjDO,OAAO,EAAER,qBAAqB;EAC9BmB,GAAG,EAAErB,MAAM,CAACkC,MAAM;EAClBZ,OAAO,EAAEtB,MAAM,CAACmC,OAAO;EACvBZ,OAAO,EAAE1B,OAAO,CAACgD,cAAc;EAC/BrB,OAAO,EAAExB,MAAM,CAACkC,MAAM;EACtBT,MAAM,EAAEzB,MAAM,CAACkC,MAAM;EACrBR,OAAO,EAAE1B,MAAM,CAACqC;CACjB,CAAiD;AAElD;;;;AAIA,OAAO,MAAMS,sBAAsB,gBAkB/B9C,MAAM,CAACuC,KAAK,CACdI,6BAA6B,eAC7B3C,MAAM,CAAC4C,UAAU,CAACrC,QAAQ,CAAC,eAC3BP,MAAM,CAAC4C,UAAU,CAAC9B,SAAS,CAAC,CACoB;AAElD;;;;AAIA,OAAO,MAAMiC,UAAU,GAAuBC,QAAqB,IAAmB;EACpF,IAAIA,QAAQ,CAAC5B,IAAI,KAAK,SAAS,IAAI,CAAEtB,SAAS,CAACmB,WAAW,CAAC+B,QAAQ,CAAC1B,OAAO,EAAEvB,UAAU,CAACkD,MAAM,CAAE,EAAE;IAChG,OAAO,IAAI;EACb;EACA,
|
1
|
+
{"version":3,"file":"Envelope.js","names":["Headers","Predicate","PrimaryKey","Schema","EntityAddress","EntityAddressFromSelf","SnowflakeFromString","TypeId","Symbol","for","AckChunk","TaggedClass","id","address","requestId","replyId","withRequestId","Interrupt","isEnvelope","u","hasProperty","makeRequest","options","_tag","tag","payload","headers","traceId","spanId","sampled","EnvelopeFromSelf","declare","identifier","RequestFromSelf","PartialEncodedRequest","Struct","Literal","String","Unknown","schema","Boolean","PartialEncoded","Union","PartialEncodedArray","mutable","Array","PartialEncodedRequestFromSelf","typeSchema","schemaFromSelf","PartialEncodedFromSelf","primaryKey","envelope","symbol","primaryKeyByAddress","value","entityType","entityId"],"sources":["../../src/Envelope.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/Message.js
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
/**
|
2
|
+
* @since 1.0.0
|
3
|
+
*/
|
4
|
+
import * as Rpc from "@effect/rpc/Rpc";
|
1
5
|
import * as Data from "effect/Data";
|
2
6
|
import * as Effect from "effect/Effect";
|
3
7
|
import * as FiberRef from "effect/FiberRef";
|
@@ -50,7 +54,22 @@ export class OutgoingRequest extends /*#__PURE__*/Data.TaggedClass("OutgoingRequ
|
|
50
54
|
* @since 1.0.0
|
51
55
|
* @category outgoing
|
52
56
|
*/
|
53
|
-
export class OutgoingEnvelope extends /*#__PURE__*/Data.TaggedClass("OutgoingEnvelope") {
|
57
|
+
export class OutgoingEnvelope extends /*#__PURE__*/Data.TaggedClass("OutgoingEnvelope") {
|
58
|
+
/**
|
59
|
+
* @since 1.0.0
|
60
|
+
*/
|
61
|
+
static interrupt(options) {
|
62
|
+
return new OutgoingEnvelope({
|
63
|
+
envelope: new Envelope.Interrupt(options),
|
64
|
+
rpc: neverRpc
|
65
|
+
});
|
66
|
+
}
|
67
|
+
}
|
68
|
+
const neverRpc = /*#__PURE__*/Rpc.make("Never", {
|
69
|
+
success: Schema.Never,
|
70
|
+
error: Schema.Never,
|
71
|
+
payload: {}
|
72
|
+
});
|
54
73
|
/**
|
55
74
|
* @since 1.0.0
|
56
75
|
* @category serialization / deserialization
|
package/dist/esm/Message.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Message.js","names":["Data","Effect","FiberRef","Option","Schema","MalformedMessage","Envelope","incomingLocalFromOutgoing","self","_tag","IncomingEnvelope","envelope","IncomingRequestLocal","respond","lastSentReply","none","IncomingRequest","TaggedClass","OutgoingRequest","encodedCache","OutgoingEnvelope","serialize","message","succeed","suspend","serializeRequest","serializeEnvelope","flatMap","refail","encode","PartialEncoded","
|
1
|
+
{"version":3,"file":"Message.js","names":["Rpc","Data","Effect","FiberRef","Option","Schema","MalformedMessage","Envelope","incomingLocalFromOutgoing","self","_tag","IncomingEnvelope","envelope","IncomingRequestLocal","respond","lastSentReply","none","IncomingRequest","TaggedClass","OutgoingRequest","encodedCache","OutgoingEnvelope","interrupt","options","Interrupt","rpc","neverRpc","make","success","Never","error","payload","serialize","message","succeed","suspend","serializeRequest","serializeEnvelope","flatMap","refail","encode","PartialEncoded","payloadSchema","pipe","locally","currentContext","context","map","deserializeLocal","encoded","fail","cause","Error","decode","makeRequest"],"sources":["../../src/Message.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|