@webiny/background-tasks 0.0.0-unstable.7be00a75a9
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/LICENSE +21 -0
- package/README.md +11 -0
- package/admin/BackgroundTaskRoutes.d.ts +2 -0
- package/admin/BackgroundTaskRoutes.js +50 -0
- package/admin/BackgroundTaskRoutes.js.map +1 -0
- package/admin/BackgroundTasks.d.ts +2 -0
- package/admin/BackgroundTasks.js +46 -0
- package/admin/BackgroundTasks.js.map +1 -0
- package/admin/features/abortTask/AbortTaskGateway.d.ts +12 -0
- package/admin/features/abortTask/AbortTaskGateway.js +62 -0
- package/admin/features/abortTask/AbortTaskGateway.js.map +1 -0
- package/admin/features/abortTask/AbortTaskUseCase.d.ts +11 -0
- package/admin/features/abortTask/AbortTaskUseCase.js +18 -0
- package/admin/features/abortTask/AbortTaskUseCase.js.map +1 -0
- package/admin/features/abortTask/abstractions.d.ts +19 -0
- package/admin/features/abortTask/abstractions.js +6 -0
- package/admin/features/abortTask/abstractions.js.map +1 -0
- package/admin/features/abortTask/feature.d.ts +3 -0
- package/admin/features/abortTask/feature.js +19 -0
- package/admin/features/abortTask/feature.js.map +1 -0
- package/admin/features/abortTask/index.d.ts +2 -0
- package/admin/features/abortTask/index.js +2 -0
- package/admin/features/deleteTask/DeleteTaskGateway.d.ts +11 -0
- package/admin/features/deleteTask/DeleteTaskGateway.js +41 -0
- package/admin/features/deleteTask/DeleteTaskGateway.js.map +1 -0
- package/admin/features/deleteTask/DeleteTaskUseCase.d.ts +10 -0
- package/admin/features/deleteTask/DeleteTaskUseCase.js +18 -0
- package/admin/features/deleteTask/DeleteTaskUseCase.js.map +1 -0
- package/admin/features/deleteTask/abstractions.d.ts +14 -0
- package/admin/features/deleteTask/abstractions.js +6 -0
- package/admin/features/deleteTask/abstractions.js.map +1 -0
- package/admin/features/deleteTask/feature.d.ts +3 -0
- package/admin/features/deleteTask/feature.js +19 -0
- package/admin/features/deleteTask/feature.js.map +1 -0
- package/admin/features/deleteTask/index.d.ts +2 -0
- package/admin/features/deleteTask/index.js +2 -0
- package/admin/features/getTask/GetTaskGateway.d.ts +12 -0
- package/admin/features/getTask/GetTaskGateway.js +61 -0
- package/admin/features/getTask/GetTaskGateway.js.map +1 -0
- package/admin/features/getTask/GetTaskUseCase.d.ts +11 -0
- package/admin/features/getTask/GetTaskUseCase.js +18 -0
- package/admin/features/getTask/GetTaskUseCase.js.map +1 -0
- package/admin/features/getTask/abstractions.d.ts +15 -0
- package/admin/features/getTask/abstractions.js +6 -0
- package/admin/features/getTask/abstractions.js.map +1 -0
- package/admin/features/getTask/feature.d.ts +3 -0
- package/admin/features/getTask/feature.js +19 -0
- package/admin/features/getTask/feature.js.map +1 -0
- package/admin/features/getTask/index.d.ts +2 -0
- package/admin/features/getTask/index.js +2 -0
- package/admin/features/listDefinitions/ListDefinitionsGateway.d.ts +12 -0
- package/admin/features/listDefinitions/ListDefinitionsGateway.js +42 -0
- package/admin/features/listDefinitions/ListDefinitionsGateway.js.map +1 -0
- package/admin/features/listDefinitions/ListDefinitionsUseCase.d.ts +11 -0
- package/admin/features/listDefinitions/ListDefinitionsUseCase.js +18 -0
- package/admin/features/listDefinitions/ListDefinitionsUseCase.js.map +1 -0
- package/admin/features/listDefinitions/abstractions.d.ts +15 -0
- package/admin/features/listDefinitions/abstractions.js +6 -0
- package/admin/features/listDefinitions/abstractions.js.map +1 -0
- package/admin/features/listDefinitions/feature.d.ts +3 -0
- package/admin/features/listDefinitions/feature.js +19 -0
- package/admin/features/listDefinitions/feature.js.map +1 -0
- package/admin/features/listDefinitions/index.d.ts +2 -0
- package/admin/features/listDefinitions/index.js +2 -0
- package/admin/features/listLogs/ListLogsGateway.d.ts +11 -0
- package/admin/features/listLogs/ListLogsGateway.js +73 -0
- package/admin/features/listLogs/ListLogsGateway.js.map +1 -0
- package/admin/features/listLogs/ListLogsUseCase.d.ts +10 -0
- package/admin/features/listLogs/ListLogsUseCase.js +18 -0
- package/admin/features/listLogs/ListLogsUseCase.js.map +1 -0
- package/admin/features/listLogs/abstractions.d.ts +30 -0
- package/admin/features/listLogs/abstractions.js +6 -0
- package/admin/features/listLogs/abstractions.js.map +1 -0
- package/admin/features/listLogs/feature.d.ts +3 -0
- package/admin/features/listLogs/feature.js +19 -0
- package/admin/features/listLogs/feature.js.map +1 -0
- package/admin/features/listLogs/index.d.ts +2 -0
- package/admin/features/listLogs/index.js +2 -0
- package/admin/features/listTasks/ListTasksGateway.d.ts +11 -0
- package/admin/features/listTasks/ListTasksGateway.js +79 -0
- package/admin/features/listTasks/ListTasksGateway.js.map +1 -0
- package/admin/features/listTasks/ListTasksUseCase.d.ts +10 -0
- package/admin/features/listTasks/ListTasksUseCase.js +18 -0
- package/admin/features/listTasks/ListTasksUseCase.js.map +1 -0
- package/admin/features/listTasks/abstractions.d.ts +31 -0
- package/admin/features/listTasks/abstractions.js +6 -0
- package/admin/features/listTasks/abstractions.js.map +1 -0
- package/admin/features/listTasks/feature.d.ts +3 -0
- package/admin/features/listTasks/feature.js +19 -0
- package/admin/features/listTasks/feature.js.map +1 -0
- package/admin/features/listTasks/index.d.ts +2 -0
- package/admin/features/listTasks/index.js +2 -0
- package/admin/features/permissions/abstractions.d.ts +17 -0
- package/admin/features/permissions/abstractions.js +6 -0
- package/admin/features/permissions/abstractions.js.map +1 -0
- package/admin/features/permissions/feature.d.ts +14 -0
- package/admin/features/permissions/feature.js +7 -0
- package/admin/features/permissions/feature.js.map +1 -0
- package/admin/features/permissions/index.d.ts +2 -0
- package/admin/features/permissions/index.js +2 -0
- package/admin/index.d.ts +2 -0
- package/admin/index.js +2 -0
- package/admin/permissions.d.ts +12 -0
- package/admin/permissions.js +22 -0
- package/admin/permissions.js.map +1 -0
- package/admin/presentation/TaskDefinitions/TaskDefinitionsPresenter.d.ts +14 -0
- package/admin/presentation/TaskDefinitions/TaskDefinitionsPresenter.js +41 -0
- package/admin/presentation/TaskDefinitions/TaskDefinitionsPresenter.js.map +1 -0
- package/admin/presentation/TaskDefinitions/abstractions.d.ts +14 -0
- package/admin/presentation/TaskDefinitions/abstractions.js +5 -0
- package/admin/presentation/TaskDefinitions/abstractions.js.map +1 -0
- package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.d.ts +2 -0
- package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js +75 -0
- package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js.map +1 -0
- package/admin/presentation/TaskDefinitions/feature.d.ts +3 -0
- package/admin/presentation/TaskDefinitions/feature.js +17 -0
- package/admin/presentation/TaskDefinitions/feature.js.map +1 -0
- package/admin/presentation/TaskDefinitions/index.d.ts +2 -0
- package/admin/presentation/TaskDefinitions/index.js +2 -0
- package/admin/presentation/TaskDetail/TaskDetailPresenter.d.ts +24 -0
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js +87 -0
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js.map +1 -0
- package/admin/presentation/TaskDetail/abstractions.d.ts +24 -0
- package/admin/presentation/TaskDetail/abstractions.js +5 -0
- package/admin/presentation/TaskDetail/abstractions.js.map +1 -0
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.d.ts +11 -0
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js +264 -0
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js.map +1 -0
- package/admin/presentation/TaskDetail/feature.d.ts +3 -0
- package/admin/presentation/TaskDetail/feature.js +17 -0
- package/admin/presentation/TaskDetail/feature.js.map +1 -0
- package/admin/presentation/TaskDetail/index.d.ts +2 -0
- package/admin/presentation/TaskDetail/index.js +2 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.d.ts +15 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +91 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.d.ts +52 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js +107 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js.map +1 -0
- package/admin/presentation/TaskExecutions/abstractions.d.ts +28 -0
- package/admin/presentation/TaskExecutions/abstractions.js +5 -0
- package/admin/presentation/TaskExecutions/abstractions.js.map +1 -0
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.d.ts +2 -0
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js +303 -0
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js.map +1 -0
- package/admin/presentation/TaskExecutions/feature.d.ts +3 -0
- package/admin/presentation/TaskExecutions/feature.js +17 -0
- package/admin/presentation/TaskExecutions/feature.js.map +1 -0
- package/admin/presentation/TaskExecutions/index.d.ts +2 -0
- package/admin/presentation/TaskExecutions/index.js +2 -0
- package/admin/presentation/security/HasPermission.d.ts +12 -0
- package/admin/presentation/security/HasPermission.js +6 -0
- package/admin/presentation/security/HasPermission.js.map +1 -0
- package/admin/presentation/security/usePermissions.d.ts +12 -0
- package/admin/presentation/security/usePermissions.js +6 -0
- package/admin/presentation/security/usePermissions.js.map +1 -0
- package/admin/routes.d.ts +5 -0
- package/admin/routes.js +14 -0
- package/admin/routes.js.map +1 -0
- package/admin/shared/types.d.ts +15 -0
- package/admin/shared/types.js +0 -0
- package/api/index.d.ts +0 -0
- package/api/index.js +0 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Task } from "../../../admin/shared/types.js";
|
|
2
|
+
export interface IListTasksInput {
|
|
3
|
+
where?: Record<string, unknown>;
|
|
4
|
+
sort?: string[];
|
|
5
|
+
limit?: number;
|
|
6
|
+
after?: string;
|
|
7
|
+
search?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface IListTasksMeta {
|
|
10
|
+
cursor: string | null;
|
|
11
|
+
hasMoreItems: boolean;
|
|
12
|
+
totalCount: number;
|
|
13
|
+
}
|
|
14
|
+
export interface IListTasksOutput {
|
|
15
|
+
items: Task[];
|
|
16
|
+
meta: IListTasksMeta;
|
|
17
|
+
}
|
|
18
|
+
export interface IListTasksGateway {
|
|
19
|
+
execute(input: IListTasksInput): Promise<IListTasksOutput>;
|
|
20
|
+
}
|
|
21
|
+
export declare const ListTasksGateway: import("@webiny/di").Abstraction<IListTasksGateway>;
|
|
22
|
+
export declare namespace ListTasksGateway {
|
|
23
|
+
type Interface = IListTasksGateway;
|
|
24
|
+
}
|
|
25
|
+
export interface IListTasksUseCase {
|
|
26
|
+
execute(input: IListTasksInput): Promise<IListTasksOutput>;
|
|
27
|
+
}
|
|
28
|
+
export declare const ListTasksUseCase: import("@webiny/di").Abstraction<IListTasksUseCase>;
|
|
29
|
+
export declare namespace ListTasksUseCase {
|
|
30
|
+
type Interface = IListTasksUseCase;
|
|
31
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/admin";
|
|
2
|
+
const ListTasksGateway = createAbstraction("ListTasksGateway");
|
|
3
|
+
const ListTasksUseCase = createAbstraction("ListTasksUseCase");
|
|
4
|
+
export { ListTasksGateway, ListTasksUseCase };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/listTasks/abstractions.js","sources":["../../../../src/admin/features/listTasks/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { Task } from \"~/admin/shared/types.js\";\n\nexport interface IListTasksInput {\n where?: Record<string, unknown>;\n sort?: string[];\n limit?: number;\n after?: string;\n search?: string;\n}\n\nexport interface IListTasksMeta {\n cursor: string | null;\n hasMoreItems: boolean;\n totalCount: number;\n}\n\nexport interface IListTasksOutput {\n items: Task[];\n meta: IListTasksMeta;\n}\n\nexport interface IListTasksGateway {\n execute(input: IListTasksInput): Promise<IListTasksOutput>;\n}\n\nexport const ListTasksGateway = createAbstraction<IListTasksGateway>(\"ListTasksGateway\");\n\nexport namespace ListTasksGateway {\n export type Interface = IListTasksGateway;\n}\n\nexport interface IListTasksUseCase {\n execute(input: IListTasksInput): Promise<IListTasksOutput>;\n}\n\nexport const ListTasksUseCase = createAbstraction<IListTasksUseCase>(\"ListTasksUseCase\");\n\nexport namespace ListTasksUseCase {\n export type Interface = IListTasksUseCase;\n}\n"],"names":["ListTasksGateway","createAbstraction","ListTasksUseCase"],"mappings":";AA0BO,MAAMA,mBAAmBC,kBAAqC;AAU9D,MAAMC,mBAAmBD,kBAAqC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { ListTasksUseCase } from "./abstractions.js";
|
|
3
|
+
import { ListTasksUseCase as external_ListTasksUseCase_js_ListTasksUseCase } from "./ListTasksUseCase.js";
|
|
4
|
+
import { ListTasksGateway } from "./ListTasksGateway.js";
|
|
5
|
+
const ListTasksFeature = createFeature({
|
|
6
|
+
name: "BackgroundTasks/ListTasks",
|
|
7
|
+
register (container) {
|
|
8
|
+
container.register(external_ListTasksUseCase_js_ListTasksUseCase);
|
|
9
|
+
container.register(ListTasksGateway).inSingletonScope();
|
|
10
|
+
},
|
|
11
|
+
resolve (container) {
|
|
12
|
+
return {
|
|
13
|
+
useCase: container.resolve(ListTasksUseCase)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
export { ListTasksFeature };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/listTasks/feature.js","sources":["../../../../src/admin/features/listTasks/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { ListTasksUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { ListTasksUseCase } from \"./ListTasksUseCase.js\";\nimport { ListTasksGateway } from \"./ListTasksGateway.js\";\n\nexport const ListTasksFeature = createFeature({\n name: \"BackgroundTasks/ListTasks\",\n register(container) {\n container.register(ListTasksUseCase);\n container.register(ListTasksGateway).inSingletonScope();\n },\n resolve(container) {\n return {\n useCase: container.resolve(UseCaseAbstraction)\n };\n }\n});\n"],"names":["ListTasksFeature","createFeature","container","ListTasksUseCase","ListTasksGateway","UseCaseAbstraction"],"mappings":";;;;AAKO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,kBAAkB,gBAAgB;IACzD;IACA,SAAQF,SAAS;QACb,OAAO;YACH,SAASA,UAAU,OAAO,CAACG;QAC/B;IACJ;AACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Permissions } from "@webiny/app-admin/exports/admin/security.js";
|
|
2
|
+
import { BACKGROUND_TASK_PERMISSIONS_SCHEMA } from "../../../admin/permissions.js";
|
|
3
|
+
export declare const TaskPermissions: import("@webiny/di").Abstraction<{
|
|
4
|
+
canAccess: (entityId: "task") => boolean;
|
|
5
|
+
canAction: (action: string, entityId: "task") => boolean;
|
|
6
|
+
} & {
|
|
7
|
+
canRead: (entityId: "task") => boolean;
|
|
8
|
+
canCreate: (entityId: "task") => boolean;
|
|
9
|
+
canEdit: (entityId: "task", item?: import("@webiny/app-admin/permissions").OwnableItem) => boolean;
|
|
10
|
+
canDelete: (entityId: "task", item?: import("@webiny/app-admin/permissions").OwnableItem) => boolean;
|
|
11
|
+
} & {
|
|
12
|
+
canPublish: (entityId: string) => boolean;
|
|
13
|
+
canUnpublish: (entityId: string) => boolean;
|
|
14
|
+
}>;
|
|
15
|
+
export declare namespace TaskPermissions {
|
|
16
|
+
type Interface = Permissions<typeof BACKGROUND_TASK_PERMISSIONS_SCHEMA>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createPermissionsAbstraction } from "@webiny/app-admin/exports/admin/security.js";
|
|
2
|
+
import { BACKGROUND_TASK_PERMISSIONS_SCHEMA } from "../../permissions.js";
|
|
3
|
+
const TaskPermissions = createPermissionsAbstraction(BACKGROUND_TASK_PERMISSIONS_SCHEMA);
|
|
4
|
+
export { TaskPermissions };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/permissions/abstractions.js","sources":["../../../../src/admin/features/permissions/abstractions.ts"],"sourcesContent":["import { createPermissionsAbstraction } from \"@webiny/app-admin/exports/admin/security.js\";\nimport type { Permissions } from \"@webiny/app-admin/exports/admin/security.js\";\nimport { BACKGROUND_TASK_PERMISSIONS_SCHEMA } from \"~/admin/permissions.js\";\n\nexport const TaskPermissions = createPermissionsAbstraction(BACKGROUND_TASK_PERMISSIONS_SCHEMA);\n\nexport namespace TaskPermissions {\n export type Interface = Permissions<typeof BACKGROUND_TASK_PERMISSIONS_SCHEMA>;\n}\n"],"names":["TaskPermissions","createPermissionsAbstraction","BACKGROUND_TASK_PERMISSIONS_SCHEMA"],"mappings":";;AAIO,MAAMA,kBAAkBC,6BAA6BC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const TaskPermissionsFeature: import("@webiny/feature/admin").FeatureDefinition<{
|
|
2
|
+
permissions: {
|
|
3
|
+
canAccess: (entityId: "task") => boolean;
|
|
4
|
+
canAction: (action: string, entityId: "task") => boolean;
|
|
5
|
+
} & {
|
|
6
|
+
canRead: (entityId: "task") => boolean;
|
|
7
|
+
canCreate: (entityId: "task") => boolean;
|
|
8
|
+
canEdit: (entityId: "task", item?: import("@webiny/app-admin/index.js").OwnableItem) => boolean;
|
|
9
|
+
canDelete: (entityId: "task", item?: import("@webiny/app-admin/index.js").OwnableItem) => boolean;
|
|
10
|
+
} & {
|
|
11
|
+
canPublish: (entityId: string) => boolean;
|
|
12
|
+
canUnpublish: (entityId: string) => boolean;
|
|
13
|
+
};
|
|
14
|
+
}, []>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createPermissionsFeature } from "@webiny/app-admin/exports/admin/security.js";
|
|
2
|
+
import { BACKGROUND_TASK_PERMISSIONS_SCHEMA } from "../../permissions.js";
|
|
3
|
+
import { TaskPermissions } from "./abstractions.js";
|
|
4
|
+
const TaskPermissionsFeature = createPermissionsFeature(BACKGROUND_TASK_PERMISSIONS_SCHEMA, TaskPermissions);
|
|
5
|
+
export { TaskPermissionsFeature };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/permissions/feature.js","sources":["../../../../src/admin/features/permissions/feature.ts"],"sourcesContent":["import { createPermissionsFeature } from \"@webiny/app-admin/exports/admin/security.js\";\nimport { BACKGROUND_TASK_PERMISSIONS_SCHEMA } from \"~/admin/permissions.js\";\nimport { TaskPermissions } from \"./abstractions.js\";\n\nexport const TaskPermissionsFeature = createPermissionsFeature(\n BACKGROUND_TASK_PERMISSIONS_SCHEMA,\n TaskPermissions\n);\n"],"names":["TaskPermissionsFeature","createPermissionsFeature","BACKGROUND_TASK_PERMISSIONS_SCHEMA","TaskPermissions"],"mappings":";;;AAIO,MAAMA,yBAAyBC,yBAClCC,oCACAC"}
|
package/admin/index.d.ts
ADDED
package/admin/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const BACKGROUND_TASK_PERMISSIONS_SCHEMA: {
|
|
2
|
+
readonly prefix: "backgroundTasks";
|
|
3
|
+
readonly fullAccess: true;
|
|
4
|
+
readonly entities: [{
|
|
5
|
+
readonly id: "task";
|
|
6
|
+
readonly permission: "backgroundTasks.task";
|
|
7
|
+
readonly scopes: ["full"];
|
|
8
|
+
readonly actions: [{
|
|
9
|
+
readonly name: "rwd";
|
|
10
|
+
}];
|
|
11
|
+
}];
|
|
12
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createPermissionSchema } from "@webiny/app-admin";
|
|
2
|
+
const BACKGROUND_TASK_PERMISSIONS_SCHEMA = createPermissionSchema({
|
|
3
|
+
prefix: "backgroundTasks",
|
|
4
|
+
fullAccess: true,
|
|
5
|
+
entities: [
|
|
6
|
+
{
|
|
7
|
+
id: "task",
|
|
8
|
+
permission: "backgroundTasks.task",
|
|
9
|
+
scopes: [
|
|
10
|
+
"full"
|
|
11
|
+
],
|
|
12
|
+
actions: [
|
|
13
|
+
{
|
|
14
|
+
name: "rwd"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
});
|
|
20
|
+
export { BACKGROUND_TASK_PERMISSIONS_SCHEMA };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/permissions.js","sources":["../../src/admin/permissions.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/app-admin\";\n\nexport const BACKGROUND_TASK_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"backgroundTasks\",\n fullAccess: true,\n entities: [\n {\n id: \"task\",\n permission: \"backgroundTasks.task\",\n scopes: [\"full\"],\n actions: [{ name: \"rwd\" }]\n }\n ]\n});\n"],"names":["BACKGROUND_TASK_PERMISSIONS_SCHEMA","createPermissionSchema"],"mappings":";AAEO,MAAMA,qCAAqCC,uBAAuB;IACrE,QAAQ;IACR,YAAY;IACZ,UAAU;QACN;YACI,IAAI;YACJ,YAAY;YACZ,QAAQ;gBAAC;aAAO;YAChB,SAAS;gBAAC;oBAAE,MAAM;gBAAM;aAAE;QAC9B;KACH;AACL"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ITaskDefinitionsPresenter, type ITaskDefinitionsViewModel } from "./abstractions.js";
|
|
2
|
+
import { ListDefinitionsUseCase } from "../../../admin/features/listDefinitions/abstractions.js";
|
|
3
|
+
declare class TaskDefinitionsPresenterImpl implements ITaskDefinitionsPresenter {
|
|
4
|
+
private readonly listDefinitionsUseCase;
|
|
5
|
+
private _definitions;
|
|
6
|
+
private _loading;
|
|
7
|
+
constructor(listDefinitionsUseCase: ListDefinitionsUseCase.Interface);
|
|
8
|
+
get vm(): ITaskDefinitionsViewModel;
|
|
9
|
+
init(): void;
|
|
10
|
+
}
|
|
11
|
+
export declare const TaskDefinitionsPresenter: typeof TaskDefinitionsPresenterImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<ITaskDefinitionsPresenter>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { computed, makeAutoObservable, runInAction } from "mobx";
|
|
2
|
+
import { TaskDefinitionsPresenter } from "./abstractions.js";
|
|
3
|
+
import { ListDefinitionsUseCase } from "../../features/listDefinitions/abstractions.js";
|
|
4
|
+
class TaskDefinitionsPresenterImpl {
|
|
5
|
+
constructor(listDefinitionsUseCase){
|
|
6
|
+
this.listDefinitionsUseCase = listDefinitionsUseCase;
|
|
7
|
+
this._definitions = [];
|
|
8
|
+
this._loading = false;
|
|
9
|
+
makeAutoObservable(this, {
|
|
10
|
+
vm: computed
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
get vm() {
|
|
14
|
+
return {
|
|
15
|
+
definitions: this._definitions,
|
|
16
|
+
loading: this._loading
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
init() {
|
|
20
|
+
this._loading = true;
|
|
21
|
+
this.listDefinitionsUseCase.execute().then((definitions)=>{
|
|
22
|
+
runInAction(()=>{
|
|
23
|
+
this._definitions = definitions;
|
|
24
|
+
this._loading = false;
|
|
25
|
+
});
|
|
26
|
+
}).catch(()=>{
|
|
27
|
+
runInAction(()=>{
|
|
28
|
+
this._loading = false;
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const TaskDefinitionsPresenter_TaskDefinitionsPresenter = TaskDefinitionsPresenter.createImplementation({
|
|
34
|
+
implementation: TaskDefinitionsPresenterImpl,
|
|
35
|
+
dependencies: [
|
|
36
|
+
ListDefinitionsUseCase
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
export { TaskDefinitionsPresenter_TaskDefinitionsPresenter as TaskDefinitionsPresenter };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=TaskDefinitionsPresenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDefinitions/TaskDefinitionsPresenter.js","sources":["../../../../src/admin/presentation/TaskDefinitions/TaskDefinitionsPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport {\n TaskDefinitionsPresenter as Abstraction,\n type ITaskDefinitionsPresenter,\n type ITaskDefinitionsViewModel\n} from \"./abstractions.js\";\nimport { ListDefinitionsUseCase } from \"~/admin/features/listDefinitions/abstractions.js\";\nimport type { TaskDefinition } from \"~/admin/shared/types.js\";\n\nclass TaskDefinitionsPresenterImpl implements ITaskDefinitionsPresenter {\n private _definitions: TaskDefinition[] = [];\n private _loading = false;\n\n constructor(private readonly listDefinitionsUseCase: ListDefinitionsUseCase.Interface) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): ITaskDefinitionsViewModel {\n return {\n definitions: this._definitions,\n loading: this._loading\n };\n }\n\n init(): void {\n this._loading = true;\n void this.listDefinitionsUseCase\n .execute()\n .then(definitions => {\n runInAction(() => {\n this._definitions = definitions;\n this._loading = false;\n });\n })\n .catch(() => {\n runInAction(() => {\n this._loading = false;\n });\n });\n }\n}\n\nexport const TaskDefinitionsPresenter = Abstraction.createImplementation({\n implementation: TaskDefinitionsPresenterImpl,\n dependencies: [ListDefinitionsUseCase]\n});\n"],"names":["TaskDefinitionsPresenterImpl","listDefinitionsUseCase","makeAutoObservable","computed","definitions","runInAction","TaskDefinitionsPresenter","Abstraction","ListDefinitionsUseCase"],"mappings":";;;AASA,MAAMA;IAIF,YAA6BC,sBAAwD,CAAE;aAA1DA,sBAAsB,GAAtBA;aAHrB,YAAY,GAAqB,EAAE;aACnC,QAAQ,GAAG;QAGfC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEA,IAAI,KAAgC;QAChC,OAAO;YACH,aAAa,IAAI,CAAC,YAAY;YAC9B,SAAS,IAAI,CAAC,QAAQ;QAC1B;IACJ;IAEA,OAAa;QACT,IAAI,CAAC,QAAQ,GAAG;QACX,IAAI,CAAC,sBAAsB,CAC3B,OAAO,GACP,IAAI,CAACC,CAAAA;YACFC,YAAY;gBACR,IAAI,CAAC,YAAY,GAAGD;gBACpB,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ,GACC,KAAK,CAAC;YACHC,YAAY;gBACR,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ;IACR;AACJ;AAEO,MAAMC,oDAA2BC,yBAAAA,oBAAgC,CAAC;IACrE,gBAAgBP;IAChB,cAAc;QAACQ;KAAuB;AAC1C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TaskDefinition } from "../../../admin/shared/types.js";
|
|
2
|
+
export interface ITaskDefinitionsViewModel {
|
|
3
|
+
definitions: TaskDefinition[];
|
|
4
|
+
loading: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface ITaskDefinitionsPresenter {
|
|
7
|
+
vm: ITaskDefinitionsViewModel;
|
|
8
|
+
init(): void;
|
|
9
|
+
}
|
|
10
|
+
export declare const TaskDefinitionsPresenter: import("@webiny/di").Abstraction<ITaskDefinitionsPresenter>;
|
|
11
|
+
export declare namespace TaskDefinitionsPresenter {
|
|
12
|
+
type Interface = ITaskDefinitionsPresenter;
|
|
13
|
+
type ViewModel = ITaskDefinitionsViewModel;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDefinitions/abstractions.js","sources":["../../../../src/admin/presentation/TaskDefinitions/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { TaskDefinition } from \"~/admin/shared/types.js\";\n\nexport interface ITaskDefinitionsViewModel {\n definitions: TaskDefinition[];\n loading: boolean;\n}\n\nexport interface ITaskDefinitionsPresenter {\n vm: ITaskDefinitionsViewModel;\n init(): void;\n}\n\nexport const TaskDefinitionsPresenter = createAbstraction<ITaskDefinitionsPresenter>(\n \"TaskDefinitionsPresenter\"\n);\n\nexport namespace TaskDefinitionsPresenter {\n export type Interface = ITaskDefinitionsPresenter;\n export type ViewModel = ITaskDefinitionsViewModel;\n}\n"],"names":["TaskDefinitionsPresenter","createAbstraction"],"mappings":";AAaO,MAAMA,2BAA2BC,kBACpC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import react, { useEffect, useMemo } from "react";
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
3
|
+
import { DiContainerProvider, useContainer, useFeature } from "@webiny/app";
|
|
4
|
+
import { DataTable, Heading, Separator, Text } from "@webiny/admin-ui";
|
|
5
|
+
import { TaskDefinitionsPresenterFeature } from "../feature.js";
|
|
6
|
+
import { ListDefinitionsFeature } from "../../../features/listDefinitions/feature.js";
|
|
7
|
+
const TaskDefinitionsView_TaskDefinitionsViewInner = observer(function() {
|
|
8
|
+
const { presenter } = useFeature(TaskDefinitionsPresenterFeature);
|
|
9
|
+
useEffect(()=>{
|
|
10
|
+
presenter.init();
|
|
11
|
+
}, [
|
|
12
|
+
presenter
|
|
13
|
+
]);
|
|
14
|
+
const { vm } = presenter;
|
|
15
|
+
const columns = useMemo(()=>({
|
|
16
|
+
title: {
|
|
17
|
+
header: "Title",
|
|
18
|
+
cell: (row)=>/*#__PURE__*/ react.createElement(Text, {
|
|
19
|
+
size: "sm"
|
|
20
|
+
}, row.title || row.id),
|
|
21
|
+
enableSorting: false,
|
|
22
|
+
size: 250
|
|
23
|
+
},
|
|
24
|
+
id: {
|
|
25
|
+
header: "ID",
|
|
26
|
+
cell: (row)=>/*#__PURE__*/ react.createElement(Text, {
|
|
27
|
+
size: "sm",
|
|
28
|
+
className: "text-neutral-strong font-mono"
|
|
29
|
+
}, row.id),
|
|
30
|
+
enableSorting: false,
|
|
31
|
+
size: 250
|
|
32
|
+
},
|
|
33
|
+
description: {
|
|
34
|
+
header: "Description",
|
|
35
|
+
cell: (row)=>/*#__PURE__*/ react.createElement(Text, {
|
|
36
|
+
size: "sm",
|
|
37
|
+
className: "text-neutral-strong"
|
|
38
|
+
}, row.description || "—"),
|
|
39
|
+
enableSorting: false
|
|
40
|
+
}
|
|
41
|
+
}), []);
|
|
42
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
43
|
+
className: "flex flex-col h-main-content"
|
|
44
|
+
}, /*#__PURE__*/ react.createElement("div", {
|
|
45
|
+
className: "flex items-center justify-between py-sm px-md"
|
|
46
|
+
}, /*#__PURE__*/ react.createElement(Heading, {
|
|
47
|
+
level: 5
|
|
48
|
+
}, "Task Definitions")), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
|
|
49
|
+
className: "flex-1 overflow-auto"
|
|
50
|
+
}, vm.loading || 0 !== vm.definitions.length ? /*#__PURE__*/ react.createElement(DataTable, {
|
|
51
|
+
columns: columns,
|
|
52
|
+
data: vm.definitions,
|
|
53
|
+
loading: vm.loading,
|
|
54
|
+
stickyHeader: true
|
|
55
|
+
}) : /*#__PURE__*/ react.createElement("div", {
|
|
56
|
+
className: "flex flex-col items-center justify-center h-full gap-md"
|
|
57
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
58
|
+
className: "text-neutral-strong"
|
|
59
|
+
}, "No task definitions found."))));
|
|
60
|
+
});
|
|
61
|
+
const TaskDefinitionsView = ()=>{
|
|
62
|
+
const container = useContainer();
|
|
63
|
+
const scopedContainer = useMemo(()=>{
|
|
64
|
+
const child = container.createChildContainer();
|
|
65
|
+
ListDefinitionsFeature.register(child);
|
|
66
|
+
TaskDefinitionsPresenterFeature.register(child);
|
|
67
|
+
return child;
|
|
68
|
+
}, []);
|
|
69
|
+
return /*#__PURE__*/ react.createElement(DiContainerProvider, {
|
|
70
|
+
container: scopedContainer
|
|
71
|
+
}, /*#__PURE__*/ react.createElement(TaskDefinitionsView_TaskDefinitionsViewInner, null));
|
|
72
|
+
};
|
|
73
|
+
export { TaskDefinitionsView };
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=TaskDefinitionsView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js","sources":["../../../../../src/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { DataTable, Heading, Separator, Text } from \"@webiny/admin-ui\";\nimport { TaskDefinitionsPresenterFeature } from \"../feature.js\";\nimport { ListDefinitionsFeature } from \"~/admin/features/listDefinitions/feature.js\";\nimport type { TaskDefinition } from \"~/admin/shared/types.js\";\n\nconst TaskDefinitionsViewInner = observer(function TaskDefinitionsViewInner() {\n const { presenter } = useFeature(TaskDefinitionsPresenterFeature);\n\n useEffect(() => {\n presenter.init();\n }, [presenter]);\n\n const { vm } = presenter;\n\n const columns = useMemo(\n () => ({\n title: {\n header: \"Title\",\n cell: (row: TaskDefinition) => <Text size=\"sm\">{row.title || row.id}</Text>,\n enableSorting: false,\n size: 250\n },\n id: {\n header: \"ID\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong font-mono\">\n {row.id}\n </Text>\n ),\n enableSorting: false,\n size: 250\n },\n description: {\n header: \"Description\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n {row.description || \"—\"}\n </Text>\n ),\n enableSorting: false\n }\n }),\n []\n );\n\n return (\n <div className=\"flex flex-col h-main-content\">\n <div className=\"flex items-center justify-between py-sm px-md\">\n <Heading level={5}>Task Definitions</Heading>\n </div>\n <Separator />\n <div className=\"flex-1 overflow-auto\">\n {!vm.loading && vm.definitions.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-full gap-md\">\n <Text className=\"text-neutral-strong\">No task definitions found.</Text>\n </div>\n ) : (\n <DataTable<TaskDefinition>\n columns={columns}\n data={vm.definitions}\n loading={vm.loading}\n stickyHeader\n />\n )}\n </div>\n </div>\n );\n});\n\nexport const TaskDefinitionsView = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n ListDefinitionsFeature.register(child);\n TaskDefinitionsPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDefinitionsViewInner />\n </DiContainerProvider>\n );\n};\n"],"names":["TaskDefinitionsViewInner","observer","presenter","useFeature","TaskDefinitionsPresenterFeature","useEffect","vm","columns","useMemo","row","Text","Heading","Separator","DataTable","TaskDefinitionsView","container","useContainer","scopedContainer","child","ListDefinitionsFeature","DiContainerProvider"],"mappings":";;;;;;AAQA,MAAMA,+CAA2BC,SAAS;IACtC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IAEjCC,UAAU;QACNH,UAAU,IAAI;IAClB,GAAG;QAACA;KAAU;IAEd,MAAM,EAAEI,EAAE,EAAE,GAAGJ;IAEf,MAAMK,UAAUC,QACZ,IAAO;YACH,OAAO;gBACH,QAAQ;gBACR,MAAM,CAACC,MAAAA,WAAAA,GAAwB,oBAACC,MAAIA;wBAAC,MAAK;uBAAMD,IAAI,KAAK,IAAIA,IAAI,EAAE;gBACnE,eAAe;gBACf,MAAM;YACV;YACA,IAAI;gBACA,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACC,MAAIA;wBAAC,MAAK;wBAAK,WAAU;uBACrBD,IAAI,EAAE;gBAGf,eAAe;gBACf,MAAM;YACV;YACA,aAAa;gBACT,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACC,MAAIA;wBAAC,MAAK;wBAAK,WAAU;uBACrBD,IAAI,WAAW,IAAI;gBAG5B,eAAe;YACnB;QACJ,IACA,EAAE;IAGN,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACE,SAAOA;QAAC,OAAO;OAAG,oCAEvB,oBAACC,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;OACV,AAACN,GAAG,OAAO,IAAIA,AAA0B,MAA1BA,GAAG,WAAW,CAAC,MAAM,GAES,cAG1C,oBAACO,WAASA;QACN,SAASN;QACT,MAAMD,GAAG,WAAW;QACpB,SAASA,GAAG,OAAO;QACnB;SATsC,WAAJ,GACtC,oBAAC;QAAI,WAAU;qBACX,oBAACI,MAAIA;QAAC,WAAU;OAAsB;AAa9D;AAEO,MAAMI,sBAAsB;IAC/B,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBT,QAAQ;QAC5B,MAAMU,QAAQH,UAAU,oBAAoB;QAC5CI,uBAAuB,QAAQ,CAACD;QAChCd,gCAAgC,QAAQ,CAACc;QACzC,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACE,qBAAmBA;QAAC,WAAWH;qBAC5B,oBAACjB,8CAAwBA;AAGrC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { TaskDefinitionsPresenter } from "./abstractions.js";
|
|
3
|
+
import { TaskDefinitionsPresenter as external_TaskDefinitionsPresenter_js_TaskDefinitionsPresenter } from "./TaskDefinitionsPresenter.js";
|
|
4
|
+
const TaskDefinitionsPresenterFeature = createFeature({
|
|
5
|
+
name: "BackgroundTasks/TaskDefinitionsPresenter",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(external_TaskDefinitionsPresenter_js_TaskDefinitionsPresenter).inSingletonScope();
|
|
8
|
+
},
|
|
9
|
+
resolve (container) {
|
|
10
|
+
return {
|
|
11
|
+
presenter: container.resolve(TaskDefinitionsPresenter)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export { TaskDefinitionsPresenterFeature };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDefinitions/feature.js","sources":["../../../../src/admin/presentation/TaskDefinitions/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { TaskDefinitionsPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { TaskDefinitionsPresenter } from \"./TaskDefinitionsPresenter.js\";\n\nexport const TaskDefinitionsPresenterFeature = createFeature({\n name: \"BackgroundTasks/TaskDefinitionsPresenter\",\n register(container) {\n container.register(TaskDefinitionsPresenter).inSingletonScope();\n },\n resolve(container) {\n return { presenter: container.resolve(PresenterAbstraction) };\n }\n});\n"],"names":["TaskDefinitionsPresenterFeature","createFeature","container","TaskDefinitionsPresenter","PresenterAbstraction"],"mappings":";;;AAIO,MAAMA,kCAAkCC,cAAc;IACzD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,+DAA0B,gBAAgB;IACjE;IACA,SAAQD,SAAS;QACb,OAAO;YAAE,WAAWA,UAAU,OAAO,CAACE;QAAsB;IAChE;AACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ITaskDetailPresenter, type ITaskDetailViewModel } from "./abstractions.js";
|
|
2
|
+
import { GetTaskUseCase } from "../../../admin/features/getTask/abstractions.js";
|
|
3
|
+
import { ListLogsUseCase } from "../../../admin/features/listLogs/abstractions.js";
|
|
4
|
+
declare class TaskDetailPresenterImpl implements ITaskDetailPresenter {
|
|
5
|
+
private readonly getTaskUseCase;
|
|
6
|
+
private readonly listLogsUseCase;
|
|
7
|
+
private _task;
|
|
8
|
+
private _loading;
|
|
9
|
+
private _logs;
|
|
10
|
+
private _logsLoading;
|
|
11
|
+
private _logsCursor;
|
|
12
|
+
private _logsHasMore;
|
|
13
|
+
private _logsTotalCount;
|
|
14
|
+
private _taskId;
|
|
15
|
+
constructor(getTaskUseCase: GetTaskUseCase.Interface, listLogsUseCase: ListLogsUseCase.Interface);
|
|
16
|
+
get vm(): ITaskDetailViewModel;
|
|
17
|
+
init(taskId: string): Promise<void>;
|
|
18
|
+
loadMore(): Promise<void>;
|
|
19
|
+
private fetchLogs;
|
|
20
|
+
}
|
|
21
|
+
export declare const TaskDetailPresenter: typeof TaskDetailPresenterImpl & {
|
|
22
|
+
__abstraction: import("@webiny/di").Abstraction<ITaskDetailPresenter>;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { computed, makeAutoObservable, runInAction } from "mobx";
|
|
2
|
+
import { TaskDetailPresenter } from "./abstractions.js";
|
|
3
|
+
import { GetTaskUseCase } from "../../features/getTask/abstractions.js";
|
|
4
|
+
import { ListLogsUseCase } from "../../features/listLogs/abstractions.js";
|
|
5
|
+
class TaskDetailPresenterImpl {
|
|
6
|
+
constructor(getTaskUseCase, listLogsUseCase){
|
|
7
|
+
this.getTaskUseCase = getTaskUseCase;
|
|
8
|
+
this.listLogsUseCase = listLogsUseCase;
|
|
9
|
+
this._task = null;
|
|
10
|
+
this._loading = false;
|
|
11
|
+
this._logs = [];
|
|
12
|
+
this._logsLoading = false;
|
|
13
|
+
this._logsCursor = null;
|
|
14
|
+
this._logsHasMore = false;
|
|
15
|
+
this._logsTotalCount = 0;
|
|
16
|
+
this._taskId = null;
|
|
17
|
+
makeAutoObservable(this, {
|
|
18
|
+
vm: computed
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
get vm() {
|
|
22
|
+
return {
|
|
23
|
+
task: this._task,
|
|
24
|
+
loading: this._loading,
|
|
25
|
+
logs: {
|
|
26
|
+
rows: this._logs,
|
|
27
|
+
pagination: {
|
|
28
|
+
totalCount: this._logsTotalCount,
|
|
29
|
+
loading: this._logsLoading,
|
|
30
|
+
hasMore: this._logsHasMore
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async init(taskId) {
|
|
36
|
+
this._taskId = taskId;
|
|
37
|
+
this._loading = true;
|
|
38
|
+
this._logs = [];
|
|
39
|
+
this._logsCursor = null;
|
|
40
|
+
this._logsHasMore = false;
|
|
41
|
+
this._logsTotalCount = 0;
|
|
42
|
+
const task = await this.getTaskUseCase.execute(taskId);
|
|
43
|
+
runInAction(()=>{
|
|
44
|
+
this._task = task;
|
|
45
|
+
this._loading = false;
|
|
46
|
+
});
|
|
47
|
+
await this.fetchLogs();
|
|
48
|
+
}
|
|
49
|
+
async loadMore() {
|
|
50
|
+
if (!this._logsHasMore || this._logsLoading) return;
|
|
51
|
+
await this.fetchLogs(this._logsCursor);
|
|
52
|
+
}
|
|
53
|
+
async fetchLogs(after) {
|
|
54
|
+
this._logsLoading = true;
|
|
55
|
+
const result = await this.listLogsUseCase.execute({
|
|
56
|
+
where: {
|
|
57
|
+
task: this._taskId
|
|
58
|
+
},
|
|
59
|
+
sort: [
|
|
60
|
+
"createdOn_DESC"
|
|
61
|
+
],
|
|
62
|
+
limit: 50,
|
|
63
|
+
after: after ?? void 0
|
|
64
|
+
});
|
|
65
|
+
runInAction(()=>{
|
|
66
|
+
if (after) this._logs = [
|
|
67
|
+
...this._logs,
|
|
68
|
+
...result.items
|
|
69
|
+
];
|
|
70
|
+
else this._logs = result.items;
|
|
71
|
+
this._logsCursor = result.meta.cursor;
|
|
72
|
+
this._logsHasMore = result.meta.hasMoreItems;
|
|
73
|
+
this._logsTotalCount = result.meta.totalCount;
|
|
74
|
+
this._logsLoading = false;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const TaskDetailPresenter_TaskDetailPresenter = TaskDetailPresenter.createImplementation({
|
|
79
|
+
implementation: TaskDetailPresenterImpl,
|
|
80
|
+
dependencies: [
|
|
81
|
+
GetTaskUseCase,
|
|
82
|
+
ListLogsUseCase
|
|
83
|
+
]
|
|
84
|
+
});
|
|
85
|
+
export { TaskDetailPresenter_TaskDetailPresenter as TaskDetailPresenter };
|
|
86
|
+
|
|
87
|
+
//# sourceMappingURL=TaskDetailPresenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDetail/TaskDetailPresenter.js","sources":["../../../../src/admin/presentation/TaskDetail/TaskDetailPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type { Task, TaskLog } from \"~/admin/shared/types.js\";\nimport {\n TaskDetailPresenter as Abstraction,\n type ITaskDetailPresenter,\n type ITaskDetailViewModel\n} from \"./abstractions.js\";\nimport { GetTaskUseCase } from \"~/admin/features/getTask/abstractions.js\";\nimport { ListLogsUseCase } from \"~/admin/features/listLogs/abstractions.js\";\n\nclass TaskDetailPresenterImpl implements ITaskDetailPresenter {\n private _task: Task | null = null;\n private _loading = false;\n private _logs: TaskLog[] = [];\n private _logsLoading = false;\n private _logsCursor: string | null = null;\n private _logsHasMore = false;\n private _logsTotalCount = 0;\n private _taskId: string | null = null;\n\n constructor(\n private readonly getTaskUseCase: GetTaskUseCase.Interface,\n private readonly listLogsUseCase: ListLogsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): ITaskDetailViewModel {\n return {\n task: this._task,\n loading: this._loading,\n logs: {\n rows: this._logs,\n pagination: {\n totalCount: this._logsTotalCount,\n loading: this._logsLoading,\n hasMore: this._logsHasMore\n }\n }\n };\n }\n\n async init(taskId: string): Promise<void> {\n this._taskId = taskId;\n this._loading = true;\n this._logs = [];\n this._logsCursor = null;\n this._logsHasMore = false;\n this._logsTotalCount = 0;\n\n const task = await this.getTaskUseCase.execute(taskId);\n\n runInAction(() => {\n this._task = task;\n this._loading = false;\n });\n\n await this.fetchLogs();\n }\n\n async loadMore(): Promise<void> {\n if (!this._logsHasMore || this._logsLoading) {\n return;\n }\n\n await this.fetchLogs(this._logsCursor);\n }\n\n private async fetchLogs(after?: string | null): Promise<void> {\n this._logsLoading = true;\n\n const result = await this.listLogsUseCase.execute({\n where: { task: this._taskId! },\n sort: [\"createdOn_DESC\"],\n limit: 50,\n after: after ?? undefined\n });\n\n runInAction(() => {\n if (after) {\n this._logs = [...this._logs, ...result.items];\n } else {\n this._logs = result.items;\n }\n this._logsCursor = result.meta.cursor;\n this._logsHasMore = result.meta.hasMoreItems;\n this._logsTotalCount = result.meta.totalCount;\n this._logsLoading = false;\n });\n }\n}\n\nexport const TaskDetailPresenter = Abstraction.createImplementation({\n implementation: TaskDetailPresenterImpl,\n dependencies: [GetTaskUseCase, ListLogsUseCase]\n});\n"],"names":["TaskDetailPresenterImpl","getTaskUseCase","listLogsUseCase","makeAutoObservable","computed","taskId","task","runInAction","after","result","undefined","TaskDetailPresenter","Abstraction","GetTaskUseCase","ListLogsUseCase"],"mappings":";;;;AAUA,MAAMA;IAUF,YACqBC,cAAwC,EACxCC,eAA0C,CAC7D;aAFmBD,cAAc,GAAdA;aACAC,eAAe,GAAfA;aAXb,KAAK,GAAgB;aACrB,QAAQ,GAAG;aACX,KAAK,GAAc,EAAE;aACrB,YAAY,GAAG;aACf,WAAW,GAAkB;aAC7B,YAAY,GAAG;aACf,eAAe,GAAG;aAClB,OAAO,GAAkB;QAM7BC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEA,IAAI,KAA2B;QAC3B,OAAO;YACH,MAAM,IAAI,CAAC,KAAK;YAChB,SAAS,IAAI,CAAC,QAAQ;YACtB,MAAM;gBACF,MAAM,IAAI,CAAC,KAAK;gBAChB,YAAY;oBACR,YAAY,IAAI,CAAC,eAAe;oBAChC,SAAS,IAAI,CAAC,YAAY;oBAC1B,SAAS,IAAI,CAAC,YAAY;gBAC9B;YACJ;QACJ;IACJ;IAEA,MAAM,KAAKC,MAAc,EAAiB;QACtC,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,WAAW,GAAG;QACnB,IAAI,CAAC,YAAY,GAAG;QACpB,IAAI,CAAC,eAAe,GAAG;QAEvB,MAAMC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACD;QAE/CE,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD;YACb,IAAI,CAAC,QAAQ,GAAG;QACpB;QAEA,MAAM,IAAI,CAAC,SAAS;IACxB;IAEA,MAAM,WAA0B;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EACvC;QAGJ,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW;IACzC;IAEA,MAAc,UAAUE,KAAqB,EAAiB;QAC1D,IAAI,CAAC,YAAY,GAAG;QAEpB,MAAMC,SAAS,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC9C,OAAO;gBAAE,MAAM,IAAI,CAAC,OAAO;YAAE;YAC7B,MAAM;gBAAC;aAAiB;YACxB,OAAO;YACP,OAAOD,SAASE;QACpB;QAEAH,YAAY;YACR,IAAIC,OACA,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKC,OAAO,KAAK;aAAC;iBAE7C,IAAI,CAAC,KAAK,GAAGA,OAAO,KAAK;YAE7B,IAAI,CAAC,WAAW,GAAGA,OAAO,IAAI,CAAC,MAAM;YACrC,IAAI,CAAC,YAAY,GAAGA,OAAO,IAAI,CAAC,YAAY;YAC5C,IAAI,CAAC,eAAe,GAAGA,OAAO,IAAI,CAAC,UAAU;YAC7C,IAAI,CAAC,YAAY,GAAG;QACxB;IACJ;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBZ;IAChB,cAAc;QAACa;QAAgBC;KAAgB;AACnD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Task, TaskLog } from "../../../admin/shared/types.js";
|
|
2
|
+
export interface ILogsViewModel {
|
|
3
|
+
rows: TaskLog[];
|
|
4
|
+
pagination: {
|
|
5
|
+
totalCount: number;
|
|
6
|
+
loading: boolean;
|
|
7
|
+
hasMore: boolean;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export interface ITaskDetailViewModel {
|
|
11
|
+
task: Task | null;
|
|
12
|
+
loading: boolean;
|
|
13
|
+
logs: ILogsViewModel;
|
|
14
|
+
}
|
|
15
|
+
export interface ITaskDetailPresenter {
|
|
16
|
+
vm: ITaskDetailViewModel;
|
|
17
|
+
init(taskId: string): void;
|
|
18
|
+
loadMore(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare const TaskDetailPresenter: import("@webiny/di").Abstraction<ITaskDetailPresenter>;
|
|
21
|
+
export declare namespace TaskDetailPresenter {
|
|
22
|
+
type Interface = ITaskDetailPresenter;
|
|
23
|
+
type ViewModel = ITaskDetailViewModel;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDetail/abstractions.js","sources":["../../../../src/admin/presentation/TaskDetail/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { Task, TaskLog } from \"~/admin/shared/types.js\";\n\nexport interface ILogsViewModel {\n rows: TaskLog[];\n pagination: {\n totalCount: number;\n loading: boolean;\n hasMore: boolean;\n };\n}\n\nexport interface ITaskDetailViewModel {\n task: Task | null;\n loading: boolean;\n logs: ILogsViewModel;\n}\n\nexport interface ITaskDetailPresenter {\n vm: ITaskDetailViewModel;\n init(taskId: string): void;\n loadMore(): void;\n}\n\nexport const TaskDetailPresenter = createAbstraction<ITaskDetailPresenter>(\"TaskDetailPresenter\");\n\nexport namespace TaskDetailPresenter {\n export type Interface = ITaskDetailPresenter;\n export type ViewModel = ITaskDetailViewModel;\n}\n"],"names":["TaskDetailPresenter","createAbstraction"],"mappings":";AAwBO,MAAMA,sBAAsBC,kBAAwC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Task } from "../../../../admin/shared/types.js";
|
|
3
|
+
interface TaskDetailDrawerProps {
|
|
4
|
+
task: Task;
|
|
5
|
+
open: boolean;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
onAbort: (id: string) => Promise<void>;
|
|
8
|
+
onDelete: (id: string) => Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const TaskDetailDrawer: (props: TaskDetailDrawerProps) => React.JSX.Element;
|
|
11
|
+
export {};
|