@webiny/tasks 0.0.0-unstable.2696f9d9e8 → 0.0.0-unstable.2aaa1916d9

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 (146) hide show
  1. package/context.d.ts +2 -3
  2. package/context.js +12 -16
  3. package/context.js.map +1 -1
  4. package/crud/crud.tasks.d.ts +1 -1
  5. package/crud/crud.tasks.js +56 -3
  6. package/crud/crud.tasks.js.map +1 -1
  7. package/crud/definition.tasks.d.ts +1 -1
  8. package/crud/definition.tasks.js.map +1 -1
  9. package/crud/model.js +21 -17
  10. package/crud/model.js.map +1 -1
  11. package/crud/service.tasks.d.ts +2 -0
  12. package/crud/{trigger.tasks.js → service.tasks.js} +80 -25
  13. package/crud/service.tasks.js.map +1 -0
  14. package/crud/where.js.map +1 -1
  15. package/graphql/checkPermissions.d.ts +1 -1
  16. package/graphql/checkPermissions.js.map +1 -1
  17. package/graphql/index.d.ts +2 -3
  18. package/graphql/index.js +28 -21
  19. package/graphql/index.js.map +1 -1
  20. package/graphql/utils.d.ts +1 -1
  21. package/graphql/utils.js +4 -4
  22. package/graphql/utils.js.map +1 -1
  23. package/handler/index.d.ts +3 -6
  24. package/handler/index.js +8 -4
  25. package/handler/index.js.map +1 -1
  26. package/handler/register.js +7 -3
  27. package/handler/register.js.map +1 -1
  28. package/handler/types.d.ts +6 -0
  29. package/handler/types.js.map +1 -1
  30. package/index.d.ts +3 -4
  31. package/index.js +24 -9
  32. package/index.js.map +1 -1
  33. package/package.json +25 -31
  34. package/plugins/TaskServicePlugin.d.ts +20 -0
  35. package/plugins/TaskServicePlugin.js +17 -0
  36. package/plugins/TaskServicePlugin.js.map +1 -0
  37. package/plugins/index.d.ts +1 -0
  38. package/plugins/index.js +18 -0
  39. package/plugins/index.js.map +1 -0
  40. package/response/DatabaseResponse.d.ts +3 -3
  41. package/response/DatabaseResponse.js +24 -14
  42. package/response/DatabaseResponse.js.map +1 -1
  43. package/response/Response.d.ts +6 -4
  44. package/response/Response.js +55 -8
  45. package/response/Response.js.map +1 -1
  46. package/response/ResponseAbortedResult.d.ts +1 -1
  47. package/response/ResponseAbortedResult.js +1 -1
  48. package/response/ResponseAbortedResult.js.map +1 -1
  49. package/response/ResponseContinueResult.d.ts +8 -3
  50. package/response/ResponseContinueResult.js +4 -0
  51. package/response/ResponseContinueResult.js.map +1 -1
  52. package/response/ResponseDoneResult.d.ts +5 -3
  53. package/response/ResponseDoneResult.js +1 -0
  54. package/response/ResponseDoneResult.js.map +1 -1
  55. package/response/ResponseErrorResult.d.ts +1 -1
  56. package/response/ResponseErrorResult.js.map +1 -1
  57. package/response/TaskResponse.d.ts +5 -4
  58. package/response/TaskResponse.js +34 -9
  59. package/response/TaskResponse.js.map +1 -1
  60. package/response/abstractions/Response.d.ts +10 -8
  61. package/response/abstractions/Response.js.map +1 -1
  62. package/response/abstractions/ResponseAbortedResult.d.ts +2 -2
  63. package/response/abstractions/ResponseAbortedResult.js.map +1 -1
  64. package/response/abstractions/ResponseBaseResult.d.ts +1 -1
  65. package/response/abstractions/ResponseBaseResult.js.map +1 -1
  66. package/response/abstractions/ResponseContinueResult.d.ts +4 -2
  67. package/response/abstractions/ResponseContinueResult.js.map +1 -1
  68. package/response/abstractions/ResponseDoneResult.d.ts +6 -4
  69. package/response/abstractions/ResponseDoneResult.js.map +1 -1
  70. package/response/abstractions/ResponseErrorResult.d.ts +6 -5
  71. package/response/abstractions/ResponseErrorResult.js.map +1 -1
  72. package/response/abstractions/TaskResponse.d.ts +16 -10
  73. package/response/abstractions/TaskResponse.js.map +1 -1
  74. package/response/abstractions/index.js.map +1 -1
  75. package/response/index.js.map +1 -1
  76. package/runner/TaskControl.d.ts +5 -4
  77. package/runner/TaskControl.js +108 -28
  78. package/runner/TaskControl.js.map +1 -1
  79. package/runner/TaskEventValidation.d.ts +2 -2
  80. package/runner/TaskEventValidation.js.map +1 -1
  81. package/runner/TaskManager.d.ts +6 -5
  82. package/runner/TaskManager.js +57 -19
  83. package/runner/TaskManager.js.map +1 -1
  84. package/runner/TaskManagerStore.d.ts +33 -12
  85. package/runner/TaskManagerStore.js +105 -28
  86. package/runner/TaskManagerStore.js.map +1 -1
  87. package/runner/TaskRunner.d.ts +11 -15
  88. package/runner/TaskRunner.js +49 -19
  89. package/runner/TaskRunner.js.map +1 -1
  90. package/runner/abstractions/TaskControl.d.ts +4 -4
  91. package/runner/abstractions/TaskControl.js.map +1 -1
  92. package/runner/abstractions/TaskEventValidation.d.ts +2 -2
  93. package/runner/abstractions/TaskEventValidation.js.map +1 -1
  94. package/runner/abstractions/TaskManager.d.ts +3 -3
  95. package/runner/abstractions/TaskManager.js.map +1 -1
  96. package/runner/abstractions/TaskManagerStore.d.ts +70 -17
  97. package/runner/abstractions/TaskManagerStore.js.map +1 -1
  98. package/runner/abstractions/TaskRunner.d.ts +9 -10
  99. package/runner/abstractions/TaskRunner.js.map +1 -1
  100. package/runner/abstractions/index.js.map +1 -1
  101. package/runner/index.js.map +1 -1
  102. package/service/EventBridgeEventTransportPlugin.d.ts +17 -0
  103. package/service/EventBridgeEventTransportPlugin.js +60 -0
  104. package/service/EventBridgeEventTransportPlugin.js.map +1 -0
  105. package/service/StepFunctionServicePlugin.d.ts +26 -0
  106. package/service/StepFunctionServicePlugin.js +88 -0
  107. package/service/StepFunctionServicePlugin.js.map +1 -0
  108. package/service/createService.d.ts +6 -0
  109. package/service/createService.js +30 -0
  110. package/service/createService.js.map +1 -0
  111. package/service/index.d.ts +4 -0
  112. package/service/index.js +31 -0
  113. package/service/index.js.map +1 -0
  114. package/task/index.js.map +1 -1
  115. package/task/input.js.map +1 -1
  116. package/task/plugin.d.ts +18 -10
  117. package/task/plugin.js +31 -1
  118. package/task/plugin.js.map +1 -1
  119. package/tasks/testingRunTask.d.ts +1 -0
  120. package/tasks/testingRunTask.js +21 -0
  121. package/tasks/testingRunTask.js.map +1 -0
  122. package/types.d.ts +156 -74
  123. package/types.js +20 -11
  124. package/types.js.map +1 -1
  125. package/utils/ObjectUpdater.d.ts +8 -0
  126. package/utils/ObjectUpdater.js +46 -0
  127. package/utils/ObjectUpdater.js.map +1 -0
  128. package/utils/getErrorProperties.d.ts +2 -0
  129. package/utils/getErrorProperties.js +15 -0
  130. package/utils/getErrorProperties.js.map +1 -0
  131. package/utils/getObjectProperties.d.ts +8 -0
  132. package/{runner/utils → utils}/getObjectProperties.js +4 -0
  133. package/utils/getObjectProperties.js.map +1 -0
  134. package/utils/index.d.ts +3 -0
  135. package/utils/index.js +40 -0
  136. package/utils/index.js.map +1 -0
  137. package/crud/createEventBridgeEvent.d.ts +0 -7
  138. package/crud/createEventBridgeEvent.js +0 -67
  139. package/crud/createEventBridgeEvent.js.map +0 -1
  140. package/crud/trigger.tasks.d.ts +0 -2
  141. package/crud/trigger.tasks.js.map +0 -1
  142. package/runner/utils/getErrorProperties.d.ts +0 -5
  143. package/runner/utils/getErrorProperties.js +0 -18
  144. package/runner/utils/getErrorProperties.js.map +0 -1
  145. package/runner/utils/getObjectProperties.d.ts +0 -4
  146. package/runner/utils/getObjectProperties.js.map +0 -1
