@webiny/background-tasks 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.eb81deee7e
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/{features/GetTaskDefinition/feature.d.ts → BackgroundTasksFeature.d.ts} +1 -1
- package/api/BackgroundTasksFeature.js +61 -0
- package/api/BackgroundTasksFeature.js.map +1 -0
- package/api/TasksCrud.d.ts +10 -0
- package/api/TasksCrud.js +5 -0
- package/api/TasksCrud.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/crud/cleanupTaskSubtree.d.ts +2 -2
- package/api/crud/cleanupTaskSubtree.js +8 -7
- package/api/crud/cleanupTaskSubtree.js.map +1 -1
- package/api/crud/crud.tasks.d.ts +3 -2
- package/api/crud/crud.tasks.js +46 -44
- package/api/crud/crud.tasks.js.map +1 -1
- package/api/crud/definition.tasks.d.ts +3 -2
- package/api/crud/definition.tasks.js +4 -4
- package/api/crud/definition.tasks.js.map +1 -1
- package/api/crud/service.tasks.d.ts +3 -2
- package/api/crud/service.tasks.js +25 -21
- package/api/crud/service.tasks.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/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 +3 -3
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +3 -3
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -1
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js +7 -4
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js.map +1 -1
- 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 +3 -3
- package/api/features/GetTask/GetTaskUseCase.js +3 -3
- package/api/features/GetTask/GetTaskUseCase.js.map +1 -1
- package/api/features/GetTask/feature.d.ts +1 -2
- package/api/features/GetTask/feature.js +3 -2
- package/api/features/GetTask/feature.js.map +1 -1
- package/api/features/ListTasks/ListTasksUseCase.d.ts +4 -3
- package/api/features/ListTasks/ListTasksUseCase.js +3 -3
- package/api/features/ListTasks/ListTasksUseCase.js.map +1 -1
- package/api/features/ListTasks/feature.d.ts +1 -2
- package/api/features/ListTasks/feature.js +3 -2
- package/api/features/ListTasks/feature.js.map +1 -1
- 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/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/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js +6 -3
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -1
- package/api/graphql/BackgroundTasksGraphQLSchema.d.ts +27 -0
- package/api/graphql/BackgroundTasksGraphQLSchema.js +441 -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 +10 -3
- package/api/index.js +9 -3
- package/api/response/DatabaseResponse.js +1 -1
- package/api/response/DatabaseResponse.js.map +1 -1
- package/api/runner/TaskControl.d.ts +25 -1
- package/api/runner/TaskControl.js +30 -17
- 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 +10 -2
- package/api/runner/TaskManagerStore.js +5 -3
- package/api/runner/TaskManagerStore.js.map +1 -1
- package/api/runner/TaskRunner.d.ts +3 -3
- package/api/runner/TaskRunner.js +25 -4
- package/api/runner/TaskRunner.js.map +1 -1
- package/api/runner/abstractions/TaskRunner.d.ts +2 -2
- package/api/service/createService.d.ts +3 -3
- package/api/service/createService.js +5 -10
- package/api/service/createService.js.map +1 -1
- package/api/service/index.d.ts +1 -4
- package/api/service/index.js +1 -12
- 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 +2 -2
- 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/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/index.js.map +0 -1
|
@@ -7,6 +7,10 @@ import { BackgroundTaskSettingsView } from "./presentation/BackgroundTaskSetting
|
|
|
7
7
|
import { Routes } from "./routes.js";
|
|
8
8
|
import { ReactComponent } from "@webiny/icons/task.svg";
|
|
9
9
|
const { Menu: Menu, Route: Route } = AdminConfig;
|
|
10
|
+
const BackgroundTasksBreadcrumbsRoot = ()=>/*#__PURE__*/ react.createElement(AdminConfig.Breadcrumb, {
|
|
11
|
+
name: "background-tasks",
|
|
12
|
+
label: "Background Tasks"
|
|
13
|
+
});
|
|
10
14
|
const BackgroundTaskRoutes = ()=>{
|
|
11
15
|
const { getLink } = useRouter();
|
|
12
16
|
return /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(HasPermission, {
|
|
@@ -15,12 +19,18 @@ const BackgroundTaskRoutes = ()=>{
|
|
|
15
19
|
route: Routes.Definitions,
|
|
16
20
|
element: /*#__PURE__*/ react.createElement(AdminLayout, {
|
|
17
21
|
title: "Task Definitions"
|
|
18
|
-
}, /*#__PURE__*/ react.createElement(
|
|
22
|
+
}, /*#__PURE__*/ react.createElement(BackgroundTasksBreadcrumbsRoot, null), /*#__PURE__*/ react.createElement(AdminConfig.Breadcrumb, {
|
|
23
|
+
name: "background-tasks.definitions",
|
|
24
|
+
label: "Definitions"
|
|
25
|
+
}), /*#__PURE__*/ react.createElement(TaskDefinitionsView, null))
|
|
19
26
|
}), /*#__PURE__*/ react.createElement(Route, {
|
|
20
27
|
route: Routes.Executions,
|
|
21
28
|
element: /*#__PURE__*/ react.createElement(AdminLayout, {
|
|
22
29
|
title: "Task Executions"
|
|
23
|
-
}, /*#__PURE__*/ react.createElement(
|
|
30
|
+
}, /*#__PURE__*/ react.createElement(BackgroundTasksBreadcrumbsRoot, null), /*#__PURE__*/ react.createElement(AdminConfig.Breadcrumb, {
|
|
31
|
+
name: "background-tasks.executions",
|
|
32
|
+
label: "Executions"
|
|
33
|
+
}), /*#__PURE__*/ react.createElement(TaskExecutionsView, null))
|
|
24
34
|
}), /*#__PURE__*/ react.createElement(Menu, {
|
|
25
35
|
name: "backgroundTasks.executions",
|
|
26
36
|
parent: "dev-tools",
|
|
@@ -39,7 +49,10 @@ const BackgroundTaskRoutes = ()=>{
|
|
|
39
49
|
route: Routes.Settings,
|
|
40
50
|
element: /*#__PURE__*/ react.createElement(AdminLayout, {
|
|
41
51
|
title: "Background Task Settings"
|
|
42
|
-
}, /*#__PURE__*/ react.createElement(
|
|
52
|
+
}, /*#__PURE__*/ react.createElement(BackgroundTasksBreadcrumbsRoot, null), /*#__PURE__*/ react.createElement(AdminConfig.Breadcrumb, {
|
|
53
|
+
name: "background-tasks.settings",
|
|
54
|
+
label: "Settings"
|
|
55
|
+
}), /*#__PURE__*/ react.createElement(BackgroundTaskSettingsView, null))
|
|
43
56
|
}), /*#__PURE__*/ react.createElement(Menu, {
|
|
44
57
|
name: "backgroundTasks.settings",
|
|
45
58
|
parent: "settings.system",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/BackgroundTaskRoutes.js","sources":["../../src/admin/BackgroundTaskRoutes.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { AdminLayout } from \"@webiny/app-admin\";\nimport { HasPermission } from \"./presentation/security/HasPermission.js\";\nimport { TaskDefinitionsView } from \"./presentation/TaskDefinitions/components/TaskDefinitionsView.js\";\nimport { TaskExecutionsView } from \"./presentation/TaskExecutions/components/TaskExecutionsView.js\";\nimport { BackgroundTaskSettingsView } from \"./presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js\";\nimport { Routes } from \"./routes.js\";\nimport { ReactComponent as TaskIcon } from \"@webiny/icons/task.svg\";\n\nconst { Menu, Route } = AdminConfig;\n\nexport const BackgroundTaskRoutes = () => {\n const { getLink } = useRouter();\n\n return (\n <AdminConfig>\n <HasPermission entity=\"task\">\n <Route\n route={Routes.Definitions}\n element={\n <AdminLayout title=\"Task Definitions\">\n <TaskDefinitionsView />\n </AdminLayout>\n }\n />\n <Route\n route={Routes.Executions}\n element={\n <AdminLayout title=\"Task Executions\">\n <TaskExecutionsView />\n </AdminLayout>\n }\n />\n <Menu\n name=\"backgroundTasks.executions\"\n parent=\"dev-tools\"\n element={\n <Menu.Link\n text=\"Background Tasks\"\n badge={<Menu.Link.Badge text=\"BETA\" />}\n to={getLink(Routes.Executions)}\n icon={\n <Menu.Link.Icon\n label=\"Background Task Executions\"\n element={<TaskIcon />}\n />\n }\n />\n }\n />\n <Route\n route={Routes.Settings}\n element={\n <AdminLayout title=\"Background Task Settings\">\n <BackgroundTaskSettingsView />\n </AdminLayout>\n }\n />\n <Menu\n name=\"backgroundTasks.settings\"\n parent=\"settings.system\"\n element={\n <Menu.Link\n text=\"Background Tasks\"\n to={getLink(Routes.Settings)}\n badge={<Menu.Link.Badge text=\"BETA\" />}\n />\n }\n />\n </HasPermission>\n </AdminConfig>\n );\n};\n"],"names":["Menu","Route","AdminConfig","BackgroundTaskRoutes","getLink","useRouter","HasPermission","Routes","AdminLayout","TaskDefinitionsView","TaskExecutionsView","TaskIcon","BackgroundTaskSettingsView"],"mappings":";;;;;;;;AAWA,MAAM,EAAEA,MAAAA,IAAI,EAAEC,OAAAA,KAAK,EAAE,GAAGC;
|
|
1
|
+
{"version":3,"file":"admin/BackgroundTaskRoutes.js","sources":["../../src/admin/BackgroundTaskRoutes.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { AdminLayout } from \"@webiny/app-admin\";\nimport { HasPermission } from \"./presentation/security/HasPermission.js\";\nimport { TaskDefinitionsView } from \"./presentation/TaskDefinitions/components/TaskDefinitionsView.js\";\nimport { TaskExecutionsView } from \"./presentation/TaskExecutions/components/TaskExecutionsView.js\";\nimport { BackgroundTaskSettingsView } from \"./presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js\";\nimport { Routes } from \"./routes.js\";\nimport { ReactComponent as TaskIcon } from \"@webiny/icons/task.svg\";\n\nconst { Menu, Route } = AdminConfig;\n\n// Shared leading breadcrumb for all background-task routes.\nconst BackgroundTasksBreadcrumbsRoot = () => (\n <AdminConfig.Breadcrumb name=\"background-tasks\" label=\"Background Tasks\" />\n);\n\nexport const BackgroundTaskRoutes = () => {\n const { getLink } = useRouter();\n\n return (\n <AdminConfig>\n <HasPermission entity=\"task\">\n <Route\n route={Routes.Definitions}\n element={\n <AdminLayout title=\"Task Definitions\">\n <BackgroundTasksBreadcrumbsRoot />\n <AdminConfig.Breadcrumb\n name=\"background-tasks.definitions\"\n label=\"Definitions\"\n />\n <TaskDefinitionsView />\n </AdminLayout>\n }\n />\n <Route\n route={Routes.Executions}\n element={\n <AdminLayout title=\"Task Executions\">\n <BackgroundTasksBreadcrumbsRoot />\n <AdminConfig.Breadcrumb\n name=\"background-tasks.executions\"\n label=\"Executions\"\n />\n <TaskExecutionsView />\n </AdminLayout>\n }\n />\n <Menu\n name=\"backgroundTasks.executions\"\n parent=\"dev-tools\"\n element={\n <Menu.Link\n text=\"Background Tasks\"\n badge={<Menu.Link.Badge text=\"BETA\" />}\n to={getLink(Routes.Executions)}\n icon={\n <Menu.Link.Icon\n label=\"Background Task Executions\"\n element={<TaskIcon />}\n />\n }\n />\n }\n />\n <Route\n route={Routes.Settings}\n element={\n <AdminLayout title=\"Background Task Settings\">\n <BackgroundTasksBreadcrumbsRoot />\n <AdminConfig.Breadcrumb\n name=\"background-tasks.settings\"\n label=\"Settings\"\n />\n <BackgroundTaskSettingsView />\n </AdminLayout>\n }\n />\n <Menu\n name=\"backgroundTasks.settings\"\n parent=\"settings.system\"\n element={\n <Menu.Link\n text=\"Background Tasks\"\n to={getLink(Routes.Settings)}\n badge={<Menu.Link.Badge text=\"BETA\" />}\n />\n }\n />\n </HasPermission>\n </AdminConfig>\n );\n};\n"],"names":["Menu","Route","AdminConfig","BackgroundTasksBreadcrumbsRoot","BackgroundTaskRoutes","getLink","useRouter","HasPermission","Routes","AdminLayout","TaskDefinitionsView","TaskExecutionsView","TaskIcon","BackgroundTaskSettingsView"],"mappings":";;;;;;;;AAWA,MAAM,EAAEA,MAAAA,IAAI,EAAEC,OAAAA,KAAK,EAAE,GAAGC;AAGxB,MAAMC,iCAAiC,kBACnC,oBAACD,YAAY,UAAU;QAAC,MAAK;QAAmB,OAAM;;AAGnD,MAAME,uBAAuB;IAChC,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAEpB,OAAO,WAAP,GACI,oBAACJ,aAAWA,MAAAA,WAAAA,GACR,oBAACK,eAAaA;QAAC,QAAO;qBAClB,oBAACN,OAAKA;QACF,OAAOO,OAAO,WAAW;QACzB,uBACI,oBAACC,aAAWA;YAAC,OAAM;yBACf,oBAACN,gCAA8BA,OAAAA,WAAAA,GAC/B,oBAACD,YAAY,UAAU;YACnB,MAAK;YACL,OAAM;0BAEV,oBAACQ,qBAAmBA;sBAIhC,oBAACT,OAAKA;QACF,OAAOO,OAAO,UAAU;QACxB,uBACI,oBAACC,aAAWA;YAAC,OAAM;yBACf,oBAACN,gCAA8BA,OAAAA,WAAAA,GAC/B,oBAACD,YAAY,UAAU;YACnB,MAAK;YACL,OAAM;0BAEV,oBAACS,oBAAkBA;sBAI/B,oBAACX,MAAIA;QACD,MAAK;QACL,QAAO;QACP,uBACI,oBAACA,KAAK,IAAI;YACN,MAAK;YACL,qBAAO,oBAACA,KAAK,IAAI,CAAC,KAAK;gBAAC,MAAK;;YAC7B,IAAIK,QAAQG,OAAO,UAAU;YAC7B,oBACI,oBAACR,KAAK,IAAI,CAAC,IAAI;gBACX,OAAM;gBACN,uBAAS,oBAACY,gBAAQA;;;sBAMtC,oBAACX,OAAKA;QACF,OAAOO,OAAO,QAAQ;QACtB,uBACI,oBAACC,aAAWA;YAAC,OAAM;yBACf,oBAACN,gCAA8BA,OAAAA,WAAAA,GAC/B,oBAACD,YAAY,UAAU;YACnB,MAAK;YACL,OAAM;0BAEV,oBAACW,4BAA0BA;sBAIvC,oBAACb,MAAIA;QACD,MAAK;QACL,QAAO;QACP,uBACI,oBAACA,KAAK,IAAI;YACN,MAAK;YACL,IAAIK,QAAQG,OAAO,QAAQ;YAC3B,qBAAO,oBAACR,KAAK,IAAI,CAAC,KAAK;gBAAC,MAAK;;;;AAOzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/features/listLogs/ListLogsGateway.js","sources":["../../../../src/admin/features/listLogs/ListLogsGateway.ts"],"sourcesContent":["import { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient/index.js\";\nimport {\n ListLogsGateway as GatewayAbstraction,\n type IListLogsInput,\n type IListLogsOutput\n} from \"./abstractions.js\";\nimport type { TaskLog } from \"~/admin/shared/types.js\";\n\nconst LIST_LOGS = /* GraphQL */ `\n query ListBackgroundTaskLogs(\n $where: WebinyBackgroundTaskLogListWhereInput\n $sort: [WebinyBackgroundTaskLogListSorter!]\n $limit: Int\n $after: String\n ) {\n backgroundTasks {\n listLogs(where: $where, sort: $sort, limit: $limit, after: $after) {\n data {\n id\n createdOn\n executionName\n iteration\n items {\n message\n createdOn\n type\n data\n error\n }\n }\n meta {\n cursor\n hasMoreItems\n totalCount\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\ntype ListLogsResponse = {\n backgroundTasks: {\n listLogs:\n | {\n data: TaskLog[];\n meta: { cursor: string | null; hasMoreItems: boolean; totalCount: number };\n error: null;\n }\n | {\n data: null;\n meta: null;\n error: { code: string; message: string; data: unknown };\n };\n };\n};\n\nclass ListLogsGraphQLGateway implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async execute(input: IListLogsInput): Promise<IListLogsOutput> {\n const response = await this.client.execute<ListLogsResponse>({\n query: LIST_LOGS,\n variables: {\n where: input.where,\n sort: input.sort,\n limit: input.limit,\n after: input.after\n }\n });\n\n const envelope = response.backgroundTasks.listLogs;\n if (envelope.error) {\n throw new Error(envelope.error.message);\n }\n\n const items = envelope.data.map(log => ({\n ...log,\n items: log.items
|
|
1
|
+
{"version":3,"file":"admin/features/listLogs/ListLogsGateway.js","sources":["../../../../src/admin/features/listLogs/ListLogsGateway.ts"],"sourcesContent":["import { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient/index.js\";\nimport {\n ListLogsGateway as GatewayAbstraction,\n type IListLogsInput,\n type IListLogsOutput\n} from \"./abstractions.js\";\nimport type { TaskLog } from \"~/admin/shared/types.js\";\n\nconst LIST_LOGS = /* GraphQL */ `\n query ListBackgroundTaskLogs(\n $where: WebinyBackgroundTaskLogListWhereInput\n $sort: [WebinyBackgroundTaskLogListSorter!]\n $limit: Int\n $after: String\n ) {\n backgroundTasks {\n listLogs(where: $where, sort: $sort, limit: $limit, after: $after) {\n data {\n id\n createdOn\n executionName\n iteration\n items {\n message\n createdOn\n type\n data\n error\n }\n }\n meta {\n cursor\n hasMoreItems\n totalCount\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\ntype ListLogsResponse = {\n backgroundTasks: {\n listLogs:\n | {\n data: TaskLog[];\n meta: { cursor: string | null; hasMoreItems: boolean; totalCount: number };\n error: null;\n }\n | {\n data: null;\n meta: null;\n error: { code: string; message: string; data: unknown };\n };\n };\n};\n\nclass ListLogsGraphQLGateway implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async execute(input: IListLogsInput): Promise<IListLogsOutput> {\n const response = await this.client.execute<ListLogsResponse>({\n query: LIST_LOGS,\n variables: {\n where: input.where,\n sort: input.sort,\n limit: input.limit,\n after: input.after\n }\n });\n\n const envelope = response.backgroundTasks.listLogs;\n if (envelope.error) {\n throw new Error(envelope.error.message);\n }\n\n const items = envelope.data.map(log => ({\n ...log,\n items: log.items || []\n }));\n\n return {\n items,\n meta: envelope.meta\n };\n }\n}\n\nexport const ListLogsGateway = GatewayAbstraction.createImplementation({\n implementation: ListLogsGraphQLGateway,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["LIST_LOGS","ListLogsGraphQLGateway","client","input","response","envelope","Error","items","log","ListLogsGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":";;AAQA,MAAMA,YAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCjC,CAAC;AAkBD,MAAMC;IACF,YAAoBC,MAAmC,CAAE;aAArCA,MAAM,GAANA;IAAsC;IAE1D,MAAM,QAAQC,KAAqB,EAA4B;QAC3D,MAAMC,WAAW,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAmB;YACzD,OAAOJ;YACP,WAAW;gBACP,OAAOG,MAAM,KAAK;gBAClB,MAAMA,MAAM,IAAI;gBAChB,OAAOA,MAAM,KAAK;gBAClB,OAAOA,MAAM,KAAK;YACtB;QACJ;QAEA,MAAME,WAAWD,SAAS,eAAe,CAAC,QAAQ;QAClD,IAAIC,SAAS,KAAK,EACd,MAAM,IAAIC,MAAMD,SAAS,KAAK,CAAC,OAAO;QAG1C,MAAME,QAAQF,SAAS,IAAI,CAAC,GAAG,CAACG,CAAAA,MAAQ;gBACpC,GAAGA,GAAG;gBACN,OAAOA,IAAI,KAAK,IAAI,EAAE;YAC1B;QAEA,OAAO;YACHD;YACA,MAAMF,SAAS,IAAI;QACvB;IACJ;AACJ;AAEO,MAAMI,kCAAkBC,gBAAAA,oBAAuC,CAAC;IACnE,gBAAgBT;IAChB,cAAc;QAACU;KAAkB;AACrC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const TaskPermissionsFeature: import("@webiny/feature/admin").FeatureDefinition<{
|
|
1
|
+
export declare const TaskPermissionsFeature: import("@webiny/feature/admin/createFeature.js").FeatureDefinition<{
|
|
2
2
|
permissions: {
|
|
3
3
|
canAccess: (entityId: "task") => boolean;
|
|
4
4
|
canAction: (action: string, entityId: "task") => boolean;
|
|
@@ -45,7 +45,7 @@ class BackgroundTaskSettingsPresenterImpl {
|
|
|
45
45
|
});
|
|
46
46
|
runInAction(()=>{
|
|
47
47
|
this._form.setData({
|
|
48
|
-
retentionDays: settings.retentionDays
|
|
48
|
+
retentionDays: settings.retentionDays || ""
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
51
|
} finally{
|
|
@@ -62,7 +62,7 @@ class BackgroundTaskSettingsPresenterImpl {
|
|
|
62
62
|
runInAction(()=>{
|
|
63
63
|
this._form = this.buildForm();
|
|
64
64
|
this._form.setData({
|
|
65
|
-
retentionDays: settings.retentionDays
|
|
65
|
+
retentionDays: settings.retentionDays || ""
|
|
66
66
|
});
|
|
67
67
|
this._loading = false;
|
|
68
68
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js","sources":["../../../../src/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.ts"],"sourcesContent":["import { computed, makeAutoObservable, runInAction } from \"mobx\";\nimport {\n BackgroundTaskSettingsPresenter as Abstraction,\n type IBackgroundTaskSettingsPresenter,\n type IBackgroundTaskSettingsViewModel\n} from \"./abstractions.js\";\nimport { GetBackgroundTaskSettingsUseCase } from \"~/admin/features/getBackgroundTaskSettings/abstractions.js\";\nimport { UpdateBackgroundTaskSettingsUseCase } from \"~/admin/features/updateBackgroundTaskSettings/abstractions.js\";\nimport {\n FormModelFactory,\n type IFormModel\n} from \"@webiny/app-admin/features/formModel/abstractions.js\";\nimport { BACKGROUND_TASK_MAX_RETENTION_DAYS } from \"~/api/domain/constants.js\";\n\nclass BackgroundTaskSettingsPresenterImpl implements IBackgroundTaskSettingsPresenter {\n private _loading = false;\n private _saving = false;\n private _form: IFormModel;\n\n public get vm(): IBackgroundTaskSettingsViewModel {\n return {\n loading: this._loading,\n saving: this._saving,\n form: this._form.vm\n };\n }\n\n public constructor(\n private readonly formModelFactory: FormModelFactory.Interface,\n private readonly getSettingsUseCase: GetBackgroundTaskSettingsUseCase.Interface,\n private readonly updateSettingsUseCase: UpdateBackgroundTaskSettingsUseCase.Interface\n ) {\n this._form = this.buildForm();\n\n makeAutoObservable(this, { vm: computed });\n }\n\n private buildForm(): IFormModel {\n return this.formModelFactory.create({\n fields: fields => ({\n retentionDays: fields\n .number()\n .label(\"Retention (days)\")\n .placeholder(\"90\")\n .description(\n `How long to keep completed task runs. 0 = never delete. Max ${BACKGROUND_TASK_MAX_RETENTION_DAYS} days. Changing this value only affects future task executions; existing records are not retroactively deleted.`\n )\n }),\n layout: layout => [layout.row(\"retentionDays\")]\n });\n }\n\n public async save(): Promise<boolean> {\n const data = await this._form.submit<Record<string, string>>();\n if (data === false) {\n return false;\n }\n\n runInAction(() => {\n this._saving = true;\n });\n\n try {\n const settings = await this.updateSettingsUseCase.execute({\n retentionDays: data.retentionDays != null ? Number(data.retentionDays) : undefined\n });\n\n runInAction(() => {\n this._form.setData({\n retentionDays: settings.retentionDays
|
|
1
|
+
{"version":3,"file":"admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js","sources":["../../../../src/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.ts"],"sourcesContent":["import { computed, makeAutoObservable, runInAction } from \"mobx\";\nimport {\n BackgroundTaskSettingsPresenter as Abstraction,\n type IBackgroundTaskSettingsPresenter,\n type IBackgroundTaskSettingsViewModel\n} from \"./abstractions.js\";\nimport { GetBackgroundTaskSettingsUseCase } from \"~/admin/features/getBackgroundTaskSettings/abstractions.js\";\nimport { UpdateBackgroundTaskSettingsUseCase } from \"~/admin/features/updateBackgroundTaskSettings/abstractions.js\";\nimport {\n FormModelFactory,\n type IFormModel\n} from \"@webiny/app-admin/features/formModel/abstractions.js\";\nimport { BACKGROUND_TASK_MAX_RETENTION_DAYS } from \"~/api/domain/constants.js\";\n\nclass BackgroundTaskSettingsPresenterImpl implements IBackgroundTaskSettingsPresenter {\n private _loading = false;\n private _saving = false;\n private _form: IFormModel;\n\n public get vm(): IBackgroundTaskSettingsViewModel {\n return {\n loading: this._loading,\n saving: this._saving,\n form: this._form.vm\n };\n }\n\n public constructor(\n private readonly formModelFactory: FormModelFactory.Interface,\n private readonly getSettingsUseCase: GetBackgroundTaskSettingsUseCase.Interface,\n private readonly updateSettingsUseCase: UpdateBackgroundTaskSettingsUseCase.Interface\n ) {\n this._form = this.buildForm();\n\n makeAutoObservable(this, { vm: computed });\n }\n\n private buildForm(): IFormModel {\n return this.formModelFactory.create({\n fields: fields => ({\n retentionDays: fields\n .number()\n .label(\"Retention (days)\")\n .placeholder(\"90\")\n .description(\n `How long to keep completed task runs. 0 = never delete. Max ${BACKGROUND_TASK_MAX_RETENTION_DAYS} days. Changing this value only affects future task executions; existing records are not retroactively deleted.`\n )\n }),\n layout: layout => [layout.row(\"retentionDays\")]\n });\n }\n\n public async save(): Promise<boolean> {\n const data = await this._form.submit<Record<string, string>>();\n if (data === false) {\n return false;\n }\n\n runInAction(() => {\n this._saving = true;\n });\n\n try {\n const settings = await this.updateSettingsUseCase.execute({\n retentionDays: data.retentionDays != null ? Number(data.retentionDays) : undefined\n });\n\n runInAction(() => {\n this._form.setData({\n retentionDays: settings.retentionDays || \"\"\n });\n });\n } finally {\n runInAction(() => {\n this._saving = false;\n });\n }\n return true;\n }\n\n public async init(): Promise<void> {\n this._loading = true;\n\n try {\n const settings = await this.getSettingsUseCase.execute();\n\n runInAction(() => {\n this._form = this.buildForm();\n this._form.setData({\n retentionDays: settings.retentionDays || \"\"\n });\n this._loading = false;\n });\n } catch {\n runInAction(() => {\n this._loading = false;\n });\n }\n }\n}\n\nexport const BackgroundTaskSettingsPresenter = Abstraction.createImplementation({\n implementation: BackgroundTaskSettingsPresenterImpl,\n dependencies: [\n FormModelFactory,\n GetBackgroundTaskSettingsUseCase,\n UpdateBackgroundTaskSettingsUseCase\n ]\n});\n"],"names":["BackgroundTaskSettingsPresenterImpl","formModelFactory","getSettingsUseCase","updateSettingsUseCase","makeAutoObservable","computed","fields","BACKGROUND_TASK_MAX_RETENTION_DAYS","layout","data","runInAction","settings","Number","undefined","BackgroundTaskSettingsPresenter","Abstraction","FormModelFactory","GetBackgroundTaskSettingsUseCase","UpdateBackgroundTaskSettingsUseCase"],"mappings":";;;;;;AAcA,MAAMA;IAKF,IAAW,KAAuC;QAC9C,OAAO;YACH,SAAS,IAAI,CAAC,QAAQ;YACtB,QAAQ,IAAI,CAAC,OAAO;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;QACvB;IACJ;IAEA,YACqBC,gBAA4C,EAC5CC,kBAA8D,EAC9DC,qBAAoE,CACvF;aAHmBF,gBAAgB,GAAhBA;aACAC,kBAAkB,GAAlBA;aACAC,qBAAqB,GAArBA;aAfb,QAAQ,GAAG;aACX,OAAO,GAAG;QAgBd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;QAE3BC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEQ,YAAwB;QAC5B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAChC,QAAQC,CAAAA,SAAW;oBACf,eAAeA,OACV,MAAM,GACN,KAAK,CAAC,oBACN,WAAW,CAAC,MACZ,WAAW,CACR,CAAC,4DAA4D,EAAEC,mCAAmC,+GAA+G,CAAC;gBAE9N;YACA,QAAQC,CAAAA,SAAU;oBAACA,OAAO,GAAG,CAAC;iBAAiB;QACnD;IACJ;IAEA,MAAa,OAAyB;QAClC,MAAMC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;QACpC,IAAIA,AAAS,UAATA,MACA,OAAO;QAGXC,YAAY;YACR,IAAI,CAAC,OAAO,GAAG;QACnB;QAEA,IAAI;YACA,MAAMC,WAAW,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;gBACtD,eAAeF,AAAsB,QAAtBA,KAAK,aAAa,GAAWG,OAAOH,KAAK,aAAa,IAAII;YAC7E;YAEAH,YAAY;gBACR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACf,eAAeC,SAAS,aAAa,IAAI;gBAC7C;YACJ;QACJ,SAAU;YACND,YAAY;gBACR,IAAI,CAAC,OAAO,GAAG;YACnB;QACJ;QACA,OAAO;IACX;IAEA,MAAa,OAAsB;QAC/B,IAAI,CAAC,QAAQ,GAAG;QAEhB,IAAI;YACA,MAAMC,WAAW,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO;YAEtDD,YAAY;gBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;gBAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACf,eAAeC,SAAS,aAAa,IAAI;gBAC7C;gBACA,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ,EAAE,OAAM;YACJD,YAAY;gBACR,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ;IACJ;AACJ;AAEO,MAAMI,kEAAkCC,gCAAAA,oBAAgC,CAAC;IAC5E,gBAAgBf;IAChB,cAAc;QACVgB;QACAC;QACAC;KACH;AACL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/TaskDetail/TaskDetailPresenter.js","sources":["../../../../src/admin/presentation/TaskDetail/TaskDetailPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type { Task, TaskLog } from \"~/admin/shared/types.js\";\nimport {\n TaskDetailPresenter as Abstraction,\n type ITaskDetailPresenter,\n type ITaskDetailViewModel\n} from \"./abstractions.js\";\nimport { GetTaskUseCase } from \"~/admin/features/getTask/abstractions.js\";\nimport { ListLogsUseCase } from \"~/admin/features/listLogs/abstractions.js\";\n\nclass TaskDetailPresenterImpl implements ITaskDetailPresenter {\n private _task: Task | null = null;\n private _loading = false;\n private _logs: TaskLog[] = [];\n private _logsLoading = false;\n private _logsCursor: string | null = null;\n private _logsHasMore = false;\n private _logsTotalCount = 0;\n private _taskId: string | null = null;\n\n constructor(\n private readonly getTaskUseCase: GetTaskUseCase.Interface,\n private readonly listLogsUseCase: ListLogsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): ITaskDetailViewModel {\n return {\n task: this._task,\n loading: this._loading,\n logs: {\n rows: this._logs,\n pagination: {\n totalCount: this._logsTotalCount,\n loading: this._logsLoading,\n hasMore: this._logsHasMore\n }\n }\n };\n }\n\n async init(taskId: string): Promise<void> {\n this._taskId = taskId;\n this._loading = true;\n this._logs = [];\n this._logsCursor = null;\n this._logsHasMore = false;\n this._logsTotalCount = 0;\n\n const task = await this.getTaskUseCase.execute(taskId);\n\n runInAction(() => {\n this._task = task;\n this._loading = false;\n });\n\n await this.fetchLogs();\n }\n\n async loadMore(): Promise<void> {\n if (!this._logsHasMore || this._logsLoading) {\n return;\n }\n\n await this.fetchLogs(this._logsCursor);\n }\n\n private async fetchLogs(after?: string | null): Promise<void> {\n this._logsLoading = true;\n\n const result = await this.listLogsUseCase.execute({\n where: { task: this._taskId! },\n sort: [\"createdOn_DESC\"],\n limit: 50,\n after: after
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDetail/TaskDetailPresenter.js","sources":["../../../../src/admin/presentation/TaskDetail/TaskDetailPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type { Task, TaskLog } from \"~/admin/shared/types.js\";\nimport {\n TaskDetailPresenter as Abstraction,\n type ITaskDetailPresenter,\n type ITaskDetailViewModel\n} from \"./abstractions.js\";\nimport { GetTaskUseCase } from \"~/admin/features/getTask/abstractions.js\";\nimport { ListLogsUseCase } from \"~/admin/features/listLogs/abstractions.js\";\n\nclass TaskDetailPresenterImpl implements ITaskDetailPresenter {\n private _task: Task | null = null;\n private _loading = false;\n private _logs: TaskLog[] = [];\n private _logsLoading = false;\n private _logsCursor: string | null = null;\n private _logsHasMore = false;\n private _logsTotalCount = 0;\n private _taskId: string | null = null;\n\n constructor(\n private readonly getTaskUseCase: GetTaskUseCase.Interface,\n private readonly listLogsUseCase: ListLogsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): ITaskDetailViewModel {\n return {\n task: this._task,\n loading: this._loading,\n logs: {\n rows: this._logs,\n pagination: {\n totalCount: this._logsTotalCount,\n loading: this._logsLoading,\n hasMore: this._logsHasMore\n }\n }\n };\n }\n\n async init(taskId: string): Promise<void> {\n this._taskId = taskId;\n this._loading = true;\n this._logs = [];\n this._logsCursor = null;\n this._logsHasMore = false;\n this._logsTotalCount = 0;\n\n const task = await this.getTaskUseCase.execute(taskId);\n\n runInAction(() => {\n this._task = task;\n this._loading = false;\n });\n\n await this.fetchLogs();\n }\n\n async loadMore(): Promise<void> {\n if (!this._logsHasMore || this._logsLoading) {\n return;\n }\n\n await this.fetchLogs(this._logsCursor);\n }\n\n private async fetchLogs(after?: string | null): Promise<void> {\n this._logsLoading = true;\n\n const result = await this.listLogsUseCase.execute({\n where: { task: this._taskId! },\n sort: [\"createdOn_DESC\"],\n limit: 50,\n after: after || undefined\n });\n\n runInAction(() => {\n if (after) {\n this._logs = [...this._logs, ...result.items];\n } else {\n this._logs = result.items;\n }\n this._logsCursor = result.meta.cursor;\n this._logsHasMore = result.meta.hasMoreItems;\n this._logsTotalCount = result.meta.totalCount;\n this._logsLoading = false;\n });\n }\n}\n\nexport const TaskDetailPresenter = Abstraction.createImplementation({\n implementation: TaskDetailPresenterImpl,\n dependencies: [GetTaskUseCase, ListLogsUseCase]\n});\n"],"names":["TaskDetailPresenterImpl","getTaskUseCase","listLogsUseCase","makeAutoObservable","computed","taskId","task","runInAction","after","result","undefined","TaskDetailPresenter","Abstraction","GetTaskUseCase","ListLogsUseCase"],"mappings":";;;;AAUA,MAAMA;IAUF,YACqBC,cAAwC,EACxCC,eAA0C,CAC7D;aAFmBD,cAAc,GAAdA;aACAC,eAAe,GAAfA;aAXb,KAAK,GAAgB;aACrB,QAAQ,GAAG;aACX,KAAK,GAAc,EAAE;aACrB,YAAY,GAAG;aACf,WAAW,GAAkB;aAC7B,YAAY,GAAG;aACf,eAAe,GAAG;aAClB,OAAO,GAAkB;QAM7BC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEA,IAAI,KAA2B;QAC3B,OAAO;YACH,MAAM,IAAI,CAAC,KAAK;YAChB,SAAS,IAAI,CAAC,QAAQ;YACtB,MAAM;gBACF,MAAM,IAAI,CAAC,KAAK;gBAChB,YAAY;oBACR,YAAY,IAAI,CAAC,eAAe;oBAChC,SAAS,IAAI,CAAC,YAAY;oBAC1B,SAAS,IAAI,CAAC,YAAY;gBAC9B;YACJ;QACJ;IACJ;IAEA,MAAM,KAAKC,MAAc,EAAiB;QACtC,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,WAAW,GAAG;QACnB,IAAI,CAAC,YAAY,GAAG;QACpB,IAAI,CAAC,eAAe,GAAG;QAEvB,MAAMC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACD;QAE/CE,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD;YACb,IAAI,CAAC,QAAQ,GAAG;QACpB;QAEA,MAAM,IAAI,CAAC,SAAS;IACxB;IAEA,MAAM,WAA0B;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EACvC;QAGJ,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW;IACzC;IAEA,MAAc,UAAUE,KAAqB,EAAiB;QAC1D,IAAI,CAAC,YAAY,GAAG;QAEpB,MAAMC,SAAS,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC9C,OAAO;gBAAE,MAAM,IAAI,CAAC,OAAO;YAAE;YAC7B,MAAM;gBAAC;aAAiB;YACxB,OAAO;YACP,OAAOD,SAASE;QACpB;QAEAH,YAAY;YACR,IAAIC,OACA,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKC,OAAO,KAAK;aAAC;iBAE7C,IAAI,CAAC,KAAK,GAAGA,OAAO,KAAK;YAE7B,IAAI,CAAC,WAAW,GAAGA,OAAO,IAAI,CAAC,MAAM;YACrC,IAAI,CAAC,YAAY,GAAGA,OAAO,IAAI,CAAC,YAAY;YAC5C,IAAI,CAAC,eAAe,GAAGA,OAAO,IAAI,CAAC,UAAU;YAC7C,IAAI,CAAC,YAAY,GAAG;QACxB;IACJ;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBZ;IAChB,cAAc;QAACa;QAAgBC;KAAgB;AACnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/TaskExecutions/TaskExecutionsDataSource.js","sources":["../../../../src/admin/presentation/TaskExecutions/TaskExecutionsDataSource.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type {\n IDataSource,\n IDataSourceQuery,\n IDataSourceMeta\n} from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { Task } from \"~/admin/shared/types.js\";\nimport type { IListTasksUseCase } from \"~/admin/features/listTasks/abstractions.js\";\n\nconst ENTRY_META_SORT_FIELDS = new Set([\n \"id\",\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\"\n]);\n\nfunction toSortEnum(field: string, direction: \"ASC\" | \"DESC\"): string {\n const prefix = ENTRY_META_SORT_FIELDS.has(field) ? \"\" : \"values_\";\n return `${prefix}${field}_${direction}`;\n}\n\nexport class TaskExecutionsDataSource implements IDataSource<Task> {\n private _rows: Task[] = [];\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n\n constructor(private readonly listTasksUseCase: IListTasksUseCase) {\n makeAutoObservable<TaskExecutionsDataSource, \"listTasksUseCase\">(this, {\n listTasksUseCase: false,\n rows: computed\n });\n }\n\n get rows(): Task[] {\n return this._rows;\n }\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: params.cursor,\n search: params.search\n });\n runInAction(() => {\n this._rows = result.items;\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: this._meta.cursor
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskExecutions/TaskExecutionsDataSource.js","sources":["../../../../src/admin/presentation/TaskExecutions/TaskExecutionsDataSource.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type {\n IDataSource,\n IDataSourceQuery,\n IDataSourceMeta\n} from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { Task } from \"~/admin/shared/types.js\";\nimport type { IListTasksUseCase } from \"~/admin/features/listTasks/abstractions.js\";\n\nconst ENTRY_META_SORT_FIELDS = new Set([\n \"id\",\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\"\n]);\n\nfunction toSortEnum(field: string, direction: \"ASC\" | \"DESC\"): string {\n const prefix = ENTRY_META_SORT_FIELDS.has(field) ? \"\" : \"values_\";\n return `${prefix}${field}_${direction}`;\n}\n\nexport class TaskExecutionsDataSource implements IDataSource<Task> {\n private _rows: Task[] = [];\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n\n constructor(private readonly listTasksUseCase: IListTasksUseCase) {\n makeAutoObservable<TaskExecutionsDataSource, \"listTasksUseCase\">(this, {\n listTasksUseCase: false,\n rows: computed\n });\n }\n\n get rows(): Task[] {\n return this._rows;\n }\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: params.cursor,\n search: params.search\n });\n runInAction(() => {\n this._rows = result.items;\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: this._meta.cursor || undefined,\n search: params.search\n });\n runInAction(() => {\n this._rows = [...this._rows, ...result.items];\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n}\n"],"names":["ENTRY_META_SORT_FIELDS","Set","toSortEnum","field","direction","prefix","TaskExecutionsDataSource","listTasksUseCase","makeAutoObservable","computed","params","sort","undefined","result","runInAction"],"mappings":";AASA,MAAMA,yBAAyB,IAAIC,IAAI;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACH;AAED,SAASC,WAAWC,KAAa,EAAEC,SAAyB;IACxD,MAAMC,SAASL,uBAAuB,GAAG,CAACG,SAAS,KAAK;IACxD,OAAO,GAAGE,SAASF,MAAM,CAAC,EAAEC,WAAW;AAC3C;AAEO,MAAME;IAKT,YAA6BC,gBAAmC,CAAE;aAArCA,gBAAgB,GAAhBA;aAJrB,KAAK,GAAW,EAAE;aAClB,KAAK,GAAoB;YAAE,QAAQ;YAAM,cAAc;YAAO,YAAY;QAAE;aAC5E,QAAQ,GAAG;QAGfC,mBAAiE,IAAI,EAAE;YACnE,kBAAkB;YAClB,MAAMC;QACV;IACJ;IAEA,IAAI,OAAe;QACf,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,OAAwB;QACxB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,UAAmB;QACnB,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,MAAM,MAAMC,MAAwB,EAAiB;QACjD,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,OAAOD,OAAO,IAAI,GAClB;YAACR,WAAWQ,OAAO,IAAI,CAAC,KAAK,EAAEA,OAAO,IAAI,CAAC,SAAS;SAAE,GACtDE;QACN,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,OAAOH,OAAO,OAAO;YACrBC;YACA,OAAOD,OAAO,KAAK;YACnB,OAAOA,OAAO,MAAM;YACpB,QAAQA,OAAO,MAAM;QACzB;QACAI,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD,OAAO,KAAK;YACzB,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;IAEA,MAAM,SAASH,MAAwB,EAAiB;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EACzC;QAEJ,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,OAAOD,OAAO,IAAI,GAClB;YAACR,WAAWQ,OAAO,IAAI,CAAC,KAAK,EAAEA,OAAO,IAAI,CAAC,SAAS;SAAE,GACtDE;QACN,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,OAAOH,OAAO,OAAO;YACrBC;YACA,OAAOD,OAAO,KAAK;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAIE;YAC5B,QAAQF,OAAO,MAAM;QACzB;QACAI,YAAY;YACR,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKD,OAAO,KAAK;aAAC;YAC7C,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;AACJ"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
3
|
+
import { TaskDefinitionDefaultsDecorator } from "./decorators/TaskDefinitionDefaultsDecorator.js";
|
|
4
|
+
import { SelfCleaningTaskHandlerDecorator } from "./decorators/SelfCleaningTaskHandlerDecorator.js";
|
|
5
|
+
import { TaskController } from "./features/TaskController/index.js";
|
|
6
|
+
import { TaskPrivateModel } from "./crud/TaskPrivateModel.js";
|
|
7
|
+
import { TaskLogPrivateModel } from "./crud/TaskLogPrivateModel.js";
|
|
8
|
+
import { BackgroundTaskSettingsModel } from "./models/BackgroundTaskSettingsModel.js";
|
|
9
|
+
import { createDefinitionCrud } from "./crud/definition.tasks.js";
|
|
10
|
+
import { createServiceCrud } from "./crud/service.tasks.js";
|
|
11
|
+
import { createTaskCrud } from "./crud/crud.tasks.js";
|
|
12
|
+
import { TaskExecutionContextFeature } from "./features/TaskExecutionContext/feature.js";
|
|
13
|
+
import { TaskHandlerResolverFeature } from "./features/TaskHandlerResolver/feature.js";
|
|
14
|
+
import { GetRunnableTaskDefinitionFeature } from "./features/GetRunnableTaskDefinition/feature.js";
|
|
15
|
+
import { ListTaskDefinitionsFeature } from "./features/ListTaskDefinitions/feature.js";
|
|
16
|
+
import { CleanupTaskSubtreeUseCase, CleanupTaskSubtreeUseCaseImpl } from "./features/CleanupTaskSubtree/index.js";
|
|
17
|
+
import { TasksCrud } from "./TasksCrud.js";
|
|
18
|
+
import { TriggerTaskFeature } from "./features/TriggerTask/feature.js";
|
|
19
|
+
import { AbortTaskFeature } from "./features/AbortTask/feature.js";
|
|
20
|
+
import { GetTaskFeature } from "./features/GetTask/feature.js";
|
|
21
|
+
import { ListTasksFeature } from "./features/ListTasks/feature.js";
|
|
22
|
+
import { TestingRunTaskDefinition } from "./tasks/testingRunTask.js";
|
|
23
|
+
import { BackgroundTaskPermissionsFeature } from "./features/BackgroundTaskPermissions/feature.js";
|
|
24
|
+
import { GetBackgroundTaskSettingsFeature } from "./features/GetBackgroundTaskSettings/feature.js";
|
|
25
|
+
import { UpdateBackgroundTaskSettingsFeature } from "./features/UpdateBackgroundTaskSettings/feature.js";
|
|
26
|
+
import { BackgroundTasksGraphQLSchema } from "./graphql/BackgroundTasksGraphQLSchema.js";
|
|
27
|
+
const BackgroundTasksFeature = createFeature({
|
|
28
|
+
name: "BackgroundTasks",
|
|
29
|
+
register (container) {
|
|
30
|
+
container.register(TaskPrivateModel);
|
|
31
|
+
container.register(TaskLogPrivateModel);
|
|
32
|
+
container.register(BackgroundTaskSettingsModel);
|
|
33
|
+
container.registerDecorator(TaskDefinitionDefaultsDecorator);
|
|
34
|
+
container.registerDecorator(SelfCleaningTaskHandlerDecorator);
|
|
35
|
+
TaskHandlerResolverFeature.register(container);
|
|
36
|
+
GetRunnableTaskDefinitionFeature.register(container);
|
|
37
|
+
ListTaskDefinitionsFeature.register(container);
|
|
38
|
+
const tasksCrud = {
|
|
39
|
+
...createDefinitionCrud(container),
|
|
40
|
+
...createTaskCrud(container),
|
|
41
|
+
...createServiceCrud(container)
|
|
42
|
+
};
|
|
43
|
+
container.registerInstance(TasksCrud, tasksCrud);
|
|
44
|
+
container.registerInstance(TaskService, tasksCrud);
|
|
45
|
+
TriggerTaskFeature.register(container);
|
|
46
|
+
AbortTaskFeature.register(container);
|
|
47
|
+
GetTaskFeature.register(container);
|
|
48
|
+
ListTasksFeature.register(container);
|
|
49
|
+
container.registerInstance(CleanupTaskSubtreeUseCase, new CleanupTaskSubtreeUseCaseImpl(container.resolve(TasksCrud)));
|
|
50
|
+
TaskExecutionContextFeature.register(container);
|
|
51
|
+
container.register(TaskController);
|
|
52
|
+
container.register(TestingRunTaskDefinition);
|
|
53
|
+
BackgroundTaskPermissionsFeature.register(container);
|
|
54
|
+
GetBackgroundTaskSettingsFeature.register(container);
|
|
55
|
+
UpdateBackgroundTaskSettingsFeature.register(container);
|
|
56
|
+
container.register(BackgroundTasksGraphQLSchema);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
export { BackgroundTasksFeature };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=BackgroundTasksFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/BackgroundTasksFeature.js","sources":["../../src/api/BackgroundTasksFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { TaskDefinitionDefaultsDecorator } from \"./decorators/TaskDefinitionDefaultsDecorator.js\";\nimport { SelfCleaningTaskHandlerDecorator } from \"./decorators/SelfCleaningTaskHandlerDecorator.js\";\nimport { TaskController } from \"./features/TaskController/index.js\";\nimport { TaskPrivateModel } from \"./crud/TaskPrivateModel.js\";\nimport { TaskLogPrivateModel } from \"./crud/TaskLogPrivateModel.js\";\nimport { BackgroundTaskSettingsModel } from \"./models/BackgroundTaskSettingsModel.js\";\nimport { createDefinitionCrud } from \"./crud/definition.tasks.js\";\nimport { createServiceCrud } from \"./crud/service.tasks.js\";\nimport { createTaskCrud } from \"./crud/crud.tasks.js\";\nimport { TaskExecutionContextFeature } from \"./features/TaskExecutionContext/feature.js\";\nimport { TaskHandlerResolverFeature } from \"./features/TaskHandlerResolver/feature.js\";\nimport { GetRunnableTaskDefinitionFeature } from \"./features/GetRunnableTaskDefinition/feature.js\";\nimport { ListTaskDefinitionsFeature } from \"./features/ListTaskDefinitions/feature.js\";\nimport {\n CleanupTaskSubtreeUseCase,\n CleanupTaskSubtreeUseCaseImpl\n} from \"./features/CleanupTaskSubtree/index.js\";\nimport { TasksCrud } from \"./TasksCrud.js\";\nimport { TriggerTaskFeature } from \"./features/TriggerTask/feature.js\";\nimport { AbortTaskFeature } from \"./features/AbortTask/feature.js\";\nimport { GetTaskFeature } from \"./features/GetTask/feature.js\";\nimport { ListTasksFeature } from \"./features/ListTasks/feature.js\";\nimport { TestingRunTaskDefinition } from \"./tasks/testingRunTask.js\";\nimport { BackgroundTaskPermissionsFeature } from \"./features/BackgroundTaskPermissions/feature.js\";\nimport { GetBackgroundTaskSettingsFeature } from \"./features/GetBackgroundTaskSettings/feature.js\";\nimport { UpdateBackgroundTaskSettingsFeature } from \"./features/UpdateBackgroundTaskSettings/feature.js\";\nimport { BackgroundTasksGraphQLSchema } from \"./graphql/BackgroundTasksGraphQLSchema.js\";\n\nexport const BackgroundTasksFeature = createFeature({\n name: \"BackgroundTasks\",\n register(container) {\n // Register models at register() time so they are available to GetModelUseCase when the\n // ModelsFetcher cache is first filled (which may happen during an earlier feature's enhance).\n container.register(TaskPrivateModel);\n container.register(TaskLogPrivateModel);\n container.register(BackgroundTaskSettingsModel);\n\n // Metadata rules, applied to every registered TaskDefinition.\n container.registerDecorator(TaskDefinitionDefaultsDecorator);\n\n // Self-cleanup runs in the lifecycle hooks, which belong to the handler. Applied when the\n // runner resolves the handler a definition names.\n container.registerDecorator(SelfCleaningTaskHandlerDecorator);\n\n // Task definition use cases.\n TaskHandlerResolverFeature.register(container);\n GetRunnableTaskDefinitionFeature.register(container);\n ListTaskDefinitionsFeature.register(container);\n\n // Build the tasks CRUD facade from the container and register it as the canonical TasksCrud\n // abstraction (plus the legacy TaskService alias). The factory methods resolve TasksCrud\n // lazily for sibling calls, so registering the assembled object up front is sufficient.\n const tasksCrud = {\n ...createDefinitionCrud(container),\n ...createTaskCrud(container),\n ...createServiceCrud(container)\n };\n container.registerInstance(TasksCrud, tasksCrud);\n container.registerInstance(TaskService, tasksCrud);\n\n // Task CRUD use cases (must be after TasksCrud is registered).\n TriggerTaskFeature.register(container);\n AbortTaskFeature.register(container);\n GetTaskFeature.register(container);\n ListTasksFeature.register(container);\n container.registerInstance(\n CleanupTaskSubtreeUseCase,\n new CleanupTaskSubtreeUseCaseImpl(container.resolve(TasksCrud))\n );\n\n // Execution context (singleton), controller, and the built-in test task.\n TaskExecutionContextFeature.register(container);\n container.register(TaskController);\n container.register(TestingRunTaskDefinition);\n\n // Permissions + settings features.\n BackgroundTaskPermissionsFeature.register(container);\n GetBackgroundTaskSettingsFeature.register(container);\n UpdateBackgroundTaskSettingsFeature.register(container);\n\n // GraphQL schema, rendered from the CMS task/log content models.\n container.register(BackgroundTasksGraphQLSchema);\n }\n});\n"],"names":["BackgroundTasksFeature","createFeature","container","TaskPrivateModel","TaskLogPrivateModel","BackgroundTaskSettingsModel","TaskDefinitionDefaultsDecorator","SelfCleaningTaskHandlerDecorator","TaskHandlerResolverFeature","GetRunnableTaskDefinitionFeature","ListTaskDefinitionsFeature","tasksCrud","createDefinitionCrud","createTaskCrud","createServiceCrud","TasksCrud","TaskService","TriggerTaskFeature","AbortTaskFeature","GetTaskFeature","ListTasksFeature","CleanupTaskSubtreeUseCase","CleanupTaskSubtreeUseCaseImpl","TaskExecutionContextFeature","TaskController","TestingRunTaskDefinition","BackgroundTaskPermissionsFeature","GetBackgroundTaskSettingsFeature","UpdateBackgroundTaskSettingsFeature","BackgroundTasksGraphQLSchema"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA8BO,MAAMA,yBAAyBC,cAAc;IAChD,MAAM;IACN,UAASC,SAAS;QAGdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QAGnBH,UAAU,iBAAiB,CAACI;QAI5BJ,UAAU,iBAAiB,CAACK;QAG5BC,2BAA2B,QAAQ,CAACN;QACpCO,iCAAiC,QAAQ,CAACP;QAC1CQ,2BAA2B,QAAQ,CAACR;QAKpC,MAAMS,YAAY;YACd,GAAGC,qBAAqBV,UAAU;YAClC,GAAGW,eAAeX,UAAU;YAC5B,GAAGY,kBAAkBZ,UAAU;QACnC;QACAA,UAAU,gBAAgB,CAACa,WAAWJ;QACtCT,UAAU,gBAAgB,CAACc,aAAaL;QAGxCM,mBAAmB,QAAQ,CAACf;QAC5BgB,iBAAiB,QAAQ,CAAChB;QAC1BiB,eAAe,QAAQ,CAACjB;QACxBkB,iBAAiB,QAAQ,CAAClB;QAC1BA,UAAU,gBAAgB,CACtBmB,2BACA,IAAIC,8BAA8BpB,UAAU,OAAO,CAACa;QAIxDQ,4BAA4B,QAAQ,CAACrB;QACrCA,UAAU,QAAQ,CAACsB;QACnBtB,UAAU,QAAQ,CAACuB;QAGnBC,iCAAiC,QAAQ,CAACxB;QAC1CyB,iCAAiC,QAAQ,CAACzB;QAC1C0B,oCAAoC,QAAQ,CAAC1B;QAG7CA,UAAU,QAAQ,CAAC2B;IACvB;AACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ITasksContextObject } from "../api/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* At runtime this is the full tasks facade (CRUD + definition + service methods), assembled and
|
|
4
|
+
* registered by BackgroundTasksFeature. Typed as the full `ITasksContextObject` so sibling calls
|
|
5
|
+
* (e.g. `getDefinition`, `trigger`) type-check.
|
|
6
|
+
*/
|
|
7
|
+
export declare const TasksCrud: import("@webiny/di").Abstraction<ITasksContextObject>;
|
|
8
|
+
export declare namespace TasksCrud {
|
|
9
|
+
type Interface = ITasksContextObject;
|
|
10
|
+
}
|
package/api/TasksCrud.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/TasksCrud.js","sources":["../../src/api/TasksCrud.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ITasksContextObject } from \"~/api/types.js\";\n\n/**\n * At runtime this is the full tasks facade (CRUD + definition + service methods), assembled and\n * registered by BackgroundTasksFeature. Typed as the full `ITasksContextObject` so sibling calls\n * (e.g. `getDefinition`, `trigger`) type-check.\n */\nexport const TasksCrud = createAbstraction<ITasksContextObject>(\"Tasks/TasksCrud\");\n\nexport namespace TasksCrud {\n export type Interface = ITasksContextObject;\n}\n"],"names":["TasksCrud","createAbstraction"],"mappings":";AAQO,MAAMA,YAAYC,kBAAuC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { Timer } from "@webiny/utils/features/Timer/abstraction.js";
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Timer } from "./Timer.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Timer } from "./Timer.js";
|
|
@@ -6,7 +6,8 @@ class TaskLogPrivateModelImpl {
|
|
|
6
6
|
return [
|
|
7
7
|
builder.private({
|
|
8
8
|
modelId: WEBINY_TASK_LOG_MODEL_ID,
|
|
9
|
-
name: "Webiny Task Log"
|
|
9
|
+
name: "Webiny Task Log",
|
|
10
|
+
lifecycleEvents: false
|
|
10
11
|
}).fields((fields)=>({
|
|
11
12
|
executionName: fields.text().label("Execution Name"),
|
|
12
13
|
task: fields.text().label("Task").required("Task is required."),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/crud/TaskLogPrivateModel.js","sources":["../../../src/api/crud/TaskLogPrivateModel.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { TaskLogItemType } from \"~/api/types.js\";\n\nexport const WEBINY_TASK_LOG_MODEL_ID = \"wbyTaskLog\";\n\nclass TaskLogPrivateModelImpl implements ModelFactory.Interface {\n public async execute(builder: ModelFactory.Builder) {\n return [\n builder\n .private({\n modelId: WEBINY_TASK_LOG_MODEL_ID,\n name: \"Webiny Task Log\"\n })\n .fields(fields => ({\n executionName: fields.text().label(\"Execution Name\"),\n task: fields.text().label(\"Task\").required(\"Task is required.\"),\n iteration: fields\n .number()\n .label(\"Iteration\")\n .required(\"Iteration is required.\"),\n items: fields\n .object()\n .label(\"Items\")\n .list()\n .required(\"Items is required.\")\n .fields(fields => ({\n message: fields\n .text()\n .label(\"Message\")\n .required(\"Message is required.\"),\n createdOn: fields\n .datetime()\n .label(\"Created On\")\n .required(\"Created On is required.\"),\n type: fields\n .text()\n .label(\"Type\")\n .required(\"Type is required.\")\n .predefinedValues([\n {\n value: TaskLogItemType.INFO,\n label: \"Info\"\n },\n {\n value: TaskLogItemType.ERROR,\n label: \"Error\"\n }\n ]),\n data: fields.json().label(\"Data\"),\n error: fields.json().label(\"Error\")\n }))\n }))\n ];\n }\n}\n\nexport const TaskLogPrivateModel = ModelFactory.createImplementation({\n implementation: TaskLogPrivateModelImpl,\n dependencies: []\n});\n"],"names":["WEBINY_TASK_LOG_MODEL_ID","TaskLogPrivateModelImpl","builder","fields","TaskLogItemType","TaskLogPrivateModel","ModelFactory"],"mappings":";;AAGO,MAAMA,2BAA2B;AAExC,MAAMC;IACF,MAAa,QAAQC,OAA6B,EAAE;QAChD,OAAO;YACHA,QACK,OAAO,CAAC;gBACL,SAASF;gBACT,MAAM;
|
|
1
|
+
{"version":3,"file":"api/crud/TaskLogPrivateModel.js","sources":["../../../src/api/crud/TaskLogPrivateModel.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { TaskLogItemType } from \"~/api/types.js\";\n\nexport const WEBINY_TASK_LOG_MODEL_ID = \"wbyTaskLog\";\n\nclass TaskLogPrivateModelImpl implements ModelFactory.Interface {\n public async execute(builder: ModelFactory.Builder) {\n return [\n builder\n .private({\n modelId: WEBINY_TASK_LOG_MODEL_ID,\n name: \"Webiny Task Log\",\n lifecycleEvents: false\n })\n .fields(fields => ({\n executionName: fields.text().label(\"Execution Name\"),\n task: fields.text().label(\"Task\").required(\"Task is required.\"),\n iteration: fields\n .number()\n .label(\"Iteration\")\n .required(\"Iteration is required.\"),\n items: fields\n .object()\n .label(\"Items\")\n .list()\n .required(\"Items is required.\")\n .fields(fields => ({\n message: fields\n .text()\n .label(\"Message\")\n .required(\"Message is required.\"),\n createdOn: fields\n .datetime()\n .label(\"Created On\")\n .required(\"Created On is required.\"),\n type: fields\n .text()\n .label(\"Type\")\n .required(\"Type is required.\")\n .predefinedValues([\n {\n value: TaskLogItemType.INFO,\n label: \"Info\"\n },\n {\n value: TaskLogItemType.ERROR,\n label: \"Error\"\n }\n ]),\n data: fields.json().label(\"Data\"),\n error: fields.json().label(\"Error\")\n }))\n }))\n ];\n }\n}\n\nexport const TaskLogPrivateModel = ModelFactory.createImplementation({\n implementation: TaskLogPrivateModelImpl,\n dependencies: []\n});\n"],"names":["WEBINY_TASK_LOG_MODEL_ID","TaskLogPrivateModelImpl","builder","fields","TaskLogItemType","TaskLogPrivateModel","ModelFactory"],"mappings":";;AAGO,MAAMA,2BAA2B;AAExC,MAAMC;IACF,MAAa,QAAQC,OAA6B,EAAE;QAChD,OAAO;YACHA,QACK,OAAO,CAAC;gBACL,SAASF;gBACT,MAAM;gBACN,iBAAiB;YACrB,GACC,MAAM,CAACG,CAAAA,SAAW;oBACf,eAAeA,OAAO,IAAI,GAAG,KAAK,CAAC;oBACnC,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;oBAC3C,WAAWA,OACN,MAAM,GACN,KAAK,CAAC,aACN,QAAQ,CAAC;oBACd,OAAOA,OACF,MAAM,GACN,KAAK,CAAC,SACN,IAAI,GACJ,QAAQ,CAAC,sBACT,MAAM,CAACA,CAAAA,SAAW;4BACf,SAASA,OACJ,IAAI,GACJ,KAAK,CAAC,WACN,QAAQ,CAAC;4BACd,WAAWA,OACN,QAAQ,GACR,KAAK,CAAC,cACN,QAAQ,CAAC;4BACd,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,QAAQ,CAAC,qBACT,gBAAgB,CAAC;gCACd;oCACI,OAAOC,gBAAgB,IAAI;oCAC3B,OAAO;gCACX;gCACA;oCACI,OAAOA,gBAAgB,KAAK;oCAC5B,OAAO;gCACX;6BACH;4BACL,MAAMD,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC1B,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC/B;gBACR;SACP;IACL;AACJ;AAEO,MAAME,sBAAsBC,aAAa,oBAAoB,CAAC;IACjE,gBAAgBL;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -6,7 +6,8 @@ class TaskPrivateModelImpl {
|
|
|
6
6
|
return [
|
|
7
7
|
builder.private({
|
|
8
8
|
modelId: WEBINY_TASK_MODEL_ID,
|
|
9
|
-
name: "Webiny Task"
|
|
9
|
+
name: "Webiny Task",
|
|
10
|
+
lifecycleEvents: false
|
|
10
11
|
}).fields((fields)=>({
|
|
11
12
|
name: fields.text().label("Name").required("Name is required."),
|
|
12
13
|
definitionId: fields.text().label("Definition ID").required("Definition ID is required."),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/crud/TaskPrivateModel.js","sources":["../../../src/api/crud/TaskPrivateModel.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { TaskDataStatus } from \"~/api/types.js\";\n\nexport const WEBINY_TASK_MODEL_ID = \"wbyTask\";\n\nclass TaskPrivateModelImpl implements ModelFactory.Interface {\n public async execute(builder: ModelFactory.Builder) {\n return [\n builder\n .private({\n modelId: WEBINY_TASK_MODEL_ID,\n name: \"Webiny Task\"\n })\n .fields(fields => ({\n name: fields.text().label(\"Name\").required(\"Name is required.\"),\n definitionId: fields\n .text()\n .label(\"Definition ID\")\n .required(\"Definition ID is required.\"),\n parentId: fields.text().label(\"Parent ID\"),\n executionName: fields.text().label(\"Execution Name\"),\n iterations: fields.number().label(\"Iterations\"),\n input: fields.json().label(\"Input\"),\n output: fields.json().label(\"Output\"),\n taskStatus: fields\n .text()\n .label(\"Status\")\n .predefinedValues([\n {\n value: TaskDataStatus.PENDING,\n label: \"Pending\"\n },\n {\n value: TaskDataStatus.RUNNING,\n label: \"Running\"\n },\n {\n value: TaskDataStatus.FAILED,\n label: \"Failed\"\n },\n {\n value: TaskDataStatus.SUCCESS,\n label: \"Success\"\n },\n {\n value: TaskDataStatus.ABORTED,\n label: \"Aborted\"\n }\n ])\n .settings({ defaultValue: TaskDataStatus.PENDING }),\n startedOn: fields.datetime().label(\"Started On\"),\n finishedOn: fields.datetime().label(\"Finished On\"),\n eventResponse: fields.json().label(\"Event Response\")\n }))\n ];\n }\n}\n\nexport const TaskPrivateModel = ModelFactory.createImplementation({\n implementation: TaskPrivateModelImpl,\n dependencies: []\n});\n"],"names":["WEBINY_TASK_MODEL_ID","TaskPrivateModelImpl","builder","fields","TaskDataStatus","TaskPrivateModel","ModelFactory"],"mappings":";;AAGO,MAAMA,uBAAuB;AAEpC,MAAMC;IACF,MAAa,QAAQC,OAA6B,EAAE;QAChD,OAAO;YACHA,QACK,OAAO,CAAC;gBACL,SAASF;gBACT,MAAM;
|
|
1
|
+
{"version":3,"file":"api/crud/TaskPrivateModel.js","sources":["../../../src/api/crud/TaskPrivateModel.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { TaskDataStatus } from \"~/api/types.js\";\n\nexport const WEBINY_TASK_MODEL_ID = \"wbyTask\";\n\nclass TaskPrivateModelImpl implements ModelFactory.Interface {\n public async execute(builder: ModelFactory.Builder) {\n return [\n builder\n .private({\n modelId: WEBINY_TASK_MODEL_ID,\n name: \"Webiny Task\",\n lifecycleEvents: false\n })\n .fields(fields => ({\n name: fields.text().label(\"Name\").required(\"Name is required.\"),\n definitionId: fields\n .text()\n .label(\"Definition ID\")\n .required(\"Definition ID is required.\"),\n parentId: fields.text().label(\"Parent ID\"),\n executionName: fields.text().label(\"Execution Name\"),\n iterations: fields.number().label(\"Iterations\"),\n input: fields.json().label(\"Input\"),\n output: fields.json().label(\"Output\"),\n taskStatus: fields\n .text()\n .label(\"Status\")\n .predefinedValues([\n {\n value: TaskDataStatus.PENDING,\n label: \"Pending\"\n },\n {\n value: TaskDataStatus.RUNNING,\n label: \"Running\"\n },\n {\n value: TaskDataStatus.FAILED,\n label: \"Failed\"\n },\n {\n value: TaskDataStatus.SUCCESS,\n label: \"Success\"\n },\n {\n value: TaskDataStatus.ABORTED,\n label: \"Aborted\"\n }\n ])\n .settings({ defaultValue: TaskDataStatus.PENDING }),\n startedOn: fields.datetime().label(\"Started On\"),\n finishedOn: fields.datetime().label(\"Finished On\"),\n eventResponse: fields.json().label(\"Event Response\")\n }))\n ];\n }\n}\n\nexport const TaskPrivateModel = ModelFactory.createImplementation({\n implementation: TaskPrivateModelImpl,\n dependencies: []\n});\n"],"names":["WEBINY_TASK_MODEL_ID","TaskPrivateModelImpl","builder","fields","TaskDataStatus","TaskPrivateModel","ModelFactory"],"mappings":";;AAGO,MAAMA,uBAAuB;AAEpC,MAAMC;IACF,MAAa,QAAQC,OAA6B,EAAE;QAChD,OAAO;YACHA,QACK,OAAO,CAAC;gBACL,SAASF;gBACT,MAAM;gBACN,iBAAiB;YACrB,GACC,MAAM,CAACG,CAAAA,SAAW;oBACf,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;oBAC3C,cAAcA,OACT,IAAI,GACJ,KAAK,CAAC,iBACN,QAAQ,CAAC;oBACd,UAAUA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B,eAAeA,OAAO,IAAI,GAAG,KAAK,CAAC;oBACnC,YAAYA,OAAO,MAAM,GAAG,KAAK,CAAC;oBAClC,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC3B,QAAQA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC5B,YAAYA,OACP,IAAI,GACJ,KAAK,CAAC,UACN,gBAAgB,CAAC;wBACd;4BACI,OAAOC,eAAe,OAAO;4BAC7B,OAAO;wBACX;wBACA;4BACI,OAAOA,eAAe,OAAO;4BAC7B,OAAO;wBACX;wBACA;4BACI,OAAOA,eAAe,MAAM;4BAC5B,OAAO;wBACX;wBACA;4BACI,OAAOA,eAAe,OAAO;4BAC7B,OAAO;wBACX;wBACA;4BACI,OAAOA,eAAe,OAAO;4BAC7B,OAAO;wBACX;qBACH,EACA,QAAQ,CAAC;wBAAE,cAAcA,eAAe,OAAO;oBAAC;oBACrD,WAAWD,OAAO,QAAQ,GAAG,KAAK,CAAC;oBACnC,YAAYA,OAAO,QAAQ,GAAG,KAAK,CAAC;oBACpC,eAAeA,OAAO,IAAI,GAAG,KAAK,CAAC;gBACvC;SACP;IACL;AACJ;AAEO,MAAME,mBAAmBC,aAAa,oBAAoB,CAAC;IAC9D,gBAAgBL;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Container } from "@webiny/di";
|
|
2
2
|
/**
|
|
3
3
|
* Recursively deletes the task identified by `rootId`, all its descendants, and
|
|
4
4
|
* their logs (when the owning definition has databaseLogs=true). Bottom-up,
|
|
5
5
|
* best-effort: per-record errors are logged and swallowed, the function never
|
|
6
6
|
* throws.
|
|
7
7
|
*/
|
|
8
|
-
export declare const createCleanupTaskSubtree: (
|
|
8
|
+
export declare const createCleanupTaskSubtree: (container: Container) => (rootId: string) => Promise<void>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { TasksCrud } from "../TasksCrud.js";
|
|
2
|
+
const createCleanupTaskSubtree = (container)=>{
|
|
2
3
|
const listChildren = async (parentId)=>{
|
|
3
|
-
const { items } = await
|
|
4
|
+
const { items } = await container.resolve(TasksCrud).listTasks({
|
|
4
5
|
where: {
|
|
5
6
|
parentId
|
|
6
7
|
}
|
|
@@ -8,7 +9,7 @@ const createCleanupTaskSubtree = (context)=>{
|
|
|
8
9
|
return items;
|
|
9
10
|
};
|
|
10
11
|
const collectSubtree = async (rootId)=>{
|
|
11
|
-
const root = await
|
|
12
|
+
const root = await container.resolve(TasksCrud).getTask(rootId);
|
|
12
13
|
if (!root) return [];
|
|
13
14
|
const order = [
|
|
14
15
|
root
|
|
@@ -28,16 +29,16 @@ const createCleanupTaskSubtree = (context)=>{
|
|
|
28
29
|
return order.reverse();
|
|
29
30
|
};
|
|
30
31
|
const deleteTaskLogs = async (task)=>{
|
|
31
|
-
const definition =
|
|
32
|
+
const definition = container.resolve(TasksCrud).getDefinition(task.definitionId);
|
|
32
33
|
if (!definition || true !== definition.databaseLogs) return;
|
|
33
34
|
try {
|
|
34
|
-
const { items } = await
|
|
35
|
+
const { items } = await container.resolve(TasksCrud).listLogs({
|
|
35
36
|
where: {
|
|
36
37
|
task: task.id
|
|
37
38
|
}
|
|
38
39
|
});
|
|
39
40
|
for (const log of items)try {
|
|
40
|
-
await
|
|
41
|
+
await container.resolve(TasksCrud).deleteLog(log.id);
|
|
41
42
|
} catch (ex) {
|
|
42
43
|
console.warn(`cleanupTaskSubtree: failed to delete log "${log.id}" for task "${task.id}": ${ex.message}`);
|
|
43
44
|
}
|
|
@@ -50,7 +51,7 @@ const createCleanupTaskSubtree = (context)=>{
|
|
|
50
51
|
for (const task of ordered){
|
|
51
52
|
await deleteTaskLogs(task);
|
|
52
53
|
try {
|
|
53
|
-
await
|
|
54
|
+
await container.resolve(TasksCrud).deleteTask(task.id);
|
|
54
55
|
} catch (ex) {
|
|
55
56
|
console.warn(`cleanupTaskSubtree: failed to delete task "${task.id}": ${ex.message}`);
|
|
56
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/crud/cleanupTaskSubtree.js","sources":["../../../src/api/crud/cleanupTaskSubtree.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"api/crud/cleanupTaskSubtree.js","sources":["../../../src/api/crud/cleanupTaskSubtree.ts"],"sourcesContent":["import type { Container } from \"@webiny/di\";\nimport type { ITask } from \"~/api/types.js\";\nimport { TasksCrud } from \"~/api/TasksCrud.js\";\n\n/**\n * Recursively deletes the task identified by `rootId`, all its descendants, and\n * their logs (when the owning definition has databaseLogs=true). Bottom-up,\n * best-effort: per-record errors are logged and swallowed, the function never\n * throws.\n */\nexport const createCleanupTaskSubtree = (container: Container) => {\n const listChildren = async (parentId: string): Promise<ITask[]> => {\n const { items } = await container.resolve(TasksCrud).listTasks({\n where: { parentId }\n });\n return items;\n };\n\n const collectSubtree = async (rootId: string): Promise<ITask[]> => {\n const root = await container.resolve(TasksCrud).getTask(rootId);\n if (!root) {\n return [];\n }\n const order: ITask[] = [root];\n const seen = new Set<string>([root.id]);\n let i = 0;\n while (i < order.length) {\n const current = order[i++];\n const kids = await listChildren(current.id);\n for (const kid of kids) {\n if (seen.has(kid.id)) {\n continue;\n }\n seen.add(kid.id);\n order.push(kid);\n }\n }\n return order.reverse();\n };\n\n const deleteTaskLogs = async (task: ITask): Promise<void> => {\n const definition = container.resolve(TasksCrud).getDefinition(task.definitionId);\n if (!definition || definition.databaseLogs !== true) {\n return;\n }\n try {\n const { items } = await container.resolve(TasksCrud).listLogs({\n where: { task: task.id }\n });\n for (const log of items) {\n try {\n await container.resolve(TasksCrud).deleteLog(log.id);\n } catch (ex: any) {\n console.warn(\n `cleanupTaskSubtree: failed to delete log \"${log.id}\" for task \"${task.id}\": ${ex.message}`\n );\n }\n }\n } catch (ex: any) {\n console.warn(\n `cleanupTaskSubtree: failed to list logs for task \"${task.id}\": ${ex.message}`\n );\n }\n };\n\n return async (rootId: string): Promise<void> => {\n const ordered = await collectSubtree(rootId);\n for (const task of ordered) {\n await deleteTaskLogs(task);\n try {\n await container.resolve(TasksCrud).deleteTask(task.id);\n } catch (ex: any) {\n console.warn(\n `cleanupTaskSubtree: failed to delete task \"${task.id}\": ${ex.message}`\n );\n }\n }\n };\n};\n"],"names":["createCleanupTaskSubtree","container","listChildren","parentId","items","TasksCrud","collectSubtree","rootId","root","order","seen","Set","i","current","kids","kid","deleteTaskLogs","task","definition","log","ex","console","ordered"],"mappings":";AAUO,MAAMA,2BAA2B,CAACC;IACrC,MAAMC,eAAe,OAAOC;QACxB,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMH,UAAU,OAAO,CAACI,WAAW,SAAS,CAAC;YAC3D,OAAO;gBAAEF;YAAS;QACtB;QACA,OAAOC;IACX;IAEA,MAAME,iBAAiB,OAAOC;QAC1B,MAAMC,OAAO,MAAMP,UAAU,OAAO,CAACI,WAAW,OAAO,CAACE;QACxD,IAAI,CAACC,MACD,OAAO,EAAE;QAEb,MAAMC,QAAiB;YAACD;SAAK;QAC7B,MAAME,OAAO,IAAIC,IAAY;YAACH,KAAK,EAAE;SAAC;QACtC,IAAII,IAAI;QACR,MAAOA,IAAIH,MAAM,MAAM,CAAE;YACrB,MAAMI,UAAUJ,KAAK,CAACG,IAAI;YAC1B,MAAME,OAAO,MAAMZ,aAAaW,QAAQ,EAAE;YAC1C,KAAK,MAAME,OAAOD,KACd,KAAIJ,KAAK,GAAG,CAACK,IAAI,EAAE;gBAGnBL,KAAK,GAAG,CAACK,IAAI,EAAE;gBACfN,MAAM,IAAI,CAACM;;QAEnB;QACA,OAAON,MAAM,OAAO;IACxB;IAEA,MAAMO,iBAAiB,OAAOC;QAC1B,MAAMC,aAAajB,UAAU,OAAO,CAACI,WAAW,aAAa,CAACY,KAAK,YAAY;QAC/E,IAAI,CAACC,cAAcA,AAA4B,SAA5BA,WAAW,YAAY,EACtC;QAEJ,IAAI;YACA,MAAM,EAAEd,KAAK,EAAE,GAAG,MAAMH,UAAU,OAAO,CAACI,WAAW,QAAQ,CAAC;gBAC1D,OAAO;oBAAE,MAAMY,KAAK,EAAE;gBAAC;YAC3B;YACA,KAAK,MAAME,OAAOf,MACd,IAAI;gBACA,MAAMH,UAAU,OAAO,CAACI,WAAW,SAAS,CAACc,IAAI,EAAE;YACvD,EAAE,OAAOC,IAAS;gBACdC,QAAQ,IAAI,CACR,CAAC,0CAA0C,EAAEF,IAAI,EAAE,CAAC,YAAY,EAAEF,KAAK,EAAE,CAAC,GAAG,EAAEG,GAAG,OAAO,EAAE;YAEnG;QAER,EAAE,OAAOA,IAAS;YACdC,QAAQ,IAAI,CACR,CAAC,kDAAkD,EAAEJ,KAAK,EAAE,CAAC,GAAG,EAAEG,GAAG,OAAO,EAAE;QAEtF;IACJ;IAEA,OAAO,OAAOb;QACV,MAAMe,UAAU,MAAMhB,eAAeC;QACrC,KAAK,MAAMU,QAAQK,QAAS;YACxB,MAAMN,eAAeC;YACrB,IAAI;gBACA,MAAMhB,UAAU,OAAO,CAACI,WAAW,UAAU,CAACY,KAAK,EAAE;YACzD,EAAE,OAAOG,IAAS;gBACdC,QAAQ,IAAI,CACR,CAAC,2CAA2C,EAAEJ,KAAK,EAAE,CAAC,GAAG,EAAEG,GAAG,OAAO,EAAE;YAE/E;QACJ;IACJ;AACJ"}
|
package/api/crud/crud.tasks.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { Container } from "@webiny/di";
|
|
2
|
+
import type { ITasksContextCrudObject } from "../../api/types.js";
|
|
3
|
+
export declare const createTaskCrud: (container: Container) => ITasksContextCrudObject;
|