@webiny/api-apw 5.24.0 → 5.25.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/createApw/createChangeRequestMethods.js.map +1 -0
- package/createApw/createCommentMethods.js.map +1 -0
- package/createApw/createContentReviewMethods.js.map +1 -0
- package/createApw/createReviewerMethods.js.map +1 -0
- package/createApw/createWorkflowMethods.js.map +1 -0
- package/createApw/index.js +4 -2
- package/createApw/index.js.map +1 -0
- package/index.js.map +1 -0
- package/package.json +22 -22
- package/plugins/context.js +29 -6
- package/plugins/context.js.map +1 -0
- package/plugins/createManageCMSPlugin.js.map +1 -0
- package/plugins/graphql/changeRequest.gql.js +3 -0
- package/plugins/graphql/changeRequest.gql.js.map +1 -0
- package/plugins/graphql/comment.gql.js +3 -0
- package/plugins/graphql/comment.gql.js.map +1 -0
- package/plugins/graphql/contentReview.gql.js +3 -0
- package/plugins/graphql/contentReview.gql.js.map +1 -0
- package/plugins/graphql/reviewer.gql.js +3 -0
- package/plugins/graphql/reviewer.gql.js.map +1 -0
- package/plugins/graphql/workflow.gql.js +3 -0
- package/plugins/graphql/workflow.gql.js.map +1 -0
- package/plugins/graphql.js +1 -0
- package/plugins/graphql.js.map +1 -0
- package/plugins/hooks/createReviewerFromIdentity.js.map +1 -0
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.d.ts +1 -1
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -0
- package/plugins/hooks/deleteCommentsAfterChangeRequest.d.ts +1 -1
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js +1 -1
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -0
- package/plugins/hooks/extendPbPageSchema.js.map +1 -0
- package/plugins/hooks/index.js.map +1 -0
- package/plugins/hooks/initializeContentReviewSteps.d.ts +2 -2
- package/plugins/hooks/initializeContentReviewSteps.js +3 -2
- package/plugins/hooks/initializeContentReviewSteps.js.map +1 -0
- package/plugins/hooks/linkWorkflowToPage.d.ts +2 -2
- package/plugins/hooks/linkWorkflowToPage.js +7 -6
- package/plugins/hooks/linkWorkflowToPage.js.map +1 -0
- package/plugins/hooks/updatePendingChangeRequests.d.ts +1 -1
- package/plugins/hooks/updatePendingChangeRequests.js +19 -16
- package/plugins/hooks/updatePendingChangeRequests.js.map +1 -0
- package/plugins/utils.d.ts +1 -1
- package/plugins/utils.js +7 -5
- package/plugins/utils.js.map +1 -0
- package/storageOperations/changeRequestStorageOperations.js +15 -3
- package/storageOperations/changeRequestStorageOperations.js.map +1 -0
- package/storageOperations/commentStorageOperations.js +15 -3
- package/storageOperations/commentStorageOperations.js.map +1 -0
- package/storageOperations/contentReviewStorageOperations.js +15 -3
- package/storageOperations/contentReviewStorageOperations.js.map +1 -0
- package/storageOperations/index.js.map +1 -0
- package/storageOperations/models/changeRequest.model.js.map +1 -0
- package/storageOperations/models/comment.model.js.map +1 -0
- package/storageOperations/models/contentModelPluginFactory.js.map +1 -0
- package/storageOperations/models/contentReview.model.js.map +1 -0
- package/storageOperations/models/index.js +11 -3
- package/storageOperations/models/index.js.map +1 -0
- package/storageOperations/models/reviewer.model.js.map +1 -0
- package/storageOperations/models/utils.js.map +1 -0
- package/storageOperations/models/workflow.model.js.map +1 -0
- package/storageOperations/reviewerStorageOperations.js +15 -3
- package/storageOperations/reviewerStorageOperations.js.map +1 -0
- package/storageOperations/types.js.map +1 -0
- package/storageOperations/workflowStorageOperations.js +15 -3
- package/storageOperations/workflowStorageOperations.js.map +1 -0
- package/types.d.ts +25 -25
- package/types.js.map +1 -0
- package/utils/errors.js.map +1 -0
- package/utils/fieldResolver.d.ts +6 -5
- package/utils/fieldResolver.js +9 -7
- package/utils/fieldResolver.js.map +1 -0
- package/utils/resolve.d.ts +1 -1
- package/utils/resolve.js.map +1 -0
@@ -71,12 +71,13 @@ const isWorkflowApplicable = (page, workflow) => {
|
|
71
71
|
return false;
|
72
72
|
};
|
73
73
|
|
74
|
-
const linkWorkflowToPage =
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
74
|
+
const linkWorkflowToPage = params => {
|
75
|
+
const {
|
76
|
+
apw,
|
77
|
+
getPage,
|
78
|
+
updatePage,
|
79
|
+
onBeforePageCreate
|
80
|
+
} = params;
|
80
81
|
onBeforePageCreate.subscribe(async ({
|
81
82
|
page
|
82
83
|
}) => {
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["linkWorkflowToPage.ts"],"names":["WORKFLOW_PRECEDENCE","WorkflowScopeTypes","DEFAULT","PB","CMS","workflowByPrecedenceDesc","a","b","scoreA","scope","type","scoreB","workflowByCreatedOnDesc","createdOnA","createdOnB","Date","getTime","isWorkflowApplicable","page","workflow","application","app","ApwWorkflowApplications","scopeType","categories","Array","isArray","includes","category","pages","pid","linkWorkflowToPage","params","apw","getPage","updatePage","onBeforePageCreate","subscribe","entries","list","where","sortedWorkflows","sort","settings","workflowId","id","e","WebinyError","code","data","onAfterWorkflowCreate"],"mappings":"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","sourcesContent":["import get from \"lodash/get\";\nimport set from \"lodash/set\";\nimport WebinyError from \"@webiny/error\";\nimport {\n ApwWorkflow,\n ApwWorkflowApplications,\n CustomEventParams,\n LifeCycleHookCallbackParams,\n PageWithWorkflow,\n WorkflowScopeTypes\n} from \"~/types\";\nimport { PageBuilderContextObject } from \"@webiny/api-page-builder/graphql/types\";\n\nconst WORKFLOW_PRECEDENCE = {\n [WorkflowScopeTypes.DEFAULT]: 0,\n [WorkflowScopeTypes.PB]: 1,\n [WorkflowScopeTypes.CMS]: 1\n};\n\nconst workflowByPrecedenceDesc = (a: ApwWorkflow, b: ApwWorkflow): number => {\n const scoreA = WORKFLOW_PRECEDENCE[a.scope.type];\n const scoreB = WORKFLOW_PRECEDENCE[b.scope.type];\n /**\n * In descending order of workflow precedence.\n */\n return scoreB - scoreA;\n};\n\nconst workflowByCreatedOnDesc = (a: ApwWorkflow, b: ApwWorkflow): number => {\n const createdOnA = get(a, \"createdOn\");\n const createdOnB = get(b, \"createdOn\");\n /**\n * In descending order of workflow createdOn i.e. the most recent one first.\n */\n return new Date(createdOnB).getTime() - new Date(createdOnA).getTime();\n};\n\nconst isWorkflowApplicable = (page: PageWithWorkflow, workflow: ApwWorkflow): boolean => {\n const application = workflow.app;\n if (application !== ApwWorkflowApplications.PB) {\n return false;\n }\n\n const scopeType = workflow.scope.type;\n\n if (scopeType === WorkflowScopeTypes.DEFAULT) {\n return true;\n }\n\n if (scopeType === WorkflowScopeTypes.PB) {\n const categories = get(workflow, \"scope.data.categories\");\n\n if (Array.isArray(categories) && categories.includes(page.category)) {\n return true;\n }\n\n const pages = get(workflow, \"scope.data.pages\");\n if (Array.isArray(pages) && pages.includes(page.pid)) {\n return true;\n }\n }\n\n return false;\n};\n\ninterface PageMethods extends Omit<LifeCycleHookCallbackParams, \"security\"> {\n getPage: PageBuilderContextObject[\"getPage\"];\n updatePage: PageBuilderContextObject[\"updatePage\"];\n onBeforePageCreate: PageBuilderContextObject[\"onBeforePageCreate\"];\n}\n\nexport const linkWorkflowToPage = (params: PageMethods) => {\n const { apw, getPage, updatePage, onBeforePageCreate } = params;\n onBeforePageCreate.subscribe<CustomEventParams>(async ({ page }) => {\n try {\n /*\n * List all workflows for app pageBuilder\n */\n const [entries] = await apw.workflow.list({\n where: { app: ApwWorkflowApplications.PB }\n });\n\n /*\n * Re-order them based on workflow scope and pre-defined rule i.e.\n * \"specific\" entry -> entry for a \"category\" -> \"default\".\n * There can be more than one workflow with same \"scope\" and \"app\".\n * Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.\n */\n const sortedWorkflows = entries\n .sort(workflowByPrecedenceDesc)\n .sort(workflowByCreatedOnDesc);\n\n for (const workflow of sortedWorkflows) {\n /**\n * We workflow if applicable to this page, we're done here.\n * Assign the workflow to the page and exit.\n */\n if (isWorkflowApplicable(page, workflow)) {\n page.settings.apw = {\n workflowId: workflow.id\n };\n break;\n }\n }\n } catch (e) {\n throw new WebinyError(\n `Failed to assign workflow to page \"${page.pid}\".`,\n e.code,\n e.data\n );\n }\n });\n\n apw.workflow.onAfterWorkflowCreate.subscribe(async ({ workflow }) => {\n const { app, scope } = workflow;\n /**\n * If the workflow is applicable PB application and pages are provided,\n * we'll assign workflow for each of those provided page.\n */\n if (\n app === ApwWorkflowApplications.PB &&\n scope.type === WorkflowScopeTypes.PB &&\n scope.data &&\n Array.isArray(scope.data.pages)\n ) {\n for (const pid of scope.data.pages) {\n try {\n /**\n * Currently, we only assign \"workflow\" to latest page.\n */\n const page = await getPage<PageWithWorkflow>(pid);\n /**\n * There can be more than one workflow with same `scope` for same `app`. That is why;\n * We'll update the workflow reference even though it already had one assign.\n */\n await updatePage(page.id, {\n settings: set(page.settings, \"apw.workflowId\", workflow.id)\n });\n } catch (e) {\n if (e.code !== \"NOT_FOUND\") {\n throw e;\n }\n }\n }\n }\n });\n};\n"]}
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import { LifeCycleHookCallbackParams } from "../../types";
|
2
|
-
export declare const updatePendingChangeRequestsCount: ({ apw }: LifeCycleHookCallbackParams) => void;
|
2
|
+
export declare const updatePendingChangeRequestsCount: ({ apw }: Pick<LifeCycleHookCallbackParams, "apw">) => void;
|
@@ -27,7 +27,7 @@ const updatePendingChangeRequests = async ({
|
|
27
27
|
|
28
28
|
const [entryId, version, slug] = stepSlug.split("#");
|
29
29
|
const revisionId = `${entryId}#${version}`;
|
30
|
-
let contentReviewEntry;
|
30
|
+
let contentReviewEntry = null;
|
31
31
|
|
32
32
|
try {
|
33
33
|
contentReviewEntry = await contentReviewMethods.get(revisionId);
|
@@ -37,22 +37,25 @@ const updatePendingChangeRequests = async ({
|
|
37
37
|
}
|
38
38
|
}
|
39
39
|
|
40
|
-
if (contentReviewEntry) {
|
41
|
-
|
42
|
-
* Update "pendingChangeRequests" count of corresponding step in content review entry.
|
43
|
-
*/
|
44
|
-
await contentReviewMethods.update(contentReviewEntry.id, {
|
45
|
-
steps: contentReviewEntry.steps.map(step => {
|
46
|
-
if (step.slug === slug) {
|
47
|
-
return _objectSpread(_objectSpread({}, step), {}, {
|
48
|
-
pendingChangeRequests: step.pendingChangeRequests + delta
|
49
|
-
});
|
50
|
-
}
|
51
|
-
|
52
|
-
return step;
|
53
|
-
})
|
54
|
-
});
|
40
|
+
if (!contentReviewEntry) {
|
41
|
+
return;
|
55
42
|
}
|
43
|
+
/**
|
44
|
+
* Update "pendingChangeRequests" count of corresponding step in content review entry.
|
45
|
+
*/
|
46
|
+
|
47
|
+
|
48
|
+
await contentReviewMethods.update(contentReviewEntry.id, {
|
49
|
+
steps: contentReviewEntry.steps.map(step => {
|
50
|
+
if (step.slug === slug) {
|
51
|
+
return _objectSpread(_objectSpread({}, step), {}, {
|
52
|
+
pendingChangeRequests: step.pendingChangeRequests + delta
|
53
|
+
});
|
54
|
+
}
|
55
|
+
|
56
|
+
return step;
|
57
|
+
})
|
58
|
+
});
|
56
59
|
};
|
57
60
|
|
58
61
|
const updatePendingChangeRequestsCount = ({
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["updatePendingChangeRequests.ts"],"names":["updatePendingChangeRequests","contentReviewMethods","changeRequest","delta","step","stepSlug","entryId","version","slug","split","revisionId","contentReviewEntry","get","e","message","code","update","id","steps","map","pendingChangeRequests","updatePendingChangeRequestsCount","apw","onAfterChangeRequestDelete","subscribe","contentReview","onAfterChangeRequestCreate","onAfterChangeRequestUpdate","original","resolved"],"mappings":";;;;;;;;;;;;;;;AAaA,MAAMA,2BAA2B,GAAG,OAAO;AACvCC,EAAAA,oBADuC;AAEvCC,EAAAA,aAFuC;AAGvCC,EAAAA;AAHuC,CAAP,KAIoB;AACpD,QAAM;AAAEC,IAAAA,IAAI,EAAEC;AAAR,MAAqBH,aAA3B;AACA;AACJ;AACA;;AACI,QAAM,CAACI,OAAD,EAAUC,OAAV,EAAmBC,IAAnB,IAA2BH,QAAQ,CAACI,KAAT,CAAe,GAAf,CAAjC;AACA,QAAMC,UAAU,GAAI,GAAEJ,OAAQ,IAAGC,OAAQ,EAAzC;AAEA,MAAII,kBAA2C,GAAG,IAAlD;;AACA,MAAI;AACAA,IAAAA,kBAAkB,GAAG,MAAMV,oBAAoB,CAACW,GAArB,CAAyBF,UAAzB,CAA3B;AACH,GAFD,CAEE,OAAOG,CAAP,EAAU;AACR,QAAIA,CAAC,CAACC,OAAF,KAAc,2BAAd,IAA6CD,CAAC,CAACE,IAAF,KAAW,WAA5D,EAAyE;AACrE,YAAMF,CAAN;AACH;AACJ;;AACD,MAAI,CAACF,kBAAL,EAAyB;AACrB;AACH;AACD;AACJ;AACA;;;AACI,QAAMV,oBAAoB,CAACe,MAArB,CAA4BL,kBAAkB,CAACM,EAA/C,EAAmD;AACrDC,IAAAA,KAAK,EAAEP,kBAAkB,CAACO,KAAnB,CAAyBC,GAAzB,CAA6Bf,IAAI,IAAI;AACxC,UAAIA,IAAI,CAACI,IAAL,KAAcA,IAAlB,EAAwB;AACpB,+CACOJ,IADP;AAEIgB,UAAAA,qBAAqB,EAAEhB,IAAI,CAACgB,qBAAL,GAA6BjB;AAFxD;AAIH;;AACD,aAAOC,IAAP;AACH,KARM;AAD8C,GAAnD,CAAN;AAWH,CArCD;;AAuCO,MAAMiB,gCAAgC,GAAG,CAAC;AAC7CC,EAAAA;AAD6C,CAAD,KAEA;AAC5CA,EAAAA,GAAG,CAACpB,aAAJ,CAAkBqB,0BAAlB,CAA6CC,SAA7C,CAAuD,OAAO;AAAEtB,IAAAA;AAAF,GAAP,KAA6B;AAChF;AACR;AACA;AACA;AACQ,UAAMF,2BAA2B,CAAC;AAC9BC,MAAAA,oBAAoB,EAAEqB,GAAG,CAACG,aADI;AAE9BvB,MAAAA,aAAa,EAAEA,aAFe;AAG9BC,MAAAA,KAAK,EAAE,CAAC;AAHsB,KAAD,CAAjC;AAKH,GAVD;AAYAmB,EAAAA,GAAG,CAACpB,aAAJ,CAAkBwB,0BAAlB,CAA6CF,SAA7C,CAAuD,OAAO;AAAEtB,IAAAA;AAAF,GAAP,KAA6B;AAChF;AACR;AACA;AACA;AACQ,UAAMF,2BAA2B,CAAC;AAC9BC,MAAAA,oBAAoB,EAAEqB,GAAG,CAACG,aADI;AAE9BvB,MAAAA,aAF8B;AAG9BC,MAAAA,KAAK,EAAE;AAHuB,KAAD,CAAjC;AAKH,GAVD;AAYAmB,EAAAA,GAAG,CAACpB,aAAJ,CAAkByB,0BAAlB,CAA6CH,SAA7C,CAAuD,OAAO;AAAEtB,IAAAA,aAAF;AAAiB0B,IAAAA;AAAjB,GAAP,KAAuC;AAC1F;AACR;AACA;AACA;AACQ,QAAIA,QAAQ,CAACC,QAAT,KAAsB3B,aAAa,CAAC2B,QAAxC,EAAkD;AAC9C,YAAMA,QAAQ,GAAG3B,aAAa,CAAC2B,QAA/B;AACA,YAAM1B,KAAK,GAAG0B,QAAQ,KAAK,IAAb,GAAoB,CAAC,CAArB,GAAyB,CAAvC;AAEA,YAAM7B,2BAA2B,CAAC;AAC9BC,QAAAA,oBAAoB,EAAEqB,GAAG,CAACG,aADI;AAE9BvB,QAAAA,aAF8B;AAG9BC,QAAAA;AAH8B,OAAD,CAAjC;AAKH;AACJ,GAfD;AAgBH,CA3CM","sourcesContent":["import {\n ApwChangeRequest,\n ApwContentReview,\n ApwContentReviewCrud,\n LifeCycleHookCallbackParams\n} from \"~/types\";\n\ninterface UpdatePendingChangeRequestsParams {\n contentReviewMethods: ApwContentReviewCrud;\n changeRequest: ApwChangeRequest;\n delta: number;\n}\n\nconst updatePendingChangeRequests = async ({\n contentReviewMethods,\n changeRequest,\n delta\n}: UpdatePendingChangeRequestsParams): Promise<void> => {\n const { step: stepSlug } = changeRequest;\n /*\n * Get associated content review entry.\n */\n const [entryId, version, slug] = stepSlug.split(\"#\");\n const revisionId = `${entryId}#${version}`;\n\n let contentReviewEntry: ApwContentReview | null = null;\n try {\n contentReviewEntry = await contentReviewMethods.get(revisionId);\n } catch (e) {\n if (e.message !== \"index_not_found_exception\" && e.code !== \"NOT_FOUND\") {\n throw e;\n }\n }\n if (!contentReviewEntry) {\n return;\n }\n /**\n * Update \"pendingChangeRequests\" count of corresponding step in content review entry.\n */\n await contentReviewMethods.update(contentReviewEntry.id, {\n steps: contentReviewEntry.steps.map(step => {\n if (step.slug === slug) {\n return {\n ...step,\n pendingChangeRequests: step.pendingChangeRequests + delta\n };\n }\n return step;\n })\n });\n};\n\nexport const updatePendingChangeRequestsCount = ({\n apw\n}: Pick<LifeCycleHookCallbackParams, \"apw\">) => {\n apw.changeRequest.onAfterChangeRequestDelete.subscribe(async ({ changeRequest }) => {\n /**\n * After a \"changeRequest\" is deleted, decrement the \"pendingChangeRequests\" count\n * in the corresponding step of the content review entry.\n */\n await updatePendingChangeRequests({\n contentReviewMethods: apw.contentReview,\n changeRequest: changeRequest,\n delta: -1\n });\n });\n\n apw.changeRequest.onAfterChangeRequestCreate.subscribe(async ({ changeRequest }) => {\n /**\n * After a \"changeRequest\" is created, increment the \"pendingChangeRequests\" count\n * of the corresponding step in the content review entry.\n */\n await updatePendingChangeRequests({\n contentReviewMethods: apw.contentReview,\n changeRequest,\n delta: 1\n });\n });\n\n apw.changeRequest.onAfterChangeRequestUpdate.subscribe(async ({ changeRequest, original }) => {\n /**\n * After a \"changeRequest\" is created, and the value of \"resolved\" field has changed;\n * then we also need to update the \"pendingChangeRequests\" count of the corresponding step in the content review entry.\n */\n if (original.resolved !== changeRequest.resolved) {\n const resolved = changeRequest.resolved;\n const delta = resolved === true ? -1 : 1;\n\n await updatePendingChangeRequests({\n contentReviewMethods: apw.contentReview,\n changeRequest,\n delta\n });\n }\n });\n};\n"]}
|
package/plugins/utils.d.ts
CHANGED
@@ -9,7 +9,7 @@ export interface HasReviewersParams {
|
|
9
9
|
step: ApwContentReviewStep;
|
10
10
|
getReviewer: ApwReviewerCrud["get"];
|
11
11
|
}
|
12
|
-
export declare const hasReviewer: (
|
12
|
+
export declare const hasReviewer: (params: HasReviewersParams) => Promise<Boolean>;
|
13
13
|
export declare const getValue: (object: Record<string, any>, key: string) => any;
|
14
14
|
export declare const getContentReviewStepInitialStatus: (workflowSteps: ApwWorkflowStep[], index: number, previousStepStatus: ApwContentReviewStepStatus) => ApwContentReviewStepStatus;
|
15
15
|
export declare const getNextStepStatus: (previousStepType: ApwWorkflowStepTypes, previousStepStatus: ApwContentReviewStepStatus) => ApwContentReviewStepStatus;
|
package/plugins/utils.js
CHANGED
@@ -11,11 +11,13 @@ var _get = _interopRequireDefault(require("lodash/get"));
|
|
11
11
|
|
12
12
|
var _types = require("../types");
|
13
13
|
|
14
|
-
const hasReviewer = async
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
const hasReviewer = async params => {
|
15
|
+
const {
|
16
|
+
getReviewer,
|
17
|
+
identity,
|
18
|
+
step
|
19
|
+
} = params;
|
20
|
+
|
19
21
|
for (const stepReviewer of step.reviewers) {
|
20
22
|
const entry = await getReviewer(stepReviewer.id);
|
21
23
|
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["hasReviewer","params","getReviewer","identity","step","stepReviewer","reviewers","entry","id","identityId","getValue","object","key","getContentReviewStepInitialStatus","workflowSteps","index","previousStepStatus","ApwContentReviewStepStatus","ACTIVE","previousStep","type","ApwWorkflowStepTypes","MANDATORY_BLOCKING","INACTIVE","getNextStepStatus","previousStepType","DONE"],"mappings":";;;;;;;;;AACA;;AACA;;AAmBO,MAAMA,WAAW,GAAG,MAAOC,MAAP,IAAwD;AAC/E,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA,QAAf;AAAyBC,IAAAA;AAAzB,MAAkCH,MAAxC;;AACA,OAAK,MAAMI,YAAX,IAA2BD,IAAI,CAACE,SAAhC,EAA2C;AACvC,UAAMC,KAAK,GAAG,MAAML,WAAW,CAACG,YAAY,CAACG,EAAd,CAA/B;;AAEA,QAAID,KAAK,CAACE,UAAN,KAAqBN,QAAQ,CAACK,EAAlC,EAAsC;AAClC,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH,CAXM;;;;AAaA,MAAME,QAAQ,GAAG,CAACC,MAAD,EAA8BC,GAA9B,KAA8C;AAClE,SAAO,kBAAID,MAAJ,EAAa,UAASC,GAAI,EAA1B,CAAP;AACH,CAFM;;;;AAIA,MAAMC,iCAAiC,GAAG,CAC7CC,aAD6C,EAE7CC,KAF6C,EAG7CC,kBAH6C,KAIhB;AAC7B;AACJ;AACA;AACI,MAAID,KAAK,KAAK,CAAd,EAAiB;AACb,WAAOE,kCAA2BC,MAAlC;AACH;;AAED,QAAMC,YAAY,GAAGL,aAAa,CAACC,KAAK,GAAG,CAAT,CAAlC;;AACA,MACIC,kBAAkB,KAAKC,kCAA2BC,MAAlD,IACAC,YAAY,CAACC,IAAb,KAAsBC,4BAAqBC,kBAF/C,EAGE;AACE,WAAOL,kCAA2BC,MAAlC;AACH;;AAED,SAAOD,kCAA2BM,QAAlC;AACH,CArBM;;;;AAuBA,MAAMC,iBAAiB,GAAG,CAC7BC,gBAD6B,EAE7BT,kBAF6B,KAGA;AAC7B,MAAIA,kBAAkB,KAAKC,kCAA2BS,IAAtD,EAA4D;AACxD,WAAOT,kCAA2BC,MAAlC;AACH;;AAED,MACIF,kBAAkB,KAAKC,kCAA2BC,MAAlD,IACAO,gBAAgB,KAAKJ,4BAAqBC,kBAF9C,EAGE;AACE,WAAOL,kCAA2BC,MAAlC;AACH;;AAED,SAAOD,kCAA2BM,QAAlC;AACH,CAhBM","sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport get from \"lodash/get\";\nimport {\n ApwContentReviewStep,\n ApwContentReviewStepStatus,\n ApwReviewerCrud,\n ApwWorkflowStep,\n ApwWorkflowStepTypes\n} from \"~/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\n\nexport interface CreateModelFieldParams extends Omit<CmsModelField, \"id\" | \"fieldId\"> {\n parent: string;\n}\n\nexport interface HasReviewersParams {\n identity: SecurityIdentity;\n step: ApwContentReviewStep;\n getReviewer: ApwReviewerCrud[\"get\"];\n}\n\nexport const hasReviewer = async (params: HasReviewersParams): Promise<Boolean> => {\n const { getReviewer, identity, step } = params;\n for (const stepReviewer of step.reviewers) {\n const entry = await getReviewer(stepReviewer.id);\n\n if (entry.identityId === identity.id) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const getValue = (object: Record<string, any>, key: string) => {\n return get(object, `values.${key}`);\n};\n\nexport const getContentReviewStepInitialStatus = (\n workflowSteps: ApwWorkflowStep[],\n index: number,\n previousStepStatus: ApwContentReviewStepStatus\n): ApwContentReviewStepStatus => {\n /**\n * Always set first step 'active' by default.\n */\n if (index === 0) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n const previousStep = workflowSteps[index - 1];\n if (\n previousStepStatus === ApwContentReviewStepStatus.ACTIVE &&\n previousStep.type !== ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n return ApwContentReviewStepStatus.INACTIVE;\n};\n\nexport const getNextStepStatus = (\n previousStepType: ApwWorkflowStepTypes,\n previousStepStatus: ApwContentReviewStepStatus\n): ApwContentReviewStepStatus => {\n if (previousStepStatus === ApwContentReviewStepStatus.DONE) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n if (\n previousStepStatus === ApwContentReviewStepStatus.ACTIVE &&\n previousStepType !== ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n return ApwContentReviewStepStatus.INACTIVE;\n};\n"]}
|
@@ -13,6 +13,8 @@ var _index = require("./index");
|
|
13
13
|
|
14
14
|
var _fieldResolver = require("../utils/fieldResolver");
|
15
15
|
|
16
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
17
|
+
|
16
18
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
17
19
|
|
18
20
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
@@ -21,8 +23,14 @@ const createChangeRequestStorageOperations = ({
|
|
21
23
|
cms,
|
22
24
|
getCmsContext
|
23
25
|
}) => {
|
24
|
-
const getChangeRequestModel = () => {
|
25
|
-
|
26
|
+
const getChangeRequestModel = async () => {
|
27
|
+
const model = await cms.getModel("apwChangeRequestModelDefinition");
|
28
|
+
|
29
|
+
if (!model) {
|
30
|
+
throw new _error.default("Could not find `apwWorkflowModelDefinition` model.", "MODEL_NOT_FOUND_ERROR");
|
31
|
+
}
|
32
|
+
|
33
|
+
return model;
|
26
34
|
};
|
27
35
|
|
28
36
|
const getChangeRequest = async ({
|
@@ -44,7 +52,11 @@ const createChangeRequestStorageOperations = ({
|
|
44
52
|
|
45
53
|
async listChangeRequests(params) {
|
46
54
|
const model = await getChangeRequestModel();
|
47
|
-
const [entries, meta] = await cms.listLatestEntries(model, params)
|
55
|
+
const [entries, meta] = await cms.listLatestEntries(model, _objectSpread(_objectSpread({}, params), {}, {
|
56
|
+
where: _objectSpread(_objectSpread({}, params.where), {}, {
|
57
|
+
tenant: model.tenant
|
58
|
+
})
|
59
|
+
}));
|
48
60
|
const all = await Promise.all(entries.map(entry => (0, _fieldResolver.getFieldValues)({
|
49
61
|
entry,
|
50
62
|
fields: _index.baseFields,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["changeRequestStorageOperations.ts"],"names":["createChangeRequestStorageOperations","cms","getCmsContext","getChangeRequestModel","model","getModel","WebinyError","getChangeRequest","id","entry","getEntryById","fields","baseFields","context","transformers","listChangeRequests","params","entries","meta","listLatestEntries","where","tenant","all","Promise","map","createChangeRequest","createEntry","data","updateChangeRequest","existingEntry","updateEntry","deleteChangeRequest","deleteEntry"],"mappings":"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","sourcesContent":["import { ApwChangeRequestStorageOperations } from \"./types\";\nimport { baseFields, CreateApwStorageOperationsParams } from \"~/storageOperations/index\";\nimport { getFieldValues, getTransformer } from \"~/utils/fieldResolver\";\nimport WebinyError from \"@webiny/error\";\nimport { ApwChangeRequest } from \"~/types\";\n\nexport const createChangeRequestStorageOperations = ({\n cms,\n getCmsContext\n}: CreateApwStorageOperationsParams): ApwChangeRequestStorageOperations => {\n const getChangeRequestModel = async () => {\n const model = await cms.getModel(\"apwChangeRequestModelDefinition\");\n if (!model) {\n throw new WebinyError(\n \"Could not find `apwWorkflowModelDefinition` model.\",\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n const getChangeRequest: ApwChangeRequestStorageOperations[\"getChangeRequest\"] = async ({\n id\n }) => {\n const model = await getChangeRequestModel();\n const entry = await cms.getEntryById(model, id);\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n };\n return {\n getChangeRequestModel,\n getChangeRequest,\n async listChangeRequests(params) {\n const model = await getChangeRequestModel();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where,\n tenant: model.tenant\n }\n });\n const all = await Promise.all(\n entries.map(entry =>\n getFieldValues<ApwChangeRequest>({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n })\n )\n );\n return [all, meta];\n },\n async createChangeRequest(params) {\n const model = await getChangeRequestModel();\n const entry = await cms.createEntry(model, params.data);\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n },\n async updateChangeRequest(params) {\n const model = await getChangeRequestModel();\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 getChangeRequest({ id: params.id });\n\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n },\n async deleteChangeRequest(params) {\n const model = await getChangeRequestModel();\n await cms.deleteEntry(model, params.id);\n return true;\n }\n };\n};\n"]}
|
@@ -13,6 +13,8 @@ var _index = require("./index");
|
|
13
13
|
|
14
14
|
var _fieldResolver = require("../utils/fieldResolver");
|
15
15
|
|
16
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
17
|
+
|
16
18
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
17
19
|
|
18
20
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
@@ -21,8 +23,14 @@ const createCommentStorageOperations = ({
|
|
21
23
|
cms,
|
22
24
|
getCmsContext
|
23
25
|
}) => {
|
24
|
-
const getCommentModel = () => {
|
25
|
-
|
26
|
+
const getCommentModel = async () => {
|
27
|
+
const model = await cms.getModel("apwCommentModelDefinition");
|
28
|
+
|
29
|
+
if (!model) {
|
30
|
+
throw new _error.default("Could not find `apwContentReviewModelDefinition` model.", "MODEL_NOT_FOUND_ERROR");
|
31
|
+
}
|
32
|
+
|
33
|
+
return model;
|
26
34
|
};
|
27
35
|
|
28
36
|
const getComment = async ({
|
@@ -44,7 +52,11 @@ const createCommentStorageOperations = ({
|
|
44
52
|
|
45
53
|
async listComments(params) {
|
46
54
|
const model = await getCommentModel();
|
47
|
-
const [entries, meta] = await cms.listLatestEntries(model, params)
|
55
|
+
const [entries, meta] = await cms.listLatestEntries(model, _objectSpread(_objectSpread({}, params), {}, {
|
56
|
+
where: _objectSpread(_objectSpread({}, params.where), {}, {
|
57
|
+
tenant: model.tenant
|
58
|
+
})
|
59
|
+
}));
|
48
60
|
const all = await Promise.all(entries.map(entry => (0, _fieldResolver.getFieldValues)({
|
49
61
|
entry,
|
50
62
|
fields: _index.baseFields,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["commentStorageOperations.ts"],"names":["createCommentStorageOperations","cms","getCmsContext","getCommentModel","model","getModel","WebinyError","getComment","id","entry","getEntryById","fields","baseFields","context","transformers","listComments","params","entries","meta","listLatestEntries","where","tenant","all","Promise","map","createComment","refModel","getChangeRequestModel","createEntry","data","changeRequest","modelId","updateComment","existingEntry","updateEntry","deleteComment","deleteEntry"],"mappings":"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","sourcesContent":["import { ApwStorageOperations } from \"./types\";\nimport { ApwCommentStorageOperations } from \"./types\";\nimport { baseFields, CreateApwStorageOperationsParams } from \"~/storageOperations/index\";\nimport { getFieldValues, getTransformer } from \"~/utils/fieldResolver\";\nimport WebinyError from \"@webiny/error\";\nimport { ApwComment } from \"~/types\";\n\nexport const createCommentStorageOperations = ({\n cms,\n getCmsContext\n}: CreateApwStorageOperationsParams): ApwCommentStorageOperations => {\n const getCommentModel = async () => {\n const model = await cms.getModel(\"apwCommentModelDefinition\");\n if (!model) {\n throw new WebinyError(\n \"Could not find `apwContentReviewModelDefinition` model.\",\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n const getComment: ApwCommentStorageOperations[\"getComment\"] = async ({ id }) => {\n const model = await getCommentModel();\n const entry = await cms.getEntryById(model, id);\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n };\n return {\n getCommentModel,\n getComment,\n async listComments(params) {\n const model = await getCommentModel();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where,\n tenant: model.tenant\n }\n });\n const all = await Promise.all(\n entries.map(entry =>\n getFieldValues<ApwComment>({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n })\n )\n );\n return [all, meta];\n },\n async createComment(this: ApwStorageOperations, params) {\n const model = await getCommentModel();\n const refModel = await this.getChangeRequestModel();\n const entry = await cms.createEntry(model, {\n ...params.data,\n changeRequest: {\n ...params.data.changeRequest,\n modelId: refModel.modelId\n }\n });\n\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n },\n async updateComment(params) {\n const model = await getCommentModel();\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 getComment({ id: params.id });\n\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n },\n async deleteComment(params) {\n const model = await getCommentModel();\n await cms.deleteEntry(model, params.id);\n return true;\n }\n };\n};\n"]}
|
@@ -11,6 +11,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
11
11
|
|
12
12
|
var _index = require("./index");
|
13
13
|
|
14
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
15
|
+
|
14
16
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
15
17
|
|
16
18
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
@@ -18,8 +20,14 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
18
20
|
const createContentReviewStorageOperations = ({
|
19
21
|
cms
|
20
22
|
}) => {
|
21
|
-
const getContentReviewModel = () => {
|
22
|
-
|
23
|
+
const getContentReviewModel = async () => {
|
24
|
+
const model = await cms.getModel("apwContentReviewModelDefinition");
|
25
|
+
|
26
|
+
if (!model) {
|
27
|
+
throw new _error.default("Could not find `apwContentReviewModelDefinition` model.", "MODEL_NOT_FOUND_ERROR");
|
28
|
+
}
|
29
|
+
|
30
|
+
return model;
|
23
31
|
};
|
24
32
|
|
25
33
|
const getContentReview = async ({
|
@@ -36,7 +44,11 @@ const createContentReviewStorageOperations = ({
|
|
36
44
|
|
37
45
|
async listContentReviews(params) {
|
38
46
|
const model = await getContentReviewModel();
|
39
|
-
const [entries, meta] = await cms.listLatestEntries(model, params)
|
47
|
+
const [entries, meta] = await cms.listLatestEntries(model, _objectSpread(_objectSpread({}, params), {}, {
|
48
|
+
where: _objectSpread(_objectSpread({}, params.where), {}, {
|
49
|
+
tenant: model.tenant
|
50
|
+
})
|
51
|
+
}));
|
40
52
|
return [entries.map(entry => (0, _index.getFieldValues)(entry, _index.baseFields)), meta];
|
41
53
|
},
|
42
54
|
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["contentReviewStorageOperations.ts"],"names":["createContentReviewStorageOperations","cms","getContentReviewModel","model","getModel","WebinyError","getContentReview","id","entry","getEntryById","baseFields","listContentReviews","params","entries","meta","listLatestEntries","where","tenant","map","createContentReview","createEntry","data","updateContentReview","existingEntry","updateEntry","deleteContentReview","deleteEntry"],"mappings":";;;;;;;;;;;AACA;;AAKA;;;;;;AAEO,MAAMA,oCAAoC,GAAG,CAAC;AACjDC,EAAAA;AADiD,CAAD,KAEoC;AACpF,QAAMC,qBAAqB,GAAG,YAAY;AACtC,UAAMC,KAAK,GAAG,MAAMF,GAAG,CAACG,QAAJ,CAAa,iCAAb,CAApB;;AACA,QAAI,CAACD,KAAL,EAAY;AACR,YAAM,IAAIE,cAAJ,CACF,yDADE,EAEF,uBAFE,CAAN;AAIH;;AACD,WAAOF,KAAP;AACH,GATD;;AAUA,QAAMG,gBAAuE,GAAG,OAAO;AACnFC,IAAAA;AADmF,GAAP,KAE1E;AACF,UAAMJ,KAAK,GAAG,MAAMD,qBAAqB,EAAzC;AACA,UAAMM,KAAK,GAAG,MAAMP,GAAG,CAACQ,YAAJ,CAAiBN,KAAjB,EAAwBI,EAAxB,CAApB;AACA,WAAO,2BAAeC,KAAf,EAAsBE,iBAAtB,CAAP;AACH,GAND;;AAOA,SAAO;AACHR,IAAAA,qBADG;AAEHI,IAAAA,gBAFG;;AAGH,UAAMK,kBAAN,CAAyBC,MAAzB,EAAiC;AAC7B,YAAMT,KAAK,GAAG,MAAMD,qBAAqB,EAAzC;AACA,YAAM,CAACW,OAAD,EAAUC,IAAV,IAAkB,MAAMb,GAAG,CAACc,iBAAJ,CAAsBZ,KAAtB,kCACvBS,MADuB;AAE1BI,QAAAA,KAAK,kCACEJ,MAAM,CAACI,KADT;AAEDC,UAAAA,MAAM,EAAEd,KAAK,CAACc;AAFb;AAFqB,SAA9B;AAOA,aAAO,CAACJ,OAAO,CAACK,GAAR,CAAYV,KAAK,IAAI,2BAAeA,KAAf,EAAsBE,iBAAtB,CAArB,CAAD,EAA0DI,IAA1D,CAAP;AACH,KAbE;;AAcH,UAAMK,mBAAN,CAA0BP,MAA1B,EAAkC;AAC9B,YAAMT,KAAK,GAAG,MAAMD,qBAAqB,EAAzC;AACA,YAAMM,KAAK,GAAG,MAAMP,GAAG,CAACmB,WAAJ,CAAgBjB,KAAhB,EAAuBS,MAAM,CAACS,IAA9B,CAApB;AACA,aAAO,2BAAeb,KAAf,EAAsBE,iBAAtB,CAAP;AACH,KAlBE;;AAmBH,UAAMY,mBAAN,CAA0BV,MAA1B,EAAkC;AAC9B,YAAMT,KAAK,GAAG,MAAMD,qBAAqB,EAAzC;AACA;AACZ;AACA;AACA;;AACY,YAAMqB,aAAa,GAAG,MAAMjB,gBAAgB,CAAC;AAAEC,QAAAA,EAAE,EAAEK,MAAM,CAACL;AAAb,OAAD,CAA5C;AAEA,YAAMC,KAAK,GAAG,MAAMP,GAAG,CAACuB,WAAJ,CAAgBrB,KAAhB,EAAuBS,MAAM,CAACL,EAA9B,kCACbgB,aADa,GAEbX,MAAM,CAACS,IAFM,EAApB;AAIA,aAAO,2BAAeb,KAAf,EAAsBE,iBAAtB,CAAP;AACH,KAhCE;;AAiCH,UAAMe,mBAAN,CAA0Bb,MAA1B,EAAkC;AAC9B,YAAMT,KAAK,GAAG,MAAMD,qBAAqB,EAAzC;AACA,YAAMD,GAAG,CAACyB,WAAJ,CAAgBvB,KAAhB,EAAuBS,MAAM,CAACL,EAA9B,CAAN;AACA,aAAO,IAAP;AACH;;AArCE,GAAP;AAuCH,CA3DM","sourcesContent":["import { ApwContentReviewStorageOperations } from \"./types\";\nimport {\n baseFields,\n CreateApwStorageOperationsParams,\n getFieldValues\n} from \"~/storageOperations/index\";\nimport WebinyError from \"@webiny/error\";\n\nexport const createContentReviewStorageOperations = ({\n cms\n}: Pick<CreateApwStorageOperationsParams, \"cms\">): ApwContentReviewStorageOperations => {\n const getContentReviewModel = async () => {\n const model = await cms.getModel(\"apwContentReviewModelDefinition\");\n if (!model) {\n throw new WebinyError(\n \"Could not find `apwContentReviewModelDefinition` model.\",\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n const getContentReview: ApwContentReviewStorageOperations[\"getContentReview\"] = async ({\n id\n }) => {\n const model = await getContentReviewModel();\n const entry = await cms.getEntryById(model, id);\n return getFieldValues(entry, baseFields);\n };\n return {\n getContentReviewModel,\n getContentReview,\n async listContentReviews(params) {\n const model = await getContentReviewModel();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where,\n tenant: model.tenant\n }\n });\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createContentReview(params) {\n const model = await getContentReviewModel();\n const entry = await cms.createEntry(model, params.data);\n return getFieldValues(entry, baseFields);\n },\n async updateContentReview(params) {\n const model = await getContentReviewModel();\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 getContentReview({ id: params.id });\n\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n return getFieldValues(entry, baseFields);\n },\n async deleteContentReview(params) {\n const model = await getContentReviewModel();\n await cms.deleteEntry(model, params.id);\n return true;\n }\n };\n};\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["getFieldValues","entry","fields","values","baseFields","createStorageOperations","cms","getCmsContext","context"],"mappings":";;;;;;;;;;;;AAAA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAOA;AACA;AACA;AACA;AACO,SAASA,cAAT,CAAwBC,KAAxB,EAAyCC,MAAzC,EAAgE;AACnE,yCAAY,mBAAKD,KAAL,EAAYC,MAAZ,CAAZ,GAAoCD,KAAK,CAACE,MAA1C;AACH;;AAEM,MAAMC,UAAU,GAAG,CAAC,IAAD,EAAO,WAAP,EAAoB,WAApB,EAAiC,SAAjC,CAAnB;;;AAEA,MAAMC,uBAAuB,GAAG,CAAC;AACpCC,EAAAA,GADoC;AAEpCC,EAAAA;AAFoC,CAAD,KAGuB;AAC1D,QAAMC,OAAO,GAAGD,aAAa,EAA7B;AACA;AACJ;AACA;;AACI,+BAAgBC,OAAhB;AAEA,mFACO,gEAAgC;AAAEF,IAAAA;AAAF,GAAhC,CADP,GAEO,gEAAgC;AAAEA,IAAAA;AAAF,GAAhC,CAFP,GAGO,0EAAqC;AAAEA,IAAAA;AAAF,GAArC,CAHP,GAIO,0EAAqC;AAAEA,IAAAA,GAAF;AAAOC,IAAAA;AAAP,GAArC,CAJP,GAKO,8DAA+B;AAC9BD,IAAAA,GAD8B;AAE9BC,IAAAA;AAF8B,GAA/B,CALP;AAUH,CApBM","sourcesContent":["import pick from \"lodash/pick\";\nimport { CmsContext, CmsEntry, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { ApwStorageOperations } from \"~/types\";\nimport { createReviewerStorageOperations } from \"./reviewerStorageOperations\";\nimport { createWorkflowStorageOperations } from \"./workflowStorageOperations\";\nimport { createContentReviewStorageOperations } from \"./contentReviewStorageOperations\";\nimport { createChangeRequestStorageOperations } from \"./changeRequestStorageOperations\";\nimport { createCommentStorageOperations } from \"~/storageOperations/commentStorageOperations\";\nimport { createApwModels } from \"./models\";\n\nexport interface CreateApwStorageOperationsParams {\n cms: HeadlessCms;\n getCmsContext: () => CmsContext;\n}\n\n/**\n * Using any because value can be a lot of types.\n * TODO @ts-refactor figure out correct types.\n */\nexport function getFieldValues(entry: CmsEntry, fields: string[]): any {\n return { ...pick(entry, fields), ...entry.values };\n}\n\nexport const baseFields = [\"id\", \"createdBy\", \"createdOn\", \"savedOn\"];\n\nexport const createStorageOperations = ({\n cms,\n getCmsContext\n}: CreateApwStorageOperationsParams): ApwStorageOperations => {\n const context = getCmsContext();\n /**\n * Register Apw models.\n */\n createApwModels(context);\n\n return {\n ...createReviewerStorageOperations({ cms }),\n ...createWorkflowStorageOperations({ cms }),\n ...createContentReviewStorageOperations({ cms }),\n ...createChangeRequestStorageOperations({ cms, getCmsContext }),\n ...createCommentStorageOperations({\n cms,\n getCmsContext\n })\n };\n};\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["changeRequest.model.ts"],"names":["bodyField","label","type","parent","titleField","resolvedField","mediaField","stepField","validation","name","message","createChangeRequestModelDefinition","modelId","titleFieldId","layout","fields"],"mappings":";;;;;;;AAAA;;AAGA,MAAMA,SAAS,GAAG,MACd,6BAAiB;AACbC,EAAAA,KAAK,EAAE,MADM;AAEbC,EAAAA,IAAI,EAAE,WAFO;AAGbC,EAAAA,MAAM,EAAE;AAHK,CAAjB,CADJ;;AAOA,MAAMC,UAAU,GAAG,MACf,6BAAiB;AACbH,EAAAA,KAAK,EAAE,OADM;AAEbC,EAAAA,IAAI,EAAE,MAFO;AAGbC,EAAAA,MAAM,EAAE;AAHK,CAAjB,CADJ;;AAOA,MAAME,aAAa,GAAG,MAClB,6BAAiB;AACbJ,EAAAA,KAAK,EAAE,UADM;AAEbC,EAAAA,IAAI,EAAE,SAFO;AAGbC,EAAAA,MAAM,EAAE;AAHK,CAAjB,CADJ;;AAOA,MAAMG,UAAU,GAAG,MACf,6BAAiB;AACbL,EAAAA,KAAK,EAAE,OADM;AAEbC,EAAAA,IAAI,EAAE,MAFO;AAGbC,EAAAA,MAAM,EAAE;AAHK,CAAjB,CADJ;;AAOA,MAAMI,SAAS,GAAG,MACd,6BAAiB;AACbN,EAAAA,KAAK,EAAE,MADM;AAEbC,EAAAA,IAAI,EAAE,MAFO;AAGbC,EAAAA,MAAM,EAAE,eAHK;AAIbK,EAAAA,UAAU,EAAE,CACR;AACIC,IAAAA,IAAI,EAAE,UADV;AAEIC,IAAAA,OAAO,EAAE;AAFb,GADQ;AAJC,CAAjB,CADJ;;AAaO,MAAMC,kCAAkC,GAAG,MAA+B;AAC7E,SAAO;AACHF,IAAAA,IAAI,EAAE,sBADH;AAEHG,IAAAA,OAAO,EAAE,iCAFN;AAGHC,IAAAA,YAAY,EAAE,qBAHX;AAIHC,IAAAA,MAAM,EAAE,CAAC,CAAC,oBAAD,CAAD,EAAyB,CAAC,qBAAD,CAAzB,CAJL;AAKHC,IAAAA,MAAM,EAAE,CAACf,SAAS,EAAV,EAAcI,UAAU,EAAxB,EAA4BC,aAAa,EAAzC,EAA6CC,UAAU,EAAvD,EAA2DC,SAAS,EAApE;AALL,GAAP;AAOH,CARM","sourcesContent":["import { createModelField } from \"./utils\";\nimport { WorkflowModelDefinition } from \"~/types\";\n\nconst bodyField = () =>\n createModelField({\n label: \"Body\",\n type: \"rich-text\",\n parent: \"changeRequest\"\n });\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n parent: \"changeRequest\"\n });\n\nconst resolvedField = () =>\n createModelField({\n label: \"Resolved\",\n type: \"boolean\",\n parent: \"changeRequest\"\n });\n\nconst mediaField = () =>\n createModelField({\n label: \"Media\",\n type: \"file\",\n parent: \"changeRequest\"\n });\n\nconst stepField = () =>\n createModelField({\n label: \"Step\",\n type: \"text\",\n parent: \"changeRequest\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required\"\n }\n ]\n });\n\nexport const createChangeRequestModelDefinition = (): WorkflowModelDefinition => {\n return {\n name: \"APW - Change Request\",\n modelId: \"apwChangeRequestModelDefinition\",\n titleFieldId: \"changeRequest_title\",\n layout: [[\"changeRequest_body\"], [\"changeRequest_title\"]],\n fields: [bodyField(), titleField(), resolvedField(), mediaField(), stepField()]\n };\n};\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["comment.model.ts"],"names":["commentBody","label","type","parent","changeRequestRef","modelId","settings","models","createCommentModelDefinition","name","titleFieldId","layout","fields"],"mappings":";;;;;;;AAAA;;AAGA,MAAMA,WAAW,GAAG,MAChB,6BAAiB;AACbC,EAAAA,KAAK,EAAE,MADM;AAEbC,EAAAA,IAAI,EAAE,WAFO;AAGbC,EAAAA,MAAM,EAAE;AAHK,CAAjB,CADJ;;AAOA,MAAMC,gBAAgB,GAAIC,OAAD,IACrB,6BAAiB;AACbJ,EAAAA,KAAK,EAAE,gBADM;AAEbC,EAAAA,IAAI,EAAE,KAFO;AAGbC,EAAAA,MAAM,EAAE,SAHK;AAIbG,EAAAA,QAAQ,EAAE;AACNC,IAAAA,MAAM,EAAE,CACJ;AACIF,MAAAA;AADJ,KADI;AADF;AAJG,CAAjB,CADJ;;AAiBO,MAAMG,4BAA4B,GAAG,CAAC;AACzCH,EAAAA;AADyC,CAAD,KAEuB;AAC/D,SAAO;AACHI,IAAAA,IAAI,EAAE,eADH;AAEHJ,IAAAA,OAAO,EAAE,2BAFN;AAGHK,IAAAA,YAAY,EAAE,aAHX;AAIHC,IAAAA,MAAM,EAAE,CAAC,CAAC,cAAD,CAAD,EAAmB,CAAC,qBAAD,CAAnB,CAJL;AAKHC,IAAAA,MAAM,EAAE,CAACZ,WAAW,EAAZ,EAAgBI,gBAAgB,CAACC,OAAD,CAAhC;AALL,GAAP;AAOH,CAVM","sourcesContent":["import { createModelField } from \"./utils\";\nimport { WorkflowModelDefinition } from \"~/types\";\n\nconst commentBody = () =>\n createModelField({\n label: \"Body\",\n type: \"rich-text\",\n parent: \"comment\"\n });\n\nconst changeRequestRef = (modelId: string) =>\n createModelField({\n label: \"Change Request\",\n type: \"ref\",\n parent: \"comment\",\n settings: {\n models: [\n {\n modelId\n }\n ]\n }\n });\n\ninterface CreateCommentModelDefinitionParams {\n modelId: string;\n}\nexport const createCommentModelDefinition = ({\n modelId\n}: CreateCommentModelDefinitionParams): WorkflowModelDefinition => {\n return {\n name: \"APW - Comment\",\n modelId: \"apwCommentModelDefinition\",\n titleFieldId: \"displayName\",\n layout: [[\"comment_body\"], [\"comment_displayName\"]],\n fields: [commentBody(), changeRequestRef(modelId)]\n };\n};\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["contentModelPluginFactory.ts"],"names":["contentModelPluginFactory","params","group","locale","tenant","modelDefinition","CmsModelPlugin"],"mappings":";;;;;;;;;;;AACA;;;;;;AAiBA,MAAMA,yBAAyB,GAAIC,MAAD,IAAoC;AAClE,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,MAAT;AAAiBC,IAAAA,MAAjB;AAAyBC,IAAAA;AAAzB,MAA6CJ,MAAnD;AAEA,SAAO,IAAIK,8BAAJ;AACHJ,IAAAA,KADG;AAEHC,IAAAA,MAFG;AAGHC,IAAAA;AAHG,KAIAC,eAJA,EAAP;AAMH,CATD;;eAWeL,yB","sourcesContent":["import { CmsGroup } from \"@webiny/api-headless-cms/content/plugins/CmsGroupPlugin\";\nimport { CmsModelPlugin } from \"@webiny/api-headless-cms/content/plugins/CmsModelPlugin\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\n\ntype ModelDefinition = Omit<CmsModel, \"locale\" | \"tenant\" | \"webinyVersion\" | \"group\">;\n\ninterface Params {\n group: CmsGroup;\n /**\n * Locale and tenant do not need to be defined.\n * In that case model is not bound to any locale or tenant.\n * You can bind it to locale, tenant, both or none.\n */\n locale?: string;\n tenant?: string;\n modelDefinition: ModelDefinition;\n}\n\nconst contentModelPluginFactory = (params: Params): CmsModelPlugin => {\n const { group, locale, tenant, modelDefinition } = params;\n\n return new CmsModelPlugin({\n group,\n locale,\n tenant,\n ...modelDefinition\n });\n};\n\nexport default contentModelPluginFactory;\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["contentReview.model.ts"],"names":["contentField","fields","label","parent","type","multipleValues","settings","validation","name","message","contentStatus","predefinedValues","enabled","values","value","contentIdField","contentTypeField","contentSettingsField","stepStatusField","listValidation","renderer","id","fieldId","stepPendingChangeRequests","stepSignOffProvidedOn","stepSignOffProvidedBy","stepSignOffProvidedById","stepSignOffProvidedByDisplayName","stepsField","layout","map","field","createContentReviewModelDefinition","reviewerModelId","modelId","titleFieldId"],"mappings":"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","sourcesContent":["import { createModelField } from \"./utils\";\nimport { stepTitleField, stepTypeField, stepSlugField, stepReviewersField } from \"./workflow.model\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { WorkflowModelDefinition } from \"~/types\";\n\nconst contentField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Content\",\n parent: \"contentReview\",\n type: \"object\",\n multipleValues: false,\n settings: { fields },\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst contentStatus = () =>\n createModelField({\n label: \"Status\",\n parent: \"contentReview\",\n type: \"text\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n label: \"Under review\",\n value: \"underReview\"\n },\n {\n label: \"Ready to be published\",\n value: \"readyToBePublished\"\n },\n {\n label: \"Published\",\n value: \"published\"\n }\n ]\n },\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst contentIdField = () =>\n createModelField({\n label: \"Id\",\n type: \"text\",\n parent: \"contentReview Content\",\n validation: [{ name: \"required\", message: \"Value is required.\" }]\n });\n\nconst contentTypeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"contentReview Type\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n label: \"Page\",\n value: \"page\"\n },\n { value: \"cms-entry\", label: \"CMS Entry\" }\n ]\n },\n validation: [{ name: \"required\", message: \"Value is required.\" }]\n });\n// TODO: Find a way to store JSON value without \"object\" field.\nconst contentSettingsField = () =>\n createModelField({\n label: \"Settings\",\n type: \"text\",\n parent: \"contentReview Settings\"\n });\n\nconst stepStatusField = (): CmsModelField => ({\n multipleValues: false,\n listValidation: [],\n renderer: {\n name: \"radio-buttons\"\n },\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: \"done\",\n label: \"Steps done\"\n },\n {\n value: \"active\",\n label: \"Step active\"\n },\n {\n value: \"inactive\",\n label: \"Step inactive\"\n }\n ]\n },\n label: \"Status\",\n id: \"contentReview_steps_status\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ],\n fieldId: \"status\"\n});\n\nconst stepPendingChangeRequests = () =>\n createModelField({\n label: \"Pending change requests\",\n type: \"number\",\n parent: \"contentReview Step\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst stepSignOffProvidedOn = () =>\n createModelField({\n label: \"Sign off provided on\",\n type: \"datetime\",\n parent: \"contentReview Step\"\n });\n\nconst stepSignOffProvidedBy = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Sign off provided By\",\n type: \"object\",\n parent: \"contentReview Step\",\n multipleValues: false,\n settings: { fields }\n });\n\nconst stepSignOffProvidedById = () =>\n createModelField({\n label: \"Id\",\n type: \"text\",\n parent: \"contentReview Step\"\n });\n\nconst stepSignOffProvidedByDisplayName = () =>\n createModelField({\n label: \"DisplayName\",\n type: \"text\",\n parent: \"contentReview Step\"\n });\n\nconst stepsField = (fields: CmsModelField[]): CmsModelField => ({\n id: \"contentReview_steps\",\n label: \"Steps\",\n type: \"object\",\n settings: {\n fields,\n layout: fields.map(field => [field.fieldId])\n },\n listValidation: [],\n validation: [],\n fieldId: \"steps\",\n multipleValues: true,\n predefinedValues: {\n values: [],\n enabled: false\n }\n});\n\ninterface CreateContentReviewModelDefinitionParams {\n reviewerModelId: string;\n}\nexport const createContentReviewModelDefinition = ({\n reviewerModelId\n}: CreateContentReviewModelDefinitionParams): WorkflowModelDefinition => {\n return {\n name: \"APW - Content Review\",\n modelId: \"apwContentReviewModelDefinition\",\n titleFieldId: \"content\",\n layout: [\n [\"contentReview_content\"],\n [\"contentReview_reviewRequestedBy\"],\n [\"contentReview_steps\"],\n [\"contentReview_changeRequested\"]\n ],\n fields: [\n contentField([contentIdField(), contentTypeField(), contentSettingsField()]),\n contentStatus(),\n stepsField([\n stepTitleField(),\n stepTypeField(),\n stepSlugField(),\n stepReviewersField(reviewerModelId),\n stepStatusField(),\n stepPendingChangeRequests(),\n stepSignOffProvidedOn(),\n stepSignOffProvidedBy([\n stepSignOffProvidedById(),\n stepSignOffProvidedByDisplayName()\n ])\n ])\n ]\n };\n};\n"]}
|
@@ -7,10 +7,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
7
7
|
});
|
8
8
|
exports.createApwModels = void 0;
|
9
9
|
|
10
|
-
var _CmsGroupPlugin = require("@webiny/api-headless-cms/content/plugins/CmsGroupPlugin");
|
11
|
-
|
12
10
|
var _contentModelPluginFactory = _interopRequireDefault(require("./contentModelPluginFactory"));
|
13
11
|
|
12
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
13
|
+
|
14
|
+
var _CmsGroupPlugin = require("@webiny/api-headless-cms/content/plugins/CmsGroupPlugin");
|
15
|
+
|
14
16
|
var _workflow = require("./workflow.model");
|
15
17
|
|
16
18
|
var _contentReview = require("./contentReview.model");
|
@@ -32,11 +34,17 @@ const createApwModels = context => {
|
|
32
34
|
}
|
33
35
|
|
34
36
|
context.security.disableAuthorization();
|
37
|
+
const locale = context.i18nContent.locale;
|
38
|
+
|
39
|
+
if (!locale) {
|
40
|
+
throw new _error.default("Missing context.i18nContent.locale in api-apw/storageOperations/index.ts", "LOCALE_ERROR");
|
41
|
+
}
|
35
42
|
/**
|
36
43
|
* TODO:@ashutosh
|
37
44
|
* We need to move these plugin in an installation plugin
|
38
45
|
*/
|
39
46
|
|
47
|
+
|
40
48
|
const groupId = "contentModelGroup_apw";
|
41
49
|
/**
|
42
50
|
* Create a CmsGroup.
|
@@ -70,7 +78,7 @@ const createApwModels = context => {
|
|
70
78
|
const cmsModelPlugin = (0, _contentModelPluginFactory.default)({
|
71
79
|
group: cmsGroupPlugin.contentModelGroup,
|
72
80
|
tenant: context.tenancy.getCurrentTenant().id,
|
73
|
-
locale:
|
81
|
+
locale: locale.code,
|
74
82
|
modelDefinition
|
75
83
|
});
|
76
84
|
cmsModelPlugins.push(cmsModelPlugin);
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["createApwModels","context","cms","console","warn","security","disableAuthorization","locale","i18nContent","WebinyError","groupId","cmsGroupPlugin","CmsGroupPlugin","id","slug","name","description","changeRequestModelDefinition","reviewerModelDefinition","workflowModelDefinition","reviewerModelId","modelId","commentModelDefinition","contentReviewModelDefinition","modelDefinitions","cmsModelPlugins","modelDefinition","cmsModelPlugin","group","contentModelGroup","tenant","tenancy","getCurrentTenant","code","push","plugins","register","enableAuthorization"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGO,MAAMA,eAAe,GAAIC,OAAD,IAAyB;AACpD;AACJ;AACA;AACA;AACI,MAAI,CAACA,OAAO,CAACC,GAAb,EAAkB;AACdC,IAAAA,OAAO,CAACC,IAAR,CAAa,iCAAb;AACA;AACH;;AACDH,EAAAA,OAAO,CAACI,QAAR,CAAiBC,oBAAjB;AAEA,QAAMC,MAAM,GAAGN,OAAO,CAACO,WAAR,CAAoBD,MAAnC;;AACA,MAAI,CAACA,MAAL,EAAa;AACT,UAAM,IAAIE,cAAJ,CACF,0EADE,EAEF,cAFE,CAAN;AAIH;AACD;AACJ;AACA;AACA;;;AACI,QAAMC,OAAO,GAAG,uBAAhB;AACA;AACJ;AACA;;AACI,QAAMC,cAAc,GAAG,IAAIC,8BAAJ,CAAmB;AACtCC,IAAAA,EAAE,EAAEH,OADkC;AAEtCI,IAAAA,IAAI,EAAE,KAFgC;AAGtCC,IAAAA,IAAI,EAAE,KAHgC;AAItCC,IAAAA,WAAW,EAAE;AAJyB,GAAnB,CAAvB;AAOA;AACJ;AACA;;AACI,QAAMC,4BAA4B,GAAG,wDAArC;AACA,QAAMC,uBAAuB,GAAG,8CAAhC;AACA,QAAMC,uBAAuB,GAAG,6CAA8B;AAC1DC,IAAAA,eAAe,EAAEF,uBAAuB,CAACG;AADiB,GAA9B,CAAhC;AAGA,QAAMC,sBAAsB,GAAG,2CAA6B;AACxDD,IAAAA,OAAO,EAAEJ,4BAA4B,CAACI;AADkB,GAA7B,CAA/B;AAGA,QAAME,4BAA4B,GAAG,uDAAmC;AACpEH,IAAAA,eAAe,EAAEF,uBAAuB,CAACG;AAD2B,GAAnC,CAArC;AAIA,QAAMG,gBAAgB,GAAG,CACrBL,uBADqB,EAErBI,4BAFqB,EAGrBL,uBAHqB,EAIrBD,4BAJqB,EAKrBK,sBALqB,CAAzB;AAQA,QAAMG,eAAe,GAAG,EAAxB;;AACA,OAAK,MAAMC,eAAX,IAA8BF,gBAA9B,EAAgD;AAC5C,UAAMG,cAAc,GAAG,wCAA0B;AAC7CC,MAAAA,KAAK,EAAEjB,cAAc,CAACkB,iBADuB;AAE7CC,MAAAA,MAAM,EAAE7B,OAAO,CAAC8B,OAAR,CAAgBC,gBAAhB,GAAmCnB,EAFE;AAG7CN,MAAAA,MAAM,EAAEA,MAAM,CAAC0B,IAH8B;AAI7CP,MAAAA;AAJ6C,KAA1B,CAAvB;AAMAD,IAAAA,eAAe,CAACS,IAAhB,CAAqBP,cAArB;AACH;AAED;AACJ;AACA;;;AACI1B,EAAAA,OAAO,CAACkC,OAAR,CAAgBC,QAAhB,CAAyB,CAACzB,cAAD,EAAiBc,eAAjB,CAAzB;AAEAxB,EAAAA,OAAO,CAACI,QAAR,CAAiBgC,mBAAjB;AACH,CAzEM","sourcesContent":["import contentModelPluginFactory from \"./contentModelPluginFactory\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"@webiny/api-headless-cms/content/plugins/CmsGroupPlugin\";\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\";\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 context.security.disableAuthorization();\n\n const locale = context.i18nContent.locale;\n if (!locale) {\n throw new WebinyError(\n \"Missing context.i18nContent.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 });\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 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"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["reviewer.model.ts"],"names":["idField","label","type","parent","validation","message","name","displayNameField","typeField","createReviewerModelDefinition","modelId","titleFieldId","layout","fields"],"mappings":";;;;;;;AAAA;;AAGA,MAAMA,OAAO,GAAG,MACZ,6BAAiB;AACbC,EAAAA,KAAK,EAAE,aADM;AAEbC,EAAAA,IAAI,EAAE,MAFO;AAGbC,EAAAA,MAAM,EAAE,UAHK;AAIbC,EAAAA,UAAU,EAAE,CAAC;AAAEC,IAAAA,OAAO,EAAE,oBAAX;AAAiCC,IAAAA,IAAI,EAAE;AAAvC,GAAD;AAJC,CAAjB,CADJ;;AAQA,MAAMC,gBAAgB,GAAG,MACrB,6BAAiB;AACbN,EAAAA,KAAK,EAAE,cADM;AAEbC,EAAAA,IAAI,EAAE,MAFO;AAGbC,EAAAA,MAAM,EAAE,UAHK;AAIbC,EAAAA,UAAU,EAAE,CAAC;AAAEC,IAAAA,OAAO,EAAE,oBAAX;AAAiCC,IAAAA,IAAI,EAAE;AAAvC,GAAD;AAJC,CAAjB,CADJ;;AAQA,MAAME,SAAS,GAAG,MACd,6BAAiB;AACbP,EAAAA,KAAK,EAAE,MADM;AAEbC,EAAAA,IAAI,EAAE,MAFO;AAGbC,EAAAA,MAAM,EAAE,UAHK;AAIbC,EAAAA,UAAU,EAAE,CAAC;AAAEC,IAAAA,OAAO,EAAE,oBAAX;AAAiCC,IAAAA,IAAI,EAAE;AAAvC,GAAD;AAJC,CAAjB,CADJ;;AAQO,MAAMG,6BAA6B,GAAG,MAA+B;AACxE,SAAO;AACHH,IAAAA,IAAI,EAAE,gBADH;AAEHI,IAAAA,OAAO,EAAE,4BAFN;AAGHC,IAAAA,YAAY,EAAE,aAHX;AAIHC,IAAAA,MAAM,EAAE,CAAC,CAAC,aAAD,CAAD,EAAkB,CAAC,sBAAD,CAAlB,CAJL;AAKHC,IAAAA,MAAM,EAAE,CAACb,OAAO,EAAR,EAAYO,gBAAgB,EAA5B,EAAgCC,SAAS,EAAzC;AALL,GAAP;AAOH,CARM","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: [{ message: \"Value is required.\", name: \"required\" }]\n });\n\nconst displayNameField = () =>\n createModelField({\n label: \"Display Name\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [{ message: \"Value is required.\", name: \"required\" }]\n });\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"reviewer\",\n validation: [{ message: \"Value is required.\", name: \"required\" }]\n });\n\nexport const createReviewerModelDefinition = (): WorkflowModelDefinition => {\n return {\n name: \"APW - Reviewer\",\n modelId: \"apwReviewerModelDefinition\",\n titleFieldId: \"displayName\",\n layout: [[\"reviewer_id\"], [\"reviewer_displayName\"]],\n fields: [idField(), displayNameField(), typeField()]\n };\n};\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["createModelField","params","label","type","parent","fieldId","id","settings","listValidation","validation","multipleValues","predefinedValues","values","enabled"],"mappings":";;;;;;;;;AAAA;;AAIO,MAAMA,gBAAgB,GAAIC,MAAD,IAAmD;AAC/E,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,IAAT;AAAeC,IAAAA;AAAf,MAA0BH,MAAhC;AACA,QAAMI,OAAO,GAAG,wBAAUH,KAAV,CAAhB;AAEA,SAAO;AACHI,IAAAA,EAAE,EAAG,GAAE,wBAAUF,MAAV,CAAkB,IAAGC,OAAQ,EADjC;AAEHA,IAAAA,OAFG;AAGHH,IAAAA,KAHG;AAIHC,IAAAA,IAJG;AAKHI,IAAAA,QAAQ,EAAEN,MAAM,CAACM,QAAP,IAAmB,EAL1B;AAMHC,IAAAA,cAAc,EAAEP,MAAM,CAACO,cAAP,IAAyB,EANtC;AAOHC,IAAAA,UAAU,EAAER,MAAM,CAACQ,UAAP,IAAqB,EAP9B;AAQHC,IAAAA,cAAc,EAAET,MAAM,CAACS,cAAP,IAAyB,KARtC;AASHC,IAAAA,gBAAgB,EAAEV,MAAM,CAACU,gBAAP,IAA2B;AACzCC,MAAAA,MAAM,EAAE,EADiC;AAEzCC,MAAAA,OAAO,EAAE;AAFgC;AAT1C,GAAP;AAcH,CAlBM","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, type, parent } = params;\n const fieldId = camelCase(label);\n\n return {\n id: `${camelCase(parent)}_${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"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["workflow.model.ts"],"names":["titleField","label","type","parent","validation","message","name","stepsField","fields","settings","multipleValues","stepTitleField","stepTypeField","predefinedValues","enabled","values","value","stepSlugField","stepReviewersField","reviewerModelId","models","modelId","listValidation","scopeField","scopeTypeField","scopeDataField","scopeDataPbCategories","scopeDataPbPages","scopeDataCmsModels","scopeDataCmsEntries","applicationField","createWorkflowModelDefinition","layout","titleFieldId","description"],"mappings":"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","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: \"Value is required.\",\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 name: \"required\",\n message: \"Value is 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: \"Value is required.\"\n }\n ]\n });\n\nexport const stepSlugField = () =>\n createModelField({\n label: \"Slug\",\n type: \"text\",\n parent: \"workflow steps\",\n validation: [\n {\n name: \"required\",\n message: \"Value is 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 name: \"required\",\n message: \"Value is 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: \"pb\",\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: \"Category\",\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 name: \"required\",\n message: \"Value is 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}\nexport const createWorkflowModelDefinition = ({\n reviewerModelId\n}: CreateWorkflowModelDefinitionParams): WorkflowModelDefinition => {\n return {\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: \"apwWorkflowModelDefinition\",\n layout: [[\"workflow_title\"], [\"workflow_steps\"], [\"workflow_scope\"], [\"workflow_app\"]],\n titleFieldId: \"title\",\n description: null,\n fields: [\n titleField(),\n stepsField([\n stepTitleField(),\n stepTypeField(),\n stepSlugField(),\n stepReviewersField(reviewerModelId)\n ]),\n scopeField([\n scopeTypeField(),\n scopeDataField([\n scopeDataPbCategories(),\n scopeDataPbPages(),\n scopeDataCmsModels(),\n scopeDataCmsEntries()\n ])\n ]),\n applicationField()\n ]\n };\n};\n"]}
|
@@ -11,6 +11,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
11
11
|
|
12
12
|
var _index = require("./index");
|
13
13
|
|
14
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
15
|
+
|
14
16
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
15
17
|
|
16
18
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
@@ -18,8 +20,14 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
18
20
|
const createReviewerStorageOperations = ({
|
19
21
|
cms
|
20
22
|
}) => {
|
21
|
-
const getReviewerModel = () => {
|
22
|
-
|
23
|
+
const getReviewerModel = async () => {
|
24
|
+
const model = await cms.getModel("apwReviewerModelDefinition");
|
25
|
+
|
26
|
+
if (!model) {
|
27
|
+
throw new _error.default("Could not find `apwReviewerModelDefinition` model.", "MODEL_NOT_FOUND_ERROR");
|
28
|
+
}
|
29
|
+
|
30
|
+
return model;
|
23
31
|
};
|
24
32
|
|
25
33
|
const getReviewer = async ({
|
@@ -36,7 +44,11 @@ const createReviewerStorageOperations = ({
|
|
36
44
|
|
37
45
|
async listReviewers(params) {
|
38
46
|
const model = await getReviewerModel();
|
39
|
-
const [entries, meta] = await cms.listLatestEntries(model, params)
|
47
|
+
const [entries, meta] = await cms.listLatestEntries(model, _objectSpread(_objectSpread({}, params), {}, {
|
48
|
+
where: _objectSpread(_objectSpread({}, params.where), {}, {
|
49
|
+
tenant: model.tenant
|
50
|
+
})
|
51
|
+
}));
|
40
52
|
return [entries.map(entry => (0, _index.getFieldValues)(entry, _index.baseFields)), meta];
|
41
53
|
},
|
42
54
|
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["reviewerStorageOperations.ts"],"names":["createReviewerStorageOperations","cms","getReviewerModel","model","getModel","WebinyError","getReviewer","id","entry","getEntryById","baseFields","listReviewers","params","entries","meta","listLatestEntries","where","tenant","map","createReviewer","createEntry","data","updateReviewer","existingEntry","updateEntry","deleteReviewer","deleteEntry"],"mappings":";;;;;;;;;;;AACA;;AAKA;;;;;;AAEO,MAAMA,+BAA+B,GAAG,CAAC;AAC5CC,EAAAA;AAD4C,CAAD,KAEoC;AAC/E,QAAMC,gBAAgB,GAAG,YAAY;AACjC,UAAMC,KAAK,GAAG,MAAMF,GAAG,CAACG,QAAJ,CAAa,4BAAb,CAApB;;AACA,QAAI,CAACD,KAAL,EAAY;AACR,YAAM,IAAIE,cAAJ,CACF,oDADE,EAEF,uBAFE,CAAN;AAIH;;AACD,WAAOF,KAAP;AACH,GATD;;AAUA,QAAMG,WAAwD,GAAG,OAAO;AAAEC,IAAAA;AAAF,GAAP,KAAkB;AAC/E,UAAMJ,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA,UAAMM,KAAK,GAAG,MAAMP,GAAG,CAACQ,YAAJ,CAAiBN,KAAjB,EAAwBI,EAAxB,CAApB;AACA,WAAO,2BAAeC,KAAf,EAAsBE,iBAAtB,CAAP;AACH,GAJD;;AAKA,SAAO;AACHR,IAAAA,gBADG;AAEHI,IAAAA,WAFG;;AAGH,UAAMK,aAAN,CAAoBC,MAApB,EAA4B;AACxB,YAAMT,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA,YAAM,CAACW,OAAD,EAAUC,IAAV,IAAkB,MAAMb,GAAG,CAACc,iBAAJ,CAAsBZ,KAAtB,kCACvBS,MADuB;AAE1BI,QAAAA,KAAK,kCACEJ,MAAM,CAACI,KADT;AAEDC,UAAAA,MAAM,EAAEd,KAAK,CAACc;AAFb;AAFqB,SAA9B;AAOA,aAAO,CAACJ,OAAO,CAACK,GAAR,CAAYV,KAAK,IAAI,2BAAeA,KAAf,EAAsBE,iBAAtB,CAArB,CAAD,EAA0DI,IAA1D,CAAP;AACH,KAbE;;AAcH,UAAMK,cAAN,CAAqBP,MAArB,EAA6B;AACzB,YAAMT,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA,YAAMM,KAAK,GAAG,MAAMP,GAAG,CAACmB,WAAJ,CAAgBjB,KAAhB,EAAuBS,MAAM,CAACS,IAA9B,CAApB;AACA,aAAO,2BAAeb,KAAf,EAAsBE,iBAAtB,CAAP;AACH,KAlBE;;AAmBH,UAAMY,cAAN,CAAqBV,MAArB,EAA6B;AACzB,YAAMT,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA;AACZ;AACA;AACA;;AACY,YAAMqB,aAAa,GAAG,MAAMjB,WAAW,CAAC;AAAEC,QAAAA,EAAE,EAAEK,MAAM,CAACL;AAAb,OAAD,CAAvC;AAEA,YAAMC,KAAK,GAAG,MAAMP,GAAG,CAACuB,WAAJ,CAAgBrB,KAAhB,EAAuBS,MAAM,CAACL,EAA9B,kCACbgB,aADa,GAEbX,MAAM,CAACS,IAFM,EAApB;AAIA,aAAO,2BAAeb,KAAf,EAAsBE,iBAAtB,CAAP;AACH,KAhCE;;AAiCH,UAAMe,cAAN,CAAqBb,MAArB,EAA6B;AACzB,YAAMT,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA,YAAMD,GAAG,CAACyB,WAAJ,CAAgBvB,KAAhB,EAAuBS,MAAM,CAACL,EAA9B,CAAN;AACA,aAAO,IAAP;AACH;;AArCE,GAAP;AAuCH,CAzDM","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}: Pick<CreateApwStorageOperationsParams, \"cms\">): ApwReviewerStorageOperations => {\n const getReviewerModel = async () => {\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 };\n const getReviewer: ApwReviewerStorageOperations[\"getReviewer\"] = async ({ id }) => {\n const model = await getReviewerModel();\n const entry = await cms.getEntryById(model, id);\n return getFieldValues(entry, baseFields);\n };\n return {\n getReviewerModel,\n getReviewer,\n async listReviewers(params) {\n const model = await getReviewerModel();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where,\n tenant: model.tenant\n }\n });\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createReviewer(params) {\n const model = await getReviewerModel();\n const entry = await cms.createEntry(model, params.data);\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 const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n return getFieldValues(entry, baseFields);\n },\n async deleteReviewer(params) {\n const model = await getReviewerModel();\n await cms.deleteEntry(model, params.id);\n return true;\n }\n };\n};\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
|
@@ -11,6 +11,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
11
11
|
|
12
12
|
var _index = require("./index");
|
13
13
|
|
14
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
15
|
+
|
14
16
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
15
17
|
|
16
18
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
@@ -18,8 +20,14 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
18
20
|
const createWorkflowStorageOperations = ({
|
19
21
|
cms
|
20
22
|
}) => {
|
21
|
-
const getWorkflowModel = () => {
|
22
|
-
|
23
|
+
const getWorkflowModel = async () => {
|
24
|
+
const model = await cms.getModel("apwWorkflowModelDefinition");
|
25
|
+
|
26
|
+
if (!model) {
|
27
|
+
throw new _error.default("Could not find `apwWorkflowModelDefinition` model.", "MODEL_NOT_FOUND_ERROR");
|
28
|
+
}
|
29
|
+
|
30
|
+
return model;
|
23
31
|
};
|
24
32
|
|
25
33
|
const getWorkflow = async ({
|
@@ -36,7 +44,11 @@ const createWorkflowStorageOperations = ({
|
|
36
44
|
|
37
45
|
async listWorkflows(params) {
|
38
46
|
const model = await getWorkflowModel();
|
39
|
-
const [entries, meta] = await cms.listLatestEntries(model, params)
|
47
|
+
const [entries, meta] = await cms.listLatestEntries(model, _objectSpread(_objectSpread({}, params), {}, {
|
48
|
+
where: _objectSpread(_objectSpread({}, params.where), {}, {
|
49
|
+
tenant: model.tenant
|
50
|
+
})
|
51
|
+
}));
|
40
52
|
return [entries.map(entry => (0, _index.getFieldValues)(entry, _index.baseFields)), meta];
|
41
53
|
},
|
42
54
|
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["workflowStorageOperations.ts"],"names":["createWorkflowStorageOperations","cms","getWorkflowModel","model","getModel","WebinyError","getWorkflow","id","entry","getEntryById","baseFields","listWorkflows","params","entries","meta","listLatestEntries","where","tenant","map","createWorkflow","createEntry","data","updateWorkflow","existingEntry","updateEntry","deleteWorkflow","deleteEntry"],"mappings":";;;;;;;;;;;AACA;;AAKA;;;;;;AAEO,MAAMA,+BAA+B,GAAG,CAAC;AAC5CC,EAAAA;AAD4C,CAAD,KAEoC;AAC/E,QAAMC,gBAAgB,GAAG,YAAY;AACjC,UAAMC,KAAK,GAAG,MAAMF,GAAG,CAACG,QAAJ,CAAa,4BAAb,CAApB;;AACA,QAAI,CAACD,KAAL,EAAY;AACR,YAAM,IAAIE,cAAJ,CACF,oDADE,EAEF,uBAFE,CAAN;AAIH;;AACD,WAAOF,KAAP;AACH,GATD;;AAUA,QAAMG,WAAwD,GAAG,OAAO;AAAEC,IAAAA;AAAF,GAAP,KAAkB;AAC/E,UAAMJ,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA,UAAMM,KAAK,GAAG,MAAMP,GAAG,CAACQ,YAAJ,CAAiBN,KAAjB,EAAwBI,EAAxB,CAApB;AACA,WAAO,2BAAeC,KAAf,EAAsBE,iBAAtB,CAAP;AACH,GAJD;;AAKA,SAAO;AACHR,IAAAA,gBADG;AAEHI,IAAAA,WAFG;;AAGH,UAAMK,aAAN,CAAoBC,MAApB,EAA4B;AACxB,YAAMT,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA,YAAM,CAACW,OAAD,EAAUC,IAAV,IAAkB,MAAMb,GAAG,CAACc,iBAAJ,CAAsBZ,KAAtB,kCACvBS,MADuB;AAE1BI,QAAAA,KAAK,kCACEJ,MAAM,CAACI,KADT;AAEDC,UAAAA,MAAM,EAAEd,KAAK,CAACc;AAFb;AAFqB,SAA9B;AAOA,aAAO,CAACJ,OAAO,CAACK,GAAR,CAAYV,KAAK,IAAI,2BAAeA,KAAf,EAAsBE,iBAAtB,CAArB,CAAD,EAA0DI,IAA1D,CAAP;AACH,KAbE;;AAcH,UAAMK,cAAN,CAAqBP,MAArB,EAA6B;AACzB,YAAMT,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA,YAAMM,KAAK,GAAG,MAAMP,GAAG,CAACmB,WAAJ,CAAgBjB,KAAhB,EAAuBS,MAAM,CAACS,IAA9B,CAApB;AACA,aAAO,2BAAeb,KAAf,EAAsBE,iBAAtB,CAAP;AACH,KAlBE;;AAmBH,UAAMY,cAAN,CAAqBV,MAArB,EAA6B;AACzB,YAAMT,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA;AACZ;AACA;AACA;;AACY,YAAMqB,aAAa,GAAG,MAAMjB,WAAW,CAAC;AAAEC,QAAAA,EAAE,EAAEK,MAAM,CAACL;AAAb,OAAD,CAAvC;AAEA,YAAMC,KAAK,GAAG,MAAMP,GAAG,CAACuB,WAAJ,CAAgBrB,KAAhB,EAAuBS,MAAM,CAACL,EAA9B,kCACbgB,aADa,GAEbX,MAAM,CAACS,IAFM,EAApB;AAIA,aAAO,2BAAeb,KAAf,EAAsBE,iBAAtB,CAAP;AACH,KAhCE;;AAiCH,UAAMe,cAAN,CAAqBb,MAArB,EAA6B;AACzB,YAAMT,KAAK,GAAG,MAAMD,gBAAgB,EAApC;AACA,YAAMD,GAAG,CAACyB,WAAJ,CAAgBvB,KAAhB,EAAuBS,MAAM,CAACL,EAA9B,CAAN;AACA,aAAO,IAAP;AACH;;AArCE,GAAP;AAuCH,CAzDM","sourcesContent":["import { ApwWorkflowStorageOperations } from \"./types\";\nimport {\n baseFields,\n CreateApwStorageOperationsParams,\n getFieldValues\n} from \"~/storageOperations/index\";\nimport WebinyError from \"@webiny/error\";\n\nexport const createWorkflowStorageOperations = ({\n cms\n}: Pick<CreateApwStorageOperationsParams, \"cms\">): ApwWorkflowStorageOperations => {\n const getWorkflowModel = async () => {\n const model = await cms.getModel(\"apwWorkflowModelDefinition\");\n if (!model) {\n throw new WebinyError(\n \"Could not find `apwWorkflowModelDefinition` model.\",\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n const getWorkflow: ApwWorkflowStorageOperations[\"getWorkflow\"] = async ({ id }) => {\n const model = await getWorkflowModel();\n const entry = await cms.getEntryById(model, id);\n return getFieldValues(entry, baseFields);\n };\n return {\n getWorkflowModel,\n getWorkflow,\n async listWorkflows(params) {\n const model = await getWorkflowModel();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where,\n tenant: model.tenant\n }\n });\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createWorkflow(params) {\n const model = await getWorkflowModel();\n const entry = await cms.createEntry(model, params.data);\n return getFieldValues(entry, baseFields);\n },\n async updateWorkflow(params) {\n const model = await getWorkflowModel();\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 getWorkflow({ id: params.id });\n\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n return getFieldValues(entry, baseFields);\n },\n async deleteWorkflow(params) {\n const model = await getWorkflowModel();\n await cms.deleteEntry(model, params.id);\n return true;\n }\n };\n};\n"]}
|