@webiny/background-tasks 0.0.0-unstable.7be00a75a9 → 0.0.0-unstable.7c2def32a7

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 (507) hide show
  1. package/admin/BackgroundTaskRoutes.js +35 -15
  2. package/admin/BackgroundTaskRoutes.js.map +1 -1
  3. package/admin/BackgroundTasks.js +9 -0
  4. package/admin/BackgroundTasks.js.map +1 -1
  5. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.d.ts +12 -0
  6. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.js +40 -0
  7. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.js.map +1 -0
  8. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.d.ts +11 -0
  9. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.js +18 -0
  10. package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.js.map +1 -0
  11. package/admin/features/getBackgroundTaskSettings/abstractions.d.ts +15 -0
  12. package/admin/features/getBackgroundTaskSettings/abstractions.js +6 -0
  13. package/admin/features/getBackgroundTaskSettings/abstractions.js.map +1 -0
  14. package/admin/features/getBackgroundTaskSettings/feature.d.ts +3 -0
  15. package/admin/features/getBackgroundTaskSettings/feature.js +19 -0
  16. package/admin/features/getBackgroundTaskSettings/feature.js.map +1 -0
  17. package/admin/features/getBackgroundTaskSettings/index.d.ts +3 -0
  18. package/admin/features/getBackgroundTaskSettings/index.js +2 -0
  19. package/admin/features/listLogs/ListLogsGateway.js +1 -1
  20. package/admin/features/listLogs/ListLogsGateway.js.map +1 -1
  21. package/admin/features/permissions/feature.d.ts +1 -1
  22. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.d.ts +12 -0
  23. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.js +43 -0
  24. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.js.map +1 -0
  25. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.d.ts +11 -0
  26. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js +18 -0
  27. package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js.map +1 -0
  28. package/admin/features/updateBackgroundTaskSettings/abstractions.d.ts +18 -0
  29. package/admin/features/updateBackgroundTaskSettings/abstractions.js +6 -0
  30. package/admin/features/updateBackgroundTaskSettings/abstractions.js.map +1 -0
  31. package/admin/features/updateBackgroundTaskSettings/feature.d.ts +3 -0
  32. package/admin/features/updateBackgroundTaskSettings/feature.js +19 -0
  33. package/admin/features/updateBackgroundTaskSettings/feature.js.map +1 -0
  34. package/admin/features/updateBackgroundTaskSettings/index.d.ts +3 -0
  35. package/admin/features/updateBackgroundTaskSettings/index.js +2 -0
  36. package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.d.ts +21 -0
  37. package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js +86 -0
  38. package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js.map +1 -0
  39. package/admin/presentation/BackgroundTaskSettings/abstractions.d.ts +16 -0
  40. package/admin/presentation/BackgroundTaskSettings/abstractions.js +5 -0
  41. package/admin/presentation/BackgroundTaskSettings/abstractions.js.map +1 -0
  42. package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.d.ts +2 -0
  43. package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js +56 -0
  44. package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js.map +1 -0
  45. package/admin/presentation/BackgroundTaskSettings/feature.d.ts +3 -0
  46. package/admin/presentation/BackgroundTaskSettings/feature.js +17 -0
  47. package/admin/presentation/BackgroundTaskSettings/feature.js.map +1 -0
  48. package/admin/presentation/BackgroundTaskSettings/index.d.ts +2 -0
  49. package/admin/presentation/BackgroundTaskSettings/index.js +2 -0
  50. package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js +2 -1
  51. package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js.map +1 -1
  52. package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.d.ts +2 -0
  53. package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js +16 -0
  54. package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js.map +1 -0
  55. package/admin/presentation/TaskDetail/TaskDetailPresenter.js +1 -1
  56. package/admin/presentation/TaskDetail/TaskDetailPresenter.js.map +1 -1
  57. package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js +6 -0
  58. package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js.map +1 -1
  59. package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +1 -1
  60. package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -1
  61. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.d.ts +2 -0
  62. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js +3 -1
  63. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js.map +1 -1
  64. package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.d.ts +2 -0
  65. package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.js +16 -0
  66. package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.js.map +1 -0
  67. package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js +78 -40
  68. package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js.map +1 -1
  69. package/admin/routes.d.ts +1 -0
  70. package/admin/routes.js +4 -0
  71. package/admin/routes.js.map +1 -1
  72. package/admin/shared/types.d.ts +3 -0
  73. package/api/BackgroundTasksFeature.d.ts +4 -0
  74. package/api/BackgroundTasksFeature.js +75 -0
  75. package/api/BackgroundTasksFeature.js.map +1 -0
  76. package/api/abstractions/Timer.d.ts +1 -0
  77. package/api/abstractions/Timer.js +0 -0
  78. package/api/abstractions/index.d.ts +1 -0
  79. package/api/abstractions/index.js +1 -0
  80. package/api/crud/TaskLogPrivateModel.d.ts +9 -0
  81. package/api/crud/TaskLogPrivateModel.js +41 -0
  82. package/api/crud/TaskLogPrivateModel.js.map +1 -0
  83. package/api/crud/TaskPrivateModel.d.ts +9 -0
  84. package/api/crud/TaskPrivateModel.js +56 -0
  85. package/api/crud/TaskPrivateModel.js.map +1 -0
  86. package/api/decorators/SelfCleaningTaskHandlerDecorator.d.ts +33 -0
  87. package/api/decorators/SelfCleaningTaskHandlerDecorator.js +69 -0
  88. package/api/decorators/SelfCleaningTaskHandlerDecorator.js.map +1 -0
  89. package/api/decorators/TaskDefinitionDefaultsDecorator.d.ts +27 -0
  90. package/api/decorators/TaskDefinitionDefaultsDecorator.js +47 -0
  91. package/api/decorators/TaskDefinitionDefaultsDecorator.js.map +1 -0
  92. package/api/domain/BackgroundTaskSettings.d.ts +3 -0
  93. package/api/domain/BackgroundTaskSettings.js +0 -0
  94. package/api/domain/TaskService.d.ts +12 -0
  95. package/api/domain/TaskService.js +5 -0
  96. package/api/domain/TaskService.js.map +1 -0
  97. package/api/domain/constants.d.ts +3 -0
  98. package/api/domain/constants.js +6 -0
  99. package/api/domain/constants.js.map +1 -0
  100. package/api/domain/errors.d.ts +61 -0
  101. package/api/domain/errors.js +109 -0
  102. package/api/domain/errors.js.map +1 -0
  103. package/api/domain/task/TaskLogModelProvider.d.ts +12 -0
  104. package/api/domain/task/TaskLogModelProvider.js +23 -0
  105. package/api/domain/task/TaskLogModelProvider.js.map +1 -0
  106. package/api/domain/task/TaskLogsRepository.d.ts +34 -0
  107. package/api/domain/task/TaskLogsRepository.js +146 -0
  108. package/api/domain/task/TaskLogsRepository.js.map +1 -0
  109. package/api/domain/task/TaskModelProvider.d.ts +12 -0
  110. package/api/domain/task/TaskModelProvider.js +23 -0
  111. package/api/domain/task/TaskModelProvider.js.map +1 -0
  112. package/api/domain/task/TasksRepository.d.ts +37 -0
  113. package/api/domain/task/TasksRepository.js +126 -0
  114. package/api/domain/task/TasksRepository.js.map +1 -0
  115. package/api/domain/task/abstractions.d.ts +50 -0
  116. package/api/domain/task/abstractions.js +8 -0
  117. package/api/domain/task/abstractions.js.map +1 -0
  118. package/api/domain/task/createRevisionId.d.ts +1 -0
  119. package/api/domain/task/createRevisionId.js +8 -0
  120. package/api/domain/task/createRevisionId.js.map +1 -0
  121. package/api/domain/task/entryToTask.d.ts +3 -0
  122. package/api/domain/task/entryToTask.js +20 -0
  123. package/api/domain/task/entryToTask.js.map +1 -0
  124. package/api/domain/task/entryToTaskLog.d.ts +3 -0
  125. package/api/domain/task/entryToTaskLog.js +12 -0
  126. package/api/domain/task/entryToTaskLog.js.map +1 -0
  127. package/api/events/TaskAfterCreateEvent.d.ts +6 -0
  128. package/api/events/TaskAfterCreateEvent.js +13 -0
  129. package/api/events/TaskAfterCreateEvent.js.map +1 -0
  130. package/api/events/TaskAfterDeleteEvent.d.ts +6 -0
  131. package/api/events/TaskAfterDeleteEvent.js +13 -0
  132. package/api/events/TaskAfterDeleteEvent.js.map +1 -0
  133. package/api/events/TaskAfterUpdateEvent.d.ts +6 -0
  134. package/api/events/TaskAfterUpdateEvent.js +13 -0
  135. package/api/events/TaskAfterUpdateEvent.js.map +1 -0
  136. package/api/events/TaskBeforeCreateEvent.d.ts +6 -0
  137. package/api/events/TaskBeforeCreateEvent.js +13 -0
  138. package/api/events/TaskBeforeCreateEvent.js.map +1 -0
  139. package/api/events/TaskBeforeDeleteEvent.d.ts +6 -0
  140. package/api/events/TaskBeforeDeleteEvent.js +13 -0
  141. package/api/events/TaskBeforeDeleteEvent.js.map +1 -0
  142. package/api/events/TaskBeforeUpdateEvent.d.ts +6 -0
  143. package/api/events/TaskBeforeUpdateEvent.js +13 -0
  144. package/api/events/TaskBeforeUpdateEvent.js.map +1 -0
  145. package/api/events/abstractions.d.ts +53 -0
  146. package/api/events/abstractions.js +10 -0
  147. package/api/events/abstractions.js.map +1 -0
  148. package/api/events/index.d.ts +7 -0
  149. package/api/events/index.js +7 -0
  150. package/api/features/AbortTask/AbortTaskUseCase.d.ts +9 -0
  151. package/api/features/AbortTask/AbortTaskUseCase.js +12 -0
  152. package/api/features/AbortTask/AbortTaskUseCase.js.map +1 -0
  153. package/api/features/AbortTask/abstractions.d.ts +25 -0
  154. package/api/features/AbortTask/abstractions.js +5 -0
  155. package/api/features/AbortTask/abstractions.js.map +1 -0
  156. package/api/features/AbortTask/feature.d.ts +4 -0
  157. package/api/features/AbortTask/feature.js +13 -0
  158. package/api/features/AbortTask/feature.js.map +1 -0
  159. package/api/features/AbortTask/index.d.ts +2 -0
  160. package/api/features/AbortTask/index.js +2 -0
  161. package/api/features/BackgroundTaskPermissions/abstractions.d.ts +17 -0
  162. package/api/features/BackgroundTaskPermissions/abstractions.js +6 -0
  163. package/api/features/BackgroundTaskPermissions/abstractions.js.map +1 -0
  164. package/api/features/BackgroundTaskPermissions/feature.d.ts +4 -0
  165. package/api/features/BackgroundTaskPermissions/feature.js +7 -0
  166. package/api/features/BackgroundTaskPermissions/feature.js.map +1 -0
  167. package/api/features/BackgroundTaskPermissions/index.d.ts +2 -0
  168. package/api/features/BackgroundTaskPermissions/index.js +2 -0
  169. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.d.ts +27 -0
  170. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +122 -0
  171. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -0
  172. package/api/features/CleanupTaskSubtree/abstractions.d.ts +7 -0
  173. package/api/features/CleanupTaskSubtree/abstractions.js +5 -0
  174. package/api/features/CleanupTaskSubtree/abstractions.js.map +1 -0
  175. package/api/features/CleanupTaskSubtree/feature.d.ts +4 -0
  176. package/api/features/CleanupTaskSubtree/feature.js +11 -0
  177. package/api/features/CleanupTaskSubtree/feature.js.map +1 -0
  178. package/api/features/CleanupTaskSubtree/index.d.ts +2 -0
  179. package/api/features/CleanupTaskSubtree/index.js +2 -0
  180. package/api/features/CreateTask/CreateTaskUseCase.d.ts +17 -0
  181. package/api/features/CreateTask/CreateTaskUseCase.js +56 -0
  182. package/api/features/CreateTask/CreateTaskUseCase.js.map +1 -0
  183. package/api/features/CreateTask/abstractions.d.ts +21 -0
  184. package/api/features/CreateTask/abstractions.js +5 -0
  185. package/api/features/CreateTask/abstractions.js.map +1 -0
  186. package/api/features/CreateTask/feature.d.ts +4 -0
  187. package/api/features/CreateTask/feature.js +11 -0
  188. package/api/features/CreateTask/feature.js.map +1 -0
  189. package/api/features/CreateTask/index.d.ts +2 -0
  190. package/api/features/CreateTask/index.js +2 -0
  191. package/api/features/CreateTaskLog/CreateTaskLogUseCase.d.ts +13 -0
  192. package/api/features/CreateTaskLog/CreateTaskLogUseCase.js +19 -0
  193. package/api/features/CreateTaskLog/CreateTaskLogUseCase.js.map +1 -0
  194. package/api/features/CreateTaskLog/abstractions.d.ts +16 -0
  195. package/api/features/CreateTaskLog/abstractions.js +5 -0
  196. package/api/features/CreateTaskLog/abstractions.js.map +1 -0
  197. package/api/features/CreateTaskLog/feature.d.ts +4 -0
  198. package/api/features/CreateTaskLog/feature.js +11 -0
  199. package/api/features/CreateTaskLog/feature.js.map +1 -0
  200. package/api/features/CreateTaskLog/index.d.ts +2 -0
  201. package/api/features/CreateTaskLog/index.js +2 -0
  202. package/api/features/DeleteTask/DeleteTaskUseCase.d.ts +14 -0
  203. package/api/features/DeleteTask/DeleteTaskUseCase.js +34 -0
  204. package/api/features/DeleteTask/DeleteTaskUseCase.js.map +1 -0
  205. package/api/features/DeleteTask/abstractions.d.ts +17 -0
  206. package/api/features/DeleteTask/abstractions.js +5 -0
  207. package/api/features/DeleteTask/abstractions.js.map +1 -0
  208. package/api/features/DeleteTask/feature.d.ts +4 -0
  209. package/api/features/DeleteTask/feature.js +11 -0
  210. package/api/features/DeleteTask/feature.js.map +1 -0
  211. package/api/features/DeleteTask/index.d.ts +2 -0
  212. package/api/features/DeleteTask/index.js +2 -0
  213. package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.d.ts +11 -0
  214. package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.js +19 -0
  215. package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.js.map +1 -0
  216. package/api/features/DeleteTaskLog/abstractions.d.ts +14 -0
  217. package/api/features/DeleteTaskLog/abstractions.js +5 -0
  218. package/api/features/DeleteTaskLog/abstractions.js.map +1 -0
  219. package/api/features/DeleteTaskLog/feature.d.ts +4 -0
  220. package/api/features/DeleteTaskLog/feature.js +11 -0
  221. package/api/features/DeleteTaskLog/feature.js.map +1 -0
  222. package/api/features/DeleteTaskLog/index.d.ts +2 -0
  223. package/api/features/DeleteTaskLog/index.js +2 -0
  224. package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.d.ts +21 -0
  225. package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js +63 -0
  226. package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js.map +1 -0
  227. package/api/features/GetBackgroundTaskSettings/abstractions.d.ts +13 -0
  228. package/api/features/GetBackgroundTaskSettings/abstractions.js +5 -0
  229. package/api/features/GetBackgroundTaskSettings/abstractions.js.map +1 -0
  230. package/api/features/GetBackgroundTaskSettings/feature.d.ts +4 -0
  231. package/api/features/GetBackgroundTaskSettings/feature.js +11 -0
  232. package/api/features/GetBackgroundTaskSettings/feature.js.map +1 -0
  233. package/api/features/GetBackgroundTaskSettings/index.d.ts +2 -0
  234. package/api/features/GetBackgroundTaskSettings/index.js +2 -0
  235. package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.d.ts +11 -0
  236. package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.js +19 -0
  237. package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.js.map +1 -0
  238. package/api/features/GetLatestTaskLog/abstractions.d.ts +15 -0
  239. package/api/features/GetLatestTaskLog/abstractions.js +5 -0
  240. package/api/features/GetLatestTaskLog/abstractions.js.map +1 -0
  241. package/api/features/GetLatestTaskLog/feature.d.ts +4 -0
  242. package/api/features/GetLatestTaskLog/feature.js +11 -0
  243. package/api/features/GetLatestTaskLog/feature.js.map +1 -0
  244. package/api/features/GetLatestTaskLog/index.d.ts +2 -0
  245. package/api/features/GetLatestTaskLog/index.js +2 -0
  246. package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.d.ts +13 -0
  247. package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.js +51 -0
  248. package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.js.map +1 -0
  249. package/api/features/GetRunnableTaskDefinition/abstractions.d.ts +17 -0
  250. package/api/features/GetRunnableTaskDefinition/abstractions.js +5 -0
  251. package/api/features/GetRunnableTaskDefinition/abstractions.js.map +1 -0
  252. package/api/features/GetRunnableTaskDefinition/feature.d.ts +4 -0
  253. package/api/features/GetRunnableTaskDefinition/feature.js +11 -0
  254. package/api/features/GetRunnableTaskDefinition/feature.js.map +1 -0
  255. package/api/features/GetRunnableTaskDefinition/index.d.ts +2 -0
  256. package/api/features/GetRunnableTaskDefinition/index.js +2 -0
  257. package/api/features/GetTask/GetTaskUseCase.d.ts +13 -0
  258. package/api/features/GetTask/GetTaskUseCase.js +19 -0
  259. package/api/features/GetTask/GetTaskUseCase.js.map +1 -0
  260. package/api/features/GetTask/abstractions.d.ts +17 -0
  261. package/api/features/GetTask/abstractions.js +5 -0
  262. package/api/features/GetTask/abstractions.js.map +1 -0
  263. package/api/features/GetTask/feature.d.ts +4 -0
  264. package/api/features/GetTask/feature.js +11 -0
  265. package/api/features/GetTask/feature.js.map +1 -0
  266. package/api/features/GetTask/index.d.ts +2 -0
  267. package/api/features/GetTask/index.js +2 -0
  268. package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.d.ts +11 -0
  269. package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +24 -0
  270. package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -0
  271. package/api/features/ListTaskDefinitions/abstractions.d.ts +9 -0
  272. package/api/features/ListTaskDefinitions/abstractions.js +5 -0
  273. package/api/features/ListTaskDefinitions/abstractions.js.map +1 -0
  274. package/api/features/ListTaskDefinitions/feature.d.ts +4 -0
  275. package/api/features/ListTaskDefinitions/feature.js +11 -0
  276. package/api/features/ListTaskDefinitions/feature.js.map +1 -0
  277. package/api/features/ListTaskDefinitions/index.d.ts +2 -0
  278. package/api/features/ListTaskDefinitions/index.js +2 -0
  279. package/api/features/ListTaskLogs/ListTaskLogsUseCase.d.ts +12 -0
  280. package/api/features/ListTaskLogs/ListTaskLogsUseCase.js +19 -0
  281. package/api/features/ListTaskLogs/ListTaskLogsUseCase.js.map +1 -0
  282. package/api/features/ListTaskLogs/abstractions.d.ts +15 -0
  283. package/api/features/ListTaskLogs/abstractions.js +5 -0
  284. package/api/features/ListTaskLogs/abstractions.js.map +1 -0
  285. package/api/features/ListTaskLogs/feature.d.ts +4 -0
  286. package/api/features/ListTaskLogs/feature.js +11 -0
  287. package/api/features/ListTaskLogs/feature.js.map +1 -0
  288. package/api/features/ListTaskLogs/index.d.ts +2 -0
  289. package/api/features/ListTaskLogs/index.js +2 -0
  290. package/api/features/ListTasks/ListTasksUseCase.d.ts +13 -0
  291. package/api/features/ListTasks/ListTasksUseCase.js +19 -0
  292. package/api/features/ListTasks/ListTasksUseCase.js.map +1 -0
  293. package/api/features/ListTasks/abstractions.d.ts +19 -0
  294. package/api/features/ListTasks/abstractions.js +5 -0
  295. package/api/features/ListTasks/abstractions.js.map +1 -0
  296. package/api/features/ListTasks/feature.d.ts +4 -0
  297. package/api/features/ListTasks/feature.js +11 -0
  298. package/api/features/ListTasks/feature.js.map +1 -0
  299. package/api/features/ListTasks/index.d.ts +2 -0
  300. package/api/features/ListTasks/index.js +2 -0
  301. package/api/features/TaskController/TaskController.d.ts +49 -0
  302. package/api/features/TaskController/TaskController.js +71 -0
  303. package/api/features/TaskController/TaskController.js.map +1 -0
  304. package/api/features/TaskController/augmentation.d.ts +60 -0
  305. package/api/features/TaskController/augmentation.js +0 -0
  306. package/api/features/TaskController/index.d.ts +2 -0
  307. package/api/features/TaskController/index.js +2 -0
  308. package/api/features/TaskExecutionContext/TaskExecutionContext.d.ts +24 -0
  309. package/api/features/TaskExecutionContext/TaskExecutionContext.js +43 -0
  310. package/api/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -0
  311. package/api/features/TaskExecutionContext/abstractions.d.ts +26 -0
  312. package/api/features/TaskExecutionContext/abstractions.js +5 -0
  313. package/api/features/TaskExecutionContext/abstractions.js.map +1 -0
  314. package/api/features/TaskExecutionContext/feature.d.ts +4 -0
  315. package/api/features/TaskExecutionContext/feature.js +11 -0
  316. package/api/features/TaskExecutionContext/feature.js.map +1 -0
  317. package/api/features/TaskExecutionContext/index.d.ts +1 -0
  318. package/api/features/TaskExecutionContext/index.js +1 -0
  319. package/api/features/TaskHandlerResolver/TaskHandlerResolver.d.ts +12 -0
  320. package/api/features/TaskHandlerResolver/TaskHandlerResolver.js +19 -0
  321. package/api/features/TaskHandlerResolver/TaskHandlerResolver.js.map +1 -0
  322. package/api/features/TaskHandlerResolver/abstractions.d.ts +17 -0
  323. package/api/features/TaskHandlerResolver/abstractions.js +5 -0
  324. package/api/features/TaskHandlerResolver/abstractions.js.map +1 -0
  325. package/api/features/TaskHandlerResolver/feature.d.ts +9 -0
  326. package/api/features/TaskHandlerResolver/feature.js +11 -0
  327. package/api/features/TaskHandlerResolver/feature.js.map +1 -0
  328. package/api/features/TaskHandlerResolver/index.d.ts +2 -0
  329. package/api/features/TaskHandlerResolver/index.js +2 -0
  330. package/api/features/TaskService/BackgroundTaskService.d.ts +42 -0
  331. package/api/features/TaskService/BackgroundTaskService.js +191 -0
  332. package/api/features/TaskService/BackgroundTaskService.js.map +1 -0
  333. package/api/features/TaskService/feature.d.ts +4 -0
  334. package/api/features/TaskService/feature.js +11 -0
  335. package/api/features/TaskService/feature.js.map +1 -0
  336. package/api/features/TaskService/index.d.ts +1 -0
  337. package/api/features/TaskService/index.js +1 -0
  338. package/api/features/TriggerTask/TriggerTaskUseCase.d.ts +9 -0
  339. package/api/features/TriggerTask/TriggerTaskUseCase.js +12 -0
  340. package/api/features/TriggerTask/TriggerTaskUseCase.js.map +1 -0
  341. package/api/features/TriggerTask/abstractions.d.ts +28 -0
  342. package/api/features/TriggerTask/abstractions.js +5 -0
  343. package/api/features/TriggerTask/abstractions.js.map +1 -0
  344. package/api/features/TriggerTask/feature.d.ts +4 -0
  345. package/api/features/TriggerTask/feature.js +13 -0
  346. package/api/features/TriggerTask/feature.js.map +1 -0
  347. package/api/features/TriggerTask/index.d.ts +2 -0
  348. package/api/features/TriggerTask/index.js +2 -0
  349. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.d.ts +23 -0
  350. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js +67 -0
  351. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -0
  352. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.d.ts +14 -0
  353. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js +27 -0
  354. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js.map +1 -0
  355. package/api/features/UpdateBackgroundTaskSettings/abstractions.d.ts +26 -0
  356. package/api/features/UpdateBackgroundTaskSettings/abstractions.js +6 -0
  357. package/api/features/UpdateBackgroundTaskSettings/abstractions.js.map +1 -0
  358. package/api/features/UpdateBackgroundTaskSettings/feature.d.ts +4 -0
  359. package/api/features/UpdateBackgroundTaskSettings/feature.js +13 -0
  360. package/api/features/UpdateBackgroundTaskSettings/feature.js.map +1 -0
  361. package/api/features/UpdateBackgroundTaskSettings/index.d.ts +2 -0
  362. package/api/features/UpdateBackgroundTaskSettings/index.js +2 -0
  363. package/api/features/UpdateBackgroundTaskSettings/schema.d.ts +4 -0
  364. package/api/features/UpdateBackgroundTaskSettings/schema.js +8 -0
  365. package/api/features/UpdateBackgroundTaskSettings/schema.js.map +1 -0
  366. package/api/features/UpdateTask/UpdateTaskUseCase.d.ts +17 -0
  367. package/api/features/UpdateTask/UpdateTaskUseCase.js +36 -0
  368. package/api/features/UpdateTask/UpdateTaskUseCase.js.map +1 -0
  369. package/api/features/UpdateTask/abstractions.d.ts +22 -0
  370. package/api/features/UpdateTask/abstractions.js +5 -0
  371. package/api/features/UpdateTask/abstractions.js.map +1 -0
  372. package/api/features/UpdateTask/feature.d.ts +4 -0
  373. package/api/features/UpdateTask/feature.js +11 -0
  374. package/api/features/UpdateTask/feature.js.map +1 -0
  375. package/api/features/UpdateTask/index.d.ts +2 -0
  376. package/api/features/UpdateTask/index.js +2 -0
  377. package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.d.ts +12 -0
  378. package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.js +19 -0
  379. package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.js.map +1 -0
  380. package/api/features/UpdateTaskLog/abstractions.d.ts +16 -0
  381. package/api/features/UpdateTaskLog/abstractions.js +5 -0
  382. package/api/features/UpdateTaskLog/abstractions.js.map +1 -0
  383. package/api/features/UpdateTaskLog/feature.d.ts +4 -0
  384. package/api/features/UpdateTaskLog/feature.js +11 -0
  385. package/api/features/UpdateTaskLog/feature.js.map +1 -0
  386. package/api/features/UpdateTaskLog/index.d.ts +2 -0
  387. package/api/features/UpdateTaskLog/index.js +2 -0
  388. package/api/global.d.ts +1 -0
  389. package/api/global.js +1 -0
  390. package/api/graphql/BackgroundTasksGraphQLSchema.d.ts +29 -0
  391. package/api/graphql/BackgroundTasksGraphQLSchema.js +462 -0
  392. package/api/graphql/BackgroundTasksGraphQLSchema.js.map +1 -0
  393. package/api/graphql/checkPermissions.d.ts +7 -0
  394. package/api/graphql/checkPermissions.js +22 -0
  395. package/api/graphql/checkPermissions.js.map +1 -0
  396. package/api/graphql/utils.d.ts +9 -0
  397. package/api/graphql/utils.js +20 -0
  398. package/api/graphql/utils.js.map +1 -0
  399. package/api/handler/types.d.ts +21 -0
  400. package/api/handler/types.js +0 -0
  401. package/api/index.d.ts +21 -0
  402. package/api/index.js +20 -0
  403. package/api/models/BackgroundTaskSettingsModel.d.ts +8 -0
  404. package/api/models/BackgroundTaskSettingsModel.js +27 -0
  405. package/api/models/BackgroundTaskSettingsModel.js.map +1 -0
  406. package/api/permissions.d.ts +12 -0
  407. package/api/permissions.js +22 -0
  408. package/api/permissions.js.map +1 -0
  409. package/api/response/DatabaseResponse.d.ts +12 -0
  410. package/api/response/DatabaseResponse.js +127 -0
  411. package/api/response/DatabaseResponse.js.map +1 -0
  412. package/api/response/Response.d.ts +14 -0
  413. package/api/response/Response.js +91 -0
  414. package/api/response/Response.js.map +1 -0
  415. package/api/response/ResponseAbortedResult.d.ts +9 -0
  416. package/api/response/ResponseAbortedResult.js +12 -0
  417. package/api/response/ResponseAbortedResult.js.map +1 -0
  418. package/api/response/ResponseContinueResult.d.ts +17 -0
  419. package/api/response/ResponseContinueResult.js +16 -0
  420. package/api/response/ResponseContinueResult.js.map +1 -0
  421. package/api/response/ResponseDoneResult.d.ts +11 -0
  422. package/api/response/ResponseDoneResult.js +14 -0
  423. package/api/response/ResponseDoneResult.js.map +1 -0
  424. package/api/response/ResponseErrorResult.d.ts +10 -0
  425. package/api/response/ResponseErrorResult.js +13 -0
  426. package/api/response/ResponseErrorResult.js.map +1 -0
  427. package/api/response/TaskResponse.d.ts +12 -0
  428. package/api/response/TaskResponse.js +53 -0
  429. package/api/response/TaskResponse.js.map +1 -0
  430. package/api/response/abstractions/Response.d.ts +25 -0
  431. package/api/response/abstractions/Response.js +0 -0
  432. package/api/response/abstractions/ResponseAbortedResult.d.ts +5 -0
  433. package/api/response/abstractions/ResponseAbortedResult.js +0 -0
  434. package/api/response/abstractions/ResponseBaseResult.d.ts +7 -0
  435. package/api/response/abstractions/ResponseBaseResult.js +0 -0
  436. package/api/response/abstractions/ResponseContinueResult.d.ts +21 -0
  437. package/api/response/abstractions/ResponseContinueResult.js +0 -0
  438. package/api/response/abstractions/ResponseDoneResult.d.ts +13 -0
  439. package/api/response/abstractions/ResponseDoneResult.js +0 -0
  440. package/api/response/abstractions/ResponseErrorResult.d.ts +18 -0
  441. package/api/response/abstractions/ResponseErrorResult.js +0 -0
  442. package/api/response/abstractions/TaskResponse.d.ts +16 -0
  443. package/api/response/abstractions/TaskResponse.js +0 -0
  444. package/api/response/abstractions/index.d.ts +7 -0
  445. package/api/response/abstractions/index.js +7 -0
  446. package/api/response/index.d.ts +7 -0
  447. package/api/response/index.js +7 -0
  448. package/api/runner/TaskControl.d.ts +48 -0
  449. package/api/runner/TaskControl.js +186 -0
  450. package/api/runner/TaskControl.js.map +1 -0
  451. package/api/runner/TaskEventValidation.d.ts +5 -0
  452. package/api/runner/TaskEventValidation.js +20 -0
  453. package/api/runner/TaskEventValidation.js.map +1 -0
  454. package/api/runner/TaskManager.d.ts +22 -0
  455. package/api/runner/TaskManager.js +83 -0
  456. package/api/runner/TaskManager.js.map +1 -0
  457. package/api/runner/TaskManagerStore.d.ts +57 -0
  458. package/api/runner/TaskManagerStore.js +127 -0
  459. package/api/runner/TaskManagerStore.js.map +1 -0
  460. package/api/runner/TaskRunner.d.ts +25 -0
  461. package/api/runner/TaskRunner.js +86 -0
  462. package/api/runner/TaskRunner.js.map +1 -0
  463. package/api/runner/abstractions/TaskControl.d.ts +10 -0
  464. package/api/runner/abstractions/TaskControl.js +0 -0
  465. package/api/runner/abstractions/TaskEventValidation.d.ts +5 -0
  466. package/api/runner/abstractions/TaskEventValidation.js +0 -0
  467. package/api/runner/abstractions/TaskManager.d.ts +5 -0
  468. package/api/runner/abstractions/TaskManager.js +0 -0
  469. package/api/runner/abstractions/TaskManagerStore.d.ts +92 -0
  470. package/api/runner/abstractions/TaskManagerStore.js +0 -0
  471. package/api/runner/abstractions/TaskRunner.d.ts +13 -0
  472. package/api/runner/abstractions/TaskRunner.js +0 -0
  473. package/api/runner/abstractions/index.d.ts +5 -0
  474. package/api/runner/abstractions/index.js +5 -0
  475. package/api/runner/index.d.ts +1 -0
  476. package/api/runner/index.js +1 -0
  477. package/api/tasks/testingRunTask.d.ts +19 -0
  478. package/api/tasks/testingRunTask.js +25 -0
  479. package/api/tasks/testingRunTask.js.map +1 -0
  480. package/api/types.d.ts +120 -0
  481. package/api/types.js +20 -0
  482. package/api/types.js.map +1 -0
  483. package/api/utils/ObjectUpdater.d.ts +8 -0
  484. package/api/utils/ObjectUpdater.js +33 -0
  485. package/api/utils/ObjectUpdater.js.map +1 -0
  486. package/api/utils/getErrorProperties.d.ts +2 -0
  487. package/api/utils/getErrorProperties.js +9 -0
  488. package/api/utils/getErrorProperties.js.map +1 -0
  489. package/api/utils/getObjectProperties.d.ts +8 -0
  490. package/api/utils/getObjectProperties.js +11 -0
  491. package/api/utils/getObjectProperties.js.map +1 -0
  492. package/api/utils/index.d.ts +3 -0
  493. package/api/utils/index.js +3 -0
  494. package/api/utils/normalizeSelfCleanup.d.ts +2 -0
  495. package/api/utils/normalizeSelfCleanup.js +16 -0
  496. package/api/utils/normalizeSelfCleanup.js.map +1 -0
  497. package/index.d.ts +1 -0
  498. package/index.js +1 -0
  499. package/package.json +32 -13
  500. package/testing/index.d.ts +3 -0
  501. package/testing/index.js +2 -0
  502. package/testing/mockTaskTriggerTransportPlugin.d.ts +2 -0
  503. package/testing/mockTaskTriggerTransportPlugin.js +18 -0
  504. package/testing/mockTaskTriggerTransportPlugin.js.map +1 -0
  505. package/testing/runner.d.ts +19 -0
  506. package/testing/runner.js +44 -0
  507. package/testing/runner.js.map +1 -0
