@effect/workflow 0.12.0 → 0.12.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.
@@ -4,10 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.retry = exports.raceAll = exports.make = exports.executionIdWithAttempt = exports.TypeId = exports.CurrentAttempt = void 0;
7
+ var Cause = _interopRequireWildcard(require("effect/Cause"));
7
8
  var Context = _interopRequireWildcard(require("effect/Context"));
8
9
  var Effect = _interopRequireWildcard(require("effect/Effect"));
9
10
  var Effectable = _interopRequireWildcard(require("effect/Effectable"));
10
11
  var _Function = require("effect/Function");
12
+ var Schedule = _interopRequireWildcard(require("effect/Schedule"));
11
13
  var Schema = _interopRequireWildcard(require("effect/Schema"));
12
14
  var DurableDeferred = _interopRequireWildcard(require("./DurableDeferred.js"));
13
15
  var _crypto = require("./internal/crypto.js");
@@ -27,6 +29,7 @@ const make = options => {
27
29
  const errorSchema = options.error ?? Schema.Never;
28
30
  // eslint-disable-next-line prefer-const
29
31
  let execute;
32
+ const executeWithoutInterrupt = retryOnInterrupt(options.name, options.interruptRetryPolicy)(options.execute);
30
33
  const self = {
31
34
  ...Effectable.CommitPrototype,
32
35
  [TypeId]: TypeId,
@@ -38,8 +41,8 @@ const make = options => {
38
41
  failure: errorSchema,
39
42
  defect: Schema.Defect
40
43
  }),
41
- execute: options.execute,
42
- executeEncoded: Effect.matchEffect(options.execute, {
44
+ execute: executeWithoutInterrupt,
45
+ executeEncoded: Effect.matchEffect(executeWithoutInterrupt, {
43
46
  onFailure: error => Effect.flatMap(Effect.orDie(Schema.encode(self.errorSchema)(error)), Effect.fail),
44
47
  onSuccess: value => Effect.orDie(Schema.encode(self.successSchema)(value))
45
48
  }),
@@ -50,11 +53,16 @@ const make = options => {
50
53
  execute = makeExecute(self);
51
54
  return self;
52
55
  };
56
+ exports.make = make;
57
+ const interruptRetryPolicy = /*#__PURE__*/Schedule.exponential(100, 1.5).pipe(/*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.spaced("10 seconds")), /*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.recurs(10)), /*#__PURE__*/Schedule.whileInput(cause => Cause.isInterrupted(cause)));
58
+ const retryOnInterrupt = (name, policy = interruptRetryPolicy) => effect => effect.pipe(Effect.sandbox, Effect.retry(policy), Effect.catchAll(cause => {
59
+ if (!Cause.isInterrupted(cause)) return Effect.failCause(cause);
60
+ return Effect.die(`Activity "${name}" interrupted and retry attempts exhausted`);
61
+ }));
53
62
  /**
54
63
  * @since 1.0.0
55
64
  * @category Error handling
56
65
  */
57
- exports.make = make;
58
66
  const retry = exports.retry = /*#__PURE__*/(0, _Function.dual)(2, (effect, options) => Effect.suspend(() => {
59
67
  let attempt = 1;
60
68
  return Effect.suspend(() => Effect.provideService(effect, CurrentAttempt, attempt++)).pipe(Effect.retry(options));
@@ -1 +1 @@
1
- {"version":3,"file":"Activity.js","names":["Context","_interopRequireWildcard","require","Effect","Effectable","_Function","Schema","DurableDeferred","_crypto","Workflow","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","raceAll","activities","Union","map","activity","effects","EngineTag","GenericTag","fnUntraced","engine","annotateCurrentSpan","result","wrapActivityResult","activityExecute","_","_tag","exit","decode","withSpan","captureStackTrace"],"sources":["../../src/Activity.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Activity.js","names":["Cause","_interopRequireWildcard","require","Context","Effect","Effectable","_Function","Schedule","Schema","DurableDeferred","_crypto","Workflow","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","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","dual","suspend","attempt","provideService","CurrentAttempt","Reference","defaultValue","executionIdWithAttempt","gen","instance","InstanceTag","makeHashDigest","executionId","raceAll","activities","Union","map","activity","effects","EngineTag","GenericTag","fnUntraced","engine","annotateCurrentSpan","result","wrapActivityResult","activityExecute","_","_tag","exit","decode","withSpan","captureStackTrace"],"sources":["../../src/Activity.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAJ,uBAAA,CAAAC,OAAA;AAEA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,MAAA,GAAAP,uBAAA,CAAAC,OAAA;AAEA,IAAAO,eAAA,GAAAR,uBAAA,CAAAC,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAV,uBAAA,CAAAC,OAAA;AAAyC,SAAAD,wBAAAW,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAb,uBAAA,YAAAA,CAAAW,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAGzC;;;;AAIO,MAAMkB,MAAM,GAAAC,OAAA,CAAAD,MAAA,gBAAkBE,MAAM,CAACC,GAAG,CAAC,2BAA2B,CAAC;AAwD5E;;;;AAIO,MAAMC,IAAI,GAIfC,OAMD,IAAqF;EACpF,MAAMC,aAAa,GAAGD,OAAO,CAACE,OAAO,IAAI9B,MAAM,CAAC+B,IAAsB;EACtE,MAAMC,WAAW,GAAGJ,OAAO,CAACK,KAAK,IAAIjC,MAAM,CAACkC,KAAqB;EACjE;EACA,IAAIC,OAA4D;EAChE,MAAMC,uBAAuB,GAAGC,gBAAgB,CAC9CT,OAAO,CAACU,IAAI,EACZV,OAAO,CAACW,oBAAoB,CAC7B,CAACX,OAAO,CAACO,OAAO,CAAC;EAClB,MAAMK,IAAI,GAA4E;IACpF,GAAG3C,UAAU,CAAC4C,eAAe;IAC7B,CAAClB,MAAM,GAAGA,MAAM;IAChBe,IAAI,EAAEV,OAAO,CAACU,IAAI;IAClBT,aAAa;IACbG,WAAW;IACXU,UAAU,EAAE1C,MAAM,CAAC2C,YAAY,CAAC;MAC9Bb,OAAO,EAAED,aAAa;MACtBe,OAAO,EAAEZ,WAAW;MACpBa,MAAM,EAAE7C,MAAM,CAAC8C;KAChB,CAAC;IACFX,OAAO,EAAEC,uBAAuB;IAChCW,cAAc,EAAEnD,MAAM,CAACoD,WAAW,CAACZ,uBAAuB,EAAE;MAC1Da,SAAS,EAAGhB,KAAK,IAAKrC,MAAM,CAACsD,OAAO,CAACtD,MAAM,CAACuD,KAAK,CAACnD,MAAM,CAACoD,MAAM,CAACZ,IAAI,CAACR,WAAkB,CAAC,CAACC,KAAK,CAAC,CAAC,EAAErC,MAAM,CAACyD,IAAI,CAAC;MAC9GC,SAAS,EAAGC,KAAK,IAAK3D,MAAM,CAACuD,KAAK,CAACnD,MAAM,CAACoD,MAAM,CAACZ,IAAI,CAACX,aAAa,CAAC,CAAC0B,KAAK,CAAC;KAC5E,CAAC;IACFC,MAAMA,CAAA;MACJ,OAAOrB,OAAO;IAChB;GACM;EACRA,OAAO,GAAGsB,WAAW,CAACjB,IAAI,CAAC;EAC3B,OAAOA,IAAI;AACb,CAAC;AAAAhB,OAAA,CAAAG,IAAA,GAAAA,IAAA;AAED,MAAMY,oBAAoB,gBAAGxC,QAAQ,CAAC2D,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAACC,IAAI,cAC9D5D,QAAQ,CAAC6D,KAAK,cAAC7D,QAAQ,CAAC8D,MAAM,CAAC,YAAY,CAAC,CAAC,eAC7C9D,QAAQ,CAAC6D,KAAK,cAAC7D,QAAQ,CAAC+D,MAAM,CAAC,EAAE,CAAC,CAAC,eACnC/D,QAAQ,CAACgE,UAAU,CAAEC,KAA2B,IAAKxE,KAAK,CAACyE,aAAa,CAACD,KAAK,CAAC,CAAC,CACjF;AAED,MAAM3B,gBAAgB,GAAGA,CACvBC,IAAY,EACZ4B,MAAA,GAAuD3B,oBAAoB,KAEnE4B,MAA8B,IACtCA,MAAM,CAACR,IAAI,CACT/D,MAAM,CAACwE,OAAO,EACdxE,MAAM,CAACyE,KAAK,CAACH,MAAM,CAAC,EACpBtE,MAAM,CAAC0E,QAAQ,CAAEN,KAAK,IAAI;EACxB,IAAI,CAACxE,KAAK,CAACyE,aAAa,CAACD,KAAK,CAAC,EAAE,OAAOpE,MAAM,CAAC2E,SAAS,CAACP,KAAK,CAAC;EAC/D,OAAOpE,MAAM,CAAC4E,GAAG,CAAC,aAAalC,IAAI,4CAA4C,CAAC;AAClF,CAAC,CAAC,CACH;AAEH;;;;AAIO,MAAM+B,KAAK,GAAA7C,OAAA,CAAA6C,KAAA,gBAAwB,IAAAI,cAAI,EAC5C,CAAC,EACD,CAACN,MAAoC,EAAEvC,OAAW,KAChDhC,MAAM,CAAC8E,OAAO,CAAC,MAAK;EAClB,IAAIC,OAAO,GAAG,CAAC;EACf,OAAO/E,MAAM,CAAC8E,OAAO,CAAC,MAAM9E,MAAM,CAACgF,cAAc,CAACT,MAAM,EAAEU,cAAc,EAAEF,OAAO,EAAE,CAAC,CAAC,CAAChB,IAAI,CACxF/D,MAAM,CAACyE,KAAK,CAACzC,OAAO,CAAC,CACtB;AACH,CAAC,CAAC,CACL;AAED;;;;AAIM,MAAOiD,cAAe,sBAAQlF,OAAO,CAACmF,SAAS,EAAkB,CAAC,0CAA0C,EAAE;EAClHC,YAAY,EAAEA,CAAA,KAAM;CACrB,CAAC;AAEF;;;;AAAAvD,OAAA,CAAAqD,cAAA,GAAAA,cAAA;AAIO,MAAMG,sBAAsB,GAAAxD,OAAA,CAAAwD,sBAAA,gBAI/BpF,MAAM,CAACqF,GAAG,CAAC,aAAS;EACtB,MAAMC,QAAQ,GAAG,OAAOC,WAAW;EACnC,MAAMR,OAAO,GAAG,OAAOE,cAAc;EACrC,OAAO,OAAO,IAAAO,sBAAc,EAAC,GAAGF,QAAQ,CAACG,WAAW,IAAIV,OAAO,EAAE,CAAC;AACpE,CAAC,CAAC;AAEF;;;;AAIO,MAAMW,OAAO,GAAGA,CACrBhD,IAAY,EACZiD,UAAsB,KAUtBtF,eAAe,CAACqF,OAAO,CAAC;EACtBhD,IAAI,EAAE,YAAYA,IAAI,EAAE;EACxBR,OAAO,EAAE9B,MAAM,CAACwF,KAAK,CACnB,GAAGD,UAAU,CAACE,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAAC7D,aAAa,CAAC,CACxD;EACDI,KAAK,EAAEjC,MAAM,CAACwF,KAAK,CACjB,GAAGD,UAAU,CAACE,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAAC1D,WAAW,CAAC,CACtD;EACD2D,OAAO,EAAEJ;CACV,CAAQ;AAEX;AACA;AACA;AAAA/D,OAAA,CAAA8D,OAAA,GAAAA,OAAA;AAEA,MAAMM,SAAS,gBAAGjG,OAAO,CAACkG,UAAU,CAClC,iCAAqE,CACtE;AACD,MAAMV,WAAW,gBAAGxF,OAAO,CAACkG,UAAU,CACpC,kDAAwF,CACzF;AAED,MAAMpC,WAAW,gBAAG7D,MAAM,CAACkG,UAAU,CAAC,WAIpCJ,QAAqC;EACrC,MAAMK,MAAM,GAAG,OAAOH,SAAS;EAC/B,MAAMV,QAAQ,GAAG,OAAOC,WAAW;EACnC,MAAMR,OAAO,GAAG,OAAOE,cAAc;EACrC,OAAOjF,MAAM,CAACoG,mBAAmB,CAAC;IAAEX,WAAW,EAAEH,QAAQ,CAACG;EAAW,CAAE,CAAC;EACxE,MAAMY,MAAM,GAAG,OAAO9F,QAAQ,CAAC+F,kBAAkB,CAC/CH,MAAM,CAACI,eAAe,CAAC;IACrBT,QAAQ;IACRf;GACD,CAAC,EACDyB,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAK,WAAW,CAC9B;EACD,IAAIJ,MAAM,CAACI,IAAI,KAAK,WAAW,EAAE;IAC/B,OAAO,OAAOlG,QAAQ,CAACuE,OAAO,CAACQ,QAAQ,CAAC;EAC1C;EACA,MAAMoB,IAAI,GAAG,OAAO1G,MAAM,CAACuD,KAAK,CAC9BnD,MAAM,CAACuG,MAAM,CAACb,QAAQ,CAAChD,UAAU,CAAC,CAACuD,MAAM,CAACK,IAAI,CAAC,CAChD;EACD,OAAO,OAAOA,IAAI;AACpB,CAAC,EAAE,CAACnC,MAAM,EAAEuB,QAAQ,KAClB9F,MAAM,CAAC4G,QAAQ,CAACrC,MAAM,EAAEuB,QAAQ,CAACpD,IAAI,EAAE;EACrCmE,iBAAiB,EAAE;CACpB,CAAC,CAAC","ignoreList":[]}
@@ -2,9 +2,11 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import type { NonEmptyReadonlyArray } from "effect/Array";
5
+ import * as Cause from "effect/Cause";
5
6
  import * as Context from "effect/Context";
6
7
  import * as Effect from "effect/Effect";
7
8
  import type * as Exit from "effect/Exit";
9
+ import * as Schedule from "effect/Schedule";
8
10
  import * as Schema from "effect/Schema";
9
11
  import type { Scope } from "effect/Scope";
10
12
  import type { WorkflowEngine, WorkflowInstance } from "./WorkflowEngine.js";
@@ -51,6 +53,7 @@ export declare const make: <R, Success extends Schema.Schema.Any = typeof Schema
51
53
  readonly success?: Success | undefined;
52
54
  readonly error?: Error | undefined;
53
55
  readonly execute: Effect.Effect<Success["Type"], Error["Type"], R>;
56
+ readonly interruptRetryPolicy?: Schedule.Schedule<any, Cause.Cause<unknown>> | undefined;
54
57
  }) => Activity<Success, Error, Exclude<R, WorkflowInstance | WorkflowEngine | Scope>>;
55
58
  /**
56
59
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"Activity.d.ts","sourceRoot":"","sources":["../../src/Activity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Activity.d.ts","sourceRoot":"","sources":["../../src/Activity.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
+ import * as Cause from "effect/Cause";
1
2
  import * as Context from "effect/Context";
2
3
  import * as Effect from "effect/Effect";
3
4
  import * as Effectable from "effect/Effectable";
4
5
  import { dual } from "effect/Function";
6
+ import * as Schedule from "effect/Schedule";
5
7
  import * as Schema from "effect/Schema";
6
8
  import * as DurableDeferred from "./DurableDeferred.js";
7
9
  import { makeHashDigest } from "./internal/crypto.js";
@@ -20,6 +22,7 @@ export const make = options => {
20
22
  const errorSchema = options.error ?? Schema.Never;
21
23
  // eslint-disable-next-line prefer-const
22
24
  let execute;
25
+ const executeWithoutInterrupt = retryOnInterrupt(options.name, options.interruptRetryPolicy)(options.execute);
23
26
  const self = {
24
27
  ...Effectable.CommitPrototype,
25
28
  [TypeId]: TypeId,
@@ -31,8 +34,8 @@ export const make = options => {
31
34
  failure: errorSchema,
32
35
  defect: Schema.Defect
33
36
  }),
34
- execute: options.execute,
35
- executeEncoded: Effect.matchEffect(options.execute, {
37
+ execute: executeWithoutInterrupt,
38
+ executeEncoded: Effect.matchEffect(executeWithoutInterrupt, {
36
39
  onFailure: error => Effect.flatMap(Effect.orDie(Schema.encode(self.errorSchema)(error)), Effect.fail),
37
40
  onSuccess: value => Effect.orDie(Schema.encode(self.successSchema)(value))
38
41
  }),
@@ -43,6 +46,11 @@ export const make = options => {
43
46
  execute = makeExecute(self);
44
47
  return self;
45
48
  };
49
+ const interruptRetryPolicy = /*#__PURE__*/Schedule.exponential(100, 1.5).pipe(/*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.spaced("10 seconds")), /*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.recurs(10)), /*#__PURE__*/Schedule.whileInput(cause => Cause.isInterrupted(cause)));
50
+ const retryOnInterrupt = (name, policy = interruptRetryPolicy) => effect => effect.pipe(Effect.sandbox, Effect.retry(policy), Effect.catchAll(cause => {
51
+ if (!Cause.isInterrupted(cause)) return Effect.failCause(cause);
52
+ return Effect.die(`Activity "${name}" interrupted and retry attempts exhausted`);
53
+ }));
46
54
  /**
47
55
  * @since 1.0.0
48
56
  * @category Error handling
@@ -1 +1 @@
1
- {"version":3,"file":"Activity.js","names":["Context","Effect","Effectable","dual","Schema","DurableDeferred","makeHashDigest","Workflow","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","raceAll","activities","Union","map","activity","effects","EngineTag","GenericTag","fnUntraced","engine","annotateCurrentSpan","result","wrapActivityResult","activityExecute","_","_tag","exit","decode","withSpan","captureStackTrace"],"sources":["../../src/Activity.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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","decode","withSpan","captureStackTrace"],"sources":["../../src/Activity.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/workflow",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "Durable workflows for Effect",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -13,7 +13,7 @@
13
13
  "peerDependencies": {
14
14
  "effect": "^3.19.0",
15
15
  "@effect/platform": "^0.93.0",
16
- "@effect/rpc": "^0.72.0"
16
+ "@effect/rpc": "^0.72.1"
17
17
  },
18
18
  "publishConfig": {
19
19
  "provenance": true
package/src/Activity.ts CHANGED
@@ -2,11 +2,13 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import type { NonEmptyReadonlyArray } from "effect/Array"
5
+ import * as Cause from "effect/Cause"
5
6
  import * as Context from "effect/Context"
6
7
  import * as Effect from "effect/Effect"
7
8
  import * as Effectable from "effect/Effectable"
8
9
  import type * as Exit from "effect/Exit"
9
10
  import { dual } from "effect/Function"
11
+ import * as Schedule from "effect/Schedule"
10
12
  import * as Schema from "effect/Schema"
11
13
  import type { Scope } from "effect/Scope"
12
14
  import * as DurableDeferred from "./DurableDeferred.js"
@@ -87,11 +89,16 @@ export const make = <
87
89
  readonly success?: Success | undefined
88
90
  readonly error?: Error | undefined
89
91
  readonly execute: Effect.Effect<Success["Type"], Error["Type"], R>
92
+ readonly interruptRetryPolicy?: Schedule.Schedule<any, Cause.Cause<unknown>> | undefined
90
93
  }): Activity<Success, Error, Exclude<R, WorkflowInstance | WorkflowEngine | Scope>> => {
91
94
  const successSchema = options.success ?? Schema.Void as any as Success
92
95
  const errorSchema = options.error ?? Schema.Never as any as Error
93
96
  // eslint-disable-next-line prefer-const
94
97
  let execute!: Effect.Effect<Success["Type"], Error["Type"], any>
98
+ const executeWithoutInterrupt = retryOnInterrupt(
99
+ options.name,
100
+ options.interruptRetryPolicy
101
+ )(options.execute)
95
102
  const self: Activity<Success, Error, Exclude<R, WorkflowInstance | WorkflowEngine>> = {
96
103
  ...Effectable.CommitPrototype,
97
104
  [TypeId]: TypeId,
@@ -103,8 +110,8 @@ export const make = <
103
110
  failure: errorSchema,
104
111
  defect: Schema.Defect
105
112
  }),
106
- execute: options.execute,
107
- executeEncoded: Effect.matchEffect(options.execute, {
113
+ execute: executeWithoutInterrupt,
114
+ executeEncoded: Effect.matchEffect(executeWithoutInterrupt, {
108
115
  onFailure: (error) => Effect.flatMap(Effect.orDie(Schema.encode(self.errorSchema as any)(error)), Effect.fail),
109
116
  onSuccess: (value) => Effect.orDie(Schema.encode(self.successSchema)(value))
110
117
  }),
@@ -116,6 +123,26 @@ export const make = <
116
123
  return self
117
124
  }
118
125
 
126
+ const interruptRetryPolicy = Schedule.exponential(100, 1.5).pipe(
127
+ Schedule.union(Schedule.spaced("10 seconds")),
128
+ Schedule.union(Schedule.recurs(10)),
129
+ Schedule.whileInput((cause: Cause.Cause<unknown>) => Cause.isInterrupted(cause))
130
+ )
131
+
132
+ const retryOnInterrupt = (
133
+ name: string,
134
+ policy: Schedule.Schedule<any, Cause.Cause<unknown>> = interruptRetryPolicy
135
+ ) =>
136
+ <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
137
+ effect.pipe(
138
+ Effect.sandbox,
139
+ Effect.retry(policy),
140
+ Effect.catchAll((cause) => {
141
+ if (!Cause.isInterrupted(cause)) return Effect.failCause(cause)
142
+ return Effect.die(`Activity "${name}" interrupted and retry attempts exhausted`)
143
+ })
144
+ )
145
+
119
146
  /**
120
147
  * @since 1.0.0
121
148
  * @category Error handling