@webiny/tasks 0.0.0-unstable.de38392959 → 0.0.0-unstable.df7a8bb475

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 (312) hide show
  1. package/README.md +10 -9
  2. package/context.d.ts +2 -3
  3. package/context.js +45 -27
  4. package/context.js.map +1 -1
  5. package/crud/TaskLogPrivateModel.d.ts +9 -0
  6. package/crud/TaskLogPrivateModel.js +34 -0
  7. package/crud/TaskLogPrivateModel.js.map +1 -0
  8. package/crud/TaskPrivateModel.d.ts +9 -0
  9. package/crud/TaskPrivateModel.js +46 -0
  10. package/crud/TaskPrivateModel.js.map +1 -0
  11. package/crud/crud.tasks.d.ts +1 -1
  12. package/crud/crud.tasks.js +247 -91
  13. package/crud/crud.tasks.js.map +1 -1
  14. package/crud/definition.tasks.d.ts +1 -1
  15. package/crud/definition.tasks.js +9 -18
  16. package/crud/definition.tasks.js.map +1 -1
  17. package/crud/service.tasks.d.ts +2 -0
  18. package/crud/service.tasks.js +166 -0
  19. package/crud/service.tasks.js.map +1 -0
  20. package/decorators/RunnableTaskDecorator.d.ts +31 -0
  21. package/decorators/RunnableTaskDecorator.js +82 -0
  22. package/decorators/RunnableTaskDecorator.js.map +1 -0
  23. package/domain/errors.d.ts +29 -0
  24. package/domain/errors.js +47 -0
  25. package/domain/errors.js.map +1 -0
  26. package/events/TaskAfterCreateEvent.d.ts +6 -0
  27. package/events/TaskAfterCreateEvent.js +10 -0
  28. package/events/TaskAfterCreateEvent.js.map +1 -0
  29. package/events/TaskAfterDeleteEvent.d.ts +6 -0
  30. package/events/TaskAfterDeleteEvent.js +10 -0
  31. package/events/TaskAfterDeleteEvent.js.map +1 -0
  32. package/events/TaskAfterUpdateEvent.d.ts +6 -0
  33. package/events/TaskAfterUpdateEvent.js +10 -0
  34. package/events/TaskAfterUpdateEvent.js.map +1 -0
  35. package/events/TaskBeforeCreateEvent.d.ts +6 -0
  36. package/events/TaskBeforeCreateEvent.js +10 -0
  37. package/events/TaskBeforeCreateEvent.js.map +1 -0
  38. package/events/TaskBeforeDeleteEvent.d.ts +6 -0
  39. package/events/TaskBeforeDeleteEvent.js +10 -0
  40. package/events/TaskBeforeDeleteEvent.js.map +1 -0
  41. package/events/TaskBeforeUpdateEvent.d.ts +6 -0
  42. package/events/TaskBeforeUpdateEvent.js +10 -0
  43. package/events/TaskBeforeUpdateEvent.js.map +1 -0
  44. package/events/abstractions.d.ts +53 -0
  45. package/events/abstractions.js +39 -0
  46. package/events/abstractions.js.map +1 -0
  47. package/events/index.d.ts +7 -0
  48. package/events/index.js +9 -0
  49. package/events/index.js.map +1 -0
  50. package/features/AbortTask/AbortTaskUseCase.d.ts +10 -0
  51. package/features/AbortTask/AbortTaskUseCase.js +11 -0
  52. package/features/AbortTask/AbortTaskUseCase.js.map +1 -0
  53. package/features/AbortTask/abstractions.d.ts +25 -0
  54. package/features/AbortTask/abstractions.js +4 -0
  55. package/features/AbortTask/abstractions.js.map +1 -0
  56. package/features/AbortTask/feature.d.ts +2 -0
  57. package/features/AbortTask/feature.js +11 -0
  58. package/features/AbortTask/feature.js.map +1 -0
  59. package/features/AbortTask/index.d.ts +2 -0
  60. package/features/AbortTask/index.js +4 -0
  61. package/features/AbortTask/index.js.map +1 -0
  62. package/features/GetTask/GetTaskUseCase.d.ts +9 -0
  63. package/features/GetTask/GetTaskUseCase.js +10 -0
  64. package/features/GetTask/GetTaskUseCase.js.map +1 -0
  65. package/features/GetTask/abstractions.d.ts +10 -0
  66. package/features/GetTask/abstractions.js +4 -0
  67. package/features/GetTask/abstractions.js.map +1 -0
  68. package/features/GetTask/feature.d.ts +2 -0
  69. package/features/GetTask/feature.js +11 -0
  70. package/features/GetTask/feature.js.map +1 -0
  71. package/features/GetTask/index.d.ts +2 -0
  72. package/features/GetTask/index.js +4 -0
  73. package/features/GetTask/index.js.map +1 -0
  74. package/features/GetTaskDefinition/GetTaskDefinitionUseCase.d.ts +12 -0
  75. package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +25 -0
  76. package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -0
  77. package/features/GetTaskDefinition/abstractions.d.ts +17 -0
  78. package/features/GetTaskDefinition/abstractions.js +4 -0
  79. package/features/GetTaskDefinition/abstractions.js.map +1 -0
  80. package/features/GetTaskDefinition/feature.d.ts +1 -0
  81. package/features/GetTaskDefinition/feature.js +10 -0
  82. package/features/GetTaskDefinition/feature.js.map +1 -0
  83. package/features/GetTaskDefinition/index.d.ts +2 -0
  84. package/features/GetTaskDefinition/index.js +4 -0
  85. package/features/GetTaskDefinition/index.js.map +1 -0
  86. package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.d.ts +11 -0
  87. package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +18 -0
  88. package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -0
  89. package/features/ListTaskDefinitions/abstractions.d.ts +9 -0
  90. package/features/ListTaskDefinitions/abstractions.js +4 -0
  91. package/features/ListTaskDefinitions/abstractions.js.map +1 -0
  92. package/features/ListTaskDefinitions/feature.d.ts +1 -0
  93. package/features/ListTaskDefinitions/feature.js +10 -0
  94. package/features/ListTaskDefinitions/feature.js.map +1 -0
  95. package/features/ListTaskDefinitions/index.d.ts +2 -0
  96. package/features/ListTaskDefinitions/index.js +4 -0
  97. package/features/ListTaskDefinitions/index.js.map +1 -0
  98. package/features/ListTasks/ListTasksUseCase.d.ts +9 -0
  99. package/features/ListTasks/ListTasksUseCase.js +10 -0
  100. package/features/ListTasks/ListTasksUseCase.js.map +1 -0
  101. package/features/ListTasks/abstractions.d.ts +13 -0
  102. package/features/ListTasks/abstractions.js +4 -0
  103. package/features/ListTasks/abstractions.js.map +1 -0
  104. package/features/ListTasks/feature.d.ts +2 -0
  105. package/features/ListTasks/feature.js +11 -0
  106. package/features/ListTasks/feature.js.map +1 -0
  107. package/features/ListTasks/index.d.ts +2 -0
  108. package/features/ListTasks/index.js +4 -0
  109. package/features/ListTasks/index.js.map +1 -0
  110. package/features/TaskController/TaskController.d.ts +49 -0
  111. package/features/TaskController/TaskController.js +71 -0
  112. package/features/TaskController/TaskController.js.map +1 -0
  113. package/features/TaskController/augmentation.d.ts +60 -0
  114. package/features/TaskController/augmentation.js +3 -0
  115. package/features/TaskController/augmentation.js.map +1 -0
  116. package/features/TaskController/index.d.ts +2 -0
  117. package/features/TaskController/index.js +7 -0
  118. package/features/TaskController/index.js.map +1 -0
  119. package/features/TaskExecutionContext/TaskExecutionContext.d.ts +24 -0
  120. package/features/TaskExecutionContext/TaskExecutionContext.js +50 -0
  121. package/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -0
  122. package/features/TaskExecutionContext/abstractions.d.ts +26 -0
  123. package/features/TaskExecutionContext/abstractions.js +13 -0
  124. package/features/TaskExecutionContext/abstractions.js.map +1 -0
  125. package/features/TaskExecutionContext/feature.d.ts +1 -0
  126. package/features/TaskExecutionContext/feature.js +10 -0
  127. package/features/TaskExecutionContext/feature.js.map +1 -0
  128. package/features/TaskExecutionContext/index.d.ts +1 -0
  129. package/features/TaskExecutionContext/index.js +3 -0
  130. package/features/TaskExecutionContext/index.js.map +1 -0
  131. package/features/TriggerTask/TriggerTaskUseCase.d.ts +10 -0
  132. package/features/TriggerTask/TriggerTaskUseCase.js +11 -0
  133. package/features/TriggerTask/TriggerTaskUseCase.js.map +1 -0
  134. package/features/TriggerTask/abstractions.d.ts +28 -0
  135. package/features/TriggerTask/abstractions.js +4 -0
  136. package/features/TriggerTask/abstractions.js.map +1 -0
  137. package/features/TriggerTask/feature.d.ts +2 -0
  138. package/features/TriggerTask/feature.js +11 -0
  139. package/features/TriggerTask/feature.js.map +1 -0
  140. package/features/TriggerTask/index.d.ts +2 -0
  141. package/features/TriggerTask/index.js +4 -0
  142. package/features/TriggerTask/index.js.map +1 -0
  143. package/global.d.ts +1 -0
  144. package/global.js +3 -0
  145. package/global.js.map +1 -0
  146. package/graphql/checkPermissions.d.ts +1 -1
  147. package/graphql/checkPermissions.js +3 -9
  148. package/graphql/checkPermissions.js.map +1 -1
  149. package/graphql/index.d.ts +2 -3
  150. package/graphql/index.js +67 -71
  151. package/graphql/index.js.map +1 -1
  152. package/graphql/utils.d.ts +3 -3
  153. package/graphql/utils.js +8 -17
  154. package/graphql/utils.js.map +1 -1
  155. package/handler/index.d.ts +3 -6
  156. package/handler/index.js +33 -36
  157. package/handler/index.js.map +1 -1
  158. package/handler/register.js +10 -8
  159. package/handler/register.js.map +1 -1
  160. package/handler/types.d.ts +6 -2
  161. package/handler/types.js +1 -5
  162. package/handler/types.js.map +1 -1
  163. package/index.d.ts +5 -7
  164. package/index.js +5 -46
  165. package/index.js.map +1 -1
  166. package/package.json +24 -34
  167. package/plugins/TaskServicePlugin.d.ts +19 -0
  168. package/plugins/TaskServicePlugin.js +10 -0
  169. package/plugins/TaskServicePlugin.js.map +1 -0
  170. package/plugins/index.d.ts +1 -0
  171. package/plugins/index.js +3 -0
  172. package/plugins/index.js.map +1 -0
  173. package/response/DatabaseResponse.d.ts +4 -4
  174. package/response/DatabaseResponse.js +23 -22
  175. package/response/DatabaseResponse.js.map +1 -1
  176. package/response/Response.d.ts +7 -4
  177. package/response/Response.js +71 -28
  178. package/response/Response.js.map +1 -1
  179. package/response/ResponseAbortedResult.d.ts +3 -4
  180. package/response/ResponseAbortedResult.js +4 -12
  181. package/response/ResponseAbortedResult.js.map +1 -1
  182. package/response/ResponseContinueResult.d.ts +9 -5
  183. package/response/ResponseContinueResult.js +7 -11
  184. package/response/ResponseContinueResult.js.map +1 -1
  185. package/response/ResponseDoneResult.d.ts +6 -6
  186. package/response/ResponseDoneResult.js +4 -11
  187. package/response/ResponseDoneResult.js.map +1 -1
  188. package/response/ResponseErrorResult.d.ts +3 -4
  189. package/response/ResponseErrorResult.js +3 -11
  190. package/response/ResponseErrorResult.js.map +1 -1
  191. package/response/TaskResponse.d.ts +8 -6
  192. package/response/TaskResponse.js +21 -15
  193. package/response/TaskResponse.js.map +1 -1
  194. package/response/abstractions/Response.d.ts +10 -9
  195. package/response/abstractions/Response.js +1 -5
  196. package/response/abstractions/Response.js.map +1 -1
  197. package/response/abstractions/ResponseAbortedResult.d.ts +3 -3
  198. package/response/abstractions/ResponseAbortedResult.js +1 -5
  199. package/response/abstractions/ResponseAbortedResult.js.map +1 -1
  200. package/response/abstractions/ResponseBaseResult.d.ts +2 -3
  201. package/response/abstractions/ResponseBaseResult.js +1 -5
  202. package/response/abstractions/ResponseBaseResult.js.map +1 -1
  203. package/response/abstractions/ResponseContinueResult.d.ts +6 -4
  204. package/response/abstractions/ResponseContinueResult.js +1 -5
  205. package/response/abstractions/ResponseContinueResult.js.map +1 -1
  206. package/response/abstractions/ResponseDoneResult.d.ts +6 -6
  207. package/response/abstractions/ResponseDoneResult.js +1 -5
  208. package/response/abstractions/ResponseDoneResult.js.map +1 -1
  209. package/response/abstractions/ResponseErrorResult.d.ts +6 -6
  210. package/response/abstractions/ResponseErrorResult.js +1 -5
  211. package/response/abstractions/ResponseErrorResult.js.map +1 -1
  212. package/response/abstractions/TaskResponse.d.ts +9 -29
  213. package/response/abstractions/TaskResponse.js +1 -5
  214. package/response/abstractions/TaskResponse.js.map +1 -1
  215. package/response/abstractions/index.d.ts +7 -7
  216. package/response/abstractions/index.js +7 -82
  217. package/response/abstractions/index.js.map +1 -1
  218. package/response/index.d.ts +7 -7
  219. package/response/index.js +7 -82
  220. package/response/index.js.map +1 -1
  221. package/runner/TaskControl.d.ts +4 -4
  222. package/runner/TaskControl.js +114 -43
  223. package/runner/TaskControl.js.map +1 -1
  224. package/runner/TaskEventValidation.d.ts +2 -2
  225. package/runner/TaskEventValidation.js +11 -20
  226. package/runner/TaskEventValidation.js.map +1 -1
  227. package/runner/TaskManager.d.ts +7 -9
  228. package/runner/TaskManager.js +53 -41
  229. package/runner/TaskManager.js.map +1 -1
  230. package/runner/TaskManagerStore.d.ts +25 -12
  231. package/runner/TaskManagerStore.js +101 -41
  232. package/runner/TaskManagerStore.js.map +1 -1
  233. package/runner/TaskRunner.d.ts +9 -14
  234. package/runner/TaskRunner.js +37 -30
  235. package/runner/TaskRunner.js.map +1 -1
  236. package/runner/abstractions/TaskControl.d.ts +4 -4
  237. package/runner/abstractions/TaskControl.js +1 -5
  238. package/runner/abstractions/TaskControl.js.map +1 -1
  239. package/runner/abstractions/TaskEventValidation.d.ts +2 -2
  240. package/runner/abstractions/TaskEventValidation.js +1 -5
  241. package/runner/abstractions/TaskEventValidation.js.map +1 -1
  242. package/runner/abstractions/TaskManager.d.ts +4 -4
  243. package/runner/abstractions/TaskManager.js +1 -5
  244. package/runner/abstractions/TaskManager.js.map +1 -1
  245. package/runner/abstractions/TaskManagerStore.d.ts +61 -16
  246. package/runner/abstractions/TaskManagerStore.js +1 -5
  247. package/runner/abstractions/TaskManagerStore.js.map +1 -1
  248. package/runner/abstractions/TaskRunner.d.ts +9 -10
  249. package/runner/abstractions/TaskRunner.js +1 -5
  250. package/runner/abstractions/TaskRunner.js.map +1 -1
  251. package/runner/abstractions/index.d.ts +5 -5
  252. package/runner/abstractions/index.js +5 -60
  253. package/runner/abstractions/index.js.map +1 -1
  254. package/runner/index.d.ts +1 -1
  255. package/runner/index.js +1 -16
  256. package/runner/index.js.map +1 -1
  257. package/service/EventBridgeEventTransportPlugin.d.ts +16 -0
  258. package/service/EventBridgeEventTransportPlugin.js +51 -0
  259. package/service/EventBridgeEventTransportPlugin.js.map +1 -0
  260. package/service/StepFunctionServicePlugin.d.ts +25 -0
  261. package/service/StepFunctionServicePlugin.js +78 -0
  262. package/service/StepFunctionServicePlugin.js.map +1 -0
  263. package/service/createService.d.ts +6 -0
  264. package/service/createService.js +19 -0
  265. package/service/createService.js.map +1 -0
  266. package/service/index.d.ts +4 -0
  267. package/service/index.js +10 -0
  268. package/service/index.js.map +1 -0
  269. package/tasks/testingRunTask.d.ts +10 -1
  270. package/tasks/testingRunTask.js +13 -18
  271. package/tasks/testingRunTask.js.map +1 -1
  272. package/types.d.ts +61 -188
  273. package/types.js +8 -53
  274. package/types.js.map +1 -1
  275. package/utils/ObjectUpdater.d.ts +8 -0
  276. package/utils/ObjectUpdater.js +39 -0
  277. package/utils/ObjectUpdater.js.map +1 -0
  278. package/utils/getErrorProperties.d.ts +2 -2
  279. package/utils/getErrorProperties.js +5 -10
  280. package/utils/getErrorProperties.js.map +1 -1
  281. package/utils/getObjectProperties.js +4 -8
  282. package/utils/getObjectProperties.js.map +1 -1
  283. package/utils/index.d.ts +3 -0
  284. package/utils/index.js +5 -0
  285. package/utils/index.js.map +1 -0
  286. package/crud/createEventBridgeEvent.d.ts +0 -9
  287. package/crud/createEventBridgeEvent.js +0 -73
  288. package/crud/createEventBridgeEvent.js.map +0 -1
  289. package/crud/model.d.ts +0 -5
  290. package/crud/model.js +0 -224
  291. package/crud/model.js.map +0 -1
  292. package/crud/trigger.tasks.d.ts +0 -2
  293. package/crud/trigger.tasks.js +0 -133
  294. package/crud/trigger.tasks.js.map +0 -1
  295. package/crud/where.d.ts +0 -1
  296. package/crud/where.js +0 -33
  297. package/crud/where.js.map +0 -1
  298. package/runner/utils/getErrorProperties.d.ts +0 -5
  299. package/runner/utils/getErrorProperties.js +0 -18
  300. package/runner/utils/getErrorProperties.js.map +0 -1
  301. package/runner/utils/getObjectProperties.d.ts +0 -4
  302. package/runner/utils/getObjectProperties.js +0 -21
  303. package/runner/utils/getObjectProperties.js.map +0 -1
  304. package/task/index.d.ts +0 -2
  305. package/task/index.js +0 -29
  306. package/task/index.js.map +0 -1
  307. package/task/input.d.ts +0 -15
  308. package/task/input.js +0 -21
  309. package/task/input.js.map +0 -1
  310. package/task/plugin.d.ts +0 -31
  311. package/task/plugin.js +0 -87
  312. package/task/plugin.js.map +0 -1
