@webiny/api-apw 5.25.0 → 5.30.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.
Files changed (216) hide show
  1. package/ContentApwSettingsPlugin.d.ts +10 -0
  2. package/ContentApwSettingsPlugin.js +17 -0
  3. package/ContentApwSettingsPlugin.js.map +1 -0
  4. package/README.md +7 -6
  5. package/{createApw → crud}/createChangeRequestMethods.d.ts +0 -0
  6. package/{createApw → crud}/createChangeRequestMethods.js +0 -0
  7. package/crud/createChangeRequestMethods.js.map +1 -0
  8. package/{createApw → crud}/createCommentMethods.d.ts +0 -0
  9. package/{createApw → crud}/createCommentMethods.js +0 -0
  10. package/crud/createCommentMethods.js.map +1 -0
  11. package/crud/createContentReviewMethods.d.ts +10 -0
  12. package/{createApw → crud}/createContentReviewMethods.js +269 -19
  13. package/crud/createContentReviewMethods.js.map +1 -0
  14. package/{createApw → crud}/createReviewerMethods.d.ts +0 -0
  15. package/{createApw → crud}/createReviewerMethods.js +0 -0
  16. package/crud/createReviewerMethods.js.map +1 -0
  17. package/{createApw → crud}/createWorkflowMethods.d.ts +0 -0
  18. package/{createApw → crud}/createWorkflowMethods.js +0 -0
  19. package/crud/createWorkflowMethods.js.map +1 -0
  20. package/{createApw → crud}/index.d.ts +0 -0
  21. package/{createApw → crud}/index.js +55 -11
  22. package/crud/index.js.map +1 -0
  23. package/crud/utils.d.ts +21 -0
  24. package/crud/utils.js +142 -0
  25. package/crud/utils.js.map +1 -0
  26. package/index.d.ts +4 -2
  27. package/index.js +11 -5
  28. package/index.js.map +1 -1
  29. package/package.json +37 -30
  30. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.d.ts +10 -0
  31. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +51 -0
  32. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -0
  33. package/plugins/cms/README.md +49 -0
  34. package/plugins/cms/apwEntryPlugins.d.ts +8 -0
  35. package/plugins/cms/apwEntryPlugins.js +50 -0
  36. package/plugins/cms/apwEntryPlugins.js.map +1 -0
  37. package/plugins/cms/index.d.ts +12 -0
  38. package/plugins/cms/index.js +37 -0
  39. package/plugins/cms/index.js.map +1 -0
  40. package/plugins/cms/linkContentReviewToEntry.d.ts +8 -0
  41. package/plugins/cms/linkContentReviewToEntry.js +108 -0
  42. package/plugins/cms/linkContentReviewToEntry.js.map +1 -0
  43. package/plugins/cms/linkWorkflowToEntry.d.ts +8 -0
  44. package/plugins/cms/linkWorkflowToEntry.js +166 -0
  45. package/plugins/cms/linkWorkflowToEntry.js.map +1 -0
  46. package/plugins/cms/triggerContentReview.d.ts +8 -0
  47. package/plugins/cms/triggerContentReview.js +59 -0
  48. package/plugins/cms/triggerContentReview.js.map +1 -0
  49. package/plugins/cms/updateContentReviewStatus.d.ts +10 -0
  50. package/plugins/cms/updateContentReviewStatus.js +101 -0
  51. package/plugins/cms/updateContentReviewStatus.js.map +1 -0
  52. package/plugins/cms/utils.d.ts +27 -0
  53. package/plugins/cms/utils.js +211 -0
  54. package/plugins/cms/utils.js.map +1 -0
  55. package/plugins/context.d.ts +3 -2
  56. package/plugins/context.js +82 -49
  57. package/plugins/context.js.map +1 -1
  58. package/plugins/graphql/changeRequest.gql.js +1 -1
  59. package/plugins/graphql/changeRequest.gql.js.map +1 -1
  60. package/plugins/graphql/comment.gql.js +8 -17
  61. package/plugins/graphql/comment.gql.js.map +1 -1
  62. package/plugins/graphql/contentReview.gql.js +168 -13
  63. package/plugins/graphql/contentReview.gql.js.map +1 -1
  64. package/plugins/graphql/reviewer.gql.js +1 -1
  65. package/plugins/graphql/reviewer.gql.js.map +1 -1
  66. package/plugins/graphql/workflow.gql.js +18 -15
  67. package/plugins/graphql/workflow.gql.js.map +1 -1
  68. package/plugins/graphql.d.ts +3 -2
  69. package/plugins/graphql.js +11 -1
  70. package/plugins/graphql.js.map +1 -1
  71. package/plugins/hooks/createReviewerFromIdentity.js +18 -0
  72. package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
  73. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +8 -8
  74. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
  75. package/plugins/hooks/deleteCommentsAfterChangeRequest.js +6 -6
  76. package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
  77. package/plugins/hooks/index.d.ts +1 -2
  78. package/plugins/hooks/index.js +25 -25
  79. package/plugins/hooks/index.js.map +1 -1
  80. package/plugins/hooks/initializeContentReviewSteps.d.ts +2 -7
  81. package/plugins/hooks/initializeContentReviewSteps.js +42 -24
  82. package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
  83. package/plugins/hooks/updatePendingChangeRequests.js +27 -39
  84. package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
  85. package/plugins/hooks/updateTotalComments.d.ts +3 -0
  86. package/plugins/hooks/updateTotalComments.js +157 -0
  87. package/plugins/hooks/updateTotalComments.js.map +1 -0
  88. package/plugins/hooks/validateChangeRequest.d.ts +2 -0
  89. package/plugins/hooks/validateChangeRequest.js +64 -0
  90. package/plugins/hooks/validateChangeRequest.js.map +1 -0
  91. package/plugins/hooks/validateComment.d.ts +2 -0
  92. package/plugins/hooks/validateComment.js +45 -0
  93. package/plugins/hooks/validateComment.js.map +1 -0
  94. package/plugins/hooks/validateContentReview.d.ts +2 -0
  95. package/plugins/hooks/validateContentReview.js +38 -0
  96. package/plugins/hooks/validateContentReview.js.map +1 -0
  97. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.d.ts +9 -0
  98. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +51 -0
  99. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -0
  100. package/plugins/pageBuilder/apwContentPagePlugins.d.ts +3 -0
  101. package/plugins/pageBuilder/apwContentPagePlugins.js +30 -0
  102. package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -0
  103. package/plugins/{hooks/extendPbPageSchema.d.ts → pageBuilder/extendPbPageSettingsSchema.d.ts} +1 -2
  104. package/plugins/{hooks/extendPbPageSchema.js → pageBuilder/extendPbPageSettingsSchema.js} +4 -3
  105. package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -0
  106. package/plugins/pageBuilder/index.d.ts +11 -0
  107. package/plugins/pageBuilder/index.js +45 -0
  108. package/plugins/pageBuilder/index.js.map +1 -0
  109. package/plugins/pageBuilder/linkContentReviewToPage.d.ts +8 -0
  110. package/plugins/pageBuilder/linkContentReviewToPage.js +93 -0
  111. package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -0
  112. package/plugins/pageBuilder/linkWorkflowToPage.d.ts +8 -0
  113. package/plugins/pageBuilder/linkWorkflowToPage.js +182 -0
  114. package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -0
  115. package/plugins/pageBuilder/triggerContentReview.d.ts +8 -0
  116. package/plugins/pageBuilder/triggerContentReview.js +50 -0
  117. package/plugins/pageBuilder/triggerContentReview.js.map +1 -0
  118. package/plugins/pageBuilder/updateContentReviewStatus.d.ts +10 -0
  119. package/plugins/pageBuilder/updateContentReviewStatus.js +83 -0
  120. package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -0
  121. package/plugins/pageBuilder/utils.d.ts +22 -0
  122. package/plugins/pageBuilder/utils.js +184 -0
  123. package/plugins/pageBuilder/utils.js.map +1 -0
  124. package/plugins/utils.d.ts +22 -2
  125. package/plugins/utils.js +128 -2
  126. package/plugins/utils.js.map +1 -1
  127. package/scheduler/createScheduleActionMethods.d.ts +2 -0
  128. package/scheduler/createScheduleActionMethods.js +146 -0
  129. package/scheduler/createScheduleActionMethods.js.map +1 -0
  130. package/scheduler/handlers/executeAction/index.d.ts +16 -0
  131. package/scheduler/handlers/executeAction/index.js +148 -0
  132. package/scheduler/handlers/executeAction/index.js.map +1 -0
  133. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.d.ts +13 -0
  134. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +17 -0
  135. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -0
  136. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.d.ts +11 -0
  137. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +126 -0
  138. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -0
  139. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.d.ts +11 -0
  140. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +163 -0
  141. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -0
  142. package/scheduler/handlers/executeAction/security.d.ts +4 -0
  143. package/scheduler/handlers/executeAction/security.js +68 -0
  144. package/scheduler/handlers/executeAction/security.js.map +1 -0
  145. package/scheduler/handlers/scheduleAction/index.d.ts +22 -0
  146. package/scheduler/handlers/scheduleAction/index.js +162 -0
  147. package/scheduler/handlers/scheduleAction/index.js.map +1 -0
  148. package/scheduler/handlers/scheduleAction/scheduleAction.utils.d.ts +24 -0
  149. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +176 -0
  150. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -0
  151. package/scheduler/handlers/utils.d.ts +33 -0
  152. package/scheduler/handlers/utils.js +168 -0
  153. package/scheduler/handlers/utils.js.map +1 -0
  154. package/scheduler/index.d.ts +2 -0
  155. package/scheduler/index.js +27 -0
  156. package/scheduler/index.js.map +1 -0
  157. package/scheduler/types.d.ts +171 -0
  158. package/scheduler/types.js +34 -0
  159. package/scheduler/types.js.map +1 -0
  160. package/storageOperations/changeRequestStorageOperations.js +1 -3
  161. package/storageOperations/changeRequestStorageOperations.js.map +1 -1
  162. package/storageOperations/commentStorageOperations.js +25 -11
  163. package/storageOperations/commentStorageOperations.js.map +1 -1
  164. package/storageOperations/contentReviewStorageOperations.js +1 -3
  165. package/storageOperations/contentReviewStorageOperations.js.map +1 -1
  166. package/storageOperations/index.js.map +1 -1
  167. package/storageOperations/models/changeRequest.model.d.ts +1 -0
  168. package/storageOperations/models/changeRequest.model.js +10 -5
  169. package/storageOperations/models/changeRequest.model.js.map +1 -1
  170. package/storageOperations/models/comment.model.d.ts +1 -0
  171. package/storageOperations/models/comment.model.js +24 -3
  172. package/storageOperations/models/comment.model.js.map +1 -1
  173. package/storageOperations/models/contentModelPluginFactory.d.ts +2 -2
  174. package/storageOperations/models/contentModelPluginFactory.js +2 -2
  175. package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
  176. package/storageOperations/models/contentReview.model.d.ts +1 -0
  177. package/storageOperations/models/contentReview.model.js +98 -26
  178. package/storageOperations/models/contentReview.model.js.map +1 -1
  179. package/storageOperations/models/index.js +25 -5
  180. package/storageOperations/models/index.js.map +1 -1
  181. package/storageOperations/models/reviewer.model.d.ts +1 -0
  182. package/storageOperations/models/reviewer.model.js +11 -6
  183. package/storageOperations/models/reviewer.model.js.map +1 -1
  184. package/storageOperations/models/utils.js.map +1 -1
  185. package/storageOperations/models/workflow.model.d.ts +2 -1
  186. package/storageOperations/models/workflow.model.js +32 -30
  187. package/storageOperations/models/workflow.model.js.map +1 -1
  188. package/storageOperations/reviewerStorageOperations.js +1 -3
  189. package/storageOperations/reviewerStorageOperations.js.map +1 -1
  190. package/storageOperations/types.js.map +1 -1
  191. package/storageOperations/workflowStorageOperations.js +21 -7
  192. package/storageOperations/workflowStorageOperations.js.map +1 -1
  193. package/types.d.ts +138 -49
  194. package/types.js +9 -3
  195. package/types.js.map +1 -1
  196. package/utils/contentApwSettingsPlugin.d.ts +9 -0
  197. package/utils/contentApwSettingsPlugin.js +26 -0
  198. package/utils/contentApwSettingsPlugin.js.map +1 -0
  199. package/utils/errors.js.map +1 -1
  200. package/utils/fieldResolver.js +2 -2
  201. package/utils/fieldResolver.js.map +1 -1
  202. package/utils/resolve.js.map +1 -1
  203. package/createApw/createChangeRequestMethods.js.map +0 -1
  204. package/createApw/createCommentMethods.js.map +0 -1
  205. package/createApw/createContentReviewMethods.d.ts +0 -6
  206. package/createApw/createContentReviewMethods.js.map +0 -1
  207. package/createApw/createReviewerMethods.js.map +0 -1
  208. package/createApw/createWorkflowMethods.js.map +0 -1
  209. package/createApw/index.js.map +0 -1
  210. package/plugins/createManageCMSPlugin.d.ts +0 -2
  211. package/plugins/createManageCMSPlugin.js +0 -31
  212. package/plugins/createManageCMSPlugin.js.map +0 -1
  213. package/plugins/hooks/extendPbPageSchema.js.map +0 -1
  214. package/plugins/hooks/linkWorkflowToPage.d.ts +0 -9
  215. package/plugins/hooks/linkWorkflowToPage.js +0 -155
  216. package/plugins/hooks/linkWorkflowToPage.js.map +0 -1
