@webiny/tasks 6.3.0-beta.4 → 6.4.0-beta.0
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/context.js +31 -43
- package/context.js.map +1 -1
- package/crud/TaskLogPrivateModel.js +33 -27
- package/crud/TaskLogPrivateModel.js.map +1 -1
- package/crud/TaskPrivateModel.js +48 -39
- package/crud/TaskPrivateModel.js.map +1 -1
- package/crud/cleanupTaskSubtree.js +55 -69
- package/crud/cleanupTaskSubtree.js.map +1 -1
- package/crud/crud.tasks.js +289 -352
- package/crud/crud.tasks.js.map +1 -1
- package/crud/definition.tasks.js +13 -16
- package/crud/definition.tasks.js.map +1 -1
- package/crud/service.tasks.js +119 -155
- package/crud/service.tasks.js.map +1 -1
- package/decorators/RunnableTaskDecorator.js +61 -77
- package/decorators/RunnableTaskDecorator.js.map +1 -1
- package/decorators/SelfCleaningTaskDecorator.js +75 -89
- package/decorators/SelfCleaningTaskDecorator.js.map +1 -1
- package/domain/errors.js +35 -39
- package/domain/errors.js.map +1 -1
- package/events/TaskAfterCreateEvent.js +8 -5
- package/events/TaskAfterCreateEvent.js.map +1 -1
- package/events/TaskAfterDeleteEvent.js +8 -5
- package/events/TaskAfterDeleteEvent.js.map +1 -1
- package/events/TaskAfterUpdateEvent.js +8 -5
- package/events/TaskAfterUpdateEvent.js.map +1 -1
- package/events/TaskBeforeCreateEvent.js +8 -5
- package/events/TaskBeforeCreateEvent.js.map +1 -1
- package/events/TaskBeforeDeleteEvent.js +8 -5
- package/events/TaskBeforeDeleteEvent.js.map +1 -1
- package/events/TaskBeforeUpdateEvent.js +8 -5
- package/events/TaskBeforeUpdateEvent.js.map +1 -1
- package/events/abstractions.js +7 -36
- package/events/abstractions.js.map +1 -1
- package/events/index.js +0 -2
- package/features/AbortTask/AbortTaskUseCase.js +9 -8
- package/features/AbortTask/AbortTaskUseCase.js.map +1 -1
- package/features/AbortTask/abstractions.js +2 -1
- package/features/AbortTask/abstractions.js.map +1 -1
- package/features/AbortTask/feature.js +6 -5
- package/features/AbortTask/feature.js.map +1 -1
- package/features/AbortTask/index.js +0 -2
- package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +8 -7
- package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -1
- package/features/CleanupTaskSubtree/abstractions.js +2 -1
- package/features/CleanupTaskSubtree/abstractions.js.map +1 -1
- package/features/CleanupTaskSubtree/index.js +0 -2
- package/features/GetTask/GetTaskUseCase.js +8 -7
- package/features/GetTask/GetTaskUseCase.js.map +1 -1
- package/features/GetTask/abstractions.js +2 -1
- package/features/GetTask/abstractions.js.map +1 -1
- package/features/GetTask/feature.js +6 -5
- package/features/GetTask/feature.js.map +1 -1
- package/features/GetTask/index.js +0 -2
- package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +18 -16
- package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -1
- package/features/GetTaskDefinition/abstractions.js +2 -1
- package/features/GetTaskDefinition/abstractions.js.map +1 -1
- package/features/GetTaskDefinition/feature.js +6 -5
- package/features/GetTaskDefinition/feature.js.map +1 -1
- package/features/GetTaskDefinition/index.js +0 -2
- package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +18 -12
- package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -1
- package/features/ListTaskDefinitions/abstractions.js +2 -1
- package/features/ListTaskDefinitions/abstractions.js.map +1 -1
- package/features/ListTaskDefinitions/feature.js +6 -5
- package/features/ListTaskDefinitions/feature.js.map +1 -1
- package/features/ListTaskDefinitions/index.js +0 -2
- package/features/ListTasks/ListTasksUseCase.js +8 -7
- package/features/ListTasks/ListTasksUseCase.js.map +1 -1
- package/features/ListTasks/abstractions.js +2 -1
- package/features/ListTasks/abstractions.js.map +1 -1
- package/features/ListTasks/feature.js +6 -5
- package/features/ListTasks/feature.js.map +1 -1
- package/features/ListTasks/index.js +0 -2
- package/features/TaskController/TaskController.js +60 -60
- package/features/TaskController/TaskController.js.map +1 -1
- package/features/TaskController/augmentation.js +0 -3
- package/features/TaskController/index.js +0 -5
- package/features/TaskExecutionContext/TaskExecutionContext.js +38 -45
- package/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -1
- package/features/TaskExecutionContext/abstractions.js +2 -10
- package/features/TaskExecutionContext/abstractions.js.map +1 -1
- package/features/TaskExecutionContext/feature.js +6 -5
- package/features/TaskExecutionContext/feature.js.map +1 -1
- package/features/TaskExecutionContext/index.js +0 -2
- package/features/TriggerTask/TriggerTaskUseCase.js +9 -8
- package/features/TriggerTask/TriggerTaskUseCase.js.map +1 -1
- package/features/TriggerTask/abstractions.js +2 -1
- package/features/TriggerTask/abstractions.js.map +1 -1
- package/features/TriggerTask/feature.js +6 -5
- package/features/TriggerTask/feature.js.map +1 -1
- package/features/TriggerTask/index.js +0 -2
- package/global.js +0 -2
- package/graphql/checkPermissions.js +16 -35
- package/graphql/checkPermissions.js.map +1 -1
- package/graphql/index.js +154 -187
- package/graphql/index.js.map +1 -1
- package/graphql/utils.js +15 -14
- package/graphql/utils.js.map +1 -1
- package/handler/index.js +46 -53
- package/handler/index.js.map +1 -1
- package/handler/register.js +7 -15
- package/handler/register.js.map +1 -1
- package/handler/types.js +0 -3
- package/index.js +2 -4
- package/package.json +17 -17
- package/plugins/TaskServicePlugin.js +9 -6
- package/plugins/TaskServicePlugin.js.map +1 -1
- package/plugins/index.js +0 -2
- package/response/DatabaseResponse.js +113 -132
- package/response/DatabaseResponse.js.map +1 -1
- package/response/Response.js +78 -96
- package/response/Response.js.map +1 -1
- package/response/ResponseAbortedResult.js +8 -7
- package/response/ResponseAbortedResult.js.map +1 -1
- package/response/ResponseContinueResult.js +12 -14
- package/response/ResponseContinueResult.js.map +1 -1
- package/response/ResponseDoneResult.js +10 -9
- package/response/ResponseDoneResult.js.map +1 -1
- package/response/ResponseErrorResult.js +9 -8
- package/response/ResponseErrorResult.js.map +1 -1
- package/response/TaskResponse.js +44 -64
- package/response/TaskResponse.js.map +1 -1
- package/response/abstractions/Response.js +0 -3
- package/response/abstractions/ResponseAbortedResult.js +0 -3
- package/response/abstractions/ResponseBaseResult.js +0 -3
- package/response/abstractions/ResponseContinueResult.js +0 -3
- package/response/abstractions/ResponseDoneResult.js +0 -3
- package/response/abstractions/ResponseErrorResult.js +0 -3
- package/response/abstractions/TaskResponse.js +0 -3
- package/response/abstractions/index.js +0 -2
- package/response/index.js +0 -2
- package/runner/TaskControl.js +150 -221
- package/runner/TaskControl.js.map +1 -1
- package/runner/TaskEventValidation.js +12 -13
- package/runner/TaskEventValidation.js.map +1 -1
- package/runner/TaskManager.js +68 -106
- package/runner/TaskManager.js.map +1 -1
- package/runner/TaskManagerStore.js +90 -139
- package/runner/TaskManagerStore.js.map +1 -1
- package/runner/TaskRunner.js +45 -65
- package/runner/TaskRunner.js.map +1 -1
- package/runner/abstractions/TaskControl.js +0 -3
- package/runner/abstractions/TaskEventValidation.js +0 -3
- package/runner/abstractions/TaskManager.js +0 -3
- package/runner/abstractions/TaskManagerStore.js +0 -3
- package/runner/abstractions/TaskRunner.js +0 -3
- package/runner/abstractions/index.js +0 -2
- package/runner/index.js +0 -2
- package/service/EventBridgeEventTransportPlugin.js +43 -42
- package/service/EventBridgeEventTransportPlugin.js.map +1 -1
- package/service/StepFunctionServicePlugin.js +65 -66
- package/service/StepFunctionServicePlugin.js.map +1 -1
- package/service/createService.js +10 -13
- package/service/createService.js.map +1 -1
- package/service/index.js +7 -5
- package/service/index.js.map +1 -1
- package/tasks/testingRunTask.js +11 -10
- package/tasks/testingRunTask.js.map +1 -1
- package/types.js +12 -12
- package/types.js.map +1 -1
- package/utils/ObjectUpdater.js +25 -31
- package/utils/ObjectUpdater.js.map +1 -1
- package/utils/getErrorProperties.js +5 -4
- package/utils/getErrorProperties.js.map +1 -1
- package/utils/getObjectProperties.js +8 -15
- package/utils/getObjectProperties.js.map +1 -1
- package/utils/index.js +0 -2
- package/utils/normalizeSelfCleanup.js +13 -12
- package/utils/normalizeSelfCleanup.js.map +1 -1
- package/events/index.js.map +0 -1
- package/features/AbortTask/index.js.map +0 -1
- package/features/CleanupTaskSubtree/index.js.map +0 -1
- package/features/GetTask/index.js.map +0 -1
- package/features/GetTaskDefinition/index.js.map +0 -1
- package/features/ListTaskDefinitions/index.js.map +0 -1
- package/features/ListTasks/index.js.map +0 -1
- package/features/TaskController/augmentation.js.map +0 -1
- package/features/TaskController/index.js.map +0 -1
- package/features/TaskExecutionContext/index.js.map +0 -1
- package/features/TriggerTask/index.js.map +0 -1
- package/global.js.map +0 -1
- package/handler/types.js.map +0 -1
- package/index.js.map +0 -1
- package/plugins/index.js.map +0 -1
- package/response/abstractions/Response.js.map +0 -1
- package/response/abstractions/ResponseAbortedResult.js.map +0 -1
- package/response/abstractions/ResponseBaseResult.js.map +0 -1
- package/response/abstractions/ResponseContinueResult.js.map +0 -1
- package/response/abstractions/ResponseDoneResult.js.map +0 -1
- package/response/abstractions/ResponseErrorResult.js.map +0 -1
- package/response/abstractions/TaskResponse.js.map +0 -1
- package/response/abstractions/index.js.map +0 -1
- package/response/index.js.map +0 -1
- package/runner/abstractions/TaskControl.js.map +0 -1
- package/runner/abstractions/TaskEventValidation.js.map +0 -1
- package/runner/abstractions/TaskManager.js.map +0 -1
- package/runner/abstractions/TaskManagerStore.js.map +0 -1
- package/runner/abstractions/TaskRunner.js.map +0 -1
- package/runner/abstractions/index.js.map +0 -1
- package/runner/index.js.map +0 -1
- package/utils/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/ListTasks/abstractions.js","sources":["../../../src/features/ListTasks/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { IListTasksResponse, IListTaskParams } from \"~/types.js\";\n\nexport interface IListTasksUseCase {\n execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params?: ListTasksParams\n ): Promise<IListTasksResponse<I, O>>;\n}\n\nexport type ListTasksParams = IListTaskParams;\n\nexport const ListTasksUseCase = createAbstraction<IListTasksUseCase>(\"Tasks/ListTasksUseCase\");\n\nexport namespace ListTasksUseCase {\n export type Interface = IListTasksUseCase;\n export type Params = ListTasksParams;\n\n export type Return<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n > = Promise<IListTasksResponse<I, O>>;\n}\n"],"names":["ListTasksUseCase","createAbstraction"],"mappings":";AAgBO,MAAMA,mBAAmBC,kBAAqC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { ListTasksUseCaseImpl } from "./ListTasksUseCase.js";
|
|
3
3
|
import { ListTasksUseCase } from "./abstractions.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const ListTasksFeature = createFeature({
|
|
5
|
+
name: "ListTasks",
|
|
6
|
+
register (container, context) {
|
|
7
|
+
container.registerInstance(ListTasksUseCase, new ListTasksUseCaseImpl(context));
|
|
8
|
+
}
|
|
9
9
|
});
|
|
10
|
+
export { ListTasksFeature };
|
|
10
11
|
|
|
11
12
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/ListTasks/feature.js","sources":["../../../src/features/ListTasks/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ListTasksUseCaseImpl } from \"./ListTasksUseCase.js\";\nimport type { Context } from \"~/types.js\";\nimport { ListTasksUseCase } from \"./abstractions.js\";\n\nexport const ListTasksFeature = createFeature<Context>({\n name: \"ListTasks\",\n register(container, context) {\n container.registerInstance(ListTasksUseCase, new ListTasksUseCaseImpl(context!));\n }\n});\n"],"names":["ListTasksFeature","createFeature","container","context","ListTasksUseCase","ListTasksUseCaseImpl"],"mappings":";;;AAKO,MAAMA,mBAAmBC,cAAuB;IACnD,MAAM;IACN,UAASC,SAAS,EAAEC,OAAO;QACvBD,UAAU,gBAAgB,CAACE,kBAAkB,IAAIC,qBAAqBF;IAC1E;AACJ"}
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
import { TaskController
|
|
1
|
+
import { TaskController } from "@webiny/api-core/features/task/TaskController/abstractions.js";
|
|
2
2
|
import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
3
3
|
import { TaskExecutionContext } from "../TaskExecutionContext/abstractions.js";
|
|
4
4
|
import { TaskDataStatus } from "../../types.js";
|
|
5
5
|
import "./augmentation.js";
|
|
6
6
|
class TaskControllerImpl {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
7
|
+
constructor(taskService, executionContext){
|
|
8
|
+
this.taskService = taskService;
|
|
9
|
+
this.executionContext = executionContext;
|
|
10
|
+
this.state = {
|
|
11
|
+
getTask: ()=>this.store.getTask(),
|
|
12
|
+
getStatus: ()=>this.store.getStatus(),
|
|
13
|
+
getInput: ()=>this.store.getInput(),
|
|
14
|
+
getOutput: ()=>this.store.getOutput(),
|
|
15
|
+
updateInput: async (input)=>await this.store.updateInput(input),
|
|
16
|
+
updateOutput: async (output)=>await this.store.updateOutput(output)
|
|
17
|
+
};
|
|
18
|
+
this.logger = {
|
|
19
|
+
info: async (params)=>{
|
|
20
|
+
await this.store.addInfoLog(params);
|
|
21
|
+
},
|
|
22
|
+
error: async (params)=>{
|
|
23
|
+
const error = params.error;
|
|
24
|
+
const errorObj = error instanceof Error ? {
|
|
25
|
+
message: error.message,
|
|
26
|
+
stack: error.stack
|
|
27
|
+
} : error;
|
|
28
|
+
await this.store.addErrorLog({
|
|
29
|
+
message: params.message,
|
|
30
|
+
error: errorObj,
|
|
31
|
+
data: params.data
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
this.task = {
|
|
36
|
+
trigger: async (params)=>this.taskService.trigger({
|
|
37
|
+
...params,
|
|
38
|
+
parent: this.store.getTask()
|
|
39
|
+
}),
|
|
40
|
+
listChildren: async (definitionId)=>this.store.listChildTasks(definitionId)
|
|
41
|
+
};
|
|
42
|
+
this.runtime = {
|
|
43
|
+
isCloseToTimeout: (seconds)=>this.runner.isCloseToTimeout(seconds),
|
|
44
|
+
isAborted: ()=>this.store.getStatus() === TaskDataStatus.ABORTED,
|
|
45
|
+
getRemainingSeconds: ()=>this.timer.getRemainingSeconds(),
|
|
46
|
+
getRemainingMilliseconds: ()=>this.timer.getRemainingMilliseconds()
|
|
47
|
+
};
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
get store() {
|
|
50
|
+
return this.executionContext.store;
|
|
51
|
+
}
|
|
52
|
+
get runner() {
|
|
53
|
+
return this.executionContext.runner;
|
|
54
|
+
}
|
|
55
|
+
get timer() {
|
|
56
|
+
return this.executionContext.timer;
|
|
57
|
+
}
|
|
58
|
+
get response() {
|
|
59
|
+
return this.executionContext.response;
|
|
57
60
|
}
|
|
58
|
-
};
|
|
59
|
-
runtime = {
|
|
60
|
-
isCloseToTimeout: seconds => this.runner.isCloseToTimeout(seconds),
|
|
61
|
-
isAborted: () => this.store.getStatus() === TaskDataStatus.ABORTED,
|
|
62
|
-
getRemainingSeconds: () => this.timer.getRemainingSeconds(),
|
|
63
|
-
getRemainingMilliseconds: () => this.timer.getRemainingMilliseconds()
|
|
64
|
-
};
|
|
65
61
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
const TaskController_TaskController = TaskController.createImplementation({
|
|
63
|
+
implementation: TaskControllerImpl,
|
|
64
|
+
dependencies: [
|
|
65
|
+
TaskService,
|
|
66
|
+
TaskExecutionContext
|
|
67
|
+
]
|
|
69
68
|
});
|
|
69
|
+
export { TaskController_TaskController as TaskController };
|
|
70
70
|
|
|
71
71
|
//# sourceMappingURL=TaskController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/TaskController/TaskController.js","sources":["../../../src/features/TaskController/TaskController.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/abstractions.js\";\nimport { TaskController as Abstraction } from \"@webiny/api-core/features/task/TaskController/abstractions.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { TaskExecutionContext } from \"../TaskExecutionContext/abstractions.js\";\nimport { type ITaskTriggerParams, TaskDataStatus } from \"~/types.js\";\nimport \"./augmentation.js\";\nimport { BaseError, Result } from \"@webiny/feature/api/index.js\";\n\nclass TaskControllerImpl implements Abstraction.Interface {\n constructor(\n private taskService: TaskService.Interface,\n private executionContext: TaskExecutionContext.Interface\n ) {}\n\n private get store() {\n return this.executionContext.store;\n }\n\n private get runner() {\n return this.executionContext.runner;\n }\n\n private get timer() {\n return this.executionContext.timer;\n }\n\n public get response() {\n return this.executionContext.response;\n }\n\n state = {\n getTask: () => this.store.getTask(),\n getStatus: () => this.store.getStatus(),\n getInput: () => this.store.getInput(),\n getOutput: () => this.store.getOutput(),\n updateInput: async (input: any) => await this.store.updateInput(input),\n updateOutput: async (output: any) => await this.store.updateOutput(output)\n };\n\n logger = {\n info: async (params: { message: string; data?: Record<string, any> }) => {\n await this.store.addInfoLog(params);\n },\n error: async (params: {\n message: string;\n error?: Error | any;\n data?: Record<string, any>;\n }) => {\n const error = params.error;\n const errorObj =\n error instanceof Error ? { message: error.message, stack: error.stack } : error;\n await this.store.addErrorLog({\n message: params.message,\n error: errorObj,\n data: params.data\n });\n }\n };\n\n task = {\n trigger: async <CI extends TaskDefinition.TaskInput = TaskDefinition.TaskInput>(\n params: ITaskTriggerParams<CI>\n ): Promise<Result<TaskService.Task<CI>, BaseError>> => {\n return this.taskService.trigger({ ...params, parent: this.store.getTask() });\n },\n listChildren: async <\n CT extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n CO extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n >(\n definitionId?: string\n ): Promise<TaskService.Task<CT, CO>[]> => {\n return this.store.listChildTasks(definitionId);\n }\n };\n\n runtime = {\n isCloseToTimeout: (seconds?: number) => this.runner.isCloseToTimeout(seconds),\n isAborted: () => this.store.getStatus() === TaskDataStatus.ABORTED,\n getRemainingSeconds: () => this.timer.getRemainingSeconds(),\n getRemainingMilliseconds: () => this.timer.getRemainingMilliseconds()\n };\n}\n\nexport const TaskController = Abstraction.createImplementation({\n implementation: TaskControllerImpl,\n dependencies: [TaskService, TaskExecutionContext]\n});\n"],"names":["TaskControllerImpl","taskService","executionContext","input","output","params","error","errorObj","Error","definitionId","seconds","TaskDataStatus","TaskController","Abstraction","TaskService","TaskExecutionContext"],"mappings":";;;;;AAQA,MAAMA;IACF,YACYC,WAAkC,EAClCC,gBAAgD,CAC1D;aAFUD,WAAW,GAAXA;aACAC,gBAAgB,GAAhBA;aAmBZ,KAAK,GAAG;YACJ,SAAS,IAAM,IAAI,CAAC,KAAK,CAAC,OAAO;YACjC,WAAW,IAAM,IAAI,CAAC,KAAK,CAAC,SAAS;YACrC,UAAU,IAAM,IAAI,CAAC,KAAK,CAAC,QAAQ;YACnC,WAAW,IAAM,IAAI,CAAC,KAAK,CAAC,SAAS;YACrC,aAAa,OAAOC,QAAe,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAACA;YAChE,cAAc,OAAOC,SAAgB,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAACA;QACvE;aAEA,MAAM,GAAG;YACL,MAAM,OAAOC;gBACT,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAACA;YAChC;YACA,OAAO,OAAOA;gBAKV,MAAMC,QAAQD,OAAO,KAAK;gBAC1B,MAAME,WACFD,iBAAiBE,QAAQ;oBAAE,SAASF,MAAM,OAAO;oBAAE,OAAOA,MAAM,KAAK;gBAAC,IAAIA;gBAC9E,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;oBACzB,SAASD,OAAO,OAAO;oBACvB,OAAOE;oBACP,MAAMF,OAAO,IAAI;gBACrB;YACJ;QACJ;aAEA,IAAI,GAAG;YACH,SAAS,OACLA,SAEO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;oBAAE,GAAGA,MAAM;oBAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAG;YAE9E,cAAc,OAIVI,eAEO,IAAI,CAAC,KAAK,CAAC,cAAc,CAACA;QAEzC;aAEA,OAAO,GAAG;YACN,kBAAkB,CAACC,UAAqB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAACA;YACrE,WAAW,IAAM,IAAI,CAAC,KAAK,CAAC,SAAS,OAAOC,eAAe,OAAO;YAClE,qBAAqB,IAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB;YACzD,0BAA0B,IAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB;QACvE;IApEG;IAEH,IAAY,QAAQ;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;IACtC;IAEA,IAAY,SAAS;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM;IACvC;IAEA,IAAY,QAAQ;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;IACtC;IAEA,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ;IACzC;AAqDJ;AAEO,MAAMC,gCAAiBC,eAAAA,oBAAgC,CAAC;IAC3D,gBAAgBb;IAChB,cAAc;QAACc;QAAaC;KAAqB;AACrD"}
|
|
@@ -1,50 +1,43 @@
|
|
|
1
|
-
import { TaskExecutionContext
|
|
1
|
+
import { TaskExecutionContext } from "./abstractions.js";
|
|
2
2
|
class TaskExecutionContextImpl {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
setResponse(response) {
|
|
37
|
-
this._response = response;
|
|
38
|
-
}
|
|
39
|
-
clear() {
|
|
40
|
-
this._store = undefined;
|
|
41
|
-
this._runner = undefined;
|
|
42
|
-
this._timer = undefined;
|
|
43
|
-
}
|
|
3
|
+
get store() {
|
|
4
|
+
if (!this._store) throw new Error("TaskExecutionContext: store not set. Task execution not started.");
|
|
5
|
+
return this._store;
|
|
6
|
+
}
|
|
7
|
+
get runner() {
|
|
8
|
+
if (!this._runner) throw new Error("TaskExecutionContext: runner not set. Task execution not started.");
|
|
9
|
+
return this._runner;
|
|
10
|
+
}
|
|
11
|
+
get timer() {
|
|
12
|
+
if (!this._timer) throw new Error("TaskExecutionContext: timer not set. Task execution not started.");
|
|
13
|
+
return this._timer;
|
|
14
|
+
}
|
|
15
|
+
get response() {
|
|
16
|
+
if (!this._response) throw new Error("TaskExecutionContext: response not set. Task execution not started.");
|
|
17
|
+
return this._response;
|
|
18
|
+
}
|
|
19
|
+
setStore(store) {
|
|
20
|
+
this._store = store;
|
|
21
|
+
}
|
|
22
|
+
setRunner(runner) {
|
|
23
|
+
this._runner = runner;
|
|
24
|
+
}
|
|
25
|
+
setTimer(timer) {
|
|
26
|
+
this._timer = timer;
|
|
27
|
+
}
|
|
28
|
+
setResponse(response) {
|
|
29
|
+
this._response = response;
|
|
30
|
+
}
|
|
31
|
+
clear() {
|
|
32
|
+
this._store = void 0;
|
|
33
|
+
this._runner = void 0;
|
|
34
|
+
this._timer = void 0;
|
|
35
|
+
}
|
|
44
36
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
const TaskExecutionContext_TaskExecutionContext = TaskExecutionContext.createImplementation({
|
|
38
|
+
implementation: TaskExecutionContextImpl,
|
|
39
|
+
dependencies: []
|
|
48
40
|
});
|
|
41
|
+
export { TaskExecutionContext_TaskExecutionContext as TaskExecutionContext };
|
|
49
42
|
|
|
50
43
|
//# sourceMappingURL=TaskExecutionContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/TaskExecutionContext/TaskExecutionContext.js","sources":["../../../src/features/TaskExecutionContext/TaskExecutionContext.ts"],"sourcesContent":["import { TaskExecutionContext as Abstraction } from \"./abstractions.js\";\nimport type { ITaskManagerStore } from \"~/runner/abstractions/TaskManagerStore.js\";\nimport type { ITaskRunner } from \"~/runner/abstractions/TaskRunner.js\";\nimport type { ITimer } from \"@webiny/handler-aws\";\nimport type { ITaskResponse } from \"~/response/abstractions/index.js\";\n\nclass TaskExecutionContextImpl implements Abstraction.Interface {\n private _store?: ITaskManagerStore;\n private _runner?: ITaskRunner;\n private _timer?: ITimer;\n private _response?: ITaskResponse;\n\n get store(): ITaskManagerStore {\n if (!this._store) {\n throw new Error(\"TaskExecutionContext: store not set. Task execution not started.\");\n }\n return this._store;\n }\n\n get runner(): ITaskRunner {\n if (!this._runner) {\n throw new Error(\"TaskExecutionContext: runner not set. Task execution not started.\");\n }\n return this._runner;\n }\n\n get timer(): ITimer {\n if (!this._timer) {\n throw new Error(\"TaskExecutionContext: timer not set. Task execution not started.\");\n }\n return this._timer;\n }\n\n get response(): ITaskResponse {\n if (!this._response) {\n throw new Error(\"TaskExecutionContext: response not set. Task execution not started.\");\n }\n return this._response;\n }\n\n setStore(store: ITaskManagerStore): void {\n this._store = store;\n }\n\n setRunner(runner: ITaskRunner): void {\n this._runner = runner;\n }\n\n setTimer(timer: ITimer): void {\n this._timer = timer;\n }\n\n setResponse(response: ITaskResponse): void {\n this._response = response;\n }\n\n clear(): void {\n this._store = undefined;\n this._runner = undefined;\n this._timer = undefined;\n }\n}\n\nexport const TaskExecutionContext = Abstraction.createImplementation({\n implementation: TaskExecutionContextImpl,\n dependencies: []\n});\n"],"names":["TaskExecutionContextImpl","Error","store","runner","timer","response","undefined","TaskExecutionContext","Abstraction"],"mappings":";AAMA,MAAMA;IAMF,IAAI,QAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,MAAM,IAAIC,MAAM;QAEpB,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,SAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EACb,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,IAAI,QAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,WAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EACf,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,SAASC,KAAwB,EAAQ;QACrC,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,UAAUC,MAAmB,EAAQ;QACjC,IAAI,CAAC,OAAO,GAAGA;IACnB;IAEA,SAASC,KAAa,EAAQ;QAC1B,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,YAAYC,QAAuB,EAAQ;QACvC,IAAI,CAAC,SAAS,GAAGA;IACrB;IAEA,QAAc;QACV,IAAI,CAAC,MAAM,GAAGC;QACd,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,MAAM,GAAGA;IAClB;AACJ;AAEO,MAAMC,4CAAuBC,qBAAAA,oBAAgC,CAAC;IACjE,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* TaskExecutionContext holds runtime state for the currently executing task.
|
|
5
|
-
* Properties are set by TaskRunner before task execution.
|
|
6
|
-
*
|
|
7
|
-
* This is registered as a singleton in the DI container with empty values,
|
|
8
|
-
* then populated at runtime by TaskControl before executing each task.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export const TaskExecutionContext = createAbstraction("TaskExecutionContext");
|
|
2
|
+
const TaskExecutionContext = createAbstraction("TaskExecutionContext");
|
|
3
|
+
export { TaskExecutionContext };
|
|
12
4
|
|
|
13
5
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/TaskExecutionContext/abstractions.js","sources":["../../../src/features/TaskExecutionContext/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ITimer } from \"@webiny/handler-aws\";\nimport type { ITaskManagerStore } from \"~/runner/abstractions/TaskManagerStore.js\";\nimport type { ITaskRunner } from \"~/runner/abstractions/TaskRunner.js\";\nimport type { ITaskResponse } from \"~/response/abstractions/index.js\";\n\n/**\n * TaskExecutionContext holds runtime state for the currently executing task.\n * Properties are set by TaskRunner before task execution.\n *\n * This is registered as a singleton in the DI container with empty values,\n * then populated at runtime by TaskControl before executing each task.\n */\nexport interface ITaskExecutionContext {\n // Getters - may throw if not set\n readonly store: ITaskManagerStore;\n readonly runner: ITaskRunner;\n readonly timer: ITimer;\n readonly response: ITaskResponse;\n\n // Setters - called by TaskControl\n setStore(store: ITaskManagerStore): void;\n setRunner(runner: ITaskRunner): void;\n setTimer(timer: ITimer): void;\n setResponse(response: ITaskResponse): void;\n\n // Clear after execution\n clear(): void;\n}\n\nexport const TaskExecutionContext =\n createAbstraction<ITaskExecutionContext>(\"TaskExecutionContext\");\n\nexport namespace TaskExecutionContext {\n export type Interface = ITaskExecutionContext;\n}\n"],"names":["TaskExecutionContext","createAbstraction"],"mappings":";AA8BO,MAAMA,uBACTC,kBAAyC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { TaskExecutionContext } from "./TaskExecutionContext.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const TaskExecutionContextFeature = createFeature({
|
|
4
|
+
name: "TaskExecutionContext",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(TaskExecutionContext).inSingletonScope();
|
|
7
|
+
}
|
|
8
8
|
});
|
|
9
|
+
export { TaskExecutionContextFeature };
|
|
9
10
|
|
|
10
11
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/TaskExecutionContext/feature.js","sources":["../../../src/features/TaskExecutionContext/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { TaskExecutionContext } from \"./TaskExecutionContext.js\";\n\nexport const TaskExecutionContextFeature = createFeature({\n name: \"TaskExecutionContext\",\n register(container) {\n container.register(TaskExecutionContext).inSingletonScope();\n }\n});\n"],"names":["TaskExecutionContextFeature","createFeature","container","TaskExecutionContext"],"mappings":";;AAGO,MAAMA,8BAA8BC,cAAc;IACrD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,sBAAsB,gBAAgB;IAC7D;AACJ"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
class TriggerTaskUseCaseImpl {
|
|
2
|
+
constructor(context){
|
|
3
|
+
this.context = context;
|
|
4
|
+
}
|
|
5
|
+
async execute(params) {
|
|
6
|
+
const result = await this.context.tasks.trigger(params);
|
|
7
|
+
return result;
|
|
8
|
+
}
|
|
9
9
|
}
|
|
10
|
+
export { TriggerTaskUseCaseImpl };
|
|
10
11
|
|
|
11
12
|
//# sourceMappingURL=TriggerTaskUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/TriggerTask/TriggerTaskUseCase.js","sources":["../../../src/features/TriggerTask/TriggerTaskUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { TriggerTaskUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { Context } from \"~/types.js\";\n\nexport class TriggerTaskUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private context: Context) {}\n\n public async execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params: UseCaseAbstraction.Params<I>\n ): Promise<Result<TaskService.Task<I, O>, UseCaseAbstraction.Error>> {\n const result = await this.context.tasks.trigger<I, O>(params);\n\n return result as unknown as Promise<\n Result<TaskService.Task<I, O>, UseCaseAbstraction.Error>\n >;\n }\n}\n"],"names":["TriggerTaskUseCaseImpl","context","params","result"],"mappings":"AAMO,MAAMA;IACT,YAA2BC,OAAgB,CAAE;aAAlBA,OAAO,GAAPA;IAAmB;IAE9C,MAAa,QAITC,MAAoC,EAC6B;QACjE,MAAMC,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAOD;QAEtD,OAAOC;IAGX;AACJ"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
2
|
+
const TriggerTaskUseCase = createAbstraction("Tasks/TriggerTaskUseCase");
|
|
3
|
+
export { TriggerTaskUseCase };
|
|
3
4
|
|
|
4
5
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/TriggerTask/abstractions.js","sources":["../../../src/features/TriggerTask/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport {\n TaskDefinitionNotFoundError,\n TaskNotFoundError,\n TaskServiceInfoError\n} from \"~/domain/errors.js\";\n\nexport interface ITriggerTaskUseCase {\n execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params: TriggerTaskParams<I>\n ): Promise<Result<TaskService.Task<I, O>, UseCaseError>>;\n}\n\nexport interface TriggerTaskParams<I = TaskDefinition.TaskInput> {\n definition: string;\n input?: I;\n name?: string;\n parent?: Pick<TaskService.Task, \"id\">;\n delay?: number;\n}\n\nexport interface ITriggerTaskUseCaseErrors {\n definitionNotFound: TaskDefinitionNotFoundError;\n taskNotFound: TaskNotFoundError;\n serviceError: TaskServiceInfoError;\n}\n\ntype UseCaseError = ITriggerTaskUseCaseErrors[keyof ITriggerTaskUseCaseErrors];\n\nexport const TriggerTaskUseCase = createAbstraction<ITriggerTaskUseCase>(\n \"Tasks/TriggerTaskUseCase\"\n);\n\nexport namespace TriggerTaskUseCase {\n export type Interface = ITriggerTaskUseCase;\n export type Params<I = TaskDefinition.TaskInput> = TriggerTaskParams<I>;\n\n export type Error = UseCaseError;\n export type Return<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n > = Promise<Result<TaskService.Task<I, O>, UseCaseError>>;\n}\n"],"names":["TriggerTaskUseCase","createAbstraction"],"mappings":";AAkCO,MAAMA,qBAAqBC,kBAC9B"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { TriggerTaskUseCase } from "./abstractions.js";
|
|
3
3
|
import { TriggerTaskUseCaseImpl } from "./TriggerTaskUseCase.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const TriggerTaskFeature = createFeature({
|
|
5
|
+
name: "TriggerTask",
|
|
6
|
+
register (container, context) {
|
|
7
|
+
container.registerInstance(TriggerTaskUseCase, new TriggerTaskUseCaseImpl(context));
|
|
8
|
+
}
|
|
9
9
|
});
|
|
10
|
+
export { TriggerTaskFeature };
|
|
10
11
|
|
|
11
12
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/TriggerTask/feature.js","sources":["../../../src/features/TriggerTask/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { TriggerTaskUseCase } from \"./abstractions.js\";\nimport { TriggerTaskUseCaseImpl } from \"~/features/TriggerTask/TriggerTaskUseCase.js\";\nimport type { Context } from \"~/types.js\";\n\nexport const TriggerTaskFeature = createFeature<Context>({\n name: \"TriggerTask\",\n register(container, context) {\n container.registerInstance(TriggerTaskUseCase, new TriggerTaskUseCaseImpl(context!));\n }\n});\n"],"names":["TriggerTaskFeature","createFeature","container","context","TriggerTaskUseCase","TriggerTaskUseCaseImpl"],"mappings":";;;AAKO,MAAMA,qBAAqBC,cAAuB;IACrD,MAAM;IACN,UAASC,SAAS,EAAEC,OAAO;QACvBD,UAAU,gBAAgB,CAACE,oBAAoB,IAAIC,uBAAuBF;IAC9E;AACJ"}
|
package/global.js
CHANGED
|
@@ -1,40 +1,21 @@
|
|
|
1
1
|
import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/index.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (check.rwd && !hasRwd(current, check.rwd)) {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
return true;
|
|
13
|
-
});
|
|
14
|
-
if (relevant.length === 0) {
|
|
15
|
-
throw new NotAuthorizedError();
|
|
16
|
-
}
|
|
2
|
+
const checkPermissions = async (context, check = {})=>{
|
|
3
|
+
const taskPermissions = await context.security.getPermissions("tasks");
|
|
4
|
+
const relevant = taskPermissions.filter((current)=>{
|
|
5
|
+
if (check.rwd && !hasRwd(current, check.rwd)) return false;
|
|
6
|
+
return true;
|
|
7
|
+
});
|
|
8
|
+
if (0 === relevant.length) throw new NotAuthorizedError();
|
|
17
9
|
};
|
|
18
|
-
const hasRwd = (permissions, rwd)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// Is there a permission that doesn't restrict RWD permissions, that means all RWD permissions are allowed.
|
|
27
|
-
const permissionWithoutRwdRestrictions = permissions.some(permission => {
|
|
28
|
-
return typeof permission.rwd !== "string";
|
|
29
|
-
});
|
|
30
|
-
if (permissionWithoutRwdRestrictions) {
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// If there is no permission that doesn't restrict RWD permissions, that means we need to check if the RWD.
|
|
35
|
-
return permissions.some(permission => {
|
|
36
|
-
return permission.rwd && permission.rwd.includes(rwd);
|
|
37
|
-
});
|
|
10
|
+
const hasRwd = (permissions, rwd)=>{
|
|
11
|
+
if (!Array.isArray(permissions)) permissions = [
|
|
12
|
+
permissions
|
|
13
|
+
];
|
|
14
|
+
if (!rwd) return true;
|
|
15
|
+
const permissionWithoutRwdRestrictions = permissions.some((permission)=>"string" != typeof permission.rwd);
|
|
16
|
+
if (permissionWithoutRwdRestrictions) return true;
|
|
17
|
+
return permissions.some((permission)=>permission.rwd && permission.rwd.includes(rwd));
|
|
38
18
|
};
|
|
19
|
+
export { checkPermissions };
|
|
39
20
|
|
|
40
21
|
//# sourceMappingURL=checkPermissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"graphql/checkPermissions.js","sources":["../../src/graphql/checkPermissions.ts"],"sourcesContent":["import type { Context, TaskPermission } from \"~/types.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/index.js\";\n\n/**\n * @throws\n */\nexport const checkPermissions = async (\n context: Context,\n check: { rwd?: string } = {}\n): Promise<void> => {\n const taskPermissions = await context.security.getPermissions<TaskPermission>(\"tasks\");\n\n const relevant = taskPermissions.filter(current => {\n if (check.rwd && !hasRwd(current, check.rwd)) {\n return false;\n }\n\n return true;\n });\n\n if (relevant.length === 0) {\n throw new NotAuthorizedError();\n }\n};\n\nconst hasRwd = (permissions: TaskPermission | TaskPermission[], rwd: string): boolean => {\n if (!Array.isArray(permissions)) {\n permissions = [permissions];\n }\n\n if (!rwd) {\n return true;\n }\n\n // Is there a permission that doesn't restrict RWD permissions, that means all RWD permissions are allowed.\n const permissionWithoutRwdRestrictions = permissions.some(permission => {\n return typeof permission.rwd !== \"string\";\n });\n\n if (permissionWithoutRwdRestrictions) {\n return true;\n }\n\n // If there is no permission that doesn't restrict RWD permissions, that means we need to check if the RWD.\n return permissions.some(permission => {\n return permission.rwd && permission.rwd.includes(rwd);\n });\n};\n"],"names":["checkPermissions","context","check","taskPermissions","relevant","current","hasRwd","NotAuthorizedError","permissions","rwd","Array","permissionWithoutRwdRestrictions","permission"],"mappings":";AAMO,MAAMA,mBAAmB,OAC5BC,SACAC,QAA0B,CAAC,CAAC;IAE5B,MAAMC,kBAAkB,MAAMF,QAAQ,QAAQ,CAAC,cAAc,CAAiB;IAE9E,MAAMG,WAAWD,gBAAgB,MAAM,CAACE,CAAAA;QACpC,IAAIH,MAAM,GAAG,IAAI,CAACI,OAAOD,SAASH,MAAM,GAAG,GACvC,OAAO;QAGX,OAAO;IACX;IAEA,IAAIE,AAAoB,MAApBA,SAAS,MAAM,EACf,MAAM,IAAIG;AAElB;AAEA,MAAMD,SAAS,CAACE,aAAgDC;IAC5D,IAAI,CAACC,MAAM,OAAO,CAACF,cACfA,cAAc;QAACA;KAAY;IAG/B,IAAI,CAACC,KACD,OAAO;IAIX,MAAME,mCAAmCH,YAAY,IAAI,CAACI,CAAAA,aAC/C,AAA0B,YAA1B,OAAOA,WAAW,GAAG;IAGhC,IAAID,kCACA,OAAO;IAIX,OAAOH,YAAY,IAAI,CAACI,CAAAA,aACbA,WAAW,GAAG,IAAIA,WAAW,GAAG,CAAC,QAAQ,CAACH;AAEzD"}
|