@webiny/api-workflows 6.6.0-alpha.0 → 6.6.0-alpha.1
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/WorkflowsFeature.js +55 -2
- package/WorkflowsFeature.js.map +1 -1
- package/domain/workflow/abstractions.d.ts +13 -3
- package/domain/workflow/abstractions.js +2 -2
- package/domain/workflow/abstractions.js.map +1 -1
- package/domain/workflowState/abstractions.d.ts +13 -3
- package/domain/workflowState/abstractions.js +2 -2
- package/domain/workflowState/abstractions.js.map +1 -1
- package/features/WorkflowModelProviders.d.ts +34 -0
- package/features/WorkflowModelProviders.js +40 -0
- package/features/WorkflowModelProviders.js.map +1 -0
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.d.ts +3 -3
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js +6 -5
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js.map +1 -1
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.d.ts +3 -3
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js +6 -5
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js.map +1 -1
- package/features/workflow/GetWorkflow/GetWorkflowRepository.d.ts +3 -3
- package/features/workflow/GetWorkflow/GetWorkflowRepository.js +6 -5
- package/features/workflow/GetWorkflow/GetWorkflowRepository.js.map +1 -1
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.d.ts +3 -3
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.js +7 -6
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.js.map +1 -1
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.d.ts +3 -3
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js +6 -5
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js +6 -5
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js +6 -5
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js +6 -5
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js +6 -5
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.d.ts +3 -3
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js +7 -6
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js.map +1 -1
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js +7 -6
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js.map +1 -1
- package/package.json +13 -16
- package/WorkflowsInitializer.d.ts +0 -19
- package/WorkflowsInitializer.js +0 -97
- package/WorkflowsInitializer.js.map +0 -1
package/WorkflowsFeature.js
CHANGED
|
@@ -1,15 +1,68 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
|
-
import {
|
|
2
|
+
import { FeatureFlags } from "@webiny/api-core/features/featureFlags/abstractions.js";
|
|
3
3
|
import { WorkflowsSchemaFactory } from "./WorkflowsSchemaFactory.js";
|
|
4
4
|
import { WorkflowModel } from "./domain/workflow/workflowModel.js";
|
|
5
5
|
import { WorkflowStateModel } from "./domain/workflowState/stateModel.js";
|
|
6
|
+
import { WorkflowModelProviderImpl, WorkflowStateModelProviderImpl } from "./features/WorkflowModelProviders.js";
|
|
7
|
+
import { WorkflowMapper } from "./domain/workflow/WorkflowMapper.js";
|
|
8
|
+
import { WorkflowStateMapper } from "./domain/workflowState/WorkflowStateMapper.js";
|
|
9
|
+
import { GetWorkflowFeature } from "./features/workflow/GetWorkflow/feature.js";
|
|
10
|
+
import { ListWorkflowsFeature } from "./features/workflow/ListWorkflows/feature.js";
|
|
11
|
+
import { CreateWorkflowFeature } from "./features/workflow/CreateWorkflow/feature.js";
|
|
12
|
+
import { DeleteWorkflowFeature } from "./features/workflow/DeleteWorkflow/feature.js";
|
|
13
|
+
import { UpdateWorkflowFeature } from "./features/workflow/UpdateWorkflow/feature.js";
|
|
14
|
+
import { StoreWorkflowFeature } from "./features/workflow/StoreWorkflow/feature.js";
|
|
15
|
+
import { GetWorkflowStateFeature } from "./features/workflowState/GetWorkflowState/feature.js";
|
|
16
|
+
import { GetTargetWorkflowStateFeature } from "./features/workflowState/GetTargetWorkflowState/feature.js";
|
|
17
|
+
import { ListOwnWorkflowStatesFeature } from "./features/workflowState/ListOwnWorkflowStates/feature.js";
|
|
18
|
+
import { ListWorkflowStatesFeature } from "./features/workflowState/ListWorkflowStates/feature.js";
|
|
19
|
+
import { ListRequestedWorkflowStatesFeature } from "./features/workflowState/ListRequestedWorkflowStates/feature.js";
|
|
20
|
+
import { CreateWorkflowStateFeature } from "./features/workflowState/CreateWorkflowState/feature.js";
|
|
21
|
+
import { UpdateWorkflowStateFeature } from "./features/workflowState/UpdateWorkflowState/feature.js";
|
|
22
|
+
import { CancelWorkflowStateFeature } from "./features/workflowState/CancelWorkflowState/feature.js";
|
|
23
|
+
import { DeleteWorkflowStateFeature } from "./features/workflowState/DeleteWorkflowState/feature.js";
|
|
24
|
+
import { DeleteTargetWorkflowStateFeature } from "./features/workflowState/DeleteTargetWorkflowState/feature.js";
|
|
25
|
+
import { StartWorkflowStateStepFeature } from "./features/workflowState/StartWorkflowStateStep/feature.js";
|
|
26
|
+
import { ApproveWorkflowStateStepFeature } from "./features/workflowState/ApproveWorkflowStateStep/feature.js";
|
|
27
|
+
import { RejectWorkflowStateStepFeature } from "./features/workflowState/RejectWorkflowStateStep/feature.js";
|
|
28
|
+
import { TakeOverWorkflowStateStepFeature } from "./features/workflowState/TakeOverWorkflowStateStep/feature.js";
|
|
29
|
+
import { GetUserTeamsFeature } from "./features/internal/GetUserTeams/feature.js";
|
|
30
|
+
import { ListNotificationTypesFeature } from "./features/notifications/ListNotificationTypes/index.js";
|
|
31
|
+
import { NotificationTransportFeature } from "./features/notifications/NotificationTransport/index.js";
|
|
6
32
|
const WorkflowsFeature = createFeature({
|
|
7
33
|
name: "Workflows",
|
|
8
34
|
register (container) {
|
|
35
|
+
if (!container.resolve(FeatureFlags).get().isEnabled("advancedPublishingWorkflow")) return;
|
|
9
36
|
container.register(WorkflowModel);
|
|
10
37
|
container.register(WorkflowStateModel);
|
|
11
|
-
container.register(WorkflowsInitializer);
|
|
12
38
|
container.register(WorkflowsSchemaFactory);
|
|
39
|
+
container.register(WorkflowModelProviderImpl);
|
|
40
|
+
container.register(WorkflowStateModelProviderImpl);
|
|
41
|
+
container.register(WorkflowMapper);
|
|
42
|
+
container.register(WorkflowStateMapper);
|
|
43
|
+
ListNotificationTypesFeature.register(container);
|
|
44
|
+
NotificationTransportFeature.register(container);
|
|
45
|
+
GetWorkflowFeature.register(container);
|
|
46
|
+
ListWorkflowsFeature.register(container);
|
|
47
|
+
CreateWorkflowFeature.register(container);
|
|
48
|
+
DeleteWorkflowFeature.register(container);
|
|
49
|
+
UpdateWorkflowFeature.register(container);
|
|
50
|
+
StoreWorkflowFeature.register(container);
|
|
51
|
+
GetUserTeamsFeature.register(container);
|
|
52
|
+
GetWorkflowStateFeature.register(container);
|
|
53
|
+
GetTargetWorkflowStateFeature.register(container);
|
|
54
|
+
ListOwnWorkflowStatesFeature.register(container);
|
|
55
|
+
ListWorkflowStatesFeature.register(container);
|
|
56
|
+
ListRequestedWorkflowStatesFeature.register(container);
|
|
57
|
+
CreateWorkflowStateFeature.register(container);
|
|
58
|
+
UpdateWorkflowStateFeature.register(container);
|
|
59
|
+
CancelWorkflowStateFeature.register(container);
|
|
60
|
+
DeleteWorkflowStateFeature.register(container);
|
|
61
|
+
DeleteTargetWorkflowStateFeature.register(container);
|
|
62
|
+
StartWorkflowStateStepFeature.register(container);
|
|
63
|
+
ApproveWorkflowStateStepFeature.register(container);
|
|
64
|
+
RejectWorkflowStateStepFeature.register(container);
|
|
65
|
+
TakeOverWorkflowStateStepFeature.register(container);
|
|
13
66
|
}
|
|
14
67
|
});
|
|
15
68
|
export { WorkflowsFeature };
|
package/WorkflowsFeature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowsFeature.js","sources":["../src/WorkflowsFeature.ts"],"sourcesContent":["import { type Container, createFeature } from \"@webiny/feature/api\";\nimport {
|
|
1
|
+
{"version":3,"file":"WorkflowsFeature.js","sources":["../src/WorkflowsFeature.ts"],"sourcesContent":["import { type Container, createFeature } from \"@webiny/feature/api\";\nimport { FeatureFlags } from \"@webiny/api-core/features/featureFlags/abstractions.js\";\nimport { WorkflowsSchemaFactory } from \"./WorkflowsSchemaFactory.js\";\nimport { WorkflowModel as WorkflowPrivateModel } from \"./domain/workflow/workflowModel.js\";\nimport { WorkflowStateModel as WorkflowStatePrivateModel } from \"./domain/workflowState/stateModel.js\";\nimport {\n WorkflowModelProviderImpl,\n WorkflowStateModelProviderImpl\n} from \"~/features/WorkflowModelProviders.js\";\nimport { WorkflowMapper } from \"~/domain/workflow/WorkflowMapper.js\";\nimport { WorkflowStateMapper } from \"~/domain/workflowState/WorkflowStateMapper.js\";\nimport { GetWorkflowFeature } from \"~/features/workflow/GetWorkflow/feature.js\";\nimport { ListWorkflowsFeature } from \"~/features/workflow/ListWorkflows/feature.js\";\nimport { CreateWorkflowFeature } from \"~/features/workflow/CreateWorkflow/feature.js\";\nimport { DeleteWorkflowFeature } from \"~/features/workflow/DeleteWorkflow/feature.js\";\nimport { UpdateWorkflowFeature } from \"~/features/workflow/UpdateWorkflow/feature.js\";\nimport { StoreWorkflowFeature } from \"~/features/workflow/StoreWorkflow/feature.js\";\nimport { GetWorkflowStateFeature } from \"~/features/workflowState/GetWorkflowState/feature.js\";\nimport { GetTargetWorkflowStateFeature } from \"~/features/workflowState/GetTargetWorkflowState/feature.js\";\nimport { ListOwnWorkflowStatesFeature } from \"~/features/workflowState/ListOwnWorkflowStates/feature.js\";\nimport { ListWorkflowStatesFeature } from \"~/features/workflowState/ListWorkflowStates/feature.js\";\nimport { ListRequestedWorkflowStatesFeature } from \"~/features/workflowState/ListRequestedWorkflowStates/feature.js\";\nimport { CreateWorkflowStateFeature } from \"~/features/workflowState/CreateWorkflowState/feature.js\";\nimport { UpdateWorkflowStateFeature } from \"~/features/workflowState/UpdateWorkflowState/feature.js\";\nimport { CancelWorkflowStateFeature } from \"~/features/workflowState/CancelWorkflowState/feature.js\";\nimport { DeleteWorkflowStateFeature } from \"~/features/workflowState/DeleteWorkflowState/feature.js\";\nimport { DeleteTargetWorkflowStateFeature } from \"~/features/workflowState/DeleteTargetWorkflowState/feature.js\";\nimport { StartWorkflowStateStepFeature } from \"~/features/workflowState/StartWorkflowStateStep/feature.js\";\nimport { ApproveWorkflowStateStepFeature } from \"~/features/workflowState/ApproveWorkflowStateStep/feature.js\";\nimport { RejectWorkflowStateStepFeature } from \"~/features/workflowState/RejectWorkflowStateStep/feature.js\";\nimport { TakeOverWorkflowStateStepFeature } from \"~/features/workflowState/TakeOverWorkflowStateStep/feature.js\";\nimport { GetUserTeamsFeature } from \"~/features/internal/GetUserTeams/feature.js\";\nimport { ListNotificationTypesFeature } from \"~/features/notifications/ListNotificationTypes/index.js\";\nimport { NotificationTransportFeature } from \"./features/notifications/NotificationTransport/index.js\";\n\nexport const WorkflowsFeature = createFeature({\n name: \"Workflows\",\n register(container: Container) {\n // Advanced publishing workflow is license-gated. Check the effective flag at register time\n // (the license is refreshed pre-register) so nothing is wired up without the entitlement.\n if (!container.resolve(FeatureFlags).get().isEnabled(\"advancedPublishingWorkflow\")) {\n return;\n }\n\n // Register private CMS model definitions early so HeadlessCmsInitializerImpl\n // picks them up when it builds the model list during the enhance phase.\n container.register(WorkflowPrivateModel);\n container.register(WorkflowStatePrivateModel);\n container.register(WorkflowsSchemaFactory);\n\n // The per-tenant models are resolved on demand — see WorkflowModelProviders.\n container.register(WorkflowModelProviderImpl);\n container.register(WorkflowStateModelProviderImpl);\n\n container.register(WorkflowMapper);\n container.register(WorkflowStateMapper);\n\n // Notifications\n ListNotificationTypesFeature.register(container);\n NotificationTransportFeature.register(container);\n\n // Workflows\n GetWorkflowFeature.register(container);\n ListWorkflowsFeature.register(container);\n CreateWorkflowFeature.register(container);\n DeleteWorkflowFeature.register(container);\n UpdateWorkflowFeature.register(container);\n StoreWorkflowFeature.register(container);\n\n // Internal\n GetUserTeamsFeature.register(container);\n\n // Workflow state\n GetWorkflowStateFeature.register(container);\n GetTargetWorkflowStateFeature.register(container);\n ListOwnWorkflowStatesFeature.register(container);\n ListWorkflowStatesFeature.register(container);\n ListRequestedWorkflowStatesFeature.register(container);\n CreateWorkflowStateFeature.register(container);\n UpdateWorkflowStateFeature.register(container);\n CancelWorkflowStateFeature.register(container);\n DeleteWorkflowStateFeature.register(container);\n DeleteTargetWorkflowStateFeature.register(container);\n StartWorkflowStateStepFeature.register(container);\n ApproveWorkflowStateStepFeature.register(container);\n RejectWorkflowStateStepFeature.register(container);\n TakeOverWorkflowStateStepFeature.register(container);\n }\n});\n"],"names":["WorkflowsFeature","createFeature","container","FeatureFlags","WorkflowPrivateModel","WorkflowStatePrivateModel","WorkflowsSchemaFactory","WorkflowModelProviderImpl","WorkflowStateModelProviderImpl","WorkflowMapper","WorkflowStateMapper","ListNotificationTypesFeature","NotificationTransportFeature","GetWorkflowFeature","ListWorkflowsFeature","CreateWorkflowFeature","DeleteWorkflowFeature","UpdateWorkflowFeature","StoreWorkflowFeature","GetUserTeamsFeature","GetWorkflowStateFeature","GetTargetWorkflowStateFeature","ListOwnWorkflowStatesFeature","ListWorkflowStatesFeature","ListRequestedWorkflowStatesFeature","CreateWorkflowStateFeature","UpdateWorkflowStateFeature","CancelWorkflowStateFeature","DeleteWorkflowStateFeature","DeleteTargetWorkflowStateFeature","StartWorkflowStateStepFeature","ApproveWorkflowStateStepFeature","RejectWorkflowStateStepFeature","TakeOverWorkflowStateStepFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAoB;QAGzB,IAAI,CAACA,UAAU,OAAO,CAACC,cAAc,GAAG,GAAG,SAAS,CAAC,+BACjD;QAKJD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QAGnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QAEnBN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QAGnBC,6BAA6B,QAAQ,CAACT;QACtCU,6BAA6B,QAAQ,CAACV;QAGtCW,mBAAmB,QAAQ,CAACX;QAC5BY,qBAAqB,QAAQ,CAACZ;QAC9Ba,sBAAsB,QAAQ,CAACb;QAC/Bc,sBAAsB,QAAQ,CAACd;QAC/Be,sBAAsB,QAAQ,CAACf;QAC/BgB,qBAAqB,QAAQ,CAAChB;QAG9BiB,oBAAoB,QAAQ,CAACjB;QAG7BkB,wBAAwB,QAAQ,CAAClB;QACjCmB,8BAA8B,QAAQ,CAACnB;QACvCoB,6BAA6B,QAAQ,CAACpB;QACtCqB,0BAA0B,QAAQ,CAACrB;QACnCsB,mCAAmC,QAAQ,CAACtB;QAC5CuB,2BAA2B,QAAQ,CAACvB;QACpCwB,2BAA2B,QAAQ,CAACxB;QACpCyB,2BAA2B,QAAQ,CAACzB;QACpC0B,2BAA2B,QAAQ,CAAC1B;QACpC2B,iCAAiC,QAAQ,CAAC3B;QAC1C4B,8BAA8B,QAAQ,CAAC5B;QACvC6B,gCAAgC,QAAQ,CAAC7B;QACzC8B,+BAA+B,QAAQ,CAAC9B;QACxC+B,iCAAiC,QAAQ,CAAC/B;IAC9C;AACJ"}
|
|
@@ -23,9 +23,19 @@ export interface IWorkflowValues {
|
|
|
23
23
|
export interface IWorkflow extends IWorkflowValues {
|
|
24
24
|
id: string;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Provides the tenant's workflow CMS model.
|
|
28
|
+
*
|
|
29
|
+
* A provider rather than the model itself: fetching a model is asynchronous and tenant-dependent,
|
|
30
|
+
* while DI resolution is synchronous — so an already-resolved `CmsModel` could only be supplied by a
|
|
31
|
+
* per-request hook running before every consumer. Consumers `await get()` at the point of use.
|
|
32
|
+
*/
|
|
33
|
+
export interface IWorkflowModelProvider {
|
|
34
|
+
get(): Promise<CmsModel>;
|
|
35
|
+
}
|
|
36
|
+
export declare const WorkflowModelProvider: import("@webiny/di").Abstraction<IWorkflowModelProvider>;
|
|
37
|
+
export declare namespace WorkflowModelProvider {
|
|
38
|
+
type Interface = IWorkflowModelProvider;
|
|
29
39
|
}
|
|
30
40
|
export interface IWorkflowMapper {
|
|
31
41
|
fromCmsEntry(input: CmsEntry<Omit<IWorkflow, "id">>): IWorkflow;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
const
|
|
2
|
+
const WorkflowModelProvider = createAbstraction("WorkflowModelProvider");
|
|
3
3
|
const WorkflowMapper = createAbstraction("WorkflowMapper");
|
|
4
|
-
export { WorkflowMapper,
|
|
4
|
+
export { WorkflowMapper, WorkflowModelProvider };
|
|
5
5
|
|
|
6
6
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain/workflow/abstractions.js","sources":["../../../src/domain/workflow/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport type { NonEmptyArray } from \"@webiny/api/types.js\";\nimport type { IWorkflowInput } from \"~/features/shared/abstractions.js\";\n\nexport interface IWorkflowStepNotification {\n id: string;\n}\n\nexport interface IWorkflowStepTeam {\n id: string;\n}\n\nexport interface IWorkflowStep {\n id: string;\n title: string;\n color: string;\n description?: string;\n teams: NonEmptyArray<IWorkflowStepTeam>;\n notifications?: IWorkflowStepNotification[];\n}\n\nexport interface IWorkflowValues {\n app: string;\n name: string;\n steps: NonEmptyArray<IWorkflowStep>;\n}\n\nexport interface IWorkflow extends IWorkflowValues {\n id: string;\n}\n\n// Abstractions\nexport const
|
|
1
|
+
{"version":3,"file":"domain/workflow/abstractions.js","sources":["../../../src/domain/workflow/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport type { NonEmptyArray } from \"@webiny/api/types.js\";\nimport type { IWorkflowInput } from \"~/features/shared/abstractions.js\";\n\nexport interface IWorkflowStepNotification {\n id: string;\n}\n\nexport interface IWorkflowStepTeam {\n id: string;\n}\n\nexport interface IWorkflowStep {\n id: string;\n title: string;\n color: string;\n description?: string;\n teams: NonEmptyArray<IWorkflowStepTeam>;\n notifications?: IWorkflowStepNotification[];\n}\n\nexport interface IWorkflowValues {\n app: string;\n name: string;\n steps: NonEmptyArray<IWorkflowStep>;\n}\n\nexport interface IWorkflow extends IWorkflowValues {\n id: string;\n}\n\n// Abstractions\n/**\n * Provides the tenant's workflow CMS model.\n *\n * A provider rather than the model itself: fetching a model is asynchronous and tenant-dependent,\n * while DI resolution is synchronous — so an already-resolved `CmsModel` could only be supplied by a\n * per-request hook running before every consumer. Consumers `await get()` at the point of use.\n */\nexport interface IWorkflowModelProvider {\n get(): Promise<CmsModel>;\n}\n\nexport const WorkflowModelProvider =\n createAbstraction<IWorkflowModelProvider>(\"WorkflowModelProvider\");\n\nexport namespace WorkflowModelProvider {\n export type Interface = IWorkflowModelProvider;\n}\n\nexport interface IWorkflowMapper {\n fromCmsEntry(input: CmsEntry<Omit<IWorkflow, \"id\">>): IWorkflow;\n toCmsEntry(input: IWorkflowInput): IWorkflow;\n}\n\nexport const WorkflowMapper = createAbstraction<IWorkflowMapper>(\"WorkflowMapper\");\n\nexport namespace WorkflowMapper {\n export type Interface = IWorkflowMapper;\n}\n"],"names":["WorkflowModelProvider","createAbstraction","WorkflowMapper"],"mappings":";AA4CO,MAAMA,wBACTC,kBAA0C;AAWvC,MAAMC,iBAAiBD,kBAAmC"}
|
|
@@ -60,9 +60,19 @@ export interface IWorkflowState {
|
|
|
60
60
|
readonly nextStep: IEnrichedWorkflowStateRecordStep | null;
|
|
61
61
|
readonly previousStep: IEnrichedWorkflowStateRecordStep | null;
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Provides the tenant's workflow state CMS model.
|
|
65
|
+
*
|
|
66
|
+
* A provider rather than the model itself: fetching a model is asynchronous and tenant-dependent,
|
|
67
|
+
* while DI resolution is synchronous — so an already-resolved `CmsModel` could only be supplied by a
|
|
68
|
+
* per-request hook running before every consumer. Consumers `await get()` at the point of use.
|
|
69
|
+
*/
|
|
70
|
+
export interface IWorkflowStateModelProvider {
|
|
71
|
+
get(): Promise<CmsModel>;
|
|
72
|
+
}
|
|
73
|
+
export declare const WorkflowStateModelProvider: import("@webiny/di").Abstraction<IWorkflowStateModelProvider>;
|
|
74
|
+
export declare namespace WorkflowStateModelProvider {
|
|
75
|
+
type Interface = IWorkflowStateModelProvider;
|
|
66
76
|
}
|
|
67
77
|
export type IWorkflowStateTransformerFromCmsEntryInput = CmsEntry<Omit<IWorkflowStateRecord, "id" | "savedOn" | "createdOn" | "savedBy" | "createdBy">>;
|
|
68
78
|
export type IWorkflowStateTransformerFromCmsEntryOutput = IWorkflowStateRecord;
|
|
@@ -6,8 +6,8 @@ var abstractions_WorkflowStateRecordState = /*#__PURE__*/ function(WorkflowState
|
|
|
6
6
|
WorkflowStateRecordState["rejected"] = "rejected";
|
|
7
7
|
return WorkflowStateRecordState;
|
|
8
8
|
}({});
|
|
9
|
-
const
|
|
9
|
+
const WorkflowStateModelProvider = createAbstraction("WorkflowStateModelProvider");
|
|
10
10
|
const WorkflowStateMapper = createAbstraction("WorkflowStateMapper");
|
|
11
|
-
export { WorkflowStateMapper,
|
|
11
|
+
export { WorkflowStateMapper, WorkflowStateModelProvider, abstractions_WorkflowStateRecordState as WorkflowStateRecordState };
|
|
12
12
|
|
|
13
13
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain/workflowState/abstractions.js","sources":["../../../src/domain/workflowState/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport type { IWorkflowStep } from \"../workflow/abstractions.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport enum WorkflowStateRecordState {\n pending = \"pending\",\n inReview = \"inReview\",\n approved = \"approved\",\n rejected = \"rejected\"\n}\n\nexport interface IWorkflowStateIdentity {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface IWorkflowStateRecordStep extends IWorkflowStep {\n state: WorkflowStateRecordState;\n comment: string | null;\n savedBy: IWorkflowStateIdentity | null;\n}\n\nexport interface IWorkflowStateRecord<\n Steps extends IWorkflowStateRecordStep = IWorkflowStateRecordStep\n> {\n id: string;\n app: string;\n title: string;\n workflowId: string;\n targetId: string;\n targetRevisionId: string;\n isActive: boolean;\n comment: string | undefined;\n state: WorkflowStateRecordState;\n steps: Steps[];\n createdOn: Date;\n savedOn: Date;\n createdBy: IWorkflowStateIdentity;\n savedBy: IWorkflowStateIdentity;\n targetContext: GenericRecord;\n}\n\nexport interface IEnrichedWorkflowStateRecordStep extends IWorkflowStateRecordStep {\n isOwner: boolean;\n canTakeOver: boolean;\n canReview: boolean;\n}\n\nexport interface IWorkflowState {\n readonly id: string;\n readonly app: string;\n readonly title: string;\n readonly workflowId: string;\n readonly targetId: string;\n readonly targetRevisionId: string;\n readonly isActive: boolean;\n readonly comment: string | undefined;\n readonly state: WorkflowStateRecordState;\n readonly steps: IEnrichedWorkflowStateRecordStep[];\n readonly createdOn: Date;\n readonly savedOn: Date;\n readonly createdBy: IWorkflowStateIdentity;\n readonly savedBy: IWorkflowStateIdentity;\n readonly targetContext: GenericRecord;\n readonly done: boolean;\n readonly currentStep: IEnrichedWorkflowStateRecordStep;\n readonly nextStep: IEnrichedWorkflowStateRecordStep | null;\n readonly previousStep: IEnrichedWorkflowStateRecordStep | null;\n}\n\n// Abstractions\nexport const
|
|
1
|
+
{"version":3,"file":"domain/workflowState/abstractions.js","sources":["../../../src/domain/workflowState/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport type { IWorkflowStep } from \"../workflow/abstractions.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport enum WorkflowStateRecordState {\n pending = \"pending\",\n inReview = \"inReview\",\n approved = \"approved\",\n rejected = \"rejected\"\n}\n\nexport interface IWorkflowStateIdentity {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface IWorkflowStateRecordStep extends IWorkflowStep {\n state: WorkflowStateRecordState;\n comment: string | null;\n savedBy: IWorkflowStateIdentity | null;\n}\n\nexport interface IWorkflowStateRecord<\n Steps extends IWorkflowStateRecordStep = IWorkflowStateRecordStep\n> {\n id: string;\n app: string;\n title: string;\n workflowId: string;\n targetId: string;\n targetRevisionId: string;\n isActive: boolean;\n comment: string | undefined;\n state: WorkflowStateRecordState;\n steps: Steps[];\n createdOn: Date;\n savedOn: Date;\n createdBy: IWorkflowStateIdentity;\n savedBy: IWorkflowStateIdentity;\n targetContext: GenericRecord;\n}\n\nexport interface IEnrichedWorkflowStateRecordStep extends IWorkflowStateRecordStep {\n isOwner: boolean;\n canTakeOver: boolean;\n canReview: boolean;\n}\n\nexport interface IWorkflowState {\n readonly id: string;\n readonly app: string;\n readonly title: string;\n readonly workflowId: string;\n readonly targetId: string;\n readonly targetRevisionId: string;\n readonly isActive: boolean;\n readonly comment: string | undefined;\n readonly state: WorkflowStateRecordState;\n readonly steps: IEnrichedWorkflowStateRecordStep[];\n readonly createdOn: Date;\n readonly savedOn: Date;\n readonly createdBy: IWorkflowStateIdentity;\n readonly savedBy: IWorkflowStateIdentity;\n readonly targetContext: GenericRecord;\n readonly done: boolean;\n readonly currentStep: IEnrichedWorkflowStateRecordStep;\n readonly nextStep: IEnrichedWorkflowStateRecordStep | null;\n readonly previousStep: IEnrichedWorkflowStateRecordStep | null;\n}\n\n// Abstractions\n/**\n * Provides the tenant's workflow state CMS model.\n *\n * A provider rather than the model itself: fetching a model is asynchronous and tenant-dependent,\n * while DI resolution is synchronous — so an already-resolved `CmsModel` could only be supplied by a\n * per-request hook running before every consumer. Consumers `await get()` at the point of use.\n */\nexport interface IWorkflowStateModelProvider {\n get(): Promise<CmsModel>;\n}\n\nexport const WorkflowStateModelProvider = createAbstraction<IWorkflowStateModelProvider>(\n \"WorkflowStateModelProvider\"\n);\n\nexport namespace WorkflowStateModelProvider {\n export type Interface = IWorkflowStateModelProvider;\n}\n\nexport type IWorkflowStateTransformerFromCmsEntryInput = CmsEntry<\n Omit<IWorkflowStateRecord, \"id\" | \"savedOn\" | \"createdOn\" | \"savedBy\" | \"createdBy\">\n>;\n\nexport type IWorkflowStateTransformerFromCmsEntryOutput = IWorkflowStateRecord;\n\nexport type IWorkflowStateTransformerToCmsEntryInput = Omit<\n IWorkflowStateRecord,\n \"savedOn\" | \"createdOn\" | \"savedBy\"\n>;\n\nexport type IWorkflowStateTransformerToCmsEntryOutput = Omit<\n IWorkflowStateRecord,\n \"id\" | \"savedOn\" | \"createdOn\" | \"savedBy\" | \"createdBy\"\n>;\n\nexport interface IWorkflowStateMapper {\n fromCmsEntry(\n input: IWorkflowStateTransformerFromCmsEntryInput\n ): IWorkflowStateTransformerFromCmsEntryOutput;\n toCmsEntry(\n input: IWorkflowStateTransformerToCmsEntryInput\n ): IWorkflowStateTransformerToCmsEntryOutput;\n}\n\nexport const WorkflowStateMapper = createAbstraction<IWorkflowStateMapper>(\"WorkflowStateMapper\");\n\nexport namespace WorkflowStateMapper {\n export type Interface = IWorkflowStateMapper;\n}\n"],"names":["WorkflowStateRecordState","WorkflowStateModelProvider","createAbstraction","WorkflowStateMapper"],"mappings":";AAKO,IAAKA,wCAAwBA,WAAAA,GAAAA,SAAxBA,wBAAwB;;;;;WAAxBA;;AA+EL,MAAMC,6BAA6BC,kBACtC;AAgCG,MAAMC,sBAAsBD,kBAAwC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types";
|
|
2
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
3
|
+
import { WorkflowModelProvider } from "../domain/workflow/abstractions.js";
|
|
4
|
+
import { WorkflowStateModelProvider } from "../domain/workflowState/abstractions.js";
|
|
5
|
+
/**
|
|
6
|
+
* Resolve the tenant's workflow models on demand, replacing the per-request hook
|
|
7
|
+
* (`WorkflowsInitializer`) that used to push already-resolved models into the container.
|
|
8
|
+
*
|
|
9
|
+
* No memoization: `ModelsFetcher` already caches the model list per request (`ModelCache` is a
|
|
10
|
+
* per-request `createMemoryCache()`). No `withoutAuthorization` either — both models are private,
|
|
11
|
+
* and `PrivateModelBuilder` sets `authorization: false`, which short-circuits `canAccessModel()` to
|
|
12
|
+
* true for every identity, so the wrapper the initializer used changed nothing.
|
|
13
|
+
*
|
|
14
|
+
* `GetModelUseCase` is an ordinary constructor dependency: a provider is only constructed when a
|
|
15
|
+
* consumer first awaits `get()`, during request handling — after the CMS has registered everything
|
|
16
|
+
* the use case needs. That timing is what forced the initializer's lazy `container.resolve()`.
|
|
17
|
+
*/
|
|
18
|
+
declare class WorkflowModelProviderImplementation implements WorkflowModelProvider.Interface {
|
|
19
|
+
private getModel;
|
|
20
|
+
constructor(getModel: GetModelUseCase.Interface);
|
|
21
|
+
get(): Promise<CmsModel>;
|
|
22
|
+
}
|
|
23
|
+
declare class WorkflowStateModelProviderImplementation implements WorkflowStateModelProvider.Interface {
|
|
24
|
+
private getModel;
|
|
25
|
+
constructor(getModel: GetModelUseCase.Interface);
|
|
26
|
+
get(): Promise<CmsModel>;
|
|
27
|
+
}
|
|
28
|
+
export declare const WorkflowModelProviderImpl: typeof WorkflowModelProviderImplementation & {
|
|
29
|
+
__abstraction: import("@webiny/di").Abstraction<import("~/domain/workflow/abstractions.js").IWorkflowModelProvider>;
|
|
30
|
+
};
|
|
31
|
+
export declare const WorkflowStateModelProviderImpl: typeof WorkflowStateModelProviderImplementation & {
|
|
32
|
+
__abstraction: import("@webiny/di").Abstraction<import("~/domain/workflowState/abstractions.js").IWorkflowStateModelProvider>;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
2
|
+
import { WorkflowModelProvider } from "../domain/workflow/abstractions.js";
|
|
3
|
+
import { WorkflowStateModelProvider } from "../domain/workflowState/abstractions.js";
|
|
4
|
+
import { WORKFLOW_MODEL_ID } from "../constants.js";
|
|
5
|
+
import { WORKFLOW_STATE_MODEL_ID } from "../domain/workflowState/stateModel.js";
|
|
6
|
+
class WorkflowModelProviderImplementation {
|
|
7
|
+
constructor(getModel){
|
|
8
|
+
this.getModel = getModel;
|
|
9
|
+
}
|
|
10
|
+
async get() {
|
|
11
|
+
const result = await this.getModel.execute(WORKFLOW_MODEL_ID);
|
|
12
|
+
if (result.isFail()) throw result.error;
|
|
13
|
+
return result.value;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class WorkflowStateModelProviderImplementation {
|
|
17
|
+
constructor(getModel){
|
|
18
|
+
this.getModel = getModel;
|
|
19
|
+
}
|
|
20
|
+
async get() {
|
|
21
|
+
const result = await this.getModel.execute(WORKFLOW_STATE_MODEL_ID);
|
|
22
|
+
if (result.isFail()) throw result.error;
|
|
23
|
+
return result.value;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const WorkflowModelProviderImpl = WorkflowModelProvider.createImplementation({
|
|
27
|
+
implementation: WorkflowModelProviderImplementation,
|
|
28
|
+
dependencies: [
|
|
29
|
+
GetModelUseCase
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
const WorkflowStateModelProviderImpl = WorkflowStateModelProvider.createImplementation({
|
|
33
|
+
implementation: WorkflowStateModelProviderImplementation,
|
|
34
|
+
dependencies: [
|
|
35
|
+
GetModelUseCase
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
export { WorkflowModelProviderImpl, WorkflowStateModelProviderImpl };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=WorkflowModelProviders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/WorkflowModelProviders.js","sources":["../../src/features/WorkflowModelProviders.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { WorkflowModelProvider } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowStateModelProvider } from \"~/domain/workflowState/abstractions.js\";\nimport { WORKFLOW_MODEL_ID } from \"~/constants.js\";\nimport { WORKFLOW_STATE_MODEL_ID } from \"~/domain/workflowState/stateModel.js\";\n\n/**\n * Resolve the tenant's workflow models on demand, replacing the per-request hook\n * (`WorkflowsInitializer`) that used to push already-resolved models into the container.\n *\n * No memoization: `ModelsFetcher` already caches the model list per request (`ModelCache` is a\n * per-request `createMemoryCache()`). No `withoutAuthorization` either — both models are private,\n * and `PrivateModelBuilder` sets `authorization: false`, which short-circuits `canAccessModel()` to\n * true for every identity, so the wrapper the initializer used changed nothing.\n *\n * `GetModelUseCase` is an ordinary constructor dependency: a provider is only constructed when a\n * consumer first awaits `get()`, during request handling — after the CMS has registered everything\n * the use case needs. That timing is what forced the initializer's lazy `container.resolve()`.\n */\nclass WorkflowModelProviderImplementation implements WorkflowModelProvider.Interface {\n constructor(private getModel: GetModelUseCase.Interface) {}\n\n async get(): Promise<CmsModel> {\n const result = await this.getModel.execute(WORKFLOW_MODEL_ID);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n }\n}\n\nclass WorkflowStateModelProviderImplementation implements WorkflowStateModelProvider.Interface {\n constructor(private getModel: GetModelUseCase.Interface) {}\n\n async get(): Promise<CmsModel> {\n const result = await this.getModel.execute(WORKFLOW_STATE_MODEL_ID);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n }\n}\n\nexport const WorkflowModelProviderImpl = WorkflowModelProvider.createImplementation({\n implementation: WorkflowModelProviderImplementation,\n dependencies: [GetModelUseCase]\n});\n\nexport const WorkflowStateModelProviderImpl = WorkflowStateModelProvider.createImplementation({\n implementation: WorkflowStateModelProviderImplementation,\n dependencies: [GetModelUseCase]\n});\n"],"names":["WorkflowModelProviderImplementation","getModel","result","WORKFLOW_MODEL_ID","WorkflowStateModelProviderImplementation","WORKFLOW_STATE_MODEL_ID","WorkflowModelProviderImpl","WorkflowModelProvider","GetModelUseCase","WorkflowStateModelProviderImpl","WorkflowStateModelProvider"],"mappings":";;;;;AAoBA,MAAMA;IACF,YAAoBC,QAAmC,CAAE;aAArCA,QAAQ,GAARA;IAAsC;IAE1D,MAAM,MAAyB;QAC3B,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACC;QAC3C,IAAID,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;QAEtB,OAAOA,OAAO,KAAK;IACvB;AACJ;AAEA,MAAME;IACF,YAAoBH,QAAmC,CAAE;aAArCA,QAAQ,GAARA;IAAsC;IAE1D,MAAM,MAAyB;QAC3B,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACG;QAC3C,IAAIH,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;QAEtB,OAAOA,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMI,4BAA4BC,sBAAsB,oBAAoB,CAAC;IAChF,gBAAgBP;IAChB,cAAc;QAACQ;KAAgB;AACnC;AAEO,MAAMC,iCAAiCC,2BAA2B,oBAAoB,CAAC;IAC1F,gBAAgBN;IAChB,cAAc;QAACI;KAAgB;AACnC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
|
|
2
|
-
import { WorkflowMapper,
|
|
2
|
+
import { WorkflowMapper, WorkflowModelProvider } from "../../../domain/workflow/abstractions.js";
|
|
3
3
|
import { CreateWorkflowRepository as Repository } from "./abstractions.js";
|
|
4
4
|
declare class CreateWorkflowRepositoryImpl implements Repository.Interface {
|
|
5
5
|
private createEntry;
|
|
6
|
-
private
|
|
6
|
+
private modelProvider;
|
|
7
7
|
private mapper;
|
|
8
|
-
constructor(createEntry: CreateEntryUseCase.Interface,
|
|
8
|
+
constructor(createEntry: CreateEntryUseCase.Interface, modelProvider: WorkflowModelProvider.Interface, mapper: WorkflowMapper.Interface);
|
|
9
9
|
execute(input: Repository.Input): Repository.Return;
|
|
10
10
|
}
|
|
11
11
|
export declare const CreateWorkflowRepository: typeof CreateWorkflowRepositoryImpl & {
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { parseIdentifier } from "@webiny/utils/parseIdentifier.js";
|
|
3
3
|
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
|
|
4
|
-
import { WorkflowMapper,
|
|
4
|
+
import { WorkflowMapper, WorkflowModelProvider } from "../../../domain/workflow/abstractions.js";
|
|
5
5
|
import { WorkflowPersistenceError } from "../../../domain/workflow/errors.js";
|
|
6
6
|
import { CreateWorkflowRepository } from "./abstractions.js";
|
|
7
7
|
class CreateWorkflowRepositoryImpl {
|
|
8
|
-
constructor(createEntry,
|
|
8
|
+
constructor(createEntry, modelProvider, mapper){
|
|
9
9
|
this.createEntry = createEntry;
|
|
10
|
-
this.
|
|
10
|
+
this.modelProvider = modelProvider;
|
|
11
11
|
this.mapper = mapper;
|
|
12
12
|
}
|
|
13
13
|
async execute(input) {
|
|
14
|
+
const model = await this.modelProvider.get();
|
|
14
15
|
const { id } = parseIdentifier(input.id);
|
|
15
16
|
const values = this.mapper.toCmsEntry({
|
|
16
17
|
id,
|
|
@@ -19,7 +20,7 @@ class CreateWorkflowRepositoryImpl {
|
|
|
19
20
|
steps: input.steps
|
|
20
21
|
});
|
|
21
22
|
try {
|
|
22
|
-
const createResult = await this.createEntry.execute(
|
|
23
|
+
const createResult = await this.createEntry.execute(model, {
|
|
23
24
|
id,
|
|
24
25
|
values
|
|
25
26
|
});
|
|
@@ -37,7 +38,7 @@ const CreateWorkflowRepository_CreateWorkflowRepository = CreateWorkflowReposito
|
|
|
37
38
|
implementation: CreateWorkflowRepositoryImpl,
|
|
38
39
|
dependencies: [
|
|
39
40
|
CreateEntryUseCase,
|
|
40
|
-
|
|
41
|
+
WorkflowModelProvider,
|
|
41
42
|
WorkflowMapper
|
|
42
43
|
]
|
|
43
44
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/workflow/CreateWorkflow/CreateWorkflowRepository.js","sources":["../../../../src/features/workflow/CreateWorkflow/CreateWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"features/workflow/CreateWorkflow/CreateWorkflowRepository.js","sources":["../../../../src/features/workflow/CreateWorkflow/CreateWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport {\n type IWorkflow,\n WorkflowMapper,\n WorkflowModelProvider\n} from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { CreateWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass CreateWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private modelProvider: WorkflowModelProvider.Interface,\n private mapper: WorkflowMapper.Interface\n ) {}\n\n async execute(input: Repository.Input): Repository.Return {\n const model = await this.modelProvider.get();\n const { id } = parseIdentifier(input.id);\n\n const values = this.mapper.toCmsEntry({\n id,\n app: input.app,\n name: input.name,\n steps: input.steps\n });\n try {\n const createResult = await this.createEntry.execute<IWorkflow>(model, {\n id,\n values\n });\n\n if (createResult.isFail()) {\n return Result.fail(new WorkflowPersistenceError(createResult.error));\n }\n\n return Result.ok({ ...values, id });\n } catch (error) {\n return Result.fail(new WorkflowPersistenceError(error));\n }\n }\n}\n\nexport const CreateWorkflowRepository = Repository.createImplementation({\n implementation: CreateWorkflowRepositoryImpl,\n dependencies: [CreateEntryUseCase, WorkflowModelProvider, WorkflowMapper]\n});\n"],"names":["CreateWorkflowRepositoryImpl","createEntry","modelProvider","mapper","input","model","id","parseIdentifier","values","createResult","Result","WorkflowPersistenceError","error","CreateWorkflowRepository","Repository","CreateEntryUseCase","WorkflowModelProvider","WorkflowMapper"],"mappings":";;;;;;AAWA,MAAMA;IACF,YACYC,WAAyC,EACzCC,aAA8C,EAC9CC,MAAgC,CAC1C;aAHUF,WAAW,GAAXA;aACAC,aAAa,GAAbA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,KAAuB,EAAqB;QACtD,MAAMC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG;QAC1C,MAAM,EAAEC,EAAE,EAAE,GAAGC,gBAAgBH,MAAM,EAAE;QAEvC,MAAMI,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAClCF;YACA,KAAKF,MAAM,GAAG;YACd,MAAMA,MAAM,IAAI;YAChB,OAAOA,MAAM,KAAK;QACtB;QACA,IAAI;YACA,MAAMK,eAAe,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAYJ,OAAO;gBAClEC;gBACAE;YACJ;YAEA,IAAIC,aAAa,MAAM,IACnB,OAAOC,OAAO,IAAI,CAAC,IAAIC,yBAAyBF,aAAa,KAAK;YAGtE,OAAOC,OAAO,EAAE,CAAC;gBAAE,GAAGF,MAAM;gBAAEF;YAAG;QACrC,EAAE,OAAOM,OAAO;YACZ,OAAOF,OAAO,IAAI,CAAC,IAAIC,yBAAyBC;QACpD;IACJ;AACJ;AAEO,MAAMC,oDAA2BC,yBAAAA,oBAA+B,CAAC;IACpE,gBAAgBd;IAChB,cAAc;QAACe;QAAoBC;QAAuBC;KAAe;AAC7E"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { WorkflowModelProvider } from "../../../domain/workflow/abstractions.js";
|
|
3
3
|
import { DeleteWorkflowRepository as Repository } from "./abstractions.js";
|
|
4
4
|
declare class DeleteWorkflowRepositoryImpl implements Repository.Interface {
|
|
5
5
|
private deleteEntry;
|
|
6
|
-
private
|
|
7
|
-
constructor(deleteEntry: DeleteEntryUseCase.Interface,
|
|
6
|
+
private modelProvider;
|
|
7
|
+
constructor(deleteEntry: DeleteEntryUseCase.Interface, modelProvider: WorkflowModelProvider.Interface);
|
|
8
8
|
execute(input: Repository.Params): Repository.Return;
|
|
9
9
|
}
|
|
10
10
|
export declare const DeleteWorkflowRepository: typeof DeleteWorkflowRepositoryImpl & {
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { createIdentifier } from "@webiny/utils";
|
|
3
3
|
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
|
|
4
|
-
import {
|
|
4
|
+
import { WorkflowModelProvider } from "../../../domain/workflow/abstractions.js";
|
|
5
5
|
import { WorkflowPersistenceError } from "../../../domain/workflow/errors.js";
|
|
6
6
|
import { DeleteWorkflowRepository } from "./abstractions.js";
|
|
7
7
|
class DeleteWorkflowRepositoryImpl {
|
|
8
|
-
constructor(deleteEntry,
|
|
8
|
+
constructor(deleteEntry, modelProvider){
|
|
9
9
|
this.deleteEntry = deleteEntry;
|
|
10
|
-
this.
|
|
10
|
+
this.modelProvider = modelProvider;
|
|
11
11
|
}
|
|
12
12
|
async execute(input) {
|
|
13
|
+
const model = await this.modelProvider.get();
|
|
13
14
|
const workflowId = createIdentifier({
|
|
14
15
|
id: input.id,
|
|
15
16
|
version: 1
|
|
16
17
|
});
|
|
17
18
|
try {
|
|
18
|
-
const result = await this.deleteEntry.execute(
|
|
19
|
+
const result = await this.deleteEntry.execute(model, workflowId);
|
|
19
20
|
if (result.isFail()) return Result.fail(new WorkflowPersistenceError(result.error));
|
|
20
21
|
return Result.ok();
|
|
21
22
|
} catch (error) {
|
|
@@ -27,7 +28,7 @@ const DeleteWorkflowRepository_DeleteWorkflowRepository = DeleteWorkflowReposito
|
|
|
27
28
|
implementation: DeleteWorkflowRepositoryImpl,
|
|
28
29
|
dependencies: [
|
|
29
30
|
DeleteEntryUseCase,
|
|
30
|
-
|
|
31
|
+
WorkflowModelProvider
|
|
31
32
|
]
|
|
32
33
|
});
|
|
33
34
|
export { DeleteWorkflowRepository_DeleteWorkflowRepository as DeleteWorkflowRepository };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js","sources":["../../../../src/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js","sources":["../../../../src/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport { WorkflowModelProvider } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { DeleteWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass DeleteWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private deleteEntry: DeleteEntryUseCase.Interface,\n private modelProvider: WorkflowModelProvider.Interface\n ) {}\n\n async execute(input: Repository.Params): Repository.Return {\n const model = await this.modelProvider.get();\n const workflowId = createIdentifier({\n id: input.id,\n version: 1\n });\n\n try {\n const result = await this.deleteEntry.execute(model, workflowId);\n\n if (result.isFail()) {\n return Result.fail(new WorkflowPersistenceError(result.error));\n }\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new WorkflowPersistenceError(error as Error));\n }\n }\n}\n\nexport const DeleteWorkflowRepository = Repository.createImplementation({\n implementation: DeleteWorkflowRepositoryImpl,\n dependencies: [DeleteEntryUseCase, WorkflowModelProvider]\n});\n"],"names":["DeleteWorkflowRepositoryImpl","deleteEntry","modelProvider","input","model","workflowId","createIdentifier","result","Result","WorkflowPersistenceError","error","DeleteWorkflowRepository","Repository","DeleteEntryUseCase","WorkflowModelProvider"],"mappings":";;;;;;AAOA,MAAMA;IACF,YACYC,WAAyC,EACzCC,aAA8C,CACxD;aAFUD,WAAW,GAAXA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,KAAwB,EAAqB;QACvD,MAAMC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG;QAC1C,MAAMC,aAAaC,iBAAiB;YAChC,IAAIH,MAAM,EAAE;YACZ,SAAS;QACb;QAEA,IAAI;YACA,MAAMI,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACH,OAAOC;YAErD,IAAIE,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAAC,IAAIC,yBAAyBF,OAAO,KAAK;YAGhE,OAAOC,OAAO,EAAE;QACpB,EAAE,OAAOE,OAAO;YACZ,OAAOF,OAAO,IAAI,CAAC,IAAIC,yBAAyBC;QACpD;IACJ;AACJ;AAEO,MAAMC,oDAA2BC,yBAAAA,oBAA+B,CAAC;IACpE,gBAAgBZ;IAChB,cAAc;QAACa;QAAoBC;KAAsB;AAC7D"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
|
|
2
|
-
import { WorkflowMapper,
|
|
2
|
+
import { WorkflowMapper, WorkflowModelProvider } from "../../../domain/workflow/abstractions.js";
|
|
3
3
|
import { GetWorkflowRepository as Repository } from "./abstractions.js";
|
|
4
4
|
declare class GetWorkflowRepositoryImpl implements Repository.Interface {
|
|
5
5
|
private getEntryById;
|
|
6
|
-
private
|
|
6
|
+
private modelProvider;
|
|
7
7
|
private mapper;
|
|
8
|
-
constructor(getEntryById: GetEntryByIdUseCase.Interface,
|
|
8
|
+
constructor(getEntryById: GetEntryByIdUseCase.Interface, modelProvider: WorkflowModelProvider.Interface, mapper: WorkflowMapper.Interface);
|
|
9
9
|
execute(input: Repository.Params): Repository.Return;
|
|
10
10
|
}
|
|
11
11
|
export declare const GetWorkflowRepository: typeof GetWorkflowRepositoryImpl & {
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { createIdentifier } from "@webiny/utils";
|
|
3
3
|
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
|
|
4
|
-
import { WorkflowMapper,
|
|
4
|
+
import { WorkflowMapper, WorkflowModelProvider } from "../../../domain/workflow/abstractions.js";
|
|
5
5
|
import { WorkflowNotFoundError, WorkflowPersistenceError } from "../../../domain/workflow/errors.js";
|
|
6
6
|
import { GetWorkflowRepository } from "./abstractions.js";
|
|
7
7
|
class GetWorkflowRepositoryImpl {
|
|
8
|
-
constructor(getEntryById,
|
|
8
|
+
constructor(getEntryById, modelProvider, mapper){
|
|
9
9
|
this.getEntryById = getEntryById;
|
|
10
|
-
this.
|
|
10
|
+
this.modelProvider = modelProvider;
|
|
11
11
|
this.mapper = mapper;
|
|
12
12
|
}
|
|
13
13
|
async execute(input) {
|
|
14
|
+
const model = await this.modelProvider.get();
|
|
14
15
|
const id = createIdentifier({
|
|
15
16
|
id: input.id,
|
|
16
17
|
version: 1
|
|
17
18
|
});
|
|
18
|
-
const entryResult = await this.getEntryById.execute(
|
|
19
|
+
const entryResult = await this.getEntryById.execute(model, id);
|
|
19
20
|
if (entryResult.isFail()) {
|
|
20
21
|
if ("Cms/Entry/NotFound" === entryResult.error.code) return Result.fail(new WorkflowNotFoundError({
|
|
21
22
|
id: input.id,
|
|
@@ -36,7 +37,7 @@ const GetWorkflowRepository_GetWorkflowRepository = GetWorkflowRepository.create
|
|
|
36
37
|
implementation: GetWorkflowRepositoryImpl,
|
|
37
38
|
dependencies: [
|
|
38
39
|
GetEntryByIdUseCase,
|
|
39
|
-
|
|
40
|
+
WorkflowModelProvider,
|
|
40
41
|
WorkflowMapper
|
|
41
42
|
]
|
|
42
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/workflow/GetWorkflow/GetWorkflowRepository.js","sources":["../../../../src/features/workflow/GetWorkflow/GetWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"features/workflow/GetWorkflow/GetWorkflowRepository.js","sources":["../../../../src/features/workflow/GetWorkflow/GetWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js\";\nimport {\n type IWorkflow,\n WorkflowMapper,\n WorkflowModelProvider\n} from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowNotFoundError, WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { GetWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass GetWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private getEntryById: GetEntryByIdUseCase.Interface,\n private modelProvider: WorkflowModelProvider.Interface,\n private mapper: WorkflowMapper.Interface\n ) {}\n\n async execute(input: Repository.Params): Repository.Return {\n const model = await this.modelProvider.get();\n const id = createIdentifier({\n id: input.id,\n version: 1\n });\n\n const entryResult = await this.getEntryById.execute<IWorkflow>(model, id);\n\n if (entryResult.isFail()) {\n if (entryResult.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(\n new WorkflowNotFoundError({\n id: input.id,\n app: input.app\n })\n );\n }\n\n return Result.fail(new WorkflowPersistenceError(entryResult.error));\n }\n\n const entry = entryResult.value;\n\n // Check if the app matches\n if (entry.values.app !== input.app) {\n return Result.fail(\n new WorkflowNotFoundError({\n id: input.id,\n app: input.app\n })\n );\n }\n\n const workflow = this.mapper.fromCmsEntry(entry);\n return Result.ok(workflow);\n }\n}\n\nexport const GetWorkflowRepository = Repository.createImplementation({\n implementation: GetWorkflowRepositoryImpl,\n dependencies: [GetEntryByIdUseCase, WorkflowModelProvider, WorkflowMapper]\n});\n"],"names":["GetWorkflowRepositoryImpl","getEntryById","modelProvider","mapper","input","model","id","createIdentifier","entryResult","Result","WorkflowNotFoundError","WorkflowPersistenceError","entry","workflow","GetWorkflowRepository","Repository","GetEntryByIdUseCase","WorkflowModelProvider","WorkflowMapper"],"mappings":";;;;;;AAWA,MAAMA;IACF,YACYC,YAA2C,EAC3CC,aAA8C,EAC9CC,MAAgC,CAC1C;aAHUF,YAAY,GAAZA;aACAC,aAAa,GAAbA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,KAAwB,EAAqB;QACvD,MAAMC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG;QAC1C,MAAMC,KAAKC,iBAAiB;YACxB,IAAIH,MAAM,EAAE;YACZ,SAAS;QACb;QAEA,MAAMI,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAYH,OAAOC;QAEtE,IAAIE,YAAY,MAAM,IAAI;YACtB,IAAIA,AAA2B,yBAA3BA,YAAY,KAAK,CAAC,IAAI,EACtB,OAAOC,OAAO,IAAI,CACd,IAAIC,sBAAsB;gBACtB,IAAIN,MAAM,EAAE;gBACZ,KAAKA,MAAM,GAAG;YAClB;YAIR,OAAOK,OAAO,IAAI,CAAC,IAAIE,yBAAyBH,YAAY,KAAK;QACrE;QAEA,MAAMI,QAAQJ,YAAY,KAAK;QAG/B,IAAII,MAAM,MAAM,CAAC,GAAG,KAAKR,MAAM,GAAG,EAC9B,OAAOK,OAAO,IAAI,CACd,IAAIC,sBAAsB;YACtB,IAAIN,MAAM,EAAE;YACZ,KAAKA,MAAM,GAAG;QAClB;QAIR,MAAMS,WAAW,IAAI,CAAC,MAAM,CAAC,YAAY,CAACD;QAC1C,OAAOH,OAAO,EAAE,CAACI;IACrB;AACJ;AAEO,MAAMC,8CAAwBC,sBAAAA,oBAA+B,CAAC;IACjE,gBAAgBf;IAChB,cAAc;QAACgB;QAAqBC;QAAuBC;KAAe;AAC9E"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { WorkflowMapper,
|
|
1
|
+
import { WorkflowMapper, WorkflowModelProvider } from "../../../domain/workflow/abstractions.js";
|
|
2
2
|
import { ListWorkflowsRepository as Repository } from "./abstractions.js";
|
|
3
3
|
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
|
|
4
4
|
import { CmsWhereMapper } from "@webiny/api-headless-cms";
|
|
5
5
|
declare class ListWorkflowsRepositoryImpl implements Repository.Interface {
|
|
6
6
|
private listLatestEntries;
|
|
7
|
-
private
|
|
7
|
+
private modelProvider;
|
|
8
8
|
private mapper;
|
|
9
9
|
private cmsWhereMapper;
|
|
10
|
-
constructor(listLatestEntries: ListLatestEntriesUseCase.Interface,
|
|
10
|
+
constructor(listLatestEntries: ListLatestEntriesUseCase.Interface, modelProvider: WorkflowModelProvider.Interface, mapper: WorkflowMapper.Interface, cmsWhereMapper: CmsWhereMapper.Interface);
|
|
11
11
|
execute(input: Repository.Params): Repository.Return;
|
|
12
12
|
private convertListWhere;
|
|
13
13
|
private convertWorkflowId;
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { createIdentifier, parseIdentifier } from "@webiny/utils";
|
|
3
|
-
import { WorkflowMapper,
|
|
3
|
+
import { WorkflowMapper, WorkflowModelProvider } from "../../../domain/workflow/abstractions.js";
|
|
4
4
|
import { WorkflowPersistenceError } from "../../../domain/workflow/errors.js";
|
|
5
5
|
import { ListWorkflowsRepository } from "./abstractions.js";
|
|
6
6
|
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
|
|
7
7
|
import { CmsWhereMapper } from "@webiny/api-headless-cms";
|
|
8
8
|
class ListWorkflowsRepositoryImpl {
|
|
9
|
-
constructor(listLatestEntries,
|
|
9
|
+
constructor(listLatestEntries, modelProvider, mapper, cmsWhereMapper){
|
|
10
10
|
this.listLatestEntries = listLatestEntries;
|
|
11
|
-
this.
|
|
11
|
+
this.modelProvider = modelProvider;
|
|
12
12
|
this.mapper = mapper;
|
|
13
13
|
this.cmsWhereMapper = cmsWhereMapper;
|
|
14
14
|
}
|
|
15
15
|
async execute(input) {
|
|
16
|
+
const model = await this.modelProvider.get();
|
|
16
17
|
const where = this.cmsWhereMapper.map({
|
|
17
18
|
input: this.convertListWhere(input.where),
|
|
18
|
-
fields:
|
|
19
|
+
fields: model.fields
|
|
19
20
|
});
|
|
20
|
-
const listResult = await this.listLatestEntries.execute(
|
|
21
|
+
const listResult = await this.listLatestEntries.execute(model, {
|
|
21
22
|
sort: [
|
|
22
23
|
"createdOn_ASC"
|
|
23
24
|
],
|
|
@@ -52,7 +53,7 @@ const ListWorkflowsRepository_ListWorkflowsRepository = ListWorkflowsRepository.
|
|
|
52
53
|
implementation: ListWorkflowsRepositoryImpl,
|
|
53
54
|
dependencies: [
|
|
54
55
|
ListLatestEntriesUseCase,
|
|
55
|
-
|
|
56
|
+
WorkflowModelProvider,
|
|
56
57
|
WorkflowMapper,
|
|
57
58
|
CmsWhereMapper
|
|
58
59
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/workflow/ListWorkflows/ListWorkflowsRepository.js","sources":["../../../../src/features/workflow/ListWorkflows/ListWorkflowsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier, parseIdentifier } from \"@webiny/utils\";\nimport {
|
|
1
|
+
{"version":3,"file":"features/workflow/ListWorkflows/ListWorkflowsRepository.js","sources":["../../../../src/features/workflow/ListWorkflows/ListWorkflowsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier, parseIdentifier } from \"@webiny/utils\";\nimport {\n type IWorkflow,\n WorkflowMapper,\n WorkflowModelProvider\n} from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { type IListWorkflowsWhere, ListWorkflowsRepository as Repository } from \"./abstractions.js\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js\";\nimport { CmsWhereMapper } from \"@webiny/api-headless-cms\";\n\nclass ListWorkflowsRepositoryImpl implements Repository.Interface {\n constructor(\n private listLatestEntries: ListLatestEntriesUseCase.Interface,\n private modelProvider: WorkflowModelProvider.Interface,\n private mapper: WorkflowMapper.Interface,\n private cmsWhereMapper: CmsWhereMapper.Interface\n ) {}\n\n async execute(input: Repository.Params): Repository.Return {\n const model = await this.modelProvider.get();\n const where = this.cmsWhereMapper.map({\n input: this.convertListWhere(input.where),\n fields: model.fields\n });\n\n const listResult = await this.listLatestEntries.execute<IWorkflow>(model, {\n sort: [\"createdOn_ASC\"],\n limit: 100,\n ...input,\n where\n });\n\n if (listResult.isFail()) {\n return Result.fail(new WorkflowPersistenceError(listResult.error));\n }\n\n const { entries, meta } = listResult.value;\n\n const items = entries.map(entry => this.mapper.fromCmsEntry(entry));\n\n return Result.ok({\n items,\n meta\n });\n }\n\n private convertListWhere(input?: IListWorkflowsWhere): IListWorkflowsWhere | undefined {\n if (!input || Object.keys(input).length === 0) {\n return undefined;\n }\n const where = structuredClone(input);\n if (where.id) {\n where.id = this.convertWorkflowId(where.id);\n }\n if (where.id_in) {\n where.id_in = where.id_in.map(id => this.convertWorkflowId(id));\n }\n return where;\n }\n\n private convertWorkflowId(input: string): string {\n const { id } = parseIdentifier(input);\n return createIdentifier({\n id,\n version: 1\n });\n }\n}\n\nexport const ListWorkflowsRepository = Repository.createImplementation({\n implementation: ListWorkflowsRepositoryImpl,\n dependencies: [ListLatestEntriesUseCase, WorkflowModelProvider, WorkflowMapper, CmsWhereMapper]\n});\n"],"names":["ListWorkflowsRepositoryImpl","listLatestEntries","modelProvider","mapper","cmsWhereMapper","input","model","where","listResult","Result","WorkflowPersistenceError","entries","meta","items","entry","Object","structuredClone","id","parseIdentifier","createIdentifier","ListWorkflowsRepository","Repository","ListLatestEntriesUseCase","WorkflowModelProvider","WorkflowMapper","CmsWhereMapper"],"mappings":";;;;;;;AAYA,MAAMA;IACF,YACYC,iBAAqD,EACrDC,aAA8C,EAC9CC,MAAgC,EAChCC,cAAwC,CAClD;aAJUH,iBAAiB,GAAjBA;aACAC,aAAa,GAAbA;aACAC,MAAM,GAANA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,QAAQC,KAAwB,EAAqB;QACvD,MAAMC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG;QAC1C,MAAMC,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YAClC,OAAO,IAAI,CAAC,gBAAgB,CAACF,MAAM,KAAK;YACxC,QAAQC,MAAM,MAAM;QACxB;QAEA,MAAME,aAAa,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAYF,OAAO;YACtE,MAAM;gBAAC;aAAgB;YACvB,OAAO;YACP,GAAGD,KAAK;YACRE;QACJ;QAEA,IAAIC,WAAW,MAAM,IACjB,OAAOC,OAAO,IAAI,CAAC,IAAIC,yBAAyBF,WAAW,KAAK;QAGpE,MAAM,EAAEG,OAAO,EAAEC,IAAI,EAAE,GAAGJ,WAAW,KAAK;QAE1C,MAAMK,QAAQF,QAAQ,GAAG,CAACG,CAAAA,QAAS,IAAI,CAAC,MAAM,CAAC,YAAY,CAACA;QAE5D,OAAOL,OAAO,EAAE,CAAC;YACbI;YACAD;QACJ;IACJ;IAEQ,iBAAiBP,KAA2B,EAAmC;QACnF,IAAI,CAACA,SAASU,AAA8B,MAA9BA,OAAO,IAAI,CAACV,OAAO,MAAM,EACnC;QAEJ,MAAME,QAAQS,gBAAgBX;QAC9B,IAAIE,MAAM,EAAE,EACRA,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAACA,MAAM,EAAE;QAE9C,IAAIA,MAAM,KAAK,EACXA,MAAM,KAAK,GAAGA,MAAM,KAAK,CAAC,GAAG,CAACU,CAAAA,KAAM,IAAI,CAAC,iBAAiB,CAACA;QAE/D,OAAOV;IACX;IAEQ,kBAAkBF,KAAa,EAAU;QAC7C,MAAM,EAAEY,EAAE,EAAE,GAAGC,gBAAgBb;QAC/B,OAAOc,iBAAiB;YACpBF;YACA,SAAS;QACb;IACJ;AACJ;AAEO,MAAMG,kDAA0BC,wBAAAA,oBAA+B,CAAC;IACnE,gBAAgBrB;IAChB,cAAc;QAACsB;QAA0BC;QAAuBC;QAAgBC;KAAe;AACnG"}
|