@webiny/tasks 6.0.0-beta.0 → 6.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/README.md +10 -9
  2. package/context.d.ts +2 -3
  3. package/context.js +44 -30
  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 +238 -94
  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/{trigger.tasks.js → service.tasks.js} +59 -42
  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 +1 -1
  150. package/graphql/index.js +64 -71
  151. package/graphql/index.js.map +1 -1
  152. package/graphql/utils.d.ts +1 -1
  153. package/graphql/utils.js +8 -17
  154. package/graphql/utils.js.map +1 -1
  155. package/handler/index.d.ts +2 -5
  156. package/handler/index.js +33 -40
  157. package/handler/index.js.map +1 -1
  158. package/handler/register.js +8 -8
  159. package/handler/register.js.map +1 -1
  160. package/handler/types.d.ts +2 -2
  161. package/handler/types.js +1 -5
  162. package/handler/types.js.map +1 -1
  163. package/index.d.ts +5 -6
  164. package/index.js +5 -60
  165. package/index.js.map +1 -1
  166. package/package.json +23 -44
  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 -1
  171. package/plugins/index.js +1 -16
  172. package/plugins/index.js.map +1 -1
  173. package/response/DatabaseResponse.d.ts +3 -3
  174. package/response/DatabaseResponse.js +14 -20
  175. package/response/DatabaseResponse.js.map +1 -1
  176. package/response/Response.d.ts +4 -3
  177. package/response/Response.js +63 -27
  178. package/response/Response.js.map +1 -1
  179. package/response/ResponseAbortedResult.d.ts +3 -4
  180. package/response/ResponseAbortedResult.js +3 -11
  181. package/response/ResponseAbortedResult.js.map +1 -1
  182. package/response/ResponseContinueResult.d.ts +4 -4
  183. package/response/ResponseContinueResult.js +3 -11
  184. package/response/ResponseContinueResult.js.map +1 -1
  185. package/response/ResponseDoneResult.d.ts +4 -5
  186. package/response/ResponseDoneResult.js +4 -12
  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 +7 -6
  192. package/response/TaskResponse.js +7 -14
  193. package/response/TaskResponse.js.map +1 -1
  194. package/response/abstractions/Response.d.ts +9 -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 +5 -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 +5 -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 -34
  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 +98 -49
  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 -8
  228. package/runner/TaskManager.js +19 -38
  229. package/runner/TaskManager.js.map +1 -1
  230. package/runner/TaskManagerStore.d.ts +14 -5
  231. package/runner/TaskManagerStore.js +40 -26
  232. package/runner/TaskManagerStore.js.map +1 -1
  233. package/runner/TaskRunner.d.ts +6 -7
  234. package/runner/TaskRunner.js +9 -31
  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 +15 -9
  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 -4
  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 +47 -215
  273. package/types.js +8 -68
  274. package/types.js.map +1 -1
  275. package/utils/ObjectUpdater.js +4 -11
  276. package/utils/ObjectUpdater.js.map +1 -1
  277. package/utils/getErrorProperties.d.ts +2 -2
  278. package/utils/getErrorProperties.js +5 -10
  279. package/utils/getErrorProperties.js.map +1 -1
  280. package/utils/getObjectProperties.js +1 -8
  281. package/utils/getObjectProperties.js.map +1 -1
  282. package/utils/index.d.ts +3 -0
  283. package/utils/index.js +5 -0
  284. package/utils/index.js.map +1 -0
  285. package/crud/model.d.ts +0 -5
  286. package/crud/model.js +0 -216
  287. package/crud/model.js.map +0 -1
  288. package/crud/transport/EventBridgeEventTransportPlugin.d.ts +0 -5
  289. package/crud/transport/EventBridgeEventTransportPlugin.js +0 -58
  290. package/crud/transport/EventBridgeEventTransportPlugin.js.map +0 -1
  291. package/crud/trigger.tasks.d.ts +0 -2
  292. package/crud/trigger.tasks.js.map +0 -1
  293. package/crud/where.d.ts +0 -1
  294. package/crud/where.js +0 -33
  295. package/crud/where.js.map +0 -1
  296. package/plugins/TaskTriggerTransportPlugin.d.ts +0 -17
  297. package/plugins/TaskTriggerTransportPlugin.js +0 -20
  298. package/plugins/TaskTriggerTransportPlugin.js.map +0 -1
  299. package/task/index.d.ts +0 -2
  300. package/task/index.js +0 -29
  301. package/task/index.js.map +0 -1
  302. package/task/input.d.ts +0 -15
  303. package/task/input.js +0 -21
  304. package/task/input.js.map +0 -1
  305. package/task/plugin.d.ts +0 -34
  306. package/task/plugin.js +0 -100
  307. package/task/plugin.js.map +0 -1
  308. package/transport/createTransport.d.ts +0 -7
  309. package/transport/createTransport.js +0 -32
  310. package/transport/createTransport.js.map +0 -1
