@webiny/tasks 5.40.6 → 5.41.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/context.d.ts +1 -2
  2. package/context.js +8 -16
  3. package/context.js.map +1 -1
  4. package/crud/model.js +2 -2
  5. package/crud/model.js.map +1 -1
  6. package/crud/service.tasks.d.ts +2 -0
  7. package/crud/{trigger.tasks.js → service.tasks.js} +30 -16
  8. package/crud/service.tasks.js.map +1 -0
  9. package/graphql/index.js +0 -4
  10. package/graphql/index.js.map +1 -1
  11. package/handler/index.d.ts +1 -3
  12. package/handler/index.js.map +1 -1
  13. package/handler/register.js +4 -2
  14. package/handler/register.js.map +1 -1
  15. package/handler/types.d.ts +2 -0
  16. package/handler/types.js.map +1 -1
  17. package/package.json +21 -20
  18. package/plugins/TaskServicePlugin.d.ts +21 -0
  19. package/plugins/TaskServicePlugin.js +17 -0
  20. package/plugins/TaskServicePlugin.js.map +1 -0
  21. package/plugins/index.d.ts +1 -1
  22. package/plugins/index.js +4 -4
  23. package/plugins/index.js.map +1 -1
  24. package/response/Response.js +48 -1
  25. package/response/Response.js.map +1 -1
  26. package/response/ResponseDoneResult.js +1 -1
  27. package/response/ResponseDoneResult.js.map +1 -1
  28. package/response/TaskResponse.js +4 -4
  29. package/response/TaskResponse.js.map +1 -1
  30. package/response/abstractions/Response.d.ts +2 -2
  31. package/response/abstractions/ResponseContinueResult.d.ts +1 -0
  32. package/response/abstractions/ResponseContinueResult.js.map +1 -1
  33. package/response/abstractions/ResponseErrorResult.d.ts +3 -2
  34. package/response/abstractions/ResponseErrorResult.js.map +1 -1
  35. package/response/abstractions/TaskResponse.d.ts +7 -10
  36. package/response/abstractions/TaskResponse.js.map +1 -1
  37. package/runner/TaskControl.js +44 -17
  38. package/runner/TaskControl.js.map +1 -1
  39. package/runner/TaskManager.js.map +1 -1
  40. package/runner/TaskManagerStore.d.ts +11 -2
  41. package/runner/TaskManagerStore.js +30 -6
  42. package/runner/TaskManagerStore.js.map +1 -1
  43. package/runner/abstractions/TaskEventValidation.d.ts +1 -1
  44. package/runner/abstractions/TaskManagerStore.d.ts +14 -8
  45. package/runner/abstractions/TaskManagerStore.js.map +1 -1
  46. package/runner/abstractions/TaskRunner.d.ts +4 -1
  47. package/runner/abstractions/TaskRunner.js.map +1 -1
  48. package/service/EventBridgeEventTransportPlugin.d.ts +18 -0
  49. package/{crud/transport → service}/EventBridgeEventTransportPlugin.js +9 -7
  50. package/service/EventBridgeEventTransportPlugin.js.map +1 -0
  51. package/service/StepFunctionServicePlugin.d.ts +26 -0
  52. package/service/StepFunctionServicePlugin.js +84 -0
  53. package/service/StepFunctionServicePlugin.js.map +1 -0
  54. package/service/createService.d.ts +6 -0
  55. package/service/createService.js +31 -0
  56. package/service/createService.js.map +1 -0
  57. package/service/index.d.ts +4 -0
  58. package/service/index.js +31 -0
  59. package/service/index.js.map +1 -0
  60. package/task/plugin.d.ts +3 -3
  61. package/types.d.ts +64 -65
  62. package/types.js +7 -16
  63. package/types.js.map +1 -1
  64. package/utils/getErrorProperties.d.ts +1 -1
  65. package/utils/getErrorProperties.js +3 -1
  66. package/utils/getErrorProperties.js.map +1 -1
  67. package/utils/index.d.ts +3 -0
  68. package/utils/index.js +40 -0
  69. package/utils/index.js.map +1 -0
  70. package/crud/transport/EventBridgeEventTransportPlugin.d.ts +0 -5
  71. package/crud/transport/EventBridgeEventTransportPlugin.js.map +0 -1
  72. package/crud/trigger.tasks.d.ts +0 -2
  73. package/crud/trigger.tasks.js.map +0 -1
  74. package/plugins/TaskTriggerTransportPlugin.d.ts +0 -17
  75. package/plugins/TaskTriggerTransportPlugin.js +0 -20
  76. package/plugins/TaskTriggerTransportPlugin.js.map +0 -1
  77. package/transport/createTransport.d.ts +0 -7
  78. package/transport/createTransport.js +0 -32
  79. package/transport/createTransport.js.map +0 -1
package/types.d.ts CHANGED
@@ -1,20 +1,15 @@
1
1
  import { CmsContext as BaseContext, CmsEntryListParams, CmsEntryListWhere, CmsEntryMeta, CmsModel, CmsModelField } from "@webiny/api-headless-cms/types";
2
2
  import { Topic } from "@webiny/pubsub/types";
3
3
  import { IResponseError, ITaskResponse, ITaskResponseDoneResultOutput, ITaskResponseResult } from "./response/abstractions";
4
- import { ITaskManagerStore } from "./runner/abstractions";
5
- import { PutEventsCommandOutput } from "@webiny/aws-sdk/client-eventbridge";
4
+ import { IIsCloseToTimeoutCallable, ITaskManagerStore } from "./runner/abstractions";
6
5
  import { SecurityPermission } from "@webiny/api-security/types";
7
- export { PutEventsCommandOutput };
6
+ import { GenericRecord } from "@webiny/api/types";
7
+ import { IStepFunctionServiceFetchResult } from "./service/StepFunctionServicePlugin";
8
8
  export * from "./handler/types";
9
9
  export * from "./response/abstractions";
10
10
  export * from "./runner/abstractions";