@@ -0,0 +1,86 @@
1
+ import { computed, makeAutoObservable, runInAction } from "mobx";
2
+ import { BackgroundTaskSettingsPresenter } from "./abstractions.js";
3
+ import { GetBackgroundTaskSettingsUseCase } from "../../features/getBackgroundTaskSettings/abstractions.js";
4
+ import { UpdateBackgroundTaskSettingsUseCase } from "../../features/updateBackgroundTaskSettings/abstractions.js";
5
+ import { FormModelFactory } from "@webiny/app-admin/features/formModel/abstractions.js";
6
+ import { BACKGROUND_TASK_MAX_RETENTION_DAYS } from "../../../api/domain/constants.js";
7
+ class BackgroundTaskSettingsPresenterImpl {
8
+ get vm() {
9
+ return {
10
+ loading: this._loading,
11
+ saving: this._saving,
12
+ form: this._form.vm
13
+ };
14
+ }
15
+ constructor(formModelFactory, getSettingsUseCase, updateSettingsUseCase){
16
+ this.formModelFactory = formModelFactory;
17
+ this.getSettingsUseCase = getSettingsUseCase;
18
+ this.updateSettingsUseCase = updateSettingsUseCase;
19
+ this._loading = false;
20
+ this._saving = false;
21
+ this._form = this.buildForm();
22
+ makeAutoObservable(this, {
23
+ vm: computed
24
+ });
25
+ }
26
+ buildForm() {
27
+ return this.formModelFactory.create({
28
+ fields: (fields)=>({
29
+ retentionDays: fields.number().label("Retention (days)").placeholder("90").description(`How long to keep completed task runs. 0 = never delete. Max ${BACKGROUND_TASK_MAX_RETENTION_DAYS} days. Changing this value only affects future task executions; existing records are not retroactively deleted.`)
30
+ }),
31
+ layout: (layout)=>[
32
+ layout.row("retentionDays")
33
+ ]
34
+ });
35
+ }
36
+ async save() {
37
+ const data = await this._form.submit();
38
+ if (false === data) return false;
39
+ runInAction(()=>{
40
+ this._saving = true;
41
+ });
42
+ try {
43
+ const settings = await this.updateSettingsUseCase.execute({
44
+ retentionDays: null != data.retentionDays ? Number(data.retentionDays) : void 0
45
+ });
46
+ runInAction(()=>{
47
+ this._form.setData({
48
+ retentionDays: settings.retentionDays || ""
49
+ });
50
+ });
51
+ } finally{
52
+ runInAction(()=>{
53
+ this._saving = false;
54
+ });
55
+ }
56
+ return true;
57
+ }
58
+ async init() {
59
+ this._loading = true;
60
+ try {
61
+ const settings = await this.getSettingsUseCase.execute();
62
+ runInAction(()=>{
63
+ this._form = this.buildForm();
64
+ this._form.setData({
65
+ retentionDays: settings.retentionDays || ""
66
+ });
67
+ this._loading = false;
68
+ });
69
+ } catch {
70
+ runInAction(()=>{
71
+ this._loading = false;
72
+ });
73
+ }
74
+ }
75
+ }
76
+ const BackgroundTaskSettingsPresenter_BackgroundTaskSettingsPresenter = BackgroundTaskSettingsPresenter.createImplementation({
77
+ implementation: BackgroundTaskSettingsPresenterImpl,
78
+ dependencies: [
79
+ FormModelFactory,
80
+ GetBackgroundTaskSettingsUseCase,
81
+ UpdateBackgroundTaskSettingsUseCase
82
+ ]
83
+ });
84
+ export { BackgroundTaskSettingsPresenter_BackgroundTaskSettingsPresenter as BackgroundTaskSettingsPresenter };
85
+
86
+ //# sourceMappingURL=BackgroundTaskSettingsPresenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js","sources":["../../../../src/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.ts"],"sourcesContent":["import { computed, makeAutoObservable, runInAction } from \"mobx\";\nimport {\n BackgroundTaskSettingsPresenter as Abstraction,\n type IBackgroundTaskSettingsPresenter,\n type IBackgroundTaskSettingsViewModel\n} from \"./abstractions.js\";\nimport { GetBackgroundTaskSettingsUseCase } from \"~/admin/features/getBackgroundTaskSettings/abstractions.js\";\nimport { UpdateBackgroundTaskSettingsUseCase } from \"~/admin/features/updateBackgroundTaskSettings/abstractions.js\";\nimport {\n FormModelFactory,\n type IFormModel\n} from \"@webiny/app-admin/features/formModel/abstractions.js\";\nimport { BACKGROUND_TASK_MAX_RETENTION_DAYS } from \"~/api/domain/constants.js\";\n\nclass BackgroundTaskSettingsPresenterImpl implements IBackgroundTaskSettingsPresenter {\n private _loading = false;\n private _saving = false;\n private _form: IFormModel;\n\n public get vm(): IBackgroundTaskSettingsViewModel {\n return {\n loading: this._loading,\n saving: this._saving,\n form: this._form.vm\n };\n }\n\n public constructor(\n private readonly formModelFactory: FormModelFactory.Interface,\n private readonly getSettingsUseCase: GetBackgroundTaskSettingsUseCase.Interface,\n private readonly updateSettingsUseCase: UpdateBackgroundTaskSettingsUseCase.Interface\n ) {\n this._form = this.buildForm();\n\n makeAutoObservable(this, { vm: computed });\n }\n\n private buildForm(): IFormModel {\n return this.formModelFactory.create({\n fields: fields => ({\n retentionDays: fields\n .number()\n .label(\"Retention (days)\")\n .placeholder(\"90\")\n .description(\n `How long to keep completed task runs. 0 = never delete. Max ${BACKGROUND_TASK_MAX_RETENTION_DAYS} days. Changing this value only affects future task executions; existing records are not retroactively deleted.`\n )\n }),\n layout: layout => [layout.row(\"retentionDays\")]\n });\n }\n\n public async save(): Promise<boolean> {\n const data = await this._form.submit<Record<string, string>>();\n if (data === false) {\n return false;\n }\n\n runInAction(() => {\n this._saving = true;\n });\n\n try {\n const settings = await this.updateSettingsUseCase.execute({\n retentionDays: data.retentionDays != null ? Number(data.retentionDays) : undefined\n });\n\n runInAction(() => {\n this._form.setData({\n retentionDays: settings.retentionDays || \"\"\n });\n });\n } finally {\n runInAction(() => {\n this._saving = false;\n });\n }\n return true;\n }\n\n public async init(): Promise<void> {\n this._loading = true;\n\n try {\n const settings = await this.getSettingsUseCase.execute();\n\n runInAction(() => {\n this._form = this.buildForm();\n this._form.setData({\n retentionDays: settings.retentionDays || \"\"\n });\n this._loading = false;\n });\n } catch {\n runInAction(() => {\n this._loading = false;\n });\n }\n }\n}\n\nexport const BackgroundTaskSettingsPresenter = Abstraction.createImplementation({\n implementation: BackgroundTaskSettingsPresenterImpl,\n dependencies: [\n FormModelFactory,\n GetBackgroundTaskSettingsUseCase,\n UpdateBackgroundTaskSettingsUseCase\n ]\n});\n"],"names":["BackgroundTaskSettingsPresenterImpl","formModelFactory","getSettingsUseCase","updateSettingsUseCase","makeAutoObservable","computed","fields","BACKGROUND_TASK_MAX_RETENTION_DAYS","layout","data","runInAction","settings","Number","undefined","BackgroundTaskSettingsPresenter","Abstraction","FormModelFactory","GetBackgroundTaskSettingsUseCase","UpdateBackgroundTaskSettingsUseCase"],"mappings":";;;;;;AAcA,MAAMA;IAKF,IAAW,KAAuC;QAC9C,OAAO;YACH,SAAS,IAAI,CAAC,QAAQ;YACtB,QAAQ,IAAI,CAAC,OAAO;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;QACvB;IACJ;IAEA,YACqBC,gBAA4C,EAC5CC,kBAA8D,EAC9DC,qBAAoE,CACvF;aAHmBF,gBAAgB,GAAhBA;aACAC,kBAAkB,GAAlBA;aACAC,qBAAqB,GAArBA;aAfb,QAAQ,GAAG;aACX,OAAO,GAAG;QAgBd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;QAE3BC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEQ,YAAwB;QAC5B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAChC,QAAQC,CAAAA,SAAW;oBACf,eAAeA,OACV,MAAM,GACN,KAAK,CAAC,oBACN,WAAW,CAAC,MACZ,WAAW,CACR,CAAC,4DAA4D,EAAEC,mCAAmC,+GAA+G,CAAC;gBAE9N;YACA,QAAQC,CAAAA,SAAU;oBAACA,OAAO,GAAG,CAAC;iBAAiB;QACnD;IACJ;IAEA,MAAa,OAAyB;QAClC,MAAMC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;QACpC,IAAIA,AAAS,UAATA,MACA,OAAO;QAGXC,YAAY;YACR,IAAI,CAAC,OAAO,GAAG;QACnB;QAEA,IAAI;YACA,MAAMC,WAAW,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;gBACtD,eAAeF,AAAsB,QAAtBA,KAAK,aAAa,GAAWG,OAAOH,KAAK,aAAa,IAAII;YAC7E;YAEAH,YAAY;gBACR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACf,eAAeC,SAAS,aAAa,IAAI;gBAC7C;YACJ;QACJ,SAAU;YACND,YAAY;gBACR,IAAI,CAAC,OAAO,GAAG;YACnB;QACJ;QACA,OAAO;IACX;IAEA,MAAa,OAAsB;QAC/B,IAAI,CAAC,QAAQ,GAAG;QAEhB,IAAI;YACA,MAAMC,WAAW,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO;YAEtDD,YAAY;gBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;gBAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACf,eAAeC,SAAS,aAAa,IAAI;gBAC7C;gBACA,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ,EAAE,OAAM;YACJD,YAAY;gBACR,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ;IACJ;AACJ;AAEO,MAAMI,kEAAkCC,gCAAAA,oBAAgC,CAAC;IAC5E,gBAAgBf;IAChB,cAAc;QACVgB;QACAC;QACAC;KACH;AACL"}
@@ -0,0 +1,16 @@
1
+ import type { IFormVM } from "@webiny/app-admin/features/formModel/abstractions.js";
2
+ export interface IBackgroundTaskSettingsViewModel {
3
+ loading: boolean;
4
+ saving: boolean;
5
+ form: IFormVM;
6
+ }
7
+ export interface IBackgroundTaskSettingsPresenter {
8
+ vm: IBackgroundTaskSettingsViewModel;
9
+ save(): Promise<boolean>;
10
+ init(): void;
11
+ }
12
+ export declare const BackgroundTaskSettingsPresenter: import("@webiny/di").Abstraction<IBackgroundTaskSettingsPresenter>;
13
+ export declare namespace BackgroundTaskSettingsPresenter {
14
+ type Interface = IBackgroundTaskSettingsPresenter;
15
+ type ViewModel = IBackgroundTaskSettingsViewModel;
16
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const BackgroundTaskSettingsPresenter = createAbstraction("BackgroundTaskSettingsPresenter");
3
+ export { BackgroundTaskSettingsPresenter };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/BackgroundTaskSettings/abstractions.js","sources":["../../../../src/admin/presentation/BackgroundTaskSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { IFormVM } from \"@webiny/app-admin/features/formModel/abstractions.js\";\n\nexport interface IBackgroundTaskSettingsViewModel {\n loading: boolean;\n saving: boolean;\n form: IFormVM;\n}\n\nexport interface IBackgroundTaskSettingsPresenter {\n vm: IBackgroundTaskSettingsViewModel;\n save(): Promise<boolean>;\n init(): void;\n}\n\nexport const BackgroundTaskSettingsPresenter = createAbstraction<IBackgroundTaskSettingsPresenter>(\n \"BackgroundTaskSettingsPresenter\"\n);\n\nexport namespace BackgroundTaskSettingsPresenter {\n export type Interface = IBackgroundTaskSettingsPresenter;\n export type ViewModel = IBackgroundTaskSettingsViewModel;\n}\n"],"names":["BackgroundTaskSettingsPresenter","createAbstraction"],"mappings":";AAeO,MAAMA,kCAAkCC,kBAC3C"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const BackgroundTaskSettingsView: () => React.JSX.Element;
@@ -0,0 +1,56 @@
1
+ import react, { useEffect, useMemo } from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { DiContainerProvider, useContainer, useFeature } from "@webiny/app";
4
+ import { CenteredView, FormErrors, SimpleForm, SimpleFormContent, SimpleFormFooter, SimpleFormHeader } from "@webiny/app-admin";
5
+ import { Button, OverlayLoader, useToast } from "@webiny/admin-ui";
6
+ import { FormView } from "@webiny/app-admin/features/formModel/FormView.js";
7
+ import { BackgroundTaskSettingsPresenterFeature } from "../feature.js";
8
+ import { GetBackgroundTaskSettingsFeature } from "../../../features/getBackgroundTaskSettings/feature.js";
9
+ import { UpdateBackgroundTaskSettingsFeature } from "../../../features/updateBackgroundTaskSettings/feature.js";
10
+ const BackgroundTaskSettingsView_BackgroundTaskSettingsViewInner = observer(function() {
11
+ const { presenter } = useFeature(BackgroundTaskSettingsPresenterFeature);
12
+ const toast = useToast();
13
+ useEffect(()=>{
14
+ presenter.init();
15
+ }, [
16
+ presenter
17
+ ]);
18
+ const { vm } = presenter;
19
+ const handleSave = async ()=>{
20
+ const success = await presenter.save();
21
+ if (success) toast.showSuccessToast({
22
+ title: "Background task settings saved successfully!"
23
+ });
24
+ };
25
+ return /*#__PURE__*/ react.createElement(CenteredView, null, /*#__PURE__*/ react.createElement(FormErrors, {
26
+ form: vm.form
27
+ }), /*#__PURE__*/ react.createElement(SimpleForm, null, vm.loading ? /*#__PURE__*/ react.createElement(OverlayLoader, {
28
+ text: "Loading settings..."
29
+ }) : null, vm.saving ? /*#__PURE__*/ react.createElement(OverlayLoader, {
30
+ text: "Saving settings..."
31
+ }) : null, /*#__PURE__*/ react.createElement(SimpleFormHeader, {
32
+ title: "Background Task Settings"
33
+ }), /*#__PURE__*/ react.createElement(SimpleFormContent, null, /*#__PURE__*/ react.createElement(FormView, {
34
+ name: "BackgroundTaskSettings",
35
+ form: vm.form
36
+ })), /*#__PURE__*/ react.createElement(SimpleFormFooter, null, /*#__PURE__*/ react.createElement(Button, {
37
+ text: "Save settings",
38
+ onClick: handleSave
39
+ }))));
40
+ });
41
+ const BackgroundTaskSettingsView = ()=>{
42
+ const container = useContainer();
43
+ const scopedContainer = useMemo(()=>{
44
+ const child = container.createChildContainer();
45
+ GetBackgroundTaskSettingsFeature.register(child);
46
+ UpdateBackgroundTaskSettingsFeature.register(child);
47
+ BackgroundTaskSettingsPresenterFeature.register(child);
48
+ return child;
49
+ }, []);
50
+ return /*#__PURE__*/ react.createElement(DiContainerProvider, {
51
+ container: scopedContainer
52
+ }, /*#__PURE__*/ react.createElement(BackgroundTaskSettingsView_BackgroundTaskSettingsViewInner, null));
53
+ };
54
+ export { BackgroundTaskSettingsView };
55
+
56
+ //# sourceMappingURL=BackgroundTaskSettingsView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js","sources":["../../../../../src/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { CenteredView, FormErrors } from \"@webiny/app-admin\";\nimport { Button, OverlayLoader } from \"@webiny/admin-ui\";\nimport { FormView } from \"@webiny/app-admin/features/formModel/FormView.js\";\nimport { SimpleFormHeader } from \"@webiny/app-admin\";\nimport { SimpleFormFooter } from \"@webiny/app-admin\";\nimport { SimpleFormContent } from \"@webiny/app-admin\";\nimport { SimpleForm } from \"@webiny/app-admin\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { BackgroundTaskSettingsPresenterFeature } from \"../feature.js\";\nimport { GetBackgroundTaskSettingsFeature } from \"~/admin/features/getBackgroundTaskSettings/feature.js\";\nimport { UpdateBackgroundTaskSettingsFeature } from \"~/admin/features/updateBackgroundTaskSettings/feature.js\";\n\nconst BackgroundTaskSettingsViewInner = observer(function BackgroundTaskSettingsViewInner() {\n const { presenter } = useFeature(BackgroundTaskSettingsPresenterFeature);\n const toast = useToast();\n\n useEffect(() => {\n void presenter.init();\n }, [presenter]);\n\n const { vm } = presenter;\n\n const handleSave = async () => {\n const success = await presenter.save();\n if (success) {\n toast.showSuccessToast({\n title: \"Background task settings saved successfully!\"\n });\n }\n };\n\n return (\n <CenteredView>\n <FormErrors form={vm.form} />\n <SimpleForm>\n {vm.loading ? <OverlayLoader text={\"Loading settings...\"} /> : null}\n {vm.saving ? <OverlayLoader text={\"Saving settings...\"} /> : null}\n <SimpleFormHeader title=\"Background Task Settings\" />\n <SimpleFormContent>\n <FormView name=\"BackgroundTaskSettings\" form={vm.form} />\n </SimpleFormContent>\n <SimpleFormFooter>\n <Button text={\"Save settings\"} onClick={handleSave} />\n </SimpleFormFooter>\n </SimpleForm>\n </CenteredView>\n );\n});\n\nexport const BackgroundTaskSettingsView = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n GetBackgroundTaskSettingsFeature.register(child);\n UpdateBackgroundTaskSettingsFeature.register(child);\n BackgroundTaskSettingsPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <BackgroundTaskSettingsViewInner />\n </DiContainerProvider>\n );\n};\n"],"names":["BackgroundTaskSettingsViewInner","observer","presenter","useFeature","BackgroundTaskSettingsPresenterFeature","toast","useToast","useEffect","vm","handleSave","success","CenteredView","FormErrors","SimpleForm","OverlayLoader","SimpleFormHeader","SimpleFormContent","FormView","SimpleFormFooter","Button","BackgroundTaskSettingsView","container","useContainer","scopedContainer","useMemo","child","GetBackgroundTaskSettingsFeature","UpdateBackgroundTaskSettingsFeature","DiContainerProvider"],"mappings":";;;;;;;;;AAeA,MAAMA,6DAAkCC,SAAS;IAC7C,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAMC,QAAQC;IAEdC,UAAU;QACDL,UAAU,IAAI;IACvB,GAAG;QAACA;KAAU;IAEd,MAAM,EAAEM,EAAE,EAAE,GAAGN;IAEf,MAAMO,aAAa;QACf,MAAMC,UAAU,MAAMR,UAAU,IAAI;QACpC,IAAIQ,SACAL,MAAM,gBAAgB,CAAC;YACnB,OAAO;QACX;IAER;IAEA,OAAO,WAAP,GACI,oBAACM,cAAYA,MAAAA,WAAAA,GACT,oBAACC,YAAUA;QAAC,MAAMJ,GAAG,IAAI;sBACzB,oBAACK,YAAUA,MACNL,GAAG,OAAO,GAAG,WAAH,GAAG,oBAACM,eAAaA;QAAC,MAAM;SAA4B,MAC9DN,GAAG,MAAM,GAAG,WAAH,GAAG,oBAACM,eAAaA;QAAC,MAAM;SAA2B,oBAC7D,oBAACC,kBAAgBA;QAAC,OAAM;sBACxB,oBAACC,mBAAiBA,MAAAA,WAAAA,GACd,oBAACC,UAAQA;QAAC,MAAK;QAAyB,MAAMT,GAAG,IAAI;uBAEzD,oBAACU,kBAAgBA,MAAAA,WAAAA,GACb,oBAACC,QAAMA;QAAC,MAAM;QAAiB,SAASV;;AAK5D;AAEO,MAAMW,6BAA6B;IACtC,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBC,QAAQ;QAC5B,MAAMC,QAAQJ,UAAU,oBAAoB;QAC5CK,iCAAiC,QAAQ,CAACD;QAC1CE,oCAAoC,QAAQ,CAACF;QAC7CrB,uCAAuC,QAAQ,CAACqB;QAChD,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACG,qBAAmBA;QAAC,WAAWL;qBAC5B,oBAACvB,4DAA+BA;AAG5C"}
@@ -0,0 +1,3 @@
1
+ export declare const BackgroundTaskSettingsPresenterFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ presenter: import("./abstractions.js").IBackgroundTaskSettingsPresenter;
3
+ }, []>;
@@ -0,0 +1,17 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { BackgroundTaskSettingsPresenter } from "./abstractions.js";
3
+ import { BackgroundTaskSettingsPresenter as external_BackgroundTaskSettingsPresenter_js_BackgroundTaskSettingsPresenter } from "./BackgroundTaskSettingsPresenter.js";
4
+ const BackgroundTaskSettingsPresenterFeature = createFeature({
5
+ name: "BackgroundTasks/BackgroundTaskSettingsPresenter",
6
+ register (container) {
7
+ container.register(external_BackgroundTaskSettingsPresenter_js_BackgroundTaskSettingsPresenter).inSingletonScope();
8
+ },
9
+ resolve (container) {
10
+ return {
11
+ presenter: container.resolve(BackgroundTaskSettingsPresenter)
12
+ };
13
+ }
14
+ });
15
+ export { BackgroundTaskSettingsPresenterFeature };
16
+
17
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/BackgroundTaskSettings/feature.js","sources":["../../../../src/admin/presentation/BackgroundTaskSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { BackgroundTaskSettingsPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { BackgroundTaskSettingsPresenter } from \"./BackgroundTaskSettingsPresenter.js\";\n\nexport const BackgroundTaskSettingsPresenterFeature = createFeature({\n name: \"BackgroundTasks/BackgroundTaskSettingsPresenter\",\n register(container) {\n container.register(BackgroundTaskSettingsPresenter).inSingletonScope();\n },\n resolve(container) {\n return {\n presenter: container.resolve(PresenterAbstraction)\n };\n }\n});\n"],"names":["BackgroundTaskSettingsPresenterFeature","createFeature","container","BackgroundTaskSettingsPresenter","PresenterAbstraction"],"mappings":";;;AAIO,MAAMA,yCAAyCC,cAAc;IAChE,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,6EAAiC,gBAAgB;IACxE;IACA,SAAQD,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACE;QACjC;IACJ;AACJ"}
@@ -0,0 +1,2 @@
1
+ export { BackgroundTaskSettingsPresenter } from "./abstractions.js";
2
+ export { BackgroundTaskSettingsPresenterFeature } from "./feature.js";
@@ -0,0 +1,2 @@
1
+ export { BackgroundTaskSettingsPresenter } from "./abstractions.js";
2
+ export { BackgroundTaskSettingsPresenterFeature } from "./feature.js";
@@ -4,6 +4,7 @@ import { DiContainerProvider, useContainer, useFeature } from "@webiny/app";
4
4
  import { DataTable, Heading, Separator, Text } from "@webiny/admin-ui";
