@effect/workflow 0.1.1 → 0.1.2
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/README.md +13 -1
- package/dist/cjs/Activity.js +6 -11
- package/dist/cjs/Activity.js.map +1 -1
- package/dist/cjs/Workflow.js +24 -6
- package/dist/cjs/Workflow.js.map +1 -1
- package/dist/dts/Activity.d.ts +1 -17
- package/dist/dts/Activity.d.ts.map +1 -1
- package/dist/dts/Workflow.d.ts +63 -1
- package/dist/dts/Workflow.d.ts.map +1 -1
- package/dist/esm/Activity.js +4 -10
- package/dist/esm/Activity.js.map +1 -1
- package/dist/esm/Workflow.js +23 -4
- package/dist/esm/Workflow.js.map +1 -1
- package/package.json +1 -1
- package/src/Activity.ts +6 -34
- package/src/Workflow.ts +95 -2
package/README.md
CHANGED
|
@@ -66,7 +66,19 @@ const EmailWorkflowLayer = EmailWorkflow.toLayer(
|
|
|
66
66
|
})
|
|
67
67
|
}
|
|
68
68
|
})
|
|
69
|
-
}).pipe(
|
|
69
|
+
}).pipe(
|
|
70
|
+
Activity.retry({ times: 5 }),
|
|
71
|
+
EmailWorkflow.withCompensation(
|
|
72
|
+
Effect.fn(function* (value, cause) {
|
|
73
|
+
// This is a compensation finalizer that will be executed if the workflow
|
|
74
|
+
// fails.
|
|
75
|
+
//
|
|
76
|
+
// You can use the success `value` of the wrapped effect, as well as the
|
|
77
|
+
// Cause of the workflow failure.
|
|
78
|
+
yield* Effect.log(`Compensating activity SendEmail`)
|
|
79
|
+
})
|
|
80
|
+
)
|
|
81
|
+
)
|
|
70
82
|
|
|
71
83
|
// Use the `DurableClock` to sleep for a specified duration.
|
|
72
84
|
// The workflow will pause execution for the specified duration.
|
package/dist/cjs/Activity.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.retry = exports.
|
|
6
|
+
exports.retry = exports.make = exports.executionIdWithAttempt = exports.TypeId = exports.CurrentAttempt = void 0;
|
|
7
7
|
var Context = _interopRequireWildcard(require("effect/Context"));
|
|
8
8
|
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
9
9
|
var Effectable = _interopRequireWildcard(require("effect/Effectable"));
|
|
@@ -11,6 +11,10 @@ var _Function = require("effect/Function");
|
|
|
11
11
|
var Schema = _interopRequireWildcard(require("effect/Schema"));
|
|
12
12
|
var _crypto = require("./internal/crypto.js");
|
|
13
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
/**
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
|
|
14
18
|
/**
|
|
15
19
|
* @since 1.0.0
|
|
16
20
|
* @category Symbols
|
|
@@ -36,6 +40,7 @@ const make = options => {
|
|
|
36
40
|
failure: errorSchema,
|
|
37
41
|
defect: Schema.Defect
|
|
38
42
|
}),
|
|
43
|
+
execute: options.execute,
|
|
39
44
|
executeEncoded: Effect.matchEffect(options.execute, {
|
|
40
45
|
onFailure: error => Effect.flatMap(Effect.orDie(Schema.encode(self.errorSchema)(error)), Effect.fail),
|
|
41
46
|
onSuccess: value => Effect.orDie(Schema.encode(self.successSchema)(value))
|
|
@@ -56,16 +61,6 @@ const retry = exports.retry = /*#__PURE__*/(0, _Function.dual)(2, (effect, optio
|
|
|
56
61
|
let attempt = 1;
|
|
57
62
|
return Effect.suspend(() => Effect.provideService(effect, CurrentAttempt, attempt++)).pipe(Effect.retry(options));
|
|
58
63
|
}));
|
|
59
|
-
/**
|
|
60
|
-
* @since 1.0.0
|
|
61
|
-
* @category Error handling
|
|
62
|
-
*/
|
|
63
|
-
const onError = exports.onError = /*#__PURE__*/(0, _Function.dual)(2, (self, onError) => make({
|
|
64
|
-
name: `${self.name}/onError`,
|
|
65
|
-
success: self.successSchema,
|
|
66
|
-
error: self.errorSchema,
|
|
67
|
-
execute: Effect.onError(self, onError)
|
|
68
|
-
}));
|
|
69
64
|
/**
|
|
70
65
|
* @since 1.0.0
|
|
71
66
|
* @category Attempts
|
package/dist/cjs/Activity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Activity.js","names":["Context","_interopRequireWildcard","require","Effect","Effectable","_Function","Schema","_crypto","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","Symbol","for","make","options","successSchema","success","Void","errorSchema","error","Never","execute","self","CommitPrototype","name","exitSchema","ExitFromSelf","failure","defect","Defect","executeEncoded","matchEffect","onFailure","flatMap","orDie","encode","fail","onSuccess","value","commit","makeExecute","retry","dual","effect","suspend","attempt","provideService","CurrentAttempt","pipe","
|
|
1
|
+
{"version":3,"file":"Activity.js","names":["Context","_interopRequireWildcard","require","Effect","Effectable","_Function","Schema","_crypto","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","Symbol","for","make","options","successSchema","success","Void","errorSchema","error","Never","execute","self","CommitPrototype","name","exitSchema","ExitFromSelf","failure","defect","Defect","executeEncoded","matchEffect","onFailure","flatMap","orDie","encode","fail","onSuccess","value","commit","makeExecute","retry","dual","effect","suspend","attempt","provideService","CurrentAttempt","pipe","Reference","defaultValue","executionIdWithAttempt","gen","instance","InstanceTag","makeHashDigest","executionId","EngineTag","GenericTag","fnUntraced","activity","engine","result","activityExecute","_tag","suspended","interrupt","exit","decode"],"sources":["../../src/Activity.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/Workflow.js
CHANGED
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.make = exports.isResult = exports.intoResult = exports.fromTaggedRequest = exports.TypeId = exports.Suspended = exports.ResultTypeId = exports.Result = exports.Complete = void 0;
|
|
6
|
+
exports.withCompensation = exports.make = exports.isResult = exports.intoResult = exports.fromTaggedRequest = exports.TypeId = exports.Suspended = exports.ResultTypeId = exports.Result = exports.Complete = void 0;
|
|
7
7
|
var Context = _interopRequireWildcard(require("effect/Context"));
|
|
8
8
|
var Data = _interopRequireWildcard(require("effect/Data"));
|
|
9
9
|
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
10
10
|
var Exit = _interopRequireWildcard(require("effect/Exit"));
|
|
11
|
+
var _Function = require("effect/Function");
|
|
11
12
|
var Layer = _interopRequireWildcard(require("effect/Layer"));
|
|
12
13
|
var Predicate = _interopRequireWildcard(require("effect/Predicate"));
|
|
13
14
|
var PrimaryKey = _interopRequireWildcard(require("effect/PrimaryKey"));
|
|
@@ -15,10 +16,6 @@ var Schedule = _interopRequireWildcard(require("effect/Schedule"));
|
|
|
15
16
|
var Schema = _interopRequireWildcard(require("effect/Schema"));
|
|
16
17
|
var _crypto = require("./internal/crypto.js");
|
|
17
18
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
18
|
-
/**
|
|
19
|
-
* @since 1.0.0
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
19
|
/**
|
|
23
20
|
* @since 1.0.0
|
|
24
21
|
* @category Symbols
|
|
@@ -87,7 +84,8 @@ const make = options => {
|
|
|
87
84
|
yield* engine.register(self, (payload, executionId) => execute(payload, executionId).pipe(Effect.provide(context)));
|
|
88
85
|
return EngineTag.context(engine);
|
|
89
86
|
})),
|
|
90
|
-
executionId: payload => makeExecutionId(self.payloadSchema.make(payload))
|
|
87
|
+
executionId: payload => makeExecutionId(self.payloadSchema.make(payload)),
|
|
88
|
+
withCompensation
|
|
91
89
|
};
|
|
92
90
|
return self;
|
|
93
91
|
};
|
|
@@ -194,5 +192,25 @@ const intoResult = effect => Effect.uninterruptibleMask(restore => Effect.withFi
|
|
|
194
192
|
});
|
|
195
193
|
}
|
|
196
194
|
})));
|
|
195
|
+
/**
|
|
196
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
197
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
198
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
199
|
+
*
|
|
200
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
201
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
202
|
+
*
|
|
203
|
+
* @since 1.0.0
|
|
204
|
+
* @category Compensation
|
|
205
|
+
*/
|
|
197
206
|
exports.intoResult = intoResult;
|
|
207
|
+
const withCompensation = exports.withCompensation = /*#__PURE__*/(0, _Function.dual)(2, (effect, compensation) => Effect.uninterruptibleMask(restore => Effect.contextWithEffect(context => {
|
|
208
|
+
const instance = Context.get(context, InstanceTag);
|
|
209
|
+
return Effect.tap(restore(effect), value => Effect.addFinalizer(exit => {
|
|
210
|
+
if (Exit.isSuccess(exit) || instance.suspended) {
|
|
211
|
+
return Effect.void;
|
|
212
|
+
}
|
|
213
|
+
return compensation(value, exit.cause);
|
|
214
|
+
}));
|
|
215
|
+
})));
|
|
198
216
|
//# sourceMappingURL=Workflow.js.map
|
package/dist/cjs/Workflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workflow.js","names":["Context","_interopRequireWildcard","require","Data","Effect","Exit","Layer","Predicate","PrimaryKey","Schedule","Schema","_crypto","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","Symbol","for","EngineTag","GenericTag","InstanceTag","make","options","suspendedRetrySchedule","defaultRetrySchedule","makeExecutionId","payload","makeHashDigest","name","idempotencyKey","self","payloadSchema","isSchema","Struct","successSchema","success","Void","errorSchema","error","Never","execute","fnUntraced","fields","opts","engine","executionId","annotateCurrentSpan","discard","workflow","sleep","result","_tag","exit","driver","next","pipe","catchAll","dieMessage","withSpan","captureStackTrace","interrupt","effect","attributes","toLayer","effectContext","gen","context","register","provide","exponential","union","spaced","fromTaggedRequest","schema","failure","value","ResultTypeId","isResult","u","hasProperty","Complete","TaggedClass","SchemaFromSelf","_options","declare","SchemaEncoded","tag","defect","Defect","transform","decode","fromA","encode","toI","Suspended","Result","Union","intoResult","uninterruptibleMask","restore","withFiberRuntime","fiber","matchCause","onSuccess","succeed","onFailure","cause","instance","unsafeGet","currentContext","suspended","failCause"],"sources":["../../src/Workflow.ts"],"sourcesContent":[null],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"Workflow.js","names":["Context","_interopRequireWildcard","require","Data","Effect","Exit","_Function","Layer","Predicate","PrimaryKey","Schedule","Schema","_crypto","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","Symbol","for","EngineTag","GenericTag","InstanceTag","make","options","suspendedRetrySchedule","defaultRetrySchedule","makeExecutionId","payload","makeHashDigest","name","idempotencyKey","self","payloadSchema","isSchema","Struct","successSchema","success","Void","errorSchema","error","Never","execute","fnUntraced","fields","opts","engine","executionId","annotateCurrentSpan","discard","workflow","sleep","result","_tag","exit","driver","next","pipe","catchAll","dieMessage","withSpan","captureStackTrace","interrupt","effect","attributes","toLayer","effectContext","gen","context","register","provide","withCompensation","exponential","union","spaced","fromTaggedRequest","schema","failure","value","ResultTypeId","isResult","u","hasProperty","Complete","TaggedClass","SchemaFromSelf","_options","declare","SchemaEncoded","tag","defect","Defect","transform","decode","fromA","encode","toI","Suspended","Result","Union","intoResult","uninterruptibleMask","restore","withFiberRuntime","fiber","matchCause","onSuccess","succeed","onFailure","cause","instance","unsafeGet","currentContext","suspended","failCause","dual","compensation","contextWithEffect","tap","addFinalizer","isSuccess","void"],"sources":["../../src/Workflow.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/dts/Activity.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import type * as Cause from "effect/Cause";
|
|
5
4
|
import * as Context from "effect/Context";
|
|
6
5
|
import * as Effect from "effect/Effect";
|
|
7
6
|
import type * as Exit from "effect/Exit";
|
|
@@ -27,6 +26,7 @@ export interface Activity<Success extends Schema.Schema.Any, Error extends Schem
|
|
|
27
26
|
readonly successSchema: Success;
|
|
28
27
|
readonly errorSchema: Error;
|
|
29
28
|
readonly exitSchema: Schema.Schema<Exit.Exit<Success["Type"], Error["Type"]>, Exit.Exit<Success["Encoded"], Error["Encoded"]>, Success["Context"] | Error["Context"]>;
|
|
29
|
+
readonly execute: Effect.Effect<Success["Type"], Error["Type"], Success["Context"] | Error["Context"] | R | WorkflowEngine | WorkflowInstance>;
|
|
30
30
|
readonly executeEncoded: Effect.Effect<Success["Encoded"], Error["Encoded"], Success["Context"] | Error["Context"] | R | WorkflowEngine | WorkflowInstance>;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
@@ -55,22 +55,6 @@ export declare const make: <R, Success extends Schema.Schema.Any = typeof Schema
|
|
|
55
55
|
* @category Error handling
|
|
56
56
|
*/
|
|
57
57
|
export declare const retry: typeof Effect.retry;
|
|
58
|
-
/**
|
|
59
|
-
* @since 1.0.0
|
|
60
|
-
* @category Error handling
|
|
61
|
-
*/
|
|
62
|
-
export declare const onError: {
|
|
63
|
-
/**
|
|
64
|
-
* @since 1.0.0
|
|
65
|
-
* @category Error handling
|
|
66
|
-
*/
|
|
67
|
-
<Error extends Schema.Schema.All, R2>(onError: (cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>): <Success extends Schema.Schema.Any, R>(self: Activity<Success, Error, R>) => Activity<Success, Error, R | Exclude<R2, WorkflowEngine | WorkflowInstance>>;
|
|
68
|
-
/**
|
|
69
|
-
* @since 1.0.0
|
|
70
|
-
* @category Error handling
|
|
71
|
-
*/
|
|
72
|
-
<Success extends Schema.Schema.Any, Error extends Schema.Schema.All, R, R2>(self: Activity<Success, Error, R>, onError: (cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>): Activity<Success, Error, R | Exclude<R2, WorkflowEngine | WorkflowInstance>>;
|
|
73
|
-
};
|
|
74
58
|
declare const CurrentAttempt_base: Context.ReferenceClass<CurrentAttempt, "@effect/workflow/Activity/CurrentAttempt", number>;
|
|
75
59
|
/**
|
|
76
60
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Activity.d.ts","sourceRoot":"","sources":["../../src/Activity.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Activity.d.ts","sourceRoot":"","sources":["../../src/Activity.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/Workflow.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Cause from "effect/Cause";
|
|
1
5
|
import * as Effect from "effect/Effect";
|
|
2
6
|
import * as Exit from "effect/Exit";
|
|
3
7
|
import * as Layer from "effect/Layer";
|
|
@@ -6,6 +10,7 @@ import * as PrimaryKey from "effect/PrimaryKey";
|
|
|
6
10
|
import * as Schedule from "effect/Schedule";
|
|
7
11
|
import * as Schema from "effect/Schema";
|
|
8
12
|
import type * as AST from "effect/SchemaAST";
|
|
13
|
+
import type * as Scope from "effect/Scope";
|
|
9
14
|
import type { WorkflowEngine, WorkflowInstance } from "./WorkflowEngine.js";
|
|
10
15
|
/**
|
|
11
16
|
* @since 1.0.0
|
|
@@ -41,11 +46,23 @@ export interface Workflow<Name extends string, Payload extends AnyStructSchema,
|
|
|
41
46
|
* Create a layer that registers the workflow and provides an effect to
|
|
42
47
|
* execute it.
|
|
43
48
|
*/
|
|
44
|
-
readonly toLayer: <R>(execute: (payload: Payload["Type"], executionId: string) => Effect.Effect<Success["Type"], Error["Type"], R>) => Layer.Layer<Registration<Name> | WorkflowEngine, never, WorkflowEngine | Exclude<R, WorkflowEngine | WorkflowInstance> | Payload["Context"] | Success["Context"] | Error["Context"]>;
|
|
49
|
+
readonly toLayer: <R>(execute: (payload: Payload["Type"], executionId: string) => Effect.Effect<Success["Type"], Error["Type"], R>) => Layer.Layer<Registration<Name> | WorkflowEngine, never, WorkflowEngine | Exclude<R, WorkflowEngine | WorkflowInstance | Execution<Name> | Scope.Scope> | Payload["Context"] | Success["Context"] | Error["Context"]>;
|
|
45
50
|
/**
|
|
46
51
|
* For the given payload, compute the deterministic execution ID.
|
|
47
52
|
*/
|
|
48
53
|
readonly executionId: (payload: Schema.Simplify<Schema.Struct.Constructor<Payload["fields"]>>) => Effect.Effect<string>;
|
|
54
|
+
/**
|
|
55
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
56
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
57
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
58
|
+
*
|
|
59
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
60
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
61
|
+
*/
|
|
62
|
+
readonly withCompensation: {
|
|
63
|
+
<A, R2>(compensation: (value: A, cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>): <E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | R2 | WorkflowInstance | Execution<Name> | Scope.Scope>;
|
|
64
|
+
<A, E, R, R2>(effect: Effect.Effect<A, E, R>, compensation: (value: A, cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>): Effect.Effect<A, E, R | R2 | WorkflowInstance | Execution<Name> | Scope.Scope>;
|
|
65
|
+
};
|
|
49
66
|
}
|
|
50
67
|
/**
|
|
51
68
|
* @since 1.0.0
|
|
@@ -78,6 +95,14 @@ export interface Registration<Name extends string> {
|
|
|
78
95
|
readonly _: unique symbol;
|
|
79
96
|
readonly name: Name;
|
|
80
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* @since 1.0.0
|
|
100
|
+
* @category Models
|
|
101
|
+
*/
|
|
102
|
+
export interface Execution<Name extends string> {
|
|
103
|
+
readonly _: unique symbol;
|
|
104
|
+
readonly name: Name;
|
|
105
|
+
}
|
|
81
106
|
/**
|
|
82
107
|
* @since 1.0.0
|
|
83
108
|
* @category Models
|
|
@@ -207,5 +232,42 @@ export declare const Result: <Success extends Schema.Schema.Any, Error extends S
|
|
|
207
232
|
* @category Result
|
|
208
233
|
*/
|
|
209
234
|
export declare const intoResult: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<Result<A, E>, never, R | WorkflowInstance>;
|
|
235
|
+
/**
|
|
236
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
237
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
238
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
239
|
+
*
|
|
240
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
241
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
242
|
+
*
|
|
243
|
+
* @since 1.0.0
|
|
244
|
+
* @category Compensation
|
|
245
|
+
*/
|
|
246
|
+
export declare const withCompensation: {
|
|
247
|
+
/**
|
|
248
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
249
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
250
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
251
|
+
*
|
|
252
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
253
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
254
|
+
*
|
|
255
|
+
* @since 1.0.0
|
|
256
|
+
* @category Compensation
|
|
257
|
+
*/
|
|
258
|
+
<A, R2>(compensation: (value: A, cause: Cause.Cause<unknown>) => Effect.Effect<void, never, R2>): <E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | R2 | WorkflowInstance | Scope.Scope>;
|
|
259
|
+
/**
|
|
260
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
261
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
262
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
263
|
+
*
|
|
264
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
265
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
266
|
+
*
|
|
267
|
+
* @since 1.0.0
|
|
268
|
+
* @category Compensation
|
|
269
|
+
*/
|
|
270
|
+
<A, E, R, R2>(effect: Effect.Effect<A, E, R>, compensation: (value: A, cause: Cause.Cause<unknown>) => Effect.Effect<void, never, R2>): Effect.Effect<A, E, R | R2 | WorkflowInstance | Scope.Scope>;
|
|
271
|
+
};
|
|
210
272
|
export {};
|
|
211
273
|
//# sourceMappingURL=Workflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../src/Workflow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../src/Workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/Activity.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
1
4
|
import * as Context from "effect/Context";
|
|
2
5
|
import * as Effect from "effect/Effect";
|
|
3
6
|
import * as Effectable from "effect/Effectable";
|
|
@@ -29,6 +32,7 @@ export const make = options => {
|
|
|
29
32
|
failure: errorSchema,
|
|
30
33
|
defect: Schema.Defect
|
|
31
34
|
}),
|
|
35
|
+
execute: options.execute,
|
|
32
36
|
executeEncoded: Effect.matchEffect(options.execute, {
|
|
33
37
|
onFailure: error => Effect.flatMap(Effect.orDie(Schema.encode(self.errorSchema)(error)), Effect.fail),
|
|
34
38
|
onSuccess: value => Effect.orDie(Schema.encode(self.successSchema)(value))
|
|
@@ -48,16 +52,6 @@ export const retry = /*#__PURE__*/dual(2, (effect, options) => Effect.suspend(()
|
|
|
48
52
|
let attempt = 1;
|
|
49
53
|
return Effect.suspend(() => Effect.provideService(effect, CurrentAttempt, attempt++)).pipe(Effect.retry(options));
|
|
50
54
|
}));
|
|
51
|
-
/**
|
|
52
|
-
* @since 1.0.0
|
|
53
|
-
* @category Error handling
|
|
54
|
-
*/
|
|
55
|
-
export const onError = /*#__PURE__*/dual(2, (self, onError) => make({
|
|
56
|
-
name: `${self.name}/onError`,
|
|
57
|
-
success: self.successSchema,
|
|
58
|
-
error: self.errorSchema,
|
|
59
|
-
execute: Effect.onError(self, onError)
|
|
60
|
-
}));
|
|
61
55
|
/**
|
|
62
56
|
* @since 1.0.0
|
|
63
57
|
* @category Attempts
|
package/dist/esm/Activity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Activity.js","names":["Context","Effect","Effectable","dual","Schema","makeHashDigest","TypeId","Symbol","for","make","options","successSchema","success","Void","errorSchema","error","Never","execute","self","CommitPrototype","name","exitSchema","ExitFromSelf","failure","defect","Defect","executeEncoded","matchEffect","onFailure","flatMap","orDie","encode","fail","onSuccess","value","commit","makeExecute","retry","effect","suspend","attempt","provideService","CurrentAttempt","pipe","
|
|
1
|
+
{"version":3,"file":"Activity.js","names":["Context","Effect","Effectable","dual","Schema","makeHashDigest","TypeId","Symbol","for","make","options","successSchema","success","Void","errorSchema","error","Never","execute","self","CommitPrototype","name","exitSchema","ExitFromSelf","failure","defect","Defect","executeEncoded","matchEffect","onFailure","flatMap","orDie","encode","fail","onSuccess","value","commit","makeExecute","retry","effect","suspend","attempt","provideService","CurrentAttempt","pipe","Reference","defaultValue","executionIdWithAttempt","gen","instance","InstanceTag","executionId","EngineTag","GenericTag","fnUntraced","activity","engine","result","activityExecute","_tag","suspended","interrupt","exit","decode"],"sources":["../../src/Activity.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/Workflow.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
1
|
import * as Context from "effect/Context";
|
|
5
2
|
import * as Data from "effect/Data";
|
|
6
3
|
import * as Effect from "effect/Effect";
|
|
7
4
|
import * as Exit from "effect/Exit";
|
|
5
|
+
import { dual } from "effect/Function";
|
|
8
6
|
import * as Layer from "effect/Layer";
|
|
9
7
|
import * as Predicate from "effect/Predicate";
|
|
10
8
|
import * as PrimaryKey from "effect/PrimaryKey";
|
|
@@ -79,7 +77,8 @@ export const make = options => {
|
|
|
79
77
|
yield* engine.register(self, (payload, executionId) => execute(payload, executionId).pipe(Effect.provide(context)));
|
|
80
78
|
return EngineTag.context(engine);
|
|
81
79
|
})),
|
|
82
|
-
executionId: payload => makeExecutionId(self.payloadSchema.make(payload))
|
|
80
|
+
executionId: payload => makeExecutionId(self.payloadSchema.make(payload)),
|
|
81
|
+
withCompensation
|
|
83
82
|
};
|
|
84
83
|
return self;
|
|
85
84
|
};
|
|
@@ -180,4 +179,24 @@ export const intoResult = effect => Effect.uninterruptibleMask(restore => Effect
|
|
|
180
179
|
});
|
|
181
180
|
}
|
|
182
181
|
})));
|
|
182
|
+
/**
|
|
183
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
184
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
185
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
186
|
+
*
|
|
187
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
188
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
189
|
+
*
|
|
190
|
+
* @since 1.0.0
|
|
191
|
+
* @category Compensation
|
|
192
|
+
*/
|
|
193
|
+
export const withCompensation = /*#__PURE__*/dual(2, (effect, compensation) => Effect.uninterruptibleMask(restore => Effect.contextWithEffect(context => {
|
|
194
|
+
const instance = Context.get(context, InstanceTag);
|
|
195
|
+
return Effect.tap(restore(effect), value => Effect.addFinalizer(exit => {
|
|
196
|
+
if (Exit.isSuccess(exit) || instance.suspended) {
|
|
197
|
+
return Effect.void;
|
|
198
|
+
}
|
|
199
|
+
return compensation(value, exit.cause);
|
|
200
|
+
}));
|
|
201
|
+
})));
|
|
183
202
|
//# sourceMappingURL=Workflow.js.map
|
package/dist/esm/Workflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workflow.js","names":["Context","Data","Effect","Exit","Layer","Predicate","PrimaryKey","Schedule","Schema","makeHashDigest","TypeId","Symbol","for","EngineTag","GenericTag","InstanceTag","make","options","suspendedRetrySchedule","defaultRetrySchedule","makeExecutionId","payload","name","idempotencyKey","self","payloadSchema","isSchema","Struct","successSchema","success","Void","errorSchema","error","Never","execute","fnUntraced","fields","opts","engine","executionId","annotateCurrentSpan","discard","workflow","sleep","result","_tag","exit","driver","next","pipe","catchAll","dieMessage","withSpan","captureStackTrace","interrupt","effect","attributes","toLayer","effectContext","gen","context","get","register","provide","exponential","union","spaced","fromTaggedRequest","schema","failure","value","ResultTypeId","isResult","u","hasProperty","Complete","TaggedClass","SchemaFromSelf","_options","declare","SchemaEncoded","tag","defect","Defect","transform","decode","fromA","encode","toI","Suspended","Result","Union","intoResult","uninterruptibleMask","restore","withFiberRuntime","fiber","matchCause","onSuccess","succeed","onFailure","cause","instance","unsafeGet","currentContext","suspended","failCause"],"sources":["../../src/Workflow.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"Workflow.js","names":["Context","Data","Effect","Exit","dual","Layer","Predicate","PrimaryKey","Schedule","Schema","makeHashDigest","TypeId","Symbol","for","EngineTag","GenericTag","InstanceTag","make","options","suspendedRetrySchedule","defaultRetrySchedule","makeExecutionId","payload","name","idempotencyKey","self","payloadSchema","isSchema","Struct","successSchema","success","Void","errorSchema","error","Never","execute","fnUntraced","fields","opts","engine","executionId","annotateCurrentSpan","discard","workflow","sleep","result","_tag","exit","driver","next","pipe","catchAll","dieMessage","withSpan","captureStackTrace","interrupt","effect","attributes","toLayer","effectContext","gen","context","get","register","provide","withCompensation","exponential","union","spaced","fromTaggedRequest","schema","failure","value","ResultTypeId","isResult","u","hasProperty","Complete","TaggedClass","SchemaFromSelf","_options","declare","SchemaEncoded","tag","defect","Defect","transform","decode","fromA","encode","toI","Suspended","Result","Union","intoResult","uninterruptibleMask","restore","withFiberRuntime","fiber","matchCause","onSuccess","succeed","onFailure","cause","instance","unsafeGet","currentContext","suspended","failCause","compensation","contextWithEffect","tap","addFinalizer","isSuccess","void"],"sources":["../../src/Workflow.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
package/src/Activity.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import type * as Cause from "effect/Cause"
|
|
5
4
|
import * as Context from "effect/Context"
|
|
6
5
|
import * as Effect from "effect/Effect"
|
|
7
6
|
import * as Effectable from "effect/Effectable"
|
|
@@ -47,6 +46,11 @@ export interface Activity<
|
|
|
47
46
|
Exit.Exit<Success["Encoded"], Error["Encoded"]>,
|
|
48
47
|
Success["Context"] | Error["Context"]
|
|
49
48
|
>
|
|
49
|
+
readonly execute: Effect.Effect<
|
|
50
|
+
Success["Type"],
|
|
51
|
+
Error["Type"],
|
|
52
|
+
Success["Context"] | Error["Context"] | R | WorkflowEngine | WorkflowInstance
|
|
53
|
+
>
|
|
50
54
|
readonly executeEncoded: Effect.Effect<
|
|
51
55
|
Success["Encoded"],
|
|
52
56
|
Error["Encoded"],
|
|
@@ -95,6 +99,7 @@ export const make = <
|
|
|
95
99
|
failure: errorSchema,
|
|
96
100
|
defect: Schema.Defect
|
|
97
101
|
}),
|
|
102
|
+
execute: options.execute,
|
|
98
103
|
executeEncoded: Effect.matchEffect(options.execute, {
|
|
99
104
|
onFailure: (error) => Effect.flatMap(Effect.orDie(Schema.encode(self.errorSchema as any)(error)), Effect.fail),
|
|
100
105
|
onSuccess: (value) => Effect.orDie(Schema.encode(self.successSchema)(value))
|
|
@@ -122,39 +127,6 @@ export const retry: typeof Effect.retry = dual(
|
|
|
122
127
|
})
|
|
123
128
|
)
|
|
124
129
|
|
|
125
|
-
/**
|
|
126
|
-
* @since 1.0.0
|
|
127
|
-
* @category Error handling
|
|
128
|
-
*/
|
|
129
|
-
export const onError: {
|
|
130
|
-
/**
|
|
131
|
-
* @since 1.0.0
|
|
132
|
-
* @category Error handling
|
|
133
|
-
*/
|
|
134
|
-
<Error extends Schema.Schema.All, R2>(
|
|
135
|
-
onError: (cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>
|
|
136
|
-
): <Success extends Schema.Schema.Any, R>(
|
|
137
|
-
self: Activity<Success, Error, R>
|
|
138
|
-
) => Activity<Success, Error, R | Exclude<R2, WorkflowEngine | WorkflowInstance>>
|
|
139
|
-
/**
|
|
140
|
-
* @since 1.0.0
|
|
141
|
-
* @category Error handling
|
|
142
|
-
*/
|
|
143
|
-
<Success extends Schema.Schema.Any, Error extends Schema.Schema.All, R, R2>(
|
|
144
|
-
self: Activity<Success, Error, R>,
|
|
145
|
-
onError: (cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>
|
|
146
|
-
): Activity<Success, Error, R | Exclude<R2, WorkflowEngine | WorkflowInstance>>
|
|
147
|
-
} = dual(2, <Success extends Schema.Schema.Any, Error extends Schema.Schema.All, R, R2>(
|
|
148
|
-
self: Activity<Success, Error, R>,
|
|
149
|
-
onError: (cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>
|
|
150
|
-
): Activity<Success, Error, R | Exclude<R2, WorkflowEngine | WorkflowInstance>> =>
|
|
151
|
-
make({
|
|
152
|
-
name: `${self.name}/onError`,
|
|
153
|
-
success: self.successSchema,
|
|
154
|
-
error: self.errorSchema,
|
|
155
|
-
execute: Effect.onError(self, onError)
|
|
156
|
-
}))
|
|
157
|
-
|
|
158
130
|
/**
|
|
159
131
|
* @since 1.0.0
|
|
160
132
|
* @category Attempts
|
package/src/Workflow.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
+
import type * as Cause from "effect/Cause"
|
|
4
5
|
import * as Context from "effect/Context"
|
|
5
6
|
import * as Data from "effect/Data"
|
|
6
7
|
import * as Effect from "effect/Effect"
|
|
7
8
|
import * as Exit from "effect/Exit"
|
|
9
|
+
import { dual } from "effect/Function"
|
|
8
10
|
import * as Layer from "effect/Layer"
|
|
9
11
|
import type { Pipeable } from "effect/Pipeable"
|
|
10
12
|
import * as Predicate from "effect/Predicate"
|
|
@@ -12,6 +14,7 @@ import * as PrimaryKey from "effect/PrimaryKey"
|
|
|
12
14
|
import * as Schedule from "effect/Schedule"
|
|
13
15
|
import * as Schema from "effect/Schema"
|
|
14
16
|
import type * as AST from "effect/SchemaAST"
|
|
17
|
+
import type * as Scope from "effect/Scope"
|
|
15
18
|
import { makeHashDigest } from "./internal/crypto.js"
|
|
16
19
|
import type { WorkflowEngine, WorkflowInstance } from "./WorkflowEngine.js"
|
|
17
20
|
|
|
@@ -76,7 +79,7 @@ export interface Workflow<
|
|
|
76
79
|
Registration<Name> | WorkflowEngine,
|
|
77
80
|
never,
|
|
78
81
|
| WorkflowEngine
|
|
79
|
-
| Exclude<R, WorkflowEngine | WorkflowInstance>
|
|
82
|
+
| Exclude<R, WorkflowEngine | WorkflowInstance | Execution<Name> | Scope.Scope>
|
|
80
83
|
| Payload["Context"]
|
|
81
84
|
| Success["Context"]
|
|
82
85
|
| Error["Context"]
|
|
@@ -88,6 +91,26 @@ export interface Workflow<
|
|
|
88
91
|
readonly executionId: (
|
|
89
92
|
payload: Schema.Simplify<Schema.Struct.Constructor<Payload["fields"]>>
|
|
90
93
|
) => Effect.Effect<string>
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
97
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
98
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
99
|
+
*
|
|
100
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
101
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
102
|
+
*/
|
|
103
|
+
readonly withCompensation: {
|
|
104
|
+
<A, R2>(
|
|
105
|
+
compensation: (value: A, cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>
|
|
106
|
+
): <E, R>(
|
|
107
|
+
effect: Effect.Effect<A, E, R>
|
|
108
|
+
) => Effect.Effect<A, E, R | R2 | WorkflowInstance | Execution<Name> | Scope.Scope>
|
|
109
|
+
<A, E, R, R2>(
|
|
110
|
+
effect: Effect.Effect<A, E, R>,
|
|
111
|
+
compensation: (value: A, cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>
|
|
112
|
+
): Effect.Effect<A, E, R | R2 | WorkflowInstance | Execution<Name> | Scope.Scope>
|
|
113
|
+
}
|
|
91
114
|
}
|
|
92
115
|
|
|
93
116
|
/**
|
|
@@ -124,6 +147,15 @@ export interface Registration<Name extends string> {
|
|
|
124
147
|
readonly name: Name
|
|
125
148
|
}
|
|
126
149
|
|
|
150
|
+
/**
|
|
151
|
+
* @since 1.0.0
|
|
152
|
+
* @category Models
|
|
153
|
+
*/
|
|
154
|
+
export interface Execution<Name extends string> {
|
|
155
|
+
readonly _: unique symbol
|
|
156
|
+
readonly name: Name
|
|
157
|
+
}
|
|
158
|
+
|
|
127
159
|
/**
|
|
128
160
|
* @since 1.0.0
|
|
129
161
|
* @category Models
|
|
@@ -229,7 +261,8 @@ export const make = <
|
|
|
229
261
|
) as any)
|
|
230
262
|
return EngineTag.context(engine)
|
|
231
263
|
})) as any,
|
|
232
|
-
executionId: (payload) => makeExecutionId(self.payloadSchema.make(payload))
|
|
264
|
+
executionId: (payload) => makeExecutionId(self.payloadSchema.make(payload)),
|
|
265
|
+
withCompensation
|
|
233
266
|
}
|
|
234
267
|
|
|
235
268
|
return self
|
|
@@ -399,3 +432,63 @@ export const intoResult = <A, E, R>(
|
|
|
399
432
|
})
|
|
400
433
|
)
|
|
401
434
|
)
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
438
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
439
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
440
|
+
*
|
|
441
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
442
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
443
|
+
*
|
|
444
|
+
* @since 1.0.0
|
|
445
|
+
* @category Compensation
|
|
446
|
+
*/
|
|
447
|
+
export const withCompensation: {
|
|
448
|
+
/**
|
|
449
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
450
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
451
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
452
|
+
*
|
|
453
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
454
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
455
|
+
*
|
|
456
|
+
* @since 1.0.0
|
|
457
|
+
* @category Compensation
|
|
458
|
+
*/
|
|
459
|
+
<A, R2>(
|
|
460
|
+
compensation: (value: A, cause: Cause.Cause<unknown>) => Effect.Effect<void, never, R2>
|
|
461
|
+
): <E, R>(
|
|
462
|
+
effect: Effect.Effect<A, E, R>
|
|
463
|
+
) => Effect.Effect<A, E, R | R2 | WorkflowInstance | Scope.Scope>
|
|
464
|
+
/**
|
|
465
|
+
* Add compensation logic to an effect inside a Workflow. The compensation finalizer will be
|
|
466
|
+
* called if the entire workflow fails, allowing you to perform cleanup or
|
|
467
|
+
* other actions based on the success value and the cause of the workflow failure.
|
|
468
|
+
*
|
|
469
|
+
* NOTE: Compensation will not work for nested activities. Compensation
|
|
470
|
+
* finalizers are only registered for top-level effects in the workflow.
|
|
471
|
+
*
|
|
472
|
+
* @since 1.0.0
|
|
473
|
+
* @category Compensation
|
|
474
|
+
*/
|
|
475
|
+
<A, E, R, R2>(
|
|
476
|
+
effect: Effect.Effect<A, E, R>,
|
|
477
|
+
compensation: (value: A, cause: Cause.Cause<unknown>) => Effect.Effect<void, never, R2>
|
|
478
|
+
): Effect.Effect<A, E, R | R2 | WorkflowInstance | Scope.Scope>
|
|
479
|
+
} = dual(2, <A, E, R, R2>(
|
|
480
|
+
effect: Effect.Effect<A, E, R>,
|
|
481
|
+
compensation: (value: A, cause: Cause.Cause<unknown>) => Effect.Effect<void, never, R2>
|
|
482
|
+
): Effect.Effect<A, E, R | R2 | WorkflowInstance | Scope.Scope> =>
|
|
483
|
+
Effect.uninterruptibleMask((restore) =>
|
|
484
|
+
Effect.contextWithEffect((context: Context.Context<WorkflowInstance>) => {
|
|
485
|
+
const instance = Context.get(context, InstanceTag)
|
|
486
|
+
return Effect.tap(restore(effect), (value) =>
|
|
487
|
+
Effect.addFinalizer((exit) => {
|
|
488
|
+
if (Exit.isSuccess(exit) || instance.suspended) {
|
|
489
|
+
return Effect.void
|
|
490
|
+
}
|
|
491
|
+
return compensation(value, exit.cause)
|
|
492
|
+
}))
|
|
493
|
+
})
|
|
494
|
+
))
|