@@ -11,6 +11,8 @@ var _plugins = require("@webiny/handler-graphql/plugins");
11
11
 
12
12
  var _handlerGraphql = require("@webiny/handler-graphql");
13
13
 
14
+ var _types = require("../../types");
15
+
14
16
  var _resolve = _interopRequireDefault(require("../../utils/resolve"));
15
17
 
16
18
  const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
@@ -24,9 +26,14 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
24
26
  createdOn: DateTime
25
27
  createdBy: ApwCreatedBy
26
28
  # ContentReview specific fields
29
+ title: String
27
30
  steps: [ApwContentReviewStep]
28
31
  content: ApwContentReviewContent
29
32
  status: ApwContentReviewStatus
33
+ activeStep: ApwContentReviewStep
34
+ totalComments: Int
35
+ latestCommentId: String
36
+ reviewers: [ID!]!
30
37
  }
31
38
 
32
39
  type ApwListContentReviewsResponse {
@@ -64,11 +71,13 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
64
71
  underReview
65
72
  readyToBePublished
66
73
  published
74
+ requiresMyAttention
67
75
  }
68
76
 
69
77
  type ApwContentReviewStep {
70
78
  status: ApwContentReviewStepStatus
71
- slug: String
79
+ id: String
80
+ title: String
72
81
  pendingChangeRequests: Int
73
82
  signOffProvidedOn: DateTime
74
83
  signOffProvidedBy: ApwCreatedBy
@@ -81,6 +90,7 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
81
90
  createdOn: DateTime
82
91
  createdBy: ApwCreatedBy
83
92
  # ContentReview specific fields
93
+ title: String
84
94
  steps: [ApwContentReviewStep]
85
95
  content: ApwContentReviewContent
86
96
  workflow: ID
@@ -104,8 +114,6 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
104
114
  savedOn_DESC
105
115
  createdOn_ASC
106
116
  createdOn_DESC
107
- publishedOn_ASC
108
- publishedOn_DESC
109
117
  title_ASC
110
118
  title_DESC
111
119
  }
@@ -138,16 +146,29 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
138
146
  cms_entry
139
147
  }
140
148
 
149
+ type ApwContentReviewContentSettings {
150
+ modelId: String
151
+ }
152
+
153
+ input ApwContentReviewContentSettingsInput {
154
+ modelId: String
155
+ }
156
+
141
157
  type ApwContentReviewContent {
142
- id: ID
143
- type: ApwContentReviewContentTypes
144
- settings: String
158
+ id: ID!
159
+ type: ApwContentReviewContentTypes!
160
+ version: Int!
161
+ settings: ApwContentReviewContentSettings
162
+ publishedOn: String
163
+ publishedBy: ApwCreatedBy
164
+ scheduledOn: DateTime
165
+ scheduledBy: ApwCreatedBy
145
166
  }
146
167
 
147
168
  input ApwContentReviewContentInput {
148
169
  id: ID!
149
170
  type: ApwContentReviewContentTypes!
150
- settings: String
171
+ settings: ApwContentReviewContentSettingsInput
151
172
  }
152
173
 
