@effect/workflow 0.12.5 → 0.13.1
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/DurableQueue/package.json +6 -0
- package/dist/cjs/Activity.js +2 -6
- package/dist/cjs/Activity.js.map +1 -1
- package/dist/cjs/DurableClock.js +1 -2
- package/dist/cjs/DurableClock.js.map +1 -1
- package/dist/cjs/DurableDeferred.js +16 -18
- package/dist/cjs/DurableDeferred.js.map +1 -1
- package/dist/cjs/DurableQueue.js +186 -0
- package/dist/cjs/DurableQueue.js.map +1 -0
- package/dist/cjs/Workflow.js +8 -53
- package/dist/cjs/Workflow.js.map +1 -1
- package/dist/cjs/WorkflowEngine.js +234 -3
- package/dist/cjs/WorkflowEngine.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/dts/Activity.d.ts +1 -0
- package/dist/dts/Activity.d.ts.map +1 -1
- package/dist/dts/DurableClock.d.ts.map +1 -1
- package/dist/dts/DurableDeferred.d.ts +2 -2
- package/dist/dts/DurableDeferred.d.ts.map +1 -1
- package/dist/dts/DurableQueue.d.ts +116 -0
- package/dist/dts/DurableQueue.d.ts.map +1 -0
- package/dist/dts/Workflow.d.ts +2 -2
- package/dist/dts/Workflow.d.ts.map +1 -1
- package/dist/dts/WorkflowEngine.d.ts +59 -30
- package/dist/dts/WorkflowEngine.d.ts.map +1 -1
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/Activity.js +2 -6
- package/dist/esm/Activity.js.map +1 -1
- package/dist/esm/DurableClock.js +1 -2
- package/dist/esm/DurableClock.js.map +1 -1
- package/dist/esm/DurableDeferred.js +16 -18
- package/dist/esm/DurableDeferred.js.map +1 -1
- package/dist/esm/DurableQueue.js +176 -0
- package/dist/esm/DurableQueue.js.map +1 -0
- package/dist/esm/Workflow.js +7 -52
- package/dist/esm/Workflow.js.map +1 -1
- package/dist/esm/WorkflowEngine.js +232 -2
- package/dist/esm/WorkflowEngine.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +13 -5
- package/src/Activity.ts +3 -8
- package/src/DurableClock.ts +1 -2
- package/src/DurableDeferred.ts +24 -30
- package/src/DurableQueue.ts +332 -0
- package/src/Workflow.ts +9 -61
- package/src/WorkflowEngine.ts +509 -44
- package/src/index.ts +5 -0
|
@@ -4,38 +4,33 @@
|
|
|
4
4
|
import type * as Cause from "effect/Cause";
|
|
5
5
|
import * as Context from "effect/Context";
|
|
6
6
|
import * as Effect from "effect/Effect";
|
|
7
|
-
import
|
|
8
|
-
import
|
|
7
|
+
import * as Exit from "effect/Exit";
|
|
8
|
+
import * as Layer from "effect/Layer";
|
|
9
|
+
import * as Schedule from "effect/Schedule";
|
|
10
|
+
import * as Schema from "effect/Schema";
|
|
9
11
|
import type * as Scope from "effect/Scope";
|
|
10
12
|
import type * as Activity from "./Activity.js";
|
|
11
13
|
import type { DurableClock } from "./DurableClock.js";
|
|
12
14
|
import type * as DurableDeferred from "./DurableDeferred.js";
|
|
13
|
-
import
|
|
15
|
+
import * as Workflow from "./Workflow.js";
|
|
14
16
|
declare const WorkflowEngine_base: Context.TagClass<WorkflowEngine, "@effect/workflow/WorkflowEngine", {
|
|
15
17
|
/**
|
|
16
18
|
* Register a workflow with the engine.
|
|
17
19
|
*/
|
|
18
|
-
readonly register: (workflow: Workflow.
|
|
20
|
+
readonly register: <Name extends string, Payload extends Workflow.AnyStructSchema, Success extends Schema.Schema.Any, Error extends Schema.Schema.All, R>(workflow: Workflow.Workflow<Name, Payload, Success, Error>, execute: (payload: Payload["Type"], executionId: string) => Effect.Effect<Success["Type"], Error["Type"], R>) => Effect.Effect<void, never, Scope.Scope | Exclude<R, WorkflowEngine | WorkflowInstance | Workflow.Execution<Name> | Scope.Scope> | Payload["Context"] | Success["Context"] | Error["Context"]>;
|
|
19
21
|
/**
|
|
20
22
|
* Execute a registered workflow.
|
|
21
23
|
*/
|
|
22
|
-
readonly execute: <const Discard extends boolean>(options: {
|
|
23
|
-
readonly workflow: Workflow.Any;
|
|
24
|
+
readonly execute: <Name extends string, Payload extends Workflow.AnyStructSchema, Success extends Schema.Schema.Any, Error extends Schema.Schema.All, const Discard extends boolean = false>(workflow: Workflow.Workflow<Name, Payload, Success, Error>, options: {
|
|
24
25
|
readonly executionId: string;
|
|
25
|
-
readonly payload:
|
|
26
|
-
readonly discard
|
|
27
|
-
readonly
|
|
28
|
-
}) => Effect.Effect<Discard extends true ?
|
|
26
|
+
readonly payload: Payload["Type"];
|
|
27
|
+
readonly discard?: Discard | undefined;
|
|
28
|
+
readonly suspendedRetrySchedule?: Schedule.Schedule<any, unknown> | undefined;
|
|
29
|
+
}) => Effect.Effect<Discard extends true ? string : Success["Type"], Error["Type"], Payload["Context"] | Success["Context"] | Error["Context"]>;
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* If the workflow has not run yet, it will return `undefined`, otherwise it
|
|
33
|
-
* will return the current `Workflow.Result`.
|
|
31
|
+
* Execute a registered workflow.
|
|
34
32
|
*/
|
|
35
|
-
readonly poll: (
|
|
36
|
-
readonly workflow: Workflow.Any;
|
|
37
|
-
readonly executionId: string;
|
|
38
|
-
}) => Effect.Effect<Workflow.Result<unknown, unknown> | undefined>;
|
|
33
|
+
readonly poll: <Name extends string, Payload extends Workflow.AnyStructSchema, Success extends Schema.Schema.Any, Error extends Schema.Schema.All>(workflow: Workflow.Workflow<Name, Payload, Success, Error>, executionId: string) => Effect.Effect<Workflow.Result<Success["Type"], Error["Type"]> | undefined, never, Success["Context"] | Error["Context"]>;
|
|
39
34
|
/**
|
|
40
35
|
* Interrupt a registered workflow.
|
|
41
36
|
*/
|
|
@@ -47,35 +42,31 @@ declare const WorkflowEngine_base: Context.TagClass<WorkflowEngine, "@effect/wor
|
|
|
47
42
|
/**
|
|
48
43
|
* Execute an activity from a workflow.
|
|
49
44
|
*/
|
|
50
|
-
readonly activityExecute: (
|
|
51
|
-
readonly activity: Activity.Any;
|
|
52
|
-
readonly attempt: number;
|
|
53
|
-
}) => Effect.Effect<Workflow.Result<unknown, unknown>, never, WorkflowInstance>;
|
|
45
|
+
readonly activityExecute: <Success extends Schema.Schema.Any, Error extends Schema.Schema.All, R>(activity: Activity.Activity<Success, Error, R>, attempt: number) => Effect.Effect<Workflow.Result<Success["Type"], Error["Type"]>, never, Success["Context"] | Error["Context"] | R | WorkflowInstance>;
|
|
54
46
|
/**
|
|
55
47
|
* Try to retrieve the result of an DurableDeferred
|
|
56
48
|
*/
|
|
57
|
-
readonly deferredResult: (deferred: DurableDeferred.
|
|
49
|
+
readonly deferredResult: <Success extends Schema.Schema.Any, Error extends Schema.Schema.All>(deferred: DurableDeferred.DurableDeferred<Success, Error>) => Effect.Effect<Exit.Exit<Success["Type"], Error["Type"]> | undefined, never, WorkflowInstance>;
|
|
58
50
|
/**
|
|
59
51
|
* Set the result of a DurableDeferred, and then resume any waiting
|
|
60
52
|
* workflows.
|
|
61
53
|
*/
|
|
62
|
-
readonly deferredDone: (options: {
|
|
54
|
+
readonly deferredDone: <Success extends Schema.Schema.Any, Error extends Schema.Schema.All>(deferred: DurableDeferred.DurableDeferred<Success, Error>, options: {
|
|
63
55
|
readonly workflowName: string;
|
|
64
56
|
readonly executionId: string;
|
|
65
57
|
readonly deferredName: string;
|
|
66
|
-
readonly exit:
|
|
67
|
-
}) => Effect.Effect<void>;
|
|
58
|
+
readonly exit: Exit.Exit<Success["Type"], Error["Type"]>;
|
|
59
|
+
}) => Effect.Effect<void, never, Success["Context"] | Error["Context"]>;
|
|
68
60
|
/**
|
|
69
61
|
* Schedule a wake up for a DurableClock
|
|
70
62
|
*/
|
|
71
|
-
readonly scheduleClock: (options: {
|
|
72
|
-
readonly workflow: Workflow.Any;
|
|
63
|
+
readonly scheduleClock: (workflow: Workflow.Any, options: {
|
|
73
64
|
readonly executionId: string;
|
|
74
65
|
readonly clock: DurableClock;
|
|
75
66
|
}) => Effect.Effect<void>;
|
|
76
67
|
}>;
|
|
77
68
|
/**
|
|
78
|
-
* @since
|
|
69
|
+
* @since 4.0.0
|
|
79
70
|
* @category Services
|
|
80
71
|
*/
|
|
81
72
|
export declare class WorkflowEngine extends WorkflowEngine_base {
|
|
@@ -108,11 +99,49 @@ declare const WorkflowInstance_base: Context.TagClass<WorkflowInstance, "@effect
|
|
|
108
99
|
};
|
|
109
100
|
}>;
|
|
110
101
|
/**
|
|
111
|
-
* @since
|
|
102
|
+
* @since 4.0.0
|
|
112
103
|
* @category Services
|
|
113
104
|
*/
|
|
114
105
|
export declare class WorkflowInstance extends WorkflowInstance_base {
|
|
115
106
|
static initial(workflow: Workflow.Any, executionId: string): WorkflowInstance["Type"];
|
|
116
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* @since 4.0.0
|
|
110
|
+
* @category Encoded
|
|
111
|
+
*/
|
|
112
|
+
export interface Encoded {
|
|
113
|
+
readonly register: (workflow: Workflow.Any, execute: (payload: object, executionId: string) => Effect.Effect<unknown, unknown, WorkflowInstance | WorkflowEngine>) => Effect.Effect<void, never, Scope.Scope>;
|
|
114
|
+
readonly execute: <const Discard extends boolean>(workflow: Workflow.Any, options: {
|
|
115
|
+
readonly executionId: string;
|
|
116
|
+
readonly payload: object;
|
|
117
|
+
readonly discard: Discard;
|
|
118
|
+
readonly parent?: WorkflowInstance["Type"] | undefined;
|
|
119
|
+
}) => Effect.Effect<Discard extends true ? void : Workflow.Result<unknown, unknown>>;
|
|
120
|
+
readonly poll: (workflow: Workflow.Any, executionId: string) => Effect.Effect<Workflow.Result<unknown, unknown> | undefined>;
|
|
121
|
+
readonly interrupt: (workflow: Workflow.Any, executionId: string) => Effect.Effect<void>;
|
|
122
|
+
readonly resume: (workflow: Workflow.Any, executionId: string) => Effect.Effect<void>;
|
|
123
|
+
readonly activityExecute: (activity: Activity.Any, attempt: number) => Effect.Effect<Workflow.Result<unknown, unknown>, never, WorkflowInstance>;
|
|
124
|
+
readonly deferredResult: (deferred: DurableDeferred.Any) => Effect.Effect<Exit.Exit<unknown, unknown> | undefined, never, WorkflowInstance>;
|
|
125
|
+
readonly deferredDone: (options: {
|
|
126
|
+
readonly workflowName: string;
|
|
127
|
+
readonly executionId: string;
|
|
128
|
+
readonly deferredName: string;
|
|
129
|
+
readonly exit: Exit.Exit<unknown, unknown>;
|
|
130
|
+
}) => Effect.Effect<void>;
|
|
131
|
+
readonly scheduleClock: (workflow: Workflow.Any, options: {
|
|
132
|
+
readonly executionId: string;
|
|
133
|
+
readonly clock: DurableClock;
|
|
134
|
+
}) => Effect.Effect<void>;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* @since 4.0.0
|
|
138
|
+
* @category Constructors
|
|
139
|
+
*/
|
|
140
|
+
export declare const makeUnsafe: (options: Encoded) => WorkflowEngine["Type"];
|
|
141
|
+
/**
|
|
142
|
+
* @since 1.0.0
|
|
143
|
+
* @category In-memory
|
|
144
|
+
*/
|
|
145
|
+
export declare const layerMemory: Layer.Layer<WorkflowEngine>;
|
|
117
146
|
export {};
|
|
118
147
|
//# sourceMappingURL=WorkflowEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowEngine.d.ts","sourceRoot":"","sources":["../../src/WorkflowEngine.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"WorkflowEngine.d.ts","sourceRoot":"","sources":["../../src/WorkflowEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/index.d.ts
CHANGED
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA"}
|
package/dist/esm/Activity.js
CHANGED
|
@@ -97,15 +97,11 @@ const makeExecute = /*#__PURE__*/Effect.fnUntraced(function* (activity) {
|
|
|
97
97
|
yield* Effect.annotateCurrentSpan({
|
|
98
98
|
executionId: instance.executionId
|
|
99
99
|
});
|
|
100
|
-
const result = yield* Workflow.wrapActivityResult(engine.activityExecute(
|
|
101
|
-
activity,
|
|
102
|
-
attempt
|
|
103
|
-
}), _ => _._tag === "Suspended");
|
|
100
|
+
const result = yield* Workflow.wrapActivityResult(engine.activityExecute(activity, attempt), _ => _._tag === "Suspended");
|
|
104
101
|
if (result._tag === "Suspended") {
|
|
105
102
|
return yield* Workflow.suspend(instance);
|
|
106
103
|
}
|
|
107
|
-
|
|
108
|
-
return yield* exit;
|
|
104
|
+
return yield* result.exit;
|
|
109
105
|
}, (effect, activity) => Effect.withSpan(effect, activity.name, {
|
|
110
106
|
captureStackTrace: false
|
|
111
107
|
}));
|
package/dist/esm/Activity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Activity.js","names":["Cause","Context","Effect","Effectable","dual","Schedule","Schema","DurableDeferred","makeHashDigest","Workflow","TypeId","Symbol","for","make","options","successSchema","success","Void","errorSchema","error","Never","execute","executeWithoutInterrupt","retryOnInterrupt","name","interruptRetryPolicy","self","CommitPrototype","exitSchema","ExitFromSelf","failure","defect","Defect","executeEncoded","matchEffect","onFailure","flatMap","orDie","encode","fail","onSuccess","value","commit","makeExecute","exponential","pipe","union","spaced","recurs","whileInput","cause","isInterrupted","policy","effect","sandbox","retry","catchAll","failCause","die","suspend","attempt","provideService","CurrentAttempt","Reference","defaultValue","executionIdWithAttempt","gen","instance","InstanceTag","executionId","raceAll","activities","Union","map","activity","effects","EngineTag","GenericTag","fnUntraced","engine","annotateCurrentSpan","result","wrapActivityResult","activityExecute","_","_tag","exit","
|
|
1
|
+
{"version":3,"file":"Activity.js","names":["Cause","Context","Effect","Effectable","dual","Schedule","Schema","DurableDeferred","makeHashDigest","Workflow","TypeId","Symbol","for","make","options","successSchema","success","Void","errorSchema","error","Never","execute","executeWithoutInterrupt","retryOnInterrupt","name","interruptRetryPolicy","self","CommitPrototype","exitSchema","ExitFromSelf","failure","defect","Defect","executeEncoded","matchEffect","onFailure","flatMap","orDie","encode","fail","onSuccess","value","commit","makeExecute","exponential","pipe","union","spaced","recurs","whileInput","cause","isInterrupted","policy","effect","sandbox","retry","catchAll","failCause","die","suspend","attempt","provideService","CurrentAttempt","Reference","defaultValue","executionIdWithAttempt","gen","instance","InstanceTag","executionId","raceAll","activities","Union","map","activity","effects","EngineTag","GenericTag","fnUntraced","engine","annotateCurrentSpan","result","wrapActivityResult","activityExecute","_","_tag","exit","withSpan","captureStackTrace"],"sources":["../../src/Activity.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/DurableClock.js
CHANGED
|
@@ -42,8 +42,7 @@ export const sleep = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
42
42
|
const engine = yield* EngineTag;
|
|
43
43
|
const instance = yield* InstanceTag;
|
|
44
44
|
const clock = make(options);
|
|
45
|
-
yield* engine.scheduleClock({
|
|
46
|
-
workflow: instance.workflow,
|
|
45
|
+
yield* engine.scheduleClock(instance.workflow, {
|
|
47
46
|
executionId: instance.executionId,
|
|
48
47
|
clock
|
|
49
48
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableClock.js","names":["Context","Duration","Effect","Activity","DurableDeferred","TypeId","Symbol","for","make","options","name","duration","decode","deferred","EngineTag","GenericTag","InstanceTag","sleep","fnUntraced","isZero","inMemoryThreshold","defaultInMemoryThreshold","lessThanOrEqualTo","execute","engine","instance","clock","scheduleClock","workflow","executionId","await","seconds"],"sources":["../../src/DurableClock.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAGvD;;;;AAIA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,+BAA+B,CAAC;AAmBhF;;;;AAIA,OAAO,MAAMC,IAAI,GAAIC,OAGpB,KAAoB;EACnB,CAACJ,MAAM,GAAGA,MAAM;EAChBK,IAAI,EAAED,OAAO,CAACC,IAAI;EAClBC,QAAQ,EAAEV,QAAQ,CAACW,MAAM,CAACH,OAAO,CAACE,QAAQ,CAAC;EAC3CE,QAAQ,EAAET,eAAe,CAACI,IAAI,CAAC,gBAAgBC,OAAO,CAACC,IAAI,EAAE;CAC9D,CAAC;AAEF,MAAMI,SAAS,gBAAGd,OAAO,CAACe,UAAU,CAClC,iCAAqE,CACtE;AAED,MAAMC,WAAW,gBAAGhB,OAAO,CAACe,UAAU,CACpC,kDAAwF,CACzF;AAED;;;;AAIA,OAAO,MAAME,KAAK,gBAgBdf,MAAM,CAACgB,UAAU,CAAC,WAAUT,OAI/B;EACC,MAAME,QAAQ,GAAGV,QAAQ,CAACW,MAAM,CAACH,OAAO,CAACE,QAAQ,CAAC;EAClD,IAAIV,QAAQ,CAACkB,MAAM,CAACR,QAAQ,CAAC,EAAE;IAC7B;EACF;EAEA,MAAMS,iBAAiB,GAAGX,OAAO,CAACW,iBAAiB,GAC/CnB,QAAQ,CAACW,MAAM,CAACH,OAAO,CAACW,iBAAiB,CAAC,GAC1CC,wBAAwB;EAE5B,IAAIpB,QAAQ,CAACqB,iBAAiB,CAACX,QAAQ,EAAES,iBAAiB,CAAC,EAAE;IAC3D,OAAO,OAAOjB,QAAQ,CAACK,IAAI,CAAC;MAC1BE,IAAI,EAAE,gBAAgBD,OAAO,CAACC,IAAI,EAAE;MACpCa,OAAO,EAAErB,MAAM,CAACe,KAAK,CAACN,QAAQ;KAC/B,CAAC;EACJ;EAEA,MAAMa,MAAM,GAAG,OAAOV,SAAS;EAC/B,MAAMW,QAAQ,GAAG,OAAOT,WAAW;EACnC,MAAMU,KAAK,GAAGlB,IAAI,CAACC,OAAO,CAAC;EAC3B,OAAOe,MAAM,CAACG,aAAa,
|
|
1
|
+
{"version":3,"file":"DurableClock.js","names":["Context","Duration","Effect","Activity","DurableDeferred","TypeId","Symbol","for","make","options","name","duration","decode","deferred","EngineTag","GenericTag","InstanceTag","sleep","fnUntraced","isZero","inMemoryThreshold","defaultInMemoryThreshold","lessThanOrEqualTo","execute","engine","instance","clock","scheduleClock","workflow","executionId","await","seconds"],"sources":["../../src/DurableClock.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAGvD;;;;AAIA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,+BAA+B,CAAC;AAmBhF;;;;AAIA,OAAO,MAAMC,IAAI,GAAIC,OAGpB,KAAoB;EACnB,CAACJ,MAAM,GAAGA,MAAM;EAChBK,IAAI,EAAED,OAAO,CAACC,IAAI;EAClBC,QAAQ,EAAEV,QAAQ,CAACW,MAAM,CAACH,OAAO,CAACE,QAAQ,CAAC;EAC3CE,QAAQ,EAAET,eAAe,CAACI,IAAI,CAAC,gBAAgBC,OAAO,CAACC,IAAI,EAAE;CAC9D,CAAC;AAEF,MAAMI,SAAS,gBAAGd,OAAO,CAACe,UAAU,CAClC,iCAAqE,CACtE;AAED,MAAMC,WAAW,gBAAGhB,OAAO,CAACe,UAAU,CACpC,kDAAwF,CACzF;AAED;;;;AAIA,OAAO,MAAME,KAAK,gBAgBdf,MAAM,CAACgB,UAAU,CAAC,WAAUT,OAI/B;EACC,MAAME,QAAQ,GAAGV,QAAQ,CAACW,MAAM,CAACH,OAAO,CAACE,QAAQ,CAAC;EAClD,IAAIV,QAAQ,CAACkB,MAAM,CAACR,QAAQ,CAAC,EAAE;IAC7B;EACF;EAEA,MAAMS,iBAAiB,GAAGX,OAAO,CAACW,iBAAiB,GAC/CnB,QAAQ,CAACW,MAAM,CAACH,OAAO,CAACW,iBAAiB,CAAC,GAC1CC,wBAAwB;EAE5B,IAAIpB,QAAQ,CAACqB,iBAAiB,CAACX,QAAQ,EAAES,iBAAiB,CAAC,EAAE;IAC3D,OAAO,OAAOjB,QAAQ,CAACK,IAAI,CAAC;MAC1BE,IAAI,EAAE,gBAAgBD,OAAO,CAACC,IAAI,EAAE;MACpCa,OAAO,EAAErB,MAAM,CAACe,KAAK,CAACN,QAAQ;KAC/B,CAAC;EACJ;EAEA,MAAMa,MAAM,GAAG,OAAOV,SAAS;EAC/B,MAAMW,QAAQ,GAAG,OAAOT,WAAW;EACnC,MAAMU,KAAK,GAAGlB,IAAI,CAACC,OAAO,CAAC;EAC3B,OAAOe,MAAM,CAACG,aAAa,CAACF,QAAQ,CAACG,QAAQ,EAAE;IAC7CC,WAAW,EAAEJ,QAAQ,CAACI,WAAW;IACjCH;GACD,CAAC;EACF,OAAO,OAAOtB,eAAe,CAAC0B,KAAK,CAACJ,KAAK,CAACb,QAAQ,CAAC;AACrD,CAAC,CAAC;AAEF,MAAMQ,wBAAwB,gBAAGpB,QAAQ,CAAC8B,OAAO,CAAC,EAAE,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
|
|
|
3
3
|
import * as Encoding from "effect/Encoding";
|
|
4
4
|
import * as Exit from "effect/Exit";
|
|
5
5
|
import { dual } from "effect/Function";
|
|
6
|
-
import * as
|
|
6
|
+
import * as Predicate from "effect/Predicate";
|
|
7
7
|
import * as Schema from "effect/Schema";
|
|
8
8
|
import * as Workflow from "./Workflow.js";
|
|
9
9
|
/**
|
|
@@ -20,7 +20,7 @@ export const make = (name, options) => ({
|
|
|
20
20
|
name,
|
|
21
21
|
successSchema: options?.success ?? Schema.Void,
|
|
22
22
|
errorSchema: options?.error ?? Schema.Never,
|
|
23
|
-
exitSchema: Schema.
|
|
23
|
+
exitSchema: Schema.ExitFromSelf({
|
|
24
24
|
success: options?.success ?? Schema.Void,
|
|
25
25
|
failure: options?.error ?? Schema.Never,
|
|
26
26
|
defect: Schema.Defect
|
|
@@ -41,11 +41,11 @@ const CurrentAttempt = /*#__PURE__*/Context.Reference()("@effect/workflow/Activi
|
|
|
41
41
|
const await_ = /*#__PURE__*/Effect.fnUntraced(function* (self) {
|
|
42
42
|
const engine = yield* EngineTag;
|
|
43
43
|
const instance = yield* InstanceTag;
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
44
|
+
const exit = yield* Workflow.wrapActivityResult(engine.deferredResult(self), Predicate.isUndefined);
|
|
45
|
+
if (exit === undefined) {
|
|
46
46
|
return yield* Workflow.suspend(instance);
|
|
47
47
|
}
|
|
48
|
-
return yield*
|
|
48
|
+
return yield* exit;
|
|
49
49
|
});
|
|
50
50
|
export {
|
|
51
51
|
/**
|
|
@@ -60,16 +60,15 @@ await_ as await };
|
|
|
60
60
|
export const into = /*#__PURE__*/dual(2, (effect, self) => Effect.contextWithEffect(context => {
|
|
61
61
|
const engine = Context.get(context, EngineTag);
|
|
62
62
|
const instance = Context.get(context, InstanceTag);
|
|
63
|
-
return Effect.onExit(effect,
|
|
64
|
-
if (instance.suspended) return;
|
|
65
|
-
|
|
66
|
-
yield* engine.deferredDone({
|
|
63
|
+
return Effect.onExit(effect, exit => {
|
|
64
|
+
if (instance.suspended) return Effect.void;
|
|
65
|
+
return engine.deferredDone(self, {
|
|
67
66
|
workflowName: instance.workflow.name,
|
|
68
67
|
executionId: instance.executionId,
|
|
69
68
|
deferredName: self.name,
|
|
70
|
-
exit
|
|
69
|
+
exit
|
|
71
70
|
});
|
|
72
|
-
})
|
|
71
|
+
});
|
|
73
72
|
}));
|
|
74
73
|
/**
|
|
75
74
|
* @since 1.0.0
|
|
@@ -82,9 +81,9 @@ export const raceAll = options => {
|
|
|
82
81
|
});
|
|
83
82
|
return Effect.gen(function* () {
|
|
84
83
|
const engine = yield* EngineTag;
|
|
85
|
-
const
|
|
86
|
-
if (
|
|
87
|
-
return yield* Effect.flatten(
|
|
84
|
+
const exit = yield* Workflow.wrapActivityResult(engine.deferredResult(deferred), Predicate.isUndefined);
|
|
85
|
+
if (exit) {
|
|
86
|
+
return yield* Effect.flatten(exit);
|
|
88
87
|
}
|
|
89
88
|
return yield* into(Effect.raceAll(options.effects), deferred);
|
|
90
89
|
});
|
|
@@ -166,14 +165,13 @@ export const tokenFromPayload = /*#__PURE__*/dual(2, (self, options) => Effect.m
|
|
|
166
165
|
export const done = /*#__PURE__*/dual(2, /*#__PURE__*/Effect.fnUntraced(function* (self, options) {
|
|
167
166
|
const engine = yield* EngineTag;
|
|
168
167
|
const token = TokenParsed.fromString(options.token);
|
|
169
|
-
|
|
170
|
-
yield* engine.deferredDone({
|
|
168
|
+
yield* engine.deferredDone(self, {
|
|
171
169
|
workflowName: token.workflowName,
|
|
172
170
|
executionId: token.executionId,
|
|
173
171
|
deferredName: token.deferredName,
|
|
174
|
-
exit: exit
|
|
172
|
+
exit: options.exit
|
|
175
173
|
});
|
|
176
|
-
}
|
|
174
|
+
}));
|
|
177
175
|
/**
|
|
178
176
|
* @since 1.0.0
|
|
179
177
|
* @category Combinators
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableDeferred.js","names":["Context","Effect","Encoding","Exit","dual","
|
|
1
|
+
{"version":3,"file":"DurableDeferred.js","names":["Context","Effect","Encoding","Exit","dual","Predicate","Schema","Workflow","TypeId","Symbol","for","make","name","options","successSchema","success","Void","errorSchema","error","Never","exitSchema","ExitFromSelf","failure","defect","Defect","withActivityAttempt","gen","attempt","CurrentAttempt","EngineTag","GenericTag","InstanceTag","Reference","defaultValue","await_","fnUntraced","self","engine","instance","exit","wrapActivityResult","deferredResult","isUndefined","undefined","suspend","await","into","effect","contextWithEffect","context","get","onExit","suspended","void","deferredDone","workflowName","workflow","executionId","deferredName","raceAll","deferred","flatten","effects","TokenTypeId","Token","String","pipe","brand","TokenParsed","Class","asToken","encodeBase64Url","JSON","stringify","FromString","StringFromBase64Url","compose","parseJson","Tuple","transform","decode","encode","parsed","fromString","decodeSync","encodeSync","token","tokenFromExecutionId","tokenFromPayload","map","payload","done","succeed","value","fail","failCause","cause"],"sources":["../../src/DurableDeferred.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as PersistedQueue from "@effect/experimental/PersistedQueue";
|
|
5
|
+
import * as Context from "effect/Context";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Layer from "effect/Layer";
|
|
8
|
+
import * as Schedule from "effect/Schedule";
|
|
9
|
+
import * as Schema from "effect/Schema";
|
|
10
|
+
import * as Activity from "./Activity.js";
|
|
11
|
+
import * as DurableDeferred from "./DurableDeferred.js";
|
|
12
|
+
import { makeHashDigest } from "./internal/crypto.js";
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category Type IDs
|
|
16
|
+
*/
|
|
17
|
+
export const TypeId = "~@effect/workflow/DurableQueue";
|
|
18
|
+
/**
|
|
19
|
+
* A `DurableQueue` wraps a `PersistedQueue`, providing a way to wait for items
|
|
20
|
+
* to finish processing using a `DurableDeferred`.
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { DurableQueue, Workflow } from "@effect/workflow"
|
|
24
|
+
* import { Effect, Schema } from "effect"
|
|
25
|
+
*
|
|
26
|
+
* // Define a DurableQueue that can be used to derive workers and offer items for
|
|
27
|
+
* // processing.
|
|
28
|
+
* const ApiQueue = DurableQueue.make({
|
|
29
|
+
* name: "ApiQueue",
|
|
30
|
+
* payload: {
|
|
31
|
+
* id: Schema.String
|
|
32
|
+
* },
|
|
33
|
+
* success: Schema.Void,
|
|
34
|
+
* error: Schema.Never,
|
|
35
|
+
* idempotencyKey(payload) {
|
|
36
|
+
* return payload.id
|
|
37
|
+
* }
|
|
38
|
+
* })
|
|
39
|
+
*
|
|
40
|
+
* const MyWorkflow = Workflow.make({
|
|
41
|
+
* name: "MyWorkflow",
|
|
42
|
+
* payload: {
|
|
43
|
+
* id: Schema.String
|
|
44
|
+
* },
|
|
45
|
+
* idempotencyKey: ({ id }) => id
|
|
46
|
+
* })
|
|
47
|
+
*
|
|
48
|
+
* const MyWorkflowLayer = MyWorkflow.toLayer(
|
|
49
|
+
* Effect.fn(function*() {
|
|
50
|
+
* // Add an item to the DurableQueue defined above.
|
|
51
|
+
* //
|
|
52
|
+
* // When the worker has finished processing the item, the workflow will
|
|
53
|
+
* // resume.
|
|
54
|
+
* //
|
|
55
|
+
* yield* DurableQueue.process(ApiQueue, { id: "api-call-1" })
|
|
56
|
+
*
|
|
57
|
+
* yield* Effect.log("Workflow succeeded!")
|
|
58
|
+
* })
|
|
59
|
+
* )
|
|
60
|
+
*
|
|
61
|
+
* // Define a worker layer that can process items from the DurableQueue.
|
|
62
|
+
* const ApiWorker = DurableQueue.worker(
|
|
63
|
+
* ApiQueue,
|
|
64
|
+
* Effect.fn(function*({ id }) {
|
|
65
|
+
* yield* Effect.log(`Worker processing API call with id: ${id}`)
|
|
66
|
+
* }),
|
|
67
|
+
* { concurrency: 5 } // Process up to 5 items concurrently
|
|
68
|
+
* )
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @since 1.0.0
|
|
72
|
+
* @category Constructors
|
|
73
|
+
*/
|
|
74
|
+
export const make = options => ({
|
|
75
|
+
[TypeId]: TypeId,
|
|
76
|
+
name: options.name,
|
|
77
|
+
payloadSchema: Schema.isSchema(options.payload) ? options.payload : Schema.Struct(options.payload),
|
|
78
|
+
idempotencyKey: options.idempotencyKey,
|
|
79
|
+
deferred: DurableDeferred.make(`DurableQueue/${options.name}`, {
|
|
80
|
+
success: options.success,
|
|
81
|
+
error: options.error
|
|
82
|
+
})
|
|
83
|
+
});
|
|
84
|
+
const queueSchemas = /*#__PURE__*/new WeakMap();
|
|
85
|
+
const getQueueSchema = payload => {
|
|
86
|
+
let schema = queueSchemas.get(payload);
|
|
87
|
+
if (!schema) {
|
|
88
|
+
schema = Schema.Struct({
|
|
89
|
+
token: Schema.String,
|
|
90
|
+
traceId: Schema.String,
|
|
91
|
+
spanId: Schema.String,
|
|
92
|
+
sampled: Schema.Boolean,
|
|
93
|
+
payload
|
|
94
|
+
});
|
|
95
|
+
queueSchemas.set(payload, schema);
|
|
96
|
+
}
|
|
97
|
+
return schema;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* @since 1.0.0
|
|
101
|
+
* @category Processing
|
|
102
|
+
*/
|
|
103
|
+
export const process = /*#__PURE__*/Effect.fnUntraced(function* (self, payload, options) {
|
|
104
|
+
const key = yield* makeHashDigest(self.idempotencyKey(payload));
|
|
105
|
+
const deferred = DurableDeferred.make(`${self.deferred.name}/${key}`, {
|
|
106
|
+
success: self.deferred.successSchema,
|
|
107
|
+
error: self.deferred.errorSchema
|
|
108
|
+
});
|
|
109
|
+
yield* Activity.make({
|
|
110
|
+
name: `DurableQueue/${self.name}/${key}`,
|
|
111
|
+
execute: Effect.gen(function* () {
|
|
112
|
+
const span = yield* Effect.orDie(Effect.currentSpan);
|
|
113
|
+
const queue = yield* PersistedQueue.make({
|
|
114
|
+
name: `DurableQueue/${self.name}`,
|
|
115
|
+
schema: getQueueSchema(self.payloadSchema)
|
|
116
|
+
});
|
|
117
|
+
const token = yield* DurableDeferred.token(deferred);
|
|
118
|
+
yield* queue.offer({
|
|
119
|
+
token,
|
|
120
|
+
payload,
|
|
121
|
+
traceId: span.traceId,
|
|
122
|
+
spanId: span.spanId,
|
|
123
|
+
sampled: span.sampled
|
|
124
|
+
}).pipe(Effect.tapErrorCause(Effect.logWarning), Effect.catchTag("ParseError", Effect.die), Effect.retry(options?.retrySchedule ?? defaultRetrySchedule), Effect.orDie, Effect.annotateLogs({
|
|
125
|
+
package: "@effect/workflow",
|
|
126
|
+
module: "DurableQueue",
|
|
127
|
+
fiber: "process",
|
|
128
|
+
queueName: self.name
|
|
129
|
+
}));
|
|
130
|
+
})
|
|
131
|
+
});
|
|
132
|
+
return yield* DurableDeferred.await(deferred);
|
|
133
|
+
});
|
|
134
|
+
const defaultRetrySchedule = /*#__PURE__*/Schedule.exponential(500, 1.5).pipe(/*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.spaced("1 minute")));
|
|
135
|
+
/**
|
|
136
|
+
* @since 1.0.0
|
|
137
|
+
* @category Worker
|
|
138
|
+
*/
|
|
139
|
+
export const makeWorker = /*#__PURE__*/Effect.fnUntraced(function* (self, f, options) {
|
|
140
|
+
const queue = yield* PersistedQueue.make({
|
|
141
|
+
name: `DurableQueue/${self.name}`,
|
|
142
|
+
schema: getQueueSchema(self.payloadSchema)
|
|
143
|
+
});
|
|
144
|
+
const concurrency = options?.concurrency ?? 1;
|
|
145
|
+
const worker = queue.take(item_ => {
|
|
146
|
+
const item = item_;
|
|
147
|
+
return f(item.payload).pipe(Effect.exit, Effect.flatMap(exit => DurableDeferred.done(self.deferred, {
|
|
148
|
+
token: item.token,
|
|
149
|
+
exit
|
|
150
|
+
})), Effect.asVoid, Effect.withSpan(`DurableQueue/${self.name}/worker`, {
|
|
151
|
+
captureStackTrace: false,
|
|
152
|
+
parent: {
|
|
153
|
+
_tag: "ExternalSpan",
|
|
154
|
+
traceId: item.traceId,
|
|
155
|
+
spanId: item.spanId,
|
|
156
|
+
sampled: item.sampled,
|
|
157
|
+
context: Context.empty()
|
|
158
|
+
}
|
|
159
|
+
}));
|
|
160
|
+
}).pipe(Effect.catchAllCause(Effect.logWarning), Effect.forever, Effect.annotateLogs({
|
|
161
|
+
package: "@effect/workflow",
|
|
162
|
+
module: "DurableQueue",
|
|
163
|
+
fiber: "worker"
|
|
164
|
+
}));
|
|
165
|
+
yield* Effect.replicateEffect(worker, concurrency, {
|
|
166
|
+
concurrency,
|
|
167
|
+
discard: true
|
|
168
|
+
});
|
|
169
|
+
return yield* Effect.never;
|
|
170
|
+
});
|
|
171
|
+
/**
|
|
172
|
+
* @since 1.0.0
|
|
173
|
+
* @category Worker
|
|
174
|
+
*/
|
|
175
|
+
export const worker = (self, f, options) => Layer.scopedDiscard(Effect.forkScoped(makeWorker(self, f, options)));
|
|
176
|
+
//# sourceMappingURL=DurableQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DurableQueue.js","names":["PersistedQueue","Context","Effect","Layer","Schedule","Schema","Activity","DurableDeferred","makeHashDigest","TypeId","make","options","name","payloadSchema","isSchema","payload","Struct","idempotencyKey","deferred","success","error","queueSchemas","WeakMap","getQueueSchema","schema","get","token","String","traceId","spanId","sampled","Boolean","set","process","fnUntraced","self","key","successSchema","errorSchema","execute","gen","span","orDie","currentSpan","queue","offer","pipe","tapErrorCause","logWarning","catchTag","die","retry","retrySchedule","defaultRetrySchedule","annotateLogs","package","module","fiber","queueName","await","exponential","union","spaced","makeWorker","f","concurrency","worker","take","item_","item","exit","flatMap","done","asVoid","withSpan","captureStackTrace","parent","_tag","context","empty","catchAllCause","forever","replicateEffect","discard","never","scopedDiscard","forkScoped"],"sources":["../../src/DurableQueue.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|