@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.
Files changed (38) hide show
  1. package/README.md +1 -1
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.cjs.map +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/core.js.map +1 -1
  6. package/lib/esm/index.d.ts +1 -1
  7. package/lib/esm/index.js +1 -1
  8. package/lib/esm/tasks/CleanUpTask.d.ts +15 -0
  9. package/lib/esm/tasks/CleanUpTask.js +71 -0
  10. package/lib/esm/tasks/CleanUpTask.js.map +1 -0
  11. package/lib/esm/tasks/index.d.ts +1 -0
  12. package/lib/esm/tasks/index.js +1 -0
  13. package/lib/esm/tasks/index.js.map +1 -1
  14. package/lib/esm/tasks/models/TaskIOSerializer.d.ts +27 -0
  15. package/lib/esm/tasks/models/TaskIOSerializer.js +67 -0
  16. package/lib/esm/tasks/models/TaskIOSerializer.js.map +1 -0
  17. package/lib/esm/tasks/models/TaskModel.js +3 -2
  18. package/lib/esm/tasks/models/TaskModel.js.map +1 -1
  19. package/lib/esm/tasks/models/index.d.ts +2 -1
  20. package/lib/esm/tasks/models/index.js +2 -1
  21. package/lib/esm/tasks/models/index.js.map +1 -1
  22. package/lib/index.cjs +1 -1
  23. package/lib/index.d.ts +1 -1
  24. package/lib/tasks/CleanUpTask.cjs +74 -0
  25. package/lib/tasks/CleanUpTask.d.ts +15 -0
  26. package/lib/tasks/CleanUpTask.js.map +1 -0
  27. package/lib/tasks/index.cjs +1 -0
  28. package/lib/tasks/index.d.ts +1 -0
  29. package/lib/tasks/index.js.map +1 -1
  30. package/lib/tasks/models/TaskIOSerializer.cjs +71 -0
  31. package/lib/tasks/models/TaskIOSerializer.d.ts +27 -0
  32. package/lib/tasks/models/TaskIOSerializer.js.map +1 -0
  33. package/lib/tasks/models/TaskModel.cjs +3 -2
  34. package/lib/tasks/models/TaskModel.js.map +1 -1
  35. package/lib/tasks/models/index.cjs +2 -1
  36. package/lib/tasks/models/index.d.ts +2 -1
  37. package/lib/tasks/models/index.js.map +1 -1
  38. package/package.json +1 -1
@@ -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.6";
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.6";
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":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from "./models";
2
2
  export * from "./builder";
3
+ export * from "./CleanUpTask";
3
4
  export * from "./constants";
4
5
  export * from "./decorators";
5
6
  export * from "./logging";
@@ -1,5 +1,6 @@
1
1
  export * from "./models/index.js";
2
2
  export * from "./builder.js";
3
+ export * from "./CleanUpTask.js";
3
4
  export * from "./constants.js";
4
5
  export * from "./decorators.js";
5
6
  export * from "./logging.js";
@@ -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":"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"}
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 "./TaskErrorModel";
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 "./TaskErrorModel.js";
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.6";
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.6";
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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"}
@@ -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);
@@ -1,5 +1,6 @@
1
1
  export * from "./models";
2
2
  export * from "./builder";
3
+ export * from "./CleanUpTask";
3
4
  export * from "./constants";
4
5
  export * from "./decorators";
5
6
  export * from "./logging";
@@ -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":"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"}
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("./TaskErrorModel.cjs"), exports);
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 "./TaskErrorModel";
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/core",
3
- "version": "0.8.7",
3
+ "version": "0.8.8",
4
4
  "description": "Core persistence module for the decaf framework",
5
5
  "type": "module",
6
6
  "exports": {