@webiny/api-apw 0.0.0-unstable.6e5425ee89 → 0.0.0-unstable.78f581c1d2
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/ApwChangeRequestNotification.js +10 -0
- package/ApwChangeRequestNotification.js.map +1 -1
- package/ApwCommentNotification.js +10 -0
- package/ApwCommentNotification.js.map +1 -1
- package/ApwContentReviewNotification.js +10 -0
- package/ApwContentReviewNotification.js.map +1 -1
- package/ApwContentUrlPlugin.js +10 -0
- package/ApwContentUrlPlugin.js.map +1 -1
- package/ContentApwSettingsPlugin.js +5 -0
- package/ContentApwSettingsPlugin.js.map +1 -1
- package/crud/createChangeRequestMethods.js +11 -4
- package/crud/createChangeRequestMethods.js.map +1 -1
- package/crud/createCommentMethods.js +12 -4
- package/crud/createCommentMethods.js.map +1 -1
- package/crud/createContentReviewMethods.js +84 -20
- package/crud/createContentReviewMethods.js.map +1 -1
- package/crud/createReviewerMethods.js +12 -4
- package/crud/createReviewerMethods.js.map +1 -1
- package/crud/createWorkflowMethods.js +17 -4
- package/crud/createWorkflowMethods.js.map +1 -1
- package/crud/index.js +25 -0
- package/crud/index.js.map +1 -1
- package/crud/utils.js +28 -0
- package/crud/utils.js.map +1 -1
- package/index.js +11 -1
- package/index.js.map +1 -1
- package/package.json +34 -34
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +15 -0
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -1
- package/plugins/cms/apwEntryPlugins.js +8 -0
- package/plugins/cms/apwEntryPlugins.js.map +1 -1
- package/plugins/cms/index.js +13 -0
- package/plugins/cms/index.js.map +1 -1
- package/plugins/cms/linkContentReviewToEntry.js +17 -0
- package/plugins/cms/linkContentReviewToEntry.js.map +1 -1
- package/plugins/cms/linkWorkflowToEntry.js +31 -2
- package/plugins/cms/linkWorkflowToEntry.js.map +1 -1
- package/plugins/cms/notifications/changeRequestNotification.js +4 -0
- package/plugins/cms/notifications/changeRequestNotification.js.map +1 -1
- package/plugins/cms/notifications/commentNotification.js +4 -0
- package/plugins/cms/notifications/commentNotification.js.map +1 -1
- package/plugins/cms/notifications/contentReviewNotification.js +4 -0
- package/plugins/cms/notifications/contentReviewNotification.js.map +1 -1
- package/plugins/cms/notifications/contentUrl.js +8 -1
- package/plugins/cms/notifications/contentUrl.js.map +1 -1
- package/plugins/cms/triggerContentReview.js +14 -0
- package/plugins/cms/triggerContentReview.js.map +1 -1
- package/plugins/cms/updateContentReviewStatus.js +18 -0
- package/plugins/cms/updateContentReviewStatus.js.map +1 -1
- package/plugins/cms/utils.js +47 -2
- package/plugins/cms/utils.js.map +1 -1
- package/plugins/context.js +31 -0
- package/plugins/context.js.map +1 -1
- package/plugins/graphql/changeRequest.gql.js +8 -1
- package/plugins/graphql/changeRequest.gql.js.map +1 -1
- package/plugins/graphql/comment.gql.js +8 -1
- package/plugins/graphql/comment.gql.js.map +1 -1
- package/plugins/graphql/contentReview.gql.js +20 -1
- package/plugins/graphql/contentReview.gql.js.map +1 -1
- package/plugins/graphql/reviewer.gql.js +8 -1
- package/plugins/graphql/reviewer.gql.js.map +1 -1
- package/plugins/graphql/workflow.gql.js +8 -1
- package/plugins/graphql/workflow.gql.js.map +1 -1
- package/plugins/graphql.js +16 -1
- package/plugins/graphql.js.map +1 -1
- package/plugins/hooks/createReviewerFromIdentity.js +11 -2
- package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +9 -1
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js +8 -1
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
- package/plugins/hooks/index.js +14 -0
- package/plugins/hooks/index.js.map +1 -1
- package/plugins/hooks/initializeContentReviewSteps.js +15 -2
- package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
- package/plugins/hooks/initializeNotifications.js +5 -0
- package/plugins/hooks/initializeNotifications.js.map +1 -1
- package/plugins/hooks/listContentReviews.js +12 -0
- package/plugins/hooks/listContentReviews.js.map +1 -1
- package/plugins/hooks/notifications/appUrl.js +4 -0
- package/plugins/hooks/notifications/appUrl.js.map +1 -1
- package/plugins/hooks/notifications/changeRequestAfterCreate.js +28 -0
- package/plugins/hooks/notifications/changeRequestAfterCreate.js.map +1 -1
- package/plugins/hooks/notifications/changeRequestUrl.js +4 -0
- package/plugins/hooks/notifications/changeRequestUrl.js.map +1 -1
- package/plugins/hooks/notifications/commentAfterCreate.js +30 -0
- package/plugins/hooks/notifications/commentAfterCreate.js.map +1 -1
- package/plugins/hooks/notifications/commentUrl.js +4 -0
- package/plugins/hooks/notifications/commentUrl.js.map +1 -1
- package/plugins/hooks/notifications/contentReviewAfterCreate.js +24 -1
- package/plugins/hooks/notifications/contentReviewAfterCreate.js.map +1 -1
- package/plugins/hooks/notifications/contentReviewUrl.js +4 -0
- package/plugins/hooks/notifications/contentReviewUrl.js.map +1 -1
- package/plugins/hooks/notifications/contentUrl.js +5 -0
- package/plugins/hooks/notifications/contentUrl.js.map +1 -1
- package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js +4 -0
- package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js.map +1 -1
- package/plugins/hooks/notifications/lastCommentNotificationPlugin.js +4 -0
- package/plugins/hooks/notifications/lastCommentNotificationPlugin.js.map +1 -1
- package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js +4 -0
- package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js.map +1 -1
- package/plugins/hooks/notifications/reviewers.js +7 -0
- package/plugins/hooks/notifications/reviewers.js.map +1 -1
- package/plugins/hooks/notifications/sendChangeRequestNotification.js +11 -0
- package/plugins/hooks/notifications/sendChangeRequestNotification.js.map +1 -1
- package/plugins/hooks/notifications/sendCommentNotification.js +11 -0
- package/plugins/hooks/notifications/sendCommentNotification.js.map +1 -1
- package/plugins/hooks/notifications/sendContentReviewNotification.js +11 -0
- package/plugins/hooks/notifications/sendContentReviewNotification.js.map +1 -1
- package/plugins/hooks/updatePendingChangeRequests.js +8 -0
- package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
- package/plugins/hooks/updateTotalComments.js +9 -0
- package/plugins/hooks/updateTotalComments.js.map +1 -1
- package/plugins/hooks/validateChangeRequest.js +16 -0
- package/plugins/hooks/validateChangeRequest.js.map +1 -1
- package/plugins/hooks/validateComment.js +12 -1
- package/plugins/hooks/validateComment.js.map +1 -1
- package/plugins/hooks/validateContentReview.js +6 -0
- package/plugins/hooks/validateContentReview.js.map +1 -1
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +15 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -1
- package/plugins/pageBuilder/apwContentPagePlugins.js +4 -0
- package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -1
- package/plugins/pageBuilder/extendPbPageSettingsSchema.js +6 -1
- package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -1
- package/plugins/pageBuilder/index.js +11 -0
- package/plugins/pageBuilder/index.js.map +1 -1
- package/plugins/pageBuilder/linkContentReviewToPage.js +16 -0
- package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -1
- package/plugins/pageBuilder/linkWorkflowToPage.js +31 -1
- package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -1
- package/plugins/pageBuilder/notifications/changeRequestNotification.js +4 -0
- package/plugins/pageBuilder/notifications/changeRequestNotification.js.map +1 -1
- package/plugins/pageBuilder/notifications/commentNotification.js +4 -0
- package/plugins/pageBuilder/notifications/commentNotification.js.map +1 -1
- package/plugins/pageBuilder/notifications/contentReviewNotification.js +4 -0
- package/plugins/pageBuilder/notifications/contentReviewNotification.js.map +1 -1
- package/plugins/pageBuilder/notifications/contentUrl.js +7 -1
- package/plugins/pageBuilder/notifications/contentUrl.js.map +1 -1
- package/plugins/pageBuilder/triggerContentReview.js +11 -0
- package/plugins/pageBuilder/triggerContentReview.js.map +1 -1
- package/plugins/pageBuilder/updateContentReviewStatus.js +12 -0
- package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -1
- package/plugins/pageBuilder/utils.js +35 -1
- package/plugins/pageBuilder/utils.js.map +1 -1
- package/plugins/utils.js +43 -0
- package/plugins/utils.js.map +1 -1
- package/scheduler/createScheduleActionMethods.js +20 -1
- package/scheduler/createScheduleActionMethods.js.map +1 -1
- package/scheduler/handlers/executeAction/index.js +33 -9
- package/scheduler/handlers/executeAction/index.js.map +1 -1
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +5 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -1
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +21 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -1
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +27 -4
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -1
- package/scheduler/handlers/executeAction/security.js +11 -0
- package/scheduler/handlers/executeAction/security.js.map +1 -1
- package/scheduler/handlers/scheduleAction/index.js +25 -5
- package/scheduler/handlers/scheduleAction/index.js.map +1 -1
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +23 -2
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -1
- package/scheduler/handlers/utils.js +40 -3
- package/scheduler/handlers/utils.js.map +1 -1
- package/scheduler/index.js +3 -0
- package/scheduler/index.js.map +1 -1
- package/scheduler/types.js +6 -0
- package/scheduler/types.js.map +1 -1
- package/storageOperations/changeRequestStorageOperations.js +19 -0
- package/storageOperations/changeRequestStorageOperations.js.map +1 -1
- package/storageOperations/commentStorageOperations.js +21 -0
- package/storageOperations/commentStorageOperations.js.map +1 -1
- package/storageOperations/contentReviewStorageOperations.js +17 -0
- package/storageOperations/contentReviewStorageOperations.js.map +1 -1
- package/storageOperations/index.js +14 -0
- package/storageOperations/index.js.map +1 -1
- package/storageOperations/models/changeRequest.model.js +9 -0
- package/storageOperations/models/changeRequest.model.js.map +1 -1
- package/storageOperations/models/comment.model.js +8 -0
- package/storageOperations/models/comment.model.js.map +1 -1
- package/storageOperations/models/contentModelPluginFactory.js +5 -0
- package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
- package/storageOperations/models/contentReview.model.js +26 -0
- package/storageOperations/models/contentReview.model.js.map +1 -1
- package/storageOperations/models/index.js +24 -2
- package/storageOperations/models/index.js.map +1 -1
- package/storageOperations/models/reviewer.model.js +8 -0
- package/storageOperations/models/reviewer.model.js.map +1 -1
- package/storageOperations/models/utils.js +4 -0
- package/storageOperations/models/utils.js.map +1 -1
- package/storageOperations/models/workflow.model.js +23 -0
- package/storageOperations/models/workflow.model.js.map +1 -1
- package/storageOperations/reviewerStorageOperations.js +17 -0
- package/storageOperations/reviewerStorageOperations.js.map +1 -1
- package/storageOperations/workflowStorageOperations.js +19 -0
- package/storageOperations/workflowStorageOperations.js.map +1 -1
- package/types.js +14 -0
- package/types.js.map +1 -1
- package/utils/contentApwSettingsPlugin.js +6 -0
- package/utils/contentApwSettingsPlugin.js.map +1 -1
- package/utils/errors.js +17 -0
- package/utils/errors.js.map +1 -1
- package/utils/fieldResolver.js +12 -2
- package/utils/fieldResolver.js.map +1 -1
- package/utils/resolve.js +3 -0
- package/utils/resolve.js.map +1 -1
@@ -1,19 +1,30 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
4
|
+
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
5
6
|
value: true
|
6
7
|
});
|
7
8
|
exports.createApwModels = void 0;
|
9
|
+
|
8
10
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
11
|
+
|
9
12
|
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
13
|
+
|
10
14
|
var _contentModelPluginFactory = require("./contentModelPluginFactory");
|
15
|
+
|
11
16
|
var _workflow = require("./workflow.model");
|
17
|
+
|
12
18
|
var _contentReview = require("./contentReview.model");
|
19
|
+
|
13
20
|
var _reviewer = require("./reviewer.model");
|
21
|
+
|
14
22
|
var _comment = require("./comment.model");
|
23
|
+
|
15
24
|
var _changeRequest = require("./changeRequest.model");
|
25
|
+
|
16
26
|
var _utils = require("../../plugins/utils");
|
27
|
+
|
17
28
|
const createApwModels = context => {
|
18
29
|
/**
|
19
30
|
* This should never happen in the actual project.
|
@@ -23,14 +34,17 @@ const createApwModels = context => {
|
|
23
34
|
console.warn("Creating model before cms init.");
|
24
35
|
return;
|
25
36
|
}
|
37
|
+
|
26
38
|
if ((0, _utils.isInstallationPending)({
|
27
39
|
tenancy: context.tenancy,
|
28
40
|
i18n: context.i18n
|
29
41
|
})) {
|
30
42
|
return;
|
31
43
|
}
|
44
|
+
|
32
45
|
context.security.disableAuthorization();
|
33
46
|
const locale = context.i18n.getContentLocale();
|
47
|
+
|
34
48
|
if (!locale) {
|
35
49
|
throw new _error.default("Missing content locale in api-apw/storageOperations/index.ts", "LOCALE_ERROR");
|
36
50
|
}
|
@@ -38,10 +52,13 @@ const createApwModels = context => {
|
|
38
52
|
* TODO:@ashutosh
|
39
53
|
* We need to move these plugin in an installation plugin
|
40
54
|
*/
|
55
|
+
|
56
|
+
|
41
57
|
const groupId = "contentModelGroup_apw";
|
42
58
|
/**
|
43
59
|
* Create a CmsGroup.
|
44
60
|
*/
|
61
|
+
|
45
62
|
const cmsGroupPlugin = new _apiHeadlessCms.CmsGroupPlugin({
|
46
63
|
id: groupId,
|
47
64
|
slug: "apw",
|
@@ -50,10 +67,10 @@ const createApwModels = context => {
|
|
50
67
|
icon: "fas/star",
|
51
68
|
isPrivate: true
|
52
69
|
});
|
53
|
-
|
54
70
|
/**
|
55
71
|
* Create CmsModel plugins.
|
56
72
|
*/
|
73
|
+
|
57
74
|
const changeRequestModelDefinition = (0, _changeRequest.createChangeRequestModelDefinition)();
|
58
75
|
const reviewerModelDefinition = (0, _reviewer.createReviewerModelDefinition)();
|
59
76
|
const workflowModelDefinition = (0, _workflow.createWorkflowModelDefinition)({
|
@@ -67,6 +84,7 @@ const createApwModels = context => {
|
|
67
84
|
});
|
68
85
|
const modelDefinitions = [workflowModelDefinition, contentReviewModelDefinition, reviewerModelDefinition, changeRequestModelDefinition, commentModelDefinition];
|
69
86
|
const cmsModelPlugins = [];
|
87
|
+
|
70
88
|
for (const modelDefinition of modelDefinitions) {
|
71
89
|
const cmsModelPlugin = (0, _contentModelPluginFactory.contentModelPluginFactory)({
|
72
90
|
group: cmsGroupPlugin.contentModelGroup,
|
@@ -78,16 +96,20 @@ const createApwModels = context => {
|
|
78
96
|
* We want "title" field as the "titleField" for "ContentReview" model.
|
79
97
|
* so that we can later search entries by title.
|
80
98
|
*/
|
99
|
+
|
81
100
|
if (cmsModelPlugin.contentModel.modelId === "apwContentReviewModelDefinition") {
|
82
101
|
cmsModelPlugin.contentModel.titleFieldId = "title";
|
83
102
|
}
|
103
|
+
|
84
104
|
cmsModelPlugins.push(cmsModelPlugin);
|
85
105
|
}
|
86
|
-
|
87
106
|
/**
|
88
107
|
* Register them so that they are accessible in cms context
|
89
108
|
*/
|
109
|
+
|
110
|
+
|
90
111
|
context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);
|
91
112
|
context.security.enableAuthorization();
|
92
113
|
};
|
114
|
+
|
93
115
|
exports.createApwModels = createApwModels;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["createApwModels","context","cms","console","warn","isInstallationPending","tenancy","i18n","security","disableAuthorization","locale","getContentLocale","WebinyError","groupId","cmsGroupPlugin","CmsGroupPlugin","id","slug","name","description","icon","isPrivate","changeRequestModelDefinition","createChangeRequestModelDefinition","reviewerModelDefinition","createReviewerModelDefinition","workflowModelDefinition","createWorkflowModelDefinition","reviewerModelId","modelId","commentModelDefinition","createCommentModelDefinition","contentReviewModelDefinition","createContentReviewModelDefinition","modelDefinitions","cmsModelPlugins","modelDefinition","cmsModelPlugin","contentModelPluginFactory","group","contentModelGroup","tenant","getCurrentTenant","code","contentModel","titleFieldId","push","plugins","register","enableAuthorization"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"@webiny/api-headless-cms\";\nimport { contentModelPluginFactory } from \"./contentModelPluginFactory\";\nimport { createWorkflowModelDefinition } from \"./workflow.model\";\nimport { createContentReviewModelDefinition } from \"./contentReview.model\";\nimport { createReviewerModelDefinition } from \"./reviewer.model\";\nimport { createCommentModelDefinition } from \"./comment.model\";\nimport { createChangeRequestModelDefinition } from \"./changeRequest.model\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { isInstallationPending } from \"~/plugins/utils\";\n\nexport const createApwModels = (context: CmsContext) => {\n /**\n * This should never happen in the actual project.\n * It is to make sure that we load setup context before the CRUD init in our internal code.\n */\n if (!context.cms) {\n console.warn(\"Creating model before cms init.\");\n return;\n }\n\n if (isInstallationPending({ tenancy: context.tenancy, i18n: context.i18n })) {\n return;\n }\n\n context.security.disableAuthorization();\n\n const locale = context.i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing content locale in api-apw/storageOperations/index.ts\",\n \"LOCALE_ERROR\"\n );\n }\n /**\n * TODO:@ashutosh\n * We need to move these plugin in an installation plugin\n */\n const groupId = \"contentModelGroup_apw\";\n /**\n * Create a CmsGroup.\n */\n const cmsGroupPlugin = new CmsGroupPlugin({\n id: groupId,\n slug: \"apw\",\n name: \"APW\",\n description: \"Group for Advanced Publishing Workflow\",\n icon: \"fas/star\",\n isPrivate: true\n });\n\n /**\n * Create CmsModel plugins.\n */\n const changeRequestModelDefinition = createChangeRequestModelDefinition();\n const reviewerModelDefinition = createReviewerModelDefinition();\n const workflowModelDefinition = createWorkflowModelDefinition({\n reviewerModelId: reviewerModelDefinition.modelId\n });\n const commentModelDefinition = createCommentModelDefinition({\n modelId: changeRequestModelDefinition.modelId\n });\n const contentReviewModelDefinition = createContentReviewModelDefinition({\n reviewerModelId: reviewerModelDefinition.modelId\n });\n\n const modelDefinitions = [\n workflowModelDefinition,\n contentReviewModelDefinition,\n reviewerModelDefinition,\n changeRequestModelDefinition,\n commentModelDefinition\n ];\n\n const cmsModelPlugins = [];\n for (const modelDefinition of modelDefinitions) {\n const cmsModelPlugin = contentModelPluginFactory({\n group: cmsGroupPlugin.contentModelGroup,\n tenant: context.tenancy.getCurrentTenant().id,\n locale: locale.code,\n modelDefinition\n });\n /**\n * We want \"title\" field as the \"titleField\" for \"ContentReview\" model.\n * so that we can later search entries by title.\n */\n if (cmsModelPlugin.contentModel.modelId === \"apwContentReviewModelDefinition\") {\n cmsModelPlugin.contentModel.titleFieldId = \"title\";\n }\n cmsModelPlugins.push(cmsModelPlugin);\n }\n\n /**\n * Register them so that they are accessible in cms context\n */\n context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);\n\n context.security.enableAuthorization();\n};\n"],"mappings":"
|
1
|
+
{"version":3,"names":["createApwModels","context","cms","console","warn","isInstallationPending","tenancy","i18n","security","disableAuthorization","locale","getContentLocale","WebinyError","groupId","cmsGroupPlugin","CmsGroupPlugin","id","slug","name","description","icon","isPrivate","changeRequestModelDefinition","createChangeRequestModelDefinition","reviewerModelDefinition","createReviewerModelDefinition","workflowModelDefinition","createWorkflowModelDefinition","reviewerModelId","modelId","commentModelDefinition","createCommentModelDefinition","contentReviewModelDefinition","createContentReviewModelDefinition","modelDefinitions","cmsModelPlugins","modelDefinition","cmsModelPlugin","contentModelPluginFactory","group","contentModelGroup","tenant","getCurrentTenant","code","contentModel","titleFieldId","push","plugins","register","enableAuthorization"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"@webiny/api-headless-cms\";\nimport { contentModelPluginFactory } from \"./contentModelPluginFactory\";\nimport { createWorkflowModelDefinition } from \"./workflow.model\";\nimport { createContentReviewModelDefinition } from \"./contentReview.model\";\nimport { createReviewerModelDefinition } from \"./reviewer.model\";\nimport { createCommentModelDefinition } from \"./comment.model\";\nimport { createChangeRequestModelDefinition } from \"./changeRequest.model\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { isInstallationPending } from \"~/plugins/utils\";\n\nexport const createApwModels = (context: CmsContext) => {\n /**\n * This should never happen in the actual project.\n * It is to make sure that we load setup context before the CRUD init in our internal code.\n */\n if (!context.cms) {\n console.warn(\"Creating model before cms init.\");\n return;\n }\n\n if (isInstallationPending({ tenancy: context.tenancy, i18n: context.i18n })) {\n return;\n }\n\n context.security.disableAuthorization();\n\n const locale = context.i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing content locale in api-apw/storageOperations/index.ts\",\n \"LOCALE_ERROR\"\n );\n }\n /**\n * TODO:@ashutosh\n * We need to move these plugin in an installation plugin\n */\n const groupId = \"contentModelGroup_apw\";\n /**\n * Create a CmsGroup.\n */\n const cmsGroupPlugin = new CmsGroupPlugin({\n id: groupId,\n slug: \"apw\",\n name: \"APW\",\n description: \"Group for Advanced Publishing Workflow\",\n icon: \"fas/star\",\n isPrivate: true\n });\n\n /**\n * Create CmsModel plugins.\n */\n const changeRequestModelDefinition = createChangeRequestModelDefinition();\n const reviewerModelDefinition = createReviewerModelDefinition();\n const workflowModelDefinition = createWorkflowModelDefinition({\n reviewerModelId: reviewerModelDefinition.modelId\n });\n const commentModelDefinition = createCommentModelDefinition({\n modelId: changeRequestModelDefinition.modelId\n });\n const contentReviewModelDefinition = createContentReviewModelDefinition({\n reviewerModelId: reviewerModelDefinition.modelId\n });\n\n const modelDefinitions = [\n workflowModelDefinition,\n contentReviewModelDefinition,\n reviewerModelDefinition,\n changeRequestModelDefinition,\n commentModelDefinition\n ];\n\n const cmsModelPlugins = [];\n for (const modelDefinition of modelDefinitions) {\n const cmsModelPlugin = contentModelPluginFactory({\n group: cmsGroupPlugin.contentModelGroup,\n tenant: context.tenancy.getCurrentTenant().id,\n locale: locale.code,\n modelDefinition\n });\n /**\n * We want \"title\" field as the \"titleField\" for \"ContentReview\" model.\n * so that we can later search entries by title.\n */\n if (cmsModelPlugin.contentModel.modelId === \"apwContentReviewModelDefinition\") {\n cmsModelPlugin.contentModel.titleFieldId = \"title\";\n }\n cmsModelPlugins.push(cmsModelPlugin);\n }\n\n /**\n * Register them so that they are accessible in cms context\n */\n context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);\n\n context.security.enableAuthorization();\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEO,MAAMA,eAAe,GAAIC,OAAD,IAAyB;EACpD;AACJ;AACA;AACA;EACI,IAAI,CAACA,OAAO,CAACC,GAAb,EAAkB;IACdC,OAAO,CAACC,IAAR,CAAa,iCAAb;IACA;EACH;;EAED,IAAI,IAAAC,4BAAA,EAAsB;IAAEC,OAAO,EAAEL,OAAO,CAACK,OAAnB;IAA4BC,IAAI,EAAEN,OAAO,CAACM;EAA1C,CAAtB,CAAJ,EAA6E;IACzE;EACH;;EAEDN,OAAO,CAACO,QAAR,CAAiBC,oBAAjB;EAEA,MAAMC,MAAM,GAAGT,OAAO,CAACM,IAAR,CAAaI,gBAAb,EAAf;;EACA,IAAI,CAACD,MAAL,EAAa;IACT,MAAM,IAAIE,cAAJ,CACF,8DADE,EAEF,cAFE,CAAN;EAIH;EACD;AACJ;AACA;AACA;;;EACI,MAAMC,OAAO,GAAG,uBAAhB;EACA;AACJ;AACA;;EACI,MAAMC,cAAc,GAAG,IAAIC,8BAAJ,CAAmB;IACtCC,EAAE,EAAEH,OADkC;IAEtCI,IAAI,EAAE,KAFgC;IAGtCC,IAAI,EAAE,KAHgC;IAItCC,WAAW,EAAE,wCAJyB;IAKtCC,IAAI,EAAE,UALgC;IAMtCC,SAAS,EAAE;EAN2B,CAAnB,CAAvB;EASA;AACJ;AACA;;EACI,MAAMC,4BAA4B,GAAG,IAAAC,iDAAA,GAArC;EACA,MAAMC,uBAAuB,GAAG,IAAAC,uCAAA,GAAhC;EACA,MAAMC,uBAAuB,GAAG,IAAAC,uCAAA,EAA8B;IAC1DC,eAAe,EAAEJ,uBAAuB,CAACK;EADiB,CAA9B,CAAhC;EAGA,MAAMC,sBAAsB,GAAG,IAAAC,qCAAA,EAA6B;IACxDF,OAAO,EAAEP,4BAA4B,CAACO;EADkB,CAA7B,CAA/B;EAGA,MAAMG,4BAA4B,GAAG,IAAAC,iDAAA,EAAmC;IACpEL,eAAe,EAAEJ,uBAAuB,CAACK;EAD2B,CAAnC,CAArC;EAIA,MAAMK,gBAAgB,GAAG,CACrBR,uBADqB,EAErBM,4BAFqB,EAGrBR,uBAHqB,EAIrBF,4BAJqB,EAKrBQ,sBALqB,CAAzB;EAQA,MAAMK,eAAe,GAAG,EAAxB;;EACA,KAAK,MAAMC,eAAX,IAA8BF,gBAA9B,EAAgD;IAC5C,MAAMG,cAAc,GAAG,IAAAC,oDAAA,EAA0B;MAC7CC,KAAK,EAAEzB,cAAc,CAAC0B,iBADuB;MAE7CC,MAAM,EAAExC,OAAO,CAACK,OAAR,CAAgBoC,gBAAhB,GAAmC1B,EAFE;MAG7CN,MAAM,EAAEA,MAAM,CAACiC,IAH8B;MAI7CP;IAJ6C,CAA1B,CAAvB;IAMA;AACR;AACA;AACA;;IACQ,IAAIC,cAAc,CAACO,YAAf,CAA4Bf,OAA5B,KAAwC,iCAA5C,EAA+E;MAC3EQ,cAAc,CAACO,YAAf,CAA4BC,YAA5B,GAA2C,OAA3C;IACH;;IACDV,eAAe,CAACW,IAAhB,CAAqBT,cAArB;EACH;EAED;AACJ;AACA;;;EACIpC,OAAO,CAAC8C,OAAR,CAAgBC,QAAhB,CAAyB,CAAClC,cAAD,EAAiBqB,eAAjB,CAAzB;EAEAlC,OAAO,CAACO,QAAR,CAAiByC,mBAAjB;AACH,CAvFM"}
|
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.createReviewerModelDefinition = exports.REVIEWER_MODEL_ID = void 0;
|
7
|
+
|
7
8
|
var _utils = require("./utils");
|
9
|
+
|
8
10
|
const idField = () => (0, _utils.createModelField)({
|
9
11
|
label: "Identity Id",
|
10
12
|
type: "text",
|
@@ -14,6 +16,7 @@ const idField = () => (0, _utils.createModelField)({
|
|
14
16
|
name: "required"
|
15
17
|
}]
|
16
18
|
});
|
19
|
+
|
17
20
|
const displayNameField = () => (0, _utils.createModelField)({
|
18
21
|
label: "Display Name",
|
19
22
|
type: "text",
|
@@ -23,6 +26,7 @@ const displayNameField = () => (0, _utils.createModelField)({
|
|
23
26
|
name: "required"
|
24
27
|
}]
|
25
28
|
});
|
29
|
+
|
26
30
|
const typeField = () => (0, _utils.createModelField)({
|
27
31
|
label: "Type",
|
28
32
|
type: "text",
|
@@ -32,6 +36,7 @@ const typeField = () => (0, _utils.createModelField)({
|
|
32
36
|
name: "required"
|
33
37
|
}]
|
34
38
|
});
|
39
|
+
|
35
40
|
const emailField = () => (0, _utils.createModelField)({
|
36
41
|
label: "E-mail",
|
37
42
|
fieldId: "email",
|
@@ -47,8 +52,10 @@ const emailField = () => (0, _utils.createModelField)({
|
|
47
52
|
}
|
48
53
|
}]
|
49
54
|
});
|
55
|
+
|
50
56
|
const REVIEWER_MODEL_ID = "apwReviewerModelDefinition";
|
51
57
|
exports.REVIEWER_MODEL_ID = REVIEWER_MODEL_ID;
|
58
|
+
|
52
59
|
const createReviewerModelDefinition = () => {
|
53
60
|
return {
|
54
61
|
name: "APW - Reviewer",
|
@@ -60,4 +67,5 @@ const createReviewerModelDefinition = () => {
|
|
60
67
|
isPrivate: true
|
61
68
|
};
|
62
69
|
};
|
70
|
+
|
63
71
|
exports.createReviewerModelDefinition = createReviewerModelDefinition;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["idField","createModelField","label","type","parent","validation","message","name","displayNameField","typeField","emailField","fieldId","settings","preset","regex","flags","REVIEWER_MODEL_ID","createReviewerModelDefinition","modelId","titleFieldId","layout","fields","description","isPrivate"],"sources":["reviewer.model.ts"],"sourcesContent":["import { createModelField } from \"./utils\";\nimport { WorkflowModelDefinition } from \"~/types\";\n\nconst idField = () =>\n createModelField({\n label: \"Identity Id\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [\n {\n message: \"`identityId` field value is required in reviewer.\",\n name: \"required\"\n }\n ]\n });\n\nconst displayNameField = () =>\n createModelField({\n label: \"Display Name\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [\n {\n message: \"`displayName` field value is required in reviewer.\",\n name: \"required\"\n }\n ]\n });\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [\n {\n message: \"`type` field value is required in reviewer.\",\n name: \"required\"\n }\n ]\n });\n\nconst emailField = () =>\n createModelField({\n label: \"E-mail\",\n fieldId: \"email\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [\n {\n message: \"`email` field value in reviewer accepts only e-mails.\",\n name: \"pattern\",\n settings: {\n preset: \"email\",\n regex: null,\n flags: null\n }\n }\n ]\n });\n\nexport const REVIEWER_MODEL_ID = \"apwReviewerModelDefinition\";\n\nexport const createReviewerModelDefinition = (): WorkflowModelDefinition => {\n return {\n name: \"APW - Reviewer\",\n modelId: REVIEWER_MODEL_ID,\n titleFieldId: \"displayName\",\n layout: [\n [\"reviewer_identityId\"],\n [\"reviewer_displayName\"],\n [\"reviewer_type\"],\n [\"reviewer_email\"]\n ],\n fields: [idField(), displayNameField(), typeField(), emailField()],\n description: \"\",\n isPrivate: true\n };\n};\n"],"mappings":"
|
1
|
+
{"version":3,"names":["idField","createModelField","label","type","parent","validation","message","name","displayNameField","typeField","emailField","fieldId","settings","preset","regex","flags","REVIEWER_MODEL_ID","createReviewerModelDefinition","modelId","titleFieldId","layout","fields","description","isPrivate"],"sources":["reviewer.model.ts"],"sourcesContent":["import { createModelField } from \"./utils\";\nimport { WorkflowModelDefinition } from \"~/types\";\n\nconst idField = () =>\n createModelField({\n label: \"Identity Id\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [\n {\n message: \"`identityId` field value is required in reviewer.\",\n name: \"required\"\n }\n ]\n });\n\nconst displayNameField = () =>\n createModelField({\n label: \"Display Name\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [\n {\n message: \"`displayName` field value is required in reviewer.\",\n name: \"required\"\n }\n ]\n });\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [\n {\n message: \"`type` field value is required in reviewer.\",\n name: \"required\"\n }\n ]\n });\n\nconst emailField = () =>\n createModelField({\n label: \"E-mail\",\n fieldId: \"email\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [\n {\n message: \"`email` field value in reviewer accepts only e-mails.\",\n name: \"pattern\",\n settings: {\n preset: \"email\",\n regex: null,\n flags: null\n }\n }\n ]\n });\n\nexport const REVIEWER_MODEL_ID = \"apwReviewerModelDefinition\";\n\nexport const createReviewerModelDefinition = (): WorkflowModelDefinition => {\n return {\n name: \"APW - Reviewer\",\n modelId: REVIEWER_MODEL_ID,\n titleFieldId: \"displayName\",\n layout: [\n [\"reviewer_identityId\"],\n [\"reviewer_displayName\"],\n [\"reviewer_type\"],\n [\"reviewer_email\"]\n ],\n fields: [idField(), displayNameField(), typeField(), emailField()],\n description: \"\",\n isPrivate: true\n };\n};\n"],"mappings":";;;;;;;AAAA;;AAGA,MAAMA,OAAO,GAAG,MACZ,IAAAC,uBAAA,EAAiB;EACbC,KAAK,EAAE,aADM;EAEbC,IAAI,EAAE,MAFO;EAGbC,MAAM,EAAE,UAHK;EAIbC,UAAU,EAAE,CACR;IACIC,OAAO,EAAE,mDADb;IAEIC,IAAI,EAAE;EAFV,CADQ;AAJC,CAAjB,CADJ;;AAaA,MAAMC,gBAAgB,GAAG,MACrB,IAAAP,uBAAA,EAAiB;EACbC,KAAK,EAAE,cADM;EAEbC,IAAI,EAAE,MAFO;EAGbC,MAAM,EAAE,UAHK;EAIbC,UAAU,EAAE,CACR;IACIC,OAAO,EAAE,oDADb;IAEIC,IAAI,EAAE;EAFV,CADQ;AAJC,CAAjB,CADJ;;AAaA,MAAME,SAAS,GAAG,MACd,IAAAR,uBAAA,EAAiB;EACbC,KAAK,EAAE,MADM;EAEbC,IAAI,EAAE,MAFO;EAGbC,MAAM,EAAE,UAHK;EAIbC,UAAU,EAAE,CACR;IACIC,OAAO,EAAE,6CADb;IAEIC,IAAI,EAAE;EAFV,CADQ;AAJC,CAAjB,CADJ;;AAaA,MAAMG,UAAU,GAAG,MACf,IAAAT,uBAAA,EAAiB;EACbC,KAAK,EAAE,QADM;EAEbS,OAAO,EAAE,OAFI;EAGbR,IAAI,EAAE,MAHO;EAIbC,MAAM,EAAE,UAJK;EAKbC,UAAU,EAAE,CACR;IACIC,OAAO,EAAE,uDADb;IAEIC,IAAI,EAAE,SAFV;IAGIK,QAAQ,EAAE;MACNC,MAAM,EAAE,OADF;MAENC,KAAK,EAAE,IAFD;MAGNC,KAAK,EAAE;IAHD;EAHd,CADQ;AALC,CAAjB,CADJ;;AAmBO,MAAMC,iBAAiB,GAAG,4BAA1B;;;AAEA,MAAMC,6BAA6B,GAAG,MAA+B;EACxE,OAAO;IACHV,IAAI,EAAE,gBADH;IAEHW,OAAO,EAAEF,iBAFN;IAGHG,YAAY,EAAE,aAHX;IAIHC,MAAM,EAAE,CACJ,CAAC,qBAAD,CADI,EAEJ,CAAC,sBAAD,CAFI,EAGJ,CAAC,eAAD,CAHI,EAIJ,CAAC,gBAAD,CAJI,CAJL;IAUHC,MAAM,EAAE,CAACrB,OAAO,EAAR,EAAYQ,gBAAgB,EAA5B,EAAgCC,SAAS,EAAzC,EAA6CC,UAAU,EAAvD,CAVL;IAWHY,WAAW,EAAE,EAXV;IAYHC,SAAS,EAAE;EAZR,CAAP;AAcH,CAfM"}
|
@@ -1,11 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
4
|
+
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
5
6
|
value: true
|
6
7
|
});
|
7
8
|
exports.createModelField = void 0;
|
9
|
+
|
8
10
|
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
|
11
|
+
|
9
12
|
const createModelField = params => {
|
10
13
|
const {
|
11
14
|
label,
|
@@ -30,4 +33,5 @@ const createModelField = params => {
|
|
30
33
|
}
|
31
34
|
};
|
32
35
|
};
|
36
|
+
|
33
37
|
exports.createModelField = createModelField;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["createModelField","params","label","fieldId","initialFieldId","type","parent","camelCase","id","storageId","settings","listValidation","validation","multipleValues","predefinedValues","values","enabled"],"sources":["utils.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { CreateModelFieldParams } from \"~/plugins/utils\";\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n const { label, fieldId: initialFieldId, type, parent } = params;\n const fieldId = initialFieldId ? camelCase(initialFieldId) : camelCase(label);\n return {\n id: `${camelCase(parent)}_${fieldId}`,\n storageId: fieldId,\n fieldId,\n label,\n type,\n settings: params.settings || {},\n listValidation: params.listValidation || [],\n validation: params.validation || [],\n multipleValues: params.multipleValues || false,\n predefinedValues: params.predefinedValues || {\n values: [],\n enabled: false\n }\n };\n};\n"],"mappings":"
|
1
|
+
{"version":3,"names":["createModelField","params","label","fieldId","initialFieldId","type","parent","camelCase","id","storageId","settings","listValidation","validation","multipleValues","predefinedValues","values","enabled"],"sources":["utils.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { CreateModelFieldParams } from \"~/plugins/utils\";\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n const { label, fieldId: initialFieldId, type, parent } = params;\n const fieldId = initialFieldId ? camelCase(initialFieldId) : camelCase(label);\n return {\n id: `${camelCase(parent)}_${fieldId}`,\n storageId: fieldId,\n fieldId,\n label,\n type,\n settings: params.settings || {},\n listValidation: params.listValidation || [],\n validation: params.validation || [],\n multipleValues: params.multipleValues || false,\n predefinedValues: params.predefinedValues || {\n values: [],\n enabled: false\n }\n };\n};\n"],"mappings":";;;;;;;;;AAAA;;AAIO,MAAMA,gBAAgB,GAAIC,MAAD,IAAmD;EAC/E,MAAM;IAAEC,KAAF;IAASC,OAAO,EAAEC,cAAlB;IAAkCC,IAAlC;IAAwCC;EAAxC,IAAmDL,MAAzD;EACA,MAAME,OAAO,GAAGC,cAAc,GAAG,IAAAG,kBAAA,EAAUH,cAAV,CAAH,GAA+B,IAAAG,kBAAA,EAAUL,KAAV,CAA7D;EACA,OAAO;IACHM,EAAE,EAAG,GAAE,IAAAD,kBAAA,EAAUD,MAAV,CAAkB,IAAGH,OAAQ,EADjC;IAEHM,SAAS,EAAEN,OAFR;IAGHA,OAHG;IAIHD,KAJG;IAKHG,IALG;IAMHK,QAAQ,EAAET,MAAM,CAACS,QAAP,IAAmB,EAN1B;IAOHC,cAAc,EAAEV,MAAM,CAACU,cAAP,IAAyB,EAPtC;IAQHC,UAAU,EAAEX,MAAM,CAACW,UAAP,IAAqB,EAR9B;IASHC,cAAc,EAAEZ,MAAM,CAACY,cAAP,IAAyB,KATtC;IAUHC,gBAAgB,EAAEb,MAAM,CAACa,gBAAP,IAA2B;MACzCC,MAAM,EAAE,EADiC;MAEzCC,OAAO,EAAE;IAFgC;EAV1C,CAAP;AAeH,CAlBM"}
|
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.stepTypeField = exports.stepTitleField = exports.stepReviewersField = exports.stepIdField = exports.createWorkflowModelDefinition = exports.WORKFLOW_MODEL_ID = void 0;
|
7
|
+
|
7
8
|
var _utils = require("./utils");
|
9
|
+
|
8
10
|
const titleField = () => (0, _utils.createModelField)({
|
9
11
|
label: "Title",
|
10
12
|
type: "text",
|
@@ -14,6 +16,7 @@ const titleField = () => (0, _utils.createModelField)({
|
|
14
16
|
name: "required"
|
15
17
|
}]
|
16
18
|
});
|
19
|
+
|
17
20
|
const stepsField = fields => (0, _utils.createModelField)({
|
18
21
|
label: "Steps",
|
19
22
|
type: "object",
|
@@ -23,6 +26,7 @@ const stepsField = fields => (0, _utils.createModelField)({
|
|
23
26
|
},
|
24
27
|
multipleValues: true
|
25
28
|
});
|
29
|
+
|
26
30
|
const stepTitleField = () => (0, _utils.createModelField)({
|
27
31
|
label: "Title",
|
28
32
|
type: "text",
|
@@ -32,7 +36,9 @@ const stepTitleField = () => (0, _utils.createModelField)({
|
|
32
36
|
name: "required"
|
33
37
|
}]
|
34
38
|
});
|
39
|
+
|
35
40
|
exports.stepTitleField = stepTitleField;
|
41
|
+
|
36
42
|
const stepTypeField = () => (0, _utils.createModelField)({
|
37
43
|
label: "Type",
|
38
44
|
type: "text",
|
@@ -55,7 +61,9 @@ const stepTypeField = () => (0, _utils.createModelField)({
|
|
55
61
|
message: "`type` field value is required in workflow steps."
|
56
62
|
}]
|
57
63
|
});
|
64
|
+
|
58
65
|
exports.stepTypeField = stepTypeField;
|
66
|
+
|
59
67
|
const stepIdField = () => (0, _utils.createModelField)({
|
60
68
|
label: "Id",
|
61
69
|
type: "text",
|
@@ -65,7 +73,9 @@ const stepIdField = () => (0, _utils.createModelField)({
|
|
65
73
|
name: "required"
|
66
74
|
}]
|
67
75
|
});
|
76
|
+
|
68
77
|
exports.stepIdField = stepIdField;
|
78
|
+
|
69
79
|
const stepReviewersField = reviewerModelId => (0, _utils.createModelField)({
|
70
80
|
label: "Reviewers",
|
71
81
|
type: "ref",
|
@@ -84,7 +94,9 @@ const stepReviewersField = reviewerModelId => (0, _utils.createModelField)({
|
|
84
94
|
}
|
85
95
|
}]
|
86
96
|
});
|
97
|
+
|
87
98
|
exports.stepReviewersField = stepReviewersField;
|
99
|
+
|
88
100
|
const scopeField = fields => (0, _utils.createModelField)({
|
89
101
|
type: "object",
|
90
102
|
label: "Scope",
|
@@ -93,6 +105,7 @@ const scopeField = fields => (0, _utils.createModelField)({
|
|
93
105
|
fields
|
94
106
|
}
|
95
107
|
});
|
108
|
+
|
96
109
|
const scopeTypeField = () => (0, _utils.createModelField)({
|
97
110
|
label: "Type",
|
98
111
|
parent: "workflow scope",
|
@@ -115,6 +128,7 @@ const scopeTypeField = () => (0, _utils.createModelField)({
|
|
115
128
|
}]
|
116
129
|
}
|
117
130
|
});
|
131
|
+
|
118
132
|
const scopeDataField = fields => (0, _utils.createModelField)({
|
119
133
|
label: "Data",
|
120
134
|
parent: "workflow scope",
|
@@ -123,30 +137,35 @@ const scopeDataField = fields => (0, _utils.createModelField)({
|
|
123
137
|
fields
|
124
138
|
}
|
125
139
|
});
|
140
|
+
|
126
141
|
const scopeDataPbCategories = () => (0, _utils.createModelField)({
|
127
142
|
label: "Categories",
|
128
143
|
parent: "workflow scope data",
|
129
144
|
type: "text",
|
130
145
|
multipleValues: true
|
131
146
|
});
|
147
|
+
|
132
148
|
const scopeDataPbPages = () => (0, _utils.createModelField)({
|
133
149
|
label: "Pages",
|
134
150
|
parent: "workflow scope data",
|
135
151
|
type: "text",
|
136
152
|
multipleValues: true
|
137
153
|
});
|
154
|
+
|
138
155
|
const scopeDataCmsModels = () => (0, _utils.createModelField)({
|
139
156
|
label: "Models",
|
140
157
|
parent: "workflow scope data",
|
141
158
|
type: "text",
|
142
159
|
multipleValues: true
|
143
160
|
});
|
161
|
+
|
144
162
|
const scopeDataCmsEntries = () => (0, _utils.createModelField)({
|
145
163
|
label: "Entries",
|
146
164
|
parent: "workflow scope data",
|
147
165
|
type: "text",
|
148
166
|
multipleValues: true
|
149
167
|
});
|
168
|
+
|
150
169
|
const applicationField = () => (0, _utils.createModelField)({
|
151
170
|
parent: "workflow",
|
152
171
|
type: "text",
|
@@ -166,12 +185,15 @@ const applicationField = () => (0, _utils.createModelField)({
|
|
166
185
|
}]
|
167
186
|
}
|
168
187
|
});
|
188
|
+
|
169
189
|
const WORKFLOW_MODEL_ID = "apwWorkflowModelDefinition";
|
170
190
|
exports.WORKFLOW_MODEL_ID = WORKFLOW_MODEL_ID;
|
191
|
+
|
171
192
|
const createWorkflowModelDefinition = ({
|
172
193
|
reviewerModelId
|
173
194
|
}) => ({
|
174
195
|
name: "APW - Workflow",
|
196
|
+
|
175
197
|
/**
|
176
198
|
* Id of the model cannot be appWorkflow because it clashes with the GraphQL types for APW.
|
177
199
|
*/
|
@@ -182,4 +204,5 @@ const createWorkflowModelDefinition = ({
|
|
182
204
|
fields: [titleField(), stepsField([stepTitleField(), stepTypeField(), stepIdField(), stepReviewersField(reviewerModelId)]), scopeField([scopeTypeField(), scopeDataField([scopeDataPbCategories(), scopeDataPbPages(), scopeDataCmsModels(), scopeDataCmsEntries()])]), applicationField()],
|
183
205
|
isPrivate: true
|
184
206
|
});
|
207
|
+
|
185
208
|
exports.createWorkflowModelDefinition = createWorkflowModelDefinition;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["titleField","createModelField","label","type","parent","validation","message","name","stepsField","fields","settings","multipleValues","stepTitleField","stepTypeField","predefinedValues","enabled","values","value","stepIdField","stepReviewersField","reviewerModelId","models","modelId","listValidation","scopeField","scopeTypeField","scopeDataField","scopeDataPbCategories","scopeDataPbPages","scopeDataCmsModels","scopeDataCmsEntries","applicationField","WORKFLOW_MODEL_ID","createWorkflowModelDefinition","layout","titleFieldId","description","isPrivate"],"sources":["workflow.model.ts"],"sourcesContent":["import { createModelField } from \"./utils\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { WorkflowModelDefinition } from \"~/types\";\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n parent: \"workflow\",\n validation: [\n {\n message: \"`title` field value is required in workflow.\",\n name: \"required\"\n }\n ]\n });\n\nconst stepsField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Steps\",\n type: \"object\",\n parent: \"workflow\",\n settings: {\n fields\n },\n multipleValues: true\n });\n\nexport const stepTitleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n parent: \"workflow steps\",\n validation: [\n {\n message: \"`title` field value is required in workflow steps.\",\n name: \"required\"\n }\n ]\n });\n\nexport const stepTypeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"workflow steps\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: \"mandatoryBlocking\",\n label: \"Mandatory, blocking - An approval from a reviewer is required before being able to move to the next step and publish the content. \"\n },\n {\n value: \"mandatoryNonBlocking\",\n label: \"Mandatory, non-blocking - An approval from a reviewer is to publish the content, but the next step in the review workflow is not blocked. \"\n },\n {\n value: \"notMandatory\",\n label: \"Not mandatory - This is an optional review step. The content can be published regardless if an approval is provided or not.\"\n }\n ]\n },\n validation: [\n {\n name: \"required\",\n message: \"`type` field value is required in workflow steps.\"\n }\n ]\n });\n\nexport const stepIdField = () =>\n createModelField({\n label: \"Id\",\n type: \"text\",\n parent: \"workflow steps\",\n validation: [\n {\n message: \"`id` field value is required in workflow steps.\",\n name: \"required\"\n }\n ]\n });\n\nexport const stepReviewersField = (reviewerModelId: string) =>\n createModelField({\n label: \"Reviewers\",\n type: \"ref\",\n parent: \"workflow steps\",\n multipleValues: true,\n settings: {\n models: [\n {\n modelId: reviewerModelId\n }\n ]\n },\n listValidation: [\n {\n name: \"minLength\",\n message: \"Value is too short.\",\n settings: {\n value: \"1\"\n }\n }\n ]\n });\n\nconst scopeField = (fields: CmsModelField[]) =>\n createModelField({\n type: \"object\",\n label: \"Scope\",\n parent: \"workflow\",\n settings: {\n fields\n }\n });\n\nconst scopeTypeField = () =>\n createModelField({\n label: \"Type\",\n parent: \"workflow scope\",\n type: \"text\",\n validation: [\n {\n message: \"`type` field value is required in workflow scope.\",\n name: \"required\"\n }\n ],\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: \"default\",\n label: \"Default - Catch all scope that applies to all content that's being published.\"\n },\n {\n value: \"pageBuilder\",\n label: \"Page category (Page Builder only) - The workflow will apply to all pages inside specific categories.\"\n },\n {\n value: \"cms\",\n label: \"Content model (Headless CMS only) - The workflow will apply to all the content inside the specific content models. \"\n }\n ]\n }\n });\n\nconst scopeDataField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Data\",\n parent: \"workflow scope\",\n type: \"object\",\n settings: {\n fields\n }\n });\n\nconst scopeDataPbCategories = () =>\n createModelField({\n label: \"Categories\",\n parent: \"workflow scope data\",\n type: \"text\",\n multipleValues: true\n });\nconst scopeDataPbPages = () =>\n createModelField({\n label: \"Pages\",\n parent: \"workflow scope data\",\n type: \"text\",\n multipleValues: true\n });\nconst scopeDataCmsModels = () =>\n createModelField({\n label: \"Models\",\n parent: \"workflow scope data\",\n type: \"text\",\n multipleValues: true\n });\nconst scopeDataCmsEntries = () =>\n createModelField({\n label: \"Entries\",\n parent: \"workflow scope data\",\n type: \"text\",\n multipleValues: true\n });\n\nconst applicationField = () =>\n createModelField({\n parent: \"workflow\",\n type: \"text\",\n label: \"App\",\n validation: [\n {\n message: \"`app` field value is required in workflow.\",\n name: \"required\"\n }\n ],\n predefinedValues: {\n enabled: true,\n values: [\n { label: \"Page Builder\", value: \"pageBuilder\" },\n { label: \"Headless CMS\", value: \"cms\" }\n ]\n }\n });\n\ninterface CreateWorkflowModelDefinitionParams {\n reviewerModelId: string;\n}\n\nexport const WORKFLOW_MODEL_ID = \"apwWorkflowModelDefinition\";\n\nexport const createWorkflowModelDefinition = ({\n reviewerModelId\n}: CreateWorkflowModelDefinitionParams): WorkflowModelDefinition => ({\n name: \"APW - Workflow\",\n /**\n * Id of the model cannot be appWorkflow because it clashes with the GraphQL types for APW.\n */\n modelId: WORKFLOW_MODEL_ID,\n layout: [[\"workflow_title\"], [\"workflow_steps\"], [\"workflow_scope\"], [\"workflow_app\"]],\n titleFieldId: \"title\",\n description: \"\",\n fields: [\n titleField(),\n stepsField([\n stepTitleField(),\n stepTypeField(),\n stepIdField(),\n stepReviewersField(reviewerModelId)\n ]),\n scopeField([\n scopeTypeField(),\n scopeDataField([\n scopeDataPbCategories(),\n scopeDataPbPages(),\n scopeDataCmsModels(),\n scopeDataCmsEntries()\n ])\n ]),\n applicationField()\n ],\n isPrivate: true\n});\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["titleField","createModelField","label","type","parent","validation","message","name","stepsField","fields","settings","multipleValues","stepTitleField","stepTypeField","predefinedValues","enabled","values","value","stepIdField","stepReviewersField","reviewerModelId","models","modelId","listValidation","scopeField","scopeTypeField","scopeDataField","scopeDataPbCategories","scopeDataPbPages","scopeDataCmsModels","scopeDataCmsEntries","applicationField","WORKFLOW_MODEL_ID","createWorkflowModelDefinition","layout","titleFieldId","description","isPrivate"],"sources":["workflow.model.ts"],"sourcesContent":["import { createModelField } from \"./utils\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { WorkflowModelDefinition } from \"~/types\";\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n parent: \"workflow\",\n validation: [\n {\n message: \"`title` field value is required in workflow.\",\n name: \"required\"\n }\n ]\n });\n\nconst stepsField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Steps\",\n type: \"object\",\n parent: \"workflow\",\n settings: {\n fields\n },\n multipleValues: true\n });\n\nexport const stepTitleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n parent: \"workflow steps\",\n validation: [\n {\n message: \"`title` field value is required in workflow steps.\",\n name: \"required\"\n }\n ]\n });\n\nexport const stepTypeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"workflow steps\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: \"mandatoryBlocking\",\n label: \"Mandatory, blocking - An approval from a reviewer is required before being able to move to the next step and publish the content. \"\n },\n {\n value: \"mandatoryNonBlocking\",\n label: \"Mandatory, non-blocking - An approval from a reviewer is to publish the content, but the next step in the review workflow is not blocked. \"\n },\n {\n value: \"notMandatory\",\n label: \"Not mandatory - This is an optional review step. The content can be published regardless if an approval is provided or not.\"\n }\n ]\n },\n validation: [\n {\n name: \"required\",\n message: \"`type` field value is required in workflow steps.\"\n }\n ]\n });\n\nexport const stepIdField = () =>\n createModelField({\n label: \"Id\",\n type: \"text\",\n parent: \"workflow steps\",\n validation: [\n {\n message: \"`id` field value is required in workflow steps.\",\n name: \"required\"\n }\n ]\n });\n\nexport const stepReviewersField = (reviewerModelId: string) =>\n createModelField({\n label: \"Reviewers\",\n type: \"ref\",\n parent: \"workflow steps\",\n multipleValues: true,\n settings: {\n models: [\n {\n modelId: reviewerModelId\n }\n ]\n },\n listValidation: [\n {\n name: \"minLength\",\n message: \"Value is too short.\",\n settings: {\n value: \"1\"\n }\n }\n ]\n });\n\nconst scopeField = (fields: CmsModelField[]) =>\n createModelField({\n type: \"object\",\n label: \"Scope\",\n parent: \"workflow\",\n settings: {\n fields\n }\n });\n\nconst scopeTypeField = () =>\n createModelField({\n label: \"Type\",\n parent: \"workflow scope\",\n type: \"text\",\n validation: [\n {\n message: \"`type` field value is required in workflow scope.\",\n name: \"required\"\n }\n ],\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: \"default\",\n label: \"Default - Catch all scope that applies to all content that's being published.\"\n },\n {\n value: \"pageBuilder\",\n label: \"Page category (Page Builder only) - The workflow will apply to all pages inside specific categories.\"\n },\n {\n value: \"cms\",\n label: \"Content model (Headless CMS only) - The workflow will apply to all the content inside the specific content models. \"\n }\n ]\n }\n });\n\nconst scopeDataField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Data\",\n parent: \"workflow scope\",\n type: \"object\",\n settings: {\n fields\n }\n });\n\nconst scopeDataPbCategories = () =>\n createModelField({\n label: \"Categories\",\n parent: \"workflow scope data\",\n type: \"text\",\n multipleValues: true\n });\nconst scopeDataPbPages = () =>\n createModelField({\n label: \"Pages\",\n parent: \"workflow scope data\",\n type: \"text\",\n multipleValues: true\n });\nconst scopeDataCmsModels = () =>\n createModelField({\n label: \"Models\",\n parent: \"workflow scope data\",\n type: \"text\",\n multipleValues: true\n });\nconst scopeDataCmsEntries = () =>\n createModelField({\n label: \"Entries\",\n parent: \"workflow scope data\",\n type: \"text\",\n multipleValues: true\n });\n\nconst applicationField = () =>\n createModelField({\n parent: \"workflow\",\n type: \"text\",\n label: \"App\",\n validation: [\n {\n message: \"`app` field value is required in workflow.\",\n name: \"required\"\n }\n ],\n predefinedValues: {\n enabled: true,\n values: [\n { label: \"Page Builder\", value: \"pageBuilder\" },\n { label: \"Headless CMS\", value: \"cms\" }\n ]\n }\n });\n\ninterface CreateWorkflowModelDefinitionParams {\n reviewerModelId: string;\n}\n\nexport const WORKFLOW_MODEL_ID = \"apwWorkflowModelDefinition\";\n\nexport const createWorkflowModelDefinition = ({\n reviewerModelId\n}: CreateWorkflowModelDefinitionParams): WorkflowModelDefinition => ({\n name: \"APW - Workflow\",\n /**\n * Id of the model cannot be appWorkflow because it clashes with the GraphQL types for APW.\n */\n modelId: WORKFLOW_MODEL_ID,\n layout: [[\"workflow_title\"], [\"workflow_steps\"], [\"workflow_scope\"], [\"workflow_app\"]],\n titleFieldId: \"title\",\n description: \"\",\n fields: [\n titleField(),\n stepsField([\n stepTitleField(),\n stepTypeField(),\n stepIdField(),\n stepReviewersField(reviewerModelId)\n ]),\n scopeField([\n scopeTypeField(),\n scopeDataField([\n scopeDataPbCategories(),\n scopeDataPbPages(),\n scopeDataCmsModels(),\n scopeDataCmsEntries()\n ])\n ]),\n applicationField()\n ],\n isPrivate: true\n});\n"],"mappings":"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"}
|
@@ -1,24 +1,32 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
4
|
+
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
5
6
|
value: true
|
6
7
|
});
|
7
8
|
exports.createReviewerStorageOperations = void 0;
|
9
|
+
|
8
10
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
11
|
+
|
9
12
|
var _index = require("./index");
|
13
|
+
|
10
14
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
15
|
+
|
11
16
|
const createReviewerStorageOperations = ({
|
12
17
|
cms,
|
13
18
|
security
|
14
19
|
}) => {
|
15
20
|
const getReviewerModel = async () => {
|
16
21
|
security.disableAuthorization();
|
22
|
+
|
17
23
|
try {
|
18
24
|
const model = await cms.getModel("apwReviewerModelDefinition");
|
25
|
+
|
19
26
|
if (!model) {
|
20
27
|
throw new _error.default("Could not find `apwReviewerModelDefinition` model.", "MODEL_NOT_FOUND_ERROR");
|
21
28
|
}
|
29
|
+
|
22
30
|
return model;
|
23
31
|
} catch (ex) {
|
24
32
|
throw ex;
|
@@ -26,6 +34,7 @@ const createReviewerStorageOperations = ({
|
|
26
34
|
security.enableAuthorization();
|
27
35
|
}
|
28
36
|
};
|
37
|
+
|
29
38
|
const getReviewer = async ({
|
30
39
|
id
|
31
40
|
}) => {
|
@@ -35,9 +44,11 @@ const createReviewerStorageOperations = ({
|
|
35
44
|
security.enableAuthorization();
|
36
45
|
return (0, _index.getFieldValues)(entry, _index.baseFields);
|
37
46
|
};
|
47
|
+
|
38
48
|
return {
|
39
49
|
getReviewerModel,
|
40
50
|
getReviewer,
|
51
|
+
|
41
52
|
async listReviewers(params) {
|
42
53
|
const model = await getReviewerModel();
|
43
54
|
security.disableAuthorization();
|
@@ -47,6 +58,7 @@ const createReviewerStorageOperations = ({
|
|
47
58
|
security.enableAuthorization();
|
48
59
|
return [entries.map(entry => (0, _index.getFieldValues)(entry, _index.baseFields)), meta];
|
49
60
|
},
|
61
|
+
|
50
62
|
async createReviewer(params) {
|
51
63
|
const model = await getReviewerModel();
|
52
64
|
security.disableAuthorization();
|
@@ -54,12 +66,14 @@ const createReviewerStorageOperations = ({
|
|
54
66
|
security.enableAuthorization();
|
55
67
|
return (0, _index.getFieldValues)(entry, _index.baseFields);
|
56
68
|
},
|
69
|
+
|
57
70
|
async updateReviewer(params) {
|
58
71
|
const model = await getReviewerModel();
|
59
72
|
/**
|
60
73
|
* We're fetching the existing entry here because we're not accepting "app" field as input,
|
61
74
|
* but, we still need to retain its value after the "update" operation.
|
62
75
|
*/
|
76
|
+
|
63
77
|
const existingEntry = await getReviewer({
|
64
78
|
id: params.id
|
65
79
|
});
|
@@ -68,6 +82,7 @@ const createReviewerStorageOperations = ({
|
|
68
82
|
security.enableAuthorization();
|
69
83
|
return (0, _index.getFieldValues)(entry, _index.baseFields);
|
70
84
|
},
|
85
|
+
|
71
86
|
async deleteReviewer(params) {
|
72
87
|
const model = await getReviewerModel();
|
73
88
|
security.disableAuthorization();
|
@@ -75,6 +90,8 @@ const createReviewerStorageOperations = ({
|
|
75
90
|
security.enableAuthorization();
|
76
91
|
return true;
|
77
92
|
}
|
93
|
+
|
78
94
|
};
|
79
95
|
};
|
96
|
+
|
80
97
|
exports.createReviewerStorageOperations = createReviewerStorageOperations;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["createReviewerStorageOperations","cms","security","getReviewerModel","disableAuthorization","model","getModel","WebinyError","ex","enableAuthorization","getReviewer","id","entry","getEntryById","getFieldValues","baseFields","listReviewers","params","entries","meta","listLatestEntries","where","map","createReviewer","createEntry","data","updateReviewer","existingEntry","updateEntry","deleteReviewer","deleteEntry"],"sources":["reviewerStorageOperations.ts"],"sourcesContent":["import { ApwReviewerStorageOperations } from \"./types\";\nimport {\n baseFields,\n CreateApwStorageOperationsParams,\n getFieldValues\n} from \"~/storageOperations/index\";\nimport WebinyError from \"@webiny/error\";\n\nexport const createReviewerStorageOperations = ({\n cms,\n security\n}: CreateApwStorageOperationsParams): ApwReviewerStorageOperations => {\n const getReviewerModel = async () => {\n security.disableAuthorization();\n try {\n const model = await cms.getModel(\"apwReviewerModelDefinition\");\n if (!model) {\n throw new WebinyError(\n \"Could not find `apwReviewerModelDefinition` model.\",\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n } catch (ex) {\n throw ex;\n } finally {\n security.enableAuthorization();\n }\n };\n const getReviewer: ApwReviewerStorageOperations[\"getReviewer\"] = async ({ id }) => {\n const model = await getReviewerModel();\n security.disableAuthorization();\n const entry = await cms.getEntryById(model, id);\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n };\n return {\n getReviewerModel,\n getReviewer,\n async listReviewers(params) {\n const model = await getReviewerModel();\n security.disableAuthorization();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where\n }\n });\n security.enableAuthorization();\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createReviewer(params) {\n const model = await getReviewerModel();\n security.disableAuthorization();\n const entry = await cms.createEntry(model, params.data);\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async updateReviewer(params) {\n const model = await getReviewerModel();\n /**\n * We're fetching the existing entry here because we're not accepting \"app\" field as input,\n * but, we still need to retain its value after the \"update\" operation.\n */\n const existingEntry = await getReviewer({ id: params.id });\n\n security.disableAuthorization();\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async deleteReviewer(params) {\n const model = await getReviewerModel();\n security.disableAuthorization();\n await cms.deleteEntry(model, params.id);\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"
|
1
|
+
{"version":3,"names":["createReviewerStorageOperations","cms","security","getReviewerModel","disableAuthorization","model","getModel","WebinyError","ex","enableAuthorization","getReviewer","id","entry","getEntryById","getFieldValues","baseFields","listReviewers","params","entries","meta","listLatestEntries","where","map","createReviewer","createEntry","data","updateReviewer","existingEntry","updateEntry","deleteReviewer","deleteEntry"],"sources":["reviewerStorageOperations.ts"],"sourcesContent":["import { ApwReviewerStorageOperations } from \"./types\";\nimport {\n baseFields,\n CreateApwStorageOperationsParams,\n getFieldValues\n} from \"~/storageOperations/index\";\nimport WebinyError from \"@webiny/error\";\n\nexport const createReviewerStorageOperations = ({\n cms,\n security\n}: CreateApwStorageOperationsParams): ApwReviewerStorageOperations => {\n const getReviewerModel = async () => {\n security.disableAuthorization();\n try {\n const model = await cms.getModel(\"apwReviewerModelDefinition\");\n if (!model) {\n throw new WebinyError(\n \"Could not find `apwReviewerModelDefinition` model.\",\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n } catch (ex) {\n throw ex;\n } finally {\n security.enableAuthorization();\n }\n };\n const getReviewer: ApwReviewerStorageOperations[\"getReviewer\"] = async ({ id }) => {\n const model = await getReviewerModel();\n security.disableAuthorization();\n const entry = await cms.getEntryById(model, id);\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n };\n return {\n getReviewerModel,\n getReviewer,\n async listReviewers(params) {\n const model = await getReviewerModel();\n security.disableAuthorization();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where\n }\n });\n security.enableAuthorization();\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createReviewer(params) {\n const model = await getReviewerModel();\n security.disableAuthorization();\n const entry = await cms.createEntry(model, params.data);\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async updateReviewer(params) {\n const model = await getReviewerModel();\n /**\n * We're fetching the existing entry here because we're not accepting \"app\" field as input,\n * but, we still need to retain its value after the \"update\" operation.\n */\n const existingEntry = await getReviewer({ id: params.id });\n\n security.disableAuthorization();\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async deleteReviewer(params) {\n const model = await getReviewerModel();\n security.disableAuthorization();\n await cms.deleteEntry(model, params.id);\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"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"}
|