@webiny/background-tasks 0.0.0-unstable.7be00a75a9 → 0.0.0-unstable.9609e4e0c9
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.
- package/admin/BackgroundTaskRoutes.js +35 -15
- package/admin/BackgroundTaskRoutes.js.map +1 -1
- package/admin/BackgroundTasks.js +9 -0
- package/admin/BackgroundTasks.js.map +1 -1
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.d.ts +12 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.js +40 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.js.map +1 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.d.ts +11 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.js +18 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.js.map +1 -0
- package/admin/features/getBackgroundTaskSettings/abstractions.d.ts +15 -0
- package/admin/features/getBackgroundTaskSettings/abstractions.js +6 -0
- package/admin/features/getBackgroundTaskSettings/abstractions.js.map +1 -0
- package/admin/features/getBackgroundTaskSettings/feature.d.ts +3 -0
- package/admin/features/getBackgroundTaskSettings/feature.js +19 -0
- package/admin/features/getBackgroundTaskSettings/feature.js.map +1 -0
- package/admin/features/getBackgroundTaskSettings/index.d.ts +3 -0
- package/admin/features/getBackgroundTaskSettings/index.js +2 -0
- package/admin/features/listLogs/ListLogsGateway.js +1 -1
- package/admin/features/listLogs/ListLogsGateway.js.map +1 -1
- package/admin/features/permissions/feature.d.ts +1 -1
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.d.ts +12 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.js +43 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.js.map +1 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.d.ts +11 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js +18 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js.map +1 -0
- package/admin/features/updateBackgroundTaskSettings/abstractions.d.ts +18 -0
- package/admin/features/updateBackgroundTaskSettings/abstractions.js +6 -0
- package/admin/features/updateBackgroundTaskSettings/abstractions.js.map +1 -0
- package/admin/features/updateBackgroundTaskSettings/feature.d.ts +3 -0
- package/admin/features/updateBackgroundTaskSettings/feature.js +19 -0
- package/admin/features/updateBackgroundTaskSettings/feature.js.map +1 -0
- package/admin/features/updateBackgroundTaskSettings/index.d.ts +3 -0
- package/admin/features/updateBackgroundTaskSettings/index.js +2 -0
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.d.ts +21 -0
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js +86 -0
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js.map +1 -0
- package/admin/presentation/BackgroundTaskSettings/abstractions.d.ts +16 -0
- package/admin/presentation/BackgroundTaskSettings/abstractions.js +5 -0
- package/admin/presentation/BackgroundTaskSettings/abstractions.js.map +1 -0
- package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.d.ts +2 -0
- package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js +56 -0
- package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js.map +1 -0
- package/admin/presentation/BackgroundTaskSettings/feature.d.ts +3 -0
- package/admin/presentation/BackgroundTaskSettings/feature.js +17 -0
- package/admin/presentation/BackgroundTaskSettings/feature.js.map +1 -0
- package/admin/presentation/BackgroundTaskSettings/index.d.ts +2 -0
- package/admin/presentation/BackgroundTaskSettings/index.js +2 -0
- package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js +2 -1
- package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js.map +1 -1
- package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.d.ts +2 -0
- package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js +16 -0
- package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js.map +1 -0
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js +1 -1
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js.map +1 -1
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js +6 -0
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.d.ts +2 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js +3 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js.map +1 -1
- package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.d.ts +2 -0
- package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.js +16 -0
- package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.js.map +1 -0
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js +78 -40
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js.map +1 -1
- package/admin/routes.d.ts +1 -0
- package/admin/routes.js +4 -0
- package/admin/routes.js.map +1 -1
- package/admin/shared/types.d.ts +3 -0
- package/api/BackgroundTasksFeature.d.ts +4 -0
- package/api/BackgroundTasksFeature.js +79 -0
- package/api/BackgroundTasksFeature.js.map +1 -0
- package/api/abstractions/Timer.d.ts +1 -0
- package/api/abstractions/Timer.js +0 -0
- package/api/abstractions/index.d.ts +1 -0
- package/api/abstractions/index.js +1 -0
- package/api/crud/TaskLogPrivateModel.d.ts +9 -0
- package/api/crud/TaskLogPrivateModel.js +41 -0
- package/api/crud/TaskLogPrivateModel.js.map +1 -0
- package/api/crud/TaskPrivateModel.d.ts +9 -0
- package/api/crud/TaskPrivateModel.js +56 -0
- package/api/crud/TaskPrivateModel.js.map +1 -0
- package/api/decorators/SelfCleaningTaskHandlerDecorator.d.ts +33 -0
- package/api/decorators/SelfCleaningTaskHandlerDecorator.js +69 -0
- package/api/decorators/SelfCleaningTaskHandlerDecorator.js.map +1 -0
- package/api/decorators/TaskDefinitionDefaultsDecorator.d.ts +27 -0
- package/api/decorators/TaskDefinitionDefaultsDecorator.js +47 -0
- package/api/decorators/TaskDefinitionDefaultsDecorator.js.map +1 -0
- package/api/domain/BackgroundTaskSettings.d.ts +3 -0
- package/api/domain/BackgroundTaskSettings.js +0 -0
- package/api/domain/TaskService.d.ts +12 -0
- package/api/domain/TaskService.js +5 -0
- package/api/domain/TaskService.js.map +1 -0
- package/api/domain/constants.d.ts +3 -0
- package/api/domain/constants.js +6 -0
- package/api/domain/constants.js.map +1 -0
- package/api/domain/errors.d.ts +61 -0
- package/api/domain/errors.js +109 -0
- package/api/domain/errors.js.map +1 -0
- package/api/domain/task/TaskLogModelProvider.d.ts +12 -0
- package/api/domain/task/TaskLogModelProvider.js +23 -0
- package/api/domain/task/TaskLogModelProvider.js.map +1 -0
- package/api/domain/task/TaskLogsRepository.d.ts +34 -0
- package/api/domain/task/TaskLogsRepository.js +146 -0
- package/api/domain/task/TaskLogsRepository.js.map +1 -0
- package/api/domain/task/TaskModelProvider.d.ts +12 -0
- package/api/domain/task/TaskModelProvider.js +23 -0
- package/api/domain/task/TaskModelProvider.js.map +1 -0
- package/api/domain/task/TasksRepository.d.ts +37 -0
- package/api/domain/task/TasksRepository.js +126 -0
- package/api/domain/task/TasksRepository.js.map +1 -0
- package/api/domain/task/abstractions.d.ts +50 -0
- package/api/domain/task/abstractions.js +8 -0
- package/api/domain/task/abstractions.js.map +1 -0
- package/api/domain/task/createRevisionId.d.ts +1 -0
- package/api/domain/task/createRevisionId.js +8 -0
- package/api/domain/task/createRevisionId.js.map +1 -0
- package/api/domain/task/entryToTask.d.ts +3 -0
- package/api/domain/task/entryToTask.js +20 -0
- package/api/domain/task/entryToTask.js.map +1 -0
- package/api/domain/task/entryToTaskLog.d.ts +3 -0
- package/api/domain/task/entryToTaskLog.js +12 -0
- package/api/domain/task/entryToTaskLog.js.map +1 -0
- package/api/events/TaskAfterCreateEvent.d.ts +6 -0
- package/api/events/TaskAfterCreateEvent.js +13 -0
- package/api/events/TaskAfterCreateEvent.js.map +1 -0
- package/api/events/TaskAfterDeleteEvent.d.ts +6 -0
- package/api/events/TaskAfterDeleteEvent.js +13 -0
- package/api/events/TaskAfterDeleteEvent.js.map +1 -0
- package/api/events/TaskAfterUpdateEvent.d.ts +6 -0
- package/api/events/TaskAfterUpdateEvent.js +13 -0
- package/api/events/TaskAfterUpdateEvent.js.map +1 -0
- package/api/events/TaskBeforeCreateEvent.d.ts +6 -0
- package/api/events/TaskBeforeCreateEvent.js +13 -0
- package/api/events/TaskBeforeCreateEvent.js.map +1 -0
- package/api/events/TaskBeforeDeleteEvent.d.ts +6 -0
- package/api/events/TaskBeforeDeleteEvent.js +13 -0
- package/api/events/TaskBeforeDeleteEvent.js.map +1 -0
- package/api/events/TaskBeforeUpdateEvent.d.ts +6 -0
- package/api/events/TaskBeforeUpdateEvent.js +13 -0
- package/api/events/TaskBeforeUpdateEvent.js.map +1 -0
- package/api/events/abstractions.d.ts +53 -0
- package/api/events/abstractions.js +10 -0
- package/api/events/abstractions.js.map +1 -0
- package/api/events/index.d.ts +7 -0
- package/api/events/index.js +7 -0
- package/api/features/AbortTask/AbortTaskUseCase.d.ts +9 -0
- package/api/features/AbortTask/AbortTaskUseCase.js +12 -0
- package/api/features/AbortTask/AbortTaskUseCase.js.map +1 -0
- package/api/features/AbortTask/abstractions.d.ts +25 -0
- package/api/features/AbortTask/abstractions.js +5 -0
- package/api/features/AbortTask/abstractions.js.map +1 -0
- package/api/features/AbortTask/feature.d.ts +4 -0
- package/api/features/AbortTask/feature.js +13 -0
- package/api/features/AbortTask/feature.js.map +1 -0
- package/api/features/AbortTask/index.d.ts +2 -0
- package/api/features/AbortTask/index.js +2 -0
- package/api/features/BackgroundTaskPermissions/abstractions.d.ts +17 -0
- package/api/features/BackgroundTaskPermissions/abstractions.js +6 -0
- package/api/features/BackgroundTaskPermissions/abstractions.js.map +1 -0
- package/api/features/BackgroundTaskPermissions/feature.d.ts +4 -0
- package/api/features/BackgroundTaskPermissions/feature.js +7 -0
- package/api/features/BackgroundTaskPermissions/feature.js.map +1 -0
- package/api/features/BackgroundTaskPermissions/index.d.ts +2 -0
- package/api/features/BackgroundTaskPermissions/index.js +2 -0
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.d.ts +27 -0
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +117 -0
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -0
- package/api/features/CleanupTaskSubtree/abstractions.d.ts +7 -0
- package/api/features/CleanupTaskSubtree/abstractions.js +5 -0
- package/api/features/CleanupTaskSubtree/abstractions.js.map +1 -0
- package/api/features/CleanupTaskSubtree/feature.d.ts +4 -0
- package/api/features/CleanupTaskSubtree/feature.js +11 -0
- package/api/features/CleanupTaskSubtree/feature.js.map +1 -0
- package/api/features/CleanupTaskSubtree/index.d.ts +2 -0
- package/api/features/CleanupTaskSubtree/index.js +2 -0
- package/api/features/CreateTask/CreateTaskUseCase.d.ts +17 -0
- package/api/features/CreateTask/CreateTaskUseCase.js +56 -0
- package/api/features/CreateTask/CreateTaskUseCase.js.map +1 -0
- package/api/features/CreateTask/abstractions.d.ts +21 -0
- package/api/features/CreateTask/abstractions.js +5 -0
- package/api/features/CreateTask/abstractions.js.map +1 -0
- package/api/features/CreateTask/feature.d.ts +4 -0
- package/api/features/CreateTask/feature.js +11 -0
- package/api/features/CreateTask/feature.js.map +1 -0
- package/api/features/CreateTask/index.d.ts +2 -0
- package/api/features/CreateTask/index.js +2 -0
- package/api/features/CreateTaskLog/CreateTaskLogUseCase.d.ts +13 -0
- package/api/features/CreateTaskLog/CreateTaskLogUseCase.js +19 -0
- package/api/features/CreateTaskLog/CreateTaskLogUseCase.js.map +1 -0
- package/api/features/CreateTaskLog/abstractions.d.ts +16 -0
- package/api/features/CreateTaskLog/abstractions.js +5 -0
- package/api/features/CreateTaskLog/abstractions.js.map +1 -0
- package/api/features/CreateTaskLog/feature.d.ts +4 -0
- package/api/features/CreateTaskLog/feature.js +11 -0
- package/api/features/CreateTaskLog/feature.js.map +1 -0
- package/api/features/CreateTaskLog/index.d.ts +2 -0
- package/api/features/CreateTaskLog/index.js +2 -0
- package/api/features/DeleteTask/DeleteTaskUseCase.d.ts +14 -0
- package/api/features/DeleteTask/DeleteTaskUseCase.js +34 -0
- package/api/features/DeleteTask/DeleteTaskUseCase.js.map +1 -0
- package/api/features/DeleteTask/abstractions.d.ts +17 -0
- package/api/features/DeleteTask/abstractions.js +5 -0
- package/api/features/DeleteTask/abstractions.js.map +1 -0
- package/api/features/DeleteTask/feature.d.ts +4 -0
- package/api/features/DeleteTask/feature.js +11 -0
- package/api/features/DeleteTask/feature.js.map +1 -0
- package/api/features/DeleteTask/index.d.ts +2 -0
- package/api/features/DeleteTask/index.js +2 -0
- package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.d.ts +11 -0
- package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.js +19 -0
- package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.js.map +1 -0
- package/api/features/DeleteTaskLog/abstractions.d.ts +14 -0
- package/api/features/DeleteTaskLog/abstractions.js +5 -0
- package/api/features/DeleteTaskLog/abstractions.js.map +1 -0
- package/api/features/DeleteTaskLog/feature.d.ts +4 -0
- package/api/features/DeleteTaskLog/feature.js +11 -0
- package/api/features/DeleteTaskLog/feature.js.map +1 -0
- package/api/features/DeleteTaskLog/index.d.ts +2 -0
- package/api/features/DeleteTaskLog/index.js +2 -0
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.d.ts +21 -0
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js +63 -0
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js.map +1 -0
- package/api/features/GetBackgroundTaskSettings/abstractions.d.ts +13 -0
- package/api/features/GetBackgroundTaskSettings/abstractions.js +5 -0
- package/api/features/GetBackgroundTaskSettings/abstractions.js.map +1 -0
- package/api/features/GetBackgroundTaskSettings/feature.d.ts +4 -0
- package/api/features/GetBackgroundTaskSettings/feature.js +11 -0
- package/api/features/GetBackgroundTaskSettings/feature.js.map +1 -0
- package/api/features/GetBackgroundTaskSettings/index.d.ts +2 -0
- package/api/features/GetBackgroundTaskSettings/index.js +2 -0
- package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.d.ts +11 -0
- package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.js +19 -0
- package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.js.map +1 -0
- package/api/features/GetLatestTaskLog/abstractions.d.ts +15 -0
- package/api/features/GetLatestTaskLog/abstractions.js +5 -0
- package/api/features/GetLatestTaskLog/abstractions.js.map +1 -0
- package/api/features/GetLatestTaskLog/feature.d.ts +4 -0
- package/api/features/GetLatestTaskLog/feature.js +11 -0
- package/api/features/GetLatestTaskLog/feature.js.map +1 -0
- package/api/features/GetLatestTaskLog/index.d.ts +2 -0
- package/api/features/GetLatestTaskLog/index.js +2 -0
- package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.d.ts +13 -0
- package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.js +51 -0
- package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.js.map +1 -0
- package/api/features/GetRunnableTaskDefinition/abstractions.d.ts +17 -0
- package/api/features/GetRunnableTaskDefinition/abstractions.js +5 -0
- package/api/features/GetRunnableTaskDefinition/abstractions.js.map +1 -0
- package/api/features/GetRunnableTaskDefinition/feature.d.ts +4 -0
- package/api/features/GetRunnableTaskDefinition/feature.js +11 -0
- package/api/features/GetRunnableTaskDefinition/feature.js.map +1 -0
- package/api/features/GetRunnableTaskDefinition/index.d.ts +2 -0
- package/api/features/GetRunnableTaskDefinition/index.js +2 -0
- package/api/features/GetTask/GetTaskUseCase.d.ts +13 -0
- package/api/features/GetTask/GetTaskUseCase.js +19 -0
- package/api/features/GetTask/GetTaskUseCase.js.map +1 -0
- package/api/features/GetTask/abstractions.d.ts +17 -0
- package/api/features/GetTask/abstractions.js +5 -0
- package/api/features/GetTask/abstractions.js.map +1 -0
- package/api/features/GetTask/feature.d.ts +4 -0
- package/api/features/GetTask/feature.js +11 -0
- package/api/features/GetTask/feature.js.map +1 -0
- package/api/features/GetTask/index.d.ts +2 -0
- package/api/features/GetTask/index.js +2 -0
- package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.d.ts +11 -0
- package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +24 -0
- package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -0
- package/api/features/ListTaskDefinitions/abstractions.d.ts +9 -0
- package/api/features/ListTaskDefinitions/abstractions.js +5 -0
- package/api/features/ListTaskDefinitions/abstractions.js.map +1 -0
- package/api/features/ListTaskDefinitions/feature.d.ts +4 -0
- package/api/features/ListTaskDefinitions/feature.js +11 -0
- package/api/features/ListTaskDefinitions/feature.js.map +1 -0
- package/api/features/ListTaskDefinitions/index.d.ts +2 -0
- package/api/features/ListTaskDefinitions/index.js +2 -0
- package/api/features/ListTaskLogs/ListTaskLogsUseCase.d.ts +12 -0
- package/api/features/ListTaskLogs/ListTaskLogsUseCase.js +19 -0
- package/api/features/ListTaskLogs/ListTaskLogsUseCase.js.map +1 -0
- package/api/features/ListTaskLogs/abstractions.d.ts +15 -0
- package/api/features/ListTaskLogs/abstractions.js +5 -0
- package/api/features/ListTaskLogs/abstractions.js.map +1 -0
- package/api/features/ListTaskLogs/feature.d.ts +4 -0
- package/api/features/ListTaskLogs/feature.js +11 -0
- package/api/features/ListTaskLogs/feature.js.map +1 -0
- package/api/features/ListTaskLogs/index.d.ts +2 -0
- package/api/features/ListTaskLogs/index.js +2 -0
- package/api/features/ListTasks/ListTasksUseCase.d.ts +13 -0
- package/api/features/ListTasks/ListTasksUseCase.js +19 -0
- package/api/features/ListTasks/ListTasksUseCase.js.map +1 -0
- package/api/features/ListTasks/abstractions.d.ts +19 -0
- package/api/features/ListTasks/abstractions.js +5 -0
- package/api/features/ListTasks/abstractions.js.map +1 -0
- package/api/features/ListTasks/feature.d.ts +4 -0
- package/api/features/ListTasks/feature.js +11 -0
- package/api/features/ListTasks/feature.js.map +1 -0
- package/api/features/ListTasks/index.d.ts +2 -0
- package/api/features/ListTasks/index.js +2 -0
- package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.d.ts +11 -0
- package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.js +19 -0
- package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.js.map +1 -0
- package/api/features/ListVisibleTaskDefinitions/abstractions.d.ts +9 -0
- package/api/features/ListVisibleTaskDefinitions/abstractions.js +5 -0
- package/api/features/ListVisibleTaskDefinitions/abstractions.js.map +1 -0
- package/api/features/ListVisibleTaskDefinitions/feature.d.ts +4 -0
- package/api/features/ListVisibleTaskDefinitions/feature.js +11 -0
- package/api/features/ListVisibleTaskDefinitions/feature.js.map +1 -0
- package/api/features/ListVisibleTaskDefinitions/index.d.ts +2 -0
- package/api/features/ListVisibleTaskDefinitions/index.js +2 -0
- package/api/features/TaskController/TaskController.d.ts +49 -0
- package/api/features/TaskController/TaskController.js +71 -0
- package/api/features/TaskController/TaskController.js.map +1 -0
- package/api/features/TaskController/augmentation.d.ts +60 -0
- package/api/features/TaskController/augmentation.js +0 -0
- package/api/features/TaskController/index.d.ts +2 -0
- package/api/features/TaskController/index.js +2 -0
- package/api/features/TaskExecutionContext/TaskExecutionContext.d.ts +24 -0
- package/api/features/TaskExecutionContext/TaskExecutionContext.js +43 -0
- package/api/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -0
- package/api/features/TaskExecutionContext/abstractions.d.ts +26 -0
- package/api/features/TaskExecutionContext/abstractions.js +5 -0
- package/api/features/TaskExecutionContext/abstractions.js.map +1 -0
- package/api/features/TaskExecutionContext/feature.d.ts +4 -0
- package/api/features/TaskExecutionContext/feature.js +11 -0
- package/api/features/TaskExecutionContext/feature.js.map +1 -0
- package/api/features/TaskExecutionContext/index.d.ts +1 -0
- package/api/features/TaskExecutionContext/index.js +1 -0
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.d.ts +12 -0
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.js +19 -0
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.js.map +1 -0
- package/api/features/TaskHandlerResolver/abstractions.d.ts +17 -0
- package/api/features/TaskHandlerResolver/abstractions.js +5 -0
- package/api/features/TaskHandlerResolver/abstractions.js.map +1 -0
- package/api/features/TaskHandlerResolver/feature.d.ts +9 -0
- package/api/features/TaskHandlerResolver/feature.js +11 -0
- package/api/features/TaskHandlerResolver/feature.js.map +1 -0
- package/api/features/TaskHandlerResolver/index.d.ts +2 -0
- package/api/features/TaskHandlerResolver/index.js +2 -0
- package/api/features/TaskService/BackgroundTaskService.d.ts +42 -0
- package/api/features/TaskService/BackgroundTaskService.js +191 -0
- package/api/features/TaskService/BackgroundTaskService.js.map +1 -0
- package/api/features/TaskService/feature.d.ts +4 -0
- package/api/features/TaskService/feature.js +11 -0
- package/api/features/TaskService/feature.js.map +1 -0
- package/api/features/TaskService/index.d.ts +1 -0
- package/api/features/TaskService/index.js +1 -0
- package/api/features/TriggerTask/TriggerTaskUseCase.d.ts +9 -0
- package/api/features/TriggerTask/TriggerTaskUseCase.js +12 -0
- package/api/features/TriggerTask/TriggerTaskUseCase.js.map +1 -0
- package/api/features/TriggerTask/abstractions.d.ts +28 -0
- package/api/features/TriggerTask/abstractions.js +5 -0
- package/api/features/TriggerTask/abstractions.js.map +1 -0
- package/api/features/TriggerTask/feature.d.ts +4 -0
- package/api/features/TriggerTask/feature.js +13 -0
- package/api/features/TriggerTask/feature.js.map +1 -0
- package/api/features/TriggerTask/index.d.ts +2 -0
- package/api/features/TriggerTask/index.js +2 -0
- package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.d.ts +15 -0
- package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.js +26 -0
- package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.js.map +1 -0
- package/api/features/TriggerVisibleTask/abstractions.d.ts +17 -0
- package/api/features/TriggerVisibleTask/abstractions.js +5 -0
- package/api/features/TriggerVisibleTask/abstractions.js.map +1 -0
- package/api/features/TriggerVisibleTask/feature.d.ts +4 -0
- package/api/features/TriggerVisibleTask/feature.js +11 -0
- package/api/features/TriggerVisibleTask/feature.js.map +1 -0
- package/api/features/TriggerVisibleTask/index.d.ts +2 -0
- package/api/features/TriggerVisibleTask/index.js +2 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.d.ts +23 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js +67 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.d.ts +14 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js +27 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js.map +1 -0
- package/api/features/UpdateBackgroundTaskSettings/abstractions.d.ts +26 -0
- package/api/features/UpdateBackgroundTaskSettings/abstractions.js +6 -0
- package/api/features/UpdateBackgroundTaskSettings/abstractions.js.map +1 -0
- package/api/features/UpdateBackgroundTaskSettings/feature.d.ts +4 -0
- package/api/features/UpdateBackgroundTaskSettings/feature.js +13 -0
- package/api/features/UpdateBackgroundTaskSettings/feature.js.map +1 -0
- package/api/features/UpdateBackgroundTaskSettings/index.d.ts +2 -0
- package/api/features/UpdateBackgroundTaskSettings/index.js +2 -0
- package/api/features/UpdateBackgroundTaskSettings/schema.d.ts +4 -0
- package/api/features/UpdateBackgroundTaskSettings/schema.js +8 -0
- package/api/features/UpdateBackgroundTaskSettings/schema.js.map +1 -0
- package/api/features/UpdateTask/UpdateTaskUseCase.d.ts +17 -0
- package/api/features/UpdateTask/UpdateTaskUseCase.js +36 -0
- package/api/features/UpdateTask/UpdateTaskUseCase.js.map +1 -0
- package/api/features/UpdateTask/abstractions.d.ts +22 -0
- package/api/features/UpdateTask/abstractions.js +5 -0
- package/api/features/UpdateTask/abstractions.js.map +1 -0
- package/api/features/UpdateTask/feature.d.ts +4 -0
- package/api/features/UpdateTask/feature.js +11 -0
- package/api/features/UpdateTask/feature.js.map +1 -0
- package/api/features/UpdateTask/index.d.ts +2 -0
- package/api/features/UpdateTask/index.js +2 -0
- package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.d.ts +12 -0
- package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.js +19 -0
- package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.js.map +1 -0
- package/api/features/UpdateTaskLog/abstractions.d.ts +16 -0
- package/api/features/UpdateTaskLog/abstractions.js +5 -0
- package/api/features/UpdateTaskLog/abstractions.js.map +1 -0
- package/api/features/UpdateTaskLog/feature.d.ts +4 -0
- package/api/features/UpdateTaskLog/feature.js +11 -0
- package/api/features/UpdateTaskLog/feature.js.map +1 -0
- package/api/features/UpdateTaskLog/index.d.ts +2 -0
- package/api/features/UpdateTaskLog/index.js +2 -0
- package/api/global.d.ts +1 -0
- package/api/global.js +1 -0
- package/api/graphql/BackgroundTasksGraphQLSchema.d.ts +29 -0
- package/api/graphql/BackgroundTasksGraphQLSchema.js +462 -0
- package/api/graphql/BackgroundTasksGraphQLSchema.js.map +1 -0
- package/api/graphql/checkPermissions.d.ts +7 -0
- package/api/graphql/checkPermissions.js +22 -0
- package/api/graphql/checkPermissions.js.map +1 -0
- package/api/graphql/utils.d.ts +9 -0
- package/api/graphql/utils.js +20 -0
- package/api/graphql/utils.js.map +1 -0
- package/api/handler/types.d.ts +21 -0
- package/api/handler/types.js +0 -0
- package/api/index.d.ts +21 -0
- package/api/index.js +20 -0
- package/api/models/BackgroundTaskSettingsModel.d.ts +8 -0
- package/api/models/BackgroundTaskSettingsModel.js +27 -0
- package/api/models/BackgroundTaskSettingsModel.js.map +1 -0
- package/api/permissions.d.ts +12 -0
- package/api/permissions.js +22 -0
- package/api/permissions.js.map +1 -0
- package/api/response/DatabaseResponse.d.ts +12 -0
- package/api/response/DatabaseResponse.js +127 -0
- package/api/response/DatabaseResponse.js.map +1 -0
- package/api/response/Response.d.ts +14 -0
- package/api/response/Response.js +91 -0
- package/api/response/Response.js.map +1 -0
- package/api/response/ResponseAbortedResult.d.ts +9 -0
- package/api/response/ResponseAbortedResult.js +12 -0
- package/api/response/ResponseAbortedResult.js.map +1 -0
- package/api/response/ResponseContinueResult.d.ts +17 -0
- package/api/response/ResponseContinueResult.js +16 -0
- package/api/response/ResponseContinueResult.js.map +1 -0
- package/api/response/ResponseDoneResult.d.ts +11 -0
- package/api/response/ResponseDoneResult.js +14 -0
- package/api/response/ResponseDoneResult.js.map +1 -0
- package/api/response/ResponseErrorResult.d.ts +10 -0
- package/api/response/ResponseErrorResult.js +13 -0
- package/api/response/ResponseErrorResult.js.map +1 -0
- package/api/response/TaskResponse.d.ts +12 -0
- package/api/response/TaskResponse.js +53 -0
- package/api/response/TaskResponse.js.map +1 -0
- package/api/response/abstractions/Response.d.ts +25 -0
- package/api/response/abstractions/Response.js +0 -0
- package/api/response/abstractions/ResponseAbortedResult.d.ts +5 -0
- package/api/response/abstractions/ResponseAbortedResult.js +0 -0
- package/api/response/abstractions/ResponseBaseResult.d.ts +7 -0
- package/api/response/abstractions/ResponseBaseResult.js +0 -0
- package/api/response/abstractions/ResponseContinueResult.d.ts +21 -0
- package/api/response/abstractions/ResponseContinueResult.js +0 -0
- package/api/response/abstractions/ResponseDoneResult.d.ts +13 -0
- package/api/response/abstractions/ResponseDoneResult.js +0 -0
- package/api/response/abstractions/ResponseErrorResult.d.ts +18 -0
- package/api/response/abstractions/ResponseErrorResult.js +0 -0
- package/api/response/abstractions/TaskResponse.d.ts +16 -0
- package/api/response/abstractions/TaskResponse.js +0 -0
- package/api/response/abstractions/index.d.ts +7 -0
- package/api/response/abstractions/index.js +7 -0
- package/api/response/index.d.ts +7 -0
- package/api/response/index.js +7 -0
- package/api/runner/TaskControl.d.ts +48 -0
- package/api/runner/TaskControl.js +186 -0
- package/api/runner/TaskControl.js.map +1 -0
- package/api/runner/TaskEventValidation.d.ts +5 -0
- package/api/runner/TaskEventValidation.js +20 -0
- package/api/runner/TaskEventValidation.js.map +1 -0
- package/api/runner/TaskManager.d.ts +22 -0
- package/api/runner/TaskManager.js +83 -0
- package/api/runner/TaskManager.js.map +1 -0
- package/api/runner/TaskManagerStore.d.ts +57 -0
- package/api/runner/TaskManagerStore.js +127 -0
- package/api/runner/TaskManagerStore.js.map +1 -0
- package/api/runner/TaskRunner.d.ts +25 -0
- package/api/runner/TaskRunner.js +86 -0
- package/api/runner/TaskRunner.js.map +1 -0
- package/api/runner/abstractions/TaskControl.d.ts +10 -0
- package/api/runner/abstractions/TaskControl.js +0 -0
- package/api/runner/abstractions/TaskEventValidation.d.ts +5 -0
- package/api/runner/abstractions/TaskEventValidation.js +0 -0
- package/api/runner/abstractions/TaskManager.d.ts +5 -0
- package/api/runner/abstractions/TaskManager.js +0 -0
- package/api/runner/abstractions/TaskManagerStore.d.ts +92 -0
- package/api/runner/abstractions/TaskManagerStore.js +0 -0
- package/api/runner/abstractions/TaskRunner.d.ts +13 -0
- package/api/runner/abstractions/TaskRunner.js +0 -0
- package/api/runner/abstractions/index.d.ts +5 -0
- package/api/runner/abstractions/index.js +5 -0
- package/api/runner/index.d.ts +1 -0
- package/api/runner/index.js +1 -0
- package/api/tasks/testingRunTask.d.ts +19 -0
- package/api/tasks/testingRunTask.js +25 -0
- package/api/tasks/testingRunTask.js.map +1 -0
- package/api/types.d.ts +120 -0
- package/api/types.js +20 -0
- package/api/types.js.map +1 -0
- package/api/utils/ObjectUpdater.d.ts +8 -0
- package/api/utils/ObjectUpdater.js +33 -0
- package/api/utils/ObjectUpdater.js.map +1 -0
- package/api/utils/getErrorProperties.d.ts +2 -0
- package/api/utils/getErrorProperties.js +9 -0
- package/api/utils/getErrorProperties.js.map +1 -0
- package/api/utils/getObjectProperties.d.ts +8 -0
- package/api/utils/getObjectProperties.js +11 -0
- package/api/utils/getObjectProperties.js.map +1 -0
- package/api/utils/index.d.ts +3 -0
- package/api/utils/index.js +3 -0
- package/api/utils/normalizeSelfCleanup.d.ts +2 -0
- package/api/utils/normalizeSelfCleanup.js +16 -0
- package/api/utils/normalizeSelfCleanup.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +32 -13
- package/testing/index.d.ts +3 -0
- package/testing/index.js +2 -0
- package/testing/mockTaskTriggerTransportPlugin.d.ts +2 -0
- package/testing/mockTaskTriggerTransportPlugin.js +18 -0
- package/testing/mockTaskTriggerTransportPlugin.js.map +1 -0
- package/testing/runner.d.ts +19 -0
- package/testing/runner.js +44 -0
- package/testing/runner.js.map +1 -0
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { createModelSchemaKey } from "@webiny/api-headless-cms/utils/createModelSchemaKey.js";
|
|
3
|
+
import { renderSortEnum } from "@webiny/api-headless-cms/utils/renderSortEnum.js";
|
|
4
|
+
import { renderListFilterFields } from "@webiny/api-headless-cms/utils/renderListFilterFields.js";
|
|
5
|
+
import { renderFields } from "@webiny/api-headless-cms/utils/renderFields.js";
|
|
6
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/abstractions.js";
|
|
7
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/abstractions.js";
|
|
8
|
+
import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels/index.js";
|
|
9
|
+
import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
|
|
10
|
+
import { TaskLogModelProvider, TaskModelProvider } from "../domain/task/abstractions.js";
|
|
11
|
+
import { ListTaskLogsUseCase } from "../features/ListTaskLogs/index.js";
|
|
12
|
+
import { GetTaskUseCase } from "../features/GetTask/index.js";
|
|
13
|
+
import { ListTasksUseCase } from "../features/ListTasks/index.js";
|
|
14
|
+
import { DeleteTaskUseCase } from "../features/DeleteTask/index.js";
|
|
15
|
+
import { TaskNotFoundError } from "../domain/errors.js";
|
|
16
|
+
import { ListVisibleTaskDefinitionsUseCase } from "../features/ListVisibleTaskDefinitions/index.js";
|
|
17
|
+
import { TriggerVisibleTaskUseCase } from "../features/TriggerVisibleTask/index.js";
|
|
18
|
+
import { AbortTaskUseCase } from "../features/AbortTask/abstractions.js";
|
|
19
|
+
import { GetBackgroundTaskSettingsRepository } from "../features/GetBackgroundTaskSettings/abstractions.js";
|
|
20
|
+
import { UpdateBackgroundTaskSettingsUseCase } from "../features/UpdateBackgroundTaskSettings/abstractions.js";
|
|
21
|
+
import { emptyResolver, resolve, resolveList } from "./utils.js";
|
|
22
|
+
import { checkPermissions } from "./checkPermissions.js";
|
|
23
|
+
const findTask = async (getTask, id)=>{
|
|
24
|
+
const result = await getTask.execute(id);
|
|
25
|
+
if (result.isOk()) return result.value;
|
|
26
|
+
else if (result.error instanceof TaskNotFoundError) return null;
|
|
27
|
+
throw result.error;
|
|
28
|
+
};
|
|
29
|
+
function addQueryResolvers(builder) {
|
|
30
|
+
builder.addResolver({
|
|
31
|
+
path: "Query.backgroundTasks",
|
|
32
|
+
resolver: ()=>emptyResolver
|
|
33
|
+
});
|
|
34
|
+
builder.addResolver({
|
|
35
|
+
path: "WebinyBackgroundTaskQuery.getTask",
|
|
36
|
+
dependencies: [
|
|
37
|
+
GetTaskUseCase
|
|
38
|
+
],
|
|
39
|
+
resolver: (getTask)=>({ args, context })=>resolve(async ()=>{
|
|
40
|
+
await checkPermissions(context, {
|
|
41
|
+
rwd: "r"
|
|
42
|
+
});
|
|
43
|
+
return await findTask(getTask, args.id);
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
builder.addResolver({
|
|
47
|
+
path: "WebinyBackgroundTaskQuery.listTasks",
|
|
48
|
+
dependencies: [
|
|
49
|
+
ListTasksUseCase
|
|
50
|
+
],
|
|
51
|
+
resolver: (listTasks)=>({ args, context })=>resolveList(async ()=>{
|
|
52
|
+
await checkPermissions(context, {
|
|
53
|
+
rwd: "r"
|
|
54
|
+
});
|
|
55
|
+
const result = await listTasks.execute(args);
|
|
56
|
+
if (result.isFail()) throw result.error;
|
|
57
|
+
return result.value;
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
builder.addResolver({
|
|
61
|
+
path: "WebinyBackgroundTaskQuery.listDefinitions",
|
|
62
|
+
dependencies: [
|
|
63
|
+
ListVisibleTaskDefinitionsUseCase
|
|
64
|
+
],
|
|
65
|
+
resolver: (listTaskDefinitions)=>({ context })=>resolve(async ()=>{
|
|
66
|
+
await checkPermissions(context, {
|
|
67
|
+
rwd: "r"
|
|
68
|
+
});
|
|
69
|
+
return listTaskDefinitions.execute();
|
|
70
|
+
})
|
|
71
|
+
});
|
|
72
|
+
builder.addResolver({
|
|
73
|
+
path: "WebinyBackgroundTaskQuery.listLogs",
|
|
74
|
+
dependencies: [
|
|
75
|
+
ListTaskLogsUseCase
|
|
76
|
+
],
|
|
77
|
+
resolver: (listTaskLogs)=>({ args, context })=>resolveList(async ()=>{
|
|
78
|
+
await checkPermissions(context, {
|
|
79
|
+
rwd: "r"
|
|
80
|
+
});
|
|
81
|
+
const result = await listTaskLogs.execute(args);
|
|
82
|
+
if (result.isFail()) throw result.error;
|
|
83
|
+
return result.value;
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
builder.addResolver({
|
|
87
|
+
path: "WebinyBackgroundTaskQuery.getSettings",
|
|
88
|
+
dependencies: [
|
|
89
|
+
GetBackgroundTaskSettingsRepository
|
|
90
|
+
],
|
|
91
|
+
resolver: (repository)=>({ context })=>resolve(async ()=>{
|
|
92
|
+
await checkPermissions(context, {
|
|
93
|
+
rwd: "r"
|
|
94
|
+
});
|
|
95
|
+
const result = await repository.execute();
|
|
96
|
+
if (result.isFail()) throw result.error;
|
|
97
|
+
return result.value;
|
|
98
|
+
})
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function addMutationResolvers(builder) {
|
|
102
|
+
builder.addResolver({
|
|
103
|
+
path: "Mutation.backgroundTasks",
|
|
104
|
+
resolver: ()=>emptyResolver
|
|
105
|
+
});
|
|
106
|
+
builder.addResolver({
|
|
107
|
+
path: "WebinyBackgroundTaskMutation.abortTask",
|
|
108
|
+
dependencies: [
|
|
109
|
+
AbortTaskUseCase
|
|
110
|
+
],
|
|
111
|
+
resolver: (abortTask)=>async ({ args, context })=>{
|
|
112
|
+
await checkPermissions(context, {
|
|
113
|
+
rwd: "w"
|
|
114
|
+
});
|
|
115
|
+
return resolve(async ()=>{
|
|
116
|
+
const result = await abortTask.execute(args);
|
|
117
|
+
if (result.isOk()) return result.value;
|
|
118
|
+
throw result.error;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
builder.addResolver({
|
|
123
|
+
path: "WebinyBackgroundTaskMutation.triggerTask",
|
|
124
|
+
dependencies: [
|
|
125
|
+
TriggerVisibleTaskUseCase
|
|
126
|
+
],
|
|
127
|
+
resolver: (triggerTask)=>async ({ args, context })=>{
|
|
128
|
+
await checkPermissions(context, {
|
|
129
|
+
rwd: "w"
|
|
130
|
+
});
|
|
131
|
+
return resolve(async ()=>{
|
|
132
|
+
const result = await triggerTask.execute(args);
|
|
133
|
+
if (result.isOk()) return result.value;
|
|
134
|
+
throw result.error;
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
builder.addResolver({
|
|
139
|
+
path: "WebinyBackgroundTaskMutation.deleteTask",
|
|
140
|
+
dependencies: [
|
|
141
|
+
DeleteTaskUseCase
|
|
142
|
+
],
|
|
143
|
+
resolver: (deleteTask)=>async ({ args, context })=>{
|
|
144
|
+
await checkPermissions(context, {
|
|
145
|
+
rwd: "d"
|
|
146
|
+
});
|
|
147
|
+
return resolve(async ()=>{
|
|
148
|
+
const result = await deleteTask.execute(args.id);
|
|
149
|
+
if (result.isFail()) throw result.error;
|
|
150
|
+
return true;
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
builder.addResolver({
|
|
155
|
+
path: "WebinyBackgroundTaskMutation.updateSettings",
|
|
156
|
+
dependencies: [
|
|
157
|
+
UpdateBackgroundTaskSettingsUseCase
|
|
158
|
+
],
|
|
159
|
+
resolver: (updateSettings)=>({ args })=>resolve(async ()=>{
|
|
160
|
+
const result = await updateSettings.execute(args.input);
|
|
161
|
+
if (result.isFail()) throw result.error;
|
|
162
|
+
return result.value;
|
|
163
|
+
})
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function addFieldResolvers(builder) {
|
|
167
|
+
builder.addResolver({
|
|
168
|
+
path: "WebinyBackgroundTask.logs",
|
|
169
|
+
dependencies: [
|
|
170
|
+
ListTaskLogsUseCase
|
|
171
|
+
],
|
|
172
|
+
resolver: (listTaskLogs)=>async ({ parent, args })=>{
|
|
173
|
+
const result = await listTaskLogs.execute({
|
|
174
|
+
sort: [
|
|
175
|
+
"createdBy_ASC"
|
|
176
|
+
],
|
|
177
|
+
limit: 10000,
|
|
178
|
+
...args,
|
|
179
|
+
where: {
|
|
180
|
+
...args?.where,
|
|
181
|
+
task: parent.id
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
if (result.isFail()) throw result.error;
|
|
185
|
+
return result.value.items;
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
builder.addResolver({
|
|
189
|
+
path: "WebinyBackgroundTaskLog.task",
|
|
190
|
+
dependencies: [
|
|
191
|
+
GetTaskUseCase
|
|
192
|
+
],
|
|
193
|
+
resolver: (getTask)=>async ({ parent })=>await findTask(getTask, parent.task)
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
class BackgroundTasksGraphQLSchemaImpl {
|
|
197
|
+
constructor(tenantContext, identityContext, taskModelProvider, logModelProvider, listModelsUseCase, fieldRegistry){
|
|
198
|
+
this.tenantContext = tenantContext;
|
|
199
|
+
this.identityContext = identityContext;
|
|
200
|
+
this.taskModelProvider = taskModelProvider;
|
|
201
|
+
this.logModelProvider = logModelProvider;
|
|
202
|
+
this.listModelsUseCase = listModelsUseCase;
|
|
203
|
+
this.fieldRegistry = fieldRegistry;
|
|
204
|
+
}
|
|
205
|
+
async getSchemaKey() {
|
|
206
|
+
if (!this.tenantContext.getTenant()) return "BackgroundTasks:no-tenant";
|
|
207
|
+
const { taskModel, logModel, models } = await this.loadInputs();
|
|
208
|
+
const modelKey = createModelSchemaKey([
|
|
209
|
+
taskModel,
|
|
210
|
+
logModel
|
|
211
|
+
], models);
|
|
212
|
+
return `BackgroundTasks:${modelKey}`;
|
|
213
|
+
}
|
|
214
|
+
async execute(builder) {
|
|
215
|
+
if (!this.tenantContext.getTenant()) return builder;
|
|
216
|
+
const typeDefs = await this.createTypeDefs();
|
|
217
|
+
builder.addTypeDefs(typeDefs);
|
|
218
|
+
addQueryResolvers(builder);
|
|
219
|
+
addMutationResolvers(builder);
|
|
220
|
+
addFieldResolvers(builder);
|
|
221
|
+
return builder;
|
|
222
|
+
}
|
|
223
|
+
async loadInputs() {
|
|
224
|
+
const taskModel = await this.taskModelProvider.get();
|
|
225
|
+
const logModel = await this.logModelProvider.get();
|
|
226
|
+
const modelsResult = await this.identityContext.withoutAuthorization(async ()=>await this.listModelsUseCase.execute({
|
|
227
|
+
includePrivate: false
|
|
228
|
+
}));
|
|
229
|
+
if (modelsResult.isFail()) throw modelsResult.error;
|
|
230
|
+
const models = modelsResult.value.filter((model)=>model.fields.length > 0);
|
|
231
|
+
return {
|
|
232
|
+
taskModel,
|
|
233
|
+
logModel,
|
|
234
|
+
models
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
async createTypeDefs() {
|
|
238
|
+
const { taskModel, logModel, models } = await this.loadInputs();
|
|
239
|
+
const fieldRegistry = this.fieldRegistry;
|
|
240
|
+
const taskFields = renderFields({
|
|
241
|
+
models,
|
|
242
|
+
model: taskModel,
|
|
243
|
+
fields: taskModel.fields,
|
|
244
|
+
type: "manage",
|
|
245
|
+
fieldRegistry
|
|
246
|
+
});
|
|
247
|
+
const logFields = renderFields({
|
|
248
|
+
models,
|
|
249
|
+
model: logModel,
|
|
250
|
+
fields: logModel.fields.filter((field)=>"task" !== field.fieldId),
|
|
251
|
+
type: "manage",
|
|
252
|
+
fieldRegistry
|
|
253
|
+
});
|
|
254
|
+
const listTasksFilterFieldsRender = renderListFilterFields({
|
|
255
|
+
model: taskModel,
|
|
256
|
+
fields: taskModel.fields,
|
|
257
|
+
type: "manage",
|
|
258
|
+
fieldRegistry,
|
|
259
|
+
excludeFields: [
|
|
260
|
+
"entryId"
|
|
261
|
+
]
|
|
262
|
+
});
|
|
263
|
+
const listLogsFilterFieldsRender = renderListFilterFields({
|
|
264
|
+
model: logModel,
|
|
265
|
+
fields: logModel.fields,
|
|
266
|
+
type: "manage",
|
|
267
|
+
fieldRegistry,
|
|
268
|
+
excludeFields: [
|
|
269
|
+
"entryId"
|
|
270
|
+
]
|
|
271
|
+
});
|
|
272
|
+
const sortTasksEnumRender = renderSortEnum({
|
|
273
|
+
model: taskModel,
|
|
274
|
+
fields: taskModel.fields,
|
|
275
|
+
fieldRegistry,
|
|
276
|
+
sorters: []
|
|
277
|
+
});
|
|
278
|
+
const sortLogsEnumRender = renderSortEnum({
|
|
279
|
+
model: logModel,
|
|
280
|
+
fields: logModel.fields,
|
|
281
|
+
fieldRegistry,
|
|
282
|
+
sorters: []
|
|
283
|
+
});
|
|
284
|
+
return `
|
|
285
|
+
type WebinyBackgroundTaskError {
|
|
286
|
+
message: String
|
|
287
|
+
code: String
|
|
288
|
+
data: JSON
|
|
289
|
+
stack: String
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
${taskFields.map((f)=>f.typeDefs).join("\n")}
|
|
293
|
+
${logFields.map((f)=>f.typeDefs).join("\n")}
|
|
294
|
+
|
|
295
|
+
type WebinyBackgroundTask {
|
|
296
|
+
id: String!
|
|
297
|
+
createdOn: DateTime!
|
|
298
|
+
savedOn: DateTime
|
|
299
|
+
createdBy: WebinyBackgroundTaskIdentity!
|
|
300
|
+
logs(
|
|
301
|
+
where: WebinyBackgroundTaskLogListWhereInput
|
|
302
|
+
limit: Number
|
|
303
|
+
sort: [WebinyBackgroundTaskLogListSorter!]
|
|
304
|
+
): [WebinyBackgroundTaskLog!]!
|
|
305
|
+
${taskFields.map((f)=>f.fields).join("\n")}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
type WebinyBackgroundTaskResponse {
|
|
309
|
+
data: WebinyBackgroundTask
|
|
310
|
+
error: WebinyBackgroundTaskError
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
type WebinyBackgroundTaskMeta {
|
|
314
|
+
cursor: String
|
|
315
|
+
hasMoreItems: Boolean!
|
|
316
|
+
totalCount: Int!
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
type WebinyBackgroundTaskListResponse {
|
|
320
|
+
data: [WebinyBackgroundTask!]
|
|
321
|
+
meta: WebinyBackgroundTaskMeta
|
|
322
|
+
error: WebinyBackgroundTaskError
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
type WebinyBackgroundTaskLog {
|
|
326
|
+
id: String!
|
|
327
|
+
createdOn: DateTime!
|
|
328
|
+
createdBy: WebinyBackgroundTaskIdentity!
|
|
329
|
+
task: WebinyBackgroundTask!
|
|
330
|
+
${logFields.map((f)=>f.fields).join("\n")}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
type WebinyBackgroundTaskLogListResponse {
|
|
334
|
+
data: [WebinyBackgroundTaskLog!]
|
|
335
|
+
meta: WebinyBackgroundTaskMeta
|
|
336
|
+
error: WebinyBackgroundTaskError
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
type WebinyBackgroundTaskDefinition {
|
|
340
|
+
id: String!
|
|
341
|
+
title: String!
|
|
342
|
+
description: String
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
type WebinyBackgroundTaskListDefinitionsResponse {
|
|
346
|
+
data: [WebinyBackgroundTaskDefinition!]
|
|
347
|
+
error: WebinyBackgroundTaskError
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
type WebinyBackgroundTaskIdentity {
|
|
351
|
+
id: String!
|
|
352
|
+
displayName: String!
|
|
353
|
+
type: String
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
type WebinyBackgroundTaskTriggerResponse {
|
|
357
|
+
data: WebinyBackgroundTask
|
|
358
|
+
error: WebinyBackgroundTaskError
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
type WebinyBackgroundTaskDeleteResponse {
|
|
362
|
+
data: Boolean
|
|
363
|
+
error: WebinyBackgroundTaskError
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
input WebinyBackgroundTaskListWhereInput {
|
|
367
|
+
${listTasksFilterFieldsRender.allFiltersAsString() || "_empty: String"}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
input WebinyBackgroundTaskLogListWhereInput {
|
|
371
|
+
${listLogsFilterFieldsRender.allFiltersAsString() || "_empty: String"}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
enum WebinyBackgroundTaskListSorter {
|
|
375
|
+
${sortTasksEnumRender}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
enum WebinyBackgroundTaskLogListSorter {
|
|
379
|
+
${sortLogsEnumRender}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
type WebinyBackgroundTaskQuery {
|
|
383
|
+
_empty: String
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
type WebinyBackgroundTaskMutation {
|
|
387
|
+
_empty: String
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
extend type Query {
|
|
391
|
+
backgroundTasks: WebinyBackgroundTaskQuery
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
extend type Mutation {
|
|
395
|
+
backgroundTasks: WebinyBackgroundTaskMutation
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
extend type WebinyBackgroundTaskQuery {
|
|
399
|
+
getTask(id: ID!): WebinyBackgroundTaskResponse!
|
|
400
|
+
listTasks(
|
|
401
|
+
where: WebinyBackgroundTaskListWhereInput
|
|
402
|
+
sort: [WebinyBackgroundTaskListSorter!]
|
|
403
|
+
limit: Int
|
|
404
|
+
after: String
|
|
405
|
+
search: String
|
|
406
|
+
): WebinyBackgroundTaskListResponse!
|
|
407
|
+
listDefinitions: WebinyBackgroundTaskListDefinitionsResponse!
|
|
408
|
+
|
|
409
|
+
listLogs(
|
|
410
|
+
where: WebinyBackgroundTaskLogListWhereInput
|
|
411
|
+
sort: [WebinyBackgroundTaskLogListSorter!]
|
|
412
|
+
limit: Int
|
|
413
|
+
after: String
|
|
414
|
+
search: String
|
|
415
|
+
): WebinyBackgroundTaskLogListResponse!
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
extend type WebinyBackgroundTaskMutation {
|
|
419
|
+
triggerTask(definition: String!, input: JSON, name: String, delay: Number): WebinyBackgroundTaskTriggerResponse!
|
|
420
|
+
abortTask(id: ID!, message: String): WebinyBackgroundTaskResponse!
|
|
421
|
+
deleteTask(id: ID!): WebinyBackgroundTaskDeleteResponse!
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
type WebinyBackgroundTaskSettings {
|
|
425
|
+
retentionDays: Int
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
type WebinyBackgroundTaskSettingsResponse {
|
|
429
|
+
data: WebinyBackgroundTaskSettings
|
|
430
|
+
error: WebinyBackgroundTaskError
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
input UpdateBackgroundTaskSettingsInput {
|
|
434
|
+
retentionDays: Int
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
extend type WebinyBackgroundTaskQuery {
|
|
438
|
+
getSettings: WebinyBackgroundTaskSettingsResponse
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
extend type WebinyBackgroundTaskMutation {
|
|
442
|
+
updateSettings(
|
|
443
|
+
input: UpdateBackgroundTaskSettingsInput!
|
|
444
|
+
): WebinyBackgroundTaskSettingsResponse
|
|
445
|
+
}
|
|
446
|
+
`;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
const BackgroundTasksGraphQLSchema = GraphQLSchemaFactory.createImplementation({
|
|
450
|
+
implementation: BackgroundTasksGraphQLSchemaImpl,
|
|
451
|
+
dependencies: [
|
|
452
|
+
TenantContext,
|
|
453
|
+
IdentityContext,
|
|
454
|
+
TaskModelProvider,
|
|
455
|
+
TaskLogModelProvider,
|
|
456
|
+
ListModelsUseCase,
|
|
457
|
+
CmsModelFieldToGraphQLRegistry
|
|
458
|
+
]
|
|
459
|
+
});
|
|
460
|
+
export { BackgroundTasksGraphQLSchema };
|
|
461
|
+
|
|
462
|
+
//# sourceMappingURL=BackgroundTasksGraphQLSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/graphql/BackgroundTasksGraphQLSchema.js","sources":["../../../src/api/graphql/BackgroundTasksGraphQLSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { createModelSchemaKey } from \"@webiny/api-headless-cms/utils/createModelSchemaKey.js\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum.js\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields.js\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/abstractions.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/features/contentModel/ListModels/index.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\nimport type { Context, IListTaskLogParams, IListTaskParams, ITask, ITaskLog } from \"~/api/types.js\";\nimport { TaskLogModelProvider } from \"~/api/domain/task/abstractions.js\";\nimport { TaskModelProvider } from \"~/api/domain/task/abstractions.js\";\nimport { ListTaskLogsUseCase } from \"~/api/features/ListTaskLogs/index.js\";\nimport { GetTaskUseCase } from \"~/api/features/GetTask/index.js\";\nimport { ListTasksUseCase } from \"~/api/features/ListTasks/index.js\";\nimport { DeleteTaskUseCase } from \"~/api/features/DeleteTask/index.js\";\nimport { TaskNotFoundError } from \"~/api/domain/errors.js\";\nimport { ListVisibleTaskDefinitionsUseCase } from \"~/api/features/ListVisibleTaskDefinitions/index.js\";\nimport { TriggerVisibleTaskUseCase } from \"~/api/features/TriggerVisibleTask/index.js\";\nimport { AbortTaskUseCase } from \"~/api/features/AbortTask/abstractions.js\";\nimport { GetBackgroundTaskSettingsRepository } from \"~/api/features/GetBackgroundTaskSettings/abstractions.js\";\nimport { UpdateBackgroundTaskSettingsUseCase } from \"~/api/features/UpdateBackgroundTaskSettings/abstractions.js\";\nimport type { IUpdateBackgroundTaskSettingsInput } from \"~/api/features/UpdateBackgroundTaskSettings/abstractions.js\";\nimport { emptyResolver, resolve, resolveList } from \"./utils.js\";\nimport { checkPermissions } from \"./checkPermissions.js\";\n\n// The API answers `null` for a task that doesn't exist; any other failure is an error.\nconst findTask = async (getTask: GetTaskUseCase.Interface, id: string) => {\n const result = await getTask.execute(id);\n if (result.isOk()) {\n return result.value;\n } else if (result.error instanceof TaskNotFoundError) {\n return null;\n }\n throw result.error;\n};\n\ninterface IGetTaskQueryParams {\n id: string;\n}\n\ninterface IAbortTaskMutationParams {\n id: string;\n message?: string;\n}\n\ninterface ITriggerTaskMutationParams {\n name?: string;\n definition: string;\n input?: Record<string, any>;\n delay?: number;\n}\n\ninterface IDeleteTaskMutationParams {\n id: string;\n}\n\ninterface IUpdateSettingsArgs {\n input: IUpdateBackgroundTaskSettingsInput;\n}\n\ninterface IResolverParams<TArgs = unknown, TParent = unknown> {\n parent: TParent;\n args: TArgs;\n context: Context;\n}\n\nfunction addQueryResolvers(builder: GraphQLSchemaFactory.SchemaBuilder): void {\n builder.addResolver({\n path: \"Query.backgroundTasks\",\n resolver: () => emptyResolver\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskQuery.getTask\",\n dependencies: [GetTaskUseCase],\n resolver: (getTask: GetTaskUseCase.Interface) => {\n return ({ args, context }: IResolverParams<IGetTaskQueryParams>) => {\n return resolve(async () => {\n await checkPermissions(context, { rwd: \"r\" });\n return await findTask(getTask, args.id);\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskQuery.listTasks\",\n dependencies: [ListTasksUseCase],\n resolver: (listTasks: ListTasksUseCase.Interface) => {\n return ({ args, context }: IResolverParams<IListTaskParams>) => {\n return resolveList(async () => {\n await checkPermissions(context, { rwd: \"r\" });\n const result = await listTasks.execute(args);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskQuery.listDefinitions\",\n dependencies: [ListVisibleTaskDefinitionsUseCase],\n resolver: (listTaskDefinitions: ListVisibleTaskDefinitionsUseCase.Interface) => {\n return ({ context }: IResolverParams) => {\n return resolve(async () => {\n await checkPermissions(context, { rwd: \"r\" });\n return listTaskDefinitions.execute();\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskQuery.listLogs\",\n dependencies: [ListTaskLogsUseCase],\n resolver: (listTaskLogs: ListTaskLogsUseCase.Interface) => {\n return ({ args, context }: IResolverParams<IListTaskLogParams>) => {\n return resolveList(async () => {\n await checkPermissions(context, { rwd: \"r\" });\n const result = await listTaskLogs.execute(args);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskQuery.getSettings\",\n dependencies: [GetBackgroundTaskSettingsRepository],\n resolver: (repository: GetBackgroundTaskSettingsRepository.Interface) => {\n return ({ context }: IResolverParams) => {\n return resolve(async () => {\n await checkPermissions(context, { rwd: \"r\" });\n const result = await repository.execute();\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n };\n }\n });\n}\n\nfunction addMutationResolvers(builder: GraphQLSchemaFactory.SchemaBuilder): void {\n builder.addResolver({\n path: \"Mutation.backgroundTasks\",\n resolver: () => emptyResolver\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskMutation.abortTask\",\n dependencies: [AbortTaskUseCase],\n resolver: (abortTask: AbortTaskUseCase.Interface) => {\n return async ({ args, context }: IResolverParams<IAbortTaskMutationParams>) => {\n await checkPermissions(context, { rwd: \"w\" });\n return resolve<ITask>(async () => {\n const result = await abortTask.execute(args);\n if (result.isOk()) {\n return result.value;\n }\n\n throw result.error;\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskMutation.triggerTask\",\n dependencies: [TriggerVisibleTaskUseCase],\n resolver: (triggerTask: TriggerVisibleTaskUseCase.Interface) => {\n return async ({ args, context }: IResolverParams<ITriggerTaskMutationParams>) => {\n await checkPermissions(context, { rwd: \"w\" });\n return resolve<ITask>(async () => {\n const result = await triggerTask.execute(args);\n if (result.isOk()) {\n return result.value;\n }\n\n throw result.error;\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskMutation.deleteTask\",\n dependencies: [DeleteTaskUseCase],\n resolver: (deleteTask: DeleteTaskUseCase.Interface) => {\n return async ({ args, context }: IResolverParams<IDeleteTaskMutationParams>) => {\n await checkPermissions(context, { rwd: \"d\" });\n return resolve(async () => {\n const result = await deleteTask.execute(args.id);\n if (result.isFail()) {\n throw result.error;\n }\n return true;\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"WebinyBackgroundTaskMutation.updateSettings\",\n dependencies: [UpdateBackgroundTaskSettingsUseCase],\n resolver: (updateSettings: UpdateBackgroundTaskSettingsUseCase.Interface) => {\n return ({ args }: IResolverParams<IUpdateSettingsArgs>) => {\n return resolve(async () => {\n const result = await updateSettings.execute(args.input);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n };\n }\n });\n}\n\nfunction addFieldResolvers(builder: GraphQLSchemaFactory.SchemaBuilder): void {\n builder.addResolver({\n path: \"WebinyBackgroundTask.logs\",\n dependencies: [ListTaskLogsUseCase],\n resolver: (listTaskLogs: ListTaskLogsUseCase.Interface) => {\n return async ({ parent, args }: IResolverParams<IListTaskLogParams, ITask>) => {\n const result = await listTaskLogs.execute({\n sort: [\"createdBy_ASC\"],\n limit: 10000,\n ...args,\n where: {\n ...args?.where,\n task: parent.id\n }\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value.items;\n };\n }\n });\n\n // N+1: this field reads its task once per log, so a `listLogs` page that selects `task` runs one\n // `GetTaskUseCase` read per log on top of the list query (logs of the same task read it again).\n // Known and left as is: logs are an operator view. A request-scoped dataloader batching the ids\n // into one `ListTasksUseCase` call (`id_in`) would fix it.\n builder.addResolver({\n path: \"WebinyBackgroundTaskLog.task\",\n dependencies: [GetTaskUseCase],\n resolver: (getTask: GetTaskUseCase.Interface) => {\n return async ({ parent }: IResolverParams<unknown, ITaskLog>) => {\n return await findTask(getTask, parent.task);\n };\n }\n });\n}\n\n/**\n * The background-tasks GraphQL schema. Its shape depends on the CMS task/log content models, which\n * are loaded when the schema is composed. The settings schema lives here too, because it extends\n * the task schema's `WebinyBackgroundTaskQuery`/`Mutation` types.\n */\nclass BackgroundTasksGraphQLSchemaImpl implements GraphQLSchemaFactory.Interface {\n public constructor(\n private readonly tenantContext: TenantContext.Interface,\n private readonly identityContext: IdentityContext.Interface,\n private readonly taskModelProvider: TaskModelProvider.Interface,\n private readonly logModelProvider: TaskLogModelProvider.Interface,\n private readonly listModelsUseCase: ListModelsUseCase.Interface,\n private readonly fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface\n ) {}\n\n public async getSchemaKey(): Promise<string> {\n if (!this.tenantContext.getTenant()) {\n return \"BackgroundTasks:no-tenant\";\n }\n\n const { taskModel, logModel, models } = await this.loadInputs();\n const modelKey = createModelSchemaKey([taskModel, logModel], models);\n return `BackgroundTasks:${modelKey}`;\n }\n\n public async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n if (!this.tenantContext.getTenant()) {\n return builder;\n }\n\n const typeDefs = await this.createTypeDefs();\n\n builder.addTypeDefs(typeDefs);\n addQueryResolvers(builder);\n addMutationResolvers(builder);\n addFieldResolvers(builder);\n\n return builder;\n }\n\n private async loadInputs() {\n const taskModel = await this.taskModelProvider.get();\n const logModel = await this.logModelProvider.get();\n\n const modelsResult = await this.identityContext.withoutAuthorization(async () => {\n return await this.listModelsUseCase.execute({ includePrivate: false });\n });\n if (modelsResult.isFail()) {\n throw modelsResult.error;\n }\n const models = modelsResult.value.filter(model => model.fields.length > 0);\n\n return { taskModel, logModel, models };\n }\n\n private async createTypeDefs(): Promise<string> {\n const { taskModel, logModel, models } = await this.loadInputs();\n const fieldRegistry = this.fieldRegistry;\n\n const taskFields = renderFields({\n models,\n model: taskModel,\n fields: taskModel.fields,\n type: \"manage\",\n fieldRegistry\n });\n\n const logFields = renderFields({\n models,\n model: logModel,\n fields: logModel.fields.filter(field => field.fieldId !== \"task\"),\n type: \"manage\",\n fieldRegistry\n });\n\n const listTasksFilterFieldsRender = renderListFilterFields({\n model: taskModel,\n fields: taskModel.fields,\n type: \"manage\",\n fieldRegistry,\n excludeFields: [\"entryId\"]\n });\n\n const listLogsFilterFieldsRender = renderListFilterFields({\n model: logModel,\n fields: logModel.fields,\n type: \"manage\",\n fieldRegistry,\n excludeFields: [\"entryId\"]\n });\n\n const sortTasksEnumRender = renderSortEnum({\n model: taskModel,\n fields: taskModel.fields,\n fieldRegistry,\n sorters: []\n });\n\n const sortLogsEnumRender = renderSortEnum({\n model: logModel,\n fields: logModel.fields,\n fieldRegistry,\n sorters: []\n });\n\n return /* GraphQL */ `\n type WebinyBackgroundTaskError {\n message: String\n code: String\n data: JSON\n stack: String\n }\n\n ${taskFields.map(f => f.typeDefs).join(\"\\n\")}\n ${logFields.map(f => f.typeDefs).join(\"\\n\")}\n\n type WebinyBackgroundTask {\n id: String!\n createdOn: DateTime!\n savedOn: DateTime\n createdBy: WebinyBackgroundTaskIdentity!\n logs(\n where: WebinyBackgroundTaskLogListWhereInput\n limit: Number\n sort: [WebinyBackgroundTaskLogListSorter!]\n ): [WebinyBackgroundTaskLog!]!\n ${taskFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type WebinyBackgroundTaskResponse {\n data: WebinyBackgroundTask\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskMeta {\n cursor: String\n hasMoreItems: Boolean!\n totalCount: Int!\n }\n\n type WebinyBackgroundTaskListResponse {\n data: [WebinyBackgroundTask!]\n meta: WebinyBackgroundTaskMeta\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskLog {\n id: String!\n createdOn: DateTime!\n createdBy: WebinyBackgroundTaskIdentity!\n task: WebinyBackgroundTask!\n ${logFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type WebinyBackgroundTaskLogListResponse {\n data: [WebinyBackgroundTaskLog!]\n meta: WebinyBackgroundTaskMeta\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskDefinition {\n id: String!\n title: String!\n description: String\n }\n\n type WebinyBackgroundTaskListDefinitionsResponse {\n data: [WebinyBackgroundTaskDefinition!]\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskIdentity {\n id: String!\n displayName: String!\n type: String\n }\n\n type WebinyBackgroundTaskTriggerResponse {\n data: WebinyBackgroundTask\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskDeleteResponse {\n data: Boolean\n error: WebinyBackgroundTaskError\n }\n\n input WebinyBackgroundTaskListWhereInput {\n ${listTasksFilterFieldsRender.allFiltersAsString() || \"_empty: String\"}\n }\n\n input WebinyBackgroundTaskLogListWhereInput {\n ${listLogsFilterFieldsRender.allFiltersAsString() || \"_empty: String\"}\n }\n\n enum WebinyBackgroundTaskListSorter {\n ${sortTasksEnumRender}\n }\n\n enum WebinyBackgroundTaskLogListSorter {\n ${sortLogsEnumRender}\n }\n\n type WebinyBackgroundTaskQuery {\n _empty: String\n }\n\n type WebinyBackgroundTaskMutation {\n _empty: String\n }\n\n extend type Query {\n backgroundTasks: WebinyBackgroundTaskQuery\n }\n\n extend type Mutation {\n backgroundTasks: WebinyBackgroundTaskMutation\n }\n\n extend type WebinyBackgroundTaskQuery {\n getTask(id: ID!): WebinyBackgroundTaskResponse!\n listTasks(\n where: WebinyBackgroundTaskListWhereInput\n sort: [WebinyBackgroundTaskListSorter!]\n limit: Int\n after: String\n search: String\n ): WebinyBackgroundTaskListResponse!\n listDefinitions: WebinyBackgroundTaskListDefinitionsResponse!\n\n listLogs(\n where: WebinyBackgroundTaskLogListWhereInput\n sort: [WebinyBackgroundTaskLogListSorter!]\n limit: Int\n after: String\n search: String\n ): WebinyBackgroundTaskLogListResponse!\n }\n\n extend type WebinyBackgroundTaskMutation {\n triggerTask(definition: String!, input: JSON, name: String, delay: Number): WebinyBackgroundTaskTriggerResponse!\n abortTask(id: ID!, message: String): WebinyBackgroundTaskResponse!\n deleteTask(id: ID!): WebinyBackgroundTaskDeleteResponse!\n }\n\n type WebinyBackgroundTaskSettings {\n retentionDays: Int\n }\n\n type WebinyBackgroundTaskSettingsResponse {\n data: WebinyBackgroundTaskSettings\n error: WebinyBackgroundTaskError\n }\n\n input UpdateBackgroundTaskSettingsInput {\n retentionDays: Int\n }\n\n extend type WebinyBackgroundTaskQuery {\n getSettings: WebinyBackgroundTaskSettingsResponse\n }\n\n extend type WebinyBackgroundTaskMutation {\n updateSettings(\n input: UpdateBackgroundTaskSettingsInput!\n ): WebinyBackgroundTaskSettingsResponse\n }\n `;\n }\n}\n\nexport const BackgroundTasksGraphQLSchema = GraphQLSchemaFactory.createImplementation({\n implementation: BackgroundTasksGraphQLSchemaImpl,\n dependencies: [\n TenantContext,\n IdentityContext,\n TaskModelProvider,\n TaskLogModelProvider,\n ListModelsUseCase,\n CmsModelFieldToGraphQLRegistry\n ]\n});\n"],"names":["findTask","getTask","id","result","TaskNotFoundError","addQueryResolvers","builder","emptyResolver","GetTaskUseCase","args","context","resolve","checkPermissions","ListTasksUseCase","listTasks","resolveList","ListVisibleTaskDefinitionsUseCase","listTaskDefinitions","ListTaskLogsUseCase","listTaskLogs","GetBackgroundTaskSettingsRepository","repository","addMutationResolvers","AbortTaskUseCase","abortTask","TriggerVisibleTaskUseCase","triggerTask","DeleteTaskUseCase","deleteTask","UpdateBackgroundTaskSettingsUseCase","updateSettings","addFieldResolvers","parent","BackgroundTasksGraphQLSchemaImpl","tenantContext","identityContext","taskModelProvider","logModelProvider","listModelsUseCase","fieldRegistry","taskModel","logModel","models","modelKey","createModelSchemaKey","typeDefs","modelsResult","model","taskFields","renderFields","logFields","field","listTasksFilterFieldsRender","renderListFilterFields","listLogsFilterFieldsRender","sortTasksEnumRender","renderSortEnum","sortLogsEnumRender","f","BackgroundTasksGraphQLSchema","GraphQLSchemaFactory","TenantContext","IdentityContext","TaskModelProvider","TaskLogModelProvider","ListModelsUseCase","CmsModelFieldToGraphQLRegistry"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAMA,WAAW,OAAOC,SAAmCC;IACvD,MAAMC,SAAS,MAAMF,QAAQ,OAAO,CAACC;IACrC,IAAIC,OAAO,IAAI,IACX,OAAOA,OAAO,KAAK;SAChB,IAAIA,OAAO,KAAK,YAAYC,mBAC/B,OAAO;IAEX,MAAMD,OAAO,KAAK;AACtB;AAgCA,SAASE,kBAAkBC,OAA2C;IAClEA,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,UAAU,IAAMC;IACpB;IAEAD,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACE;SAAe;QAC9B,UAAU,CAACP,UACA,CAAC,EAAEQ,IAAI,EAAEC,OAAO,EAAwC,GACpDC,QAAQ;oBACX,MAAMC,iBAAiBF,SAAS;wBAAE,KAAK;oBAAI;oBAC3C,OAAO,MAAMV,SAASC,SAASQ,KAAK,EAAE;gBAC1C;IAGZ;IAEAH,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACO;SAAiB;QAChC,UAAU,CAACC,YACA,CAAC,EAAEL,IAAI,EAAEC,OAAO,EAAoC,GAChDK,YAAY;oBACf,MAAMH,iBAAiBF,SAAS;wBAAE,KAAK;oBAAI;oBAC3C,MAAMP,SAAS,MAAMW,UAAU,OAAO,CAACL;oBACvC,IAAIN,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAOA,OAAO,KAAK;gBACvB;IAGZ;IAEAG,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACU;SAAkC;QACjD,UAAU,CAACC,sBACA,CAAC,EAAEP,OAAO,EAAmB,GACzBC,QAAQ;oBACX,MAAMC,iBAAiBF,SAAS;wBAAE,KAAK;oBAAI;oBAC3C,OAAOO,oBAAoB,OAAO;gBACtC;IAGZ;IAEAX,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACY;SAAoB;QACnC,UAAU,CAACC,eACA,CAAC,EAAEV,IAAI,EAAEC,OAAO,EAAuC,GACnDK,YAAY;oBACf,MAAMH,iBAAiBF,SAAS;wBAAE,KAAK;oBAAI;oBAC3C,MAAMP,SAAS,MAAMgB,aAAa,OAAO,CAACV;oBAC1C,IAAIN,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAOA,OAAO,KAAK;gBACvB;IAGZ;IAEAG,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACc;SAAoC;QACnD,UAAU,CAACC,aACA,CAAC,EAAEX,OAAO,EAAmB,GACzBC,QAAQ;oBACX,MAAMC,iBAAiBF,SAAS;wBAAE,KAAK;oBAAI;oBAC3C,MAAMP,SAAS,MAAMkB,WAAW,OAAO;oBACvC,IAAIlB,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAOA,OAAO,KAAK;gBACvB;IAGZ;AACJ;AAEA,SAASmB,qBAAqBhB,OAA2C;IACrEA,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,UAAU,IAAMC;IACpB;IAEAD,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACiB;SAAiB;QAChC,UAAU,CAACC,YACA,OAAO,EAAEf,IAAI,EAAEC,OAAO,EAA6C;gBACtE,MAAME,iBAAiBF,SAAS;oBAAE,KAAK;gBAAI;gBAC3C,OAAOC,QAAe;oBAClB,MAAMR,SAAS,MAAMqB,UAAU,OAAO,CAACf;oBACvC,IAAIN,OAAO,IAAI,IACX,OAAOA,OAAO,KAAK;oBAGvB,MAAMA,OAAO,KAAK;gBACtB;YACJ;IAER;IAEAG,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACmB;SAA0B;QACzC,UAAU,CAACC,cACA,OAAO,EAAEjB,IAAI,EAAEC,OAAO,EAA+C;gBACxE,MAAME,iBAAiBF,SAAS;oBAAE,KAAK;gBAAI;gBAC3C,OAAOC,QAAe;oBAClB,MAAMR,SAAS,MAAMuB,YAAY,OAAO,CAACjB;oBACzC,IAAIN,OAAO,IAAI,IACX,OAAOA,OAAO,KAAK;oBAGvB,MAAMA,OAAO,KAAK;gBACtB;YACJ;IAER;IAEAG,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACqB;SAAkB;QACjC,UAAU,CAACC,aACA,OAAO,EAAEnB,IAAI,EAAEC,OAAO,EAA8C;gBACvE,MAAME,iBAAiBF,SAAS;oBAAE,KAAK;gBAAI;gBAC3C,OAAOC,QAAQ;oBACX,MAAMR,SAAS,MAAMyB,WAAW,OAAO,CAACnB,KAAK,EAAE;oBAC/C,IAAIN,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAO;gBACX;YACJ;IAER;IAEAG,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACuB;SAAoC;QACnD,UAAU,CAACC,iBACA,CAAC,EAAErB,IAAI,EAAwC,GAC3CE,QAAQ;oBACX,MAAMR,SAAS,MAAM2B,eAAe,OAAO,CAACrB,KAAK,KAAK;oBACtD,IAAIN,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAOA,OAAO,KAAK;gBACvB;IAGZ;AACJ;AAEA,SAAS4B,kBAAkBzB,OAA2C;IAClEA,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACY;SAAoB;QACnC,UAAU,CAACC,eACA,OAAO,EAAEa,MAAM,EAAEvB,IAAI,EAA8C;gBACtE,MAAMN,SAAS,MAAMgB,aAAa,OAAO,CAAC;oBACtC,MAAM;wBAAC;qBAAgB;oBACvB,OAAO;oBACP,GAAGV,IAAI;oBACP,OAAO;wBACH,GAAGA,MAAM,KAAK;wBACd,MAAMuB,OAAO,EAAE;oBACnB;gBACJ;gBACA,IAAI7B,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;gBAEtB,OAAOA,OAAO,KAAK,CAAC,KAAK;YAC7B;IAER;IAMAG,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACE;SAAe;QAC9B,UAAU,CAACP,UACA,OAAO,EAAE+B,MAAM,EAAsC,GACjD,MAAMhC,SAASC,SAAS+B,OAAO,IAAI;IAGtD;AACJ;AAOA,MAAMC;IACF,YACqBC,aAAsC,EACtCC,eAA0C,EAC1CC,iBAA8C,EAC9CC,gBAAgD,EAChDC,iBAA8C,EAC9CC,aAAuD,CAC1E;aANmBL,aAAa,GAAbA;aACAC,eAAe,GAAfA;aACAC,iBAAiB,GAAjBA;aACAC,gBAAgB,GAAhBA;aACAC,iBAAiB,GAAjBA;aACAC,aAAa,GAAbA;IAClB;IAEH,MAAa,eAAgC;QACzC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,IAC7B,OAAO;QAGX,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU;QAC7D,MAAMC,WAAWC,qBAAqB;YAACJ;YAAWC;SAAS,EAAEC;QAC7D,OAAO,CAAC,gBAAgB,EAAEC,UAAU;IACxC;IAEA,MAAa,QACTrC,OAA2C,EACA;QAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,IAC7B,OAAOA;QAGX,MAAMuC,WAAW,MAAM,IAAI,CAAC,cAAc;QAE1CvC,QAAQ,WAAW,CAACuC;QACpBxC,kBAAkBC;QAClBgB,qBAAqBhB;QACrByB,kBAAkBzB;QAElB,OAAOA;IACX;IAEA,MAAc,aAAa;QACvB,MAAMkC,YAAY,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG;QAClD,MAAMC,WAAW,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG;QAEhD,MAAMK,eAAe,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,UAC1D,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAAE,gBAAgB;YAAM;QAExE,IAAIA,aAAa,MAAM,IACnB,MAAMA,aAAa,KAAK;QAE5B,MAAMJ,SAASI,aAAa,KAAK,CAAC,MAAM,CAACC,CAAAA,QAASA,MAAM,MAAM,CAAC,MAAM,GAAG;QAExE,OAAO;YAAEP;YAAWC;YAAUC;QAAO;IACzC;IAEA,MAAc,iBAAkC;QAC5C,MAAM,EAAEF,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU;QAC7D,MAAMH,gBAAgB,IAAI,CAAC,aAAa;QAExC,MAAMS,aAAaC,aAAa;YAC5BP;YACA,OAAOF;YACP,QAAQA,UAAU,MAAM;YACxB,MAAM;YACND;QACJ;QAEA,MAAMW,YAAYD,aAAa;YAC3BP;YACA,OAAOD;YACP,QAAQA,SAAS,MAAM,CAAC,MAAM,CAACU,CAAAA,QAASA,AAAkB,WAAlBA,MAAM,OAAO;YACrD,MAAM;YACNZ;QACJ;QAEA,MAAMa,8BAA8BC,uBAAuB;YACvD,OAAOb;YACP,QAAQA,UAAU,MAAM;YACxB,MAAM;YACND;YACA,eAAe;gBAAC;aAAU;QAC9B;QAEA,MAAMe,6BAA6BD,uBAAuB;YACtD,OAAOZ;YACP,QAAQA,SAAS,MAAM;YACvB,MAAM;YACNF;YACA,eAAe;gBAAC;aAAU;QAC9B;QAEA,MAAMgB,sBAAsBC,eAAe;YACvC,OAAOhB;YACP,QAAQA,UAAU,MAAM;YACxBD;YACA,SAAS,EAAE;QACf;QAEA,MAAMkB,qBAAqBD,eAAe;YACtC,OAAOf;YACP,QAAQA,SAAS,MAAM;YACvBF;YACA,SAAS,EAAE;QACf;QAEA,OAAqB,CAAC;;;;;;;;YAQlB,EAAES,WAAW,GAAG,CAACU,CAAAA,IAAKA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM;YAC7C,EAAER,UAAU,GAAG,CAACQ,CAAAA,IAAKA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM;;;;;;;;;;;;gBAYxC,EAAEV,WAAW,GAAG,CAACU,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;gBAyB3C,EAAER,UAAU,GAAG,CAACQ,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAqC1C,EAAEN,4BAA4B,kBAAkB,MAAM,iBAAiB;;;;gBAIvE,EAAEE,2BAA2B,kBAAkB,MAAM,iBAAiB;;;;gBAItE,EAAEC,oBAAoB;;;;gBAItB,EAAEE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmE7B,CAAC;IACL;AACJ;AAEO,MAAME,+BAA+BC,qBAAqB,oBAAoB,CAAC;IAClF,gBAAgB3B;IAChB,cAAc;QACV4B;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/abstractions.js";
|
|
2
|
+
import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/index.js";
|
|
3
|
+
const checkPermissions = async (context, check = {})=>{
|
|
4
|
+
const taskPermissions = await context.container.resolve(IdentityContext).getPermissions("tasks");
|
|
5
|
+
const relevant = taskPermissions.filter((current)=>{
|
|
6
|
+
if (check.rwd && !hasRwd(current, check.rwd)) return false;
|
|
7
|
+
return true;
|
|
8
|
+
});
|
|
9
|
+
if (0 === relevant.length) throw new NotAuthorizedError();
|
|
10
|
+
};
|
|
11
|
+
const hasRwd = (permissions, rwd)=>{
|
|
12
|
+
if (!Array.isArray(permissions)) permissions = [
|
|
13
|
+
permissions
|
|
14
|
+
];
|
|
15
|
+
if (!rwd) return true;
|
|
16
|
+
const permissionWithoutRwdRestrictions = permissions.some((permission)=>"string" != typeof permission.rwd);
|
|
17
|
+
if (permissionWithoutRwdRestrictions) return true;
|
|
18
|
+
return permissions.some((permission)=>permission.rwd && permission.rwd.includes(rwd));
|
|
19
|
+
};
|
|
20
|
+
export { checkPermissions };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=checkPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/graphql/checkPermissions.js","sources":["../../../src/api/graphql/checkPermissions.ts"],"sourcesContent":["import type { Context, TaskPermission } from \"~/api/types.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/abstractions.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/index.js\";\n\n/**\n * @throws\n */\nexport const checkPermissions = async (\n context: Context,\n check: { rwd?: string } = {}\n): Promise<void> => {\n const taskPermissions = await context.container\n .resolve(IdentityContext)\n .getPermissions<TaskPermission>(\"tasks\");\n\n const relevant = taskPermissions.filter(current => {\n if (check.rwd && !hasRwd(current, check.rwd)) {\n return false;\n }\n\n return true;\n });\n\n if (relevant.length === 0) {\n throw new NotAuthorizedError();\n }\n};\n\nconst hasRwd = (permissions: TaskPermission | TaskPermission[], rwd: string): boolean => {\n if (!Array.isArray(permissions)) {\n permissions = [permissions];\n }\n\n if (!rwd) {\n return true;\n }\n\n // Is there a permission that doesn't restrict RWD permissions, that means all RWD permissions are allowed.\n const permissionWithoutRwdRestrictions = permissions.some(permission => {\n return typeof permission.rwd !== \"string\";\n });\n\n if (permissionWithoutRwdRestrictions) {\n return true;\n }\n\n // If there is no permission that doesn't restrict RWD permissions, that means we need to check if the RWD.\n return permissions.some(permission => {\n return permission.rwd && permission.rwd.includes(rwd);\n });\n};\n"],"names":["checkPermissions","context","check","taskPermissions","IdentityContext","relevant","current","hasRwd","NotAuthorizedError","permissions","rwd","Array","permissionWithoutRwdRestrictions","permission"],"mappings":";;AAOO,MAAMA,mBAAmB,OAC5BC,SACAC,QAA0B,CAAC,CAAC;IAE5B,MAAMC,kBAAkB,MAAMF,QAAQ,SAAS,CAC1C,OAAO,CAACG,iBACR,cAAc,CAAiB;IAEpC,MAAMC,WAAWF,gBAAgB,MAAM,CAACG,CAAAA;QACpC,IAAIJ,MAAM,GAAG,IAAI,CAACK,OAAOD,SAASJ,MAAM,GAAG,GACvC,OAAO;QAGX,OAAO;IACX;IAEA,IAAIG,AAAoB,MAApBA,SAAS,MAAM,EACf,MAAM,IAAIG;AAElB;AAEA,MAAMD,SAAS,CAACE,aAAgDC;IAC5D,IAAI,CAACC,MAAM,OAAO,CAACF,cACfA,cAAc;QAACA;KAAY;IAG/B,IAAI,CAACC,KACD,OAAO;IAIX,MAAME,mCAAmCH,YAAY,IAAI,CAACI,CAAAA,aAC/C,AAA0B,YAA1B,OAAOA,WAAW,GAAG;IAGhC,IAAID,kCACA,OAAO;IAIX,OAAOH,YAAY,IAAI,CAACI,CAAAA,aACbA,WAAW,GAAG,IAAIA,WAAW,GAAG,CAAC,QAAQ,CAACH;AAEzD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ErrorResponse, ListErrorResponse, ListResponse, Response } from "@webiny/api-graphql";
|
|
2
|
+
import type { CmsEntryMeta } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
export declare const emptyResolver: () => {};
|
|
4
|
+
interface ResolveCallable<T = any> {
|
|
5
|
+
(): Promise<T>;
|
|
6
|
+
}
|
|
7
|
+
export declare const resolve: <T = any>(fn: ResolveCallable<T>) => Promise<ErrorResponse | Response<Awaited<T>>>;
|
|
8
|
+
export declare const resolveList: (fn: ResolveCallable) => Promise<ListErrorResponse | ListResponse<any, CmsEntryMeta>>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ErrorResponse, ListErrorResponse, ListResponse, Response } from "@webiny/api-graphql";
|
|
2
|
+
const emptyResolver = ()=>({});
|
|
3
|
+
const resolve = async (fn)=>{
|
|
4
|
+
try {
|
|
5
|
+
return new Response(await fn());
|
|
6
|
+
} catch (ex) {
|
|
7
|
+
return new ErrorResponse(ex);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const resolveList = async (fn)=>{
|
|
11
|
+
try {
|
|
12
|
+
const result = await fn();
|
|
13
|
+
return new ListResponse(result.items, result.meta);
|
|
14
|
+
} catch (ex) {
|
|
15
|
+
return new ListErrorResponse(ex);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
export { emptyResolver, resolve, resolveList };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/graphql/utils.js","sources":["../../../src/api/graphql/utils.ts"],"sourcesContent":["import { ErrorResponse, ListErrorResponse, ListResponse, Response } from \"@webiny/api-graphql\";\nimport type { CmsEntryMeta } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport const emptyResolver = () => ({});\n\ninterface ResolveCallable<T = any> {\n (): Promise<T>;\n}\n\nexport const resolve = async <T = any>(fn: ResolveCallable<T>) => {\n try {\n return new Response(await fn());\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\ninterface IListResult {\n items: any[];\n meta: CmsEntryMeta;\n}\n\nexport const resolveList = async (fn: ResolveCallable) => {\n try {\n const result = (await fn()) as IListResult;\n return new ListResponse(result.items, result.meta);\n } catch (ex) {\n return new ListErrorResponse(ex);\n }\n};\n"],"names":["emptyResolver","resolve","fn","Response","ex","ErrorResponse","resolveList","result","ListResponse","ListErrorResponse"],"mappings":";AAGO,MAAMA,gBAAgB,IAAO,EAAC;AAM9B,MAAMC,UAAU,OAAgBC;IACnC,IAAI;QACA,OAAO,IAAIC,SAAS,MAAMD;IAC9B,EAAE,OAAOE,IAAI;QACT,OAAO,IAAIC,cAAcD;IAC7B;AACJ;AAOO,MAAME,cAAc,OAAOJ;IAC9B,IAAI;QACA,MAAMK,SAAU,MAAML;QACtB,OAAO,IAAIM,aAAaD,OAAO,KAAK,EAAEA,OAAO,IAAI;IACrD,EAAE,OAAOH,IAAI;QACT,OAAO,IAAIK,kBAAkBL;IACjC;AACJ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface IIncomingEvent<TEvent> {
|
|
2
|
+
name: string;
|
|
3
|
+
payload: TEvent;
|
|
4
|
+
}
|
|
5
|
+
export interface ITaskEventInput {
|
|
6
|
+
tenant: string;
|
|
7
|
+
webinyTaskId: string;
|
|
8
|
+
webinyTaskDefinitionId: string;
|
|
9
|
+
delay?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ITaskEvent {
|
|
12
|
+
tenant: string;
|
|
13
|
+
endpoint: string;
|
|
14
|
+
webinyTaskId: string;
|
|
15
|
+
webinyTaskDefinitionId: string;
|
|
16
|
+
executionName: string;
|
|
17
|
+
stateMachineId: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ITaskRawEvent extends ITaskEvent {
|
|
20
|
+
delay?: number;
|
|
21
|
+
}
|
|
File without changes
|
package/api/index.d.ts
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type { Timer } from "./abstractions/Timer.js";
|
|
2
|
+
export { TaskService } from "./domain/TaskService.js";
|
|
3
|
+
export * from "./response/index.js";
|
|
4
|
+
export * from "./types.js";
|
|
5
|
+
export { BackgroundTasksFeature } from "./BackgroundTasksFeature.js";
|
|
6
|
+
export { BackgroundTasksGraphQLSchema } from "./graphql/BackgroundTasksGraphQLSchema.js";
|
|
7
|
+
export { TriggerTaskUseCase } from "./features/TriggerTask/abstractions.js";
|
|
8
|
+
export { AbortTaskUseCase } from "./features/AbortTask/abstractions.js";
|
|
9
|
+
export { GetTaskUseCase } from "./features/GetTask/abstractions.js";
|
|
10
|
+
export { ListTasksUseCase } from "./features/ListTasks/abstractions.js";
|
|
11
|
+
export { CreateTaskUseCase } from "./features/CreateTask/abstractions.js";
|
|
12
|
+
export { UpdateTaskUseCase } from "./features/UpdateTask/abstractions.js";
|
|
13
|
+
export { DeleteTaskUseCase } from "./features/DeleteTask/abstractions.js";
|
|
14
|
+
export { CreateTaskLogUseCase } from "./features/CreateTaskLog/abstractions.js";
|
|
15
|
+
export { UpdateTaskLogUseCase } from "./features/UpdateTaskLog/abstractions.js";
|
|
16
|
+
export { DeleteTaskLogUseCase } from "./features/DeleteTaskLog/abstractions.js";
|
|
17
|
+
export { GetLatestTaskLogUseCase } from "./features/GetLatestTaskLog/abstractions.js";
|
|
18
|
+
export { ListTaskLogsUseCase } from "./features/ListTaskLogs/abstractions.js";
|
|
19
|
+
export { GetRunnableTaskDefinitionUseCase } from "./features/GetRunnableTaskDefinition/abstractions.js";
|
|
20
|
+
export { TaskNotFoundError } from "./domain/errors.js";
|
|
21
|
+
export { CleanupTaskSubtreeUseCase } from "./features/CleanupTaskSubtree/abstractions.js";
|