@webiny/api-headless-cms-workflows 0.0.0-unstable.ac6ebf63c6 → 0.0.0-unstable.b6d7105cee

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.
Files changed (59) hide show
  1. package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.d.ts +15 -0
  2. package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js +35 -0
  3. package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js.map +1 -0
  4. package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.d.ts +13 -0
  5. package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js +45 -0
  6. package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js.map +1 -0
  7. package/features/EntryWorkflows/errors.d.ts +11 -0
  8. package/features/EntryWorkflows/errors.js +12 -0
  9. package/features/EntryWorkflows/errors.js.map +1 -0
  10. package/features/EntryWorkflows/feature.d.ts +4 -1
  11. package/features/EntryWorkflows/feature.js +19 -10
  12. package/features/EntryWorkflows/feature.js.map +1 -1
  13. package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.d.ts +11 -0
  14. package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js +37 -0
  15. package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js.map +1 -0
  16. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.d.ts +1 -1
  17. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js +24 -22
  18. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js.map +1 -1
  19. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.d.ts +13 -0
  20. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js +35 -0
  21. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js.map +1 -0
  22. package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.d.ts +1 -1
  23. package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js +16 -19
  24. package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js.map +1 -1
  25. package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.d.ts +1 -1
  26. package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js +28 -32
  27. package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js.map +1 -1
  28. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.d.ts +1 -1
  29. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js +25 -23
  30. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js.map +1 -1
  31. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.d.ts +1 -1
  32. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js +24 -23
  33. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js.map +1 -1
  34. package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.d.ts +1 -1
  35. package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js +34 -36
  36. package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js.map +1 -1
  37. package/features/EntryWorkflows/index.js +0 -2
  38. package/features/Workflows/feature.d.ts +4 -1
  39. package/features/Workflows/feature.js +6 -5
  40. package/features/Workflows/feature.js.map +1 -1
  41. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.d.ts +1 -1
  42. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js +17 -22
  43. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js.map +1 -1
  44. package/features/Workflows/index.js +0 -2
  45. package/graphql/entrySystemSchema.d.ts +2 -0
  46. package/graphql/entrySystemSchema.js +18 -0
  47. package/graphql/entrySystemSchema.js.map +1 -0
  48. package/index.js +12 -13
  49. package/index.js.map +1 -1
  50. package/package.json +25 -18
  51. package/utils/appName.js +6 -11
  52. package/utils/appName.js.map +1 -1
  53. package/utils/modelAllowed.js +5 -9
  54. package/utils/modelAllowed.js.map +1 -1
  55. package/utils/state.d.ts +2 -2
  56. package/utils/state.js +9 -8
  57. package/utils/state.js.map +1 -1
  58. package/features/EntryWorkflows/index.js.map +0 -1
  59. package/features/Workflows/index.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
