@decaf-ts/core 0.10.2 → 0.12.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/README.md +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/persistence/Dispatch.d.ts +1 -0
- package/lib/esm/persistence/Dispatch.js +17 -3
- package/lib/esm/persistence/Dispatch.js.map +1 -1
- package/lib/esm/services/services.d.ts +1 -0
- package/lib/esm/services/services.js +14 -0
- package/lib/esm/services/services.js.map +1 -1
- package/lib/esm/tasks/TaskContext.d.ts +4 -0
- package/lib/esm/tasks/TaskContext.js +14 -0
- package/lib/esm/tasks/TaskContext.js.map +1 -1
- package/lib/esm/tasks/TaskEngine.d.ts +13 -0
- package/lib/esm/tasks/TaskEngine.js +196 -2
- package/lib/esm/tasks/TaskEngine.js.map +1 -1
- package/lib/esm/tasks/TaskHandler.d.ts +1 -0
- package/lib/esm/tasks/TaskHandler.js +6 -0
- package/lib/esm/tasks/TaskHandler.js.map +1 -1
- package/lib/esm/tasks/TaskTracker.d.ts +1 -0
- package/lib/esm/tasks/TaskTracker.js +13 -0
- package/lib/esm/tasks/TaskTracker.js.map +1 -1
- package/lib/esm/tasks/builder.d.ts +24 -4
- package/lib/esm/tasks/builder.js +66 -3
- package/lib/esm/tasks/builder.js.map +1 -1
- package/lib/esm/tasks/constants.d.ts +1 -0
- package/lib/esm/tasks/constants.js +1 -0
- package/lib/esm/tasks/constants.js.map +1 -1
- package/lib/esm/tasks/models/TaskModel.d.ts +2 -0
- package/lib/esm/tasks/models/TaskModel.js +15 -0
- package/lib/esm/tasks/models/TaskModel.js.map +1 -1
- package/lib/esm/tasks/models/TaskStepSpecModel.d.ts +2 -0
- package/lib/esm/tasks/models/TaskStepSpecModel.js +12 -0
- package/lib/esm/tasks/models/TaskStepSpecModel.js.map +1 -1
- package/lib/esm/tasks/types.d.ts +7 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/persistence/Dispatch.cjs +17 -3
- package/lib/persistence/Dispatch.d.ts +1 -0
- package/lib/persistence/Dispatch.js.map +1 -1
- package/lib/services/services.cjs +14 -0
- package/lib/services/services.d.ts +1 -0
- package/lib/services/services.js.map +1 -1
- package/lib/tasks/TaskContext.cjs +14 -0
- package/lib/tasks/TaskContext.d.ts +4 -0
- package/lib/tasks/TaskContext.js.map +1 -1
- package/lib/tasks/TaskEngine.cjs +196 -2
- package/lib/tasks/TaskEngine.d.ts +13 -0
- package/lib/tasks/TaskEngine.js.map +1 -1
- package/lib/tasks/TaskHandler.cjs +6 -0
- package/lib/tasks/TaskHandler.d.ts +1 -0
- package/lib/tasks/TaskHandler.js.map +1 -1
- package/lib/tasks/TaskTracker.cjs +13 -0
- package/lib/tasks/TaskTracker.d.ts +1 -0
- package/lib/tasks/TaskTracker.js.map +1 -1
- package/lib/tasks/builder.cjs +68 -4
- package/lib/tasks/builder.d.ts +24 -4
- package/lib/tasks/builder.js.map +1 -1
- package/lib/tasks/constants.cjs +1 -0
- package/lib/tasks/constants.d.ts +1 -0
- package/lib/tasks/constants.js.map +1 -1
- package/lib/tasks/models/TaskModel.cjs +15 -0
- package/lib/tasks/models/TaskModel.d.ts +2 -0
- package/lib/tasks/models/TaskModel.js.map +1 -1
- package/lib/tasks/models/TaskStepSpecModel.cjs +12 -0
- package/lib/tasks/models/TaskStepSpecModel.d.ts +2 -0
- package/lib/tasks/models/TaskStepSpecModel.js.map +1 -1
- package/lib/tasks/types.d.ts +7 -1
- package/package.json +1 -1
package/lib/esm/tasks/types.d.ts
CHANGED
|
@@ -8,10 +8,15 @@ import { TaskHandlerRegistry } from "./TaskHandlerRegistry";
|
|
|
8
8
|
import { TaskEventModel } from "./models/TaskEventModel";
|
|
9
9
|
import { TaskStatus } from "./constants";
|
|
10
10
|
import { TaskErrorModel } from "./models/TaskErrorModel";
|
|
11
|
+
import { TaskStepSpecModel } from "./models/TaskStepSpecModel";
|
|
11
12
|
export interface ITaskHandler<I = any, O = any> {
|
|
12
13
|
type: string;
|
|
13
14
|
run(input: I, ctx: TaskContext): Promise<O>;
|
|
15
|
+
catch?(input: I, error: unknown, ctx: TaskContext): Promise<void>;
|
|
14
16
|
}
|
|
17
|
+
export type TaskDependencySpec = {
|
|
18
|
+
dependencies?: string[];
|
|
19
|
+
};
|
|
15
20
|
export type LogPipeOptions = {
|
|
16
21
|
style: boolean;
|
|
17
22
|
logProgress: boolean;
|
|
@@ -30,6 +35,7 @@ export interface TaskFlags<LOG extends TaskLogger<any> = TaskLogger<any>> extend
|
|
|
30
35
|
flush: () => Promise<void>;
|
|
31
36
|
progress: (data: any) => Promise<void>;
|
|
32
37
|
heartbeat: () => Promise<void>;
|
|
38
|
+
scheduleCompositeSteps?: (steps: TaskStepSpecModel[]) => Promise<void>;
|
|
33
39
|
resultCache?: Record<string, any>;
|
|
34
40
|
}
|
|
35
41
|
export type TaskEngineConfig<A extends Adapter<any, any, any, any>> = {
|
|
@@ -50,7 +56,7 @@ export type TaskEngineConfig<A extends Adapter<any, any, any, any>> = {
|
|
|
50
56
|
autoShutdown?: TaskEngineAutoShutdownConfig;
|
|
51
57
|
};
|
|
52
58
|
export type TaskProgressPayload = {
|
|
53
|
-
status: TaskStatus;
|
|
59
|
+
status: TaskStatus | "update";
|
|
54
60
|
currentStep?: number;
|
|
55
61
|
totalSteps?: number;
|
|
56
62
|
output?: any;
|
package/lib/index.cjs
CHANGED
|
@@ -49,7 +49,7 @@ __exportStar(require("./persistence/index.cjs"), exports);
|
|
|
49
49
|
* @const VERSION
|
|
50
50
|
* @memberOf module:core
|
|
51
51
|
*/
|
|
52
|
-
exports.VERSION = "0.
|
|
52
|
+
exports.VERSION = "0.11.0";
|
|
53
53
|
/**
|
|
54
54
|
* @description Stores the current package version
|
|
55
55
|
* @summary A constant representing the version of the core package
|
package/lib/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export * from "./persistence";
|
|
|
22
22
|
* @const VERSION
|
|
23
23
|
* @memberOf module:core
|
|
24
24
|
*/
|
|
25
|
-
export declare const VERSION = "0.
|
|
25
|
+
export declare const VERSION = "0.11.0";
|
|
26
26
|
/**
|
|
27
27
|
* @description Stores the current package version
|
|
28
28
|
* @summary A constant representing the version of the core package
|
|
@@ -34,6 +34,17 @@ const constants_1 = require("./constants.cjs");
|
|
|
34
34
|
* ```
|
|
35
35
|
*/
|
|
36
36
|
class Dispatch extends ContextualLoggedClass_1.ContextualLoggedClass {
|
|
37
|
+
isSameObservedAdapter(observer) {
|
|
38
|
+
if (!this.adapter)
|
|
39
|
+
return false;
|
|
40
|
+
if (this.adapter === observer)
|
|
41
|
+
return true;
|
|
42
|
+
const current = this.adapter;
|
|
43
|
+
const candidate = observer;
|
|
44
|
+
if (!(candidate instanceof Adapter_1.Adapter))
|
|
45
|
+
return false;
|
|
46
|
+
return (current.alias === candidate.alias && current.flavour === candidate.flavour);
|
|
47
|
+
}
|
|
37
48
|
/**
|
|
38
49
|
* @description Creates a new Dispatch instance
|
|
39
50
|
* @summary Initializes a new Dispatch instance without any adapter
|
|
@@ -186,8 +197,11 @@ class Dispatch extends ContextualLoggedClass_1.ContextualLoggedClass {
|
|
|
186
197
|
observe(observer) {
|
|
187
198
|
if (!(observer instanceof Adapter_1.Adapter))
|
|
188
199
|
throw new errors_1.UnsupportedError("Only Adapters can be observed by dispatch");
|
|
189
|
-
if (this.adapter)
|
|
190
|
-
|
|
200
|
+
if (this.adapter) {
|
|
201
|
+
if (this.isSameObservedAdapter(observer))
|
|
202
|
+
return () => this.unObserve(observer);
|
|
203
|
+
throw new errors_1.UnsupportedError("Dispatch is already observing another adapter");
|
|
204
|
+
}
|
|
191
205
|
this.adapter = observer;
|
|
192
206
|
this.models = Adapter_1.Adapter.models(this.adapter.alias);
|
|
193
207
|
this.initialize().then(() => this.log.verbose(`Dispatch initialized for ${this.adapter.alias} adapter`));
|
|
@@ -200,7 +214,7 @@ class Dispatch extends ContextualLoggedClass_1.ContextualLoggedClass {
|
|
|
200
214
|
* @return {void}
|
|
201
215
|
*/
|
|
202
216
|
unObserve(observer) {
|
|
203
|
-
if (this.
|
|
217
|
+
if (!this.isSameObservedAdapter(observer))
|
|
204
218
|
throw new errors_1.UnsupportedError("Only the adapter that was used to observe can be unobserved");
|
|
205
219
|
this.adapter = undefined;
|
|
206
220
|
}
|
|
@@ -32,6 +32,7 @@ import { ContextualArgs, ContextualizedArgs, ContextualLoggedClass, MaybeContext
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
export declare class Dispatch<A extends Adapter<any, any, any, any>> extends ContextualLoggedClass<ContextOf<A>> implements AdapterDispatch<A> {
|
|
35
|
+
private isSameObservedAdapter;
|
|
35
36
|
/**
|
|
36
37
|
* Indicates whether the dispatcher has already been initialized.
|
|
37
38
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dispatch.js","sourceRoot":"","sources":["../../src/persistence/Dispatch.ts"],"names":[],"mappings":";;;AAAA,2DAIiC;AACjC,yEAAyE;AAEzE,2CAAoC;AACpC,yCAA4C;AAG5C,gFAMwC;AACxC,+CAA8C;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAa,QACX,SAAQ,6CAAmC;
|
|
1
|
+
{"version":3,"file":"Dispatch.js","sourceRoot":"","sources":["../../src/persistence/Dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,20 @@ class Service extends ContextualLoggedClass_1.ContextualLoggedClass {
|
|
|
45
45
|
},
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
+
override(conf, ...args) {
|
|
49
|
+
return new Proxy(this, {
|
|
50
|
+
get(original, prop, receiver) {
|
|
51
|
+
const orig = Reflect.get(original, prop, receiver);
|
|
52
|
+
if (typeof orig !== "object")
|
|
53
|
+
return orig;
|
|
54
|
+
if (orig instanceof Service)
|
|
55
|
+
return orig.override(conf, ...args);
|
|
56
|
+
if (orig instanceof index_1.Repository)
|
|
57
|
+
return orig.override(conf);
|
|
58
|
+
return orig;
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
48
62
|
/**
|
|
49
63
|
* @description Registers an observer for this repository.
|
|
50
64
|
* @summary Adds an observer that will be notified of changes to models in this repository.
|
|
@@ -10,6 +10,7 @@ export declare abstract class Service<C extends Context<ContextFlags<any>> = Con
|
|
|
10
10
|
protected observerHandler?: ObserverHandler;
|
|
11
11
|
protected constructor(name?: string | undefined);
|
|
12
12
|
for(conf: any, ...args: any[]): this;
|
|
13
|
+
override(conf: any, ...args: any[]): this;
|
|
13
14
|
/**
|
|
14
15
|
* @description Registers an observer for this repository.
|
|
15
16
|
* @summary Adds an observer that will be notified of changes to models in this repository.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/services/services.ts"],"names":[],"mappings":";;;;;;;;;;;;AASA,0DAAiD;AACjD,+CAAgE;AAChE,gFAMwC;AACxC,2DAAwD;AAExD,8DAAgF;AAChF,gDAAsD;AACtD,2EAA8D;AAC9D,gEAAiD;AAEjD,0EAAiE;AACjE,qDAAiD;AAEjD,MAAsB,OAGpB,SAAQ,6CAAwB;IAOhC,YAA+B,IAAa;QAC1C,KAAK,EAAE,CAAC;QADqB,SAAI,GAAJ,IAAI,CAAS;QAJlC,cAAS,GAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/services/services.ts"],"names":[],"mappings":";;;;;;;;;;;;AASA,0DAAiD;AACjD,+CAAgE;AAChE,gFAMwC;AACxC,2DAAwD;AAExD,8DAAgF;AAChF,gDAAsD;AACtD,2EAA8D;AAC9D,gEAAiD;AAEjD,0EAAiE;AACjE,qDAAiD;AAEjD,MAAsB,OAGpB,SAAQ,6CAAwB;IAOhC,YAA+B,IAAa;QAC1C,KAAK,EAAE,CAAC;QADqB,SAAI,GAAJ,IAAI,CAAS;QAJlC,cAAS,GAAe,EAAE,CAAC;QAsJrC;;;WAGG;QACgB,YAAO,GAAmB,CAAA,iBAEf,CAAA,CAAC;IAtJ/B,CAAC;IAED,GAAG,CAAC,IAAS,EAAE,GAAG,IAAW;QAC3B,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;YACrB,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ;gBAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBAC1C,IAAI,IAAI,YAAY,OAAO;oBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC5D,IAAI,IAAI,YAAY,kBAAU;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAS,EAAE,GAAG,IAAW;QAChC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;YACrB,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ;gBAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBAC1C,IAAI,IAAI,YAAY,OAAO;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;gBACjE,IAAI,IAAI,YAAY,kBAAU;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IAEH,OAAO,CAAC,QAAkB,EAAE,MAAuB;QACjD,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE;gBAC7C,KAAK,EAAE,IAAI,iCAAe,EAAE;gBAC5B,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,eAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,GAAG,CAAC,OAAO,CACT,2BAA2B,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAC9E,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;OAOG;IAEH,SAAS,CAAC,QAAkB;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB,MAAM,IAAI,6BAAa,CACrB,+GAA+G,CAChH,CAAC;QACJ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,YAAY,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,eAAe,CAAC;YAC5B,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,eAAe,CACnB,KAAgC,EAChC,KAAuB,EACvB,EAAY,EACZ,GAAG,IAAuB;QAE1B,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB,MAAM,IAAI,6BAAa,CACrB,oEAAoE,CACrE,CAAC;QACJ,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACjE,GAAG,CAAC,OAAO,CACT,YAAY,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,kBAAkB,IAAI,EAAE,CACjE,CAAC;QACF,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;;;OASG;IACO,KAAK,CAAC,KAAK,CACnB,SAAiB,EACjB,KAA0B,EAC1B,GAAG,IAAW;QAEd,KAAK,CAAC,aAAa;YACjB,KAAK,CAAC,aAAa,IAAI,GAAG,SAAS,IAAI,iBAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,iBAAO,CAAC,GAAG,CAAC,IAAW,CAAC,CAAW,CAAC;QACjE,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,+BAAmB,EAAE,KAAK,EAAE;YACnD,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,GAAG;SACZ,CAA0B,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,CACX,KAAgC,EAChC,KAAuB,EACvB,EAAY,EACZ,GAAG,IAAuB;QAE1B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAUD,KAAK,CAAC,OAAO,CACX,SAA6C,EAC7C,SAA8B,EAC9B,GAAG,IAAsC;QAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,GAAG,CAAC,KAAK,CACP,4BAA4B,SAAS,mCAAmC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CACpG,CAAC;QACF,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;QACD,SAAS,GAAG,GAAG;YACb,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC;YACjD,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAC5B,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAC1D,SAAgC,EAChC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAClC,CAAC;QACF,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC;oBAC3C,GAAG,GAAG,CAAC,OAAO,CAAC;oBACf,GAAG,KAAK;oBACR,aAAa,EAAE,GAAG;iBACnB,CAAQ,CAAC;gBACV,GAAG,CAAC,UAAU,CAAC;oBACb,aAAa,EAAE;wBACb,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;wBAC9C,MAAM;qBACP;iBACF,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC;oBAC3C,GAAG,GAAG,CAAC,OAAO,CAAC;oBACf,GAAG,KAAK;oBACR,aAAa,EAAE,GAAG;iBACnB,CAAQ,CAAC;gBAEV,GAAG,CAAC,UAAU,CAAC;oBACb,aAAa,EAAE;wBACb,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;wBAC9C,MAAM;qBACP;iBACF,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAQ,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC;YACnC,GAAG,KAAK;SACT,CAAQ,CAAC;IACZ,CAAC;IAgCkB,MAAM,CAMvB,IAAuC,EACvC,SAAiB,EACjB,cAAsB,KAAe,EACrC,SAAqC;QAMrC,OAAO,6CAAqB,CAAC,MAAM,CAAC,IAAI,CACtC,IAAI,EACJ,SAAS,EACT,SAAS,IAAI,EAAE,EACf,WAAW,EACX,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,CAS0B,CAAC;IAC9E,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAoB,IAAsC;QAClE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,6BAAa,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,mCAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,UAAU;YAAE,OAAO,UAAe,CAAC;QAEvC,MAAM,IAAI,6BAAa,CACrB,wBAAwB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CACnH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,GAAG,IAA2B;QAE9B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CACzC,2BAAe,CAAC,cAAc,EAC9B,EAAE,EACF,GAAG,IAAI,CACR,CAAC;QACF,GAAG,GAAG,GAAG;YACP,CAAC,CAAE,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;gBAC3B,GAAG,KAAK;gBACR,aAAa,EAAE,GAAG;aACnB,CAAS;YACZ,CAAC,CAAE,IAAI,iBAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAS,CAAC;QAE7C,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,mCAAW,CAAC,QAAQ,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,GAAG,CAAC,OAAO,CAAC,WAAW,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;gBAClD,MAAM,CAAC,GAAG,mCAAW,CAAC,GAAG,CAAU,OAA+B,CAAC,CAAC;gBACpE,IAAI,CAAC,CAAC;oBACJ,MAAM,IAAI,6BAAa,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,kBAAkB,EAAE,CAAC;oBACpC,GAAG,CAAC,OAAO,CAAC,gBAAgB,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;oBACvD,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,6BAAa,CAAC,kBAAkB,OAAO,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CACnB,GAAG,IAA2B;QAE9B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CACzC,2BAAe,CAAC,QAAQ,EACxB,EAAE,EACF,GAAG,IAAI,CACR,CAAC;QACF,GAAG,GAAG,GAAG;YACP,CAAC,CAAE,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;gBAC3B,GAAG,KAAK;gBACR,aAAa,EAAE,GAAG;aACnB,CAAS;YACZ,CAAC,CAAE,IAAI,iBAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAS,CAAC;QAE7C,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,mCAAW,CAAC,QAAQ,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAChE,IAAI,CAAC;gBACH,GAAG,CAAC,OAAO,CAAC,iBAAiB,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;gBACxD,MAAM,CAAC,GAAG,mCAAW,CAAC,GAAG,CAAU,OAA+B,CAAC,CAAC;gBACpE,IAAI,CAAC,CAAC;oBACJ,MAAM,IAAI,6BAAa,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,kBAAkB,EAAE,CAAC;oBACpC,GAAG,CAAC,OAAO,CAAC,4BAA4B,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;oBACnE,IAAI,CAAC;wBACH,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC;oBAC/B,CAAC;oBAAC,OAAO,CAAU,EAAE,CAAC;wBACpB,GAAG,CAAC,KAAK,CACP,iCAAiC,OAAO,CAAC,IAAI,UAAU,EACvD,CAAU,CACX,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,6BAAa,CAAC,+BAA+B,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAzYD,0BAyYC;AA1VC;IADC,IAAA,eAAK,GAAE;;;;sCAaP;AAWD;IADC,IAAA,eAAK,GAAE;;;;wCAaP;AAyTH,MAAsB,kBAIpB,SAAQ,OAAO;IAKf;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAAC,GAAG,IAA2B;QACvC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAC9C,GAAI,IAAsB,CAC3B,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,GAAG,CACd,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,2BAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAC9D,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACnD,CAAC;IAOD,IACc,MAAM;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,6BAAa,CAAC,wBAAwB,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IACI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,6BAAa,CAAC,wBAAwB,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAG,IAA2B;QAC3C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,CAAC;CACF;AA/CD,gDA+CC;AAjCO;IADL,IAAA,eAAK,GAAE;;;;8CAWP;AAOD;IAAC,IAAA,eAAK,GAAE;;;gDAIP;AAED;IAAC,IAAA,eAAK,GAAE;;;gDAIP"}
|
|
@@ -6,6 +6,8 @@ const TaskErrorModel_1 = require("./models/TaskErrorModel.cjs");
|
|
|
6
6
|
const constants_1 = require("./constants.cjs");
|
|
7
7
|
const utils_1 = require("./utils.cjs");
|
|
8
8
|
const TaskStateChangeError_1 = require("./TaskStateChangeError.cjs");
|
|
9
|
+
const TaskStepSpecModel_1 = require("./models/TaskStepSpecModel.cjs");
|
|
10
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
9
11
|
class TaskContext extends Context_1.Context {
|
|
10
12
|
get taskId() {
|
|
11
13
|
return this.get("taskId");
|
|
@@ -79,6 +81,18 @@ class TaskContext extends Context_1.Context {
|
|
|
79
81
|
get resultCache() {
|
|
80
82
|
return this.get("resultCache");
|
|
81
83
|
}
|
|
84
|
+
scheduleSteps(...steps) {
|
|
85
|
+
const normalized = (steps ?? []).map((step) => step instanceof TaskStepSpecModel_1.TaskStepSpecModel ? step : new TaskStepSpecModel_1.TaskStepSpecModel(step));
|
|
86
|
+
return {
|
|
87
|
+
afterCurrent: async () => {
|
|
88
|
+
const scheduler = this.getOrUndefined("scheduleCompositeSteps");
|
|
89
|
+
if (!scheduler) {
|
|
90
|
+
throw new db_decorators_1.InternalError("scheduleSteps().afterCurrent() is only available while running a composite task step");
|
|
91
|
+
}
|
|
92
|
+
await scheduler(normalized);
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
82
96
|
constructor(ctx) {
|
|
83
97
|
super(ctx);
|
|
84
98
|
}
|
|
@@ -5,6 +5,7 @@ import { DateTarget } from "@decaf-ts/decorator-validation";
|
|
|
5
5
|
import { TaskErrorModel } from "./models/TaskErrorModel";
|
|
6
6
|
import { TaskStatus } from "./constants";
|
|
7
7
|
import { TaskStateChangeRequest } from "./TaskStateChangeError";
|
|
8
|
+
import { TaskStepSpecModel } from "./models/TaskStepSpecModel";
|
|
8
9
|
export declare class TaskContext extends Context<TaskFlags> {
|
|
9
10
|
get taskId(): string;
|
|
10
11
|
get logger(): TaskLogger<any>;
|
|
@@ -22,5 +23,8 @@ export declare class TaskContext extends Context<TaskFlags> {
|
|
|
22
23
|
reschedule(when: DateTarget, reason?: string | Error | TaskErrorModel): never;
|
|
23
24
|
private toTaskError;
|
|
24
25
|
get resultCache(): Record<string, any> | undefined;
|
|
26
|
+
scheduleSteps(...steps: (TaskStepSpecModel | Partial<TaskStepSpecModel>)[]): {
|
|
27
|
+
afterCurrent: () => Promise<void>;
|
|
28
|
+
};
|
|
25
29
|
constructor(ctx?: Context<any>);
|
|
26
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskContext.js","sourceRoot":"","sources":["../../src/tasks/TaskContext.ts"],"names":[],"mappings":";;;AAAA,0DAAiD;AAIjD,gEAAyD;AACzD,+CAAyC;AACzC,uCAAyC;AACzC,qEAAsF;
|
|
1
|
+
{"version":3,"file":"TaskContext.js","sourceRoot":"","sources":["../../src/tasks/TaskContext.ts"],"names":[],"mappings":"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"}
|
package/lib/tasks/TaskEngine.cjs
CHANGED
|
@@ -285,6 +285,9 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
285
285
|
catch {
|
|
286
286
|
// fallback to candidate payload
|
|
287
287
|
}
|
|
288
|
+
const runnable = await this.isRunnable(source, ctx);
|
|
289
|
+
if (!runnable)
|
|
290
|
+
return null;
|
|
288
291
|
const claimed = new TaskModel_1.TaskModel({
|
|
289
292
|
...source,
|
|
290
293
|
status: constants_1.TaskStatus.RUNNING,
|
|
@@ -302,6 +305,141 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
302
305
|
return null;
|
|
303
306
|
}
|
|
304
307
|
}
|
|
308
|
+
isTaskFinished(status) {
|
|
309
|
+
return [
|
|
310
|
+
constants_1.TaskStatus.SUCCEEDED,
|
|
311
|
+
constants_1.TaskStatus.FAILED,
|
|
312
|
+
constants_1.TaskStatus.CANCELED,
|
|
313
|
+
].includes(status);
|
|
314
|
+
}
|
|
315
|
+
parseTaskDependency(value) {
|
|
316
|
+
const raw = value?.trim();
|
|
317
|
+
if (!raw)
|
|
318
|
+
return undefined;
|
|
319
|
+
const sep = raw.lastIndexOf(":");
|
|
320
|
+
if (sep <= 0 || sep >= raw.length - 1)
|
|
321
|
+
return { taskId: raw };
|
|
322
|
+
const taskId = raw.slice(0, sep).trim();
|
|
323
|
+
const stepRef = raw.slice(sep + 1).trim();
|
|
324
|
+
if (!taskId || !stepRef)
|
|
325
|
+
return { taskId: raw };
|
|
326
|
+
return { taskId, stepRef };
|
|
327
|
+
}
|
|
328
|
+
normalizeDependencies(deps) {
|
|
329
|
+
if (!deps)
|
|
330
|
+
return [];
|
|
331
|
+
let payload = deps;
|
|
332
|
+
if (typeof payload === "string") {
|
|
333
|
+
try {
|
|
334
|
+
payload = JSON.parse(payload);
|
|
335
|
+
}
|
|
336
|
+
catch {
|
|
337
|
+
payload = [payload];
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (payload instanceof Set)
|
|
341
|
+
payload = Array.from(payload);
|
|
342
|
+
if (!Array.isArray(payload))
|
|
343
|
+
return [];
|
|
344
|
+
return payload
|
|
345
|
+
.filter((value) => typeof value === "string")
|
|
346
|
+
.map((value) => this.parseTaskDependency(value))
|
|
347
|
+
.filter(Boolean);
|
|
348
|
+
}
|
|
349
|
+
resolveDependencyStepIndex(task, stepRef) {
|
|
350
|
+
const trimmed = stepRef.trim();
|
|
351
|
+
if (!trimmed)
|
|
352
|
+
return undefined;
|
|
353
|
+
const numeric = Number(trimmed);
|
|
354
|
+
if (Number.isInteger(numeric) && numeric >= 0)
|
|
355
|
+
return numeric;
|
|
356
|
+
const steps = this.normalizeSteps(task.steps);
|
|
357
|
+
const index = steps.findIndex((step) => step.name === trimmed || step.classification === trimmed);
|
|
358
|
+
return index >= 0 ? index : undefined;
|
|
359
|
+
}
|
|
360
|
+
async areDependenciesSatisfied(dependencies, ctx) {
|
|
361
|
+
if (!dependencies.length)
|
|
362
|
+
return true;
|
|
363
|
+
const taskIds = Array.from(new Set(dependencies.map((dep) => dep.taskId)));
|
|
364
|
+
const dependencyTasks = new Map();
|
|
365
|
+
try {
|
|
366
|
+
const loaded = await this.tasks.readAll(taskIds, ctx);
|
|
367
|
+
for (const task of loaded) {
|
|
368
|
+
if (task?.id)
|
|
369
|
+
dependencyTasks.set(task.id, task);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
catch {
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
for (const dep of dependencies) {
|
|
376
|
+
try {
|
|
377
|
+
const depTask = dependencyTasks.get(dep.taskId);
|
|
378
|
+
if (!depTask)
|
|
379
|
+
return false;
|
|
380
|
+
if (!dep.stepRef) {
|
|
381
|
+
if (!this.isTaskFinished(depTask.status))
|
|
382
|
+
return false;
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
const depStep = this.resolveDependencyStepIndex(depTask, dep.stepRef);
|
|
386
|
+
if (depStep == null)
|
|
387
|
+
return false;
|
|
388
|
+
const stepResults = this.normalizeStepResults(depTask.stepResults);
|
|
389
|
+
const stepResult = stepResults[depStep];
|
|
390
|
+
if (!stepResult || !this.isTaskFinished(stepResult.status))
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
catch {
|
|
394
|
+
return false;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
399
|
+
getStepLock(task, stepIndex) {
|
|
400
|
+
if (task.atomicity !== constants_1.TaskType.COMPOSITE)
|
|
401
|
+
return undefined;
|
|
402
|
+
const steps = this.normalizeSteps(task.steps);
|
|
403
|
+
if (!steps.length)
|
|
404
|
+
return undefined;
|
|
405
|
+
const index = stepIndex == null ? 0 : stepIndex;
|
|
406
|
+
const step = steps[index];
|
|
407
|
+
return step?.lock;
|
|
408
|
+
}
|
|
409
|
+
async hasLockConflict(task, stepIndex, ctx) {
|
|
410
|
+
const candidateLocks = [
|
|
411
|
+
task.lock,
|
|
412
|
+
this.getStepLock(task, stepIndex),
|
|
413
|
+
].filter((value) => !!value && typeof value === "string");
|
|
414
|
+
if (!candidateLocks.length)
|
|
415
|
+
return false;
|
|
416
|
+
const runningTasks = await this.tasks
|
|
417
|
+
.select()
|
|
418
|
+
.where(Condition_1.Condition.attribute("status").eq(constants_1.TaskStatus.RUNNING))
|
|
419
|
+
.execute(ctx);
|
|
420
|
+
for (const running of runningTasks) {
|
|
421
|
+
if (running.id === task.id)
|
|
422
|
+
continue;
|
|
423
|
+
const runningLocks = [
|
|
424
|
+
running.lock,
|
|
425
|
+
this.getStepLock(running, running.currentStep),
|
|
426
|
+
].filter((value) => !!value && typeof value === "string");
|
|
427
|
+
if (runningLocks.some((lock) => candidateLocks.includes(lock))) {
|
|
428
|
+
return true;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
433
|
+
async isRunnable(task, ctx) {
|
|
434
|
+
const dependencies = this.normalizeDependencies(task.dependencies);
|
|
435
|
+
const dependenciesSatisfied = await this.areDependenciesSatisfied(dependencies, ctx);
|
|
436
|
+
if (!dependenciesSatisfied)
|
|
437
|
+
return false;
|
|
438
|
+
const stepIndex = task.atomicity === constants_1.TaskType.COMPOSITE
|
|
439
|
+
? (task.currentStep ?? 0)
|
|
440
|
+
: undefined;
|
|
441
|
+
return !(await this.hasLockConflict(task, stepIndex, ctx));
|
|
442
|
+
}
|
|
305
443
|
// -------------------------
|
|
306
444
|
// Execution
|
|
307
445
|
// -------------------------
|
|
@@ -348,6 +486,8 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
348
486
|
},
|
|
349
487
|
});
|
|
350
488
|
await this.emitStatus(taskCtx, task, constants_1.TaskStatus.RUNNING);
|
|
489
|
+
let activeHandler;
|
|
490
|
+
let activeInput;
|
|
351
491
|
try {
|
|
352
492
|
let output;
|
|
353
493
|
if (task.atomicity === constants_1.TaskType.COMPOSITE) {
|
|
@@ -366,6 +506,8 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
366
506
|
}
|
|
367
507
|
else {
|
|
368
508
|
const handler = this.registry.get(task.classification);
|
|
509
|
+
activeHandler = handler;
|
|
510
|
+
activeInput = task.input;
|
|
369
511
|
log.debug(`handler type for ${task.id} is ${handler?.constructor?.name ?? "none"}`);
|
|
370
512
|
if (!handler)
|
|
371
513
|
throw new db_decorators_1.InternalError(`No task handler registered for type: ${task.classification}`);
|
|
@@ -406,6 +548,12 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
406
548
|
await this.handleTaskStateChange(err.request, task, taskCtx);
|
|
407
549
|
return;
|
|
408
550
|
}
|
|
551
|
+
try {
|
|
552
|
+
await activeHandler?.catch?.(activeInput, err, taskCtx);
|
|
553
|
+
}
|
|
554
|
+
catch (catchErr) {
|
|
555
|
+
log.error("task handler catch() hook failed", catchErr);
|
|
556
|
+
}
|
|
409
557
|
log.error("task execution error", err);
|
|
410
558
|
if (task.atomicity === constants_1.TaskType.COMPOSITE) {
|
|
411
559
|
const normalizedResults = this.normalizeStepResults(task.stepResults);
|
|
@@ -520,7 +668,7 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
520
668
|
}
|
|
521
669
|
async runComposite(task, context) {
|
|
522
670
|
const { ctx } = (await this.logCtx([context], task.classification, true)).for(this.runComposite);
|
|
523
|
-
|
|
671
|
+
let steps = this.normalizeSteps(task.steps);
|
|
524
672
|
let idx = task.currentStep ?? 0;
|
|
525
673
|
const results = this.normalizeStepResults(task.stepResults);
|
|
526
674
|
const cacheResult = (key, value) => {
|
|
@@ -546,6 +694,45 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
546
694
|
const handler = this.registry.get(step.classification);
|
|
547
695
|
if (!handler)
|
|
548
696
|
throw new Error(`No task handler registered for composite step: ${step.classification}`);
|
|
697
|
+
const dependencies = this.normalizeDependencies(step.dependsOn);
|
|
698
|
+
const dependenciesSatisfied = await this.areDependenciesSatisfied(dependencies, context);
|
|
699
|
+
if (!dependenciesSatisfied) {
|
|
700
|
+
context.reschedule(new Date(Date.now() + this.config.pollMsIdle), `Waiting dependencies for step ${idx} (${step.classification})`);
|
|
701
|
+
}
|
|
702
|
+
const lockConflict = await this.hasLockConflict(task, idx, context);
|
|
703
|
+
if (lockConflict) {
|
|
704
|
+
context.reschedule(new Date(Date.now() + this.config.pollMsIdle), `Waiting lock for step ${idx} (${step.classification})`);
|
|
705
|
+
}
|
|
706
|
+
task.currentStep = idx;
|
|
707
|
+
const persistedCurrent = await this.tasks.update(task);
|
|
708
|
+
Object.assign(task, persistedCurrent);
|
|
709
|
+
await context.progress({
|
|
710
|
+
currentStep: idx,
|
|
711
|
+
totalSteps: steps.length,
|
|
712
|
+
});
|
|
713
|
+
const stepIndex = idx;
|
|
714
|
+
context.cache.put("scheduleCompositeSteps", async (newSteps) => {
|
|
715
|
+
const normalizedNewSteps = this.normalizeSteps(newSteps);
|
|
716
|
+
if (!normalizedNewSteps.length)
|
|
717
|
+
return;
|
|
718
|
+
const currentSteps = this.normalizeSteps(task.steps);
|
|
719
|
+
const insertionIndex = Math.min(stepIndex + 1, currentSteps.length);
|
|
720
|
+
currentSteps.splice(insertionIndex, 0, ...normalizedNewSteps);
|
|
721
|
+
task.steps = currentSteps;
|
|
722
|
+
const persisted = await this.tasks.update(task, context);
|
|
723
|
+
Object.assign(task, persisted);
|
|
724
|
+
steps = this.normalizeSteps(task.steps);
|
|
725
|
+
const updateEvent = await this.persistEvent(context, task.id, constants_1.TaskEventType.UPDATE, {
|
|
726
|
+
status: "update",
|
|
727
|
+
currentStep: stepIndex,
|
|
728
|
+
totalSteps: steps.length,
|
|
729
|
+
output: {
|
|
730
|
+
added: normalizedNewSteps.length,
|
|
731
|
+
insertionIndex,
|
|
732
|
+
},
|
|
733
|
+
});
|
|
734
|
+
this.bus.emit(updateEvent, context);
|
|
735
|
+
});
|
|
549
736
|
await context.pipe([
|
|
550
737
|
logging_1.LogLevel.info,
|
|
551
738
|
`Composite step ${idx + 1}/${steps.length}: ${step.classification}`,
|
|
@@ -554,7 +741,6 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
554
741
|
const out = await handler.run(step.input, context);
|
|
555
742
|
// Ensure step-tagged logs are flushed before advancing the step pointer.
|
|
556
743
|
await context.flush();
|
|
557
|
-
const stepIndex = idx;
|
|
558
744
|
const now = new Date();
|
|
559
745
|
results[stepIndex] = new TaskStepResultModel_1.TaskStepResultModel({
|
|
560
746
|
status: constants_1.TaskStatus.SUCCEEDED,
|
|
@@ -577,6 +763,14 @@ class TaskEngine extends ContextualLoggedClass_1.AbsContextual {
|
|
|
577
763
|
});
|
|
578
764
|
}
|
|
579
765
|
catch (err) {
|
|
766
|
+
try {
|
|
767
|
+
await handler.catch?.(step.input, err, context);
|
|
768
|
+
}
|
|
769
|
+
catch (catchErr) {
|
|
770
|
+
ctx.logger.warn("composite step catch() hook failed", {
|
|
771
|
+
error: catchErr,
|
|
772
|
+
});
|
|
773
|
+
}
|
|
580
774
|
const now = new Date();
|
|
581
775
|
results[idx] = new TaskStepResultModel_1.TaskStepResultModel({
|
|
582
776
|
status: constants_1.TaskStatus.FAILED,
|
|
@@ -21,6 +21,10 @@ import { Constructor } from "@decaf-ts/decoration";
|
|
|
21
21
|
import { TaskEngineConfig, TaskFlags } from "./types";
|
|
22
22
|
import { TaskTracker } from "./TaskTracker";
|
|
23
23
|
import { Lock } from "@decaf-ts/transactional-decorators";
|
|
24
|
+
type ParsedTaskDependency = {
|
|
25
|
+
taskId: string;
|
|
26
|
+
stepRef?: string;
|
|
27
|
+
};
|
|
24
28
|
export declare class TaskEngine<A extends Adapter<any, any, any, any>, C extends TaskEngineConfig<A> = TaskEngineConfig<A>> extends AbsContextual<ContextOf<A>> {
|
|
25
29
|
protected config: C;
|
|
26
30
|
private _tasks?;
|
|
@@ -67,6 +71,14 @@ export declare class TaskEngine<A extends Adapter<any, any, any, any>, C extends
|
|
|
67
71
|
protected loop(...args: ContextualArgs<any>): Promise<void>;
|
|
68
72
|
protected claimBatch(ctx: Context<any>): Promise<TaskModel[]>;
|
|
69
73
|
protected tryClaim(task: TaskModel, ctx: Context): Promise<TaskModel | null>;
|
|
74
|
+
protected isTaskFinished(status?: TaskStatus): boolean;
|
|
75
|
+
protected parseTaskDependency(value: string): ParsedTaskDependency | undefined;
|
|
76
|
+
protected normalizeDependencies(deps: string[] | string | undefined): ParsedTaskDependency[];
|
|
77
|
+
protected resolveDependencyStepIndex(task: TaskModel, stepRef: string): number | undefined;
|
|
78
|
+
protected areDependenciesSatisfied(dependencies: ParsedTaskDependency[], ctx: Context): Promise<boolean>;
|
|
79
|
+
protected getStepLock(task: TaskModel, stepIndex: number | undefined): string | undefined;
|
|
80
|
+
protected hasLockConflict(task: TaskModel, stepIndex: number | undefined, ctx: Context): Promise<boolean>;
|
|
81
|
+
protected isRunnable(task: TaskModel, ctx: Context): Promise<boolean>;
|
|
70
82
|
protected executeClaimed(task: TaskModel): Promise<void>;
|
|
71
83
|
protected handleTaskStateChange(request: TaskStateChangeRequest, task: TaskModel, ctx: TaskContext): Promise<void>;
|
|
72
84
|
protected runComposite(task: TaskModel, context: TaskContext): Promise<any>;
|
|
@@ -82,3 +94,4 @@ export declare class TaskEngine<A extends Adapter<any, any, any, any>, C extends
|
|
|
82
94
|
toString(): string;
|
|
83
95
|
context(operation: ((...args: any[]) => any) | OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE | string, overrides: Partial<FlagsOf<ContextOf<A>>>, ...args: any[]): Promise<ContextOf<A>>;
|
|
84
96
|
}
|
|
97
|
+
export {};
|