@webiny/background-tasks 6.4.11 → 6.6.0-alpha.1
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/TaskDetail/components/TaskDetailDrawer.js +6 -0
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.d.ts +2 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js +3 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js.map +1 -1
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js +44 -24
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js.map +1 -1
- package/api/BackgroundTasksFeature.d.ts +4 -0
- 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/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 +37 -37
- package/api/crud/crud.tasks.js.map +1 -1
- package/api/crud/definition.tasks.d.ts +3 -2
- package/api/crud/definition.tasks.js +3 -3
- 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/RunnableTaskDecorator.d.ts +3 -2
- package/api/decorators/RunnableTaskDecorator.js +7 -8
- package/api/decorators/RunnableTaskDecorator.js.map +1 -1
- package/api/decorators/SelfCleaningTaskDecorator.d.ts +6 -3
- package/api/decorators/SelfCleaningTaskDecorator.js +14 -5
- package/api/decorators/SelfCleaningTaskDecorator.js.map +1 -1
- 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 +10 -0
- package/api/domain/errors.js +11 -1
- package/api/domain/errors.js.map +1 -1
- 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/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/GetTaskDefinition/GetTaskDefinitionUseCase.d.ts +6 -3
- package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +66 -5
- package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -1
- package/api/features/GetTaskDefinition/abstractions.d.ts +2 -1
- package/api/features/GetTaskDefinition/abstractions.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/TaskController/TaskController.d.ts +2 -2
- 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 +3 -2
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -1
- package/api/graphql/BackgroundTasksContextualSchema.d.ts +21 -0
- package/api/graphql/BackgroundTasksContextualSchema.js +369 -0
- package/api/graphql/BackgroundTasksContextualSchema.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 +3 -3
- 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 +28 -24
- 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/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
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
1
|
+
import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
declare class TestingRunTaskHandler implements TaskHandler.Interface {
|
|
3
|
+
run({ controller }: TaskHandler.RunParams): Promise<TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
|
|
4
|
+
}
|
|
5
|
+
export declare const TestingRunTaskHandlerImplementation: typeof TestingRunTaskHandler & {
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskHandler<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
|
|
7
|
+
};
|
|
2
8
|
declare class TestingRunTask implements TaskDefinition.Interface {
|
|
3
9
|
id: string;
|
|
4
10
|
title: string;
|
|
5
11
|
description: string;
|
|
6
|
-
|
|
12
|
+
handler: typeof TestingRunTaskHandler & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskHandler<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
|
|
14
|
+
};
|
|
7
15
|
}
|
|
8
16
|
export declare const TestingRunTaskDefinition: typeof TestingRunTask & {
|
|
9
17
|
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
-
class
|
|
1
|
+
import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
class TestingRunTaskHandler {
|
|
3
3
|
async run({ controller }) {
|
|
4
4
|
return controller.response.done("Task successfully finished.");
|
|
5
5
|
}
|
|
6
|
+
}
|
|
7
|
+
const TestingRunTaskHandlerImplementation = TaskHandler.createImplementation({
|
|
8
|
+
implementation: TestingRunTaskHandler,
|
|
9
|
+
dependencies: []
|
|
10
|
+
});
|
|
11
|
+
class TestingRunTask {
|
|
6
12
|
constructor(){
|
|
7
13
|
this.id = "testingRun";
|
|
8
14
|
this.title = "Test Step Function Permissions";
|
|
9
15
|
this.description = "A task to test the step function permissions.";
|
|
16
|
+
this.handler = TestingRunTaskHandlerImplementation;
|
|
10
17
|
}
|
|
11
18
|
}
|
|
12
19
|
const TestingRunTaskDefinition = TaskDefinition.createImplementation({
|
|
13
20
|
implementation: TestingRunTask,
|
|
14
21
|
dependencies: []
|
|
15
22
|
});
|
|
16
|
-
export { TestingRunTaskDefinition };
|
|
23
|
+
export { TestingRunTaskDefinition, TestingRunTaskHandlerImplementation };
|
|
17
24
|
|
|
18
25
|
//# sourceMappingURL=testingRunTask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/tasks/testingRunTask.js","sources":["../../../src/api/tasks/testingRunTask.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"api/tasks/testingRunTask.js","sources":["../../../src/api/tasks/testingRunTask.ts"],"sourcesContent":["import {\n TaskDefinition,\n TaskHandler\n} from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nclass TestingRunTaskHandler implements TaskHandler.Interface {\n async run({ controller }: TaskHandler.RunParams) {\n return controller.response.done(\"Task successfully finished.\");\n }\n}\n\nexport const TestingRunTaskHandlerImplementation = TaskHandler.createImplementation({\n implementation: TestingRunTaskHandler,\n dependencies: []\n});\n\nclass TestingRunTask implements TaskDefinition.Interface {\n id = \"testingRun\";\n title = \"Test Step Function Permissions\";\n description = \"A task to test the step function permissions.\";\n handler = TestingRunTaskHandlerImplementation;\n}\n\nexport const TestingRunTaskDefinition = TaskDefinition.createImplementation({\n implementation: TestingRunTask,\n dependencies: []\n});\n"],"names":["TestingRunTaskHandler","controller","TestingRunTaskHandlerImplementation","TaskHandler","TestingRunTask","TestingRunTaskDefinition","TaskDefinition"],"mappings":";AAKA,MAAMA;IACF,MAAM,IAAI,EAAEC,UAAU,EAAyB,EAAE;QAC7C,OAAOA,WAAW,QAAQ,CAAC,IAAI,CAAC;IACpC;AACJ;AAEO,MAAMC,sCAAsCC,YAAY,oBAAoB,CAAC;IAChF,gBAAgBH;IAChB,cAAc,EAAE;AACpB;AAEA,MAAMI;;aACF,EAAE,GAAG;aACL,KAAK,GAAG;aACR,WAAW,GAAG;aACd,OAAO,GAAGF;;AACd;AAEO,MAAMG,2BAA2BC,eAAe,oBAAoB,CAAC;IACxE,gBAAgBF;IAChB,cAAc,EAAE;AACpB"}
|
package/api/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CmsContext as BaseContext, CmsEntryListParams, CmsEntryMeta, CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
2
|
import type { IResponseError } from "../api/response/abstractions/index.js";
|
|
3
3
|
import type { GenericRecord } from "@webiny/api/types.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { IServiceInfo } from "@webiny/api-core/features/task/TaskService/abstractions.js";
|
|
5
5
|
import type { SecurityPermission } from "@webiny/api-core/types/security.js";
|
|
6
6
|
import type { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
7
7
|
import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
@@ -151,7 +151,7 @@ export interface ITaskAbortParams {
|
|
|
151
151
|
export interface ITasksContextServiceObject {
|
|
152
152
|
trigger: <T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskService.GenericOutput = TaskService.GenericOutput>(params: ITaskTriggerParams<T>) => Promise<Result<ITask<T, O>, BaseError>>;
|
|
153
153
|
abort: <T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskService.GenericOutput = TaskService.GenericOutput>(params: ITaskAbortParams) => Promise<Result<ITask<T, O>, BaseError>>;
|
|
154
|
-
fetchServiceInfo: (input: ITask<any, any> | string) => Promise<Result<
|
|
154
|
+
fetchServiceInfo: (input: ITask<any, any> | string) => Promise<Result<IServiceInfo, BaseError>>;
|
|
155
155
|
}
|
|
156
156
|
export interface ITasksContextObject extends ITasksContextCrudObject, ITasksContextDefinitionObject, ITasksContextServiceObject {
|
|
157
157
|
}
|
package/api/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/types.js","sources":["../../src/api/types.ts"],"sourcesContent":["import type {\n CmsContext as BaseContext,\n CmsEntryListParams,\n CmsEntryMeta,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IResponseError } from \"~/api/response/abstractions/index.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport type {
|
|
1
|
+
{"version":3,"file":"api/types.js","sources":["../../src/api/types.ts"],"sourcesContent":["import type {\n CmsContext as BaseContext,\n CmsEntryListParams,\n CmsEntryMeta,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IResponseError } from \"~/api/response/abstractions/index.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport type { IServiceInfo } from \"@webiny/api-core/features/task/TaskService/abstractions.js\";\nimport type { SecurityPermission } from \"@webiny/api-core/types/security.js\";\nimport type { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { BaseError, Result } from \"@webiny/feature/api\";\nimport type { IdInterfaceGenerator, NumericInterfaceGenerator } from \"@webiny/api\";\n// TODO had to import for augmentation to work, but is there a better way to do this?\nimport \"./features/TaskController/augmentation.js\";\n\nexport * from \"./handler/types.js\";\nexport * from \"./response/abstractions/index.js\";\nexport * from \"./runner/abstractions/index.js\";\n\nexport type ITaskDataInput = GenericRecord;\n\nexport enum TaskLogItemType {\n INFO = \"info\",\n ERROR = \"error\"\n}\n\nexport interface ITaskLogItemData {\n [key: string]: any;\n}\n\nexport interface ITaskLogItemBase {\n message: string;\n createdOn: string;\n type: TaskLogItemType;\n data?: ITaskLogItemData;\n}\n\nexport interface ITaskLogItemInfo extends ITaskLogItemBase {\n type: TaskLogItemType.INFO;\n}\n\nexport interface ITaskLogItemError extends ITaskLogItemBase {\n type: TaskLogItemType.ERROR;\n error?: IResponseError;\n}\n\nexport type ITaskLogItem = ITaskLogItemInfo | ITaskLogItemError;\n\nexport interface ITaskLog {\n /**\n * ID without the revision number (for example: #0001).\n */\n id: string;\n createdOn: string;\n createdBy: ITaskIdentity;\n executionName: string;\n task: string;\n iteration: number;\n items: ITaskLogItem[];\n}\n\nexport enum TaskDataStatus {\n PENDING = \"pending\",\n RUNNING = \"running\",\n FAILED = \"failed\",\n SUCCESS = \"success\",\n ABORTED = \"aborted\"\n}\n\nexport interface ITaskIdentity {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport type IGetTaskResponse<\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n> = ITask<T, O> | null;\n\nexport interface IListTasksResponse<\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n> {\n items: ITask<T, O>[];\n meta: CmsEntryMeta;\n}\n\nexport interface IListTaskLogsResponse {\n items: ITaskLog[];\n meta: CmsEntryMeta;\n}\n\nexport type ICreateTaskResponse<\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n> = ITask<T, O>;\nexport type IUpdateTaskResponse<\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n> = ITask<T, O>;\nexport type IDeleteTaskResponse = boolean;\n\nexport interface IListTaskParamsWhere\n extends\n IdInterfaceGenerator<\"id\">,\n IdInterfaceGenerator<\"parentId\">,\n IdInterfaceGenerator<\"definitionId\">,\n IdInterfaceGenerator<\"taskStatus\"> {\n //\n}\n\nexport interface IListTaskParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: IListTaskParamsWhere;\n}\n\nexport interface IListTaskLogParamsWhere\n extends\n IdInterfaceGenerator<\"id\">,\n IdInterfaceGenerator<\"task\">,\n NumericInterfaceGenerator<\"iteration\"> {}\n\nexport interface IListTaskLogParams extends Omit<\n CmsEntryListParams,\n \"fields\" | \"search\" | \"where\"\n> {\n where?: IListTaskLogParamsWhere;\n}\n\nexport interface ITaskCreateData<T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput> {\n definitionId: string;\n name: string;\n input: T;\n parentId?: string;\n}\n\nexport interface ITaskUpdateData<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n> {\n name?: string;\n input?: I;\n output?: O;\n taskStatus?: TaskDataStatus;\n executionName?: string;\n startedOn?: string;\n finishedOn?: string;\n eventResponse?: GenericRecord;\n iterations?: number;\n}\n\nexport interface ITaskLogCreateInput {\n executionName: string;\n iteration: number;\n}\n\nexport interface ITaskLogUpdateInput {\n items?: ITaskLogItem[];\n}\n\nexport interface ITasksContextCrudObject {\n /**\n * Models\n */\n getTaskModel(): Promise<CmsModel>;\n getLogModel(): Promise<CmsModel>;\n /**\n * Tasks\n */\n getTask<\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n id: string\n ): Promise<IGetTaskResponse<T, O> | null>;\n listTasks<\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params?: IListTaskParams\n ): Promise<IListTasksResponse<T, O>>;\n createTask<T extends TaskService.TaskInput = TaskService.TaskInput>(\n task: ITaskCreateData<T>\n ): Promise<ICreateTaskResponse<T>>;\n updateTask<\n T extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n id: string,\n data: Partial<ITaskUpdateData<T, O>>\n ): Promise<IUpdateTaskResponse<T, O>>;\n deleteTask(id: string): Promise<IDeleteTaskResponse>;\n /**\n * Recursively delete a task, its logs (if any were written), and its entire\n * descendant subtree. Best-effort: per-record failures are logged and swallowed,\n * the method never throws.\n */\n cleanupTaskSubtree(id: string): Promise<void>;\n /**\n * Logs\n */\n createLog(task: Pick<ITask, \"id\">, data: ITaskLogCreateInput): Promise<ITaskLog>;\n updateLog(id: string, data: ITaskLogUpdateInput): Promise<ITaskLog>;\n deleteLog(id: string): Promise<boolean>;\n getLog(id: string): Promise<ITaskLog | null>;\n getLatestLog(taskId: string): Promise<ITaskLog>;\n listLogs(params: IListTaskLogParams): Promise<IListTaskLogsResponse>;\n}\n\nexport interface ITasksContextDefinitionObject {\n getDefinition: <\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n >(\n id: string\n ) => TaskDefinition.Runnable<I, O> | null;\n listDefinitions: () => TaskDefinition.Interface[];\n}\n\nexport interface ITaskTriggerParams<I = ITaskDataInput> {\n parent?: Pick<ITask, \"id\">;\n definition: string;\n name?: string;\n input?: I;\n delay?: number;\n}\n\nexport interface ITaskAbortParams {\n id: string;\n message?: string;\n}\n\nexport interface ITasksContextServiceObject {\n trigger: <\n T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params: ITaskTriggerParams<T>\n ) => Promise<Result<ITask<T, O>, BaseError>>;\n abort: <\n T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params: ITaskAbortParams\n ) => Promise<Result<ITask<T, O>, BaseError>>;\n fetchServiceInfo: (input: ITask<any, any> | string) => Promise<Result<IServiceInfo, BaseError>>;\n}\n\nexport interface ITasksContextObject\n extends ITasksContextCrudObject, ITasksContextDefinitionObject, ITasksContextServiceObject {}\n\nexport interface Context extends BaseContext {\n tasks: ITasksContextObject;\n}\n\nexport interface TaskPermission extends SecurityPermission {\n name: \"task\";\n rwd?: string;\n}\n\nexport type ITask<\n I extends TaskService.TaskInput = TaskService.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n> = TaskService.Task<I, O>;\n\nexport type SelfCleanup = TaskDefinition.SelfCleanup;\nexport type SelfCleanupEvent = TaskDefinition.SelfCleanupEvent;\n"],"names":["TaskLogItemType","TaskDataStatus"],"mappings":";;;;AAuBO,IAAKA,wBAAeA,WAAAA,GAAAA,SAAfA,eAAe;;;WAAfA;;AAwCL,IAAKC,uBAAcA,WAAAA,GAAAA,SAAdA,cAAc;;;;;;WAAdA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/background-tasks",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.6.0-alpha.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -19,39 +19,43 @@
|
|
|
19
19
|
},
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@
|
|
23
|
-
"@
|
|
24
|
-
"@webiny/
|
|
25
|
-
"@webiny/api
|
|
26
|
-
"@webiny/
|
|
27
|
-
"@webiny/
|
|
28
|
-
"@webiny/
|
|
29
|
-
"@webiny/
|
|
30
|
-
"@webiny/
|
|
31
|
-
"@webiny/
|
|
32
|
-
"@webiny/
|
|
33
|
-
"@webiny/handler
|
|
34
|
-
"@webiny/icons": "6.
|
|
35
|
-
"@webiny/plugins": "6.
|
|
36
|
-
"@webiny/sdk": "6.
|
|
37
|
-
"@webiny/utils": "6.
|
|
22
|
+
"@graphql-tools/merge": "9.2.3",
|
|
23
|
+
"@graphql-tools/schema": "10.1.0",
|
|
24
|
+
"@webiny/admin-ui": "6.6.0-alpha.1",
|
|
25
|
+
"@webiny/api": "6.6.0-alpha.1",
|
|
26
|
+
"@webiny/api-core": "6.6.0-alpha.1",
|
|
27
|
+
"@webiny/api-graphql": "6.6.0-alpha.1",
|
|
28
|
+
"@webiny/api-headless-cms": "6.6.0-alpha.1",
|
|
29
|
+
"@webiny/app": "6.6.0-alpha.1",
|
|
30
|
+
"@webiny/app-admin": "6.6.0-alpha.1",
|
|
31
|
+
"@webiny/error": "6.6.0-alpha.1",
|
|
32
|
+
"@webiny/feature": "6.6.0-alpha.1",
|
|
33
|
+
"@webiny/handler": "6.6.0-alpha.1",
|
|
34
|
+
"@webiny/icons": "6.6.0-alpha.1",
|
|
35
|
+
"@webiny/plugins": "6.6.0-alpha.1",
|
|
36
|
+
"@webiny/sdk": "6.6.0-alpha.1",
|
|
37
|
+
"@webiny/utils": "6.6.0-alpha.1",
|
|
38
38
|
"deep-equal": "2.2.3",
|
|
39
|
+
"graphql": "16.14.2",
|
|
39
40
|
"lodash": "4.18.1",
|
|
40
|
-
"mobx": "
|
|
41
|
-
"mobx-react-lite": "
|
|
42
|
-
"object-merge-advanced": "14.
|
|
41
|
+
"mobx": "7.0.3",
|
|
42
|
+
"mobx-react-lite": "5.0.3",
|
|
43
|
+
"object-merge-advanced": "14.2.0",
|
|
43
44
|
"object-sizeof": "2.6.5",
|
|
44
45
|
"react": "18.3.1",
|
|
45
46
|
"react-dom": "18.3.1",
|
|
46
47
|
"zod": "4.4.3"
|
|
47
48
|
},
|
|
48
49
|
"devDependencies": {
|
|
49
|
-
"@webiny/
|
|
50
|
-
"@webiny/
|
|
50
|
+
"@webiny/api-core-testing": "6.6.0-alpha.1",
|
|
51
|
+
"@webiny/build-tools": "6.6.0-alpha.1",
|
|
52
|
+
"@webiny/di": "1.1.0",
|
|
53
|
+
"@webiny/event-handler-core": "6.6.0-alpha.1",
|
|
54
|
+
"@webiny/wcp": "6.6.0-alpha.1",
|
|
51
55
|
"rimraf": "6.1.3",
|
|
52
56
|
"type-fest": "5.8.0",
|
|
53
|
-
"typescript": "
|
|
54
|
-
"vitest": "4.1.
|
|
57
|
+
"typescript": "7.0.2",
|
|
58
|
+
"vitest": "4.1.11"
|
|
55
59
|
},
|
|
56
60
|
"publishConfig": {
|
|
57
61
|
"access": "public"
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { createRunner } from "./runner.js";
|
|
2
|
+
export type { ICreateRunnerParams, ICreateRunnerParamsOnContinueCallable, ICreateRunnerParamsOnContinueCallableParams, IExecuteEvent } from "./runner.js";
|
|
3
|
+
export { createMockTaskService } from "./mockTaskTriggerTransportPlugin.js";
|
package/testing/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const createMockTaskService = ()=>({
|
|
2
|
+
async send () {
|
|
3
|
+
return {
|
|
4
|
+
Entries: [],
|
|
5
|
+
$metadata: {},
|
|
6
|
+
FailedEntryCount: 0
|
|
7
|
+
};
|
|
8
|
+
},
|
|
9
|
+
async fetch (input) {
|
|
10
|
+
return {
|
|
11
|
+
fetched: true,
|
|
12
|
+
input
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
export { createMockTaskService };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=mockTaskTriggerTransportPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing/mockTaskTriggerTransportPlugin.js","sources":["../../src/testing/mockTaskTriggerTransportPlugin.ts"],"sourcesContent":["import type { TaskService } from \"~/api/domain/TaskService.js\";\n\nexport const createMockTaskService = (): TaskService.Interface => {\n return {\n async send() {\n return {\n Entries: [],\n $metadata: {},\n FailedEntryCount: 0\n };\n },\n async fetch(input: any) {\n return {\n fetched: true,\n input\n } as any;\n }\n };\n};\n"],"names":["createMockTaskService","input"],"mappings":"AAEO,MAAMA,wBAAwB,IAC1B;QACH,MAAM;YACF,OAAO;gBACH,SAAS,EAAE;gBACX,WAAW,CAAC;gBACZ,kBAAkB;YACtB;QACJ;QACA,MAAM,OAAMC,KAAU;YAClB,OAAO;gBACH,SAAS;gBACTA;YACJ;QACJ;IACJ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Context, IResponseContinueResult, ITaskEvent } from "../api/types.js";
|
|
2
|
+
import { ResponseContinueResult } from "../api/response/ResponseContinueResult.js";
|
|
3
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
4
|
+
export interface ICreateRunnerParamsOnContinueCallableParams {
|
|
5
|
+
taskId: string;
|
|
6
|
+
iteration: number;
|
|
7
|
+
result: IResponseContinueResult;
|
|
8
|
+
}
|
|
9
|
+
export interface ICreateRunnerParamsOnContinueCallable {
|
|
10
|
+
(params: ICreateRunnerParamsOnContinueCallableParams): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export interface ICreateRunnerParams<I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput> {
|
|
13
|
+
context: Context;
|
|
14
|
+
task: TaskDefinition.Interface<I, O>;
|
|
15
|
+
getRemainingTimeInMills?: () => number;
|
|
16
|
+
onContinue?: ICreateRunnerParamsOnContinueCallable;
|
|
17
|
+
}
|
|
18
|
+
export type IExecuteEvent = Pick<ITaskEvent, "webinyTaskId"> & Partial<Pick<ITaskEvent, "tenant">>;
|
|
19
|
+
export declare const createRunner: <I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput>(params: ICreateRunnerParams<I, O>) => (event: IExecuteEvent) => Promise<import("~/api/types.js").IResponseAbortedResult | import("~/api/types.js").IResponseDoneResult<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput> | import("~/api/types.js").IResponseErrorResult | ResponseContinueResult<any>>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { TaskRunner } from "../api/runner/index.js";
|
|
2
|
+
import { timerFactory } from "@webiny/utils/features/Timer/factory.js";
|
|
3
|
+
import { TaskEventValidation } from "../api/runner/TaskEventValidation.js";
|
|
4
|
+
import { ResponseContinueResult } from "../api/response/ResponseContinueResult.js";
|
|
5
|
+
import { createMockTaskService } from "./mockTaskTriggerTransportPlugin.js";
|
|
6
|
+
import { TaskService } from "../api/domain/TaskService.js";
|
|
7
|
+
const createRunner = (params)=>{
|
|
8
|
+
params.context.container.registerInstance(TaskService, createMockTaskService());
|
|
9
|
+
const runner = new TaskRunner(params.context, timerFactory({
|
|
10
|
+
getRemainingTimeInMillis: ()=>{
|
|
11
|
+
if (!params.getRemainingTimeInMills) return 300000;
|
|
12
|
+
return params.getRemainingTimeInMills();
|
|
13
|
+
}
|
|
14
|
+
}), new TaskEventValidation());
|
|
15
|
+
const execute = async (event)=>await runner.run({
|
|
16
|
+
tenant: "root",
|
|
17
|
+
...event,
|
|
18
|
+
stateMachineId: "aMockStateMachineId",
|
|
19
|
+
webinyTaskDefinitionId: params.task.id,
|
|
20
|
+
endpoint: "manage",
|
|
21
|
+
executionName: "aMockExecutionName"
|
|
22
|
+
});
|
|
23
|
+
return async (event)=>{
|
|
24
|
+
let iteration = 1;
|
|
25
|
+
let result;
|
|
26
|
+
while(result = await execute(event)){
|
|
27
|
+
if (result instanceof ResponseContinueResult && params.onContinue) {
|
|
28
|
+
await params.onContinue({
|
|
29
|
+
taskId: event.webinyTaskId,
|
|
30
|
+
iteration,
|
|
31
|
+
result
|
|
32
|
+
});
|
|
33
|
+
iteration++;
|
|
34
|
+
console.debug(`Continuing task ${params.task.id} #${iteration}.`);
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export { createRunner };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing/runner.js","sources":["../../src/testing/runner.ts"],"sourcesContent":["import type { Context, IResponseContinueResult, IResponseResult, ITaskEvent } from \"~/api/types.js\";\nimport { TaskRunner } from \"~/api/runner/index.js\";\nimport { timerFactory } from \"@webiny/utils/features/Timer/factory.js\";\nimport { TaskEventValidation } from \"~/api/runner/TaskEventValidation.js\";\nimport { ResponseContinueResult } from \"~/api/response/ResponseContinueResult.js\";\nimport { createMockTaskService } from \"./mockTaskTriggerTransportPlugin.js\";\nimport { TaskService } from \"~/api/domain/TaskService.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface ICreateRunnerParamsOnContinueCallableParams {\n taskId: string;\n iteration: number;\n result: IResponseContinueResult;\n}\n\nexport interface ICreateRunnerParamsOnContinueCallable {\n (params: ICreateRunnerParamsOnContinueCallableParams): Promise<void>;\n}\n\nexport interface ICreateRunnerParams<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n> {\n context: Context;\n task: TaskDefinition.Interface<I, O>;\n getRemainingTimeInMills?: () => number;\n onContinue?: ICreateRunnerParamsOnContinueCallable;\n}\n\nexport type IExecuteEvent = Pick<ITaskEvent, \"webinyTaskId\"> & Partial<Pick<ITaskEvent, \"tenant\">>;\n\nexport const createRunner = <\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n>(\n params: ICreateRunnerParams<I, O>\n) => {\n params.context.container.registerInstance(TaskService, createMockTaskService());\n const runner = new TaskRunner(\n params.context,\n timerFactory({\n getRemainingTimeInMillis: () => {\n if (!params.getRemainingTimeInMills) {\n return 5 * 60 * 1000;\n }\n return params.getRemainingTimeInMills();\n }\n }),\n new TaskEventValidation()\n );\n\n const execute = async (event: IExecuteEvent) => {\n return await runner.run({\n tenant: \"root\",\n ...event,\n stateMachineId: \"aMockStateMachineId\",\n webinyTaskDefinitionId: params.task.id,\n endpoint: \"manage\",\n executionName: \"aMockExecutionName\"\n });\n };\n\n return async (event: IExecuteEvent) => {\n let iteration = 1;\n let result: IResponseResult;\n while ((result = await execute(event))) {\n if (result instanceof ResponseContinueResult && params.onContinue) {\n await params.onContinue({\n taskId: event.webinyTaskId,\n iteration,\n result\n });\n iteration++;\n console.debug(`Continuing task ${params.task.id} #${iteration}.`);\n continue;\n }\n return result;\n }\n return result;\n };\n};\n"],"names":["createRunner","params","TaskService","createMockTaskService","runner","TaskRunner","timerFactory","TaskEventValidation","execute","event","iteration","result","ResponseContinueResult","console"],"mappings":";;;;;;AA+BO,MAAMA,eAAe,CAIxBC;IAEAA,OAAO,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAACC,aAAaC;IACvD,MAAMC,SAAS,IAAIC,WACfJ,OAAO,OAAO,EACdK,aAAa;QACT,0BAA0B;YACtB,IAAI,CAACL,OAAO,uBAAuB,EAC/B,OAAO;YAEX,OAAOA,OAAO,uBAAuB;QACzC;IACJ,IACA,IAAIM;IAGR,MAAMC,UAAU,OAAOC,QACZ,MAAML,OAAO,GAAG,CAAC;YACpB,QAAQ;YACR,GAAGK,KAAK;YACR,gBAAgB;YAChB,wBAAwBR,OAAO,IAAI,CAAC,EAAE;YACtC,UAAU;YACV,eAAe;QACnB;IAGJ,OAAO,OAAOQ;QACV,IAAIC,YAAY;QAChB,IAAIC;QACJ,MAAQA,SAAS,MAAMH,QAAQC,OAAS;YACpC,IAAIE,kBAAkBC,0BAA0BX,OAAO,UAAU,EAAE;gBAC/D,MAAMA,OAAO,UAAU,CAAC;oBACpB,QAAQQ,MAAM,YAAY;oBAC1BC;oBACAC;gBACJ;gBACAD;gBACAG,QAAQ,KAAK,CAAC,CAAC,gBAAgB,EAAEZ,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,EAAES,UAAU,CAAC,CAAC;gBAChE;YACJ;YACA;QACJ;QACA,OAAOC;IACX;AACJ"}
|
package/api/context.d.ts
DELETED
package/api/context.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { ContextPlugin } from "@webiny/api";
|
|
2
|
-
import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
3
|
-
import { RunnableTaskDecorator } from "./decorators/RunnableTaskDecorator.js";
|
|
4
|
-
import { SelfCleaningTaskDecorator } from "./decorators/SelfCleaningTaskDecorator.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 { createDefinitionCrud } from "./crud/definition.tasks.js";
|
|
9
|
-
import { createServiceCrud } from "./crud/service.tasks.js";
|
|
10
|
-
import { createTaskCrud } from "./crud/crud.tasks.js";
|
|
11
|
-
import { createServicePlugins } from "./service/index.js";
|
|
12
|
-
import { TaskExecutionContextFeature } from "./features/TaskExecutionContext/feature.js";
|
|
13
|
-
import { GetTaskDefinitionFeature } from "./features/GetTaskDefinition/feature.js";
|
|
14
|
-
import { ListTaskDefinitionsFeature } from "./features/ListTaskDefinitions/feature.js";
|
|
15
|
-
import { CleanupTaskSubtreeUseCase, CleanupTaskSubtreeUseCaseImpl } from "./features/CleanupTaskSubtree/index.js";
|
|
16
|
-
import { TestingRunTaskDefinition } from "./tasks/testingRunTask.js";
|
|
17
|
-
import { createRegisterExtensionPlugin } from "@webiny/handler";
|
|
18
|
-
import { BackgroundTaskSettingsModel } from "./models/BackgroundTaskSettingsModel.js";
|
|
19
|
-
import { GetBackgroundTaskSettingsFeature } from "./features/GetBackgroundTaskSettings/feature.js";
|
|
20
|
-
import { UpdateBackgroundTaskSettingsFeature } from "./features/UpdateBackgroundTaskSettings/feature.js";
|
|
21
|
-
import { BackgroundTaskPermissionsFeature } from "./features/BackgroundTaskPermissions/feature.js";
|
|
22
|
-
import { createBackgroundTaskSettingsGraphQL } from "./graphql/BackgroundTaskSettingsSchema.js";
|
|
23
|
-
const createTasksCrud = ()=>{
|
|
24
|
-
const tasksCrudPlugin = new ContextPlugin(async (context)=>{
|
|
25
|
-
context.container.registerDecorator(RunnableTaskDecorator);
|
|
26
|
-
context.container.registerDecorator(SelfCleaningTaskDecorator);
|
|
27
|
-
GetTaskDefinitionFeature.register(context.container);
|
|
28
|
-
ListTaskDefinitionsFeature.register(context.container);
|
|
29
|
-
context.tasks = {
|
|
30
|
-
...createDefinitionCrud(context),
|
|
31
|
-
...createTaskCrud(context),
|
|
32
|
-
...createServiceCrud(context)
|
|
33
|
-
};
|
|
34
|
-
context.container.registerInstance(CleanupTaskSubtreeUseCase, new CleanupTaskSubtreeUseCaseImpl(context));
|
|
35
|
-
});
|
|
36
|
-
tasksCrudPlugin.name = "tasks.context";
|
|
37
|
-
return tasksCrudPlugin;
|
|
38
|
-
};
|
|
39
|
-
const createTasksContext = ()=>{
|
|
40
|
-
const modelsPlugin = createRegisterExtensionPlugin((context)=>{
|
|
41
|
-
context.container.register(TaskPrivateModel);
|
|
42
|
-
context.container.register(TaskLogPrivateModel);
|
|
43
|
-
context.container.register(BackgroundTaskSettingsModel);
|
|
44
|
-
});
|
|
45
|
-
return [
|
|
46
|
-
...createServicePlugins(),
|
|
47
|
-
createTasksCrud(),
|
|
48
|
-
modelsPlugin
|
|
49
|
-
];
|
|
50
|
-
};
|
|
51
|
-
const createBackgroundTaskContext = ()=>[
|
|
52
|
-
...createTasksContext(),
|
|
53
|
-
...createBackgroundTaskSettingsGraphQL(),
|
|
54
|
-
new ContextPlugin((context)=>{
|
|
55
|
-
context.container.registerInstance(TaskService, context.tasks);
|
|
56
|
-
TaskExecutionContextFeature.register(context.container);
|
|
57
|
-
context.container.register(TaskController);
|
|
58
|
-
context.container.register(TestingRunTaskDefinition);
|
|
59
|
-
BackgroundTaskPermissionsFeature.register(context.container);
|
|
60
|
-
GetBackgroundTaskSettingsFeature.register(context.container);
|
|
61
|
-
UpdateBackgroundTaskSettingsFeature.register(context.container);
|
|
62
|
-
})
|
|
63
|
-
];
|
|
64
|
-
export { createBackgroundTaskContext };
|
|
65
|
-
|
|
66
|
-
//# sourceMappingURL=context.js.map
|
package/api/context.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api/context.js","sources":["../../src/api/context.ts"],"sourcesContent":["import type { Plugin } from \"@webiny/plugins\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { RunnableTaskDecorator } from \"./decorators/RunnableTaskDecorator.js\";\nimport { SelfCleaningTaskDecorator } from \"./decorators/SelfCleaningTaskDecorator.js\";\nimport { TaskController } from \"./features/TaskController/index.js\";\nimport type { Context } from \"~/api/types.js\";\nimport { TaskPrivateModel } from \"./crud/TaskPrivateModel.js\";\nimport { TaskLogPrivateModel } from \"./crud/TaskLogPrivateModel.js\";\nimport { createDefinitionCrud } from \"./crud/definition.tasks.js\";\nimport { createServiceCrud } from \"~/api/crud/service.tasks.js\";\nimport { createTaskCrud } from \"./crud/crud.tasks.js\";\nimport { createServicePlugins } from \"~/api/service/index.js\";\nimport { TaskExecutionContextFeature } from \"~/api/features/TaskExecutionContext/feature.js\";\nimport { GetTaskDefinitionFeature } from \"~/api/features/GetTaskDefinition/feature.js\";\nimport { ListTaskDefinitionsFeature } from \"~/api/features/ListTaskDefinitions/feature.js\";\nimport {\n CleanupTaskSubtreeUseCase,\n CleanupTaskSubtreeUseCaseImpl\n} from \"~/api/features/CleanupTaskSubtree/index.js\";\nimport { TestingRunTaskDefinition } from \"~/api/tasks/testingRunTask.js\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport { BackgroundTaskSettingsModel } from \"~/api/models/BackgroundTaskSettingsModel.js\";\nimport { GetBackgroundTaskSettingsFeature } from \"~/api/features/GetBackgroundTaskSettings/feature.js\";\nimport { UpdateBackgroundTaskSettingsFeature } from \"~/api/features/UpdateBackgroundTaskSettings/feature.js\";\nimport { BackgroundTaskPermissionsFeature } from \"~/api/features/BackgroundTaskPermissions/feature.js\";\nimport { createBackgroundTaskSettingsGraphQL } from \"~/api/graphql/BackgroundTaskSettingsSchema.js\";\n\nconst createTasksCrud = () => {\n const tasksCrudPlugin = new ContextPlugin<Context>(async context => {\n // Register the RunnableTaskDecorator to wrap all TaskDefinition instances\n context.container.registerDecorator(RunnableTaskDecorator);\n context.container.registerDecorator(SelfCleaningTaskDecorator);\n\n // Register task definition use cases\n GetTaskDefinitionFeature.register(context.container);\n ListTaskDefinitionsFeature.register(context.container);\n\n context.tasks = {\n ...createDefinitionCrud(context),\n ...createTaskCrud(context),\n ...createServiceCrud(context)\n };\n\n // The cleanup use case is a thin wrapper around `context.tasks.cleanupTaskSubtree`,\n // so it must register AFTER the CRUD is wired onto the context.\n context.container.registerInstance(\n CleanupTaskSubtreeUseCase,\n new CleanupTaskSubtreeUseCaseImpl(context)\n );\n });\n\n tasksCrudPlugin.name = \"tasks.context\";\n\n return tasksCrudPlugin;\n};\n\nconst createTasksContext = (): Plugin[] => {\n const modelsPlugin = createRegisterExtensionPlugin(context => {\n context.container.register(TaskPrivateModel);\n context.container.register(TaskLogPrivateModel);\n context.container.register(BackgroundTaskSettingsModel);\n });\n\n return [...createServicePlugins(), createTasksCrud(), modelsPlugin];\n};\n\nexport const createBackgroundTaskContext = (): Plugin[] => {\n return [\n ...createTasksContext(),\n ...createBackgroundTaskSettingsGraphQL(),\n new ContextPlugin<Context>(context => {\n // Register legacy tasks context via a new abstraction\n context.container.registerInstance(TaskService, context.tasks);\n\n // Register TaskExecutionContext EARLY (singleton, empty)\n TaskExecutionContextFeature.register(context.container);\n\n // Register TaskController (depends on TaskExecutionContext)\n context.container.register(TaskController);\n\n // Register a test task\n context.container.register(TestingRunTaskDefinition);\n\n // Permissions.\n BackgroundTaskPermissionsFeature.register(context.container);\n\n // Settings features.\n GetBackgroundTaskSettingsFeature.register(context.container);\n UpdateBackgroundTaskSettingsFeature.register(context.container);\n })\n ];\n};\n"],"names":["createTasksCrud","tasksCrudPlugin","ContextPlugin","context","RunnableTaskDecorator","SelfCleaningTaskDecorator","GetTaskDefinitionFeature","ListTaskDefinitionsFeature","createDefinitionCrud","createTaskCrud","createServiceCrud","CleanupTaskSubtreeUseCase","CleanupTaskSubtreeUseCaseImpl","createTasksContext","modelsPlugin","createRegisterExtensionPlugin","TaskPrivateModel","TaskLogPrivateModel","BackgroundTaskSettingsModel","createServicePlugins","createBackgroundTaskContext","createBackgroundTaskSettingsGraphQL","TaskService","TaskExecutionContextFeature","TaskController","TestingRunTaskDefinition","BackgroundTaskPermissionsFeature","GetBackgroundTaskSettingsFeature","UpdateBackgroundTaskSettingsFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,kBAAkB;IACpB,MAAMC,kBAAkB,IAAIC,cAAuB,OAAMC;QAErDA,QAAQ,SAAS,CAAC,iBAAiB,CAACC;QACpCD,QAAQ,SAAS,CAAC,iBAAiB,CAACE;QAGpCC,yBAAyB,QAAQ,CAACH,QAAQ,SAAS;QACnDI,2BAA2B,QAAQ,CAACJ,QAAQ,SAAS;QAErDA,QAAQ,KAAK,GAAG;YACZ,GAAGK,qBAAqBL,QAAQ;YAChC,GAAGM,eAAeN,QAAQ;YAC1B,GAAGO,kBAAkBP,QAAQ;QACjC;QAIAA,QAAQ,SAAS,CAAC,gBAAgB,CAC9BQ,2BACA,IAAIC,8BAA8BT;IAE1C;IAEAF,gBAAgB,IAAI,GAAG;IAEvB,OAAOA;AACX;AAEA,MAAMY,qBAAqB;IACvB,MAAMC,eAAeC,8BAA8BZ,CAAAA;QAC/CA,QAAQ,SAAS,CAAC,QAAQ,CAACa;QAC3Bb,QAAQ,SAAS,CAAC,QAAQ,CAACc;QAC3Bd,QAAQ,SAAS,CAAC,QAAQ,CAACe;IAC/B;IAEA,OAAO;WAAIC;QAAwBnB;QAAmBc;KAAa;AACvE;AAEO,MAAMM,8BAA8B,IAChC;WACAP;WACAQ;QACH,IAAInB,cAAuBC,CAAAA;YAEvBA,QAAQ,SAAS,CAAC,gBAAgB,CAACmB,aAAanB,QAAQ,KAAK;YAG7DoB,4BAA4B,QAAQ,CAACpB,QAAQ,SAAS;YAGtDA,QAAQ,SAAS,CAAC,QAAQ,CAACqB;YAG3BrB,QAAQ,SAAS,CAAC,QAAQ,CAACsB;YAG3BC,iCAAiC,QAAQ,CAACvB,QAAQ,SAAS;YAG3DwB,iCAAiC,QAAQ,CAACxB,QAAQ,SAAS;YAC3DyB,oCAAoC,QAAQ,CAACzB,QAAQ,SAAS;QAClE;KACH"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
|
|
2
|
-
import { ContextPlugin } from "@webiny/handler";
|
|
3
|
-
import { GetBackgroundTaskSettingsRepository } from "../features/GetBackgroundTaskSettings/abstractions.js";
|
|
4
|
-
import { UpdateBackgroundTaskSettingsUseCase } from "../features/UpdateBackgroundTaskSettings/abstractions.js";
|
|
5
|
-
import { checkPermissions } from "./checkPermissions.js";
|
|
6
|
-
const resolve = async (fn)=>{
|
|
7
|
-
try {
|
|
8
|
-
const data = await fn();
|
|
9
|
-
return {
|
|
10
|
-
data,
|
|
11
|
-
error: null
|
|
12
|
-
};
|
|
13
|
-
} catch (error) {
|
|
14
|
-
return {
|
|
15
|
-
data: null,
|
|
16
|
-
error: {
|
|
17
|
-
message: error.message,
|
|
18
|
-
code: error.code,
|
|
19
|
-
data: error.data
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
const createBackgroundTaskSettingsGraphQL = ()=>{
|
|
25
|
-
const plugin = new ContextPlugin(async (ctx)=>{
|
|
26
|
-
if (!ctx.tenancy.getCurrentTenant()) return;
|
|
27
|
-
const schema = new GraphQLSchemaPlugin({
|
|
28
|
-
typeDefs: `
|
|
29
|
-
type WebinyBackgroundTaskSettings {
|
|
30
|
-
retentionDays: Int
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
type WebinyBackgroundTaskSettingsResponse {
|
|
34
|
-
data: WebinyBackgroundTaskSettings
|
|
35
|
-
error: WebinyBackgroundTaskError
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
input UpdateBackgroundTaskSettingsInput {
|
|
39
|
-
retentionDays: Int
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
extend type WebinyBackgroundTaskQuery {
|
|
43
|
-
getSettings: WebinyBackgroundTaskSettingsResponse
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
extend type WebinyBackgroundTaskMutation {
|
|
47
|
-
updateSettings(
|
|
48
|
-
input: UpdateBackgroundTaskSettingsInput!
|
|
49
|
-
): WebinyBackgroundTaskSettingsResponse
|
|
50
|
-
}
|
|
51
|
-
`,
|
|
52
|
-
resolvers: {
|
|
53
|
-
WebinyBackgroundTaskQuery: {
|
|
54
|
-
getSettings: async (_, __, context)=>resolve(async ()=>{
|
|
55
|
-
await checkPermissions(context, {
|
|
56
|
-
rwd: "r"
|
|
57
|
-
});
|
|
58
|
-
const repository = context.container.resolve(GetBackgroundTaskSettingsRepository);
|
|
59
|
-
const result = await repository.execute();
|
|
60
|
-
if (result.isFail()) throw result.error;
|
|
61
|
-
return result.value;
|
|
62
|
-
})
|
|
63
|
-
},
|
|
64
|
-
WebinyBackgroundTaskMutation: {
|
|
65
|
-
updateSettings: async (_, args, context)=>resolve(async ()=>{
|
|
66
|
-
const useCase = context.container.resolve(UpdateBackgroundTaskSettingsUseCase);
|
|
67
|
-
const result = await useCase.execute(args.input);
|
|
68
|
-
if (result.isFail()) throw result.error;
|
|
69
|
-
return result.value;
|
|
70
|
-
})
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
schema.name = "backgroundTasks.settings.graphql.schema";
|
|
75
|
-
ctx.plugins.register(schema);
|
|
76
|
-
});
|
|
77
|
-
plugin.name = "backgroundTasks.settings.graphql";
|
|
78
|
-
return [
|
|
79
|
-
plugin
|
|
80
|
-
];
|
|
81
|
-
};
|
|
82
|
-
export { createBackgroundTaskSettingsGraphQL };
|
|
83
|
-
|
|
84
|
-
//# sourceMappingURL=BackgroundTaskSettingsSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api/graphql/BackgroundTaskSettingsSchema.js","sources":["../../../src/api/graphql/BackgroundTaskSettingsSchema.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { ContextPlugin } from \"@webiny/handler\";\nimport type { Context } from \"~/api/types.js\";\nimport { GetBackgroundTaskSettingsRepository } from \"~/api/features/GetBackgroundTaskSettings/abstractions.js\";\nimport { UpdateBackgroundTaskSettingsUseCase } from \"~/api/features/UpdateBackgroundTaskSettings/abstractions.js\";\nimport type { IUpdateBackgroundTaskSettingsInput } from \"~/api/features/UpdateBackgroundTaskSettings/abstractions.js\";\nimport type { Plugin } from \"@webiny/plugins/types.js\";\nimport { checkPermissions } from \"./checkPermissions.js\";\n\ninterface IUpdateSettingsArgs {\n input: IUpdateBackgroundTaskSettingsInput;\n}\n\nconst resolve = async <T = unknown>(fn: () => Promise<T>) => {\n try {\n const data = await fn();\n return { data, error: null };\n } catch (error: any) {\n return {\n data: null,\n error: {\n message: error.message,\n code: error.code,\n data: error.data\n }\n };\n }\n};\n\nexport const createBackgroundTaskSettingsGraphQL = (): Plugin[] => {\n const plugin = new ContextPlugin<Context>(async ctx => {\n if (!ctx.tenancy.getCurrentTenant()) {\n return;\n }\n\n const schema = new GraphQLSchemaPlugin<Context>({\n typeDefs: /* GraphQL */ `\n type WebinyBackgroundTaskSettings {\n retentionDays: Int\n }\n\n type WebinyBackgroundTaskSettingsResponse {\n data: WebinyBackgroundTaskSettings\n error: WebinyBackgroundTaskError\n }\n\n input UpdateBackgroundTaskSettingsInput {\n retentionDays: Int\n }\n\n extend type WebinyBackgroundTaskQuery {\n getSettings: WebinyBackgroundTaskSettingsResponse\n }\n\n extend type WebinyBackgroundTaskMutation {\n updateSettings(\n input: UpdateBackgroundTaskSettingsInput!\n ): WebinyBackgroundTaskSettingsResponse\n }\n `,\n resolvers: {\n WebinyBackgroundTaskQuery: {\n getSettings: async (_, __, context) => {\n return resolve(async () => {\n await checkPermissions(context, { rwd: \"r\" });\n const repository = context.container.resolve(\n GetBackgroundTaskSettingsRepository\n );\n const result = await repository.execute();\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n }\n },\n WebinyBackgroundTaskMutation: {\n updateSettings: async (_, args: IUpdateSettingsArgs, context) => {\n return resolve(async () => {\n const useCase = context.container.resolve(\n UpdateBackgroundTaskSettingsUseCase\n );\n const result = await useCase.execute(args.input);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n }\n }\n }\n });\n\n schema.name = \"backgroundTasks.settings.graphql.schema\";\n ctx.plugins.register(schema);\n });\n\n plugin.name = \"backgroundTasks.settings.graphql\";\n\n return [plugin];\n};\n"],"names":["resolve","fn","data","error","createBackgroundTaskSettingsGraphQL","plugin","ContextPlugin","ctx","schema","GraphQLSchemaPlugin","_","__","context","checkPermissions","repository","GetBackgroundTaskSettingsRepository","result","args","useCase","UpdateBackgroundTaskSettingsUseCase"],"mappings":";;;;;AAaA,MAAMA,UAAU,OAAoBC;IAChC,IAAI;QACA,MAAMC,OAAO,MAAMD;QACnB,OAAO;YAAEC;YAAM,OAAO;QAAK;IAC/B,EAAE,OAAOC,OAAY;QACjB,OAAO;YACH,MAAM;YACN,OAAO;gBACH,SAASA,MAAM,OAAO;gBACtB,MAAMA,MAAM,IAAI;gBAChB,MAAMA,MAAM,IAAI;YACpB;QACJ;IACJ;AACJ;AAEO,MAAMC,sCAAsC;IAC/C,MAAMC,SAAS,IAAIC,cAAuB,OAAMC;QAC5C,IAAI,CAACA,IAAI,OAAO,CAAC,gBAAgB,IAC7B;QAGJ,MAAMC,SAAS,IAAIC,oBAA6B;YAC5C,UAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;YAuBzB,CAAC;YACD,WAAW;gBACP,2BAA2B;oBACvB,aAAa,OAAOC,GAAGC,IAAIC,UAChBZ,QAAQ;4BACX,MAAMa,iBAAiBD,SAAS;gCAAE,KAAK;4BAAI;4BAC3C,MAAME,aAAaF,QAAQ,SAAS,CAAC,OAAO,CACxCG;4BAEJ,MAAMC,SAAS,MAAMF,WAAW,OAAO;4BACvC,IAAIE,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;4BAEtB,OAAOA,OAAO,KAAK;wBACvB;gBAER;gBACA,8BAA8B;oBAC1B,gBAAgB,OAAON,GAAGO,MAA2BL,UAC1CZ,QAAQ;4BACX,MAAMkB,UAAUN,QAAQ,SAAS,CAAC,OAAO,CACrCO;4BAEJ,MAAMH,SAAS,MAAME,QAAQ,OAAO,CAACD,KAAK,KAAK;4BAC/C,IAAID,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;4BAEtB,OAAOA,OAAO,KAAK;wBACvB;gBAER;YACJ;QACJ;QAEAR,OAAO,IAAI,GAAG;QACdD,IAAI,OAAO,CAAC,QAAQ,CAACC;IACzB;IAEAH,OAAO,IAAI,GAAG;IAEd,OAAO;QAACA;KAAO;AACnB"}
|
package/api/graphql/index.d.ts
DELETED