153
174
  input ApwCreateContentReviewInput {
@@ -156,18 +177,48 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
156
177
 
157
178
  input ApwListContentReviewsWhereInput {
158
179
  id: ID
180
+ status: ApwContentReviewStatus
181
+ title: String
182
+ title_contains: String
183
+ }
184
+
185
+ type ApwProvideSignOffResponse {
186
+ data: Boolean
187
+ error: ApwError
159
188
  }
160
189
 
161
- input ApwListContentReviewsSearchInput {
162
- # By specifying "query", the search will be performed against workflow' "title" field.
163
- query: String
190
+ type ApwIsReviewRequiredData {
191
+ isReviewRequired: Boolean
192
+ contentReviewId: ID
164
193
  }
165
194
 
166
- type ApwProvideSignOffResponse {
195
+ type ApwIsReviewRequiredResponse {
196
+ data: ApwIsReviewRequiredData
197
+ error: ApwError
198
+ }
199
+
200
+ type ApwPublishContentResponse {
201
+ data: Boolean
202
+ error: ApwError
203
+ }
204
+
205
+ enum ApwContentActions {
206
+ publish
207
+ unpublish
208
+ }
209
+
210
+ type ApwScheduleActionResponse {
167
211
  data: Boolean
168
212
  error: ApwError
169
213
  }
170
214
 
215
+ input ApwScheduleActionInput {
216
+ action: ApwContentActions!
217
+ datetime: String!
218
+ type: ApwContentReviewContentTypes!
219
+ entryId: ID!
220
+ }
221
+
171
222
  extend type ApwQuery {
172
223
  getContentReview(id: ID!): ApwContentReviewResponse
173
224
 
@@ -176,8 +227,9 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
176
227
  limit: Int
177
228
  after: String
178
229
  sort: [ApwListContentReviewsSort!]
179
- search: ApwListContentReviewsSearchInput
180
230
  ): ApwListContentReviewsResponse
231
+
232
+ isReviewRequired(data: ApwContentReviewContentInput!): ApwIsReviewRequiredResponse
181
233
  }
182
234
 
183
235
  extend type ApwMutation {
@@ -188,9 +240,100 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
188
240
  provideSignOff(id: ID!, step: String!): ApwProvideSignOffResponse
189
241
 
190
242
  retractSignOff(id: ID!, step: String!): ApwProvideSignOffResponse
243
+
244
+ publishContent(id: ID!, datetime: String): ApwPublishContentResponse
245
+
246
+ unpublishContent(id: ID!, datetime: String): ApwPublishContentResponse
247
+
248
+ scheduleAction(data: ApwScheduleActionInput!): ApwScheduleActionResponse
249
+
250
+ deleteScheduledAction(id: ID!): ApwScheduleActionResponse
191
251
  }
192
252
  `,
193
253
  resolvers: {
254
+ ApwContentReviewContent: {
255
+ version: async (parent, _, context) => {
256
+ const getContent = context.apw.getContentGetter(parent.type);
257
+ const content = await getContent(parent.id, parent.settings);
258
+
259
+ if (!content) {
260
+ return null;
261
+ }
262
+
263
+ return content.version;
264
+ },
265
+ publishedOn: async (parent, _, context) => {
266
+ const getContent = context.apw.getContentGetter(parent.type);
267
+ const content = await getContent(parent.id, parent.settings);
268
+
269
+ if (!content) {
270
+ return null;
271
+ }
272
+
273
+ return content.publishedOn;
274
+ },
275
+ publishedBy: async (parent, _, context) => {
276
+ const id = parent.publishedBy;
277
+
278
+ if (id) {
279
+ const [[reviewer]] = await context.apw.reviewer.list({
280
+ where: {
281
+ identityId: id
282
+ }
283
+ });
284
+ return reviewer;
285
+ }
286
+
287
+ return null;
288
+ },
289
+ scheduledBy: async (parent, _, context) => {
290
+ const id = parent.scheduledBy;
291
+
292
+ if (id) {
293
+ const [[reviewer]] = await context.apw.reviewer.list({
294
+ where: {
295
+ identityId: id
296
+ }
297
+ });
298
+ return reviewer;
299
+ }
300
+
301
+ return null;
302
+ }
303
+ },
304
+ ApwContentReviewListItem: {
305
+ activeStep: async parent => {
306
+ const steps = parent.steps;
307
+ return steps.find(step => step.status === _types.ApwContentReviewStepStatus.ACTIVE);
308
+ },
309
+ totalComments: async parent => {
310
+ const steps = parent.steps;
311
+ return steps.reduce((count, step) => {
312
+ /**
313
+ * Aggregate totalComments from each step.
314
+ */
315
+ if (!isNaN(step.totalComments)) {
316
+ count += step.totalComments;
317
+ }
318
+
319
+ return count;
320
+ }, 0);
321
+ },
322
+ reviewers: async parent => {
323
+ const steps = parent.steps;
324
+ const reviewerIds = [];
325
+
326
+ for (const step of steps) {
327
+ for (const reviewer of step.reviewers) {
328
+ if (!reviewerIds.includes(reviewer.id)) {
329
+ reviewerIds.push(reviewer.id);
330
+ }
331
+ }
332
+ }
333
+
334
+ return reviewerIds;
335
+ }
336
+ },
194
337
  ApwQuery: {
195
338
  getContentReview: async (_, args, context) => {
196
339
  return (0, _resolve.default)(() => context.apw.contentReview.get(args.id));
@@ -198,13 +341,16 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
198
341
  listContentReviews: async (_, args, context) => {
199
342
  try {
200
343
  /**
201
- * We know that args is CmsEntryListParams.
344
+ * We know that args is ApwContentReviewListParams.
202
345
  */
203
346
  const [entries, meta] = await context.apw.contentReview.list(args);
204
347
  return new _handlerGraphql.ListResponse(entries, meta);
205
348
  } catch (e) {
206
349
  return new _handlerGraphql.ErrorResponse(e);
207
350
  }
351
+ },
352
+ isReviewRequired: async (_, args, context) => {
353
+ return (0, _resolve.default)(() => context.apw.contentReview.isReviewRequired(args.data));
208
354
  }
209
355
  },
210
356
  ApwMutation: {
@@ -219,6 +365,15 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
219
365
  },
220
366
  retractSignOff: async (_, args, context) => {
221
367
  return (0, _resolve.default)(() => context.apw.contentReview.retractSignOff(args.id, args.step));
368
+ },
369
+ publishContent: async (_, args, context) => {
370
+ return (0, _resolve.default)(() => context.apw.contentReview.publishContent(args.id, args.datetime));
371
+ },
372
+ unpublishContent: async (_, args, context) => {
373
+ return (0, _resolve.default)(() => context.apw.contentReview.unpublishContent(args.id, args.datetime));
374
+ },
375
+ deleteScheduledAction: async (_, args, context) => {
376
+ return (0, _resolve.default)(() => context.apw.contentReview.deleteScheduledAction(args.id));
222
377
  }
223
378
  }
224
379
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["contentReview.gql.ts"],"names":["contentReviewSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getContentReview","_","args","context","apw","contentReview","get","id","listContentReviews","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createContentReview","create","data","deleteContentReview","delete","provideSignOff","step","retractSignOff"],"mappings":";;;;;;;;;AAAA;;AACA;;AAGA;;AAEA,MAAMA,mBAAmB,GAAG,IAAIC,4BAAJ,CAAoC;AAC5DC,EAAAA,QAAQ;AAAE;AAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA9KgE;AA+K5DC,EAAAA,SAAS,EAAE;AACPC,IAAAA,QAAQ,EAAE;AACNC,MAAAA,gBAAgB,EAAE,OAAOC,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC/C,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,aAAZ,CAA0BC,GAA1B,CAA8BJ,IAAI,CAACK,EAAnC,CAAd,CAAP;AACH,OAHK;AAINC,MAAAA,kBAAkB,EAAE,OAAOP,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AACjD,YAAI;AACA;AACpB;AACA;AACoB,gBAAM,CAACM,OAAD,EAAUC,IAAV,IAAkB,MAAMP,OAAO,CAACC,GAAR,CAAYC,aAAZ,CAA0BM,IAA1B,CAC1BT,IAD0B,CAA9B;AAGA,iBAAO,IAAIU,4BAAJ,CAAiBH,OAAjB,EAA0BC,IAA1B,CAAP;AACH,SARD,CAQE,OAAOG,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ;AAhBK,KADH;AAmBPE,IAAAA,WAAW,EAAE;AACTC,MAAAA,mBAAmB,EAAE,OAAOf,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAClD,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,aAAZ,CAA0BY,MAA1B,CAAiCf,IAAI,CAACgB,IAAtC,CAAd,CAAP;AACH,OAHQ;AAITC,MAAAA,mBAAmB,EAAE,OAAOlB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAClD,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,aAAZ,CAA0Be,MAA1B,CAAiClB,IAAI,CAACK,EAAtC,CAAd,CAAP;AACH,OANQ;AAOTc,MAAAA,cAAc,EAAE,OAAOpB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC7C,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,aAAZ,CAA0BgB,cAA1B,CAAyCnB,IAAI,CAACK,EAA9C,EAAkDL,IAAI,CAACoB,IAAvD,CAAd,CAAP;AACH,OATQ;AAUTC,MAAAA,cAAc,EAAE,OAAOtB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC7C,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,aAAZ,CAA0BkB,cAA1B,CAAyCrB,IAAI,CAACK,EAA9C,EAAkDL,IAAI,CAACoB,IAAvD,CAAd,CAAP;AACH;AAZQ;AAnBN;AA/KiD,CAApC,CAA5B;eAmNe3B,mB","sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { CmsEntryListParams } from \"@webiny/api-headless-cms/types\";\nimport { ApwContext } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst contentReviewSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwContentReviewListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # ContentReview specific fields\n steps: [ApwContentReviewStep]\n content: ApwContentReviewContent\n status: ApwContentReviewStatus\n }\n\n type ApwListContentReviewsResponse {\n data: [ApwContentReviewListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwContentReviewReviewer {\n id: ID\n displayName: String\n }\n\n type ApwContentReviewComment {\n body: JSON\n author: String\n }\n\n type ApwContentReviewChangeRequested {\n title: String\n body: JSON\n media: JSON\n step: String\n resolved: Boolean\n comments: [ApwContentReviewComment]\n }\n\n enum ApwContentReviewStepStatus {\n done\n active\n inactive\n }\n\n enum ApwContentReviewStatus {\n underReview\n readyToBePublished\n published\n }\n\n type ApwContentReviewStep {\n status: ApwContentReviewStepStatus\n slug: String\n pendingChangeRequests: Int\n signOffProvidedOn: DateTime\n signOffProvidedBy: ApwCreatedBy\n }\n\n type ApwContentReview {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # ContentReview specific fields\n steps: [ApwContentReviewStep]\n content: ApwContentReviewContent\n workflow: ID\n status: ApwContentReviewStatus\n }\n\n type ApwContentReviewResponse {\n data: ApwContentReview\n error: ApwError\n }\n\n type ApwDeleteContentReviewResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListContentReviewsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwContentReviewReviewerInput {\n id: ID\n }\n\n input ApwContentReviewScopeInput {\n type: String\n options: JSON\n }\n\n input ApwContentReviewCommentInput {\n body: JSON\n author: String\n }\n\n input ApwContentReviewChangeRequestedInput {\n title: String\n body: JSON\n media: JSON\n step: String\n resolved: Boolean\n comments: [ApwContentReviewCommentInput]\n }\n\n enum ApwContentReviewContentTypes {\n page\n cms_entry\n }\n\n type ApwContentReviewContent {\n id: ID\n type: ApwContentReviewContentTypes\n settings: String\n }\n\n input ApwContentReviewContentInput {\n id: ID!\n type: ApwContentReviewContentTypes!\n settings: String\n }\n\n input ApwCreateContentReviewInput {\n content: ApwContentReviewContentInput!\n }\n\n input ApwListContentReviewsWhereInput {\n id: ID\n }\n\n input ApwListContentReviewsSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n type ApwProvideSignOffResponse {\n data: Boolean\n error: ApwError\n }\n\n extend type ApwQuery {\n getContentReview(id: ID!): ApwContentReviewResponse\n\n listContentReviews(\n where: ApwListContentReviewsWhereInput\n limit: Int\n after: String\n sort: [ApwListContentReviewsSort!]\n search: ApwListContentReviewsSearchInput\n ): ApwListContentReviewsResponse\n }\n\n extend type ApwMutation {\n createContentReview(data: ApwCreateContentReviewInput!): ApwContentReviewResponse\n\n deleteContentReview(id: ID!): ApwDeleteContentReviewResponse\n\n provideSignOff(id: ID!, step: String!): ApwProvideSignOffResponse\n\n retractSignOff(id: ID!, step: String!): ApwProvideSignOffResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.get(args.id));\n },\n listContentReviews: async (_, args: any, context) => {\n try {\n /**\n * We know that args is CmsEntryListParams.\n */\n const [entries, meta] = await context.apw.contentReview.list(\n args as unknown as CmsEntryListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.create(args.data));\n },\n deleteContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.delete(args.id));\n },\n provideSignOff: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.provideSignOff(args.id, args.step));\n },\n retractSignOff: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.retractSignOff(args.id, args.step));\n }\n }\n }\n});\n\nexport default contentReviewSchema;\n"]}
1
+ {"version":3,"names":["contentReviewSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwContentReviewContent","version","parent","_","context","getContent","apw","getContentGetter","type","content","id","settings","publishedOn","publishedBy","reviewer","list","where","identityId","scheduledBy","ApwContentReviewListItem","activeStep","steps","find","step","status","ApwContentReviewStepStatus","ACTIVE","totalComments","reduce","count","isNaN","reviewers","reviewerIds","includes","push","ApwQuery","getContentReview","args","resolve","contentReview","get","listContentReviews","entries","meta","ListResponse","e","ErrorResponse","isReviewRequired","data","ApwMutation","createContentReview","create","deleteContentReview","delete","provideSignOff","retractSignOff","publishContent","datetime","unpublishContent","deleteScheduledAction"],"sources":["contentReview.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport {\n ApwContentReviewStep,\n ApwContentReviewStepStatus,\n ApwContext,\n ApwContentReviewListParams,\n ApwContentReviewContent\n} from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst contentReviewSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwContentReviewListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # ContentReview specific fields\n title: String\n steps: [ApwContentReviewStep]\n content: ApwContentReviewContent\n status: ApwContentReviewStatus\n activeStep: ApwContentReviewStep\n totalComments: Int\n latestCommentId: String\n reviewers: [ID!]!\n }\n\n type ApwListContentReviewsResponse {\n data: [ApwContentReviewListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwContentReviewReviewer {\n id: ID\n displayName: String\n }\n\n type ApwContentReviewComment {\n body: JSON\n author: String\n }\n\n type ApwContentReviewChangeRequested {\n title: String\n body: JSON\n media: JSON\n step: String\n resolved: Boolean\n comments: [ApwContentReviewComment]\n }\n\n enum ApwContentReviewStepStatus {\n done\n active\n inactive\n }\n\n enum ApwContentReviewStatus {\n underReview\n readyToBePublished\n published\n requiresMyAttention\n }\n\n type ApwContentReviewStep {\n status: ApwContentReviewStepStatus\n id: String\n title: String\n pendingChangeRequests: Int\n signOffProvidedOn: DateTime\n signOffProvidedBy: ApwCreatedBy\n }\n\n type ApwContentReview {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # ContentReview specific fields\n title: String\n steps: [ApwContentReviewStep]\n content: ApwContentReviewContent\n workflow: ID\n status: ApwContentReviewStatus\n }\n\n type ApwContentReviewResponse {\n data: ApwContentReview\n error: ApwError\n }\n\n type ApwDeleteContentReviewResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListContentReviewsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwContentReviewReviewerInput {\n id: ID\n }\n\n input ApwContentReviewScopeInput {\n type: String\n options: JSON\n }\n\n input ApwContentReviewCommentInput {\n body: JSON\n author: String\n }\n\n input ApwContentReviewChangeRequestedInput {\n title: String\n body: JSON\n media: JSON\n step: String\n resolved: Boolean\n comments: [ApwContentReviewCommentInput]\n }\n\n enum ApwContentReviewContentTypes {\n page\n cms_entry\n }\n\n type ApwContentReviewContentSettings {\n modelId: String\n }\n\n input ApwContentReviewContentSettingsInput {\n modelId: String\n }\n\n type ApwContentReviewContent {\n id: ID!\n type: ApwContentReviewContentTypes!\n version: Int!\n settings: ApwContentReviewContentSettings\n publishedOn: String\n publishedBy: ApwCreatedBy\n scheduledOn: DateTime\n scheduledBy: ApwCreatedBy\n }\n\n input ApwContentReviewContentInput {\n id: ID!\n type: ApwContentReviewContentTypes!\n settings: ApwContentReviewContentSettingsInput\n }\n\n input ApwCreateContentReviewInput {\n content: ApwContentReviewContentInput!\n }\n\n input ApwListContentReviewsWhereInput {\n id: ID\n status: ApwContentReviewStatus\n title: String\n title_contains: String\n }\n\n type ApwProvideSignOffResponse {\n data: Boolean\n error: ApwError\n }\n\n type ApwIsReviewRequiredData {\n isReviewRequired: Boolean\n contentReviewId: ID\n }\n\n type ApwIsReviewRequiredResponse {\n data: ApwIsReviewRequiredData\n error: ApwError\n }\n\n type ApwPublishContentResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwContentActions {\n publish\n unpublish\n }\n\n type ApwScheduleActionResponse {\n data: Boolean\n error: ApwError\n }\n\n input ApwScheduleActionInput {\n action: ApwContentActions!\n datetime: String!\n type: ApwContentReviewContentTypes!\n entryId: ID!\n }\n\n extend type ApwQuery {\n getContentReview(id: ID!): ApwContentReviewResponse\n\n listContentReviews(\n where: ApwListContentReviewsWhereInput\n limit: Int\n after: String\n sort: [ApwListContentReviewsSort!]\n ): ApwListContentReviewsResponse\n\n isReviewRequired(data: ApwContentReviewContentInput!): ApwIsReviewRequiredResponse\n }\n\n extend type ApwMutation {\n createContentReview(data: ApwCreateContentReviewInput!): ApwContentReviewResponse\n\n deleteContentReview(id: ID!): ApwDeleteContentReviewResponse\n\n provideSignOff(id: ID!, step: String!): ApwProvideSignOffResponse\n\n retractSignOff(id: ID!, step: String!): ApwProvideSignOffResponse\n\n publishContent(id: ID!, datetime: String): ApwPublishContentResponse\n\n unpublishContent(id: ID!, datetime: String): ApwPublishContentResponse\n\n scheduleAction(data: ApwScheduleActionInput!): ApwScheduleActionResponse\n\n deleteScheduledAction(id: ID!): ApwScheduleActionResponse\n }\n `,\n resolvers: {\n ApwContentReviewContent: {\n version: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const getContent = context.apw.getContentGetter(parent.type);\n const content = await getContent(parent.id, parent.settings);\n if (!content) {\n return null;\n }\n return content.version;\n },\n publishedOn: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const getContent = context.apw.getContentGetter(parent.type);\n const content = await getContent(parent.id, parent.settings);\n if (!content) {\n return null;\n }\n return content.publishedOn;\n },\n publishedBy: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const id = parent.publishedBy;\n if (id) {\n const [[reviewer]] = await context.apw.reviewer.list({\n where: { identityId: id }\n });\n return reviewer;\n }\n return null;\n },\n scheduledBy: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const id = parent.scheduledBy;\n if (id) {\n const [[reviewer]] = await context.apw.reviewer.list({\n where: { identityId: id }\n });\n return reviewer;\n }\n return null;\n }\n },\n ApwContentReviewListItem: {\n activeStep: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n return steps.find(step => step.status === ApwContentReviewStepStatus.ACTIVE);\n },\n totalComments: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n return steps.reduce((count, step) => {\n /**\n * Aggregate totalComments from each step.\n */\n if (!isNaN(step.totalComments)) {\n count += step.totalComments;\n }\n\n return count;\n }, 0);\n },\n reviewers: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n const reviewerIds: string[] = [];\n\n for (const step of steps) {\n for (const reviewer of step.reviewers) {\n if (!reviewerIds.includes(reviewer.id)) {\n reviewerIds.push(reviewer.id);\n }\n }\n }\n return reviewerIds;\n }\n },\n ApwQuery: {\n getContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.get(args.id));\n },\n listContentReviews: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwContentReviewListParams.\n */\n const [entries, meta] = await context.apw.contentReview.list(\n args as unknown as ApwContentReviewListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n isReviewRequired: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.isReviewRequired(args.data));\n }\n },\n ApwMutation: {\n createContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.create(args.data));\n },\n deleteContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.delete(args.id));\n },\n provideSignOff: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.provideSignOff(args.id, args.step));\n },\n retractSignOff: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.retractSignOff(args.id, args.step));\n },\n publishContent: async (_, args: any, context) => {\n return resolve(() =>\n context.apw.contentReview.publishContent(args.id, args.datetime)\n );\n },\n unpublishContent: async (_, args: any, context) => {\n return resolve(() =>\n context.apw.contentReview.unpublishContent(args.id, args.datetime)\n );\n },\n deleteScheduledAction: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.deleteScheduledAction(args.id));\n }\n }\n }\n});\n\nexport default contentReviewSchema;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAOA;;AAEA,MAAMA,mBAAmB,GAAG,IAAIC,4BAAJ,CAAoC;EAC5DC,QAAQ;EAAE;EAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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"}
@@ -99,7 +99,7 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
99
99
  listReviewers: async (_, args, context) => {
100
100
  try {
101
101
  /**
102
- * We know that args is CmsEntryListParams.
102
+ * We know that args is ApwReviewerListParams.
103
103
  */
104
104
  const [entries, meta] = await context.apw.reviewer.list(args);
105
105
  return new _handlerGraphql.ListResponse(entries, meta);
@@ -1 +1 @@
1
- {"version":3,"sources":["reviewer.gql.ts"],"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getReviewer","_","args","context","apw","reviewer","get","id","listReviewers","entries","meta","list","ListResponse","e","ErrorResponse"],"mappings":";;;;;;;;;AAAA;;AACA;;AAGA;;AAEA,MAAMA,cAAc,GAAG,IAAIC,4BAAJ,CAAoC;AACvDC,EAAAA,QAAQ;AAAE;AAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA3E2D;AA4EvDC,EAAAA,SAAS,EAAE;AACPC,IAAAA,QAAQ,EAAE;AACNC,MAAAA,WAAW,EAAE,OAAOC,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC1C,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqBC,GAArB,CAAyBJ,IAAI,CAACK,EAA9B,CAAd,CAAP;AACH,OAHK;AAINC,MAAAA,aAAa,EAAE,OAAOP,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC5C,YAAI;AACA;AACpB;AACA;AACoB,gBAAM,CAACM,OAAD,EAAUC,IAAV,IAAkB,MAAMP,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqBM,IAArB,CAC1BT,IAD0B,CAA9B;AAGA,iBAAO,IAAIU,4BAAJ,CAAiBH,OAAjB,EAA0BC,IAA1B,CAAP;AACH,SARD,CAQE,OAAOG,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ;AAhBK;AADH;AA5E4C,CAApC,CAAvB;eAkGelB,c","sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { CmsEntryListParams } from \"@webiny/api-headless-cms/types\";\nimport { ApwContext } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwReviewerListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Reviewer specific fields\n identityId: ID\n displayName: String\n type: String\n }\n\n type ApwListReviewersResponse {\n data: [ApwReviewerListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwReviewer {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Reviewer specific fields\n identityId: ID\n displayName: String\n type: String\n }\n\n type ApwReviewerResponse {\n data: ApwReviewer\n error: ApwError\n }\n\n type ApwDeleteReviewerResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListReviewersSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwListReviewersWhereInput {\n identityId: ID\n }\n\n input ApwListReviewersSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n extend type ApwQuery {\n getReviewer(id: ID!): ApwReviewerResponse\n\n listReviewers(\n where: ApwListReviewersWhereInput\n limit: Int\n after: String\n sort: [ApwListReviewersSort!]\n search: ApwListReviewersSearchInput\n ): ApwListReviewersResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getReviewer: async (_, args: any, context) => {\n return resolve(() => context.apw.reviewer.get(args.id));\n },\n listReviewers: async (_, args: any, context) => {\n try {\n /**\n * We know that args is CmsEntryListParams.\n */\n const [entries, meta] = await context.apw.reviewer.list(\n args as unknown as CmsEntryListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n }\n});\n\nexport default workflowSchema;\n"]}
1
+ {"version":3,"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getReviewer","_","args","context","resolve","apw","reviewer","get","id","listReviewers","entries","meta","list","ListResponse","e","ErrorResponse"],"sources":["reviewer.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwReviewerListParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwReviewerListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Reviewer specific fields\n identityId: ID\n displayName: String\n type: String\n }\n\n type ApwListReviewersResponse {\n data: [ApwReviewerListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwReviewer {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Reviewer specific fields\n identityId: ID\n displayName: String\n type: String\n }\n\n type ApwReviewerResponse {\n data: ApwReviewer\n error: ApwError\n }\n\n type ApwDeleteReviewerResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListReviewersSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwListReviewersWhereInput {\n identityId: ID\n }\n\n input ApwListReviewersSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n extend type ApwQuery {\n getReviewer(id: ID!): ApwReviewerResponse\n\n listReviewers(\n where: ApwListReviewersWhereInput\n limit: Int\n after: String\n sort: [ApwListReviewersSort!]\n search: ApwListReviewersSearchInput\n ): ApwListReviewersResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getReviewer: async (_, args: any, context) => {\n return resolve(() => context.apw.reviewer.get(args.id));\n },\n listReviewers: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwReviewerListParams.\n */\n const [entries, meta] = await context.apw.reviewer.list(\n args as unknown as ApwReviewerListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n }\n});\n\nexport default workflowSchema;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAEA,MAAMA,cAAc,GAAG,IAAIC,4BAAJ,CAAoC;EACvDC,QAAQ;EAAE;EAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA3E2D;EA4EvDC,SAAS,EAAE;IACPC,QAAQ,EAAE;MACNC,WAAW,EAAE,OAAOC,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC1C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,QAAZ,CAAqBC,GAArB,CAAyBL,IAAI,CAACM,EAA9B,CAAd,CAAP;MACH,CAHK;MAINC,aAAa,EAAE,OAAOR,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC5C,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACO,OAAD,EAAUC,IAAV,IAAkB,MAAMR,OAAO,CAACE,GAAR,CAAYC,QAAZ,CAAqBM,IAArB,CAC1BV,IAD0B,CAA9B;UAGA,OAAO,IAAIW,4BAAJ,CAAiBH,OAAjB,EAA0BC,IAA1B,CAAP;QACH,CARD,CAQE,OAAOG,CAAP,EAAU;UACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;QACH;MACJ;IAhBK;EADH;AA5E4C,CAApC,CAAvB;eAkGenB,c"}
@@ -36,16 +36,11 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
36
36
  meta: ApwMeta
