@etohq/workflow-engine-redis 1.4.0 → 1.5.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/loaders/redis.d.ts +2 -2
  2. package/dist/loaders/redis.d.ts.map +1 -1
  3. package/dist/loaders/redis.js +4 -1
  4. package/dist/loaders/redis.js.map +1 -1
  5. package/dist/migrations/Migration20250120111059.d.ts +6 -0
  6. package/dist/migrations/Migration20250120111059.d.ts.map +1 -0
  7. package/dist/migrations/Migration20250120111059.js +14 -0
  8. package/dist/migrations/Migration20250120111059.js.map +1 -0
  9. package/dist/migrations/Migration20250128174354.d.ts +6 -0
  10. package/dist/migrations/Migration20250128174354.d.ts.map +1 -0
  11. package/dist/migrations/Migration20250128174354.js +24 -0
  12. package/dist/migrations/Migration20250128174354.js.map +1 -0
  13. package/dist/migrations/Migration20250505101505.d.ts +6 -0
  14. package/dist/migrations/Migration20250505101505.d.ts.map +1 -0
  15. package/dist/migrations/Migration20250505101505.js +40 -0
  16. package/dist/migrations/Migration20250505101505.js.map +1 -0
  17. package/dist/models/workflow-execution.d.ts +2 -0
  18. package/dist/models/workflow-execution.d.ts.map +1 -1
  19. package/dist/models/workflow-execution.js +7 -0
  20. package/dist/models/workflow-execution.js.map +1 -1
  21. package/dist/services/workflow-orchestrator.d.ts +16 -7
  22. package/dist/services/workflow-orchestrator.d.ts.map +1 -1
  23. package/dist/services/workflow-orchestrator.js +148 -97
  24. package/dist/services/workflow-orchestrator.js.map +1 -1
  25. package/dist/services/workflows-module.d.ts +110 -5
  26. package/dist/services/workflows-module.d.ts.map +1 -1
  27. package/dist/services/workflows-module.js +117 -13
  28. package/dist/services/workflows-module.js.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/dist/types/index.d.ts +4 -0
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/dist/utils/workflow-orchestrator-storage.d.ts +15 -4
  33. package/dist/utils/workflow-orchestrator-storage.d.ts.map +1 -1
  34. package/dist/utils/workflow-orchestrator-storage.js +302 -56
  35. package/dist/utils/workflow-orchestrator-storage.js.map +1 -1
  36. package/package.json +11 -11
@@ -1,4 +1,4 @@
1
- import { LoaderOptions } from "@etohq/framework/types";
2
- declare const _default: ({ container, logger, options, dataLoaderOnly, }: LoaderOptions) => Promise<void>;
1
+ import { InternalModuleDeclaration, LoaderOptions } from "@etohq/framework/types";
2
+ declare const _default: ({ container, logger, options, dataLoaderOnly }: LoaderOptions, moduleDeclaration: InternalModuleDeclaration) => Promise<void>;
3
3
  export default _default;
4
4
  //# sourceMappingURL=redis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/loaders/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;yBAKhC,iDAKnB,aAAa,KAAG,OAAO,CAAC,IAAI,CAAC;AALhC,wBAqEC"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/loaders/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,aAAa,EACd,MAAM,wBAAwB,CAAA;yBAM7B,gDAAgD,aAAa,EAC7D,mBAAmB,yBAAyB,KAC3C,OAAO,CAAC,IAAI,CAAC;AAHhB,wBAsEC"}
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const awilix_1 = require("awilix");
7
7
  const ioredis_1 = __importDefault(require("ioredis"));
