@webiny/tasks 0.0.0-unstable.2696f9d9e8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +10 -0
- package/context.d.ts +3 -0
- package/context.js +37 -0
- package/context.js.map +1 -0
- package/crud/createEventBridgeEvent.d.ts +7 -0
- package/crud/createEventBridgeEvent.js +67 -0
- package/crud/createEventBridgeEvent.js.map +1 -0
- package/crud/crud.tasks.d.ts +2 -0
- package/crud/crud.tasks.js +220 -0
- package/crud/crud.tasks.js.map +1 -0
- package/crud/definition.tasks.d.ts +2 -0
- package/crud/definition.tasks.js +29 -0
- package/crud/definition.tasks.js.map +1 -0
- package/crud/model.d.ts +5 -0
- package/crud/model.js +212 -0
- package/crud/model.js.map +1 -0
- package/crud/trigger.tasks.d.ts +2 -0
- package/crud/trigger.tasks.js +116 -0
- package/crud/trigger.tasks.js.map +1 -0
- package/crud/where.d.ts +1 -0
- package/crud/where.js +33 -0
- package/crud/where.js.map +1 -0
- package/graphql/checkPermissions.d.ts +7 -0
- package/graphql/checkPermissions.js +46 -0
- package/graphql/checkPermissions.js.map +1 -0
- package/graphql/index.d.ts +3 -0
- package/graphql/index.js +344 -0
- package/graphql/index.js.map +1 -0
- package/graphql/utils.d.ts +9 -0
- package/graphql/utils.js +28 -0
- package/graphql/utils.js.map +1 -0
- package/handler/index.d.ts +9 -0
- package/handler/index.js +65 -0
- package/handler/index.js.map +1 -0
- package/handler/register.d.ts +1 -0
- package/handler/register.js +21 -0
- package/handler/register.js.map +1 -0
- package/handler/types.d.ts +19 -0
- package/handler/types.js +7 -0
- package/handler/types.js.map +1 -0
- package/index.d.ts +7 -0
- package/index.js +47 -0
- package/index.js.map +1 -0
- package/package.json +56 -0
- package/response/DatabaseResponse.d.ts +12 -0
- package/response/DatabaseResponse.js +142 -0
- package/response/DatabaseResponse.js.map +1 -0
- package/response/Response.d.ts +11 -0
- package/response/Response.js +73 -0
- package/response/Response.js.map +1 -0
- package/response/ResponseAbortedResult.d.ts +10 -0
- package/response/ResponseAbortedResult.js +19 -0
- package/response/ResponseAbortedResult.js.map +1 -0
- package/response/ResponseContinueResult.d.ts +13 -0
- package/response/ResponseContinueResult.js +22 -0
- package/response/ResponseContinueResult.js.map +1 -0
- package/response/ResponseDoneResult.d.ts +11 -0
- package/response/ResponseDoneResult.js +20 -0
- package/response/ResponseDoneResult.js.map +1 -0
- package/response/ResponseErrorResult.d.ts +11 -0
- package/response/ResponseErrorResult.js +20 -0
- package/response/ResponseErrorResult.js.map +1 -0
- package/response/TaskResponse.d.ts +10 -0
- package/response/TaskResponse.js +55 -0
- package/response/TaskResponse.js.map +1 -0
- package/response/abstractions/Response.d.ts +23 -0
- package/response/abstractions/Response.js +7 -0
- package/response/abstractions/Response.js.map +1 -0
- package/response/abstractions/ResponseAbortedResult.d.ts +5 -0
- package/response/abstractions/ResponseAbortedResult.js +7 -0
- package/response/abstractions/ResponseAbortedResult.js.map +1 -0
- package/response/abstractions/ResponseBaseResult.d.ts +8 -0
- package/response/abstractions/ResponseBaseResult.js +7 -0
- package/response/abstractions/ResponseBaseResult.js.map +1 -0
- package/response/abstractions/ResponseContinueResult.d.ts +19 -0
- package/response/abstractions/ResponseContinueResult.js +7 -0
- package/response/abstractions/ResponseContinueResult.js.map +1 -0
- package/response/abstractions/ResponseDoneResult.d.ts +12 -0
- package/response/abstractions/ResponseDoneResult.js +7 -0
- package/response/abstractions/ResponseDoneResult.js.map +1 -0
- package/response/abstractions/ResponseErrorResult.d.ts +18 -0
- package/response/abstractions/ResponseErrorResult.js +7 -0
- package/response/abstractions/ResponseErrorResult.js.map +1 -0
- package/response/abstractions/TaskResponse.d.ts +32 -0
- package/response/abstractions/TaskResponse.js +7 -0
- package/response/abstractions/TaskResponse.js.map +1 -0
- package/response/abstractions/index.d.ts +7 -0
- package/response/abstractions/index.js +84 -0
- package/response/abstractions/index.js.map +1 -0
- package/response/index.d.ts +7 -0
- package/response/index.js +84 -0
- package/response/index.js.map +1 -0
- package/runner/TaskControl.d.ts +13 -0
- package/runner/TaskControl.js +142 -0
- package/runner/TaskControl.js.map +1 -0
- package/runner/TaskEventValidation.d.ts +5 -0
- package/runner/TaskEventValidation.js +30 -0
- package/runner/TaskEventValidation.js.map +1 -0
- package/runner/TaskManager.d.ts +13 -0
- package/runner/TaskManager.js +101 -0
- package/runner/TaskManager.js.map +1 -0
- package/runner/TaskManagerStore.d.ts +19 -0
- package/runner/TaskManagerStore.js +90 -0
- package/runner/TaskManagerStore.js.map +1 -0
- package/runner/TaskRunner.d.ts +30 -0
- package/runner/TaskRunner.js +67 -0
- package/runner/TaskRunner.js.map +1 -0
- package/runner/abstractions/TaskControl.d.ts +10 -0
- package/runner/abstractions/TaskControl.js +7 -0
- package/runner/abstractions/TaskControl.js.map +1 -0
- package/runner/abstractions/TaskEventValidation.d.ts +5 -0
- package/runner/abstractions/TaskEventValidation.js +7 -0
- package/runner/abstractions/TaskEventValidation.js.map +1 -0
- package/runner/abstractions/TaskManager.d.ts +5 -0
- package/runner/abstractions/TaskManager.js +7 -0
- package/runner/abstractions/TaskManager.js.map +1 -0
- package/runner/abstractions/TaskManagerStore.d.ts +39 -0
- package/runner/abstractions/TaskManagerStore.js +7 -0
- package/runner/abstractions/TaskManagerStore.js.map +1 -0
- package/runner/abstractions/TaskRunner.d.ts +14 -0
- package/runner/abstractions/TaskRunner.js +7 -0
- package/runner/abstractions/TaskRunner.js.map +1 -0
- package/runner/abstractions/index.d.ts +5 -0
- package/runner/abstractions/index.js +62 -0
- package/runner/abstractions/index.js.map +1 -0
- package/runner/index.d.ts +1 -0
- package/runner/index.js +18 -0
- package/runner/index.js.map +1 -0
- package/runner/utils/getErrorProperties.d.ts +5 -0
- package/runner/utils/getErrorProperties.js +18 -0
- package/runner/utils/getErrorProperties.js.map +1 -0
- package/runner/utils/getObjectProperties.d.ts +4 -0
- package/runner/utils/getObjectProperties.js +21 -0
- package/runner/utils/getObjectProperties.js.map +1 -0
- package/task/index.d.ts +2 -0
- package/task/index.js +29 -0
- package/task/index.js.map +1 -0
- package/task/input.d.ts +15 -0
- package/task/input.js +21 -0
- package/task/input.js.map +1 -0
- package/task/plugin.d.ts +28 -0
- package/task/plugin.js +76 -0
- package/task/plugin.js.map +1 -0
- package/types.d.ts +258 -0
- package/types.js +60 -0
- package/types.js.map +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getObjectProperties = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Unfortunately we need some casting as we do not know which properties are available on the object.
|
|
9
|
+
*/
|
|
10
|
+
const getObjectProperties = input => {
|
|
11
|
+
if (!input || typeof input !== "object") {
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
return Object.getOwnPropertyNames(input).reduce((acc, key) => {
|
|
15
|
+
acc[key] = input[key];
|
|
16
|
+
return acc;
|
|
17
|
+
}, {});
|
|
18
|
+
};
|
|
19
|
+
exports.getObjectProperties = getObjectProperties;
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=getObjectProperties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getObjectProperties","input","Object","getOwnPropertyNames","reduce","acc","key","exports"],"sources":["getObjectProperties.ts"],"sourcesContent":["/**\n * Unfortunately we need some casting as we do not know which properties are available on the object.\n */\nexport const getObjectProperties = <T = Record<string, any>>(input: unknown): T => {\n if (!input || typeof input !== \"object\") {\n return {} as unknown as T;\n }\n return Object.getOwnPropertyNames(input).reduce<Record<string, any>>((acc, key) => {\n acc[key] = (input as Record<string, any>)[key];\n return acc;\n }, {}) as unknown as T;\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACO,MAAMA,mBAAmB,GAA6BC,KAAc,IAAQ;EAC/E,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACrC,OAAO,CAAC,CAAC;EACb;EACA,OAAOC,MAAM,CAACC,mBAAmB,CAACF,KAAK,CAAC,CAACG,MAAM,CAAsB,CAACC,GAAG,EAAEC,GAAG,KAAK;IAC/ED,GAAG,CAACC,GAAG,CAAC,GAAIL,KAAK,CAAyBK,GAAG,CAAC;IAC9C,OAAOD,GAAG;EACd,CAAC,EAAE,CAAC,CAAC,CAAC;AACV,CAAC;AAACE,OAAA,CAAAP,mBAAA,GAAAA,mBAAA"}
|
package/task/index.d.ts
ADDED
package/task/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _input = require("./input");
|
|
7
|
+
Object.keys(_input).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _input[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _input[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _plugin = require("./plugin");
|
|
18
|
+
Object.keys(_plugin).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _plugin[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _plugin[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_input","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_plugin"],"sources":["index.ts"],"sourcesContent":["export * from \"./input\";\nexport * from \"./plugin\";\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,OAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,OAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,OAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAL,GAAA;IAAA;EAAA;AAAA"}
|
package/task/input.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ITaskInputParams<T> {
|
|
2
|
+
id: string;
|
|
3
|
+
input: T;
|
|
4
|
+
}
|
|
5
|
+
declare class TaskInput<T> {
|
|
6
|
+
id: string;
|
|
7
|
+
input: T;
|
|
8
|
+
constructor(params: ITaskInputParams<T>);
|
|
9
|
+
}
|
|
10
|
+
export type { TaskInput };
|
|
11
|
+
interface ICreateTaskInputParams<T> {
|
|
12
|
+
id: string;
|
|
13
|
+
input: T;
|
|
14
|
+
}
|
|
15
|
+
export declare const createTaskInput: <T>(params: ICreateTaskInputParams<T>) => TaskInput<T>;
|
package/task/input.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createTaskInput = void 0;
|
|
7
|
+
class TaskInput {
|
|
8
|
+
constructor(params) {
|
|
9
|
+
this.id = params.id;
|
|
10
|
+
this.input = params.input;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const createTaskInput = params => {
|
|
14
|
+
return new TaskInput({
|
|
15
|
+
id: params.id,
|
|
16
|
+
input: params.input
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
exports.createTaskInput = createTaskInput;
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TaskInput","constructor","params","id","input","createTaskInput","exports"],"sources":["input.ts"],"sourcesContent":["export interface ITaskInputParams<T> {\n id: string;\n input: T;\n}\nclass TaskInput<T> {\n public id: string;\n public input: T;\n\n constructor(params: ITaskInputParams<T>) {\n this.id = params.id;\n this.input = params.input;\n }\n}\n\nexport type { TaskInput };\n\ninterface ICreateTaskInputParams<T> {\n id: string;\n input: T;\n}\n\nexport const createTaskInput = <T>(params: ICreateTaskInputParams<T>) => {\n return new TaskInput({\n id: params.id,\n input: params.input\n });\n};\n"],"mappings":";;;;;;AAIA,MAAMA,SAAS,CAAI;EAIfC,WAAWA,CAACC,MAA2B,EAAE;IACrC,IAAI,CAACC,EAAE,GAAGD,MAAM,CAACC,EAAE;IACnB,IAAI,CAACC,KAAK,GAAGF,MAAM,CAACE,KAAK;EAC7B;AACJ;AASO,MAAMC,eAAe,GAAOH,MAAiC,IAAK;EACrE,OAAO,IAAIF,SAAS,CAAC;IACjBG,EAAE,EAAED,MAAM,CAACC,EAAE;IACbC,KAAK,EAAEF,MAAM,CAACE;EAClB,CAAC,CAAC;AACN,CAAC;AAACE,OAAA,CAAAD,eAAA,GAAAA,eAAA"}
|
package/task/plugin.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Plugin } from "@webiny/plugins";
|
|
2
|
+
import { Context, ITaskDefinition, ITaskDefinitionField } from "../types";
|
|
3
|
+
export interface ITaskPluginSetFieldsCallback {
|
|
4
|
+
(fields: ITaskDefinitionField[]): ITaskDefinitionField[] | undefined;
|
|
5
|
+
}
|
|
6
|
+
export interface ITaskDefinitionParams<C extends Context = Context, I = any> extends Omit<ITaskDefinition<C, I>, "fields"> {
|
|
7
|
+
config?: (task: Pick<TaskDefinitionPlugin<C, I>, "addField" | "setFields">) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare class TaskDefinitionPlugin<C extends Context = Context, I = any> extends Plugin implements ITaskDefinition<C, I> {
|
|
10
|
+
static readonly type: string;
|
|
11
|
+
private readonly task;
|
|
12
|
+
get id(): string;
|
|
13
|
+
get title(): string;
|
|
14
|
+
get fields(): ITaskDefinitionField[] | undefined;
|
|
15
|
+
get run(): (params: import("../types").ITaskRunParams<C, I>) => Promise<import("../types").ITaskResponseResult>;
|
|
16
|
+
get onDone(): ((params: import("../types").ITaskSuccessParams<C, I>) => Promise<void>) | undefined;
|
|
17
|
+
get onError(): ((params: import("../types").ITaskErrorParams<C, I>) => Promise<void>) | undefined;
|
|
18
|
+
constructor(task: ITaskDefinitionParams<C, I>);
|
|
19
|
+
getTask(): ITaskDefinition<C, I>;
|
|
20
|
+
setFields(cb: ITaskPluginSetFieldsCallback): void;
|
|
21
|
+
addField(field: ITaskDefinitionField): void;
|
|
22
|
+
/**
|
|
23
|
+
* TODO implement zod validation if validation becomes too complex
|
|
24
|
+
*/
|
|
25
|
+
private validate;
|
|
26
|
+
}
|
|
27
|
+
export declare const createTaskDefinition: <C extends Context = Context, I = any>(params: ITaskDefinitionParams<C, I>) => TaskDefinitionPlugin<C, I>;
|
|
28
|
+
export declare const createTaskDefinitionField: (params: ITaskDefinitionField) => ITaskDefinitionField;
|
package/task/plugin.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createTaskDefinitionField = exports.createTaskDefinition = exports.TaskDefinitionPlugin = void 0;
|
|
8
|
+
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
|
|
9
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
10
|
+
var _plugins = require("@webiny/plugins");
|
|
11
|
+
class TaskDefinitionPlugin extends _plugins.Plugin {
|
|
12
|
+
static type = "webiny.backgroundTask";
|
|
13
|
+
get id() {
|
|
14
|
+
return this.task.id;
|
|
15
|
+
}
|
|
16
|
+
get title() {
|
|
17
|
+
return this.task.title;
|
|
18
|
+
}
|
|
19
|
+
get fields() {
|
|
20
|
+
return this.task.fields;
|
|
21
|
+
}
|
|
22
|
+
get run() {
|
|
23
|
+
return this.task.run;
|
|
24
|
+
}
|
|
25
|
+
get onDone() {
|
|
26
|
+
return this.task.onDone;
|
|
27
|
+
}
|
|
28
|
+
get onError() {
|
|
29
|
+
return this.task.onError;
|
|
30
|
+
}
|
|
31
|
+
constructor(task) {
|
|
32
|
+
super();
|
|
33
|
+
this.task = {
|
|
34
|
+
...task,
|
|
35
|
+
fields: []
|
|
36
|
+
};
|
|
37
|
+
if (typeof task.config === "function") {
|
|
38
|
+
task.config(this);
|
|
39
|
+
}
|
|
40
|
+
this.validate();
|
|
41
|
+
}
|
|
42
|
+
getTask() {
|
|
43
|
+
return this.task;
|
|
44
|
+
}
|
|
45
|
+
setFields(cb) {
|
|
46
|
+
const fields = Array.from(this.task.fields || []);
|
|
47
|
+
this.task.fields = cb(fields);
|
|
48
|
+
}
|
|
49
|
+
addField(field) {
|
|
50
|
+
this.task.fields = (this.task.fields || []).concat([field]);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* TODO implement zod validation if validation becomes too complex
|
|
54
|
+
*/
|
|
55
|
+
validate() {
|
|
56
|
+
if ((0, _camelCase.default)(this.task.id) !== this.task.id) {
|
|
57
|
+
/**
|
|
58
|
+
* We want to log and throw the message so it can be seen in the CloudWatch logs.
|
|
59
|
+
*/
|
|
60
|
+
const message = `Task ID "${this.task.id}" is invalid. It must be in camelCase format, for example: "myCustomTask".`;
|
|
61
|
+
console.log(message);
|
|
62
|
+
throw new _error.default(message);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.TaskDefinitionPlugin = TaskDefinitionPlugin;
|
|
67
|
+
const createTaskDefinition = params => {
|
|
68
|
+
return new TaskDefinitionPlugin(params);
|
|
69
|
+
};
|
|
70
|
+
exports.createTaskDefinition = createTaskDefinition;
|
|
71
|
+
const createTaskDefinitionField = params => {
|
|
72
|
+
return params;
|
|
73
|
+
};
|
|
74
|
+
exports.createTaskDefinitionField = createTaskDefinitionField;
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_camelCase","_interopRequireDefault","require","_error","_plugins","TaskDefinitionPlugin","Plugin","type","id","task","title","fields","run","onDone","onError","constructor","config","validate","getTask","setFields","cb","Array","from","addField","field","concat","camelCase","message","console","log","WebinyError","exports","createTaskDefinition","params","createTaskDefinitionField"],"sources":["plugin.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase\";\nimport WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport { Context, ITaskDefinition, ITaskDefinitionField } from \"~/types\";\n\nexport interface ITaskPluginSetFieldsCallback {\n (fields: ITaskDefinitionField[]): ITaskDefinitionField[] | undefined;\n}\n\nexport interface ITaskDefinitionParams<C extends Context = Context, I = any>\n extends Omit<ITaskDefinition<C, I>, \"fields\"> {\n config?: (task: Pick<TaskDefinitionPlugin<C, I>, \"addField\" | \"setFields\">) => void;\n}\n\nexport class TaskDefinitionPlugin<C extends Context = Context, I = any>\n extends Plugin\n implements ITaskDefinition<C, I>\n{\n public static override readonly type: string = \"webiny.backgroundTask\";\n\n private readonly task: ITaskDefinition<C, I>;\n\n public get id() {\n return this.task.id;\n }\n\n public get title() {\n return this.task.title;\n }\n\n public get fields() {\n return this.task.fields;\n }\n\n public get run() {\n return this.task.run;\n }\n\n public get onDone() {\n return this.task.onDone;\n }\n\n public get onError() {\n return this.task.onError;\n }\n\n public constructor(task: ITaskDefinitionParams<C, I>) {\n super();\n this.task = {\n ...task,\n fields: []\n };\n if (typeof task.config === \"function\") {\n task.config(this);\n }\n this.validate();\n }\n\n public getTask() {\n return this.task;\n }\n\n public setFields(cb: ITaskPluginSetFieldsCallback) {\n const fields = Array.from(this.task.fields || []);\n this.task.fields = cb(fields);\n }\n\n public addField(field: ITaskDefinitionField) {\n this.task.fields = (this.task.fields || []).concat([field]);\n }\n /**\n * TODO implement zod validation if validation becomes too complex\n */\n private validate(): void {\n if (camelCase(this.task.id) !== this.task.id) {\n /**\n * We want to log and throw the message so it can be seen in the CloudWatch logs.\n */\n const message = `Task ID \"${this.task.id}\" is invalid. It must be in camelCase format, for example: \"myCustomTask\".`;\n console.log(message);\n throw new WebinyError(message);\n }\n }\n}\n\nexport const createTaskDefinition = <C extends Context = Context, I = any>(\n params: ITaskDefinitionParams<C, I>\n) => {\n return new TaskDefinitionPlugin(params);\n};\n\nexport const createTaskDefinitionField = (params: ITaskDefinitionField) => {\n return params;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAYO,MAAMG,oBAAoB,SACrBC,eAAM,CAElB;EACI,OAAgCC,IAAI,GAAW,uBAAuB;EAItE,IAAWC,EAAEA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACC,IAAI,CAACD,EAAE;EACvB;EAEA,IAAWE,KAAKA,CAAA,EAAG;IACf,OAAO,IAAI,CAACD,IAAI,CAACC,KAAK;EAC1B;EAEA,IAAWC,MAAMA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACF,IAAI,CAACE,MAAM;EAC3B;EAEA,IAAWC,GAAGA,CAAA,EAAG;IACb,OAAO,IAAI,CAACH,IAAI,CAACG,GAAG;EACxB;EAEA,IAAWC,MAAMA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACJ,IAAI,CAACI,MAAM;EAC3B;EAEA,IAAWC,OAAOA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACL,IAAI,CAACK,OAAO;EAC5B;EAEOC,WAAWA,CAACN,IAAiC,EAAE;IAClD,KAAK,CAAC,CAAC;IACP,IAAI,CAACA,IAAI,GAAG;MACR,GAAGA,IAAI;MACPE,MAAM,EAAE;IACZ,CAAC;IACD,IAAI,OAAOF,IAAI,CAACO,MAAM,KAAK,UAAU,EAAE;MACnCP,IAAI,CAACO,MAAM,CAAC,IAAI,CAAC;IACrB;IACA,IAAI,CAACC,QAAQ,CAAC,CAAC;EACnB;EAEOC,OAAOA,CAAA,EAAG;IACb,OAAO,IAAI,CAACT,IAAI;EACpB;EAEOU,SAASA,CAACC,EAAgC,EAAE;IAC/C,MAAMT,MAAM,GAAGU,KAAK,CAACC,IAAI,CAAC,IAAI,CAACb,IAAI,CAACE,MAAM,IAAI,EAAE,CAAC;IACjD,IAAI,CAACF,IAAI,CAACE,MAAM,GAAGS,EAAE,CAACT,MAAM,CAAC;EACjC;EAEOY,QAAQA,CAACC,KAA2B,EAAE;IACzC,IAAI,CAACf,IAAI,CAACE,MAAM,GAAG,CAAC,IAAI,CAACF,IAAI,CAACE,MAAM,IAAI,EAAE,EAAEc,MAAM,CAAC,CAACD,KAAK,CAAC,CAAC;EAC/D;EACA;AACJ;AACA;EACYP,QAAQA,CAAA,EAAS;IACrB,IAAI,IAAAS,kBAAS,EAAC,IAAI,CAACjB,IAAI,CAACD,EAAE,CAAC,KAAK,IAAI,CAACC,IAAI,CAACD,EAAE,EAAE;MAC1C;AACZ;AACA;MACY,MAAMmB,OAAO,GAAI,YAAW,IAAI,CAAClB,IAAI,CAACD,EAAG,4EAA2E;MACpHoB,OAAO,CAACC,GAAG,CAACF,OAAO,CAAC;MACpB,MAAM,IAAIG,cAAW,CAACH,OAAO,CAAC;IAClC;EACJ;AACJ;AAACI,OAAA,CAAA1B,oBAAA,GAAAA,oBAAA;AAEM,MAAM2B,oBAAoB,GAC7BC,MAAmC,IAClC;EACD,OAAO,IAAI5B,oBAAoB,CAAC4B,MAAM,CAAC;AAC3C,CAAC;AAACF,OAAA,CAAAC,oBAAA,GAAAA,oBAAA;AAEK,MAAME,yBAAyB,GAAID,MAA4B,IAAK;EACvE,OAAOA,MAAM;AACjB,CAAC;AAACF,OAAA,CAAAG,yBAAA,GAAAA,yBAAA"}
|
package/types.d.ts
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { CmsContext as BaseContext, CmsEntryListParams, CmsEntryMeta, CmsModel, CmsModelField } from "@webiny/api-headless-cms/types";
|
|
2
|
+
import { Topic } from "@webiny/pubsub/types";
|
|
3
|
+
import { IResponseError, ITaskResponse, ITaskResponseResult } from "./response/abstractions";
|
|
4
|
+
import { ITaskManagerStore } from "./runner/abstractions";
|
|
5
|
+
import { EventBridgeClientSendResponse } from "@webiny/aws-sdk/client-eventbridge";
|
|
6
|
+
import { SecurityPermission } from "@webiny/api-security/types";
|
|
7
|
+
export * from "./response/abstractions";
|
|
8
|
+
export * from "./runner/abstractions";
|
|
9
|
+
export interface ITaskConfig {
|
|
10
|
+
readonly eventBusName: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ITaskDataInput {
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}
|
|
15
|
+
export declare enum ITaskLogItemType {
|
|
16
|
+
INFO = "info",
|
|
17
|
+
ERROR = "error"
|
|
18
|
+
}
|
|
19
|
+
export interface ITaskLogItemData {
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
}
|
|
22
|
+
export interface ITaskLogItemBase {
|
|
23
|
+
message: string;
|
|
24
|
+
createdOn: string;
|
|
25
|
+
type: ITaskLogItemType;
|
|
26
|
+
data?: ITaskLogItemData;
|
|
27
|
+
}
|
|
28
|
+
export interface ITaskLogItemInfo extends ITaskLogItemBase {
|
|
29
|
+
type: ITaskLogItemType.INFO;
|
|
30
|
+
}
|
|
31
|
+
export interface ITaskLogItemError extends ITaskLogItemBase {
|
|
32
|
+
type: ITaskLogItemType.ERROR;
|
|
33
|
+
error?: IResponseError;
|
|
34
|
+
}
|
|
35
|
+
export declare type ITaskLogItem = ITaskLogItemInfo | ITaskLogItemError;
|
|
36
|
+
export interface ITaskLog {
|
|
37
|
+
/**
|
|
38
|
+
* ID without the revision number (for example: #0001).
|
|
39
|
+
*/
|
|
40
|
+
id: string;
|
|
41
|
+
createdOn: string;
|
|
42
|
+
createdBy: ITaskIdentity;
|
|
43
|
+
executionName: string;
|
|
44
|
+
task: string;
|
|
45
|
+
iteration: number;
|
|
46
|
+
items: ITaskLogItem[];
|
|
47
|
+
}
|
|
48
|
+
export declare enum TaskDataStatus {
|
|
49
|
+
PENDING = "pending",
|
|
50
|
+
RUNNING = "running",
|
|
51
|
+
FAILED = "failed",
|
|
52
|
+
SUCCESS = "success",
|
|
53
|
+
ABORTED = "aborted"
|
|
54
|
+
}
|
|
55
|
+
export interface ITaskIdentity {
|
|
56
|
+
id: string;
|
|
57
|
+
displayName: string | null;
|
|
58
|
+
type: string;
|
|
59
|
+
}
|
|
60
|
+
export interface ITaskData<T = any> {
|
|
61
|
+
/**
|
|
62
|
+
* ID without the revision number (for example: #0001).
|
|
63
|
+
*/
|
|
64
|
+
id: string;
|
|
65
|
+
name: string;
|
|
66
|
+
taskStatus: TaskDataStatus;
|
|
67
|
+
definitionId: string;
|
|
68
|
+
executionName: string;
|
|
69
|
+
input: T;
|
|
70
|
+
createdOn: string;
|
|
71
|
+
savedOn: string;
|
|
72
|
+
createdBy: ITaskIdentity;
|
|
73
|
+
startedOn?: string;
|
|
74
|
+
finishedOn?: string;
|
|
75
|
+
eventResponse: EventBridgeClientSendResponse | undefined;
|
|
76
|
+
iterations: number;
|
|
77
|
+
}
|
|
78
|
+
export declare type IGetTaskResponse<T = any> = ITaskData<T> | null;
|
|
79
|
+
export interface IListTasksResponse<T = any> {
|
|
80
|
+
items: ITaskData<T>[];
|
|
81
|
+
meta: CmsEntryMeta;
|
|
82
|
+
}
|
|
83
|
+
export interface IListTaskLogsResponse {
|
|
84
|
+
items: ITaskLog[];
|
|
85
|
+
meta: CmsEntryMeta;
|
|
86
|
+
}
|
|
87
|
+
export declare type ICreateTaskResponse<T = any> = ITaskData<T>;
|
|
88
|
+
export declare type IUpdateTaskResponse<T = any> = ITaskData<T>;
|
|
89
|
+
export declare type IDeleteTaskResponse = boolean;
|
|
90
|
+
export declare type IListTaskParams = Omit<CmsEntryListParams, "fields">;
|
|
91
|
+
export declare type IListTaskLogParams = Omit<CmsEntryListParams, "fields">;
|
|
92
|
+
export interface ITaskCreateData<T = ITaskDataInput> {
|
|
93
|
+
definitionId: string;
|
|
94
|
+
name: string;
|
|
95
|
+
input: T;
|
|
96
|
+
}
|
|
97
|
+
export interface ITaskUpdateData<T = ITaskDataInput> {
|
|
98
|
+
name?: string;
|
|
99
|
+
input?: T;
|
|
100
|
+
taskStatus?: TaskDataStatus;
|
|
101
|
+
executionName?: string;
|
|
102
|
+
startedOn?: string;
|
|
103
|
+
finishedOn?: string;
|
|
104
|
+
eventResponse?: Record<string, any>;
|
|
105
|
+
iterations?: number;
|
|
106
|
+
}
|
|
107
|
+
export interface OnTaskBeforeCreateTopicParams {
|
|
108
|
+
input: ITaskCreateData;
|
|
109
|
+
}
|
|
110
|
+
export interface OnTaskAfterCreateTopicParams {
|
|
111
|
+
input: ITaskCreateData;
|
|
112
|
+
task: ITaskData;
|
|
113
|
+
}
|
|
114
|
+
export interface OnTaskBeforeUpdateTopicParams {
|
|
115
|
+
input: ITaskUpdateData;
|
|
116
|
+
original: ITaskData;
|
|
117
|
+
}
|
|
118
|
+
export interface OnTaskAfterUpdateTopicParams {
|
|
119
|
+
input: ITaskUpdateData;
|
|
120
|
+
task: ITaskData;
|
|
121
|
+
}
|
|
122
|
+
export interface OnTaskBeforeDeleteTopicParams {
|
|
123
|
+
task: ITaskData;
|
|
124
|
+
}
|
|
125
|
+
export interface OnTaskAfterDeleteTopicParams {
|
|
126
|
+
task: ITaskData;
|
|
127
|
+
}
|
|
128
|
+
export interface ITaskLogCreateInput {
|
|
129
|
+
executionName: string;
|
|
130
|
+
iteration: number;
|
|
131
|
+
}
|
|
132
|
+
export interface ITaskLogUpdateInput {
|
|
133
|
+
items: ITaskLogItem[];
|
|
134
|
+
}
|
|
135
|
+
export interface ITasksContextCrudObject {
|
|
136
|
+
/**
|
|
137
|
+
* Models
|
|
138
|
+
*/
|
|
139
|
+
getTaskModel: () => Promise<CmsModel>;
|
|
140
|
+
getLogModel: () => Promise<CmsModel>;
|
|
141
|
+
/**
|
|
142
|
+
* Tasks
|
|
143
|
+
*/
|
|
144
|
+
getTask: <T = any>(id: string) => Promise<IGetTaskResponse<T> | null>;
|
|
145
|
+
listTasks: <T = any>(params?: IListTaskParams) => Promise<IListTasksResponse<T>>;
|
|
146
|
+
createTask: <T = any>(task: ITaskCreateData<T>) => Promise<ICreateTaskResponse<T>>;
|
|
147
|
+
updateTask: <T = any>(id: string, data: Partial<ITaskUpdateData<T>>) => Promise<IUpdateTaskResponse<T>>;
|
|
148
|
+
deleteTask: (id: string) => Promise<IDeleteTaskResponse>;
|
|
149
|
+
/**
|
|
150
|
+
* Logs
|
|
151
|
+
*/
|
|
152
|
+
createLog: (task: Pick<ITaskData, "id">, data: ITaskLogCreateInput) => Promise<ITaskLog>;
|
|
153
|
+
updateLog: (id: string, data: ITaskLogUpdateInput) => Promise<ITaskLog>;
|
|
154
|
+
getLog: (id: string) => Promise<ITaskLog | null>;
|
|
155
|
+
getLatestLog: (taskId: string) => Promise<ITaskLog>;
|
|
156
|
+
listLogs: (params: IListTaskLogParams) => Promise<IListTaskLogsResponse>;
|
|
157
|
+
/**
|
|
158
|
+
* Lifecycle events.
|
|
159
|
+
*/
|
|
160
|
+
onTaskBeforeCreate: Topic<OnTaskBeforeCreateTopicParams>;
|
|
161
|
+
onTaskAfterCreate: Topic<OnTaskAfterCreateTopicParams>;
|
|
162
|
+
onTaskBeforeUpdate: Topic<OnTaskBeforeUpdateTopicParams>;
|
|
163
|
+
onTaskAfterUpdate: Topic<OnTaskAfterUpdateTopicParams>;
|
|
164
|
+
onTaskBeforeDelete: Topic<OnTaskBeforeDeleteTopicParams>;
|
|
165
|
+
onTaskAfterDelete: Topic<OnTaskAfterDeleteTopicParams>;
|
|
166
|
+
}
|
|
167
|
+
export interface ITasksContextConfigObject {
|
|
168
|
+
config: ITaskConfig;
|
|
169
|
+
}
|
|
170
|
+
export interface ITasksContextDefinitionObject {
|
|
171
|
+
getDefinition: <T = ITaskDataInput>(id: string) => ITaskDefinition<Context, T> | null;
|
|
172
|
+
listDefinitions: () => ITaskDefinition[];
|
|
173
|
+
}
|
|
174
|
+
export interface ITaskTriggerParams<T = ITaskDataInput> {
|
|
175
|
+
definition: string;
|
|
176
|
+
name?: string;
|
|
177
|
+
input?: T;
|
|
178
|
+
}
|
|
179
|
+
export interface ITaskAbortParams {
|
|
180
|
+
id: string;
|
|
181
|
+
message?: string;
|
|
182
|
+
}
|
|
183
|
+
export interface ITasksContextTriggerObject {
|
|
184
|
+
trigger: <T = ITaskDataInput>(params: ITaskTriggerParams<T>) => Promise<ITaskData<T>>;
|
|
185
|
+
abort: <T = ITaskDataInput>(params: ITaskAbortParams) => Promise<ITaskData<T>>;
|
|
186
|
+
}
|
|
187
|
+
export interface ITasksContextObject extends ITasksContextCrudObject, ITasksContextDefinitionObject, ITasksContextTriggerObject, ITasksContextConfigObject {
|
|
188
|
+
}
|
|
189
|
+
export interface Context extends BaseContext {
|
|
190
|
+
tasks: ITasksContextObject;
|
|
191
|
+
}
|
|
192
|
+
export interface ITaskRunParams<C extends Context, I = any> {
|
|
193
|
+
context: C;
|
|
194
|
+
response: ITaskResponse;
|
|
195
|
+
isCloseToTimeout: () => boolean;
|
|
196
|
+
isAborted: () => boolean;
|
|
197
|
+
input: I;
|
|
198
|
+
store: ITaskManagerStore;
|
|
199
|
+
}
|
|
200
|
+
export interface ITaskSuccessParams<C extends Context, I = any> {
|
|
201
|
+
context: C;
|
|
202
|
+
input: I;
|
|
203
|
+
}
|
|
204
|
+
export interface ITaskErrorParams<C extends Context, I = any> {
|
|
205
|
+
context: C;
|
|
206
|
+
input: I;
|
|
207
|
+
}
|
|
208
|
+
export declare enum TaskResponseStatus {
|
|
209
|
+
DONE = "done",
|
|
210
|
+
ERROR = "error",
|
|
211
|
+
CONTINUE = "continue",
|
|
212
|
+
ABORTED = "aborted"
|
|
213
|
+
}
|
|
214
|
+
export declare type ITaskDefinitionField = Pick<CmsModelField, "fieldId" | "type" | "label" | "renderer" | "helpText" | "placeholderText" | "predefinedValues" | "validation" | "listValidation" | "multipleValues" | "settings">;
|
|
215
|
+
export interface ITaskBeforeTriggerParams<C extends Context = Context, I = ITaskDataInput> {
|
|
216
|
+
context: C;
|
|
217
|
+
input: I;
|
|
218
|
+
}
|
|
219
|
+
export interface ITaskDefinition<C extends Context = Context, I = ITaskDataInput> {
|
|
220
|
+
/**
|
|
221
|
+
* ID of the task must be unique in the system.
|
|
222
|
+
* It should be in camelCase format, for example: "myCustomTask".
|
|
223
|
+
*/
|
|
224
|
+
id: string;
|
|
225
|
+
/**
|
|
226
|
+
* Name should be unique, as it will get used to identify the task in the UI.
|
|
227
|
+
*/
|
|
228
|
+
title: string;
|
|
229
|
+
/**
|
|
230
|
+
* A description of the task, for the UI.
|
|
231
|
+
*/
|
|
232
|
+
description?: string;
|
|
233
|
+
/**
|
|
234
|
+
* Task run method.
|
|
235
|
+
*/
|
|
236
|
+
run: (params: ITaskRunParams<C, I>) => Promise<ITaskResponseResult>;
|
|
237
|
+
/**
|
|
238
|
+
* When a new task is about to be triggered, we will run this method.
|
|
239
|
+
* For example, you can use this method to check if there is a task of the same type already running.
|
|
240
|
+
*/
|
|
241
|
+
onBeforeTrigger?: <T = ITaskDataInput>(params: ITaskBeforeTriggerParams<C, T>) => Promise<void>;
|
|
242
|
+
/**
|
|
243
|
+
* When task successfully finishes, this method will be called.
|
|
244
|
+
*/
|
|
245
|
+
onDone?: (params: ITaskSuccessParams<C, I>) => Promise<void>;
|
|
246
|
+
/**
|
|
247
|
+
* When task fails, this method will be called.
|
|
248
|
+
*/
|
|
249
|
+
onError?: (params: ITaskErrorParams<C, I>) => Promise<void>;
|
|
250
|
+
/**
|
|
251
|
+
* Custom input fields and layout for the task input.
|
|
252
|
+
*/
|
|
253
|
+
fields?: ITaskDefinitionField[];
|
|
254
|
+
}
|
|
255
|
+
export interface TaskPermission extends SecurityPermission {
|
|
256
|
+
name: "task";
|
|
257
|
+
rwd?: string;
|
|
258
|
+
}
|
package/types.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
ITaskLogItemType: true,
|
|
8
|
+
TaskDataStatus: true,
|
|
9
|
+
TaskResponseStatus: true
|
|
10
|
+
};
|
|
11
|
+
exports.TaskResponseStatus = exports.TaskDataStatus = exports.ITaskLogItemType = void 0;
|
|
12
|
+
var _abstractions = require("./response/abstractions");
|
|
13
|
+
Object.keys(_abstractions).forEach(function (key) {
|
|
14
|
+
if (key === "default" || key === "__esModule") return;
|
|
15
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
16
|
+
if (key in exports && exports[key] === _abstractions[key]) return;
|
|
17
|
+
Object.defineProperty(exports, key, {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () {
|
|
20
|
+
return _abstractions[key];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
var _abstractions2 = require("./runner/abstractions");
|
|
25
|
+
Object.keys(_abstractions2).forEach(function (key) {
|
|
26
|
+
if (key === "default" || key === "__esModule") return;
|
|
27
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
28
|
+
if (key in exports && exports[key] === _abstractions2[key]) return;
|
|
29
|
+
Object.defineProperty(exports, key, {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () {
|
|
32
|
+
return _abstractions2[key];
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
let ITaskLogItemType = /*#__PURE__*/function (ITaskLogItemType) {
|
|
37
|
+
ITaskLogItemType["INFO"] = "info";
|
|
38
|
+
ITaskLogItemType["ERROR"] = "error";
|
|
39
|
+
return ITaskLogItemType;
|
|
40
|
+
}({});
|
|
41
|
+
exports.ITaskLogItemType = ITaskLogItemType;
|
|
42
|
+
let TaskDataStatus = /*#__PURE__*/function (TaskDataStatus) {
|
|
43
|
+
TaskDataStatus["PENDING"] = "pending";
|
|
44
|
+
TaskDataStatus["RUNNING"] = "running";
|
|
45
|
+
TaskDataStatus["FAILED"] = "failed";
|
|
46
|
+
TaskDataStatus["SUCCESS"] = "success";
|
|
47
|
+
TaskDataStatus["ABORTED"] = "aborted";
|
|
48
|
+
return TaskDataStatus;
|
|
49
|
+
}({});
|
|
50
|
+
exports.TaskDataStatus = TaskDataStatus;
|
|
51
|
+
let TaskResponseStatus = /*#__PURE__*/function (TaskResponseStatus) {
|
|
52
|
+
TaskResponseStatus["DONE"] = "done";
|
|
53
|
+
TaskResponseStatus["ERROR"] = "error";
|
|
54
|
+
TaskResponseStatus["CONTINUE"] = "continue";
|
|
55
|
+
TaskResponseStatus["ABORTED"] = "aborted";
|
|
56
|
+
return TaskResponseStatus;
|
|
57
|
+
}({});
|
|
58
|
+
exports.TaskResponseStatus = TaskResponseStatus;
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=types.js.map
|
package/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_abstractions","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_abstractions2","ITaskLogItemType","TaskDataStatus","TaskResponseStatus"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext as BaseContext,\n CmsEntryListParams,\n CmsEntryMeta,\n CmsModel,\n CmsModelField\n} from \"@webiny/api-headless-cms/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { IResponseError, ITaskResponse, ITaskResponseResult } from \"~/response/abstractions\";\nimport { ITaskManagerStore } from \"./runner/abstractions\";\nimport { EventBridgeClientSendResponse } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\n\nexport * from \"./response/abstractions\";\nexport * from \"./runner/abstractions\";\n\nexport interface ITaskConfig {\n readonly eventBusName: string;\n}\n\nexport interface ITaskDataInput {\n [key: string]: any;\n}\n\nexport enum ITaskLogItemType {\n INFO = \"info\",\n ERROR = \"error\"\n}\n\nexport interface ITaskLogItemData {\n [key: string]: any;\n}\n\nexport interface ITaskLogItemBase {\n message: string;\n createdOn: string;\n type: ITaskLogItemType;\n data?: ITaskLogItemData;\n}\n\nexport interface ITaskLogItemInfo extends ITaskLogItemBase {\n type: ITaskLogItemType.INFO;\n}\n\nexport interface ITaskLogItemError extends ITaskLogItemBase {\n type: ITaskLogItemType.ERROR;\n error?: IResponseError;\n}\n\nexport type ITaskLogItem = ITaskLogItemInfo | ITaskLogItemError;\n\nexport interface ITaskLog {\n /**\n * ID without the revision number (for example: #0001).\n */\n id: string;\n createdOn: string;\n createdBy: ITaskIdentity;\n executionName: string;\n task: string;\n iteration: number;\n items: ITaskLogItem[];\n}\n\nexport enum TaskDataStatus {\n PENDING = \"pending\",\n RUNNING = \"running\",\n FAILED = \"failed\",\n SUCCESS = \"success\",\n ABORTED = \"aborted\"\n}\n\nexport interface ITaskIdentity {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface ITaskData<T = any> {\n /**\n * ID without the revision number (for example: #0001).\n */\n id: string;\n name: string;\n taskStatus: TaskDataStatus;\n definitionId: string;\n executionName: string;\n input: T;\n createdOn: string;\n savedOn: string;\n createdBy: ITaskIdentity;\n startedOn?: string;\n finishedOn?: string;\n eventResponse: EventBridgeClientSendResponse | undefined;\n iterations: number;\n}\n\nexport type IGetTaskResponse<T = any> = ITaskData<T> | null;\n\nexport interface IListTasksResponse<T = any> {\n items: ITaskData<T>[];\n meta: CmsEntryMeta;\n}\n\nexport interface IListTaskLogsResponse {\n items: ITaskLog[];\n meta: CmsEntryMeta;\n}\n\nexport type ICreateTaskResponse<T = any> = ITaskData<T>;\nexport type IUpdateTaskResponse<T = any> = ITaskData<T>;\nexport type IDeleteTaskResponse = boolean;\n\nexport type IListTaskParams = Omit<CmsEntryListParams, \"fields\">;\nexport type IListTaskLogParams = Omit<CmsEntryListParams, \"fields\">;\n\nexport interface ITaskCreateData<T = ITaskDataInput> {\n definitionId: string;\n name: string;\n input: T;\n}\n\nexport interface ITaskUpdateData<T = ITaskDataInput> {\n name?: string;\n input?: T;\n taskStatus?: TaskDataStatus;\n executionName?: string;\n startedOn?: string;\n finishedOn?: string;\n eventResponse?: Record<string, any>;\n iterations?: number;\n}\n\nexport interface OnTaskBeforeCreateTopicParams {\n input: ITaskCreateData;\n}\n\nexport interface OnTaskAfterCreateTopicParams {\n input: ITaskCreateData;\n task: ITaskData;\n}\n\nexport interface OnTaskBeforeUpdateTopicParams {\n input: ITaskUpdateData;\n original: ITaskData;\n}\n\nexport interface OnTaskAfterUpdateTopicParams {\n input: ITaskUpdateData;\n task: ITaskData;\n}\n\nexport interface OnTaskBeforeDeleteTopicParams {\n task: ITaskData;\n}\n\nexport interface OnTaskAfterDeleteTopicParams {\n task: ITaskData;\n}\n\nexport interface ITaskLogCreateInput {\n executionName: string;\n iteration: number;\n}\n\nexport interface ITaskLogUpdateInput {\n items: ITaskLogItem[];\n}\n\nexport interface ITasksContextCrudObject {\n /**\n * Models\n */\n getTaskModel: () => Promise<CmsModel>;\n getLogModel: () => Promise<CmsModel>;\n /**\n * Tasks\n */\n getTask: <T = any>(id: string) => Promise<IGetTaskResponse<T> | null>;\n listTasks: <T = any>(params?: IListTaskParams) => Promise<IListTasksResponse<T>>;\n createTask: <T = any>(task: ITaskCreateData<T>) => Promise<ICreateTaskResponse<T>>;\n updateTask: <T = any>(\n id: string,\n data: Partial<ITaskUpdateData<T>>\n ) => Promise<IUpdateTaskResponse<T>>;\n deleteTask: (id: string) => Promise<IDeleteTaskResponse>;\n /**\n * Logs\n */\n createLog: (task: Pick<ITaskData, \"id\">, data: ITaskLogCreateInput) => Promise<ITaskLog>;\n updateLog: (id: string, data: ITaskLogUpdateInput) => Promise<ITaskLog>;\n getLog: (id: string) => Promise<ITaskLog | null>;\n getLatestLog: (taskId: string) => Promise<ITaskLog>;\n listLogs: (params: IListTaskLogParams) => Promise<IListTaskLogsResponse>;\n /**\n * Lifecycle events.\n */\n onTaskBeforeCreate: Topic<OnTaskBeforeCreateTopicParams>;\n onTaskAfterCreate: Topic<OnTaskAfterCreateTopicParams>;\n onTaskBeforeUpdate: Topic<OnTaskBeforeUpdateTopicParams>;\n onTaskAfterUpdate: Topic<OnTaskAfterUpdateTopicParams>;\n onTaskBeforeDelete: Topic<OnTaskBeforeDeleteTopicParams>;\n onTaskAfterDelete: Topic<OnTaskAfterDeleteTopicParams>;\n}\n\nexport interface ITasksContextConfigObject {\n config: ITaskConfig;\n}\n\nexport interface ITasksContextDefinitionObject {\n getDefinition: <T = ITaskDataInput>(id: string) => ITaskDefinition<Context, T> | null;\n listDefinitions: () => ITaskDefinition[];\n}\n\nexport interface ITaskTriggerParams<T = ITaskDataInput> {\n definition: string;\n name?: string;\n input?: T;\n}\n\nexport interface ITaskAbortParams {\n id: string;\n message?: string;\n}\n\nexport interface ITasksContextTriggerObject {\n trigger: <T = ITaskDataInput>(params: ITaskTriggerParams<T>) => Promise<ITaskData<T>>;\n abort: <T = ITaskDataInput>(params: ITaskAbortParams) => Promise<ITaskData<T>>;\n}\n\nexport interface ITasksContextObject\n extends ITasksContextCrudObject,\n ITasksContextDefinitionObject,\n ITasksContextTriggerObject,\n ITasksContextConfigObject {}\n\nexport interface Context extends BaseContext {\n tasks: ITasksContextObject;\n}\n\nexport interface ITaskRunParams<C extends Context, I = any> {\n context: C;\n response: ITaskResponse;\n isCloseToTimeout: () => boolean;\n isAborted: () => boolean;\n input: I;\n store: ITaskManagerStore;\n}\n\nexport interface ITaskSuccessParams<C extends Context, I = any> {\n context: C;\n input: I;\n}\n\nexport interface ITaskErrorParams<C extends Context, I = any> {\n context: C;\n input: I;\n}\n\nexport enum TaskResponseStatus {\n DONE = \"done\",\n ERROR = \"error\",\n CONTINUE = \"continue\",\n ABORTED = \"aborted\"\n}\n\nexport type ITaskDefinitionField = Pick<\n CmsModelField,\n | \"fieldId\"\n | \"type\"\n | \"label\"\n | \"renderer\"\n | \"helpText\"\n | \"placeholderText\"\n | \"predefinedValues\"\n | \"validation\"\n | \"listValidation\"\n | \"multipleValues\"\n | \"settings\"\n>;\n\nexport interface ITaskBeforeTriggerParams<C extends Context = Context, I = ITaskDataInput> {\n context: C;\n input: I;\n}\n\nexport interface ITaskDefinition<C extends Context = Context, I = ITaskDataInput> {\n /**\n * ID of the task must be unique in the system.\n * It should be in camelCase format, for example: \"myCustomTask\".\n */\n id: string;\n /**\n * Name should be unique, as it will get used to identify the task in the UI.\n */\n title: string;\n /**\n * A description of the task, for the UI.\n */\n description?: string;\n /**\n * Task run method.\n */\n run: (params: ITaskRunParams<C, I>) => Promise<ITaskResponseResult>;\n /**\n * When a new task is about to be triggered, we will run this method.\n * For example, you can use this method to check if there is a task of the same type already running.\n */\n onBeforeTrigger?: <T = ITaskDataInput>(params: ITaskBeforeTriggerParams<C, T>) => Promise<void>;\n /**\n * When task successfully finishes, this method will be called.\n */\n onDone?: (params: ITaskSuccessParams<C, I>) => Promise<void>;\n /**\n * When task fails, this method will be called.\n */\n onError?: (params: ITaskErrorParams<C, I>) => Promise<void>;\n /**\n * Custom input fields and layout for the task input.\n */\n fields?: ITaskDefinitionField[];\n}\n\nexport interface TaskPermission extends SecurityPermission {\n name: \"task\";\n rwd?: string;\n}\n"],"mappings":";;;;;;;;;;;AAaA,IAAAA,aAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,aAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,aAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,aAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,cAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,cAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,cAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,cAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAAsC,IAU1BU,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAAAL,OAAA,CAAAK,gBAAA,GAAAA,gBAAA;AAAA,IAwChBC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAAN,OAAA,CAAAM,cAAA,GAAAA,cAAA;AAAA,IAmMdC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAAAP,OAAA,CAAAO,kBAAA,GAAAA,kBAAA"}
|