package/context.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import { Plugin } from "@webiny/plugins";
2
- import { ITaskConfig } from "./types";
3
- export declare const createTasksContext: (input?: ITaskConfig) => Plugin[];
1
+ import type { Plugin } from "@webiny/plugins";
2
+ export declare const createBackgroundTaskContext: () => Plugin[];
package/context.js CHANGED
@@ -3,35 +3,31 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createTasksContext = void 0;
6
+ exports.createBackgroundTaskContext = void 0;
7
7
  var _api = require("@webiny/api");
8
8
  var _model = require("./crud/model");
9
9
  var _definition = require("./crud/definition.tasks");
10
- var _trigger = require("./crud/trigger.tasks");
10
+ var _service = require("./crud/service.tasks");
11
11
  var _crud = require("./crud/crud.tasks");
12
- const createConfig = config => {
13
- return {
14
- config: {
15
- eventBusName: config?.eventBusName || String(process.env.EVENT_BUS)
16
- }
17
- };
18
- };
19
- const createTasksCrud = input => {
20
- const config = createConfig(input);
12
+ var _testingRunTask = require("./tasks/testingRunTask");
13
+ var _service2 = require("./service");
14
+ const createTasksCrud = () => {
21
15
  const plugin = new _api.ContextPlugin(async context => {
22
16
  context.tasks = {
23
- ...config,
24
17
  ...(0, _definition.createDefinitionCrud)(context),
25
18
  ...(0, _crud.createTaskCrud)(context),
26
- ...(0, _trigger.createTriggerTasksCrud)(context, config.config)
19
+ ...(0, _service.createServiceCrud)(context)
27
20
  };
28
21
  });
29
22
  plugin.name = "tasks.context";
30
23
  return plugin;
31
24
  };
32
- const createTasksContext = input => {
33
- return [...(0, _model.createTaskModel)(), createTasksCrud(input)];
25
+ const createTasksContext = () => {
26
+ return [...(0, _service2.createServicePlugins)(), ...(0, _model.createTaskModel)(), createTasksCrud()];
27
+ };
28
+ const createBackgroundTaskContext = () => {
29
+ return [(0, _testingRunTask.createTestingRunTask)(), ...createTasksContext()];
34
30
  };
35
- exports.createTasksContext = createTasksContext;
31
+ exports.createBackgroundTaskContext = createBackgroundTaskContext;
36
32
 
37
33
  //# sourceMappingURL=context.js.map
package/context.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_api","require","_model","_definition","_trigger","_crud","createConfig","config","eventBusName","String","process","env","EVENT_BUS","createTasksCrud","input","plugin","ContextPlugin","context","tasks","createDefinitionCrud","createTaskCrud","createTriggerTasksCrud","name","createTasksContext","createTaskModel","exports"],"sources":["context.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { Context, ITaskConfig, ITasksContextConfigObject } from \"~/types\";\nimport { createTaskModel } from \"./crud/model\";\nimport { createDefinitionCrud } from \"./crud/definition.tasks\";\nimport { createTriggerTasksCrud } from \"~/crud/trigger.tasks\";\nimport { createTaskCrud } from \"./crud/crud.tasks\";\n\nconst createConfig = (config?: ITaskConfig): ITasksContextConfigObject => {\n return {\n config: {\n eventBusName: config?.eventBusName || String(process.env.EVENT_BUS)\n }\n };\n};\n\nconst createTasksCrud = (input?: ITaskConfig) => {\n const config = createConfig(input);\n const plugin = new ContextPlugin<Context>(async context => {\n context.tasks = {\n ...config,\n ...createDefinitionCrud(context),\n ...createTaskCrud(context),\n ...createTriggerTasksCrud(context, config.config)\n };\n });\n\n plugin.name = \"tasks.context\";\n\n return plugin;\n};\n\nexport const createTasksContext = (input?: ITaskConfig): Plugin[] => {\n return [...createTaskModel(), createTasksCrud(input)];\n};\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAEA,MAAMK,YAAY,GAAIC,MAAoB,IAAgC;EACtE,OAAO;IACHA,MAAM,EAAE;MACJC,YAAY,EAAED,MAAM,EAAEC,YAAY,IAAIC,MAAM,CAACC,OAAO,CAACC,GAAG,CAACC,SAAS;IACtE;EACJ,CAAC;AACL,CAAC;AAED,MAAMC,eAAe,GAAIC,KAAmB,IAAK;EAC7C,MAAMP,MAAM,GAAGD,YAAY,CAACQ,KAAK,CAAC;EAClC,MAAMC,MAAM,GAAG,IAAIC,kBAAa,CAAU,MAAMC,OAAO,IAAI;IACvDA,OAAO,CAACC,KAAK,GAAG;MACZ,GAAGX,MAAM;MACT,GAAG,IAAAY,gCAAoB,EAACF,OAAO,CAAC;MAChC,GAAG,IAAAG,oBAAc,EAACH,OAAO,CAAC;MAC1B,GAAG,IAAAI,+BAAsB,EAACJ,OAAO,EAAEV,MAAM,CAACA,MAAM;IACpD,CAAC;EACL,CAAC,CAAC;EAEFQ,MAAM,CAACO,IAAI,GAAG,eAAe;EAE7B,OAAOP,MAAM;AACjB,CAAC;AAEM,MAAMQ,kBAAkB,GAAIT,KAAmB,IAAe;EACjE,OAAO,CAAC,GAAG,IAAAU,sBAAe,EAAC,CAAC,EAAEX,eAAe,CAACC,KAAK,CAAC,CAAC;AACzD,CAAC;AAACW,OAAA,CAAAF,kBAAA,GAAAA,kBAAA"}
1
+ {"version":3,"names":["_api","require","_model","_definition","_service","_crud","_testingRunTask","_service2","createTasksCrud","plugin","ContextPlugin","context","tasks","createDefinitionCrud","createTaskCrud","createServiceCrud","name","createTasksContext","createServicePlugins","createTaskModel","createBackgroundTaskContext","createTestingRunTask","exports"],"sources":["context.ts"],"sourcesContent":["import type { Plugin } from \"@webiny/plugins\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport type { Context } from \"~/types\";\nimport { createTaskModel } from \"./crud/model\";\nimport { createDefinitionCrud } from \"./crud/definition.tasks\";\nimport { createServiceCrud } from \"~/crud/service.tasks\";\nimport { createTaskCrud } from \"./crud/crud.tasks\";\nimport { createTestingRunTask } from \"~/tasks/testingRunTask\";\nimport { createServicePlugins } from \"~/service\";\n\nconst createTasksCrud = () => {\n const plugin = new ContextPlugin<Context>(async context => {\n context.tasks = {\n ...createDefinitionCrud(context),\n ...createTaskCrud(context),\n ...createServiceCrud(context)\n };\n });\n\n plugin.name = \"tasks.context\";\n\n return plugin;\n};\n\nconst createTasksContext = (): Plugin[] => {\n return [...createServicePlugins(), ...createTaskModel(), createTasksCrud()];\n};\n\nexport const createBackgroundTaskContext = (): Plugin[] => {\n return [createTestingRunTask(), ...createTasksContext()];\n};\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAEA,MAAMO,eAAe,GAAGA,CAAA,KAAM;EAC1B,MAAMC,MAAM,GAAG,IAAIC,kBAAa,CAAU,MAAMC,OAAO,IAAI;IACvDA,OAAO,CAACC,KAAK,GAAG;MACZ,GAAG,IAAAC,gCAAoB,EAACF,OAAO,CAAC;MAChC,GAAG,IAAAG,oBAAc,EAACH,OAAO,CAAC;MAC1B,GAAG,IAAAI,0BAAiB,EAACJ,OAAO;IAChC,CAAC;EACL,CAAC,CAAC;EAEFF,MAAM,CAACO,IAAI,GAAG,eAAe;EAE7B,OAAOP,MAAM;AACjB,CAAC;AAED,MAAMQ,kBAAkB,GAAGA,CAAA,KAAgB;EACvC,OAAO,CAAC,GAAG,IAAAC,8BAAoB,EAAC,CAAC,EAAE,GAAG,IAAAC,sBAAe,EAAC,CAAC,EAAEX,eAAe,CAAC,CAAC,CAAC;AAC/E,CAAC;AAEM,MAAMY,2BAA2B,GAAGA,CAAA,KAAgB;EACvD,OAAO,CAAC,IAAAC,oCAAoB,EAAC,CAAC,EAAE,GAAGJ,kBAAkB,CAAC,CAAC,CAAC;AAC5D,CAAC;AAACK,OAAA,CAAAF,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { Context, ITasksContextCrudObject } from "../types";
1
+ import type { Context, ITasksContextCrudObject } from "../types";
2
2
  export declare const createTaskCrud: (context: Context) => ITasksContextCrudObject;
@@ -11,8 +11,13 @@ var _model = require("./model");
11
11
  var _handlerGraphql = require("@webiny/handler-graphql");
12
12
  var _pubsub = require("@webiny/pubsub");
13
13
  var _where = require("./where");
14
+ var _utils = require("@webiny/utils");
15
+ var _zod = _interopRequireDefault(require("zod"));
14
16
  const createRevisionId = id => {
15
- return `${id}#0001`;
17
+ const {
18
+ id: entryId
19
+ } = (0, _utils.parseIdentifier)(id);
20
+ return `${entryId}#0001`;
16
21
  };
17
22
  const convertToTask = entry => {
18
23
  return {
@@ -23,12 +28,14 @@ const convertToTask = entry => {
23
28
  name: entry.values.name,
24
29
  definitionId: entry.values.definitionId,
25
30
  input: entry.values.input,
31
+ output: entry.values.output,
26
32
  taskStatus: entry.values.taskStatus,
27
33
  executionName: entry.values.executionName || "",
28
34
  eventResponse: entry.values.eventResponse,
29
35
  startedOn: entry.values.startedOn,
30
36
  finishedOn: entry.values.finishedOn,
31
- iterations: entry.values.iterations
37
+ iterations: entry.values.iterations,
38
+ parentId: entry.values.parentId
32
39
  };
33
40
  };
34
41
  const convertToLog = entry => {
@@ -42,6 +49,39 @@ const convertToLog = entry => {
42
49
  items: entry.values.items || []
43
50
  };
44
51
  };
52
+ const getZodSchema = schema => {
53
+ if (!schema) {
54
+ return _zod.default.object({}).passthrough();
55
+ } else if (schema instanceof _zod.default.ZodObject) {
56
+ return schema.passthrough();
57
+ } else if (schema instanceof _zod.default.Schema) {
58
+ return schema;
59
+ }
60
+ return _zod.default.object(schema).passthrough();
61
+ };
62
+ const validateTaskInput = async params => {
63
+ const {
64
+ definition,
65
+ data,
66
+ context
67
+ } = params;
68
+ if (!definition.createInputValidation) {
69
+ return;
70
+ }
71
+ const schema = definition.createInputValidation({
72
+ context,
73
+ validator: _zod.default
74
+ });
75
+ /**
76
+ * If the schema is not an object, we need to wrap it with the `object` function.
77
+ */
78
+ const validate = getZodSchema(schema);
79
+ const result = await validate.safeParseAsync(data.input);
80
+ if (result.success) {
81
+ return;
82
+ }
83
+ throw (0, _utils.createZodError)(result.error);
84
+ };
45
85
  const createTaskCrud = context => {
46
86
  const onTaskBeforeCreate = (0, _pubsub.createTopic)("tasks.onBeforeCreate");
47
87
  const onTaskAfterCreate = (0, _pubsub.createTopic)("tasks.onAfterCreate");
@@ -105,6 +145,11 @@ const createTaskCrud = context => {
105
145
  id: data.definitionId
106
146
  });
107
147
  }
148
+ await validateTaskInput({
149
+ context,
150
+ definition,
151
+ data
152
+ });
108
153
  const entry = await context.security.withoutAuthorization(async () => {
109
154
  const model = await getTaskModel();
110
155
  return await context.cms.createEntry(model, {
@@ -125,7 +170,7 @@ const createTaskCrud = context => {
125
170
  });
126
171
  return convertToTask(entry);
127
172
  };
128
- const deleteTask = id => {
173
+ const deleteTask = async id => {
129
174
  return context.security.withoutAuthorization(async () => {
130
175
  const model = await getTaskModel();
131
176
  await context.cms.deleteEntry(model, createRevisionId(id));
@@ -149,6 +194,13 @@ const createTaskCrud = context => {
149
194
  });
150
195
  return convertToLog(entry);
151
196
  };
197
+ const deleteLog = async id => {
198
+ return context.security.withoutAuthorization(async () => {
199
+ const model = await getLogModel();
200
+ await context.cms.deleteEntry(model, id);
201
+ return true;
202
+ });
203
+ };
152
204
  const getLog = async id => {
153
205
  try {
154
206
  const entry = await context.security.withoutAuthorization(async () => {
@@ -208,6 +260,7 @@ const createTaskCrud = context => {
208
260
  deleteTask,
209
261
  createLog,
210
262
  updateLog,
263
+ deleteLog,
211
264
  getLog,
212
265
  listLogs,
213
266
  getLatestLog,
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_types","_model","_handlerGraphql","_pubsub","_where","createRevisionId","id","convertToTask","entry","entryId","createdOn","savedOn","createdBy","name","values","definitionId","input","taskStatus","executionName","eventResponse","startedOn","finishedOn","iterations","convertToLog","task","iteration","items","createTaskCrud","context","onTaskBeforeCreate","createTopic","onTaskAfterCreate","onTaskBeforeUpdate","onTaskAfterUpdate","onTaskBeforeDelete","onTaskAfterDelete","getTaskModel","security","withoutAuthorization","model","cms","getModel","WEBINY_TASK_MODEL_ID","WebinyError","getLogModel","WEBINY_TASK_LOG_MODEL_ID","getTask","getEntryById","ex","NotFoundError","listTasks","params","meta","listLatestEntries","where","remapWhere","map","item","createTask","data","definition","tasks","getDefinition","createEntry","TaskDataStatus","PENDING","updateTask","updateEntry","Date","toISOString","deleteTask","deleteEntry","createLog","updateLog","getLog","getLatestLog","taskId","sort","limit","listLogs","exports"],"sources":["crud.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Context,\n IListTaskLogParams,\n IListTaskParams,\n ITaskCreateData,\n ITaskData,\n ITaskLog,\n ITaskLogCreateInput,\n ITaskLogUpdateInput,\n ITasksContextCrudObject,\n ITaskUpdateData,\n OnTaskAfterCreateTopicParams,\n OnTaskAfterDeleteTopicParams,\n OnTaskAfterUpdateTopicParams,\n OnTaskBeforeCreateTopicParams,\n OnTaskBeforeDeleteTopicParams,\n OnTaskBeforeUpdateTopicParams,\n TaskDataStatus\n} from \"~/types\";\nimport { WEBINY_TASK_LOG_MODEL_ID, WEBINY_TASK_MODEL_ID } from \"./model\";\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { remapWhere } from \"./where\";\n\nconst createRevisionId = (id: string) => {\n return `${id}#0001`;\n};\n\nconst convertToTask = (entry: CmsEntry<ITaskData>): ITaskData => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n savedOn: entry.savedOn,\n createdBy: entry.createdBy,\n name: entry.values.name,\n definitionId: entry.values.definitionId,\n input: entry.values.input,\n taskStatus: entry.values.taskStatus,\n executionName: entry.values.executionName || \"\",\n eventResponse: entry.values.eventResponse,\n startedOn: entry.values.startedOn,\n finishedOn: entry.values.finishedOn,\n iterations: entry.values.iterations\n };\n};\n\nconst convertToLog = (entry: CmsEntry<ITaskLog>): ITaskLog => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n createdBy: entry.createdBy,\n executionName: entry.values.executionName,\n task: entry.values.task,\n iteration: entry.values.iteration,\n items: entry.values.items || []\n };\n};\n\nexport const createTaskCrud = (context: Context): ITasksContextCrudObject => {\n const onTaskBeforeCreate = createTopic<OnTaskBeforeCreateTopicParams>(\"tasks.onBeforeCreate\");\n const onTaskAfterCreate = createTopic<OnTaskAfterCreateTopicParams>(\"tasks.onAfterCreate\");\n const onTaskBeforeUpdate = createTopic<OnTaskBeforeUpdateTopicParams>(\"tasks.onBeforeUpdate\");\n const onTaskAfterUpdate = createTopic<OnTaskAfterUpdateTopicParams>(\"tasks.onAfterUpdate\");\n const onTaskBeforeDelete = createTopic<OnTaskBeforeDeleteTopicParams>(\"tasks.onBeforeDelete\");\n const onTaskAfterDelete = createTopic<OnTaskAfterDeleteTopicParams>(\"tasks.onAfterDelete\");\n\n const getTaskModel = async (): Promise<CmsModel> => {\n return await context.security.withoutAuthorization(async () => {\n const model = await context.cms.getModel(WEBINY_TASK_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(`There is no model \"${WEBINY_TASK_MODEL_ID}\".`);\n });\n };\n\n const getLogModel = async (): Promise<CmsModel> => {\n return await context.security.withoutAuthorization(async () => {\n const model = await context.cms.getModel(WEBINY_TASK_LOG_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(`There is no model \"${WEBINY_TASK_LOG_MODEL_ID}\".`);\n });\n };\n\n const getTask = async (id: string) => {\n let entry: CmsEntry;\n try {\n entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.getEntryById(model, createRevisionId(id));\n });\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n if (!entry) {\n return null;\n }\n\n return convertToTask(entry as unknown as CmsEntry<ITaskData>);\n };\n\n const listTasks = async (params?: IListTaskParams) => {\n const [items, meta] = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.listLatestEntries<ITaskData>(model, {\n ...params,\n where: remapWhere(params?.where)\n });\n });\n\n return {\n items: items.map(item => convertToTask(item)),\n meta\n };\n };\n\n const createTask = async (data: ITaskCreateData) => {\n const definition = context.tasks.getDefinition(data.definitionId);\n if (!definition) {\n throw new WebinyError(`There is no task definition.`, \"TASK_DEFINITION_ERROR\", {\n id: data.definitionId\n });\n }\n\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.createEntry(model, {\n ...data,\n iterations: 0,\n taskStatus: TaskDataStatus.PENDING\n });\n });\n return convertToTask(entry as unknown as CmsEntry<ITaskData>);\n };\n\n const updateTask = async (id: string, data: ITaskUpdateData) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.updateEntry(model, createRevisionId(id), {\n ...data,\n savedOn: new Date().toISOString()\n });\n });\n return convertToTask(entry as unknown as CmsEntry<ITaskData>);\n };\n\n const deleteTask = (id: string) => {\n return context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n await context.cms.deleteEntry(model, createRevisionId(id));\n return true;\n });\n };\n\n const createLog = async (task: Pick<ITaskData, \"id\">, data: ITaskLogCreateInput) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n\n return await context.cms.createEntry(model, {\n ...data,\n task: task.id\n });\n });\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const updateLog = async (id: string, data: ITaskLogUpdateInput) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n\n return await context.cms.updateEntry(model, createRevisionId(id), data);\n });\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const getLog = async (id: string): Promise<ITaskLog | null> => {\n try {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n return await context.cms.getEntryById(model, id);\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n };\n\n const getLatestLog = async (taskId: string): Promise<ITaskLog> => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n const [items] = await context.cms.listLatestEntries<ITaskLog>(model, {\n where: {\n task: taskId\n },\n sort: [\"createdOn_DESC\"],\n limit: 1\n });\n const [item] = items;\n if (!item) {\n throw new NotFoundError(`No existing latest log found for task \"${taskId}\".`);\n }\n return item;\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const listLogs = async (params: IListTaskLogParams) => {\n const [items, meta] = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n return await context.cms.listLatestEntries<ITaskLog>(model, {\n ...params,\n where: remapWhere(params.where)\n });\n });\n\n return {\n items: items.map(item => convertToLog(item)),\n meta\n };\n };\n\n return {\n onTaskBeforeCreate,\n onTaskAfterCreate,\n onTaskBeforeUpdate,\n onTaskAfterUpdate,\n onTaskBeforeDelete,\n onTaskAfterDelete,\n getTask,\n listTasks,\n createTask,\n updateTask,\n deleteTask,\n createLog,\n updateLog,\n getLog,\n listLogs,\n getLatestLog,\n getTaskModel,\n getLogModel\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_types","_model","_handlerGraphql","_pubsub","_where","_utils","_zod","createRevisionId","id","entryId","parseIdentifier","convertToTask","entry","createdOn","savedOn","createdBy","name","values","definitionId","input","output","taskStatus","executionName","eventResponse","startedOn","finishedOn","iterations","parentId","convertToLog","task","iteration","items","getZodSchema","schema","zod","object","passthrough","ZodObject","Schema","validateTaskInput","params","definition","data","context","createInputValidation","validator","validate","result","safeParseAsync","success","createZodError","error","createTaskCrud","onTaskBeforeCreate","createTopic","onTaskAfterCreate","onTaskBeforeUpdate","onTaskAfterUpdate","onTaskBeforeDelete","onTaskAfterDelete","getTaskModel","security","withoutAuthorization","model","cms","getModel","WEBINY_TASK_MODEL_ID","WebinyError","getLogModel","WEBINY_TASK_LOG_MODEL_ID","getTask","getEntryById","ex","NotFoundError","listTasks","meta","listLatestEntries","where","remapWhere","map","item","createTask","tasks","getDefinition","createEntry","TaskDataStatus","PENDING","updateTask","updateEntry","Date","toISOString","deleteTask","deleteEntry","createLog","updateLog","deleteLog","getLog","getLatestLog","taskId","sort","limit","listLogs","exports"],"sources":["crud.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n Context,\n IListTaskLogParams,\n IListTaskParams,\n ITask,\n ITaskCreateData,\n ITaskDataInput,\n ITaskDefinition,\n ITaskLog,\n ITaskLogCreateInput,\n ITaskLogUpdateInput,\n ITaskResponseDoneResultOutput,\n ITasksContextCrudObject,\n ITaskUpdateData,\n OnTaskAfterCreateTopicParams,\n OnTaskAfterDeleteTopicParams,\n OnTaskAfterUpdateTopicParams,\n OnTaskBeforeCreateTopicParams,\n OnTaskBeforeDeleteTopicParams,\n OnTaskBeforeUpdateTopicParams\n} from \"~/types\";\nimport { TaskDataStatus } from \"~/types\";\nimport { WEBINY_TASK_LOG_MODEL_ID, WEBINY_TASK_MODEL_ID } from \"./model\";\nimport type { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { remapWhere } from \"./where\";\nimport { createZodError, parseIdentifier } from \"@webiny/utils\";\nimport zod from \"zod\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nconst createRevisionId = (id: string) => {\n const { id: entryId } = parseIdentifier(id);\n return `${entryId}#0001`;\n};\n\nconst convertToTask = <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n>(\n entry: CmsEntry<ITask<T, O>>\n): ITask<T, O> => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n savedOn: entry.savedOn,\n createdBy: entry.createdBy,\n name: entry.values.name,\n definitionId: entry.values.definitionId,\n input: entry.values.input,\n output: entry.values.output,\n taskStatus: entry.values.taskStatus,\n executionName: entry.values.executionName || \"\",\n eventResponse: entry.values.eventResponse,\n startedOn: entry.values.startedOn,\n finishedOn: entry.values.finishedOn,\n iterations: entry.values.iterations,\n parentId: entry.values.parentId\n };\n};\n\nconst convertToLog = (entry: CmsEntry<ITaskLog>): ITaskLog => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n createdBy: entry.createdBy,\n executionName: entry.values.executionName,\n task: entry.values.task,\n iteration: entry.values.iteration,\n items: entry.values.items || []\n };\n};\n\ninterface IValidateParams {\n definition: Pick<ITaskDefinition, \"createInputValidation\">;\n data: Pick<ITaskCreateData, \"input\">;\n context: Context;\n}\n\nconst getZodSchema = (schema: GenericRecord<string, zod.Schema> | zod.Schema) => {\n if (!schema) {\n return zod.object({}).passthrough();\n } else if (schema instanceof zod.ZodObject) {\n return schema.passthrough();\n } else if (schema instanceof zod.Schema) {\n return schema;\n }\n return zod.object(schema).passthrough();\n};\n\nconst validateTaskInput = async (params: IValidateParams) => {\n const { definition, data, context } = params;\n if (!definition.createInputValidation) {\n return;\n }\n const schema = definition.createInputValidation({\n context,\n validator: zod\n });\n /**\n * If the schema is not an object, we need to wrap it with the `object` function.\n */\n const validate = getZodSchema(schema);\n\n const result = await validate.safeParseAsync(data.input);\n if (result.success) {\n return;\n }\n throw createZodError(result.error);\n};\n\nexport const createTaskCrud = (context: Context): ITasksContextCrudObject => {\n const onTaskBeforeCreate = createTopic<OnTaskBeforeCreateTopicParams>(\"tasks.onBeforeCreate\");\n const onTaskAfterCreate = createTopic<OnTaskAfterCreateTopicParams>(\"tasks.onAfterCreate\");\n const onTaskBeforeUpdate = createTopic<OnTaskBeforeUpdateTopicParams>(\"tasks.onBeforeUpdate\");\n const onTaskAfterUpdate = createTopic<OnTaskAfterUpdateTopicParams>(\"tasks.onAfterUpdate\");\n const onTaskBeforeDelete = createTopic<OnTaskBeforeDeleteTopicParams>(\"tasks.onBeforeDelete\");\n const onTaskAfterDelete = createTopic<OnTaskAfterDeleteTopicParams>(\"tasks.onAfterDelete\");\n\n const getTaskModel = async (): Promise<CmsModel> => {\n return await context.security.withoutAuthorization(async () => {\n const model = await context.cms.getModel(WEBINY_TASK_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(`There is no model \"${WEBINY_TASK_MODEL_ID}\".`);\n });\n };\n\n const getLogModel = async (): Promise<CmsModel> => {\n return await context.security.withoutAuthorization(async () => {\n const model = await context.cms.getModel(WEBINY_TASK_LOG_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(`There is no model \"${WEBINY_TASK_LOG_MODEL_ID}\".`);\n });\n };\n\n const getTask = async <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string\n ) => {\n let entry: CmsEntry;\n try {\n entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.getEntryById(model, createRevisionId(id));\n });\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n\n if (!entry) {\n return null;\n }\n\n return convertToTask(entry as unknown as CmsEntry<ITask<T, O>>);\n };\n\n const listTasks = async <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params?: IListTaskParams\n ) => {\n const [items, meta] = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.listLatestEntries<ITask<T, O>>(model, {\n ...params,\n where: remapWhere(params?.where)\n });\n });\n\n return {\n items: items.map(item => convertToTask<T, O>(item)),\n meta\n };\n };\n\n const createTask = async (data: ITaskCreateData) => {\n const definition = context.tasks.getDefinition(data.definitionId);\n if (!definition) {\n throw new WebinyError(`There is no task definition.`, \"TASK_DEFINITION_ERROR\", {\n id: data.definitionId\n });\n }\n\n await validateTaskInput({\n context,\n definition,\n data\n });\n\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.createEntry(model, {\n ...data,\n iterations: 0,\n taskStatus: TaskDataStatus.PENDING\n });\n });\n\n return convertToTask(entry as unknown as CmsEntry<ITask>);\n };\n\n const updateTask = async <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string,\n data: ITaskUpdateData<T, O>\n ) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.updateEntry(model, createRevisionId(id), {\n ...data,\n savedOn: new Date().toISOString()\n });\n });\n return convertToTask<T, O>(entry as unknown as CmsEntry<ITask<T, O>>);\n };\n\n const deleteTask = async (id: string) => {\n return context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n await context.cms.deleteEntry(model, createRevisionId(id));\n return true;\n });\n };\n\n const createLog = async (task: Pick<ITask, \"id\">, data: ITaskLogCreateInput) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n\n return await context.cms.createEntry(model, {\n ...data,\n task: task.id\n });\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const updateLog = async (id: string, data: ITaskLogUpdateInput) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n\n return await context.cms.updateEntry(model, createRevisionId(id), data);\n });\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const deleteLog = async (id: string) => {\n return context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n await context.cms.deleteEntry(model, id);\n return true;\n });\n };\n\n const getLog = async (id: string): Promise<ITaskLog | null> => {\n try {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n return await context.cms.getEntryById(model, id);\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n };\n\n const getLatestLog = async (taskId: string): Promise<ITaskLog> => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n const [items] = await context.cms.listLatestEntries<ITaskLog>(model, {\n where: {\n task: taskId\n },\n sort: [\"createdOn_DESC\"],\n limit: 1\n });\n const [item] = items;\n if (!item) {\n throw new NotFoundError(`No existing latest log found for task \"${taskId}\".`);\n }\n return item;\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const listLogs = async (params: IListTaskLogParams) => {\n const [items, meta] = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n return await context.cms.listLatestEntries<ITaskLog>(model, {\n ...params,\n where: remapWhere(params.where)\n });\n });\n\n return {\n items: items.map(item => convertToLog(item)),\n meta\n };\n };\n\n return {\n onTaskBeforeCreate,\n onTaskAfterCreate,\n onTaskBeforeUpdate,\n onTaskAfterUpdate,\n onTaskBeforeDelete,\n onTaskAfterDelete,\n getTask,\n listTasks,\n createTask,\n updateTask,\n deleteTask,\n createLog,\n updateLog,\n deleteLog,\n getLog,\n listLogs,\n getLatestLog,\n getTaskModel,\n getLogModel\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { Context, ITasksContextDefinitionObject } from "../types";
1
+ import type { Context, ITasksContextDefinitionObject } from "../types";
2
2
  export declare const createDefinitionCrud: (context: Context) => ITasksContextDefinitionObject;
@@ -1 +1 @@
1
- {"version":3,"names":["_task","require","getTaskDefinitionPlugins","context","plugins","byType","TaskDefinitionPlugin","type","createDefinitionCrud","getDefinition","id","plugin","getTask","listDefinitions","map","exports"],"sources":["definition.tasks.ts"],"sourcesContent":["import { Context, ITasksContextDefinitionObject } from \"~/types\";\nimport { TaskDefinitionPlugin } from \"~/task\";\n\nconst getTaskDefinitionPlugins = (context: Context) => {\n return context.plugins.byType<TaskDefinitionPlugin>(TaskDefinitionPlugin.type);\n};\n\nexport const createDefinitionCrud = (context: Context): ITasksContextDefinitionObject => {\n return {\n getDefinition: (id: string) => {\n const plugins = getTaskDefinitionPlugins(context);\n\n for (const plugin of plugins) {\n if (plugin.getTask().id === id) {\n return plugin.getTask();\n }\n }\n return null;\n },\n listDefinitions: () => {\n return getTaskDefinitionPlugins(context).map(plugin => plugin.getTask());\n }\n };\n};\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,wBAAwB,GAAIC,OAAgB,IAAK;EACnD,OAAOA,OAAO,CAACC,OAAO,CAACC,MAAM,CAAuBC,0BAAoB,CAACC,IAAI,CAAC;AAClF,CAAC;AAEM,MAAMC,oBAAoB,GAAIL,OAAgB,IAAoC;EACrF,OAAO;IACHM,aAAa,EAAGC,EAAU,IAAK;MAC3B,MAAMN,OAAO,GAAGF,wBAAwB,CAACC,OAAO,CAAC;MAEjD,KAAK,MAAMQ,MAAM,IAAIP,OAAO,EAAE;QAC1B,IAAIO,MAAM,CAACC,OAAO,CAAC,CAAC,CAACF,EAAE,KAAKA,EAAE,EAAE;UAC5B,OAAOC,MAAM,CAACC,OAAO,CAAC,CAAC;QAC3B;MACJ;MACA,OAAO,IAAI;IACf,CAAC;IACDC,eAAe,EAAEA,CAAA,KAAM;MACnB,OAAOX,wBAAwB,CAACC,OAAO,CAAC,CAACW,GAAG,CAACH,MAAM,IAAIA,MAAM,CAACC,OAAO,CAAC,CAAC,CAAC;IAC5E;EACJ,CAAC;AACL,CAAC;AAACG,OAAA,CAAAP,oBAAA,GAAAA,oBAAA"}
1
+ {"version":3,"names":["_task","require","getTaskDefinitionPlugins","context","plugins","byType","TaskDefinitionPlugin","type","createDefinitionCrud","getDefinition","id","plugin","getTask","listDefinitions","map","exports"],"sources":["definition.tasks.ts"],"sourcesContent":["import type { Context, ITasksContextDefinitionObject } from \"~/types\";\nimport { TaskDefinitionPlugin } from \"~/task\";\n\nconst getTaskDefinitionPlugins = (context: Context) => {\n return context.plugins.byType<TaskDefinitionPlugin>(TaskDefinitionPlugin.type);\n};\n\nexport const createDefinitionCrud = (context: Context): ITasksContextDefinitionObject => {\n return {\n getDefinition: (id: string) => {\n const plugins = getTaskDefinitionPlugins(context);\n\n for (const plugin of plugins) {\n if (plugin.getTask().id === id) {\n return plugin.getTask();\n }\n }\n return null;\n },\n listDefinitions: () => {\n return getTaskDefinitionPlugins(context).map(plugin => plugin.getTask());\n }\n };\n};\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,wBAAwB,GAAIC,OAAgB,IAAK;EACnD,OAAOA,OAAO,CAACC,OAAO,CAACC,MAAM,CAAuBC,0BAAoB,CAACC,IAAI,CAAC;AAClF,CAAC;AAEM,MAAMC,oBAAoB,GAAIL,OAAgB,IAAoC;EACrF,OAAO;IACHM,aAAa,EAAGC,EAAU,IAAK;MAC3B,MAAMN,OAAO,GAAGF,wBAAwB,CAACC,OAAO,CAAC;MAEjD,KAAK,MAAMQ,MAAM,IAAIP,OAAO,EAAE;QAC1B,IAAIO,MAAM,CAACC,OAAO,CAAC,CAAC,CAACF,EAAE,KAAKA,EAAE,EAAE;UAC5B,OAAOC,MAAM,CAACC,OAAO,CAAC,CAAC;QAC3B;MACJ;MACA,OAAO,IAAI;IACf,CAAC;IACDC,eAAe,EAAEA,CAAA,KAAM;MACnB,OAAOX,wBAAwB,CAACC,OAAO,CAAC,CAACW,GAAG,CAACH,MAAM,IAAIA,MAAM,CAACC,OAAO,CAAC,CAAC,CAAC;IAC5E;EACJ,CAAC;AACL,CAAC;AAACG,OAAA,CAAAP,oBAAA,GAAAA,oBAAA","ignoreList":[]}
package/crud/model.js CHANGED
@@ -6,11 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.taskModel = exports.taskLogModel = exports.createTaskModel = exports.WEBINY_TASK_MODEL_ID = exports.WEBINY_TASK_LOG_MODEL_ID = void 0;
7
7
  var _apiHeadlessCms = require("@webiny/api-headless-cms");
8
8
  var _types = require("../types");
9
- const WEBINY_TASK_MODEL_ID = "webinyTask";
10
- exports.WEBINY_TASK_MODEL_ID = WEBINY_TASK_MODEL_ID;
11
- const WEBINY_TASK_LOG_MODEL_ID = "webinyTaskLog";
12
- exports.WEBINY_TASK_LOG_MODEL_ID = WEBINY_TASK_LOG_MODEL_ID;
13
- const taskLogModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.createPrivateModelDefinition)({
9
+ const WEBINY_TASK_MODEL_ID = exports.WEBINY_TASK_MODEL_ID = "webinyTask";
10
+ const WEBINY_TASK_LOG_MODEL_ID = exports.WEBINY_TASK_LOG_MODEL_ID = "webinyTaskLog";
11
+ const taskLogModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.createPrivateModel)({
14
12
  name: "Webiny Task Log",
15
13
  modelId: WEBINY_TASK_LOG_MODEL_ID,
16
14
  fields: [{
@@ -18,11 +16,7 @@ const taskLogModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessC
18
16
  fieldId: "executionName",
19
17
  storageId: "text@executionName",
20
18
  type: "text",
21
- label: "Execution Name",
22
- validation: [{
23
- name: "required",
24
- message: "Execution Name is required."
25
- }]
19
+ label: "Execution Name"
26
20
  }, {
27
21
  id: "task",
28
22
  fieldId: "task",
@@ -84,10 +78,10 @@ const taskLogModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessC
84
78
  predefinedValues: {
85
79
  enabled: true,
86
80
  values: [{
87
- value: _types.ITaskLogItemType.INFO,
81
+ value: _types.TaskLogItemType.INFO,
88
82
  label: "Info"
89
83
  }, {
90
- value: _types.ITaskLogItemType.ERROR,
84
+ value: _types.TaskLogItemType.ERROR,
91
85
  label: "Error"
92
86
  }]
93
87
  },
@@ -111,7 +105,7 @@ const taskLogModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessC
111
105
  }
112
106
  }]
113
107
  }));
114
- const taskModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.createPrivateModelDefinition)({
108
+ const taskModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.createPrivateModel)({
115
109
  name: "Webiny Task",
116
110
  modelId: WEBINY_TASK_MODEL_ID,
117
111
  fields: [{
@@ -134,6 +128,12 @@ const taskModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.
134
128
  name: "required",
135
129
  message: "Definition ID is required."
136
130
  }]
131
+ }, {
132
+ id: "parentId",
133
+ fieldId: "parentId",
134
+ storageId: "text@parentId",
135
+ type: "text",
136
+ label: "Parent ID"
137
137
  }, {
138
138
  id: "executionName",
139
139
  fieldId: "executionName",
@@ -152,6 +152,12 @@ const taskModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.
152
152
  storageId: "object@input",
153
153
  type: "json",
154
154
  label: "Input"
155
+ }, {
156
+ id: "output",
157
+ fieldId: "output",
158
+ storageId: "object@output",
159
+ type: "json",
160
+ label: "Output"
155
161
  }, {
156
162
  id: "taskStatus",
157
163
  fieldId: "taskStatus",
@@ -200,10 +206,8 @@ const taskModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.
200
206
  label: "Event Response"
201
207
  }]
202
208
  }));
203
- const taskModel = taskModelPlugin.contentModel;
204
- exports.taskModel = taskModel;
205
- const taskLogModel = taskLogModelPlugin.contentModel;
206
- exports.taskLogModel = taskLogModel;
209
+ const taskModel = exports.taskModel = taskModelPlugin.contentModel;
210
+ const taskLogModel = exports.taskLogModel = taskLogModelPlugin.contentModel;
207
211
  const createTaskModel = () => {
208
212
  return [taskModelPlugin, taskLogModelPlugin];
209
213
  };
package/crud/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_apiHeadlessCms","require","_types","WEBINY_TASK_MODEL_ID","exports","WEBINY_TASK_LOG_MODEL_ID","taskLogModelPlugin","createCmsModel","createPrivateModelDefinition","name","modelId","fields","id","fieldId","storageId","type","label","validation","message","multipleValues","settings","predefinedValues","enabled","values","value","ITaskLogItemType","INFO","ERROR","taskModelPlugin","TaskDataStatus","PENDING","RUNNING","FAILED","SUCCESS","ABORTED","defaultValue","taskModel","contentModel","taskLogModel","createTaskModel"],"sources":["model.ts"],"sourcesContent":["import { createCmsModel, createPrivateModelDefinition } from \"@webiny/api-headless-cms\";\nimport { ITaskLogItemType, TaskDataStatus } from \"~/types\";\n\nexport const WEBINY_TASK_MODEL_ID = \"webinyTask\";\nexport const WEBINY_TASK_LOG_MODEL_ID = \"webinyTaskLog\";\n\nconst taskLogModelPlugin = createCmsModel(\n createPrivateModelDefinition({\n name: \"Webiny Task Log\",\n modelId: WEBINY_TASK_LOG_MODEL_ID,\n fields: [\n {\n id: \"executionName\",\n fieldId: \"executionName\",\n storageId: \"text@executionName\",\n type: \"text\",\n label: \"Execution Name\",\n validation: [\n {\n name: \"required\",\n message: \"Execution Name is required.\"\n }\n ]\n },\n {\n id: \"task\",\n fieldId: \"task\",\n storageId: \"text@task\",\n type: \"text\",\n label: \"Task\",\n validation: [\n {\n name: \"required\",\n message: \"Task is required.\"\n }\n ]\n },\n {\n id: \"iteration\",\n fieldId: \"iteration\",\n storageId: \"number@iteration\",\n type: \"number\",\n label: \"Iteration\",\n validation: [\n {\n name: \"required\",\n message: \"Iteration is required.\"\n }\n ]\n },\n {\n id: \"items\",\n fieldId: \"items\",\n storageId: \"object@items\",\n type: \"object\",\n label: \"Items\",\n multipleValues: true,\n validation: [\n {\n name: \"required\",\n message: \"Items is required.\"\n }\n ],\n settings: {\n fields: [\n {\n id: \"message\",\n fieldId: \"message\",\n storageId: \"text@message\",\n type: \"text\",\n label: \"Message\",\n validation: [\n {\n name: \"required\",\n message: \"Message is required.\"\n }\n ]\n },\n {\n id: \"createdOn\",\n fieldId: \"createdOn\",\n storageId: \"datetime@createdOn\",\n type: \"datetime\",\n label: \"Created On\",\n validation: [\n {\n name: \"required\",\n message: \"Created On is required.\"\n }\n ]\n },\n {\n id: \"type\",\n fieldId: \"type\",\n storageId: \"text@type\",\n type: \"text\",\n label: \"Type\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: ITaskLogItemType.INFO,\n label: \"Info\"\n },\n {\n value: ITaskLogItemType.ERROR,\n label: \"Error\"\n }\n ]\n },\n validation: [\n {\n name: \"required\",\n message: \"Type is required.\"\n }\n ]\n },\n {\n id: \"data\",\n fieldId: \"data\",\n storageId: \"object@data\",\n type: \"json\",\n label: \"Data\"\n },\n {\n id: \"error\",\n fieldId: \"error\",\n storageId: \"object@error\",\n type: \"json\",\n label: \"Error\"\n }\n ]\n }\n }\n ]\n })\n);\n\nconst taskModelPlugin = createCmsModel(\n createPrivateModelDefinition({\n name: \"Webiny Task\",\n modelId: WEBINY_TASK_MODEL_ID,\n fields: [\n {\n id: \"name\",\n fieldId: \"name\",\n storageId: \"text@name\",\n type: \"text\",\n label: \"Name\",\n validation: [\n {\n name: \"required\",\n message: \"Name is required.\"\n }\n ]\n },\n {\n id: \"definitionId\",\n fieldId: \"definitionId\",\n storageId: \"text@definitionId\",\n type: \"text\",\n label: \"Definition ID\",\n validation: [\n {\n name: \"required\",\n message: \"Definition ID is required.\"\n }\n ]\n },\n {\n id: \"executionName\",\n fieldId: \"executionName\",\n storageId: \"text@executionName\",\n type: \"text\",\n label: \"Execution Name\"\n },\n {\n id: \"iterations\",\n fieldId: \"iterations\",\n storageId: \"number@iterations\",\n type: \"number\",\n label: \"Iterations\"\n },\n {\n id: \"input\",\n fieldId: \"input\",\n storageId: \"object@input\",\n type: \"json\",\n label: \"Input\"\n },\n {\n id: \"taskStatus\",\n fieldId: \"taskStatus\",\n storageId: \"text@taskStatus\",\n type: \"text\",\n label: \"Status\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: TaskDataStatus.PENDING,\n label: \"Pending\"\n },\n {\n value: TaskDataStatus.RUNNING,\n label: \"Running\"\n },\n {\n value: TaskDataStatus.FAILED,\n label: \"Failed\"\n },\n {\n value: TaskDataStatus.SUCCESS,\n label: \"Success\"\n },\n {\n value: TaskDataStatus.ABORTED,\n label: \"Aborted\"\n }\n ]\n },\n settings: {\n defaultValue: TaskDataStatus.PENDING\n }\n },\n {\n id: \"startedOn\",\n fieldId: \"startedOn\",\n storageId: \"datetime@startedOn\",\n type: \"datetime\",\n label: \"Started On\"\n },\n {\n id: \"finishedOn\",\n fieldId: \"finishedOn\",\n storageId: \"datetime@finishedOn\",\n type: \"datetime\",\n label: \"Finished On\"\n },\n {\n id: \"eventResponse\",\n fieldId: \"eventResponse\",\n storageId: \"object@eventResponse\",\n type: \"json\",\n label: \"Event Response\"\n }\n ]\n })\n);\n\nexport const taskModel = taskModelPlugin.contentModel;\nexport const taskLogModel = taskLogModelPlugin.contentModel;\n\nexport const createTaskModel = () => {\n return [taskModelPlugin, taskLogModelPlugin];\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_apiHeadlessCms","require","_types","WEBINY_TASK_MODEL_ID","exports","WEBINY_TASK_LOG_MODEL_ID","taskLogModelPlugin","createCmsModel","createPrivateModel","name","modelId","fields","id","fieldId","storageId","type","label","validation","message","multipleValues","settings","predefinedValues","enabled","values","value","TaskLogItemType","INFO","ERROR","taskModelPlugin","TaskDataStatus","PENDING","RUNNING","FAILED","SUCCESS","ABORTED","defaultValue","taskModel","contentModel","taskLogModel","createTaskModel"],"sources":["model.ts"],"sourcesContent":["import { createCmsModel, createPrivateModel } from \"@webiny/api-headless-cms\";\nimport { TaskLogItemType, TaskDataStatus } from \"~/types\";\n\nexport const WEBINY_TASK_MODEL_ID = \"webinyTask\";\nexport const WEBINY_TASK_LOG_MODEL_ID = \"webinyTaskLog\";\n\nconst taskLogModelPlugin = createCmsModel(\n createPrivateModel({\n name: \"Webiny Task Log\",\n modelId: WEBINY_TASK_LOG_MODEL_ID,\n fields: [\n {\n id: \"executionName\",\n fieldId: \"executionName\",\n storageId: \"text@executionName\",\n type: \"text\",\n label: \"Execution Name\"\n },\n {\n id: \"task\",\n fieldId: \"task\",\n storageId: \"text@task\",\n type: \"text\",\n label: \"Task\",\n validation: [\n {\n name: \"required\",\n message: \"Task is required.\"\n }\n ]\n },\n {\n id: \"iteration\",\n fieldId: \"iteration\",\n storageId: \"number@iteration\",\n type: \"number\",\n label: \"Iteration\",\n validation: [\n {\n name: \"required\",\n message: \"Iteration is required.\"\n }\n ]\n },\n {\n id: \"items\",\n fieldId: \"items\",\n storageId: \"object@items\",\n type: \"object\",\n label: \"Items\",\n multipleValues: true,\n validation: [\n {\n name: \"required\",\n message: \"Items is required.\"\n }\n ],\n settings: {\n fields: [\n {\n id: \"message\",\n fieldId: \"message\",\n storageId: \"text@message\",\n type: \"text\",\n label: \"Message\",\n validation: [\n {\n name: \"required\",\n message: \"Message is required.\"\n }\n ]\n },\n {\n id: \"createdOn\",\n fieldId: \"createdOn\",\n storageId: \"datetime@createdOn\",\n type: \"datetime\",\n label: \"Created On\",\n validation: [\n {\n name: \"required\",\n message: \"Created On is required.\"\n }\n ]\n },\n {\n id: \"type\",\n fieldId: \"type\",\n storageId: \"text@type\",\n type: \"text\",\n label: \"Type\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: TaskLogItemType.INFO,\n label: \"Info\"\n },\n {\n value: TaskLogItemType.ERROR,\n label: \"Error\"\n }\n ]\n },\n validation: [\n {\n name: \"required\",\n message: \"Type is required.\"\n }\n ]\n },\n {\n id: \"data\",\n fieldId: \"data\",\n storageId: \"object@data\",\n type: \"json\",\n label: \"Data\"\n },\n {\n id: \"error\",\n fieldId: \"error\",\n storageId: \"object@error\",\n type: \"json\",\n label: \"Error\"\n }\n ]\n }\n }\n ]\n })\n);\n\nconst taskModelPlugin = createCmsModel(\n createPrivateModel({\n name: \"Webiny Task\",\n modelId: WEBINY_TASK_MODEL_ID,\n fields: [\n {\n id: \"name\",\n fieldId: \"name\",\n storageId: \"text@name\",\n type: \"text\",\n label: \"Name\",\n validation: [\n {\n name: \"required\",\n message: \"Name is required.\"\n }\n ]\n },\n {\n id: \"definitionId\",\n fieldId: \"definitionId\",\n storageId: \"text@definitionId\",\n type: \"text\",\n label: \"Definition ID\",\n validation: [\n {\n name: \"required\",\n message: \"Definition ID is required.\"\n }\n ]\n },\n {\n id: \"parentId\",\n fieldId: \"parentId\",\n storageId: \"text@parentId\",\n type: \"text\",\n label: \"Parent ID\"\n },\n {\n id: \"executionName\",\n fieldId: \"executionName\",\n storageId: \"text@executionName\",\n type: \"text\",\n label: \"Execution Name\"\n },\n {\n id: \"iterations\",\n fieldId: \"iterations\",\n storageId: \"number@iterations\",\n type: \"number\",\n label: \"Iterations\"\n },\n {\n id: \"input\",\n fieldId: \"input\",\n storageId: \"object@input\",\n type: \"json\",\n label: \"Input\"\n },\n {\n id: \"output\",\n fieldId: \"output\",\n storageId: \"object@output\",\n type: \"json\",\n label: \"Output\"\n },\n {\n id: \"taskStatus\",\n fieldId: \"taskStatus\",\n storageId: \"text@taskStatus\",\n type: \"text\",\n label: \"Status\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: TaskDataStatus.PENDING,\n label: \"Pending\"\n },\n {\n value: TaskDataStatus.RUNNING,\n label: \"Running\"\n },\n {\n value: TaskDataStatus.FAILED,\n label: \"Failed\"\n },\n {\n value: TaskDataStatus.SUCCESS,\n label: \"Success\"\n },\n {\n value: TaskDataStatus.ABORTED,\n label: \"Aborted\"\n }\n ]\n },\n settings: {\n defaultValue: TaskDataStatus.PENDING\n }\n },\n {\n id: \"startedOn\",\n fieldId: \"startedOn\",\n storageId: \"datetime@startedOn\",\n type: \"datetime\",\n label: \"Started On\"\n },\n {\n id: \"finishedOn\",\n fieldId: \"finishedOn\",\n storageId: \"datetime@finishedOn\",\n type: \"datetime\",\n label: \"Finished On\"\n },\n {\n id: \"eventResponse\",\n fieldId: \"eventResponse\",\n storageId: \"object@eventResponse\",\n type: \"json\",\n label: \"Event Response\"\n }\n ]\n })\n);\n\nexport const taskModel = taskModelPlugin.contentModel;\nexport const taskLogModel = taskLogModelPlugin.contentModel;\n\nexport const createTaskModel = () => {\n return [taskModelPlugin, taskLogModelPlugin];\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import type { Context, ITasksContextServiceObject } from "../types";
2
+ export declare const createServiceCrud: (context: Context) => ITasksContextServiceObject;
@@ -4,29 +4,39 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.createTriggerTasksCrud = void 0;
7
+ exports.createServiceCrud = void 0;
8
8
  var _error = _interopRequireDefault(require("@webiny/error"));
9
9
  var _types = require("../types");
10
- var _createEventBridgeEvent = require("./createEventBridgeEvent");
11
10
  var _handlerGraphql = require("@webiny/handler-graphql");
12
- const createTriggerTasksCrud = (context, config) => {
13
- const getTenant = () => {
14
- return context.tenancy.getCurrentTenant().id;
15
- };
16
- const getLocale = () => {
17
- return context.cms.getLocale().code;
18
- };
19
- const createEventBridgeEvent = (0, _createEventBridgeEvent.createEventBridgeEventFactory)({
20
- config,
21
- getTenant,
22
- getLocale
11
+ var _service = require("../service");
12
+ const MAX_DELAY_DAYS = 355;
13
+ const MAX_DELAY_SECONDS = MAX_DELAY_DAYS * 24 * 60 * 60;
14
+ const validateDelay = ({
15
+ input,
16
+ delay
17
+ }) => {
18
+ if (!delay || delay < 0 || typeof delay !== "number" || Number.isInteger(delay) === false) {
19
+ return;
20
+ } else if (delay < MAX_DELAY_SECONDS) {
21
+ return;
22
+ }
23
+ throw new _error.default(`The maximum delay for a task is ${MAX_DELAY_DAYS} days.`, "MAX_DELAY_ERROR", {
24
+ ...input,
25
+ delay
26
+ });
27
+ };
28
+ const createServiceCrud = context => {
29
+ const service = (0, _service.createService)({
30
+ context
23
31
  });
24
32
  return {
25
33
  trigger: async params => {
26
34
  const {
27
35
  definition: id,
28
36
  input: inputValues,
29
- name
37
+ name,
38
+ parent,
39
+ delay = 0
30
40
  } = params;
31
41
  const definition = context.tasks.getDefinition(id);
32
42
  if (!definition) {
@@ -37,24 +47,37 @@ const createTriggerTasksCrud = (context, config) => {
37
47
  const input = {
38
48
  name: name || definition.title,
39
49
  definitionId: id,
40
- input: inputValues || {}
50
+ input: inputValues || {},
51
+ parentId: parent?.id
41
52
  };
42
53
  if (definition.onBeforeTrigger) {
43
54
  await definition.onBeforeTrigger({
44
55
  context,
45
- input: input.input
56
+ data: input
46
57
  });
47
58
  }
48
- const task = await context.tasks.createTask(input);
49
- let event = null;
59
+ validateDelay({
60
+ input,
61
+ delay
62
+ });
63
+ let task;
64
+ try {
65
+ task = await context.tasks.createTask(input);
66
+ } catch (ex) {
67
+ console.log("Could not create the task.", ex);
68
+ throw ex;
69
+ }
70
+ let result = null;
50
71
  try {
51
- event = await createEventBridgeEvent(task);
52
- if (!event) {
53
- throw new _error.default(`Could not create the Event Bridge Event!`, "CREATE_EVENT_BRIDGE_EVENT_ERROR", {
72
+ result = await service.send(task, delay);
73
+ if (!result) {
74
+ throw new _error.default(`Could not trigger the step function!`, "TRIGGER_STEP_FUNCTION_ERROR", {
54
75
  task
55
76
  });
56
77
  }
57
78
  } catch (ex) {
79
+ console.log("Could not trigger the step function.");
80
+ console.error(ex);
58
81
  /**
59
82
  * In case of failure to create the Event Bridge Event, we need to delete the task that was meant to be created.
60
83
  * TODO maybe we can leave the task and update it as failed - with event bridge error?
@@ -63,14 +86,37 @@ const createTriggerTasksCrud = (context, config) => {
63
86
  throw ex;
64
87
  }
65
88
  return await context.tasks.updateTask(task.id, {
66
- eventResponse: event
89
+ eventResponse: result
67
90
  });
68
91
  },
92
+ fetchServiceInfo: async input => {
93
+ const task = typeof input === "object" ? input : await context.tasks.getTask(input);
94
+ if (!task && typeof input === "string") {
95
+ throw new _handlerGraphql.NotFoundError(`Task "${input}" was not found!`);
96
+ } else if (!task) {
97
+ throw new _error.default(`Task was not found!`, "TASK_FETCH_ERROR", {
98
+ input
99
+ });
100
+ }
101
+ try {
102
+ return await service.fetch(task);
103
+ } catch (ex) {
104
+ console.log("Service fetch error.");
105
+ console.error(ex);
106
+ return null;
107
+ }
108
+ },
69
109
  abort: async params => {
70
110
  const task = await context.tasks.getTask(params.id);
71
111
  if (!task) {
72
112
  throw new _handlerGraphql.NotFoundError(`Task "${params.id}" was not found!`);
73
113
  }
114
+ const definition = context.tasks.getDefinition(task.definitionId);
115
+ if (!definition) {
116
+ throw new _error.default(`Task definition was not found!`, "TASK_DEFINITION_ERROR", {
117
+ id: task.id
118
+ });
119
+ }
74
120
  /**
75
121
  * We should only be able to abort a task which is pending or running
76
122
  */
@@ -97,10 +143,19 @@ const createTriggerTasksCrud = (context, config) => {
97
143
  await context.tasks.updateLog(taskLog.id, {
98
144
  items: taskLog.items.concat([{
99
145
  message: params.message || "Task aborted.",
100
- type: _types.ITaskLogItemType.INFO,
146
+ type: _types.TaskLogItemType.INFO,
101
147
  createdOn: new Date().toISOString()
102
148
  }])
103
149
  });
150
+ /**
151
+ * TODO: determine when to kick off the onAbort hook
152
+ */
153
+ if (definition.onAbort) {
154
+ await definition.onAbort({
155
+ context,
156
+ task: updatedTask
157
+ });
158
+ }
104
159
  return updatedTask;
105
160
  } catch (ex) {
106
161
  throw new _error.default(`Could not abort the task!`, "TASK_ABORT_ERROR", {
@@ -111,6 +166,6 @@ const createTriggerTasksCrud = (context, config) => {
111
166
  }
112
167
  };
113
168
  };
114
- exports.createTriggerTasksCrud = createTriggerTasksCrud;
169
+ exports.createServiceCrud = createServiceCrud;
115
170
 
116
- //# sourceMappingURL=trigger.tasks.js.map
171
+ //# sourceMappingURL=service.tasks.js.map