@@ -1,21 +1,25 @@
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");
14
- var _utils = require("@webiny/utils");
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";
15
19
  const createRevisionId = id => {
16
20
  const {
17
21
  id: entryId
18
- } = (0, _utils.parseIdentifier)(id);
22
+ } = parseIdentifier(id);
19
23
  return `${entryId}#0001`;
20
24
  };
21
25
  const convertToTask = entry => {
@@ -48,172 +52,313 @@ const convertToLog = entry => {
48
52
  items: entry.values.items || []
49
53
  };
50
54
  };
51
- const createTaskCrud = context => {
52
- const onTaskBeforeCreate = (0, _pubsub.createTopic)("tasks.onBeforeCreate");
53
- const onTaskAfterCreate = (0, _pubsub.createTopic)("tasks.onAfterCreate");
54
- const onTaskBeforeUpdate = (0, _pubsub.createTopic)("tasks.onBeforeUpdate");
55
- const onTaskAfterUpdate = (0, _pubsub.createTopic)("tasks.onAfterUpdate");
56
- const onTaskBeforeDelete = (0, _pubsub.createTopic)("tasks.onBeforeDelete");
57
- 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);
58
88
  const getTaskModel = async () => {
59
- return await context.security.withoutAuthorization(async () => {
60
- const model = await context.cms.getModel(_model.WEBINY_TASK_MODEL_ID);
61
- if (model) {
62
- 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}".`);
63
95
  }
64
- throw new _error.default(`There is no model "${_model.WEBINY_TASK_MODEL_ID}".`);
96
+ return result.value;
65
97
  });
66
98
  };
67
99
  const getLogModel = async () => {
68
- return await context.security.withoutAuthorization(async () => {
69
- const model = await context.cms.getModel(_model.WEBINY_TASK_LOG_MODEL_ID);
70
- if (model) {
71
- 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}".`);
72
106
  }
73
- throw new _error.default(`There is no model "${_model.WEBINY_TASK_LOG_MODEL_ID}".`);
107
+ return result.value;
74
108
  });
75
109
  };
76
110
  const getTask = async id => {
77
- let entry;
78
- try {
79
- entry = await context.security.withoutAuthorization(async () => {
80
- const model = await getTaskModel();
81
- return await context.cms.getEntryById(model, createRevisionId(id));
82
- });
83
- } catch (ex) {
84
- 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()) {
85
117
  return null;
86
118
  }
87
- throw ex;
88
- }
119
+ return result.value;
120
+ });
89
121
  if (!entry) {
90
122
  return null;
91
123
  }
92
124
  return convertToTask(entry);
93
125
  };