@@ -1,18 +1,26 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.createTaskCrud = void 0;
8
- var _error = _interopRequireDefault(require("@webiny/error"));
9
- var _types = require("../types");
10
- var _model = require("./model");
11
- var _handlerGraphql = require("@webiny/handler-graphql");
12
- var _pubsub = require("@webiny/pubsub");
13
- var _where = require("./where");
1
+ import WebinyError from "@webiny/error";
2
+ import { TaskDataStatus } from "../types.js";
3
+ import { WEBINY_TASK_MODEL_ID } from "./TaskPrivateModel.js";
4
+ import { WEBINY_TASK_LOG_MODEL_ID } from "./TaskLogPrivateModel.js";
5
+ import { NotFoundError } from "@webiny/handler-graphql";
6
+ import { createZodError, parseIdentifier } from "@webiny/utils";
7
+ import zod from "zod";
8
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel";
9
+ import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
10
+ import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
11
+ import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
12
+ import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry";
13
+ import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry";
14
+ import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
15
+ import { TaskDefinitionNotFoundError, TaskLogNotFoundError, TaskNotFoundError } from "../domain/errors.js";
16
+ import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
17
+ import { TaskAfterCreateEvent, TaskAfterDeleteEvent, TaskAfterUpdateEvent, TaskBeforeCreateEvent, TaskBeforeDeleteEvent, TaskBeforeUpdateEvent } from "../events/index.js";
18
+ import { CmsWhereMapper } from "@webiny/api-headless-cms";
14
19
  const createRevisionId = id => {
15
- return `${id}#0001`;
20
+ const {
21
+ id: entryId
22
+ } = parseIdentifier(id);
23
+ return `${entryId}#0001`;
16
24
  };