2
+ import { GetRevisionByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetRevisionById/index.js";
3
+ import { WorkflowStateContextProvider } from "@webiny/api-workflows/features/workflowState/CreateWorkflowState/index.js";
4
+ import type { GenericRecord } from "@webiny/api/types.js";
5
+ declare class CmsWorkflowStateContextProviderImpl implements WorkflowStateContextProvider.Interface {
6
+ private getModel;
7
+ private getRevisionById;
8
+ private decoratee;
9
+ constructor(getModel: GetModelUseCase.Interface, getRevisionById: GetRevisionByIdUseCase.Interface, decoratee: WorkflowStateContextProvider.Interface);
10
+ provide(params: WorkflowStateContextProvider.Params): Promise<GenericRecord>;
11
+ }
12
+ export declare const CmsWorkflowStateContextProvider: typeof CmsWorkflowStateContextProviderImpl & {
13
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-workflows/features/workflowState/CreateWorkflowState/WorkflowStateContextProvider").IWorkflowStateContextProvider>;
14
+ };
15
+ export {};
@@ -0,0 +1,35 @@
1
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
2
+ import { GetRevisionByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetRevisionById/index.js";
3
+ import { WorkflowStateContextProvider } from "@webiny/api-workflows/features/workflowState/CreateWorkflowState/index.js";
4
+ import { getModelIdFromAppName } from "../../../utils/appName.js";
5
+ class CmsWorkflowStateContextProviderImpl {
6
+ constructor(getModel, getRevisionById, decoratee){
7
+ this.getModel = getModel;
8
+ this.getRevisionById = getRevisionById;
9
+ this.decoratee = decoratee;
10
+ }
11
+ async provide(params) {
12
+ const modelId = getModelIdFromAppName(params.app);
13
+ if (!modelId) return this.decoratee.provide(params);
14
+ const modelResult = await this.getModel.execute(modelId);
15
+ if (modelResult.isFail()) return {};
16
+ const model = modelResult.value;
17
+ const entryResult = await this.getRevisionById.execute(model, params.targetRevisionId);
18
+ if (entryResult.isFail()) return {};
19
+ const entry = entryResult.value;
20
+ return {
21
+ folderId: entry.location?.folderId || null,
22
+ modelId
23
+ };
24
+ }
25
+ }
26
+ const CmsWorkflowStateContextProvider = WorkflowStateContextProvider.createDecorator({
27
+ decorator: CmsWorkflowStateContextProviderImpl,
28
+ dependencies: [
29
+ GetModelUseCase,
30
+ GetRevisionByIdUseCase
31
+ ]
32
+ });
33
+ export { CmsWorkflowStateContextProvider };
34
+
35
+ //# sourceMappingURL=CmsWorkflowStateContextProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js","sources":["../../../../src/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.ts"],"sourcesContent":["import { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { GetRevisionByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetRevisionById/index.js\";\nimport { WorkflowStateContextProvider } from \"@webiny/api-workflows/features/workflowState/CreateWorkflowState/index.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nclass CmsWorkflowStateContextProviderImpl implements WorkflowStateContextProvider.Interface {\n constructor(\n private getModel: GetModelUseCase.Interface,\n private getRevisionById: GetRevisionByIdUseCase.Interface,\n private decoratee: WorkflowStateContextProvider.Interface\n ) {}\n\n async provide(params: WorkflowStateContextProvider.Params): Promise<GenericRecord> {\n const modelId = getModelIdFromAppName(params.app);\n if (!modelId) {\n return this.decoratee.provide(params);\n }\n\n const modelResult = await this.getModel.execute(modelId);\n if (modelResult.isFail()) {\n return {};\n }\n\n const model = modelResult.value;\n const entryResult = await this.getRevisionById.execute(model, params.targetRevisionId);\n\n if (entryResult.isFail()) {\n return {};\n }\n\n const entry = entryResult.value;\n\n return {\n folderId: entry.location?.folderId || null,\n modelId\n };\n }\n}\n\nexport const CmsWorkflowStateContextProvider = WorkflowStateContextProvider.createDecorator({\n decorator: CmsWorkflowStateContextProviderImpl,\n dependencies: [GetModelUseCase, GetRevisionByIdUseCase]\n});\n"],"names":["CmsWorkflowStateContextProviderImpl","getModel","getRevisionById","decoratee","params","modelId","getModelIdFromAppName","modelResult","model","entryResult","entry","CmsWorkflowStateContextProvider","WorkflowStateContextProvider","GetModelUseCase","GetRevisionByIdUseCase"],"mappings":";;;;AAMA,MAAMA;IACF,YACYC,QAAmC,EACnCC,eAAiD,EACjDC,SAAiD,CAC3D;aAHUF,QAAQ,GAARA;aACAC,eAAe,GAAfA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,QAAQC,MAA2C,EAA0B;QAC/E,MAAMC,UAAUC,sBAAsBF,OAAO,GAAG;QAChD,IAAI,CAACC,SACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAACD;QAGlC,MAAMG,cAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACF;QAChD,IAAIE,YAAY,MAAM,IAClB,OAAO,CAAC;QAGZ,MAAMC,QAAQD,YAAY,KAAK;QAC/B,MAAME,cAAc,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACD,OAAOJ,OAAO,gBAAgB;QAErF,IAAIK,YAAY,MAAM,IAClB,OAAO,CAAC;QAGZ,MAAMC,QAAQD,YAAY,KAAK;QAE/B,OAAO;YACH,UAAUC,MAAM,QAAQ,EAAE,YAAY;YACtCL;QACJ;IACJ;AACJ;AAEO,MAAMM,kCAAkCC,6BAA6B,eAAe,CAAC;IACxF,WAAWZ;IACX,cAAc;QAACa;QAAiBC;KAAuB;AAC3D"}
@@ -0,0 +1,13 @@
1
+ import { FolderLevelPermissions } from "@webiny/api-aco/features/flp/FolderLevelPermissions/index.js";
2
+ import { WorkflowStateFilter } from "@webiny/api-workflows/features/workflowState/ListWorkflowStates/index.js";
3
+ import type { WorkflowState } from "@webiny/api-workflows/domain/workflowState/WorkflowState.js";
4
+ declare class CmsWorkflowStateFilterImpl implements WorkflowStateFilter.Interface {
5
+ private flp;
6
+ private decoratee;
7
+ constructor(flp: FolderLevelPermissions.Interface, decoratee: WorkflowStateFilter.Interface);
8
+ filter(items: WorkflowState[]): Promise<WorkflowState[]>;
9
+ }
10
+ export declare const CmsWorkflowStateFilter: typeof CmsWorkflowStateFilterImpl & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-workflows/features/workflowState/ListWorkflowStates/WorkflowStateFilter").IWorkflowStateFilter>;
12
+ };
13
+ export {};
@@ -0,0 +1,45 @@
1
+ import { FolderLevelPermissions } from "@webiny/api-aco/features/flp/FolderLevelPermissions/index.js";
2
+ import { ROOT_FOLDER } from "@webiny/shared-aco/constants.js";
3
+ import { WorkflowStateFilter } from "@webiny/api-workflows/features/workflowState/ListWorkflowStates/index.js";
4
+ import { getModelIdFromAppName } from "../../../utils/appName.js";
5
+ class CmsWorkflowStateFilterImpl {
6
+ constructor(flp, decoratee){
7
+ this.flp = flp;
8
+ this.decoratee = decoratee;
9
+ }
10
+ async filter(items) {
11
+ const filtered = await this.decoratee.filter(items);
12
+ if (!this.flp.canUseFolderLevelPermissions()) return filtered;
13
+ const cmsItems = filtered.filter((item)=>null !== getModelIdFromAppName(item.app));
14
+ if (0 === cmsItems.length) return filtered;
15
+ const folderIds = new Set();
16
+ for (const item of cmsItems){
17
+ const folderId = item.targetContext?.folderId;
18
+ if (folderId && folderId !== ROOT_FOLDER) folderIds.add(folderId);
19
+ }
20
+ const folderAccess = new Map();
21
+ for (const folderId of folderIds){
22
+ const permissions = await this.flp.getFolderLevelPermissions(folderId);
23
+ const canAccess = await this.flp.canAccessFolderContent({
24
+ permissions,
25
+ rwd: "r"
26
+ });
27
+ folderAccess.set(folderId, canAccess);
28
+ }
29
+ return filtered.filter((item)=>{
30
+ if (null === getModelIdFromAppName(item.app)) return true;
31
+ const folderId = item.targetContext?.folderId;
32
+ if (!folderId || folderId === ROOT_FOLDER) return true;
33
+ return true === folderAccess.get(folderId);
34
+ });
35
+ }
36
+ }
37
+ const CmsWorkflowStateFilter = WorkflowStateFilter.createDecorator({
38
+ decorator: CmsWorkflowStateFilterImpl,
39
+ dependencies: [
40
+ FolderLevelPermissions
41
+ ]
42
+ });
43
+ export { CmsWorkflowStateFilter };
44
+
45
+ //# sourceMappingURL=CmsWorkflowStateFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js","sources":["../../../../src/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.ts"],"sourcesContent":["import { FolderLevelPermissions } from \"@webiny/api-aco/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"@webiny/shared-aco/constants.js\";\nimport { WorkflowStateFilter } from \"@webiny/api-workflows/features/workflowState/ListWorkflowStates/index.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport type { WorkflowState } from \"@webiny/api-workflows/domain/workflowState/WorkflowState.js\";\n\nclass CmsWorkflowStateFilterImpl implements WorkflowStateFilter.Interface {\n constructor(\n private flp: FolderLevelPermissions.Interface,\n private decoratee: WorkflowStateFilter.Interface\n ) {}\n\n async filter(items: WorkflowState[]): Promise<WorkflowState[]> {\n const filtered = await this.decoratee.filter(items);\n\n if (!this.flp.canUseFolderLevelPermissions()) {\n return filtered;\n }\n\n const cmsItems = filtered.filter(item => getModelIdFromAppName(item.app) !== null);\n if (cmsItems.length === 0) {\n return filtered;\n }\n\n const folderIds = new Set<string>();\n for (const item of cmsItems) {\n const folderId = item.targetContext?.folderId;\n if (folderId && folderId !== ROOT_FOLDER) {\n folderIds.add(folderId);\n }\n }\n\n const folderAccess = new Map<string, boolean>();\n\n for (const folderId of folderIds) {\n const permissions = await this.flp.getFolderLevelPermissions(folderId);\n const canAccess = await this.flp.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n folderAccess.set(folderId, canAccess);\n }\n\n return filtered.filter(item => {\n if (getModelIdFromAppName(item.app) === null) {\n return true;\n }\n\n const folderId = item.targetContext?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return true;\n }\n\n return folderAccess.get(folderId) === true;\n });\n }\n}\n\nexport const CmsWorkflowStateFilter = WorkflowStateFilter.createDecorator({\n decorator: CmsWorkflowStateFilterImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["CmsWorkflowStateFilterImpl","flp","decoratee","items","filtered","cmsItems","item","getModelIdFromAppName","folderIds","Set","folderId","ROOT_FOLDER","folderAccess","Map","permissions","canAccess","CmsWorkflowStateFilter","WorkflowStateFilter","FolderLevelPermissions"],"mappings":";;;;AAMA,MAAMA;IACF,YACYC,GAAqC,EACrCC,SAAwC,CAClD;aAFUD,GAAG,GAAHA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,OAAOC,KAAsB,EAA4B;QAC3D,MAAMC,WAAW,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAACD;QAE7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,IACtC,OAAOC;QAGX,MAAMC,WAAWD,SAAS,MAAM,CAACE,CAAAA,OAAQC,AAAoC,SAApCA,sBAAsBD,KAAK,GAAG;QACvE,IAAID,AAAoB,MAApBA,SAAS,MAAM,EACf,OAAOD;QAGX,MAAMI,YAAY,IAAIC;QACtB,KAAK,MAAMH,QAAQD,SAAU;YACzB,MAAMK,WAAWJ,KAAK,aAAa,EAAE;YACrC,IAAII,YAAYA,aAAaC,aACzBH,UAAU,GAAG,CAACE;QAEtB;QAEA,MAAME,eAAe,IAAIC;QAEzB,KAAK,MAAMH,YAAYF,UAAW;YAC9B,MAAMM,cAAc,MAAM,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAACJ;YAC7D,MAAMK,YAAY,MAAM,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC;gBACpDD;gBACA,KAAK;YACT;YACAF,aAAa,GAAG,CAACF,UAAUK;QAC/B;QAEA,OAAOX,SAAS,MAAM,CAACE,CAAAA;YACnB,IAAIC,AAAoC,SAApCA,sBAAsBD,KAAK,GAAG,GAC9B,OAAO;YAGX,MAAMI,WAAWJ,KAAK,aAAa,EAAE;YACrC,IAAI,CAACI,YAAYA,aAAaC,aAC1B,OAAO;YAGX,OAAOC,AAA+B,SAA/BA,aAAa,GAAG,CAACF;QAC5B;IACJ;AACJ;AAEO,MAAMM,yBAAyBC,oBAAoB,eAAe,CAAC;IACtE,WAAWjB;IACX,cAAc;QAACkB;KAAuB;AAC1C"}
@@ -0,0 +1,11 @@
1
+ import { BaseError } from "@webiny/feature/api";
2
+ export declare class EntryMoveBlockedByWorkflowStateError extends BaseError<{
3
+ app: string;
4
+ entryId: string;
5
+ }> {
6
+ readonly code: "Workflows/Entry/MoveBlockedByActiveState";
7
+ constructor(data: {
8
+ app: string;
9
+ entryId: string;
10
+ });
11
+ }
@@ -0,0 +1,12 @@
1
+ import { BaseError } from "@webiny/feature/api";
2
+ class EntryMoveBlockedByWorkflowStateError extends BaseError {
3
+ constructor(data){
4
+ super({
5
+ message: "Cannot move entry because it has an active content review. Cancel or complete the review first.",
6
+ data
7
+ }), this.code = "Workflows/Entry/MoveBlockedByActiveState";
8
+ }
9
+ }
10
+ export { EntryMoveBlockedByWorkflowStateError };
11
+
12
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntryWorkflows/errors.js","sources":["../../../src/features/EntryWorkflows/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class EntryMoveBlockedByWorkflowStateError extends BaseError<{\n app: string;\n entryId: string;\n}> {\n override readonly code = \"Workflows/Entry/MoveBlockedByActiveState\" as const;\n\n constructor(data: { app: string; entryId: string }) {\n super({\n message:\n \"Cannot move entry because it has an active content review. Cancel or complete the review first.\",\n data\n });\n }\n}\n"],"names":["EntryMoveBlockedByWorkflowStateError","BaseError","data"],"mappings":";AAEO,MAAMA,6CAA6CC;IAMtD,YAAYC,IAAsC,CAAE;QAChD,KAAK,CAAC;YACF,SACI;YACJA;QACJ,SAPc,IAAI,GAAG;IAQzB;AACJ"}
@@ -1 +1,4 @@
1
- export declare const EntryWorkflowsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const EntryWorkflowsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -5,16 +5,25 @@ import { ValidateWorkflowStateOnEntryBeforePublish } from "./handlers/ValidateWo
5
5
  import { UpdateEntryOnWorkflowStateAfterCreate } from "./handlers/UpdateEntryOnWorkflowStateAfterCreate.js";
