@webiny/api-headless-cms-workflows 6.4.5-beta.0 → 6.6.0-alpha.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/CmsWorkflowsFeature.d.ts +4 -0
- package/CmsWorkflowsFeature.js +22 -0
- package/CmsWorkflowsFeature.js.map +1 -0
- package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.d.ts +15 -0
- package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js +35 -0
- package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js.map +1 -0
- package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.d.ts +13 -0
- package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js +45 -0
- package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js.map +1 -0
- package/features/EntryWorkflows/errors.d.ts +11 -0
- package/features/EntryWorkflows/errors.js +12 -0
- package/features/EntryWorkflows/errors.js.map +1 -0
- package/features/EntryWorkflows/feature.js +8 -0
- package/features/EntryWorkflows/feature.js.map +1 -1
- package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.d.ts +11 -0
- package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js +37 -0
- package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js.map +1 -0
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js +3 -1
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js.map +1 -1
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.d.ts +13 -0
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js +35 -0
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js.map +1 -0
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js +2 -0
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js.map +1 -1
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js +3 -2
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js.map +1 -1
- package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js +1 -1
- package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js.map +1 -1
- package/graphql/entrySystemSchema.d.ts +2 -0
- package/graphql/entrySystemSchema.js +18 -0
- package/graphql/entrySystemSchema.js.map +1 -0
- package/index.d.ts +1 -1
- package/index.js +1 -17
- package/package.json +18 -13
- package/index.js.map +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { CmsGraphQLSchemaFactory } from "@webiny/api-headless-cms";
|
|
3
|
+
import { EntryWorkflowsFeature } from "./features/EntryWorkflows/feature.js";
|
|
4
|
+
import { WorkflowsFeature } from "./features/Workflows/index.js";
|
|
5
|
+
import { WorkflowsFeature as api_workflows_WorkflowsFeature } from "@webiny/api-workflows";
|
|
6
|
+
import { createEntrySystemSchemaExtension } from "./graphql/entrySystemSchema.js";
|
|
7
|
+
const CmsWorkflowsFeature = createFeature({
|
|
8
|
+
name: "CmsWorkflows",
|
|
9
|
+
register (container) {
|
|
10
|
+
EntryWorkflowsFeature.register(container);
|
|
11
|
+
WorkflowsFeature.register(container);
|
|
12
|
+
api_workflows_WorkflowsFeature.register(container);
|
|
13
|
+
container.registerInstance(CmsGraphQLSchemaFactory, {
|
|
14
|
+
execute: ()=>[
|
|
15
|
+
createEntrySystemSchemaExtension()
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
export { CmsWorkflowsFeature };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=CmsWorkflowsFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CmsWorkflowsFeature.js","sources":["../src/CmsWorkflowsFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CmsGraphQLSchemaFactory } from \"@webiny/api-headless-cms\";\nimport { EntryWorkflowsFeature } from \"./features/EntryWorkflows/feature.js\";\nimport { WorkflowsFeature as CmsLocalWorkflowsFeature } from \"./features/Workflows/index.js\";\nimport { WorkflowsFeature } from \"@webiny/api-workflows\";\nimport { createEntrySystemSchemaExtension } from \"./graphql/entrySystemSchema.js\";\n\nexport const CmsWorkflowsFeature = createFeature({\n name: \"CmsWorkflows\",\n register(container) {\n // WCP guard is enforced inside WorkflowsContextEnhancer — register unconditionally.\n EntryWorkflowsFeature.register(container);\n CmsLocalWorkflowsFeature.register(container);\n WorkflowsFeature.register(container);\n\n // Add the `workflow` field to CmsEntrySystem on the CMS endpoint. (api-workflows extends\n // CmsEntrySystem on the base /graphql schema via WorkflowsSchemaFactory, but CMS entries are\n // served from the separate CMS schema, which needs its own CmsGraphQLSchemaFactory entry.)\n container.registerInstance(CmsGraphQLSchemaFactory, {\n execute: () => [createEntrySystemSchemaExtension()]\n });\n }\n});\n"],"names":["CmsWorkflowsFeature","createFeature","container","EntryWorkflowsFeature","CmsLocalWorkflowsFeature","WorkflowsFeature","CmsGraphQLSchemaFactory","createEntrySystemSchemaExtension"],"mappings":";;;;;;AAOO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QAEdC,sBAAsB,QAAQ,CAACD;QAC/BE,iBAAAA,QAAiC,CAACF;QAClCG,+BAAAA,QAAyB,CAACH;QAK1BA,UAAU,gBAAgB,CAACI,yBAAyB;YAChD,SAAS,IAAM;oBAACC;iBAAmC;QACvD;IACJ;AACJ"}
|
|
@@ -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"}
|
|
@@ -5,6 +5,10 @@ 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
|
+
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";
|
|
8
12
|
const EntryWorkflowsFeature = createFeature({
|
|
9
13
|
name: "EntryWorkflows",
|
|
10
14
|
register (container) {
|
|
@@ -14,6 +18,10 @@ const EntryWorkflowsFeature = createFeature({
|
|
|
14
18
|
container.register(UpdateEntryOnWorkflowStateAfterCreate);
|
|
15
19
|
container.register(UpdateEntryOnWorkflowStateAfterUpdate);
|
|
16
20
|
container.register(ClearEntryStateOnWorkflowStateAfterDelete);
|
|
21
|
+
container.register(ClearEntryStateOnWorkflowStateCancel);
|
|
22
|
+
container.register(BlockMoveOnActiveWorkflowState);
|
|
23
|
+
container.registerDecorator(CmsWorkflowStateContextProvider);
|
|
24
|
+
container.registerDecorator(CmsWorkflowStateFilter);
|
|
17
25
|
}
|
|
18
26
|
});
|
|
19
27
|
export { EntryWorkflowsFeature };
|
|
@@ -1 +1 @@
|
|
|
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\";\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"],"names":["EntryWorkflowsFeature","createFeature","container","DeleteWorkflowsOnModelAfterDelete","DeleteWorkflowStateOnEntryAfterDelete","ValidateWorkflowStateOnEntryBeforePublish","UpdateEntryOnWorkflowStateAfterCreate","UpdateEntryOnWorkflowStateAfterUpdate","ClearEntryStateOnWorkflowStateAfterDelete"],"mappings":"
|
|
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"}
|
|
@@ -16,8 +16,10 @@ class ClearEntryStateOnWorkflowStateAfterDeleteImpl {
|
|
|
16
16
|
const model = modelResult.value;
|
|
17
17
|
await this.updateEntry.execute(model, state.targetRevisionId, {
|
|
18
18
|
system: {
|
|
19
|
-
workflow:
|
|
19
|
+
workflow: null
|
|
20
20
|
}
|
|
21
|
+
}, {
|
|
22
|
+
skipValidation: true
|
|
21
23
|
});
|
|
22
24
|
}
|
|
23
25
|
}
|
|
@@ -1 +1 @@
|
|
|
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(model
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js","sources":["../../../../src/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.ts"],"sourcesContent":["import { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { WorkflowStateAfterCreateHandler } from \"@webiny/api-workflows/features/workflowState/CreateWorkflowState/events.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { getStateValues } from \"~/utils/state.js\";\n\nclass UpdateEntryOnWorkflowStateAfterCreateImpl\n implements WorkflowStateAfterCreateHandler.Interface\n{\n constructor(\n private getModel: GetModelUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface\n ) {}\n\n async handle(event: WorkflowStateAfterCreateHandler.Event): Promise<void> {\n const { state } = event.payload;\n\n const modelId = getModelIdFromAppName(state.app);\n if (!modelId) {\n return;\n }\n\n const values = getStateValues(state);\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
|
|
1
|
+
{"version":3,"file":"features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js","sources":["../../../../src/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.ts"],"sourcesContent":["import { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { WorkflowStateAfterCreateHandler } from \"@webiny/api-workflows/features/workflowState/CreateWorkflowState/events.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { getStateValues } from \"~/utils/state.js\";\n\nclass UpdateEntryOnWorkflowStateAfterCreateImpl\n implements WorkflowStateAfterCreateHandler.Interface\n{\n constructor(\n private getModel: GetModelUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface\n ) {}\n\n async handle(event: WorkflowStateAfterCreateHandler.Event): Promise<void> {\n const { state } = event.payload;\n\n const modelId = getModelIdFromAppName(state.app);\n if (!modelId) {\n return;\n }\n\n const values = getStateValues(state);\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: values } },\n { skipValidation: true }\n );\n }\n}\n\nexport const UpdateEntryOnWorkflowStateAfterCreate =\n WorkflowStateAfterCreateHandler.createImplementation({\n implementation: UpdateEntryOnWorkflowStateAfterCreateImpl,\n dependencies: [GetModelUseCase, UpdateEntryUseCase]\n });\n"],"names":["UpdateEntryOnWorkflowStateAfterCreateImpl","getModel","updateEntry","event","state","modelId","getModelIdFromAppName","values","getStateValues","modelResult","model","UpdateEntryOnWorkflowStateAfterCreate","WorkflowStateAfterCreateHandler","GetModelUseCase","UpdateEntryUseCase"],"mappings":";;;;;AAMA,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,SAASC,eAAeJ;QAE9B,MAAMK,cAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACJ;QAChD,IAAII,YAAY,MAAM,IAClB;QAGJ,MAAMC,QAAQD,YAAY,KAAK;QAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAC1BC,OACAN,MAAM,gBAAgB,EACtB;YAAE,QAAQ;gBAAE,UAAUG;YAAO;QAAE,GAC/B;YAAE,gBAAgB;QAAK;IAE/B;AACJ;AAEO,MAAMI,wCACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBZ;IAChB,cAAc;QAACa;QAAiBC;KAAmB;AACvD"}
|
|
@@ -12,14 +12,15 @@ class UpdateEntryOnWorkflowStateAfterUpdateImpl {
|
|
|
12
12
|
const { state } = event.payload;
|
|
13
13
|
const modelId = getModelIdFromAppName(state.app);
|
|
14
14
|
if (!modelId) return;
|
|
15
|
-
const values = getStateValues(state);
|
|
16
15
|
const modelResult = await this.getModel.execute(modelId);
|
|
17
16
|
if (modelResult.isFail()) return;
|
|
18
17
|
const model = modelResult.value;
|
|
19
18
|
await this.updateEntry.execute(model, state.targetRevisionId, {
|
|
20
19
|
system: {
|
|
21
|
-
workflow:
|
|
20
|
+
workflow: state.isActive ? getStateValues(state) : null
|
|
22
21
|
}
|
|
22
|
+
}, {
|
|
23
|
+
skipValidation: true
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js","sources":["../../../../src/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.ts"],"sourcesContent":["import { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { WorkflowStateAfterUpdateHandler } from \"@webiny/api-workflows/features/workflowState/UpdateWorkflowState/events.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { getStateValues } from \"~/utils/state.js\";\n\nclass UpdateEntryOnWorkflowStateAfterUpdateImpl\n implements WorkflowStateAfterUpdateHandler.Interface\n{\n constructor(\n private getModel: GetModelUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface\n ) {}\n\n async handle(event: WorkflowStateAfterUpdateHandler.Event): Promise<void> {\n const { state } = event.payload;\n\n const modelId = getModelIdFromAppName(state.app);\n if (!modelId) {\n return;\n }\n\n const
|
|
1
|
+
{"version":3,"file":"features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js","sources":["../../../../src/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.ts"],"sourcesContent":["import { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { WorkflowStateAfterUpdateHandler } from \"@webiny/api-workflows/features/workflowState/UpdateWorkflowState/events.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { getStateValues } from \"~/utils/state.js\";\n\nclass UpdateEntryOnWorkflowStateAfterUpdateImpl\n implements WorkflowStateAfterUpdateHandler.Interface\n{\n constructor(\n private getModel: GetModelUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface\n ) {}\n\n async handle(event: WorkflowStateAfterUpdateHandler.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: state.isActive ? getStateValues(state) : null } },\n { skipValidation: true }\n );\n }\n}\n\nexport const UpdateEntryOnWorkflowStateAfterUpdate =\n WorkflowStateAfterUpdateHandler.createImplementation({\n implementation: UpdateEntryOnWorkflowStateAfterUpdateImpl,\n dependencies: [GetModelUseCase, UpdateEntryUseCase]\n });\n"],"names":["UpdateEntryOnWorkflowStateAfterUpdateImpl","getModel","updateEntry","event","state","modelId","getModelIdFromAppName","modelResult","model","getStateValues","UpdateEntryOnWorkflowStateAfterUpdate","WorkflowStateAfterUpdateHandler","GetModelUseCase","UpdateEntryUseCase"],"mappings":";;;;;AAMA,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,UAAUA,MAAM,QAAQ,GAAGK,eAAeL,SAAS;YAAK;QAAE,GACtE;YAAE,gBAAgB;QAAK;IAE/B;AACJ;AAEO,MAAMM,wCACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBX;IAChB,cAAc;QAACY;QAAiBC;KAAmB;AACvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js","sources":["../../../../src/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport { EntryBeforePublishEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js\";\nimport { createWorkflowAppName } from \"~/utils/appName.js\";\nimport { isModelAllowed } from \"~/utils/modelAllowed.js\";\nimport { GetTargetWorkflowStateUseCase } from \"@webiny/api-workflows/features/workflowState/GetTargetWorkflowState/index.js\";\n\nclass ValidateWorkflowStateOnEntryBeforePublishImpl\n implements EntryBeforePublishEventHandler.Interface\n{\n constructor(private getTargetState: GetTargetWorkflowStateUseCase.Interface) {}\n\n async handle(event: EntryBeforePublishEventHandler.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({ app, targetRevisionId: entry.id });\n\n if (stateResult.isFail()) {\n // If there's no state to deal with, exit early.\n return;\n }\n\n const state = stateResult.value;\n\n if (state?.done) {\n entry.system = {\n ...entry.system,\n workflow:
|
|
1
|
+
{"version":3,"file":"features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js","sources":["../../../../src/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport { EntryBeforePublishEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js\";\nimport { createWorkflowAppName } from \"~/utils/appName.js\";\nimport { isModelAllowed } from \"~/utils/modelAllowed.js\";\nimport { GetTargetWorkflowStateUseCase } from \"@webiny/api-workflows/features/workflowState/GetTargetWorkflowState/index.js\";\n\nclass ValidateWorkflowStateOnEntryBeforePublishImpl\n implements EntryBeforePublishEventHandler.Interface\n{\n constructor(private getTargetState: GetTargetWorkflowStateUseCase.Interface) {}\n\n async handle(event: EntryBeforePublishEventHandler.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({ app, targetRevisionId: entry.id });\n\n if (stateResult.isFail()) {\n // If there's no state to deal with, exit early.\n return;\n }\n\n const state = stateResult.value;\n\n if (state?.done) {\n entry.system = {\n ...entry.system,\n workflow: null\n };\n return;\n }\n\n throw new WebinyError(\n \"Cannot publish entry because its workflow state is not completed.\",\n \"WORKFLOW_STATE_NOT_COMPLETED\",\n {\n app,\n entryId: entry.id,\n state: {\n ...state\n }\n }\n );\n }\n}\n\nexport const ValidateWorkflowStateOnEntryBeforePublish =\n EntryBeforePublishEventHandler.createImplementation({\n implementation: ValidateWorkflowStateOnEntryBeforePublishImpl,\n dependencies: [GetTargetWorkflowStateUseCase]\n });\n"],"names":["ValidateWorkflowStateOnEntryBeforePublishImpl","getTargetState","event","model","entry","isModelAllowed","app","createWorkflowAppName","stateResult","state","WebinyError","ValidateWorkflowStateOnEntryBeforePublish","EntryBeforePublishEventHandler","GetTargetWorkflowStateUseCase"],"mappings":";;;;;AAMA,MAAMA;IAGF,YAAoBC,cAAuD,CAAE;aAAzDA,cAAc,GAAdA;IAA0D;IAE9E,MAAM,OAAOC,KAA2C,EAAiB;QACrE,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;YAAEF;YAAK,kBAAkBF,MAAM,EAAE;QAAC;QAExF,IAAII,YAAY,MAAM,IAElB;QAGJ,MAAMC,QAAQD,YAAY,KAAK;QAE/B,IAAIC,OAAO,MAAM;YACbL,MAAM,MAAM,GAAG;gBACX,GAAGA,MAAM,MAAM;gBACf,UAAU;YACd;YACA;QACJ;QAEA,MAAM,IAAIM,YACN,qEACA,gCACA;YACIJ;YACA,SAASF,MAAM,EAAE;YACjB,OAAO;gBACH,GAAGK,KAAK;YACZ;QACJ;IAER;AACJ;AAEO,MAAME,4CACTC,+BAA+B,oBAAoB,CAAC;IAChD,gBAAgBZ;IAChB,cAAc;QAACa;KAA8B;AACjD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CmsGraphQLSchemaPlugin } from "@webiny/api-headless-cms/plugins/index.js";
|
|
2
|
+
const createEntrySystemSchemaExtension = ()=>new CmsGraphQLSchemaPlugin({
|
|
3
|
+
typeDefs: `
|
|
4
|
+
type CmsEntrySystemWorkflow {
|
|
5
|
+
workflowId: String
|
|
6
|
+
stepId: ID
|
|
7
|
+
stepName: String
|
|
8
|
+
state: String
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
extend type CmsEntrySystem {
|
|
12
|
+
workflow: CmsEntrySystemWorkflow
|
|
13
|
+
}
|
|
14
|
+
`
|
|
15
|
+
});
|
|
16
|
+
export { createEntrySystemSchemaExtension };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=entrySystemSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql/entrySystemSchema.js","sources":["../../src/graphql/entrySystemSchema.ts"],"sourcesContent":["import { CmsGraphQLSchemaPlugin } from \"@webiny/api-headless-cms/plugins/index.js\";\n\nexport const createEntrySystemSchemaExtension = () => {\n return new CmsGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type CmsEntrySystemWorkflow {\n workflowId: String\n stepId: ID\n stepName: String\n state: String\n }\n\n extend type CmsEntrySystem {\n workflow: CmsEntrySystemWorkflow\n }\n `\n });\n};\n"],"names":["createEntrySystemSchemaExtension","CmsGraphQLSchemaPlugin"],"mappings":";AAEO,MAAMA,mCAAmC,IACrC,IAAIC,uBAAuB;QAC9B,UAAwB,CAAC;;;;;;;;;;;QAWzB,CAAC;IACL"}
|
package/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { CmsWorkflowsFeature } from "./CmsWorkflowsFeature.js";
|
package/index.js
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { EntryWorkflowsFeature } from "./features/EntryWorkflows/feature.js";
|
|
3
|
-
import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
|
|
4
|
-
import { WorkflowsFeature } from "./features/Workflows/index.js";
|
|
5
|
-
const createHeadlessCmsWorkflows = ()=>{
|
|
6
|
-
const plugin = createContextPlugin(async (context)=>{
|
|
7
|
-
const wcpContext = context.container.resolve(WcpContext);
|
|
8
|
-
if (!wcpContext.canUseWorkflows()) return;
|
|
9
|
-
EntryWorkflowsFeature.register(context.container);
|
|
10
|
-
WorkflowsFeature.register(context.container);
|
|
11
|
-
});
|
|
12
|
-
plugin.name = "headless-cms-workflows.context";
|
|
13
|
-
return plugin;
|
|
14
|
-
};
|
|
15
|
-
export { createHeadlessCmsWorkflows };
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { CmsWorkflowsFeature } from "./CmsWorkflowsFeature.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-headless-cms-workflows",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.6.0-alpha.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -17,20 +17,25 @@
|
|
|
17
17
|
},
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@webiny/api": "6.
|
|
21
|
-
"@webiny/api-
|
|
22
|
-
"@webiny/api-
|
|
23
|
-
"@webiny/api-
|
|
24
|
-
"@webiny/
|
|
25
|
-
"@webiny/
|
|
20
|
+
"@webiny/api": "6.6.0-alpha.0",
|
|
21
|
+
"@webiny/api-aco": "6.6.0-alpha.0",
|
|
22
|
+
"@webiny/api-core": "6.6.0-alpha.0",
|
|
23
|
+
"@webiny/api-headless-cms": "6.6.0-alpha.0",
|
|
24
|
+
"@webiny/api-workflows": "6.6.0-alpha.0",
|
|
25
|
+
"@webiny/error": "6.6.0-alpha.0",
|
|
26
|
+
"@webiny/feature": "6.6.0-alpha.0",
|
|
27
|
+
"@webiny/shared-aco": "6.6.0-alpha.0"
|
|
26
28
|
},
|
|
27
29
|
"devDependencies": {
|
|
28
|
-
"@webiny/
|
|
29
|
-
"@webiny/
|
|
30
|
-
"@webiny/
|
|
31
|
-
"@webiny/
|
|
32
|
-
"@webiny/
|
|
33
|
-
"
|
|
30
|
+
"@webiny/api-core-testing": "6.6.0-alpha.0",
|
|
31
|
+
"@webiny/api-headless-cms-testing": "6.6.0-alpha.0",
|
|
32
|
+
"@webiny/api-opensearch": "6.6.0-alpha.0",
|
|
33
|
+
"@webiny/build-tools": "6.6.0-alpha.0",
|
|
34
|
+
"@webiny/handler": "6.6.0-alpha.0",
|
|
35
|
+
"@webiny/plugins": "6.6.0-alpha.0",
|
|
36
|
+
"@webiny/project-utils": "6.6.0-alpha.0",
|
|
37
|
+
"@webiny/wcp": "6.6.0-alpha.0",
|
|
38
|
+
"typescript": "7.0.2",
|
|
34
39
|
"vitest": "4.1.10"
|
|
35
40
|
},
|
|
36
41
|
"publishConfig": {
|
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { createContextPlugin } from \"@webiny/api\";\nimport { EntryWorkflowsFeature } from \"./features/EntryWorkflows/feature.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { WorkflowsFeature } from \"~/features/Workflows/index.js\";\n\nexport const createHeadlessCmsWorkflows = () => {\n const plugin = createContextPlugin(async context => {\n const wcpContext = context.container.resolve(WcpContext);\n\n if (!wcpContext.canUseWorkflows()) {\n return;\n }\n\n // Register features\n EntryWorkflowsFeature.register(context.container);\n WorkflowsFeature.register(context.container);\n });\n\n plugin.name = \"headless-cms-workflows.context\";\n\n return plugin;\n};\n"],"names":["createHeadlessCmsWorkflows","plugin","createContextPlugin","context","wcpContext","WcpContext","EntryWorkflowsFeature","WorkflowsFeature"],"mappings":";;;;AAKO,MAAMA,6BAA6B;IACtC,MAAMC,SAASC,oBAAoB,OAAMC;QACrC,MAAMC,aAAaD,QAAQ,SAAS,CAAC,OAAO,CAACE;QAE7C,IAAI,CAACD,WAAW,eAAe,IAC3B;QAIJE,sBAAsB,QAAQ,CAACH,QAAQ,SAAS;QAChDI,iBAAiB,QAAQ,CAACJ,QAAQ,SAAS;IAC/C;IAEAF,OAAO,IAAI,GAAG;IAEd,OAAOA;AACX"}
|