@webiny/tasks 0.0.0-unstable.e53eceafb5 → 0.0.0-unstable.e6f0dc8ca7

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 (316) hide show
  1. package/README.md +10 -9
  2. package/context.js +50 -21
  3. package/context.js.map +1 -1
  4. package/crud/TaskLogPrivateModel.d.ts +9 -0
  5. package/crud/TaskLogPrivateModel.js +34 -0
  6. package/crud/TaskLogPrivateModel.js.map +1 -0
  7. package/crud/TaskPrivateModel.d.ts +9 -0
  8. package/crud/TaskPrivateModel.js +46 -0
  9. package/crud/TaskPrivateModel.js.map +1 -0
  10. package/crud/cleanupTaskSubtree.d.ts +8 -0
  11. package/crud/cleanupTaskSubtree.js +76 -0
  12. package/crud/cleanupTaskSubtree.js.map +1 -0
  13. package/crud/crud.tasks.d.ts +1 -1
  14. package/crud/crud.tasks.js +213 -105
  15. package/crud/crud.tasks.js.map +1 -1
  16. package/crud/definition.tasks.d.ts +1 -1
  17. package/crud/definition.tasks.js +9 -18
  18. package/crud/definition.tasks.js.map +1 -1
  19. package/crud/service.tasks.d.ts +1 -1
  20. package/crud/service.tasks.js +31 -36
  21. package/crud/service.tasks.js.map +1 -1
  22. package/decorators/RunnableTaskDecorator.d.ts +32 -0
  23. package/decorators/RunnableTaskDecorator.js +85 -0
  24. package/decorators/RunnableTaskDecorator.js.map +1 -0
  25. package/decorators/SelfCleaningTaskDecorator.d.ts +30 -0
  26. package/decorators/SelfCleaningTaskDecorator.js +98 -0
  27. package/decorators/SelfCleaningTaskDecorator.js.map +1 -0
  28. package/domain/errors.d.ts +29 -0
  29. package/domain/errors.js +47 -0
  30. package/domain/errors.js.map +1 -0
  31. package/events/TaskAfterCreateEvent.d.ts +6 -0
  32. package/events/TaskAfterCreateEvent.js +10 -0
  33. package/events/TaskAfterCreateEvent.js.map +1 -0
  34. package/events/TaskAfterDeleteEvent.d.ts +6 -0
  35. package/events/TaskAfterDeleteEvent.js +10 -0
  36. package/events/TaskAfterDeleteEvent.js.map +1 -0
  37. package/events/TaskAfterUpdateEvent.d.ts +6 -0
  38. package/events/TaskAfterUpdateEvent.js +10 -0
  39. package/events/TaskAfterUpdateEvent.js.map +1 -0
  40. package/events/TaskBeforeCreateEvent.d.ts +6 -0
  41. package/events/TaskBeforeCreateEvent.js +10 -0
  42. package/events/TaskBeforeCreateEvent.js.map +1 -0
  43. package/events/TaskBeforeDeleteEvent.d.ts +6 -0
  44. package/events/TaskBeforeDeleteEvent.js +10 -0
  45. package/events/TaskBeforeDeleteEvent.js.map +1 -0
  46. package/events/TaskBeforeUpdateEvent.d.ts +6 -0
  47. package/events/TaskBeforeUpdateEvent.js +10 -0
  48. package/events/TaskBeforeUpdateEvent.js.map +1 -0
  49. package/events/abstractions.d.ts +53 -0
  50. package/events/abstractions.js +39 -0
  51. package/events/abstractions.js.map +1 -0
  52. package/events/index.d.ts +7 -0
  53. package/events/index.js +9 -0
  54. package/events/index.js.map +1 -0
  55. package/features/AbortTask/AbortTaskUseCase.d.ts +10 -0
  56. package/features/AbortTask/AbortTaskUseCase.js +11 -0
  57. package/features/AbortTask/AbortTaskUseCase.js.map +1 -0
  58. package/features/AbortTask/abstractions.d.ts +25 -0
  59. package/features/AbortTask/abstractions.js +4 -0
  60. package/features/AbortTask/abstractions.js.map +1 -0
  61. package/features/AbortTask/feature.d.ts +5 -0
  62. package/features/AbortTask/feature.js +11 -0
  63. package/features/AbortTask/feature.js.map +1 -0
  64. package/features/AbortTask/index.d.ts +2 -0
  65. package/features/AbortTask/index.js +4 -0
  66. package/features/AbortTask/index.js.map +1 -0
  67. package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.d.ts +7 -0
  68. package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +10 -0
  69. package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -0
  70. package/features/CleanupTaskSubtree/abstractions.d.ts +7 -0
  71. package/features/CleanupTaskSubtree/abstractions.js +4 -0
  72. package/features/CleanupTaskSubtree/abstractions.js.map +1 -0
  73. package/features/CleanupTaskSubtree/index.d.ts +2 -0
  74. package/features/CleanupTaskSubtree/index.js +4 -0
  75. package/features/CleanupTaskSubtree/index.js.map +1 -0
  76. package/features/GetTask/GetTaskUseCase.d.ts +9 -0
  77. package/features/GetTask/GetTaskUseCase.js +10 -0
  78. package/features/GetTask/GetTaskUseCase.js.map +1 -0
  79. package/features/GetTask/abstractions.d.ts +10 -0
  80. package/features/GetTask/abstractions.js +4 -0
  81. package/features/GetTask/abstractions.js.map +1 -0
  82. package/features/GetTask/feature.d.ts +5 -0
  83. package/features/GetTask/feature.js +11 -0
  84. package/features/GetTask/feature.js.map +1 -0
  85. package/features/GetTask/index.d.ts +2 -0
  86. package/features/GetTask/index.js +4 -0
  87. package/features/GetTask/index.js.map +1 -0
  88. package/features/GetTaskDefinition/GetTaskDefinitionUseCase.d.ts +12 -0
  89. package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +25 -0
  90. package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -0
  91. package/features/GetTaskDefinition/abstractions.d.ts +17 -0
  92. package/features/GetTaskDefinition/abstractions.js +4 -0
  93. package/features/GetTaskDefinition/abstractions.js.map +1 -0
  94. package/features/GetTaskDefinition/feature.d.ts +4 -0
  95. package/features/GetTaskDefinition/feature.js +10 -0
  96. package/features/GetTaskDefinition/feature.js.map +1 -0
  97. package/features/GetTaskDefinition/index.d.ts +2 -0
  98. package/features/GetTaskDefinition/index.js +4 -0
  99. package/features/GetTaskDefinition/index.js.map +1 -0
  100. package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.d.ts +11 -0
  101. package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +18 -0
  102. package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -0
  103. package/features/ListTaskDefinitions/abstractions.d.ts +9 -0
  104. package/features/ListTaskDefinitions/abstractions.js +4 -0
  105. package/features/ListTaskDefinitions/abstractions.js.map +1 -0
  106. package/features/ListTaskDefinitions/feature.d.ts +4 -0
  107. package/features/ListTaskDefinitions/feature.js +10 -0
  108. package/features/ListTaskDefinitions/feature.js.map +1 -0
  109. package/features/ListTaskDefinitions/index.d.ts +2 -0
  110. package/features/ListTaskDefinitions/index.js +4 -0
  111. package/features/ListTaskDefinitions/index.js.map +1 -0
  112. package/features/ListTasks/ListTasksUseCase.d.ts +9 -0
  113. package/features/ListTasks/ListTasksUseCase.js +10 -0
  114. package/features/ListTasks/ListTasksUseCase.js.map +1 -0
  115. package/features/ListTasks/abstractions.d.ts +13 -0
  116. package/features/ListTasks/abstractions.js +4 -0
  117. package/features/ListTasks/abstractions.js.map +1 -0
  118. package/features/ListTasks/feature.d.ts +5 -0
  119. package/features/ListTasks/feature.js +11 -0
  120. package/features/ListTasks/feature.js.map +1 -0
  121. package/features/ListTasks/index.d.ts +2 -0
  122. package/features/ListTasks/index.js +4 -0
  123. package/features/ListTasks/index.js.map +1 -0
  124. package/features/TaskController/TaskController.d.ts +49 -0
  125. package/features/TaskController/TaskController.js +71 -0
  126. package/features/TaskController/TaskController.js.map +1 -0
  127. package/features/TaskController/augmentation.d.ts +60 -0
  128. package/features/TaskController/augmentation.js +3 -0
  129. package/features/TaskController/augmentation.js.map +1 -0
  130. package/features/TaskController/index.d.ts +2 -0
  131. package/features/TaskController/index.js +7 -0
  132. package/features/TaskController/index.js.map +1 -0
  133. package/features/TaskExecutionContext/TaskExecutionContext.d.ts +24 -0
  134. package/features/TaskExecutionContext/TaskExecutionContext.js +50 -0
  135. package/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -0
  136. package/features/TaskExecutionContext/abstractions.d.ts +26 -0
  137. package/features/TaskExecutionContext/abstractions.js +13 -0
  138. package/features/TaskExecutionContext/abstractions.js.map +1 -0
  139. package/features/TaskExecutionContext/feature.d.ts +4 -0
  140. package/features/TaskExecutionContext/feature.js +10 -0
  141. package/features/TaskExecutionContext/feature.js.map +1 -0
  142. package/features/TaskExecutionContext/index.d.ts +1 -0
  143. package/features/TaskExecutionContext/index.js +3 -0
  144. package/features/TaskExecutionContext/index.js.map +1 -0
  145. package/features/TriggerTask/TriggerTaskUseCase.d.ts +10 -0
  146. package/features/TriggerTask/TriggerTaskUseCase.js +11 -0
  147. package/features/TriggerTask/TriggerTaskUseCase.js.map +1 -0
  148. package/features/TriggerTask/abstractions.d.ts +28 -0
  149. package/features/TriggerTask/abstractions.js +4 -0
  150. package/features/TriggerTask/abstractions.js.map +1 -0
  151. package/features/TriggerTask/feature.d.ts +5 -0
  152. package/features/TriggerTask/feature.js +11 -0
  153. package/features/TriggerTask/feature.js.map +1 -0
  154. package/features/TriggerTask/index.d.ts +2 -0
  155. package/features/TriggerTask/index.js +4 -0
  156. package/features/TriggerTask/index.js.map +1 -0
  157. package/global.d.ts +1 -0
  158. package/global.js +3 -0
  159. package/global.js.map +1 -0
  160. package/graphql/checkPermissions.d.ts +1 -1
  161. package/graphql/checkPermissions.js +3 -9
  162. package/graphql/checkPermissions.js.map +1 -1
  163. package/graphql/index.d.ts +1 -1
  164. package/graphql/index.js +67 -83
  165. package/graphql/index.js.map +1 -1
  166. package/graphql/utils.d.ts +3 -3
  167. package/graphql/utils.js +8 -17
  168. package/graphql/utils.js.map +1 -1
  169. package/handler/index.d.ts +2 -2
  170. package/handler/index.js +33 -40
  171. package/handler/index.js.map +1 -1
  172. package/handler/register.js +5 -7
  173. package/handler/register.js.map +1 -1
  174. package/handler/types.d.ts +1 -3
  175. package/handler/types.js +1 -5
  176. package/handler/types.js.map +1 -1
  177. package/index.d.ts +5 -6
  178. package/index.js +5 -60
  179. package/index.js.map +1 -1
  180. package/package.json +27 -28
  181. package/plugins/TaskServicePlugin.d.ts +1 -2
  182. package/plugins/TaskServicePlugin.js +2 -9
  183. package/plugins/TaskServicePlugin.js.map +1 -1
  184. package/plugins/index.d.ts +1 -1
  185. package/plugins/index.js +1 -16
  186. package/plugins/index.js.map +1 -1
  187. package/response/DatabaseResponse.d.ts +3 -3
  188. package/response/DatabaseResponse.js +14 -20
  189. package/response/DatabaseResponse.js.map +1 -1
  190. package/response/Response.d.ts +4 -3
  191. package/response/Response.js +20 -31
  192. package/response/Response.js.map +1 -1
  193. package/response/ResponseAbortedResult.d.ts +3 -4
  194. package/response/ResponseAbortedResult.js +3 -11
  195. package/response/ResponseAbortedResult.js.map +1 -1
  196. package/response/ResponseContinueResult.d.ts +4 -5
  197. package/response/ResponseContinueResult.js +3 -11
  198. package/response/ResponseContinueResult.js.map +1 -1
  199. package/response/ResponseDoneResult.d.ts +4 -6
  200. package/response/ResponseDoneResult.js +3 -11
  201. package/response/ResponseDoneResult.js.map +1 -1
  202. package/response/ResponseErrorResult.d.ts +3 -4
  203. package/response/ResponseErrorResult.js +3 -11
  204. package/response/ResponseErrorResult.js.map +1 -1
  205. package/response/TaskResponse.d.ts +7 -6
  206. package/response/TaskResponse.js +5 -12
  207. package/response/TaskResponse.js.map +1 -1
  208. package/response/abstractions/Response.d.ts +7 -7
  209. package/response/abstractions/Response.js +1 -5
  210. package/response/abstractions/Response.js.map +1 -1
  211. package/response/abstractions/ResponseAbortedResult.d.ts +3 -3
  212. package/response/abstractions/ResponseAbortedResult.js +1 -5
  213. package/response/abstractions/ResponseAbortedResult.js.map +1 -1
  214. package/response/abstractions/ResponseBaseResult.d.ts +2 -3
  215. package/response/abstractions/ResponseBaseResult.js +1 -5
  216. package/response/abstractions/ResponseBaseResult.js.map +1 -1
  217. package/response/abstractions/ResponseContinueResult.d.ts +4 -4
  218. package/response/abstractions/ResponseContinueResult.js +1 -5
  219. package/response/abstractions/ResponseContinueResult.js.map +1 -1
  220. package/response/abstractions/ResponseDoneResult.d.ts +5 -6
  221. package/response/abstractions/ResponseDoneResult.js +1 -5
  222. package/response/abstractions/ResponseDoneResult.js.map +1 -1
  223. package/response/abstractions/ResponseErrorResult.d.ts +4 -5
  224. package/response/abstractions/ResponseErrorResult.js +1 -5
  225. package/response/abstractions/ResponseErrorResult.js.map +1 -1
  226. package/response/abstractions/TaskResponse.d.ts +8 -30
  227. package/response/abstractions/TaskResponse.js +1 -5
  228. package/response/abstractions/TaskResponse.js.map +1 -1
  229. package/response/abstractions/index.d.ts +7 -7
  230. package/response/abstractions/index.js +7 -82
  231. package/response/abstractions/index.js.map +1 -1
  232. package/response/index.d.ts +7 -7
  233. package/response/index.js +7 -82
  234. package/response/index.js.map +1 -1
  235. package/runner/TaskControl.d.ts +4 -4
  236. package/runner/TaskControl.js +61 -39
  237. package/runner/TaskControl.js.map +1 -1
  238. package/runner/TaskEventValidation.d.ts +2 -2
  239. package/runner/TaskEventValidation.js +11 -20
  240. package/runner/TaskEventValidation.js.map +1 -1
  241. package/runner/TaskManager.d.ts +7 -10
  242. package/runner/TaskManager.js +19 -39
  243. package/runner/TaskManager.js.map +1 -1
  244. package/runner/TaskManagerStore.d.ts +7 -7
  245. package/runner/TaskManagerStore.js +16 -25
  246. package/runner/TaskManagerStore.js.map +1 -1
  247. package/runner/TaskRunner.d.ts +5 -6
  248. package/runner/TaskRunner.js +9 -31
  249. package/runner/TaskRunner.js.map +1 -1
  250. package/runner/abstractions/TaskControl.d.ts +4 -4
  251. package/runner/abstractions/TaskControl.js +1 -5
  252. package/runner/abstractions/TaskControl.js.map +1 -1
  253. package/runner/abstractions/TaskEventValidation.d.ts +1 -1
  254. package/runner/abstractions/TaskEventValidation.js +1 -5
  255. package/runner/abstractions/TaskEventValidation.js.map +1 -1
  256. package/runner/abstractions/TaskManager.d.ts +4 -4
  257. package/runner/abstractions/TaskManager.js +1 -5
  258. package/runner/abstractions/TaskManager.js.map +1 -1
  259. package/runner/abstractions/TaskManagerStore.d.ts +11 -11
  260. package/runner/abstractions/TaskManagerStore.js +1 -5
  261. package/runner/abstractions/TaskManagerStore.js.map +1 -1
  262. package/runner/abstractions/TaskRunner.d.ts +3 -3
  263. package/runner/abstractions/TaskRunner.js +1 -5
  264. package/runner/abstractions/TaskRunner.js.map +1 -1
  265. package/runner/abstractions/index.d.ts +5 -5
  266. package/runner/abstractions/index.js +5 -60
  267. package/runner/abstractions/index.js.map +1 -1
  268. package/runner/index.d.ts +1 -1
  269. package/runner/index.js +1 -16
  270. package/runner/index.js.map +1 -1
  271. package/service/EventBridgeEventTransportPlugin.d.ts +4 -5
  272. package/service/EventBridgeEventTransportPlugin.js +8 -17
  273. package/service/EventBridgeEventTransportPlugin.js.map +1 -1
  274. package/service/StepFunctionServicePlugin.d.ts +4 -5
  275. package/service/StepFunctionServicePlugin.js +11 -21
  276. package/service/StepFunctionServicePlugin.js.map +1 -1
  277. package/service/createService.d.ts +2 -2
  278. package/service/createService.js +7 -18
  279. package/service/createService.js.map +1 -1
  280. package/service/index.d.ts +3 -3
  281. package/service/index.js +6 -27
  282. package/service/index.js.map +1 -1
  283. package/tasks/testingRunTask.d.ts +10 -1
  284. package/tasks/testingRunTask.js +13 -18
  285. package/tasks/testingRunTask.js.map +1 -1
  286. package/types.d.ts +41 -214
  287. package/types.js +7 -56
  288. package/types.js.map +1 -1
  289. package/utils/ObjectUpdater.js +4 -11
  290. package/utils/ObjectUpdater.js.map +1 -1
  291. package/utils/getErrorProperties.d.ts +1 -1
  292. package/utils/getErrorProperties.js +3 -10
  293. package/utils/getErrorProperties.js.map +1 -1
  294. package/utils/getObjectProperties.js +1 -8
  295. package/utils/getObjectProperties.js.map +1 -1
  296. package/utils/index.d.ts +3 -3
  297. package/utils/index.js +3 -38
  298. package/utils/index.js.map +1 -1
  299. package/utils/normalizeSelfCleanup.d.ts +2 -0
  300. package/utils/normalizeSelfCleanup.js +15 -0
  301. package/utils/normalizeSelfCleanup.js.map +1 -0
  302. package/crud/model.d.ts +0 -5
  303. package/crud/model.js +0 -216
  304. package/crud/model.js.map +0 -1
  305. package/crud/where.d.ts +0 -1
  306. package/crud/where.js +0 -33
  307. package/crud/where.js.map +0 -1
  308. package/task/index.d.ts +0 -2
  309. package/task/index.js +0 -29
  310. package/task/index.js.map +0 -1
  311. package/task/input.d.ts +0 -15
  312. package/task/input.js +0 -21
  313. package/task/input.js.map +0 -1
  314. package/task/plugin.d.ts +0 -36
  315. package/task/plugin.js +0 -106
  316. package/task/plugin.js.map +0 -1