6
6
  import { UpdateEntryOnWorkflowStateAfterUpdate } from "./handlers/UpdateEntryOnWorkflowStateAfterUpdate.js";
7
7
  import { ClearEntryStateOnWorkflowStateAfterDelete } from "./handlers/ClearEntryStateOnWorkflowStateAfterDelete.js";
8
- export const EntryWorkflowsFeature = createFeature({
9
- name: "EntryWorkflows",
10
- register(container) {
11
- container.register(DeleteWorkflowsOnModelAfterDelete);
12
- container.register(DeleteWorkflowStateOnEntryAfterDelete);
13
- container.register(ValidateWorkflowStateOnEntryBeforePublish);
14
- container.register(UpdateEntryOnWorkflowStateAfterCreate);
15
- container.register(UpdateEntryOnWorkflowStateAfterUpdate);
16
- container.register(ClearEntryStateOnWorkflowStateAfterDelete);
17
- }
8
+ import { ClearEntryStateOnWorkflowStateCancel } from "./handlers/ClearEntryStateOnWorkflowStateCancel.js";
9
+ import { BlockMoveOnActiveWorkflowState } from "./handlers/BlockMoveOnActiveWorkflowState.js";
10
+ import { CmsWorkflowStateContextProvider } from "./decorators/CmsWorkflowStateContextProvider.js";
11
+ import { CmsWorkflowStateFilter } from "./decorators/CmsWorkflowStateFilter.js";
12
+ const EntryWorkflowsFeature = createFeature({
13
+ name: "EntryWorkflows",
14
+ register (container) {
15
+ container.register(DeleteWorkflowsOnModelAfterDelete);
16
+ container.register(DeleteWorkflowStateOnEntryAfterDelete);
17
+ container.register(ValidateWorkflowStateOnEntryBeforePublish);
18
+ container.register(UpdateEntryOnWorkflowStateAfterCreate);
19
+ container.register(UpdateEntryOnWorkflowStateAfterUpdate);
20
+ container.register(ClearEntryStateOnWorkflowStateAfterDelete);
21
+ container.register(ClearEntryStateOnWorkflowStateCancel);
22
+ container.register(BlockMoveOnActiveWorkflowState);
23
+ container.registerDecorator(CmsWorkflowStateContextProvider);
24
+ container.registerDecorator(CmsWorkflowStateFilter);
25
+ }
18
26
  });
27
+ export { EntryWorkflowsFeature };
19
28
 
20
29
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","DeleteWorkflowsOnModelAfterDelete","DeleteWorkflowStateOnEntryAfterDelete","ValidateWorkflowStateOnEntryBeforePublish","UpdateEntryOnWorkflowStateAfterCreate","UpdateEntryOnWorkflowStateAfterUpdate","ClearEntryStateOnWorkflowStateAfterDelete","EntryWorkflowsFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteWorkflowsOnModelAfterDelete } from \"./handlers/DeleteWorkflowsOnModelAfterDelete.js\";\nimport { DeleteWorkflowStateOnEntryAfterDelete } from \"./handlers/DeleteWorkflowStateOnEntryAfterDelete.js\";\nimport { ValidateWorkflowStateOnEntryBeforePublish } from \"./handlers/ValidateWorkflowStateOnEntryBeforePublish.js\";\nimport { UpdateEntryOnWorkflowStateAfterCreate } from \"./handlers/UpdateEntryOnWorkflowStateAfterCreate.js\";\nimport { UpdateEntryOnWorkflowStateAfterUpdate } from \"./handlers/UpdateEntryOnWorkflowStateAfterUpdate.js\";\nimport { ClearEntryStateOnWorkflowStateAfterDelete } from \"./handlers/ClearEntryStateOnWorkflowStateAfterDelete.js\";\n\nexport const EntryWorkflowsFeature = createFeature({\n name: \"EntryWorkflows\",\n register(container) {\n container.register(DeleteWorkflowsOnModelAfterDelete);\n container.register(DeleteWorkflowStateOnEntryAfterDelete);\n container.register(ValidateWorkflowStateOnEntryBeforePublish);\n container.register(UpdateEntryOnWorkflowStateAfterCreate);\n container.register(UpdateEntryOnWorkflowStateAfterUpdate);\n container.register(ClearEntryStateOnWorkflowStateAfterDelete);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iCAAiC;AAC1C,SAASC,qCAAqC;AAC9C,SAASC,yCAAyC;AAClD,SAASC,qCAAqC;AAC9C,SAASC,qCAAqC;AAC9C,SAASC,yCAAyC;AAElD,OAAO,MAAMC,qBAAqB,GAAGP,aAAa,CAAC;EAC/CQ,IAAI,EAAE,gBAAgB;EACtBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACR,iCAAiC,CAAC;IACrDS,SAAS,CAACD,QAAQ,CAACP,qCAAqC,CAAC;IACzDQ,SAAS,CAACD,QAAQ,CAACN,yCAAyC,CAAC;IAC7DO,SAAS,CAACD,QAAQ,CAACL,qCAAqC,CAAC;IACzDM,SAAS,CAACD,QAAQ,CAACJ,qCAAqC,CAAC;IACzDK,SAAS,CAACD,QAAQ,CAACH,yCAAyC,CAAC;EACjE;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/EntryWorkflows/feature.js","sources":["../../../src/features/EntryWorkflows/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteWorkflowsOnModelAfterDelete } from \"./handlers/DeleteWorkflowsOnModelAfterDelete.js\";\nimport { DeleteWorkflowStateOnEntryAfterDelete } from \"./handlers/DeleteWorkflowStateOnEntryAfterDelete.js\";\nimport { ValidateWorkflowStateOnEntryBeforePublish } from \"./handlers/ValidateWorkflowStateOnEntryBeforePublish.js\";\nimport { UpdateEntryOnWorkflowStateAfterCreate } from \"./handlers/UpdateEntryOnWorkflowStateAfterCreate.js\";\nimport { UpdateEntryOnWorkflowStateAfterUpdate } from \"./handlers/UpdateEntryOnWorkflowStateAfterUpdate.js\";\nimport { ClearEntryStateOnWorkflowStateAfterDelete } from \"./handlers/ClearEntryStateOnWorkflowStateAfterDelete.js\";\nimport { ClearEntryStateOnWorkflowStateCancel } from \"./handlers/ClearEntryStateOnWorkflowStateCancel.js\";\nimport { BlockMoveOnActiveWorkflowState } from \"./handlers/BlockMoveOnActiveWorkflowState.js\";\nimport { CmsWorkflowStateContextProvider } from \"./decorators/CmsWorkflowStateContextProvider.js\";\nimport { CmsWorkflowStateFilter } from \"./decorators/CmsWorkflowStateFilter.js\";\n\nexport const EntryWorkflowsFeature = createFeature({\n name: \"EntryWorkflows\",\n register(container) {\n container.register(DeleteWorkflowsOnModelAfterDelete);\n container.register(DeleteWorkflowStateOnEntryAfterDelete);\n container.register(ValidateWorkflowStateOnEntryBeforePublish);\n container.register(UpdateEntryOnWorkflowStateAfterCreate);\n container.register(UpdateEntryOnWorkflowStateAfterUpdate);\n container.register(ClearEntryStateOnWorkflowStateAfterDelete);\n container.register(ClearEntryStateOnWorkflowStateCancel);\n container.register(BlockMoveOnActiveWorkflowState);\n container.registerDecorator(CmsWorkflowStateContextProvider);\n container.registerDecorator(CmsWorkflowStateFilter);\n }\n});\n"],"names":["EntryWorkflowsFeature","createFeature","container","DeleteWorkflowsOnModelAfterDelete","DeleteWorkflowStateOnEntryAfterDelete","ValidateWorkflowStateOnEntryBeforePublish","UpdateEntryOnWorkflowStateAfterCreate","UpdateEntryOnWorkflowStateAfterUpdate","ClearEntryStateOnWorkflowStateAfterDelete","ClearEntryStateOnWorkflowStateCancel","BlockMoveOnActiveWorkflowState","CmsWorkflowStateContextProvider","CmsWorkflowStateFilter"],"mappings":";;;;;;;;;;;AAYO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QACnBR,UAAU,iBAAiB,CAACS;QAC5BT,UAAU,iBAAiB,CAACU;IAChC;AACJ"}
@@ -0,0 +1,11 @@
1
+ import { EntryBeforeMoveEventHandler } from "@webiny/api-headless-cms/features/contentEntry/MoveEntry/index.js";
2
+ import { GetTargetWorkflowStateUseCase } from "@webiny/api-workflows/features/workflowState/GetTargetWorkflowState/index.js";
3
+ declare class BlockMoveOnActiveWorkflowStateImpl implements EntryBeforeMoveEventHandler.Interface {
4
+ private getTargetState;
5
+ constructor(getTargetState: GetTargetWorkflowStateUseCase.Interface);
6
+ handle(event: EntryBeforeMoveEventHandler.Event): Promise<void>;
7
+ }
8
+ export declare const BlockMoveOnActiveWorkflowState: typeof BlockMoveOnActiveWorkflowStateImpl & {
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,37 @@
1
+ import { EntryBeforeMoveEventHandler } from "@webiny/api-headless-cms/features/contentEntry/MoveEntry/index.js";
2
+ import { createWorkflowAppName } from "../../../utils/appName.js";
3
+ import { isModelAllowed } from "../../../utils/modelAllowed.js";
4
+ import { GetTargetWorkflowStateUseCase } from "@webiny/api-workflows/features/workflowState/GetTargetWorkflowState/index.js";
5
+ import { EntryMoveBlockedByWorkflowStateError } from "../errors.js";
6
+ class BlockMoveOnActiveWorkflowStateImpl {
7
+ constructor(getTargetState){
8
+ this.getTargetState = getTargetState;
9
+ }
10
+ async handle(event) {
11
+ const { model, entry } = event.payload;
12
+ if (!isModelAllowed(model)) return;
13
+ const app = createWorkflowAppName({
14
+ model
15
+ });
16
+ const stateResult = await this.getTargetState.execute({
17
+ app,
18
+ targetRevisionId: entry.id
19
+ });
20
+ if (stateResult.isFail()) return;
21
+ const state = stateResult.value;
22
+ if (state.done) return;
23
+ throw new EntryMoveBlockedByWorkflowStateError({
24
+ app,
25
+ entryId: entry.id
26
+ });
27
+ }
28
+ }
29
+ const BlockMoveOnActiveWorkflowState = EntryBeforeMoveEventHandler.createImplementation({
30
+ implementation: BlockMoveOnActiveWorkflowStateImpl,
31
+ dependencies: [
32
+ GetTargetWorkflowStateUseCase
33
+ ]
34
+ });
35
+ export { BlockMoveOnActiveWorkflowState };
36
+
37
+ //# sourceMappingURL=BlockMoveOnActiveWorkflowState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js","sources":["../../../../src/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.ts"],"sourcesContent":["import { EntryBeforeMoveEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/MoveEntry/index.js\";\nimport { createWorkflowAppName } from \"~/utils/appName.js\";\nimport { isModelAllowed } from \"~/utils/modelAllowed.js\";\nimport { GetTargetWorkflowStateUseCase } from \"@webiny/api-workflows/features/workflowState/GetTargetWorkflowState/index.js\";\nimport { EntryMoveBlockedByWorkflowStateError } from \"../errors.js\";\n\nclass BlockMoveOnActiveWorkflowStateImpl implements EntryBeforeMoveEventHandler.Interface {\n constructor(private getTargetState: GetTargetWorkflowStateUseCase.Interface) {}\n\n async handle(event: EntryBeforeMoveEventHandler.Event): Promise<void> {\n const { model, entry } = event.payload;\n\n if (!isModelAllowed(model)) {\n return;\n }\n\n const app = createWorkflowAppName({ model });\n\n const stateResult = await this.getTargetState.execute({\n app,\n targetRevisionId: entry.id\n });\n\n if (stateResult.isFail()) {\n return;\n }\n\n const state = stateResult.value;\n\n if (state.done) {\n return;\n }\n\n throw new EntryMoveBlockedByWorkflowStateError({\n app,\n entryId: entry.id\n });\n }\n}\n\nexport const BlockMoveOnActiveWorkflowState = EntryBeforeMoveEventHandler.createImplementation({\n implementation: BlockMoveOnActiveWorkflowStateImpl,\n dependencies: [GetTargetWorkflowStateUseCase]\n});\n"],"names":["BlockMoveOnActiveWorkflowStateImpl","getTargetState","event","model","entry","isModelAllowed","app","createWorkflowAppName","stateResult","state","EntryMoveBlockedByWorkflowStateError","BlockMoveOnActiveWorkflowState","EntryBeforeMoveEventHandler","GetTargetWorkflowStateUseCase"],"mappings":";;;;;AAMA,MAAMA;IACF,YAAoBC,cAAuD,CAAE;aAAzDA,cAAc,GAAdA;IAA0D;IAE9E,MAAM,OAAOC,KAAwC,EAAiB;QAClE,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGF,MAAM,OAAO;QAEtC,IAAI,CAACG,eAAeF,QAChB;QAGJ,MAAMG,MAAMC,sBAAsB;YAAEJ;QAAM;QAE1C,MAAMK,cAAc,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAClDF;YACA,kBAAkBF,MAAM,EAAE;QAC9B;QAEA,IAAII,YAAY,MAAM,IAClB;QAGJ,MAAMC,QAAQD,YAAY,KAAK;QAE/B,IAAIC,MAAM,IAAI,EACV;QAGJ,MAAM,IAAIC,qCAAqC;YAC3CJ;YACA,SAASF,MAAM,EAAE;QACrB;IACJ;AACJ;AAEO,MAAMO,iCAAiCC,4BAA4B,oBAAoB,CAAC;IAC3F,gBAAgBZ;IAChB,cAAc;QAACa;KAA8B;AACjD"}
@@ -8,6 +8,6 @@ declare class ClearEntryStateOnWorkflowStateAfterDeleteImpl implements WorkflowS
8
8
  handle(event: WorkflowStateAfterDeleteHandler.Event): Promise<void>;
9
9
  }