17
25
  const convertToTask = entry => {
18
26
  return {
@@ -44,165 +52,313 @@ const convertToLog = entry => {
44
52
  items: entry.values.items || []
45
53
  };
46
54
  };
47
- const createTaskCrud = context => {
48
- const onTaskBeforeCreate = (0, _pubsub.createTopic)("tasks.onBeforeCreate");
49
- const onTaskAfterCreate = (0, _pubsub.createTopic)("tasks.onAfterCreate");
50
- const onTaskBeforeUpdate = (0, _pubsub.createTopic)("tasks.onBeforeUpdate");
51
- const onTaskAfterUpdate = (0, _pubsub.createTopic)("tasks.onAfterUpdate");
52
- const onTaskBeforeDelete = (0, _pubsub.createTopic)("tasks.onBeforeDelete");
53
- const onTaskAfterDelete = (0, _pubsub.createTopic)("tasks.onAfterDelete");
55
+ const getZodSchema = schema => {
56
+ if (!schema) {
57
+ return zod.object({}).passthrough();
58
+ } else if (schema instanceof zod.ZodObject) {
59
+ return schema.passthrough();
60
+ } else if (schema instanceof zod.Schema) {
61
+ return schema;
62
+ }
63
+ return zod.object(schema).passthrough();
64
+ };
65
+ const validateTaskInput = async params => {
66
+ const {
67
+ definition,
68
+ data
69
+ } = params;
70
+ if (!definition.createInputValidation) {
71
+ return;
72
+ }
73
+ const schema = definition.createInputValidation({
74
+ validator: zod
75
+ });
76
+ /**
77
+ * If the schema is not an object, we need to wrap it with the `object` function.
78
+ */
79
+ const validate = getZodSchema(schema);
80
+ const result = await validate.safeParseAsync(data.input);
81
+ if (result.success) {
82
+ return;
83
+ }
84
+ throw createZodError(result.error);
85
+ };
86
+ export const createTaskCrud = context => {
87
+ const cmsWhereMapper = context.container.resolve(CmsWhereMapper);
54
88
  const getTaskModel = async () => {
55
- return await context.security.withoutAuthorization(async () => {
56
- const model = await context.cms.getModel(_model.WEBINY_TASK_MODEL_ID);
57
- if (model) {
58
- return model;
89
+ const identityContext = context.container.resolve(IdentityContext);
90
+ return await identityContext.withoutAuthorization(async () => {
91
+ const getModel = context.container.resolve(GetModelUseCase);
92
+ const result = await getModel.execute(WEBINY_TASK_MODEL_ID);
93
+ if (result.isFail()) {
94
+ throw new WebinyError(`There is no model "${WEBINY_TASK_MODEL_ID}".`);
59
95
  }
60
- throw new _error.default(`There is no model "${_model.WEBINY_TASK_MODEL_ID}".`);
96
+ return result.value;
61
97
  });
62
98
  };
63
99
  const getLogModel = async () => {
64
- return await context.security.withoutAuthorization(async () => {
65
- const model = await context.cms.getModel(_model.WEBINY_TASK_LOG_MODEL_ID);
66
- if (model) {
67
- return model;
100
+ const identityContext = context.container.resolve(IdentityContext);
101
+ return await identityContext.withoutAuthorization(async () => {
102
+ const getModel = context.container.resolve(GetModelUseCase);
103
+ const result = await getModel.execute(WEBINY_TASK_LOG_MODEL_ID);
104
+ if (result.isFail()) {
105
+ throw new WebinyError(`There is no model "${WEBINY_TASK_LOG_MODEL_ID}".`);
68
106
  }
69
- throw new _error.default(`There is no model "${_model.WEBINY_TASK_LOG_MODEL_ID}".`);
107
+ return result.value;
70
108
  });
71
109
  };
72
110
  const getTask = async id => {
73
- let entry;
74
- try {
75
- entry = await context.security.withoutAuthorization(async () => {
76
- const model = await getTaskModel();
77
- return await context.cms.getEntryById(model, createRevisionId(id));
78
- });
79
- } catch (ex) {
80
- if (ex instanceof _handlerGraphql.NotFoundError) {
111
+ const identityContext = context.container.resolve(IdentityContext);
112
+ const entry = await identityContext.withoutAuthorization(async () => {
113
+ const model = await getTaskModel();
114
+ const getEntryById = context.container.resolve(GetEntryByIdUseCase);
115
+ const result = await getEntryById.execute(model, createRevisionId(id));
116
+ if (result.isFail()) {
81
117
  return null;
82
118
  }
83
- throw ex;
84
- }
119
+ return result.value;
120
+ });
85
121
  if (!entry) {
86
122
  return null;
87
123
  }
88
124
  return convertToTask(entry);
89
125
  };
90
126
  const listTasks = async params => {
91
- const [items, meta] = await context.security.withoutAuthorization(async () => {
127
+ const identityContext = context.container.resolve(IdentityContext);
128
+ const {
129
+ entries,
130
+ meta
131
+ } = await identityContext.withoutAuthorization(async () => {
92
132
  const model = await getTaskModel();
93
- return await context.cms.listLatestEntries(model, {
133
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
134
+ const result = await listLatestEntries.execute(model, {
94
135
  ...params,
95
- where: (0, _where.remapWhere)(params?.where)
136
+ where: cmsWhereMapper.map({
137
+ input: params?.where,
138
+ fields: model.fields
139
+ })
96
140
  });
141
+ if (result.isFail()) {
142
+ throw result.error;
143
+ }
144
+ return result.value;
97
145
  });
98
146
  return {
99
- items: items.map(item => convertToTask(item)),
147
+ items: entries.map(item => convertToTask(item)),
100
148
  meta
101
149
  };
102
150
  };
103
151
  const createTask = async data => {
104
152
  const definition = context.tasks.getDefinition(data.definitionId);
105
153
  if (!definition) {
106
- throw new _error.default(`There is no task definition.`, "TASK_DEFINITION_ERROR", {
107
- id: data.definitionId
108
- });
154
+ throw new TaskDefinitionNotFoundError(data.definitionId);
109
155
  }
110
- const entry = await context.security.withoutAuthorization(async () => {
156
+ await validateTaskInput({
157
+ context,
158
+ definition,
159
+ data
160
+ });
161
+ const identityContext = context.container.resolve(IdentityContext);
162
+ const eventPublisher = context.container.resolve(EventPublisher);
163
+ const beforeCreateEvent = new TaskBeforeCreateEvent({
164
+ input: data
165
+ });
166
+ await eventPublisher.publish(beforeCreateEvent);
167
+ const result = await identityContext.withoutAuthorization(async () => {
111
168
  const model = await getTaskModel();
112
- return await context.cms.createEntry(model, {
113
- ...data,
114
- iterations: 0,
115
- taskStatus: _types.TaskDataStatus.PENDING
169
+ const createEntry = context.container.resolve(CreateEntryUseCase);
170
+ return createEntry.execute(model, {
171
+ values: {
172
+ ...data,
173
+ iterations: 0,
174
+ taskStatus: TaskDataStatus.PENDING
175
+ }
116
176
  });
117
177
  });
118
- return convertToTask(entry);
178
+ if (result.isFail()) {
179
+ throw result.error;
180
+ }
181
+ const task = convertToTask(result.value);
182
+ const afterCreateEvent = new TaskAfterCreateEvent({
183
+ input: data,
184
+ task
185
+ });
186
+ await eventPublisher.publish(afterCreateEvent);
187
+ return task;
119
188
  };
120
189
  const updateTask = async (id, data) => {
121
- const entry = await context.security.withoutAuthorization(async () => {
190
+ const original = await getTask(id);
191
+ if (!original) {
192
+ throw new TaskNotFoundError();
193
+ }
194
+ const identityContext = context.container.resolve(IdentityContext);
195
+ const eventPublisher = context.container.resolve(EventPublisher);
196
+ const beforeUpdateEvent = new TaskBeforeUpdateEvent({
197
+ input: data,
198
+ original
199
+ });
200
+ await eventPublisher.publish(beforeUpdateEvent);
201
+ const result = await identityContext.withoutAuthorization(async () => {
122
202
  const model = await getTaskModel();
123
- return await context.cms.updateEntry(model, createRevisionId(id), {
124
- ...data,
125
- savedOn: new Date().toISOString()
203
+ const updateEntry = context.container.resolve(UpdateEntryUseCase);
204
+ return updateEntry.execute(model, createRevisionId(id), {
205
+ values: {
206
+ ...data
207
+ }
126
208
  });
127
209
  });
128
- return convertToTask(entry);
210
+ if (result.isFail()) {
211
+ throw result.error;
212
+ }
213
+ const task = convertToTask(result.value);
214
+ const afterUpdateEvent = new TaskAfterUpdateEvent({
215
+ input: data,
216
+ task
217
+ });
218
+ await eventPublisher.publish(afterUpdateEvent);
219
+ return task;
129
220
  };
130
- const deleteTask = id => {
131
- return context.security.withoutAuthorization(async () => {
221
+ const deleteTask = async id => {
222
+ const task = await getTask(id);
223
+ if (!task) {
224
+ throw new TaskNotFoundError();
225
+ }
226
+ const identityContext = context.container.resolve(IdentityContext);
227
+ const eventPublisher = context.container.resolve(EventPublisher);
228
+ const beforeDeleteEvent = new TaskBeforeDeleteEvent({
229
+ task
230
+ });
231
+ await eventPublisher.publish(beforeDeleteEvent);
232
+ const result = await identityContext.withoutAuthorization(async () => {
132
233
  const model = await getTaskModel();
133
- await context.cms.deleteEntry(model, createRevisionId(id));
134
- return true;
234
+ const deleteEntry = context.container.resolve(DeleteEntryUseCase);
235
+ return deleteEntry.execute(model, createRevisionId(id));
135
236
  });
237
+ if (result.isFail()) {
238
+ throw new TaskNotFoundError();
239
+ }
240
+ const afterDeleteEvent = new TaskAfterDeleteEvent({
241
+ task
242
+ });
243
+ await eventPublisher.publish(afterDeleteEvent);
244
+ return true;
136
245
  };
137
246
  const createLog = async (task, data) => {
138
- const entry = await context.security.withoutAuthorization(async () => {
247
+ const identityContext = context.container.resolve(IdentityContext);
248
+ const result = await identityContext.withoutAuthorization(async () => {
139
249
  const model = await getLogModel();
140
- return await context.cms.createEntry(model, {
141
- ...data,
142
- task: task.id
250
+ const createEntry = context.container.resolve(CreateEntryUseCase);
251
+ return createEntry.execute(model, {
252
+ values: {
253
+ ...data,
254
+ task: task.id
255
+ }
143
256
  });
144
257
  });
145
- return convertToLog(entry);
258
+ if (result.isFail()) {
259
+ throw result.error;
260
+ }
261
+ return convertToLog(result.value);
146
262
  };
147
263
  const updateLog = async (id, data) => {
148
- const entry = await context.security.withoutAuthorization(async () => {
264
+ const identityContext = context.container.resolve(IdentityContext);
265
+ const result = await identityContext.withoutAuthorization(async () => {
266
+ const model = await getLogModel();
267
+ const updateEntry = context.container.resolve(UpdateEntryUseCase);
268
+ return updateEntry.execute(model, createRevisionId(id), {
269
+ values: data
270
+ });
271
+ });
272
+ if (result.isFail()) {
273
+ throw new TaskLogNotFoundError();
274
+ }
275
+ return convertToLog(result.value);
276
+ };
277
+ const deleteLog = async id => {
278
+ const identityContext = context.container.resolve(IdentityContext);
279
+ const result = await identityContext.withoutAuthorization(async () => {
149
280
  const model = await getLogModel();
150
- return await context.cms.updateEntry(model, createRevisionId(id), data);
281
+ const deleteEntry = context.container.resolve(DeleteEntryUseCase);
282
+ return deleteEntry.execute(model, id);
151
283
  });
152
- return convertToLog(entry);
284
+ if (result.isFail()) {
285
+ throw new TaskLogNotFoundError();
286
+ }
287
+ return true;
153
288
  };
154
289
  const getLog = async id => {
290
+ const identityContext = context.container.resolve(IdentityContext);
155
291
  try {
156
- const entry = await context.security.withoutAuthorization(async () => {
292
+ const result = await identityContext.withoutAuthorization(async () => {
157
293
  const model = await getLogModel();
158
- return await context.cms.getEntryById(model, id);
294
+ const getEntryById = context.container.resolve(GetEntryByIdUseCase);
295
+ return getEntryById.execute(model, id);
159
296
  });
160
- return convertToLog(entry);
297
+ if (result.isFail()) {
298
+ throw result.error;
299
+ }
300
+ return convertToLog(result.value);
161
301
  } catch (ex) {
162
- if (ex instanceof _handlerGraphql.NotFoundError) {
302
+ if (ex instanceof NotFoundError) {
163
303
  return null;
164
304
  }
165
305
  throw ex;
166
306
  }
167
307
  };
168
308
  const getLatestLog = async taskId => {
169
- const entry = await context.security.withoutAuthorization(async () => {
309
+ const identityContext = context.container.resolve(IdentityContext);
310
+ const entry = await identityContext.withoutAuthorization(async () => {
170
311
  const model = await getLogModel();
171
- const [items] = await context.cms.listLatestEntries(model, {
312
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
313
+ const result = await listLatestEntries.execute(model, {
172
314
  where: {
173
- task: taskId
315
+ values: {
316
+ task: taskId
317
+ }
174
318
  },
175
319
  sort: ["createdOn_DESC"],
176
320
  limit: 1
177
321
  });
178
- const [item] = items;
322
+ if (result.isFail()) {
323
+ throw result.error;
324
+ }
325
+ const {
326
+ entries
327
+ } = result.value;
328
+ const [item] = entries;
179
329
  if (!item) {
180
- throw new _handlerGraphql.NotFoundError(`No existing latest log found for task "${taskId}".`);
330
+ throw new NotFoundError(`No existing latest log found for task "${taskId}".`);
181
331
  }
182
332
  return item;
183
333
  });
184
334
  return convertToLog(entry);
185
335
  };
186
336
  const listLogs = async params => {
187
- const [items, meta] = await context.security.withoutAuthorization(async () => {
337
+ const identityContext = context.container.resolve(IdentityContext);
338
+ const {
339
+ entries,
340
+ meta
341
+ } = await identityContext.withoutAuthorization(async () => {
188
342
  const model = await getLogModel();
189
- return await context.cms.listLatestEntries(model, {
343
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
344
+ const result = await listLatestEntries.execute(model, {
190
345
  ...params,
191
- where: (0, _where.remapWhere)(params.where)
346
+ where: cmsWhereMapper.map({
347
+ input: params.where,
348
+ fields: model.fields
349
+ })
192
350
  });
351
+ if (result.isFail()) {
352
+ throw result.error;
353
+ }
354
+ return result.value;
193
355
  });
194
356
  return {
195
- items: items.map(item => convertToLog(item)),
357
+ items: entries.map(item => convertToLog(item)),
196
358
  meta
197
359
  };
198
360
  };
199
361
  return {
200
- onTaskBeforeCreate,
201
- onTaskAfterCreate,
202
- onTaskBeforeUpdate,
203
- onTaskAfterUpdate,
204
- onTaskBeforeDelete,
205
- onTaskAfterDelete,
206
362
  getTask,
207
363
  listTasks,
208
364
  createTask,
@@ -210,6 +366,7 @@ const createTaskCrud = context => {
210
366
  deleteTask,
211
367
  createLog,
212
368
  updateLog,
369
+ deleteLog,
213
370
  getLog,
214
371
  listLogs,
215
372
  getLatestLog,
@@ -217,6 +374,5 @@ const createTaskCrud = context => {
217
374
  getLogModel
218
375
  };
219
376
  };
220
- exports.createTaskCrud = createTaskCrud;
221
377
 
222
378
  //# sourceMappingURL=crud.tasks.js.map
@@ -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","output","taskStatus","executionName","eventResponse","startedOn","finishedOn","iterations","parentId","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 ITask,\n ITaskCreateData,\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 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 = <\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\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<ITask>);\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 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<ITask>);\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<ITask>);\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<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 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":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAoBA,IAAAE,MAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAEA,MAAMM,gBAAgB,GAAIC,EAAU,IAAK;EACrC,OAAQ,GAAEA,EAAG,OAAM;AACvB,CAAC;AAED,MAAMC,aAAa,GAIfC,KAA4B,IACd;EACd,OAAO;IACHF,EAAE,EAAEE,KAAK,CAACC,OAAO;IACjBC,SAAS,EAAEF,KAAK,CAACE,SAAS;IAC1BC,OAAO,EAAEH,KAAK,CAACG,OAAO;IACtBC,SAAS,EAAEJ,KAAK,CAACI,SAAS;IAC1BC,IAAI,EAAEL,KAAK,CAACM,MAAM,CAACD,IAAI;IACvBE,YAAY,EAAEP,KAAK,CAACM,MAAM,CAACC,YAAY;IACvCC,KAAK,EAAER,KAAK,CAACM,MAAM,CAACE,KAAK;IACzBC,MAAM,EAAET,KAAK,CAACM,MAAM,CAACG,MAAM;IAC3BC,UAAU,EAAEV,KAAK,CAACM,MAAM,CAACI,UAAU;IACnCC,aAAa,EAAEX,KAAK,CAACM,MAAM,CAACK,aAAa,IAAI,EAAE;IAC/CC,aAAa,EAAEZ,KAAK,CAACM,MAAM,CAACM,aAAa;IACzCC,SAAS,EAAEb,KAAK,CAACM,MAAM,CAACO,SAAS;IACjCC,UAAU,EAAEd,KAAK,CAACM,MAAM,CAACQ,UAAU;IACnCC,UAAU,EAAEf,KAAK,CAACM,MAAM,CAACS,UAAU;IACnCC,QAAQ,EAAEhB,KAAK,CAACM,MAAM,CAACU;EAC3B,CAAC;AACL,CAAC;AAED,MAAMC,YAAY,GAAIjB,KAAyB,IAAe;EAC1D,OAAO;IACHF,EAAE,EAAEE,KAAK,CAACC,OAAO;IACjBC,SAAS,EAAEF,KAAK,CAACE,SAAS;IAC1BE,SAAS,EAAEJ,KAAK,CAACI,SAAS;IAC1BO,aAAa,EAAEX,KAAK,CAACM,MAAM,CAACK,aAAa;IACzCO,IAAI,EAAElB,KAAK,CAACM,MAAM,CAACY,IAAI;IACvBC,SAAS,EAAEnB,KAAK,CAACM,MAAM,CAACa,SAAS;IACjCC,KAAK,EAAEpB,KAAK,CAACM,MAAM,CAACc,KAAK,IAAI;EACjC,CAAC;AACL,CAAC;AAEM,MAAMC,cAAc,GAAIC,OAAgB,IAA8B;EACzE,MAAMC,kBAAkB,GAAG,IAAAC,mBAAW,EAAgC,sBAAsB,CAAC;EAC7F,MAAMC,iBAAiB,GAAG,IAAAD,mBAAW,EAA+B,qBAAqB,CAAC;EAC1F,MAAME,kBAAkB,GAAG,IAAAF,mBAAW,EAAgC,sBAAsB,CAAC;EAC7F,MAAMG,iBAAiB,GAAG,IAAAH,mBAAW,EAA+B,qBAAqB,CAAC;EAC1F,MAAMI,kBAAkB,GAAG,IAAAJ,mBAAW,EAAgC,sBAAsB,CAAC;EAC7F,MAAMK,iBAAiB,GAAG,IAAAL,mBAAW,EAA+B,qBAAqB,CAAC;EAE1F,MAAMM,YAAY,GAAG,MAAAA,CAAA,KAA+B;IAChD,OAAO,MAAMR,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAC3D,MAAMC,KAAK,GAAG,MAAMX,OAAO,CAACY,GAAG,CAACC,QAAQ,CAACC,2BAAoB,CAAC;MAC9D,IAAIH,KAAK,EAAE;QACP,OAAOA,KAAK;MAChB;MACA,MAAM,IAAII,cAAW,CAAE,sBAAqBD,2BAAqB,IAAG,CAAC;IACzE,CAAC,CAAC;EACN,CAAC;EAED,MAAME,WAAW,GAAG,MAAAA,CAAA,KAA+B;IAC/C,OAAO,MAAMhB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAC3D,MAAMC,KAAK,GAAG,MAAMX,OAAO,CAACY,GAAG,CAACC,QAAQ,CAACI,+BAAwB,CAAC;MAClE,IAAIN,KAAK,EAAE;QACP,OAAOA,KAAK;MAChB;MACA,MAAM,IAAII,cAAW,CAAE,sBAAqBE,+BAAyB,IAAG,CAAC;IAC7E,CAAC,CAAC;EACN,CAAC;EAED,MAAMC,OAAO,GAAG,MAAO1C,EAAU,IAAK;IAClC,IAAIE,KAAe;IACnB,IAAI;MACAA,KAAK,GAAG,MAAMsB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;QAC5D,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;QAClC,OAAO,MAAMR,OAAO,CAACY,GAAG,CAACO,YAAY,CAACR,KAAK,EAAEpC,gBAAgB,CAACC,EAAE,CAAC,CAAC;MACtE,CAAC,CAAC;IACN,CAAC,CAAC,OAAO4C,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,EAAE;QAC7B,OAAO,IAAI;MACf;MACA,MAAMD,EAAE;IACZ;IACA,IAAI,CAAC1C,KAAK,EAAE;MACR,OAAO,IAAI;IACf;IAEA,OAAOD,aAAa,CAACC,KAAmC,CAAC;EAC7D,CAAC;EAED,MAAM4C,SAAS,GAAG,MAIdC,MAAwB,IACvB;IACD,MAAM,CAACzB,KAAK,EAAE0B,IAAI,CAAC,GAAG,MAAMxB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAC1E,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;MAClC,OAAO,MAAMR,OAAO,CAACY,GAAG,CAACa,iBAAiB,CAAcd,KAAK,EAAE;QAC3D,GAAGY,MAAM;QACTG,KAAK,EAAE,IAAAC,iBAAU,EAACJ,MAAM,EAAEG,KAAK;MACnC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO;MACH5B,KAAK,EAAEA,KAAK,CAAC8B,GAAG,CAACC,IAAI,IAAIpD,aAAa,CAAOoD,IAAI,CAAC,CAAC;MACnDL;IACJ,CAAC;EACL,CAAC;EAED,MAAMM,UAAU,GAAG,MAAOC,IAAqB,IAAK;IAChD,MAAMC,UAAU,GAAGhC,OAAO,CAACiC,KAAK,CAACC,aAAa,CAACH,IAAI,CAAC9C,YAAY,CAAC;IACjE,IAAI,CAAC+C,UAAU,EAAE;MACb,MAAM,IAAIjB,cAAW,CAAE,8BAA6B,EAAE,uBAAuB,EAAE;QAC3EvC,EAAE,EAAEuD,IAAI,CAAC9C;MACb,CAAC,CAAC;IACN;IAEA,MAAMP,KAAK,GAAG,MAAMsB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;MAClC,OAAO,MAAMR,OAAO,CAACY,GAAG,CAACuB,WAAW,CAACxB,KAAK,EAAE;QACxC,GAAGoB,IAAI;QACPtC,UAAU,EAAE,CAAC;QACbL,UAAU,EAAEgD,qBAAc,CAACC;MAC/B,CAAC,CAAC;IACN,CAAC,CAAC;IACF,OAAO5D,aAAa,CAACC,KAAmC,CAAC;EAC7D,CAAC;EAED,MAAM4D,UAAU,GAAG,MAAAA,CAAO9D,EAAU,EAAEuD,IAAqB,KAAK;IAC5D,MAAMrD,KAAK,GAAG,MAAMsB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;MAClC,OAAO,MAAMR,OAAO,CAACY,GAAG,CAAC2B,WAAW,CAAC5B,KAAK,EAAEpC,gBAAgB,CAACC,EAAE,CAAC,EAAE;QAC9D,GAAGuD,IAAI;QACPlD,OAAO,EAAE,IAAI2D,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;MACpC,CAAC,CAAC;IACN,CAAC,CAAC;IACF,OAAOhE,aAAa,CAACC,KAAmC,CAAC;EAC7D,CAAC;EAED,MAAMgE,UAAU,GAAIlE,EAAU,IAAK;IAC/B,OAAOwB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACrD,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;MAClC,MAAMR,OAAO,CAACY,GAAG,CAAC+B,WAAW,CAAChC,KAAK,EAAEpC,gBAAgB,CAACC,EAAE,CAAC,CAAC;MAC1D,OAAO,IAAI;IACf,CAAC,CAAC;EACN,CAAC;EAED,MAAMoE,SAAS,GAAG,MAAAA,CAAOhD,IAAuB,EAAEmC,IAAyB,KAAK;IAC5E,MAAMrD,KAAK,GAAG,MAAMsB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MAEjC,OAAO,MAAMhB,OAAO,CAACY,GAAG,CAACuB,WAAW,CAACxB,KAAK,EAAE;QACxC,GAAGoB,IAAI;QACPnC,IAAI,EAAEA,IAAI,CAACpB;MACf,CAAC,CAAC;IACN,CAAC,CAAC;IACF,OAAOmB,YAAY,CAACjB,KAAsC,CAAC;EAC/D,CAAC;EAED,MAAMmE,SAAS,GAAG,MAAAA,CAAOrE,EAAU,EAAEuD,IAAyB,KAAK;IAC/D,MAAMrD,KAAK,GAAG,MAAMsB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MAEjC,OAAO,MAAMhB,OAAO,CAACY,GAAG,CAAC2B,WAAW,CAAC5B,KAAK,EAAEpC,gBAAgB,CAACC,EAAE,CAAC,EAAEuD,IAAI,CAAC;IAC3E,CAAC,CAAC;IACF,OAAOpC,YAAY,CAACjB,KAAsC,CAAC;EAC/D,CAAC;EAED,MAAMoE,MAAM,GAAG,MAAOtE,EAAU,IAA+B;IAC3D,IAAI;MACA,MAAME,KAAK,GAAG,MAAMsB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;QAClE,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;QACjC,OAAO,MAAMhB,OAAO,CAACY,GAAG,CAACO,YAAY,CAACR,KAAK,EAAEnC,EAAE,CAAC;MACpD,CAAC,CAAC;MAEF,OAAOmB,YAAY,CAACjB,KAAsC,CAAC;IAC/D,CAAC,CAAC,OAAO0C,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,EAAE;QAC7B,OAAO,IAAI;MACf;MACA,MAAMD,EAAE;IACZ;EACJ,CAAC;EAED,MAAM2B,YAAY,GAAG,MAAOC,MAAc,IAAwB;IAC9D,MAAMtE,KAAK,GAAG,MAAMsB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MACjC,MAAM,CAAClB,KAAK,CAAC,GAAG,MAAME,OAAO,CAACY,GAAG,CAACa,iBAAiB,CAAWd,KAAK,EAAE;QACjEe,KAAK,EAAE;UACH9B,IAAI,EAAEoD;QACV,CAAC;QACDC,IAAI,EAAE,CAAC,gBAAgB,CAAC;QACxBC,KAAK,EAAE;MACX,CAAC,CAAC;MACF,MAAM,CAACrB,IAAI,CAAC,GAAG/B,KAAK;MACpB,IAAI,CAAC+B,IAAI,EAAE;QACP,MAAM,IAAIR,6BAAa,CAAE,0CAAyC2B,MAAO,IAAG,CAAC;MACjF;MACA,OAAOnB,IAAI;IACf,CAAC,CAAC;IAEF,OAAOlC,YAAY,CAACjB,KAAsC,CAAC;EAC/D,CAAC;EAED,MAAMyE,QAAQ,GAAG,MAAO5B,MAA0B,IAAK;IACnD,MAAM,CAACzB,KAAK,EAAE0B,IAAI,CAAC,GAAG,MAAMxB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAC1E,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MACjC,OAAO,MAAMhB,OAAO,CAACY,GAAG,CAACa,iBAAiB,CAAWd,KAAK,EAAE;QACxD,GAAGY,MAAM;QACTG,KAAK,EAAE,IAAAC,iBAAU,EAACJ,MAAM,CAACG,KAAK;MAClC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO;MACH5B,KAAK,EAAEA,KAAK,CAAC8B,GAAG,CAACC,IAAI,IAAIlC,YAAY,CAACkC,IAAI,CAAC,CAAC;MAC5CL;IACJ,CAAC;EACL,CAAC;EAED,OAAO;IACHvB,kBAAkB;IAClBE,iBAAiB;IACjBC,kBAAkB;IAClBC,iBAAiB;IACjBC,kBAAkB;IAClBC,iBAAiB;IACjBW,OAAO;IACPI,SAAS;IACTQ,UAAU;IACVQ,UAAU;IACVI,UAAU;IACVE,SAAS;IACTC,SAAS;IACTC,MAAM;IACNK,QAAQ;IACRJ,YAAY;IACZvC,YAAY;IACZQ;EACJ,CAAC;AACL,CAAC;AAACoC,OAAA,CAAArD,cAAA,GAAAA,cAAA"}
1
+ {"version":3,"names":["WebinyError","TaskDataStatus","WEBINY_TASK_MODEL_ID","WEBINY_TASK_LOG_MODEL_ID","NotFoundError","createZodError","parseIdentifier","zod","GetModelUseCase","GetEntryByIdUseCase","ListLatestEntriesUseCase","CreateEntryUseCase","UpdateEntryUseCase","DeleteEntryUseCase","IdentityContext","TaskDefinitionNotFoundError","TaskLogNotFoundError","TaskNotFoundError","EventPublisher","TaskAfterCreateEvent","TaskAfterDeleteEvent","TaskAfterUpdateEvent","TaskBeforeCreateEvent","TaskBeforeDeleteEvent","TaskBeforeUpdateEvent","CmsWhereMapper","createRevisionId","id","entryId","convertToTask","entry","createdOn","savedOn","createdBy","name","values","definitionId","input","output","taskStatus","executionName","eventResponse","startedOn","finishedOn","iterations","parentId","convertToLog","task","iteration","items","getZodSchema","schema","object","passthrough","ZodObject","Schema","validateTaskInput","params","definition","data","createInputValidation","validator","validate","result","safeParseAsync","success","error","createTaskCrud","context","cmsWhereMapper","container","resolve","getTaskModel","identityContext","withoutAuthorization","getModel","execute","isFail","value","getLogModel","getTask","model","getEntryById","listTasks","entries","meta","listLatestEntries","where","map","fields","item","createTask","tasks","getDefinition","eventPublisher","beforeCreateEvent","publish","createEntry","PENDING","afterCreateEvent","updateTask","original","beforeUpdateEvent","updateEntry","afterUpdateEvent","deleteTask","beforeDeleteEvent","deleteEntry","afterDeleteEvent","createLog","updateLog","deleteLog","getLog","ex","getLatestLog","taskId","sort","limit","listLogs"],"sources":["crud.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n Context,\n IListTaskLogParams,\n IListTaskParams,\n ITaskCreateData,\n ITaskLog,\n ITaskLogCreateInput,\n ITaskLogUpdateInput,\n ITasksContextCrudObject,\n ITaskUpdateData\n} from \"~/types.js\";\nimport { TaskDataStatus } from \"~/types.js\";\nimport { WEBINY_TASK_MODEL_ID } from \"./TaskPrivateModel.js\";\nimport { WEBINY_TASK_LOG_MODEL_ID } from \"./TaskLogPrivateModel.js\";\nimport type { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createZodError, parseIdentifier } from \"@webiny/utils\";\nimport zod from \"zod\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport {\n TaskDefinitionNotFoundError,\n TaskLogNotFoundError,\n TaskNotFoundError\n} from \"~/domain/errors.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/EventPublisher\";\nimport {\n TaskAfterCreateEvent,\n TaskAfterDeleteEvent,\n TaskAfterUpdateEvent,\n TaskBeforeCreateEvent,\n TaskBeforeDeleteEvent,\n TaskBeforeUpdateEvent\n} from \"~/events/index.js\";\nimport { CmsWhereMapper } from \"@webiny/api-headless-cms\";\n\nconst createRevisionId = (id: string) => {\n const { id: entryId } = parseIdentifier(id);\n return `${entryId}#0001`;\n};\n\nconst convertToTask = <\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n>(\n entry: CmsEntry<TaskService.Task<T, O>>\n): TaskService.Task<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<TaskDefinition.Interface, \"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 } = params;\n if (!definition.createInputValidation) {\n return;\n }\n const schema = definition.createInputValidation({\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 cmsWhereMapper = context.container.resolve(CmsWhereMapper);\n\n const getTaskModel = async (): Promise<CmsModel> => {\n const identityContext = context.container.resolve(IdentityContext);\n return await identityContext.withoutAuthorization(async () => {\n const getModel = context.container.resolve(GetModelUseCase);\n const result = await getModel.execute(WEBINY_TASK_MODEL_ID);\n if (result.isFail()) {\n throw new WebinyError(`There is no model \"${WEBINY_TASK_MODEL_ID}\".`);\n }\n return result.value;\n });\n };\n\n const getLogModel = async (): Promise<CmsModel> => {\n const identityContext = context.container.resolve(IdentityContext);\n return await identityContext.withoutAuthorization(async () => {\n const getModel = context.container.resolve(GetModelUseCase);\n const result = await getModel.execute(WEBINY_TASK_LOG_MODEL_ID);\n if (result.isFail()) {\n throw new WebinyError(`There is no model \"${WEBINY_TASK_LOG_MODEL_ID}\".`);\n }\n return result.value;\n });\n };\n\n const getTask = async <\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n id: string\n ) => {\n const identityContext = context.container.resolve(IdentityContext);\n\n const entry = await identityContext.withoutAuthorization(async () => {\n const model = await getTaskModel();\n const getEntryById = context.container.resolve(GetEntryByIdUseCase);\n const result = await getEntryById.execute(model, createRevisionId(id));\n if (result.isFail()) {\n return null;\n }\n return result.value;\n });\n\n if (!entry) {\n return null;\n }\n\n return convertToTask(entry as unknown as CmsEntry<TaskService.Task<T, O>>);\n };\n\n const listTasks = async <\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params?: IListTaskParams\n ) => {\n const identityContext = context.container.resolve(IdentityContext);\n const { entries, meta } = await identityContext.withoutAuthorization(async () => {\n const model = await getTaskModel();\n const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);\n const result = await listLatestEntries.execute<TaskService.Task<T, O>>(model, {\n ...params,\n where: cmsWhereMapper.map({\n input: params?.where,\n fields: model.fields\n })\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n\n return {\n items: entries.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 TaskDefinitionNotFoundError(data.definitionId);\n }\n\n await validateTaskInput({\n context,\n definition,\n data\n });\n\n const identityContext = context.container.resolve(IdentityContext);\n const eventPublisher = context.container.resolve(EventPublisher);\n\n const beforeCreateEvent = new TaskBeforeCreateEvent({\n input: data\n });\n await eventPublisher.publish(beforeCreateEvent);\n\n const result = await identityContext.withoutAuthorization(async () => {\n const model = await getTaskModel();\n const createEntry = context.container.resolve(CreateEntryUseCase);\n return createEntry.execute(model, {\n values: {\n ...data,\n iterations: 0,\n taskStatus: TaskDataStatus.PENDING\n }\n });\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n const task = convertToTask(result.value as unknown as CmsEntry<TaskService.Task>);\n\n const afterCreateEvent = new TaskAfterCreateEvent({\n input: data,\n task\n });\n await eventPublisher.publish(afterCreateEvent);\n\n return task;\n };\n\n const updateTask = async <\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n id: string,\n data: ITaskUpdateData<T, O>\n ) => {\n const original = await getTask<T, O>(id);\n if (!original) {\n throw new TaskNotFoundError();\n }\n\n const identityContext = context.container.resolve(IdentityContext);\n const eventPublisher = context.container.resolve(EventPublisher);\n\n const beforeUpdateEvent = new TaskBeforeUpdateEvent({\n input: data,\n original\n });\n await eventPublisher.publish(beforeUpdateEvent);\n\n const result = await identityContext.withoutAuthorization(async () => {\n const model = await getTaskModel();\n const updateEntry = context.container.resolve(UpdateEntryUseCase);\n return updateEntry.execute(model, createRevisionId(id), {\n values: {\n ...data\n }\n });\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n const task = convertToTask<T, O>(\n result.value as unknown as CmsEntry<TaskService.Task<T, O>>\n );\n\n const afterUpdateEvent = new TaskAfterUpdateEvent({\n input: data,\n task\n });\n await eventPublisher.publish(afterUpdateEvent);\n\n return task;\n };\n\n const deleteTask = async (id: string) => {\n const task = await getTask(id);\n if (!task) {\n throw new TaskNotFoundError();\n }\n\n const identityContext = context.container.resolve(IdentityContext);\n const eventPublisher = context.container.resolve(EventPublisher);\n\n const beforeDeleteEvent = new TaskBeforeDeleteEvent({\n task\n });\n await eventPublisher.publish(beforeDeleteEvent);\n\n const result = await identityContext.withoutAuthorization(async () => {\n const model = await getTaskModel();\n const deleteEntry = context.container.resolve(DeleteEntryUseCase);\n return deleteEntry.execute(model, createRevisionId(id));\n });\n\n if (result.isFail()) {\n throw new TaskNotFoundError();\n }\n\n const afterDeleteEvent = new TaskAfterDeleteEvent({ task });\n await eventPublisher.publish(afterDeleteEvent);\n\n return true;\n };\n\n const createLog = async (task: Pick<TaskService.Task, \"id\">, data: ITaskLogCreateInput) => {\n const identityContext = context.container.resolve(IdentityContext);\n const result = await identityContext.withoutAuthorization(async () => {\n const model = await getLogModel();\n const createEntry = context.container.resolve(CreateEntryUseCase);\n return createEntry.execute(model, {\n values: {\n ...data,\n task: task.id\n }\n });\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n return convertToLog(result.value as unknown as CmsEntry<ITaskLog>);\n };\n\n const updateLog = async (id: string, data: ITaskLogUpdateInput) => {\n const identityContext = context.container.resolve(IdentityContext);\n const result = await identityContext.withoutAuthorization(async () => {\n const model = await getLogModel();\n const updateEntry = context.container.resolve(UpdateEntryUseCase);\n return updateEntry.execute(model, createRevisionId(id), {\n values: data\n });\n });\n\n if (result.isFail()) {\n throw new TaskLogNotFoundError();\n }\n\n return convertToLog(result.value as unknown as CmsEntry<ITaskLog>);\n };\n\n const deleteLog = async (id: string) => {\n const identityContext = context.container.resolve(IdentityContext);\n const result = await identityContext.withoutAuthorization(async () => {\n const model = await getLogModel();\n const deleteEntry = context.container.resolve(DeleteEntryUseCase);\n return deleteEntry.execute(model, id);\n });\n\n if (result.isFail()) {\n throw new TaskLogNotFoundError();\n }\n\n return true;\n };\n\n const getLog = async (id: string): Promise<ITaskLog | null> => {\n const identityContext = context.container.resolve(IdentityContext);\n try {\n const result = await identityContext.withoutAuthorization(async () => {\n const model = await getLogModel();\n const getEntryById = context.container.resolve(GetEntryByIdUseCase);\n return getEntryById.execute(model, id);\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n return convertToLog(result.value 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 identityContext = context.container.resolve(IdentityContext);\n const entry = await identityContext.withoutAuthorization(async () => {\n const model = await getLogModel();\n const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);\n const result = await listLatestEntries.execute<ITaskLog>(model, {\n where: {\n values: {\n task: taskId\n }\n },\n sort: [\"createdOn_DESC\"],\n limit: 1\n });\n if (result.isFail()) {\n throw result.error;\n }\n const { entries } = result.value;\n const [item] = entries;\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 identityContext = context.container.resolve(IdentityContext);\n const { entries, meta } = await identityContext.withoutAuthorization(async () => {\n const model = await getLogModel();\n const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);\n const result = await listLatestEntries.execute<ITaskLog>(model, {\n ...params,\n where: cmsWhereMapper.map({\n input: params.where,\n fields: model.fields\n })\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n\n return {\n items: entries.map(item => convertToLog(item)),\n meta\n };\n };\n\n return {\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.js";
2
2
  export declare const createDefinitionCrud: (context: Context) => ITasksContextDefinitionObject;
@@ -1,29 +1,20 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createDefinitionCrud = void 0;
7
- var _task = require("../task");
8
- const getTaskDefinitionPlugins = context => {
9
- return context.plugins.byType(_task.TaskDefinitionPlugin.type);
10
- };
11
- const createDefinitionCrud = context => {
1
+ import { GetTaskDefinitionUseCase } from "../features/GetTaskDefinition/index.js";
2
+ import { ListTaskDefinitionsUseCase } from "../features/ListTaskDefinitions/index.js";
3
+ export const createDefinitionCrud = context => {
12
4
  return {
13
5
  getDefinition: id => {
14
- const plugins = getTaskDefinitionPlugins(context);
15
- for (const plugin of plugins) {
16
- if (plugin.getTask().id === id) {
17
- return plugin.getTask();
18
- }
6
+ const useCase = context.container.resolve(GetTaskDefinitionUseCase);
7
+ const result = useCase.execute(id);
8
+ if (result.isOk()) {
9
+ return result.value;
19
10
  }
20
11
  return null;
21
12
  },
22
13
  listDefinitions: () => {
23
- return getTaskDefinitionPlugins(context).map(plugin => plugin.getTask());
14
+ const useCase = context.container.resolve(ListTaskDefinitionsUseCase);
15
+ return useCase.execute();
24
16
  }
25
17
  };
26
18
  };
27
- exports.createDefinitionCrud = createDefinitionCrud;
28
19
 
29
20
  //# sourceMappingURL=definition.tasks.js.map
@@ -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":["GetTaskDefinitionUseCase","ListTaskDefinitionsUseCase","createDefinitionCrud","context","getDefinition","id","useCase","container","resolve","result","execute","isOk","value","listDefinitions"],"sources":["definition.tasks.ts"],"sourcesContent":["import type { Context, ITasksContextDefinitionObject } from \"~/types.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { GetTaskDefinitionUseCase } from \"~/features/GetTaskDefinition/index.js\";\nimport { ListTaskDefinitionsUseCase } from \"~/features/ListTaskDefinitions/index.js\";\n\nexport const createDefinitionCrud = (context: Context): ITasksContextDefinitionObject => {\n return {\n getDefinition: <\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n >(\n id: string\n ) => {\n const useCase = context.container.resolve(GetTaskDefinitionUseCase);\n const result = useCase.execute<I, O>(id);\n\n if (result.isOk()) {\n return result.value;\n }\n\n return null;\n },\n listDefinitions: () => {\n const useCase = context.container.resolve(ListTaskDefinitionsUseCase);\n return useCase.execute();\n }\n };\n};\n"],"mappings":"AAEA,SAASA,wBAAwB;AACjC,SAASC,0BAA0B;AAEnC,OAAO,MAAMC,oBAAoB,GAAIC,OAAgB,IAAoC;EACrF,OAAO;IACHC,aAAa,EAITC,EAAU,IACT;MACD,MAAMC,OAAO,GAAGH,OAAO,CAACI,SAAS,CAACC,OAAO,CAACR,wBAAwB,CAAC;MACnE,MAAMS,MAAM,GAAGH,OAAO,CAACI,OAAO,CAAOL,EAAE,CAAC;MAExC,IAAII,MAAM,CAACE,IAAI,CAAC,CAAC,EAAE;QACf,OAAOF,MAAM,CAACG,KAAK;MACvB;MAEA,OAAO,IAAI;IACf,CAAC;IACDC,eAAe,EAAEA,CAAA,KAAM;MACnB,MAAMP,OAAO,GAAGH,OAAO,CAACI,SAAS,CAACC,OAAO,CAACP,0BAA0B,CAAC;MACrE,OAAOK,OAAO,CAACI,OAAO,CAAC,CAAC;IAC5B;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import type { Context, ITasksContextServiceObject } from "../types.js";
2
+ export declare const createServiceCrud: (context: Context) => ITasksContextServiceObject;