8
- exports.default = async ({ container, logger, options, dataLoaderOnly, }) => {
8
+ exports.default = async ({ container, logger, options, dataLoaderOnly }, moduleDeclaration) => {
9
9
  const { url, options: redisOptions, pubsub, } = options?.redis;
10
10
  // TODO: get default from ENV VAR
11
11
  if (!url) {
@@ -13,6 +13,7 @@ exports.default = async ({ container, logger, options, dataLoaderOnly, }) => {
13
13
  }
14
14
  const cnnPubSub = pubsub ?? { url, options: redisOptions };
15
15
  const queueName = options?.queueName ?? "eto-workflows";
16
+ const jobQueueName = options?.jobQueueName ?? "eto-workflows-jobs";
16
17
  let connection;
17
18
  let redisPublisher;
18
19
  let redisSubscriber;
@@ -37,12 +38,14 @@ exports.default = async ({ container, logger, options, dataLoaderOnly, }) => {
37
38
  logger?.error(`An error occurred while connecting to Redis PubSub in module 'workflow-engine-redis': ${err}`);
38
39
  }
39
40
  container.register({
41
+ isWorkerMode: (0, awilix_1.asValue)(moduleDeclaration.worker_mode !== "server"),
40
42
  partialLoading: (0, awilix_1.asValue)(true),
41
43
  redisConnection: (0, awilix_1.asValue)(connection),
42
44
  redisWorkerConnection: (0, awilix_1.asValue)(workerConnection),
43
45
  redisPublisher: (0, awilix_1.asValue)(redisPublisher),
44
46
  redisSubscriber: (0, awilix_1.asValue)(redisSubscriber),
45
47
  redisQueueName: (0, awilix_1.asValue)(queueName),
48
+ redisJobQueueName: (0, awilix_1.asValue)(jobQueueName),
46
49
  redisDisconnectHandler: (0, awilix_1.asValue)(async () => {
47
50
  connection.disconnect();
48
51
  workerConnection.disconnect();
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/loaders/redis.ts"],"names":[],"mappings":";;;;;AACA,mCAAgC;AAChC,sDAA2B;AAG3B,kBAAe,KAAK,EAAE,EACpB,SAAS,EACT,MAAM,EACN,OAAO,EACP,cAAc,GACA,EAAiB,EAAE;IACjC,MAAM,EACJ,GAAG,EACH,OAAO,EAAE,YAAY,EACrB,MAAM,GACP,GAAG,OAAO,EAAE,KAA8B,CAAA;IAE3C,iCAAiC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,KAAK,CACT,uHAAuH,CACxH,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;IAE1D,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,eAAe,CAAA;IAEvD,IAAI,UAAU,CAAA;IACd,IAAI,cAAc,CAAA;IAClB,IAAI,eAAe,CAAA;IACnB,IAAI,gBAAgB,CAAA;IAEpB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QACnD,gBAAgB,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE;YAC1C,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YACvB,oBAAoB,EAAE,IAAI;SAC3B,CAAC,CAAA;QACF,MAAM,EAAE,IAAI,CACV,mEAAmE,CACpE,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,KAAK,CACX,kFAAkF,GAAG,EAAE,CACxF,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;QACtE,eAAe,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;QACvE,MAAM,EAAE,IAAI,CACV,0EAA0E,CAC3E,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,KAAK,CACX,yFAAyF,GAAG,EAAE,CAC/F,CAAA;IACH,CAAC;IAED,SAAS,CAAC,QAAQ,CAAC;QACjB,cAAc,EAAE,IAAA,gBAAO,EAAC,IAAI,CAAC;QAC7B,eAAe,EAAE,IAAA,gBAAO,EAAC,UAAU,CAAC;QACpC,qBAAqB,EAAE,IAAA,gBAAO,EAAC,gBAAgB,CAAC;QAChD,cAAc,EAAE,IAAA,gBAAO,EAAC,cAAc,CAAC;QACvC,eAAe,EAAE,IAAA,gBAAO,EAAC,eAAe,CAAC;QACzC,cAAc,EAAE,IAAA,gBAAO,EAAC,SAAS,CAAC;QAClC,sBAAsB,EAAE,IAAA,gBAAO,EAAC,KAAK,IAAI,EAAE;YACzC,UAAU,CAAC,UAAU,EAAE,CAAA;YACvB,gBAAgB,CAAC,UAAU,EAAE,CAAA;YAC7B,cAAc,CAAC,UAAU,EAAE,CAAA;YAC3B,eAAe,CAAC,UAAU,EAAE,CAAA;QAC9B,CAAC,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,KAAK,UAAU,aAAa,CAAC,GAAG,EAAE,YAAY;IAC5C,MAAM,UAAU,GAAG,IAAI,iBAAK,CAAC,GAAG,EAAE;QAChC,WAAW,EAAE,IAAI;QACjB,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;KACxB,CAAC,CAAA;IAEF,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClC,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC"}
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/loaders/redis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Migration } from '@mikro-orm/migrations';
2
+ export declare class Migration20250120111059 extends Migration {
3
+ up(): Promise<void>;
4
+ down(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=Migration20250120111059.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20250120111059.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20250120111059.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,uBAAwB,SAAQ,SAAS;IAE9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAInB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20250120111059 = void 0;
4
+ const migrations_1 = require("@mikro-orm/migrations");
5
+ class Migration20250120111059 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql('CREATE UNIQUE INDEX IF NOT EXISTS "IDX_workflow_execution_workflow_id_transaction_id_unique" ON "workflow_execution" (workflow_id, transaction_id) WHERE deleted_at IS NULL;');
8
+ }
9
+ async down() {
10
+ this.addSql('drop index if exists "IDX_workflow_execution_workflow_id_transaction_id_unique";');
11
+ }
12
+ }
13
+ exports.Migration20250120111059 = Migration20250120111059;
14
+ //# sourceMappingURL=Migration20250120111059.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20250120111059.js","sourceRoot":"","sources":["../../src/migrations/Migration20250120111059.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAElD,MAAa,uBAAwB,SAAQ,sBAAS;IAEpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CAAC,8KAA8K,CAAC,CAAC;IAC9L,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,kFAAkF,CAAC,CAAC;IAClG,CAAC;CAEF;AAVD,0DAUC"}
@@ -0,0 +1,6 @@
1
+ import { Migration } from "@mikro-orm/migrations";
2
+ export declare class Migration20250128174354 extends Migration {
3
+ up(): Promise<void>;
4
+ down(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=Migration20250128174354.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20250128174354.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20250128174354.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,qBAAa,uBAAwB,SAAQ,SAAS;IACrC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAKrC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20250128174354 = void 0;
4
+ const migrations_1 = require("@mikro-orm/migrations");
5
+ class Migration20250128174354 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`alter table if exists "workflow_execution" add column if not exists "retention_time" integer null;`);
8
+ this.addSql(`
9
+ UPDATE workflow_execution
10
+ SET retention_time = (
11
+ SELECT COALESCE(
12
+ (execution->'options'->>'retentionTime')::integer,
13
+ 0
14
+ )
15
+ )
16
+ WHERE execution->'options' ? 'retentionTime';
17
+ `);
18
+ }
19
+ async down() {
20
+ this.addSql(`alter table if exists "workflow_execution" drop column if exists "retention_time";`);
21
+ }
22
+ }
23
+ exports.Migration20250128174354 = Migration20250128174354;
24
+ //# sourceMappingURL=Migration20250128174354.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20250128174354.js","sourceRoot":"","sources":["../../src/migrations/Migration20250128174354.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AAEjD,MAAa,uBAAwB,SAAQ,sBAAS;IAC3C,KAAK,CAAC,EAAE;QACf,IAAI,CAAC,MAAM,CACT,oGAAoG,CACrG,CAAA;QACD,IAAI,CAAC,MAAM,CAAC;;;;;;;;;KASX,CAAC,CAAA;IACJ,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CACT,oFAAoF,CACrF,CAAA;IACH,CAAC;CACF;AAtBD,0DAsBC"}
@@ -0,0 +1,6 @@
1
+ import { Migration } from "@mikro-orm/migrations";
2
+ export declare class Migration20250505101505 extends Migration {
3
+ up(): Promise<void>;
4
+ down(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=Migration20250505101505.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20250505101505.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20250505101505.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAGjD,qBAAa,uBAAwB,SAAQ,SAAS;IACrC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAkBrC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20250505101505 = void 0;
4
+ const migrations_1 = require("@mikro-orm/migrations");
5
+ const ulid_1 = require("ulid");
6
+ class Migration20250505101505 extends migrations_1.Migration {
7
+ async up() {
8
+ this.addSql(`alter table if exists "workflow_execution" drop constraint if exists "workflow_execution_workflow_id_transaction_id_run_id_unique";`);
9
+ this.addSql(`drop index if exists "IDX_workflow_execution_workflow_id_transaction_id_unique";`);
10
+ this.addSql(`alter table if exists "workflow_execution" drop constraint if exists "PK_workflow_execution_workflow_id_transaction_id";`);
11
+ this.addSql(`alter table if exists "workflow_execution" add column if not exists "run_id" text not null default '${(0, ulid_1.ulid)()}';`);
12
+ this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_workflow_execution_workflow_id_transaction_id_run_id_unique" ON "workflow_execution" (workflow_id, transaction_id, run_id) WHERE deleted_at IS NULL;`);
13
+ /*
14
+ * We mistakenly named this migration differently in the workflow engines; this has caused issues with the migrations. Switching between engines will fail because the primary key is attempted to be set twice.
15
+ * The issue happens in the following scenario:
16
+ * 1. In memory engine is used
17
+ * 2. Migration is run
18
+ * 3. Primary is key added
19
+ * 3. Redis engine is used
20
+ * 4. Migration is run
21
+ * 5. Same primary key is attempted to be set again
22
+ * 6. Migration fails
23
+ *
24
+ * The same scenario can happen if you go from Redis to In memory.
25
+ *
26
+ * With this fix, we ensure the primary key is only ever set once.
27
+ */
28
+ this.addSql(`alter table if exists "workflow_execution" drop constraint if exists "workflow_execution_pkey";`);
29
+ this.addSql(`alter table if exists "workflow_execution" add constraint "workflow_execution_pkey" primary key ("workflow_id", "transaction_id", "run_id");`);
30
+ }
31
+ async down() {
32
+ this.addSql(`drop index if exists "IDX_workflow_execution_workflow_id_transaction_id_run_id_unique";`);
33
+ this.addSql(`alter table if exists "workflow_execution" drop constraint if exists "workflow_execution_pkey";`);
34
+ this.addSql(`alter table if exists "workflow_execution" drop column if exists "run_id";`);
35
+ this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_workflow_execution_workflow_id_transaction_id_unique" ON "workflow_execution" (workflow_id, transaction_id) WHERE deleted_at IS NULL;`);
36
+ this.addSql(`alter table if exists "workflow_execution" add constraint "workflow_execution_pkey" primary key ("workflow_id", "transaction_id");`);
37
+ }
38
+ }
39
+ exports.Migration20250505101505 = Migration20250505101505;
40
+ //# sourceMappingURL=Migration20250505101505.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20250505101505.js","sourceRoot":"","sources":["../../src/migrations/Migration20250505101505.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AACjD,+BAA2B;AAE3B,MAAa,uBAAwB,SAAQ,sBAAS;IAC3C,KAAK,CAAC,EAAE;QACf,IAAI,CAAC,MAAM,CACT,qIAAqI,CACtI,CAAA;QACD,IAAI,CAAC,MAAM,CACT,kFAAkF,CACnF,CAAA;QACD,IAAI,CAAC,MAAM,CACT,0HAA0H,CAC3H,CAAA;QAED,IAAI,CAAC,MAAM,CACT,uGAAuG,IAAA,WAAI,GAAE,IAAI,CAClH,CAAA;QACD,IAAI,CAAC,MAAM,CACT,6LAA6L,CAC9L,CAAA;QACD;;;;;;;;;;;;;;WAcG;QACH,IAAI,CAAC,MAAM,CACT,iGAAiG,CAClG,CAAA;QACD,IAAI,CAAC,MAAM,CACT,8IAA8I,CAC/I,CAAA;IACH,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CACT,yFAAyF,CAC1F,CAAA;QACD,IAAI,CAAC,MAAM,CACT,iGAAiG,CAClG,CAAA;QACD,IAAI,CAAC,MAAM,CACT,4EAA4E,CAC7E,CAAA;QAED,IAAI,CAAC,MAAM,CACT,8KAA8K,CAC/K,CAAA;QACD,IAAI,CAAC,MAAM,CACT,oIAAoI,CACrI,CAAA;IACH,CAAC;CACF;AA3DD,0DA2DC"}
@@ -3,8 +3,10 @@ export declare const WorkflowExecution: import("@etohq/framework/utils").DmlEnti
3
3
  id: import("@etohq/framework/utils").IdProperty;
4
4
  workflow_id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").TextProperty>;
5
5
  transaction_id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").TextProperty>;
6
+ run_id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").TextProperty>;
6
7
  execution: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
7
8
  context: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
8
9
  state: import("@etohq/framework/utils").EnumProperty<typeof TransactionState>;
10
+ retention_time: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").NumberProperty>;
9
11
  }>, "workflow_execution">;
10
12
  //# sourceMappingURL=workflow-execution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-execution.d.ts","sourceRoot":"","sources":["../../src/models/workflow-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAGjE,eAAO,MAAM,iBAAiB;;;;;;;yBA0B1B,CAAA"}
1
+ {"version":3,"file":"workflow-execution.d.ts","sourceRoot":"","sources":["../../src/models/workflow-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAGjE,eAAO,MAAM,iBAAiB;;;;;;;;;yBAiC1B,CAAA"}
@@ -8,9 +8,11 @@ exports.WorkflowExecution = utils_1.model
8
8
  id: utils_1.model.id({ prefix: "wf_exec" }),
9
9
  workflow_id: utils_1.model.text().primaryKey(),
10
10
  transaction_id: utils_1.model.text().primaryKey(),
11
+ run_id: utils_1.model.text().primaryKey(),
11
12
  execution: utils_1.model.json().nullable(),
12
13
  context: utils_1.model.json().nullable(),
13
14
  state: utils_1.model.enum(orchestration_1.TransactionState),
15
+ retention_time: utils_1.model.number().nullable(),
14
16
  })
15
17
  .indexes([
16
18
  {
@@ -25,6 +27,11 @@ exports.WorkflowExecution = utils_1.model
25
27
  on: ["transaction_id"],
26
28
  where: "deleted_at IS NULL",
27
29
  },
30
+ {
31
+ on: ["workflow_id", "transaction_id", "run_id"],
32
+ unique: true,
33
+ where: "deleted_at IS NULL",
34
+ },
28
35
  {
29
36
  on: ["state"],
30
37
  where: "deleted_at IS NULL",
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-execution.js","sourceRoot":"","sources":["../../src/models/workflow-execution.ts"],"names":[],"mappings":";;;AAAA,kEAAiE;AACjE,kDAA8C;AAEjC,QAAA,iBAAiB,GAAG,aAAK;KACnC,MAAM,CAAC,oBAAoB,EAAE;IAC5B,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACnC,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IACtC,cAAc,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IACzC,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,aAAK,CAAC,IAAI,CAAC,gCAAgB,CAAC;CACpC,CAAC;KACD,OAAO,CAAC;IACP;QACE,EAAE,EAAE,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,aAAa,CAAC;QACnB,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,gBAAgB,CAAC;QACtB,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,KAAK,EAAE,oBAAoB;KAC5B;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"workflow-execution.js","sourceRoot":"","sources":["../../src/models/workflow-execution.ts"],"names":[],"mappings":";;;AAAA,kEAAiE;AACjE,kDAA8C;AAEjC,QAAA,iBAAiB,GAAG,aAAK;KACnC,MAAM,CAAC,oBAAoB,EAAE;IAC5B,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACnC,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IACtC,cAAc,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IACzC,MAAM,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IACjC,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,aAAK,CAAC,IAAI,CAAC,gCAAgB,CAAC;IACnC,cAAc,EAAE,aAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,OAAO,CAAC;IACP;QACE,EAAE,EAAE,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,aAAa,CAAC;QACnB,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,gBAAgB,CAAC;QACtB,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,CAAC;QAC/C,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,KAAK,EAAE,oBAAoB;KAC5B;CACF,CAAC,CAAA"}
@@ -1,10 +1,17 @@
1
1
  import { DistributedTransactionEvents, DistributedTransactionType, TransactionStep } from "@etohq/framework/orchestration";
2
2
  import { ContainerLike, Context, EtoContainer } from "@etohq/framework/types";
3
- import { FlowRunOptions, ReturnWorkflow } from "@etohq/framework/workflows-sdk";
3
+ import { TransactionState } from "@etohq/framework/utils";
4
+ import { FlowCancelOptions, FlowRunOptions, ReturnWorkflow } from "@etohq/framework/workflows-sdk";
4
5
  import Redis from "ioredis";
5
6
  import type { RedisDistributedTransactionStorage } from "../utils";
6
7
  export type WorkflowOrchestratorRunOptions<T> = Omit<FlowRunOptions<T>, "container"> & {
7
8
  transactionId?: string;
9
+ runId?: string;
10
+ container?: ContainerLike;
11
+ };
12
+ export type WorkflowOrchestratorCancelOptions = Omit<FlowCancelOptions, "transaction" | "transactionId" | "container"> & {
13
+ transactionId: string;
14
+ runId?: string;
8
15
  container?: ContainerLike;
9
16
  };
10
17
  type RegisterStepSuccessOptions<T> = Omit<WorkflowOrchestratorRunOptions<T>, "transactionId" | "input">;
@@ -22,6 +29,7 @@ type NotifyOptions = {
22
29
  response?: unknown;
23
30
  result?: unknown;
24
31
  errors?: unknown[];
32
+ state?: TransactionState;
25
33
  };
26
34
  type SubscriberHandler = {
27
35
  (input: NotifyOptions): void;
@@ -60,20 +68,21 @@ export declare class WorkflowOrchestratorService {
60
68
  onApplicationPrepareShutdown(): Promise<void>;
61
69
  onApplicationStart(): Promise<void>;
62
70
  private triggerParentStep;
63
- run<T = unknown>(workflowIdOrWorkflow: string | ReturnWorkflow<any, any, any>, options?: WorkflowOrchestratorRunOptions<T>, sharedContext?: Context): Promise<any>;
64
- getRunningTransaction(workflowId: string, transactionId: string, options?: WorkflowOrchestratorRunOptions<undefined>, sharedContext?: Context): Promise<DistributedTransactionType>;
71
+ run<T = unknown>(workflowIdOrWorkflow: string | ReturnWorkflow<any, any, any>, options?: WorkflowOrchestratorRunOptions<T>): Promise<any>;
72
+ cancel(workflowIdOrWorkflow: string | ReturnWorkflow<any, any, any>, options?: WorkflowOrchestratorCancelOptions): Promise<any>;
73
+ getRunningTransaction(workflowId: string, transactionId: string, context?: Context): Promise<DistributedTransactionType>;
65
74
  setStepSuccess<T = unknown>({ idempotencyKey, stepResponse, options, }: {
66
75
  idempotencyKey: string | IdempotencyKeyParts;
67
76
  stepResponse: unknown;
68
77
  options?: RegisterStepSuccessOptions<T>;
69
- }, sharedContext?: Context): Promise<any>;
78
+ }): Promise<any>;
70
79
  setStepFailure<T = unknown>({ idempotencyKey, stepResponse, options, }: {
71
80
  idempotencyKey: string | IdempotencyKeyParts;
72
81
  stepResponse: unknown;
73
82
  options?: RegisterStepSuccessOptions<T>;
74
- }, sharedContext?: Context): Promise<any>;
75
- subscribe({ workflowId, transactionId, subscriber, subscriberId }: SubscribeOptions, sharedContext?: Context): void;
76
- unsubscribe({ workflowId, transactionId, subscriberOrId }: UnsubscribeOptions, sharedContext?: Context): void;
83
+ }): Promise<any>;
84
+ subscribe({ workflowId, transactionId, subscriber, subscriberId, }: SubscribeOptions): void;
85
+ unsubscribe({ workflowId, transactionId, subscriberOrId, }: UnsubscribeOptions): void;
77
86
  private notify;
78
87
  private getChannelName;
79
88
  private buildWorkflowEvents;
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-orchestrator.d.ts","sourceRoot":"","sources":["../../src/services/workflow-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-orchestrator.d.ts","sourceRoot":"","sources":["../../src/services/workflow-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,4BAA4B,EAC5B,0BAA0B,EAE1B,eAAe,EAEhB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,aAAa,EACb,OAAO,EAEP,YAAY,EACb,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAY,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,EACL,iBAAiB,EACjB,cAAc,EAGd,cAAc,EACf,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,MAAM,SAAS,CAAA;AAG3B,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,UAAU,CAAA;AAElE,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI,IAAI,CAClD,cAAc,CAAC,CAAC,CAAC,EACjB,WAAW,CACZ,GAAG;IACF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,iBAAiB,EACjB,aAAa,GAAG,eAAe,GAAG,WAAW,CAC9C,GAAG;IACF,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B,CAAA;AAED,KAAK,0BAA0B,CAAC,CAAC,IAAI,IAAI,CACvC,8BAA8B,CAAC,CAAC,CAAC,EACjC,eAAe,GAAG,OAAO,CAC1B,CAAA;AAED,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAA;CAChC,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,4BAA4B,CAAA;IAC7C,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB,CAAA;AAKD,KAAK,iBAAiB,GAAG;IACvB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;CAC7B,GAAG;IACF,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,iBAAiB,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAC3C,CAAA;AAOD,qBAAa,2BAA2B;;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,SAAS,CAAC,cAAc,EAAE,KAAK,CAAA;IAC/B,SAAS,CAAC,eAAe,EAAE,KAAK,CAAA;IAChC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAA;IAClC,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,gBAAgB,CAAY;IAIpC,SAAS,CAAC,mCAAmC,EAAE,kCAAkC,CAAA;gBAErE,EACE,cAAc,EACd,kCAAkC,EAClC,cAAc,EACd,eAAe,EACf,eAAe,GAChB,EAAE;QACb,cAAc,EAAE,OAAO,CAAA;QACvB,kCAAkC,EAAE,kCAAkC,CAAA;QACtE,2BAA2B,EAAE,2BAA2B,CAAA;QACxD,cAAc,EAAE,KAAK,CAAA;QACrB,eAAe,EAAE,KAAK,CAAA;QACtB,eAAe,EAAE,YAAY,CAAA;KAC9B;IAyBK,qBAAqB;IAIrB,4BAA4B;IAS5B,kBAAkB;YAIV,iBAAiB;IA8BzB,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,oBAAoB,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC5D,OAAO,CAAC,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAwFvC,MAAM,CACV,oBAAoB,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC5D,OAAO,CAAC,EAAE,iCAAiC;IA0GvC,qBAAqB,CACzB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,0BAA0B,CAAC;IAuBhC,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,EACE,cAAc,EACd,YAAY,EACZ,OAAO,GACR,EAAE;QACnC,cAAc,EAAE,MAAM,GAAG,mBAAmB,CAAA;QAC5C,YAAY,EAAE,OAAO,CAAA;QACrB,OAAO,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAA;KACxC;IA+DK,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,EACE,cAAc,EACd,YAAY,EACZ,OAAO,GACR,EAAE;QACnC,cAAc,EAAE,MAAM,GAAG,mBAAmB,CAAA;QAC5C,YAAY,EAAE,OAAO,CAAA;QACrB,OAAO,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAA;KACxC;IA+DD,SAAS,CAAC,EACE,UAAU,EACV,aAAa,EACb,UAAU,EACV,YAAY,GACb,EAAE,gBAAgB;IAuC7B,WAAW,CAAC,EACE,UAAU,EACV,aAAa,EACb,cAAc,GACf,EAAE,kBAAkB;YA8CnB,MAAM;IAyEpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;IAmH3B,OAAO,CAAC,2BAA2B;CA+BpC"}