@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.
- package/ContentApwSettingsPlugin.d.ts +10 -0
- package/ContentApwSettingsPlugin.js +17 -0
- package/ContentApwSettingsPlugin.js.map +1 -0
- package/README.md +7 -6
- package/{createApw → crud}/createChangeRequestMethods.d.ts +0 -0
- package/{createApw → crud}/createChangeRequestMethods.js +0 -0
- package/crud/createChangeRequestMethods.js.map +1 -0
- package/{createApw → crud}/createCommentMethods.d.ts +0 -0
- package/{createApw → crud}/createCommentMethods.js +0 -0
- package/crud/createCommentMethods.js.map +1 -0
- package/crud/createContentReviewMethods.d.ts +10 -0
- package/{createApw → crud}/createContentReviewMethods.js +269 -19
- package/crud/createContentReviewMethods.js.map +1 -0
- package/{createApw → crud}/createReviewerMethods.d.ts +0 -0
- package/{createApw → crud}/createReviewerMethods.js +0 -0
- package/crud/createReviewerMethods.js.map +1 -0
- package/{createApw → crud}/createWorkflowMethods.d.ts +0 -0
- package/{createApw → crud}/createWorkflowMethods.js +0 -0
- package/crud/createWorkflowMethods.js.map +1 -0
- package/{createApw → crud}/index.d.ts +0 -0
- package/{createApw → crud}/index.js +55 -11
- package/crud/index.js.map +1 -0
- package/crud/utils.d.ts +21 -0
- package/crud/utils.js +142 -0
- package/crud/utils.js.map +1 -0
- package/index.d.ts +4 -2
- package/index.js +11 -5
- package/index.js.map +1 -1
- package/package.json +37 -30
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.d.ts +10 -0
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +51 -0
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -0
- package/plugins/cms/README.md +49 -0
- package/plugins/cms/apwEntryPlugins.d.ts +8 -0
- package/plugins/cms/apwEntryPlugins.js +50 -0
- package/plugins/cms/apwEntryPlugins.js.map +1 -0
- package/plugins/cms/index.d.ts +12 -0
- package/plugins/cms/index.js +37 -0
- package/plugins/cms/index.js.map +1 -0
- package/plugins/cms/linkContentReviewToEntry.d.ts +8 -0
- package/plugins/cms/linkContentReviewToEntry.js +108 -0
- package/plugins/cms/linkContentReviewToEntry.js.map +1 -0
- package/plugins/cms/linkWorkflowToEntry.d.ts +8 -0
- package/plugins/cms/linkWorkflowToEntry.js +166 -0
- package/plugins/cms/linkWorkflowToEntry.js.map +1 -0
- package/plugins/cms/triggerContentReview.d.ts +8 -0
- package/plugins/cms/triggerContentReview.js +59 -0
- package/plugins/cms/triggerContentReview.js.map +1 -0
- package/plugins/cms/updateContentReviewStatus.d.ts +10 -0
- package/plugins/cms/updateContentReviewStatus.js +101 -0
- package/plugins/cms/updateContentReviewStatus.js.map +1 -0
- package/plugins/cms/utils.d.ts +27 -0
- package/plugins/cms/utils.js +211 -0
- package/plugins/cms/utils.js.map +1 -0
- package/plugins/context.d.ts +3 -2
- package/plugins/context.js +82 -49
- package/plugins/context.js.map +1 -1
- package/plugins/graphql/changeRequest.gql.js +1 -1
- package/plugins/graphql/changeRequest.gql.js.map +1 -1
- package/plugins/graphql/comment.gql.js +8 -17
- package/plugins/graphql/comment.gql.js.map +1 -1
- package/plugins/graphql/contentReview.gql.js +168 -13
- package/plugins/graphql/contentReview.gql.js.map +1 -1
- package/plugins/graphql/reviewer.gql.js +1 -1
- package/plugins/graphql/reviewer.gql.js.map +1 -1
- package/plugins/graphql/workflow.gql.js +18 -15
- package/plugins/graphql/workflow.gql.js.map +1 -1
- package/plugins/graphql.d.ts +3 -2
- package/plugins/graphql.js +11 -1
- package/plugins/graphql.js.map +1 -1
- package/plugins/hooks/createReviewerFromIdentity.js +18 -0
- package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +8 -8
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js +6 -6
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
- package/plugins/hooks/index.d.ts +1 -2
- package/plugins/hooks/index.js +25 -25
- package/plugins/hooks/index.js.map +1 -1
- package/plugins/hooks/initializeContentReviewSteps.d.ts +2 -7
- package/plugins/hooks/initializeContentReviewSteps.js +42 -24
- package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
- package/plugins/hooks/updatePendingChangeRequests.js +27 -39
- package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
- package/plugins/hooks/updateTotalComments.d.ts +3 -0
- package/plugins/hooks/updateTotalComments.js +157 -0
- package/plugins/hooks/updateTotalComments.js.map +1 -0
- package/plugins/hooks/validateChangeRequest.d.ts +2 -0
- package/plugins/hooks/validateChangeRequest.js +64 -0
- package/plugins/hooks/validateChangeRequest.js.map +1 -0
- package/plugins/hooks/validateComment.d.ts +2 -0
- package/plugins/hooks/validateComment.js +45 -0
- package/plugins/hooks/validateComment.js.map +1 -0
- package/plugins/hooks/validateContentReview.d.ts +2 -0
- package/plugins/hooks/validateContentReview.js +38 -0
- package/plugins/hooks/validateContentReview.js.map +1 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.d.ts +9 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +51 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -0
- package/plugins/pageBuilder/apwContentPagePlugins.d.ts +3 -0
- package/plugins/pageBuilder/apwContentPagePlugins.js +30 -0
- package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -0
- package/plugins/{hooks/extendPbPageSchema.d.ts → pageBuilder/extendPbPageSettingsSchema.d.ts} +1 -2
- package/plugins/{hooks/extendPbPageSchema.js → pageBuilder/extendPbPageSettingsSchema.js} +4 -3
- package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -0
- package/plugins/pageBuilder/index.d.ts +11 -0
- package/plugins/pageBuilder/index.js +45 -0
- package/plugins/pageBuilder/index.js.map +1 -0
- package/plugins/pageBuilder/linkContentReviewToPage.d.ts +8 -0
- package/plugins/pageBuilder/linkContentReviewToPage.js +93 -0
- package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -0
- package/plugins/pageBuilder/linkWorkflowToPage.d.ts +8 -0
- package/plugins/pageBuilder/linkWorkflowToPage.js +182 -0
- package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -0
- package/plugins/pageBuilder/triggerContentReview.d.ts +8 -0
- package/plugins/pageBuilder/triggerContentReview.js +50 -0
- package/plugins/pageBuilder/triggerContentReview.js.map +1 -0
- package/plugins/pageBuilder/updateContentReviewStatus.d.ts +10 -0
- package/plugins/pageBuilder/updateContentReviewStatus.js +83 -0
- package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -0
- package/plugins/pageBuilder/utils.d.ts +22 -0
- package/plugins/pageBuilder/utils.js +184 -0
- package/plugins/pageBuilder/utils.js.map +1 -0
- package/plugins/utils.d.ts +22 -2
- package/plugins/utils.js +128 -2
- package/plugins/utils.js.map +1 -1
- package/scheduler/createScheduleActionMethods.d.ts +2 -0
- package/scheduler/createScheduleActionMethods.js +146 -0
- package/scheduler/createScheduleActionMethods.js.map +1 -0
- package/scheduler/handlers/executeAction/index.d.ts +16 -0
- package/scheduler/handlers/executeAction/index.js +148 -0
- package/scheduler/handlers/executeAction/index.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.d.ts +13 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +17 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.d.ts +11 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +126 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.d.ts +11 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +163 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/security.d.ts +4 -0
- package/scheduler/handlers/executeAction/security.js +68 -0
- package/scheduler/handlers/executeAction/security.js.map +1 -0
- package/scheduler/handlers/scheduleAction/index.d.ts +22 -0
- package/scheduler/handlers/scheduleAction/index.js +162 -0
- package/scheduler/handlers/scheduleAction/index.js.map +1 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.d.ts +24 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +176 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -0
- package/scheduler/handlers/utils.d.ts +33 -0
- package/scheduler/handlers/utils.js +168 -0
- package/scheduler/handlers/utils.js.map +1 -0
- package/scheduler/index.d.ts +2 -0
- package/scheduler/index.js +27 -0
- package/scheduler/index.js.map +1 -0
- package/scheduler/types.d.ts +171 -0
- package/scheduler/types.js +34 -0
- package/scheduler/types.js.map +1 -0
- package/storageOperations/changeRequestStorageOperations.js +1 -3
- package/storageOperations/changeRequestStorageOperations.js.map +1 -1
- package/storageOperations/commentStorageOperations.js +25 -11
- package/storageOperations/commentStorageOperations.js.map +1 -1
- package/storageOperations/contentReviewStorageOperations.js +1 -3
- package/storageOperations/contentReviewStorageOperations.js.map +1 -1
- package/storageOperations/index.js.map +1 -1
- package/storageOperations/models/changeRequest.model.d.ts +1 -0
- package/storageOperations/models/changeRequest.model.js +10 -5
- package/storageOperations/models/changeRequest.model.js.map +1 -1
- package/storageOperations/models/comment.model.d.ts +1 -0
- package/storageOperations/models/comment.model.js +24 -3
- package/storageOperations/models/comment.model.js.map +1 -1
- package/storageOperations/models/contentModelPluginFactory.d.ts +2 -2
- package/storageOperations/models/contentModelPluginFactory.js +2 -2
- package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
- package/storageOperations/models/contentReview.model.d.ts +1 -0
- package/storageOperations/models/contentReview.model.js +98 -26
- package/storageOperations/models/contentReview.model.js.map +1 -1
- package/storageOperations/models/index.js +25 -5
- package/storageOperations/models/index.js.map +1 -1
- package/storageOperations/models/reviewer.model.d.ts +1 -0
- package/storageOperations/models/reviewer.model.js +11 -6
- package/storageOperations/models/reviewer.model.js.map +1 -1
- package/storageOperations/models/utils.js.map +1 -1
- package/storageOperations/models/workflow.model.d.ts +2 -1
- package/storageOperations/models/workflow.model.js +32 -30
- package/storageOperations/models/workflow.model.js.map +1 -1
- package/storageOperations/reviewerStorageOperations.js +1 -3
- package/storageOperations/reviewerStorageOperations.js.map +1 -1
- package/storageOperations/types.js.map +1 -1
- package/storageOperations/workflowStorageOperations.js +21 -7
- package/storageOperations/workflowStorageOperations.js.map +1 -1
- package/types.d.ts +138 -49
- package/types.js +9 -3
- package/types.js.map +1 -1
- package/utils/contentApwSettingsPlugin.d.ts +9 -0
- package/utils/contentApwSettingsPlugin.js +26 -0
- package/utils/contentApwSettingsPlugin.js.map +1 -0
- package/utils/errors.js.map +1 -1
- package/utils/fieldResolver.js +2 -2
- package/utils/fieldResolver.js.map +1 -1
- package/utils/resolve.js.map +1 -1
- package/createApw/createChangeRequestMethods.js.map +0 -1
- package/createApw/createCommentMethods.js.map +0 -1
- package/createApw/createContentReviewMethods.d.ts +0 -6
- package/createApw/createContentReviewMethods.js.map +0 -1
- package/createApw/createReviewerMethods.js.map +0 -1
- package/createApw/createWorkflowMethods.js.map +0 -1
- package/createApw/index.js.map +0 -1
- package/plugins/createManageCMSPlugin.d.ts +0 -2
- package/plugins/createManageCMSPlugin.js +0 -31
- package/plugins/createManageCMSPlugin.js.map +0 -1
- package/plugins/hooks/extendPbPageSchema.js.map +0 -1
- package/plugins/hooks/linkWorkflowToPage.d.ts +0 -9
- package/plugins/hooks/linkWorkflowToPage.js +0 -155
- 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
|
-
|
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
|
-
|
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:
|
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
|
-
|
162
|
-
|
163
|
-
|
190
|
+
type ApwIsReviewRequiredData {
|
191
|
+
isReviewRequired: Boolean
|
192
|
+
contentReviewId: ID
|
164
193
|
}
|
165
194
|
|
166
|
-
type
|
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
|
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
|
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,"
|
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
|
-
|
47
|
-
type: ApwWorkflowStepTypes
|
48
|
-
reviewers: [
|
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: [
|
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: [
|
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,"
|
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"}
|
package/plugins/graphql.d.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
-
import {
|
2
|
-
|
1
|
+
import { ContextPlugin } from "@webiny/handler";
|
2
|
+
import { ApwContext } from "../types";
|
3
|
+
declare const _default: () => ContextPlugin<ApwContext>;
|
3
4
|
export default _default;
|
package/plugins/graphql.js
CHANGED
@@ -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 = () =>
|
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;
|
package/plugins/graphql.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
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,"
|
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
|
-
|
24
|
+
id: stepId
|
25
25
|
} = steps[i];
|
26
26
|
let meta = {
|
27
|
-
|
28
|
-
cursor: null
|
27
|
+
totalCount: 1
|
29
28
|
};
|
30
29
|
/**
|
31
30
|
* Paginate through change requests.
|
32
31
|
*/
|
33
32
|
|
34
|
-
while (meta.
|
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}#${
|
44
|
-
}
|
45
|
-
after: meta.cursor
|
42
|
+
step: `${contentReview.id}#${stepId}`
|
43
|
+
}
|
46
44
|
});
|
47
45
|
} catch (e) {
|
48
|
-
meta.
|
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.
|