@decaf-ts/core 0.8.7 → 0.8.8
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/tasks/CleanUpTask.d.ts +15 -0
- package/lib/esm/tasks/CleanUpTask.js +71 -0
- package/lib/esm/tasks/CleanUpTask.js.map +1 -0
- package/lib/esm/tasks/index.d.ts +1 -0
- package/lib/esm/tasks/index.js +1 -0
- package/lib/esm/tasks/index.js.map +1 -1
- package/lib/esm/tasks/models/TaskIOSerializer.d.ts +27 -0
- package/lib/esm/tasks/models/TaskIOSerializer.js +67 -0
- package/lib/esm/tasks/models/TaskIOSerializer.js.map +1 -0
- package/lib/esm/tasks/models/TaskModel.js +3 -2
- package/lib/esm/tasks/models/TaskModel.js.map +1 -1
- package/lib/esm/tasks/models/index.d.ts +2 -1
- package/lib/esm/tasks/models/index.js +2 -1
- package/lib/esm/tasks/models/index.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/tasks/CleanUpTask.cjs +74 -0
- package/lib/tasks/CleanUpTask.d.ts +15 -0
- package/lib/tasks/CleanUpTask.js.map +1 -0
- package/lib/tasks/index.cjs +1 -0
- package/lib/tasks/index.d.ts +1 -0
- package/lib/tasks/index.js.map +1 -1
- package/lib/tasks/models/TaskIOSerializer.cjs +71 -0
- package/lib/tasks/models/TaskIOSerializer.d.ts +27 -0
- package/lib/tasks/models/TaskIOSerializer.js.map +1 -0
- package/lib/tasks/models/TaskModel.cjs +3 -2
- package/lib/tasks/models/TaskModel.js.map +1 -1
- package/lib/tasks/models/index.cjs +2 -1
- package/lib/tasks/models/index.d.ts +2 -1
- package/lib/tasks/models/index.js.map +1 -1
- package/package.json +1 -1
package/lib/esm/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export * from "./persistence";
|
|
|
21
21
|
* @const VERSION
|
|
22
22
|
* @memberOf module:core
|
|
23
23
|
*/
|
|
24
|
-
export declare const VERSION = "0.8.
|
|
24
|
+
export declare const VERSION = "0.8.7";
|
|
25
25
|
/**
|
|
26
26
|
* @description Stores the current package version
|
|
27
27
|
* @summary A constant representing the version of the core package
|
package/lib/esm/index.js
CHANGED
|
@@ -31,7 +31,7 @@ export * from "./persistence/index.js";
|
|
|
31
31
|
* @const VERSION
|
|
32
32
|
* @memberOf module:core
|
|
33
33
|
*/
|
|
34
|
-
export const VERSION = "0.8.
|
|
34
|
+
export const VERSION = "0.8.7";
|
|
35
35
|
/**
|
|
36
36
|
* @description Stores the current package version
|
|
37
37
|
* @summary A constant representing the version of the core package
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TaskHandler } from "./TaskHandler";
|
|
2
|
+
import { TaskContext } from "./TaskContext";
|
|
3
|
+
import { type Repo } from "../repository/Repository";
|
|
4
|
+
import { TaskModel } from "./models/TaskModel";
|
|
5
|
+
import { Condition } from "../query/Condition";
|
|
6
|
+
export type CleanUpTaskInput = {
|
|
7
|
+
successfulExpiry: Date;
|
|
8
|
+
failedExpiry: Date;
|
|
9
|
+
cancelledExpiry: Date;
|
|
10
|
+
} | Condition<TaskModel>;
|
|
11
|
+
export declare class CleanUpTask extends TaskHandler<CleanUpTaskInput, TaskModel[]> {
|
|
12
|
+
protected tasks: Repo<TaskModel>;
|
|
13
|
+
constructor();
|
|
14
|
+
run(input: CleanUpTaskInput, ctx: TaskContext): Promise<TaskModel[]>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { TaskHandler } from "./TaskHandler.js";
|
|
11
|
+
import { repository } from "./../repository/decorators.js";
|
|
12
|
+
import { TaskModel } from "./models/TaskModel.js";
|
|
13
|
+
import { task } from "./decorators.js";
|
|
14
|
+
import { Condition } from "./../query/Condition.js";
|
|
15
|
+
import { TaskStatus } from "./constants.js";
|
|
16
|
+
let CleanUpTask = class CleanUpTask extends TaskHandler {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
}
|
|
20
|
+
async run(input, ctx) {
|
|
21
|
+
const log = ctx.logger;
|
|
22
|
+
try {
|
|
23
|
+
let condition;
|
|
24
|
+
if (input instanceof Condition) {
|
|
25
|
+
condition = input;
|
|
26
|
+
log.info(`Starting task cleanup with custom condition`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
log.info(`Starting task cleanup with expiry dates`);
|
|
30
|
+
const successCondition = Condition.attr("status")
|
|
31
|
+
.eq(TaskStatus.SUCCEEDED)
|
|
32
|
+
.and(Condition.attr("updatedAt").lte(input.successfulExpiry));
|
|
33
|
+
const failedCondition = Condition.attr("status")
|
|
34
|
+
.eq(TaskStatus.FAILED)
|
|
35
|
+
.and(Condition.attr("updatedAt").lte(input.failedExpiry));
|
|
36
|
+
const cancelledCondition = Condition.attr("status")
|
|
37
|
+
.eq(TaskStatus.CANCELED)
|
|
38
|
+
.and(Condition.attr("updatedAt").lte(input.cancelledExpiry));
|
|
39
|
+
condition = successCondition.or(failedCondition).or(cancelledCondition);
|
|
40
|
+
}
|
|
41
|
+
log.info(`Querying tasks for cleanup`);
|
|
42
|
+
const tasksToDelete = await this.tasks
|
|
43
|
+
.select(["id"])
|
|
44
|
+
.where(condition)
|
|
45
|
+
.execute(ctx);
|
|
46
|
+
if (tasksToDelete.length === 0) {
|
|
47
|
+
log.info(`No tasks found for cleanup`);
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
log.info(`Found ${tasksToDelete.length} tasks to delete`);
|
|
51
|
+
const deleted = await this.tasks.deleteAll(tasksToDelete.map((t) => t.id), ctx);
|
|
52
|
+
log.info(`Successfully deleted ${deleted.length} tasks`);
|
|
53
|
+
log.debug(`deleted tasks:`, deleted);
|
|
54
|
+
return deleted;
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
log.error(`Error during task cleanup`, e);
|
|
58
|
+
throw e;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
__decorate([
|
|
63
|
+
repository(TaskModel),
|
|
64
|
+
__metadata("design:type", Object)
|
|
65
|
+
], CleanUpTask.prototype, "tasks", void 0);
|
|
66
|
+
CleanUpTask = __decorate([
|
|
67
|
+
task("cleanup-task"),
|
|
68
|
+
__metadata("design:paramtypes", [])
|
|
69
|
+
], CleanUpTask);
|
|
70
|
+
export { CleanUpTask };
|
|
71
|
+
//# sourceMappingURL=CleanUpTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CleanUpTask.js","sourceRoot":"","sources":["../../../src/tasks/CleanUpTask.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAG5C,OAAO,EAAE,UAAU,EAAE,sCAAiC;AACtD,OAAO,EAAE,SAAS,EAAE,8BAA2B;AAC/C,OAAO,EAAE,IAAI,EAAE,wBAAqB;AACpC,OAAO,EAAE,SAAS,EAAE,gCAA2B;AAC/C,OAAO,EAAE,UAAU,EAAE,uBAAoB;AAWlC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAA0C;IAIzE;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAuB,EAAE,GAAgB;QACjD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QAEvB,IAAI,CAAC;YACH,IAAI,SAA+B,CAAC;YAEpC,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,SAAS,GAAG,KAAK,CAAC;gBAClB,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBAEpD,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAY,QAAQ,CAAC;qBACzD,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;qBACxB,GAAG,CACF,SAAS,CAAC,IAAI,CAAY,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACnE,CAAC;gBAEJ,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAY,QAAQ,CAAC;qBACxD,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;qBACrB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAY,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;gBAEvE,MAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,CAAY,QAAQ,CAAC;qBAC3D,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;qBACvB,GAAG,CACF,SAAS,CAAC,IAAI,CAAY,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAClE,CAAC;gBAEJ,SAAS,GAAG,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;YAC1E,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACvC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK;iBACnC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;iBACd,KAAK,CAAC,SAAS,CAAC;iBAChB,OAAO,CAAC,GAAG,CAAC,CAAC;YAEhB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACvC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,kBAAkB,CAAC,CAAC;YAE1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CACxC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9B,GAAG,CACJ,CAAC;YAEF,GAAG,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAc,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAU,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;CACF,CAAA;AA/DW;IADT,UAAU,CAAC,SAAS,CAAC;;0CACY;AAFvB,WAAW;IADvB,IAAI,CAAC,cAAc,CAAC;;GACR,WAAW,CAiEvB"}
|
package/lib/esm/tasks/index.d.ts
CHANGED
package/lib/esm/tasks/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,kCAAyB;AACzB,6BAA0B;AAC1B,+BAA4B;AAC5B,gCAA6B;AAC7B,6BAA0B;AAC1B,iCAA8B;AAC9B,gCAA6B;AAC7B,kCAA+B;AAC/B,iCAA8B;AAC9B,yCAAsC;AACtC,iCAA8B;AAC9B,iCAA8B;AAC9B,2BAAwB;AACxB,2BAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,kCAAyB;AACzB,6BAA0B;AAC1B,iCAA8B;AAC9B,+BAA4B;AAC5B,gCAA6B;AAC7B,6BAA0B;AAC1B,iCAA8B;AAC9B,gCAA6B;AAC7B,kCAA+B;AAC/B,iCAA8B;AAC9B,yCAAsC;AACtC,iCAA8B;AAC9B,iCAA8B;AAC9B,2BAAwB;AACxB,2BAAwB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { JSONSerializer, Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
export declare class TaskIOSerializer<M extends Model> extends JSONSerializer<M> {
|
|
3
|
+
constructor();
|
|
4
|
+
/**
|
|
5
|
+
* @summary prepares the model for serialization
|
|
6
|
+
* @description returns a shallow copy of the object, containing an enumerable {@link ModelKeys#ANCHOR} property
|
|
7
|
+
* so the object can be recognized upon deserialization
|
|
8
|
+
*
|
|
9
|
+
* @param {T} model
|
|
10
|
+
* @protected
|
|
11
|
+
*/
|
|
12
|
+
protected preSerialize(model: M, ...args: any[]): Record<string, any>;
|
|
13
|
+
/**
|
|
14
|
+
* @summary Rebuilds a model from a serialization
|
|
15
|
+
* @param {string} str
|
|
16
|
+
*
|
|
17
|
+
* @throws {Error} If it fails to parse the string, or to build the model
|
|
18
|
+
*/
|
|
19
|
+
deserialize(str: string, ...args: any[]): M;
|
|
20
|
+
/**
|
|
21
|
+
* @summary Serializes a model
|
|
22
|
+
* @param {T} model
|
|
23
|
+
*
|
|
24
|
+
* @throws {Error} if fails to serialize
|
|
25
|
+
*/
|
|
26
|
+
serialize(model: M, ...args: any[]): string;
|
|
27
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { JSONSerializer, Model, ModelKeys, } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { Metadata } from "@decaf-ts/decoration";
|
|
3
|
+
import { Condition } from "./../../query/Condition.js";
|
|
4
|
+
export class TaskIOSerializer extends JSONSerializer {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @summary prepares the model for serialization
|
|
10
|
+
* @description returns a shallow copy of the object, containing an enumerable {@link ModelKeys#ANCHOR} property
|
|
11
|
+
* so the object can be recognized upon deserialization
|
|
12
|
+
*
|
|
13
|
+
* @param {T} model
|
|
14
|
+
* @protected
|
|
15
|
+
*/
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
+
preSerialize(model, ...args) {
|
|
18
|
+
if (model === null || typeof model !== "object") {
|
|
19
|
+
return model;
|
|
20
|
+
}
|
|
21
|
+
const toSerialize = Object.assign({}, model);
|
|
22
|
+
if (model instanceof Condition) {
|
|
23
|
+
toSerialize[ModelKeys.ANCHOR] = "??condition";
|
|
24
|
+
return toSerialize;
|
|
25
|
+
}
|
|
26
|
+
if (Model.isModel(model)) {
|
|
27
|
+
let metadata;
|
|
28
|
+
try {
|
|
29
|
+
metadata = Metadata.modelName(model.constructor);
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
metadata = undefined;
|
|
34
|
+
}
|
|
35
|
+
if (metadata)
|
|
36
|
+
toSerialize[ModelKeys.ANCHOR] = metadata;
|
|
37
|
+
}
|
|
38
|
+
return toSerialize;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @summary Rebuilds a model from a serialization
|
|
42
|
+
* @param {string} str
|
|
43
|
+
*
|
|
44
|
+
* @throws {Error} If it fails to parse the string, or to build the model
|
|
45
|
+
*/
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
47
|
+
deserialize(str, ...args) {
|
|
48
|
+
const deserialization = JSON.parse(str);
|
|
49
|
+
const className = deserialization[ModelKeys.ANCHOR];
|
|
50
|
+
if (!className)
|
|
51
|
+
return deserialization;
|
|
52
|
+
if (className === "??condition")
|
|
53
|
+
return Condition.from(deserialization);
|
|
54
|
+
return Model.build(deserialization, className);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @summary Serializes a model
|
|
58
|
+
* @param {T} model
|
|
59
|
+
*
|
|
60
|
+
* @throws {Error} if fails to serialize
|
|
61
|
+
*/
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
63
|
+
serialize(model, ...args) {
|
|
64
|
+
return JSON.stringify(this.preSerialize(model));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=TaskIOSerializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskIOSerializer.js","sourceRoot":"","sources":["../../../../src/tasks/models/TaskIOSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,EACL,SAAS,GACV,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAe,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,mCAA8B;AAElD,MAAM,OAAO,gBAAkC,SAAQ,cAAiB;IACtE;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED;;;;;;;OAOG;IACH,6DAA6D;IAC1C,YAAY,CAAC,KAAQ,EAAE,GAAG,IAAW;QACtD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,WAAW,GAAwB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClE,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;YAC9C,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,WAA0B,CAAC,CAAC;gBAChE,6DAA6D;YAC/D,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,QAAQ,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,IAAI,QAAQ;gBAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;QACzD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,6DAA6D;IACpD,WAAW,CAAC,GAAW,EAAE,GAAG,IAAW;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS;YAAE,OAAO,eAAoB,CAAC;QAC5C,IAAI,SAAS,KAAK,aAAa;YAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,eAAe,CAAiB,CAAC;QACzD,OAAO,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAiB,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,6DAA6D;IACpD,SAAS,CAAC,KAAQ,EAAE,GAAG,IAAW;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -15,6 +15,7 @@ import { TaskBackoffModel } from "./TaskBackoffModel.js";
|
|
|
15
15
|
import { description, prop } from "@decaf-ts/decoration";
|
|
16
16
|
import { serialize } from "@decaf-ts/db-decorators";
|
|
17
17
|
import { column, createdBy, table, createdAt, updatedAt, updatedBy, } from "./../../model/decorators.js";
|
|
18
|
+
import { TaskIOSerializer } from "./TaskIOSerializer.js";
|
|
18
19
|
let TaskModel = class TaskModel extends Model {
|
|
19
20
|
constructor(arg) {
|
|
20
21
|
super(arg);
|
|
@@ -51,13 +52,13 @@ __decorate([
|
|
|
51
52
|
], TaskModel.prototype, "status", void 0);
|
|
52
53
|
__decorate([
|
|
53
54
|
prop(),
|
|
54
|
-
serialize(),
|
|
55
|
+
serialize(TaskIOSerializer),
|
|
55
56
|
description("Holds task input"),
|
|
56
57
|
__metadata("design:type", Object)
|
|
57
58
|
], TaskModel.prototype, "input", void 0);
|
|
58
59
|
__decorate([
|
|
59
60
|
prop(),
|
|
60
|
-
serialize(),
|
|
61
|
+
serialize(TaskIOSerializer),
|
|
61
62
|
description("Holds the task output when successfully completed"),
|
|
62
63
|
__metadata("design:type", Object)
|
|
63
64
|
], TaskModel.prototype, "output", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskModel.js","sourceRoot":"","sources":["../../../../src/tasks/models/TaskModel.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,IAAI,EACJ,GAAG,EACH,KAAK,EACL,KAAK,EAEL,MAAM,EACN,QAAQ,EACR,IAAI,GACL,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,uCAAkC;AAC/C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,0BAAqB;AACpD,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAClD,OAAO,EAAE,gBAAgB,EAAE,8BAA2B;AAGtD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,GACV,oCAA+B;
|
|
1
|
+
{"version":3,"file":"TaskModel.js","sourceRoot":"","sources":["../../../../src/tasks/models/TaskModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from "./TaskBackoffModel";
|
|
2
2
|
export * from "./TaskErrorModel";
|
|
3
|
-
export * from "./
|
|
3
|
+
export * from "./TaskEventModel";
|
|
4
|
+
export * from "./TaskIOSerializer";
|
|
4
5
|
export * from "./TaskLogEntryModel";
|
|
5
6
|
export * from "./TaskModel";
|
|
6
7
|
export * from "./TaskStepResultModel";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from "./TaskBackoffModel.js";
|
|
2
2
|
export * from "./TaskErrorModel.js";
|
|
3
|
-
export * from "./
|
|
3
|
+
export * from "./TaskEventModel.js";
|
|
4
|
+
export * from "./TaskIOSerializer.js";
|
|
4
5
|
export * from "./TaskLogEntryModel.js";
|
|
5
6
|
export * from "./TaskModel.js";
|
|
6
7
|
export * from "./TaskStepResultModel.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tasks/models/index.ts"],"names":[],"mappings":"AAAA,sCAAmC;AACnC,oCAAiC;AACjC,oCAAiC;AACjC,uCAAoC;AACpC,+BAA4B;AAC5B,yCAAsC;AACtC,uCAAoC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tasks/models/index.ts"],"names":[],"mappings":"AAAA,sCAAmC;AACnC,oCAAiC;AACjC,oCAAiC;AACjC,sCAAmC;AACnC,uCAAoC;AACpC,+BAA4B;AAC5B,yCAAsC;AACtC,uCAAoC"}
|
package/lib/index.cjs
CHANGED
|
@@ -48,7 +48,7 @@ __exportStar(require("./persistence/index.cjs"), exports);
|
|
|
48
48
|
* @const VERSION
|
|
49
49
|
* @memberOf module:core
|
|
50
50
|
*/
|
|
51
|
-
exports.VERSION = "0.8.
|
|
51
|
+
exports.VERSION = "0.8.7";
|
|
52
52
|
/**
|
|
53
53
|
* @description Stores the current package version
|
|
54
54
|
* @summary A constant representing the version of the core package
|
package/lib/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export * from "./persistence";
|
|
|
21
21
|
* @const VERSION
|
|
22
22
|
* @memberOf module:core
|
|
23
23
|
*/
|
|
24
|
-
export declare const VERSION = "0.8.
|
|
24
|
+
export declare const VERSION = "0.8.7";
|
|
25
25
|
/**
|
|
26
26
|
* @description Stores the current package version
|
|
27
27
|
* @summary A constant representing the version of the core package
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CleanUpTask = void 0;
|
|
13
|
+
const TaskHandler_1 = require("./TaskHandler.cjs");
|
|
14
|
+
const decorators_1 = require("./../repository/decorators.cjs");
|
|
15
|
+
const TaskModel_1 = require("./models/TaskModel.cjs");
|
|
16
|
+
const decorators_2 = require("./decorators.cjs");
|
|
17
|
+
const Condition_1 = require("./../query/Condition.cjs");
|
|
18
|
+
const constants_1 = require("./constants.cjs");
|
|
19
|
+
let CleanUpTask = class CleanUpTask extends TaskHandler_1.TaskHandler {
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
|
+
}
|
|
23
|
+
async run(input, ctx) {
|
|
24
|
+
const log = ctx.logger;
|
|
25
|
+
try {
|
|
26
|
+
let condition;
|
|
27
|
+
if (input instanceof Condition_1.Condition) {
|
|
28
|
+
condition = input;
|
|
29
|
+
log.info(`Starting task cleanup with custom condition`);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
log.info(`Starting task cleanup with expiry dates`);
|
|
33
|
+
const successCondition = Condition_1.Condition.attr("status")
|
|
34
|
+
.eq(constants_1.TaskStatus.SUCCEEDED)
|
|
35
|
+
.and(Condition_1.Condition.attr("updatedAt").lte(input.successfulExpiry));
|
|
36
|
+
const failedCondition = Condition_1.Condition.attr("status")
|
|
37
|
+
.eq(constants_1.TaskStatus.FAILED)
|
|
38
|
+
.and(Condition_1.Condition.attr("updatedAt").lte(input.failedExpiry));
|
|
39
|
+
const cancelledCondition = Condition_1.Condition.attr("status")
|
|
40
|
+
.eq(constants_1.TaskStatus.CANCELED)
|
|
41
|
+
.and(Condition_1.Condition.attr("updatedAt").lte(input.cancelledExpiry));
|
|
42
|
+
condition = successCondition.or(failedCondition).or(cancelledCondition);
|
|
43
|
+
}
|
|
44
|
+
log.info(`Querying tasks for cleanup`);
|
|
45
|
+
const tasksToDelete = await this.tasks
|
|
46
|
+
.select(["id"])
|
|
47
|
+
.where(condition)
|
|
48
|
+
.execute(ctx);
|
|
49
|
+
if (tasksToDelete.length === 0) {
|
|
50
|
+
log.info(`No tasks found for cleanup`);
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
log.info(`Found ${tasksToDelete.length} tasks to delete`);
|
|
54
|
+
const deleted = await this.tasks.deleteAll(tasksToDelete.map((t) => t.id), ctx);
|
|
55
|
+
log.info(`Successfully deleted ${deleted.length} tasks`);
|
|
56
|
+
log.debug(`deleted tasks:`, deleted);
|
|
57
|
+
return deleted;
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
log.error(`Error during task cleanup`, e);
|
|
61
|
+
throw e;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.CleanUpTask = CleanUpTask;
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, decorators_1.repository)(TaskModel_1.TaskModel),
|
|
68
|
+
__metadata("design:type", Object)
|
|
69
|
+
], CleanUpTask.prototype, "tasks", void 0);
|
|
70
|
+
exports.CleanUpTask = CleanUpTask = __decorate([
|
|
71
|
+
(0, decorators_2.task)("cleanup-task"),
|
|
72
|
+
__metadata("design:paramtypes", [])
|
|
73
|
+
], CleanUpTask);
|
|
74
|
+
//# sourceMappingURL=CleanUpTask.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TaskHandler } from "./TaskHandler";
|
|
2
|
+
import { TaskContext } from "./TaskContext";
|
|
3
|
+
import { type Repo } from "../repository/Repository";
|
|
4
|
+
import { TaskModel } from "./models/TaskModel";
|
|
5
|
+
import { Condition } from "../query/Condition";
|
|
6
|
+
export type CleanUpTaskInput = {
|
|
7
|
+
successfulExpiry: Date;
|
|
8
|
+
failedExpiry: Date;
|
|
9
|
+
cancelledExpiry: Date;
|
|
10
|
+
} | Condition<TaskModel>;
|
|
11
|
+
export declare class CleanUpTask extends TaskHandler<CleanUpTaskInput, TaskModel[]> {
|
|
12
|
+
protected tasks: Repo<TaskModel>;
|
|
13
|
+
constructor();
|
|
14
|
+
run(input: CleanUpTaskInput, ctx: TaskContext): Promise<TaskModel[]>;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CleanUpTask.js","sourceRoot":"","sources":["../../src/tasks/CleanUpTask.ts"],"names":[],"mappings":"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"}
|
package/lib/tasks/index.cjs
CHANGED
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./models/index.cjs"), exports);
|
|
18
18
|
__exportStar(require("./builder.cjs"), exports);
|
|
19
|
+
__exportStar(require("./CleanUpTask.cjs"), exports);
|
|
19
20
|
__exportStar(require("./constants.cjs"), exports);
|
|
20
21
|
__exportStar(require("./decorators.cjs"), exports);
|
|
21
22
|
__exportStar(require("./logging.cjs"), exports);
|
package/lib/tasks/index.d.ts
CHANGED
package/lib/tasks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAyB;AACzB,gDAA0B;AAC1B,kDAA4B;AAC5B,mDAA6B;AAC7B,gDAA0B;AAC1B,oDAA8B;AAC9B,mDAA6B;AAC7B,qDAA+B;AAC/B,oDAA8B;AAC9B,4DAAsC;AACtC,oDAA8B;AAC9B,oDAA8B;AAC9B,8CAAwB;AACxB,8CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAyB;AACzB,gDAA0B;AAC1B,oDAA8B;AAC9B,kDAA4B;AAC5B,mDAA6B;AAC7B,gDAA0B;AAC1B,oDAA8B;AAC9B,mDAA6B;AAC7B,qDAA+B;AAC/B,oDAA8B;AAC9B,4DAAsC;AACtC,oDAA8B;AAC9B,oDAA8B;AAC9B,8CAAwB;AACxB,8CAAwB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaskIOSerializer = void 0;
|
|
4
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
5
|
+
const decoration_1 = require("@decaf-ts/decoration");
|
|
6
|
+
const Condition_1 = require("./../../query/Condition.cjs");
|
|
7
|
+
class TaskIOSerializer extends decorator_validation_1.JSONSerializer {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @summary prepares the model for serialization
|
|
13
|
+
* @description returns a shallow copy of the object, containing an enumerable {@link ModelKeys#ANCHOR} property
|
|
14
|
+
* so the object can be recognized upon deserialization
|
|
15
|
+
*
|
|
16
|
+
* @param {T} model
|
|
17
|
+
* @protected
|
|
18
|
+
*/
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
|
+
preSerialize(model, ...args) {
|
|
21
|
+
if (model === null || typeof model !== "object") {
|
|
22
|
+
return model;
|
|
23
|
+
}
|
|
24
|
+
const toSerialize = Object.assign({}, model);
|
|
25
|
+
if (model instanceof Condition_1.Condition) {
|
|
26
|
+
toSerialize[decorator_validation_1.ModelKeys.ANCHOR] = "??condition";
|
|
27
|
+
return toSerialize;
|
|
28
|
+
}
|
|
29
|
+
if (decorator_validation_1.Model.isModel(model)) {
|
|
30
|
+
let metadata;
|
|
31
|
+
try {
|
|
32
|
+
metadata = decoration_1.Metadata.modelName(model.constructor);
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
metadata = undefined;
|
|
37
|
+
}
|
|
38
|
+
if (metadata)
|
|
39
|
+
toSerialize[decorator_validation_1.ModelKeys.ANCHOR] = metadata;
|
|
40
|
+
}
|
|
41
|
+
return toSerialize;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @summary Rebuilds a model from a serialization
|
|
45
|
+
* @param {string} str
|
|
46
|
+
*
|
|
47
|
+
* @throws {Error} If it fails to parse the string, or to build the model
|
|
48
|
+
*/
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
50
|
+
deserialize(str, ...args) {
|
|
51
|
+
const deserialization = JSON.parse(str);
|
|
52
|
+
const className = deserialization[decorator_validation_1.ModelKeys.ANCHOR];
|
|
53
|
+
if (!className)
|
|
54
|
+
return deserialization;
|
|
55
|
+
if (className === "??condition")
|
|
56
|
+
return Condition_1.Condition.from(deserialization);
|
|
57
|
+
return decorator_validation_1.Model.build(deserialization, className);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @summary Serializes a model
|
|
61
|
+
* @param {T} model
|
|
62
|
+
*
|
|
63
|
+
* @throws {Error} if fails to serialize
|
|
64
|
+
*/
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
66
|
+
serialize(model, ...args) {
|
|
67
|
+
return JSON.stringify(this.preSerialize(model));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.TaskIOSerializer = TaskIOSerializer;
|
|
71
|
+
//# sourceMappingURL=TaskIOSerializer.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { JSONSerializer, Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
export declare class TaskIOSerializer<M extends Model> extends JSONSerializer<M> {
|
|
3
|
+
constructor();
|
|
4
|
+
/**
|
|
5
|
+
* @summary prepares the model for serialization
|
|
6
|
+
* @description returns a shallow copy of the object, containing an enumerable {@link ModelKeys#ANCHOR} property
|
|
7
|
+
* so the object can be recognized upon deserialization
|
|
8
|
+
*
|
|
9
|
+
* @param {T} model
|
|
10
|
+
* @protected
|
|
11
|
+
*/
|
|
12
|
+
protected preSerialize(model: M, ...args: any[]): Record<string, any>;
|
|
13
|
+
/**
|
|
14
|
+
* @summary Rebuilds a model from a serialization
|
|
15
|
+
* @param {string} str
|
|
16
|
+
*
|
|
17
|
+
* @throws {Error} If it fails to parse the string, or to build the model
|
|
18
|
+
*/
|
|
19
|
+
deserialize(str: string, ...args: any[]): M;
|
|
20
|
+
/**
|
|
21
|
+
* @summary Serializes a model
|
|
22
|
+
* @param {T} model
|
|
23
|
+
*
|
|
24
|
+
* @throws {Error} if fails to serialize
|
|
25
|
+
*/
|
|
26
|
+
serialize(model: M, ...args: any[]): string;
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskIOSerializer.js","sourceRoot":"","sources":["../../../src/tasks/models/TaskIOSerializer.ts"],"names":[],"mappings":";;;AAAA,yEAIwC;AACxC,qDAA6D;AAC7D,2DAAkD;AAElD,MAAa,gBAAkC,SAAQ,qCAAiB;IACtE;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED;;;;;;;OAOG;IACH,6DAA6D;IAC1C,YAAY,CAAC,KAAQ,EAAE,GAAG,IAAW;QACtD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,WAAW,GAAwB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClE,IAAI,KAAK,YAAY,qBAAS,EAAE,CAAC;YAC/B,WAAW,CAAC,gCAAS,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;YAC9C,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,4BAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,qBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,WAA0B,CAAC,CAAC;gBAChE,6DAA6D;YAC/D,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,QAAQ,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,IAAI,QAAQ;gBAAE,WAAW,CAAC,gCAAS,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;QACzD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,6DAA6D;IACpD,WAAW,CAAC,GAAW,EAAE,GAAG,IAAW;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,eAAe,CAAC,gCAAS,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS;YAAE,OAAO,eAAoB,CAAC;QAC5C,IAAI,SAAS,KAAK,aAAa;YAC7B,OAAO,qBAAS,CAAC,IAAI,CAAC,eAAe,CAAiB,CAAC;QACzD,OAAO,4BAAK,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAiB,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,6DAA6D;IACpD,SAAS,CAAC,KAAQ,EAAE,GAAG,IAAW;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;CACF;AA9DD,4CA8DC"}
|
|
@@ -18,6 +18,7 @@ const TaskBackoffModel_1 = require("./TaskBackoffModel.cjs");
|
|
|
18
18
|
const decoration_1 = require("@decaf-ts/decoration");
|
|
19
19
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
20
20
|
const decorators_2 = require("./../../model/decorators.cjs");
|
|
21
|
+
const TaskIOSerializer_1 = require("./TaskIOSerializer.cjs");
|
|
21
22
|
let TaskModel = class TaskModel extends decorator_validation_1.Model {
|
|
22
23
|
constructor(arg) {
|
|
23
24
|
super(arg);
|
|
@@ -55,13 +56,13 @@ __decorate([
|
|
|
55
56
|
], TaskModel.prototype, "status", void 0);
|
|
56
57
|
__decorate([
|
|
57
58
|
(0, decoration_1.prop)(),
|
|
58
|
-
(0, db_decorators_1.serialize)(),
|
|
59
|
+
(0, db_decorators_1.serialize)(TaskIOSerializer_1.TaskIOSerializer),
|
|
59
60
|
(0, decoration_1.description)("Holds task input"),
|
|
60
61
|
__metadata("design:type", Object)
|
|
61
62
|
], TaskModel.prototype, "input", void 0);
|
|
62
63
|
__decorate([
|
|
63
64
|
(0, decoration_1.prop)(),
|
|
64
|
-
(0, db_decorators_1.serialize)(),
|
|
65
|
+
(0, db_decorators_1.serialize)(TaskIOSerializer_1.TaskIOSerializer),
|
|
65
66
|
(0, decoration_1.description)("Holds the task output when successfully completed"),
|
|
66
67
|
__metadata("design:type", Object)
|
|
67
68
|
], TaskModel.prototype, "output", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskModel.js","sourceRoot":"","sources":["../../../src/tasks/models/TaskModel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yEASwC;AACxC,gEAA+C;AAC/C,kDAAoD;AACpD,yDAAkD;AAClD,6DAAsD;AAGtD,qDAAyD;AACzD,2DAAoD;AACpD,6DAOgC;
|
|
1
|
+
{"version":3,"file":"TaskModel.js","sourceRoot":"","sources":["../../../src/tasks/models/TaskModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./TaskBackoffModel.cjs"), exports);
|
|
18
18
|
__exportStar(require("./TaskErrorModel.cjs"), exports);
|
|
19
|
-
__exportStar(require("./
|
|
19
|
+
__exportStar(require("./TaskEventModel.cjs"), exports);
|
|
20
|
+
__exportStar(require("./TaskIOSerializer.cjs"), exports);
|
|
20
21
|
__exportStar(require("./TaskLogEntryModel.cjs"), exports);
|
|
21
22
|
__exportStar(require("./TaskModel.cjs"), exports);
|
|
22
23
|
__exportStar(require("./TaskStepResultModel.cjs"), exports);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from "./TaskBackoffModel";
|
|
2
2
|
export * from "./TaskErrorModel";
|
|
3
|
-
export * from "./
|
|
3
|
+
export * from "./TaskEventModel";
|
|
4
|
+
export * from "./TaskIOSerializer";
|
|
4
5
|
export * from "./TaskLogEntryModel";
|
|
5
6
|
export * from "./TaskModel";
|
|
6
7
|
export * from "./TaskStepResultModel";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tasks/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAmC;AACnC,uDAAiC;AACjC,uDAAiC;AACjC,0DAAoC;AACpC,kDAA4B;AAC5B,4DAAsC;AACtC,0DAAoC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tasks/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAmC;AACnC,uDAAiC;AACjC,uDAAiC;AACjC,yDAAmC;AACnC,0DAAoC;AACpC,kDAA4B;AAC5B,4DAAsC;AACtC,0DAAoC"}
|