@webiny/api-headless-cms-tasks 6.0.0-alpha.5 → 6.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -14
- package/constants.js +3 -0
- package/constants.js.map +1 -0
- package/features/DeleteModelTask/DeleteModel.d.ts +16 -0
- package/{tasks/deleteModel/DeleteModelRunner.js → features/DeleteModelTask/DeleteModel.js} +31 -39
- package/features/DeleteModelTask/DeleteModel.js.map +1 -0
- package/features/DeleteModelTask/DeleteModelTask.d.ts +24 -0
- package/features/DeleteModelTask/DeleteModelTask.js +39 -0
- package/features/DeleteModelTask/DeleteModelTask.js.map +1 -0
- package/features/DeleteModelTask/feature.d.ts +1 -0
- package/features/DeleteModelTask/feature.js +10 -0
- package/features/DeleteModelTask/feature.js.map +1 -0
- package/{tasks/deleteModel → features/DeleteModelTask}/types.d.ts +4 -5
- package/features/DeleteModelTask/types.js +9 -0
- package/features/DeleteModelTask/types.js.map +1 -0
- package/features/DisableModel/BlockActionIfModelDisabled.d.ts +8 -0
- package/features/DisableModel/BlockActionIfModelDisabled.js +15 -0
- package/features/DisableModel/BlockActionIfModelDisabled.js.map +1 -0
- package/features/DisableModel/abstractions.d.ts +8 -0
- package/features/DisableModel/abstractions.js +4 -0
- package/features/DisableModel/abstractions.js.map +1 -0
- package/features/DisableModel/feature.d.ts +5 -0
- package/features/DisableModel/feature.js +36 -0
- package/features/DisableModel/feature.js.map +1 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeCreate.d.ts +11 -0
- package/features/DisableModel/handlers/BlockModelActionOnEntryBeforeCreate.js +16 -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 +16 -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 +16 -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 +16 -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 +16 -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 +16 -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 +16 -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 +16 -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 +16 -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 +16 -0
- package/features/DisableModel/handlers/BlockModelActionOnModelBeforeUpdate.js.map +1 -0
- package/features/DisableModel/index.d.ts +1 -0
- package/features/DisableModel/index.js +3 -0
- package/features/DisableModel/index.js.map +1 -0
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/cancelDeleteModel.d.ts +2 -2
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/cancelDeleteModel.js +13 -19
- package/graphql/deleteModel/cancelDeleteModel.js.map +1 -0
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/crud.d.ts +1 -1
- package/graphql/deleteModel/crud.js +72 -0
- package/graphql/deleteModel/crud.js.map +1 -0
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/fullyDeleteModel.d.ts +2 -2
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/fullyDeleteModel.js +16 -17
- package/graphql/deleteModel/fullyDeleteModel.js.map +1 -0
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/getDeleteModelProgress.d.ts +2 -2
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/getDeleteModelProgress.js +12 -19
- package/graphql/deleteModel/getDeleteModelProgress.js.map +1 -0
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/index.d.ts +1 -1
- package/{tasks/deleteModel/graphql → graphql/deleteModel}/index.js +33 -36
- package/graphql/deleteModel/index.js.map +1 -0
- package/graphql/deleteModel/status.d.ts +3 -0
- package/graphql/deleteModel/status.js +17 -0
- package/graphql/deleteModel/status.js.map +1 -0
- package/helpers/confirmation.js +15 -0
- package/helpers/confirmation.js.map +1 -0
- package/{tasks/deleteModel/helpers → helpers}/store.d.ts +3 -4
- package/helpers/store.js +16 -0
- package/helpers/store.js.map +1 -0
- package/index.d.ts +2 -3
- package/index.js +14 -17
- package/index.js.map +1 -1
- package/package.json +24 -26
- package/types.d.ts +4 -4
- package/types.js +1 -5
- package/types.js.map +1 -1
- package/tasks/deleteModel/DeleteModelRunner.d.ts +0 -19
- 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.js.map +0 -1
- package/tasks/deleteModel/graphql/crud.js +0 -82
- package/tasks/deleteModel/graphql/crud.js.map +0 -1
- package/tasks/deleteModel/graphql/fullyDeleteModel.js.map +0 -1
- package/tasks/deleteModel/graphql/getDeleteModelProgress.js.map +0 -1
- 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.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/{tasks/deleteModel/constants.d.ts → constants.d.ts} +0 -0
- /package/{tasks/deleteModel/helpers → helpers}/confirmation.d.ts +0 -0
|
@@ -1,43 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const deleteValidation = _zod.default.object({
|
|
15
|
-
modelId: _zod.default.string(),
|
|
16
|
-
confirmation: _zod.default.string()
|
|
1
|
+
import zod from "zod";
|
|
2
|
+
import { ContextPlugin } from "@webiny/api";
|
|
3
|
+
import { CmsGraphQLSchemaPlugin } from "@webiny/api-headless-cms";
|
|
4
|
+
import { isHeadlessCmsReady } from "@webiny/api-headless-cms";
|
|
5
|
+
import { createResolverDecorator } from "@webiny/handler-graphql";
|
|
6
|
+
import { ErrorResponse } from "@webiny/handler-graphql";
|
|
7
|
+
import { resolve } from "@webiny/handler-graphql";
|
|
8
|
+
import { Response } from "@webiny/handler-graphql";
|
|
9
|
+
import { createZodError } from "@webiny/utils";
|
|
10
|
+
import { validateConfirmation } from "../../helpers/confirmation.js";
|
|
11
|
+
const deleteValidation = zod.object({
|
|
12
|
+
modelId: zod.string(),
|
|
13
|
+
confirmation: zod.string()
|
|
17
14
|
}).superRefine((value, context) => {
|
|
18
|
-
if (
|
|
15
|
+
if (validateConfirmation(value)) {
|
|
19
16
|
return;
|
|
20
17
|
}
|
|
21
18
|
context.addIssue({
|
|
22
|
-
code:
|
|
19
|
+
code: zod.ZodIssueCode.custom,
|
|
23
20
|
message: `Confirmation input does not match.`,
|
|
24
21
|
fatal: true,
|
|
25
22
|
path: ["confirmation"]
|
|
26
23
|
});
|
|
27
24
|
}).readonly();
|
|
28
|
-
const cancelValidation =
|
|
29
|
-
modelId:
|
|
25
|
+
const cancelValidation = zod.object({
|
|
26
|
+
modelId: zod.string()
|
|
30
27
|
}).readonly();
|
|
31
|
-
const getValidation =
|
|
32
|
-
modelId:
|
|
28
|
+
const getValidation = zod.object({
|
|
29
|
+
modelId: zod.string()
|
|
33
30
|
}).readonly();
|
|
34
|
-
const createDeleteModelGraphQl = () => {
|
|
35
|
-
const contextPlugin = new
|
|
36
|
-
const ready = await
|
|
31
|
+
export const createDeleteModelGraphQl = () => {
|
|
32
|
+
const contextPlugin = new ContextPlugin(async inputContext => {
|
|
33
|
+
const ready = await isHeadlessCmsReady(inputContext);
|
|
37
34
|
if (!ready || !inputContext.cms.MANAGE) {
|
|
38
35
|
return;
|
|
39
36
|
}
|
|
40
|
-
const plugin = new
|
|
37
|
+
const plugin = new CmsGraphQLSchemaPlugin({
|
|
41
38
|
typeDefs: /* GraphQL */`
|
|
42
39
|
enum DeleteCmsModelTaskStatus {
|
|
43
40
|
running
|
|
@@ -99,10 +96,10 @@ const createDeleteModelGraphQl = () => {
|
|
|
99
96
|
},
|
|
100
97
|
Query: {
|
|
101
98
|
getDeleteModelProgress: async (_, args, context) => {
|
|
102
|
-
return
|
|
99
|
+
return resolve(async () => {
|
|
103
100
|
const input = getValidation.safeParse(args);
|
|
104
101
|
if (input.error) {
|
|
105
|
-
throw
|
|
102
|
+
throw createZodError(input.error);
|
|
106
103
|
}
|
|
107
104
|
return await context.cms.getDeleteModelProgress(input.data.modelId);
|
|
108
105
|
});
|
|
@@ -110,19 +107,19 @@ const createDeleteModelGraphQl = () => {
|
|
|
110
107
|
},
|
|
111
108
|
Mutation: {
|
|
112
109
|
fullyDeleteModel: async (_, args, context) => {
|
|
113
|
-
return
|
|
110
|
+
return resolve(async () => {
|
|
114
111
|
const input = deleteValidation.safeParse(args);
|
|
115
112
|
if (input.error) {
|
|
116
|
-
throw
|
|
113
|
+
throw createZodError(input.error);
|
|
117
114
|
}
|
|
118
115
|
return await context.cms.fullyDeleteModel(input.data.modelId);
|
|
119
116
|
});
|
|
120
117
|
},
|
|
121
118
|
cancelFullyDeleteModel: async (_, args, context) => {
|
|
122
|
-
return
|
|
119
|
+
return resolve(async () => {
|
|
123
120
|
const input = cancelValidation.safeParse(args);
|
|
124
121
|
if (input.error) {
|
|
125
|
-
throw
|
|
122
|
+
throw createZodError(input.error);
|
|
126
123
|
}
|
|
127
124
|
return await context.cms.cancelFullyDeleteModel(input.data.modelId);
|
|
128
125
|
});
|
|
@@ -130,7 +127,8 @@ const createDeleteModelGraphQl = () => {
|
|
|
130
127
|
}
|
|
131
128
|
},
|
|
132
129
|
resolverDecorators: {
|
|
133
|
-
["Query.listContentModels"]: [
|
|
130
|
+
["Query.listContentModels"]: [createResolverDecorator(resolver => async (parent, args, context, info) => {
|
|
131
|
+
// TODO @bruno figure out how to fix these types
|
|
134
132
|
const result = await resolver(parent, args, context, info);
|
|
135
133
|
if (result.error || !Array.isArray(result.data)) {
|
|
136
134
|
return result;
|
|
@@ -141,7 +139,7 @@ const createDeleteModelGraphQl = () => {
|
|
|
141
139
|
const listed = result.data;
|
|
142
140
|
try {
|
|
143
141
|
const beingDeletedList = await context.cms.listModelsBeingDeleted();
|
|
144
|
-
return new
|
|
142
|
+
return new Response(listed.filter(model => {
|
|
145
143
|
if (!model?.modelId) {
|
|
146
144
|
return false;
|
|
147
145
|
} else if (beingDeletedList.some(item => item.modelId === model.modelId)) {
|
|
@@ -150,7 +148,7 @@ const createDeleteModelGraphQl = () => {
|
|
|
150
148
|
return true;
|
|
151
149
|
}));
|
|
152
150
|
} catch (ex) {
|
|
153
|
-
return new
|
|
151
|
+
return new ErrorResponse(ex);
|
|
154
152
|
}
|
|
155
153
|
})]
|
|
156
154
|
}
|
|
@@ -161,6 +159,5 @@ const createDeleteModelGraphQl = () => {
|
|
|
161
159
|
contextPlugin.name = "headless-cms.context.createDeleteModelGraphQl";
|
|
162
160
|
return contextPlugin;
|
|
163
161
|
};
|
|
164
|
-
exports.createDeleteModelGraphQl = createDeleteModelGraphQl;
|
|
165
162
|
|
|
166
163
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["zod","ContextPlugin","CmsGraphQLSchemaPlugin","isHeadlessCmsReady","createResolverDecorator","ErrorResponse","resolve","Response","createZodError","validateConfirmation","deleteValidation","object","modelId","string","confirmation","superRefine","value","context","addIssue","code","ZodIssueCode","custom","message","fatal","path","readonly","cancelValidation","getValidation","createDeleteModelGraphQl","contextPlugin","inputContext","ready","cms","MANAGE","plugin","typeDefs","resolvers","CmsContentModel","isBeingDeleted","model","_","isModelBeingDeleted","ex","console","error","Query","getDeleteModelProgress","args","input","safeParse","data","Mutation","fullyDeleteModel","cancelFullyDeleteModel","resolverDecorators","resolver","parent","info","result","Array","isArray","includeBeingDeleted","listed","beingDeletedList","listModelsBeingDeleted","filter","some","item","name","plugins","register"],"sources":["index.ts"],"sourcesContent":["import zod from \"zod\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { CmsGraphQLSchemaPlugin } from \"@webiny/api-headless-cms\";\nimport { isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\nimport type { HcmsTasksContext } from \"~/types.js\";\nimport { createResolverDecorator } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { resolve } from \"@webiny/handler-graphql\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { createZodError } from \"@webiny/utils\";\nimport type { IDeleteCmsModelTask } from \"~/features/DeleteModelTask/types.js\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { validateConfirmation } from \"~/helpers/confirmation.js\";\n\nconst deleteValidation = zod\n .object({\n modelId: zod.string(),\n confirmation: zod.string()\n })\n .superRefine((value, context) => {\n if (validateConfirmation(value)) {\n return;\n }\n context.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `Confirmation input does not match.`,\n fatal: true,\n path: [\"confirmation\"]\n });\n })\n .readonly();\n\nconst cancelValidation = zod\n .object({\n modelId: zod.string()\n })\n .readonly();\n\nconst getValidation = zod\n .object({\n modelId: zod.string()\n })\n .readonly();\n\nexport const createDeleteModelGraphQl = <T extends HcmsTasksContext = HcmsTasksContext>() => {\n const contextPlugin = new ContextPlugin<T>(async inputContext => {\n const ready = await isHeadlessCmsReady(inputContext);\n\n if (!ready || !inputContext.cms.MANAGE) {\n return;\n }\n\n const plugin = new CmsGraphQLSchemaPlugin<T>({\n typeDefs: /* GraphQL */ `\n enum DeleteCmsModelTaskStatus {\n running\n done\n error\n canceled\n }\n type DeleteCmsModelTask {\n id: ID!\n status: DeleteCmsModelTaskStatus!\n deleted: Int!\n total: Int!\n }\n\n type GetDeleteCmsModelProgressResponse {\n data: DeleteCmsModelTask\n error: CmsError\n }\n\n type FullyDeleteCmsModelResponse {\n data: DeleteCmsModelTask\n error: CmsError\n }\n\n type CancelDeleteCmsModelResponse {\n data: DeleteCmsModelTask\n error: CmsError\n }\n\n extend type CmsContentModel {\n isBeingDeleted: Boolean!\n }\n\n extend type Query {\n getDeleteModelProgress(modelId: ID!): GetDeleteCmsModelProgressResponse!\n listContentModels(\n includeBeingDeleted: Boolean = false\n ): CmsContentModelListResponse\n }\n\n extend type Mutation {\n fullyDeleteModel(\n modelId: ID!\n confirmation: String!\n ): FullyDeleteCmsModelResponse!\n cancelFullyDeleteModel(modelId: ID!): CancelDeleteCmsModelResponse!\n }\n `,\n resolvers: {\n CmsContentModel: {\n isBeingDeleted: async (model: CmsModel, _: unknown, context) => {\n try {\n return await context.cms.isModelBeingDeleted(model.modelId);\n } catch (ex) {\n console.error(ex);\n }\n return true;\n }\n },\n Query: {\n getDeleteModelProgress: async (_: unknown, args: unknown, context) => {\n return resolve<IDeleteCmsModelTask>(async () => {\n const input = getValidation.safeParse(args);\n if (input.error) {\n throw createZodError(input.error);\n }\n return await context.cms.getDeleteModelProgress(input.data.modelId);\n });\n }\n },\n Mutation: {\n fullyDeleteModel: async (_: unknown, args: unknown, context) => {\n return resolve<IDeleteCmsModelTask>(async () => {\n const input = deleteValidation.safeParse(args);\n if (input.error) {\n throw createZodError(input.error);\n }\n return await context.cms.fullyDeleteModel(input.data.modelId);\n });\n },\n cancelFullyDeleteModel: async (_: unknown, args: unknown, context) => {\n return resolve<IDeleteCmsModelTask>(async () => {\n const input = cancelValidation.safeParse(args);\n if (input.error) {\n throw createZodError(input.error);\n }\n return await context.cms.cancelFullyDeleteModel(input.data.modelId);\n });\n }\n }\n },\n resolverDecorators: {\n [\"Query.listContentModels\"]: [\n createResolverDecorator<any, any, HcmsTasksContext>(\n resolver => async (parent, args, context, info) => {\n // TODO @bruno figure out how to fix these types\n const result = (await resolver(parent, args, context, info)) as any;\n if (result.error || !Array.isArray(result.data)) {\n return result;\n }\n\n if (args?.includeBeingDeleted !== false) {\n return result;\n }\n\n const listed = result.data as CmsModel[];\n\n try {\n const beingDeletedList = await context.cms.listModelsBeingDeleted();\n\n return new Response(\n listed.filter(model => {\n if (!model?.modelId) {\n return false;\n } else if (\n beingDeletedList.some(\n item => item.modelId === model.modelId\n )\n ) {\n return false;\n }\n return true;\n })\n );\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n }\n )\n ]\n }\n });\n plugin.name = \"headless-cms.graphql.fullyDeleteModel\";\n inputContext.plugins.register(plugin);\n });\n contextPlugin.name = \"headless-cms.context.createDeleteModelGraphQl\";\n return contextPlugin;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DeleteCmsModelTaskStatus } from "../../features/DeleteModelTask/types.js";
|
|
2
|
+
import { TaskDataStatus } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
3
|
+
export const getStatus = status => {
|
|
4
|
+
switch (status) {
|
|
5
|
+
case TaskDataStatus.PENDING:
|
|
6
|
+
case TaskDataStatus.RUNNING:
|
|
7
|
+
return DeleteCmsModelTaskStatus.RUNNING;
|
|
8
|
+
case TaskDataStatus.FAILED:
|
|
9
|
+
return DeleteCmsModelTaskStatus.ERROR;
|
|
10
|
+
case TaskDataStatus.ABORTED:
|
|
11
|
+
return DeleteCmsModelTaskStatus.CANCELED;
|
|
12
|
+
case TaskDataStatus.SUCCESS:
|
|
13
|
+
return DeleteCmsModelTaskStatus.DONE;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DeleteCmsModelTaskStatus","TaskDataStatus","getStatus","status","PENDING","RUNNING","FAILED","ERROR","ABORTED","CANCELED","SUCCESS","DONE"],"sources":["status.ts"],"sourcesContent":["import { DeleteCmsModelTaskStatus } from \"~/features/DeleteModelTask/types.js\";\nimport { TaskDataStatus } from \"@webiny/api-core/features/task/TaskService/index.js\";\n\nexport const getStatus = (status: TaskDataStatus): DeleteCmsModelTaskStatus => {\n switch (status) {\n case TaskDataStatus.PENDING:\n case TaskDataStatus.RUNNING:\n return DeleteCmsModelTaskStatus.RUNNING;\n case TaskDataStatus.FAILED:\n return DeleteCmsModelTaskStatus.ERROR;\n case TaskDataStatus.ABORTED:\n return DeleteCmsModelTaskStatus.CANCELED;\n case TaskDataStatus.SUCCESS:\n return DeleteCmsModelTaskStatus.DONE;\n }\n};\n"],"mappings":"AAAA,SAASA,wBAAwB;AACjC,SAASC,cAAc,QAAQ,qDAAqD;AAEpF,OAAO,MAAMC,SAAS,GAAIC,MAAsB,IAA+B;EAC3E,QAAQA,MAAM;IACV,KAAKF,cAAc,CAACG,OAAO;IAC3B,KAAKH,cAAc,CAACI,OAAO;MACvB,OAAOL,wBAAwB,CAACK,OAAO;IAC3C,KAAKJ,cAAc,CAACK,MAAM;MACtB,OAAON,wBAAwB,CAACO,KAAK;IACzC,KAAKN,cAAc,CAACO,OAAO;MACvB,OAAOR,wBAAwB,CAACS,QAAQ;IAC5C,KAAKR,cAAc,CAACS,OAAO;MACvB,OAAOV,wBAAwB,CAACW,IAAI;EAC5C;AACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const generateConfirmation = modelId => {
|
|
2
|
+
return `delete ${modelId}`;
|
|
3
|
+
};
|
|
4
|
+
export const validateConfirmation = params => {
|
|
5
|
+
const {
|
|
6
|
+
modelId,
|
|
7
|
+
confirmation
|
|
8
|
+
} = params;
|
|
9
|
+
if (!modelId || !confirmation) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return confirmation === generateConfirmation(modelId);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=confirmation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["generateConfirmation","modelId","validateConfirmation","params","confirmation"],"sources":["confirmation.ts"],"sourcesContent":["export const generateConfirmation = (modelId: string): string => {\n return `delete ${modelId}`;\n};\n\nexport interface IValidateConfirmationParams {\n modelId?: string;\n confirmation?: string;\n}\nexport const validateConfirmation = (params: IValidateConfirmationParams): boolean => {\n const { modelId, confirmation } = params;\n if (!modelId || !confirmation) {\n return false;\n }\n return confirmation === generateConfirmation(modelId);\n};\n"],"mappings":"AAAA,OAAO,MAAMA,oBAAoB,GAAIC,OAAe,IAAa;EAC7D,OAAO,UAAUA,OAAO,EAAE;AAC9B,CAAC;AAMD,OAAO,MAAMC,oBAAoB,GAAIC,MAAmC,IAAc;EAClF,MAAM;IAAEF,OAAO;IAAEG;EAAa,CAAC,GAAGD,MAAM;EACxC,IAAI,CAACF,OAAO,IAAI,CAACG,YAAY,EAAE;IAC3B,OAAO,KAAK;EAChB;EACA,OAAOA,YAAY,KAAKJ,oBAAoB,CAACC,OAAO,CAAC;AACzD,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { StorageKey } from "@webiny/db/types.js";
|
|
2
|
+
import type { IStoreValue } from "../features/DeleteModelTask/types.js";
|
|
3
3
|
export interface ICreateStoreKeyParams {
|
|
4
4
|
modelId: string;
|
|
5
5
|
tenant: string;
|
|
6
|
-
locale: string;
|
|
7
6
|
}
|
|
8
|
-
export declare const createStoreNamespace: (params: Pick<ICreateStoreKeyParams, "tenant"
|
|
7
|
+
export declare const createStoreNamespace: (params: Pick<ICreateStoreKeyParams, "tenant">) => string;
|
|
9
8
|
export declare const createStoreKey: (params: ICreateStoreKeyParams) => StorageKey;
|
|
10
9
|
export declare const createStoreValue: (params: IStoreValue) => IStoreValue;
|
package/helpers/store.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const createStoreNamespace = params => {
|
|
2
|
+
return `deletingCmsModel#T#${params.tenant}#`;
|
|
3
|
+
};
|
|
4
|
+
export const createStoreKey = params => {
|
|
5
|
+
return `${createStoreNamespace(params)}${params.modelId}`;
|
|
6
|
+
};
|
|
7
|
+
export const createStoreValue = params => {
|
|
8
|
+
return {
|
|
9
|
+
modelId: params.modelId,
|
|
10
|
+
task: params.task,
|
|
11
|
+
identity: params.identity,
|
|
12
|
+
tenant: params.tenant
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createStoreNamespace","params","tenant","createStoreKey","modelId","createStoreValue","task","identity"],"sources":["store.ts"],"sourcesContent":["import type { StorageKey } from \"@webiny/db/types.js\";\nimport type { IStoreValue } from \"~/features/DeleteModelTask/types.js\";\n\nexport interface ICreateStoreKeyParams {\n modelId: string;\n tenant: string;\n}\n\nexport const createStoreNamespace = (params: Pick<ICreateStoreKeyParams, \"tenant\">) => {\n return `deletingCmsModel#T#${params.tenant}#`;\n};\n\nexport const createStoreKey = (params: ICreateStoreKeyParams): StorageKey => {\n return `${createStoreNamespace(params)}${params.modelId}`;\n};\n\nexport const createStoreValue = (params: IStoreValue): IStoreValue => {\n return {\n modelId: params.modelId,\n task: params.task,\n identity: params.identity,\n tenant: params.tenant\n };\n};\n"],"mappings":"AAQA,OAAO,MAAMA,oBAAoB,GAAIC,MAA6C,IAAK;EACnF,OAAO,sBAAsBA,MAAM,CAACC,MAAM,GAAG;AACjD,CAAC;AAED,OAAO,MAAMC,cAAc,GAAIF,MAA6B,IAAiB;EACzE,OAAO,GAAGD,oBAAoB,CAACC,MAAM,CAAC,GAAGA,MAAM,CAACG,OAAO,EAAE;AAC7D,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAIJ,MAAmB,IAAkB;EAClE,OAAO;IACHG,OAAO,EAAEH,MAAM,CAACG,OAAO;IACvBE,IAAI,EAAEL,MAAM,CAACK,IAAI;IACjBC,QAAQ,EAAEN,MAAM,CAACM,QAAQ;IACzBL,MAAM,EAAED,MAAM,CAACC;EACnB,CAAC;AACL,CAAC","ignoreList":[]}
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export declare const createHcmsTasks: () => ((import("@webiny/api").ContextPlugin<import("./types").HcmsTasksContext> | import("@webiny/tasks").TaskDefinitionPlugin<import("./types").HcmsTasksContext, import("./tasks/deleteModel/types").IDeleteModelTaskInput, import("./tasks/deleteModel/types").IDeleteModelTaskOutput>)[] | ((import("@webiny/handler-aws").EventBridgeEventHandler<"WebinyEmptyTrashBin", Record<string, any>, any> | import("@webiny/handler").HandlerOnRequestPlugin<import("@webiny/handler/types").Context>)[] | import("@webiny/api").ContextPlugin<import("@webiny/api-headless-cms-bulk-actions/types").HcmsBulkActionsContext>)[] | (import("@webiny/api").ContextPlugin<import("@webiny/api-headless-cms-bulk-actions/types").HcmsBulkActionsContext> | (import("@webiny/tasks").TaskDefinitionPlugin<import("@webiny/api-headless-cms-bulk-actions/types").HcmsBulkActionsContext, import("@webiny/api-headless-cms-bulk-actions/types").IBulkActionOperationByModelInput, import("@webiny/api-headless-cms-bulk-actions/types").IBulkActionOperationByModelOutput> | import("@webiny/tasks").TaskDefinitionPlugin<import("@webiny/api-headless-cms-bulk-actions/types").HcmsBulkActionsContext, import("@webiny/api-headless-cms-bulk-actions/types").IBulkActionOperationInput, import("@webiny/api-headless-cms-bulk-actions/types").IBulkActionOperationOutput>)[])[][] | import("@webiny/tasks").TaskDefinitionPlugin<import("@webiny/api-headless-cms-bulk-actions/types").HcmsBulkActionsContext, import("@webiny/api-headless-cms-bulk-actions/types").IEmptyTrashBinsInput, import("@webiny/tasks").ITaskResponseDoneResultOutput> | import("@webiny/plugins/types").Plugin[])[];
|
|
1
|
+
export declare const createDeleteModelTask: () => import("@webiny/api").ContextPlugin<import("./types").HcmsTasksContext>[];
|
|
2
|
+
export declare const createHcmsTasks: () => (import("@webiny/api").ContextPlugin<import("@webiny/api/types").Context> | (import("@webiny/api").ContextPlugin<import("@webiny/api/types").Context> | (import("@webiny/handler-aws/eventBridge").EventBridgeEventHandler<"WebinyEmptyTrashBin", Record<string, any>, any> | import("@webiny/handler/index").HandlerOnRequestPlugin<import("@webiny/handler/types").Context>)[] | import("@webiny/handler/index").BeforeHandlerPlugin<import("@webiny/api-headless-cms-bulk-actions/types").HcmsBulkActionsContext>)[] | import("@webiny/plugins/types").Plugin[])[];
|
package/index.js
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var _deleteModel = require("./tasks/deleteModel");
|
|
16
|
-
const createHcmsTasks = () => [(0, _apiHeadlessCmsBulkActions.createHcmsBulkActions)(), (0, _apiHeadlessCmsBulkActions.createBulkActionEntriesTasks)(), (0, _apiHeadlessCmsBulkActions.createEmptyTrashBinsTask)(), (0, _apiHeadlessCmsImportExport.createHeadlessCmsImportExport)(), (0, _deleteModel.createDeleteModelTask)()];
|
|
17
|
-
exports.createHcmsTasks = createHcmsTasks;
|
|
1
|
+
import { createEmptyTrashBinsTask, createHcmsBulkActions } from "@webiny/api-headless-cms-bulk-actions";
|
|
2
|
+
import { createHeadlessCmsImportExport } from "@webiny/api-headless-cms-import-export";
|
|
3
|
+
import { createContextPlugin } from "@webiny/api";
|
|
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
|
+
export const createDeleteModelTask = () => {
|
|
8
|
+
return [createDeleteModelCrud(), createDeleteModelGraphQl(), createContextPlugin(context => {
|
|
9
|
+
DeleteModelTaskFeature.register(context.container);
|
|
10
|
+
})];
|
|
11
|
+
};
|
|
12
|
+
export const createHcmsTasks = () => [createHcmsBulkActions({
|
|
13
|
+
batchSize: 100
|
|
14
|
+
}), createEmptyTrashBinsTask(), createHeadlessCmsImportExport(), createDeleteModelTask()];
|
|
18
15
|
|
|
19
16
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["createEmptyTrashBinsTask","createHcmsBulkActions","createHeadlessCmsImportExport","createContextPlugin","DeleteModelTaskFeature","createDeleteModelCrud","createDeleteModelGraphQl","createDeleteModelTask","context","register","container","createHcmsTasks","batchSize"],"sources":["index.ts"],"sourcesContent":["import {\n createEmptyTrashBinsTask,\n createHcmsBulkActions\n} from \"@webiny/api-headless-cms-bulk-actions\";\nimport { createHeadlessCmsImportExport } from \"@webiny/api-headless-cms-import-export\";\nimport { createContextPlugin } from \"@webiny/api\";\nimport { DeleteModelTaskFeature } from \"~/features/DeleteModelTask/feature.js\";\nimport { createDeleteModelCrud } from \"~/graphql/deleteModel/crud.js\";\nimport { createDeleteModelGraphQl } from \"~/graphql/deleteModel/index.js\";\n\nexport const createDeleteModelTask = () => {\n return [\n createDeleteModelCrud(),\n createDeleteModelGraphQl(),\n createContextPlugin(context => {\n DeleteModelTaskFeature.register(context.container);\n })\n ];\n};\n\nexport const createHcmsTasks = () => [\n createHcmsBulkActions({ batchSize: 100 }),\n createEmptyTrashBinsTask(),\n createHeadlessCmsImportExport(),\n createDeleteModelTask()\n];\n"],"mappings":"AAAA,SACIA,wBAAwB,EACxBC,qBAAqB,QAClB,uCAAuC;AAC9C,SAASC,6BAA6B,QAAQ,wCAAwC;AACtF,SAASC,mBAAmB,QAAQ,aAAa;AACjD,SAASC,sBAAsB;AAC/B,SAASC,qBAAqB;AAC9B,SAASC,wBAAwB;AAEjC,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACvC,OAAO,CACHF,qBAAqB,CAAC,CAAC,EACvBC,wBAAwB,CAAC,CAAC,EAC1BH,mBAAmB,CAACK,OAAO,IAAI;IAC3BJ,sBAAsB,CAACK,QAAQ,CAACD,OAAO,CAACE,SAAS,CAAC;EACtD,CAAC,CAAC,CACL;AACL,CAAC;AAED,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM,CACjCV,qBAAqB,CAAC;EAAEW,SAAS,EAAE;AAAI,CAAC,CAAC,EACzCZ,wBAAwB,CAAC,CAAC,EAC1BE,6BAA6B,CAAC,CAAC,EAC/BK,qBAAqB,CAAC,CAAC,CAC1B","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-headless-cms-tasks",
|
|
3
|
-
"version": "6.0.0-
|
|
3
|
+
"version": "6.0.0-rc.0",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"main": "index.js",
|
|
5
6
|
"description": "Background tasks for Webiny Headless CMS",
|
|
6
7
|
"keywords": [
|
|
@@ -13,36 +14,33 @@
|
|
|
13
14
|
},
|
|
14
15
|
"license": "MIT",
|
|
15
16
|
"dependencies": {
|
|
16
|
-
"@webiny/api": "6.0.0-
|
|
17
|
-
"@webiny/api-aco": "6.0.0-
|
|
18
|
-
"@webiny/api-headless-cms": "6.0.0-
|
|
19
|
-
"@webiny/api-headless-cms-bulk-actions": "6.0.0-
|
|
20
|
-
"@webiny/api-headless-cms-import-export": "6.0.0-
|
|
21
|
-
"@webiny/db": "6.0.0-
|
|
22
|
-
"@webiny/error": "6.0.0-
|
|
23
|
-
"@webiny/
|
|
24
|
-
"@webiny/
|
|
25
|
-
"@webiny/
|
|
26
|
-
"
|
|
17
|
+
"@webiny/api": "6.0.0-rc.0",
|
|
18
|
+
"@webiny/api-aco": "6.0.0-rc.0",
|
|
19
|
+
"@webiny/api-headless-cms": "6.0.0-rc.0",
|
|
20
|
+
"@webiny/api-headless-cms-bulk-actions": "6.0.0-rc.0",
|
|
21
|
+
"@webiny/api-headless-cms-import-export": "6.0.0-rc.0",
|
|
22
|
+
"@webiny/db": "6.0.0-rc.0",
|
|
23
|
+
"@webiny/error": "6.0.0-rc.0",
|
|
24
|
+
"@webiny/feature": "6.0.0-rc.0",
|
|
25
|
+
"@webiny/handler-graphql": "6.0.0-rc.0",
|
|
26
|
+
"@webiny/tasks": "6.0.0-rc.0",
|
|
27
|
+
"@webiny/utils": "6.0.0-rc.0",
|
|
28
|
+
"zod": "3.25.76"
|
|
27
29
|
},
|
|
28
30
|
"devDependencies": {
|
|
29
|
-
"@webiny/api-
|
|
30
|
-
"@webiny/
|
|
31
|
-
"@webiny/
|
|
32
|
-
"@webiny/
|
|
33
|
-
"@webiny/
|
|
34
|
-
"@webiny/
|
|
35
|
-
"@webiny/
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
},
|
|
39
|
-
"scripts": {
|
|
40
|
-
"build": "node ../cli/bin.js run build",
|
|
41
|
-
"watch": "node ../cli/bin.js run watch"
|
|
31
|
+
"@webiny/api-core": "6.0.0-rc.0",
|
|
32
|
+
"@webiny/build-tools": "6.0.0-rc.0",
|
|
33
|
+
"@webiny/handler": "6.0.0-rc.0",
|
|
34
|
+
"@webiny/handler-aws": "6.0.0-rc.0",
|
|
35
|
+
"@webiny/plugins": "6.0.0-rc.0",
|
|
36
|
+
"@webiny/project-utils": "6.0.0-rc.0",
|
|
37
|
+
"@webiny/wcp": "6.0.0-rc.0",
|
|
38
|
+
"typescript": "5.9.3",
|
|
39
|
+
"vitest": "4.0.18"
|
|
42
40
|
},
|
|
43
41
|
"publishConfig": {
|
|
44
42
|
"access": "public",
|
|
45
43
|
"directory": "dist"
|
|
46
44
|
},
|
|
47
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "0f2aa699f4642e550ab62c96fcd050e8d02345c9"
|
|
48
46
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { HcmsBulkActionsContext } from "@webiny/api-headless-cms-bulk-actions/types";
|
|
2
|
-
import type { AcoContext } from "@webiny/api-aco/types";
|
|
3
|
-
import type { HeadlessCms } from "@webiny/api-headless-cms/types";
|
|
4
|
-
import type { IDeleteCmsModelTask, IStoreValue } from "./
|
|
1
|
+
import type { HcmsBulkActionsContext } from "@webiny/api-headless-cms-bulk-actions/types.js";
|
|
2
|
+
import type { AcoContext } from "@webiny/api-aco/types.js";
|
|
3
|
+
import type { HeadlessCms } from "@webiny/api-headless-cms/types/index.js";
|
|
4
|
+
import type { IDeleteCmsModelTask, IStoreValue } from "./features/DeleteModelTask/types.js";
|
|
5
5
|
export interface HeadlessCmsFullyDeleteModel {
|
|
6
6
|
fullyDeleteModel: (modelId: string) => Promise<IDeleteCmsModelTask>;
|
|
7
7
|
cancelFullyDeleteModel: (modelId: string) => Promise<IDeleteCmsModelTask>;
|
package/types.js
CHANGED
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { HcmsBulkActionsContext } from \"@webiny/api-headless-cms-bulk-actions/types\";\nimport type { AcoContext } from \"@webiny/api-aco/types\";\nimport type { HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport type { IDeleteCmsModelTask, IStoreValue } from \"~/
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { HcmsBulkActionsContext } from \"@webiny/api-headless-cms-bulk-actions/types.js\";\nimport type { AcoContext } from \"@webiny/api-aco/types.js\";\nimport type { HeadlessCms } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IDeleteCmsModelTask, IStoreValue } from \"~/features/DeleteModelTask/types.js\";\n\nexport interface HeadlessCmsFullyDeleteModel {\n fullyDeleteModel: (modelId: string) => Promise<IDeleteCmsModelTask>;\n cancelFullyDeleteModel: (modelId: string) => Promise<IDeleteCmsModelTask>;\n getDeleteModelProgress: (modelId: string) => Promise<IDeleteCmsModelTask>;\n isModelBeingDeleted: (modelId: string) => Promise<boolean>;\n listModelsBeingDeleted: () => Promise<IStoreValue[]>;\n}\n\nexport interface HcmsTasksContext extends HcmsBulkActionsContext, AcoContext {\n cms: HeadlessCms & HeadlessCmsFullyDeleteModel;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { ITaskResponse, ITaskResponseResult, ITaskRunParams } from "@webiny/tasks";
|
|
2
|
-
import type { HcmsTasksContext } from "../../types";
|
|
3
|
-
import type { IDeleteModelTaskInput, IDeleteModelTaskOutput } from "./types";
|
|
4
|
-
export interface IDeleteModelRunnerParams<C extends HcmsTasksContext, I extends IDeleteModelTaskInput, O extends IDeleteModelTaskOutput> {
|
|
5
|
-
taskId: string;
|
|
6
|
-
context: C;
|
|
7
|
-
response: ITaskResponse<I, O>;
|
|
8
|
-
}
|
|
9
|
-
export type IExecuteParams<C extends HcmsTasksContext, I extends IDeleteModelTaskInput, O extends IDeleteModelTaskOutput> = Omit<ITaskRunParams<C, I, O>, "context" | "response" | "store" | "timer" | "trigger">;
|
|
10
|
-
export declare class DeleteModelRunner<C extends HcmsTasksContext, I extends IDeleteModelTaskInput, O extends IDeleteModelTaskOutput> {
|
|
11
|
-
private readonly taskId;
|
|
12
|
-
private readonly context;
|
|
13
|
-
private readonly response;
|
|
14
|
-
constructor(params: IDeleteModelRunnerParams<C, I, O>);
|
|
15
|
-
execute(params: IExecuteParams<C, I, O>): Promise<ITaskResponseResult<I, O>>;
|
|
16
|
-
private getModel;
|
|
17
|
-
private removeBeingDeleted;
|
|
18
|
-
}
|
|
19
|
-
export declare const createDeleteModelRunner: <C extends HcmsTasksContext, I extends IDeleteModelTaskInput, O extends IDeleteModelTaskOutput>(params: IDeleteModelRunnerParams<C, I, O>) => DeleteModelRunner<C, I, O>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_store","require","DeleteModelRunner","constructor","params","taskId","context","response","execute","input","isCloseToTimeout","isAborted","model","getModel","modelId","hasMoreItems","lastDeletedId","removeBeingDeleted","aborted","continue","where","latest","entryId_gte","items","metaHasMoreItems","cms","storageOperations","entries","list","limit","sort","item","deleteEntry","id","permanently","force","ex","console","error","Error","entryId","length","log","seconds","hasMoreFolders","meta","aco","folder","type","delete","isPlugin","done","deleteModel","message","key","createStoreKey","db","store","removeValue","exports","createDeleteModelRunner"],"sources":["DeleteModelRunner.ts"],"sourcesContent":["import type { ITaskResponse, ITaskResponseResult, ITaskRunParams } from \"@webiny/tasks\";\nimport type { HcmsTasksContext } from \"~/types\";\nimport type { IDeleteModelTaskInput, IDeleteModelTaskOutput } from \"./types\";\nimport type { CmsEntryListWhere, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { createStoreKey } from \"~/tasks/deleteModel/helpers/store\";\n\nexport interface IDeleteModelRunnerParams<\n C extends HcmsTasksContext,\n I extends IDeleteModelTaskInput,\n O extends IDeleteModelTaskOutput\n> {\n taskId: string;\n context: C;\n response: ITaskResponse<I, O>;\n}\n\nexport type IExecuteParams<\n C extends HcmsTasksContext,\n I extends IDeleteModelTaskInput,\n O extends IDeleteModelTaskOutput\n> = Omit<ITaskRunParams<C, I, O>, \"context\" | \"response\" | \"store\" | \"timer\" | \"trigger\">;\n\nexport class DeleteModelRunner<\n C extends HcmsTasksContext,\n I extends IDeleteModelTaskInput,\n O extends IDeleteModelTaskOutput\n> {\n private readonly taskId: string;\n private readonly context: C;\n private readonly response: ITaskResponse<I, O>;\n\n public constructor(params: IDeleteModelRunnerParams<C, I, O>) {\n this.taskId = params.taskId;\n this.context = params.context;\n this.response = params.response;\n }\n\n public async execute(params: IExecuteParams<C, I, O>): Promise<ITaskResponseResult<I, O>> {\n const { input, isCloseToTimeout, isAborted } = 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 (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 this.response.aborted();\n } else if (isCloseToTimeout()) {\n return this.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 { items, hasMoreItems: metaHasMoreItems } =\n await this.context.cms.storageOperations.entries.list(model, {\n limit: 1000,\n where,\n sort: [\"entryId_ASC\"]\n });\n for (const item of items) {\n try {\n await this.context.cms.deleteEntry(model, item.id, {\n permanently: true,\n force: true\n });\n } catch (ex) {\n console.error(\"Failed to delete entry.\", {\n model: model.modelId,\n id: item.id\n });\n return this.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 { items } = await this.context.cms.storageOperations.entries.list(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 this.response.continue(\n {\n ...input\n },\n {\n seconds: 5\n }\n );\n }\n\n let hasMoreFolders = false;\n do {\n const [items, meta] = await this.context.aco.folder.list({\n where: {\n type: `cms:${model.modelId}`\n },\n limit: 1000\n });\n for (const item of items) {\n try {\n await this.context.aco.folder.delete(item.id);\n } catch (ex) {\n console.error(`Failed to delete folder \"${item.id}\".`, ex);\n return this.response.error(ex);\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 this.response.done();\n }\n try {\n await this.context.cms.deleteModel(model.modelId);\n } catch (ex) {\n const message = `Failed to delete model \"${model.modelId}\".`;\n console.error(message);\n return this.response.error(ex);\n }\n\n return this.response.done();\n }\n\n private async getModel(modelId: string): Promise<CmsModel> {\n const model = await this.context.cms.getModel(modelId);\n if (!model) {\n throw new Error(`Model \"${modelId}\" not found.`);\n }\n return model;\n }\n\n private async removeBeingDeleted(\n model: Pick<CmsModel, \"modelId\" | \"tenant\" | \"locale\">\n ): Promise<void> {\n const key = createStoreKey(model);\n await this.context.db.store.removeValue(key);\n }\n}\n\nexport const createDeleteModelRunner = <\n C extends HcmsTasksContext,\n I extends IDeleteModelTaskInput,\n O extends IDeleteModelTaskOutput\n>(\n params: IDeleteModelRunnerParams<C, I, O>\n) => {\n return new DeleteModelRunner<C, I, O>(params);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["DELETE_MODEL_TASK","exports"],"sources":["constants.ts"],"sourcesContent":["export const DELETE_MODEL_TASK = \"deleteModelAndEntries\";\n"],"mappings":";;;;;;AAAO,MAAMA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,uBAAuB","ignoreList":[]}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.attachLifecycleEvents = void 0;
|
|
7
|
-
var _error = require("@webiny/error");
|
|
8
|
-
const attachLifecycleEvents = ({
|
|
9
|
-
context
|
|
10
|
-
}) => {
|
|
11
|
-
const blockActionOnEvent = async params => {
|
|
12
|
-
const {
|
|
13
|
-
model
|
|
14
|
-
} = params;
|
|
15
|
-
const isBeingDeleted = await context.cms.isModelBeingDeleted(model.modelId);
|
|
16
|
-
if (!isBeingDeleted) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
throw new _error.WebinyError(`Model "${model.name}" is being deleted and you cannot create, update or delete any entries of this model.`);
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Entry actions.
|
|
23
|
-
*/
|
|
24
|
-
context.cms.onEntryBeforeCreate.subscribe(blockActionOnEvent);
|
|
25
|
-
context.cms.onEntryRevisionBeforeCreate.subscribe(blockActionOnEvent);
|
|
26
|
-
context.cms.onEntryBeforeUpdate.subscribe(blockActionOnEvent);
|
|
27
|
-
context.cms.onEntryBeforeUnpublish.subscribe(blockActionOnEvent);
|
|
28
|
-
context.cms.onEntryBeforePublish.subscribe(blockActionOnEvent);
|
|
29
|
-
context.cms.onEntryBeforeRepublish.subscribe(blockActionOnEvent);
|
|
30
|
-
context.cms.onEntryBeforeRestoreFromBin.subscribe(blockActionOnEvent);
|
|
31
|
-
context.cms.onEntryBeforeMove.subscribe(blockActionOnEvent);
|
|
32
|
-
/**
|
|
33
|
-
* Model actions.
|
|
34
|
-
*/
|
|
35
|
-
context.cms.onModelBeforeUpdate.subscribe(blockActionOnEvent);
|
|
36
|
-
context.cms.onModelBeforeCreateFrom.subscribe(blockActionOnEvent);
|
|
37
|
-
};
|
|
38
|
-
exports.attachLifecycleEvents = attachLifecycleEvents;
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=attachLifecycleEvents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_error","require","attachLifecycleEvents","context","blockActionOnEvent","params","model","isBeingDeleted","cms","isModelBeingDeleted","modelId","WebinyError","name","onEntryBeforeCreate","subscribe","onEntryRevisionBeforeCreate","onEntryBeforeUpdate","onEntryBeforeUnpublish","onEntryBeforePublish","onEntryBeforeRepublish","onEntryBeforeRestoreFromBin","onEntryBeforeMove","onModelBeforeUpdate","onModelBeforeCreateFrom","exports"],"sources":["attachLifecycleEvents.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { WebinyError } from \"@webiny/error\";\nimport type { HcmsTasksContext } from \"~/types\";\n\nexport interface IAttachLifecycleEventsParams {\n context: HcmsTasksContext;\n}\n\ninterface ICbParams {\n model: Pick<CmsModel, \"modelId\" | \"name\">;\n}\n\nexport const attachLifecycleEvents = ({ context }: IAttachLifecycleEventsParams): void => {\n const blockActionOnEvent = async (params: ICbParams): Promise<void> => {\n const { model } = params;\n const isBeingDeleted = await context.cms.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 * Entry actions.\n */\n context.cms.onEntryBeforeCreate.subscribe(blockActionOnEvent);\n\n context.cms.onEntryRevisionBeforeCreate.subscribe(blockActionOnEvent);\n\n context.cms.onEntryBeforeUpdate.subscribe(blockActionOnEvent);\n\n context.cms.onEntryBeforeUnpublish.subscribe(blockActionOnEvent);\n\n context.cms.onEntryBeforePublish.subscribe(blockActionOnEvent);\n\n context.cms.onEntryBeforeRepublish.subscribe(blockActionOnEvent);\n\n context.cms.onEntryBeforeRestoreFromBin.subscribe(blockActionOnEvent);\n\n context.cms.onEntryBeforeMove.subscribe(blockActionOnEvent);\n /**\n * Model actions.\n */\n context.cms.onModelBeforeUpdate.subscribe(blockActionOnEvent);\n\n context.cms.onModelBeforeCreateFrom.subscribe(blockActionOnEvent);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAWO,MAAMC,qBAAqB,GAAGA,CAAC;EAAEC;AAAsC,CAAC,KAAW;EACtF,MAAMC,kBAAkB,GAAG,MAAOC,MAAiB,IAAoB;IACnE,MAAM;MAAEC;IAAM,CAAC,GAAGD,MAAM;IACxB,MAAME,cAAc,GAAG,MAAMJ,OAAO,CAACK,GAAG,CAACC,mBAAmB,CAACH,KAAK,CAACI,OAAO,CAAC;IAC3E,IAAI,CAACH,cAAc,EAAE;MACjB;IACJ;IAEA,MAAM,IAAII,kBAAW,CACjB,UAAUL,KAAK,CAACM,IAAI,uFACxB,CAAC;EACL,CAAC;EACD;AACJ;AACA;EACIT,OAAO,CAACK,GAAG,CAACK,mBAAmB,CAACC,SAAS,CAACV,kBAAkB,CAAC;EAE7DD,OAAO,CAACK,GAAG,CAACO,2BAA2B,CAACD,SAAS,CAACV,kBAAkB,CAAC;EAErED,OAAO,CAACK,GAAG,CAACQ,mBAAmB,CAACF,SAAS,CAACV,kBAAkB,CAAC;EAE7DD,OAAO,CAACK,GAAG,CAACS,sBAAsB,CAACH,SAAS,CAACV,kBAAkB,CAAC;EAEhED,OAAO,CAACK,GAAG,CAACU,oBAAoB,CAACJ,SAAS,CAACV,kBAAkB,CAAC;EAE9DD,OAAO,CAACK,GAAG,CAACW,sBAAsB,CAACL,SAAS,CAACV,kBAAkB,CAAC;EAEhED,OAAO,CAACK,GAAG,CAACY,2BAA2B,CAACN,SAAS,CAACV,kBAAkB,CAAC;EAErED,OAAO,CAACK,GAAG,CAACa,iBAAiB,CAACP,SAAS,CAACV,kBAAkB,CAAC;EAC3D;AACJ;AACA;EACID,OAAO,CAACK,GAAG,CAACc,mBAAmB,CAACR,SAAS,CAACV,kBAAkB,CAAC;EAE7DD,OAAO,CAACK,GAAG,CAACe,uBAAuB,CAACT,SAAS,CAACV,kBAAkB,CAAC;AACrE,CAAC;AAACoB,OAAA,CAAAtB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","require","_error","_status","_store","cancelDeleteModel","params","context","modelId","model","cms","getModel","accessControl","ensureCanAccessModel","rwd","ensureCanAccessEntry","storeKey","createStoreKey","result","db","store","getValue","taskId","data","task","removeValue","error","WebinyError","from","code","message","tasks","getTask","definitionId","DELETE_MODEL_TASK","canceledTask","abort","id","status","getStatus","taskStatus","total","output","deleted","exports"],"sources":["cancelDeleteModel.ts"],"sourcesContent":["import type { HcmsTasksContext } from \"~/types\";\nimport type {\n IDeleteCmsModelTask,\n IDeleteModelTaskInput,\n IDeleteModelTaskOutput,\n IStoreValue\n} from \"~/tasks/deleteModel/types\";\nimport { DELETE_MODEL_TASK } from \"~/tasks/deleteModel/constants\";\nimport { WebinyError } from \"@webiny/error\";\nimport { getStatus } from \"~/tasks/deleteModel/graphql/status\";\nimport { createStoreKey } from \"~/tasks/deleteModel/helpers/store\";\n\nexport interface ICancelDeleteModelParams {\n readonly context: Pick<HcmsTasksContext, \"cms\" | \"tasks\" | \"db\">;\n readonly modelId: string;\n}\n\nexport const cancelDeleteModel = async (\n params: ICancelDeleteModelParams\n): Promise<IDeleteCmsModelTask> => {\n const { context, modelId } = params;\n\n const model = await context.cms.getModel(modelId);\n\n await context.cms.accessControl.ensureCanAccessModel({\n model,\n rwd: \"d\"\n });\n\n await context.cms.accessControl.ensureCanAccessEntry({\n model,\n rwd: \"w\"\n });\n\n const storeKey = createStoreKey(model);\n\n const result = await context.db.store.getValue<IStoreValue>(storeKey);\n\n const taskId = result.data?.task;\n\n await context.db.store.removeValue(storeKey);\n if (!taskId) {\n if (result.error) {\n throw WebinyError.from(result.error, {\n code: \"DELETE_MODEL_NO_TASK_DEFINED\"\n });\n }\n throw new WebinyError({\n message: `Model \"${modelId}\" is not being deleted.`,\n code: \"MODEL_NOT_BEING_DELETED\"\n });\n }\n\n const task = await context.tasks.getTask<IDeleteModelTaskInput, IDeleteModelTaskOutput>(taskId);\n if (task?.definitionId !== DELETE_MODEL_TASK) {\n throw new WebinyError({\n message: `The task which is deleting a model cannot be found. Please check Step Functions for more info. Task id: ${taskId}`,\n code: \"DELETE_MODEL_TASK_NOT_FOUND\",\n data: {\n model: model.modelId,\n task: taskId\n }\n });\n }\n\n const canceledTask = await context.tasks.abort<IDeleteModelTaskInput, IDeleteModelTaskOutput>({\n id: task.id,\n message: \"User canceled the task.\"\n });\n\n return {\n id: canceledTask.id,\n status: getStatus(canceledTask.taskStatus),\n total: canceledTask.output?.total || 0,\n deleted: canceledTask.output?.deleted || 0\n };\n};\n"],"mappings":";;;;;;AAOA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAOO,MAAMI,iBAAiB,GAAG,MAC7BC,MAAgC,IACD;EAC/B,MAAM;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EAEnC,MAAMG,KAAK,GAAG,MAAMF,OAAO,CAACG,GAAG,CAACC,QAAQ,CAACH,OAAO,CAAC;EAEjD,MAAMD,OAAO,CAACG,GAAG,CAACE,aAAa,CAACC,oBAAoB,CAAC;IACjDJ,KAAK;IACLK,GAAG,EAAE;EACT,CAAC,CAAC;EAEF,MAAMP,OAAO,CAACG,GAAG,CAACE,aAAa,CAACG,oBAAoB,CAAC;IACjDN,KAAK;IACLK,GAAG,EAAE;EACT,CAAC,CAAC;EAEF,MAAME,QAAQ,GAAG,IAAAC,qBAAc,EAACR,KAAK,CAAC;EAEtC,MAAMS,MAAM,GAAG,MAAMX,OAAO,CAACY,EAAE,CAACC,KAAK,CAACC,QAAQ,CAAcL,QAAQ,CAAC;EAErE,MAAMM,MAAM,GAAGJ,MAAM,CAACK,IAAI,EAAEC,IAAI;EAEhC,MAAMjB,OAAO,CAACY,EAAE,CAACC,KAAK,CAACK,WAAW,CAACT,QAAQ,CAAC;EAC5C,IAAI,CAACM,MAAM,EAAE;IACT,IAAIJ,MAAM,CAACQ,KAAK,EAAE;MACd,MAAMC,kBAAW,CAACC,IAAI,CAACV,MAAM,CAACQ,KAAK,EAAE;QACjCG,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IACA,MAAM,IAAIF,kBAAW,CAAC;MAClBG,OAAO,EAAE,UAAUtB,OAAO,yBAAyB;MACnDqB,IAAI,EAAE;IACV,CAAC,CAAC;EACN;EAEA,MAAML,IAAI,GAAG,MAAMjB,OAAO,CAACwB,KAAK,CAACC,OAAO,CAAgDV,MAAM,CAAC;EAC/F,IAAIE,IAAI,EAAES,YAAY,KAAKC,4BAAiB,EAAE;IAC1C,MAAM,IAAIP,kBAAW,CAAC;MAClBG,OAAO,EAAE,2GAA2GR,MAAM,EAAE;MAC5HO,IAAI,EAAE,6BAA6B;MACnCN,IAAI,EAAE;QACFd,KAAK,EAAEA,KAAK,CAACD,OAAO;QACpBgB,IAAI,EAAEF;MACV;IACJ,CAAC,CAAC;EACN;EAEA,MAAMa,YAAY,GAAG,MAAM5B,OAAO,CAACwB,KAAK,CAACK,KAAK,CAAgD;IAC1FC,EAAE,EAAEb,IAAI,CAACa,EAAE;IACXP,OAAO,EAAE;EACb,CAAC,CAAC;EAEF,OAAO;IACHO,EAAE,EAAEF,YAAY,CAACE,EAAE;IACnBC,MAAM,EAAE,IAAAC,iBAAS,EAACJ,YAAY,CAACK,UAAU,CAAC;IAC1CC,KAAK,EAAEN,YAAY,CAACO,MAAM,EAAED,KAAK,IAAI,CAAC;IACtCE,OAAO,EAAER,YAAY,CAACO,MAAM,EAAEC,OAAO,IAAI;EAC7C,CAAC;AACL,CAAC;AAACC,OAAA,CAAAvC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|