@webiny/background-tasks 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2
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 +16 -3
- package/admin/BackgroundTaskRoutes.js.map +1 -1
- 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/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js +2 -2
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js.map +1 -1
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js +1 -1
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -1
- 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.js +2 -1
- package/api/crud/TaskLogPrivateModel.js.map +1 -1
- package/api/crud/TaskPrivateModel.js +2 -1
- package/api/crud/TaskPrivateModel.js.map +1 -1
- package/api/decorators/{SelfCleaningTaskDecorator.d.ts → SelfCleaningTaskHandlerDecorator.d.ts} +21 -18
- 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/TaskService.d.ts +12 -0
- package/api/domain/TaskService.js +5 -0
- package/api/domain/TaskService.js.map +1 -0
- package/api/domain/errors.d.ts +4 -0
- package/api/domain/errors.js +10 -2
- package/api/domain/errors.js.map +1 -1
- 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/features/AbortTask/AbortTaskUseCase.d.ts +2 -3
- package/api/features/AbortTask/AbortTaskUseCase.js +3 -3
- package/api/features/AbortTask/AbortTaskUseCase.js.map +1 -1
- package/api/features/AbortTask/feature.d.ts +1 -2
- package/api/features/AbortTask/feature.js +3 -2
- package/api/features/AbortTask/feature.js.map +1 -1
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.d.ts +25 -5
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +111 -5
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -1
- 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 +1 -1
- package/api/features/CleanupTaskSubtree/index.js +1 -1
- 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/{GetTaskDefinition → CreateTask}/feature.d.ts +1 -1
- 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.js +7 -4
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js.map +1 -1
- 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/{GetTaskDefinition → GetRunnableTaskDefinition}/abstractions.d.ts +6 -6
- 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 +9 -5
- package/api/features/GetTask/GetTaskUseCase.js +12 -4
- package/api/features/GetTask/GetTaskUseCase.js.map +1 -1
- package/api/features/GetTask/abstractions.d.ts +9 -2
- package/api/features/GetTask/abstractions.js.map +1 -1
- package/api/features/GetTask/feature.d.ts +1 -2
- package/api/features/GetTask/feature.js +3 -4
- package/api/features/GetTask/feature.js.map +1 -1
- 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 +9 -5
- package/api/features/ListTasks/ListTasksUseCase.js +12 -4
- package/api/features/ListTasks/ListTasksUseCase.js.map +1 -1
- package/api/features/ListTasks/abstractions.d.ts +9 -3
- package/api/features/ListTasks/abstractions.js.map +1 -1
- package/api/features/ListTasks/feature.d.ts +1 -2
- package/api/features/ListTasks/feature.js +3 -4
- package/api/features/ListTasks/feature.js.map +1 -1
- 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/TaskExecutionContext/TaskExecutionContext.d.ts +3 -3
- package/api/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -1
- package/api/features/TaskExecutionContext/abstractions.d.ts +3 -3
- package/api/features/TaskExecutionContext/abstractions.js.map +1 -1
- 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 +2 -3
- package/api/features/TriggerTask/TriggerTaskUseCase.js +3 -3
- package/api/features/TriggerTask/TriggerTaskUseCase.js.map +1 -1
- package/api/features/TriggerTask/feature.d.ts +1 -2
- package/api/features/TriggerTask/feature.js +3 -2
- package/api/features/TriggerTask/feature.js.map +1 -1
- 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.js +6 -3
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -1
- 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/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.js +2 -1
- package/api/graphql/checkPermissions.js.map +1 -1
- package/api/graphql/utils.d.ts +1 -1
- package/api/graphql/utils.js +1 -1
- package/api/graphql/utils.js.map +1 -1
- package/api/handler/types.d.ts +0 -2
- package/api/index.d.ts +19 -3
- package/api/index.js +18 -3
- package/api/response/DatabaseResponse.js +1 -1
- package/api/response/DatabaseResponse.js.map +1 -1
- package/api/runner/TaskControl.d.ts +35 -1
- package/api/runner/TaskControl.js +52 -39
- package/api/runner/TaskControl.js.map +1 -1
- package/api/runner/TaskManager.d.ts +12 -1
- package/api/runner/TaskManager.js +8 -6
- package/api/runner/TaskManager.js.map +1 -1
- package/api/runner/TaskManagerStore.d.ts +19 -2
- package/api/runner/TaskManagerStore.js +23 -5
- package/api/runner/TaskManagerStore.js.map +1 -1
- package/api/runner/TaskRunner.d.ts +3 -3
- package/api/runner/TaskRunner.js +35 -4
- package/api/runner/TaskRunner.js.map +1 -1
- package/api/runner/abstractions/TaskRunner.d.ts +2 -2
- package/api/tasks/testingRunTask.d.ts +10 -2
- package/api/tasks/testingRunTask.js +10 -3
- package/api/tasks/testingRunTask.js.map +1 -1
- package/api/types.d.ts +1 -48
- package/api/types.js.map +1 -1
- package/package.json +25 -23
- 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
- package/api/context.d.ts +0 -2
- package/api/context.js +0 -66
- package/api/context.js.map +0 -1
- package/api/crud/cleanupTaskSubtree.d.ts +0 -8
- package/api/crud/cleanupTaskSubtree.js +0 -62
- package/api/crud/cleanupTaskSubtree.js.map +0 -1
- package/api/crud/crud.tasks.d.ts +0 -2
- package/api/crud/crud.tasks.js +0 -318
- package/api/crud/crud.tasks.js.map +0 -1
- package/api/crud/definition.tasks.d.ts +0 -2
- package/api/crud/definition.tasks.js +0 -17
- package/api/crud/definition.tasks.js.map +0 -1
- package/api/crud/service.tasks.d.ts +0 -2
- package/api/crud/service.tasks.js +0 -130
- package/api/crud/service.tasks.js.map +0 -1
- package/api/decorators/RunnableTaskDecorator.d.ts +0 -32
- package/api/decorators/RunnableTaskDecorator.js +0 -69
- package/api/decorators/RunnableTaskDecorator.js.map +0 -1
- package/api/decorators/SelfCleaningTaskDecorator.js +0 -84
- package/api/decorators/SelfCleaningTaskDecorator.js.map +0 -1
- package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.d.ts +0 -12
- package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +0 -27
- package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +0 -1
- package/api/features/GetTaskDefinition/abstractions.js +0 -5
- package/api/features/GetTaskDefinition/abstractions.js.map +0 -1
- package/api/features/GetTaskDefinition/feature.js +0 -11
- package/api/features/GetTaskDefinition/feature.js.map +0 -1
- package/api/features/GetTaskDefinition/index.d.ts +0 -2
- package/api/features/GetTaskDefinition/index.js +0 -2
- package/api/graphql/BackgroundTaskSettingsSchema.d.ts +0 -2
- package/api/graphql/BackgroundTaskSettingsSchema.js +0 -84
- package/api/graphql/BackgroundTaskSettingsSchema.js.map +0 -1
- package/api/graphql/index.d.ts +0 -2
- package/api/graphql/index.js +0 -301
- package/api/graphql/index.js.map +0 -1
- package/api/handler/index.d.ts +0 -6
- package/api/handler/index.js +0 -55
- package/api/handler/index.js.map +0 -1
- package/api/handler/register.d.ts +0 -1
- package/api/handler/register.js +0 -15
- package/api/handler/register.js.map +0 -1
- package/api/plugins/TaskServicePlugin.d.ts +0 -19
- package/api/plugins/TaskServicePlugin.js +0 -13
- package/api/plugins/TaskServicePlugin.js.map +0 -1
- package/api/plugins/index.d.ts +0 -1
- package/api/plugins/index.js +0 -1
- package/api/service/EventBridgeEventTransportPlugin.d.ts +0 -16
- package/api/service/EventBridgeEventTransportPlugin.js +0 -52
- package/api/service/EventBridgeEventTransportPlugin.js.map +0 -1
- package/api/service/StepFunctionServicePlugin.d.ts +0 -25
- package/api/service/StepFunctionServicePlugin.js +0 -77
- package/api/service/StepFunctionServicePlugin.js.map +0 -1
- package/api/service/createService.d.ts +0 -6
- package/api/service/createService.js +0 -16
- package/api/service/createService.js.map +0 -1
- package/api/service/index.d.ts +0 -4
- package/api/service/index.js +0 -12
- package/api/service/index.js.map +0 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import camelCase from "lodash/camelCase.js";
|
|
2
|
+
import error from "@webiny/error";
|
|
3
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
4
|
+
import { normalizeSelfCleanup } from "../utils/normalizeSelfCleanup.js";
|
|
5
|
+
const DEFAULT_MAX_ITERATIONS = 50;
|
|
6
|
+
class TaskDefinitionDefaultsDecoratorImpl {
|
|
7
|
+
constructor(decoratee){
|
|
8
|
+
this.decoratee = decoratee;
|
|
9
|
+
this.validate();
|
|
10
|
+
this.cleansUp = normalizeSelfCleanup(decoratee.selfCleanup).size > 0;
|
|
11
|
+
}
|
|
12
|
+
get id() {
|
|
13
|
+
return this.decoratee.id;
|
|
14
|
+
}
|
|
15
|
+
get title() {
|
|
16
|
+
return this.decoratee.title;
|
|
17
|
+
}
|
|
18
|
+
get description() {
|
|
19
|
+
return this.decoratee.description;
|
|
20
|
+
}
|
|
21
|
+
get handler() {
|
|
22
|
+
return this.decoratee.handler;
|
|
23
|
+
}
|
|
24
|
+
get isPrivate() {
|
|
25
|
+
return this.decoratee.isPrivate || false;
|
|
26
|
+
}
|
|
27
|
+
get databaseLogs() {
|
|
28
|
+
if (this.cleansUp) return false;
|
|
29
|
+
return this.decoratee.databaseLogs || false;
|
|
30
|
+
}
|
|
31
|
+
get maxIterations() {
|
|
32
|
+
return this.decoratee.maxIterations || DEFAULT_MAX_ITERATIONS;
|
|
33
|
+
}
|
|
34
|
+
get selfCleanup() {
|
|
35
|
+
return this.decoratee.selfCleanup;
|
|
36
|
+
}
|
|
37
|
+
validate() {
|
|
38
|
+
if (camelCase(this.decoratee.id) !== this.decoratee.id) throw new error(`Task ID "${this.decoratee.id}" is invalid. It must be in camelCase format, for example: "myCustomTask".`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const TaskDefinitionDefaultsDecorator = TaskDefinition.createDecorator({
|
|
42
|
+
decorator: TaskDefinitionDefaultsDecoratorImpl,
|
|
43
|
+
dependencies: []
|
|
44
|
+
});
|
|
45
|
+
export { TaskDefinitionDefaultsDecorator, TaskDefinitionDefaultsDecoratorImpl };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=TaskDefinitionDefaultsDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/decorators/TaskDefinitionDefaultsDecorator.js","sources":["../../../src/api/decorators/TaskDefinitionDefaultsDecorator.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase.js\";\nimport WebinyError from \"@webiny/error\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { normalizeSelfCleanup } from \"~/api/utils/normalizeSelfCleanup.js\";\n\nconst DEFAULT_MAX_ITERATIONS = 50;\n\n/**\n * Fills in the defaults a definition is allowed to leave out, applies the one rule that overrides\n * what a definition asked for (self-cleanup forces `databaseLogs` off), and rejects an id that is\n * not camelCase.\n *\n * Everything here is metadata. A definition carries no behaviour, so there is nothing to forward:\n * `GetRunnableTaskDefinitionUseCase` takes `run` and the hooks from the handler that `handler` names, after\n * this decorator has run.\n */\nexport class TaskDefinitionDefaultsDecoratorImpl implements TaskDefinition.Interface {\n private readonly cleansUp: boolean;\n\n constructor(private decoratee: TaskDefinition.Interface) {\n this.validate();\n this.cleansUp = normalizeSelfCleanup(decoratee.selfCleanup).size > 0;\n }\n\n get id() {\n return this.decoratee.id;\n }\n\n get title() {\n return this.decoratee.title;\n }\n\n get description() {\n return this.decoratee.description;\n }\n\n get handler() {\n return this.decoratee.handler;\n }\n\n // The three defaults.\n get isPrivate() {\n return this.decoratee.isPrivate || false;\n }\n\n get databaseLogs() {\n // A task that deletes itself on the way out has nowhere to keep logs, so asking for any\n // cleanup event overrides the task's own choice.\n if (this.cleansUp) {\n return false;\n }\n return this.decoratee.databaseLogs || false;\n }\n\n get maxIterations() {\n return this.decoratee.maxIterations || DEFAULT_MAX_ITERATIONS;\n }\n\n get selfCleanup() {\n return this.decoratee.selfCleanup;\n }\n\n private validate(): void {\n if (camelCase(this.decoratee.id) !== this.decoratee.id) {\n throw new WebinyError(\n `Task ID \"${this.decoratee.id}\" is invalid. It must be in camelCase format, for example: \"myCustomTask\".`\n );\n }\n }\n}\n\nexport const TaskDefinitionDefaultsDecorator = TaskDefinition.createDecorator({\n decorator: TaskDefinitionDefaultsDecoratorImpl,\n dependencies: []\n});\n"],"names":["DEFAULT_MAX_ITERATIONS","TaskDefinitionDefaultsDecoratorImpl","decoratee","normalizeSelfCleanup","camelCase","WebinyError","TaskDefinitionDefaultsDecorator","TaskDefinition"],"mappings":";;;;AAKA,MAAMA,yBAAyB;AAWxB,MAAMC;IAGT,YAAoBC,SAAmC,CAAE;aAArCA,SAAS,GAATA;QAChB,IAAI,CAAC,QAAQ;QACb,IAAI,CAAC,QAAQ,GAAGC,qBAAqBD,UAAU,WAAW,EAAE,IAAI,GAAG;IACvE;IAEA,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAC5B;IAEA,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK;IAC/B;IAEA,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW;IACrC;IAEA,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;IACjC;IAGA,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI;IACvC;IAEA,IAAI,eAAe;QAGf,IAAI,IAAI,CAAC,QAAQ,EACb,OAAO;QAEX,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI;IAC1C;IAEA,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,IAAIF;IAC3C;IAEA,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW;IACrC;IAEQ,WAAiB;QACrB,IAAII,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,EAClD,MAAM,IAAIC,MACN,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,0EAA0E,CAAC;IAGrH;AACJ;AAEO,MAAMC,kCAAkCC,eAAe,eAAe,CAAC;IAC1E,WAAWN;IACX,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ITask } from "../../api/types.js";
|
|
2
|
+
export type ITaskServiceTask = Pick<ITask, "id" | "definitionId">;
|
|
3
|
+
export interface ITaskService {
|
|
4
|
+
send(task: ITaskServiceTask, delay: number): Promise<unknown | null>;
|
|
5
|
+
fetch(task: ITask): Promise<unknown | null>;
|
|
6
|
+
}
|
|
7
|
+
export declare const TaskService: import("@webiny/di").Abstraction<ITaskService>;
|
|
8
|
+
export declare namespace TaskService {
|
|
9
|
+
type Interface = ITaskService;
|
|
10
|
+
type SendTaskParams = ITaskServiceTask;
|
|
11
|
+
type Task = ITask;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/domain/TaskService.js","sources":["../../../src/api/domain/TaskService.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ITask } from \"~/api/types.js\";\n\nexport type ITaskServiceTask = Pick<ITask, \"id\" | \"definitionId\">;\n\nexport interface ITaskService {\n send(task: ITaskServiceTask, delay: number): Promise<unknown | null>;\n fetch(task: ITask): Promise<unknown | null>;\n}\n\nexport const TaskService = createAbstraction<ITaskService>(\"BackgroundTasks/TaskService\");\n\nexport namespace TaskService {\n export type Interface = ITaskService;\n export type SendTaskParams = ITaskServiceTask;\n export type Task = ITask;\n}\n"],"names":["TaskService","createAbstraction"],"mappings":";AAUO,MAAMA,cAAcC,kBAAgC"}
|
package/api/domain/errors.d.ts
CHANGED
|
@@ -54,4 +54,8 @@ export declare class BackgroundTaskNotAuthorizedError extends BaseError {
|
|
|
54
54
|
readonly code: "BackgroundTasks/NotAuthorized";
|
|
55
55
|
constructor();
|
|
56
56
|
}
|
|
57
|
+
export declare class TaskInputValidationError extends BaseError<Record<string, any>> {
|
|
58
|
+
readonly code: "VALIDATION_FAILED_INVALID_FIELDS";
|
|
59
|
+
constructor(error: ZodError);
|
|
60
|
+
}
|
|
57
61
|
export {};
|
package/api/domain/errors.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseError } from "@webiny/feature/api";
|
|
2
|
-
import { parseZodError } from "@webiny/utils";
|
|
2
|
+
import { createZodError, parseZodError } from "@webiny/utils";
|
|
3
3
|
class TaskDefinitionNotFoundError extends BaseError {
|
|
4
4
|
constructor(id){
|
|
5
5
|
super({
|
|
@@ -96,6 +96,14 @@ class BackgroundTaskNotAuthorizedError extends BaseError {
|
|
|
96
96
|
}), this.code = "BackgroundTasks/NotAuthorized";
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
-
|
|
99
|
+
class TaskInputValidationError extends BaseError {
|
|
100
|
+
constructor(error){
|
|
101
|
+
super({
|
|
102
|
+
message: "Validation failed.",
|
|
103
|
+
data: createZodError(error).data ?? {}
|
|
104
|
+
}), this.code = "VALIDATION_FAILED_INVALID_FIELDS";
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export { BackgroundTaskModelNotFoundError, BackgroundTaskNotAuthorizedError, BackgroundTaskPersistenceError, BackgroundTaskValidationError, TaskAbortError, TaskDefinitionNotFoundError, TaskInputValidationError, TaskLogNotFoundError, TaskNotFoundError, TaskServiceInfoError };
|
|
100
108
|
|
|
101
109
|
//# sourceMappingURL=errors.js.map
|
package/api/domain/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/domain/errors.js","sources":["../../../src/api/domain/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { ZodError } from \"zod\";\nimport { parseZodError } from \"@webiny/utils\";\nimport type { ValidationIssue } from \"@webiny/utils\";\n\nexport class TaskDefinitionNotFoundError extends BaseError<{ id: string }> {\n override readonly code = \"BackgroundTasks/TaskDefinition/NotFoundError\" as const;\n\n constructor(id: string) {\n super({\n message: \"Task definition not found.\",\n data: {\n id\n }\n });\n }\n}\n\nexport class TaskNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/Task/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"Task not found.\"\n });\n }\n}\n\nexport class TaskAbortError extends BaseError<{ id: string; status: string }> {\n override readonly code = \"BackgroundTasks/Task/Abort\" as const;\n\n constructor(data: { id: string; status: string }) {\n super({\n message: \"Cannot abort a task that is not pending or running!\",\n data\n });\n }\n}\n\nexport class TaskLogNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/Log/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"Task log not found.\"\n });\n }\n}\n\nexport class TaskServiceInfoError extends BaseError {\n override readonly code = \"BackgroundTasks/Service/InfoUnavailable\" as const;\n\n constructor() {\n super({\n message: \"Unable to fetch service info.\"\n });\n }\n}\n\ninterface BackgroundTaskValidationErrorData {\n issues: ValidationIssue[];\n}\n\nexport class BackgroundTaskValidationError extends BaseError<BackgroundTaskValidationErrorData> {\n override readonly code = \"BackgroundTasks/ValidationError\" as const;\n\n constructor(error: string | ZodError) {\n if (typeof error === \"string\") {\n super({ message: error, data: { issues: [] } });\n } else {\n const issues = parseZodError(error);\n super({ message: \"Validation failed.\", data: { issues } });\n }\n }\n}\n\ninterface BackgroundTaskPersistenceErrorData {\n originalMessage: string;\n originalCode?: string;\n originalData?: unknown;\n}\n\nexport class BackgroundTaskPersistenceError extends BaseError<BackgroundTaskPersistenceErrorData> {\n override readonly code = \"BackgroundTasks/PersistenceError\" as const;\n\n constructor(error: Error) {\n super({ message: error.message, data: { originalMessage: error.message } });\n }\n\n static from(error: unknown): BackgroundTaskPersistenceError {\n if (error instanceof Error) {\n const instance = new BackgroundTaskPersistenceError(error);\n const data: BackgroundTaskPersistenceErrorData = {\n originalMessage: error.message,\n originalCode: (error as any).code,\n originalData: (error as any).data\n };\n (instance as any).data = data;\n instance.stack = error.stack;\n return instance;\n }\n\n return new BackgroundTaskPersistenceError(new Error(String(error)));\n }\n}\n\nexport class BackgroundTaskModelNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/ModelNotFound\" as const;\n\n constructor(modelId: string) {\n super({ message: `Background task model \"${modelId}\" was not found.` });\n }\n}\n\nexport class BackgroundTaskNotAuthorizedError extends BaseError {\n override readonly code = \"BackgroundTasks/NotAuthorized\" as const;\n\n constructor() {\n super({ message: \"Not authorized!\" });\n }\n}\n"],"names":["TaskDefinitionNotFoundError","BaseError","id","TaskNotFoundError","TaskAbortError","data","TaskLogNotFoundError","TaskServiceInfoError","BackgroundTaskValidationError","error","issues","parseZodError","BackgroundTaskPersistenceError","Error","instance","String","BackgroundTaskModelNotFoundError","modelId","BackgroundTaskNotAuthorizedError"],"mappings":";;AAKO,MAAMA,oCAAoCC;IAG7C,YAAYC,EAAU,CAAE;QACpB,KAAK,CAAC;YACF,SAAS;YACT,MAAM;gBACFA;YACJ;QACJ,SARc,IAAI,GAAG;IASzB;AACJ;AAEO,MAAMC,0BAA0BF;IAGnC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMG,uBAAuBH;IAGhC,YAAYI,IAAoC,CAAE;QAC9C,KAAK,CAAC;YACF,SAAS;YACTA;QACJ,SANc,IAAI,GAAG;IAOzB;AACJ;AAEO,MAAMC,6BAA6BL;IAGtC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMM,6BAA6BN;IAGtC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAMO,MAAMO,sCAAsCP;IAG/C,YAAYQ,KAAwB,CAAE;QAClC,IAAI,AAAiB,YAAjB,OAAOA,OACP,KAAK,CAAC;YAAE,SAASA;YAAO,MAAM;gBAAE,QAAQ,EAAE;YAAC;QAAE,SAJnC,IAAI,GAAG;aAKd;YACH,MAAMC,SAASC,cAAcF;YAC7B,KAAK,CAAC;gBAAE,SAAS;gBAAsB,MAAM;oBAAEC;gBAAO;YAAE,SAP9C,IAAI,GAAG;QAQrB;IACJ;AACJ;AAQO,MAAME,uCAAuCX;IAGhD,YAAYQ,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;YAAE,MAAM;gBAAE,iBAAiBA,MAAM,OAAO;YAAC;QAAE,SAH3D,IAAI,GAAG;IAIzB;IAEA,OAAO,KAAKA,KAAc,EAAkC;QACxD,IAAIA,iBAAiBI,OAAO;YACxB,MAAMC,WAAW,IAAIF,+BAA+BH;YACpD,MAAMJ,OAA2C;gBAC7C,iBAAiBI,MAAM,OAAO;gBAC9B,cAAeA,MAAc,IAAI;gBACjC,cAAeA,MAAc,IAAI;YACrC;YACCK,SAAiB,IAAI,GAAGT;YACzBS,SAAS,KAAK,GAAGL,MAAM,KAAK;YAC5B,OAAOK;QACX;QAEA,OAAO,IAAIF,+BAA+B,IAAIC,MAAME,OAAON;IAC/D;AACJ;AAEO,MAAMO,yCAAyCf;IAGlD,YAAYgB,OAAe,CAAE;QACzB,KAAK,CAAC;YAAE,SAAS,CAAC,uBAAuB,EAAEA,QAAQ,gBAAgB,CAAC;QAAC,SAHvD,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAMC,yCAAyCjB;IAGlD,aAAc;QACV,KAAK,CAAC;YAAE,SAAS;QAAkB,SAHrB,IAAI,GAAG;IAIzB;AACJ"}
|
|
1
|
+
{"version":3,"file":"api/domain/errors.js","sources":["../../../src/api/domain/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { ZodError } from \"zod\";\nimport { createZodError, parseZodError } from \"@webiny/utils\";\nimport type { ValidationIssue } from \"@webiny/utils\";\n\nexport class TaskDefinitionNotFoundError extends BaseError<{ id: string }> {\n override readonly code = \"BackgroundTasks/TaskDefinition/NotFoundError\" as const;\n\n constructor(id: string) {\n super({\n message: \"Task definition not found.\",\n data: {\n id\n }\n });\n }\n}\n\nexport class TaskNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/Task/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"Task not found.\"\n });\n }\n}\n\nexport class TaskAbortError extends BaseError<{ id: string; status: string }> {\n override readonly code = \"BackgroundTasks/Task/Abort\" as const;\n\n constructor(data: { id: string; status: string }) {\n super({\n message: \"Cannot abort a task that is not pending or running!\",\n data\n });\n }\n}\n\nexport class TaskLogNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/Log/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"Task log not found.\"\n });\n }\n}\n\nexport class TaskServiceInfoError extends BaseError {\n override readonly code = \"BackgroundTasks/Service/InfoUnavailable\" as const;\n\n constructor() {\n super({\n message: \"Unable to fetch service info.\"\n });\n }\n}\n\ninterface BackgroundTaskValidationErrorData {\n issues: ValidationIssue[];\n}\n\nexport class BackgroundTaskValidationError extends BaseError<BackgroundTaskValidationErrorData> {\n override readonly code = \"BackgroundTasks/ValidationError\" as const;\n\n constructor(error: string | ZodError) {\n if (typeof error === \"string\") {\n super({ message: error, data: { issues: [] } });\n } else {\n const issues = parseZodError(error);\n super({ message: \"Validation failed.\", data: { issues } });\n }\n }\n}\n\ninterface BackgroundTaskPersistenceErrorData {\n originalMessage: string;\n originalCode?: string;\n originalData?: unknown;\n}\n\nexport class BackgroundTaskPersistenceError extends BaseError<BackgroundTaskPersistenceErrorData> {\n override readonly code = \"BackgroundTasks/PersistenceError\" as const;\n\n constructor(error: Error) {\n super({ message: error.message, data: { originalMessage: error.message } });\n }\n\n static from(error: unknown): BackgroundTaskPersistenceError {\n if (error instanceof Error) {\n const instance = new BackgroundTaskPersistenceError(error);\n const data: BackgroundTaskPersistenceErrorData = {\n originalMessage: error.message,\n originalCode: (error as any).code,\n originalData: (error as any).data\n };\n (instance as any).data = data;\n instance.stack = error.stack;\n return instance;\n }\n\n return new BackgroundTaskPersistenceError(new Error(String(error)));\n }\n}\n\nexport class BackgroundTaskModelNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/ModelNotFound\" as const;\n\n constructor(modelId: string) {\n super({ message: `Background task model \"${modelId}\" was not found.` });\n }\n}\n\nexport class BackgroundTaskNotAuthorizedError extends BaseError {\n override readonly code = \"BackgroundTasks/NotAuthorized\" as const;\n\n constructor() {\n super({ message: \"Not authorized!\" });\n }\n}\n\n/*\n * Keeps the code, message and `invalidFields` data that `createZodError` produced before task input\n * validation moved into a use case, so clients that read them see no difference.\n */\nexport class TaskInputValidationError extends BaseError<Record<string, any>> {\n override readonly code = \"VALIDATION_FAILED_INVALID_FIELDS\" as const;\n\n constructor(error: ZodError) {\n super({\n message: \"Validation failed.\",\n data: createZodError(error).data ?? {}\n });\n }\n}\n"],"names":["TaskDefinitionNotFoundError","BaseError","id","TaskNotFoundError","TaskAbortError","data","TaskLogNotFoundError","TaskServiceInfoError","BackgroundTaskValidationError","error","issues","parseZodError","BackgroundTaskPersistenceError","Error","instance","String","BackgroundTaskModelNotFoundError","modelId","BackgroundTaskNotAuthorizedError","TaskInputValidationError","createZodError"],"mappings":";;AAKO,MAAMA,oCAAoCC;IAG7C,YAAYC,EAAU,CAAE;QACpB,KAAK,CAAC;YACF,SAAS;YACT,MAAM;gBACFA;YACJ;QACJ,SARc,IAAI,GAAG;IASzB;AACJ;AAEO,MAAMC,0BAA0BF;IAGnC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMG,uBAAuBH;IAGhC,YAAYI,IAAoC,CAAE;QAC9C,KAAK,CAAC;YACF,SAAS;YACTA;QACJ,SANc,IAAI,GAAG;IAOzB;AACJ;AAEO,MAAMC,6BAA6BL;IAGtC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMM,6BAA6BN;IAGtC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAMO,MAAMO,sCAAsCP;IAG/C,YAAYQ,KAAwB,CAAE;QAClC,IAAI,AAAiB,YAAjB,OAAOA,OACP,KAAK,CAAC;YAAE,SAASA;YAAO,MAAM;gBAAE,QAAQ,EAAE;YAAC;QAAE,SAJnC,IAAI,GAAG;aAKd;YACH,MAAMC,SAASC,cAAcF;YAC7B,KAAK,CAAC;gBAAE,SAAS;gBAAsB,MAAM;oBAAEC;gBAAO;YAAE,SAP9C,IAAI,GAAG;QAQrB;IACJ;AACJ;AAQO,MAAME,uCAAuCX;IAGhD,YAAYQ,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;YAAE,MAAM;gBAAE,iBAAiBA,MAAM,OAAO;YAAC;QAAE,SAH3D,IAAI,GAAG;IAIzB;IAEA,OAAO,KAAKA,KAAc,EAAkC;QACxD,IAAIA,iBAAiBI,OAAO;YACxB,MAAMC,WAAW,IAAIF,+BAA+BH;YACpD,MAAMJ,OAA2C;gBAC7C,iBAAiBI,MAAM,OAAO;gBAC9B,cAAeA,MAAc,IAAI;gBACjC,cAAeA,MAAc,IAAI;YACrC;YACCK,SAAiB,IAAI,GAAGT;YACzBS,SAAS,KAAK,GAAGL,MAAM,KAAK;YAC5B,OAAOK;QACX;QAEA,OAAO,IAAIF,+BAA+B,IAAIC,MAAME,OAAON;IAC/D;AACJ;AAEO,MAAMO,yCAAyCf;IAGlD,YAAYgB,OAAe,CAAE;QACzB,KAAK,CAAC;YAAE,SAAS,CAAC,uBAAuB,EAAEA,QAAQ,gBAAgB,CAAC;QAAC,SAHvD,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAMC,yCAAyCjB;IAGlD,aAAc;QACV,KAAK,CAAC;YAAE,SAAS;QAAkB,SAHrB,IAAI,GAAG;IAIzB;AACJ;AAMO,MAAMkB,iCAAiClB;IAG1C,YAAYQ,KAAe,CAAE;QACzB,KAAK,CAAC;YACF,SAAS;YACT,MAAMW,eAAeX,OAAO,IAAI,IAAI,CAAC;QACzC,SANc,IAAI,GAAG;IAOzB;AACJ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
3
|
+
import { TaskLogModelProvider as Abstraction } from "./abstractions.js";
|
|
4
|
+
declare class TaskLogModelProviderImpl implements Abstraction.Interface {
|
|
5
|
+
private readonly getModel;
|
|
6
|
+
constructor(getModel: GetModelUseCase.Interface);
|
|
7
|
+
get(): Promise<CmsModel>;
|
|
8
|
+
}
|
|
9
|
+
export declare const TaskLogModelProvider: typeof TaskLogModelProviderImpl & {
|
|
10
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ITaskLogModelProvider>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
2
|
+
import { TaskLogModelProvider } from "./abstractions.js";
|
|
3
|
+
import { BackgroundTaskModelNotFoundError } from "../errors.js";
|
|
4
|
+
import { WEBINY_TASK_LOG_MODEL_ID } from "../../crud/TaskLogPrivateModel.js";
|
|
5
|
+
class TaskLogModelProviderImpl {
|
|
6
|
+
constructor(getModel){
|
|
7
|
+
this.getModel = getModel;
|
|
8
|
+
}
|
|
9
|
+
async get() {
|
|
10
|
+
const result = await this.getModel.execute(WEBINY_TASK_LOG_MODEL_ID);
|
|
11
|
+
if (result.isFail()) throw new BackgroundTaskModelNotFoundError(WEBINY_TASK_LOG_MODEL_ID);
|
|
12
|
+
return result.value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const TaskLogModelProvider_TaskLogModelProvider = TaskLogModelProvider.createImplementation({
|
|
16
|
+
implementation: TaskLogModelProviderImpl,
|
|
17
|
+
dependencies: [
|
|
18
|
+
GetModelUseCase
|
|
19
|
+
]
|
|
20
|
+
});
|
|
21
|
+
export { TaskLogModelProvider_TaskLogModelProvider as TaskLogModelProvider };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=TaskLogModelProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/domain/task/TaskLogModelProvider.js","sources":["../../../../src/api/domain/task/TaskLogModelProvider.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { TaskLogModelProvider as Abstraction } from \"./abstractions.js\";\nimport { BackgroundTaskModelNotFoundError } from \"~/api/domain/errors.js\";\nimport { WEBINY_TASK_LOG_MODEL_ID } from \"~/api/crud/TaskLogPrivateModel.js\";\n\nclass TaskLogModelProviderImpl implements Abstraction.Interface {\n constructor(private readonly getModel: GetModelUseCase.Interface) {}\n\n async get(): Promise<CmsModel> {\n const result = await this.getModel.execute(WEBINY_TASK_LOG_MODEL_ID);\n if (result.isFail()) {\n throw new BackgroundTaskModelNotFoundError(WEBINY_TASK_LOG_MODEL_ID);\n }\n return result.value;\n }\n}\n\nexport const TaskLogModelProvider = Abstraction.createImplementation({\n implementation: TaskLogModelProviderImpl,\n dependencies: [GetModelUseCase]\n});\n"],"names":["TaskLogModelProviderImpl","getModel","result","WEBINY_TASK_LOG_MODEL_ID","BackgroundTaskModelNotFoundError","TaskLogModelProvider","Abstraction","GetModelUseCase"],"mappings":";;;;AAMA,MAAMA;IACF,YAA6BC,QAAmC,CAAE;aAArCA,QAAQ,GAARA;IAAsC;IAEnE,MAAM,MAAyB;QAC3B,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACC;QAC3C,IAAID,OAAO,MAAM,IACb,MAAM,IAAIE,iCAAiCD;QAE/C,OAAOD,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMG,4CAAuBC,qBAAAA,oBAAgC,CAAC;IACjE,gBAAgBN;IAChB,cAAc;QAACO;KAAgB;AACnC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
|
|
4
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
|
|
5
|
+
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
|
|
6
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
|
|
7
|
+
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
|
|
8
|
+
import { CmsWhereMapper } from "@webiny/api-headless-cms";
|
|
9
|
+
import { TaskLogModelProvider, TaskLogsRepository as Abstraction } from "./abstractions.js";
|
|
10
|
+
import { BackgroundTaskPersistenceError, TaskLogNotFoundError } from "../../../api/domain/errors.js";
|
|
11
|
+
declare class TaskLogsRepositoryImpl implements Abstraction.Interface {
|
|
12
|
+
private readonly identityContext;
|
|
13
|
+
private readonly modelProvider;
|
|
14
|
+
private readonly getEntryById;
|
|
15
|
+
private readonly listLatestEntries;
|
|
16
|
+
private readonly createEntry;
|
|
17
|
+
private readonly updateEntry;
|
|
18
|
+
private readonly deleteEntry;
|
|
19
|
+
private readonly whereMapper;
|
|
20
|
+
constructor(identityContext: IdentityContext.Interface, modelProvider: TaskLogModelProvider.Interface, getEntryById: GetEntryByIdUseCase.Interface, listLatestEntries: ListLatestEntriesUseCase.Interface, createEntry: CreateEntryUseCase.Interface, updateEntry: UpdateEntryUseCase.Interface, deleteEntry: DeleteEntryUseCase.Interface, whereMapper: CmsWhereMapper.Interface);
|
|
21
|
+
create(task: Parameters<Abstraction.Interface["create"]>[0], data: Parameters<Abstraction.Interface["create"]>[1]): Promise<Result<never, BackgroundTaskPersistenceError> | Result<import("../../types.js").ITaskLog, never>>;
|
|
22
|
+
update(id: string, data: Parameters<Abstraction.Interface["update"]>[1]): Promise<Result<never, BackgroundTaskPersistenceError | TaskLogNotFoundError> | Result<import("../../types.js").ITaskLog, never>>;
|
|
23
|
+
delete(id: string): Promise<Result<void, never> | Result<never, BackgroundTaskPersistenceError | TaskLogNotFoundError>>;
|
|
24
|
+
get(id: string): Promise<Result<never, BackgroundTaskPersistenceError | TaskLogNotFoundError> | Result<import("../../types.js").ITaskLog, never>>;
|
|
25
|
+
getLatest(taskId: string): Promise<Result<never, BackgroundTaskPersistenceError> | Result<never, TaskLogNotFoundError> | Result<import("../../types.js").ITaskLog, never>>;
|
|
26
|
+
list(params: Parameters<Abstraction.Interface["list"]>[0]): Promise<Result<never, BackgroundTaskPersistenceError> | Result<{
|
|
27
|
+
items: import("../../types.js").ITaskLog[];
|
|
28
|
+
meta: import("@webiny/api-headless-cms/types/types.js").CmsEntryMeta;
|
|
29
|
+
}, never>>;
|
|
30
|
+
}
|
|
31
|
+
export declare const TaskLogsRepository: typeof TaskLogsRepositoryImpl & {
|
|
32
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ITaskLogsRepository>;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
|
|
4
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
|
|
5
|
+
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
|
|
6
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
|
|
7
|
+
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
|
|
8
|
+
import { CmsWhereMapper } from "@webiny/api-headless-cms";
|
|
9
|
+
import { TaskLogModelProvider, TaskLogsRepository } from "./abstractions.js";
|
|
10
|
+
import { entryToTaskLog } from "./entryToTaskLog.js";
|
|
11
|
+
import { createRevisionId } from "./createRevisionId.js";
|
|
12
|
+
import { BackgroundTaskPersistenceError, TaskLogNotFoundError } from "../errors.js";
|
|
13
|
+
const ENTRY_NOT_FOUND = "Cms/Entry/NotFound";
|
|
14
|
+
const toLogError = (error)=>{
|
|
15
|
+
if (error.code === ENTRY_NOT_FOUND) return new TaskLogNotFoundError();
|
|
16
|
+
return BackgroundTaskPersistenceError.from(error);
|
|
17
|
+
};
|
|
18
|
+
class TaskLogsRepositoryImpl {
|
|
19
|
+
constructor(identityContext, modelProvider, getEntryById, listLatestEntries, createEntry, updateEntry, deleteEntry, whereMapper){
|
|
20
|
+
this.identityContext = identityContext;
|
|
21
|
+
this.modelProvider = modelProvider;
|
|
22
|
+
this.getEntryById = getEntryById;
|
|
23
|
+
this.listLatestEntries = listLatestEntries;
|
|
24
|
+
this.createEntry = createEntry;
|
|
25
|
+
this.updateEntry = updateEntry;
|
|
26
|
+
this.deleteEntry = deleteEntry;
|
|
27
|
+
this.whereMapper = whereMapper;
|
|
28
|
+
}
|
|
29
|
+
async create(task, data) {
|
|
30
|
+
try {
|
|
31
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
32
|
+
const model = await this.modelProvider.get();
|
|
33
|
+
return this.createEntry.execute(model, {
|
|
34
|
+
values: {
|
|
35
|
+
...data,
|
|
36
|
+
task: task.id
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
if (result.isFail()) return Result.fail(BackgroundTaskPersistenceError.from(result.error));
|
|
41
|
+
return Result.ok(entryToTaskLog(result.value));
|
|
42
|
+
} catch (error) {
|
|
43
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async update(id, data) {
|
|
47
|
+
try {
|
|
48
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
49
|
+
const model = await this.modelProvider.get();
|
|
50
|
+
return this.updateEntry.execute(model, createRevisionId(id), {
|
|
51
|
+
values: data
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
if (result.isFail()) return Result.fail(toLogError(result.error));
|
|
55
|
+
return Result.ok(entryToTaskLog(result.value));
|
|
56
|
+
} catch (error) {
|
|
57
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async delete(id) {
|
|
61
|
+
try {
|
|
62
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
63
|
+
const model = await this.modelProvider.get();
|
|
64
|
+
return this.deleteEntry.execute(model, id);
|
|
65
|
+
});
|
|
66
|
+
if (result.isFail()) return Result.fail(toLogError(result.error));
|
|
67
|
+
return Result.ok();
|
|
68
|
+
} catch (error) {
|
|
69
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async get(id) {
|
|
73
|
+
try {
|
|
74
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
75
|
+
const model = await this.modelProvider.get();
|
|
76
|
+
return this.getEntryById.execute(model, id);
|
|
77
|
+
});
|
|
78
|
+
if (result.isFail()) return Result.fail(toLogError(result.error));
|
|
79
|
+
return Result.ok(entryToTaskLog(result.value));
|
|
80
|
+
} catch (error) {
|
|
81
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async getLatest(taskId) {
|
|
85
|
+
try {
|
|
86
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
87
|
+
const model = await this.modelProvider.get();
|
|
88
|
+
return this.listLatestEntries.execute(model, {
|
|
89
|
+
where: {
|
|
90
|
+
values: {
|
|
91
|
+
task: taskId
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
sort: [
|
|
95
|
+
"createdOn_DESC"
|
|
96
|
+
],
|
|
97
|
+
limit: 1
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
if (result.isFail()) return Result.fail(BackgroundTaskPersistenceError.from(result.error));
|
|
101
|
+
const [entry] = result.value.entries;
|
|
102
|
+
if (!entry) return Result.fail(new TaskLogNotFoundError());
|
|
103
|
+
return Result.ok(entryToTaskLog(entry));
|
|
104
|
+
} catch (error) {
|
|
105
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async list(params) {
|
|
109
|
+
try {
|
|
110
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
111
|
+
const model = await this.modelProvider.get();
|
|
112
|
+
return this.listLatestEntries.execute(model, {
|
|
113
|
+
...params,
|
|
114
|
+
where: this.whereMapper.map({
|
|
115
|
+
input: params.where,
|
|
116
|
+
fields: model.fields
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
if (result.isFail()) return Result.fail(BackgroundTaskPersistenceError.from(result.error));
|
|
121
|
+
const { entries, meta } = result.value;
|
|
122
|
+
return Result.ok({
|
|
123
|
+
items: entries.map((entry)=>entryToTaskLog(entry)),
|
|
124
|
+
meta
|
|
125
|
+
});
|
|
126
|
+
} catch (error) {
|
|
127
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const TaskLogsRepository_TaskLogsRepository = TaskLogsRepository.createImplementation({
|
|
132
|
+
implementation: TaskLogsRepositoryImpl,
|
|
133
|
+
dependencies: [
|
|
134
|
+
IdentityContext,
|
|
135
|
+
TaskLogModelProvider,
|
|
136
|
+
GetEntryByIdUseCase,
|
|
137
|
+
ListLatestEntriesUseCase,
|
|
138
|
+
CreateEntryUseCase,
|
|
139
|
+
UpdateEntryUseCase,
|
|
140
|
+
DeleteEntryUseCase,
|
|
141
|
+
CmsWhereMapper
|
|
142
|
+
]
|
|
143
|
+
});
|
|
144
|
+
export { TaskLogsRepository_TaskLogsRepository as TaskLogsRepository };
|
|
145
|
+
|
|
146
|
+
//# sourceMappingURL=TaskLogsRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/domain/task/TaskLogsRepository.js","sources":["../../../../src/api/domain/task/TaskLogsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport { CmsWhereMapper } from \"@webiny/api-headless-cms\";\nimport { TaskLogModelProvider, TaskLogsRepository as Abstraction } from \"./abstractions.js\";\nimport { entryToTaskLog } from \"./entryToTaskLog.js\";\nimport { createRevisionId } from \"./createRevisionId.js\";\nimport { BackgroundTaskPersistenceError, TaskLogNotFoundError } from \"~/api/domain/errors.js\";\n\nconst ENTRY_NOT_FOUND = \"Cms/Entry/NotFound\";\n\nconst toLogError = (error: {\n code?: string;\n}): TaskLogNotFoundError | BackgroundTaskPersistenceError => {\n if (error.code === ENTRY_NOT_FOUND) {\n return new TaskLogNotFoundError();\n }\n return BackgroundTaskPersistenceError.from(error);\n};\n\n/*\n * Task logs are stored as entries of a private CMS model, and like tasks, they're read and written\n * without authorization.\n */\nclass TaskLogsRepositoryImpl implements Abstraction.Interface {\n constructor(\n private readonly identityContext: IdentityContext.Interface,\n private readonly modelProvider: TaskLogModelProvider.Interface,\n private readonly getEntryById: GetEntryByIdUseCase.Interface,\n private readonly listLatestEntries: ListLatestEntriesUseCase.Interface,\n private readonly createEntry: CreateEntryUseCase.Interface,\n private readonly updateEntry: UpdateEntryUseCase.Interface,\n private readonly deleteEntry: DeleteEntryUseCase.Interface,\n private readonly whereMapper: CmsWhereMapper.Interface\n ) {}\n\n async create(\n task: Parameters<Abstraction.Interface[\"create\"]>[0],\n data: Parameters<Abstraction.Interface[\"create\"]>[1]\n ) {\n try {\n const result = await this.identityContext.withoutAuthorization(async () => {\n const model = await this.modelProvider.get();\n return this.createEntry.execute(model, {\n values: {\n ...data,\n task: task.id\n }\n });\n });\n if (result.isFail()) {\n return Result.fail(BackgroundTaskPersistenceError.from(result.error));\n }\n return Result.ok(entryToTaskLog(result.value));\n } catch (error) {\n return Result.fail(BackgroundTaskPersistenceError.from(error));\n }\n }\n\n async update(id: string, data: Parameters<Abstraction.Interface[\"update\"]>[1]) {\n try {\n const result = await this.identityContext.withoutAuthorization(async () => {\n const model = await this.modelProvider.get();\n return this.updateEntry.execute(model, createRevisionId(id), {\n values: data\n });\n });\n if (result.isFail()) {\n return Result.fail(toLogError(result.error));\n }\n return Result.ok(entryToTaskLog(result.value));\n } catch (error) {\n return Result.fail(BackgroundTaskPersistenceError.from(error));\n }\n }\n\n async delete(id: string) {\n try {\n const result = await this.identityContext.withoutAuthorization(async () => {\n const model = await this.modelProvider.get();\n return this.deleteEntry.execute(model, id);\n });\n if (result.isFail()) {\n return Result.fail(toLogError(result.error));\n }\n return Result.ok();\n } catch (error) {\n return Result.fail(BackgroundTaskPersistenceError.from(error));\n }\n }\n\n async get(id: string) {\n try {\n const result = await this.identityContext.withoutAuthorization(async () => {\n const model = await this.modelProvider.get();\n return this.getEntryById.execute(model, id);\n });\n if (result.isFail()) {\n return Result.fail(toLogError(result.error));\n }\n return Result.ok(entryToTaskLog(result.value));\n } catch (error) {\n return Result.fail(BackgroundTaskPersistenceError.from(error));\n }\n }\n\n async getLatest(taskId: string) {\n try {\n const result = await this.identityContext.withoutAuthorization(async () => {\n const model = await this.modelProvider.get();\n return this.listLatestEntries.execute(model, {\n where: {\n values: {\n task: taskId\n }\n },\n sort: [\"createdOn_DESC\"],\n limit: 1\n });\n });\n if (result.isFail()) {\n return Result.fail(BackgroundTaskPersistenceError.from(result.error));\n }\n const [entry] = result.value.entries;\n if (!entry) {\n return Result.fail(new TaskLogNotFoundError());\n }\n return Result.ok(entryToTaskLog(entry));\n } catch (error) {\n return Result.fail(BackgroundTaskPersistenceError.from(error));\n }\n }\n\n async list(params: Parameters<Abstraction.Interface[\"list\"]>[0]) {\n try {\n const result = await this.identityContext.withoutAuthorization(async () => {\n const model = await this.modelProvider.get();\n return this.listLatestEntries.execute(model, {\n ...params,\n where: this.whereMapper.map({\n input: params.where,\n fields: model.fields\n })\n });\n });\n if (result.isFail()) {\n return Result.fail(BackgroundTaskPersistenceError.from(result.error));\n }\n const { entries, meta } = result.value;\n return Result.ok({\n items: entries.map(entry => entryToTaskLog(entry)),\n meta\n });\n } catch (error) {\n return Result.fail(BackgroundTaskPersistenceError.from(error));\n }\n }\n}\n\nexport const TaskLogsRepository = Abstraction.createImplementation({\n implementation: TaskLogsRepositoryImpl,\n dependencies: [\n IdentityContext,\n TaskLogModelProvider,\n GetEntryByIdUseCase,\n ListLatestEntriesUseCase,\n CreateEntryUseCase,\n UpdateEntryUseCase,\n DeleteEntryUseCase,\n CmsWhereMapper\n ]\n});\n"],"names":["ENTRY_NOT_FOUND","toLogError","error","TaskLogNotFoundError","BackgroundTaskPersistenceError","TaskLogsRepositoryImpl","identityContext","modelProvider","getEntryById","listLatestEntries","createEntry","updateEntry","deleteEntry","whereMapper","task","data","result","model","Result","entryToTaskLog","id","createRevisionId","taskId","entry","params","entries","meta","TaskLogsRepository","Abstraction","IdentityContext","TaskLogModelProvider","GetEntryByIdUseCase","ListLatestEntriesUseCase","CreateEntryUseCase","UpdateEntryUseCase","DeleteEntryUseCase","CmsWhereMapper"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
3
|
+
import { TaskModelProvider as Abstraction } from "./abstractions.js";
|
|
4
|
+
declare class TaskModelProviderImpl implements Abstraction.Interface {
|
|
5
|
+
private readonly getModel;
|
|
6
|
+
constructor(getModel: GetModelUseCase.Interface);
|
|
7
|
+
get(): Promise<CmsModel>;
|
|
8
|
+
}
|
|
9
|
+
export declare const TaskModelProvider: typeof TaskModelProviderImpl & {
|
|
10
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ITaskModelProvider>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
2
|
+
import { TaskModelProvider } from "./abstractions.js";
|
|
3
|
+
import { BackgroundTaskModelNotFoundError } from "../errors.js";
|
|
4
|
+
import { WEBINY_TASK_MODEL_ID } from "../../crud/TaskPrivateModel.js";
|
|
5
|
+
class TaskModelProviderImpl {
|
|
6
|
+
constructor(getModel){
|
|
7
|
+
this.getModel = getModel;
|
|
8
|
+
}
|
|
9
|
+
async get() {
|
|
10
|
+
const result = await this.getModel.execute(WEBINY_TASK_MODEL_ID);
|
|
11
|
+
if (result.isFail()) throw new BackgroundTaskModelNotFoundError(WEBINY_TASK_MODEL_ID);
|
|
12
|
+
return result.value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const TaskModelProvider_TaskModelProvider = TaskModelProvider.createImplementation({
|
|
16
|
+
implementation: TaskModelProviderImpl,
|
|
17
|
+
dependencies: [
|
|
18
|
+
GetModelUseCase
|
|
19
|
+
]
|
|
20
|
+
});
|
|
21
|
+
export { TaskModelProvider_TaskModelProvider as TaskModelProvider };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=TaskModelProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/domain/task/TaskModelProvider.js","sources":["../../../../src/api/domain/task/TaskModelProvider.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { TaskModelProvider as Abstraction } from \"./abstractions.js\";\nimport { BackgroundTaskModelNotFoundError } from \"~/api/domain/errors.js\";\nimport { WEBINY_TASK_MODEL_ID } from \"~/api/crud/TaskPrivateModel.js\";\n\nclass TaskModelProviderImpl implements Abstraction.Interface {\n constructor(private readonly getModel: GetModelUseCase.Interface) {}\n\n async get(): Promise<CmsModel> {\n const result = await this.getModel.execute(WEBINY_TASK_MODEL_ID);\n if (result.isFail()) {\n throw new BackgroundTaskModelNotFoundError(WEBINY_TASK_MODEL_ID);\n }\n return result.value;\n }\n}\n\nexport const TaskModelProvider = Abstraction.createImplementation({\n implementation: TaskModelProviderImpl,\n dependencies: [GetModelUseCase]\n});\n"],"names":["TaskModelProviderImpl","getModel","result","WEBINY_TASK_MODEL_ID","BackgroundTaskModelNotFoundError","TaskModelProvider","Abstraction","GetModelUseCase"],"mappings":";;;;AAMA,MAAMA;IACF,YAA6BC,QAAmC,CAAE;aAArCA,QAAQ,GAARA;IAAsC;IAEnE,MAAM,MAAyB;QAC3B,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACC;QAC3C,IAAID,OAAO,MAAM,IACb,MAAM,IAAIE,iCAAiCD;QAE/C,OAAOD,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMG,sCAAoBC,kBAAAA,oBAAgC,CAAC;IAC9D,gBAAgBN;IAChB,cAAc;QAACO;KAAgB;AACnC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
|
|
4
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
|
|
5
|
+
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
|
|
6
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
|
|
7
|
+
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
|
|
8
|
+
import { CmsWhereMapper } from "@webiny/api-headless-cms";
|
|
9
|
+
import { TaskModelProvider, TasksRepository as Abstraction } from "./abstractions.js";
|
|
10
|
+
import { BackgroundTaskPersistenceError, TaskNotFoundError } from "../../../api/domain/errors.js";
|
|
11
|
+
import type { IListTaskParams, ITaskCreateData, ITaskUpdateData } from "../../../api/types.js";
|
|
12
|
+
import type { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
13
|
+
type TaskInput = TaskService.TaskInput;
|
|
14
|
+
type TaskOutput = TaskService.GenericOutput;
|
|
15
|
+
declare class TasksRepositoryImpl implements Abstraction.Interface {
|
|
16
|
+
private readonly identityContext;
|
|
17
|
+
private readonly modelProvider;
|
|
18
|
+
private readonly getEntryById;
|
|
19
|
+
private readonly listLatestEntries;
|
|
20
|
+
private readonly createEntry;
|
|
21
|
+
private readonly updateEntry;
|
|
22
|
+
private readonly deleteEntry;
|
|
23
|
+
private readonly whereMapper;
|
|
24
|
+
constructor(identityContext: IdentityContext.Interface, modelProvider: TaskModelProvider.Interface, getEntryById: GetEntryByIdUseCase.Interface, listLatestEntries: ListLatestEntriesUseCase.Interface, createEntry: CreateEntryUseCase.Interface, updateEntry: UpdateEntryUseCase.Interface, deleteEntry: DeleteEntryUseCase.Interface, whereMapper: CmsWhereMapper.Interface);
|
|
25
|
+
get<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(id: string): Promise<Result<never, BackgroundTaskPersistenceError | TaskNotFoundError> | Result<TaskService.Task<I, O>, never>>;
|
|
26
|
+
list<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(params?: IListTaskParams): Promise<Result<never, BackgroundTaskPersistenceError> | Result<{
|
|
27
|
+
items: TaskService.Task<I, O>[];
|
|
28
|
+
meta: import("@webiny/api-headless-cms/types/types.js").CmsEntryMeta;
|
|
29
|
+
}, never>>;
|
|
30
|
+
create<I extends TaskInput = TaskInput>(data: ITaskCreateData<I>): Promise<Result<never, BackgroundTaskPersistenceError> | Result<TaskService.Task<I, import("@webiny/api-core/features/task/TaskService/abstractions.js").IGenericOutput>, never>>;
|
|
31
|
+
update<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(id: string, data: Partial<ITaskUpdateData<I, O>>): Promise<Result<never, BackgroundTaskPersistenceError | TaskNotFoundError> | Result<TaskService.Task<I, O>, never>>;
|
|
32
|
+
delete(id: string): Promise<Result<void, never> | Result<never, BackgroundTaskPersistenceError | TaskNotFoundError>>;
|
|
33
|
+
}
|
|
34
|
+
export declare const TasksRepository: typeof TasksRepositoryImpl & {
|
|
35
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ITasksRepository>;
|
|
36
|
+
};
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
|
|
4
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
|
|
5
|
+
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
|
|
6
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
|
|
7
|
+
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
|
|
8
|
+
import { CmsWhereMapper } from "@webiny/api-headless-cms";
|
|
9
|
+
import { TaskModelProvider, TasksRepository } from "./abstractions.js";
|
|
10
|
+
import { entryToTask } from "./entryToTask.js";
|
|
11
|
+
import { createRevisionId } from "./createRevisionId.js";
|
|
12
|
+
import { BackgroundTaskPersistenceError, TaskNotFoundError } from "../errors.js";
|
|
13
|
+
import { TaskDataStatus } from "../../types.js";
|
|
14
|
+
const ENTRY_NOT_FOUND = "Cms/Entry/NotFound";
|
|
15
|
+
const toTaskError = (error)=>{
|
|
16
|
+
if (error.code === ENTRY_NOT_FOUND) return new TaskNotFoundError();
|
|
17
|
+
return BackgroundTaskPersistenceError.from(error);
|
|
18
|
+
};
|
|
19
|
+
class TasksRepositoryImpl {
|
|
20
|
+
constructor(identityContext, modelProvider, getEntryById, listLatestEntries, createEntry, updateEntry, deleteEntry, whereMapper){
|
|
21
|
+
this.identityContext = identityContext;
|
|
22
|
+
this.modelProvider = modelProvider;
|
|
23
|
+
this.getEntryById = getEntryById;
|
|
24
|
+
this.listLatestEntries = listLatestEntries;
|
|
25
|
+
this.createEntry = createEntry;
|
|
26
|
+
this.updateEntry = updateEntry;
|
|
27
|
+
this.deleteEntry = deleteEntry;
|
|
28
|
+
this.whereMapper = whereMapper;
|
|
29
|
+
}
|
|
30
|
+
async get(id) {
|
|
31
|
+
try {
|
|
32
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
33
|
+
const model = await this.modelProvider.get();
|
|
34
|
+
return this.getEntryById.execute(model, createRevisionId(id));
|
|
35
|
+
});
|
|
36
|
+
if (result.isFail()) return Result.fail(toTaskError(result.error));
|
|
37
|
+
return Result.ok(entryToTask(result.value));
|
|
38
|
+
} catch (error) {
|
|
39
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async list(params) {
|
|
43
|
+
try {
|
|
44
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
45
|
+
const model = await this.modelProvider.get();
|
|
46
|
+
return this.listLatestEntries.execute(model, {
|
|
47
|
+
...params,
|
|
48
|
+
where: this.whereMapper.map({
|
|
49
|
+
input: params?.where,
|
|
50
|
+
fields: model.fields
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
if (result.isFail()) return Result.fail(BackgroundTaskPersistenceError.from(result.error));
|
|
55
|
+
const { entries, meta } = result.value;
|
|
56
|
+
return Result.ok({
|
|
57
|
+
items: entries.map((entry)=>entryToTask(entry)),
|
|
58
|
+
meta
|
|
59
|
+
});
|
|
60
|
+
} catch (error) {
|
|
61
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async create(data) {
|
|
65
|
+
try {
|
|
66
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
67
|
+
const model = await this.modelProvider.get();
|
|
68
|
+
return this.createEntry.execute(model, {
|
|
69
|
+
values: {
|
|
70
|
+
...data,
|
|
71
|
+
iterations: 0,
|
|
72
|
+
taskStatus: TaskDataStatus.PENDING
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
if (result.isFail()) return Result.fail(BackgroundTaskPersistenceError.from(result.error));
|
|
77
|
+
return Result.ok(entryToTask(result.value));
|
|
78
|
+
} catch (error) {
|
|
79
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async update(id, data) {
|
|
83
|
+
try {
|
|
84
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
85
|
+
const model = await this.modelProvider.get();
|
|
86
|
+
return this.updateEntry.execute(model, createRevisionId(id), {
|
|
87
|
+
values: {
|
|
88
|
+
...data
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
if (result.isFail()) return Result.fail(toTaskError(result.error));
|
|
93
|
+
return Result.ok(entryToTask(result.value));
|
|
94
|
+
} catch (error) {
|
|
95
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async delete(id) {
|
|
99
|
+
try {
|
|
100
|
+
const result = await this.identityContext.withoutAuthorization(async ()=>{
|
|
101
|
+
const model = await this.modelProvider.get();
|
|
102
|
+
return this.deleteEntry.execute(model, createRevisionId(id));
|
|
103
|
+
});
|
|
104
|
+
if (result.isFail()) return Result.fail(toTaskError(result.error));
|
|
105
|
+
return Result.ok();
|
|
106
|
+
} catch (error) {
|
|
107
|
+
return Result.fail(BackgroundTaskPersistenceError.from(error));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const TasksRepository_TasksRepository = TasksRepository.createImplementation({
|
|
112
|
+
implementation: TasksRepositoryImpl,
|
|
113
|
+
dependencies: [
|
|
114
|
+
IdentityContext,
|
|
115
|
+
TaskModelProvider,
|
|
116
|
+
GetEntryByIdUseCase,
|
|
117
|
+
ListLatestEntriesUseCase,
|
|
118
|
+
CreateEntryUseCase,
|
|
119
|
+
UpdateEntryUseCase,
|
|
120
|
+
DeleteEntryUseCase,
|
|
121
|
+
CmsWhereMapper
|
|
122
|
+
]
|
|
123
|
+
});
|
|
124
|
+
export { TasksRepository_TasksRepository as TasksRepository };
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=TasksRepository.js.map
|