@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.
Files changed (207) hide show
  1. package/ApwChangeRequestNotification.js +10 -0
  2. package/ApwChangeRequestNotification.js.map +1 -1
  3. package/ApwCommentNotification.js +10 -0
  4. package/ApwCommentNotification.js.map +1 -1
  5. package/ApwContentReviewNotification.js +10 -0
  6. package/ApwContentReviewNotification.js.map +1 -1
  7. package/ApwContentUrlPlugin.js +10 -0
  8. package/ApwContentUrlPlugin.js.map +1 -1
  9. package/ContentApwSettingsPlugin.js +5 -0
  10. package/ContentApwSettingsPlugin.js.map +1 -1
  11. package/crud/createChangeRequestMethods.js +11 -4
  12. package/crud/createChangeRequestMethods.js.map +1 -1
  13. package/crud/createCommentMethods.js +12 -4
  14. package/crud/createCommentMethods.js.map +1 -1
  15. package/crud/createContentReviewMethods.js +84 -20
  16. package/crud/createContentReviewMethods.js.map +1 -1
  17. package/crud/createReviewerMethods.js +12 -4
  18. package/crud/createReviewerMethods.js.map +1 -1
  19. package/crud/createWorkflowMethods.js +17 -4
  20. package/crud/createWorkflowMethods.js.map +1 -1
  21. package/crud/index.js +25 -0
  22. package/crud/index.js.map +1 -1
  23. package/crud/utils.js +28 -0
  24. package/crud/utils.js.map +1 -1
  25. package/index.js +11 -1
  26. package/index.js.map +1 -1
  27. package/package.json +34 -34
  28. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +15 -0
  29. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -1
  30. package/plugins/cms/apwEntryPlugins.js +8 -0
  31. package/plugins/cms/apwEntryPlugins.js.map +1 -1
  32. package/plugins/cms/index.js +13 -0
  33. package/plugins/cms/index.js.map +1 -1
  34. package/plugins/cms/linkContentReviewToEntry.js +17 -0
  35. package/plugins/cms/linkContentReviewToEntry.js.map +1 -1
  36. package/plugins/cms/linkWorkflowToEntry.js +31 -2
  37. package/plugins/cms/linkWorkflowToEntry.js.map +1 -1
  38. package/plugins/cms/notifications/changeRequestNotification.js +4 -0
  39. package/plugins/cms/notifications/changeRequestNotification.js.map +1 -1
  40. package/plugins/cms/notifications/commentNotification.js +4 -0
  41. package/plugins/cms/notifications/commentNotification.js.map +1 -1
  42. package/plugins/cms/notifications/contentReviewNotification.js +4 -0
  43. package/plugins/cms/notifications/contentReviewNotification.js.map +1 -1
  44. package/plugins/cms/notifications/contentUrl.js +8 -1
  45. package/plugins/cms/notifications/contentUrl.js.map +1 -1
  46. package/plugins/cms/triggerContentReview.js +14 -0
  47. package/plugins/cms/triggerContentReview.js.map +1 -1
  48. package/plugins/cms/updateContentReviewStatus.js +18 -0
  49. package/plugins/cms/updateContentReviewStatus.js.map +1 -1
  50. package/plugins/cms/utils.js +47 -2
  51. package/plugins/cms/utils.js.map +1 -1
  52. package/plugins/context.js +31 -0
  53. package/plugins/context.js.map +1 -1
  54. package/plugins/graphql/changeRequest.gql.js +8 -1
  55. package/plugins/graphql/changeRequest.gql.js.map +1 -1
  56. package/plugins/graphql/comment.gql.js +8 -1
  57. package/plugins/graphql/comment.gql.js.map +1 -1
  58. package/plugins/graphql/contentReview.gql.js +20 -1
  59. package/plugins/graphql/contentReview.gql.js.map +1 -1
  60. package/plugins/graphql/reviewer.gql.js +8 -1
  61. package/plugins/graphql/reviewer.gql.js.map +1 -1
  62. package/plugins/graphql/workflow.gql.js +8 -1
  63. package/plugins/graphql/workflow.gql.js.map +1 -1
  64. package/plugins/graphql.js +16 -1
  65. package/plugins/graphql.js.map +1 -1
  66. package/plugins/hooks/createReviewerFromIdentity.js +11 -2
  67. package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
  68. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +9 -1
  69. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
  70. package/plugins/hooks/deleteCommentsAfterChangeRequest.js +8 -1
  71. package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
  72. package/plugins/hooks/index.js +14 -0
  73. package/plugins/hooks/index.js.map +1 -1
  74. package/plugins/hooks/initializeContentReviewSteps.js +15 -2
  75. package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
  76. package/plugins/hooks/initializeNotifications.js +5 -0
  77. package/plugins/hooks/initializeNotifications.js.map +1 -1
  78. package/plugins/hooks/listContentReviews.js +12 -0
  79. package/plugins/hooks/listContentReviews.js.map +1 -1
  80. package/plugins/hooks/notifications/appUrl.js +4 -0
  81. package/plugins/hooks/notifications/appUrl.js.map +1 -1
  82. package/plugins/hooks/notifications/changeRequestAfterCreate.js +28 -0
  83. package/plugins/hooks/notifications/changeRequestAfterCreate.js.map +1 -1
  84. package/plugins/hooks/notifications/changeRequestUrl.js +4 -0
  85. package/plugins/hooks/notifications/changeRequestUrl.js.map +1 -1
  86. package/plugins/hooks/notifications/commentAfterCreate.js +30 -0
  87. package/plugins/hooks/notifications/commentAfterCreate.js.map +1 -1
  88. package/plugins/hooks/notifications/commentUrl.js +4 -0
  89. package/plugins/hooks/notifications/commentUrl.js.map +1 -1
  90. package/plugins/hooks/notifications/contentReviewAfterCreate.js +24 -1
  91. package/plugins/hooks/notifications/contentReviewAfterCreate.js.map +1 -1
  92. package/plugins/hooks/notifications/contentReviewUrl.js +4 -0
  93. package/plugins/hooks/notifications/contentReviewUrl.js.map +1 -1
  94. package/plugins/hooks/notifications/contentUrl.js +5 -0
  95. package/plugins/hooks/notifications/contentUrl.js.map +1 -1
  96. package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js +4 -0
  97. package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js.map +1 -1
  98. package/plugins/hooks/notifications/lastCommentNotificationPlugin.js +4 -0
  99. package/plugins/hooks/notifications/lastCommentNotificationPlugin.js.map +1 -1
  100. package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js +4 -0
  101. package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js.map +1 -1
  102. package/plugins/hooks/notifications/reviewers.js +7 -0
  103. package/plugins/hooks/notifications/reviewers.js.map +1 -1
  104. package/plugins/hooks/notifications/sendChangeRequestNotification.js +11 -0
  105. package/plugins/hooks/notifications/sendChangeRequestNotification.js.map +1 -1
  106. package/plugins/hooks/notifications/sendCommentNotification.js +11 -0
  107. package/plugins/hooks/notifications/sendCommentNotification.js.map +1 -1
  108. package/plugins/hooks/notifications/sendContentReviewNotification.js +11 -0
  109. package/plugins/hooks/notifications/sendContentReviewNotification.js.map +1 -1
  110. package/plugins/hooks/updatePendingChangeRequests.js +8 -0
  111. package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
  112. package/plugins/hooks/updateTotalComments.js +9 -0
  113. package/plugins/hooks/updateTotalComments.js.map +1 -1
  114. package/plugins/hooks/validateChangeRequest.js +16 -0
  115. package/plugins/hooks/validateChangeRequest.js.map +1 -1
  116. package/plugins/hooks/validateComment.js +12 -1
  117. package/plugins/hooks/validateComment.js.map +1 -1
  118. package/plugins/hooks/validateContentReview.js +6 -0
  119. package/plugins/hooks/validateContentReview.js.map +1 -1
  120. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +15 -0
  121. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -1
  122. package/plugins/pageBuilder/apwContentPagePlugins.js +4 -0
  123. package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -1
  124. package/plugins/pageBuilder/extendPbPageSettingsSchema.js +6 -1
  125. package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -1
  126. package/plugins/pageBuilder/index.js +11 -0
  127. package/plugins/pageBuilder/index.js.map +1 -1
  128. package/plugins/pageBuilder/linkContentReviewToPage.js +16 -0
  129. package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -1
  130. package/plugins/pageBuilder/linkWorkflowToPage.js +31 -1
  131. package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -1
  132. package/plugins/pageBuilder/notifications/changeRequestNotification.js +4 -0
  133. package/plugins/pageBuilder/notifications/changeRequestNotification.js.map +1 -1
  134. package/plugins/pageBuilder/notifications/commentNotification.js +4 -0
  135. package/plugins/pageBuilder/notifications/commentNotification.js.map +1 -1
  136. package/plugins/pageBuilder/notifications/contentReviewNotification.js +4 -0
  137. package/plugins/pageBuilder/notifications/contentReviewNotification.js.map +1 -1
  138. package/plugins/pageBuilder/notifications/contentUrl.js +7 -1
  139. package/plugins/pageBuilder/notifications/contentUrl.js.map +1 -1
  140. package/plugins/pageBuilder/triggerContentReview.js +11 -0
  141. package/plugins/pageBuilder/triggerContentReview.js.map +1 -1
  142. package/plugins/pageBuilder/updateContentReviewStatus.js +12 -0
  143. package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -1
  144. package/plugins/pageBuilder/utils.js +35 -1
  145. package/plugins/pageBuilder/utils.js.map +1 -1
  146. package/plugins/utils.js +43 -0
  147. package/plugins/utils.js.map +1 -1
  148. package/scheduler/createScheduleActionMethods.js +20 -1
  149. package/scheduler/createScheduleActionMethods.js.map +1 -1
  150. package/scheduler/handlers/executeAction/index.js +33 -9
  151. package/scheduler/handlers/executeAction/index.js.map +1 -1
  152. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +5 -0
  153. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -1
  154. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +21 -0
  155. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -1
  156. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +27 -4
  157. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -1
  158. package/scheduler/handlers/executeAction/security.js +11 -0
  159. package/scheduler/handlers/executeAction/security.js.map +1 -1
  160. package/scheduler/handlers/scheduleAction/index.js +25 -5
  161. package/scheduler/handlers/scheduleAction/index.js.map +1 -1
  162. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +23 -2
  163. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -1
  164. package/scheduler/handlers/utils.js +40 -3
  165. package/scheduler/handlers/utils.js.map +1 -1
  166. package/scheduler/index.js +3 -0
  167. package/scheduler/index.js.map +1 -1
  168. package/scheduler/types.js +6 -0
  169. package/scheduler/types.js.map +1 -1
  170. package/storageOperations/changeRequestStorageOperations.js +19 -0
  171. package/storageOperations/changeRequestStorageOperations.js.map +1 -1
  172. package/storageOperations/commentStorageOperations.js +21 -0
  173. package/storageOperations/commentStorageOperations.js.map +1 -1
  174. package/storageOperations/contentReviewStorageOperations.js +17 -0
  175. package/storageOperations/contentReviewStorageOperations.js.map +1 -1
  176. package/storageOperations/index.js +14 -0
  177. package/storageOperations/index.js.map +1 -1
  178. package/storageOperations/models/changeRequest.model.js +9 -0
  179. package/storageOperations/models/changeRequest.model.js.map +1 -1
  180. package/storageOperations/models/comment.model.js +8 -0
  181. package/storageOperations/models/comment.model.js.map +1 -1
  182. package/storageOperations/models/contentModelPluginFactory.js +5 -0
  183. package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
  184. package/storageOperations/models/contentReview.model.js +26 -0
  185. package/storageOperations/models/contentReview.model.js.map +1 -1
  186. package/storageOperations/models/index.js +24 -2
  187. package/storageOperations/models/index.js.map +1 -1
  188. package/storageOperations/models/reviewer.model.js +8 -0
  189. package/storageOperations/models/reviewer.model.js.map +1 -1
  190. package/storageOperations/models/utils.js +4 -0
  191. package/storageOperations/models/utils.js.map +1 -1
  192. package/storageOperations/models/workflow.model.js +23 -0
  193. package/storageOperations/models/workflow.model.js.map +1 -1
  194. package/storageOperations/reviewerStorageOperations.js +17 -0
  195. package/storageOperations/reviewerStorageOperations.js.map +1 -1
  196. package/storageOperations/workflowStorageOperations.js +19 -0
  197. package/storageOperations/workflowStorageOperations.js.map +1 -1
  198. package/types.js +14 -0
  199. package/types.js.map +1 -1
  200. package/utils/contentApwSettingsPlugin.js +6 -0
  201. package/utils/contentApwSettingsPlugin.js.map +1 -1
  202. package/utils/errors.js +17 -0
  203. package/utils/errors.js.map +1 -1
  204. package/utils/fieldResolver.js +12 -2
  205. package/utils/fieldResolver.js.map +1 -1
  206. package/utils/resolve.js +3 -0
  207. package/utils/resolve.js.map +1 -1