@@ -1,22 +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");
14
- var _utils = require("@webiny/utils");
15
- var _zod = _interopRequireDefault(require("zod"));
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/security/IdentityContext/index.js";
15
+ import { TaskDefinitionNotFoundError, TaskLogNotFoundError, TaskNotFoundError } from "../domain/errors.js";
16
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
17
+ import { TaskAfterCreateEvent, TaskAfterDeleteEvent, TaskAfterUpdateEvent, TaskBeforeCreateEvent, TaskBeforeDeleteEvent, TaskBeforeUpdateEvent } from "../events/index.js";
18
+ import { CmsWhereMapper } from "@webiny/api-headless-cms";
19
+ import { createCleanupTaskSubtree } from "./cleanupTaskSubtree.js";
16
20
  const createRevisionId = id => {
17
21
  const {
18
22
  id: entryId
19
- } = (0, _utils.parseIdentifier)(id);
23
+ } = parseIdentifier(id);
20
24
  return `${entryId}#0001`;
21
25
  };
22
26
  const convertToTask = entry => {
@@ -51,26 +55,24 @@ const convertToLog = entry => {
51
55
  };
52
56
  const getZodSchema = schema => {
53
57
  if (!schema) {
54
- return _zod.default.object({}).passthrough();
55
- } else if (schema instanceof _zod.default.ZodObject) {
56
- return schema.passthrough();
57
- } else if (schema instanceof _zod.default.Schema) {
58
+ return zod.looseObject({});
59
+ } else if (schema instanceof zod.ZodObject) {
60
+ return schema.loose();
61
+ } else if (schema instanceof zod.ZodType) {
58
62
  return schema;
59
63
  }
60
- return _zod.default.object(schema).passthrough();
64
+ return zod.looseObject(schema);
61
65
  };
62
66
  const validateTaskInput = async params => {
63
67
  const {
64
68
  definition,
65
- data,
66
- context
69
+ data
67
70
  } = params;
68
71
  if (!definition.createInputValidation) {
69
72
  return;
70
73
  }
71
74
  const schema = definition.createInputValidation({
72
- context,
73
- validator: _zod.default
75
+ validator: zod
74
76
  });
75
77
  /**
76
78
  * If the schema is not an object, we need to wrap it with the `object` function.
@@ -80,184 +82,291 @@ const validateTaskInput = async params => {
80
82
  if (result.success) {
81
83
  return;
82
84
  }
83
- throw (0, _utils.createZodError)(result.error);
85
+ throw createZodError(result.error);
84
86
  };
85
- const createTaskCrud = context => {
86
- const onTaskBeforeCreate = (0, _pubsub.createTopic)("tasks.onBeforeCreate");
87
- const onTaskAfterCreate = (0, _pubsub.createTopic)("tasks.onAfterCreate");
88
- const onTaskBeforeUpdate = (0, _pubsub.createTopic)("tasks.onBeforeUpdate");
89
- const onTaskAfterUpdate = (0, _pubsub.createTopic)("tasks.onAfterUpdate");
90
- const onTaskBeforeDelete = (0, _pubsub.createTopic)("tasks.onBeforeDelete");
91
- const onTaskAfterDelete = (0, _pubsub.createTopic)("tasks.onAfterDelete");
87
+ export const createTaskCrud = context => {
88
+ const cmsWhereMapper = context.container.resolve(CmsWhereMapper);
92
89
  const getTaskModel = async () => {
93
- return await context.security.withoutAuthorization(async () => {
94
- const model = await context.cms.getModel(_model.WEBINY_TASK_MODEL_ID);
95
- if (model) {
96
- return model;
90
+ const identityContext = context.container.resolve(IdentityContext);
91
+ return await identityContext.withoutAuthorization(async () => {
92
+ const getModel = context.container.resolve(GetModelUseCase);
93
+ const result = await getModel.execute(WEBINY_TASK_MODEL_ID);
94
+ if (result.isFail()) {
95
+ throw new WebinyError(`There is no model "${WEBINY_TASK_MODEL_ID}".`);
97
96
  }
98
- throw new _error.default(`There is no model "${_model.WEBINY_TASK_MODEL_ID}".`);
97
+ return result.value;
99
98
  });
100
99
  };
101
100
  const getLogModel = async () => {
102
- return await context.security.withoutAuthorization(async () => {
103
- const model = await context.cms.getModel(_model.WEBINY_TASK_LOG_MODEL_ID);
104
- if (model) {
105
- return model;
101
+ const identityContext = context.container.resolve(IdentityContext);
102
+ return await identityContext.withoutAuthorization(async () => {
103
+ const getModel = context.container.resolve(GetModelUseCase);
104
+ const result = await getModel.execute(WEBINY_TASK_LOG_MODEL_ID);
105
+ if (result.isFail()) {
106
+ throw new WebinyError(`There is no model "${WEBINY_TASK_LOG_MODEL_ID}".`);
106
107
  }
107
- throw new _error.default(`There is no model "${_model.WEBINY_TASK_LOG_MODEL_ID}".`);
108
+ return result.value;
108
109
  });
109
110
  };
110
111
  const getTask = async id => {
111
- let entry;
112
- try {
113
- entry = await context.security.withoutAuthorization(async () => {
114
- const model = await getTaskModel();
115
- return await context.cms.getEntryById(model, createRevisionId(id));
116
- });
117
- } catch (ex) {
118
- if (ex instanceof _handlerGraphql.NotFoundError) {
112
+ const identityContext = context.container.resolve(IdentityContext);
113
+ const entry = await identityContext.withoutAuthorization(async () => {
114
+ const model = await getTaskModel();
115
+ const getEntryById = context.container.resolve(GetEntryByIdUseCase);
116
+ const result = await getEntryById.execute(model, createRevisionId(id));
117
+ if (result.isFail()) {
119
118
  return null;
120
119
  }
121
- throw ex;
122
- }
120
+ return result.value;
121
+ });
123
122
  if (!entry) {
124
123
  return null;
125
124
  }
126
125
  return convertToTask(entry);
127
126
  };
128
127
  const listTasks = async params => {
129
- const [items, meta] = await context.security.withoutAuthorization(async () => {
128
+ const identityContext = context.container.resolve(IdentityContext);
129
+ const {
130
+ entries,
131
+ meta
132
+ } = await identityContext.withoutAuthorization(async () => {
130
133
  const model = await getTaskModel();
131
- return await context.cms.listLatestEntries(model, {
134
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
135
+ const result = await listLatestEntries.execute(model, {
132
136
  ...params,
133
- where: (0, _where.remapWhere)(params?.where)
137
+ where: cmsWhereMapper.map({
138
+ input: params?.where,
139
+ fields: model.fields
140
+ })
134
141
  });
142
+ if (result.isFail()) {
143
+ throw result.error;
144
+ }
145
+ return result.value;
135
146
  });
136
147
  return {
137
- items: items.map(item => convertToTask(item)),
148
+ items: entries.map(item => convertToTask(item)),
138
149
  meta
139
150
  };
140
151
  };
141
152
  const createTask = async data => {
142
153
  const definition = context.tasks.getDefinition(data.definitionId);
143
154
  if (!definition) {
144
- throw new _error.default(`There is no task definition.`, "TASK_DEFINITION_ERROR", {
145
- id: data.definitionId
146
- });
155
+ throw new TaskDefinitionNotFoundError(data.definitionId);
147
156
  }
148
157
  await validateTaskInput({
149
158
  context,
150
159
  definition,
151
160
  data
152
161
  });
153
- const entry = await context.security.withoutAuthorization(async () => {
162
+ const identityContext = context.container.resolve(IdentityContext);
163
+ const eventPublisher = context.container.resolve(EventPublisher);
164
+ const beforeCreateEvent = new TaskBeforeCreateEvent({
165
+ input: data
166
+ });
167
+ await eventPublisher.publish(beforeCreateEvent);
168
+ const result = await identityContext.withoutAuthorization(async () => {
154
169
  const model = await getTaskModel();
155
- return await context.cms.createEntry(model, {
156
- ...data,
157
- iterations: 0,
158
- taskStatus: _types.TaskDataStatus.PENDING
170
+ const createEntry = context.container.resolve(CreateEntryUseCase);
171
+ return createEntry.execute(model, {
172
+ values: {
173
+ ...data,
174
+ iterations: 0,
175
+ taskStatus: TaskDataStatus.PENDING
176
+ }
159
177
  });
160
178
  });
161
- return convertToTask(entry);
179
+ if (result.isFail()) {
180
+ throw result.error;
181
+ }
182
+ const task = convertToTask(result.value);
183
+ const afterCreateEvent = new TaskAfterCreateEvent({
184
+ input: data,
185
+ task
186
+ });
187
+ await eventPublisher.publish(afterCreateEvent);
188
+ return task;
162
189
  };
163
190
  const updateTask = async (id, data) => {
164
- const entry = await context.security.withoutAuthorization(async () => {
191
+ const original = await getTask(id);
192
+ if (!original) {
193
+ throw new TaskNotFoundError();
194
+ }
195
+ const identityContext = context.container.resolve(IdentityContext);
196
+ const eventPublisher = context.container.resolve(EventPublisher);
197
+ const beforeUpdateEvent = new TaskBeforeUpdateEvent({
198
+ input: data,
199
+ original
200
+ });
201
+ await eventPublisher.publish(beforeUpdateEvent);
202
+ const result = await identityContext.withoutAuthorization(async () => {
165
203
  const model = await getTaskModel();
166
- return await context.cms.updateEntry(model, createRevisionId(id), {
167
- ...data,
168
- savedOn: new Date().toISOString()
204
+ const updateEntry = context.container.resolve(UpdateEntryUseCase);
205
+ return updateEntry.execute(model, createRevisionId(id), {
206
+ values: {
207
+ ...data
208
+ }
169
209
  });
170
210
  });
171
- return convertToTask(entry);
211
+ if (result.isFail()) {
212
+ throw result.error;
213
+ }
214
+ const task = convertToTask(result.value);
215
+ const afterUpdateEvent = new TaskAfterUpdateEvent({
216
+ input: data,
217
+ task
218
+ });
219
+ await eventPublisher.publish(afterUpdateEvent);
220
+ return task;
172
221
  };
173
222
  const deleteTask = async id => {
174
- return context.security.withoutAuthorization(async () => {
223
+ const task = await getTask(id);
224
+ if (!task) {
225
+ throw new TaskNotFoundError();
226
+ }
227
+ const identityContext = context.container.resolve(IdentityContext);
228
+ const eventPublisher = context.container.resolve(EventPublisher);
229
+ const beforeDeleteEvent = new TaskBeforeDeleteEvent({
230
+ task
231
+ });
232
+ await eventPublisher.publish(beforeDeleteEvent);
233
+ const result = await identityContext.withoutAuthorization(async () => {
175
234
  const model = await getTaskModel();
176
- await context.cms.deleteEntry(model, createRevisionId(id));
177
- return true;
235
+ const deleteEntry = context.container.resolve(DeleteEntryUseCase);
236
+ return deleteEntry.execute(model, createRevisionId(id));
178
237
  });
238
+ if (result.isFail()) {
239
+ throw new TaskNotFoundError();
240
+ }
241
+ const afterDeleteEvent = new TaskAfterDeleteEvent({
242
+ task
243
+ });
244
+ await eventPublisher.publish(afterDeleteEvent);
245
+ return true;
179
246
  };
180
247
  const createLog = async (task, data) => {
181
- const entry = await context.security.withoutAuthorization(async () => {
248
+ const identityContext = context.container.resolve(IdentityContext);
249
+ const result = await identityContext.withoutAuthorization(async () => {
182
250
  const model = await getLogModel();
183
- return await context.cms.createEntry(model, {
184
- ...data,
185
- task: task.id
251
+ const createEntry = context.container.resolve(CreateEntryUseCase);
252
+ return createEntry.execute(model, {
253
+ values: {
254
+ ...data,
255
+ task: task.id
256
+ }
186
257
  });
187
258
  });
188
- return convertToLog(entry);
259
+ if (result.isFail()) {
260
+ throw result.error;
261
+ }
262
+ return convertToLog(result.value);
189
263
  };
190
264
  const updateLog = async (id, data) => {
191
- const entry = await context.security.withoutAuthorization(async () => {
265
+ const identityContext = context.container.resolve(IdentityContext);
266
+ const result = await identityContext.withoutAuthorization(async () => {
192
267
  const model = await getLogModel();
193
- return await context.cms.updateEntry(model, createRevisionId(id), data);
268
+ const updateEntry = context.container.resolve(UpdateEntryUseCase);
269
+ return updateEntry.execute(model, createRevisionId(id), {
270
+ values: data
271
+ });
194
272
  });
195
- return convertToLog(entry);
273
+ if (result.isFail()) {
274
+ throw new TaskLogNotFoundError();
275
+ }
276
+ return convertToLog(result.value);
196
277
  };
197
278
  const deleteLog = async id => {
198
- return context.security.withoutAuthorization(async () => {
279
+ const identityContext = context.container.resolve(IdentityContext);
280
+ const result = await identityContext.withoutAuthorization(async () => {
199
281
  const model = await getLogModel();
200
- await context.cms.deleteEntry(model, id);
201
- return true;
282
+ const deleteEntry = context.container.resolve(DeleteEntryUseCase);
283
+ return deleteEntry.execute(model, id);
202
284
  });
285
+ if (result.isFail()) {
286
+ throw new TaskLogNotFoundError();
287
+ }
288
+ return true;
203
289
  };
204
290
  const getLog = async id => {
291
+ const identityContext = context.container.resolve(IdentityContext);
205
292
  try {
206
- const entry = await context.security.withoutAuthorization(async () => {
293
+ const result = await identityContext.withoutAuthorization(async () => {
207
294
  const model = await getLogModel();
208
- return await context.cms.getEntryById(model, id);
295
+ const getEntryById = context.container.resolve(GetEntryByIdUseCase);
296
+ return getEntryById.execute(model, id);
209
297
  });
210
- return convertToLog(entry);
298
+ if (result.isFail()) {
299
+ throw result.error;
300
+ }
301
+ return convertToLog(result.value);
211
302
  } catch (ex) {
212
- if (ex instanceof _handlerGraphql.NotFoundError) {
303
+ if (ex instanceof NotFoundError) {
213
304
  return null;
214
305
  }
215
306
  throw ex;
216
307
  }
217
308
  };
218
309
  const getLatestLog = async taskId => {
219
- const entry = await context.security.withoutAuthorization(async () => {
310
+ const identityContext = context.container.resolve(IdentityContext);
311
+ const entry = await identityContext.withoutAuthorization(async () => {
220
312
  const model = await getLogModel();
221
- const [items] = await context.cms.listLatestEntries(model, {
313
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
314
+ const result = await listLatestEntries.execute(model, {
222
315
  where: {
223
- task: taskId
316
+ values: {
317
+ task: taskId
318
+ }
224
319
  },
225
320
  sort: ["createdOn_DESC"],
226
321
  limit: 1
227
322
  });
228
- const [item] = items;
323
+ if (result.isFail()) {
324
+ throw result.error;
325
+ }
326
+ const {
327
+ entries
328
+ } = result.value;
329
+ const [item] = entries;
229
330
  if (!item) {
230
- throw new _handlerGraphql.NotFoundError(`No existing latest log found for task "${taskId}".`);
331
+ throw new NotFoundError(`No existing latest log found for task "${taskId}".`);
231
332
  }
232
333
  return item;
233
334
  });
234
335
  return convertToLog(entry);
235
336
  };
337
+ const cleanupTaskSubtree = createCleanupTaskSubtree(context);
236
338
  const listLogs = async params => {
237
- const [items, meta] = await context.security.withoutAuthorization(async () => {
339
+ const identityContext = context.container.resolve(IdentityContext);
340
+ const {
341
+ entries,
342
+ meta
343
+ } = await identityContext.withoutAuthorization(async () => {
238
344
  const model = await getLogModel();
239
- return await context.cms.listLatestEntries(model, {
345
+ const listLatestEntries = context.container.resolve(ListLatestEntriesUseCase);
346
+ const result = await listLatestEntries.execute(model, {
240
347
  ...params,
241
- where: (0, _where.remapWhere)(params.where)
348
+ where: cmsWhereMapper.map({
349
+ input: params.where,
350
+ fields: model.fields
351
+ })
242
352
  });
353
+ if (result.isFail()) {
354
+ throw result.error;
355
+ }
356
+ return result.value;
243
357
  });
244
358
  return {
245
- items: items.map(item => convertToLog(item)),
359
+ items: entries.map(item => convertToLog(item)),
246
360
  meta
247
361
  };
248
362
  };
249
363
  return {
250
- onTaskBeforeCreate,
251
- onTaskAfterCreate,
252
- onTaskBeforeUpdate,
253
- onTaskAfterUpdate,
254
- onTaskBeforeDelete,
255
- onTaskAfterDelete,
256
364
  getTask,
257
365
  listTasks,
258
366
  createTask,
259
367
  updateTask,
260
368
  deleteTask,
369
+ cleanupTaskSubtree,
261
370
  createLog,
262
371
  updateLog,
263
372
  deleteLog,
@@ -268,6 +377,5 @@ const createTaskCrud = context => {
268
377
  getLogModel
269
378
  };
270
379
  };
271
- exports.createTaskCrud = createTaskCrud;
272
380
 
273
381
  //# sourceMappingURL=crud.tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_types","_model","_handlerGraphql","_pubsub","_where","_utils","_zod","createRevisionId","id","entryId","parseIdentifier","convertToTask","entry","createdOn","savedOn","createdBy","name","values","definitionId","input","output","taskStatus","executionName","eventResponse","startedOn","finishedOn","iterations","parentId","convertToLog","task","iteration","items","getZodSchema","schema","zod","object","passthrough","ZodObject","Schema","validateTaskInput","params","definition","data","context","createInputValidation","validator","validate","result","safeParseAsync","success","createZodError","error","createTaskCrud","onTaskBeforeCreate","createTopic","onTaskAfterCreate","onTaskBeforeUpdate","onTaskAfterUpdate","onTaskBeforeDelete","onTaskAfterDelete","getTaskModel","security","withoutAuthorization","model","cms","getModel","WEBINY_TASK_MODEL_ID","WebinyError","getLogModel","WEBINY_TASK_LOG_MODEL_ID","getTask","getEntryById","ex","NotFoundError","listTasks","meta","listLatestEntries","where","remapWhere","map","item","createTask","tasks","getDefinition","createEntry","TaskDataStatus","PENDING","updateTask","updateEntry","Date","toISOString","deleteTask","deleteEntry","createLog","updateLog","deleteLog","getLog","getLatestLog","taskId","sort","limit","listLogs","exports"],"sources":["crud.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n Context,\n IListTaskLogParams,\n IListTaskParams,\n ITask,\n ITaskCreateData,\n ITaskDataInput,\n ITaskDefinition,\n ITaskLog,\n ITaskLogCreateInput,\n ITaskLogUpdateInput,\n ITaskResponseDoneResultOutput,\n ITasksContextCrudObject,\n ITaskUpdateData,\n OnTaskAfterCreateTopicParams,\n OnTaskAfterDeleteTopicParams,\n OnTaskAfterUpdateTopicParams,\n OnTaskBeforeCreateTopicParams,\n OnTaskBeforeDeleteTopicParams,\n OnTaskBeforeUpdateTopicParams\n} from \"~/types\";\nimport { TaskDataStatus } from \"~/types\";\nimport { WEBINY_TASK_LOG_MODEL_ID, WEBINY_TASK_MODEL_ID } from \"./model\";\nimport type { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { remapWhere } from \"./where\";\nimport { createZodError, parseIdentifier } from \"@webiny/utils\";\nimport zod from \"zod\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nconst createRevisionId = (id: string) => {\n const { id: entryId } = parseIdentifier(id);\n return `${entryId}#0001`;\n};\n\nconst convertToTask = <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n>(\n entry: CmsEntry<ITask<T, O>>\n): ITask<T, O> => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n savedOn: entry.savedOn,\n createdBy: entry.createdBy,\n name: entry.values.name,\n definitionId: entry.values.definitionId,\n input: entry.values.input,\n output: entry.values.output,\n taskStatus: entry.values.taskStatus,\n executionName: entry.values.executionName || \"\",\n eventResponse: entry.values.eventResponse,\n startedOn: entry.values.startedOn,\n finishedOn: entry.values.finishedOn,\n iterations: entry.values.iterations,\n parentId: entry.values.parentId\n };\n};\n\nconst convertToLog = (entry: CmsEntry<ITaskLog>): ITaskLog => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n createdBy: entry.createdBy,\n executionName: entry.values.executionName,\n task: entry.values.task,\n iteration: entry.values.iteration,\n items: entry.values.items || []\n };\n};\n\ninterface IValidateParams {\n definition: Pick<ITaskDefinition, \"createInputValidation\">;\n data: Pick<ITaskCreateData, \"input\">;\n context: Context;\n}\n\nconst getZodSchema = (schema: GenericRecord<string, zod.Schema> | zod.Schema) => {\n if (!schema) {\n return zod.object({}).passthrough();\n } else if (schema instanceof zod.ZodObject) {\n return schema.passthrough();\n } else if (schema instanceof zod.Schema) {\n return schema;\n }\n return zod.object(schema).passthrough();\n};\n\nconst validateTaskInput = async (params: IValidateParams) => {\n const { definition, data, context } = params;\n if (!definition.createInputValidation) {\n return;\n }\n const schema = definition.createInputValidation({\n context,\n validator: zod\n });\n /**\n * If the schema is not an object, we need to wrap it with the `object` function.\n */\n const validate = getZodSchema(schema);\n\n const result = await validate.safeParseAsync(data.input);\n if (result.success) {\n return;\n }\n throw createZodError(result.error);\n};\n\nexport const createTaskCrud = (context: Context): ITasksContextCrudObject => {\n const onTaskBeforeCreate = createTopic<OnTaskBeforeCreateTopicParams>(\"tasks.onBeforeCreate\");\n const onTaskAfterCreate = createTopic<OnTaskAfterCreateTopicParams>(\"tasks.onAfterCreate\");\n const onTaskBeforeUpdate = createTopic<OnTaskBeforeUpdateTopicParams>(\"tasks.onBeforeUpdate\");\n const onTaskAfterUpdate = createTopic<OnTaskAfterUpdateTopicParams>(\"tasks.onAfterUpdate\");\n const onTaskBeforeDelete = createTopic<OnTaskBeforeDeleteTopicParams>(\"tasks.onBeforeDelete\");\n const onTaskAfterDelete = createTopic<OnTaskAfterDeleteTopicParams>(\"tasks.onAfterDelete\");\n\n const getTaskModel = async (): Promise<CmsModel> => {\n return await context.security.withoutAuthorization(async () => {\n const model = await context.cms.getModel(WEBINY_TASK_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(`There is no model \"${WEBINY_TASK_MODEL_ID}\".`);\n });\n };\n\n const getLogModel = async (): Promise<CmsModel> => {\n return await context.security.withoutAuthorization(async () => {\n const model = await context.cms.getModel(WEBINY_TASK_LOG_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(`There is no model \"${WEBINY_TASK_LOG_MODEL_ID}\".`);\n });\n };\n\n const getTask = async <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string\n ) => {\n let entry: CmsEntry;\n try {\n entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.getEntryById(model, createRevisionId(id));\n });\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n\n if (!entry) {\n return null;\n }\n\n return convertToTask(entry as unknown as CmsEntry<ITask<T, O>>);\n };\n\n const listTasks = async <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params?: IListTaskParams\n ) => {\n const [items, meta] = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.listLatestEntries<ITask<T, O>>(model, {\n ...params,\n where: remapWhere(params?.where)\n });\n });\n\n return {\n items: items.map(item => convertToTask<T, O>(item)),\n meta\n };\n };\n\n const createTask = async (data: ITaskCreateData) => {\n const definition = context.tasks.getDefinition(data.definitionId);\n if (!definition) {\n throw new WebinyError(`There is no task definition.`, \"TASK_DEFINITION_ERROR\", {\n id: data.definitionId\n });\n }\n\n await validateTaskInput({\n context,\n definition,\n data\n });\n\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.createEntry(model, {\n ...data,\n iterations: 0,\n taskStatus: TaskDataStatus.PENDING\n });\n });\n\n return convertToTask(entry as unknown as CmsEntry<ITask>);\n };\n\n const updateTask = async <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string,\n data: ITaskUpdateData<T, O>\n ) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.updateEntry(model, createRevisionId(id), {\n ...data,\n savedOn: new Date().toISOString()\n });\n });\n return convertToTask<T, O>(entry as unknown as CmsEntry<ITask<T, O>>);\n };\n\n const deleteTask = async (id: string) => {\n return context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n await context.cms.deleteEntry(model, createRevisionId(id));\n return true;\n });\n };\n\n const createLog = async (task: Pick<ITask, \"id\">, data: ITaskLogCreateInput) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n\n return await context.cms.createEntry(model, {\n ...data,\n task: task.id\n });\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const updateLog = async (id: string, data: ITaskLogUpdateInput) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n\n return await context.cms.updateEntry(model, createRevisionId(id), data);\n });\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const deleteLog = async (id: string) => {\n return context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n await context.cms.deleteEntry(model, id);\n return true;\n });\n };\n\n const getLog = async (id: string): Promise<ITaskLog | null> => {\n try {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n return await context.cms.getEntryById(model, id);\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n };\n\n const getLatestLog = async (taskId: string): Promise<ITaskLog> => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n const [items] = await context.cms.listLatestEntries<ITaskLog>(model, {\n where: {\n task: taskId\n },\n sort: [\"createdOn_DESC\"],\n limit: 1\n });\n const [item] = items;\n if (!item) {\n throw new NotFoundError(`No existing latest log found for task \"${taskId}\".`);\n }\n return item;\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const listLogs = async (params: IListTaskLogParams) => {\n const [items, meta] = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n return await context.cms.listLatestEntries<ITaskLog>(model, {\n ...params,\n where: remapWhere(params.where)\n });\n });\n\n return {\n items: items.map(item => convertToLog(item)),\n meta\n };\n };\n\n return {\n onTaskBeforeCreate,\n onTaskAfterCreate,\n onTaskBeforeUpdate,\n onTaskAfterUpdate,\n onTaskBeforeDelete,\n onTaskAfterDelete,\n getTask,\n listTasks,\n createTask,\n updateTask,\n deleteTask,\n createLog,\n updateLog,\n deleteLog,\n getLog,\n listLogs,\n getLatestLog,\n getTaskModel,\n getLogModel\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"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","createCleanupTaskSubtree","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","looseObject","ZodObject","loose","ZodType","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","cleanupTaskSubtree","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/security/IdentityContext/index.js\";\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/index.js\";\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\";\nimport { createCleanupTaskSubtree } from \"./cleanupTaskSubtree.js\";\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.ZodTypeAny> | zod.ZodTypeAny) => {\n if (!schema) {\n return zod.looseObject({});\n } else if (schema instanceof zod.ZodObject) {\n return schema.loose();\n } else if (schema instanceof zod.ZodType) {\n return schema;\n }\n return zod.looseObject(schema);\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 cleanupTaskSubtree = createCleanupTaskSubtree(context);\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 cleanupTaskSubtree,\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 type { 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