94
126
  const listTasks = async params => {
95
- 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 () => {
96
132
  const model = await getTaskModel();
97
- return await context.cms.listLatestEntries(model, {
133
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
134
+ const result = await listLatestEntries.execute(model, {
98
135
  ...params,
99
- where: (0, _where.remapWhere)(params?.where)
136
+ where: cmsWhereMapper.map({
137
+ input: params?.where,
138
+ fields: model.fields
139
+ })
100
140
  });
141
+ if (result.isFail()) {
142
+ throw result.error;
143
+ }
144
+ return result.value;
101
145
  });
102
146
  return {
103
- items: items.map(item => convertToTask(item)),
147
+ items: entries.map(item => convertToTask(item)),
104
148
  meta
105
149
  };
106
150
  };
107
151
  const createTask = async data => {
108
152
  const definition = context.tasks.getDefinition(data.definitionId);
109
153
  if (!definition) {
110
- throw new _error.default(`There is no task definition.`, "TASK_DEFINITION_ERROR", {
111
- id: data.definitionId
112
- });
154
+ throw new TaskDefinitionNotFoundError(data.definitionId);
113
155
  }
114
- 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 () => {
115
168
  const model = await getTaskModel();
116
- return await context.cms.createEntry(model, {
117
- ...data,
118
- iterations: 0,
119
- 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
+ }
120
176
  });
121
177
  });
122
- 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;
123
188
  };