5
5
  import { TaskDefinitionsPresenterFeature } from "../feature.js";
6
6
  import { ListDefinitionsFeature } from "../../../features/listDefinitions/feature.js";
7
+ import { TaskExecutionsButton } from "./TaskExecutionsButton.js";
7
8
  const TaskDefinitionsView_TaskDefinitionsViewInner = observer(function() {
8
9
  const { presenter } = useFeature(TaskDefinitionsPresenterFeature);
9
10
  useEffect(()=>{
@@ -45,7 +46,7 @@ const TaskDefinitionsView_TaskDefinitionsViewInner = observer(function() {
45
46
  className: "flex items-center justify-between py-sm px-md"
46
47
  }, /*#__PURE__*/ react.createElement(Heading, {
47
48
  level: 5
48
- }, "Task Definitions")), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
49
+ }, "Task Definitions"), /*#__PURE__*/ react.createElement(TaskExecutionsButton, null)), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
49
50
  className: "flex-1 overflow-auto"
50
51
  }, vm.loading || 0 !== vm.definitions.length ? /*#__PURE__*/ react.createElement(DataTable, {
51
52
  columns: columns,
@@ -1 +1 @@
1
- {"version":3,"file":"admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js","sources":["../../../../../src/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { DataTable, Heading, Separator, Text } from \"@webiny/admin-ui\";\nimport { TaskDefinitionsPresenterFeature } from \"../feature.js\";\nimport { ListDefinitionsFeature } from \"~/admin/features/listDefinitions/feature.js\";\nimport type { TaskDefinition } from \"~/admin/shared/types.js\";\n\nconst TaskDefinitionsViewInner = observer(function TaskDefinitionsViewInner() {\n const { presenter } = useFeature(TaskDefinitionsPresenterFeature);\n\n useEffect(() => {\n presenter.init();\n }, [presenter]);\n\n const { vm } = presenter;\n\n const columns = useMemo(\n () => ({\n title: {\n header: \"Title\",\n cell: (row: TaskDefinition) => <Text size=\"sm\">{row.title || row.id}</Text>,\n enableSorting: false,\n size: 250\n },\n id: {\n header: \"ID\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong font-mono\">\n {row.id}\n </Text>\n ),\n enableSorting: false,\n size: 250\n },\n description: {\n header: \"Description\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n {row.description || \"—\"}\n </Text>\n ),\n enableSorting: false\n }\n }),\n []\n );\n\n return (\n <div className=\"flex flex-col h-main-content\">\n <div className=\"flex items-center justify-between py-sm px-md\">\n <Heading level={5}>Task Definitions</Heading>\n </div>\n <Separator />\n <div className=\"flex-1 overflow-auto\">\n {!vm.loading && vm.definitions.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-full gap-md\">\n <Text className=\"text-neutral-strong\">No task definitions found.</Text>\n </div>\n ) : (\n <DataTable<TaskDefinition>\n columns={columns}\n data={vm.definitions}\n loading={vm.loading}\n stickyHeader\n />\n )}\n </div>\n </div>\n );\n});\n\nexport const TaskDefinitionsView = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n ListDefinitionsFeature.register(child);\n TaskDefinitionsPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDefinitionsViewInner />\n </DiContainerProvider>\n );\n};\n"],"names":["TaskDefinitionsViewInner","observer","presenter","useFeature","TaskDefinitionsPresenterFeature","useEffect","vm","columns","useMemo","row","Text","Heading","Separator","DataTable","TaskDefinitionsView","container","useContainer","scopedContainer","child","ListDefinitionsFeature","DiContainerProvider"],"mappings":";;;;;;AAQA,MAAMA,+CAA2BC,SAAS;IACtC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IAEjCC,UAAU;QACNH,UAAU,IAAI;IAClB,GAAG;QAACA;KAAU;IAEd,MAAM,EAAEI,EAAE,EAAE,GAAGJ;IAEf,MAAMK,UAAUC,QACZ,IAAO;YACH,OAAO;gBACH,QAAQ;gBACR,MAAM,CAACC,MAAAA,WAAAA,GAAwB,oBAACC,MAAIA;wBAAC,MAAK;uBAAMD,IAAI,KAAK,IAAIA,IAAI,EAAE;gBACnE,eAAe;gBACf,MAAM;YACV;YACA,IAAI;gBACA,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACC,MAAIA;wBAAC,MAAK;wBAAK,WAAU;uBACrBD,IAAI,EAAE;gBAGf,eAAe;gBACf,MAAM;YACV;YACA,aAAa;gBACT,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACC,MAAIA;wBAAC,MAAK;wBAAK,WAAU;uBACrBD,IAAI,WAAW,IAAI;gBAG5B,eAAe;YACnB;QACJ,IACA,EAAE;IAGN,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACE,SAAOA;QAAC,OAAO;OAAG,oCAEvB,oBAACC,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;OACV,AAACN,GAAG,OAAO,IAAIA,AAA0B,MAA1BA,GAAG,WAAW,CAAC,MAAM,GAES,cAG1C,oBAACO,WAASA;QACN,SAASN;QACT,MAAMD,GAAG,WAAW;QACpB,SAASA,GAAG,OAAO;QACnB;SATsC,WAAJ,GACtC,oBAAC;QAAI,WAAU;qBACX,oBAACI,MAAIA;QAAC,WAAU;OAAsB;AAa9D;AAEO,MAAMI,sBAAsB;IAC/B,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBT,QAAQ;QAC5B,MAAMU,QAAQH,UAAU,oBAAoB;QAC5CI,uBAAuB,QAAQ,CAACD;QAChCd,gCAAgC,QAAQ,CAACc;QACzC,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACE,qBAAmBA;QAAC,WAAWH;qBAC5B,oBAACjB,8CAAwBA;AAGrC"}
1
+ {"version":3,"file":"admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js","sources":["../../../../../src/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { DataTable, Heading, Separator, Text } from \"@webiny/admin-ui\";\nimport { TaskDefinitionsPresenterFeature } from \"../feature.js\";\nimport { ListDefinitionsFeature } from \"~/admin/features/listDefinitions/feature.js\";\nimport type { TaskDefinition } from \"~/admin/shared/types.js\";\nimport { TaskExecutionsButton } from \"~/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js\";\n\nconst TaskDefinitionsViewInner = observer(function TaskDefinitionsViewInner() {\n const { presenter } = useFeature(TaskDefinitionsPresenterFeature);\n\n useEffect(() => {\n presenter.init();\n }, [presenter]);\n\n const { vm } = presenter;\n\n const columns = useMemo(\n () => ({\n title: {\n header: \"Title\",\n cell: (row: TaskDefinition) => <Text size=\"sm\">{row.title || row.id}</Text>,\n enableSorting: false,\n size: 250\n },\n id: {\n header: \"ID\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong font-mono\">\n {row.id}\n </Text>\n ),\n enableSorting: false,\n size: 250\n },\n description: {\n header: \"Description\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n {row.description || \"—\"}\n </Text>\n ),\n enableSorting: false\n }\n }),\n []\n );\n\n return (\n <div className=\"flex flex-col h-main-content\">\n <div className=\"flex items-center justify-between py-sm px-md\">\n <Heading level={5}>Task Definitions</Heading>\n <TaskExecutionsButton />\n </div>\n <Separator />\n <div className=\"flex-1 overflow-auto\">\n {!vm.loading && vm.definitions.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-full gap-md\">\n <Text className=\"text-neutral-strong\">No task definitions found.</Text>\n </div>\n ) : (\n <DataTable<TaskDefinition>\n columns={columns}\n data={vm.definitions}\n loading={vm.loading}\n stickyHeader\n />\n )}\n </div>\n </div>\n );\n});\n\nexport const TaskDefinitionsView = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n ListDefinitionsFeature.register(child);\n TaskDefinitionsPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDefinitionsViewInner />\n </DiContainerProvider>\n );\n};\n"],"names":["TaskDefinitionsViewInner","observer","presenter","useFeature","TaskDefinitionsPresenterFeature","useEffect","vm","columns","useMemo","row","Text","Heading","TaskExecutionsButton","Separator","DataTable","TaskDefinitionsView","container","useContainer","scopedContainer","child","ListDefinitionsFeature","DiContainerProvider"],"mappings":";;;;;;;AASA,MAAMA,+CAA2BC,SAAS;IACtC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IAEjCC,UAAU;QACNH,UAAU,IAAI;IAClB,GAAG;QAACA;KAAU;IAEd,MAAM,EAAEI,EAAE,EAAE,GAAGJ;IAEf,MAAMK,UAAUC,QACZ,IAAO;YACH,OAAO;gBACH,QAAQ;gBACR,MAAM,CAACC,MAAAA,WAAAA,GAAwB,oBAACC,MAAIA;wBAAC,MAAK;uBAAMD,IAAI,KAAK,IAAIA,IAAI,EAAE;gBACnE,eAAe;gBACf,MAAM;YACV;YACA,IAAI;gBACA,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACC,MAAIA;wBAAC,MAAK;wBAAK,WAAU;uBACrBD,IAAI,EAAE;gBAGf,eAAe;gBACf,MAAM;YACV;YACA,aAAa;gBACT,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACC,MAAIA;wBAAC,MAAK;wBAAK,WAAU;uBACrBD,IAAI,WAAW,IAAI;gBAG5B,eAAe;YACnB;QACJ,IACA,EAAE;IAGN,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACE,SAAOA;QAAC,OAAO;OAAG,mCACnB,oBAACC,sBAAoBA,QAAAA,WAAAA,GAEzB,oBAACC,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;OACV,AAACP,GAAG,OAAO,IAAIA,AAA0B,MAA1BA,GAAG,WAAW,CAAC,MAAM,GAES,cAG1C,oBAACQ,WAASA;QACN,SAASP;QACT,MAAMD,GAAG,WAAW;QACpB,SAASA,GAAG,OAAO;QACnB;SATsC,WAAJ,GACtC,oBAAC;QAAI,WAAU;qBACX,oBAACI,MAAIA;QAAC,WAAU;OAAsB;AAa9D;AAEO,MAAMK,sBAAsB;IAC/B,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBV,QAAQ;QAC5B,MAAMW,QAAQH,UAAU,oBAAoB;QAC5CI,uBAAuB,QAAQ,CAACD;QAChCf,gCAAgC,QAAQ,CAACe;QACzC,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACE,qBAAmBA;QAAC,WAAWH;qBAC5B,oBAAClB,8CAAwBA;AAGrC"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const TaskExecutionsButton: () => React.JSX.Element;
@@ -0,0 +1,16 @@
1
+ import react from "react";
2
+ import { useRouter } from "@webiny/app-admin";
3
+ import { Button } from "@webiny/admin-ui";
4
+ import { ReactComponent } from "@webiny/icons/task.svg";
5
+ import { Routes } from "../../../routes.js";
6
+ const TaskExecutionsButton = ()=>{
7
+ const { goToRoute } = useRouter();
8
+ return /*#__PURE__*/ react.createElement(Button, {
9
+ variant: "secondary",
10
+ onClick: ()=>goToRoute(Routes.Executions),
11
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null)
12
+ }, "Task Executions");
13
+ };
14
+ export { TaskExecutionsButton };
15
+
16
+ //# sourceMappingURL=TaskExecutionsButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js","sources":["../../../../../src/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { ReactComponent as TaskIcon } from \"@webiny/icons/task.svg\";\nimport { Routes } from \"~/admin/routes.js\";\n\nexport const TaskExecutionsButton = () => {\n const { goToRoute } = useRouter();\n\n return (\n <Button\n variant=\"secondary\"\n onClick={() => goToRoute(Routes.Executions)}\n icon={<TaskIcon />}\n >\n Task Executions\n </Button>\n );\n};\n"],"names":["TaskExecutionsButton","goToRoute","useRouter","Button","Routes","TaskIcon"],"mappings":";;;;;AAMO,MAAMA,uBAAuB;IAChC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAEtB,OAAO,WAAP,GACI,oBAACC,QAAMA;QACH,SAAQ;QACR,SAAS,IAAMF,UAAUG,OAAO,UAAU;QAC1C,oBAAM,oBAACC,gBAAQA;OAClB;AAIT"}
@@ -60,7 +60,7 @@ class TaskDetailPresenterImpl {
60
60
  "createdOn_DESC"
61
61
  ],
62
62
  limit: 50,
63
- after: after ?? void 0
63
+ after: after || void 0
64
64
  });