37
37
  }
38
38
 
39
- type ApwWorkflowReviewer {
40
- id: ID
41
- displayName: String
42
- }
43
-
44
39
  type ApwWorkflowStep {
45
- title: String
46
- slug: String
47
- type: ApwWorkflowStepTypes
48
- reviewers: [ApwRefField!]
40
+ title: String!
41
+ id: String!
42
+ type: ApwWorkflowStepTypes!
43
+ reviewers: [ID!]
49
44
  }
50
45
 
51
46
  type ApwWorkflowScope {
@@ -106,17 +101,17 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
106
101
  }
107
102
 
108
103
  input ApwCreateWorkflowStepInput {
104
+ id: String!
109
105
  title: String!
110
- slug: String!
111
106
  type: ApwWorkflowStepTypes!
112
- reviewers: [ApwRefFieldInput!]!
107
+ reviewers: [ID!]!
113
108
  }
114
109
 
115
110
  input ApwUpdateWorkflowStepInput {
111
+ id: String!
116
112
  title: String!
117
- slug: String!
118
113
  type: ApwWorkflowStepTypes!
119
- reviewers: [ApwRefFieldInput!]
114
+ reviewers: [ID!]
120
115
  }
121
116
 
122
117
  input ApwWorkflowScopeInput {
@@ -126,14 +121,14 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
126
121
 
127
122
  input ApwCreateWorkflowInput {
128
123
  title: String!
129
- steps: [ApwCreateWorkflowStepInput]!
124
+ steps: [ApwCreateWorkflowStepInput!]!
130
125
  scope: ApwWorkflowScopeInput!
131
126
  app: ApwWorkflowApplication!
132
127
  }
133
128
 
134
129
  input ApwUpdateWorkflowInput {
135
130
  title: String
136
- steps: [ApwUpdateWorkflowStepInput]
131
+ steps: [ApwUpdateWorkflowStepInput!]
137
132
  scope: ApwWorkflowScopeInput
138
133
  }
139
134
 
@@ -169,6 +164,14 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
169
164
  }
