@webiny/api-headless-cms-workflows 0.0.0-unstable.61c048f412
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/features/EntryWorkflows/feature.d.ts +1 -0
- package/features/EntryWorkflows/feature.js +20 -0
- package/features/EntryWorkflows/feature.js.map +1 -0
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.d.ts +13 -0
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js +33 -0
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js.map +1 -0
- package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.d.ts +11 -0
- package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js +29 -0
- package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js.map +1 -0
- package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.d.ts +13 -0
- package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js +45 -0
- package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js.map +1 -0
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.d.ts +13 -0
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js +35 -0
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js.map +1 -0
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.d.ts +13 -0
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js +35 -0
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js.map +1 -0
- package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.d.ts +11 -0
- package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js +48 -0
- package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js.map +1 -0
- package/features/EntryWorkflows/index.d.ts +1 -0
- package/features/EntryWorkflows/index.js +3 -0
- package/features/EntryWorkflows/index.js.map +1 -0
- package/features/Workflows/feature.d.ts +1 -0
- package/features/Workflows/feature.js +10 -0
- package/features/Workflows/feature.js.map +1 -0
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.d.ts +11 -0
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js +32 -0
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js.map +1 -0
- package/features/Workflows/index.d.ts +1 -0
- package/features/Workflows/index.js +3 -0
- package/features/Workflows/index.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +20 -0
- package/index.js.map +1 -0
- package/package.json +38 -0
- package/utils/appName.d.ts +7 -0
- package/utils/appName.js +14 -0
- package/utils/appName.js.map +1 -0
- package/utils/modelAllowed.d.ts +2 -0
- package/utils/modelAllowed.js +13 -0
- package/utils/modelAllowed.js.map +1 -0
- package/utils/state.d.ts +3 -0
- package/utils/state.js +11 -0
- package/utils/state.js.map +1 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Webiny
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# @webiny/api-headless-cms-workflows
|
|
2
|
+
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> This package is part of the [Webiny](https://www.webiny.com) monorepo.
|
|
5
|
+
> It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
|
|
6
|
+
|
|
7
|
+
📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
_This README file is automatically generated during the publish process._
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const EntryWorkflowsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { DeleteWorkflowsOnModelAfterDelete } from "./handlers/DeleteWorkflowsOnModelAfterDelete.js";
|
|
3
|
+
import { DeleteWorkflowStateOnEntryAfterDelete } from "./handlers/DeleteWorkflowStateOnEntryAfterDelete.js";
|
|
4
|
+
import { ValidateWorkflowStateOnEntryBeforePublish } from "./handlers/ValidateWorkflowStateOnEntryBeforePublish.js";
|
|
5
|
+
import { UpdateEntryOnWorkflowStateAfterCreate } from "./handlers/UpdateEntryOnWorkflowStateAfterCreate.js";
|
|
6
|
+
import { UpdateEntryOnWorkflowStateAfterUpdate } from "./handlers/UpdateEntryOnWorkflowStateAfterUpdate.js";
|
|
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
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WorkflowStateAfterDeleteHandler } from "@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/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 ClearEntryStateOnWorkflowStateAfterDeleteImpl implements WorkflowStateAfterDeleteHandler.Interface {
|
|
5
|
+
private getModel;
|
|
6
|
+
private updateEntry;
|
|
7
|
+
constructor(getModel: GetModelUseCase.Interface, updateEntry: UpdateEntryUseCase.Interface);
|
|
8
|
+
handle(event: WorkflowStateAfterDeleteHandler.Event): Promise<void>;
|
|
9
|
+
}
|
|
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>>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { WorkflowStateAfterDeleteHandler } from "@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/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 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;
|
|
17
|
+
}
|
|
18
|
+
const modelResult = await this.getModel.execute(modelId);
|
|
19
|
+
if (modelResult.isFail()) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const model = modelResult.value;
|
|
23
|
+
await this.updateEntry.execute(model, state.targetRevisionId, {
|
|
24
|
+
state: undefined
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export const ClearEntryStateOnWorkflowStateAfterDelete = WorkflowStateAfterDeleteHandler.createImplementation({
|
|
29
|
+
implementation: ClearEntryStateOnWorkflowStateAfterDeleteImpl,
|
|
30
|
+
dependencies: [GetModelUseCase, UpdateEntryUseCase]
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=ClearEntryStateOnWorkflowStateAfterDelete.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntryAfterDeleteEventHandler } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/events.js";
|
|
2
|
+
import { DeleteTargetWorkflowStateUseCase } from "@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/index.js";
|
|
3
|
+
declare class DeleteWorkflowStateOnEntryAfterDeleteImpl implements EntryAfterDeleteEventHandler.Interface {
|
|
4
|
+
private deleteTargetState;
|
|
5
|
+
constructor(deleteTargetState: DeleteTargetWorkflowStateUseCase.Interface);
|
|
6
|
+
handle(event: EntryAfterDeleteEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
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>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EntryAfterDeleteEventHandler } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/events.js";
|
|
2
|
+
import { createWorkflowAppName } from "../../../utils/appName.js";
|
|
3
|
+
import { isModelAllowed } from "../../../utils/modelAllowed.js";
|
|
4
|
+
import { DeleteTargetWorkflowStateUseCase } from "@webiny/api-workflows/features/workflowState/DeleteTargetWorkflowState/index.js";
|
|
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;
|
|
17
|
+
}
|
|
18
|
+
const app = createWorkflowAppName({
|
|
19
|
+
model
|
|
20
|
+
});
|
|
21
|
+
await this.deleteTargetState.execute(app, entry.id);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export const DeleteWorkflowStateOnEntryAfterDelete = EntryAfterDeleteEventHandler.createImplementation({
|
|
25
|
+
implementation: DeleteWorkflowStateOnEntryAfterDeleteImpl,
|
|
26
|
+
dependencies: [DeleteTargetWorkflowStateUseCase]
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=DeleteWorkflowStateOnEntryAfterDelete.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ModelAfterDeleteEventHandler } from "@webiny/api-headless-cms/features/contentModel/DeleteModel/events.js";
|
|
2
|
+
import { ListWorkflowsUseCase } from "@webiny/api-workflows/features/workflow/ListWorkflows/index.js";
|
|
3
|
+
import { DeleteWorkflowUseCase } from "@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js";
|
|
4
|
+
declare class DeleteWorkflowsOnModelAfterDeleteImpl implements ModelAfterDeleteEventHandler.Interface {
|
|
5
|
+
private listWorkflows;
|
|
6
|
+
private deleteWorkflow;
|
|
7
|
+
constructor(listWorkflows: ListWorkflowsUseCase.Interface, deleteWorkflow: DeleteWorkflowUseCase.Interface);
|
|
8
|
+
handle(event: ModelAfterDeleteEventHandler.Event): Promise<void>;
|
|
9
|
+
}
|
|
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>>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ModelAfterDeleteEventHandler } from "@webiny/api-headless-cms/features/contentModel/DeleteModel/events.js";
|
|
2
|
+
import { ListWorkflowsUseCase } from "@webiny/api-workflows/features/workflow/ListWorkflows/index.js";
|
|
3
|
+
import { DeleteWorkflowUseCase } from "@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js";
|
|
4
|
+
import { createWorkflowAppName } from "../../../utils/appName.js";
|
|
5
|
+
import { isModelAllowed } from "../../../utils/modelAllowed.js";
|
|
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;
|
|
17
|
+
}
|
|
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
|
|
33
|
+
});
|
|
34
|
+
} catch {
|
|
35
|
+
// does not matter
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export const DeleteWorkflowsOnModelAfterDelete = ModelAfterDeleteEventHandler.createImplementation({
|
|
41
|
+
implementation: DeleteWorkflowsOnModelAfterDeleteImpl,
|
|
42
|
+
dependencies: [ListWorkflowsUseCase, DeleteWorkflowUseCase]
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=DeleteWorkflowsOnModelAfterDelete.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
2
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
|
|
3
|
+
import { WorkflowStateAfterCreateHandler } from "@webiny/api-workflows/features/workflowState/CreateWorkflowState/events.js";
|
|
4
|
+
declare class UpdateEntryOnWorkflowStateAfterCreateImpl implements WorkflowStateAfterCreateHandler.Interface {
|
|
5
|
+
private getModel;
|
|
6
|
+
private updateEntry;
|
|
7
|
+
constructor(getModel: GetModelUseCase.Interface, updateEntry: UpdateEntryUseCase.Interface);
|
|
8
|
+
handle(event: WorkflowStateAfterCreateHandler.Event): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const UpdateEntryOnWorkflowStateAfterCreate: typeof UpdateEntryOnWorkflowStateAfterCreateImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<import("@webiny/api-workflows/features/workflowState/CreateWorkflowState/events.js").WorkflowStateAfterCreateEvent>>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
2
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
|
|
3
|
+
import { WorkflowStateAfterCreateHandler } from "@webiny/api-workflows/features/workflowState/CreateWorkflowState/events.js";
|
|
4
|
+
import { getModelIdFromAppName } from "../../../utils/appName.js";
|
|
5
|
+
import { getStateValues } from "../../../utils/state.js";
|
|
6
|
+
class UpdateEntryOnWorkflowStateAfterCreateImpl {
|
|
7
|
+
constructor(getModel, updateEntry) {
|
|
8
|
+
this.getModel = getModel;
|
|
9
|
+
this.updateEntry = updateEntry;
|
|
10
|
+
}
|
|
11
|
+
async handle(event) {
|
|
12
|
+
const {
|
|
13
|
+
state
|
|
14
|
+
} = event.payload;
|
|
15
|
+
const modelId = getModelIdFromAppName(state.app);
|
|
16
|
+
if (!modelId) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const values = getStateValues(state);
|
|
20
|
+
const modelResult = await this.getModel.execute(modelId);
|
|
21
|
+
if (modelResult.isFail()) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const model = modelResult.value;
|
|
25
|
+
await this.updateEntry.execute(model, state.targetRevisionId, {
|
|
26
|
+
state: values
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const UpdateEntryOnWorkflowStateAfterCreate = WorkflowStateAfterCreateHandler.createImplementation({
|
|
31
|
+
implementation: UpdateEntryOnWorkflowStateAfterCreateImpl,
|
|
32
|
+
dependencies: [GetModelUseCase, UpdateEntryUseCase]
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=UpdateEntryOnWorkflowStateAfterCreate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GetModelUseCase","UpdateEntryUseCase","WorkflowStateAfterCreateHandler","getModelIdFromAppName","getStateValues","UpdateEntryOnWorkflowStateAfterCreateImpl","constructor","getModel","updateEntry","handle","event","state","payload","modelId","app","values","modelResult","execute","isFail","model","value","targetRevisionId","UpdateEntryOnWorkflowStateAfterCreate","createImplementation","implementation","dependencies"],"sources":["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, state.targetRevisionId, {\n state: values\n });\n }\n}\n\nexport const UpdateEntryOnWorkflowStateAfterCreate =\n WorkflowStateAfterCreateHandler.createImplementation({\n implementation: UpdateEntryOnWorkflowStateAfterCreateImpl,\n dependencies: [GetModelUseCase, UpdateEntryUseCase]\n });\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,kEAAkE;AAClG,SAASC,kBAAkB,QAAQ,qEAAqE;AACxG,SAASC,+BAA+B,QAAQ,4EAA4E;AAC5H,SAASC,qBAAqB;AAC9B,SAASC,cAAc;AAEvB,MAAMC,yCAAyC,CAE/C;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,GAAGV,qBAAqB,CAACQ,KAAK,CAACG,GAAG,CAAC;IAChD,IAAI,CAACD,OAAO,EAAE;MACV;IACJ;IAEA,MAAME,MAAM,GAAGX,cAAc,CAACO,KAAK,CAAC;IAEpC,MAAMK,WAAW,GAAG,MAAM,IAAI,CAACT,QAAQ,CAACU,OAAO,CAACJ,OAAO,CAAC;IACxD,IAAIG,WAAW,CAACE,MAAM,CAAC,CAAC,EAAE;MACtB;IACJ;IAEA,MAAMC,KAAK,GAAGH,WAAW,CAACI,KAAK;IAC/B,MAAM,IAAI,CAACZ,WAAW,CAACS,OAAO,CAACE,KAAK,EAAER,KAAK,CAACU,gBAAgB,EAAE;MAC1DV,KAAK,EAAEI;IACX,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMO,qCAAqC,GAC9CpB,+BAA+B,CAACqB,oBAAoB,CAAC;EACjDC,cAAc,EAAEnB,yCAAyC;EACzDoB,YAAY,EAAE,CAACzB,eAAe,EAAEC,kBAAkB;AACtD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
2
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
|
|
3
|
+
import { WorkflowStateAfterUpdateHandler } from "@webiny/api-workflows/features/workflowState/UpdateWorkflowState/events.js";
|
|
4
|
+
declare class UpdateEntryOnWorkflowStateAfterUpdateImpl implements WorkflowStateAfterUpdateHandler.Interface {
|
|
5
|
+
private getModel;
|
|
6
|
+
private updateEntry;
|
|
7
|
+
constructor(getModel: GetModelUseCase.Interface, updateEntry: UpdateEntryUseCase.Interface);
|
|
8
|
+
handle(event: WorkflowStateAfterUpdateHandler.Event): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const UpdateEntryOnWorkflowStateAfterUpdate: typeof UpdateEntryOnWorkflowStateAfterUpdateImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<import("@webiny/api-workflows/features/workflowState/UpdateWorkflowState/events.js").WorkflowStateAfterUpdateEvent>>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
2
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
|
|
3
|
+
import { WorkflowStateAfterUpdateHandler } from "@webiny/api-workflows/features/workflowState/UpdateWorkflowState/events.js";
|
|
4
|
+
import { getModelIdFromAppName } from "../../../utils/appName.js";
|
|
5
|
+
import { getStateValues } from "../../../utils/state.js";
|
|
6
|
+
class UpdateEntryOnWorkflowStateAfterUpdateImpl {
|
|
7
|
+
constructor(getModel, updateEntry) {
|
|
8
|
+
this.getModel = getModel;
|
|
9
|
+
this.updateEntry = updateEntry;
|
|
10
|
+
}
|
|
11
|
+
async handle(event) {
|
|
12
|
+
const {
|
|
13
|
+
state
|
|
14
|
+
} = event.payload;
|
|
15
|
+
const modelId = getModelIdFromAppName(state.app);
|
|
16
|
+
if (!modelId) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const values = getStateValues(state);
|
|
20
|
+
const modelResult = await this.getModel.execute(modelId);
|
|
21
|
+
if (modelResult.isFail()) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const model = modelResult.value;
|
|
25
|
+
await this.updateEntry.execute(model, state.targetRevisionId, {
|
|
26
|
+
state: values
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const UpdateEntryOnWorkflowStateAfterUpdate = WorkflowStateAfterUpdateHandler.createImplementation({
|
|
31
|
+
implementation: UpdateEntryOnWorkflowStateAfterUpdateImpl,
|
|
32
|
+
dependencies: [GetModelUseCase, UpdateEntryUseCase]
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=UpdateEntryOnWorkflowStateAfterUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GetModelUseCase","UpdateEntryUseCase","WorkflowStateAfterUpdateHandler","getModelIdFromAppName","getStateValues","UpdateEntryOnWorkflowStateAfterUpdateImpl","constructor","getModel","updateEntry","handle","event","state","payload","modelId","app","values","modelResult","execute","isFail","model","value","targetRevisionId","UpdateEntryOnWorkflowStateAfterUpdate","createImplementation","implementation","dependencies"],"sources":["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 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, state.targetRevisionId, {\n state: values\n });\n }\n}\n\nexport const UpdateEntryOnWorkflowStateAfterUpdate =\n WorkflowStateAfterUpdateHandler.createImplementation({\n implementation: UpdateEntryOnWorkflowStateAfterUpdateImpl,\n dependencies: [GetModelUseCase, UpdateEntryUseCase]\n });\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,kEAAkE;AAClG,SAASC,kBAAkB,QAAQ,qEAAqE;AACxG,SAASC,+BAA+B,QAAQ,4EAA4E;AAC5H,SAASC,qBAAqB;AAC9B,SAASC,cAAc;AAEvB,MAAMC,yCAAyC,CAE/C;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,GAAGV,qBAAqB,CAACQ,KAAK,CAACG,GAAG,CAAC;IAChD,IAAI,CAACD,OAAO,EAAE;MACV;IACJ;IAEA,MAAME,MAAM,GAAGX,cAAc,CAACO,KAAK,CAAC;IAEpC,MAAMK,WAAW,GAAG,MAAM,IAAI,CAACT,QAAQ,CAACU,OAAO,CAACJ,OAAO,CAAC;IACxD,IAAIG,WAAW,CAACE,MAAM,CAAC,CAAC,EAAE;MACtB;IACJ;IAEA,MAAMC,KAAK,GAAGH,WAAW,CAACI,KAAK;IAC/B,MAAM,IAAI,CAACZ,WAAW,CAACS,OAAO,CAACE,KAAK,EAAER,KAAK,CAACU,gBAAgB,EAAE;MAC1DV,KAAK,EAAEI;IACX,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMO,qCAAqC,GAC9CpB,+BAA+B,CAACqB,oBAAoB,CAAC;EACjDC,cAAc,EAAEnB,yCAAyC;EACzDoB,YAAY,EAAE,CAACzB,eAAe,EAAEC,kBAAkB;AACtD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntryBeforePublishEventHandler } from "@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js";
|
|
2
|
+
import { GetTargetWorkflowStateUseCase } from "@webiny/api-workflows/features/workflowState/GetTargetWorkflowState/index.js";
|
|
3
|
+
declare class ValidateWorkflowStateOnEntryBeforePublishImpl implements EntryBeforePublishEventHandler.Interface {
|
|
4
|
+
private getTargetState;
|
|
5
|
+
constructor(getTargetState: GetTargetWorkflowStateUseCase.Interface);
|
|
6
|
+
handle(event: EntryBeforePublishEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const ValidateWorkflowStateOnEntryBeforePublish: typeof ValidateWorkflowStateOnEntryBeforePublishImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<import("@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js").EntryBeforePublishEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { WebinyError } from "@webiny/error";
|
|
2
|
+
import { EntryBeforePublishEventHandler } from "@webiny/api-headless-cms/features/contentEntry/PublishEntry/events.js";
|
|
3
|
+
import { createWorkflowAppName } from "../../../utils/appName.js";
|
|
4
|
+
import { isModelAllowed } from "../../../utils/modelAllowed.js";
|
|
5
|
+
import { GetTargetWorkflowStateUseCase } from "@webiny/api-workflows/features/workflowState/GetTargetWorkflowState/index.js";
|
|
6
|
+
class ValidateWorkflowStateOnEntryBeforePublishImpl {
|
|
7
|
+
constructor(getTargetState) {
|
|
8
|
+
this.getTargetState = getTargetState;
|
|
9
|
+
}
|
|
10
|
+
async handle(event) {
|
|
11
|
+
const {
|
|
12
|
+
model,
|
|
13
|
+
entry
|
|
14
|
+
} = event.payload;
|
|
15
|
+
if (!isModelAllowed(model)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const app = createWorkflowAppName({
|
|
19
|
+
model
|
|
20
|
+
});
|
|
21
|
+
const stateResult = await this.getTargetState.execute({
|
|
22
|
+
app,
|
|
23
|
+
targetRevisionId: entry.id
|
|
24
|
+
});
|
|
25
|
+
if (stateResult.isFail()) {
|
|
26
|
+
// If there's no state to deal with, exit early.
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const state = stateResult.value;
|
|
30
|
+
if (state?.done) {
|
|
31
|
+
entry.state = undefined;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
throw new WebinyError("Cannot publish entry because its workflow state is not completed.", "WORKFLOW_STATE_NOT_COMPLETED", {
|
|
35
|
+
app,
|
|
36
|
+
entryId: entry.id,
|
|
37
|
+
state: {
|
|
38
|
+
...state
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export const ValidateWorkflowStateOnEntryBeforePublish = EntryBeforePublishEventHandler.createImplementation({
|
|
44
|
+
implementation: ValidateWorkflowStateOnEntryBeforePublishImpl,
|
|
45
|
+
dependencies: [GetTargetWorkflowStateUseCase]
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=ValidateWorkflowStateOnEntryBeforePublish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WebinyError","EntryBeforePublishEventHandler","createWorkflowAppName","isModelAllowed","GetTargetWorkflowStateUseCase","ValidateWorkflowStateOnEntryBeforePublishImpl","constructor","getTargetState","handle","event","model","entry","payload","app","stateResult","execute","targetRevisionId","id","isFail","state","value","done","undefined","entryId","ValidateWorkflowStateOnEntryBeforePublish","createImplementation","implementation","dependencies"],"sources":["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.state = undefined;\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"],"mappings":"AAAA,SAASA,WAAW,QAAQ,eAAe;AAC3C,SAASC,8BAA8B,QAAQ,uEAAuE;AACtH,SAASC,qBAAqB;AAC9B,SAASC,cAAc;AACvB,SAASC,6BAA6B,QAAQ,8EAA8E;AAE5H,MAAMC,6CAA6C,CAEnD;EACIC,WAAWA,CAASC,cAAuD,EAAE;IAAA,KAAzDA,cAAuD,GAAvDA,cAAuD;EAAG;EAE9E,MAAMC,MAAMA,CAACC,KAA2C,EAAiB;IACrE,MAAM;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAGF,KAAK,CAACG,OAAO;IAEtC,IAAI,CAACT,cAAc,CAACO,KAAK,CAAC,EAAE;MACxB;IACJ;IAEA,MAAMG,GAAG,GAAGX,qBAAqB,CAAC;MAAEQ;IAAM,CAAC,CAAC;IAE5C,MAAMI,WAAW,GAAG,MAAM,IAAI,CAACP,cAAc,CAACQ,OAAO,CAAC;MAAEF,GAAG;MAAEG,gBAAgB,EAAEL,KAAK,CAACM;IAAG,CAAC,CAAC;IAE1F,IAAIH,WAAW,CAACI,MAAM,CAAC,CAAC,EAAE;MACtB;MACA;IACJ;IAEA,MAAMC,KAAK,GAAGL,WAAW,CAACM,KAAK;IAE/B,IAAID,KAAK,EAAEE,IAAI,EAAE;MACbV,KAAK,CAACQ,KAAK,GAAGG,SAAS;MACvB;IACJ;IAEA,MAAM,IAAItB,WAAW,CACjB,mEAAmE,EACnE,8BAA8B,EAC9B;MACIa,GAAG;MACHU,OAAO,EAAEZ,KAAK,CAACM,EAAE;MACjBE,KAAK,EAAE;QACH,GAAGA;MACP;IACJ,CACJ,CAAC;EACL;AACJ;AAEA,OAAO,MAAMK,yCAAyC,GAClDvB,8BAA8B,CAACwB,oBAAoB,CAAC;EAChDC,cAAc,EAAErB,6CAA6C;EAC7DsB,YAAY,EAAE,CAACvB,6BAA6B;AAChD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EntryWorkflowsFeature } from "./feature.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["EntryWorkflowsFeature"],"sources":["index.ts"],"sourcesContent":["export { EntryWorkflowsFeature } from \"./feature.js\";\n"],"mappings":"AAAA,SAASA,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WorkflowsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { DisallowUnpublishableModelsOnBeforeCreate } from "./handlers/DisallowUnpublishableModelsOnBeforeCreate.js";
|
|
3
|
+
export const WorkflowsFeature = createFeature({
|
|
4
|
+
name: "CmsWorkflows",
|
|
5
|
+
register(container) {
|
|
6
|
+
container.register(DisallowUnpublishableModelsOnBeforeCreate);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","DisallowUnpublishableModelsOnBeforeCreate","WorkflowsFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DisallowUnpublishableModelsOnBeforeCreate } from \"./handlers/DisallowUnpublishableModelsOnBeforeCreate.js\";\n\nexport const WorkflowsFeature = createFeature({\n name: \"CmsWorkflows\",\n register(container) {\n container.register(DisallowUnpublishableModelsOnBeforeCreate);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,yCAAyC;AAElD,OAAO,MAAMC,gBAAgB,GAAGF,aAAa,CAAC;EAC1CG,IAAI,EAAE,cAAc;EACpBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,yCAAyC,CAAC;EACjE;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WorkflowBeforeCreateHandler } from "@webiny/api-workflows/features/workflow/CreateWorkflow/events.js";
|
|
2
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
3
|
+
declare class DisallowUnpublishableModelsOnBeforeCreateImpl implements WorkflowBeforeCreateHandler.Interface {
|
|
4
|
+
private getModelUseCase;
|
|
5
|
+
constructor(getModelUseCase: GetModelUseCase.Interface);
|
|
6
|
+
handle(event: WorkflowBeforeCreateHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const DisallowUnpublishableModelsOnBeforeCreate: typeof DisallowUnpublishableModelsOnBeforeCreateImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<import("@webiny/api-workflows/features/workflow/CreateWorkflow/events.js").WorkflowBeforeCreateEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { WorkflowBeforeCreateHandler } from "@webiny/api-workflows/features/workflow/CreateWorkflow/events.js";
|
|
2
|
+
import { getModelIdFromAppName } from "../../../utils/appName.js";
|
|
3
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
4
|
+
class DisallowUnpublishableModelsOnBeforeCreateImpl {
|
|
5
|
+
constructor(getModelUseCase) {
|
|
6
|
+
this.getModelUseCase = getModelUseCase;
|
|
7
|
+
}
|
|
8
|
+
async handle(event) {
|
|
9
|
+
const {
|
|
10
|
+
workflow
|
|
11
|
+
} = event.payload;
|
|
12
|
+
const modelId = getModelIdFromAppName(workflow.app);
|
|
13
|
+
if (!modelId) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const model = await this.getModelUseCase.execute(modelId);
|
|
17
|
+
if (model.isFail()) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const tags = model.value.tags || [];
|
|
21
|
+
if (tags.includes("$publishing:false") === false) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`Cannot create a workflow for the model "${modelId}" because it is marked as unpublishable.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export const DisallowUnpublishableModelsOnBeforeCreate = WorkflowBeforeCreateHandler.createImplementation({
|
|
28
|
+
implementation: DisallowUnpublishableModelsOnBeforeCreateImpl,
|
|
29
|
+
dependencies: [GetModelUseCase]
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=DisallowUnpublishableModelsOnBeforeCreate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WorkflowBeforeCreateHandler","getModelIdFromAppName","GetModelUseCase","DisallowUnpublishableModelsOnBeforeCreateImpl","constructor","getModelUseCase","handle","event","workflow","payload","modelId","app","model","execute","isFail","tags","value","includes","Error","DisallowUnpublishableModelsOnBeforeCreate","createImplementation","implementation","dependencies"],"sources":["DisallowUnpublishableModelsOnBeforeCreate.ts"],"sourcesContent":["import { WorkflowBeforeCreateHandler } from \"@webiny/api-workflows/features/workflow/CreateWorkflow/events.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\n\nclass DisallowUnpublishableModelsOnBeforeCreateImpl\n implements WorkflowBeforeCreateHandler.Interface\n{\n public constructor(private getModelUseCase: GetModelUseCase.Interface) {}\n\n public async handle(event: WorkflowBeforeCreateHandler.Event): Promise<void> {\n const { workflow } = event.payload;\n const modelId = getModelIdFromAppName(workflow.app);\n if (!modelId) {\n return;\n }\n const model = await this.getModelUseCase.execute(modelId);\n if (model.isFail()) {\n return;\n }\n const tags = model.value.tags || [];\n if (tags.includes(\"$publishing:false\") === false) {\n return;\n }\n throw new Error(\n `Cannot create a workflow for the model \"${modelId}\" because it is marked as unpublishable.`\n );\n }\n}\n\nexport const DisallowUnpublishableModelsOnBeforeCreate =\n WorkflowBeforeCreateHandler.createImplementation({\n implementation: DisallowUnpublishableModelsOnBeforeCreateImpl,\n dependencies: [GetModelUseCase]\n });\n"],"mappings":"AAAA,SAASA,2BAA2B,QAAQ,kEAAkE;AAC9G,SAASC,qBAAqB;AAC9B,SAASC,eAAe,QAAQ,kEAAkE;AAElG,MAAMC,6CAA6C,CAEnD;EACWC,WAAWA,CAASC,eAA0C,EAAE;IAAA,KAA5CA,eAA0C,GAA1CA,eAA0C;EAAG;EAExE,MAAaC,MAAMA,CAACC,KAAwC,EAAiB;IACzE,MAAM;MAAEC;IAAS,CAAC,GAAGD,KAAK,CAACE,OAAO;IAClC,MAAMC,OAAO,GAAGT,qBAAqB,CAACO,QAAQ,CAACG,GAAG,CAAC;IACnD,IAAI,CAACD,OAAO,EAAE;MACV;IACJ;IACA,MAAME,KAAK,GAAG,MAAM,IAAI,CAACP,eAAe,CAACQ,OAAO,CAACH,OAAO,CAAC;IACzD,IAAIE,KAAK,CAACE,MAAM,CAAC,CAAC,EAAE;MAChB;IACJ;IACA,MAAMC,IAAI,GAAGH,KAAK,CAACI,KAAK,CAACD,IAAI,IAAI,EAAE;IACnC,IAAIA,IAAI,CAACE,QAAQ,CAAC,mBAAmB,CAAC,KAAK,KAAK,EAAE;MAC9C;IACJ;IACA,MAAM,IAAIC,KAAK,CACX,2CAA2CR,OAAO,0CACtD,CAAC;EACL;AACJ;AAEA,OAAO,MAAMS,yCAAyC,GAClDnB,2BAA2B,CAACoB,oBAAoB,CAAC;EAC7CC,cAAc,EAAElB,6CAA6C;EAC7DmB,YAAY,EAAE,CAACpB,eAAe;AAClC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { WorkflowsFeature } from "./feature.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WorkflowsFeature"],"sources":["index.ts"],"sourcesContent":["export { WorkflowsFeature } from \"./feature.js\";\n"],"mappings":"AAAA,SAASA,gBAAgB","ignoreList":[]}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createHeadlessCmsWorkflows: () => import("@webiny/api").ContextPlugin<import("@webiny/api/types.js").Context>;
|
package/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createContextPlugin } from "@webiny/api";
|
|
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
|
+
export const createHeadlessCmsWorkflows = () => {
|
|
6
|
+
const plugin = createContextPlugin(async context => {
|
|
7
|
+
const wcpContext = context.container.resolve(WcpContext);
|
|
8
|
+
if (!wcpContext.canUseWorkflows()) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Register features
|
|
13
|
+
EntryWorkflowsFeature.register(context.container, context);
|
|
14
|
+
WorkflowsFeature.register(context.container);
|
|
15
|
+
});
|
|
16
|
+
plugin.name = "headless-cms-workflows.context";
|
|
17
|
+
return plugin;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContextPlugin","EntryWorkflowsFeature","WcpContext","WorkflowsFeature","createHeadlessCmsWorkflows","plugin","context","wcpContext","container","resolve","canUseWorkflows","register","name"],"sources":["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, context);\n WorkflowsFeature.register(context.container);\n });\n\n plugin.name = \"headless-cms-workflows.context\";\n\n return plugin;\n};\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,aAAa;AACjD,SAASC,qBAAqB;AAC9B,SAASC,UAAU,QAAQ,mDAAmD;AAC9E,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,0BAA0B,GAAGA,CAAA,KAAM;EAC5C,MAAMC,MAAM,GAAGL,mBAAmB,CAAC,MAAMM,OAAO,IAAI;IAChD,MAAMC,UAAU,GAAGD,OAAO,CAACE,SAAS,CAACC,OAAO,CAACP,UAAU,CAAC;IAExD,IAAI,CAACK,UAAU,CAACG,eAAe,CAAC,CAAC,EAAE;MAC/B;IACJ;;IAEA;IACAT,qBAAqB,CAACU,QAAQ,CAACL,OAAO,CAACE,SAAS,EAAEF,OAAO,CAAC;IAC1DH,gBAAgB,CAACQ,QAAQ,CAACL,OAAO,CAACE,SAAS,CAAC;EAChD,CAAC,CAAC;EAEFH,MAAM,CAACO,IAAI,GAAG,gCAAgC;EAE9C,OAAOP,MAAM;AACjB,CAAC","ignoreList":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@webiny/api-headless-cms-workflows",
|
|
3
|
+
"version": "0.0.0-unstable.61c048f412",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"description": "Headless CMS Workflows",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"api-headless-cms-workflows:base"
|
|
9
|
+
],
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/webiny/webiny-js.git",
|
|
13
|
+
"directory": "packages/api-headless-cms-workflows"
|
|
14
|
+
},
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@webiny/api": "0.0.0-unstable.61c048f412",
|
|
18
|
+
"@webiny/api-core": "0.0.0-unstable.61c048f412",
|
|
19
|
+
"@webiny/api-headless-cms": "0.0.0-unstable.61c048f412",
|
|
20
|
+
"@webiny/api-workflows": "0.0.0-unstable.61c048f412",
|
|
21
|
+
"@webiny/error": "0.0.0-unstable.61c048f412",
|
|
22
|
+
"@webiny/feature": "0.0.0-unstable.61c048f412"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@webiny/build-tools": "0.0.0-unstable.61c048f412",
|
|
26
|
+
"@webiny/plugins": "0.0.0-unstable.61c048f412",
|
|
27
|
+
"@webiny/project-utils": "0.0.0-unstable.61c048f412",
|
|
28
|
+
"@webiny/testing": "0.0.0-unstable.61c048f412",
|
|
29
|
+
"@webiny/wcp": "0.0.0-unstable.61c048f412",
|
|
30
|
+
"typescript": "5.9.3",
|
|
31
|
+
"vitest": "3.2.4"
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public",
|
|
35
|
+
"directory": "dist"
|
|
36
|
+
},
|
|
37
|
+
"gitHead": "61c048f412d6b4aa70c1d105aab21e3fa69730f3"
|
|
38
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
interface IParams {
|
|
3
|
+
model: Pick<CmsModel, "modelId">;
|
|
4
|
+
}
|
|
5
|
+
export declare const createWorkflowAppName: ({ model }: IParams) => string;
|
|
6
|
+
export declare const getModelIdFromAppName: (app: string) => string | null;
|
|
7
|
+
export {};
|
package/utils/appName.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const createWorkflowAppName = ({
|
|
2
|
+
model
|
|
3
|
+
}) => {
|
|
4
|
+
return `cms.${model.modelId}`;
|
|
5
|
+
};
|
|
6
|
+
export const getModelIdFromAppName = app => {
|
|
7
|
+
const matched = app.match(/^cms\.([a-zA-Z0-9_-]+)$/);
|
|
8
|
+
if (!matched) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return matched ? matched[1] : null;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=appName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createWorkflowAppName","model","modelId","getModelIdFromAppName","app","matched","match"],"sources":["appName.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\n\ninterface IParams {\n model: Pick<CmsModel, \"modelId\">;\n}\nexport const createWorkflowAppName = ({ model }: IParams): string => {\n return `cms.${model.modelId}`;\n};\n\nexport const getModelIdFromAppName = (app: string): string | null => {\n const matched = app.match(/^cms\\.([a-zA-Z0-9_-]+)$/);\n if (!matched) {\n return null;\n }\n return matched ? matched[1] : null;\n};\n"],"mappings":"AAKA,OAAO,MAAMA,qBAAqB,GAAGA,CAAC;EAAEC;AAAe,CAAC,KAAa;EACjE,OAAO,OAAOA,KAAK,CAACC,OAAO,EAAE;AACjC,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAIC,GAAW,IAAoB;EACjE,MAAMC,OAAO,GAAGD,GAAG,CAACE,KAAK,CAAC,yBAAyB,CAAC;EACpD,IAAI,CAACD,OAAO,EAAE;IACV,OAAO,IAAI;EACf;EACA,OAAOA,OAAO,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;AACtC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CMS_MODEL_SINGLETON_TAG } from "@webiny/api-headless-cms/constants.js";
|
|
2
|
+
export const isModelAllowed = model => {
|
|
3
|
+
if (model.isPrivate) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
// TODO remove when we allow singleton models to have workflows.
|
|
7
|
+
else if (model.tags?.includes(CMS_MODEL_SINGLETON_TAG)) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
return true;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=modelAllowed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CMS_MODEL_SINGLETON_TAG","isModelAllowed","model","isPrivate","tags","includes"],"sources":["modelAllowed.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/api-headless-cms/constants.js\";\n\nexport const isModelAllowed = (model: Pick<CmsModel, \"isPrivate\" | \"tags\">): boolean => {\n if (model.isPrivate) {\n return false;\n }\n // TODO remove when we allow singleton models to have workflows.\n else if (model.tags?.includes(CMS_MODEL_SINGLETON_TAG)) {\n return false;\n }\n return true;\n};\n"],"mappings":"AACA,SAASA,uBAAuB,QAAQ,uCAAuC;AAE/E,OAAO,MAAMC,cAAc,GAAIC,KAA2C,IAAc;EACpF,IAAIA,KAAK,CAACC,SAAS,EAAE;IACjB,OAAO,KAAK;EAChB;EACA;EAAA,KACK,IAAID,KAAK,CAACE,IAAI,EAAEC,QAAQ,CAACL,uBAAuB,CAAC,EAAE;IACpD,OAAO,KAAK;EAChB;EACA,OAAO,IAAI;AACf,CAAC","ignoreList":[]}
|
package/utils/state.d.ts
ADDED
package/utils/state.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getStateValues","state","activeStep","currentStep","workflowId","stepId","id","stepName","title"],"sources":["state.ts"],"sourcesContent":["import type { IEntryState } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { WorkflowState } from \"@webiny/api-workflows/domain/workflowState/WorkflowState.js\";\n\nexport const getStateValues = (state: WorkflowState): IEntryState => {\n const activeStep = state.currentStep;\n\n return {\n workflowId: state.workflowId,\n stepId: activeStep.id,\n stepName: activeStep.title,\n state: activeStep.state\n };\n};\n"],"mappings":"AAGA,OAAO,MAAMA,cAAc,GAAIC,KAAoB,IAAkB;EACjE,MAAMC,UAAU,GAAGD,KAAK,CAACE,WAAW;EAEpC,OAAO;IACHC,UAAU,EAAEH,KAAK,CAACG,UAAU;IAC5BC,MAAM,EAAEH,UAAU,CAACI,EAAE;IACrBC,QAAQ,EAAEL,UAAU,CAACM,KAAK;IAC1BP,KAAK,EAAEC,UAAU,CAACD;EACtB,CAAC;AACL,CAAC","ignoreList":[]}
|