@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
@@ -0,0 +1,211 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.updateEntryMeta = exports.isAwpModel = exports.hasEntries = exports.getLatestEntryRevision = exports.getEntryTitle = exports.fetchModel = exports.assignWorkflowToEntry = void 0;
|
9
|
+
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11
|
+
|
12
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
13
|
+
|
14
|
+
var _types = require("../../types");
|
15
|
+
|
16
|
+
var _utils = require("../utils");
|
17
|
+
|
18
|
+
var _changeRequest = require("../../storageOperations/models/changeRequest.model");
|
19
|
+
|
20
|
+
var _comment = require("../../storageOperations/models/comment.model");
|
21
|
+
|
22
|
+
var _contentReview = require("../../storageOperations/models/contentReview.model");
|
23
|
+
|
24
|
+
var _reviewer = require("../../storageOperations/models/reviewer.model");
|
25
|
+
|
26
|
+
var _workflow = require("../../storageOperations/models/workflow.model");
|
27
|
+
|
28
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
29
|
+
|
30
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
31
|
+
|
32
|
+
const fetchModel = async (cms, id, settings) => {
|
33
|
+
if (!settings) {
|
34
|
+
throw new _error.default("Missing settings.", "SETTINGS_ERROR", {
|
35
|
+
id
|
36
|
+
});
|
37
|
+
}
|
38
|
+
|
39
|
+
const modelId = settings.modelId;
|
40
|
+
|
41
|
+
if (!modelId) {
|
42
|
+
throw new _error.default("Missing modelId in settings.", "MODEL_ID_ERROR", {
|
43
|
+
id,
|
44
|
+
settings
|
45
|
+
});
|
46
|
+
}
|
47
|
+
|
48
|
+
const model = await cms.getModel(modelId);
|
49
|
+
|
50
|
+
if (model) {
|
51
|
+
return model;
|
52
|
+
}
|
53
|
+
|
54
|
+
throw new _error.default("There is no requested model in the system.", "MODEL_NOT_EXISTS", {
|
55
|
+
id,
|
56
|
+
settings
|
57
|
+
});
|
58
|
+
};
|
59
|
+
|
60
|
+
exports.fetchModel = fetchModel;
|
61
|
+
|
62
|
+
const getEntryTitle = (model, entry) => {
|
63
|
+
const titleFieldId = model.titleFieldId;
|
64
|
+
|
65
|
+
if (!titleFieldId || !entry.values[titleFieldId]) {
|
66
|
+
return entry.id;
|
67
|
+
}
|
68
|
+
|
69
|
+
return entry.values[titleFieldId];
|
70
|
+
};
|
71
|
+
|
72
|
+
exports.getEntryTitle = getEntryTitle;
|
73
|
+
|
74
|
+
const getLatestEntryRevision = async params => {
|
75
|
+
const {
|
76
|
+
cms,
|
77
|
+
model,
|
78
|
+
entryId
|
79
|
+
} = params;
|
80
|
+
const items = await cms.getLatestEntriesByIds(model, [entryId]);
|
81
|
+
const item = items.shift();
|
82
|
+
|
83
|
+
if (!item) {
|
84
|
+
throw new _error.default("There is no entry with given ID.", "ENTRY_NOT_FOUND", {
|
85
|
+
entryId
|
86
|
+
});
|
87
|
+
}
|
88
|
+
|
89
|
+
return item;
|
90
|
+
};
|
91
|
+
|
92
|
+
exports.getLatestEntryRevision = getLatestEntryRevision;
|
93
|
+
|
94
|
+
const updateEntryMeta = async params => {
|
95
|
+
const {
|
96
|
+
entryId,
|
97
|
+
cms,
|
98
|
+
model,
|
99
|
+
meta
|
100
|
+
} = params;
|
101
|
+
const entry = await getLatestEntryRevision({
|
102
|
+
cms,
|
103
|
+
model,
|
104
|
+
entryId
|
105
|
+
});
|
106
|
+
await cms.updateEntry(model, entry.id, {}, meta);
|
107
|
+
};
|
108
|
+
|
109
|
+
exports.updateEntryMeta = updateEntryMeta;
|
110
|
+
|
111
|
+
const isWorkflowApplicable = (entry, workflow) => {
|
112
|
+
const application = workflow.app;
|
113
|
+
|
114
|
+
if (application !== _types.ApwWorkflowApplications.CMS) {
|
115
|
+
return false;
|
116
|
+
}
|
117
|
+
|
118
|
+
const scopeType = workflow.scope.type;
|
119
|
+
|
120
|
+
if (scopeType === _types.WorkflowScopeTypes.DEFAULT) {
|
121
|
+
return true;
|
122
|
+
} else if (scopeType === _types.WorkflowScopeTypes.CUSTOM) {
|
123
|
+
var _workflow$scope$data, _workflow$scope$data2;
|
124
|
+
|
125
|
+
const models = (_workflow$scope$data = workflow.scope.data) === null || _workflow$scope$data === void 0 ? void 0 : _workflow$scope$data.models;
|
126
|
+
|
127
|
+
if (Array.isArray(models) && models.includes(entry.modelId)) {
|
128
|
+
return true;
|
129
|
+
}
|
130
|
+
|
131
|
+
const entries = ((_workflow$scope$data2 = workflow.scope.data) === null || _workflow$scope$data2 === void 0 ? void 0 : _workflow$scope$data2.entries) || [];
|
132
|
+
|
133
|
+
if (Array.isArray(entries) && entries.some(value => value.id === entry.entryId)) {
|
134
|
+
return true;
|
135
|
+
}
|
136
|
+
|
137
|
+
return false;
|
138
|
+
}
|
139
|
+
|
140
|
+
throw new _error.default(`Unknown scope type "${scopeType}".`, "UNKNOWN_SCOPE_TYPE", {
|
141
|
+
workflow
|
142
|
+
});
|
143
|
+
};
|
144
|
+
|
145
|
+
const assignWorkflowToEntry = async params => {
|
146
|
+
const {
|
147
|
+
apw,
|
148
|
+
entry
|
149
|
+
} = params;
|
150
|
+
/**
|
151
|
+
* Lookup and assign "workflowId".
|
152
|
+
*/
|
153
|
+
|
154
|
+
try {
|
155
|
+
/*
|
156
|
+
* List all workflows for app pageBuilder
|
157
|
+
*/
|
158
|
+
const [entries] = await apw.workflow.list({
|
159
|
+
where: {
|
160
|
+
app: _types.ApwWorkflowApplications.CMS
|
161
|
+
}
|
162
|
+
});
|
163
|
+
console.log(`Found ${entries.length} workflows.`);
|
164
|
+
/*
|
165
|
+
* Re-order them based on workflow scope and pre-defined rule i.e.
|
166
|
+
* "specific" entry -> entry for a "category" -> "default".
|
167
|
+
* There can be more than one workflow with same "scope" and "app".
|
168
|
+
* Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.
|
169
|
+
*/
|
170
|
+
|
171
|
+
const sortedWorkflows = entries.sort(_utils.workflowByPrecedenceDesc).sort(_utils.workflowByCreatedOnDesc);
|
172
|
+
/**
|
173
|
+
* Assign the first applicable workflow to the page and exit.
|
174
|
+
*/
|
175
|
+
|
176
|
+
for (const workflow of sortedWorkflows) {
|
177
|
+
if (isWorkflowApplicable(entry, workflow) === false) {
|
178
|
+
console.log(`Not applying workflow ${workflow.id} to entry ${entry.id}.`);
|
179
|
+
continue;
|
180
|
+
}
|
181
|
+
|
182
|
+
entry.meta = _objectSpread(_objectSpread({}, entry.meta || {}), {}, {
|
183
|
+
apw: {
|
184
|
+
workflowId: workflow.id,
|
185
|
+
contentReviewId: null
|
186
|
+
}
|
187
|
+
});
|
188
|
+
return;
|
189
|
+
}
|
190
|
+
} catch (ex) {
|
191
|
+
throw new _error.default(`Failed to assign workflow to CMS entry "${entry.id}".`, ex.code, ex.data);
|
192
|
+
}
|
193
|
+
};
|
194
|
+
|
195
|
+
exports.assignWorkflowToEntry = assignWorkflowToEntry;
|
196
|
+
|
197
|
+
const hasEntries = workflow => {
|
198
|
+
const {
|
199
|
+
app,
|
200
|
+
scope
|
201
|
+
} = workflow;
|
202
|
+
return app === _types.ApwWorkflowApplications.CMS && scope.type === _types.WorkflowScopeTypes.CUSTOM && scope.data && Array.isArray(scope.data.entries);
|
203
|
+
};
|
204
|
+
|
205
|
+
exports.hasEntries = hasEntries;
|
206
|
+
|
207
|
+
const isAwpModel = model => {
|
208
|
+
return [_changeRequest.CHANGE_REQUEST_MODEL_ID, _comment.COMMENT_MODEL_ID, _contentReview.CONTENT_REVIEW_MODEL_ID, _reviewer.REVIEWER_MODEL_ID, _workflow.WORKFLOW_MODEL_ID].includes(model.modelId);
|
209
|
+
};
|
210
|
+
|
211
|
+
exports.isAwpModel = isAwpModel;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["fetchModel","cms","id","settings","WebinyError","modelId","model","getModel","getEntryTitle","entry","titleFieldId","values","getLatestEntryRevision","params","entryId","items","getLatestEntriesByIds","item","shift","updateEntryMeta","meta","updateEntry","isWorkflowApplicable","workflow","application","app","ApwWorkflowApplications","CMS","scopeType","scope","type","WorkflowScopeTypes","DEFAULT","CUSTOM","models","data","Array","isArray","includes","entries","some","value","assignWorkflowToEntry","apw","list","where","console","log","length","sortedWorkflows","sort","workflowByPrecedenceDesc","workflowByCreatedOnDesc","workflowId","contentReviewId","ex","code","hasEntries","isAwpModel","CHANGE_REQUEST_MODEL_ID","COMMENT_MODEL_ID","CONTENT_REVIEW_MODEL_ID","REVIEWER_MODEL_ID","WORKFLOW_MODEL_ID"],"sources":["utils.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport {\n AdvancedPublishingWorkflow,\n ApwWorkflow,\n ApwWorkflowApplications,\n WorkflowScopeTypes\n} from \"~/types\";\nimport { workflowByCreatedOnDesc, workflowByPrecedenceDesc } from \"~/plugins/utils\";\nimport { CHANGE_REQUEST_MODEL_ID } from \"~/storageOperations/models/changeRequest.model\";\nimport { COMMENT_MODEL_ID } from \"~/storageOperations/models/comment.model\";\nimport { CONTENT_REVIEW_MODEL_ID } from \"~/storageOperations/models/contentReview.model\";\nimport { REVIEWER_MODEL_ID } from \"~/storageOperations/models/reviewer.model\";\nimport { WORKFLOW_MODEL_ID } from \"~/storageOperations/models/workflow.model\";\n\nexport const fetchModel = async (\n cms: HeadlessCms,\n id: string,\n settings?: { modelId?: string } | null\n): Promise<CmsModel> => {\n if (!settings) {\n throw new WebinyError(\"Missing settings.\", \"SETTINGS_ERROR\", {\n id\n });\n }\n const modelId = settings.modelId;\n if (!modelId) {\n throw new WebinyError(\"Missing modelId in settings.\", \"MODEL_ID_ERROR\", {\n id,\n settings\n });\n }\n const model = await cms.getModel(modelId);\n if (model) {\n return model;\n }\n throw new WebinyError(\"There is no requested model in the system.\", \"MODEL_NOT_EXISTS\", {\n id,\n settings\n });\n};\n\nexport const getEntryTitle = (model: CmsModel, entry: CmsEntry): string => {\n const titleFieldId = model.titleFieldId;\n if (!titleFieldId || !entry.values[titleFieldId]) {\n return entry.id;\n }\n return entry.values[titleFieldId];\n};\n\ninterface GetLatestEntryRevisionParams {\n cms: HeadlessCms;\n model: CmsModel;\n entryId: string;\n}\nexport const getLatestEntryRevision = async (\n params: GetLatestEntryRevisionParams\n): Promise<CmsEntry> => {\n const { cms, model, entryId } = params;\n const items = await cms.getLatestEntriesByIds(model, [entryId]);\n\n const item = items.shift();\n if (!item) {\n throw new WebinyError(\"There is no entry with given ID.\", \"ENTRY_NOT_FOUND\", {\n entryId\n });\n }\n return item;\n};\n\ninterface UpdateEntryMetaParams {\n meta: Record<string, any>;\n entryId: string;\n cms: HeadlessCms;\n model: CmsModel;\n}\nexport const updateEntryMeta = async (params: UpdateEntryMetaParams): Promise<void> => {\n const { entryId, cms, model, meta } = params;\n\n const entry = await getLatestEntryRevision({\n cms,\n model,\n entryId\n });\n\n await cms.updateEntry(model, entry.id, {}, meta);\n};\n\nconst isWorkflowApplicable = (entry: CmsEntry, workflow: ApwWorkflow): boolean => {\n const application = workflow.app;\n if (application !== ApwWorkflowApplications.CMS) {\n return false;\n }\n\n const scopeType = workflow.scope.type;\n\n if (scopeType === WorkflowScopeTypes.DEFAULT) {\n return true;\n } else if (scopeType === WorkflowScopeTypes.CUSTOM) {\n const models = workflow.scope.data?.models;\n\n if (Array.isArray(models) && models.includes(entry.modelId)) {\n return true;\n }\n\n const entries = workflow.scope.data?.entries || [];\n if (Array.isArray(entries) && entries.some(value => value.id === entry.entryId)) {\n return true;\n }\n return false;\n }\n throw new WebinyError(`Unknown scope type \"${scopeType}\".`, \"UNKNOWN_SCOPE_TYPE\", {\n workflow\n });\n};\n\ninterface AssignWorkflowToEntryParams {\n apw: AdvancedPublishingWorkflow;\n entry: CmsEntry;\n}\nexport const assignWorkflowToEntry = async (params: AssignWorkflowToEntryParams): Promise<void> => {\n const { apw, entry } = params;\n /**\n * Lookup and assign \"workflowId\".\n */\n try {\n /*\n * List all workflows for app pageBuilder\n */\n const [entries] = await apw.workflow.list({\n where: {\n app: ApwWorkflowApplications.CMS\n }\n });\n\n console.log(`Found ${entries.length} workflows.`);\n\n /*\n * Re-order them based on workflow scope and pre-defined rule i.e.\n * \"specific\" entry -> entry for a \"category\" -> \"default\".\n * There can be more than one workflow with same \"scope\" and \"app\".\n * Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.\n */\n const sortedWorkflows = entries\n .sort(workflowByPrecedenceDesc)\n .sort(workflowByCreatedOnDesc);\n\n /**\n * Assign the first applicable workflow to the page and exit.\n */\n for (const workflow of sortedWorkflows) {\n if (isWorkflowApplicable(entry, workflow) === false) {\n console.log(`Not applying workflow ${workflow.id} to entry ${entry.id}.`);\n continue;\n }\n entry.meta = {\n ...(entry.meta || {}),\n apw: {\n workflowId: workflow.id,\n contentReviewId: null\n }\n };\n return;\n }\n } catch (ex) {\n throw new WebinyError(\n `Failed to assign workflow to CMS entry \"${entry.id}\".`,\n ex.code,\n ex.data\n );\n }\n};\n\nexport const hasEntries = (workflow: ApwWorkflow): Boolean => {\n const { app, scope } = workflow;\n return (\n app === ApwWorkflowApplications.CMS &&\n scope.type === WorkflowScopeTypes.CUSTOM &&\n scope.data &&\n Array.isArray(scope.data.entries)\n );\n};\n\nexport const isAwpModel = (model: CmsModel): boolean => {\n return [\n CHANGE_REQUEST_MODEL_ID,\n COMMENT_MODEL_ID,\n CONTENT_REVIEW_MODEL_ID,\n REVIEWER_MODEL_ID,\n WORKFLOW_MODEL_ID\n ].includes(model.modelId);\n};\n"],"mappings":"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"}
|
package/plugins/context.d.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { ContextPlugin } from "@webiny/handler/plugins/ContextPlugin";
|
2
2
|
import { ApwContext } from "../types";
|
3
|
-
|
4
|
-
export
|
3
|
+
import { CreateApwContextParams } from "../scheduler/types";
|
4
|
+
export declare const createApwPageBuilderContext: (params: CreateApwContextParams) => ContextPlugin<ApwContext>;
|
5
|
+
export declare const createApwHeadlessCmsContext: (params: CreateApwContextParams) => ContextPlugin<ApwContext>;
|
package/plugins/context.js
CHANGED
@@ -5,46 +5,55 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
6
6
|
value: true
|
7
7
|
});
|
8
|
-
exports.
|
8
|
+
exports.createApwPageBuilderContext = exports.createApwHeadlessCmsContext = void 0;
|
9
9
|
|
10
|
-
var _hooks =
|
10
|
+
var _hooks = require("./hooks");
|
11
11
|
|
12
12
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
13
13
|
|
14
14
|
var _ContextPlugin = require("@webiny/handler/plugins/ContextPlugin");
|
15
15
|
|
16
|
-
var
|
16
|
+
var _crud = require("../crud");
|
17
17
|
|
18
|
-
var
|
18
|
+
var _pageBuilder = require("./pageBuilder");
|
19
19
|
|
20
20
|
var _storageOperations = require("../storageOperations");
|
21
21
|
|
22
|
-
var
|
22
|
+
var _scheduler = require("../scheduler");
|
23
23
|
|
24
|
-
var
|
24
|
+
var _security = require("../scheduler/handlers/executeAction/security");
|
25
25
|
|
26
|
-
var
|
26
|
+
var _utils = require("./utils");
|
27
|
+
|
28
|
+
var _extendPbPageSettingsSchema = require("./pageBuilder/extendPbPageSettingsSchema");
|
29
|
+
|
30
|
+
var _apwContentPagePlugins = require("./pageBuilder/apwContentPagePlugins");
|
31
|
+
|
32
|
+
var _cms = require("./cms");
|
33
|
+
|
34
|
+
const setupApwContext = params => new _ContextPlugin.ContextPlugin(async context => {
|
27
35
|
const {
|
28
36
|
tenancy,
|
29
37
|
security,
|
30
|
-
|
38
|
+
i18n,
|
39
|
+
handlerClient
|
31
40
|
} = context;
|
32
|
-
const contentHeadlessCmsContextPlugins = (0, _apiHeadlessCms.createContentHeadlessCmsContext)({
|
33
|
-
storageOperations: context.cms.storageOperations
|
34
|
-
});
|
35
|
-
/**
|
36
|
-
* Register cms plugins required by `api-apw` package.
|
37
|
-
*/
|
38
41
|
|
39
|
-
|
42
|
+
if ((0, _utils.isInstallationPending)({
|
43
|
+
tenancy,
|
44
|
+
i18n
|
45
|
+
})) {
|
46
|
+
return;
|
47
|
+
}
|
40
48
|
|
41
49
|
const getLocale = () => {
|
42
|
-
|
43
|
-
throw new _error.default("Missing context.i18nContent.locale in api-apw/plugins/context.ts", "LOCALE_ERROR");
|
44
|
-
} // TODO: Check which locale do we need here?
|
50
|
+
const locale = i18n.getContentLocale();
|
45
51
|
|
52
|
+
if (!locale) {
|
53
|
+
throw new _error.default("Missing content locale in api-apw/plugins/context.ts", "LOCALE_ERROR");
|
54
|
+
}
|
46
55
|
|
47
|
-
return
|
56
|
+
return locale;
|
48
57
|
};
|
49
58
|
|
50
59
|
const getTenant = () => {
|
@@ -57,14 +66,21 @@ var _default = () => [new _ContextPlugin.ContextPlugin(async context => {
|
|
57
66
|
|
58
67
|
const getIdentity = () => security.getIdentity();
|
59
68
|
|
60
|
-
|
69
|
+
const scheduler = (0, _scheduler.createScheduler)({
|
70
|
+
getLocale,
|
71
|
+
getIdentity,
|
72
|
+
getTenant,
|
73
|
+
getPermission,
|
74
|
+
storageOperations: params.storageOperations
|
75
|
+
});
|
76
|
+
context.apw = (0, _crud.createApw)({
|
61
77
|
getLocale,
|
62
78
|
getIdentity,
|
63
79
|
getTenant,
|
64
80
|
getPermission,
|
65
81
|
storageOperations: (0, _storageOperations.createStorageOperations)({
|
66
82
|
/**
|
67
|
-
* TODO: We need to figure out a way to pass "cms" from outside (e.g. api/
|
83
|
+
* TODO: We need to figure out a way to pass "cms" from outside (e.g. apps/api/graphql)
|
68
84
|
*/
|
69
85
|
cms: context.cms,
|
70
86
|
|
@@ -72,41 +88,58 @@ var _default = () => [new _ContextPlugin.ContextPlugin(async context => {
|
|
72
88
|
* TODO: This is required for "entryFieldFromStorageTransform" which access plugins from context.
|
73
89
|
*/
|
74
90
|
getCmsContext: () => context
|
75
|
-
})
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
* Move these call into a separate package let say "ap-apw-page-builder"
|
80
|
-
*/
|
81
|
-
|
82
|
-
context.apw.addWorkflowGetter(_types.ApwContentTypes.PAGE, async id => {
|
83
|
-
const page = await context.pageBuilder.getPage(id);
|
84
|
-
return page.settings.apw.workflowId;
|
91
|
+
}),
|
92
|
+
scheduler,
|
93
|
+
handlerClient,
|
94
|
+
plugins: context.plugins
|
85
95
|
});
|
86
|
-
|
87
|
-
if (!settings.modelId) {
|
88
|
-
return null;
|
89
|
-
}
|
96
|
+
});
|
90
97
|
|
91
|
-
|
98
|
+
const setupApwPageBuilder = () => {
|
99
|
+
return new _ContextPlugin.ContextPlugin(async context => {
|
100
|
+
(0, _pageBuilder.apwPageBuilderHooks)(context);
|
101
|
+
});
|
102
|
+
};
|
92
103
|
|
93
|
-
|
94
|
-
|
104
|
+
const setupApwHeadlessCms = () => {
|
105
|
+
return new _ContextPlugin.ContextPlugin(async context => {
|
106
|
+
(0, _cms.apwCmsHooks)(context);
|
107
|
+
});
|
108
|
+
};
|
109
|
+
|
110
|
+
const createApwPageBuilderContext = params => {
|
111
|
+
return new _ContextPlugin.ContextPlugin(async context => {
|
112
|
+
if (!context.wcp.canUseFeature("advancedPublishingWorkflow")) {
|
113
|
+
return;
|
114
|
+
} else if ((0, _utils.isInstallationPending)(context)) {
|
115
|
+
return;
|
95
116
|
}
|
96
117
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
118
|
+
await setupApwContext(params).apply(context);
|
119
|
+
await setupApwPageBuilder().apply(context);
|
120
|
+
await setupApwHeadlessCms().apply(context);
|
121
|
+
await (0, _apwContentPagePlugins.apwContentPagePlugins)().apply(context);
|
122
|
+
await (0, _hooks.attachApwHooks)().apply(context);
|
123
|
+
await (0, _security.createCustomAuth)(params).apply(context);
|
124
|
+
context.plugins.register((0, _extendPbPageSettingsSchema.extendPbPageSettingsSchema)());
|
125
|
+
});
|
126
|
+
};
|
127
|
+
|
128
|
+
exports.createApwPageBuilderContext = createApwPageBuilderContext;
|
103
129
|
|
104
|
-
|
105
|
-
|
130
|
+
const createApwHeadlessCmsContext = params => {
|
131
|
+
return new _ContextPlugin.ContextPlugin(async context => {
|
132
|
+
if (!context.wcp.canUseFeature("advancedPublishingWorkflow")) {
|
133
|
+
return;
|
134
|
+
} else if ((0, _utils.isInstallationPending)(context)) {
|
135
|
+
return;
|
106
136
|
}
|
107
137
|
|
108
|
-
|
138
|
+
await setupApwContext(params).apply(context);
|
139
|
+
await setupApwHeadlessCms().apply(context);
|
140
|
+
await (0, _hooks.attachApwHooks)().apply(context);
|
141
|
+
await (0, _security.createCustomAuth)(params).apply(context);
|
109
142
|
});
|
110
|
-
}
|
143
|
+
};
|
111
144
|
|
112
|
-
exports.
|
145
|
+
exports.createApwHeadlessCmsContext = createApwHeadlessCmsContext;
|
package/plugins/context.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["setupApwContext","params","ContextPlugin","context","tenancy","security","i18n","handlerClient","isInstallationPending","getLocale","locale","getContentLocale","WebinyError","getTenant","getCurrentTenant","getPermission","name","getIdentity","scheduler","createScheduler","storageOperations","apw","createApw","createStorageOperations","cms","getCmsContext","plugins","setupApwPageBuilder","apwPageBuilderHooks","setupApwHeadlessCms","apwCmsHooks","createApwPageBuilderContext","wcp","canUseFeature","apply","apwContentPagePlugins","attachApwHooks","createCustomAuth","register","extendPbPageSettingsSchema","createApwHeadlessCmsContext"],"sources":["context.ts"],"sourcesContent":["import { attachApwHooks } from \"./hooks\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/handler/plugins/ContextPlugin\";\nimport { ApwContext } from \"~/types\";\nimport { createApw } from \"~/crud\";\nimport { apwPageBuilderHooks } from \"./pageBuilder\";\nimport { createStorageOperations } from \"~/storageOperations\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { CreateApwContextParams } from \"~/scheduler/types\";\nimport { createScheduler } from \"~/scheduler\";\nimport { createCustomAuth } from \"~/scheduler/handlers/executeAction/security\";\nimport { isInstallationPending } from \"./utils\";\nimport { extendPbPageSettingsSchema } from \"~/plugins/pageBuilder/extendPbPageSettingsSchema\";\nimport { apwContentPagePlugins } from \"~/plugins/pageBuilder/apwContentPagePlugins\";\nimport { apwCmsHooks } from \"~/plugins/cms\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\n\nconst setupApwContext = (params: CreateApwContextParams) =>\n new ContextPlugin<ApwContext>(async context => {\n const { tenancy, security, i18n, handlerClient } = context;\n\n if (isInstallationPending({ tenancy, i18n })) {\n return;\n }\n\n const getLocale = (): I18NLocale => {\n const locale = i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing content locale in api-apw/plugins/context.ts\",\n \"LOCALE_ERROR\"\n );\n }\n\n return locale;\n };\n\n const getTenant = (): Tenant => {\n return tenancy.getCurrentTenant();\n };\n\n const getPermission = async (name: string): Promise<SecurityPermission | null> => {\n return security.getPermission(name);\n };\n const getIdentity = () => security.getIdentity();\n\n const scheduler = createScheduler({\n getLocale,\n getIdentity,\n getTenant,\n getPermission,\n storageOperations: params.storageOperations\n });\n\n context.apw = createApw({\n getLocale,\n getIdentity,\n getTenant,\n getPermission,\n storageOperations: createStorageOperations({\n /**\n * TODO: We need to figure out a way to pass \"cms\" from outside (e.g. apps/api/graphql)\n */\n cms: context.cms,\n /**\n * TODO: This is required for \"entryFieldFromStorageTransform\" which access plugins from context.\n */\n getCmsContext: () => context\n }),\n scheduler,\n handlerClient,\n plugins: context.plugins\n });\n });\n\nconst setupApwPageBuilder = () => {\n return new ContextPlugin<ApwContext>(async context => {\n apwPageBuilderHooks(context);\n });\n};\n\nconst setupApwHeadlessCms = () => {\n return new ContextPlugin<ApwContext>(async context => {\n apwCmsHooks(context);\n });\n};\n\nexport const createApwPageBuilderContext = (params: CreateApwContextParams) => {\n return new ContextPlugin<ApwContext>(async context => {\n if (!context.wcp.canUseFeature(\"advancedPublishingWorkflow\")) {\n return;\n } else if (isInstallationPending(context)) {\n return;\n }\n\n await setupApwContext(params).apply(context);\n await setupApwPageBuilder().apply(context);\n await setupApwHeadlessCms().apply(context);\n await apwContentPagePlugins().apply(context);\n await attachApwHooks().apply(context);\n await createCustomAuth(params).apply(context);\n\n context.plugins.register(extendPbPageSettingsSchema());\n });\n};\n\nexport const createApwHeadlessCmsContext = (params: CreateApwContextParams) => {\n return new ContextPlugin<ApwContext>(async context => {\n if (!context.wcp.canUseFeature(\"advancedPublishingWorkflow\")) {\n return;\n } else if (isInstallationPending(context)) {\n return;\n }\n\n await setupApwContext(params).apply(context);\n await setupApwHeadlessCms().apply(context);\n await attachApwHooks().apply(context);\n await createCustomAuth(params).apply(context);\n });\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA,MAAMA,eAAe,GAAIC,MAAD,IACpB,IAAIC,4BAAJ,CAA8B,MAAMC,OAAN,IAAiB;EAC3C,MAAM;IAAEC,OAAF;IAAWC,QAAX;IAAqBC,IAArB;IAA2BC;EAA3B,IAA6CJ,OAAnD;;EAEA,IAAI,IAAAK,4BAAA,EAAsB;IAAEJ,OAAF;IAAWE;EAAX,CAAtB,CAAJ,EAA8C;IAC1C;EACH;;EAED,MAAMG,SAAS,GAAG,MAAkB;IAChC,MAAMC,MAAM,GAAGJ,IAAI,CAACK,gBAAL,EAAf;;IACA,IAAI,CAACD,MAAL,EAAa;MACT,MAAM,IAAIE,cAAJ,CACF,sDADE,EAEF,cAFE,CAAN;IAIH;;IAED,OAAOF,MAAP;EACH,CAVD;;EAYA,MAAMG,SAAS,GAAG,MAAc;IAC5B,OAAOT,OAAO,CAACU,gBAAR,EAAP;EACH,CAFD;;EAIA,MAAMC,aAAa,GAAG,MAAOC,IAAP,IAA4D;IAC9E,OAAOX,QAAQ,CAACU,aAAT,CAAuBC,IAAvB,CAAP;EACH,CAFD;;EAGA,MAAMC,WAAW,GAAG,MAAMZ,QAAQ,CAACY,WAAT,EAA1B;;EAEA,MAAMC,SAAS,GAAG,IAAAC,0BAAA,EAAgB;IAC9BV,SAD8B;IAE9BQ,WAF8B;IAG9BJ,SAH8B;IAI9BE,aAJ8B;IAK9BK,iBAAiB,EAAEnB,MAAM,CAACmB;EALI,CAAhB,CAAlB;EAQAjB,OAAO,CAACkB,GAAR,GAAc,IAAAC,eAAA,EAAU;IACpBb,SADoB;IAEpBQ,WAFoB;IAGpBJ,SAHoB;IAIpBE,aAJoB;IAKpBK,iBAAiB,EAAE,IAAAG,0CAAA,EAAwB;MACvC;AAChB;AACA;MACgBC,GAAG,EAAErB,OAAO,CAACqB,GAJ0B;;MAKvC;AAChB;AACA;MACgBC,aAAa,EAAE,MAAMtB;IARkB,CAAxB,CALC;IAepBe,SAfoB;IAgBpBX,aAhBoB;IAiBpBmB,OAAO,EAAEvB,OAAO,CAACuB;EAjBG,CAAV,CAAd;AAmBH,CAvDD,CADJ;;AA0DA,MAAMC,mBAAmB,GAAG,MAAM;EAC9B,OAAO,IAAIzB,4BAAJ,CAA8B,MAAMC,OAAN,IAAiB;IAClD,IAAAyB,gCAAA,EAAoBzB,OAApB;EACH,CAFM,CAAP;AAGH,CAJD;;AAMA,MAAM0B,mBAAmB,GAAG,MAAM;EAC9B,OAAO,IAAI3B,4BAAJ,CAA8B,MAAMC,OAAN,IAAiB;IAClD,IAAA2B,gBAAA,EAAY3B,OAAZ;EACH,CAFM,CAAP;AAGH,CAJD;;AAMO,MAAM4B,2BAA2B,GAAI9B,MAAD,IAAoC;EAC3E,OAAO,IAAIC,4BAAJ,CAA8B,MAAMC,OAAN,IAAiB;IAClD,IAAI,CAACA,OAAO,CAAC6B,GAAR,CAAYC,aAAZ,CAA0B,4BAA1B,CAAL,EAA8D;MAC1D;IACH,CAFD,MAEO,IAAI,IAAAzB,4BAAA,EAAsBL,OAAtB,CAAJ,EAAoC;MACvC;IACH;;IAED,MAAMH,eAAe,CAACC,MAAD,CAAf,CAAwBiC,KAAxB,CAA8B/B,OAA9B,CAAN;IACA,MAAMwB,mBAAmB,GAAGO,KAAtB,CAA4B/B,OAA5B,CAAN;IACA,MAAM0B,mBAAmB,GAAGK,KAAtB,CAA4B/B,OAA5B,CAAN;IACA,MAAM,IAAAgC,4CAAA,IAAwBD,KAAxB,CAA8B/B,OAA9B,CAAN;IACA,MAAM,IAAAiC,qBAAA,IAAiBF,KAAjB,CAAuB/B,OAAvB,CAAN;IACA,MAAM,IAAAkC,0BAAA,EAAiBpC,MAAjB,EAAyBiC,KAAzB,CAA+B/B,OAA/B,CAAN;IAEAA,OAAO,CAACuB,OAAR,CAAgBY,QAAhB,CAAyB,IAAAC,sDAAA,GAAzB;EACH,CAfM,CAAP;AAgBH,CAjBM;;;;AAmBA,MAAMC,2BAA2B,GAAIvC,MAAD,IAAoC;EAC3E,OAAO,IAAIC,4BAAJ,CAA8B,MAAMC,OAAN,IAAiB;IAClD,IAAI,CAACA,OAAO,CAAC6B,GAAR,CAAYC,aAAZ,CAA0B,4BAA1B,CAAL,EAA8D;MAC1D;IACH,CAFD,MAEO,IAAI,IAAAzB,4BAAA,EAAsBL,OAAtB,CAAJ,EAAoC;MACvC;IACH;;IAED,MAAMH,eAAe,CAACC,MAAD,CAAf,CAAwBiC,KAAxB,CAA8B/B,OAA9B,CAAN;IACA,MAAM0B,mBAAmB,GAAGK,KAAtB,CAA4B/B,OAA5B,CAAN;IACA,MAAM,IAAAiC,qBAAA,IAAiBF,KAAjB,CAAuB/B,OAAvB,CAAN;IACA,MAAM,IAAAkC,0BAAA,EAAiBpC,MAAjB,EAAyBiC,KAAzB,CAA+B/B,OAA/B,CAAN;EACH,CAXM,CAAP;AAYH,CAbM"}
|
@@ -129,7 +129,7 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
129
129
|
listChangeRequests: async (_, args, context) => {
|
130
130
|
try {
|
131
131
|
/**
|
132
|
-
* We know that args is
|
132
|
+
* We know that args is ApwChangeRequestListParams.
|
133
133
|
*/
|
134
134
|
const [entries, meta] = await context.apw.changeRequest.list(args);
|
135
135
|
return new _handlerGraphql.ListResponse(entries, meta);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getChangeRequest","_","args","context","resolve","apw","changeRequest","get","id","listChangeRequests","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createChangeRequest","create","data","updateChangeRequest","update","deleteChangeRequest","delete"],"sources":["changeRequest.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwChangeRequestListParams, ApwContext } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwChangeRequestListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # ChangeRequest specific fields\n step: String!\n title: String!\n body: JSON!\n resolved: Boolean\n media: JSON\n }\n\n type ApwListChangeRequestsResponse {\n data: [ApwChangeRequestListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwChangeRequest {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # ChangeRequest specific fields\n step: String!\n title: String!\n body: JSON!\n resolved: Boolean\n media: JSON\n }\n\n type ApwChangeRequestResponse {\n data: ApwChangeRequest\n error: ApwError\n }\n\n type ApwDeleteChangeRequestResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListChangeRequestSort {\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 ApwCreateChangeRequestInput {\n step: String!\n title: String!\n body: JSON!\n resolved: Boolean\n media: JSON\n }\n\n input ApwUpdateChangeRequestInput {\n title: String\n body: JSON\n resolved: Boolean\n media: JSON\n }\n\n input ApwListChangeRequestWhereInput {\n id: ID\n step: String\n }\n\n input ApwListChangeRequestSearchInput {\n query: String\n }\n\n extend type ApwQuery {\n getChangeRequest(id: ID!): ApwChangeRequestResponse\n\n listChangeRequests(\n where: ApwListChangeRequestWhereInput\n limit: Int\n after: String\n sort: [ApwListChangeRequestSort!]\n search: ApwListChangeRequestSearchInput\n ): ApwListChangeRequestsResponse\n }\n\n extend type ApwMutation {\n createChangeRequest(data: ApwCreateChangeRequestInput!): ApwChangeRequestResponse\n\n updateChangeRequest(\n id: ID!\n data: ApwUpdateChangeRequestInput!\n ): ApwChangeRequestResponse\n\n deleteChangeRequest(id: ID!): ApwDeleteChangeRequestResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getChangeRequest: async (_, args: any, context) => {\n return resolve(() => context.apw.changeRequest.get(args.id));\n },\n listChangeRequests: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwChangeRequestListParams.\n */\n const [entries, meta] = await context.apw.changeRequest.list(\n args as unknown as ApwChangeRequestListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createChangeRequest: async (_, args: any, context) => {\n return resolve(() => context.apw.changeRequest.create(args.data));\n },\n updateChangeRequest: async (_, args: any, context) => {\n return resolve(() => context.apw.changeRequest.update(args.id, args.data));\n },\n deleteChangeRequest: async (_, args: any, context) => {\n return resolve(() => context.apw.changeRequest.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,KAzG2D;EA0GvDC,SAAS,EAAE;IACPC,QAAQ,EAAE;MACNC,gBAAgB,EAAE,OAAOC,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC/C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,aAAZ,CAA0BC,GAA1B,CAA8BL,IAAI,CAACM,EAAnC,CAAd,CAAP;MACH,CAHK;MAINC,kBAAkB,EAAE,OAAOR,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QACjD,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACO,OAAD,EAAUC,IAAV,IAAkB,MAAMR,OAAO,CAACE,GAAR,CAAYC,aAAZ,CAA0BM,IAA1B,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,CADH;IAmBPE,WAAW,EAAE;MACTC,mBAAmB,EAAE,OAAOhB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAClD,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,aAAZ,CAA0BY,MAA1B,CAAiChB,IAAI,CAACiB,IAAtC,CAAd,CAAP;MACH,CAHQ;MAITC,mBAAmB,EAAE,OAAOnB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAClD,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,aAAZ,CAA0Be,MAA1B,CAAiCnB,IAAI,CAACM,EAAtC,EAA0CN,IAAI,CAACiB,IAA/C,CAAd,CAAP;MACH,CANQ;MAOTG,mBAAmB,EAAE,OAAOrB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAClD,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,aAAZ,CAA0BiB,MAA1B,CAAiCrB,IAAI,CAACM,EAAtC,CAAd,CAAP;MACH;IATQ;EAnBN;AA1G4C,CAApC,CAAvB;eA2Ieb,c"}
|
@@ -25,7 +25,9 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
25
25
|
createdBy: ApwCreatedBy
|
26
26
|
# Comment specific fields
|
27
27
|
body: JSON
|
28
|
-
changeRequest:
|
28
|
+
changeRequest: ID
|
29
|
+
# TODO: Remove ApwRefField
|
30
|
+
media: JSON
|
29
31
|
}
|
30
32
|
|
31
33
|
type ApwListCommentsResponse {
|
@@ -42,7 +44,8 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
42
44
|
createdBy: ApwCreatedBy
|
43
45
|
# Comment specific fields
|
44
46
|
body: JSON
|
45
|
-
changeRequest:
|
47
|
+
changeRequest: ID
|
48
|
+
media: JSON
|
46
49
|
}
|
47
50
|
|
48
51
|
type ApwCommentResponse {
|
@@ -62,15 +65,12 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
62
65
|
savedOn_DESC
|
63
66
|
createdOn_ASC
|
64
67
|
createdOn_DESC
|
65
|
-
publishedOn_ASC
|
66
|
-
publishedOn_DESC
|
67
|
-
title_ASC
|
68
|
-
title_DESC
|
69
68
|
}
|
70
69
|
|
71
70
|
input ApwCreateCommentInput {
|
72
71
|
body: JSON!
|
73
|
-
changeRequest:
|
72
|
+
changeRequest: ID!
|
73
|
+
media: JSON
|
74
74
|
}
|
75
75
|
|
76
76
|
input ApwUpdateCommentInput {
|
@@ -82,10 +82,6 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
82
82
|
id_not: ID
|
83
83
|
id_in: [ID!]
|
84
84
|
id_not_in: [ID!]
|
85
|
-
entryId: String
|
86
|
-
entryId_not: String
|
87
|
-
entryId_in: [String!]
|
88
|
-
entryId_not_in: [String!]
|
89
85
|
createdOn: DateTime
|
90
86
|
createdOn_gt: DateTime
|
91
87
|
createdOn_gte: DateTime
|
@@ -111,10 +107,6 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
111
107
|
changeRequest: ApwRefFieldWhereInput
|
112
108
|
}
|
113
109
|
|
114
|
-
input ApwListCommentsSearchInput {
|
115
|
-
query: String
|
116
|
-
}
|
117
|
-
|
118
110
|
extend type ApwQuery {
|
119
111
|
getComment(id: ID!): ApwCommentResponse
|
120
112
|
|
@@ -123,7 +115,6 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
123
115
|
limit: Int
|
124
116
|
after: String
|
125
117
|
sort: [ApwListCommentsSort!]
|
126
|
-
search: ApwListCommentsSearchInput
|
127
118
|
): ApwListCommentsResponse
|
128
119
|
}
|
129
120
|
|
@@ -143,7 +134,7 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
143
134
|
listComments: async (_, args, context) => {
|
144
135
|
try {
|
145
136
|
/**
|
146
|
-
* We know that args is
|
137
|
+
* We know that args is ApwCommentListParams.
|
147
138
|
*/
|
148
139
|
const [entries, meta] = await context.apw.comment.list(args);
|
149
140
|
return new _handlerGraphql.ListResponse(entries, meta);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getComment","_","args","context","resolve","apw","comment","get","id","listComments","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createComment","create","data","updateComment","update","deleteComment","delete"],"sources":["comment.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwCommentListParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwCommentListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Comment specific fields\n body: JSON\n changeRequest: ID\n # TODO: Remove ApwRefField\n media: JSON\n }\n\n type ApwListCommentsResponse {\n data: [ApwCommentListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwComment {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Comment specific fields\n body: JSON\n changeRequest: ID\n media: JSON\n }\n\n type ApwCommentResponse {\n data: ApwComment\n error: ApwError\n }\n\n type ApwDeleteCommentResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListCommentsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n }\n\n input ApwCreateCommentInput {\n body: JSON!\n changeRequest: ID!\n media: JSON\n }\n\n input ApwUpdateCommentInput {\n body: JSON!\n }\n\n input ApwListCommentsWhereInput {\n id: ID\n id_not: ID\n id_in: [ID!]\n id_not_in: [ID!]\n createdOn: DateTime\n createdOn_gt: DateTime\n createdOn_gte: DateTime\n createdOn_lt: DateTime\n createdOn_lte: DateTime\n createdOn_between: [DateTime!]\n createdOn_not_between: [DateTime!]\n savedOn: DateTime\n savedOn_gt: DateTime\n savedOn_gte: DateTime\n savedOn_lt: DateTime\n savedOn_lte: DateTime\n savedOn_between: [DateTime!]\n savedOn_not_between: [DateTime!]\n createdBy: String\n createdBy_not: String\n createdBy_in: [String!]\n createdBy_not_in: [String!]\n ownedBy: String\n ownedBy_not: String\n ownedBy_in: [String!]\n ownedBy_not_in: [String!]\n changeRequest: ApwRefFieldWhereInput\n }\n\n extend type ApwQuery {\n getComment(id: ID!): ApwCommentResponse\n\n listComments(\n where: ApwListCommentsWhereInput\n limit: Int\n after: String\n sort: [ApwListCommentsSort!]\n ): ApwListCommentsResponse\n }\n\n extend type ApwMutation {\n createComment(data: ApwCreateCommentInput!): ApwCommentResponse\n\n updateComment(id: ID!, data: ApwUpdateCommentInput!): ApwCommentResponse\n\n deleteComment(id: ID!): ApwDeleteCommentResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getComment: async (_, args: any, context) => {\n return resolve(() => context.apw.comment.get(args.id));\n },\n listComments: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwCommentListParams.\n */\n const [entries, meta] = await context.apw.comment.list(\n args as unknown as ApwCommentListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createComment: async (_, args: any, context) => {\n return resolve(() => context.apw.comment.create(args.data));\n },\n updateComment: async (_, args: any, context) => {\n return resolve(() => context.apw.comment.update(args.id, args.data));\n },\n deleteComment: async (_, args: any, context) => {\n return resolve(() => context.apw.comment.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,KA9G2D;EA+GvDC,SAAS,EAAE;IACPC,QAAQ,EAAE;MACNC,UAAU,EAAE,OAAOC,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QACzC,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,OAAZ,CAAoBC,GAApB,CAAwBL,IAAI,CAACM,EAA7B,CAAd,CAAP;MACH,CAHK;MAINC,YAAY,EAAE,OAAOR,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC3C,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACO,OAAD,EAAUC,IAAV,IAAkB,MAAMR,OAAO,CAACE,GAAR,CAAYC,OAAZ,CAAoBM,IAApB,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,CADH;IAmBPE,WAAW,EAAE;MACTC,aAAa,EAAE,OAAOhB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC5C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,OAAZ,CAAoBY,MAApB,CAA2BhB,IAAI,CAACiB,IAAhC,CAAd,CAAP;MACH,CAHQ;MAITC,aAAa,EAAE,OAAOnB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC5C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,OAAZ,CAAoBe,MAApB,CAA2BnB,IAAI,CAACM,EAAhC,EAAoCN,IAAI,CAACiB,IAAzC,CAAd,CAAP;MACH,CANQ;MAOTG,aAAa,EAAE,OAAOrB,CAAP,EAAUC,IAAV,EAAqBC,OAArB,KAAiC;QAC5C,OAAO,IAAAC,gBAAA,EAAQ,MAAMD,OAAO,CAACE,GAAR,CAAYC,OAAZ,CAAoBiB,MAApB,CAA2BrB,IAAI,CAACM,EAAhC,CAAd,CAAP;MACH;IATQ;EAnBN;AA/G4C,CAApC,CAAvB;eAgJeb,c"}
|