170
165
  `,
171
166
  resolvers: {
167
+ ApwWorkflowStep: {
168
+ reviewers: parent => {
169
+ const reviewers = parent.reviewers;
170
+ return reviewers.map(({
171
+ id
172
+ }) => id);
173
+ }
174
+ },
172
175
  ApwQuery: {
173
176
  getWorkflow: async (_, args, context) => {
174
177
  return (0, _resolve.default)(() => context.apw.workflow.get(args.id));
@@ -1 +1 @@
1
- {"version":3,"sources":["workflow.gql.ts"],"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getWorkflow","_","args","context","apw","workflow","get","id","listWorkflows","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createWorkflow","create","data","updateWorkflow","update","deleteWorkflow","delete"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAEA,MAAMA,cAAc,GAAG,IAAIC,4BAAJ,CAAoC;AACvDC,EAAAA,QAAQ;AAAE;AAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAxJ2D;AAyJvDC,EAAAA,SAAS,EAAE;AACPC,IAAAA,QAAQ,EAAE;AACNC,MAAAA,WAAW,EAAE,OAAOC,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC1C,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqBC,GAArB,CAAyBJ,IAAI,CAACK,EAA9B,CAAd,CAAP;AACH,OAHK;AAINC,MAAAA,aAAa,EAAE,OAAOP,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC5C,YAAI;AACA;AACpB;AACA;AACoB,gBAAM,CAACM,OAAD,EAAUC,IAAV,IAAkB,MAAMP,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqBM,IAArB,CAC1BT,IAD0B,CAA9B;AAGA,iBAAO,IAAIU,4BAAJ,CAAiBH,OAAjB,EAA0BC,IAA1B,CAAP;AACH,SARD,CAQE,OAAOG,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ;AAhBK,KADH;AAmBPE,IAAAA,WAAW,EAAE;AACTC,MAAAA,cAAc,EAAE,OAAOf,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC7C,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqBY,MAArB,CAA4Bf,IAAI,CAACgB,IAAjC,CAAd,CAAP;AACH,OAHQ;AAITC,MAAAA,cAAc,EAAE,OAAOlB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC7C,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqBe,MAArB,CAA4BlB,IAAI,CAACK,EAAjC,EAAqCL,IAAI,CAACgB,IAA1C,CAAd,CAAP;AACH,OANQ;AAOTG,MAAAA,cAAc,EAAE,OAAOpB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;AAC7C,eAAO,sBAAQ,MAAMA,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqBiB,MAArB,CAA4BpB,IAAI,CAACK,EAAjC,CAAd,CAAP;AACH;AATQ;AAnBN;AAzJ4C,CAApC,CAAvB;eA0LeZ,c","sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ListWorkflowsParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwWorkflowListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Workflow specific fields\n app: ApwWorkflowApplication\n title: String\n steps: [ApwWorkflowStep]\n scope: ApwWorkflowScope\n }\n\n type ApwListWorkflowsResponse {\n data: [ApwWorkflowListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwWorkflowReviewer {\n id: ID\n displayName: String\n }\n\n type ApwWorkflowStep {\n title: String\n slug: String\n type: ApwWorkflowStepTypes\n reviewers: [ApwRefField!]\n }\n\n type ApwWorkflowScope {\n type: String\n data: JSON\n }\n\n type ApwWorkflow {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Workflow specific fields\n app: ApwWorkflowApplication\n title: String\n steps: [ApwWorkflowStep]\n scope: ApwWorkflowScope\n }\n\n type ApwWorkflowResponse {\n data: ApwWorkflow\n error: ApwError\n }\n\n type ApwDeleteWorkflowResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwWorkflowApplication {\n pageBuilder\n cms\n formBuilder\n }\n\n enum ApwWorkflowStepTypes {\n mandatoryBlocking\n mandatoryNonBlocking\n notMandatory\n }\n\n enum ApwListWorkflowsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwWorkflowReviewerInput {\n id: ID\n }\n\n input ApwCreateWorkflowStepInput {\n title: String!\n slug: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ApwRefFieldInput!]!\n }\n\n input ApwUpdateWorkflowStepInput {\n title: String!\n slug: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ApwRefFieldInput!]\n }\n\n input ApwWorkflowScopeInput {\n type: String!\n data: JSON\n }\n\n input ApwCreateWorkflowInput {\n title: String!\n steps: [ApwCreateWorkflowStepInput]!\n scope: ApwWorkflowScopeInput!\n app: ApwWorkflowApplication!\n }\n\n input ApwUpdateWorkflowInput {\n title: String\n steps: [ApwUpdateWorkflowStepInput]\n scope: ApwWorkflowScopeInput\n }\n\n input ApwListWorkflowsWhereInput {\n app: ApwWorkflowApplication\n }\n\n input ApwListWorkflowsSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n type ApwQuery {\n getWorkflow(id: ID!): ApwWorkflowResponse\n\n listWorkflows(\n where: ApwListWorkflowsWhereInput\n limit: Int\n after: String\n sort: [ApwListWorkflowsSort!]\n search: ApwListWorkflowsSearchInput\n ): ApwListWorkflowsResponse\n }\n\n type ApwMutation {\n createWorkflow(data: ApwCreateWorkflowInput!): ApwWorkflowResponse\n\n # Update workflow by given ID.\n updateWorkflow(id: ID!, data: ApwUpdateWorkflowInput!): ApwWorkflowResponse\n\n # Delete workflow\n deleteWorkflow(id: ID!): ApwDeleteWorkflowResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.get(args.id));\n },\n listWorkflows: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ListWorkflowsParams.\n */\n const [entries, meta] = await context.apw.workflow.list(\n args as unknown as ListWorkflowsParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.create(args.data));\n },\n updateWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.update(args.id, args.data));\n },\n deleteWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.delete(args.id));\n }\n }\n }\n});\n\nexport default workflowSchema;\n"]}
1
+ {"version":3,"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwWorkflowStep","reviewers","parent","map","id","ApwQuery","getWorkflow","_","args","context","resolve","apw","workflow","get","listWorkflows","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createWorkflow","create","data","updateWorkflow","update","deleteWorkflow","delete"],"sources":["workflow.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwReviewer, ListWorkflowsParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwWorkflowListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Workflow specific fields\n app: ApwWorkflowApplication\n title: String\n steps: [ApwWorkflowStep]\n scope: ApwWorkflowScope\n }\n\n type ApwListWorkflowsResponse {\n data: [ApwWorkflowListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwWorkflowStep {\n title: String!\n id: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]\n }\n\n type ApwWorkflowScope {\n type: String\n data: JSON\n }\n\n type ApwWorkflow {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Workflow specific fields\n app: ApwWorkflowApplication\n title: String\n steps: [ApwWorkflowStep]\n scope: ApwWorkflowScope\n }\n\n type ApwWorkflowResponse {\n data: ApwWorkflow\n error: ApwError\n }\n\n type ApwDeleteWorkflowResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwWorkflowApplication {\n pageBuilder\n cms\n formBuilder\n }\n\n enum ApwWorkflowStepTypes {\n mandatoryBlocking\n mandatoryNonBlocking\n notMandatory\n }\n\n enum ApwListWorkflowsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwWorkflowReviewerInput {\n id: ID\n }\n\n input ApwCreateWorkflowStepInput {\n id: String!\n title: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]!\n }\n\n input ApwUpdateWorkflowStepInput {\n id: String!\n title: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]\n }\n\n input ApwWorkflowScopeInput {\n type: String!\n data: JSON\n }\n\n input ApwCreateWorkflowInput {\n title: String!\n steps: [ApwCreateWorkflowStepInput!]!\n scope: ApwWorkflowScopeInput!\n app: ApwWorkflowApplication!\n }\n\n input ApwUpdateWorkflowInput {\n title: String\n steps: [ApwUpdateWorkflowStepInput!]\n scope: ApwWorkflowScopeInput\n }\n\n input ApwListWorkflowsWhereInput {\n app: ApwWorkflowApplication\n }\n\n input ApwListWorkflowsSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n type ApwQuery {\n getWorkflow(id: ID!): ApwWorkflowResponse\n\n listWorkflows(\n where: ApwListWorkflowsWhereInput\n limit: Int\n after: String\n sort: [ApwListWorkflowsSort!]\n search: ApwListWorkflowsSearchInput\n ): ApwListWorkflowsResponse\n }\n\n type ApwMutation {\n createWorkflow(data: ApwCreateWorkflowInput!): ApwWorkflowResponse\n\n # Update workflow by given ID.\n updateWorkflow(id: ID!, data: ApwUpdateWorkflowInput!): ApwWorkflowResponse\n\n # Delete workflow\n deleteWorkflow(id: ID!): ApwDeleteWorkflowResponse\n }\n `,\n resolvers: {\n ApwWorkflowStep: {\n reviewers: parent => {\n const reviewers: ApwReviewer[] = parent.reviewers;\n return reviewers.map(({ id }) => id);\n }\n },\n ApwQuery: {\n getWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.get(args.id));\n },\n listWorkflows: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ListWorkflowsParams.\n */\n const [entries, meta] = await context.apw.workflow.list(\n args as unknown as ListWorkflowsParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.create(args.data));\n },\n updateWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.update(args.id, args.data));\n },\n deleteWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.delete(args.id));\n }\n }\n }\n});\n\nexport default workflowSchema;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAEA,MAAMA,cAAc,GAAG,IAAIC,4BAAJ,CAAoC;EACvDC,QAAQ;EAAE;EAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAnJ2D;EAoJvDC,SAAS,EAAE;IACPC,eAAe,EAAE;MACbC,SAAS,EAAEC,MAAM,IAAI;QACjB,MAAMD,SAAwB,GAAGC,MAAM,CAACD,SAAxC;QACA,OAAOA,SAAS,CAACE,GAAV,CAAc,CAAC;UAAEC;QAAF,CAAD,KAAYA,EAA1B,CAAP;MACH;IAJY,CADV;IAOPC,QAAQ,EAAE;MACNC,WAAW,EAAE,OAAOC,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC1C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,QAAZ,CAAqBC,GAArB,CAAyBL,IAAI,CAACJ,EAA9B,CAAd,CAAP;MACH,CAHK;MAINU,aAAa,EAAE,OAAOP,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC5C,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACM,OAAD,EAAUC,IAAV,IAAkB,MAAMP,OAAO,CAACE,GAAR,CAAYC,QAAZ,CAAqBK,IAArB,CAC1BT,IAD0B,CAA9B;UAGA,OAAO,IAAIU,4BAAJ,CAAiBH,OAAjB,EAA0BC,IAA1B,CAAP;QACH,CARD,CAQE,OAAOG,CAAP,EAAU;UACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;QACH;MACJ;IAhBK,CAPH;IAyBPE,WAAW,EAAE;MACTC,cAAc,EAAE,OAAOf,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC7C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,QAAZ,CAAqBW,MAArB,CAA4Bf,IAAI,CAACgB,IAAjC,CAAd,CAAP;MACH,CAHQ;MAITC,cAAc,EAAE,OAAOlB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC7C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,QAAZ,CAAqBc,MAArB,CAA4BlB,IAAI,CAACJ,EAAjC,EAAqCI,IAAI,CAACgB,IAA1C,CAAd,CAAP;MACH,CANQ;MAOTG,cAAc,EAAE,OAAOpB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC7C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,QAAZ,CAAqBgB,MAArB,CAA4BpB,IAAI,CAACJ,EAAjC,CAAd,CAAP;MACH;IATQ;EAzBN;AApJ4C,CAApC,CAAvB;eA2LeR,c"}
@@ -1,3 +1,4 @@
1
- import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/plugins";
2
- declare const _default: () => GraphQLSchemaPlugin<import("../types").ApwContext>[];
1
+ import { ContextPlugin } from "@webiny/handler";
2
+ import { ApwContext } from "../types";
3
+ declare const _default: () => ContextPlugin<ApwContext>;
3
4
  export default _default;
