@webiny/background-tasks 0.0.0-unstable.0156a4c312

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 (666) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/admin/BackgroundTaskRoutes.d.ts +2 -0
  4. package/admin/BackgroundTaskRoutes.js +70 -0
  5. package/admin/BackgroundTaskRoutes.js.map +1 -0
  6. package/admin/BackgroundTasks.d.ts +2 -0
  7. package/admin/BackgroundTasks.js +55 -0
  8. package/admin/BackgroundTasks.js.map +1 -0
  9. package/admin/features/abortTask/AbortTaskGateway.d.ts +12 -0
  10. package/admin/features/abortTask/AbortTaskGateway.js +62 -0
  11. package/admin/features/abortTask/AbortTaskGateway.js.map +1 -0
  12. package/admin/features/abortTask/AbortTaskUseCase.d.ts +11 -0
  13. package/admin/features/abortTask/AbortTaskUseCase.js +18 -0
  14. package/admin/features/abortTask/AbortTaskUseCase.js.map +1 -0
  15. package/admin/features/abortTask/abstractions.d.ts +19 -0
  16. package/admin/features/abortTask/abstractions.js +6 -0
  17. package/admin/features/abortTask/abstractions.js.map +1 -0
  18. package/admin/features/abortTask/feature.d.ts +3 -0
  19. package/admin/features/abortTask/feature.js +19 -0
  20. package/admin/features/abortTask/feature.js.map +1 -0
  21. package/admin/features/abortTask/index.d.ts +2 -0
  22. package/admin/features/abortTask/index.js +2 -0
  23. package/admin/features/deleteTask/DeleteTaskGateway.d.ts +11 -0
  24. package/admin/features/deleteTask/DeleteTaskGateway.js +41 -0
  25. package/admin/features/deleteTask/DeleteTaskGateway.js.map +1 -0
  26. package/admin/features/deleteTask/DeleteTaskUseCase.d.ts +10 -0
  27. package/admin/features/deleteTask/DeleteTaskUseCase.js +18 -0
  28. package/admin/features/deleteTask/DeleteTaskUseCase.js.map +1 -0
  29. package/admin/features/deleteTask/abstractions.d.ts +14 -0
  30. package/admin/features/deleteTask/abstractions.js +6 -0
  31. package/admin/features/deleteTask/abstractions.js.map +1 -0
  32. package/admin/features/deleteTask/feature.d.ts +3 -0
  33. package/admin/features/deleteTask/feature.js +19 -0
  34. package/admin/features/deleteTask/feature.js.map +1 -0
  35. package/admin/features/deleteTask/index.d.ts +2 -0
  36. package/admin/features/deleteTask/index.js +2 -0
  37. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.d.ts +12 -0
  38. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.js +40 -0
  39. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.js.map +1 -0
  40. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.d.ts +11 -0
  41. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.js +18 -0
  42. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.js.map +1 -0
  43. package/admin/features/getBackgroundTaskSettings/abstractions.d.ts +15 -0
  44. package/admin/features/getBackgroundTaskSettings/abstractions.js +6 -0
  45. package/admin/features/getBackgroundTaskSettings/abstractions.js.map +1 -0
  46. package/admin/features/getBackgroundTaskSettings/feature.d.ts +3 -0
  47. package/admin/features/getBackgroundTaskSettings/feature.js +19 -0
  48. package/admin/features/getBackgroundTaskSettings/feature.js.map +1 -0
  49. package/admin/features/getBackgroundTaskSettings/index.d.ts +3 -0
  50. package/admin/features/getBackgroundTaskSettings/index.js +2 -0
  51. package/admin/features/getTask/GetTaskGateway.d.ts +12 -0
  52. package/admin/features/getTask/GetTaskGateway.js +61 -0
  53. package/admin/features/getTask/GetTaskGateway.js.map +1 -0
  54. package/admin/features/getTask/GetTaskUseCase.d.ts +11 -0
  55. package/admin/features/getTask/GetTaskUseCase.js +18 -0
  56. package/admin/features/getTask/GetTaskUseCase.js.map +1 -0
  57. package/admin/features/getTask/abstractions.d.ts +15 -0
  58. package/admin/features/getTask/abstractions.js +6 -0
  59. package/admin/features/getTask/abstractions.js.map +1 -0
  60. package/admin/features/getTask/feature.d.ts +3 -0
  61. package/admin/features/getTask/feature.js +19 -0
  62. package/admin/features/getTask/feature.js.map +1 -0
  63. package/admin/features/getTask/index.d.ts +2 -0
  64. package/admin/features/getTask/index.js +2 -0
  65. package/admin/features/listDefinitions/ListDefinitionsGateway.d.ts +12 -0
  66. package/admin/features/listDefinitions/ListDefinitionsGateway.js +42 -0
  67. package/admin/features/listDefinitions/ListDefinitionsGateway.js.map +1 -0
  68. package/admin/features/listDefinitions/ListDefinitionsUseCase.d.ts +11 -0
  69. package/admin/features/listDefinitions/ListDefinitionsUseCase.js +18 -0
  70. package/admin/features/listDefinitions/ListDefinitionsUseCase.js.map +1 -0
  71. package/admin/features/listDefinitions/abstractions.d.ts +15 -0
  72. package/admin/features/listDefinitions/abstractions.js +6 -0
  73. package/admin/features/listDefinitions/abstractions.js.map +1 -0
  74. package/admin/features/listDefinitions/feature.d.ts +3 -0
  75. package/admin/features/listDefinitions/feature.js +19 -0
  76. package/admin/features/listDefinitions/feature.js.map +1 -0
  77. package/admin/features/listDefinitions/index.d.ts +2 -0
  78. package/admin/features/listDefinitions/index.js +2 -0
  79. package/admin/features/listLogs/ListLogsGateway.d.ts +11 -0
  80. package/admin/features/listLogs/ListLogsGateway.js +73 -0
  81. package/admin/features/listLogs/ListLogsGateway.js.map +1 -0
  82. package/admin/features/listLogs/ListLogsUseCase.d.ts +10 -0
  83. package/admin/features/listLogs/ListLogsUseCase.js +18 -0
  84. package/admin/features/listLogs/ListLogsUseCase.js.map +1 -0
  85. package/admin/features/listLogs/abstractions.d.ts +30 -0
  86. package/admin/features/listLogs/abstractions.js +6 -0
  87. package/admin/features/listLogs/abstractions.js.map +1 -0
  88. package/admin/features/listLogs/feature.d.ts +3 -0
  89. package/admin/features/listLogs/feature.js +19 -0
  90. package/admin/features/listLogs/feature.js.map +1 -0
  91. package/admin/features/listLogs/index.d.ts +2 -0
  92. package/admin/features/listLogs/index.js +2 -0
  93. package/admin/features/listTasks/ListTasksGateway.d.ts +11 -0
  94. package/admin/features/listTasks/ListTasksGateway.js +79 -0
  95. package/admin/features/listTasks/ListTasksGateway.js.map +1 -0
  96. package/admin/features/listTasks/ListTasksUseCase.d.ts +10 -0
  97. package/admin/features/listTasks/ListTasksUseCase.js +18 -0
  98. package/admin/features/listTasks/ListTasksUseCase.js.map +1 -0
  99. package/admin/features/listTasks/abstractions.d.ts +31 -0
  100. package/admin/features/listTasks/abstractions.js +6 -0
  101. package/admin/features/listTasks/abstractions.js.map +1 -0
  102. package/admin/features/listTasks/feature.d.ts +3 -0
  103. package/admin/features/listTasks/feature.js +19 -0
  104. package/admin/features/listTasks/feature.js.map +1 -0
  105. package/admin/features/listTasks/index.d.ts +2 -0
  106. package/admin/features/listTasks/index.js +2 -0
  107. package/admin/features/permissions/abstractions.d.ts +17 -0
  108. package/admin/features/permissions/abstractions.js +6 -0
  109. package/admin/features/permissions/abstractions.js.map +1 -0
  110. package/admin/features/permissions/feature.d.ts +14 -0
  111. package/admin/features/permissions/feature.js +7 -0
  112. package/admin/features/permissions/feature.js.map +1 -0
  113. package/admin/features/permissions/index.d.ts +2 -0
  114. package/admin/features/permissions/index.js +2 -0
  115. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.d.ts +12 -0
  116. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.js +43 -0
  117. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.js.map +1 -0
  118. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.d.ts +11 -0
  119. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js +18 -0
  120. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js.map +1 -0
  121. package/admin/features/updateBackgroundTaskSettings/abstractions.d.ts +18 -0
  122. package/admin/features/updateBackgroundTaskSettings/abstractions.js +6 -0
  123. package/admin/features/updateBackgroundTaskSettings/abstractions.js.map +1 -0
  124. package/admin/features/updateBackgroundTaskSettings/feature.d.ts +3 -0
  125. package/admin/features/updateBackgroundTaskSettings/feature.js +19 -0
  126. package/admin/features/updateBackgroundTaskSettings/feature.js.map +1 -0
  127. package/admin/features/updateBackgroundTaskSettings/index.d.ts +3 -0
  128. package/admin/features/updateBackgroundTaskSettings/index.js +2 -0
  129. package/admin/index.d.ts +2 -0
  130. package/admin/index.js +2 -0
  131. package/admin/permissions.d.ts +12 -0
  132. package/admin/permissions.js +22 -0
  133. package/admin/permissions.js.map +1 -0
  134. package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.d.ts +21 -0
  135. package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js +86 -0
  136. package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js.map +1 -0
  137. package/admin/presentation/BackgroundTaskSettings/abstractions.d.ts +16 -0
  138. package/admin/presentation/BackgroundTaskSettings/abstractions.js +5 -0
  139. package/admin/presentation/BackgroundTaskSettings/abstractions.js.map +1 -0
  140. package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.d.ts +2 -0
  141. package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js +56 -0
  142. package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js.map +1 -0
  143. package/admin/presentation/BackgroundTaskSettings/feature.d.ts +3 -0
  144. package/admin/presentation/BackgroundTaskSettings/feature.js +17 -0
  145. package/admin/presentation/BackgroundTaskSettings/feature.js.map +1 -0
  146. package/admin/presentation/BackgroundTaskSettings/index.d.ts +2 -0
  147. package/admin/presentation/BackgroundTaskSettings/index.js +2 -0
  148. package/admin/presentation/TaskDefinitions/TaskDefinitionsPresenter.d.ts +14 -0
  149. package/admin/presentation/TaskDefinitions/TaskDefinitionsPresenter.js +41 -0
  150. package/admin/presentation/TaskDefinitions/TaskDefinitionsPresenter.js.map +1 -0
  151. package/admin/presentation/TaskDefinitions/abstractions.d.ts +14 -0
  152. package/admin/presentation/TaskDefinitions/abstractions.js +5 -0
  153. package/admin/presentation/TaskDefinitions/abstractions.js.map +1 -0
  154. package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.d.ts +2 -0
  155. package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js +76 -0
  156. package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js.map +1 -0
  157. package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.d.ts +2 -0
  158. package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js +16 -0
  159. package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js.map +1 -0
  160. package/admin/presentation/TaskDefinitions/feature.d.ts +3 -0
  161. package/admin/presentation/TaskDefinitions/feature.js +17 -0
  162. package/admin/presentation/TaskDefinitions/feature.js.map +1 -0
  163. package/admin/presentation/TaskDefinitions/index.d.ts +2 -0
  164. package/admin/presentation/TaskDefinitions/index.js +2 -0
  165. package/admin/presentation/TaskDetail/TaskDetailPresenter.d.ts +24 -0
  166. package/admin/presentation/TaskDetail/TaskDetailPresenter.js +87 -0
  167. package/admin/presentation/TaskDetail/TaskDetailPresenter.js.map +1 -0
  168. package/admin/presentation/TaskDetail/abstractions.d.ts +24 -0
  169. package/admin/presentation/TaskDetail/abstractions.js +5 -0
  170. package/admin/presentation/TaskDetail/abstractions.js.map +1 -0
  171. package/admin/presentation/TaskDetail/components/TaskDetailDrawer.d.ts +11 -0
  172. package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js +270 -0
  173. package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js.map +1 -0
  174. package/admin/presentation/TaskDetail/feature.d.ts +3 -0
  175. package/admin/presentation/TaskDetail/feature.js +17 -0
  176. package/admin/presentation/TaskDetail/feature.js.map +1 -0
  177. package/admin/presentation/TaskDetail/index.d.ts +2 -0
  178. package/admin/presentation/TaskDetail/index.js +2 -0
  179. package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.d.ts +15 -0
  180. package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +91 -0
  181. package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -0
  182. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.d.ts +54 -0
  183. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js +109 -0
  184. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js.map +1 -0
  185. package/admin/presentation/TaskExecutions/abstractions.d.ts +28 -0
  186. package/admin/presentation/TaskExecutions/abstractions.js +5 -0
  187. package/admin/presentation/TaskExecutions/abstractions.js.map +1 -0
  188. package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.d.ts +2 -0
  189. package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.js +16 -0
  190. package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.js.map +1 -0
  191. package/admin/presentation/TaskExecutions/components/TaskExecutionsView.d.ts +2 -0
  192. package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js +341 -0
  193. package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js.map +1 -0
  194. package/admin/presentation/TaskExecutions/feature.d.ts +3 -0
  195. package/admin/presentation/TaskExecutions/feature.js +17 -0
  196. package/admin/presentation/TaskExecutions/feature.js.map +1 -0
  197. package/admin/presentation/TaskExecutions/index.d.ts +2 -0
  198. package/admin/presentation/TaskExecutions/index.js +2 -0
  199. package/admin/presentation/security/HasPermission.d.ts +12 -0
  200. package/admin/presentation/security/HasPermission.js +6 -0
  201. package/admin/presentation/security/HasPermission.js.map +1 -0
  202. package/admin/presentation/security/usePermissions.d.ts +12 -0
  203. package/admin/presentation/security/usePermissions.js +6 -0
  204. package/admin/presentation/security/usePermissions.js.map +1 -0
  205. package/admin/routes.d.ts +6 -0
  206. package/admin/routes.js +18 -0
  207. package/admin/routes.js.map +1 -0
  208. package/admin/shared/types.d.ts +18 -0
  209. package/admin/shared/types.js +0 -0
  210. package/api/BackgroundTasksFeature.d.ts +4 -0
  211. package/api/BackgroundTasksFeature.js +79 -0
  212. package/api/BackgroundTasksFeature.js.map +1 -0
  213. package/api/abstractions/Timer.d.ts +1 -0
  214. package/api/abstractions/Timer.js +0 -0
  215. package/api/abstractions/index.d.ts +1 -0
  216. package/api/abstractions/index.js +1 -0
  217. package/api/crud/TaskLogPrivateModel.d.ts +9 -0
  218. package/api/crud/TaskLogPrivateModel.js +41 -0
  219. package/api/crud/TaskLogPrivateModel.js.map +1 -0
  220. package/api/crud/TaskPrivateModel.d.ts +9 -0
  221. package/api/crud/TaskPrivateModel.js +56 -0
  222. package/api/crud/TaskPrivateModel.js.map +1 -0
  223. package/api/decorators/SelfCleaningTaskHandlerDecorator.d.ts +33 -0
  224. package/api/decorators/SelfCleaningTaskHandlerDecorator.js +69 -0
  225. package/api/decorators/SelfCleaningTaskHandlerDecorator.js.map +1 -0
  226. package/api/decorators/TaskDefinitionDefaultsDecorator.d.ts +27 -0
  227. package/api/decorators/TaskDefinitionDefaultsDecorator.js +47 -0
  228. package/api/decorators/TaskDefinitionDefaultsDecorator.js.map +1 -0
  229. package/api/domain/BackgroundTaskSettings.d.ts +3 -0
  230. package/api/domain/BackgroundTaskSettings.js +0 -0
  231. package/api/domain/TaskService.d.ts +12 -0
  232. package/api/domain/TaskService.js +5 -0
  233. package/api/domain/TaskService.js.map +1 -0
  234. package/api/domain/constants.d.ts +3 -0
  235. package/api/domain/constants.js +6 -0
  236. package/api/domain/constants.js.map +1 -0
  237. package/api/domain/errors.d.ts +61 -0
  238. package/api/domain/errors.js +109 -0
  239. package/api/domain/errors.js.map +1 -0
  240. package/api/domain/task/TaskLogModelProvider.d.ts +12 -0
  241. package/api/domain/task/TaskLogModelProvider.js +23 -0
  242. package/api/domain/task/TaskLogModelProvider.js.map +1 -0
  243. package/api/domain/task/TaskLogsRepository.d.ts +34 -0
  244. package/api/domain/task/TaskLogsRepository.js +146 -0
  245. package/api/domain/task/TaskLogsRepository.js.map +1 -0
  246. package/api/domain/task/TaskModelProvider.d.ts +12 -0
  247. package/api/domain/task/TaskModelProvider.js +23 -0
  248. package/api/domain/task/TaskModelProvider.js.map +1 -0
  249. package/api/domain/task/TasksRepository.d.ts +37 -0
  250. package/api/domain/task/TasksRepository.js +126 -0
  251. package/api/domain/task/TasksRepository.js.map +1 -0
  252. package/api/domain/task/abstractions.d.ts +50 -0
  253. package/api/domain/task/abstractions.js +8 -0
  254. package/api/domain/task/abstractions.js.map +1 -0
  255. package/api/domain/task/createRevisionId.d.ts +1 -0
  256. package/api/domain/task/createRevisionId.js +8 -0
  257. package/api/domain/task/createRevisionId.js.map +1 -0
  258. package/api/domain/task/entryToTask.d.ts +3 -0
  259. package/api/domain/task/entryToTask.js +20 -0
  260. package/api/domain/task/entryToTask.js.map +1 -0
  261. package/api/domain/task/entryToTaskLog.d.ts +3 -0
  262. package/api/domain/task/entryToTaskLog.js +12 -0
  263. package/api/domain/task/entryToTaskLog.js.map +1 -0
  264. package/api/events/TaskAfterCreateEvent.d.ts +6 -0
  265. package/api/events/TaskAfterCreateEvent.js +13 -0
  266. package/api/events/TaskAfterCreateEvent.js.map +1 -0
  267. package/api/events/TaskAfterDeleteEvent.d.ts +6 -0
  268. package/api/events/TaskAfterDeleteEvent.js +13 -0
  269. package/api/events/TaskAfterDeleteEvent.js.map +1 -0
  270. package/api/events/TaskAfterUpdateEvent.d.ts +6 -0
  271. package/api/events/TaskAfterUpdateEvent.js +13 -0
  272. package/api/events/TaskAfterUpdateEvent.js.map +1 -0
  273. package/api/events/TaskBeforeCreateEvent.d.ts +6 -0
  274. package/api/events/TaskBeforeCreateEvent.js +13 -0
  275. package/api/events/TaskBeforeCreateEvent.js.map +1 -0
  276. package/api/events/TaskBeforeDeleteEvent.d.ts +6 -0
  277. package/api/events/TaskBeforeDeleteEvent.js +13 -0
  278. package/api/events/TaskBeforeDeleteEvent.js.map +1 -0
  279. package/api/events/TaskBeforeUpdateEvent.d.ts +6 -0
  280. package/api/events/TaskBeforeUpdateEvent.js +13 -0
  281. package/api/events/TaskBeforeUpdateEvent.js.map +1 -0
  282. package/api/events/abstractions.d.ts +53 -0
  283. package/api/events/abstractions.js +10 -0
  284. package/api/events/abstractions.js.map +1 -0
  285. package/api/events/index.d.ts +7 -0
  286. package/api/events/index.js +7 -0
  287. package/api/features/AbortTask/AbortTaskUseCase.d.ts +9 -0
  288. package/api/features/AbortTask/AbortTaskUseCase.js +12 -0
  289. package/api/features/AbortTask/AbortTaskUseCase.js.map +1 -0
  290. package/api/features/AbortTask/abstractions.d.ts +25 -0
  291. package/api/features/AbortTask/abstractions.js +5 -0
  292. package/api/features/AbortTask/abstractions.js.map +1 -0
  293. package/api/features/AbortTask/feature.d.ts +4 -0
  294. package/api/features/AbortTask/feature.js +13 -0
  295. package/api/features/AbortTask/feature.js.map +1 -0
  296. package/api/features/AbortTask/index.d.ts +2 -0
  297. package/api/features/AbortTask/index.js +2 -0
  298. package/api/features/BackgroundTaskPermissions/abstractions.d.ts +17 -0
  299. package/api/features/BackgroundTaskPermissions/abstractions.js +6 -0
  300. package/api/features/BackgroundTaskPermissions/abstractions.js.map +1 -0
  301. package/api/features/BackgroundTaskPermissions/feature.d.ts +4 -0
  302. package/api/features/BackgroundTaskPermissions/feature.js +7 -0
  303. package/api/features/BackgroundTaskPermissions/feature.js.map +1 -0
  304. package/api/features/BackgroundTaskPermissions/index.d.ts +2 -0
  305. package/api/features/BackgroundTaskPermissions/index.js +2 -0
  306. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.d.ts +27 -0
  307. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +117 -0
  308. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -0
  309. package/api/features/CleanupTaskSubtree/abstractions.d.ts +7 -0
  310. package/api/features/CleanupTaskSubtree/abstractions.js +5 -0
  311. package/api/features/CleanupTaskSubtree/abstractions.js.map +1 -0
  312. package/api/features/CleanupTaskSubtree/feature.d.ts +4 -0
  313. package/api/features/CleanupTaskSubtree/feature.js +11 -0
  314. package/api/features/CleanupTaskSubtree/feature.js.map +1 -0
  315. package/api/features/CleanupTaskSubtree/index.d.ts +2 -0
  316. package/api/features/CleanupTaskSubtree/index.js +2 -0
  317. package/api/features/CreateTask/CreateTaskUseCase.d.ts +17 -0
  318. package/api/features/CreateTask/CreateTaskUseCase.js +56 -0
  319. package/api/features/CreateTask/CreateTaskUseCase.js.map +1 -0
  320. package/api/features/CreateTask/abstractions.d.ts +21 -0
  321. package/api/features/CreateTask/abstractions.js +5 -0
  322. package/api/features/CreateTask/abstractions.js.map +1 -0
  323. package/api/features/CreateTask/feature.d.ts +4 -0
  324. package/api/features/CreateTask/feature.js +11 -0
  325. package/api/features/CreateTask/feature.js.map +1 -0
  326. package/api/features/CreateTask/index.d.ts +2 -0
  327. package/api/features/CreateTask/index.js +2 -0
  328. package/api/features/CreateTaskLog/CreateTaskLogUseCase.d.ts +13 -0
  329. package/api/features/CreateTaskLog/CreateTaskLogUseCase.js +19 -0
  330. package/api/features/CreateTaskLog/CreateTaskLogUseCase.js.map +1 -0
  331. package/api/features/CreateTaskLog/abstractions.d.ts +16 -0
  332. package/api/features/CreateTaskLog/abstractions.js +5 -0
  333. package/api/features/CreateTaskLog/abstractions.js.map +1 -0
  334. package/api/features/CreateTaskLog/feature.d.ts +4 -0
  335. package/api/features/CreateTaskLog/feature.js +11 -0
  336. package/api/features/CreateTaskLog/feature.js.map +1 -0
  337. package/api/features/CreateTaskLog/index.d.ts +2 -0
  338. package/api/features/CreateTaskLog/index.js +2 -0
  339. package/api/features/DeleteTask/DeleteTaskUseCase.d.ts +14 -0
  340. package/api/features/DeleteTask/DeleteTaskUseCase.js +34 -0
  341. package/api/features/DeleteTask/DeleteTaskUseCase.js.map +1 -0
  342. package/api/features/DeleteTask/abstractions.d.ts +17 -0
  343. package/api/features/DeleteTask/abstractions.js +5 -0
  344. package/api/features/DeleteTask/abstractions.js.map +1 -0
  345. package/api/features/DeleteTask/feature.d.ts +4 -0
  346. package/api/features/DeleteTask/feature.js +11 -0
  347. package/api/features/DeleteTask/feature.js.map +1 -0
  348. package/api/features/DeleteTask/index.d.ts +2 -0
  349. package/api/features/DeleteTask/index.js +2 -0
  350. package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.d.ts +11 -0
  351. package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.js +19 -0
  352. package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.js.map +1 -0
  353. package/api/features/DeleteTaskLog/abstractions.d.ts +14 -0
  354. package/api/features/DeleteTaskLog/abstractions.js +5 -0
  355. package/api/features/DeleteTaskLog/abstractions.js.map +1 -0
  356. package/api/features/DeleteTaskLog/feature.d.ts +4 -0
  357. package/api/features/DeleteTaskLog/feature.js +11 -0
  358. package/api/features/DeleteTaskLog/feature.js.map +1 -0
  359. package/api/features/DeleteTaskLog/index.d.ts +2 -0
  360. package/api/features/DeleteTaskLog/index.js +2 -0
  361. package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.d.ts +21 -0
  362. package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js +63 -0
  363. package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js.map +1 -0
  364. package/api/features/GetBackgroundTaskSettings/abstractions.d.ts +13 -0
  365. package/api/features/GetBackgroundTaskSettings/abstractions.js +5 -0
  366. package/api/features/GetBackgroundTaskSettings/abstractions.js.map +1 -0
  367. package/api/features/GetBackgroundTaskSettings/feature.d.ts +4 -0
  368. package/api/features/GetBackgroundTaskSettings/feature.js +11 -0
  369. package/api/features/GetBackgroundTaskSettings/feature.js.map +1 -0
  370. package/api/features/GetBackgroundTaskSettings/index.d.ts +2 -0
  371. package/api/features/GetBackgroundTaskSettings/index.js +2 -0
  372. package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.d.ts +11 -0
  373. package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.js +19 -0
  374. package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.js.map +1 -0
  375. package/api/features/GetLatestTaskLog/abstractions.d.ts +15 -0
  376. package/api/features/GetLatestTaskLog/abstractions.js +5 -0
  377. package/api/features/GetLatestTaskLog/abstractions.js.map +1 -0
  378. package/api/features/GetLatestTaskLog/feature.d.ts +4 -0
  379. package/api/features/GetLatestTaskLog/feature.js +11 -0
  380. package/api/features/GetLatestTaskLog/feature.js.map +1 -0
  381. package/api/features/GetLatestTaskLog/index.d.ts +2 -0
  382. package/api/features/GetLatestTaskLog/index.js +2 -0
  383. package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.d.ts +13 -0
  384. package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.js +51 -0
  385. package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.js.map +1 -0
  386. package/api/features/GetRunnableTaskDefinition/abstractions.d.ts +17 -0
  387. package/api/features/GetRunnableTaskDefinition/abstractions.js +5 -0
  388. package/api/features/GetRunnableTaskDefinition/abstractions.js.map +1 -0
  389. package/api/features/GetRunnableTaskDefinition/feature.d.ts +4 -0
  390. package/api/features/GetRunnableTaskDefinition/feature.js +11 -0
  391. package/api/features/GetRunnableTaskDefinition/feature.js.map +1 -0
  392. package/api/features/GetRunnableTaskDefinition/index.d.ts +2 -0
  393. package/api/features/GetRunnableTaskDefinition/index.js +2 -0
  394. package/api/features/GetTask/GetTaskUseCase.d.ts +13 -0
  395. package/api/features/GetTask/GetTaskUseCase.js +19 -0
  396. package/api/features/GetTask/GetTaskUseCase.js.map +1 -0
  397. package/api/features/GetTask/abstractions.d.ts +17 -0
  398. package/api/features/GetTask/abstractions.js +5 -0
  399. package/api/features/GetTask/abstractions.js.map +1 -0
  400. package/api/features/GetTask/feature.d.ts +4 -0
  401. package/api/features/GetTask/feature.js +11 -0
  402. package/api/features/GetTask/feature.js.map +1 -0
  403. package/api/features/GetTask/index.d.ts +2 -0
  404. package/api/features/GetTask/index.js +2 -0
  405. package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.d.ts +11 -0
  406. package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +24 -0
  407. package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -0
  408. package/api/features/ListTaskDefinitions/abstractions.d.ts +9 -0
  409. package/api/features/ListTaskDefinitions/abstractions.js +5 -0
  410. package/api/features/ListTaskDefinitions/abstractions.js.map +1 -0
  411. package/api/features/ListTaskDefinitions/feature.d.ts +4 -0
  412. package/api/features/ListTaskDefinitions/feature.js +11 -0
  413. package/api/features/ListTaskDefinitions/feature.js.map +1 -0
  414. package/api/features/ListTaskDefinitions/index.d.ts +2 -0
  415. package/api/features/ListTaskDefinitions/index.js +2 -0
  416. package/api/features/ListTaskLogs/ListTaskLogsUseCase.d.ts +12 -0
  417. package/api/features/ListTaskLogs/ListTaskLogsUseCase.js +19 -0
  418. package/api/features/ListTaskLogs/ListTaskLogsUseCase.js.map +1 -0
  419. package/api/features/ListTaskLogs/abstractions.d.ts +15 -0
  420. package/api/features/ListTaskLogs/abstractions.js +5 -0
  421. package/api/features/ListTaskLogs/abstractions.js.map +1 -0
  422. package/api/features/ListTaskLogs/feature.d.ts +4 -0
  423. package/api/features/ListTaskLogs/feature.js +11 -0
  424. package/api/features/ListTaskLogs/feature.js.map +1 -0
  425. package/api/features/ListTaskLogs/index.d.ts +2 -0
  426. package/api/features/ListTaskLogs/index.js +2 -0
  427. package/api/features/ListTasks/ListTasksUseCase.d.ts +13 -0
  428. package/api/features/ListTasks/ListTasksUseCase.js +19 -0
  429. package/api/features/ListTasks/ListTasksUseCase.js.map +1 -0
  430. package/api/features/ListTasks/abstractions.d.ts +19 -0
  431. package/api/features/ListTasks/abstractions.js +5 -0
  432. package/api/features/ListTasks/abstractions.js.map +1 -0
  433. package/api/features/ListTasks/feature.d.ts +4 -0
  434. package/api/features/ListTasks/feature.js +11 -0
  435. package/api/features/ListTasks/feature.js.map +1 -0
  436. package/api/features/ListTasks/index.d.ts +2 -0
  437. package/api/features/ListTasks/index.js +2 -0
  438. package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.d.ts +11 -0
  439. package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.js +19 -0
  440. package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.js.map +1 -0
  441. package/api/features/ListVisibleTaskDefinitions/abstractions.d.ts +9 -0
  442. package/api/features/ListVisibleTaskDefinitions/abstractions.js +5 -0
  443. package/api/features/ListVisibleTaskDefinitions/abstractions.js.map +1 -0
  444. package/api/features/ListVisibleTaskDefinitions/feature.d.ts +4 -0
  445. package/api/features/ListVisibleTaskDefinitions/feature.js +11 -0
  446. package/api/features/ListVisibleTaskDefinitions/feature.js.map +1 -0
  447. package/api/features/ListVisibleTaskDefinitions/index.d.ts +2 -0
  448. package/api/features/ListVisibleTaskDefinitions/index.js +2 -0
  449. package/api/features/TaskController/TaskController.d.ts +49 -0
  450. package/api/features/TaskController/TaskController.js +71 -0
  451. package/api/features/TaskController/TaskController.js.map +1 -0
  452. package/api/features/TaskController/augmentation.d.ts +60 -0
  453. package/api/features/TaskController/augmentation.js +0 -0
  454. package/api/features/TaskController/index.d.ts +2 -0
  455. package/api/features/TaskController/index.js +2 -0
  456. package/api/features/TaskExecutionContext/TaskExecutionContext.d.ts +24 -0
  457. package/api/features/TaskExecutionContext/TaskExecutionContext.js +43 -0
  458. package/api/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -0
  459. package/api/features/TaskExecutionContext/abstractions.d.ts +26 -0
  460. package/api/features/TaskExecutionContext/abstractions.js +5 -0
  461. package/api/features/TaskExecutionContext/abstractions.js.map +1 -0
  462. package/api/features/TaskExecutionContext/feature.d.ts +4 -0
  463. package/api/features/TaskExecutionContext/feature.js +11 -0
  464. package/api/features/TaskExecutionContext/feature.js.map +1 -0
  465. package/api/features/TaskExecutionContext/index.d.ts +1 -0
  466. package/api/features/TaskExecutionContext/index.js +1 -0
  467. package/api/features/TaskHandlerResolver/TaskHandlerResolver.d.ts +12 -0
  468. package/api/features/TaskHandlerResolver/TaskHandlerResolver.js +19 -0
  469. package/api/features/TaskHandlerResolver/TaskHandlerResolver.js.map +1 -0
  470. package/api/features/TaskHandlerResolver/abstractions.d.ts +17 -0
  471. package/api/features/TaskHandlerResolver/abstractions.js +5 -0
  472. package/api/features/TaskHandlerResolver/abstractions.js.map +1 -0
  473. package/api/features/TaskHandlerResolver/feature.d.ts +9 -0
  474. package/api/features/TaskHandlerResolver/feature.js +11 -0
  475. package/api/features/TaskHandlerResolver/feature.js.map +1 -0
  476. package/api/features/TaskHandlerResolver/index.d.ts +2 -0
  477. package/api/features/TaskHandlerResolver/index.js +2 -0
  478. package/api/features/TaskService/BackgroundTaskService.d.ts +42 -0
  479. package/api/features/TaskService/BackgroundTaskService.js +191 -0
  480. package/api/features/TaskService/BackgroundTaskService.js.map +1 -0
  481. package/api/features/TaskService/feature.d.ts +4 -0
  482. package/api/features/TaskService/feature.js +11 -0
  483. package/api/features/TaskService/feature.js.map +1 -0
  484. package/api/features/TaskService/index.d.ts +1 -0
  485. package/api/features/TaskService/index.js +1 -0
  486. package/api/features/TriggerTask/TriggerTaskUseCase.d.ts +9 -0
  487. package/api/features/TriggerTask/TriggerTaskUseCase.js +12 -0
  488. package/api/features/TriggerTask/TriggerTaskUseCase.js.map +1 -0
  489. package/api/features/TriggerTask/abstractions.d.ts +28 -0
  490. package/api/features/TriggerTask/abstractions.js +5 -0
  491. package/api/features/TriggerTask/abstractions.js.map +1 -0
  492. package/api/features/TriggerTask/feature.d.ts +4 -0
  493. package/api/features/TriggerTask/feature.js +13 -0
  494. package/api/features/TriggerTask/feature.js.map +1 -0
  495. package/api/features/TriggerTask/index.d.ts +2 -0
  496. package/api/features/TriggerTask/index.js +2 -0
  497. package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.d.ts +15 -0
  498. package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.js +26 -0
  499. package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.js.map +1 -0
  500. package/api/features/TriggerVisibleTask/abstractions.d.ts +17 -0
  501. package/api/features/TriggerVisibleTask/abstractions.js +5 -0
  502. package/api/features/TriggerVisibleTask/abstractions.js.map +1 -0
  503. package/api/features/TriggerVisibleTask/feature.d.ts +4 -0
  504. package/api/features/TriggerVisibleTask/feature.js +11 -0
  505. package/api/features/TriggerVisibleTask/feature.js.map +1 -0
  506. package/api/features/TriggerVisibleTask/index.d.ts +2 -0
  507. package/api/features/TriggerVisibleTask/index.js +2 -0
  508. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.d.ts +23 -0
  509. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js +67 -0
  510. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -0
  511. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.d.ts +14 -0
  512. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js +27 -0
  513. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js.map +1 -0
  514. package/api/features/UpdateBackgroundTaskSettings/abstractions.d.ts +26 -0
  515. package/api/features/UpdateBackgroundTaskSettings/abstractions.js +6 -0
  516. package/api/features/UpdateBackgroundTaskSettings/abstractions.js.map +1 -0
  517. package/api/features/UpdateBackgroundTaskSettings/feature.d.ts +4 -0
  518. package/api/features/UpdateBackgroundTaskSettings/feature.js +13 -0
  519. package/api/features/UpdateBackgroundTaskSettings/feature.js.map +1 -0
  520. package/api/features/UpdateBackgroundTaskSettings/index.d.ts +2 -0
  521. package/api/features/UpdateBackgroundTaskSettings/index.js +2 -0
  522. package/api/features/UpdateBackgroundTaskSettings/schema.d.ts +4 -0
  523. package/api/features/UpdateBackgroundTaskSettings/schema.js +8 -0
  524. package/api/features/UpdateBackgroundTaskSettings/schema.js.map +1 -0
  525. package/api/features/UpdateTask/UpdateTaskUseCase.d.ts +17 -0
  526. package/api/features/UpdateTask/UpdateTaskUseCase.js +36 -0
  527. package/api/features/UpdateTask/UpdateTaskUseCase.js.map +1 -0
  528. package/api/features/UpdateTask/abstractions.d.ts +22 -0
  529. package/api/features/UpdateTask/abstractions.js +5 -0
  530. package/api/features/UpdateTask/abstractions.js.map +1 -0
  531. package/api/features/UpdateTask/feature.d.ts +4 -0
  532. package/api/features/UpdateTask/feature.js +11 -0
  533. package/api/features/UpdateTask/feature.js.map +1 -0
  534. package/api/features/UpdateTask/index.d.ts +2 -0
  535. package/api/features/UpdateTask/index.js +2 -0
  536. package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.d.ts +12 -0
  537. package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.js +19 -0
  538. package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.js.map +1 -0
  539. package/api/features/UpdateTaskLog/abstractions.d.ts +16 -0
  540. package/api/features/UpdateTaskLog/abstractions.js +5 -0
  541. package/api/features/UpdateTaskLog/abstractions.js.map +1 -0
  542. package/api/features/UpdateTaskLog/feature.d.ts +4 -0
  543. package/api/features/UpdateTaskLog/feature.js +11 -0
  544. package/api/features/UpdateTaskLog/feature.js.map +1 -0
  545. package/api/features/UpdateTaskLog/index.d.ts +2 -0
  546. package/api/features/UpdateTaskLog/index.js +2 -0
  547. package/api/global.d.ts +1 -0
  548. package/api/global.js +1 -0
  549. package/api/graphql/BackgroundTasksGraphQLSchema.d.ts +29 -0
  550. package/api/graphql/BackgroundTasksGraphQLSchema.js +462 -0
  551. package/api/graphql/BackgroundTasksGraphQLSchema.js.map +1 -0
  552. package/api/graphql/checkPermissions.d.ts +7 -0
  553. package/api/graphql/checkPermissions.js +22 -0
  554. package/api/graphql/checkPermissions.js.map +1 -0
  555. package/api/graphql/utils.d.ts +9 -0
  556. package/api/graphql/utils.js +20 -0
  557. package/api/graphql/utils.js.map +1 -0
  558. package/api/handler/types.d.ts +21 -0
  559. package/api/handler/types.js +0 -0
  560. package/api/index.d.ts +21 -0
  561. package/api/index.js +20 -0
  562. package/api/models/BackgroundTaskSettingsModel.d.ts +8 -0
  563. package/api/models/BackgroundTaskSettingsModel.js +27 -0
  564. package/api/models/BackgroundTaskSettingsModel.js.map +1 -0
  565. package/api/permissions.d.ts +12 -0
  566. package/api/permissions.js +22 -0
  567. package/api/permissions.js.map +1 -0
  568. package/api/response/DatabaseResponse.d.ts +12 -0
  569. package/api/response/DatabaseResponse.js +127 -0
  570. package/api/response/DatabaseResponse.js.map +1 -0
  571. package/api/response/Response.d.ts +14 -0
  572. package/api/response/Response.js +91 -0
  573. package/api/response/Response.js.map +1 -0
  574. package/api/response/ResponseAbortedResult.d.ts +9 -0
  575. package/api/response/ResponseAbortedResult.js +12 -0
  576. package/api/response/ResponseAbortedResult.js.map +1 -0
  577. package/api/response/ResponseContinueResult.d.ts +17 -0
  578. package/api/response/ResponseContinueResult.js +16 -0
  579. package/api/response/ResponseContinueResult.js.map +1 -0
  580. package/api/response/ResponseDoneResult.d.ts +11 -0
  581. package/api/response/ResponseDoneResult.js +14 -0
  582. package/api/response/ResponseDoneResult.js.map +1 -0
  583. package/api/response/ResponseErrorResult.d.ts +10 -0
  584. package/api/response/ResponseErrorResult.js +13 -0
  585. package/api/response/ResponseErrorResult.js.map +1 -0
  586. package/api/response/TaskResponse.d.ts +12 -0
  587. package/api/response/TaskResponse.js +53 -0
  588. package/api/response/TaskResponse.js.map +1 -0
  589. package/api/response/abstractions/Response.d.ts +25 -0
  590. package/api/response/abstractions/Response.js +0 -0
  591. package/api/response/abstractions/ResponseAbortedResult.d.ts +5 -0
  592. package/api/response/abstractions/ResponseAbortedResult.js +0 -0
  593. package/api/response/abstractions/ResponseBaseResult.d.ts +7 -0
  594. package/api/response/abstractions/ResponseBaseResult.js +0 -0
  595. package/api/response/abstractions/ResponseContinueResult.d.ts +21 -0
  596. package/api/response/abstractions/ResponseContinueResult.js +0 -0
  597. package/api/response/abstractions/ResponseDoneResult.d.ts +13 -0
  598. package/api/response/abstractions/ResponseDoneResult.js +0 -0
  599. package/api/response/abstractions/ResponseErrorResult.d.ts +18 -0
  600. package/api/response/abstractions/ResponseErrorResult.js +0 -0
  601. package/api/response/abstractions/TaskResponse.d.ts +16 -0
  602. package/api/response/abstractions/TaskResponse.js +0 -0
  603. package/api/response/abstractions/index.d.ts +7 -0
  604. package/api/response/abstractions/index.js +7 -0
  605. package/api/response/index.d.ts +7 -0
  606. package/api/response/index.js +7 -0
  607. package/api/runner/TaskControl.d.ts +48 -0
  608. package/api/runner/TaskControl.js +186 -0
  609. package/api/runner/TaskControl.js.map +1 -0
  610. package/api/runner/TaskEventValidation.d.ts +5 -0
  611. package/api/runner/TaskEventValidation.js +20 -0
  612. package/api/runner/TaskEventValidation.js.map +1 -0
  613. package/api/runner/TaskManager.d.ts +22 -0
  614. package/api/runner/TaskManager.js +83 -0
  615. package/api/runner/TaskManager.js.map +1 -0
  616. package/api/runner/TaskManagerStore.d.ts +57 -0
  617. package/api/runner/TaskManagerStore.js +127 -0
  618. package/api/runner/TaskManagerStore.js.map +1 -0
  619. package/api/runner/TaskRunner.d.ts +25 -0
  620. package/api/runner/TaskRunner.js +86 -0
  621. package/api/runner/TaskRunner.js.map +1 -0
  622. package/api/runner/abstractions/TaskControl.d.ts +10 -0
  623. package/api/runner/abstractions/TaskControl.js +0 -0
  624. package/api/runner/abstractions/TaskEventValidation.d.ts +5 -0
  625. package/api/runner/abstractions/TaskEventValidation.js +0 -0
  626. package/api/runner/abstractions/TaskManager.d.ts +5 -0
  627. package/api/runner/abstractions/TaskManager.js +0 -0
  628. package/api/runner/abstractions/TaskManagerStore.d.ts +92 -0
  629. package/api/runner/abstractions/TaskManagerStore.js +0 -0
  630. package/api/runner/abstractions/TaskRunner.d.ts +13 -0
  631. package/api/runner/abstractions/TaskRunner.js +0 -0
  632. package/api/runner/abstractions/index.d.ts +5 -0
  633. package/api/runner/abstractions/index.js +5 -0
  634. package/api/runner/index.d.ts +1 -0
  635. package/api/runner/index.js +1 -0
  636. package/api/tasks/testingRunTask.d.ts +19 -0
  637. package/api/tasks/testingRunTask.js +25 -0
  638. package/api/tasks/testingRunTask.js.map +1 -0
  639. package/api/types.d.ts +120 -0
  640. package/api/types.js +20 -0
  641. package/api/types.js.map +1 -0
  642. package/api/utils/ObjectUpdater.d.ts +8 -0
  643. package/api/utils/ObjectUpdater.js +33 -0
  644. package/api/utils/ObjectUpdater.js.map +1 -0
  645. package/api/utils/getErrorProperties.d.ts +2 -0
  646. package/api/utils/getErrorProperties.js +9 -0
  647. package/api/utils/getErrorProperties.js.map +1 -0
  648. package/api/utils/getObjectProperties.d.ts +8 -0
  649. package/api/utils/getObjectProperties.js +11 -0
  650. package/api/utils/getObjectProperties.js.map +1 -0
  651. package/api/utils/index.d.ts +3 -0
  652. package/api/utils/index.js +3 -0
  653. package/api/utils/normalizeSelfCleanup.d.ts +2 -0
  654. package/api/utils/normalizeSelfCleanup.js +16 -0
  655. package/api/utils/normalizeSelfCleanup.js.map +1 -0
  656. package/index.d.ts +2 -0
  657. package/index.js +2 -0
  658. package/package.json +65 -0
  659. package/testing/index.d.ts +3 -0
  660. package/testing/index.js +2 -0
  661. package/testing/mockTaskTriggerTransportPlugin.d.ts +2 -0
  662. package/testing/mockTaskTriggerTransportPlugin.js +18 -0
  663. package/testing/mockTaskTriggerTransportPlugin.js.map +1 -0
  664. package/testing/runner.d.ts +19 -0
  665. package/testing/runner.js +44 -0
  666. package/testing/runner.js.map +1 -0