11
- export interface ITaskConfig {
12
- readonly eventBusName: string;
13
- }
14
- export interface ITaskDataInput {
15
- [key: string]: any;
16
- }
17
- export declare enum ITaskLogItemType {
11
+ export type ITaskDataInput = GenericRecord;
12
+ export declare enum TaskLogItemType {
18
13
  INFO = "info",
19
14
  ERROR = "error"
20
15
  }
@@ -24,17 +19,17 @@ export interface ITaskLogItemData {
24
19
  export interface ITaskLogItemBase {
25
20
  message: string;
26
21
  createdOn: string;
27
- type: ITaskLogItemType;
22
+ type: TaskLogItemType;
28
23
  data?: ITaskLogItemData;
29
24
  }
30
25
  export interface ITaskLogItemInfo extends ITaskLogItemBase {
31
- type: ITaskLogItemType.INFO;
26
+ type: TaskLogItemType.INFO;
32
27
  }
33
28
  export interface ITaskLogItemError extends ITaskLogItemBase {
34
- type: ITaskLogItemType.ERROR;
29
+ type: TaskLogItemType.ERROR;
35
30
  error?: IResponseError;
36
31
  }
37
- export declare type ITaskLogItem = ITaskLogItemInfo | ITaskLogItemError;
32
+ export type ITaskLogItem = ITaskLogItemInfo | ITaskLogItemError;
38
33
  export interface ITaskLog {
39
34
  /**
40
35
  * ID without the revision number (for example: #0001).
@@ -59,7 +54,7 @@ export interface ITaskIdentity {
59
54
  displayName: string | null;
60
55
  type: string;
61
56
  }
62
- export interface ITask<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> {
57
+ export interface ITask<T = GenericRecord, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> {
63
58
  /**
64
59
  * ID without the revision number (for example: #0001).
65
60
  */
@@ -75,11 +70,11 @@ export interface ITask<T = any, O extends ITaskResponseDoneResultOutput = ITaskR
75
70
  createdBy: ITaskIdentity;
76
71
  startedOn?: string;
77
72
  finishedOn?: string;
78
- eventResponse: PutEventsCommandOutput | undefined;
73
+ eventResponse: GenericRecord | undefined;
79
74
  iterations: number;
80
75
  parentId?: string;
81
76
  }
82
- export declare type IGetTaskResponse<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> = ITask<T, O> | null;
77
+ export type IGetTaskResponse<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> = ITask<T, O> | null;
83
78
  export interface IListTasksResponse<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> {
84
79
  items: ITask<T, O>[];
85
80
  meta: CmsEntryMeta;
@@ -88,37 +83,39 @@ export interface IListTaskLogsResponse {
88
83
  items: ITaskLog[];
89
84
  meta: CmsEntryMeta;
90
85
  }
91
- export declare type ICreateTaskResponse<T = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> = ITask<T, O>;
92
- export declare type IUpdateTaskResponse<T = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> = ITask<T, O>;
93
- export declare type IDeleteTaskResponse = boolean;
86
+ export type ICreateTaskResponse<T = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> = ITask<T, O>;
87
+ export type IUpdateTaskResponse<T = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> = ITask<T, O>;
88
+ export type IDeleteTaskResponse = boolean;
89
+ export interface IListTaskParamsWhere extends CmsEntryListWhere {
90
+ parentId?: string;
91
+ parentId_not?: string;
92
+ parentId_in?: string[];
93
+ parentId_not_in?: string[];
94
+ definitionId?: string;
95
+ definitionId_not?: string;
96
+ definitionId_in?: string[];
97
+ definitionId_not_in?: string[];
98
+ taskStatus?: string;
99
+ taskStatus_not?: string;
100
+ taskStatus_in?: string[];
101
+ taskStatus_not_in?: string[];
102
+ }
94
103
  export interface IListTaskParams extends Omit<CmsEntryListParams, "fields" | "search"> {
95
- where?: CmsEntryListWhere & {
96
- parentId?: string;
97
- parentId_not?: string;
98
- parentId_in?: string[];
99
- parentId_not_in?: string[];
100
- definitionId?: string;
101
- definitionId_not?: string;
102
- definitionId_in?: string[];
103
- definitionId_not_in?: string[];
104
- taskStatus?: string;
105
- taskStatus_not?: string;
106
- taskStatus_in?: string[];
107
- taskStatus_not_in?: string[];
108
- };
104
+ where?: IListTaskParamsWhere;
105
+ }
106
+ export interface IListTaskLogParamsWhere extends CmsEntryListWhere {
107
+ task?: string;
108
+ task_in?: string[];
109
+ task_not?: string;
110
+ iteration?: number;
111
+ iteration_not?: number;
112
+ iteration_gte?: number;
113
+ iteration_gt?: number;
114
+ iteration_lte?: number;
115
+ iteration_lt?: number;
109
116
  }
110
117
  export interface IListTaskLogParams extends Omit<CmsEntryListParams, "fields" | "search"> {
111
- where?: CmsEntryListWhere & {
112
- task?: string;
113
- task_in?: string[];
114
- task_not?: string;
115
- iteration?: number;
116
- iteration_not?: number;
117
- iteration_gte?: number;
118
- iteration_gt?: number;
119
- iteration_lte?: number;
120
- iteration_lt?: number;
121
- };
118
+ where?: IListTaskLogParamsWhere;
122
119
  }
123
120
  export interface ITaskCreateData<T = ITaskDataInput> {
124
121
  definitionId: string;
@@ -134,7 +131,7 @@ export interface ITaskUpdateData<I = ITaskDataInput, O extends ITaskResponseDone
134
131
  executionName?: string;
135
132
  startedOn?: string;
136
133
  finishedOn?: string;
137
- eventResponse?: PutEventsCommandOutput;
134
+ eventResponse?: GenericRecord;
138
135
  iterations?: number;
139
136
  }
140
137
  export interface OnTaskBeforeCreateTopicParams {
@@ -198,15 +195,12 @@ export interface ITasksContextCrudObject {
198
195
  onTaskBeforeDelete: Topic<OnTaskBeforeDeleteTopicParams>;
199
196
  onTaskAfterDelete: Topic<OnTaskAfterDeleteTopicParams>;
200
197
  }
201
- export interface ITasksContextConfigObject {
202
- config: ITaskConfig;
203
- }
204
198
  export interface ITasksContextDefinitionObject {
205
- getDefinition: <T = ITaskDataInput>(id: string) => ITaskDefinition<Context, T> | null;
199
+ getDefinition: <C extends Context = Context, I = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(id: string) => ITaskDefinition<C, I, O> | null;
206
200
  listDefinitions: () => ITaskDefinition[];
207
201
  }
208
202
  export interface ITaskTriggerParams<I = ITaskDataInput> {
209
- parent?: ITask;
203
+ parent?: Pick<ITask, "id">;
210
204
  definition: string;
211
205
  name?: string;
212
206
  input?: I;
@@ -216,11 +210,12 @@ export interface ITaskAbortParams {
216
210
  id: string;
217
211
  message?: string;
218
212
  }
219
- export interface ITasksContextTriggerObject {
220
- trigger: <T = ITaskDataInput>(params: ITaskTriggerParams<T>) => Promise<ITask<T>>;
221
- abort: <T = ITaskDataInput>(params: ITaskAbortParams) => Promise<ITask<T>>;
213
+ export interface ITasksContextServiceObject {
214
+ trigger: <T = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(params: ITaskTriggerParams<T>) => Promise<ITask<T, O>>;
215
+ abort: <T = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(params: ITaskAbortParams) => Promise<ITask<T, O>>;
216
+ fetchServiceInfo: (input: ITask<any, any> | string) => Promise<IStepFunctionServiceFetchResult | null>;
222
217
  }
223
- export interface ITasksContextObject extends ITasksContextCrudObject, ITasksContextDefinitionObject, ITasksContextTriggerObject, ITasksContextConfigObject {
218
+ export interface ITasksContextObject extends ITasksContextCrudObject, ITasksContextDefinitionObject, ITasksContextServiceObject {
224
219
  }
225
220
  export interface Context extends BaseContext {
226
221
  tasks: ITasksContextObject;
@@ -228,23 +223,23 @@ export interface Context extends BaseContext {
228
223
  export interface ITaskRunParams<C extends Context, I = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> {
229
224
  context: C;
230
225
  response: ITaskResponse<I, O>;
231
- isCloseToTimeout(seconds?: number): boolean;
226
+ isCloseToTimeout: IIsCloseToTimeoutCallable;
232
227
  isAborted(): boolean;
233
228
  input: I;
234
229
  store: ITaskManagerStore<I>;
235
230
  trigger<SI = ITaskDataInput>(params: Omit<ITaskTriggerParams<SI>, "parent">): Promise<ITask<SI>>;
236
231
  }
237
- export interface ITaskOnSuccessParams<C extends Context, I = ITaskDataInput> {
232
+ export interface ITaskOnSuccessParams<C extends Context, I = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> {
238
233
  context: C;
239
- task: ITask<I>;
234
+ task: ITask<I, O>;
240
235
  }
241
- export interface ITaskOnErrorParams<C extends Context, I = ITaskDataInput> {
236
+ export interface ITaskOnErrorParams<C extends Context, I = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> {
242
237
  context: C;
243
- task: ITask<I>;
238
+ task: ITask<I, O>;
244
239
  }
245
- export interface ITaskOnAbortParams<C extends Context> {
240
+ export interface ITaskOnAbortParams<C extends Context, I = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> {
246
241
  context: C;
247
- task: ITask;
242
+ task: ITask<I, O>;
248
243
  }
249
244
  export interface ITaskOnMaxIterationsParams<C extends Context> {
250
245
  context: C;
@@ -256,7 +251,7 @@ export declare enum TaskResponseStatus {
256
251
  CONTINUE = "continue",
257
252
  ABORTED = "aborted"
258
253
  }
259
- export declare type ITaskDefinitionField = Pick<CmsModelField, "fieldId" | "type" | "label" | "renderer" | "helpText" | "placeholderText" | "predefinedValues" | "validation" | "listValidation" | "multipleValues" | "settings">;
254
+ export type ITaskDefinitionField = Pick<CmsModelField, "fieldId" | "type" | "label" | "renderer" | "helpText" | "placeholderText" | "predefinedValues" | "validation" | "listValidation" | "multipleValues" | "settings">;
260
255
  export interface ITaskBeforeTriggerParams<C extends Context = Context, I = ITaskDataInput> {
261
256
  context: C;
262
257
  data: ITaskCreateData<I>;
@@ -282,6 +277,10 @@ export interface ITaskDefinition<C extends Context = Context, I = ITaskDataInput
282
277
  * Maximum number a step function can call the Lambda.
283
278
  */
284
279
  maxIterations: number;
280
+ /**
281
+ * Disable storing logs in database for this task.
282
+ */
283
+ disableDatabaseLogs?: boolean;
285
284
  /**
286
285
  * Task run method.
287
286
  */
@@ -295,7 +294,7 @@ export interface ITaskDefinition<C extends Context = Context, I = ITaskDataInput
295
294
  * When task successfully finishes, this method will be called.
296
295
  * This will be called during the run time of the task.
297
296
  */
298
- onDone?(params: ITaskOnSuccessParams<C, I>): Promise<void>;
297
+ onDone?(params: ITaskOnSuccessParams<C, I, O>): Promise<void>;
299
298
  /**
300
299
  * When task fails, this method will be called.
301
300
  * This will be called during the run time of the task.
@@ -305,7 +304,7 @@ export interface ITaskDefinition<C extends Context = Context, I = ITaskDataInput
305
304
  * When task is aborted, this method will be called.
306
305
  * This method will be called when user aborts the task.
307
306
  */
308
- onAbort?(params: ITaskOnAbortParams<C>): Promise<void>;
307
+ onAbort?(params: ITaskOnAbortParams<C, I, O>): Promise<void>;
309
308
  /**
310
309
  * When task hits max iterations, this method will be called.
311
310
  * This will be called during the run time of the task.
package/types.js CHANGED
@@ -4,20 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  var _exportNames = {
7
- ITaskLogItemType: true,
7
+ TaskLogItemType: true,
8
8
  TaskDataStatus: true,
9
- TaskResponseStatus: true,
10
- PutEventsCommandOutput: true
9
+ TaskResponseStatus: true
11
10
  };
12
- exports.ITaskLogItemType = void 0;
13
- Object.defineProperty(exports, "PutEventsCommandOutput", {
14
- enumerable: true,
15
- get: function () {
16
- return _clientEventbridge.PutEventsCommandOutput;
17
- }
18
- });
19
- exports.TaskResponseStatus = exports.TaskDataStatus = void 0;
20
- var _clientEventbridge = require("@webiny/aws-sdk/client-eventbridge");
11
+ exports.TaskResponseStatus = exports.TaskLogItemType = exports.TaskDataStatus = void 0;
21
12
  var _types = require("./handler/types");
22
13
  Object.keys(_types).forEach(function (key) {
23
14
  if (key === "default" || key === "__esModule") return;
@@ -54,10 +45,10 @@ Object.keys(_abstractions2).forEach(function (key) {
54
45
  }
55
46
  });
56
47
  });
57
- let ITaskLogItemType = exports.ITaskLogItemType = /*#__PURE__*/function (ITaskLogItemType) {
58
- ITaskLogItemType["INFO"] = "info";
59
- ITaskLogItemType["ERROR"] = "error";
60
- return ITaskLogItemType;
48
+ let TaskLogItemType = exports.TaskLogItemType = /*#__PURE__*/function (TaskLogItemType) {
49
+ TaskLogItemType["INFO"] = "info";
50
+ TaskLogItemType["ERROR"] = "error";
51
+ return TaskLogItemType;
61
52
  }({});
62
53
  let TaskDataStatus = exports.TaskDataStatus = /*#__PURE__*/function (TaskDataStatus) {
63
54
  TaskDataStatus["PENDING"] = "pending";
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_clientEventbridge","require","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_abstractions","_abstractions2","ITaskLogItemType","TaskDataStatus","TaskResponseStatus"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext as BaseContext,\n CmsEntryListParams,\n CmsEntryListWhere,\n CmsEntryMeta,\n CmsModel,\n CmsModelField\n} from \"@webiny/api-headless-cms/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport {\n IResponseError,\n ITaskResponse,\n ITaskResponseDoneResultOutput,\n ITaskResponseResult\n} from \"~/response/abstractions\";\nimport { ITaskManagerStore } from \"./runner/abstractions\";\nimport { PutEventsCommandOutput } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\n\nexport { PutEventsCommandOutput };\n\nexport * from \"./handler/types\";\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 ITask<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\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 output?: O;\n createdOn: string;\n savedOn: string;\n createdBy: ITaskIdentity;\n startedOn?: string;\n finishedOn?: string;\n eventResponse: PutEventsCommandOutput | undefined;\n iterations: number;\n parentId?: string;\n}\n\nexport type IGetTaskResponse<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O> | null;\n\nexport interface IListTasksResponse<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n items: ITask<T, O>[];\n meta: CmsEntryMeta;\n}\n\nexport interface IListTaskLogsResponse {\n items: ITaskLog[];\n meta: CmsEntryMeta;\n}\n\nexport type ICreateTaskResponse<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O>;\nexport type IUpdateTaskResponse<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O>;\nexport type IDeleteTaskResponse = boolean;\n\nexport interface IListTaskParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: CmsEntryListWhere & {\n parentId?: string;\n parentId_not?: string;\n parentId_in?: string[];\n parentId_not_in?: string[];\n definitionId?: string;\n definitionId_not?: string;\n definitionId_in?: string[];\n definitionId_not_in?: string[];\n taskStatus?: string;\n taskStatus_not?: string;\n taskStatus_in?: string[];\n taskStatus_not_in?: string[];\n };\n}\nexport interface IListTaskLogParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: CmsEntryListWhere & {\n task?: string;\n task_in?: string[];\n task_not?: string;\n iteration?: number;\n iteration_not?: number;\n iteration_gte?: number;\n iteration_gt?: number;\n iteration_lte?: number;\n iteration_lt?: number;\n };\n}\n\nexport interface ITaskCreateData<T = ITaskDataInput> {\n definitionId: string;\n name: string;\n input: T;\n parentId?: string;\n}\n\nexport interface ITaskUpdateData<\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n name?: string;\n input?: I;\n output?: O;\n taskStatus?: TaskDataStatus;\n executionName?: string;\n startedOn?: string;\n finishedOn?: string;\n eventResponse?: PutEventsCommandOutput;\n iterations?: number;\n}\n\nexport interface OnTaskBeforeCreateTopicParams {\n input: ITaskCreateData;\n}\n\nexport interface OnTaskAfterCreateTopicParams {\n input: ITaskCreateData;\n task: ITask;\n}\n\nexport interface OnTaskBeforeUpdateTopicParams {\n input: ITaskUpdateData;\n original: ITask;\n}\n\nexport interface OnTaskAfterUpdateTopicParams {\n input: ITaskUpdateData;\n task: ITask;\n}\n\nexport interface OnTaskBeforeDeleteTopicParams {\n task: ITask;\n}\n\nexport interface OnTaskAfterDeleteTopicParams {\n task: ITask;\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, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(\n id: string\n ): Promise<IGetTaskResponse<T, O> | null>;\n listTasks<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(\n params?: IListTaskParams\n ): Promise<IListTasksResponse<T, O>>;\n createTask<T = any>(task: ITaskCreateData<T>): Promise<ICreateTaskResponse<T>>;\n updateTask<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string,\n data: Partial<ITaskUpdateData<T, O>>\n ): Promise<IUpdateTaskResponse<T, O>>;\n deleteTask(id: string): Promise<IDeleteTaskResponse>;\n /**\n * Logs\n */\n createLog(task: Pick<ITask, \"id\">, data: ITaskLogCreateInput): Promise<ITaskLog>;\n updateLog(id: string, data: ITaskLogUpdateInput): Promise<ITaskLog>;\n deleteLog(id: string): Promise<boolean>;\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<I = ITaskDataInput> {\n parent?: ITask;\n definition: string;\n name?: string;\n input?: I;\n delay?: number;\n}\n\nexport interface ITaskAbortParams {\n id: string;\n message?: string;\n}\n\nexport interface ITasksContextTriggerObject {\n trigger: <T = ITaskDataInput>(params: ITaskTriggerParams<T>) => Promise<ITask<T>>;\n abort: <T = ITaskDataInput>(params: ITaskAbortParams) => Promise<ITask<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<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n response: ITaskResponse<I, O>;\n isCloseToTimeout(seconds?: number): boolean;\n isAborted(): boolean;\n input: I;\n store: ITaskManagerStore<I>;\n trigger<SI = ITaskDataInput>(\n params: Omit<ITaskTriggerParams<SI>, \"parent\">\n ): Promise<ITask<SI>>;\n}\n\nexport interface ITaskOnSuccessParams<C extends Context, I = ITaskDataInput> {\n context: C;\n task: ITask<I>;\n}\n\nexport interface ITaskOnErrorParams<C extends Context, I = ITaskDataInput> {\n context: C;\n task: ITask<I>;\n}\n\nexport interface ITaskOnAbortParams<C extends Context> {\n context: C;\n task: ITask;\n}\n\nexport interface ITaskOnMaxIterationsParams<C extends Context> {\n context: C;\n task: ITask;\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 data: ITaskCreateData<I>;\n}\n\nexport interface ITaskDefinition<\n C extends Context = Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n /**\n * ID of the task must be unique in the system.\n * It should be in camelCase format, for example: \"myCustomTask\".\n *\n * TODO: figure out a way to force camelCase in types.\n * CamelCase from type-fest does not help with this.\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 * Maximum number a step function can call the Lambda.\n */\n maxIterations: number;\n /**\n * Task run method.\n */\n run(params: ITaskRunParams<C, I, O>): 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 * This will be called during the run time of the task.\n */\n onDone?(params: ITaskOnSuccessParams<C, I>): Promise<void>;\n /**\n * When task fails, this method will be called.\n * This will be called during the run time of the task.\n */\n onError?(params: ITaskOnErrorParams<C, I>): Promise<void>;\n /**\n * When task is aborted, this method will be called.\n * This method will be called when user aborts the task.\n */\n onAbort?(params: ITaskOnAbortParams<C>): Promise<void>;\n /**\n * When task hits max iterations, this method will be called.\n * This will be called during the run time of the task.\n */\n onMaxIterations?(params: ITaskOnMaxIterationsParams<C>): Promise<void>;\n /**\n * Custom input fields and layout for the task input.\n */\n fields?: ITaskDefinitionField[];\n /**\n * Is the task visible when listing?\n */\n isPrivate?: boolean;\n}\n\nexport interface TaskPermission extends SecurityPermission {\n name: \"task\";\n rwd?: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgBA,IAAAA,kBAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,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,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,aAAA,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,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,cAAA,GAAAf,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAY,cAAA,EAAAX,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,MAAAU,cAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,cAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAAsC,IAU1BW,gBAAgB,GAAAN,OAAA,CAAAM,gBAAA,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAAA,IAwChBC,cAAc,GAAAP,OAAA,CAAAO,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAA,IA+QdC,kBAAkB,GAAAR,OAAA,CAAAQ,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_abstractions","_abstractions2","TaskLogItemType","TaskDataStatus","TaskResponseStatus"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext as BaseContext,\n CmsEntryListParams,\n CmsEntryListWhere,\n CmsEntryMeta,\n CmsModel,\n CmsModelField\n} from \"@webiny/api-headless-cms/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport {\n IResponseError,\n ITaskResponse,\n ITaskResponseDoneResultOutput,\n ITaskResponseResult\n} from \"~/response/abstractions\";\nimport { IIsCloseToTimeoutCallable, ITaskManagerStore } from \"./runner/abstractions\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\nimport { GenericRecord } from \"@webiny/api/types\";\nimport { IStepFunctionServiceFetchResult } from \"~/service/StepFunctionServicePlugin\";\n\nexport * from \"./handler/types\";\nexport * from \"./response/abstractions\";\nexport * from \"./runner/abstractions\";\n\nexport type ITaskDataInput = GenericRecord;\n\nexport enum TaskLogItemType {\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: TaskLogItemType;\n data?: ITaskLogItemData;\n}\n\nexport interface ITaskLogItemInfo extends ITaskLogItemBase {\n type: TaskLogItemType.INFO;\n}\n\nexport interface ITaskLogItemError extends ITaskLogItemBase {\n type: TaskLogItemType.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 ITask<\n T = GenericRecord,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\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 output?: O;\n createdOn: string;\n savedOn: string;\n createdBy: ITaskIdentity;\n startedOn?: string;\n finishedOn?: string;\n eventResponse: GenericRecord | undefined;\n iterations: number;\n parentId?: string;\n}\n\nexport type IGetTaskResponse<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O> | null;\n\nexport interface IListTasksResponse<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n items: ITask<T, O>[];\n meta: CmsEntryMeta;\n}\n\nexport interface IListTaskLogsResponse {\n items: ITaskLog[];\n meta: CmsEntryMeta;\n}\n\nexport type ICreateTaskResponse<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O>;\nexport type IUpdateTaskResponse<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O>;\nexport type IDeleteTaskResponse = boolean;\n\nexport interface IListTaskParamsWhere extends CmsEntryListWhere {\n parentId?: string;\n parentId_not?: string;\n parentId_in?: string[];\n parentId_not_in?: string[];\n definitionId?: string;\n definitionId_not?: string;\n definitionId_in?: string[];\n definitionId_not_in?: string[];\n taskStatus?: string;\n taskStatus_not?: string;\n taskStatus_in?: string[];\n taskStatus_not_in?: string[];\n}\n\nexport interface IListTaskParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: IListTaskParamsWhere;\n}\n\nexport interface IListTaskLogParamsWhere extends CmsEntryListWhere {\n task?: string;\n task_in?: string[];\n task_not?: string;\n iteration?: number;\n iteration_not?: number;\n iteration_gte?: number;\n iteration_gt?: number;\n iteration_lte?: number;\n iteration_lt?: number;\n}\n\nexport interface IListTaskLogParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: IListTaskLogParamsWhere;\n}\n\nexport interface ITaskCreateData<T = ITaskDataInput> {\n definitionId: string;\n name: string;\n input: T;\n parentId?: string;\n}\n\nexport interface ITaskUpdateData<\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n name?: string;\n input?: I;\n output?: O;\n taskStatus?: TaskDataStatus;\n executionName?: string;\n startedOn?: string;\n finishedOn?: string;\n eventResponse?: GenericRecord;\n iterations?: number;\n}\n\nexport interface OnTaskBeforeCreateTopicParams {\n input: ITaskCreateData;\n}\n\nexport interface OnTaskAfterCreateTopicParams {\n input: ITaskCreateData;\n task: ITask;\n}\n\nexport interface OnTaskBeforeUpdateTopicParams {\n input: ITaskUpdateData;\n original: ITask;\n}\n\nexport interface OnTaskAfterUpdateTopicParams {\n input: ITaskUpdateData;\n task: ITask;\n}\n\nexport interface OnTaskBeforeDeleteTopicParams {\n task: ITask;\n}\n\nexport interface OnTaskAfterDeleteTopicParams {\n task: ITask;\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, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(\n id: string\n ): Promise<IGetTaskResponse<T, O> | null>;\n listTasks<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(\n params?: IListTaskParams\n ): Promise<IListTasksResponse<T, O>>;\n createTask<T = any>(task: ITaskCreateData<T>): Promise<ICreateTaskResponse<T>>;\n updateTask<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string,\n data: Partial<ITaskUpdateData<T, O>>\n ): Promise<IUpdateTaskResponse<T, O>>;\n deleteTask(id: string): Promise<IDeleteTaskResponse>;\n /**\n * Logs\n */\n createLog(task: Pick<ITask, \"id\">, data: ITaskLogCreateInput): Promise<ITaskLog>;\n updateLog(id: string, data: ITaskLogUpdateInput): Promise<ITaskLog>;\n deleteLog(id: string): Promise<boolean>;\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 ITasksContextDefinitionObject {\n getDefinition: <\n C extends Context = Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string\n ) => ITaskDefinition<C, I, O> | null;\n listDefinitions: () => ITaskDefinition[];\n}\n\nexport interface ITaskTriggerParams<I = ITaskDataInput> {\n parent?: Pick<ITask, \"id\">;\n definition: string;\n name?: string;\n input?: I;\n delay?: number;\n}\n\nexport interface ITaskAbortParams {\n id: string;\n message?: string;\n}\n\nexport interface ITasksContextServiceObject {\n trigger: <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params: ITaskTriggerParams<T>\n ) => Promise<ITask<T, O>>;\n abort: <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params: ITaskAbortParams\n ) => Promise<ITask<T, O>>;\n fetchServiceInfo: (\n input: ITask<any, any> | string\n ) => Promise<IStepFunctionServiceFetchResult | null>;\n}\n\nexport interface ITasksContextObject\n extends ITasksContextCrudObject,\n ITasksContextDefinitionObject,\n ITasksContextServiceObject {}\n\nexport interface Context extends BaseContext {\n tasks: ITasksContextObject;\n}\n\nexport interface ITaskRunParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n response: ITaskResponse<I, O>;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n isAborted(): boolean;\n input: I;\n store: ITaskManagerStore<I>;\n trigger<SI = ITaskDataInput>(\n params: Omit<ITaskTriggerParams<SI>, \"parent\">\n ): Promise<ITask<SI>>;\n}\n\nexport interface ITaskOnSuccessParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnErrorParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnAbortParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnMaxIterationsParams<C extends Context> {\n context: C;\n task: ITask;\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 data: ITaskCreateData<I>;\n}\n\nexport interface ITaskDefinition<\n C extends Context = Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n /**\n * ID of the task must be unique in the system.\n * It should be in camelCase format, for example: \"myCustomTask\".\n *\n * TODO: figure out a way to force camelCase in types.\n * CamelCase from type-fest does not help with this.\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 * Maximum number a step function can call the Lambda.\n */\n maxIterations: number;\n /**\n * Disable storing logs in database for this task.\n */\n disableDatabaseLogs?: boolean;\n /**\n * Task run method.\n */\n run(params: ITaskRunParams<C, I, O>): 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 * This will be called during the run time of the task.\n */\n onDone?(params: ITaskOnSuccessParams<C, I, O>): Promise<void>;\n /**\n * When task fails, this method will be called.\n * This will be called during the run time of the task.\n */\n onError?(params: ITaskOnErrorParams<C, I>): Promise<void>;\n /**\n * When task is aborted, this method will be called.\n * This method will be called when user aborts the task.\n */\n onAbort?(params: ITaskOnAbortParams<C, I, O>): Promise<void>;\n /**\n * When task hits max iterations, this method will be called.\n * This will be called during the run time of the task.\n */\n onMaxIterations?(params: ITaskOnMaxIterationsParams<C>): Promise<void>;\n /**\n * Custom input fields and layout for the task input.\n */\n fields?: ITaskDefinitionField[];\n /**\n * Is the task visible when listing?\n */\n isPrivate?: boolean;\n}\n\nexport interface TaskPermission extends SecurityPermission {\n name: \"task\";\n rwd?: string;\n}\n"],"mappings":";;;;;;;;;;;AAoBA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,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,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,aAAA,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,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,cAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,cAAA,EAAAX,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,MAAAU,cAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,cAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAAsC,IAI1BW,eAAe,GAAAN,OAAA,CAAAM,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAwCfC,cAAc,GAAAP,OAAA,CAAAO,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAA,IA8SdC,kBAAkB,GAAAR,OAAA,CAAAQ,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
1
  import { IResponseError } from "../response/abstractions";
2
- export declare const getErrorProperties: (error: Error) => IResponseError;
2
+ export declare const getErrorProperties: (error: Error | IResponseError) => IResponseError;
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getErrorProperties = void 0;
7
7
  var _getObjectProperties = require("./getObjectProperties");
8
8
  const getErrorProperties = error => {
9
- return (0, _getObjectProperties.getObjectProperties)(error);
9
+ const value = (0, _getObjectProperties.getObjectProperties)(error);
10
+ delete value.stack;
11
+ return value;
10
12
  };
11
13
  exports.getErrorProperties = getErrorProperties;
12
14
 
@@ -1 +1 @@
1
- {"version":3,"names":["_getObjectProperties","require","getErrorProperties","error","getObjectProperties","exports"],"sources":["getErrorProperties.ts"],"sourcesContent":["import { IResponseError } from \"~/response/abstractions\";\nimport { getObjectProperties } from \"~/utils/getObjectProperties\";\n\nexport const getErrorProperties = (error: Error): IResponseError => {\n return getObjectProperties<IResponseError>(error);\n};\n"],"mappings":";;;;;;AACA,IAAAA,oBAAA,GAAAC,OAAA;AAEO,MAAMC,kBAAkB,GAAIC,KAAY,IAAqB;EAChE,OAAO,IAAAC,wCAAmB,EAAiBD,KAAK,CAAC;AACrD,CAAC;AAACE,OAAA,CAAAH,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_getObjectProperties","require","getErrorProperties","error","value","getObjectProperties","stack","exports"],"sources":["getErrorProperties.ts"],"sourcesContent":["import { IResponseError } from \"~/response/abstractions\";\nimport { getObjectProperties } from \"~/utils/getObjectProperties\";\n\nexport const getErrorProperties = (error: Error | IResponseError): IResponseError => {\n const value = getObjectProperties<IResponseError>(error);\n\n delete value.stack;\n\n return value;\n};\n"],"mappings":";;;;;;AACA,IAAAA,oBAAA,GAAAC,OAAA;AAEO,MAAMC,kBAAkB,GAAIC,KAA6B,IAAqB;EACjF,MAAMC,KAAK,GAAG,IAAAC,wCAAmB,EAAiBF,KAAK,CAAC;EAExD,OAAOC,KAAK,CAACE,KAAK;EAElB,OAAOF,KAAK;AAChB,CAAC;AAACG,OAAA,CAAAL,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export * from "./getErrorProperties";
2
+ export * from "./getObjectProperties";
3
+ export * from "./ObjectUpdater";
package/utils/index.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _getErrorProperties = require("./getErrorProperties");
7
+ Object.keys(_getErrorProperties).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _getErrorProperties[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _getErrorProperties[key];
14
+ }
15
+ });
16
+ });
17
+ var _getObjectProperties = require("./getObjectProperties");
18
+ Object.keys(_getObjectProperties).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _getObjectProperties[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _getObjectProperties[key];
25
+ }
26
+ });
27
+ });
28
+ var _ObjectUpdater = require("./ObjectUpdater");
29
+ Object.keys(_ObjectUpdater).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _ObjectUpdater[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _ObjectUpdater[key];
36
+ }
37
+ });
38
+ });
39
+
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_getErrorProperties","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_getObjectProperties","_ObjectUpdater"],"sources":["index.ts"],"sourcesContent":["export * from \"./getErrorProperties\";\nexport * from \"./getObjectProperties\";\nexport * from \"./ObjectUpdater\";\n"],"mappings":";;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,mBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,mBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,mBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,oBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,oBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,oBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,oBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,cAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,cAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,cAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,cAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1,5 +0,0 @@
1
- import { ITaskTriggerTransport, ITaskTriggerTransportPluginParams, TaskTriggerTransportPlugin } from "../../plugins";
2
- export declare class EventBridgeEventTransportPlugin extends TaskTriggerTransportPlugin {
3
- name: string;
4
- createTransport(params: ITaskTriggerTransportPluginParams): ITaskTriggerTransport;
5
- }
@@ -1 +0,0 @@
1
- {"version":3,"names":["_plugins","require","_clientEventbridge","_error","EventBridgeEventTransport","constructor","params","client","EventBridgeClient","region","process","env","AWS_REGION","context","config","getTenant","getLocale","send","task","delay","event","webinyTaskId","id","webinyTaskDefinitionId","definitionId","tenant","locale","cmd","PutEventsCommand","Entries","Source","EventBusName","eventBusName","DetailType","Detail","JSON","stringify","ex","WebinyError","message","code","data","EventBridgeEventTransportPlugin","TaskTriggerTransportPlugin","name","createTransport","exports"],"sources":["EventBridgeEventTransportPlugin.ts"],"sourcesContent":["import {\n ITaskTriggerTransport,\n ITaskTriggerTransportPluginParams,\n PutEventsCommandOutput,\n TaskTriggerTransportPlugin\n} from \"~/plugins\";\nimport { Context, ITask, ITaskConfig, ITaskEventInput } from \"~/types\";\nimport { EventBridgeClient, PutEventsCommand } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { WebinyError } from \"@webiny/error\";\n\nclass EventBridgeEventTransport implements ITaskTriggerTransport {\n protected readonly context: Context;\n protected readonly config: ITaskConfig;\n protected readonly getTenant: () => string;\n protected readonly getLocale: () => string;\n private readonly client: EventBridgeClient;\n\n public constructor(params: ITaskTriggerTransportPluginParams) {\n this.client = new EventBridgeClient({\n region: process.env.AWS_REGION\n });\n this.context = params.context;\n this.config = params.config;\n this.getTenant = params.getTenant;\n this.getLocale = params.getLocale;\n }\n\n public async send(\n task: Pick<ITask, \"id\" | \"definitionId\">,\n delay: number\n ): Promise<PutEventsCommandOutput> {\n /**\n * The ITaskEvent is what our handler expect to get.\n * Endpoint and stateMachineId are added by the step function.\n */\n const event: ITaskEventInput = {\n webinyTaskId: task.id,\n webinyTaskDefinitionId: task.definitionId,\n tenant: this.getTenant(),\n locale: this.getLocale(),\n delay\n };\n\n const cmd = new PutEventsCommand({\n Entries: [\n {\n Source: \"webiny-api-tasks\",\n EventBusName: this.config.eventBusName,\n DetailType: \"WebinyBackgroundTask\",\n Detail: JSON.stringify(event)\n }\n ]\n });\n try {\n return await this.client.send(cmd);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not trigger task via Event Bridge!\",\n ex.code || \"TRIGGER_TASK_ERROR\",\n {\n event,\n ...(ex.data || {})\n }\n );\n }\n }\n}\n\nexport class EventBridgeEventTransportPlugin extends TaskTriggerTransportPlugin {\n public override name = \"task.eventBridgeEventTransport\";\n public createTransport(params: ITaskTriggerTransportPluginParams): ITaskTriggerTransport {\n return new EventBridgeEventTransport(params);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAOA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAEA,MAAMG,yBAAyB,CAAkC;EAOtDC,WAAWA,CAACC,MAAyC,EAAE;IAC1D,IAAI,CAACC,MAAM,GAAG,IAAIC,oCAAiB,CAAC;MAChCC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC;IACxB,CAAC,CAAC;IACF,IAAI,CAACC,OAAO,GAAGP,MAAM,CAACO,OAAO;IAC7B,IAAI,CAACC,MAAM,GAAGR,MAAM,CAACQ,MAAM;IAC3B,IAAI,CAACC,SAAS,GAAGT,MAAM,CAACS,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGV,MAAM,CAACU,SAAS;EACrC;EAEA,MAAaC,IAAIA,CACbC,IAAwC,EACxCC,KAAa,EACkB;IAC/B;AACR;AACA;AACA;IACQ,MAAMC,KAAsB,GAAG;MAC3BC,YAAY,EAAEH,IAAI,CAACI,EAAE;MACrBC,sBAAsB,EAAEL,IAAI,CAACM,YAAY;MACzCC,MAAM,EAAE,IAAI,CAACV,SAAS,CAAC,CAAC;MACxBW,MAAM,EAAE,IAAI,CAACV,SAAS,CAAC,CAAC;MACxBG;IACJ,CAAC;IAED,MAAMQ,GAAG,GAAG,IAAIC,mCAAgB,CAAC;MAC7BC,OAAO,EAAE,CACL;QACIC,MAAM,EAAE,kBAAkB;QAC1BC,YAAY,EAAE,IAAI,CAACjB,MAAM,CAACkB,YAAY;QACtCC,UAAU,EAAE,sBAAsB;QAClCC,MAAM,EAAEC,IAAI,CAACC,SAAS,CAAChB,KAAK;MAChC,CAAC;IAET,CAAC,CAAC;IACF,IAAI;MACA,OAAO,MAAM,IAAI,CAACb,MAAM,CAACU,IAAI,CAACU,GAAG,CAAC;IACtC,CAAC,CAAC,OAAOU,EAAE,EAAE;MACT,MAAM,IAAIC,kBAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,0CAA0C,EACxDF,EAAE,CAACG,IAAI,IAAI,oBAAoB,EAC/B;QACIpB,KAAK;QACL,IAAIiB,EAAE,CAACI,IAAI,IAAI,CAAC,CAAC;MACrB,CACJ,CAAC;IACL;EACJ;AACJ;AAEO,MAAMC,+BAA+B,SAASC,mCAA0B,CAAC;EAC5DC,IAAI,GAAG,gCAAgC;EAChDC,eAAeA,CAACvC,MAAyC,EAAyB;IACrF,OAAO,IAAIF,yBAAyB,CAACE,MAAM,CAAC;EAChD;AACJ;AAACwC,OAAA,CAAAJ,+BAAA,GAAAA,+BAAA","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import { Context, ITaskConfig, ITasksContextTriggerObject } from "../types";
2
- export declare const createTriggerTasksCrud: (context: Context, config: ITaskConfig) => ITasksContextTriggerObject;
@@ -1 +0,0 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_types","_handlerGraphql","_createTransport","_EventBridgeEventTransportPlugin","MAX_DELAY_DAYS","MAX_DELAY_SECONDS","validateDelay","input","delay","Number","isInteger","WebinyError","createTriggerTasksCrud","context","config","plugins","register","EventBridgeEventTransportPlugin","transport","createTransport","trigger","params","definition","id","inputValues","name","parent","tasks","getDefinition","title","definitionId","parentId","onBeforeTrigger","data","task","createTask","event","send","ex","deleteTask","updateTask","eventResponse","abort","getTask","NotFoundError","TaskDataStatus","PENDING","RUNNING","includes","taskStatus","status","taskLog","getLatestLog","createLog","iteration","executionName","updatedTask","ABORTED","updateLog","items","concat","message","type","ITaskLogItemType","INFO","createdOn","Date","toISOString","onAbort","exports"],"sources":["trigger.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Context,\n ITask,\n ITaskAbortParams,\n ITaskConfig,\n ITaskCreateData,\n ITaskDataInput,\n ITaskLog,\n ITaskLogItemType,\n ITasksContextTriggerObject,\n ITaskTriggerParams,\n PutEventsCommandOutput,\n TaskDataStatus\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createTransport } from \"~/transport/createTransport\";\nimport { EventBridgeEventTransportPlugin } from \"~/crud/transport/EventBridgeEventTransportPlugin\";\n\nconst MAX_DELAY_DAYS = 355;\nconst MAX_DELAY_SECONDS = MAX_DELAY_DAYS * 24 * 60 * 60;\n\ninterface ValidateDelayParams {\n input: ITaskCreateData;\n delay?: number;\n}\n\nconst validateDelay = ({ input, delay }: ValidateDelayParams): void => {\n if (!delay || delay < 0 || typeof delay !== \"number\" || Number.isInteger(delay) === false) {\n return;\n } else if (delay < MAX_DELAY_SECONDS) {\n return;\n }\n throw new WebinyError(\n `The maximum delay for a task is ${MAX_DELAY_DAYS} days.`,\n \"MAX_DELAY_ERROR\",\n {\n ...input,\n delay\n }\n );\n};\n\nexport const createTriggerTasksCrud = (\n context: Context,\n config: ITaskConfig\n): ITasksContextTriggerObject => {\n context.plugins.register(new EventBridgeEventTransportPlugin());\n\n const transport = createTransport({\n context,\n config\n });\n\n return {\n trigger: async <T = ITaskDataInput>(params: ITaskTriggerParams<T>): Promise<ITask<T>> => {\n const { definition: id, input: inputValues, name, parent, delay = 0 } = params;\n const definition = context.tasks.getDefinition(id);\n if (!definition) {\n throw new WebinyError(`Task definition was not found!`, \"TASK_DEFINITION_ERROR\", {\n id\n });\n }\n const input: ITaskCreateData<T> = {\n name: name || definition.title,\n definitionId: id,\n input: inputValues || ({} as T),\n parentId: parent?.id\n };\n if (definition.onBeforeTrigger) {\n await definition.onBeforeTrigger<T>({\n context,\n data: input\n });\n }\n validateDelay({\n input,\n delay\n });\n\n const task = await context.tasks.createTask<T>(input);\n\n let event: PutEventsCommandOutput | null = null;\n try {\n event = await transport.send(task, delay);\n\n if (!event) {\n throw new WebinyError(\n `Could not create the Event Bridge Event!`,\n \"CREATE_EVENT_BRIDGE_EVENT_ERROR\",\n {\n task\n }\n );\n }\n } catch (ex) {\n /**\n * In case of failure to create the Event Bridge Event, we need to delete the task that was meant to be created.\n * TODO maybe we can leave the task and update it as failed - with event bridge error?\n */\n await context.tasks.deleteTask(task.id);\n throw ex;\n }\n return await context.tasks.updateTask(task.id, {\n eventResponse: event\n });\n },\n abort: async (params: ITaskAbortParams): Promise<ITask> => {\n const task = await context.tasks.getTask(params.id);\n if (!task) {\n throw new NotFoundError(`Task \"${params.id}\" was not found!`);\n }\n\n const definition = context.tasks.getDefinition(task.definitionId);\n if (!definition) {\n throw new WebinyError(`Task definition was not found!`, \"TASK_DEFINITION_ERROR\", {\n id: task.id\n });\n }\n /**\n * We should only be able to abort a task which is pending or running\n */\n if (\n [TaskDataStatus.PENDING, TaskDataStatus.RUNNING].includes(task.taskStatus) === false\n ) {\n throw new WebinyError(\n `Cannot abort a task that is not pending or running!`,\n \"TASK_ABORT_ERROR\",\n {\n id: params.id,\n status: task.taskStatus\n }\n );\n }\n let taskLog: ITaskLog | null = null;\n try {\n taskLog = await context.tasks.getLatestLog(task.id);\n } catch (ex) {}\n if (!taskLog) {\n taskLog = await context.tasks.createLog(task, {\n iteration: 1,\n executionName: task.executionName\n });\n }\n try {\n const updatedTask = await context.tasks.updateTask(task.id, {\n taskStatus: TaskDataStatus.ABORTED\n });\n await context.tasks.updateLog(taskLog.id, {\n items: taskLog.items.concat([\n {\n message: params.message || \"Task aborted.\",\n type: ITaskLogItemType.INFO,\n createdOn: new Date().toISOString()\n }\n ])\n });\n /**\n * TODO: determine when to kick off the onAbort hook\n */\n if (definition.onAbort) {\n await definition.onAbort({\n context,\n task: updatedTask\n });\n }\n\n return updatedTask;\n } catch (ex) {\n throw new WebinyError(`Could not abort the task!`, \"TASK_ABORT_ERROR\", {\n id: params.id,\n message: ex.message\n });\n }\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,17 +0,0 @@
1
- import { Plugin } from "@webiny/plugins";
2
- import { Context, ITask, ITaskConfig } from "../types";
3
- import { PutEventsCommandOutput } from "@webiny/aws-sdk/client-eventbridge";
4
- export { PutEventsCommandOutput };
5
- export interface ITaskTriggerTransportPluginParams {
6
- context: Context;
7
- config: ITaskConfig;
8
- getTenant(): string;
9
- getLocale(): string;
10
- }
11
- export interface ITaskTriggerTransport {
12
- send(task: Pick<ITask, "id" | "definitionId">, delay: number): Promise<PutEventsCommandOutput>;
13
- }
14
- export declare abstract class TaskTriggerTransportPlugin extends Plugin {
15
- static readonly type: string;
16
- abstract createTransport(params: ITaskTriggerTransportPluginParams): ITaskTriggerTransport;
17
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "PutEventsCommandOutput", {
7
- enumerable: true,
8
- get: function () {
9
- return _clientEventbridge.PutEventsCommandOutput;
10
- }
11
- });
12
- exports.TaskTriggerTransportPlugin = void 0;
13
- var _plugins = require("@webiny/plugins");
14
- var _clientEventbridge = require("@webiny/aws-sdk/client-eventbridge");
15
- class TaskTriggerTransportPlugin extends _plugins.Plugin {
16
- static type = "tasks.taskTriggerTransport";
17
- }
18
- exports.TaskTriggerTransportPlugin = TaskTriggerTransportPlugin;
19
-
20
- //# sourceMappingURL=TaskTriggerTransportPlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_plugins","require","_clientEventbridge","TaskTriggerTransportPlugin","Plugin","type","exports"],"sources":["TaskTriggerTransportPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { Context, ITask, ITaskConfig } from \"~/types\";\nimport { PutEventsCommandOutput } from \"@webiny/aws-sdk/client-eventbridge\";\n\nexport { PutEventsCommandOutput };\n\nexport interface ITaskTriggerTransportPluginParams {\n context: Context;\n config: ITaskConfig;\n getTenant(): string;\n getLocale(): string;\n}\n\nexport interface ITaskTriggerTransport {\n send(task: Pick<ITask, \"id\" | \"definitionId\">, delay: number): Promise<PutEventsCommandOutput>;\n}\n\nexport abstract class TaskTriggerTransportPlugin extends Plugin {\n public static override readonly type: string = \"tasks.taskTriggerTransport\";\n\n public abstract createTransport(\n params: ITaskTriggerTransportPluginParams\n ): ITaskTriggerTransport;\n}\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,kBAAA,GAAAD,OAAA;AAeO,MAAeE,0BAA0B,SAASC,eAAM,CAAC;EAC5D,OAAgCC,IAAI,GAAW,4BAA4B;AAK/E;AAACC,OAAA,CAAAH,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -1,7 +0,0 @@
1
- import { Context, ITaskConfig } from "../types";
2
- import { ITaskTriggerTransport } from "../plugins";
3
- export interface ICreateTransport {
4
- context: Context;
5
- config: ITaskConfig;
6
- }
7
- export declare const createTransport: (params: ICreateTransport) => ITaskTriggerTransport;
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createTransport = void 0;
7
- var _plugins = require("../plugins");
8
- var _error = require("@webiny/error");
9
- const createTransport = params => {
10
- const plugins = params.context.plugins.byType(_plugins.TaskTriggerTransportPlugin.type);
11
- const [plugin] = plugins;
12
- if (!plugin) {
13
- throw new _error.WebinyError("Missing TaskTriggerTransportPlugin.", "PLUGIN_ERROR", {
14
- type: _plugins.TaskTriggerTransportPlugin.type
15
- });
16
- }
17
- const getTenant = () => {
18
- return params.context.tenancy.getCurrentTenant().id;
19
- };
20
- const getLocale = () => {
21
- return params.context.cms.getLocale().code;
22
- };
23
- return plugin.createTransport({
24
- context: params.context,
25
- config: params.config,
26
- getTenant,
27
- getLocale
28
- });
29
- };
30
- exports.createTransport = createTransport;
31
-
32
- //# sourceMappingURL=createTransport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_plugins","require","_error","createTransport","params","plugins","context","byType","TaskTriggerTransportPlugin","type","plugin","WebinyError","getTenant","tenancy","getCurrentTenant","id","getLocale","cms","code","config","exports"],"sources":["createTransport.ts"],"sourcesContent":["import { Context, ITaskConfig } from \"~/types\";\nimport { ITaskTriggerTransport, TaskTriggerTransportPlugin } from \"~/plugins\";\nimport { WebinyError } from \"@webiny/error\";\n\nexport interface ICreateTransport {\n context: Context;\n config: ITaskConfig;\n}\n\nexport const createTransport = (params: ICreateTransport): ITaskTriggerTransport => {\n const plugins = params.context.plugins.byType<TaskTriggerTransportPlugin>(\n TaskTriggerTransportPlugin.type\n );\n const [plugin] = plugins;\n if (!plugin) {\n throw new WebinyError(\"Missing TaskTriggerTransportPlugin.\", \"PLUGIN_ERROR\", {\n type: TaskTriggerTransportPlugin.type\n });\n }\n\n const getTenant = (): string => {\n return params.context.tenancy.getCurrentTenant().id;\n };\n const getLocale = (): string => {\n return params.context.cms.getLocale().code;\n };\n\n return plugin.createTransport({\n context: params.context,\n config: params.config,\n getTenant,\n getLocale\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAOO,MAAME,eAAe,GAAIC,MAAwB,IAA4B;EAChF,MAAMC,OAAO,GAAGD,MAAM,CAACE,OAAO,CAACD,OAAO,CAACE,MAAM,CACzCC,mCAA0B,CAACC,IAC/B,CAAC;EACD,MAAM,CAACC,MAAM,CAAC,GAAGL,OAAO;EACxB,IAAI,CAACK,MAAM,EAAE;IACT,MAAM,IAAIC,kBAAW,CAAC,qCAAqC,EAAE,cAAc,EAAE;MACzEF,IAAI,EAAED,mCAA0B,CAACC;IACrC,CAAC,CAAC;EACN;EAEA,MAAMG,SAAS,GAAGA,CAAA,KAAc;IAC5B,OAAOR,MAAM,CAACE,OAAO,CAACO,OAAO,CAACC,gBAAgB,CAAC,CAAC,CAACC,EAAE;EACvD,CAAC;EACD,MAAMC,SAAS,GAAGA,CAAA,KAAc;IAC5B,OAAOZ,MAAM,CAACE,OAAO,CAACW,GAAG,CAACD,SAAS,CAAC,CAAC,CAACE,IAAI;EAC9C,CAAC;EAED,OAAOR,MAAM,CAACP,eAAe,CAAC;IAC1BG,OAAO,EAAEF,MAAM,CAACE,OAAO;IACvBa,MAAM,EAAEf,MAAM,CAACe,MAAM;IACrBP,SAAS;IACTI;EACJ,CAAC,CAAC;AACN,CAAC;AAACI,OAAA,CAAAjB,eAAA,GAAAA,eAAA","ignoreList":[]}