124
189
  const updateTask = async (id, data) => {
125
- 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 () => {
126
202
  const model = await getTaskModel();
127
- return await context.cms.updateEntry(model, createRevisionId(id), {
128
- ...data,
129
- savedOn: new Date().toISOString()
203
+ const updateEntry = context.container.resolve(UpdateEntryUseCase);
204
+ return updateEntry.execute(model, createRevisionId(id), {
205
+ values: {
206
+ ...data
207
+ }
130
208
  });
131
209
  });
132
- 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;
133
220
  };
134
221
  const deleteTask = async id => {
135
- return context.security.withoutAuthorization(async () => {
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 () => {
136
233
  const model = await getTaskModel();
137
- await context.cms.deleteEntry(model, createRevisionId(id));
138
- return true;
234
+ const deleteEntry = context.container.resolve(DeleteEntryUseCase);
235
+ return deleteEntry.execute(model, createRevisionId(id));
139
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;
140
245
  };
141
246
  const createLog = async (task, data) => {
142
- const entry = await context.security.withoutAuthorization(async () => {
247
+ const identityContext = context.container.resolve(IdentityContext);
248
+ const result = await identityContext.withoutAuthorization(async () => {
143
249
  const model = await getLogModel();
144
- return await context.cms.createEntry(model, {
145
- ...data,
146
- task: task.id
250
+ const createEntry = context.container.resolve(CreateEntryUseCase);
251
+ return createEntry.execute(model, {
252
+ values: {
253
+ ...data,
254
+ task: task.id
255
+ }
147
256
  });
148
257
  });
149
- return convertToLog(entry);
258
+ if (result.isFail()) {
259
+ throw result.error;
260
+ }
261
+ return convertToLog(result.value);
150
262
  };
151
263
  const updateLog = async (id, data) => {
152
- const entry = await context.security.withoutAuthorization(async () => {
264
+ const identityContext = context.container.resolve(IdentityContext);
265
+ const result = await identityContext.withoutAuthorization(async () => {
153
266
  const model = await getLogModel();
154
- return await context.cms.updateEntry(model, createRevisionId(id), data);
267
+ const updateEntry = context.container.resolve(UpdateEntryUseCase);
268
+ return updateEntry.execute(model, createRevisionId(id), {
269
+ values: data
270
+ });
155
271
  });
156
- return convertToLog(entry);
272
+ if (result.isFail()) {
273
+ throw new TaskLogNotFoundError();
274
+ }
275
+ return convertToLog(result.value);
157
276
  };
158
277
  const deleteLog = async id => {
159
- return context.security.withoutAuthorization(async () => {
278
+ const identityContext = context.container.resolve(IdentityContext);
279
+ const result = await identityContext.withoutAuthorization(async () => {
160
280
  const model = await getLogModel();
161
- await context.cms.deleteEntry(model, id);
162
- return true;
281
+ const deleteEntry = context.container.resolve(DeleteEntryUseCase);
282
+ return deleteEntry.execute(model, id);
163
283
  });
284
+ if (result.isFail()) {
285
+ throw new TaskLogNotFoundError();
286
+ }
287
+ return true;
164
288
  };
165
289
  const getLog = async id => {
290
+ const identityContext = context.container.resolve(IdentityContext);
166
291
  try {
167
- const entry = await context.security.withoutAuthorization(async () => {
292
+ const result = await identityContext.withoutAuthorization(async () => {
168
293
  const model = await getLogModel();
169
- return await context.cms.getEntryById(model, id);
294
+ const getEntryById = context.container.resolve(GetEntryByIdUseCase);
295
+ return getEntryById.execute(model, id);
170
296
  });
171
- return convertToLog(entry);
297
+ if (result.isFail()) {
298
+ throw result.error;
299
+ }
300
+ return convertToLog(result.value);
172
301
  } catch (ex) {
173
- if (ex instanceof _handlerGraphql.NotFoundError) {
302
+ if (ex instanceof NotFoundError) {
174
303
  return null;
175
304
  }
176
305
  throw ex;
177
306
  }
178
307
  };
179
308
  const getLatestLog = async taskId => {
180
- const entry = await context.security.withoutAuthorization(async () => {
309
+ const identityContext = context.container.resolve(IdentityContext);
310
+ const entry = await identityContext.withoutAuthorization(async () => {
181
311
  const model = await getLogModel();
182
- const [items] = await context.cms.listLatestEntries(model, {
312
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
313
+ const result = await listLatestEntries.execute(model, {
183
314
  where: {
184
- task: taskId
315
+ values: {
316
+ task: taskId
317
+ }
185
318
  },
186
319
  sort: ["createdOn_DESC"],
187
320
  limit: 1
188
321
  });
189
- const [item] = items;
322
+ if (result.isFail()) {
323
+ throw result.error;
324
+ }
325
+ const {
326
+ entries
327
+ } = result.value;
328
+ const [item] = entries;
190
329
  if (!item) {
191
- throw new _handlerGraphql.NotFoundError(`No existing latest log found for task "${taskId}".`);
330
+ throw new NotFoundError(`No existing latest log found for task "${taskId}".`);
192
331
  }
193
332
  return item;
194
333
  });
195
334
  return convertToLog(entry);
196
335
  };
197
336
  const listLogs = async params => {
198
- 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 () => {
199
342
  const model = await getLogModel();
200
- return await context.cms.listLatestEntries(model, {
343
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
344
+ const result = await listLatestEntries.execute(model, {
201
345
  ...params,
202
- where: (0, _where.remapWhere)(params.where)
346
+ where: cmsWhereMapper.map({
347
+ input: params.where,
348
+ fields: model.fields
349
+ })
203
350
  });
351
+ if (result.isFail()) {
352
+ throw result.error;
353
+ }
354
+ return result.value;
204
355
  });
205
356
  return {
206
- items: items.map(item => convertToLog(item)),
357
+ items: entries.map(item => convertToLog(item)),
207
358
  meta
208
359
  };
209
360
  };
210
361
  return {
211
- onTaskBeforeCreate,
212
- onTaskAfterCreate,
213
- onTaskBeforeUpdate,
214
- onTaskAfterUpdate,
215
- onTaskBeforeDelete,
216
- onTaskAfterDelete,
217
362
  getTask,
218
363
  listTasks,
219
364
  createTask,
@@ -229,6 +374,5 @@ const createTaskCrud = context => {
229
374
  getLogModel
230
375
  };
231
376
  };
232
- exports.createTaskCrud = createTaskCrud;
233
377
 
234
378
  //# sourceMappingURL=crud.tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_types","_model","_handlerGraphql","_pubsub","_where","_utils","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","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","deleteLog","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 ITaskDataInput,\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\";\nimport { parseIdentifier } from \"@webiny/utils\";\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\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 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
+ {"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","ignoreList":[]}
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;