65
65
  runInAction(()=>{
66
66
  if (after) this._logs = [
@@ -1 +1 @@
1
- {"version":3,"file":"admin/presentation/TaskDetail/TaskDetailPresenter.js","sources":["../../../../src/admin/presentation/TaskDetail/TaskDetailPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type { Task, TaskLog } from \"~/admin/shared/types.js\";\nimport {\n TaskDetailPresenter as Abstraction,\n type ITaskDetailPresenter,\n type ITaskDetailViewModel\n} from \"./abstractions.js\";\nimport { GetTaskUseCase } from \"~/admin/features/getTask/abstractions.js\";\nimport { ListLogsUseCase } from \"~/admin/features/listLogs/abstractions.js\";\n\nclass TaskDetailPresenterImpl implements ITaskDetailPresenter {\n private _task: Task | null = null;\n private _loading = false;\n private _logs: TaskLog[] = [];\n private _logsLoading = false;\n private _logsCursor: string | null = null;\n private _logsHasMore = false;\n private _logsTotalCount = 0;\n private _taskId: string | null = null;\n\n constructor(\n private readonly getTaskUseCase: GetTaskUseCase.Interface,\n private readonly listLogsUseCase: ListLogsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): ITaskDetailViewModel {\n return {\n task: this._task,\n loading: this._loading,\n logs: {\n rows: this._logs,\n pagination: {\n totalCount: this._logsTotalCount,\n loading: this._logsLoading,\n hasMore: this._logsHasMore\n }\n }\n };\n }\n\n async init(taskId: string): Promise<void> {\n this._taskId = taskId;\n this._loading = true;\n this._logs = [];\n this._logsCursor = null;\n this._logsHasMore = false;\n this._logsTotalCount = 0;\n\n const task = await this.getTaskUseCase.execute(taskId);\n\n runInAction(() => {\n this._task = task;\n this._loading = false;\n });\n\n await this.fetchLogs();\n }\n\n async loadMore(): Promise<void> {\n if (!this._logsHasMore || this._logsLoading) {\n return;\n }\n\n await this.fetchLogs(this._logsCursor);\n }\n\n private async fetchLogs(after?: string | null): Promise<void> {\n this._logsLoading = true;\n\n const result = await this.listLogsUseCase.execute({\n where: { task: this._taskId! },\n sort: [\"createdOn_DESC\"],\n limit: 50,\n after: after ?? undefined\n });\n\n runInAction(() => {\n if (after) {\n this._logs = [...this._logs, ...result.items];\n } else {\n this._logs = result.items;\n }\n this._logsCursor = result.meta.cursor;\n this._logsHasMore = result.meta.hasMoreItems;\n this._logsTotalCount = result.meta.totalCount;\n this._logsLoading = false;\n });\n }\n}\n\nexport const TaskDetailPresenter = Abstraction.createImplementation({\n implementation: TaskDetailPresenterImpl,\n dependencies: [GetTaskUseCase, ListLogsUseCase]\n});\n"],"names":["TaskDetailPresenterImpl","getTaskUseCase","listLogsUseCase","makeAutoObservable","computed","taskId","task","runInAction","after","result","undefined","TaskDetailPresenter","Abstraction","GetTaskUseCase","ListLogsUseCase"],"mappings":";;;;AAUA,MAAMA;IAUF,YACqBC,cAAwC,EACxCC,eAA0C,CAC7D;aAFmBD,cAAc,GAAdA;aACAC,eAAe,GAAfA;aAXb,KAAK,GAAgB;aACrB,QAAQ,GAAG;aACX,KAAK,GAAc,EAAE;aACrB,YAAY,GAAG;aACf,WAAW,GAAkB;aAC7B,YAAY,GAAG;aACf,eAAe,GAAG;aAClB,OAAO,GAAkB;QAM7BC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEA,IAAI,KAA2B;QAC3B,OAAO;YACH,MAAM,IAAI,CAAC,KAAK;YAChB,SAAS,IAAI,CAAC,QAAQ;YACtB,MAAM;gBACF,MAAM,IAAI,CAAC,KAAK;gBAChB,YAAY;oBACR,YAAY,IAAI,CAAC,eAAe;oBAChC,SAAS,IAAI,CAAC,YAAY;oBAC1B,SAAS,IAAI,CAAC,YAAY;gBAC9B;YACJ;QACJ;IACJ;IAEA,MAAM,KAAKC,MAAc,EAAiB;QACtC,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,WAAW,GAAG;QACnB,IAAI,CAAC,YAAY,GAAG;QACpB,IAAI,CAAC,eAAe,GAAG;QAEvB,MAAMC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACD;QAE/CE,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD;YACb,IAAI,CAAC,QAAQ,GAAG;QACpB;QAEA,MAAM,IAAI,CAAC,SAAS;IACxB;IAEA,MAAM,WAA0B;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EACvC;QAGJ,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW;IACzC;IAEA,MAAc,UAAUE,KAAqB,EAAiB;QAC1D,IAAI,CAAC,YAAY,GAAG;QAEpB,MAAMC,SAAS,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC9C,OAAO;gBAAE,MAAM,IAAI,CAAC,OAAO;YAAE;YAC7B,MAAM;gBAAC;aAAiB;YACxB,OAAO;YACP,OAAOD,SAASE;QACpB;QAEAH,YAAY;YACR,IAAIC,OACA,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKC,OAAO,KAAK;aAAC;iBAE7C,IAAI,CAAC,KAAK,GAAGA,OAAO,KAAK;YAE7B,IAAI,CAAC,WAAW,GAAGA,OAAO,IAAI,CAAC,MAAM;YACrC,IAAI,CAAC,YAAY,GAAGA,OAAO,IAAI,CAAC,YAAY;YAC5C,IAAI,CAAC,eAAe,GAAGA,OAAO,IAAI,CAAC,UAAU;YAC7C,IAAI,CAAC,YAAY,GAAG;QACxB;IACJ;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBZ;IAChB,cAAc;QAACa;QAAgBC;KAAgB;AACnD"}
1
+ {"version":3,"file":"admin/presentation/TaskDetail/TaskDetailPresenter.js","sources":["../../../../src/admin/presentation/TaskDetail/TaskDetailPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type { Task, TaskLog } from \"~/admin/shared/types.js\";\nimport {\n TaskDetailPresenter as Abstraction,\n type ITaskDetailPresenter,\n type ITaskDetailViewModel\n} from \"./abstractions.js\";\nimport { GetTaskUseCase } from \"~/admin/features/getTask/abstractions.js\";\nimport { ListLogsUseCase } from \"~/admin/features/listLogs/abstractions.js\";\n\nclass TaskDetailPresenterImpl implements ITaskDetailPresenter {\n private _task: Task | null = null;\n private _loading = false;\n private _logs: TaskLog[] = [];\n private _logsLoading = false;\n private _logsCursor: string | null = null;\n private _logsHasMore = false;\n private _logsTotalCount = 0;\n private _taskId: string | null = null;\n\n constructor(\n private readonly getTaskUseCase: GetTaskUseCase.Interface,\n private readonly listLogsUseCase: ListLogsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): ITaskDetailViewModel {\n return {\n task: this._task,\n loading: this._loading,\n logs: {\n rows: this._logs,\n pagination: {\n totalCount: this._logsTotalCount,\n loading: this._logsLoading,\n hasMore: this._logsHasMore\n }\n }\n };\n }\n\n async init(taskId: string): Promise<void> {\n this._taskId = taskId;\n this._loading = true;\n this._logs = [];\n this._logsCursor = null;\n this._logsHasMore = false;\n this._logsTotalCount = 0;\n\n const task = await this.getTaskUseCase.execute(taskId);\n\n runInAction(() => {\n this._task = task;\n this._loading = false;\n });\n\n await this.fetchLogs();\n }\n\n async loadMore(): Promise<void> {\n if (!this._logsHasMore || this._logsLoading) {\n return;\n }\n\n await this.fetchLogs(this._logsCursor);\n }\n\n private async fetchLogs(after?: string | null): Promise<void> {\n this._logsLoading = true;\n\n const result = await this.listLogsUseCase.execute({\n where: { task: this._taskId! },\n sort: [\"createdOn_DESC\"],\n limit: 50,\n after: after || undefined\n });\n\n runInAction(() => {\n if (after) {\n this._logs = [...this._logs, ...result.items];\n } else {\n this._logs = result.items;\n }\n this._logsCursor = result.meta.cursor;\n this._logsHasMore = result.meta.hasMoreItems;\n this._logsTotalCount = result.meta.totalCount;\n this._logsLoading = false;\n });\n }\n}\n\nexport const TaskDetailPresenter = Abstraction.createImplementation({\n implementation: TaskDetailPresenterImpl,\n dependencies: [GetTaskUseCase, ListLogsUseCase]\n});\n"],"names":["TaskDetailPresenterImpl","getTaskUseCase","listLogsUseCase","makeAutoObservable","computed","taskId","task","runInAction","after","result","undefined","TaskDetailPresenter","Abstraction","GetTaskUseCase","ListLogsUseCase"],"mappings":";;;;AAUA,MAAMA;IAUF,YACqBC,cAAwC,EACxCC,eAA0C,CAC7D;aAFmBD,cAAc,GAAdA;aACAC,eAAe,GAAfA;aAXb,KAAK,GAAgB;aACrB,QAAQ,GAAG;aACX,KAAK,GAAc,EAAE;aACrB,YAAY,GAAG;aACf,WAAW,GAAkB;aAC7B,YAAY,GAAG;aACf,eAAe,GAAG;aAClB,OAAO,GAAkB;QAM7BC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEA,IAAI,KAA2B;QAC3B,OAAO;YACH,MAAM,IAAI,CAAC,KAAK;YAChB,SAAS,IAAI,CAAC,QAAQ;YACtB,MAAM;gBACF,MAAM,IAAI,CAAC,KAAK;gBAChB,YAAY;oBACR,YAAY,IAAI,CAAC,eAAe;oBAChC,SAAS,IAAI,CAAC,YAAY;oBAC1B,SAAS,IAAI,CAAC,YAAY;gBAC9B;YACJ;QACJ;IACJ;IAEA,MAAM,KAAKC,MAAc,EAAiB;QACtC,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,WAAW,GAAG;QACnB,IAAI,CAAC,YAAY,GAAG;QACpB,IAAI,CAAC,eAAe,GAAG;QAEvB,MAAMC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACD;QAE/CE,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD;YACb,IAAI,CAAC,QAAQ,GAAG;QACpB;QAEA,MAAM,IAAI,CAAC,SAAS;IACxB;IAEA,MAAM,WAA0B;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EACvC;QAGJ,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW;IACzC;IAEA,MAAc,UAAUE,KAAqB,EAAiB;QAC1D,IAAI,CAAC,YAAY,GAAG;QAEpB,MAAMC,SAAS,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC9C,OAAO;gBAAE,MAAM,IAAI,CAAC,OAAO;YAAE;YAC7B,MAAM;gBAAC;aAAiB;YACxB,OAAO;YACP,OAAOD,SAASE;QACpB;QAEAH,YAAY;YACR,IAAIC,OACA,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKC,OAAO,KAAK;aAAC;iBAE7C,IAAI,CAAC,KAAK,GAAGA,OAAO,KAAK;YAE7B,IAAI,CAAC,WAAW,GAAGA,OAAO,IAAI,CAAC,MAAM;YACrC,IAAI,CAAC,YAAY,GAAGA,OAAO,IAAI,CAAC,YAAY;YAC5C,IAAI,CAAC,eAAe,GAAGA,OAAO,IAAI,CAAC,UAAU;YAC7C,IAAI,CAAC,YAAY,GAAG;QACxB;IACJ;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBZ;IAChB,cAAc;QAACa;QAAgBC;KAAgB;AACnD"}
@@ -176,6 +176,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
176
176
  }, /*#__PURE__*/ react.createElement(Grid.Column, {
177
177
  span: 6
178
178
  }, /*#__PURE__*/ react.createElement(Text, {
179
+ as: "div",
179
180
  size: "sm",
180
181
  className: "text-neutral-strong"
181
182
  }, "Definition"), /*#__PURE__*/ react.createElement(Text, {
@@ -183,6 +184,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
183
184
  }, displayTask.definitionId)), /*#__PURE__*/ react.createElement(Grid.Column, {
184
185
  span: 6
185
186
  }, /*#__PURE__*/ react.createElement(Text, {
187
+ as: "div",
186
188
  size: "sm",
187
189
  className: "text-neutral-strong"
188
190
  }, "Created By"), /*#__PURE__*/ react.createElement(Text, {
@@ -190,6 +192,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
190
192
  }, displayTask.createdBy?.displayName ?? "—")), /*#__PURE__*/ react.createElement(Grid.Column, {
191
193
  span: 6
192
194
  }, /*#__PURE__*/ react.createElement(Text, {
195
+ as: "div",
193
196
  size: "sm",
194
197
  className: "text-neutral-strong"
195
198
  }, "Created On"), /*#__PURE__*/ react.createElement(Text, {
@@ -199,6 +202,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
199
202
  }) : "—")), /*#__PURE__*/ react.createElement(Grid.Column, {
200
203
  span: 6
201
204
  }, /*#__PURE__*/ react.createElement(Text, {
205
+ as: "div",
202
206
  size: "sm",
203
207
  className: "text-neutral-strong"
204
208
  }, "Started On"), /*#__PURE__*/ react.createElement(Text, {
@@ -208,6 +212,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
208
212
  }) : "—")), /*#__PURE__*/ react.createElement(Grid.Column, {
209
213
  span: 6
210
214
  }, /*#__PURE__*/ react.createElement(Text, {
215
+ as: "div",
211
216
  size: "sm",
212
217
  className: "text-neutral-strong"
213
218
  }, "Finished On"), /*#__PURE__*/ react.createElement(Text, {
@@ -217,6 +222,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
217
222
  }) : "—")), /*#__PURE__*/ react.createElement(Grid.Column, {
218
223
  span: 6
219
224
  }, /*#__PURE__*/ react.createElement(Text, {
225
+ as: "div",
220
226
  size: "sm",
221
227
  className: "text-neutral-strong"
222
228
  }, "Iterations"), /*#__PURE__*/ react.createElement(Text, {
@@ -1 +1 @@
1
- {"version":3,"file":"admin/presentation/TaskDetail/components/TaskDetailDrawer.js","sources":["../../../../../src/admin/presentation/TaskDetail/components/TaskDetailDrawer.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { Button, Drawer, Grid, Heading, Separator, Tag, Text, TimeAgo } from \"@webiny/admin-ui\";\nimport { CodeEditor } from \"@webiny/admin-ui\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/index.js\";\nimport { ReactComponent as StopCircleIcon } from \"@webiny/icons/stop_circle.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { ReactComponent as ExpandMoreIcon } from \"@webiny/icons/expand_more.svg\";\nimport { ReactComponent as ExpandLessIcon } from \"@webiny/icons/expand_less.svg\";\nimport { TaskDetailPresenterFeature } from \"../feature.js\";\nimport { GetTaskFeature } from \"~/admin/features/getTask/feature.js\";\nimport { ListLogsFeature } from \"~/admin/features/listLogs/feature.js\";\nimport type { Task, TaskLog, TaskLogItem } from \"~/admin/shared/types.js\";\n\nconst STATUS_TAG_VARIANT: Record<\n string,\n \"neutral-light\" | \"accent\" | \"success\" | \"destructive\" | \"warning\"\n> = {\n pending: \"neutral-light\",\n running: \"accent\",\n success: \"success\",\n failed: \"destructive\",\n aborted: \"warning\"\n};\n\nconst formatJson = (value: unknown): string => {\n if (value === null || value === undefined) {\n return \"\";\n }\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n return JSON.stringify(value, null, 2);\n};\n\ninterface ExpandButtonProps {\n show: boolean;\n expanded: boolean;\n onClick: () => void;\n}\n\nconst ExpandButton = ({ show, expanded, onClick }: ExpandButtonProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n icon={expanded ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n onClick={onClick}\n />\n );\n};\n\ninterface ExpandedPayloadProps {\n show: boolean;\n label: string;\n value: unknown;\n variant?: \"default\" | \"destructive\";\n}\n\nconst ExpandedPayload = ({ show, label, value, variant = \"default\" }: ExpandedPayloadProps) => {\n if (!show) {\n return null;\n }\n\n const textClass = variant === \"destructive\" ? \" text-destructive\" : \"\";\n\n return (\n <div className=\"mt-xs\">\n <Text size=\"sm\" className=\"text-neutral-strong mb-xs\">\n {label}\n </Text>\n <pre\n className={`bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]${textClass}`}\n >\n {formatJson(value)}\n </pre>\n </div>\n );\n};\n\ninterface JsonSectionProps {\n show: boolean;\n title: string;\n value: string;\n}\n\nconst JsonSection = ({ show, title, value }: JsonSectionProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <>\n <Separator />\n <div>\n <Heading level={6} className=\"mb-sm\">\n {title}\n </Heading>\n <CodeEditor value={value} language=\"json\" disabled={true} />\n </div>\n </>\n );\n};\n\ninterface LoadMoreLogsButtonProps {\n show: boolean;\n loading: boolean;\n onClick: () => void;\n}\n\nconst LoadMoreLogsButton = ({ show, loading, onClick }: LoadMoreLogsButtonProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <div className=\"mt-sm\">\n <Button variant=\"tertiary\" size=\"sm\" onClick={onClick} disabled={loading}>\n {loading ? \"Loading...\" : \"Load more logs\"}\n </Button>\n </div>\n );\n};\n\ninterface DrawerActionsProps {\n isRunning: boolean;\n isTerminal: boolean;\n onAbort: () => void;\n onDelete: () => void;\n}\n\nconst DrawerActions = ({ isRunning, isTerminal, onAbort, onDelete }: DrawerActionsProps) => {\n if (!isRunning && !isTerminal) {\n return null;\n }\n\n return (\n <div className=\"flex gap-sm\">\n {isRunning ? (\n <Button variant=\"secondary\" size=\"sm\" icon={<StopCircleIcon />} onClick={onAbort}>\n Abort\n </Button>\n ) : null}\n {isTerminal ? (\n <Button variant=\"secondary\" size=\"sm\" icon={<DeleteIcon />} onClick={onDelete}>\n Delete\n </Button>\n ) : null}\n </div>\n );\n};\n\ninterface LogItemViewProps {\n item: TaskLogItem;\n}\n\nconst LogItemView = ({ item }: LogItemViewProps) => {\n const [expanded, setExpanded] = useState(false);\n const hasData = item.data !== null && item.data !== undefined;\n const hasError = item.error !== null && item.error !== undefined;\n const expandable = hasData || hasError;\n\n return (\n <div className=\"border-b-sm border-neutral-muted py-xs px-sm\">\n <div className=\"flex items-start gap-sm\">\n <div className=\"flex-shrink-0 pt-[2px]\">\n <Tag\n variant={item.type === \"error\" ? \"destructive\" : \"neutral-light\"}\n content={item.type}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n <Text size=\"sm\">{item.message}</Text>\n </div>\n <div className=\"flex items-center gap-xs flex-shrink-0\">\n <Text size=\"sm\" className=\"text-neutral-strong\">\n <TimeAgo datetime={item.createdOn} />\n </Text>\n <ExpandButton\n show={expandable}\n expanded={expanded}\n onClick={() => setExpanded(!expanded)}\n />\n </div>\n </div>\n <ExpandedPayload show={expanded && hasData} label=\"Data\" value={item.data} />\n <ExpandedPayload\n show={expanded && hasError}\n label=\"Error\"\n value={item.error}\n variant=\"destructive\"\n />\n </div>\n );\n};\n\ninterface TaskDetailDrawerProps {\n task: Task;\n open: boolean;\n onClose: () => void;\n onAbort: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n}\n\nconst TaskDetailDrawerInner = observer(function TaskDetailDrawerInner({\n task,\n open,\n onClose,\n onAbort,\n onDelete\n}: TaskDetailDrawerProps) {\n const { presenter } = useFeature(TaskDetailPresenterFeature);\n\n useEffect(() => {\n if (open) {\n void presenter.init(task.id);\n }\n }, [presenter, task.id, open]);\n\n const { vm } = presenter;\n\n const { showConfirmation: showAbortConfirmation } = useConfirmationDialog({\n title: \"Abort Task\",\n message: \"Are you sure you want to abort this running task?\"\n });\n\n const { showConfirmation: showDeleteConfirmation } = useConfirmationDialog({\n title: \"Delete Task\",\n message: \"Are you sure you want to delete this task?\"\n });\n\n const displayTask = vm.task ?? task;\n const isRunning = displayTask.taskStatus === \"running\";\n const isTerminal =\n displayTask.taskStatus === \"success\" ||\n displayTask.taskStatus === \"failed\" ||\n displayTask.taskStatus === \"aborted\";\n\n const inputJson = formatJson(displayTask.input);\n const outputJson = formatJson(displayTask.output);\n\n return (\n <Drawer\n open={open}\n onOpenChange={isOpen => !isOpen && onClose()}\n title={\n <div className=\"flex items-center gap-sm\">\n <span>{displayTask.name || displayTask.definitionId}</span>\n <Tag\n variant={STATUS_TAG_VARIANT[displayTask.taskStatus] ?? \"neutral-light\"}\n content={displayTask.taskStatus}\n />\n </div>\n }\n modal={true}\n width=\"900px\"\n bodyPadding={false}\n actions={\n <DrawerActions\n isRunning={isRunning}\n isTerminal={isTerminal}\n onAbort={() => showAbortConfirmation(() => onAbort(displayTask.id))}\n onDelete={() => showDeleteConfirmation(() => onDelete(displayTask.id))}\n />\n }\n >\n <div className=\"flex flex-col gap-md p-md overflow-auto\">\n <div>\n <Heading level={6} className=\"mb-sm\">\n General Info\n </Heading>\n <Grid gap=\"comfortable\">\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Definition\n </Text>\n <Text size=\"sm\">{displayTask.definitionId}</Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Created By\n </Text>\n <Text size=\"sm\">{displayTask.createdBy?.displayName ?? \"—\"}</Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Created On\n </Text>\n <Text size=\"sm\">\n {displayTask.createdOn ? (\n <TimeAgo datetime={displayTask.createdOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Started On\n </Text>\n <Text size=\"sm\">\n {displayTask.startedOn ? (\n <TimeAgo datetime={displayTask.startedOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Finished On\n </Text>\n <Text size=\"sm\">\n {displayTask.finishedOn ? (\n <TimeAgo datetime={displayTask.finishedOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Iterations\n </Text>\n <Text size=\"sm\">{displayTask.iterations ?? 0}</Text>\n </Grid.Column>\n </Grid>\n </div>\n\n <JsonSection show={!!inputJson} title=\"Input\" value={inputJson} />\n <JsonSection show={!!outputJson} title=\"Output\" value={outputJson} />\n\n <Separator />\n <div>\n <Heading level={6} className=\"mb-sm\">\n Logs ({vm.logs.pagination.totalCount})\n </Heading>\n {vm.logs.rows.length === 0 && !vm.logs.pagination.loading ? (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n No logs available.\n </Text>\n ) : (\n <div className=\"border-sm border-neutral-muted rounded-sm\">\n {vm.logs.rows.map((log: TaskLog) =>\n log.items.map((item, idx) => (\n <LogItemView key={`${log.id}-${idx}`} item={item} />\n ))\n )}\n </div>\n )}\n <LoadMoreLogsButton\n show={vm.logs.pagination.hasMore}\n loading={vm.logs.pagination.loading}\n onClick={() => presenter.loadMore()}\n />\n </div>\n </div>\n </Drawer>\n );\n});\n\nexport const TaskDetailDrawer = (props: TaskDetailDrawerProps) => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n GetTaskFeature.register(child);\n ListLogsFeature.register(child);\n TaskDetailPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDetailDrawerInner {...props} />\n </DiContainerProvider>\n );\n};\n"],"names":["STATUS_TAG_VARIANT","formatJson","value","JSON","ExpandButton","show","expanded","onClick","Button","ExpandLessIcon","ExpandMoreIcon","ExpandedPayload","label","variant","textClass","Text","JsonSection","title","Separator","Heading","CodeEditor","LoadMoreLogsButton","loading","DrawerActions","isRunning","isTerminal","onAbort","onDelete","StopCircleIcon","DeleteIcon","LogItemView","item","setExpanded","useState","hasData","undefined","hasError","expandable","Tag","TimeAgo","TaskDetailDrawerInner","observer","task","open","onClose","presenter","useFeature","TaskDetailPresenterFeature","useEffect","vm","showAbortConfirmation","useConfirmationDialog","showDeleteConfirmation","displayTask","inputJson","outputJson","Drawer","isOpen","Grid","log","idx","TaskDetailDrawer","props","container","useContainer","scopedContainer","useMemo","child","GetTaskFeature","ListLogsFeature","DiContainerProvider"],"mappings":"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"}
1
+ {"version":3,"file":"admin/presentation/TaskDetail/components/TaskDetailDrawer.js","sources":["../../../../../src/admin/presentation/TaskDetail/components/TaskDetailDrawer.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { Button, Drawer, Grid, Heading, Separator, Tag, Text, TimeAgo } from \"@webiny/admin-ui\";\nimport { CodeEditor } from \"@webiny/admin-ui\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/index.js\";\nimport { ReactComponent as StopCircleIcon } from \"@webiny/icons/stop_circle.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { ReactComponent as ExpandMoreIcon } from \"@webiny/icons/expand_more.svg\";\nimport { ReactComponent as ExpandLessIcon } from \"@webiny/icons/expand_less.svg\";\nimport { TaskDetailPresenterFeature } from \"../feature.js\";\nimport { GetTaskFeature } from \"~/admin/features/getTask/feature.js\";\nimport { ListLogsFeature } from \"~/admin/features/listLogs/feature.js\";\nimport type { Task, TaskLog, TaskLogItem } from \"~/admin/shared/types.js\";\n\nconst STATUS_TAG_VARIANT: Record<\n string,\n \"neutral-light\" | \"accent\" | \"success\" | \"destructive\" | \"warning\"\n> = {\n pending: \"neutral-light\",\n running: \"accent\",\n success: \"success\",\n failed: \"destructive\",\n aborted: \"warning\"\n};\n\nconst formatJson = (value: unknown): string => {\n if (value === null || value === undefined) {\n return \"\";\n }\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n return JSON.stringify(value, null, 2);\n};\n\ninterface ExpandButtonProps {\n show: boolean;\n expanded: boolean;\n onClick: () => void;\n}\n\nconst ExpandButton = ({ show, expanded, onClick }: ExpandButtonProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n icon={expanded ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n onClick={onClick}\n />\n );\n};\n\ninterface ExpandedPayloadProps {\n show: boolean;\n label: string;\n value: unknown;\n variant?: \"default\" | \"destructive\";\n}\n\nconst ExpandedPayload = ({ show, label, value, variant = \"default\" }: ExpandedPayloadProps) => {\n if (!show) {\n return null;\n }\n\n const textClass = variant === \"destructive\" ? \" text-destructive\" : \"\";\n\n return (\n <div className=\"mt-xs\">\n <Text size=\"sm\" className=\"text-neutral-strong mb-xs\">\n {label}\n </Text>\n <pre\n className={`bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]${textClass}`}\n >\n {formatJson(value)}\n </pre>\n </div>\n );\n};\n\ninterface JsonSectionProps {\n show: boolean;\n title: string;\n value: string;\n}\n\nconst JsonSection = ({ show, title, value }: JsonSectionProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <>\n <Separator />\n <div>\n <Heading level={6} className=\"mb-sm\">\n {title}\n </Heading>\n <CodeEditor value={value} language=\"json\" disabled={true} />\n </div>\n </>\n );\n};\n\ninterface LoadMoreLogsButtonProps {\n show: boolean;\n loading: boolean;\n onClick: () => void;\n}\n\nconst LoadMoreLogsButton = ({ show, loading, onClick }: LoadMoreLogsButtonProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <div className=\"mt-sm\">\n <Button variant=\"tertiary\" size=\"sm\" onClick={onClick} disabled={loading}>\n {loading ? \"Loading...\" : \"Load more logs\"}\n </Button>\n </div>\n );\n};\n\ninterface DrawerActionsProps {\n isRunning: boolean;\n isTerminal: boolean;\n onAbort: () => void;\n onDelete: () => void;\n}\n\nconst DrawerActions = ({ isRunning, isTerminal, onAbort, onDelete }: DrawerActionsProps) => {\n if (!isRunning && !isTerminal) {\n return null;\n }\n\n return (\n <div className=\"flex gap-sm\">\n {isRunning ? (\n <Button variant=\"secondary\" size=\"sm\" icon={<StopCircleIcon />} onClick={onAbort}>\n Abort\n </Button>\n ) : null}\n {isTerminal ? (\n <Button variant=\"secondary\" size=\"sm\" icon={<DeleteIcon />} onClick={onDelete}>\n Delete\n </Button>\n ) : null}\n </div>\n );\n};\n\ninterface LogItemViewProps {\n item: TaskLogItem;\n}\n\nconst LogItemView = ({ item }: LogItemViewProps) => {\n const [expanded, setExpanded] = useState(false);\n const hasData = item.data !== null && item.data !== undefined;\n const hasError = item.error !== null && item.error !== undefined;\n const expandable = hasData || hasError;\n\n return (\n <div className=\"border-b-sm border-neutral-muted py-xs px-sm\">\n <div className=\"flex items-start gap-sm\">\n <div className=\"flex-shrink-0 pt-[2px]\">\n <Tag\n variant={item.type === \"error\" ? \"destructive\" : \"neutral-light\"}\n content={item.type}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n <Text size=\"sm\">{item.message}</Text>\n </div>\n <div className=\"flex items-center gap-xs flex-shrink-0\">\n <Text size=\"sm\" className=\"text-neutral-strong\">\n <TimeAgo datetime={item.createdOn} />\n </Text>\n <ExpandButton\n show={expandable}\n expanded={expanded}\n onClick={() => setExpanded(!expanded)}\n />\n </div>\n </div>\n <ExpandedPayload show={expanded && hasData} label=\"Data\" value={item.data} />\n <ExpandedPayload\n show={expanded && hasError}\n label=\"Error\"\n value={item.error}\n variant=\"destructive\"\n />\n </div>\n );\n};\n\ninterface TaskDetailDrawerProps {\n task: Task;\n open: boolean;\n onClose: () => void;\n onAbort: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n}\n\nconst TaskDetailDrawerInner = observer(function TaskDetailDrawerInner({\n task,\n open,\n onClose,\n onAbort,\n onDelete\n}: TaskDetailDrawerProps) {\n const { presenter } = useFeature(TaskDetailPresenterFeature);\n\n useEffect(() => {\n if (open) {\n void presenter.init(task.id);\n }\n }, [presenter, task.id, open]);\n\n const { vm } = presenter;\n\n const { showConfirmation: showAbortConfirmation } = useConfirmationDialog({\n title: \"Abort Task\",\n message: \"Are you sure you want to abort this running task?\"\n });\n\n const { showConfirmation: showDeleteConfirmation } = useConfirmationDialog({\n title: \"Delete Task\",\n message: \"Are you sure you want to delete this task?\"\n });\n\n const displayTask = vm.task ?? task;\n const isRunning = displayTask.taskStatus === \"running\";\n const isTerminal =\n displayTask.taskStatus === \"success\" ||\n displayTask.taskStatus === \"failed\" ||\n displayTask.taskStatus === \"aborted\";\n\n const inputJson = formatJson(displayTask.input);\n const outputJson = formatJson(displayTask.output);\n\n return (\n <Drawer\n open={open}\n onOpenChange={isOpen => !isOpen && onClose()}\n title={\n <div className=\"flex items-center gap-sm\">\n <span>{displayTask.name || displayTask.definitionId}</span>\n <Tag\n variant={STATUS_TAG_VARIANT[displayTask.taskStatus] ?? \"neutral-light\"}\n content={displayTask.taskStatus}\n />\n </div>\n }\n modal={true}\n width=\"900px\"\n bodyPadding={false}\n actions={\n <DrawerActions\n isRunning={isRunning}\n isTerminal={isTerminal}\n onAbort={() => showAbortConfirmation(() => onAbort(displayTask.id))}\n onDelete={() => showDeleteConfirmation(() => onDelete(displayTask.id))}\n />\n }\n >\n <div className=\"flex flex-col gap-md p-md overflow-auto\">\n <div>\n <Heading level={6} className=\"mb-sm\">\n General Info\n </Heading>\n <Grid gap=\"comfortable\">\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Definition\n </Text>\n <Text size=\"sm\">{displayTask.definitionId}</Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Created By\n </Text>\n <Text size=\"sm\">{displayTask.createdBy?.displayName ?? \"—\"}</Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Created On\n </Text>\n <Text size=\"sm\">\n {displayTask.createdOn ? (\n <TimeAgo datetime={displayTask.createdOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Started On\n </Text>\n <Text size=\"sm\">\n {displayTask.startedOn ? (\n <TimeAgo datetime={displayTask.startedOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Finished On\n </Text>\n <Text size=\"sm\">\n {displayTask.finishedOn ? (\n <TimeAgo datetime={displayTask.finishedOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Iterations\n </Text>\n <Text size=\"sm\">{displayTask.iterations ?? 0}</Text>\n </Grid.Column>\n </Grid>\n </div>\n\n <JsonSection show={!!inputJson} title=\"Input\" value={inputJson} />\n <JsonSection show={!!outputJson} title=\"Output\" value={outputJson} />\n\n <Separator />\n <div>\n <Heading level={6} className=\"mb-sm\">\n Logs ({vm.logs.pagination.totalCount})\n </Heading>\n {vm.logs.rows.length === 0 && !vm.logs.pagination.loading ? (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n No logs available.\n </Text>\n ) : (\n <div className=\"border-sm border-neutral-muted rounded-sm\">\n {vm.logs.rows.map((log: TaskLog) =>\n log.items.map((item, idx) => (\n <LogItemView key={`${log.id}-${idx}`} item={item} />\n ))\n )}\n </div>\n )}\n <LoadMoreLogsButton\n show={vm.logs.pagination.hasMore}\n loading={vm.logs.pagination.loading}\n onClick={() => presenter.loadMore()}\n />\n </div>\n </div>\n </Drawer>\n );\n});\n\nexport const TaskDetailDrawer = (props: TaskDetailDrawerProps) => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n GetTaskFeature.register(child);\n ListLogsFeature.register(child);\n TaskDetailPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDetailDrawerInner {...props} />\n </DiContainerProvider>\n );\n};\n"],"names":["STATUS_TAG_VARIANT","formatJson","value","JSON","ExpandButton","show","expanded","onClick","Button","ExpandLessIcon","ExpandMoreIcon","ExpandedPayload","label","variant","textClass","Text","JsonSection","title","Separator","Heading","CodeEditor","LoadMoreLogsButton","loading","DrawerActions","isRunning","isTerminal","onAbort","onDelete","StopCircleIcon","DeleteIcon","LogItemView","item","setExpanded","useState","hasData","undefined","hasError","expandable","Tag","TimeAgo","TaskDetailDrawerInner","observer","task","open","onClose","presenter","useFeature","TaskDetailPresenterFeature","useEffect","vm","showAbortConfirmation","useConfirmationDialog","showDeleteConfirmation","displayTask","inputJson","outputJson","Drawer","isOpen","Grid","log","idx","TaskDetailDrawer","props","container","useContainer","scopedContainer","useMemo","child","GetTaskFeature","ListLogsFeature","DiContainerProvider"],"mappings":"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"}
@@ -69,7 +69,7 @@ class TaskExecutionsDataSource {
69
69
  where: params.filters,
70
70
  sort,
71
71
  limit: params.limit,
72
- after: this._meta.cursor ?? void 0,
72
+ after: this._meta.cursor || void 0,
73
73
  search: params.search
74
74
  });
75
75
  runInAction(()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"admin/presentation/TaskExecutions/TaskExecutionsDataSource.js","sources":["../../../../src/admin/presentation/TaskExecutions/TaskExecutionsDataSource.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type {\n IDataSource,\n IDataSourceQuery,\n IDataSourceMeta\n} from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { Task } from \"~/admin/shared/types.js\";\nimport type { IListTasksUseCase } from \"~/admin/features/listTasks/abstractions.js\";\n\nconst ENTRY_META_SORT_FIELDS = new Set([\n \"id\",\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\"\n]);\n\nfunction toSortEnum(field: string, direction: \"ASC\" | \"DESC\"): string {\n const prefix = ENTRY_META_SORT_FIELDS.has(field) ? \"\" : \"values_\";\n return `${prefix}${field}_${direction}`;\n}\n\nexport class TaskExecutionsDataSource implements IDataSource<Task> {\n private _rows: Task[] = [];\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n\n constructor(private readonly listTasksUseCase: IListTasksUseCase) {\n makeAutoObservable<TaskExecutionsDataSource, \"listTasksUseCase\">(this, {\n listTasksUseCase: false,\n rows: computed\n });\n }\n\n get rows(): Task[] {\n return this._rows;\n }\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: params.cursor,\n search: params.search\n });\n runInAction(() => {\n this._rows = result.items;\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: this._meta.cursor ?? undefined,\n search: params.search\n });\n runInAction(() => {\n this._rows = [...this._rows, ...result.items];\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n}\n"],"names":["ENTRY_META_SORT_FIELDS","Set","toSortEnum","field","direction","prefix","TaskExecutionsDataSource","listTasksUseCase","makeAutoObservable","computed","params","sort","undefined","result","runInAction"],"mappings":";AASA,MAAMA,yBAAyB,IAAIC,IAAI;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACH;AAED,SAASC,WAAWC,KAAa,EAAEC,SAAyB;IACxD,MAAMC,SAASL,uBAAuB,GAAG,CAACG,SAAS,KAAK;IACxD,OAAO,GAAGE,SAASF,MAAM,CAAC,EAAEC,WAAW;AAC3C;AAEO,MAAME;IAKT,YAA6BC,gBAAmC,CAAE;aAArCA,gBAAgB,GAAhBA;aAJrB,KAAK,GAAW,EAAE;aAClB,KAAK,GAAoB;YAAE,QAAQ;YAAM,cAAc;YAAO,YAAY;QAAE;aAC5E,QAAQ,GAAG;QAGfC,mBAAiE,IAAI,EAAE;YACnE,kBAAkB;YAClB,MAAMC;QACV;IACJ;IAEA,IAAI,OAAe;QACf,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,OAAwB;QACxB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,UAAmB;QACnB,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,MAAM,MAAMC,MAAwB,EAAiB;QACjD,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,OAAOD,OAAO,IAAI,GAClB;YAACR,WAAWQ,OAAO,IAAI,CAAC,KAAK,EAAEA,OAAO,IAAI,CAAC,SAAS;SAAE,GACtDE;QACN,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,OAAOH,OAAO,OAAO;YACrBC;YACA,OAAOD,OAAO,KAAK;YACnB,OAAOA,OAAO,MAAM;YACpB,QAAQA,OAAO,MAAM;QACzB;QACAI,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD,OAAO,KAAK;YACzB,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;IAEA,MAAM,SAASH,MAAwB,EAAiB;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EACzC;QAEJ,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,OAAOD,OAAO,IAAI,GAClB;YAACR,WAAWQ,OAAO,IAAI,CAAC,KAAK,EAAEA,OAAO,IAAI,CAAC,SAAS;SAAE,GACtDE;QACN,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,OAAOH,OAAO,OAAO;YACrBC;YACA,OAAOD,OAAO,KAAK;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAIE;YAC5B,QAAQF,OAAO,MAAM;QACzB;QACAI,YAAY;YACR,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKD,OAAO,KAAK;aAAC;YAC7C,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;AACJ"}
1
+ {"version":3,"file":"admin/presentation/TaskExecutions/TaskExecutionsDataSource.js","sources":["../../../../src/admin/presentation/TaskExecutions/TaskExecutionsDataSource.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type {\n IDataSource,\n IDataSourceQuery,\n IDataSourceMeta\n} from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { Task } from \"~/admin/shared/types.js\";\nimport type { IListTasksUseCase } from \"~/admin/features/listTasks/abstractions.js\";\n\nconst ENTRY_META_SORT_FIELDS = new Set([\n \"id\",\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\"\n]);\n\nfunction toSortEnum(field: string, direction: \"ASC\" | \"DESC\"): string {\n const prefix = ENTRY_META_SORT_FIELDS.has(field) ? \"\" : \"values_\";\n return `${prefix}${field}_${direction}`;\n}\n\nexport class TaskExecutionsDataSource implements IDataSource<Task> {\n private _rows: Task[] = [];\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n\n constructor(private readonly listTasksUseCase: IListTasksUseCase) {\n makeAutoObservable<TaskExecutionsDataSource, \"listTasksUseCase\">(this, {\n listTasksUseCase: false,\n rows: computed\n });\n }\n\n get rows(): Task[] {\n return this._rows;\n }\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: params.cursor,\n search: params.search\n });\n runInAction(() => {\n this._rows = result.items;\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: this._meta.cursor || undefined,\n search: params.search\n });\n runInAction(() => {\n this._rows = [...this._rows, ...result.items];\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n}\n"],"names":["ENTRY_META_SORT_FIELDS","Set","toSortEnum","field","direction","prefix","TaskExecutionsDataSource","listTasksUseCase","makeAutoObservable","computed","params","sort","undefined","result","runInAction"],"mappings":";AASA,MAAMA,yBAAyB,IAAIC,IAAI;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACH;AAED,SAASC,WAAWC,KAAa,EAAEC,SAAyB;IACxD,MAAMC,SAASL,uBAAuB,GAAG,CAACG,SAAS,KAAK;IACxD,OAAO,GAAGE,SAASF,MAAM,CAAC,EAAEC,WAAW;AAC3C;AAEO,MAAME;IAKT,YAA6BC,gBAAmC,CAAE;aAArCA,gBAAgB,GAAhBA;aAJrB,KAAK,GAAW,EAAE;aAClB,KAAK,GAAoB;YAAE,QAAQ;YAAM,cAAc;YAAO,YAAY;QAAE;aAC5E,QAAQ,GAAG;QAGfC,mBAAiE,IAAI,EAAE;YACnE,kBAAkB;YAClB,MAAMC;QACV;IACJ;IAEA,IAAI,OAAe;QACf,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,OAAwB;QACxB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,UAAmB;QACnB,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,MAAM,MAAMC,MAAwB,EAAiB;QACjD,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,OAAOD,OAAO,IAAI,GAClB;YAACR,WAAWQ,OAAO,IAAI,CAAC,KAAK,EAAEA,OAAO,IAAI,CAAC,SAAS;SAAE,GACtDE;QACN,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,OAAOH,OAAO,OAAO;YACrBC;YACA,OAAOD,OAAO,KAAK;YACnB,OAAOA,OAAO,MAAM;YACpB,QAAQA,OAAO,MAAM;QACzB;QACAI,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD,OAAO,KAAK;YACzB,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;IAEA,MAAM,SAASH,MAAwB,EAAiB;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EACzC;QAEJ,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,OAAOD,OAAO,IAAI,GAClB;YAACR,WAAWQ,OAAO,IAAI,CAAC,KAAK,EAAEA,OAAO,IAAI,CAAC,SAAS;SAAE,GACtDE;QACN,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,OAAOH,OAAO,OAAO;YACrBC;YACA,OAAOD,OAAO,KAAK;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAIE;YAC5B,QAAQF,OAAO,MAAM;QACzB;QACAI,YAAY;YACR,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKD,OAAO,KAAK;aAAC;YAC7C,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;AACJ"}
@@ -30,6 +30,8 @@ declare class TaskExecutionsPresenterImpl implements ITaskExecutionsPresenter {
30
30
  set: (key: string, value: unknown) => void;
31
31
  clear: (key: string) => void;
32
32
  clearAll: () => void;
33
+ show: () => void;
34
+ hide: () => void;
33
35
  };
34
36
  selection: {
35
37
  toggle: (id: string) => void;
@@ -28,7 +28,9 @@ class TaskExecutionsPresenterImpl {
28
28
  this.filter = {
29
29
  set: (key, value)=>this.listPresenter.actions.filter.set(key, value),
30
30
  clear: (key)=>this.listPresenter.actions.filter.clear(key),
31
- clearAll: ()=>this.listPresenter.actions.filter.clearAll()
31
+ clearAll: ()=>this.listPresenter.actions.filter.clearAll(),
32
+ show: ()=>this.listPresenter.actions.filter.show(),
33
+ hide: ()=>this.listPresenter.actions.filter.hide()
32
34
  };
33
35
  this.selection = {
34
36
  toggle: (id)=>this.listPresenter.actions.selection.toggle(id),