@@ -1,20 +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.createContentReviewMethods = createContentReviewMethods;
9
+
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
9
12
  var _get = _interopRequireDefault(require("lodash/get"));
13
+
10
14
  var _pubsub = require("@webiny/pubsub");
15
+
11
16
  var _error = _interopRequireDefault(require("@webiny/error"));
17
+
12
18
  var _types = require("../types");
19
+
13
20
  var _utils = require("../plugins/utils");
21
+
14
22
  var _errors = require("../utils/errors");
23
+
15
24
  var _types2 = require("../scheduler/types");
25
+
16
26
  var _utils2 = require("./utils");
27
+
17
28
  var _contentApwSettingsPlugin = require("../utils/contentApwSettingsPlugin");
29
+
18
30
  function createContentReviewMethods(params) {
19
31
  const {
20
32
  getIdentity,
@@ -28,18 +40,17 @@ function createContentReviewMethods(params) {
28
40
  getTenant,
29
41
  getLocale,
30
42
  plugins
31
- } = params;
43
+ } = params; // create
32
44
 
33
- // create
34
45
  const onContentReviewBeforeCreate = (0, _pubsub.createTopic)("apw.onContentReviewBeforeCreate");
35
- const onContentReviewAfterCreate = (0, _pubsub.createTopic)("apw.onContentReviewAfterCreate");
36
- // update
46
+ const onContentReviewAfterCreate = (0, _pubsub.createTopic)("apw.onContentReviewAfterCreate"); // update
47
+
37
48
  const onContentReviewBeforeUpdate = (0, _pubsub.createTopic)("apw.onContentReviewBeforeUpdate");
38
- const onContentReviewAfterUpdate = (0, _pubsub.createTopic)("apw.onContentReviewAfterUpdate");
39
- // delete
49
+ const onContentReviewAfterUpdate = (0, _pubsub.createTopic)("apw.onContentReviewAfterUpdate"); // delete
50
+
40
51
  const onContentReviewBeforeDelete = (0, _pubsub.createTopic)("apw.onContentReviewBeforeDelete");
41
- const onContentReviewAfterDelete = (0, _pubsub.createTopic)("apw.onContentReviewAfterDelete");
42
- // list
52
+ const onContentReviewAfterDelete = (0, _pubsub.createTopic)("apw.onContentReviewAfterDelete"); // list
53
+
43
54
  const onContentReviewBeforeList = (0, _pubsub.createTopic)("apw.onContentReviewBeforeList");
44
55
  return {
45
56
  /**
@@ -52,16 +63,19 @@ function createContentReviewMethods(params) {
52
63
  onContentReviewBeforeDelete,
53
64
  onContentReviewAfterDelete,
54
65
  onContentReviewBeforeList,
66
+
55
67
  async get(id) {
56
68
  return storageOperations.getContentReview({
57
69
  id
58
70
  });
59
71
  },
72
+
60
73
  async list(params) {
61
74
  const where = params.where || {};
62
75
  await onContentReviewBeforeList.publish({
63
76
  where
64
77
  });
78
+
65
79
  if (where.reviewStatus === "requiresMyAttention") {
66
80
  return (0, _utils2.filterContentReviewsByRequiresMyAttention)({
67
81
  listParams: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
@@ -72,10 +86,12 @@ function createContentReviewMethods(params) {
72
86
  getIdentity
73
87
  });
74
88
  }
89
+
75
90
  return storageOperations.listContentReviews((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
76
91
  where
77
92
  }));
78
93
  },
94
+
79
95
  async create(data) {
80
96
  const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
81
97
  reviewStatus: _types.ApwContentReviewStatus.UNDER_REVIEW
@@ -91,6 +107,7 @@ function createContentReviewMethods(params) {
91
107
  });
92
108
  return contentReview;
93
109
  },
110
+
94
111
  async update(id, data) {
95
112
  const original = await storageOperations.getContentReview({
96
113
  id
@@ -116,6 +133,7 @@ function createContentReviewMethods(params) {
116
133
  });
117
134
  return contentReview;
118
135
  },
136
+
119
137
  async delete(id) {
120
138
  const contentReview = await storageOperations.getContentReview({
121
139
  id
@@ -131,6 +149,7 @@ function createContentReviewMethods(params) {
131
149
  });
132
150
  return true;
133
151
  },
152
+
134
153
  async provideSignOff(id, stepId) {
135
154
  const entry = await this.get(id);
136
155
  const {
@@ -146,10 +165,10 @@ function createContentReviewMethods(params) {
146
165
  identity,
147
166
  step: currentStep
148
167
  });
149
-
150
168
  /**
151
169
  * Check whether the sign-off is requested by a reviewer.
152
170
  */
171
+
153
172
  if (!hasPermission) {
154
173
  throw new _errors.NotAuthorizedError({
155
174
  entry,
@@ -162,6 +181,8 @@ function createContentReviewMethods(params) {
162
181
  /**
163
182
  * Don't allow sign off, if previous step is of "mandatory_blocking" type and undone.
164
183
  */
184
+
185
+
165
186
  if (previousStep && previousStep.status !== _types.ApwContentReviewStepStatus.DONE && previousStep.type === _types.ApwWorkflowStepTypes.MANDATORY_BLOCKING) {
166
187
  throw new _errors.StepMissingError({
167
188
  entry,
@@ -174,6 +195,8 @@ function createContentReviewMethods(params) {
174
195
  /**
175
196
  * Don't allow sign off, if there are pending change requests.
176
197
  */
198
+
199
+
177
200
  if (currentStep.pendingChangeRequests > 0) {
178
201
  throw new _errors.PendingChangeRequestsError({
179
202
  entry,
@@ -186,6 +209,8 @@ function createContentReviewMethods(params) {
186
209
  /**
187
210
  * Don't allow sign off, if current step is not in "active" state.
188
211
  */
212
+
213
+
189
214
  if (currentStep.status !== _types.ApwContentReviewStepStatus.ACTIVE) {
190
215
  throw new _errors.StepInActiveError({
191
216
  entry,
@@ -195,10 +220,12 @@ function createContentReviewMethods(params) {
195
220
  }
196
221
  });
197
222
  }
223
+
198
224
  let previousStepStatus;
199
225
  /*
200
226
  * Provide sign-off for give step.
201
227
  */
228
+
202
229
  const updatedSteps = steps.map((step, index) => {
203
230
  if (index === stepIndex) {
204
231
  previousStepStatus = _types.ApwContentReviewStepStatus.DONE;
@@ -211,6 +238,8 @@ function createContentReviewMethods(params) {
211
238
  /**
212
239
  * Update next steps status based on type.
213
240
  */
241
+
242
+
214
243
  if (index > stepIndex) {
215
244
  const previousStep = steps[index - 1];
216
245
  previousStepStatus = (0, _utils.getNextStepStatus)(previousStep.type, previousStepStatus);
@@ -218,30 +247,34 @@ function createContentReviewMethods(params) {
218
247
  status: previousStepStatus
219
248
  });
220
249
  }
250
+
221
251
  return step;
222
252
  });
223
253
  /**
224
254
  * Check for pending steps
225
255
  */
256
+
226
257
  let newStatus = reviewStatus;
227
258
  const pendingRequiredSteps = (0, _utils2.getPendingRequiredSteps)(updatedSteps, step => typeof step.signOffProvidedOn !== "string");
228
-
229
259
  /**
230
260
  * If there are no required steps that are pending, set the status to "READY_TO_BE_PUBLISHED".
231
261
  */
262
+
232
263
  if (pendingRequiredSteps.length === 0) {
233
264
  newStatus = _types.ApwContentReviewStatus.READY_TO_BE_PUBLISHED;
234
265
  }
235
-
236
266
  /**
237
267
  * Save updated steps.
238
268
  */
269
+
270
+
239
271
  await this.update(id, {
240
272
  steps: updatedSteps,
241
273
  reviewStatus: newStatus
242
274
  });
243
275
  return true;
244
276
  },
277
+
245
278
  async retractSignOff(id, stepId) {
246
279
  const entry = await this.get(id);
247
280
  const {
@@ -256,10 +289,10 @@ function createContentReviewMethods(params) {
256
289
  identity,
257
290
  step: currentStep
258
291
  });
259
-
260
292
  /**
261
293
  * Check whether the retract sign-off is requested by a reviewer.
262
294
  */
295
+
263
296
  if (!hasPermission) {
264
297
  throw new _errors.NotAuthorizedError({
265
298
  entry,
@@ -272,6 +305,8 @@ function createContentReviewMethods(params) {
272
305
  /**
273
306
  * Don't allow, if step in not "done" i.e. no sign-off was provided for it.
274
307
  */
308
+
309
+
275
310
  if (currentStep.status !== _types.ApwContentReviewStepStatus.DONE) {
276
311
  throw new _errors.NoSignOffProvidedError({
277
312
  entry,
@@ -281,11 +316,12 @@ function createContentReviewMethods(params) {
281
316
  }
282
317
  });
283
318
  }
284
- let previousStepStatus;
285
319
 
320
+ let previousStepStatus;
286
321
  /*
287
322
  * Retract sign-off for give step.
288
323
  */
324
+
289
325
  const updatedSteps = steps.map((step, index) => {
290
326
  if (index === stepIndex) {
291
327
  previousStepStatus = _types.ApwContentReviewStepStatus.ACTIVE;
@@ -298,6 +334,8 @@ function createContentReviewMethods(params) {
298
334
  /**
299
335
  * Set next step status as "inactive".
300
336
  */
337
+
338
+
301
339
  if (index > stepIndex) {
302
340
  const previousStep = steps[index - 1];
303
341
  previousStepStatus = (0, _utils.getNextStepStatus)(previousStep.type, previousStepStatus);
@@ -305,26 +343,30 @@ function createContentReviewMethods(params) {
305
343
  status: previousStepStatus
306
344
  });
307
345
  }
346
+
308
347
  return step;
309
348
  });
310
-
311
349
  /**
312
350
  * Check for pending steps
313
351
  */
352
+
314
353
  let newStatus = reviewStatus;
315
354
  const pendingRequiredSteps = (0, _utils2.getPendingRequiredSteps)(updatedSteps, step => step.signOffProvidedOn === null);
316
355
  /**
317
356
  * If there are required steps that are pending, set the status to "UNDER_REVIEW".
318
357
  */
358
+
319
359
  if (pendingRequiredSteps.length !== 0) {
320
360
  newStatus = _types.ApwContentReviewStatus.UNDER_REVIEW;
321
361
  }
362
+
322
363
  await this.update(id, {
323
364
  steps: updatedSteps,
324
365
  reviewStatus: newStatus
325
366
  });
326
367
  return true;
327
368
  },
369
+
328
370
  async isReviewRequired(data) {
329
371
  const contentGetter = getContentGetter(data.type);
330
372
  const content = await contentGetter(data.id, data.settings);
@@ -334,25 +376,31 @@ function createContentReviewMethods(params) {
334
376
  plugins,
335
377
  type: data.type
336
378
  });
379
+
337
380
  if (contentApwSettingsPlugin) {
338
381
  contentReviewId = contentApwSettingsPlugin.getContentReviewId(content);
339
382
  const workflowId = contentApwSettingsPlugin.getWorkflowId(content);
383
+
340
384
  if (workflowId) {
341
385
  isReviewRequired = true;
342
386
  }
343
387
  }
388
+
344
389
  return {
345
390
  isReviewRequired,
346
391
  contentReviewId
347
392
  };
348
393
  },
394
+
349
395
  async publishContent(id, datetime) {
350
396
  var _content$settings;
397
+
351
398
  const {
352
399
  content,
353
400
  reviewStatus
354
401
  } = await this.get(id);
355
402
  const identity = getIdentity();
403
+
356
404
  if (reviewStatus !== _types.ApwContentReviewStatus.READY_TO_BE_PUBLISHED) {
357
405
  throw new _error.default({
358
406
  message: `Cannot publish content because it is not yet ready to be published.`,
@@ -364,17 +412,19 @@ function createContentReviewMethods(params) {
364
412
  }
365
413
  });
366
414
  }
367
- (0, _utils2.checkValidDateTime)(datetime);
368
415
 
416
+ (0, _utils2.checkValidDateTime)(datetime);
369
417
  /**
370
418
  * If datetime is present it means we're scheduling this action.
371
419
  * And if not, we are publishing immediately.
372
420
  */
421
+
373
422
  if (!datetime) {
374
423
  const contentPublisher = getContentPublisher(content.type);
375
424
  await contentPublisher(content.id, content.settings);
376
425
  return true;
377
426
  }
427
+
378
428
  const data = {
379
429
  action: _types2.ApwScheduleActionTypes.PUBLISH,
380
430
  type: content.type,
@@ -386,6 +436,7 @@ function createContentReviewMethods(params) {
386
436
  /**
387
437
  * Update scheduled related meta data.
388
438
  */
439
+
389
440
  await this.update(id, {
390
441
  content: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, content), {}, {
391
442
  scheduledOn: datetime,
@@ -395,13 +446,16 @@ function createContentReviewMethods(params) {
395
446
  });
396
447
  return true;
397
448
  },
449
+
398
450
  async unpublishContent(id, datetime) {
399
451
  var _content$settings2;
452
+
400
453
  const {
401
454
  content,
402
455
  reviewStatus
403
456
  } = await this.get(id);
404
457
  const identity = getIdentity();
458
+
405
459
  if (reviewStatus !== _types.ApwContentReviewStatus.PUBLISHED) {
406
460
  throw new _error.default({
407
461
  message: `Cannot unpublish content because it is not yet published.`,
@@ -413,17 +467,19 @@ function createContentReviewMethods(params) {
413
467
  }
414
468
  });
415
469
  }
416
- (0, _utils2.checkValidDateTime)(datetime);
417
470
 
471
+ (0, _utils2.checkValidDateTime)(datetime);
418
472
  /**
419
473
  * If datetime is present it means we're scheduling this action.
420
474
  * If not, we are unpublishing immediately.
421
475
  */
476
+
422
477
  if (!datetime) {
423
478
  const contentUnPublisher = getContentUnPublisher(content.type);
424
479
  await contentUnPublisher(content.id, content.settings);
425
480
  return true;
426
481
  }
482
+
427
483
  const scheduledActionId = await this.scheduleAction({
428
484
  action: _types2.ApwScheduleActionTypes.UNPUBLISH,
429
485
  type: content.type,
@@ -434,6 +490,7 @@ function createContentReviewMethods(params) {
434
490
  /**
435
491
  * Update scheduled related meta data.
436
492
  */
493
+
437
494
  await this.update(id, {
438
495
  content: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, content), {}, {
439
496
  scheduledOn: datetime,
@@ -443,6 +500,7 @@ function createContentReviewMethods(params) {
443
500
  });
444
501
  return true;
445
502
  },
503
+
446
504
  async scheduleAction(data) {
447
505
  // Save input in DB
448
506
  const scheduledAction = await scheduler.create(data);
@@ -450,10 +508,12 @@ function createContentReviewMethods(params) {
450
508
  * This function contains logic of lambda invocation.
451
509
  * Current we're not mocking it, therefore, we're just returning true.
452
510
  */
511
+
453
512
  if (process.env.NODE_ENV === "test") {
454
513
  return scheduledAction.id;
455
- }
456
- // Invoke handler
514
+ } // Invoke handler
515
+
516
+
457
517
  await handlerClient.invoke({
458
518
  name: String(process.env.APW_SCHEDULER_SCHEDULE_ACTION_HANDLER),
459
519
  payload: {
@@ -465,13 +525,14 @@ function createContentReviewMethods(params) {
465
525
  });
466
526
  return scheduledAction.id;
467
527
  },
528
+
468
529
  async deleteScheduledAction(id) {
469
530
  const contentReview = await this.get(id);
470
531
  const scheduledActionId = (0, _get.default)(contentReview, "content.scheduledActionId");
471
-
472
532
  /**
473
533
  * Check if there is any action scheduled for this "content review".
474
534
  */
535
+
475
536
  if (!scheduledActionId) {
476
537
  throw new _error.default({
477
538
  message: `There is no action scheduled for content review.`,
@@ -484,15 +545,18 @@ function createContentReviewMethods(params) {
484
545
  /**
485
546
  * Delete scheduled action.
486
547
  */
487
- await scheduler.delete(scheduledActionId);
488
548
 
549
+
550
+ await scheduler.delete(scheduledActionId);
489
551
  /**
490
552
  * Reset scheduled related meta data.
491
553
  */
554
+
492
555
  await this.update(id, {
493
556
  content: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, contentReview.content), _utils2.INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META)
494
557
  });
495
558
  return true;
496
559
  }
560
+
497
561
  };
498
562
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createContentReviewMethods","params","getIdentity","storageOperations","getReviewer","getContentGetter","getContentPublisher","getContentUnPublisher","scheduler","handlerClient","getTenant","getLocale","plugins","onContentReviewBeforeCreate","createTopic","onContentReviewAfterCreate","onContentReviewBeforeUpdate","onContentReviewAfterUpdate","onContentReviewBeforeDelete","onContentReviewAfterDelete","onContentReviewBeforeList","get","id","getContentReview","list","where","publish","reviewStatus","filterContentReviewsByRequiresMyAttention","listParams","listContentReviews","create","data","input","ApwContentReviewStatus","UNDER_REVIEW","contentReview","createContentReview","update","original","updateContentReview","delete","deleteContentReview","provideSignOff","stepId","entry","steps","stepIndex","findIndex","step","currentStep","previousStep","identity","hasPermission","hasReviewer","NotAuthorizedError","status","ApwContentReviewStepStatus","DONE","type","ApwWorkflowStepTypes","MANDATORY_BLOCKING","StepMissingError","pendingChangeRequests","PendingChangeRequestsError","ACTIVE","StepInActiveError","previousStepStatus","updatedSteps","map","index","signOffProvidedOn","Date","toISOString","signOffProvidedBy","getNextStepStatus","newStatus","pendingRequiredSteps","getPendingRequiredSteps","length","READY_TO_BE_PUBLISHED","retractSignOff","NoSignOffProvidedError","isReviewRequired","contentGetter","content","settings","contentReviewId","contentApwSettingsPlugin","getContentApwSettingsPlugin","getContentReviewId","workflowId","getWorkflowId","publishContent","datetime","Error","message","code","checkValidDateTime","contentPublisher","action","ApwScheduleActionTypes","PUBLISH","entryId","modelId","scheduledActionId","scheduleAction","scheduledOn","scheduledBy","unpublishContent","PUBLISHED","contentUnPublisher","UNPUBLISH","scheduledAction","process","env","NODE_ENV","invoke","name","String","APW_SCHEDULER_SCHEDULE_ACTION_HANDLER","payload","tenant","locale","await","description","deleteScheduledAction","INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META"],"sources":["createContentReviewMethods.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport Error from \"@webiny/error\";\nimport {\n AdvancedPublishingWorkflow,\n ApwContentReview,\n ApwContentReviewCrud,\n ApwContentReviewStatus,\n ApwContentReviewStepStatus,\n ApwReviewerCrud,\n ApwScheduleActionData,\n ApwWorkflowStepTypes,\n CreateApwContentReviewParams,\n CreateApwParams,\n OnContentReviewAfterCreateTopicParams,\n OnContentReviewAfterDeleteTopicParams,\n OnContentReviewAfterUpdateTopicParams,\n OnContentReviewBeforeCreateTopicParams,\n OnContentReviewBeforeDeleteTopicParams,\n OnContentReviewBeforeListTopicParams,\n OnContentReviewBeforeUpdateTopicParams,\n UpdateApwContentReviewParams\n} from \"~/types\";\nimport { getNextStepStatus, hasReviewer } from \"~/plugins/utils\";\nimport {\n NoSignOffProvidedError,\n NotAuthorizedError,\n PendingChangeRequestsError,\n StepInActiveError,\n StepMissingError\n} from \"~/utils/errors\";\nimport { ApwScheduleActionTypes } from \"~/scheduler/types\";\nimport {\n checkValidDateTime,\n filterContentReviewsByRequiresMyAttention,\n getPendingRequiredSteps,\n INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META\n} from \"./utils\";\nimport { getContentApwSettingsPlugin } from \"~/utils/contentApwSettingsPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\nexport interface CreateContentReviewMethodsParams extends CreateApwParams {\n getReviewer: ApwReviewerCrud[\"get\"];\n getContentGetter: AdvancedPublishingWorkflow[\"getContentGetter\"];\n getContentPublisher: AdvancedPublishingWorkflow[\"getContentPublisher\"];\n getContentUnPublisher: AdvancedPublishingWorkflow[\"getContentUnPublisher\"];\n plugins: PluginsContainer;\n}\n\nexport function createContentReviewMethods(\n params: CreateContentReviewMethodsParams\n): ApwContentReviewCrud {\n const {\n getIdentity,\n storageOperations,\n getReviewer,\n getContentGetter,\n getContentPublisher,\n getContentUnPublisher,\n scheduler,\n handlerClient,\n getTenant,\n getLocale,\n plugins\n } = params;\n\n // create\n const onContentReviewBeforeCreate = createTopic<OnContentReviewBeforeCreateTopicParams>(\n \"apw.onContentReviewBeforeCreate\"\n );\n const onContentReviewAfterCreate = createTopic<OnContentReviewAfterCreateTopicParams>(\n \"apw.onContentReviewAfterCreate\"\n );\n // update\n const onContentReviewBeforeUpdate = createTopic<OnContentReviewBeforeUpdateTopicParams>(\n \"apw.onContentReviewBeforeUpdate\"\n );\n const onContentReviewAfterUpdate = createTopic<OnContentReviewAfterUpdateTopicParams>(\n \"apw.onContentReviewAfterUpdate\"\n );\n // delete\n const onContentReviewBeforeDelete = createTopic<OnContentReviewBeforeDeleteTopicParams>(\n \"apw.onContentReviewBeforeDelete\"\n );\n const onContentReviewAfterDelete = createTopic<OnContentReviewAfterDeleteTopicParams>(\n \"apw.onContentReviewAfterDelete\"\n );\n // list\n const onContentReviewBeforeList = createTopic<OnContentReviewBeforeListTopicParams>(\n \"apw.onContentReviewBeforeList\"\n );\n return {\n /**\n * Lifecycle events\n */\n onContentReviewBeforeCreate,\n onContentReviewAfterCreate,\n onContentReviewBeforeUpdate,\n onContentReviewAfterUpdate,\n onContentReviewBeforeDelete,\n onContentReviewAfterDelete,\n onContentReviewBeforeList,\n async get(id) {\n return storageOperations.getContentReview({ id });\n },\n async list(params) {\n const where = params.where || {};\n\n await onContentReviewBeforeList.publish({\n where\n });\n\n if (where.reviewStatus === \"requiresMyAttention\") {\n return filterContentReviewsByRequiresMyAttention({\n listParams: {\n ...params,\n where\n },\n listContentReviews: storageOperations.listContentReviews,\n getReviewer,\n getIdentity\n });\n }\n\n return storageOperations.listContentReviews({\n ...params,\n where\n });\n },\n async create(data: Omit<CreateApwContentReviewParams, \"reviewStatus\">) {\n const input: CreateApwContentReviewParams = {\n ...data,\n reviewStatus: ApwContentReviewStatus.UNDER_REVIEW\n };\n await onContentReviewBeforeCreate.publish({ input });\n\n const contentReview = await storageOperations.createContentReview({\n data: input\n });\n\n await onContentReviewAfterCreate.publish({ contentReview });\n\n return contentReview;\n },\n async update(id, data: UpdateApwContentReviewParams) {\n const original = await storageOperations.getContentReview({ id });\n\n await onContentReviewBeforeUpdate.publish({ original, input: { id, data } });\n\n const contentReview = await storageOperations.updateContentReview({\n id,\n data\n });\n\n await onContentReviewAfterUpdate.publish({\n original,\n input: { id, data },\n contentReview\n });\n\n return contentReview;\n },\n async delete(id) {\n const contentReview = await storageOperations.getContentReview({ id });\n\n await onContentReviewBeforeDelete.publish({ contentReview });\n\n await storageOperations.deleteContentReview({ id });\n\n await onContentReviewAfterDelete.publish({ contentReview });\n\n return true;\n },\n async provideSignOff(this: ApwContentReviewCrud, id, stepId) {\n const entry: ApwContentReview = await this.get(id);\n const { steps, reviewStatus } = entry;\n const stepIndex = steps.findIndex(step => step.id === stepId);\n const currentStep = steps[stepIndex];\n const previousStep = steps[stepIndex - 1];\n\n const identity = getIdentity();\n const hasPermission = await hasReviewer({\n getReviewer,\n identity,\n step: currentStep\n });\n\n /**\n * Check whether the sign-off is requested by a reviewer.\n */\n if (!hasPermission) {\n throw new NotAuthorizedError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if previous step is of \"mandatory_blocking\" type and undone.\n */\n if (\n previousStep &&\n previousStep.status !== ApwContentReviewStepStatus.DONE &&\n previousStep.type === ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n throw new StepMissingError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if there are pending change requests.\n */\n if (currentStep.pendingChangeRequests > 0) {\n throw new PendingChangeRequestsError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if current step is not in \"active\" state.\n */\n if (currentStep.status !== ApwContentReviewStepStatus.ACTIVE) {\n throw new StepInActiveError({ entry, input: { id, step: stepId } });\n }\n let previousStepStatus: ApwContentReviewStepStatus;\n /*\n * Provide sign-off for give step.\n */\n const updatedSteps = steps.map((step, index) => {\n if (index === stepIndex) {\n previousStepStatus = ApwContentReviewStepStatus.DONE;\n return {\n ...step,\n status: ApwContentReviewStepStatus.DONE,\n signOffProvidedOn: new Date().toISOString(),\n signOffProvidedBy: identity\n };\n }\n /**\n * Update next steps status based on type.\n */\n if (index > stepIndex) {\n const previousStep = steps[index - 1];\n\n previousStepStatus = getNextStepStatus(previousStep.type, previousStepStatus);\n return {\n ...step,\n status: previousStepStatus\n };\n }\n\n return step;\n });\n /**\n * Check for pending steps\n */\n let newStatus = reviewStatus;\n const pendingRequiredSteps = getPendingRequiredSteps(\n updatedSteps,\n step => typeof step.signOffProvidedOn !== \"string\"\n );\n\n /**\n * If there are no required steps that are pending, set the status to \"READY_TO_BE_PUBLISHED\".\n */\n if (pendingRequiredSteps.length === 0) {\n newStatus = ApwContentReviewStatus.READY_TO_BE_PUBLISHED;\n }\n\n /**\n * Save updated steps.\n */\n await this.update(id, {\n steps: updatedSteps,\n reviewStatus: newStatus\n });\n return true;\n },\n async retractSignOff(this: ApwContentReviewCrud, id, stepId) {\n const entry: ApwContentReview = await this.get(id);\n const { steps, reviewStatus } = entry;\n const stepIndex = steps.findIndex(step => step.id === stepId);\n const currentStep = steps[stepIndex];\n\n const identity = getIdentity();\n\n const hasPermission = await hasReviewer({\n getReviewer,\n identity,\n step: currentStep\n });\n\n /**\n * Check whether the retract sign-off is requested by a reviewer.\n */\n if (!hasPermission) {\n throw new NotAuthorizedError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow, if step in not \"done\" i.e. no sign-off was provided for it.\n */\n if (currentStep.status !== ApwContentReviewStepStatus.DONE) {\n throw new NoSignOffProvidedError({ entry, input: { id, step: stepId } });\n }\n let previousStepStatus: ApwContentReviewStepStatus;\n\n /*\n * Retract sign-off for give step.\n */\n const updatedSteps = steps.map((step, index) => {\n if (index === stepIndex) {\n previousStepStatus = ApwContentReviewStepStatus.ACTIVE;\n return {\n ...step,\n status: previousStepStatus,\n signOffProvidedOn: null,\n signOffProvidedBy: null\n };\n }\n /**\n * Set next step status as \"inactive\".\n */\n if (index > stepIndex) {\n const previousStep = steps[index - 1];\n\n previousStepStatus = getNextStepStatus(previousStep.type, previousStepStatus);\n\n return {\n ...step,\n status: previousStepStatus\n };\n }\n\n return step;\n });\n\n /**\n * Check for pending steps\n */\n let newStatus = reviewStatus;\n const pendingRequiredSteps = getPendingRequiredSteps(\n updatedSteps,\n step => step.signOffProvidedOn === null\n );\n /**\n * If there are required steps that are pending, set the status to \"UNDER_REVIEW\".\n */\n if (pendingRequiredSteps.length !== 0) {\n newStatus = ApwContentReviewStatus.UNDER_REVIEW;\n }\n\n await this.update(id, {\n steps: updatedSteps,\n reviewStatus: newStatus\n });\n return true;\n },\n async isReviewRequired(data) {\n const contentGetter = getContentGetter(data.type);\n const content = await contentGetter(data.id, data.settings);\n\n let isReviewRequired = false;\n let contentReviewId: string | null = null;\n\n const contentApwSettingsPlugin = getContentApwSettingsPlugin({\n plugins,\n type: data.type\n });\n\n if (contentApwSettingsPlugin) {\n contentReviewId = contentApwSettingsPlugin.getContentReviewId(content);\n const workflowId = contentApwSettingsPlugin.getWorkflowId(content);\n if (workflowId) {\n isReviewRequired = true;\n }\n }\n\n return {\n isReviewRequired,\n contentReviewId\n };\n },\n async publishContent(this: ApwContentReviewCrud, id: string, datetime) {\n const { content, reviewStatus } = await this.get(id);\n const identity = getIdentity();\n\n if (reviewStatus !== ApwContentReviewStatus.READY_TO_BE_PUBLISHED) {\n throw new Error({\n message: `Cannot publish content because it is not yet ready to be published.`,\n code: \"NOT_READY_TO_BE_PUBLISHED\",\n data: {\n id,\n status: reviewStatus,\n content\n }\n });\n }\n\n checkValidDateTime(datetime);\n\n /**\n * If datetime is present it means we're scheduling this action.\n * And if not, we are publishing immediately.\n */\n if (!datetime) {\n const contentPublisher = getContentPublisher(content.type);\n\n await contentPublisher(content.id, content.settings);\n\n return true;\n }\n\n const data: ApwScheduleActionData = {\n action: ApwScheduleActionTypes.PUBLISH,\n type: content.type,\n entryId: content.id,\n modelId: content.settings?.modelId,\n datetime\n };\n const scheduledActionId = await this.scheduleAction(data);\n /**\n * Update scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: datetime,\n scheduledBy: identity.id,\n scheduledActionId\n }\n });\n\n return true;\n },\n async unpublishContent(this: ApwContentReviewCrud, id: string, datetime) {\n const { content, reviewStatus } = await this.get(id);\n const identity = getIdentity();\n\n if (reviewStatus !== ApwContentReviewStatus.PUBLISHED) {\n throw new Error({\n message: `Cannot unpublish content because it is not yet published.`,\n code: \"NOT_YET_PUBLISHED\",\n data: {\n id,\n status: reviewStatus,\n content\n }\n });\n }\n checkValidDateTime(datetime);\n\n /**\n * If datetime is present it means we're scheduling this action.\n * If not, we are unpublishing immediately.\n */\n if (!datetime) {\n const contentUnPublisher = getContentUnPublisher(content.type);\n\n await contentUnPublisher(content.id, content.settings);\n\n return true;\n }\n\n const scheduledActionId = await this.scheduleAction({\n action: ApwScheduleActionTypes.UNPUBLISH,\n type: content.type,\n entryId: content.id,\n modelId: content.settings?.modelId,\n datetime\n });\n /**\n * Update scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: datetime,\n scheduledBy: identity.id,\n scheduledActionId\n }\n });\n\n return true;\n },\n async scheduleAction(data) {\n // Save input in DB\n const scheduledAction = await scheduler.create(data);\n /**\n * This function contains logic of lambda invocation.\n * Current we're not mocking it, therefore, we're just returning true.\n */\n if (process.env.NODE_ENV === \"test\") {\n return scheduledAction.id;\n }\n // Invoke handler\n await handlerClient.invoke({\n name: String(process.env.APW_SCHEDULER_SCHEDULE_ACTION_HANDLER),\n payload: {\n tenant: getTenant().id,\n locale: getLocale().code\n },\n await: false,\n description: \"APW scheduler handler\"\n });\n return scheduledAction.id;\n },\n async deleteScheduledAction(id) {\n const contentReview = await this.get(id);\n const scheduledActionId = get(contentReview, \"content.scheduledActionId\");\n\n /**\n * Check if there is any action scheduled for this \"content review\".\n */\n if (!scheduledActionId) {\n throw new Error({\n message: `There is no action scheduled for content review.`,\n code: \"NO_ACTION_SCHEDULED\",\n data: {\n id\n }\n });\n }\n /**\n * Delete scheduled action.\n */\n await scheduler.delete(scheduledActionId);\n\n /**\n * Reset scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...contentReview.content,\n ...INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META\n }\n });\n\n return true;\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["createContentReviewMethods","params","getIdentity","storageOperations","getReviewer","getContentGetter","getContentPublisher","getContentUnPublisher","scheduler","handlerClient","getTenant","getLocale","plugins","onContentReviewBeforeCreate","createTopic","onContentReviewAfterCreate","onContentReviewBeforeUpdate","onContentReviewAfterUpdate","onContentReviewBeforeDelete","onContentReviewAfterDelete","onContentReviewBeforeList","get","id","getContentReview","list","where","publish","reviewStatus","filterContentReviewsByRequiresMyAttention","listParams","listContentReviews","create","data","input","ApwContentReviewStatus","UNDER_REVIEW","contentReview","createContentReview","update","original","updateContentReview","delete","deleteContentReview","provideSignOff","stepId","entry","steps","stepIndex","findIndex","step","currentStep","previousStep","identity","hasPermission","hasReviewer","NotAuthorizedError","status","ApwContentReviewStepStatus","DONE","type","ApwWorkflowStepTypes","MANDATORY_BLOCKING","StepMissingError","pendingChangeRequests","PendingChangeRequestsError","ACTIVE","StepInActiveError","previousStepStatus","updatedSteps","map","index","signOffProvidedOn","Date","toISOString","signOffProvidedBy","getNextStepStatus","newStatus","pendingRequiredSteps","getPendingRequiredSteps","length","READY_TO_BE_PUBLISHED","retractSignOff","NoSignOffProvidedError","isReviewRequired","contentGetter","content","settings","contentReviewId","contentApwSettingsPlugin","getContentApwSettingsPlugin","getContentReviewId","workflowId","getWorkflowId","publishContent","datetime","Error","message","code","checkValidDateTime","contentPublisher","action","ApwScheduleActionTypes","PUBLISH","entryId","modelId","scheduledActionId","scheduleAction","scheduledOn","scheduledBy","unpublishContent","PUBLISHED","contentUnPublisher","UNPUBLISH","scheduledAction","process","env","NODE_ENV","invoke","name","String","APW_SCHEDULER_SCHEDULE_ACTION_HANDLER","payload","tenant","locale","await","description","deleteScheduledAction","INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META"],"sources":["createContentReviewMethods.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport Error from \"@webiny/error\";\nimport {\n AdvancedPublishingWorkflow,\n ApwContentReview,\n ApwContentReviewCrud,\n ApwContentReviewStatus,\n ApwContentReviewStepStatus,\n ApwReviewerCrud,\n ApwScheduleActionData,\n ApwWorkflowStepTypes,\n CreateApwContentReviewParams,\n CreateApwParams,\n OnContentReviewAfterCreateTopicParams,\n OnContentReviewAfterDeleteTopicParams,\n OnContentReviewAfterUpdateTopicParams,\n OnContentReviewBeforeCreateTopicParams,\n OnContentReviewBeforeDeleteTopicParams,\n OnContentReviewBeforeListTopicParams,\n OnContentReviewBeforeUpdateTopicParams,\n UpdateApwContentReviewParams\n} from \"~/types\";\nimport { getNextStepStatus, hasReviewer } from \"~/plugins/utils\";\nimport {\n NoSignOffProvidedError,\n NotAuthorizedError,\n PendingChangeRequestsError,\n StepInActiveError,\n StepMissingError\n} from \"~/utils/errors\";\nimport { ApwScheduleActionTypes } from \"~/scheduler/types\";\nimport {\n checkValidDateTime,\n filterContentReviewsByRequiresMyAttention,\n getPendingRequiredSteps,\n INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META\n} from \"./utils\";\nimport { getContentApwSettingsPlugin } from \"~/utils/contentApwSettingsPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\nexport interface CreateContentReviewMethodsParams extends CreateApwParams {\n getReviewer: ApwReviewerCrud[\"get\"];\n getContentGetter: AdvancedPublishingWorkflow[\"getContentGetter\"];\n getContentPublisher: AdvancedPublishingWorkflow[\"getContentPublisher\"];\n getContentUnPublisher: AdvancedPublishingWorkflow[\"getContentUnPublisher\"];\n plugins: PluginsContainer;\n}\n\nexport function createContentReviewMethods(\n params: CreateContentReviewMethodsParams\n): ApwContentReviewCrud {\n const {\n getIdentity,\n storageOperations,\n getReviewer,\n getContentGetter,\n getContentPublisher,\n getContentUnPublisher,\n scheduler,\n handlerClient,\n getTenant,\n getLocale,\n plugins\n } = params;\n\n // create\n const onContentReviewBeforeCreate = createTopic<OnContentReviewBeforeCreateTopicParams>(\n \"apw.onContentReviewBeforeCreate\"\n );\n const onContentReviewAfterCreate = createTopic<OnContentReviewAfterCreateTopicParams>(\n \"apw.onContentReviewAfterCreate\"\n );\n // update\n const onContentReviewBeforeUpdate = createTopic<OnContentReviewBeforeUpdateTopicParams>(\n \"apw.onContentReviewBeforeUpdate\"\n );\n const onContentReviewAfterUpdate = createTopic<OnContentReviewAfterUpdateTopicParams>(\n \"apw.onContentReviewAfterUpdate\"\n );\n // delete\n const onContentReviewBeforeDelete = createTopic<OnContentReviewBeforeDeleteTopicParams>(\n \"apw.onContentReviewBeforeDelete\"\n );\n const onContentReviewAfterDelete = createTopic<OnContentReviewAfterDeleteTopicParams>(\n \"apw.onContentReviewAfterDelete\"\n );\n // list\n const onContentReviewBeforeList = createTopic<OnContentReviewBeforeListTopicParams>(\n \"apw.onContentReviewBeforeList\"\n );\n return {\n /**\n * Lifecycle events\n */\n onContentReviewBeforeCreate,\n onContentReviewAfterCreate,\n onContentReviewBeforeUpdate,\n onContentReviewAfterUpdate,\n onContentReviewBeforeDelete,\n onContentReviewAfterDelete,\n onContentReviewBeforeList,\n async get(id) {\n return storageOperations.getContentReview({ id });\n },\n async list(params) {\n const where = params.where || {};\n\n await onContentReviewBeforeList.publish({\n where\n });\n\n if (where.reviewStatus === \"requiresMyAttention\") {\n return filterContentReviewsByRequiresMyAttention({\n listParams: {\n ...params,\n where\n },\n listContentReviews: storageOperations.listContentReviews,\n getReviewer,\n getIdentity\n });\n }\n\n return storageOperations.listContentReviews({\n ...params,\n where\n });\n },\n async create(data: Omit<CreateApwContentReviewParams, \"reviewStatus\">) {\n const input: CreateApwContentReviewParams = {\n ...data,\n reviewStatus: ApwContentReviewStatus.UNDER_REVIEW\n };\n await onContentReviewBeforeCreate.publish({ input });\n\n const contentReview = await storageOperations.createContentReview({\n data: input\n });\n\n await onContentReviewAfterCreate.publish({ contentReview });\n\n return contentReview;\n },\n async update(id, data: UpdateApwContentReviewParams) {\n const original = await storageOperations.getContentReview({ id });\n\n await onContentReviewBeforeUpdate.publish({ original, input: { id, data } });\n\n const contentReview = await storageOperations.updateContentReview({\n id,\n data\n });\n\n await onContentReviewAfterUpdate.publish({\n original,\n input: { id, data },\n contentReview\n });\n\n return contentReview;\n },\n async delete(id) {\n const contentReview = await storageOperations.getContentReview({ id });\n\n await onContentReviewBeforeDelete.publish({ contentReview });\n\n await storageOperations.deleteContentReview({ id });\n\n await onContentReviewAfterDelete.publish({ contentReview });\n\n return true;\n },\n async provideSignOff(this: ApwContentReviewCrud, id, stepId) {\n const entry: ApwContentReview = await this.get(id);\n const { steps, reviewStatus } = entry;\n const stepIndex = steps.findIndex(step => step.id === stepId);\n const currentStep = steps[stepIndex];\n const previousStep = steps[stepIndex - 1];\n\n const identity = getIdentity();\n const hasPermission = await hasReviewer({\n getReviewer,\n identity,\n step: currentStep\n });\n\n /**\n * Check whether the sign-off is requested by a reviewer.\n */\n if (!hasPermission) {\n throw new NotAuthorizedError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if previous step is of \"mandatory_blocking\" type and undone.\n */\n if (\n previousStep &&\n previousStep.status !== ApwContentReviewStepStatus.DONE &&\n previousStep.type === ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n throw new StepMissingError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if there are pending change requests.\n */\n if (currentStep.pendingChangeRequests > 0) {\n throw new PendingChangeRequestsError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if current step is not in \"active\" state.\n */\n if (currentStep.status !== ApwContentReviewStepStatus.ACTIVE) {\n throw new StepInActiveError({ entry, input: { id, step: stepId } });\n }\n let previousStepStatus: ApwContentReviewStepStatus;\n /*\n * Provide sign-off for give step.\n */\n const updatedSteps = steps.map((step, index) => {\n if (index === stepIndex) {\n previousStepStatus = ApwContentReviewStepStatus.DONE;\n return {\n ...step,\n status: ApwContentReviewStepStatus.DONE,\n signOffProvidedOn: new Date().toISOString(),\n signOffProvidedBy: identity\n };\n }\n /**\n * Update next steps status based on type.\n */\n if (index > stepIndex) {\n const previousStep = steps[index - 1];\n\n previousStepStatus = getNextStepStatus(previousStep.type, previousStepStatus);\n return {\n ...step,\n status: previousStepStatus\n };\n }\n\n return step;\n });\n /**\n * Check for pending steps\n */\n let newStatus = reviewStatus;\n const pendingRequiredSteps = getPendingRequiredSteps(\n updatedSteps,\n step => typeof step.signOffProvidedOn !== \"string\"\n );\n\n /**\n * If there are no required steps that are pending, set the status to \"READY_TO_BE_PUBLISHED\".\n */\n if (pendingRequiredSteps.length === 0) {\n newStatus = ApwContentReviewStatus.READY_TO_BE_PUBLISHED;\n }\n\n /**\n * Save updated steps.\n */\n await this.update(id, {\n steps: updatedSteps,\n reviewStatus: newStatus\n });\n return true;\n },\n async retractSignOff(this: ApwContentReviewCrud, id, stepId) {\n const entry: ApwContentReview = await this.get(id);\n const { steps, reviewStatus } = entry;\n const stepIndex = steps.findIndex(step => step.id === stepId);\n const currentStep = steps[stepIndex];\n\n const identity = getIdentity();\n\n const hasPermission = await hasReviewer({\n getReviewer,\n identity,\n step: currentStep\n });\n\n /**\n * Check whether the retract sign-off is requested by a reviewer.\n */\n if (!hasPermission) {\n throw new NotAuthorizedError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow, if step in not \"done\" i.e. no sign-off was provided for it.\n */\n if (currentStep.status !== ApwContentReviewStepStatus.DONE) {\n throw new NoSignOffProvidedError({ entry, input: { id, step: stepId } });\n }\n let previousStepStatus: ApwContentReviewStepStatus;\n\n /*\n * Retract sign-off for give step.\n */\n const updatedSteps = steps.map((step, index) => {\n if (index === stepIndex) {\n previousStepStatus = ApwContentReviewStepStatus.ACTIVE;\n return {\n ...step,\n status: previousStepStatus,\n signOffProvidedOn: null,\n signOffProvidedBy: null\n };\n }\n /**\n * Set next step status as \"inactive\".\n */\n if (index > stepIndex) {\n const previousStep = steps[index - 1];\n\n previousStepStatus = getNextStepStatus(previousStep.type, previousStepStatus);\n\n return {\n ...step,\n status: previousStepStatus\n };\n }\n\n return step;\n });\n\n /**\n * Check for pending steps\n */\n let newStatus = reviewStatus;\n const pendingRequiredSteps = getPendingRequiredSteps(\n updatedSteps,\n step => step.signOffProvidedOn === null\n );\n /**\n * If there are required steps that are pending, set the status to \"UNDER_REVIEW\".\n */\n if (pendingRequiredSteps.length !== 0) {\n newStatus = ApwContentReviewStatus.UNDER_REVIEW;\n }\n\n await this.update(id, {\n steps: updatedSteps,\n reviewStatus: newStatus\n });\n return true;\n },\n async isReviewRequired(data) {\n const contentGetter = getContentGetter(data.type);\n const content = await contentGetter(data.id, data.settings);\n\n let isReviewRequired = false;\n let contentReviewId: string | null = null;\n\n const contentApwSettingsPlugin = getContentApwSettingsPlugin({\n plugins,\n type: data.type\n });\n\n if (contentApwSettingsPlugin) {\n contentReviewId = contentApwSettingsPlugin.getContentReviewId(content);\n const workflowId = contentApwSettingsPlugin.getWorkflowId(content);\n if (workflowId) {\n isReviewRequired = true;\n }\n }\n\n return {\n isReviewRequired,\n contentReviewId\n };\n },\n async publishContent(this: ApwContentReviewCrud, id: string, datetime) {\n const { content, reviewStatus } = await this.get(id);\n const identity = getIdentity();\n\n if (reviewStatus !== ApwContentReviewStatus.READY_TO_BE_PUBLISHED) {\n throw new Error({\n message: `Cannot publish content because it is not yet ready to be published.`,\n code: \"NOT_READY_TO_BE_PUBLISHED\",\n data: {\n id,\n status: reviewStatus,\n content\n }\n });\n }\n\n checkValidDateTime(datetime);\n\n /**\n * If datetime is present it means we're scheduling this action.\n * And if not, we are publishing immediately.\n */\n if (!datetime) {\n const contentPublisher = getContentPublisher(content.type);\n\n await contentPublisher(content.id, content.settings);\n\n return true;\n }\n\n const data: ApwScheduleActionData = {\n action: ApwScheduleActionTypes.PUBLISH,\n type: content.type,\n entryId: content.id,\n modelId: content.settings?.modelId,\n datetime\n };\n const scheduledActionId = await this.scheduleAction(data);\n /**\n * Update scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: datetime,\n scheduledBy: identity.id,\n scheduledActionId\n }\n });\n\n return true;\n },\n async unpublishContent(this: ApwContentReviewCrud, id: string, datetime) {\n const { content, reviewStatus } = await this.get(id);\n const identity = getIdentity();\n\n if (reviewStatus !== ApwContentReviewStatus.PUBLISHED) {\n throw new Error({\n message: `Cannot unpublish content because it is not yet published.`,\n code: \"NOT_YET_PUBLISHED\",\n data: {\n id,\n status: reviewStatus,\n content\n }\n });\n }\n checkValidDateTime(datetime);\n\n /**\n * If datetime is present it means we're scheduling this action.\n * If not, we are unpublishing immediately.\n */\n if (!datetime) {\n const contentUnPublisher = getContentUnPublisher(content.type);\n\n await contentUnPublisher(content.id, content.settings);\n\n return true;\n }\n\n const scheduledActionId = await this.scheduleAction({\n action: ApwScheduleActionTypes.UNPUBLISH,\n type: content.type,\n entryId: content.id,\n modelId: content.settings?.modelId,\n datetime\n });\n /**\n * Update scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: datetime,\n scheduledBy: identity.id,\n scheduledActionId\n }\n });\n\n return true;\n },\n async scheduleAction(data) {\n // Save input in DB\n const scheduledAction = await scheduler.create(data);\n /**\n * This function contains logic of lambda invocation.\n * Current we're not mocking it, therefore, we're just returning true.\n */\n if (process.env.NODE_ENV === \"test\") {\n return scheduledAction.id;\n }\n // Invoke handler\n await handlerClient.invoke({\n name: String(process.env.APW_SCHEDULER_SCHEDULE_ACTION_HANDLER),\n payload: {\n tenant: getTenant().id,\n locale: getLocale().code\n },\n await: false,\n description: \"APW scheduler handler\"\n });\n return scheduledAction.id;\n },\n async deleteScheduledAction(id) {\n const contentReview = await this.get(id);\n const scheduledActionId = get(contentReview, \"content.scheduledActionId\");\n\n /**\n * Check if there is any action scheduled for this \"content review\".\n */\n if (!scheduledActionId) {\n throw new Error({\n message: `There is no action scheduled for content review.`,\n code: \"NO_ACTION_SCHEDULED\",\n data: {\n id\n }\n });\n }\n /**\n * Delete scheduled action.\n */\n await scheduler.delete(scheduledActionId);\n\n /**\n * Reset scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...contentReview.content,\n ...INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META\n }\n });\n\n return true;\n }\n };\n}\n"],"mappings":"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"}
@@ -4,17 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createReviewerMethods = createReviewerMethods;
7
+
7
8
  var _pubsub = require("@webiny/pubsub");
9
+
8
10
  function createReviewerMethods({
9
11
  storageOperations
10
12
  }) {
11
13
  // create
12
14
  const onReviewerBeforeCreate = (0, _pubsub.createTopic)("apw.onReviewerBeforeCreate");
13
- const onReviewerAfterCreate = (0, _pubsub.createTopic)("apw.onReviewerAfterCreate");
14
- // update
15
+ const onReviewerAfterCreate = (0, _pubsub.createTopic)("apw.onReviewerAfterCreate"); // update
16
+
15
17
  const onReviewerBeforeUpdate = (0, _pubsub.createTopic)("apw.onReviewerBeforeUpdate");
16
- const onReviewerAfterUpdate = (0, _pubsub.createTopic)("apw.onReviewerAfterUpdate");
17
- // delete
18
+ const onReviewerAfterUpdate = (0, _pubsub.createTopic)("apw.onReviewerAfterUpdate"); // delete
19
+
18
20
  const onReviewerBeforeDelete = (0, _pubsub.createTopic)("apw.onReviewerBeforeDelete");
19
21
  const onReviewerAfterDelete = (0, _pubsub.createTopic)("apw.onReviewerAfterDelete");
20
22
  return {
@@ -27,14 +29,17 @@ function createReviewerMethods({
27
29
  onReviewerAfterUpdate,
28
30
  onReviewerBeforeDelete,
29
31
  onReviewerAfterDelete,
32
+
30
33
  async get(id) {
31
34
  return storageOperations.getReviewer({
32
35
  id
33
36
  });
34
37
  },
38
+
35
39
  async list(params) {
36
40
  return storageOperations.listReviewers(params);
37
41
  },
42
+
38
43
  async create(data) {
39
44
  await onReviewerBeforeCreate.publish({
40
45
  input: data
@@ -47,6 +52,7 @@ function createReviewerMethods({
47
52
  });
48
53
  return reviewer;
49
54
  },
55
+
50
56
  async update(id, data) {
51
57
  const original = await storageOperations.getReviewer({
52
58
  id
@@ -72,6 +78,7 @@ function createReviewerMethods({
72
78
  });
73
79
  return reviewer;
74
80
  },
81
+
75
82
  async delete(id) {
76
83
  const reviewer = await storageOperations.getReviewer({
77
84
  id
@@ -87,5 +94,6 @@ function createReviewerMethods({
87
94
  });
88
95
  return true;
89
96
  }
97
+
90
98
  };
91
99
  }