@etohq/workflow-engine-redis 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/loaders/redis.d.ts +2 -2
- package/dist/loaders/redis.d.ts.map +1 -1
- package/dist/loaders/redis.js +4 -1
- package/dist/loaders/redis.js.map +1 -1
- package/dist/migrations/Migration20250120111059.d.ts +6 -0
- package/dist/migrations/Migration20250120111059.d.ts.map +1 -0
- package/dist/migrations/Migration20250120111059.js +14 -0
- package/dist/migrations/Migration20250120111059.js.map +1 -0
- package/dist/migrations/Migration20250128174354.d.ts +6 -0
- package/dist/migrations/Migration20250128174354.d.ts.map +1 -0
- package/dist/migrations/Migration20250128174354.js +24 -0
- package/dist/migrations/Migration20250128174354.js.map +1 -0
- package/dist/migrations/Migration20250505101505.d.ts +6 -0
- package/dist/migrations/Migration20250505101505.d.ts.map +1 -0
- package/dist/migrations/Migration20250505101505.js +40 -0
- package/dist/migrations/Migration20250505101505.js.map +1 -0
- package/dist/models/workflow-execution.d.ts +2 -0
- package/dist/models/workflow-execution.d.ts.map +1 -1
- package/dist/models/workflow-execution.js +7 -0
- package/dist/models/workflow-execution.js.map +1 -1
- package/dist/services/workflow-orchestrator.d.ts +16 -7
- package/dist/services/workflow-orchestrator.d.ts.map +1 -1
- package/dist/services/workflow-orchestrator.js +148 -97
- package/dist/services/workflow-orchestrator.js.map +1 -1
- package/dist/services/workflows-module.d.ts +110 -5
- package/dist/services/workflows-module.d.ts.map +1 -1
- package/dist/services/workflows-module.js +117 -13
- package/dist/services/workflows-module.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/workflow-orchestrator-storage.d.ts +15 -4
- package/dist/utils/workflow-orchestrator-storage.d.ts.map +1 -1
- package/dist/utils/workflow-orchestrator-storage.js +302 -56
- package/dist/utils/workflow-orchestrator-storage.js.map +1 -1
- package/package.json +30 -30
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Etohq
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/loaders/redis.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LoaderOptions } from "@etohq/framework/types";
|
|
2
|
-
declare const _default: ({ container, logger, options, dataLoaderOnly
|
|
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,
|
|
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"}
|
package/dist/loaders/redis.js
CHANGED
|
@@ -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":";;;;;
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/loaders/redis.ts"],"names":[],"mappings":";;;;;AAIA,mCAAgC;AAChC,sDAA2B;AAG3B,kBAAe,KAAK,EAClB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAiB,EAC7D,iBAA4C,EAC7B,EAAE;IACjB,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;IACvD,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,oBAAoB,CAAA;IAElE,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,YAAY,EAAE,IAAA,gBAAO,EAAC,iBAAiB,CAAC,WAAW,KAAK,QAAQ,CAAC;QACjE,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,iBAAiB,EAAE,IAAA,gBAAO,EAAC,YAAY,CAAC;QACxC,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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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
|
|
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;
|
|
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 {
|
|
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
|
|
64
|
-
|
|
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
|
-
}
|
|
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
|
-
}
|
|
75
|
-
subscribe({ workflowId, transactionId, subscriber, subscriberId }: SubscribeOptions
|
|
76
|
-
unsubscribe({ workflowId, transactionId, subscriberOrId }: UnsubscribeOptions
|
|
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":"AAAA,OAAO,EAEL,4BAA4B,EAC5B,0BAA0B,EAE1B,eAAe,EAEhB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,aAAa,EACb,OAAO,EAEP,YAAY,EACb,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"workflow-orchestrator.d.ts","sourceRoot":"","sources":["../../src/services/workflow-orchestrator.ts"],"names":[],"mappings":"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"}
|