@webiny/api-headless-cms-tasks 0.0.0-unstable.06b2ede40f → 0.0.0-unstable.0d717d18dd
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/HcmsTasksFeature.d.ts +4 -0
- package/HcmsTasksFeature.js +20 -0
- package/HcmsTasksFeature.js.map +1 -0
- package/README.md +10 -14
- package/constants.js +4 -0
- package/constants.js.map +1 -0
- package/features/DeleteModelTask/DeleteModel.d.ts +16 -0
- package/features/DeleteModelTask/DeleteModel.js +113 -0
- package/features/DeleteModelTask/DeleteModel.js.map +1 -0
- package/features/DeleteModelTask/DeleteModelTask.d.ts +25 -0
- package/features/DeleteModelTask/DeleteModelTask.js +42 -0
- package/features/DeleteModelTask/DeleteModelTask.js.map +1 -0
- package/features/DeleteModelTask/feature.d.ts +4 -0
- package/features/DeleteModelTask/feature.js +11 -0
- package/features/DeleteModelTask/feature.js.map +1 -0
- package/{tasks/deleteModel → features/DeleteModelTask}/types.d.ts +3 -7
- package/features/DeleteModelTask/types.js +10 -0
- package/features/DeleteModelTask/types.js.map +1 -0
- package/features/DisableModel/BlockActionIfModelDisabled.d.ts +8 -0
- package/features/DisableModel/BlockActionIfModelDisabled.js +14 -0
- package/features/DisableModel/BlockActionIfModelDisabled.js.map +1 -0
- package/features/DisableModel/abstractions.d.ts +8 -0
- package/features/DisableModel/abstractions.js +5 -0
- package/features/DisableModel/abstractions.js.map +1 -0
- package/features/DisableModel/feature.d.ts +4 -0
- package/features/DisableModel/feature.js +34 -0
- package/features/DisableModel/feature.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeCreate.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeCreate.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeCreate.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeMove.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeMove.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeMove.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforePublish.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforePublish.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforePublish.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeRepublish.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeRepublish.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeRepublish.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeRestoreFromBin.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeRestoreFromBin.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeRestoreFromBin.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeUnpublish.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeUnpublish.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeUnpublish.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeUpdate.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeUpdate.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeUpdate.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryRevisionBeforeCreate.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryRevisionBeforeCreate.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryRevisionBeforeCreate.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnModelBeforeCreateFrom.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnModelBeforeCreateFrom.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnModelBeforeCreateFrom.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnModelBeforeUpdate.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnModelBeforeUpdate.js +19 -0
- package/features/DisableModel/handlers/BlockModelActionOnModelBeforeUpdate.js.map +1 -0
- package/features/DisableModel/index.d.ts +1 -0
- package/features/DisableModel/index.js +1 -0
- package/graphql/deleteModel/abstractions.d.ts +12 -0
- package/graphql/deleteModel/abstractions.js +5 -0
- package/graphql/deleteModel/abstractions.js.map +1 -0
- package/graphql/deleteModel/cancelDeleteModel.d.ts +7 -0
- package/graphql/deleteModel/cancelDeleteModel.js +57 -0
- package/graphql/deleteModel/cancelDeleteModel.js.map +1 -0
- package/graphql/deleteModel/crud.d.ts +2 -0
- package/graphql/deleteModel/crud.js +56 -0
- package/graphql/deleteModel/crud.js.map +1 -0
- package/graphql/deleteModel/fullyDeleteModel.d.ts +7 -0
- package/graphql/deleteModel/fullyDeleteModel.js +58 -0
- package/graphql/deleteModel/fullyDeleteModel.js.map +1 -0
- package/graphql/deleteModel/getDeleteModelProgress.d.ts +7 -0
- package/graphql/deleteModel/getDeleteModelProgress.js +61 -0
- package/graphql/deleteModel/getDeleteModelProgress.js.map +1 -0
- package/graphql/deleteModel/index.d.ts +3 -0
- package/graphql/deleteModel/index.js +143 -0
- package/graphql/deleteModel/index.js.map +1 -0
- package/graphql/deleteModel/status.d.ts +3 -0
- package/graphql/deleteModel/status.js +18 -0
- package/graphql/deleteModel/status.js.map +1 -0
- package/helpers/confirmation.js +9 -0
- package/helpers/confirmation.js.map +1 -0
- package/helpers/store.d.ts +14 -0
- package/helpers/store.js +40 -0
- package/helpers/store.js.map +1 -0
- package/index.d.ts +1 -3
- package/index.js +1 -19
- package/package.json +31 -29
- package/types.d.ts +2 -12
- package/types.js +0 -7
- package/index.js.map +0 -1
- package/tasks/deleteModel/DeleteModelRunner.d.ts +0 -19
- package/tasks/deleteModel/DeleteModelRunner.js +0 -139
- package/tasks/deleteModel/DeleteModelRunner.js.map +0 -1
- package/tasks/deleteModel/constants.js +0 -9
- package/tasks/deleteModel/constants.js.map +0 -1
- package/tasks/deleteModel/graphql/attachLifecycleEvents.d.ts +0 -5
- package/tasks/deleteModel/graphql/attachLifecycleEvents.js +0 -40
- package/tasks/deleteModel/graphql/attachLifecycleEvents.js.map +0 -1
- package/tasks/deleteModel/graphql/cancelDeleteModel.d.ts +0 -7
- package/tasks/deleteModel/graphql/cancelDeleteModel.js +0 -64
- package/tasks/deleteModel/graphql/cancelDeleteModel.js.map +0 -1
- package/tasks/deleteModel/graphql/crud.d.ts +0 -3
- package/tasks/deleteModel/graphql/crud.js +0 -82
- package/tasks/deleteModel/graphql/crud.js.map +0 -1
- package/tasks/deleteModel/graphql/fullyDeleteModel.d.ts +0 -7
- package/tasks/deleteModel/graphql/fullyDeleteModel.js +0 -57
- package/tasks/deleteModel/graphql/fullyDeleteModel.js.map +0 -1
- package/tasks/deleteModel/graphql/getDeleteModelProgress.d.ts +0 -7
- package/tasks/deleteModel/graphql/getDeleteModelProgress.js +0 -66
- package/tasks/deleteModel/graphql/getDeleteModelProgress.js.map +0 -1
- package/tasks/deleteModel/graphql/index.d.ts +0 -3
- package/tasks/deleteModel/graphql/index.js +0 -166
- package/tasks/deleteModel/graphql/index.js.map +0 -1
- package/tasks/deleteModel/graphql/isModelBeingDeleted.d.ts +0 -5
- package/tasks/deleteModel/graphql/isModelBeingDeleted.js +0 -15
- package/tasks/deleteModel/graphql/isModelBeingDeleted.js.map +0 -1
- package/tasks/deleteModel/graphql/status.d.ts +0 -3
- package/tasks/deleteModel/graphql/status.js +0 -24
- package/tasks/deleteModel/graphql/status.js.map +0 -1
- package/tasks/deleteModel/helpers/confirmation.js +0 -23
- package/tasks/deleteModel/helpers/confirmation.js.map +0 -1
- package/tasks/deleteModel/helpers/store.d.ts +0 -10
- package/tasks/deleteModel/helpers/store.js +0 -26
- package/tasks/deleteModel/helpers/store.js.map +0 -1
- package/tasks/deleteModel/index.d.ts +0 -3
- package/tasks/deleteModel/index.js +0 -50
- package/tasks/deleteModel/index.js.map +0 -1
- package/tasks/deleteModel/types.js +0 -15
- package/tasks/deleteModel/types.js.map +0 -1
- package/types.js.map +0 -1
- /package/{tasks/deleteModel/constants.d.ts → constants.d.ts} +0 -0
- /package/{tasks/deleteModel/helpers → helpers}/confirmation.d.ts +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { RequestContextInitializer } from "@webiny/event-handler-core";
|
|
3
|
+
import { HcmsBulkActionsFeature } from "@webiny/api-headless-cms-bulk-actions";
|
|
4
|
+
import { DeleteModelTaskFeature } from "./features/DeleteModelTask/feature.js";
|
|
5
|
+
import { createDeleteModelCrud } from "./graphql/deleteModel/crud.js";
|
|
6
|
+
import { createDeleteModelGraphQl } from "./graphql/deleteModel/index.js";
|
|
7
|
+
const HcmsTasksFeature = createFeature({
|
|
8
|
+
name: "HcmsTasks",
|
|
9
|
+
register (container) {
|
|
10
|
+
HcmsBulkActionsFeature.register(container, {
|
|
11
|
+
batchSize: 100
|
|
12
|
+
});
|
|
13
|
+
DeleteModelTaskFeature.register(container);
|
|
14
|
+
container.registerInstance(RequestContextInitializer, createDeleteModelCrud());
|
|
15
|
+
container.registerInstance(RequestContextInitializer, createDeleteModelGraphQl());
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
export { HcmsTasksFeature };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=HcmsTasksFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HcmsTasksFeature.js","sources":["../src/HcmsTasksFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { RequestContextInitializer } from \"@webiny/event-handler-core\";\nimport { HcmsBulkActionsFeature } from \"@webiny/api-headless-cms-bulk-actions\";\nimport { DeleteModelTaskFeature } from \"./features/DeleteModelTask/feature.js\";\nimport { createDeleteModelCrud } from \"./graphql/deleteModel/crud.js\";\nimport { createDeleteModelGraphQl } from \"./graphql/deleteModel/index.js\";\n\nexport const HcmsTasksFeature = createFeature({\n name: \"HcmsTasks\",\n register(container) {\n // Bulk actions (entries) + the empty-trash-bin task.\n HcmsBulkActionsFeature.register(container, { batchSize: 100 });\n\n // Delete-model task + its per-request operations/schema. The crud initializer registers\n // DeleteModelOperations (+ DisableModelFeature) and MUST run before the GraphQL initializer,\n // whose resolvers resolve DeleteModelOperations — RequestContextInitializers run in\n // registration order.\n DeleteModelTaskFeature.register(container);\n container.registerInstance(RequestContextInitializer, createDeleteModelCrud());\n container.registerInstance(RequestContextInitializer, createDeleteModelGraphQl());\n }\n});\n"],"names":["HcmsTasksFeature","createFeature","container","HcmsBulkActionsFeature","DeleteModelTaskFeature","RequestContextInitializer","createDeleteModelCrud","createDeleteModelGraphQl"],"mappings":";;;;;;AAOO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAS;QAEdC,uBAAuB,QAAQ,CAACD,WAAW;YAAE,WAAW;QAAI;QAM5DE,uBAAuB,QAAQ,CAACF;QAChCA,UAAU,gBAAgB,CAACG,2BAA2BC;QACtDJ,UAAU,gBAAgB,CAACG,2BAA2BE;IAC1D;AACJ"}
|
package/README.md
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
# @webiny/api-headless-cms-tasks
|
|
2
|
-
|
|
3
|
-
[!
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Or if you prefer yarn:
|
|
13
|
-
```
|
|
14
|
-
yarn add @webiny/api-headless-cms-tasks
|
|
15
|
-
```
|
|
2
|
+
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> This package is part of the [Webiny](https://www.webiny.com) monorepo.
|
|
5
|
+
> It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
|
|
6
|
+
|
|
7
|
+
📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
_This README file is automatically generated during the publish process._
|
package/constants.js
ADDED
package/constants.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const DELETE_MODEL_TASK = \"deleteModelAndEntries\";\n"],"names":["DELETE_MODEL_TASK"],"mappings":"AAAO,MAAMA,oBAAoB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CmsContext } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
2
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
3
|
+
import type { IDeleteModelTaskInput } from "./types.js";
|
|
4
|
+
import type { IDeleteModelTaskOutput } from "./types.js";
|
|
5
|
+
type IRunParams = TaskDefinition.RunParams<IDeleteModelTaskInput, IDeleteModelTaskOutput>;
|
|
6
|
+
export interface IDeleteModel {
|
|
7
|
+
run(params: IRunParams): Promise<TaskDefinition.Result<IDeleteModelTaskInput, IDeleteModelTaskOutput>>;
|
|
8
|
+
}
|
|
9
|
+
export declare class DeleteModel implements IDeleteModel {
|
|
10
|
+
private context;
|
|
11
|
+
constructor(context: CmsContext.Interface);
|
|
12
|
+
run(params: IRunParams): Promise<TaskDefinition.Result<IDeleteModelTaskInput, IDeleteModelTaskOutput>>;
|
|
13
|
+
private getModel;
|
|
14
|
+
private removeBeingDeleted;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ListFoldersUseCase } from "@webiny/api-aco/features/folder/ListFolders/index.js";
|
|
2
|
+
import { DeleteFolderUseCase } from "@webiny/api-aco/features/folder/DeleteFolder/index.js";
|
|
3
|
+
import { ListEntriesStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js";
|
|
4
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
5
|
+
import { DeleteModelUseCase } from "@webiny/api-headless-cms/features/contentModel/DeleteModel/index.js";
|
|
6
|
+
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
|
|
7
|
+
import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/abstractions.js";
|
|
8
|
+
import { createDeleteModelStore } from "../../helpers/store.js";
|
|
9
|
+
class DeleteModel {
|
|
10
|
+
constructor(context){
|
|
11
|
+
this.context = context;
|
|
12
|
+
}
|
|
13
|
+
async run(params) {
|
|
14
|
+
const { input, controller } = params;
|
|
15
|
+
const model = await this.getModel(input.modelId);
|
|
16
|
+
let hasMoreItems = false;
|
|
17
|
+
let lastDeletedId = input.lastDeletedId;
|
|
18
|
+
do {
|
|
19
|
+
if (controller.runtime.isAborted()) {
|
|
20
|
+
await this.removeBeingDeleted(model);
|
|
21
|
+
return controller.response.aborted();
|
|
22
|
+
}
|
|
23
|
+
if (controller.runtime.isCloseToTimeout()) return controller.response.continue({
|
|
24
|
+
...input,
|
|
25
|
+
lastDeletedId
|
|
26
|
+
});
|
|
27
|
+
const where = {
|
|
28
|
+
latest: true
|
|
29
|
+
};
|
|
30
|
+
if (lastDeletedId) where.entryId_gte = lastDeletedId;
|
|
31
|
+
const listEntries = this.context.container.resolve(ListEntriesStorageOperation);
|
|
32
|
+
const { items, hasMoreItems: metaHasMoreItems } = await listEntries.execute(model, {
|
|
33
|
+
limit: 1000,
|
|
34
|
+
where,
|
|
35
|
+
sort: [
|
|
36
|
+
"entryId_ASC"
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
for (const item of items){
|
|
40
|
+
try {
|
|
41
|
+
const deleteResult = await this.context.container.resolve(DeleteEntryUseCase).execute(model, item.id, {
|
|
42
|
+
permanently: true,
|
|
43
|
+
force: true
|
|
44
|
+
});
|
|
45
|
+
if (deleteResult.isFail()) throw deleteResult.error;
|
|
46
|
+
} catch {
|
|
47
|
+
console.error("Failed to delete entry.", {
|
|
48
|
+
model: model.modelId,
|
|
49
|
+
id: item.id
|
|
50
|
+
});
|
|
51
|
+
return controller.response.error(new Error(`Failed to delete entry "${item.id}". Cannot continue.`));
|
|
52
|
+
}
|
|
53
|
+
lastDeletedId = item.entryId;
|
|
54
|
+
}
|
|
55
|
+
hasMoreItems = metaHasMoreItems;
|
|
56
|
+
}while (hasMoreItems)
|
|
57
|
+
const listEntries = this.context.container.resolve(ListEntriesStorageOperation);
|
|
58
|
+
const { items } = await listEntries.execute(model, {
|
|
59
|
+
limit: 1,
|
|
60
|
+
where: {
|
|
61
|
+
latest: true
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
if (items.length > 0) {
|
|
65
|
+
console.log("There are still items to be deleted. Continuing the task.");
|
|
66
|
+
return controller.response.continue({
|
|
67
|
+
...input
|
|
68
|
+
}, {
|
|
69
|
+
seconds: 5
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
let hasMoreFolders = false;
|
|
73
|
+
const listFolders = this.context.container.resolve(ListFoldersUseCase);
|
|
74
|
+
const deleteFolder = this.context.container.resolve(DeleteFolderUseCase);
|
|
75
|
+
do {
|
|
76
|
+
const listResult = await listFolders.execute({
|
|
77
|
+
where: {
|
|
78
|
+
type: `cms:${model.modelId}`
|
|
79
|
+
},
|
|
80
|
+
limit: 1000
|
|
81
|
+
});
|
|
82
|
+
const { folders, meta } = listResult.value;
|
|
83
|
+
for (const item of folders){
|
|
84
|
+
const result = await deleteFolder.execute(item.id);
|
|
85
|
+
if (result.isFail()) return controller.response.error(result.error);
|
|
86
|
+
}
|
|
87
|
+
hasMoreFolders = meta.hasMoreItems;
|
|
88
|
+
}while (hasMoreFolders)
|
|
89
|
+
await this.removeBeingDeleted(model);
|
|
90
|
+
if (model.isPlugin) return controller.response.done();
|
|
91
|
+
try {
|
|
92
|
+
const deleteModelResult = await this.context.container.resolve(DeleteModelUseCase).execute(model.modelId);
|
|
93
|
+
if (deleteModelResult.isFail()) throw deleteModelResult.error;
|
|
94
|
+
} catch (ex) {
|
|
95
|
+
const message = `Failed to delete model "${model.modelId}".`;
|
|
96
|
+
console.error(message);
|
|
97
|
+
return controller.response.error(ex);
|
|
98
|
+
}
|
|
99
|
+
return controller.response.done();
|
|
100
|
+
}
|
|
101
|
+
async getModel(modelId) {
|
|
102
|
+
const result = await this.context.container.resolve(GetModelUseCase).execute(modelId);
|
|
103
|
+
if (result.isFail()) throw result.error;
|
|
104
|
+
return result.value;
|
|
105
|
+
}
|
|
106
|
+
async removeBeingDeleted(model) {
|
|
107
|
+
const store = createDeleteModelStore(this.context.container.resolve(GlobalKeyValueStore), model.tenant);
|
|
108
|
+
await store.remove(model.modelId);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export { DeleteModel };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=DeleteModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DeleteModelTask/DeleteModel.js","sources":["../../../src/features/DeleteModelTask/DeleteModel.ts"],"sourcesContent":["import type { CmsEntryListWhere } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { ListFoldersUseCase } from \"@webiny/api-aco/features/folder/ListFolders/index.js\";\nimport { DeleteFolderUseCase } from \"@webiny/api-aco/features/folder/DeleteFolder/index.js\";\nimport { CmsContext } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { ListEntriesStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { DeleteModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/DeleteModel/index.js\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport { GlobalKeyValueStore } from \"@webiny/api-core/features/keyValueStore/abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { IDeleteModelTaskInput } from \"./types.js\";\nimport type { IDeleteModelTaskOutput } from \"./types.js\";\nimport { createDeleteModelStore } from \"~/helpers/store.js\";\n\ntype IRunParams = TaskDefinition.RunParams<IDeleteModelTaskInput, IDeleteModelTaskOutput>;\n\nexport interface IDeleteModel {\n run(\n params: IRunParams\n ): Promise<TaskDefinition.Result<IDeleteModelTaskInput, IDeleteModelTaskOutput>>;\n}\n\nexport class DeleteModel implements IDeleteModel {\n constructor(private context: CmsContext.Interface) {}\n\n public async run(\n params: IRunParams\n ): Promise<TaskDefinition.Result<IDeleteModelTaskInput, IDeleteModelTaskOutput>> {\n const { input, controller } = params;\n\n const model = await this.getModel(input.modelId);\n\n let hasMoreItems = false;\n let lastDeletedId: string | undefined = input.lastDeletedId;\n do {\n if (controller.runtime.isAborted()) {\n /**\n * If the task was aborted, we need to remove the task tag from the model.\n */\n await this.removeBeingDeleted(model);\n return controller.response.aborted();\n } else if (controller.runtime.isCloseToTimeout()) {\n return controller.response.continue({\n ...input,\n lastDeletedId\n });\n }\n const where: CmsEntryListWhere = {\n latest: true\n };\n if (lastDeletedId) {\n where.entryId_gte = lastDeletedId;\n }\n const listEntries = this.context.container.resolve(ListEntriesStorageOperation);\n const { items, hasMoreItems: metaHasMoreItems } = await listEntries.execute(model, {\n limit: 1000,\n where,\n sort: [\"entryId_ASC\"]\n });\n for (const item of items) {\n try {\n const deleteResult = await this.context.container\n .resolve(DeleteEntryUseCase)\n .execute(model, item.id, {\n permanently: true,\n force: true\n });\n if (deleteResult.isFail()) {\n throw deleteResult.error;\n }\n } catch {\n console.error(\"Failed to delete entry.\", {\n model: model.modelId,\n id: item.id\n });\n return controller.response.error(\n new Error(`Failed to delete entry \"${item.id}\". Cannot continue.`)\n );\n }\n lastDeletedId = item.entryId;\n }\n\n hasMoreItems = metaHasMoreItems;\n } while (hasMoreItems);\n /**\n * Let's do one more check. If there are items, continue the task with 5 seconds delay.\n */\n const listEntries = this.context.container.resolve(ListEntriesStorageOperation);\n const { items } = await listEntries.execute(model, {\n limit: 1,\n where: {\n latest: true\n }\n });\n if (items.length > 0) {\n console.log(\"There are still items to be deleted. Continuing the task.\");\n return controller.response.continue(\n {\n ...input\n },\n {\n seconds: 5\n }\n );\n }\n\n let hasMoreFolders = false;\n\n const listFolders = this.context.container.resolve(ListFoldersUseCase);\n const deleteFolder = this.context.container.resolve(DeleteFolderUseCase);\n\n do {\n const listResult = await listFolders.execute({\n where: {\n type: `cms:${model.modelId}`\n },\n limit: 1000\n });\n\n const { folders, meta } = listResult.value;\n\n for (const item of folders) {\n const result = await deleteFolder.execute(item.id);\n if (result.isFail()) {\n return controller.response.error(result.error);\n }\n }\n\n hasMoreFolders = meta.hasMoreItems;\n } while (hasMoreFolders);\n\n /**\n * When there is no more records to be deleted, let's delete the model, if it's not a plugin.\n */\n await this.removeBeingDeleted(model);\n if (model.isPlugin) {\n return controller.response.done();\n }\n try {\n const deleteModelResult = await this.context.container\n .resolve(DeleteModelUseCase)\n .execute(model.modelId);\n if (deleteModelResult.isFail()) {\n throw deleteModelResult.error;\n }\n } catch (ex) {\n const message = `Failed to delete model \"${model.modelId}\".`;\n console.error(message);\n return controller.response.error(ex);\n }\n\n return controller.response.done();\n }\n\n private async getModel(modelId: string): Promise<CmsModel> {\n const result = await this.context.container.resolve(GetModelUseCase).execute(modelId);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n }\n\n private async removeBeingDeleted(model: Pick<CmsModel, \"modelId\" | \"tenant\">): Promise<void> {\n const store = createDeleteModelStore(\n this.context.container.resolve(GlobalKeyValueStore),\n model.tenant\n );\n await store.remove(model.modelId);\n }\n}\n"],"names":["DeleteModel","context","params","input","controller","model","hasMoreItems","lastDeletedId","where","listEntries","ListEntriesStorageOperation","items","metaHasMoreItems","item","deleteResult","DeleteEntryUseCase","console","Error","hasMoreFolders","listFolders","ListFoldersUseCase","deleteFolder","DeleteFolderUseCase","listResult","folders","meta","result","deleteModelResult","DeleteModelUseCase","ex","message","modelId","GetModelUseCase","store","createDeleteModelStore","GlobalKeyValueStore"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IDeleteModelTaskInput } from "./types.js";
|
|
2
|
+
import type { IDeleteModelTaskOutput } from "./types.js";
|
|
3
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
4
|
+
import { CmsContext } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
type IRunParams = TaskDefinition.RunParams<IDeleteModelTaskInput, IDeleteModelTaskOutput>;
|
|
6
|
+
declare class DeleteModelTaskDefinition implements TaskDefinition.Interface<IDeleteModelTaskInput, IDeleteModelTaskOutput> {
|
|
7
|
+
private context;
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
maxIterations: number;
|
|
11
|
+
isPrivate: boolean;
|
|
12
|
+
databaseLogs: boolean;
|
|
13
|
+
description: string;
|
|
14
|
+
readonly selfCleanup: ("onAbort" | "onSuccess")[];
|
|
15
|
+
constructor(context: CmsContext.Interface);
|
|
16
|
+
run(params: IRunParams): Promise<TaskDefinition.Result<IDeleteModelTaskInput, IDeleteModelTaskOutput>>;
|
|
17
|
+
createInputValidation({ validator }: TaskDefinition.CreateInputValidationParams): {
|
|
18
|
+
modelId: import("zod").ZodString;
|
|
19
|
+
lastDeletedId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare const DeleteModelTask: typeof DeleteModelTaskDefinition & {
|
|
23
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { CmsContext } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
3
|
+
import { DELETE_MODEL_TASK } from "../../constants.js";
|
|
4
|
+
class DeleteModelTaskDefinition {
|
|
5
|
+
constructor(context){
|
|
6
|
+
this.context = context;
|
|
7
|
+
this.id = DELETE_MODEL_TASK;
|
|
8
|
+
this.title = "Delete model and all of the entries";
|
|
9
|
+
this.maxIterations = 50;
|
|
10
|
+
this.isPrivate = true;
|
|
11
|
+
this.databaseLogs = false;
|
|
12
|
+
this.description = "Delete a content model and all associated entries.";
|
|
13
|
+
this.selfCleanup = [
|
|
14
|
+
"onSuccess",
|
|
15
|
+
"onAbort"
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
async run(params) {
|
|
19
|
+
const { DeleteModel } = await import("./DeleteModel.js");
|
|
20
|
+
try {
|
|
21
|
+
const runner = new DeleteModel(this.context);
|
|
22
|
+
return await runner.run(params);
|
|
23
|
+
} catch (ex) {
|
|
24
|
+
return params.controller.response.error(ex);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
createInputValidation({ validator }) {
|
|
28
|
+
return {
|
|
29
|
+
modelId: validator.string(),
|
|
30
|
+
lastDeletedId: validator.string().optional()
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const DeleteModelTask = TaskDefinition.createImplementation({
|
|
35
|
+
implementation: DeleteModelTaskDefinition,
|
|
36
|
+
dependencies: [
|
|
37
|
+
CmsContext
|
|
38
|
+
]
|
|
39
|
+
});
|
|
40
|
+
export { DeleteModelTask };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=DeleteModelTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DeleteModelTask/DeleteModelTask.js","sources":["../../../src/features/DeleteModelTask/DeleteModelTask.ts"],"sourcesContent":["import type { IDeleteModelTaskInput } from \"./types.js\";\nimport type { IDeleteModelTaskOutput } from \"./types.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { CmsContext } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { DELETE_MODEL_TASK } from \"~/constants.js\";\n\ntype IRunParams = TaskDefinition.RunParams<IDeleteModelTaskInput, IDeleteModelTaskOutput>;\n\nclass DeleteModelTaskDefinition implements TaskDefinition.Interface<\n IDeleteModelTaskInput,\n IDeleteModelTaskOutput\n> {\n id = DELETE_MODEL_TASK;\n title = \"Delete model and all of the entries\";\n maxIterations = 50;\n isPrivate = true;\n databaseLogs = false;\n description = \"Delete a content model and all associated entries.\";\n\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n constructor(private context: CmsContext.Interface) {}\n\n async run(params: IRunParams) {\n const { DeleteModel } = await import(\n /* webpackChunkName: \"createDeleteModel\" */ \"./DeleteModel.js\"\n );\n\n try {\n const runner = new DeleteModel(this.context);\n return await runner.run(params);\n } catch (ex) {\n return params.controller.response.error(ex);\n }\n }\n\n createInputValidation({ validator }: TaskDefinition.CreateInputValidationParams) {\n return {\n modelId: validator.string(),\n lastDeletedId: validator.string().optional()\n };\n }\n}\n\nexport const DeleteModelTask = TaskDefinition.createImplementation({\n implementation: DeleteModelTaskDefinition,\n dependencies: [CmsContext]\n});\n"],"names":["DeleteModelTaskDefinition","context","DELETE_MODEL_TASK","params","DeleteModel","runner","ex","validator","DeleteModelTask","TaskDefinition","CmsContext"],"mappings":";;;AAQA,MAAMA;IAaF,YAAoBC,OAA6B,CAAE;aAA/BA,OAAO,GAAPA;aATpB,EAAE,GAAGC;aACL,KAAK,GAAG;aACR,aAAa,GAAG;aAChB,SAAS,GAAG;aACZ,YAAY,GAAG;aACf,WAAW,GAAG;aAEE,WAAW,GAAG;YAAC;YAAsB;SAAmB;IAEpB;IAEpD,MAAM,IAAIC,MAAkB,EAAE;QAC1B,MAAM,EAAEC,WAAW,EAAE,GAAG,MAAM,MAAM,CAAN;QAI9B,IAAI;YACA,MAAMC,SAAS,IAAID,YAAY,IAAI,CAAC,OAAO;YAC3C,OAAO,MAAMC,OAAO,GAAG,CAACF;QAC5B,EAAE,OAAOG,IAAI;YACT,OAAOH,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAACG;QAC5C;IACJ;IAEA,sBAAsB,EAAEC,SAAS,EAA8C,EAAE;QAC7E,OAAO;YACH,SAASA,UAAU,MAAM;YACzB,eAAeA,UAAU,MAAM,GAAG,QAAQ;QAC9C;IACJ;AACJ;AAEO,MAAMC,kBAAkBC,eAAe,oBAAoB,CAAC;IAC/D,gBAAgBT;IAChB,cAAc;QAACU;KAAW;AAC9B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { DeleteModelTask } from "./DeleteModelTask.js";
|
|
3
|
+
const DeleteModelTaskFeature = createFeature({
|
|
4
|
+
name: "HeadlessCms/Tasks/DeleteModelTask",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(DeleteModelTask);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { DeleteModelTaskFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DeleteModelTask/feature.js","sources":["../../../src/features/DeleteModelTask/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteModelTask } from \"./DeleteModelTask.js\";\n\nexport const DeleteModelTaskFeature = createFeature({\n name: \"HeadlessCms/Tasks/DeleteModelTask\",\n register(container) {\n container.register(DeleteModelTask);\n }\n});\n"],"names":["DeleteModelTaskFeature","createFeature","container","DeleteModelTask"],"mappings":";;AAGO,MAAMA,yBAAyBC,cAAc;IAChD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import type { CmsIdentity } from "@webiny/api-headless-cms/types";
|
|
2
|
-
import
|
|
3
|
-
import type { ListValuesResult } from "@webiny/db";
|
|
4
|
-
import type { GenericRecord } from "@webiny/api/types";
|
|
1
|
+
import type { CmsIdentity } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
5
3
|
export interface IDeleteModelTaskInput {
|
|
6
4
|
modelId: string;
|
|
7
5
|
lastDeletedId?: string;
|
|
8
6
|
}
|
|
9
|
-
export interface IDeleteModelTaskOutput extends
|
|
7
|
+
export interface IDeleteModelTaskOutput extends TaskDefinition.TaskOutput {
|
|
10
8
|
total?: number;
|
|
11
9
|
deleted?: number;
|
|
12
10
|
}
|
|
@@ -26,8 +24,6 @@ export interface IDeleteCmsModelTask {
|
|
|
26
24
|
export interface IStoreValue {
|
|
27
25
|
modelId: string;
|
|
28
26
|
tenant: string;
|
|
29
|
-
locale: string;
|
|
30
27
|
identity: CmsIdentity;
|
|
31
28
|
task: string;
|
|
32
29
|
}
|
|
33
|
-
export type ListStoreKeysResult = Promise<ListValuesResult<GenericRecord<string, IStoreValue>>>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
var types_DeleteCmsModelTaskStatus = /*#__PURE__*/ function(DeleteCmsModelTaskStatus) {
|
|
2
|
+
DeleteCmsModelTaskStatus["RUNNING"] = "running";
|
|
3
|
+
DeleteCmsModelTaskStatus["DONE"] = "done";
|
|
4
|
+
DeleteCmsModelTaskStatus["ERROR"] = "error";
|
|
5
|
+
DeleteCmsModelTaskStatus["CANCELED"] = "canceled";
|
|
6
|
+
return DeleteCmsModelTaskStatus;
|
|
7
|
+
}({});
|
|
8
|
+
export { types_DeleteCmsModelTaskStatus as DeleteCmsModelTaskStatus };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DeleteModelTask/types.js","sources":["../../../src/features/DeleteModelTask/types.ts"],"sourcesContent":["import type { CmsIdentity } from \"@webiny/api-headless-cms/types/index.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface IDeleteModelTaskInput {\n modelId: string;\n lastDeletedId?: string;\n}\n\nexport interface IDeleteModelTaskOutput extends TaskDefinition.TaskOutput {\n total?: number;\n deleted?: number;\n}\n\nexport enum DeleteCmsModelTaskStatus {\n RUNNING = \"running\",\n DONE = \"done\",\n ERROR = \"error\",\n CANCELED = \"canceled\"\n}\n\nexport interface IDeleteCmsModelTask {\n id: string;\n status: DeleteCmsModelTaskStatus;\n total: number;\n deleted: number;\n message?: string;\n}\n\nexport interface IStoreValue {\n modelId: string;\n tenant: string;\n identity: CmsIdentity;\n task: string;\n}\n"],"names":["DeleteCmsModelTaskStatus"],"mappings":"AAaO,IAAKA,iCAAwBA,WAAAA,GAAAA,SAAxBA,wBAAwB;;;;;WAAxBA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { BlockActionIfModelDisabled as Abstraction } from "./abstractions.js";
|
|
3
|
+
import type { DeleteModelOperations } from "../../graphql/deleteModel/abstractions.js";
|
|
4
|
+
export declare class BlockActionIfModelDisabled implements Abstraction.Interface {
|
|
5
|
+
private isModelBeingDeleted;
|
|
6
|
+
constructor(isModelBeingDeleted: DeleteModelOperations.Interface["isModelBeingDeleted"]);
|
|
7
|
+
execute(model: CmsModel): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { WebinyError } from "@webiny/error";
|
|
2
|
+
class BlockActionIfModelDisabled {
|
|
3
|
+
constructor(isModelBeingDeleted){
|
|
4
|
+
this.isModelBeingDeleted = isModelBeingDeleted;
|
|
5
|
+
}
|
|
6
|
+
async execute(model) {
|
|
7
|
+
const isBeingDeleted = await this.isModelBeingDeleted(model.modelId);
|
|
8
|
+
if (!isBeingDeleted) return;
|
|
9
|
+
throw new WebinyError(`Model "${model.name}" is being deleted and you cannot create, update or delete any entries of this model.`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export { BlockActionIfModelDisabled };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=BlockActionIfModelDisabled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DisableModel/BlockActionIfModelDisabled.js","sources":["../../../src/features/DisableModel/BlockActionIfModelDisabled.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { BlockActionIfModelDisabled as Abstraction } from \"./abstractions.js\";\nimport type { DeleteModelOperations } from \"~/graphql/deleteModel/abstractions.js\";\n\nexport class BlockActionIfModelDisabled implements Abstraction.Interface {\n constructor(\n private isModelBeingDeleted: DeleteModelOperations.Interface[\"isModelBeingDeleted\"]\n ) {}\n\n async execute(model: CmsModel): Promise<void> {\n const isBeingDeleted = await this.isModelBeingDeleted(model.modelId);\n if (!isBeingDeleted) {\n return;\n }\n\n throw new WebinyError(\n `Model \"${model.name}\" is being deleted and you cannot create, update or delete any entries of this model.`\n );\n }\n}\n"],"names":["BlockActionIfModelDisabled","isModelBeingDeleted","model","isBeingDeleted","WebinyError"],"mappings":";AAKO,MAAMA;IACT,YACYC,mBAA2E,CACrF;aADUA,mBAAmB,GAAnBA;IACT;IAEH,MAAM,QAAQC,KAAe,EAAiB;QAC1C,MAAMC,iBAAiB,MAAM,IAAI,CAAC,mBAAmB,CAACD,MAAM,OAAO;QACnE,IAAI,CAACC,gBACD;QAGJ,MAAM,IAAIC,YACN,CAAC,OAAO,EAAEF,MAAM,IAAI,CAAC,qFAAqF,CAAC;IAEnH;AACJ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
export interface IBlockActionIfModelDisabled {
|
|
3
|
+
execute(model: CmsModel): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare const BlockActionIfModelDisabled: import("@webiny/di").Abstraction<IBlockActionIfModelDisabled>;
|
|
6
|
+
export declare namespace BlockActionIfModelDisabled {
|
|
7
|
+
type Interface = IBlockActionIfModelDisabled;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DisableModel/abstractions.js","sources":["../../../src/features/DisableModel/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport interface IBlockActionIfModelDisabled {\n execute(model: CmsModel): Promise<void>;\n}\n\nexport const BlockActionIfModelDisabled = createAbstraction<IBlockActionIfModelDisabled>(\n \"BlockActionIfModelDisabled\"\n);\n\nexport namespace BlockActionIfModelDisabled {\n export type Interface = IBlockActionIfModelDisabled;\n}\n"],"names":["BlockActionIfModelDisabled","createAbstraction"],"mappings":";AAOO,MAAMA,6BAA6BC,kBACtC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { BlockActionIfModelDisabled } from "./abstractions.js";
|
|
3
|
+
import { BlockActionIfModelDisabled as external_BlockActionIfModelDisabled_js_BlockActionIfModelDisabled } from "./BlockActionIfModelDisabled.js";
|
|
4
|
+
import { DeleteModelOperations } from "../../graphql/deleteModel/abstractions.js";
|
|
5
|
+
import { BlockModelActionOnEntryBeforeCreate } from "./handlers/BlockModelActionOnEntryBeforeCreate.js";
|
|
6
|
+
import { BlockModelActionOnEntryRevisionBeforeCreate } from "./handlers/BlockModelActionOnEntryRevisionBeforeCreate.js";
|
|
7
|
+
import { BlockModelActionOnEntryBeforeUpdate } from "./handlers/BlockModelActionOnEntryBeforeUpdate.js";
|
|
8
|
+
import { BlockModelActionOnEntryBeforeUnpublish } from "./handlers/BlockModelActionOnEntryBeforeUnpublish.js";
|
|
9
|
+
import { BlockModelActionOnEntryBeforePublish } from "./handlers/BlockModelActionOnEntryBeforePublish.js";
|
|
10
|
+
import { BlockModelActionOnEntryBeforeRepublish } from "./handlers/BlockModelActionOnEntryBeforeRepublish.js";
|
|
11
|
+
import { BlockModelActionOnEntryBeforeRestoreFromBin } from "./handlers/BlockModelActionOnEntryBeforeRestoreFromBin.js";
|
|
12
|
+
import { BlockModelActionOnEntryBeforeMove } from "./handlers/BlockModelActionOnEntryBeforeMove.js";
|
|
13
|
+
import { BlockModelActionOnModelBeforeUpdate } from "./handlers/BlockModelActionOnModelBeforeUpdate.js";
|
|
14
|
+
import { BlockModelActionOnModelBeforeCreateFrom } from "./handlers/BlockModelActionOnModelBeforeCreateFrom.js";
|
|
15
|
+
const DisableModelFeature = createFeature({
|
|
16
|
+
name: "DisableModel",
|
|
17
|
+
register (container) {
|
|
18
|
+
const ops = container.resolve(DeleteModelOperations);
|
|
19
|
+
container.registerInstance(BlockActionIfModelDisabled, new external_BlockActionIfModelDisabled_js_BlockActionIfModelDisabled(ops.isModelBeingDeleted.bind(ops)));
|
|
20
|
+
container.register(BlockModelActionOnEntryBeforeCreate);
|
|
21
|
+
container.register(BlockModelActionOnEntryRevisionBeforeCreate);
|
|
22
|
+
container.register(BlockModelActionOnEntryBeforeUpdate);
|
|
23
|
+
container.register(BlockModelActionOnEntryBeforeUnpublish);
|
|
24
|
+
container.register(BlockModelActionOnEntryBeforePublish);
|
|
25
|
+
container.register(BlockModelActionOnEntryBeforeRepublish);
|
|
26
|
+
container.register(BlockModelActionOnEntryBeforeRestoreFromBin);
|
|
27
|
+
container.register(BlockModelActionOnEntryBeforeMove);
|
|
28
|
+
container.register(BlockModelActionOnModelBeforeUpdate);
|
|
29
|
+
container.register(BlockModelActionOnModelBeforeCreateFrom);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
export { DisableModelFeature };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DisableModel/feature.js","sources":["../../../src/features/DisableModel/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { BlockActionIfModelDisabled as Abstraction } from \"./abstractions.js\";\nimport { BlockActionIfModelDisabled } from \"./BlockActionIfModelDisabled.js\";\nimport { DeleteModelOperations } from \"~/graphql/deleteModel/abstractions.js\";\nimport { BlockModelActionOnEntryBeforeCreate } from \"./handlers/BlockModelActionOnEntryBeforeCreate.js\";\nimport { BlockModelActionOnEntryRevisionBeforeCreate } from \"./handlers/BlockModelActionOnEntryRevisionBeforeCreate.js\";\nimport { BlockModelActionOnEntryBeforeUpdate } from \"./handlers/BlockModelActionOnEntryBeforeUpdate.js\";\nimport { BlockModelActionOnEntryBeforeUnpublish } from \"./handlers/BlockModelActionOnEntryBeforeUnpublish.js\";\nimport { BlockModelActionOnEntryBeforePublish } from \"./handlers/BlockModelActionOnEntryBeforePublish.js\";\nimport { BlockModelActionOnEntryBeforeRepublish } from \"./handlers/BlockModelActionOnEntryBeforeRepublish.js\";\nimport { BlockModelActionOnEntryBeforeRestoreFromBin } from \"./handlers/BlockModelActionOnEntryBeforeRestoreFromBin.js\";\nimport { BlockModelActionOnEntryBeforeMove } from \"./handlers/BlockModelActionOnEntryBeforeMove.js\";\nimport { BlockModelActionOnModelBeforeUpdate } from \"./handlers/BlockModelActionOnModelBeforeUpdate.js\";\nimport { BlockModelActionOnModelBeforeCreateFrom } from \"./handlers/BlockModelActionOnModelBeforeCreateFrom.js\";\n\nexport const DisableModelFeature = createFeature({\n name: \"DisableModel\",\n register(container) {\n const ops = container.resolve(DeleteModelOperations);\n\n container.registerInstance(\n Abstraction,\n new BlockActionIfModelDisabled(ops.isModelBeingDeleted.bind(ops))\n );\n\n container.register(BlockModelActionOnEntryBeforeCreate);\n container.register(BlockModelActionOnEntryRevisionBeforeCreate);\n container.register(BlockModelActionOnEntryBeforeUpdate);\n container.register(BlockModelActionOnEntryBeforeUnpublish);\n container.register(BlockModelActionOnEntryBeforePublish);\n container.register(BlockModelActionOnEntryBeforeRepublish);\n container.register(BlockModelActionOnEntryBeforeRestoreFromBin);\n container.register(BlockModelActionOnEntryBeforeMove);\n\n container.register(BlockModelActionOnModelBeforeUpdate);\n container.register(BlockModelActionOnModelBeforeCreateFrom);\n }\n});\n"],"names":["DisableModelFeature","createFeature","container","ops","DeleteModelOperations","Abstraction","BlockActionIfModelDisabled","BlockModelActionOnEntryBeforeCreate","BlockModelActionOnEntryRevisionBeforeCreate","BlockModelActionOnEntryBeforeUpdate","BlockModelActionOnEntryBeforeUnpublish","BlockModelActionOnEntryBeforePublish","BlockModelActionOnEntryBeforeRepublish","BlockModelActionOnEntryBeforeRestoreFromBin","BlockModelActionOnEntryBeforeMove","BlockModelActionOnModelBeforeUpdate","BlockModelActionOnModelBeforeCreateFrom"],"mappings":";;;;;;;;;;;;;;AAeO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QACd,MAAMC,MAAMD,UAAU,OAAO,CAACE;QAE9BF,UAAU,gBAAgB,CACtBG,4BACA,IAAIC,kEAA2BH,IAAI,mBAAmB,CAAC,IAAI,CAACA;QAGhED,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QACnBR,UAAU,QAAQ,CAACS;QACnBT,UAAU,QAAQ,CAACU;QACnBV,UAAU,QAAQ,CAACW;QACnBX,UAAU,QAAQ,CAACY;QAEnBZ,UAAU,QAAQ,CAACa;QACnBb,UAAU,QAAQ,CAACc;IACvB;AACJ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntryBeforeCreateEventHandler } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/events.js";
|
|
2
|
+
import { BlockActionIfModelDisabled } from "../abstractions.js";
|
|
3
|
+
declare class BlockModelActionOnEntryBeforeCreateImpl implements EntryBeforeCreateEventHandler.Interface {
|
|
4
|
+
private blockAction;
|
|
5
|
+
constructor(blockAction: BlockActionIfModelDisabled.Interface);
|
|
6
|
+
handle(event: EntryBeforeCreateEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const BlockModelActionOnEntryBeforeCreate: typeof BlockModelActionOnEntryBeforeCreateImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("@webiny/api-headless-cms/features/contentEntry/CreateEntry/events.js").EntryBeforeCreateEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EntryBeforeCreateEventHandler } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/events.js";
|
|
2
|
+
import { BlockActionIfModelDisabled } from "../abstractions.js";
|
|
3
|
+
class BlockModelActionOnEntryBeforeCreateImpl {
|
|
4
|
+
constructor(blockAction){
|
|
5
|
+
this.blockAction = blockAction;
|
|
6
|
+
}
|
|
7
|
+
async handle(event) {
|
|
8
|
+
await this.blockAction.execute(event.payload.model);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const BlockModelActionOnEntryBeforeCreate = EntryBeforeCreateEventHandler.createImplementation({
|
|
12
|
+
implementation: BlockModelActionOnEntryBeforeCreateImpl,
|
|
13
|
+
dependencies: [
|
|
14
|
+
BlockActionIfModelDisabled
|
|
15
|
+
]
|
|
16
|
+
});
|
|
17
|
+
export { BlockModelActionOnEntryBeforeCreate };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=BlockModelActionOnEntryBeforeCreate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DisableModel/handlers/BlockModelActionOnEntryBeforeCreate.js","sources":["../../../../src/features/DisableModel/handlers/BlockModelActionOnEntryBeforeCreate.ts"],"sourcesContent":["import { EntryBeforeCreateEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/events.js\";\nimport { BlockActionIfModelDisabled } from \"../abstractions.js\";\n\nclass BlockModelActionOnEntryBeforeCreateImpl implements EntryBeforeCreateEventHandler.Interface {\n constructor(private blockAction: BlockActionIfModelDisabled.Interface) {}\n\n async handle(event: EntryBeforeCreateEventHandler.Event): Promise<void> {\n await this.blockAction.execute(event.payload.model);\n }\n}\n\nexport const BlockModelActionOnEntryBeforeCreate =\n EntryBeforeCreateEventHandler.createImplementation({\n implementation: BlockModelActionOnEntryBeforeCreateImpl,\n dependencies: [BlockActionIfModelDisabled]\n });\n"],"names":["BlockModelActionOnEntryBeforeCreateImpl","blockAction","event","BlockModelActionOnEntryBeforeCreate","EntryBeforeCreateEventHandler","BlockActionIfModelDisabled"],"mappings":";;AAGA,MAAMA;IACF,YAAoBC,WAAiD,CAAE;aAAnDA,WAAW,GAAXA;IAAoD;IAExE,MAAM,OAAOC,KAA0C,EAAiB;QACpE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACA,MAAM,OAAO,CAAC,KAAK;IACtD;AACJ;AAEO,MAAMC,sCACTC,8BAA8B,oBAAoB,CAAC;IAC/C,gBAAgBJ;IAChB,cAAc;QAACK;KAA2B;AAC9C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntryBeforeMoveEventHandler } from "@webiny/api-headless-cms/features/contentEntry/MoveEntry/events.js";
|
|
2
|
+
import { BlockActionIfModelDisabled } from "../abstractions.js";
|
|
3
|
+
declare class BlockModelActionOnEntryBeforeMoveImpl implements EntryBeforeMoveEventHandler.Interface {
|
|
4
|
+
private blockAction;
|
|
5
|
+
constructor(blockAction: BlockActionIfModelDisabled.Interface);
|
|
6
|
+
handle(event: EntryBeforeMoveEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const BlockModelActionOnEntryBeforeMove: typeof BlockModelActionOnEntryBeforeMoveImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("@webiny/api-headless-cms/features/contentEntry/MoveEntry/events.js").EntryBeforeMoveEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EntryBeforeMoveEventHandler } from "@webiny/api-headless-cms/features/contentEntry/MoveEntry/events.js";
|
|
2
|
+
import { BlockActionIfModelDisabled } from "../abstractions.js";
|
|
3
|
+
class BlockModelActionOnEntryBeforeMoveImpl {
|
|
4
|
+
constructor(blockAction){
|
|
5
|
+
this.blockAction = blockAction;
|
|
6
|
+
}
|
|
7
|
+
async handle(event) {
|
|
8
|
+
await this.blockAction.execute(event.payload.model);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const BlockModelActionOnEntryBeforeMove = EntryBeforeMoveEventHandler.createImplementation({
|
|
12
|
+
implementation: BlockModelActionOnEntryBeforeMoveImpl,
|
|
13
|
+
dependencies: [
|
|
14
|
+
BlockActionIfModelDisabled
|
|
15
|
+
]
|
|
16
|
+
});
|
|
17
|
+
export { BlockModelActionOnEntryBeforeMove };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=BlockModelActionOnEntryBeforeMove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DisableModel/handlers/BlockModelActionOnEntryBeforeMove.js","sources":["../../../../src/features/DisableModel/handlers/BlockModelActionOnEntryBeforeMove.ts"],"sourcesContent":["import { EntryBeforeMoveEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/MoveEntry/events.js\";\nimport { BlockActionIfModelDisabled } from \"../abstractions.js\";\n\nclass BlockModelActionOnEntryBeforeMoveImpl implements EntryBeforeMoveEventHandler.Interface {\n constructor(private blockAction: BlockActionIfModelDisabled.Interface) {}\n\n async handle(event: EntryBeforeMoveEventHandler.Event): Promise<void> {\n await this.blockAction.execute(event.payload.model);\n }\n}\n\nexport const BlockModelActionOnEntryBeforeMove = EntryBeforeMoveEventHandler.createImplementation({\n implementation: BlockModelActionOnEntryBeforeMoveImpl,\n dependencies: [BlockActionIfModelDisabled]\n});\n"],"names":["BlockModelActionOnEntryBeforeMoveImpl","blockAction","event","BlockModelActionOnEntryBeforeMove","EntryBeforeMoveEventHandler","BlockActionIfModelDisabled"],"mappings":";;AAGA,MAAMA;IACF,YAAoBC,WAAiD,CAAE;aAAnDA,WAAW,GAAXA;IAAoD;IAExE,MAAM,OAAOC,KAAwC,EAAiB;QAClE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACA,MAAM,OAAO,CAAC,KAAK;IACtD;AACJ;AAEO,MAAMC,oCAAoCC,4BAA4B,oBAAoB,CAAC;IAC9F,gBAAgBJ;IAChB,cAAc;QAACK;KAA2B;AAC9C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntryBeforePublishEventHandler } from "@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js";
|
|
2
|
+
import { BlockActionIfModelDisabled } from "../abstractions.js";
|
|
3
|
+
declare class BlockModelActionOnEntryBeforePublishImpl implements EntryBeforePublishEventHandler.Interface {
|
|
4
|
+
private blockAction;
|
|
5
|
+
constructor(blockAction: BlockActionIfModelDisabled.Interface);
|
|
6
|
+
handle(event: EntryBeforePublishEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const BlockModelActionOnEntryBeforePublish: typeof BlockModelActionOnEntryBeforePublishImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js").EntryBeforePublishEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EntryBeforePublishEventHandler } from "@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js";
|
|
2
|
+
import { BlockActionIfModelDisabled } from "../abstractions.js";
|
|
3
|
+
class BlockModelActionOnEntryBeforePublishImpl {
|
|
4
|
+
constructor(blockAction){
|
|
5
|
+
this.blockAction = blockAction;
|
|
6
|
+
}
|
|
7
|
+
async handle(event) {
|
|
8
|
+
await this.blockAction.execute(event.payload.model);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const BlockModelActionOnEntryBeforePublish = EntryBeforePublishEventHandler.createImplementation({
|
|
12
|
+
implementation: BlockModelActionOnEntryBeforePublishImpl,
|
|
13
|
+
dependencies: [
|
|
14
|
+
BlockActionIfModelDisabled
|
|
15
|
+
]
|
|
16
|
+
});
|
|
17
|
+
export { BlockModelActionOnEntryBeforePublish };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=BlockModelActionOnEntryBeforePublish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/DisableModel/handlers/BlockModelActionOnEntryBeforePublish.js","sources":["../../../../src/features/DisableModel/handlers/BlockModelActionOnEntryBeforePublish.ts"],"sourcesContent":["import { EntryBeforePublishEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js\";\nimport { BlockActionIfModelDisabled } from \"../abstractions.js\";\n\nclass BlockModelActionOnEntryBeforePublishImpl implements EntryBeforePublishEventHandler.Interface {\n constructor(private blockAction: BlockActionIfModelDisabled.Interface) {}\n\n async handle(event: EntryBeforePublishEventHandler.Event): Promise<void> {\n await this.blockAction.execute(event.payload.model);\n }\n}\n\nexport const BlockModelActionOnEntryBeforePublish =\n EntryBeforePublishEventHandler.createImplementation({\n implementation: BlockModelActionOnEntryBeforePublishImpl,\n dependencies: [BlockActionIfModelDisabled]\n });\n"],"names":["BlockModelActionOnEntryBeforePublishImpl","blockAction","event","BlockModelActionOnEntryBeforePublish","EntryBeforePublishEventHandler","BlockActionIfModelDisabled"],"mappings":";;AAGA,MAAMA;IACF,YAAoBC,WAAiD,CAAE;aAAnDA,WAAW,GAAXA;IAAoD;IAExE,MAAM,OAAOC,KAA2C,EAAiB;QACrE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACA,MAAM,OAAO,CAAC,KAAK;IACtD;AACJ;AAEO,MAAMC,uCACTC,+BAA+B,oBAAoB,CAAC;IAChD,gBAAgBJ;IAChB,cAAc;QAACK;KAA2B;AAC9C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntryBeforeRepublishEventHandler } from "@webiny/api-headless-cms/features/contentEntry/RepublishEntry/events.js";
|
|
2
|
+
import { BlockActionIfModelDisabled } from "../abstractions.js";
|
|
3
|
+
declare class BlockModelActionOnEntryBeforeRepublishImpl implements EntryBeforeRepublishEventHandler.Interface {
|
|
4
|
+
private blockAction;
|
|
5
|
+
constructor(blockAction: BlockActionIfModelDisabled.Interface);
|
|
6
|
+
handle(event: EntryBeforeRepublishEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const BlockModelActionOnEntryBeforeRepublish: typeof BlockModelActionOnEntryBeforeRepublishImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("@webiny/api-headless-cms/features/contentEntry/RepublishEntry/events.js").EntryBeforeRepublishEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|