@@ -19,6 +19,8 @@ var _comment = _interopRequireDefault(require("./graphql/comment.gql"));
19
19
 
20
20
  var _changeRequest = _interopRequireDefault(require("./graphql/changeRequest.gql"));
21
21
 
22
+ var _handler = require("@webiny/handler");
23
+
22
24
  const emptyResolver = () => ({});
23
25
 
24
26
  const baseSchema = new _plugins.GraphQLSchemaPlugin({
@@ -80,6 +82,14 @@ const baseSchema = new _plugins.GraphQLSchemaPlugin({
80
82
  }
81
83
  });
82
84
 
83
- var _default = () => [baseSchema, _workflow.default, _contentReview.default, _reviewer.default, _comment.default, _changeRequest.default];
85
+ var _default = () => {
86
+ return new _handler.ContextPlugin(context => {
87
+ if (!context.wcp.canUseFeature("advancedPublishingWorkflow")) {
88
+ return;
89
+ }
90
+
91
+ context.plugins.register([baseSchema, _workflow.default, _contentReview.default, _reviewer.default, _comment.default, _changeRequest.default]);
92
+ });
93
+ };
84
94
 
85
95
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["graphql.ts"],"names":["emptyResolver","baseSchema","GraphQLSchemaPlugin","typeDefs","resolvers","Query","apw","Mutation","workflowSchema","contentReviewSchema","reviewerSchema","commentSchema","changeRequestedSchema"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,MAAMA,aAAa,GAAG,OAAO,EAAP,CAAtB;;AAEA,MAAMC,UAAU,GAAG,IAAIC,4BAAJ,CAAwB;AACvCC,EAAAA,QAAQ;AAAE;AAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA9C2C;AA+CvCC,EAAAA,SAAS,EAAE;AACPC,IAAAA,KAAK,EAAE;AACHC,MAAAA,GAAG,EAAEN;AADF,KADA;AAIPO,IAAAA,QAAQ,EAAE;AACND,MAAAA,GAAG,EAAEN;AADC;AAJH;AA/C4B,CAAxB,CAAnB;;eAyDe,MAAM,CACjBC,UADiB,EAEjBO,iBAFiB,EAGjBC,sBAHiB,EAIjBC,iBAJiB,EAKjBC,gBALiB,EAMjBC,sBANiB,C","sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport workflowSchema from \"./graphql/workflow.gql\";\nimport contentReviewSchema from \"./graphql/contentReview.gql\";\nimport reviewerSchema from \"./graphql/reviewer.gql\";\nimport commentSchema from \"./graphql/comment.gql\";\nimport changeRequestedSchema from \"./graphql/changeRequest.gql\";\n\nconst emptyResolver = () => ({});\n\nconst baseSchema = new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n input ApwRefFieldInput {\n id: ID!\n modelId: String\n }\n\n input ApwRefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n\n type ApwRefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n\n type ApwMeta {\n hasMoreItems: Boolean\n totalCount: Int\n cursor: String\n }\n type ApwCreatedBy {\n id: ID\n displayName: String\n type: String\n }\n type ApwError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n extend type Query {\n apw: ApwQuery\n }\n extend type Mutation {\n apw: ApwMutation\n }\n `,\n resolvers: {\n Query: {\n apw: emptyResolver\n },\n Mutation: {\n apw: emptyResolver\n }\n }\n});\n\nexport default () => [\n baseSchema,\n workflowSchema,\n contentReviewSchema,\n reviewerSchema,\n commentSchema,\n changeRequestedSchema\n];\n"]}
1
+ {"version":3,"names":["emptyResolver","baseSchema","GraphQLSchemaPlugin","typeDefs","resolvers","Query","apw","Mutation","ContextPlugin","context","wcp","canUseFeature","plugins","register","workflowSchema","contentReviewSchema","reviewerSchema","commentSchema","changeRequestedSchema"],"sources":["graphql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport workflowSchema from \"./graphql/workflow.gql\";\nimport contentReviewSchema from \"./graphql/contentReview.gql\";\nimport reviewerSchema from \"./graphql/reviewer.gql\";\nimport commentSchema from \"./graphql/comment.gql\";\nimport changeRequestedSchema from \"./graphql/changeRequest.gql\";\nimport { ContextPlugin } from \"@webiny/handler\";\nimport { ApwContext } from \"~/types\";\n\nconst emptyResolver = () => ({});\n\nconst baseSchema = new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n input ApwRefFieldInput {\n id: ID!\n modelId: String\n }\n\n input ApwRefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n\n type ApwRefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n\n type ApwMeta {\n hasMoreItems: Boolean\n totalCount: Int\n cursor: String\n }\n type ApwCreatedBy {\n id: ID\n displayName: String\n type: String\n }\n type ApwError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n extend type Query {\n apw: ApwQuery\n }\n extend type Mutation {\n apw: ApwMutation\n }\n `,\n resolvers: {\n Query: {\n apw: emptyResolver\n },\n Mutation: {\n apw: emptyResolver\n }\n }\n});\n\nexport default () => {\n return new ContextPlugin<ApwContext>(context => {\n if (!context.wcp.canUseFeature(\"advancedPublishingWorkflow\")) {\n return;\n }\n\n context.plugins.register([\n baseSchema,\n workflowSchema,\n contentReviewSchema,\n reviewerSchema,\n commentSchema,\n changeRequestedSchema\n ]);\n });\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA,MAAMA,aAAa,GAAG,OAAO,EAAP,CAAtB;;AAEA,MAAMC,UAAU,GAAG,IAAIC,4BAAJ,CAAwB;EACvCC,QAAQ;EAAE;EAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA9C2C;EA+CvCC,SAAS,EAAE;IACPC,KAAK,EAAE;MACHC,GAAG,EAAEN;IADF,CADA;IAIPO,QAAQ,EAAE;MACND,GAAG,EAAEN;IADC;EAJH;AA/C4B,CAAxB,CAAnB;;eAyDe,MAAM;EACjB,OAAO,IAAIQ,sBAAJ,CAA8BC,OAAO,IAAI;IAC5C,IAAI,CAACA,OAAO,CAACC,GAAR,CAAYC,aAAZ,CAA0B,4BAA1B,CAAL,EAA8D;MAC1D;IACH;;IAEDF,OAAO,CAACG,OAAR,CAAgBC,QAAhB,CAAyB,CACrBZ,UADqB,EAErBa,iBAFqB,EAGrBC,sBAHqB,EAIrBC,iBAJqB,EAKrBC,gBALqB,EAMrBC,sBANqB,CAAzB;EAQH,CAbM,CAAP;AAcH,C"}
@@ -30,6 +30,10 @@ const createReviewerFromIdentity = ({
30
30
  throw e;
31
31
  }
32
32
  }
33
+ /**
34
+ * Create a reviewer if it doesn't exist already.
35
+ */
36
+
33
37
 
34
38
  if (!reviewer) {
35
39
  await apw.reviewer.create({
@@ -37,6 +41,20 @@ const createReviewerFromIdentity = ({
37
41
  displayName: identity.displayName,
38
42
  type: identity.type
39
43
  });
44
+ return;
45
+ }
46
+ /**
47
+ * If "displayName" doesn't match it means it has been updated in the identity,
48
+ * therefore, we need to update it on reviewer as well keep them in sync.
49
+ */
50
+
51
+
52
+ if (reviewer.displayName !== identity.displayName) {
53
+ await apw.reviewer.update(reviewer.id, {
54
+ identityId: reviewer.identityId,
55
+ type: reviewer.type,
56
+ displayName: identity.displayName
57
+ });
40
58
  }
41
59
  });
42
60
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["createReviewerFromIdentity.ts"],"names":["createReviewerFromIdentity","security","apw","onAfterLogin","subscribe","identity","reviewer","list","where","identityId","id","limit","e","message","create","displayName","type"],"mappings":";;;;;;;AAEO,MAAMA,0BAA0B,GAAG,CAAC;AAAEC,EAAAA,QAAF;AAAYC,EAAAA;AAAZ,CAAD,KAAoD;AAC1F;AACJ;AACA;AACID,EAAAA,QAAQ,CAACE,YAAT,CAAsBC,SAAtB,CAAgC,OAAO;AAAEC,IAAAA;AAAF,GAAP,KAAwB;AACpD,QAAIC,QAAJ;;AACA,QAAI;AACA,OAAC,CAACA,QAAD,CAAD,IAAe,MAAMJ,GAAG,CAACI,QAAJ,CAAaC,IAAb,CAAkB;AACnCC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,UAAU,EAAEJ,QAAQ,CAACK;AAAvB,SAD4B;AAEnCC,QAAAA,KAAK,EAAE;AAF4B,OAAlB,CAArB;AAIH,KALD,CAKE,OAAOC,CAAP,EAAU;AACR,UAAIA,CAAC,CAACC,OAAF,KAAc,2BAAlB,EAA+C,CAC3C;AACH,OAFD,MAEO;AACH,cAAMD,CAAN;AACH;AACJ;;AAED,QAAI,CAACN,QAAL,EAAe;AACX,YAAMJ,GAAG,CAACI,QAAJ,CAAaQ,MAAb,CAAoB;AACtBL,QAAAA,UAAU,EAAEJ,QAAQ,CAACK,EADC;AAEtBK,QAAAA,WAAW,EAAEV,QAAQ,CAACU,WAFA;AAGtBC,QAAAA,IAAI,EAAEX,QAAQ,CAACW;AAHO,OAApB,CAAN;AAKH;AACJ,GAtBD;AAuBH,CA3BM","sourcesContent":["import { LifeCycleHookCallbackParams } from \"~/types\";\n\nexport const createReviewerFromIdentity = ({ security, apw }: LifeCycleHookCallbackParams) => {\n /**\n * Replicate identity in \"AdvancedPublishingWorkflow\" system after login.\n */\n security.onAfterLogin.subscribe(async ({ identity }) => {\n let reviewer;\n try {\n [[reviewer]] = await apw.reviewer.list({\n where: { identityId: identity.id },\n limit: 1\n });\n } catch (e) {\n if (e.message === \"index_not_found_exception\") {\n // Do nothing\n } else {\n throw e;\n }\n }\n\n if (!reviewer) {\n await apw.reviewer.create({\n identityId: identity.id,\n displayName: identity.displayName,\n type: identity.type\n });\n }\n });\n};\n"]}
1
+ {"version":3,"names":["createReviewerFromIdentity","security","apw","onAfterLogin","subscribe","identity","reviewer","list","where","identityId","id","limit","e","message","create","displayName","type","update"],"sources":["createReviewerFromIdentity.ts"],"sourcesContent":["import { LifeCycleHookCallbackParams } from \"~/types\";\n\nexport const createReviewerFromIdentity = ({ security, apw }: LifeCycleHookCallbackParams) => {\n /**\n * Replicate identity in \"AdvancedPublishingWorkflow\" system after login.\n */\n security.onAfterLogin.subscribe(async ({ identity }) => {\n let reviewer;\n try {\n [[reviewer]] = await apw.reviewer.list({\n where: { identityId: identity.id },\n limit: 1\n });\n } catch (e) {\n if (e.message === \"index_not_found_exception\") {\n // Do nothing\n } else {\n throw e;\n }\n }\n /**\n * Create a reviewer if it doesn't exist already.\n */\n if (!reviewer) {\n await apw.reviewer.create({\n identityId: identity.id,\n displayName: identity.displayName,\n type: identity.type\n });\n return;\n }\n /**\n * If \"displayName\" doesn't match it means it has been updated in the identity,\n * therefore, we need to update it on reviewer as well keep them in sync.\n */\n if (reviewer.displayName !== identity.displayName) {\n await apw.reviewer.update(reviewer.id, {\n identityId: reviewer.identityId,\n type: reviewer.type,\n displayName: identity.displayName\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAEO,MAAMA,0BAA0B,GAAG,CAAC;EAAEC,QAAF;EAAYC;AAAZ,CAAD,KAAoD;EAC1F;AACJ;AACA;EACID,QAAQ,CAACE,YAAT,CAAsBC,SAAtB,CAAgC,OAAO;IAAEC;EAAF,CAAP,KAAwB;IACpD,IAAIC,QAAJ;;IACA,IAAI;MACA,CAAC,CAACA,QAAD,CAAD,IAAe,MAAMJ,GAAG,CAACI,QAAJ,CAAaC,IAAb,CAAkB;QACnCC,KAAK,EAAE;UAAEC,UAAU,EAAEJ,QAAQ,CAACK;QAAvB,CAD4B;QAEnCC,KAAK,EAAE;MAF4B,CAAlB,CAArB;IAIH,CALD,CAKE,OAAOC,CAAP,EAAU;MACR,IAAIA,CAAC,CAACC,OAAF,KAAc,2BAAlB,EAA+C,CAC3C;MACH,CAFD,MAEO;QACH,MAAMD,CAAN;MACH;IACJ;IACD;AACR;AACA;;;IACQ,IAAI,CAACN,QAAL,EAAe;MACX,MAAMJ,GAAG,CAACI,QAAJ,CAAaQ,MAAb,CAAoB;QACtBL,UAAU,EAAEJ,QAAQ,CAACK,EADC;QAEtBK,WAAW,EAAEV,QAAQ,CAACU,WAFA;QAGtBC,IAAI,EAAEX,QAAQ,CAACW;MAHO,CAApB,CAAN;MAKA;IACH;IACD;AACR;AACA;AACA;;;IACQ,IAAIV,QAAQ,CAACS,WAAT,KAAyBV,QAAQ,CAACU,WAAtC,EAAmD;MAC/C,MAAMb,GAAG,CAACI,QAAJ,CAAaW,MAAb,CAAoBX,QAAQ,CAACI,EAA7B,EAAiC;QACnCD,UAAU,EAAEH,QAAQ,CAACG,UADc;QAEnCO,IAAI,EAAEV,QAAQ,CAACU,IAFoB;QAGnCD,WAAW,EAAEV,QAAQ,CAACU;MAHa,CAAjC,CAAN;IAKH;EACJ,CApCD;AAqCH,CAzCM"}
@@ -21,17 +21,16 @@ const deleteChangeRequestsWithContentReview = ({
21
21
 
22
22
  for (let i = 0; i < steps.length; i++) {
23
23
  const {
24
- slug
24
+ id: stepId
25
25
  } = steps[i];
26
26
  let meta = {
27
- hasMoreItems: true,
28
- cursor: null
27
+ totalCount: 1
29
28
  };
30
29
  /**
31
30
  * Paginate through change requests.
32
31
  */
33
32
 
34
- while (meta.hasMoreItems) {
33
+ while (meta.totalCount > 0) {
35
34
  let changeRequests = [];
36
35
  /**
37
36
  * Get all change requests.
@@ -40,16 +39,17 @@ const deleteChangeRequestsWithContentReview = ({
40
39
  try {
41
40
  [changeRequests, meta] = await apw.changeRequest.list({
42
41
  where: {
43
- step: `${contentReview.id}#${slug}`
44
- },
45
- after: meta.cursor
42
+ step: `${contentReview.id}#${stepId}`
43
+ }
46
44
  });
47
45
  } catch (e) {
48
- meta.hasMoreItems = false;
46
+ meta.totalCount = 0;
49
47
 
50
48
  if (e.message !== "index_not_found_exception") {
51
49
  throw e;
52
50
  }
51
+
52
+ console.log(e);
53
53
  }
54
54
  /**
55
55
  * Delete change requests one by one.