10
10
  export declare const ClearEntryStateOnWorkflowStateAfterDelete: typeof ClearEntryStateOnWorkflowStateAfterDeleteImpl & {
11
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<import("@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/events.js").WorkflowStateAfterDeleteEvent>>;
11
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/events.js").WorkflowStateAfterDeleteEvent>>;
12
12
  };
13
13
  export {};
@@ -3,31 +3,33 @@ import { getModelIdFromAppName } from "../../../utils/appName.js";
3
3
  import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
4
4
  import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
5
5
  class ClearEntryStateOnWorkflowStateAfterDeleteImpl {
6
- constructor(getModel, updateEntry) {
7
- this.getModel = getModel;
8
- this.updateEntry = updateEntry;
9
- }
10
- async handle(event) {
11
- const {
12
- state
13
- } = event.payload;
14
- const modelId = getModelIdFromAppName(state.app);
15
- if (!modelId) {
16
- return;
6
+ constructor(getModel, updateEntry){
7
+ this.getModel = getModel;
8
+ this.updateEntry = updateEntry;
17
9
  }
18
- const modelResult = await this.getModel.execute(modelId);
19
- if (modelResult.isFail()) {
20
- return;
10
+ async handle(event) {
11
+ const { state } = event.payload;
12
+ const modelId = getModelIdFromAppName(state.app);
13
+ if (!modelId) return;
14
+ const modelResult = await this.getModel.execute(modelId);
15
+ if (modelResult.isFail()) return;
16
+ const model = modelResult.value;
17
+ await this.updateEntry.execute(model, state.targetRevisionId, {
18
+ system: {
19
+ workflow: null
20
+ }
21
+ }, {
22
+ skipValidation: true
23
+ });
21
24
  }
22
- const model = modelResult.value;
23
- await this.updateEntry.execute(model, state.targetRevisionId, {
24
- state: undefined
25
- });
26
- }
27
25
  }
28
- export const ClearEntryStateOnWorkflowStateAfterDelete = WorkflowStateAfterDeleteHandler.createImplementation({
29
- implementation: ClearEntryStateOnWorkflowStateAfterDeleteImpl,
30
- dependencies: [GetModelUseCase, UpdateEntryUseCase]
26
+ const ClearEntryStateOnWorkflowStateAfterDelete = WorkflowStateAfterDeleteHandler.createImplementation({
27
+ implementation: ClearEntryStateOnWorkflowStateAfterDeleteImpl,
28
+ dependencies: [
29
+ GetModelUseCase,
30
+ UpdateEntryUseCase
31
+ ]
31
32
  });
33
+ export { ClearEntryStateOnWorkflowStateAfterDelete };
32
34
 
33
35
  //# sourceMappingURL=ClearEntryStateOnWorkflowStateAfterDelete.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["WorkflowStateAfterDeleteHandler","getModelIdFromAppName","UpdateEntryUseCase","GetModelUseCase","ClearEntryStateOnWorkflowStateAfterDeleteImpl","constructor","getModel","updateEntry","handle","event","state","payload","modelId","app","modelResult","execute","isFail","model","value","targetRevisionId","undefined","ClearEntryStateOnWorkflowStateAfterDelete","createImplementation","implementation","dependencies"],"sources":["ClearEntryStateOnWorkflowStateAfterDelete.ts"],"sourcesContent":["import { WorkflowStateAfterDeleteHandler } from \"@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/events.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\n\nclass ClearEntryStateOnWorkflowStateAfterDeleteImpl\n implements WorkflowStateAfterDeleteHandler.Interface\n{\n constructor(\n private getModel: GetModelUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface\n ) {}\n\n async handle(event: WorkflowStateAfterDeleteHandler.Event): Promise<void> {\n const { state } = event.payload;\n\n const modelId = getModelIdFromAppName(state.app);\n if (!modelId) {\n return;\n }\n\n const modelResult = await this.getModel.execute(modelId);\n if (modelResult.isFail()) {\n return;\n }\n\n const model = modelResult.value;\n await this.updateEntry.execute(model, state.targetRevisionId, {\n state: undefined\n });\n }\n}\n\nexport const ClearEntryStateOnWorkflowStateAfterDelete =\n WorkflowStateAfterDeleteHandler.createImplementation({\n implementation: ClearEntryStateOnWorkflowStateAfterDeleteImpl,\n dependencies: [GetModelUseCase, UpdateEntryUseCase]\n });\n"],"mappings":"AAAA,SAASA,+BAA+B,QAAQ,kFAAkF;AAClI,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB,QAAQ,qEAAqE;AACxG,SAASC,eAAe,QAAQ,kEAAkE;AAElG,MAAMC,6CAA6C,CAEnD;EACIC,WAAWA,CACCC,QAAmC,EACnCC,WAAyC,EACnD;IAAA,KAFUD,QAAmC,GAAnCA,QAAmC;IAAA,KACnCC,WAAyC,GAAzCA,WAAyC;EAClD;EAEH,MAAMC,MAAMA,CAACC,KAA4C,EAAiB;IACtE,MAAM;MAAEC;IAAM,CAAC,GAAGD,KAAK,CAACE,OAAO;IAE/B,MAAMC,OAAO,GAAGX,qBAAqB,CAACS,KAAK,CAACG,GAAG,CAAC;IAChD,IAAI,CAACD,OAAO,EAAE;MACV;IACJ;IAEA,MAAME,WAAW,GAAG,MAAM,IAAI,CAACR,QAAQ,CAACS,OAAO,CAACH,OAAO,CAAC;IACxD,IAAIE,WAAW,CAACE,MAAM,CAAC,CAAC,EAAE;MACtB;IACJ;IAEA,MAAMC,KAAK,GAAGH,WAAW,CAACI,KAAK;IAC/B,MAAM,IAAI,CAACX,WAAW,CAACQ,OAAO,CAACE,KAAK,EAAEP,KAAK,CAACS,gBAAgB,EAAE;MAC1DT,KAAK,EAAEU;IACX,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMC,yCAAyC,GAClDrB,+BAA+B,CAACsB,oBAAoB,CAAC;EACjDC,cAAc,EAAEnB,6CAA6C;EAC7DoB,YAAY,EAAE,CAACrB,eAAe,EAAED,kBAAkB;AACtD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js","sources":["../../../../src/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.ts"],"sourcesContent":["import { WorkflowStateAfterDeleteHandler } from \"@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/events.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\n\nclass ClearEntryStateOnWorkflowStateAfterDeleteImpl\n implements WorkflowStateAfterDeleteHandler.Interface\n{\n constructor(\n private getModel: GetModelUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface\n ) {}\n\n async handle(event: WorkflowStateAfterDeleteHandler.Event): Promise<void> {\n const { state } = event.payload;\n\n const modelId = getModelIdFromAppName(state.app);\n if (!modelId) {\n return;\n }\n\n const modelResult = await this.getModel.execute(modelId);\n if (modelResult.isFail()) {\n return;\n }\n\n const model = modelResult.value;\n await this.updateEntry.execute(\n model,\n state.targetRevisionId,\n { system: { workflow: null } },\n { skipValidation: true }\n );\n }\n}\n\nexport const ClearEntryStateOnWorkflowStateAfterDelete =\n WorkflowStateAfterDeleteHandler.createImplementation({\n implementation: ClearEntryStateOnWorkflowStateAfterDeleteImpl,\n dependencies: [GetModelUseCase, UpdateEntryUseCase]\n });\n"],"names":["ClearEntryStateOnWorkflowStateAfterDeleteImpl","getModel","updateEntry","event","state","modelId","getModelIdFromAppName","modelResult","model","ClearEntryStateOnWorkflowStateAfterDelete","WorkflowStateAfterDeleteHandler","GetModelUseCase","UpdateEntryUseCase"],"mappings":";;;;AAKA,MAAMA;IAGF,YACYC,QAAmC,EACnCC,WAAyC,CACnD;aAFUD,QAAQ,GAARA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,OAAOC,KAA4C,EAAiB;QACtE,MAAM,EAAEC,KAAK,EAAE,GAAGD,MAAM,OAAO;QAE/B,MAAME,UAAUC,sBAAsBF,MAAM,GAAG;QAC/C,IAAI,CAACC,SACD;QAGJ,MAAME,cAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACF;QAChD,IAAIE,YAAY,MAAM,IAClB;QAGJ,MAAMC,QAAQD,YAAY,KAAK;QAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAC1BC,OACAJ,MAAM,gBAAgB,EACtB;YAAE,QAAQ;gBAAE,UAAU;YAAK;QAAE,GAC7B;YAAE,gBAAgB;QAAK;IAE/B;AACJ;AAEO,MAAMK,4CACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBV;IAChB,cAAc;QAACW;QAAiBC;KAAmB;AACvD"}
@@ -0,0 +1,13 @@
1
+ import { WorkflowStateCancelHandler } from "@webiny/api-workflows/features/workflowState/CancelWorkflowState/events.js";
2
+ import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
3
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
4
+ declare class ClearEntryStateOnWorkflowStateCancelImpl implements WorkflowStateCancelHandler.Interface {
5
+ private getModel;
6
+ private updateEntry;
7
+ constructor(getModel: GetModelUseCase.Interface, updateEntry: UpdateEntryUseCase.Interface);
8
+ handle(event: WorkflowStateCancelHandler.Event): Promise<void>;
9
+ }
10
+ export declare const ClearEntryStateOnWorkflowStateCancel: typeof ClearEntryStateOnWorkflowStateCancelImpl & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-workflows/features/workflowState/CancelWorkflowState/events.js").WorkflowStateCancelEvent>>;
12
+ };
13
+ export {};
@@ -0,0 +1,35 @@
1
+ import { WorkflowStateCancelHandler } from "@webiny/api-workflows/features/workflowState/CancelWorkflowState/events.js";
2
+ import { getModelIdFromAppName } from "../../../utils/appName.js";
3
+ import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
4
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
5
+ class ClearEntryStateOnWorkflowStateCancelImpl {
6
+ constructor(getModel, updateEntry){
7
+ this.getModel = getModel;
8
+ this.updateEntry = updateEntry;
9
+ }
10
+ async handle(event) {
11
+ const { state } = event.payload;
12
+ const modelId = getModelIdFromAppName(state.app);
13
+ if (!modelId) return;
14
+ const modelResult = await this.getModel.execute(modelId);
15
+ if (modelResult.isFail()) return;
16
+ const model = modelResult.value;
17
+ await this.updateEntry.execute(model, state.targetRevisionId, {
18
+ system: {
19
+ workflow: null
20
+ }
21
+ }, {
22
+ skipValidation: true
23
+ });
24
+ }
25
+ }
26
+ const ClearEntryStateOnWorkflowStateCancel = WorkflowStateCancelHandler.createImplementation({
27
+ implementation: ClearEntryStateOnWorkflowStateCancelImpl,
28
+ dependencies: [
29
+ GetModelUseCase,
30
+ UpdateEntryUseCase
31
+ ]
32
+ });
33
+ export { ClearEntryStateOnWorkflowStateCancel };
34
+
35
+ //# sourceMappingURL=ClearEntryStateOnWorkflowStateCancel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js","sources":["../../../../src/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.ts"],"sourcesContent":["import { WorkflowStateCancelHandler } from \"@webiny/api-workflows/features/workflowState/CancelWorkflowState/events.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\n\nclass ClearEntryStateOnWorkflowStateCancelImpl implements WorkflowStateCancelHandler.Interface {\n constructor(\n private getModel: GetModelUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface\n ) {}\n\n async handle(event: WorkflowStateCancelHandler.Event): Promise<void> {\n const { state } = event.payload;\n\n const modelId = getModelIdFromAppName(state.app);\n if (!modelId) {\n return;\n }\n\n const modelResult = await this.getModel.execute(modelId);\n if (modelResult.isFail()) {\n return;\n }\n\n const model = modelResult.value;\n await this.updateEntry.execute(\n model,\n state.targetRevisionId,\n { system: { workflow: null } },\n { skipValidation: true }\n );\n }\n}\n\nexport const ClearEntryStateOnWorkflowStateCancel = WorkflowStateCancelHandler.createImplementation(\n {\n implementation: ClearEntryStateOnWorkflowStateCancelImpl,\n dependencies: [GetModelUseCase, UpdateEntryUseCase]\n }\n);\n"],"names":["ClearEntryStateOnWorkflowStateCancelImpl","getModel","updateEntry","event","state","modelId","getModelIdFromAppName","modelResult","model","ClearEntryStateOnWorkflowStateCancel","WorkflowStateCancelHandler","GetModelUseCase","UpdateEntryUseCase"],"mappings":";;;;AAKA,MAAMA;IACF,YACYC,QAAmC,EACnCC,WAAyC,CACnD;aAFUD,QAAQ,GAARA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,OAAOC,KAAuC,EAAiB;QACjE,MAAM,EAAEC,KAAK,EAAE,GAAGD,MAAM,OAAO;QAE/B,MAAME,UAAUC,sBAAsBF,MAAM,GAAG;QAC/C,IAAI,CAACC,SACD;QAGJ,MAAME,cAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACF;QAChD,IAAIE,YAAY,MAAM,IAClB;QAGJ,MAAMC,QAAQD,YAAY,KAAK;QAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAC1BC,OACAJ,MAAM,gBAAgB,EACtB;YAAE,QAAQ;gBAAE,UAAU;YAAK;QAAE,GAC7B;YAAE,gBAAgB;QAAK;IAE/B;AACJ;AAEO,MAAMK,uCAAuCC,2BAA2B,oBAAoB,CAC/F;IACI,gBAAgBV;IAChB,cAAc;QAACW;QAAiBC;KAAmB;AACvD"}
@@ -6,6 +6,6 @@ declare class DeleteWorkflowStateOnEntryAfterDeleteImpl implements EntryAfterDel
6
6
  handle(event: EntryAfterDeleteEventHandler.Event): Promise<void>;
7
7
  }
8
8
  export declare const DeleteWorkflowStateOnEntryAfterDelete: typeof DeleteWorkflowStateOnEntryAfterDeleteImpl & {
9
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<import("@webiny/api-headless-cms/features/contentEntry/DeleteEntry/events.js").EntryAfterDeleteEvent>>;
9
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-headless-cms/features/contentEntry/DeleteEntry/events.js").EntryAfterDeleteEvent>>;
10
10
  };
11
11
  export {};
@@ -3,27 +3,24 @@ import { createWorkflowAppName } from "../../../utils/appName.js";
3
3
  import { isModelAllowed } from "../../../utils/modelAllowed.js";
4
4
  import { DeleteTargetWorkflowStateUseCase } from "@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/index.js";
5
5
  class DeleteWorkflowStateOnEntryAfterDeleteImpl {
6
- constructor(deleteTargetState) {
7
- this.deleteTargetState = deleteTargetState;
8
- }
9
- async handle(event) {
10
- const {
11
- model,
12
- entry,
13
- permanent
14
- } = event.payload;
15
- if (!isModelAllowed(model) || !permanent) {
16
- return;
6
+ constructor(deleteTargetState){
7
+ this.deleteTargetState = deleteTargetState;
8
+ }
9
+ async handle(event) {
10
+ const { model, entry, permanent } = event.payload;
11
+ if (!isModelAllowed(model) || !permanent) return;
12
+ const app = createWorkflowAppName({
13
+ model
14
+ });
15
+ await this.deleteTargetState.execute(app, entry.id);
17
16
  }
18
- const app = createWorkflowAppName({
19
- model
20
- });
21
- await this.deleteTargetState.execute(app, entry.id);
22
- }
23
17
  }
24
- export const DeleteWorkflowStateOnEntryAfterDelete = EntryAfterDeleteEventHandler.createImplementation({
25
- implementation: DeleteWorkflowStateOnEntryAfterDeleteImpl,
26
- dependencies: [DeleteTargetWorkflowStateUseCase]
18
+ const DeleteWorkflowStateOnEntryAfterDelete = EntryAfterDeleteEventHandler.createImplementation({
19
+ implementation: DeleteWorkflowStateOnEntryAfterDeleteImpl,
20
+ dependencies: [
21
+ DeleteTargetWorkflowStateUseCase
22
+ ]
27
23
  });
24
+ export { DeleteWorkflowStateOnEntryAfterDelete };
28
25
 
29
26
  //# sourceMappingURL=DeleteWorkflowStateOnEntryAfterDelete.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["EntryAfterDeleteEventHandler","createWorkflowAppName","isModelAllowed","DeleteTargetWorkflowStateUseCase","DeleteWorkflowStateOnEntryAfterDeleteImpl","constructor","deleteTargetState","handle","event","model","entry","permanent","payload","app","execute","id","DeleteWorkflowStateOnEntryAfterDelete","createImplementation","implementation","dependencies"],"sources":["DeleteWorkflowStateOnEntryAfterDelete.ts"],"sourcesContent":["import { EntryAfterDeleteEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/events.js\";\nimport { createWorkflowAppName } from \"~/utils/appName.js\";\nimport { isModelAllowed } from \"~/utils/modelAllowed.js\";\nimport { DeleteTargetWorkflowStateUseCase } from \"@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/index.js\";\n\nclass DeleteWorkflowStateOnEntryAfterDeleteImpl implements EntryAfterDeleteEventHandler.Interface {\n constructor(private deleteTargetState: DeleteTargetWorkflowStateUseCase.Interface) {}\n\n async handle(event: EntryAfterDeleteEventHandler.Event): Promise<void> {\n const { model, entry, permanent } = event.payload;\n\n if (!isModelAllowed(model) || !permanent) {\n return;\n }\n\n const app = createWorkflowAppName({ model });\n await this.deleteTargetState.execute(app, entry.id);\n }\n}\n\nexport const DeleteWorkflowStateOnEntryAfterDelete =\n EntryAfterDeleteEventHandler.createImplementation({\n implementation: DeleteWorkflowStateOnEntryAfterDeleteImpl,\n dependencies: [DeleteTargetWorkflowStateUseCase]\n });\n"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,sEAAsE;AACnH,SAASC,qBAAqB;AAC9B,SAASC,cAAc;AACvB,SAASC,gCAAgC,QAAQ,iFAAiF;AAElI,MAAMC,yCAAyC,CAAmD;EAC9FC,WAAWA,CAASC,iBAA6D,EAAE;IAAA,KAA/DA,iBAA6D,GAA7DA,iBAA6D;EAAG;EAEpF,MAAMC,MAAMA,CAACC,KAAyC,EAAiB;IACnE,MAAM;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAU,CAAC,GAAGH,KAAK,CAACI,OAAO;IAEjD,IAAI,CAACV,cAAc,CAACO,KAAK,CAAC,IAAI,CAACE,SAAS,EAAE;MACtC;IACJ;IAEA,MAAME,GAAG,GAAGZ,qBAAqB,CAAC;MAAEQ;IAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,CAACH,iBAAiB,CAACQ,OAAO,CAACD,GAAG,EAAEH,KAAK,CAACK,EAAE,CAAC;EACvD;AACJ;AAEA,OAAO,MAAMC,qCAAqC,GAC9ChB,4BAA4B,CAACiB,oBAAoB,CAAC;EAC9CC,cAAc,EAAEd,yCAAyC;EACzDe,YAAY,EAAE,CAAChB,gCAAgC;AACnD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js","sources":["../../../../src/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.ts"],"sourcesContent":["import { EntryAfterDeleteEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/events.js\";\nimport { createWorkflowAppName } from \"~/utils/appName.js\";\nimport { isModelAllowed } from \"~/utils/modelAllowed.js\";\nimport { DeleteTargetWorkflowStateUseCase } from \"@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/index.js\";\n\nclass DeleteWorkflowStateOnEntryAfterDeleteImpl implements EntryAfterDeleteEventHandler.Interface {\n constructor(private deleteTargetState: DeleteTargetWorkflowStateUseCase.Interface) {}\n\n async handle(event: EntryAfterDeleteEventHandler.Event): Promise<void> {\n const { model, entry, permanent } = event.payload;\n\n if (!isModelAllowed(model) || !permanent) {\n return;\n }\n\n const app = createWorkflowAppName({ model });\n await this.deleteTargetState.execute(app, entry.id);\n }\n}\n\nexport const DeleteWorkflowStateOnEntryAfterDelete =\n EntryAfterDeleteEventHandler.createImplementation({\n implementation: DeleteWorkflowStateOnEntryAfterDeleteImpl,\n dependencies: [DeleteTargetWorkflowStateUseCase]\n });\n"],"names":["DeleteWorkflowStateOnEntryAfterDeleteImpl","deleteTargetState","event","model","entry","permanent","isModelAllowed","app","createWorkflowAppName","DeleteWorkflowStateOnEntryAfterDelete","EntryAfterDeleteEventHandler","DeleteTargetWorkflowStateUseCase"],"mappings":";;;;AAKA,MAAMA;IACF,YAAoBC,iBAA6D,CAAE;aAA/DA,iBAAiB,GAAjBA;IAAgE;IAEpF,MAAM,OAAOC,KAAyC,EAAiB;QACnE,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEC,SAAS,EAAE,GAAGH,MAAM,OAAO;QAEjD,IAAI,CAACI,eAAeH,UAAU,CAACE,WAC3B;QAGJ,MAAME,MAAMC,sBAAsB;YAAEL;QAAM;QAC1C,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAACI,KAAKH,MAAM,EAAE;IACtD;AACJ;AAEO,MAAMK,wCACTC,6BAA6B,oBAAoB,CAAC;IAC9C,gBAAgBV;IAChB,cAAc;QAACW;KAAiC;AACpD"}
@@ -8,6 +8,6 @@ declare class DeleteWorkflowsOnModelAfterDeleteImpl implements ModelAfterDeleteE
8
8
  handle(event: ModelAfterDeleteEventHandler.Event): Promise<void>;
9
9
  }
10
10
  export declare const DeleteWorkflowsOnModelAfterDelete: typeof DeleteWorkflowsOnModelAfterDeleteImpl & {
11
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<import("@webiny/api-headless-cms/features/contentModel/DeleteModel/events.js").ModelAfterDeleteEvent>>;
11
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-headless-cms/features/contentModel/DeleteModel/events.js").ModelAfterDeleteEvent>>;
12
12
  };
13
13
  export {};
@@ -4,42 +4,38 @@ import { DeleteWorkflowUseCase } from "@webiny/api-workflows/features/workflow/D
4
4
  import { createWorkflowAppName } from "../../../utils/appName.js";
5
5
  import { isModelAllowed } from "../../../utils/modelAllowed.js";
6
6
  class DeleteWorkflowsOnModelAfterDeleteImpl {
7
- constructor(listWorkflows, deleteWorkflow) {
8
- this.listWorkflows = listWorkflows;
9
- this.deleteWorkflow = deleteWorkflow;
10
- }
11
- async handle(event) {
12
- const {
13
- model
14
- } = event.payload;
15
- if (!isModelAllowed(model)) {
16
- return;
7
+ constructor(listWorkflows, deleteWorkflow){
8
+ this.listWorkflows = listWorkflows;
9
+ this.deleteWorkflow = deleteWorkflow;
17
10
  }
18
- const app = createWorkflowAppName({
19
- model
20
- });
21
- const result = await this.listWorkflows.execute({
22
- where: {
23
- app
24
- },
25
- limit: 10000
26
- });
27
- const workflows = result.value.items;
28
- for (const workflow of workflows) {
29
- try {
30
- await this.deleteWorkflow.execute({
31
- app: workflow.app,
32
- id: workflow.id
11
+ async handle(event) {
12
+ const { model } = event.payload;
13
+ if (!isModelAllowed(model)) return;
14
+ const app = createWorkflowAppName({
15
+ model
33
16
  });
34
- } catch {
35
- // does not matter
36
- }
17
+ const result = await this.listWorkflows.execute({
18
+ where: {
19
+ app
20
+ },
21
+ limit: 10000
22
+ });
23
+ const workflows = result.value.items;
24
+ for (const workflow of workflows)try {
25
+ await this.deleteWorkflow.execute({
26
+ app: workflow.app,
27
+ id: workflow.id
28
+ });
29
+ } catch {}
37
30
  }
38
- }
39
31
  }
40
- export const DeleteWorkflowsOnModelAfterDelete = ModelAfterDeleteEventHandler.createImplementation({
41
- implementation: DeleteWorkflowsOnModelAfterDeleteImpl,
42
- dependencies: [ListWorkflowsUseCase, DeleteWorkflowUseCase]
32
+ const DeleteWorkflowsOnModelAfterDelete = ModelAfterDeleteEventHandler.createImplementation({
33
+ implementation: DeleteWorkflowsOnModelAfterDeleteImpl,
34
+ dependencies: [
35
+ ListWorkflowsUseCase,
36
+ DeleteWorkflowUseCase
37
+ ]
43
38
  });
39
+ export { DeleteWorkflowsOnModelAfterDelete };
44
40
 
45
41
  //# sourceMappingURL=DeleteWorkflowsOnModelAfterDelete.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ModelAfterDeleteEventHandler","ListWorkflowsUseCase","DeleteWorkflowUseCase","createWorkflowAppName","isModelAllowed","DeleteWorkflowsOnModelAfterDeleteImpl","constructor","listWorkflows","deleteWorkflow","handle","event","model","payload","app","result","execute","where","limit","workflows","value","items","workflow","id","DeleteWorkflowsOnModelAfterDelete","createImplementation","implementation","dependencies"],"sources":["DeleteWorkflowsOnModelAfterDelete.ts"],"sourcesContent":["import { ModelAfterDeleteEventHandler } from \"@webiny/api-headless-cms/features/contentModel/DeleteModel/events.js\";\nimport { ListWorkflowsUseCase } from \"@webiny/api-workflows/features/workflow/ListWorkflows/index.js\";\nimport { DeleteWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js\";\nimport { createWorkflowAppName } from \"~/utils/appName.js\";\nimport { isModelAllowed } from \"~/utils/modelAllowed.js\";\n\nclass DeleteWorkflowsOnModelAfterDeleteImpl implements ModelAfterDeleteEventHandler.Interface {\n constructor(\n private listWorkflows: ListWorkflowsUseCase.Interface,\n private deleteWorkflow: DeleteWorkflowUseCase.Interface\n ) {}\n\n async handle(event: ModelAfterDeleteEventHandler.Event): Promise<void> {\n const { model } = event.payload;\n\n if (!isModelAllowed(model)) {\n return;\n }\n\n const app = createWorkflowAppName({ model });\n const result = await this.listWorkflows.execute({\n where: {\n app\n },\n limit: 10000\n });\n\n const workflows = result.value.items;\n\n for (const workflow of workflows) {\n try {\n await this.deleteWorkflow.execute({\n app: workflow.app,\n id: workflow.id\n });\n } catch {\n // does not matter\n }\n }\n }\n}\n\nexport const DeleteWorkflowsOnModelAfterDelete = ModelAfterDeleteEventHandler.createImplementation({\n implementation: DeleteWorkflowsOnModelAfterDeleteImpl,\n dependencies: [ListWorkflowsUseCase, DeleteWorkflowUseCase]\n});\n"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,sEAAsE;AACnH,SAASC,oBAAoB,QAAQ,gEAAgE;AACrG,SAASC,qBAAqB,QAAQ,iEAAiE;AACvG,SAASC,qBAAqB;AAC9B,SAASC,cAAc;AAEvB,MAAMC,qCAAqC,CAAmD;EAC1FC,WAAWA,CACCC,aAA6C,EAC7CC,cAA+C,EACzD;IAAA,KAFUD,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,cAA+C,GAA/CA,cAA+C;EACxD;EAEH,MAAMC,MAAMA,CAACC,KAAyC,EAAiB;IACnE,MAAM;MAAEC;IAAM,CAAC,GAAGD,KAAK,CAACE,OAAO;IAE/B,IAAI,CAACR,cAAc,CAACO,KAAK,CAAC,EAAE;MACxB;IACJ;IAEA,MAAME,GAAG,GAAGV,qBAAqB,CAAC;MAAEQ;IAAM,CAAC,CAAC;IAC5C,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACP,aAAa,CAACQ,OAAO,CAAC;MAC5CC,KAAK,EAAE;QACHH;MACJ,CAAC;MACDI,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAMC,SAAS,GAAGJ,MAAM,CAACK,KAAK,CAACC,KAAK;IAEpC,KAAK,MAAMC,QAAQ,IAAIH,SAAS,EAAE;MAC9B,IAAI;QACA,MAAM,IAAI,CAACV,cAAc,CAACO,OAAO,CAAC;UAC9BF,GAAG,EAAEQ,QAAQ,CAACR,GAAG;UACjBS,EAAE,EAAED,QAAQ,CAACC;QACjB,CAAC,CAAC;MACN,CAAC,CAAC,MAAM;QACJ;MAAA;IAER;EACJ;AACJ;AAEA,OAAO,MAAMC,iCAAiC,GAAGvB,4BAA4B,CAACwB,oBAAoB,CAAC;EAC/FC,cAAc,EAAEpB,qCAAqC;EACrDqB,YAAY,EAAE,CAACzB,oBAAoB,EAAEC,qBAAqB;AAC9D,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js","sources":["../../../../src/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.ts"],"sourcesContent":["import { ModelAfterDeleteEventHandler } from \"@webiny/api-headless-cms/features/contentModel/DeleteModel/events.js\";\nimport { ListWorkflowsUseCase } from \"@webiny/api-workflows/features/workflow/ListWorkflows/index.js\";\nimport { DeleteWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js\";\nimport { createWorkflowAppName } from \"~/utils/appName.js\";\nimport { isModelAllowed } from \"~/utils/modelAllowed.js\";\n\nclass DeleteWorkflowsOnModelAfterDeleteImpl implements ModelAfterDeleteEventHandler.Interface {\n constructor(\n private listWorkflows: ListWorkflowsUseCase.Interface,\n private deleteWorkflow: DeleteWorkflowUseCase.Interface\n ) {}\n\n async handle(event: ModelAfterDeleteEventHandler.Event): Promise<void> {\n const { model } = event.payload;\n\n if (!isModelAllowed(model)) {\n return;\n }\n\n const app = createWorkflowAppName({ model });\n const result = await this.listWorkflows.execute({\n where: {\n app\n },\n limit: 10000\n });\n\n const workflows = result.value.items;\n\n for (const workflow of workflows) {\n try {\n await this.deleteWorkflow.execute({\n app: workflow.app,\n id: workflow.id\n });\n } catch {\n // does not matter\n }\n }\n }\n}\n\nexport const DeleteWorkflowsOnModelAfterDelete = ModelAfterDeleteEventHandler.createImplementation({\n implementation: DeleteWorkflowsOnModelAfterDeleteImpl,\n dependencies: [ListWorkflowsUseCase, DeleteWorkflowUseCase]\n});\n"],"names":["DeleteWorkflowsOnModelAfterDeleteImpl","listWorkflows","deleteWorkflow","event","model","isModelAllowed","app","createWorkflowAppName","result","workflows","workflow","DeleteWorkflowsOnModelAfterDelete","ModelAfterDeleteEventHandler","ListWorkflowsUseCase","DeleteWorkflowUseCase"],"mappings":";;;;;AAMA,MAAMA;IACF,YACYC,aAA6C,EAC7CC,cAA+C,CACzD;aAFUD,aAAa,GAAbA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,OAAOC,KAAyC,EAAiB;QACnE,MAAM,EAAEC,KAAK,EAAE,GAAGD,MAAM,OAAO;QAE/B,IAAI,CAACE,eAAeD,QAChB;QAGJ,MAAME,MAAMC,sBAAsB;YAAEH;QAAM;QAC1C,MAAMI,SAAS,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC5C,OAAO;gBACHF;YACJ;YACA,OAAO;QACX;QAEA,MAAMG,YAAYD,OAAO,KAAK,CAAC,KAAK;QAEpC,KAAK,MAAME,YAAYD,UACnB,IAAI;YACA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBAC9B,KAAKC,SAAS,GAAG;gBACjB,IAAIA,SAAS,EAAE;YACnB;QACJ,EAAE,OAAM,CAER;IAER;AACJ;AAEO,MAAMC,oCAAoCC,6BAA6B,oBAAoB,CAAC;IAC/F,gBAAgBZ;IAChB,cAAc;QAACa;QAAsBC;KAAsB;AAC/D"}