@@ -0,0 +1,25 @@
1
+ import type { ITaskEvent } from "../../../api/handler/types.js";
2
+ import type { IResponseContinueParams, IResponseContinueResult } from "./ResponseContinueResult.js";
3
+ import type { IResponseDoneParams, IResponseDoneResult } from "./ResponseDoneResult.js";
4
+ import type { IResponseErrorParams, IResponseErrorResult } from "./ResponseErrorResult.js";
5
+ import type { IResponseAbortedResult } from "./ResponseAbortedResult.js";
6
+ import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
7
+ export type IResponseFromParams = IResponseDoneResult | IResponseContinueResult | IResponseErrorResult;
8
+ export type IResponseResult = IResponseDoneResult | IResponseContinueResult | IResponseErrorResult | IResponseAbortedResult;
9
+ export interface IResponse {
10
+ readonly event: ITaskEvent;
11
+ setEvent: (event: ITaskEvent) => void;
12
+ from: (params: IResponseFromParams) => IResponseResult;
13
+ done: <O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput>(params?: IResponseDoneParams<O>) => IResponseDoneResult<O>;
14
+ aborted: () => IResponseAbortedResult;
15
+ continue: (params: IResponseContinueParams) => IResponseContinueResult;
16
+ error: (params: IResponseErrorParams) => IResponseErrorResult;
17
+ }
18
+ export interface IResponseAsync {
19
+ readonly response: IResponse;
20
+ from: (result: IResponseResult) => Promise<IResponseResult>;
21
+ done: (params: IResponseDoneParams) => Promise<IResponseDoneResult>;
22
+ continue: (params: IResponseContinueParams) => Promise<IResponseContinueResult | IResponseErrorResult>;
23
+ aborted: () => Promise<IResponseAbortedResult>;
24
+ error: (params: IResponseErrorParams) => Promise<IResponseErrorResult>;
25
+ }
File without changes
@@ -0,0 +1,5 @@
1
+ import type { IResponseBaseResult } from "../../../api/response/abstractions/ResponseBaseResult.js";
2
+ import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
3
+ export interface IResponseAbortedResult extends IResponseBaseResult {
4
+ status: TaskResultStatus.ABORTED;
5
+ }
@@ -0,0 +1,7 @@
1
+ import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
+ export interface IResponseBaseResult {
3
+ status: TaskResultStatus;
4
+ webinyTaskId: string;
5
+ webinyTaskDefinitionId: string;
6
+ tenant: string;
7
+ }
@@ -0,0 +1,21 @@
1
+ import type { ITaskDataInput } from "../../../api/types.js";
2
+ import type { IResponseBaseResult } from "./ResponseBaseResult.js";
3
+ import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
4
+ /**
5
+ * Wait can be used to pause next iteration of the Lambda execution.
6
+ * For example, if the task is hammering the Elasticsearch cluster too much, you can use this to pause the execution for some time.
7
+ */
8
+ export interface IResponseContinueParams<T = ITaskDataInput> {
9
+ message?: string;
10
+ tenant?: string;
11
+ webinyTaskId?: string;
12
+ input: T;
13
+ wait?: number;
14
+ }
15
+ export interface IResponseContinueResult<T = ITaskDataInput> extends IResponseBaseResult {
16
+ message?: string;
17
+ input: T;
18
+ wait?: number;
19
+ delay: -1;
20
+ status: TaskResultStatus.CONTINUE;
21
+ }
@@ -0,0 +1,13 @@
1
+ import type { IResponseBaseResult } from "./ResponseBaseResult.js";
2
+ import { TaskDefinition, TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
3
+ export interface IResponseDoneParams<O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput> {
4
+ tenant?: string;
5
+ webinyTaskId?: string;
6
+ message?: string;
7
+ output?: O;
8
+ }
9
+ export interface IResponseDoneResult<O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput> extends IResponseBaseResult {
10
+ message?: string;
11
+ output?: O;
12
+ status: TaskResultStatus.DONE;
13
+ }
@@ -0,0 +1,18 @@
1
+ import type { IResponseBaseResult } from "./ResponseBaseResult.js";
2
+ import type { GenericRecord } from "@webiny/api/types.js";
3
+ import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
4
+ export interface IResponseError {
5
+ message: string;
6
+ code?: string | null;
7
+ data?: GenericRecord | null;
8
+ stack?: string;
9
+ }
10
+ export interface IResponseErrorParams {
11
+ error: IResponseError | Error;
12
+ tenant?: string;
13
+ webinyTaskId?: string;
14
+ }
15
+ export interface IResponseErrorResult extends IResponseBaseResult {
16
+ error: IResponseError;
17
+ status: TaskResultStatus.ERROR;
18
+ }
@@ -0,0 +1,16 @@
1
+ import type { IResponseError } from "./ResponseErrorResult.js";
2
+ import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
3
+ export interface ITaskResponseContinueOptionsUntil {
4
+ date: Date;
5
+ }
6
+ export interface ITaskResponseContinueOptionsSeconds {
7
+ seconds: number;
8
+ }
9
+ export type ITaskResponseContinueOptions = ITaskResponseContinueOptionsUntil | ITaskResponseContinueOptionsSeconds;
10
+ export interface ITaskResponse<I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput> {
11
+ done(output?: O): TaskDefinition.ResultDone<O>;
12
+ done(message?: string, output?: O): TaskDefinition.ResultDone<O>;
13
+ continue(data: I, options?: ITaskResponseContinueOptions): TaskDefinition.ResultContinue<I>;
14
+ error(error: IResponseError | Error | string): TaskDefinition.ResultError;
15
+ aborted(): TaskDefinition.ResultAborted;
16
+ }
File without changes
@@ -0,0 +1,7 @@
1
+ export * from "./Response.js";
2
+ export * from "./ResponseContinueResult.js";
3
+ export * from "./ResponseDoneResult.js";
4
+ export * from "./ResponseErrorResult.js";
5
+ export * from "./ResponseAbortedResult.js";
6
+ export * from "./ResponseBaseResult.js";
7
+ export * from "./TaskResponse.js";
@@ -0,0 +1,7 @@
1
+ export * from "./Response.js";
2
+ export * from "./ResponseContinueResult.js";
3
+ export * from "./ResponseDoneResult.js";
4
+ export * from "./ResponseErrorResult.js";
5
+ export * from "./ResponseAbortedResult.js";
6
+ export * from "./ResponseBaseResult.js";
7
+ export * from "./TaskResponse.js";
@@ -0,0 +1,7 @@
1
+ export * from "./DatabaseResponse.js";
2
+ export * from "./Response.js";
3
+ export * from "./ResponseContinueResult.js";
4
+ export * from "./ResponseDoneResult.js";
5
+ export * from "./ResponseAbortedResult.js";
6
+ export * from "./ResponseErrorResult.js";
7
+ export * from "./TaskResponse.js";
@@ -0,0 +1,7 @@
1
+ export * from "./DatabaseResponse.js";
2
+ export * from "./Response.js";
3
+ export * from "./ResponseContinueResult.js";
4
+ export * from "./ResponseDoneResult.js";
5
+ export * from "./ResponseAbortedResult.js";
6
+ export * from "./ResponseErrorResult.js";
7
+ export * from "./TaskResponse.js";
@@ -0,0 +1,48 @@
1
+ import type { ITaskEvent } from "../../api/handler/types.js";
2
+ import type { Context } from "../../api/types.js";
3
+ import type { ITaskControl, ITaskRunner } from "./abstractions/index.js";
4
+ import type { IResponse, IResponseResult } from "../../api/response/abstractions/index.js";
5
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
6
+ import { TaskExecutionContext } from "../../api/features/TaskExecutionContext/index.js";
7
+ import type { GetTaskUseCase } from "../../api/features/GetTask/index.js";
8
+ import type { ListTasksUseCase } from "../../api/features/ListTasks/index.js";
9
+ import type { CreateTaskLogUseCase } from "../../api/features/CreateTaskLog/index.js";
10
+ import type { GetLatestTaskLogUseCase } from "../../api/features/GetLatestTaskLog/index.js";
11
+ import type { UpdateTaskLogUseCase } from "../../api/features/UpdateTaskLog/index.js";
12
+ import type { UpdateTaskUseCase } from "../../api/features/UpdateTask/index.js";
13
+ import { GetRunnableTaskDefinitionUseCase } from "../../api/features/GetRunnableTaskDefinition/abstractions.js";
14
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
15
+ import { TaskController } from "@webiny/api-core/features/task/TaskController/abstractions.js";
16
+ /**
17
+ * What TaskControl needs from the container, declared in one place.
18
+ *
19
+ * TaskControl is built by hand (TaskRunner does it), so it cannot take these through DI the way a
20
+ * registered class would. Naming them here is the next best thing: the class states what it uses,
21
+ * TaskRunner resolves them once where it assembles the object, and a test can pass fakes. Reaching
22
+ * into `context.container` from inside a method instead would leave the class with dependencies
23
+ * nothing can see or substitute.
24
+ */
25
+ export interface ITaskControlDependencies {
26
+ logger: Logger.Interface;
27
+ identityContext: IdentityContext.Interface;
28
+ taskExecutionContext: TaskExecutionContext.Interface;
29
+ getTask: GetTaskUseCase.Interface;
30
+ listTasks: ListTasksUseCase.Interface;
31
+ updateTask: UpdateTaskUseCase.Interface;
32
+ getLatestTaskLog: GetLatestTaskLogUseCase.Interface;
33
+ createTaskLog: CreateTaskLogUseCase.Interface;
34
+ updateTaskLog: UpdateTaskLogUseCase.Interface;
35
+ taskController: TaskController.Interface;
36
+ getRunnableTaskDefinition: GetRunnableTaskDefinitionUseCase.Interface;
37
+ }
38
+ export declare class TaskControl implements ITaskControl {
39
+ readonly runner: ITaskRunner;
40
+ readonly response: IResponse;
41
+ readonly context: Context;
42
+ private readonly deps;
43
+ constructor(runner: ITaskRunner, response: IResponse, context: Context, deps: ITaskControlDependencies);
44
+ run(event: Pick<ITaskEvent, "webinyTaskId">): Promise<IResponseResult>;
45
+ private runEvents;
46
+ private getTask;
47
+ private getTaskLog;
48
+ }
@@ -0,0 +1,186 @@
1
+ import { TaskDataStatus } from "../types.js";
2
+ import { TaskManager } from "./TaskManager.js";
3
+ import { DatabaseResponse, TaskResponse } from "../response/index.js";
4
+ import { TaskManagerStore } from "./TaskManagerStore.js";
5
+ import { getErrorProperties } from "../utils/getErrorProperties.js";
6
+ import { AuthenticatedIdentity } from "@webiny/api-core/features/security/IdentityContext/index.js";
7
+ import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
8
+ import { TaskLogNotFoundError, TaskNotFoundError } from "../domain/errors.js";
9
+ class TaskControl {
10
+ constructor(runner, response, context, deps){
11
+ this.runner = runner;
12
+ this.context = context;
13
+ this.response = response;
14
+ this.deps = deps;
15
+ }
16
+ async run(event) {
17
+ const taskId = event.webinyTaskId;
18
+ let task;
19
+ try {
20
+ task = await this.getTask(taskId);
21
+ this.deps.identityContext.setIdentity(new AuthenticatedIdentity({
22
+ id: task.createdBy.id,
23
+ type: task.createdBy.type,
24
+ displayName: task.createdBy.displayName || "",
25
+ context: {
26
+ canAccessTenant: true
27
+ }
28
+ }));
29
+ } catch (error) {
30
+ return this.response.error({
31
+ ...getErrorProperties(error)
32
+ });
33
+ }
34
+ const definitionResult = this.deps.getRunnableTaskDefinition.execute(task.definitionId);
35
+ if (definitionResult.isFail()) return this.response.error({
36
+ error: {
37
+ message: `Task "${task.id}" cannot be executed because there is no "${task.definitionId}" definition plugin.`,
38
+ code: "TASK_DEFINITION_ERROR",
39
+ data: {
40
+ definitionId: task.definitionId
41
+ }
42
+ }
43
+ });
44
+ const definition = definitionResult.value;
45
+ const databaseLogs = true === definition.databaseLogs;
46
+ let taskLog;
47
+ try {
48
+ taskLog = await this.getTaskLog({
49
+ task,
50
+ databaseLogs
51
+ });
52
+ } catch (error) {
53
+ return this.response.error({
54
+ error
55
+ });
56
+ }
57
+ if (task.taskStatus === TaskDataStatus.ABORTED) return this.response.aborted();
58
+ else if (task.taskStatus === TaskDataStatus.SUCCESS) return this.response.error({
59
+ error: {
60
+ message: "Task is already done, cannot run it again."
61
+ }
62
+ });
63
+ else if (task.taskStatus === TaskDataStatus.FAILED) return this.response.error({
64
+ error: {
65
+ message: "Task has failed, cannot run it again."
66
+ }
67
+ });
68
+ const store = new TaskManagerStore({
69
+ context: this.context,
70
+ listTasks: this.deps.listTasks,
71
+ updateTask: this.deps.updateTask,
72
+ updateTaskLog: this.deps.updateTaskLog,
73
+ logger: this.deps.logger,
74
+ task,
75
+ log: taskLog,
76
+ databaseLogs
77
+ });
78
+ const executionContext = this.deps.taskExecutionContext;
79
+ executionContext.setStore(store);
80
+ executionContext.setRunner(this.runner);
81
+ executionContext.setTimer(this.runner.timer);
82
+ executionContext.setResponse(new TaskResponse(this.response));
83
+ const manager = new TaskManager(this.context, this.response, store, {
84
+ taskController: this.deps.taskController,
85
+ identityContext: this.deps.identityContext
86
+ });
87
+ const databaseResponse = new DatabaseResponse(this.response, store);
88
+ try {
89
+ const result = await manager.run(definition);
90
+ const responseResult = await databaseResponse.from(result);
91
+ await this.runEvents(result, definition, store.getTask());
92
+ return responseResult;
93
+ } catch (ex) {
94
+ return await databaseResponse.from(this.response.error({
95
+ error: {
96
+ message: ex.message,
97
+ code: ex.code || "TASK_ERROR",
98
+ stack: ex.stack,
99
+ data: {
100
+ ...ex.data,
101
+ input: task.input
102
+ }
103
+ }
104
+ }));
105
+ } finally{
106
+ executionContext.clear();
107
+ }
108
+ }
109
+ async runEvents(result, definition, task) {
110
+ if (result.status === TaskResultStatus.ERROR && definition.onError) try {
111
+ await definition.onError({
112
+ task,
113
+ definition
114
+ });
115
+ } catch (ex) {
116
+ this.deps.logger.error({
117
+ error: getErrorProperties(ex),
118
+ taskId: task.id,
119
+ hook: "onError"
120
+ }, "Error executing task lifecycle hook.");
121
+ }
122
+ else if (result.status === TaskResultStatus.DONE && definition.onDone) try {
123
+ await definition.onDone({
124
+ task,
125
+ definition
126
+ });
127
+ } catch (ex) {
128
+ this.deps.logger.error({
129
+ error: getErrorProperties(ex),
130
+ taskId: task.id,
131
+ hook: "onDone"
132
+ }, "Error executing task lifecycle hook.");
133
+ }
134
+ }
135
+ async getTask(id) {
136
+ const result = await this.deps.getTask.execute(id);
137
+ if (result.isOk()) return result.value;
138
+ else if (!(result.error instanceof TaskNotFoundError)) {
139
+ const error = result.error;
140
+ throw this.response.error({
141
+ error: {
142
+ message: error.message,
143
+ code: error.code || "TASK_ERROR",
144
+ stack: error.stack,
145
+ data: error.data
146
+ }
147
+ });
148
+ }
149
+ throw this.response.error({
150
+ error: {
151
+ message: `Task "${id}" cannot be executed because it does not exist.`,
152
+ code: "TASK_NOT_FOUND"
153
+ }
154
+ });
155
+ }
156
+ async getTaskLog(params) {
157
+ const { task, databaseLogs } = params;
158
+ if (!databaseLogs) return {
159
+ id: `${task.id}-log`,
160
+ createdOn: task.createdOn,
161
+ createdBy: task.createdBy,
162
+ executionName: task.executionName,
163
+ task: task.id,
164
+ iteration: task.iterations,
165
+ items: []
166
+ };
167
+ let taskLog = null;
168
+ const latest = await this.deps.getLatestTaskLog.execute(task.id);
169
+ if (latest.isOk()) taskLog = latest.value;
170
+ else if (!(latest.error instanceof TaskLogNotFoundError)) throw this.response.error({
171
+ error: latest.error
172
+ });
173
+ const currentIteration = taskLog?.iteration || 0;
174
+ const created = await this.deps.createTaskLog.execute(task, {
175
+ executionName: this.response.event.executionName,
176
+ iteration: currentIteration + 1
177
+ });
178
+ if (created.isFail()) throw this.response.error({
179
+ error: created.error
180
+ });
181
+ return created.value;
182
+ }
183
+ }
184
+ export { TaskControl };
185
+
186
+ //# sourceMappingURL=TaskControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/runner/TaskControl.js","sources":["../../../src/api/runner/TaskControl.ts"],"sourcesContent":["import type { ITaskEvent } from \"~/api/handler/types.js\";\nimport type { Context, ITask, ITaskDataInput, ITaskLog } from \"~/api/types.js\";\nimport { TaskDataStatus } from \"~/api/types.js\";\nimport type { ITaskControl, ITaskRunner } from \"./abstractions/index.js\";\nimport { TaskManager } from \"./TaskManager.js\";\nimport type { IResponse, IResponseResult } from \"~/api/response/abstractions/index.js\";\nimport { DatabaseResponse, TaskResponse } from \"~/api/response/index.js\";\nimport { TaskManagerStore } from \"./TaskManagerStore.js\";\nimport { getErrorProperties } from \"~/api/utils/getErrorProperties.js\";\nimport {\n AuthenticatedIdentity,\n IdentityContext\n} from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { TaskExecutionContext } from \"~/api/features/TaskExecutionContext/index.js\";\nimport {\n TaskDefinition,\n TaskResultStatus\n} from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { GetTaskUseCase } from \"~/api/features/GetTask/index.js\";\nimport type { ListTasksUseCase } from \"~/api/features/ListTasks/index.js\";\nimport type { CreateTaskLogUseCase } from \"~/api/features/CreateTaskLog/index.js\";\nimport type { GetLatestTaskLogUseCase } from \"~/api/features/GetLatestTaskLog/index.js\";\nimport type { UpdateTaskLogUseCase } from \"~/api/features/UpdateTaskLog/index.js\";\nimport type { UpdateTaskUseCase } from \"~/api/features/UpdateTask/index.js\";\nimport { TaskLogNotFoundError } from \"~/api/domain/errors.js\";\nimport { TaskNotFoundError } from \"~/api/domain/errors.js\";\nimport { GetRunnableTaskDefinitionUseCase } from \"~/api/features/GetRunnableTaskDefinition/abstractions.js\";\nimport { Logger } from \"@webiny/api-core/features/logger/index.js\";\nimport { TaskController } from \"@webiny/api-core/features/task/TaskController/abstractions.js\";\n\ninterface IGetTaskLogParams {\n task: ITask;\n databaseLogs: boolean;\n}\n\n/**\n * What TaskControl needs from the container, declared in one place.\n *\n * TaskControl is built by hand (TaskRunner does it), so it cannot take these through DI the way a\n * registered class would. Naming them here is the next best thing: the class states what it uses,\n * TaskRunner resolves them once where it assembles the object, and a test can pass fakes. Reaching\n * into `context.container` from inside a method instead would leave the class with dependencies\n * nothing can see or substitute.\n */\nexport interface ITaskControlDependencies {\n logger: Logger.Interface;\n identityContext: IdentityContext.Interface;\n taskExecutionContext: TaskExecutionContext.Interface;\n getTask: GetTaskUseCase.Interface;\n listTasks: ListTasksUseCase.Interface;\n updateTask: UpdateTaskUseCase.Interface;\n getLatestTaskLog: GetLatestTaskLogUseCase.Interface;\n createTaskLog: CreateTaskLogUseCase.Interface;\n updateTaskLog: UpdateTaskLogUseCase.Interface;\n taskController: TaskController.Interface;\n getRunnableTaskDefinition: GetRunnableTaskDefinitionUseCase.Interface;\n}\n\nexport class TaskControl implements ITaskControl {\n public readonly runner: ITaskRunner;\n public readonly response: IResponse;\n public readonly context: Context;\n private readonly deps: ITaskControlDependencies;\n\n public constructor(\n runner: ITaskRunner,\n response: IResponse,\n context: Context,\n deps: ITaskControlDependencies\n ) {\n this.runner = runner;\n this.context = context;\n this.response = response;\n this.deps = deps;\n }\n\n public async run(event: Pick<ITaskEvent, \"webinyTaskId\">): Promise<IResponseResult> {\n const taskId = event.webinyTaskId;\n /**\n * This is the initial getTask idea.\n * We will need to take care of child tasks:\n * * child tasks can be in multiple levels (child task creates a child task, etc...).\n * * child tasks could be executed in parallel.\n */\n let task: ITask<ITaskDataInput>;\n try {\n task = await this.getTask(taskId);\n this.deps.identityContext.setIdentity(\n new AuthenticatedIdentity({\n id: task.createdBy.id,\n type: task.createdBy.type,\n displayName: task.createdBy.displayName || \"\",\n context: {\n canAccessTenant: true\n }\n })\n );\n } catch (error) {\n /**\n * TODO Refactor error handling.\n */\n // @ts-expect-error\n return this.response.error({\n ...getErrorProperties(error)\n });\n }\n /**\n * Let's get the task definition.\n */\n const definitionResult = this.deps.getRunnableTaskDefinition.execute(task.definitionId);\n if (definitionResult.isFail()) {\n return this.response.error({\n error: {\n message: `Task \"${task.id}\" cannot be executed because there is no \"${task.definitionId}\" definition plugin.`,\n code: \"TASK_DEFINITION_ERROR\",\n data: {\n definitionId: task.definitionId\n }\n }\n });\n }\n const definition = definitionResult.value;\n /**\n * Only enable logs if definition explicitly allows them.\n */\n const databaseLogs = definition.databaseLogs === true;\n\n /**\n * As this as a run of the task, we need to create a new log entry.\n */\n let taskLog: ITaskLog;\n try {\n taskLog = await this.getTaskLog({\n task,\n databaseLogs\n });\n } catch (error) {\n return this.response.error({\n error\n });\n }\n /**\n * Make sure that task does not run if it is aborted.\n * This will effectively end the Step Function execution with a \"success\" status.\n */\n if (task.taskStatus === TaskDataStatus.ABORTED) {\n return this.response.aborted();\n }\n /**\n * Do not run if already a success (done).\n */\n //\n else if (task.taskStatus === TaskDataStatus.SUCCESS) {\n return this.response.error({\n error: {\n message: \"Task is already done, cannot run it again.\"\n }\n });\n }\n /**\n * Do not run if already failed.\n */\n //\n else if (task.taskStatus === TaskDataStatus.FAILED) {\n return this.response.error({\n error: {\n message: \"Task has failed, cannot run it again.\"\n }\n });\n }\n\n const store = new TaskManagerStore({\n context: this.context,\n listTasks: this.deps.listTasks,\n updateTask: this.deps.updateTask,\n updateTaskLog: this.deps.updateTaskLog,\n logger: this.deps.logger,\n task,\n log: taskLog,\n databaseLogs\n });\n\n // Populate TaskExecutionContext BEFORE executing task\n const executionContext = this.deps.taskExecutionContext;\n executionContext.setStore(store);\n executionContext.setRunner(this.runner);\n executionContext.setTimer(this.runner.timer);\n executionContext.setResponse(new TaskResponse(this.response));\n\n const manager = new TaskManager(this.context, this.response, store, {\n taskController: this.deps.taskController,\n identityContext: this.deps.identityContext\n });\n\n const databaseResponse = new DatabaseResponse(this.response, store);\n\n try {\n const result = await manager.run(definition);\n\n const responseResult = await databaseResponse.from(result);\n\n // Get the updated task from store (no database read needed - store maintains local cache)\n await this.runEvents(result, definition, store.getTask());\n\n return responseResult;\n } catch (ex) {\n /**\n * We always want to store the error in the task log.\n */\n return await databaseResponse.from(\n this.response.error({\n error: {\n message: ex.message,\n code: ex.code || \"TASK_ERROR\",\n stack: ex.stack,\n data: {\n ...ex.data,\n input: task.input\n }\n }\n })\n );\n } finally {\n // Clear execution context after task completes\n executionContext.clear();\n }\n }\n\n private async runEvents(\n result: IResponseResult,\n definition: TaskDefinition.Runnable,\n task: ITask\n ): Promise<void> {\n if (result.status === TaskResultStatus.ERROR && definition.onError) {\n try {\n await definition.onError({ task, definition });\n } catch (ex) {\n this.deps.logger.error(\n { error: getErrorProperties(ex), taskId: task.id, hook: \"onError\" },\n \"Error executing task lifecycle hook.\"\n );\n }\n } else if (result.status === TaskResultStatus.DONE && definition.onDone) {\n try {\n await definition.onDone({ task, definition });\n } catch (ex) {\n this.deps.logger.error(\n { error: getErrorProperties(ex), taskId: task.id, hook: \"onDone\" },\n \"Error executing task lifecycle hook.\"\n );\n }\n }\n }\n\n private async getTask<T extends TaskDefinition.TaskInput>(id: string): Promise<ITask<T>> {\n const result = await this.deps.getTask.execute<T>(id);\n if (result.isOk()) {\n return result.value;\n } else if (!(result.error instanceof TaskNotFoundError)) {\n const error = result.error;\n throw this.response.error({\n error: {\n message: error.message,\n code: error.code || \"TASK_ERROR\",\n stack: error.stack,\n data: error.data\n }\n });\n }\n throw this.response.error({\n error: {\n message: `Task \"${id}\" cannot be executed because it does not exist.`,\n code: \"TASK_NOT_FOUND\"\n }\n });\n }\n\n private async getTaskLog(params: IGetTaskLogParams): Promise<ITaskLog> {\n const { task, databaseLogs } = params;\n /**\n * If logs are disabled, let's return a mocked one.\n */\n if (!databaseLogs) {\n return {\n id: `${task.id}-log`,\n createdOn: task.createdOn,\n createdBy: task.createdBy,\n executionName: task.executionName,\n task: task.id,\n iteration: task.iterations,\n items: []\n };\n }\n let taskLog: ITaskLog | null = null;\n /**\n * First we are trying to get existing latest log.\n */\n const latest = await this.deps.getLatestTaskLog.execute(task.id);\n if (latest.isOk()) {\n taskLog = latest.value;\n } else if (!(latest.error instanceof TaskLogNotFoundError)) {\n // A task without a log yet is fine; any other failure is not.\n throw this.response.error({\n error: latest.error\n });\n }\n\n const currentIteration = taskLog?.iteration || 0;\n\n const created = await this.deps.createTaskLog.execute(task, {\n executionName: this.response.event.executionName,\n iteration: currentIteration + 1\n });\n if (created.isFail()) {\n throw this.response.error({\n error: created.error\n });\n }\n return created.value;\n }\n}\n"],"names":["TaskControl","runner","response","context","deps","event","taskId","task","AuthenticatedIdentity","error","getErrorProperties","definitionResult","definition","databaseLogs","taskLog","TaskDataStatus","store","TaskManagerStore","executionContext","TaskResponse","manager","TaskManager","databaseResponse","DatabaseResponse","result","responseResult","ex","TaskResultStatus","id","TaskNotFoundError","params","latest","TaskLogNotFoundError","currentIteration","created"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ITaskEventValidation, ITaskEventValidationResult } from "./abstractions/index.js";
2
+ import type { ITaskEvent } from "../../api/handler/types.js";
3
+ export declare class TaskEventValidation implements ITaskEventValidation {
4
+ validate(event: Partial<ITaskEvent>): ITaskEventValidationResult;
5
+ }
@@ -0,0 +1,20 @@
1
+ import zod from "zod";
2
+ import { createZodError } from "@webiny/utils";
3
+ const validation = zod.object({
4
+ webinyTaskId: zod.string(),
5
+ webinyTaskDefinitionId: zod.string(),
6
+ endpoint: zod.string(),
7
+ tenant: zod.string(),
8
+ executionName: zod.string(),
9
+ stateMachineId: zod.string()
10
+ }).required();
11
+ class TaskEventValidation {
12
+ validate(event) {
13
+ const result = validation.safeParse(event);
14
+ if (result.success) return result.data;
15
+ throw createZodError(result.error);
16
+ }
17
+ }
18
+ export { TaskEventValidation };
19
+
20
+ //# sourceMappingURL=TaskEventValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/runner/TaskEventValidation.js","sources":["../../../src/api/runner/TaskEventValidation.ts"],"sourcesContent":["import zod from \"zod\";\nimport { createZodError } from \"@webiny/utils\";\nimport type { ITaskEventValidation, ITaskEventValidationResult } from \"./abstractions/index.js\";\nimport type { ITaskEvent } from \"~/api/handler/types.js\";\n\nconst validation = zod\n .object({\n webinyTaskId: zod.string(),\n webinyTaskDefinitionId: zod.string(),\n endpoint: zod.string(),\n tenant: zod.string(),\n executionName: zod.string(),\n stateMachineId: zod.string()\n })\n .required();\n\nexport class TaskEventValidation implements ITaskEventValidation {\n public validate(event: Partial<ITaskEvent>): ITaskEventValidationResult {\n const result = validation.safeParse(event);\n if (result.success) {\n return result.data;\n }\n throw createZodError(result.error);\n }\n}\n"],"names":["validation","zod","TaskEventValidation","event","result","createZodError"],"mappings":";;AAKA,MAAMA,aAAaC,IAAAA,MACR,CAAC;IACJ,cAAcA,IAAI,MAAM;IACxB,wBAAwBA,IAAI,MAAM;IAClC,UAAUA,IAAI,MAAM;IACpB,QAAQA,IAAI,MAAM;IAClB,eAAeA,IAAI,MAAM;IACzB,gBAAgBA,IAAI,MAAM;AAC9B,GACC,QAAQ;AAEN,MAAMC;IACF,SAASC,KAA0B,EAA8B;QACpE,MAAMC,SAASJ,WAAW,SAAS,CAACG;QACpC,IAAIC,OAAO,OAAO,EACd,OAAOA,OAAO,IAAI;QAEtB,MAAMC,eAAeD,OAAO,KAAK;IACrC;AACJ"}
@@ -0,0 +1,22 @@
1
+ import type { ITaskManager, ITaskManagerStorePrivate } from "./abstractions/index.js";
2
+ import type { Context } from "../../api/types.js";
3
+ import type { IResponse, IResponseResult } from "../../api/response/abstractions/index.js";
4
+ import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
5
+ import { TaskController } from "@webiny/api-core/features/task/TaskController/abstractions.js";
6
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/abstractions.js";
7
+ /**
8
+ * What TaskManager needs from the container. Same reasoning as ITaskControlDependencies: the class
9
+ * is built by hand, so it states what it uses and the caller supplies it.
10
+ */
11
+ export interface ITaskManagerDependencies {
12
+ taskController: TaskController.Interface;
13
+ identityContext: IdentityContext.Interface;
14
+ }
15
+ export declare class TaskManager implements ITaskManager {
16
+ private readonly context;
17
+ private readonly response;
18
+ private readonly store;
19
+ private readonly deps;
20
+ constructor(context: Context, response: IResponse, store: ITaskManagerStorePrivate, deps: ITaskManagerDependencies);
21
+ run(definition: TaskDefinition.Runnable): Promise<IResponseResult>;
22
+ }
@@ -0,0 +1,83 @@
1
+ import { TaskDataStatus } from "../types.js";
2
+ import { getErrorProperties } from "../utils/getErrorProperties.js";
3
+ import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
4
+ class TaskManager {
5
+ constructor(context, response, store, deps){
6
+ this.context = context;
7
+ this.response = response;
8
+ this.store = store;
9
+ this.deps = deps;
10
+ }
11
+ async run(definition) {
12
+ if (this.store.getStatus() === TaskDataStatus.ABORTED) return this.response.aborted();
13
+ else if (this.store.getStatus() === TaskDataStatus.PENDING) try {
14
+ await this.store.updateTask({
15
+ taskStatus: TaskDataStatus.RUNNING,
16
+ startedOn: new Date().toISOString(),
17
+ executionName: this.response.event.executionName,
18
+ iterations: 1
19
+ });
20
+ await this.store.save();
21
+ } catch (error) {
22
+ return this.response.error({
23
+ error
24
+ });
25
+ }
26
+ else if (this.store.getTask().iterations >= definition.maxIterations) try {
27
+ if (definition.onMaxIterations) await definition.onMaxIterations({
28
+ task: this.store.getTask(),
29
+ definition
30
+ });
31
+ return this.response.error({
32
+ error: {
33
+ message: "Task reached max iterations."
34
+ }
35
+ });
36
+ } catch (ex) {
37
+ return this.response.error({
38
+ error: {
39
+ message: "Failed to execute onMaxIterations handler.",
40
+ data: getErrorProperties(ex)
41
+ }
42
+ });
43
+ }
44
+ else try {
45
+ await this.store.updateTask((task)=>({
46
+ iterations: task.iterations + 1
47
+ }));
48
+ } catch (error) {
49
+ return this.response.error({
50
+ error
51
+ });
52
+ }
53
+ let result;
54
+ try {
55
+ const input = structuredClone(this.store.getInput());
56
+ const controller = this.deps.taskController;
57
+ result = await this.deps.identityContext.withoutAuthorization(async ()=>await definition.run({
58
+ input,
59
+ controller,
60
+ definition
61
+ }));
62
+ } catch (ex) {
63
+ return this.response.error({
64
+ error: getErrorProperties(ex)
65
+ });
66
+ }
67
+ if (result.status === TaskResultStatus.CONTINUE) return this.response.continue({
68
+ input: result.input,
69
+ wait: result.wait
70
+ });
71
+ else if (result.status === TaskResultStatus.ERROR) return this.response.error({
72
+ error: result.error
73
+ });
74
+ else if (result.status === TaskResultStatus.ABORTED) return this.response.aborted();
75
+ return this.response.done({
76
+ message: result.message,
77
+ output: result.output
78
+ });
79
+ }
80
+ }
81
+ export { TaskManager };
82
+
83
+ //# sourceMappingURL=TaskManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/runner/TaskManager.js","sources":["../../../src/api/runner/TaskManager.ts"],"sourcesContent":["import type { ITaskManager, ITaskManagerStorePrivate } from \"./abstractions/index.js\";\nimport type { Context } from \"~/api/types.js\";\nimport { TaskDataStatus } from \"~/api/types.js\";\nimport type { IResponse, IResponseResult } from \"~/api/response/abstractions/index.js\";\nimport { getErrorProperties } from \"~/api/utils/getErrorProperties.js\";\nimport {\n TaskDefinition,\n TaskResultStatus\n} from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskController } from \"@webiny/api-core/features/task/TaskController/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/abstractions.js\";\n\n/**\n * What TaskManager needs from the container. Same reasoning as ITaskControlDependencies: the class\n * is built by hand, so it states what it uses and the caller supplies it.\n */\nexport interface ITaskManagerDependencies {\n taskController: TaskController.Interface;\n identityContext: IdentityContext.Interface;\n}\n\nexport class TaskManager implements ITaskManager {\n private readonly context: Context;\n private readonly response: IResponse;\n private readonly store: ITaskManagerStorePrivate;\n\n private readonly deps: ITaskManagerDependencies;\n\n public constructor(\n context: Context,\n response: IResponse,\n store: ITaskManagerStorePrivate,\n deps: ITaskManagerDependencies\n ) {\n this.context = context;\n this.response = response;\n this.store = store;\n this.deps = deps;\n }\n\n public async run(definition: TaskDefinition.Runnable): Promise<IResponseResult> {\n /**\n * If task was aborted, do not run it again, return as it was done.\n */\n if (this.store.getStatus() === TaskDataStatus.ABORTED) {\n return this.response.aborted();\n }\n /**\n * If the task status is pending, update it to running and add a log.\n */\n //\n else if (this.store.getStatus() === TaskDataStatus.PENDING) {\n try {\n await this.store.updateTask({\n taskStatus: TaskDataStatus.RUNNING,\n startedOn: new Date().toISOString(),\n executionName: this.response.event.executionName,\n iterations: 1\n });\n await this.store.save();\n } catch (error) {\n return this.response.error({\n error\n });\n }\n }\n /**\n * We do not want to run the task indefinitely.\n * If the task has reached the max iterations, we will stop it and execute the onMaxIterations handler, if any.\n */\n //\n else if (this.store.getTask().iterations >= definition.maxIterations) {\n try {\n if (definition.onMaxIterations) {\n await definition.onMaxIterations({\n task: this.store.getTask(),\n definition\n });\n }\n return this.response.error({\n error: {\n message: \"Task reached max iterations.\"\n }\n });\n } catch (ex) {\n return this.response.error({\n error: {\n message: \"Failed to execute onMaxIterations handler.\",\n data: getErrorProperties(ex)\n }\n });\n }\n }\n /**\n * Always update the task iteration.\n */\n //\n else {\n try {\n await this.store.updateTask(task => {\n return {\n iterations: task.iterations + 1\n };\n });\n } catch (error) {\n return this.response.error({\n error\n });\n }\n }\n\n let result: TaskDefinition.Result;\n\n try {\n const input = structuredClone(this.store.getInput());\n const controller = this.deps.taskController;\n /**\n * We always run the task without authorization because we are running a task without a user - nothing to authorize against.\n */\n result = await this.deps.identityContext.withoutAuthorization(async () => {\n return await definition.run({\n input,\n controller,\n definition\n });\n });\n } catch (ex) {\n return this.response.error({\n error: getErrorProperties(ex)\n });\n }\n\n // Convert TaskDefinition.Result to IResponseResult\n if (result.status === TaskResultStatus.CONTINUE) {\n return this.response.continue({\n input: result.input,\n wait: result.wait\n });\n } else if (result.status === TaskResultStatus.ERROR) {\n return this.response.error({\n error: result.error\n });\n } else if (result.status === TaskResultStatus.ABORTED) {\n return this.response.aborted();\n }\n return this.response.done({\n message: result.message,\n output: result.output\n });\n }\n}\n"],"names":["TaskManager","context","response","store","deps","definition","TaskDataStatus","Date","error","ex","getErrorProperties","task","result","input","structuredClone","controller","TaskResultStatus"],"mappings":";;;AAqBO,MAAMA;IAOT,YACIC,OAAgB,EAChBC,QAAmB,EACnBC,KAA+B,EAC/BC,IAA8B,CAChC;QACE,IAAI,CAAC,OAAO,GAAGH;QACf,IAAI,CAAC,QAAQ,GAAGC;QAChB,IAAI,CAAC,KAAK,GAAGC;QACb,IAAI,CAAC,IAAI,GAAGC;IAChB;IAEA,MAAa,IAAIC,UAAmC,EAA4B;QAI5E,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,OAAOC,eAAe,OAAO,EACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;aAM3B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,OAAOA,eAAe,OAAO,EACtD,IAAI;YACA,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBACxB,YAAYA,eAAe,OAAO;gBAClC,WAAW,IAAIC,OAAO,WAAW;gBACjC,eAAe,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa;gBAChD,YAAY;YAChB;YACA,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI;QACzB,EAAE,OAAOC,OAAO;YACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACvBA;YACJ;QACJ;aAOC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,IAAIH,WAAW,aAAa,EAChE,IAAI;YACA,IAAIA,WAAW,eAAe,EAC1B,MAAMA,WAAW,eAAe,CAAC;gBAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO;gBACxBA;YACJ;YAEJ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACvB,OAAO;oBACH,SAAS;gBACb;YACJ;QACJ,EAAE,OAAOI,IAAI;YACT,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACvB,OAAO;oBACH,SAAS;oBACT,MAAMC,mBAAmBD;gBAC7B;YACJ;QACJ;aAOA,IAAI;YACA,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAACE,CAAAA,OACjB;oBACH,YAAYA,KAAK,UAAU,GAAG;gBAClC;QAER,EAAE,OAAOH,OAAO;YACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACvBA;YACJ;QACJ;QAGJ,IAAII;QAEJ,IAAI;YACA,MAAMC,QAAQC,gBAAgB,IAAI,CAAC,KAAK,CAAC,QAAQ;YACjD,MAAMC,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc;YAI3CH,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,UACnD,MAAMP,WAAW,GAAG,CAAC;oBACxBQ;oBACAE;oBACAV;gBACJ;QAER,EAAE,OAAOI,IAAI;YACT,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACvB,OAAOC,mBAAmBD;YAC9B;QACJ;QAGA,IAAIG,OAAO,MAAM,KAAKI,iBAAiB,QAAQ,EAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1B,OAAOJ,OAAO,KAAK;YACnB,MAAMA,OAAO,IAAI;QACrB;aACG,IAAIA,OAAO,MAAM,KAAKI,iBAAiB,KAAK,EAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvB,OAAOJ,OAAO,KAAK;QACvB;aACG,IAAIA,OAAO,MAAM,KAAKI,iBAAiB,OAAO,EACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;QAEhC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,SAASJ,OAAO,OAAO;YACvB,QAAQA,OAAO,MAAM;QACzB;IACJ;AACJ"}