@webiny/api-headless-cms 5.25.0-beta.2 → 5.25.0-beta.3
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/content/graphQLHandlerFactory.js +11 -2
- package/content/graphQLHandlerFactory.js.map +1 -1
- package/content/plugins/crud/contentModel/afterCreateFrom.d.ts +8 -0
- package/content/plugins/crud/contentModel/afterCreateFrom.js +18 -0
- package/content/plugins/crud/contentModel/afterCreateFrom.js.map +1 -0
- package/content/plugins/crud/contentModel.crud.js +6 -0
- package/content/plugins/crud/contentModel.crud.js.map +1 -1
- package/content/plugins/schema/baseSchema.js +5 -0
- package/content/plugins/schema/baseSchema.js.map +1 -1
- package/content/plugins/schema/contentEntries.js +294 -75
- package/content/plugins/schema/contentEntries.js.map +1 -1
- package/content/plugins/schema/createManageSDL.js +1 -1
- package/content/plugins/schema/createManageSDL.js.map +1 -1
- package/content/plugins/schema/resolvers/manage/resolveGet.js +63 -1
- package/content/plugins/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/index.d.ts +4 -2
- package/index.js +46 -2
- package/index.js.map +1 -1
- package/package.json +23 -23
- package/types.d.ts +13 -4
- package/types.js.map +1 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -13,6 +15,148 @@ var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchem
|
|
|
13
15
|
|
|
14
16
|
var _getEntryTitle = require("../utils/getEntryTitle");
|
|
15
17
|
|
|
18
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
19
|
+
|
|
20
|
+
const getFetchMethod = (type, context) => {
|
|
21
|
+
if (!getContentEntriesMethods[type]) {
|
|
22
|
+
throw new _error.default(`Unknown getContentEntries method "${type}". Could not fetch content entries.`, "UNKNOWN_METHOD_ERROR", {
|
|
23
|
+
type
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const methodName = getContentEntriesMethods[type];
|
|
28
|
+
|
|
29
|
+
if (!context.cms[methodName]) {
|
|
30
|
+
throw new _error.default(`Unknown context.cms method "${methodName}". Could not fetch content entries.`, "UNKNOWN_METHOD_ERROR", {
|
|
31
|
+
type,
|
|
32
|
+
methodName
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return context.cms[methodName];
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Function to get the list of content entries depending on latest, published or exact GraphQL queries.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
var GetContentEntryMethods;
|
|
44
|
+
|
|
45
|
+
(function (GetContentEntryMethods) {
|
|
46
|
+
GetContentEntryMethods["getLatestEntriesByIds"] = "getLatestEntriesByIds";
|
|
47
|
+
GetContentEntryMethods["getPublishedEntriesByIds"] = "getPublishedEntriesByIds";
|
|
48
|
+
GetContentEntryMethods["getEntriesByIds"] = "getEntriesByIds";
|
|
49
|
+
})(GetContentEntryMethods || (GetContentEntryMethods = {}));
|
|
50
|
+
|
|
51
|
+
const getContentEntriesMethods = {
|
|
52
|
+
latest: "getLatestEntriesByIds",
|
|
53
|
+
published: "getPublishedEntriesByIds",
|
|
54
|
+
exact: "getEntriesByIds"
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const getContentEntries = async params => {
|
|
58
|
+
const {
|
|
59
|
+
args,
|
|
60
|
+
context,
|
|
61
|
+
type
|
|
62
|
+
} = params;
|
|
63
|
+
const method = getFetchMethod(type, context);
|
|
64
|
+
const models = await context.cms.listModels();
|
|
65
|
+
const modelsMap = models.reduce((collection, model) => {
|
|
66
|
+
collection[model.modelId] = model;
|
|
67
|
+
return collection;
|
|
68
|
+
}, {});
|
|
69
|
+
const argsEntries = args.entries;
|
|
70
|
+
const entriesByModel = argsEntries.reduce((collection, ref) => {
|
|
71
|
+
if (!collection[ref.modelId]) {
|
|
72
|
+
collection[ref.modelId] = [];
|
|
73
|
+
} else if (collection[ref.modelId].includes(ref.id)) {
|
|
74
|
+
return collection;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
collection[ref.modelId].push(ref.id);
|
|
78
|
+
return collection;
|
|
79
|
+
}, {});
|
|
80
|
+
const getters = Object.keys(entriesByModel).map(async modelId => {
|
|
81
|
+
return method(modelsMap[modelId], entriesByModel[modelId]);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
if (getters.length === 0) {
|
|
85
|
+
return new _handlerGraphql.Response([]);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const results = await Promise.all(getters);
|
|
89
|
+
const entries = results.reduce((collection, items) => {
|
|
90
|
+
return collection.concat(items.map(item => {
|
|
91
|
+
const model = modelsMap[item.modelId];
|
|
92
|
+
return {
|
|
93
|
+
id: item.id,
|
|
94
|
+
entryId: item.entryId,
|
|
95
|
+
model: {
|
|
96
|
+
modelId: model.modelId,
|
|
97
|
+
name: model.name
|
|
98
|
+
},
|
|
99
|
+
status: item.status,
|
|
100
|
+
title: (0, _getEntryTitle.getEntryTitle)(model, item)
|
|
101
|
+
};
|
|
102
|
+
}));
|
|
103
|
+
}, []).filter(Boolean);
|
|
104
|
+
return new _handlerGraphql.Response(entries);
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Function to fetch a single content entry depending on latest, published or exact GraphQL query.
|
|
108
|
+
*/
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
const getContentEntry = async params => {
|
|
112
|
+
const {
|
|
113
|
+
args,
|
|
114
|
+
context,
|
|
115
|
+
type
|
|
116
|
+
} = params;
|
|
117
|
+
|
|
118
|
+
if (!getContentEntriesMethods[type]) {
|
|
119
|
+
throw new _error.default(`Unknown getContentEntry method "${type}". Could not fetch content entry.`, "UNKNOWN_METHOD_ERROR", {
|
|
120
|
+
args,
|
|
121
|
+
type
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const method = getFetchMethod(type, context);
|
|
126
|
+
const {
|
|
127
|
+
modelId,
|
|
128
|
+
id
|
|
129
|
+
} = args.entry;
|
|
130
|
+
const models = await context.cms.listModels();
|
|
131
|
+
const model = models.find(m => m.modelId === modelId);
|
|
132
|
+
|
|
133
|
+
if (!model) {
|
|
134
|
+
return new _apiSecurity.NotAuthorizedResponse({
|
|
135
|
+
data: {
|
|
136
|
+
modelId
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const result = await method(model, [id]);
|
|
142
|
+
const entry = result.shift();
|
|
143
|
+
|
|
144
|
+
if (!entry) {
|
|
145
|
+
return new _handlerGraphql.Response(null);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return new _handlerGraphql.Response({
|
|
149
|
+
id: entry.id,
|
|
150
|
+
entryId: entry.entryId,
|
|
151
|
+
model: {
|
|
152
|
+
modelId: model.modelId,
|
|
153
|
+
name: model.name
|
|
154
|
+
},
|
|
155
|
+
status: entry.status,
|
|
156
|
+
title: (0, _getEntryTitle.getEntryTitle)(model, entry)
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
|
|
16
160
|
const plugin = context => {
|
|
17
161
|
if (!context.cms.MANAGE) {
|
|
18
162
|
return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
@@ -30,11 +174,19 @@ const plugin = context => {
|
|
|
30
174
|
name: String
|
|
31
175
|
}
|
|
32
176
|
|
|
177
|
+
type CmsPublishedContentEntry {
|
|
178
|
+
id: ID!
|
|
179
|
+
entryId: String!
|
|
180
|
+
title: String
|
|
181
|
+
}
|
|
182
|
+
|
|
33
183
|
type CmsContentEntry {
|
|
34
|
-
id: ID
|
|
184
|
+
id: ID!
|
|
185
|
+
entryId: String!
|
|
35
186
|
model: CmsModelMeta
|
|
36
187
|
status: String
|
|
37
188
|
title: String
|
|
189
|
+
published: CmsPublishedContentEntry
|
|
38
190
|
}
|
|
39
191
|
|
|
40
192
|
type CmsContentEntriesResponse {
|
|
@@ -56,18 +208,55 @@ const plugin = context => {
|
|
|
56
208
|
# Search content entries for given content models using the query string.
|
|
57
209
|
searchContentEntries(
|
|
58
210
|
modelIds: [ID!]!
|
|
59
|
-
query: String
|
|
211
|
+
query: String
|
|
60
212
|
limit: Int
|
|
61
213
|
): CmsContentEntriesResponse
|
|
62
214
|
|
|
63
215
|
# Get content entry meta data
|
|
64
216
|
getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse
|
|
65
217
|
|
|
218
|
+
getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse
|
|
219
|
+
getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse
|
|
220
|
+
|
|
66
221
|
# Get content entries meta data
|
|
67
222
|
getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse
|
|
223
|
+
getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse
|
|
224
|
+
getPublishedContentEntries(
|
|
225
|
+
entries: [CmsModelEntryInput!]!
|
|
226
|
+
): CmsContentEntriesResponse
|
|
68
227
|
}
|
|
69
228
|
`,
|
|
70
229
|
resolvers: {
|
|
230
|
+
CmsContentEntry: {
|
|
231
|
+
published: async (parent, _, context) => {
|
|
232
|
+
try {
|
|
233
|
+
const models = await context.cms.listModels();
|
|
234
|
+
const model = models.find(({
|
|
235
|
+
modelId
|
|
236
|
+
}) => {
|
|
237
|
+
return parent.model.modelId === modelId;
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
if (!model) {
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const [entry] = await context.cms.getPublishedEntriesByIds(model, [parent.id]);
|
|
245
|
+
|
|
246
|
+
if (!entry) {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
return {
|
|
251
|
+
id: entry.id,
|
|
252
|
+
entryId: entry.entryId,
|
|
253
|
+
title: (0, _getEntryTitle.getEntryTitle)(model, entry)
|
|
254
|
+
};
|
|
255
|
+
} catch (ex) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
},
|
|
71
260
|
Query: {
|
|
72
261
|
async searchContentEntries(_, args, context) {
|
|
73
262
|
const {
|
|
@@ -77,13 +266,12 @@ const plugin = context => {
|
|
|
77
266
|
} = args;
|
|
78
267
|
const models = await context.cms.listModels();
|
|
79
268
|
const getters = models.filter(model => modelIds.includes(model.modelId)).map(async model => {
|
|
80
|
-
const latest = query === "__latest__";
|
|
81
269
|
const modelManager = await context.cms.getModelManager(model.modelId);
|
|
82
270
|
const where = {
|
|
83
271
|
tenant: model.tenant
|
|
84
272
|
};
|
|
85
273
|
|
|
86
|
-
if (
|
|
274
|
+
if (!!query) {
|
|
87
275
|
where[`${model.titleFieldId}_contains`] = query;
|
|
88
276
|
}
|
|
89
277
|
|
|
@@ -91,92 +279,123 @@ const plugin = context => {
|
|
|
91
279
|
limit,
|
|
92
280
|
where
|
|
93
281
|
});
|
|
94
|
-
return items.map(entry =>
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
282
|
+
return items.map(entry => {
|
|
283
|
+
return {
|
|
284
|
+
id: entry.id,
|
|
285
|
+
entryId: entry.entryId,
|
|
286
|
+
model: {
|
|
287
|
+
modelId: model.modelId,
|
|
288
|
+
name: model.name
|
|
289
|
+
},
|
|
290
|
+
status: entry.status,
|
|
291
|
+
title: (0, _getEntryTitle.getEntryTitle)(model, entry),
|
|
292
|
+
// We need `savedOn` to sort entries from latest to oldest
|
|
293
|
+
savedOn: entry.savedOn
|
|
294
|
+
};
|
|
295
|
+
});
|
|
105
296
|
});
|
|
106
297
|
const entries = await Promise.all(getters).then(results => results.reduce((result, item) => result.concat(item), []));
|
|
107
298
|
return new _handlerGraphql.Response(entries.sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn)).slice(0, limit));
|
|
108
299
|
},
|
|
109
300
|
|
|
110
301
|
async getContentEntry(_, args, context) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
302
|
+
return getContentEntry({
|
|
303
|
+
args,
|
|
304
|
+
context,
|
|
305
|
+
type: "exact"
|
|
306
|
+
});
|
|
307
|
+
},
|
|
117
308
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
309
|
+
async getLatestContentEntry(_, args, context) {
|
|
310
|
+
return getContentEntry({
|
|
311
|
+
args,
|
|
312
|
+
context,
|
|
313
|
+
type: "latest"
|
|
314
|
+
});
|
|
315
|
+
},
|
|
125
316
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
modelId: model.modelId,
|
|
132
|
-
name: model.name
|
|
133
|
-
},
|
|
134
|
-
status: entry.status,
|
|
135
|
-
title: (0, _getEntryTitle.getEntryTitle)(model, entry)
|
|
317
|
+
async getPublishedContentEntry(_, args, context) {
|
|
318
|
+
return getContentEntry({
|
|
319
|
+
args,
|
|
320
|
+
context,
|
|
321
|
+
type: "published"
|
|
136
322
|
});
|
|
137
323
|
},
|
|
138
324
|
|
|
139
325
|
async getContentEntries(_, args, context) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
326
|
+
return getContentEntries({
|
|
327
|
+
args,
|
|
328
|
+
context,
|
|
329
|
+
type: "exact"
|
|
330
|
+
}); // const models = await context.cms.listModels();
|
|
331
|
+
//
|
|
332
|
+
// const modelsMap = models.reduce((collection, model) => {
|
|
333
|
+
// collection[model.modelId] = model;
|
|
334
|
+
// return collection;
|
|
335
|
+
// }, {} as Record<string, CmsModel>);
|
|
336
|
+
//
|
|
337
|
+
// const argsEntries = args.entries as Pick<CmsEntry, "id" | "modelId">[];
|
|
338
|
+
//
|
|
339
|
+
// const entriesByModel = argsEntries.reduce((collection, ref) => {
|
|
340
|
+
// if (!collection[ref.modelId]) {
|
|
341
|
+
// collection[ref.modelId] = [];
|
|
342
|
+
// } else if (collection[ref.modelId].includes(ref.id)) {
|
|
343
|
+
// return collection;
|
|
344
|
+
// }
|
|
345
|
+
// collection[ref.modelId].push(ref.id);
|
|
346
|
+
// return collection;
|
|
347
|
+
// }, {} as EntriesByModel);
|
|
348
|
+
//
|
|
349
|
+
// const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(
|
|
350
|
+
// async modelId => {
|
|
351
|
+
// return context.cms.getEntriesByIds(
|
|
352
|
+
// modelsMap[modelId],
|
|
353
|
+
// entriesByModel[modelId]
|
|
354
|
+
// );
|
|
355
|
+
// }
|
|
356
|
+
// );
|
|
357
|
+
//
|
|
358
|
+
// if (getters.length === 0) {
|
|
359
|
+
// return new Response([]);
|
|
360
|
+
// }
|
|
361
|
+
//
|
|
362
|
+
// const results = await Promise.all(getters);
|
|
363
|
+
//
|
|
364
|
+
// const entries = results.reduce((collection, items) => {
|
|
365
|
+
// return collection.concat(
|
|
366
|
+
// items.map(item => {
|
|
367
|
+
// const model = modelsMap[item.modelId];
|
|
368
|
+
//
|
|
369
|
+
// return {
|
|
370
|
+
// id: item.id,
|
|
371
|
+
// model: {
|
|
372
|
+
// modelId: model.modelId,
|
|
373
|
+
// name: model.name
|
|
374
|
+
// },
|
|
375
|
+
// status: item.status,
|
|
376
|
+
// title: getEntryTitle(model, item)
|
|
377
|
+
// };
|
|
378
|
+
// })
|
|
379
|
+
// );
|
|
380
|
+
// }, [] as any[]);
|
|
381
|
+
//
|
|
382
|
+
// return new Response(entries);
|
|
383
|
+
},
|
|
152
384
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
385
|
+
async getLatestContentEntries(_, args, context) {
|
|
386
|
+
return getContentEntries({
|
|
387
|
+
args,
|
|
388
|
+
context,
|
|
389
|
+
type: "latest"
|
|
158
390
|
});
|
|
391
|
+
},
|
|
159
392
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return collection.concat(items.map(item => {
|
|
167
|
-
const model = modelsMap[item.modelId];
|
|
168
|
-
return {
|
|
169
|
-
id: item.id,
|
|
170
|
-
model: {
|
|
171
|
-
modelId: model.modelId,
|
|
172
|
-
name: model.name
|
|
173
|
-
},
|
|
174
|
-
status: item.status,
|
|
175
|
-
title: (0, _getEntryTitle.getEntryTitle)(model, item)
|
|
176
|
-
};
|
|
177
|
-
}));
|
|
178
|
-
}, []);
|
|
179
|
-
return new _handlerGraphql.Response(entries);
|
|
393
|
+
async getPublishedContentEntries(_, args, context) {
|
|
394
|
+
return getContentEntries({
|
|
395
|
+
args,
|
|
396
|
+
context,
|
|
397
|
+
type: "published"
|
|
398
|
+
});
|
|
180
399
|
}
|
|
181
400
|
|
|
182
401
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["contentEntries.ts"],"names":["plugin","context","cms","MANAGE","GraphQLSchemaPlugin","typeDefs","resolvers","Query","searchContentEntries","_","args","modelIds","query","limit","models","listModels","getters","filter","model","includes","modelId","map","latest","modelManager","getModelManager","where","tenant","titleFieldId","items","listLatest","entry","id","name","status","title","savedOn","entries","Promise","all","then","results","reduce","result","item","concat","Response","sort","a","b","Date","parse","slice","getContentEntry","find","m","NotAuthorizedResponse","data","getEntriesByIds","getContentEntries","modelsMap","collection","argsEntries","entriesByModel","ref","push","Object","keys","length"],"mappings":"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","sourcesContent":["import { Response } from \"@webiny/handler-graphql\";\nimport { CmsEntry, CmsContext, CmsModel, CmsEntryListWhere } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { getEntryTitle } from \"~/content/plugins/utils/getEntryTitle\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\nconst plugin = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n return new GraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsModelMeta {\n modelId: String\n name: String\n }\n\n type CmsContentEntry {\n id: ID\n model: CmsModelMeta\n status: String\n title: String\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String!\n limit: Int\n ): CmsContentEntriesResponse\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n }\n `,\n resolvers: {\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const latest = query === \"__latest__\";\n const modelManager = await context.cms.getModelManager(model.modelId);\n const where: CmsEntryListWhere = {\n tenant: model.tenant\n };\n if (!latest) {\n where[`${model.titleFieldId}_contains`] = query;\n }\n const [items] = await modelManager.listLatest({\n limit,\n where\n });\n\n return items.map((entry: CmsEntry) => ({\n id: entry.id,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n // We need `savedOn` to sort entries from latest to oldest\n savedOn: entry.savedOn\n }));\n });\n\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn))\n .slice(0, limit)\n );\n },\n async getContentEntry(_, args: any, context) {\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({ data: { modelId } });\n }\n\n const result = await context.cms.getEntriesByIds(model, [id]);\n\n const [entry] = result;\n\n return new Response({\n id: entry.id,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry)\n });\n },\n async getContentEntries(_, args: any, context) {\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(\n async modelId => {\n return context.cms.getEntriesByIds(\n modelsMap[modelId],\n entriesByModel[modelId]\n );\n }\n );\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n const results = await Promise.all(getters);\n\n const entries = results.reduce((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return {\n id: item.id,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: item.status,\n title: getEntryTitle(model, item)\n };\n })\n );\n }, [] as any[]);\n\n return new Response(entries);\n }\n }\n }\n });\n};\n\nexport default plugin;\n"]}
|
|
1
|
+
{"version":3,"sources":["contentEntries.ts"],"names":["getFetchMethod","type","context","getContentEntriesMethods","WebinyError","methodName","cms","GetContentEntryMethods","latest","published","exact","getContentEntries","params","args","method","models","listModels","modelsMap","reduce","collection","model","modelId","argsEntries","entries","entriesByModel","ref","includes","id","push","getters","Object","keys","map","length","Response","results","Promise","all","items","concat","item","entryId","name","status","title","filter","Boolean","getContentEntry","entry","find","m","NotAuthorizedResponse","data","result","shift","plugin","MANAGE","GraphQLSchemaPlugin","typeDefs","resolvers","CmsContentEntry","parent","_","getPublishedEntriesByIds","ex","Query","searchContentEntries","modelIds","query","limit","modelManager","getModelManager","where","tenant","titleFieldId","listLatest","savedOn","then","sort","a","b","Date","parse","slice","getLatestContentEntry","getPublishedContentEntry","getLatestContentEntries","getPublishedContentEntries"],"mappings":"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","sourcesContent":["import { Response } from \"@webiny/handler-graphql\";\nimport { CmsEntry, CmsContext, CmsModel, CmsEntryListWhere } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { getEntryTitle } from \"~/content/plugins/utils/getEntryTitle\";\nimport WebinyError from \"@webiny/error\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n}\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntries method \"${type}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type\n }\n );\n }\n const methodName = getContentEntriesMethods[type] as GetContentEntryMethods;\n if (!context.cms[methodName]) {\n throw new WebinyError(\n `Unknown context.cms method \"${methodName}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type,\n methodName\n }\n );\n }\n\n return context.cms[methodName];\n};\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\nenum GetContentEntryMethods {\n getLatestEntriesByIds = \"getLatestEntriesByIds\",\n getPublishedEntriesByIds = \"getPublishedEntriesByIds\",\n getEntriesByIds = \"getEntriesByIds\"\n}\nconst getContentEntriesMethods = {\n latest: \"getLatestEntriesByIds\",\n published: \"getPublishedEntriesByIds\",\n exact: \"getEntriesByIds\"\n};\nconst getContentEntries = async (params: GetContentEntriesParams): Promise<Response> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return {\n id: item.id,\n entryId: item.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: item.status,\n title: getEntryTitle(model, item)\n };\n })\n );\n }, [] as CmsEntryRecord[])\n .filter(Boolean);\n\n return new Response(entries);\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntry method \"${type}\". Could not fetch content entry.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n args,\n type\n }\n );\n }\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response({\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry)\n });\n};\n\nconst plugin = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n return new GraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsModelMeta {\n modelId: String\n name: String\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta\n status: String\n title: String\n published: CmsPublishedContentEntry\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n limit: Int\n ): CmsContentEntriesResponse\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const [entry] = await context.cms.getPublishedEntriesByIds(model, [\n parent.id\n ]);\n if (!entry) {\n return null;\n }\n return {\n id: entry.id,\n entryId: entry.entryId,\n title: getEntryTitle(model, entry)\n };\n } catch (ex) {\n return null;\n }\n }\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const modelManager = await context.cms.getModelManager(model.modelId);\n const where: CmsEntryListWhere = {\n tenant: model.tenant\n };\n if (!!query) {\n where[`${model.titleFieldId}_contains`] = query;\n }\n const [items] = await modelManager.listLatest({\n limit,\n where\n });\n\n return items.map((entry: CmsEntry) => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n // We need `savedOn` to sort entries from latest to oldest\n savedOn: entry.savedOn\n };\n });\n });\n\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn))\n .slice(0, limit)\n );\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n // const models = await context.cms.listModels();\n //\n // const modelsMap = models.reduce((collection, model) => {\n // collection[model.modelId] = model;\n // return collection;\n // }, {} as Record<string, CmsModel>);\n //\n // const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n //\n // const entriesByModel = argsEntries.reduce((collection, ref) => {\n // if (!collection[ref.modelId]) {\n // collection[ref.modelId] = [];\n // } else if (collection[ref.modelId].includes(ref.id)) {\n // return collection;\n // }\n // collection[ref.modelId].push(ref.id);\n // return collection;\n // }, {} as EntriesByModel);\n //\n // const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(\n // async modelId => {\n // return context.cms.getEntriesByIds(\n // modelsMap[modelId],\n // entriesByModel[modelId]\n // );\n // }\n // );\n //\n // if (getters.length === 0) {\n // return new Response([]);\n // }\n //\n // const results = await Promise.all(getters);\n //\n // const entries = results.reduce((collection, items) => {\n // return collection.concat(\n // items.map(item => {\n // const model = modelsMap[item.modelId];\n //\n // return {\n // id: item.id,\n // model: {\n // modelId: model.modelId,\n // name: model.name\n // },\n // status: item.status,\n // title: getEntryTitle(model, item)\n // };\n // })\n // );\n // }, [] as any[]);\n //\n // return new Response(entries);\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n};\n\nexport default plugin;\n"]}
|
|
@@ -120,7 +120,7 @@ const createManageSDL = ({
|
|
|
120
120
|
}`}
|
|
121
121
|
|
|
122
122
|
extend type Query {
|
|
123
|
-
get${typeName}(revision: ID
|
|
123
|
+
get${typeName}(revision: ID, entryId: ID, status: CmsEntryStatusType): ${mTypeName}Response
|
|
124
124
|
|
|
125
125
|
get${typeName}Revisions(id: ID!): ${mTypeName}ArrayResponse
|
|
126
126
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["createManageSDL.ts"],"names":["createManageSDL","model","fieldTypePlugins","typeName","modelId","mTypeName","listFilterFieldsRender","type","sortEnumRender","getFilterFieldsRender","inputFields","fields","length","description","map","f","typeDefs","filter","Boolean","join"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAUO,MAAMA,eAAgC,GAAG,CAAC;AAAEC,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAD,KAAyC;AACrF,QAAMC,QAAQ,GAAG,oCAAeF,KAAK,CAACG,OAArB,CAAjB;AACA,QAAMC,SAAS,GAAG,0CAAqBF,QAArB,CAAlB;AAEA,QAAMG,sBAAsB,GAAG,oDAAuB;AAClDL,IAAAA,KADkD;AAElDM,IAAAA,IAAI,EAAE,QAF4C;AAGlDL,IAAAA;AAHkD,GAAvB,CAA/B;AAMA,QAAMM,cAAc,GAAG,oCAAe;AAAEP,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAf,CAAvB;AACA,QAAMO,qBAAqB,GAAG,kDAAsB;AAAER,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAtB,CAA9B;AACA,QAAMQ,WAAW,GAAG,0CAAkB;AAAET,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAlB,CAApB;AACA,QAAMS,MAAM,GAAG,gCAAa;AAAEV,IAAAA,KAAF;AAASM,IAAAA,IAAI,EAAE,QAAf;AAAyBL,IAAAA;AAAzB,GAAb,CAAf;;AAEA,MAAIQ,WAAW,CAACE,MAAZ,KAAuB,CAA3B,EAA8B;AAC1B,WAAO,EAAP;AACH;;AAED;AAAO;AAAe;AAC1B,aAAaX,KAAK,CAACY,WAAN,IAAqBZ,KAAK,CAACG,OAAQ;AAChD,UAAUO,MAAM,CACHG,GADH,CACOC,CAAC,IAAIA,CAAC,CAACC,QADd,EAEGC,MAFH,CAEUC,OAFV,EAGGC,IAHH,CAGQ,IAHR,CAGc;AACxB;AACA,eAAed,SAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoBA,SAAU;AAC9B,cAAcM,MAAM,CAACG,GAAP,CAAWC,CAAC,IAAIA,CAAC,CAACJ,MAAlB,EAA0BQ,IAA1B,CAA+B,IAA/B,CAAqC;AACnD;AACA;AACA,eAAed,SAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0BA,SAAU;AACpC;AACA;AACA;AACA;AACA,UAAUK,WAAW,CACRI,GADH,CACOC,CAAC,IAAIA,CAAC,CAACC,QADd,EAEGC,MAFH,CAEUC,OAFV,EAGGC,IAHH,CAGQ,IAHR,CAGc;AACxB;AACA,UACYT,WAAW,IACV,SAAQL,SAAU;AAC/B,cAAcK,WAAW,CAACI,GAAZ,CAAgBC,CAAC,IAAIA,CAAC,CAACJ,MAAvB,EAA+BQ,IAA/B,CAAoC,IAApC,CAA0C;AACxD,UACS;AACT;AACA,UACYV,qBAAqB,IACpB,SAAQJ,SAAU;AAC/B,cAAcI,qBAAsB;AACpC,UACS;AACT;AACA;AACA,UACYH,sBAAsB,IACrB,SAAQD,SAAU;AAC/B,cAAcC,sBAAuB;AACrC,UACS;AACT;AACA,eAAeD,SAAU;AACzB,oBAAoBA,SAAU;AAC9B;AACA;AACA;AACA,eAAeA,SAAU;AACzB,qBAAqBA,SAAU;AAC/B;AACA;AACA;AACA,eAAeA,SAAU;AACzB,qBAAqBA,SAAU;AAC/B;AACA;AACA;AACA;AACA,UACYG,cAAc,IACb,QAAOH,SAAU;AAC9B,cAAcG,cAAe;AAC7B,UACS;AACT;AACA;AACA,iBAAiBL,QAAS,
|
|
1
|
+
{"version":3,"sources":["createManageSDL.ts"],"names":["createManageSDL","model","fieldTypePlugins","typeName","modelId","mTypeName","listFilterFieldsRender","type","sortEnumRender","getFilterFieldsRender","inputFields","fields","length","description","map","f","typeDefs","filter","Boolean","join"],"mappings":"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","sourcesContent":["import { CmsFieldTypePlugins, CmsModel } from \"~/types\";\nimport { createManageTypeName, createTypeName } from \"~/content/plugins/utils/createTypeName\";\nimport { renderListFilterFields } from \"~/content/plugins/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"~/content/plugins/utils/renderSortEnum\";\nimport { renderGetFilterFields } from \"~/content/plugins/utils/renderGetFilterFields\";\nimport { renderInputFields } from \"~/content/plugins/utils/renderInputFields\";\nimport { renderFields } from \"~/content/plugins/utils/renderFields\";\nimport { pluralizedTypeName } from \"~/content/plugins/utils/pluralizedTypeName\";\n\ninterface CreateManageSDLParams {\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface CreateManageSDL {\n (params: CreateManageSDLParams): string;\n}\n\nexport const createManageSDL: CreateManageSDL = ({ model, fieldTypePlugins }): string => {\n const typeName = createTypeName(model.modelId);\n const mTypeName = createManageTypeName(typeName);\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n type: \"manage\",\n fieldTypePlugins\n });\n\n const sortEnumRender = renderSortEnum({ model, fieldTypePlugins });\n const getFilterFieldsRender = renderGetFilterFields({ model, fieldTypePlugins });\n const inputFields = renderInputFields({ model, fieldTypePlugins });\n const fields = renderFields({ model, type: \"manage\", fieldTypePlugins });\n\n if (inputFields.length === 0) {\n return \"\";\n }\n\n return /* GraphQL */ `\n \"\"\"${model.description || model.modelId}\"\"\"\n ${fields\n .map(f => f.typeDefs)\n .filter(Boolean)\n .join(\"\\n\")}\n\n type ${mTypeName} {\n id: ID!\n entryId: String!\n createdOn: DateTime!\n savedOn: DateTime!\n createdBy: CmsCreatedBy!\n ownedBy: CmsOwnedBy!\n meta: ${mTypeName}Meta\n ${fields.map(f => f.fields).join(\"\\n\")}\n }\n\n type ${mTypeName}Meta {\n modelId: String\n version: Int\n locked: Boolean\n publishedOn: DateTime\n status: String\n \"\"\"\n CAUTION: this field is resolved by making an extra query to DB. \n RECOMMENDATION: Use it only with \"get\" queries (avoid in \"list\") \n \"\"\"\n revisions: [${mTypeName}]\n title: String\n }\n \n \n ${inputFields\n .map(f => f.typeDefs)\n .filter(Boolean)\n .join(\"\\n\")}\n\n ${\n inputFields &&\n `input ${mTypeName}Input {\n ${inputFields.map(f => f.fields).join(\"\\n\")}\n }`\n }\n\n ${\n getFilterFieldsRender &&\n `input ${mTypeName}GetWhereInput {\n ${getFilterFieldsRender}\n }`\n }\n\n\n ${\n listFilterFieldsRender &&\n `input ${mTypeName}ListWhereInput {\n ${listFilterFieldsRender}\n }`\n }\n\n type ${mTypeName}Response {\n data: ${mTypeName}\n error: CmsError\n }\n \n type ${mTypeName}ArrayResponse {\n data: [${mTypeName}]\n error: CmsError\n }\n\n type ${mTypeName}ListResponse {\n data: [${mTypeName}]\n meta: CmsListMeta\n error: CmsError\n }\n\n ${\n sortEnumRender &&\n `enum ${mTypeName}ListSorter {\n ${sortEnumRender}\n }`\n }\n\n extend type Query {\n get${typeName}(revision: ID, entryId: ID, status: CmsEntryStatusType): ${mTypeName}Response\n \n get${typeName}Revisions(id: ID!): ${mTypeName}ArrayResponse\n \n get${pluralizedTypeName(typeName)}ByIds(revisions: [ID!]!): ${mTypeName}ArrayResponse\n\n list${pluralizedTypeName(typeName)}(\n where: ${mTypeName}ListWhereInput\n sort: [${mTypeName}ListSorter]\n limit: Int\n after: String\n ): ${mTypeName}ListResponse\n }\n\n extend type Mutation{\n create${typeName}(data: ${mTypeName}Input!): ${mTypeName}Response\n\n create${typeName}From(revision: ID!, data: ${mTypeName}Input): ${mTypeName}Response\n\n update${typeName}(revision: ID!, data: ${mTypeName}Input!): ${mTypeName}Response\n\n delete${typeName}(revision: ID!): CmsDeleteResponse\n\n publish${typeName}(revision: ID!): ${mTypeName}Response\n \n republish${typeName}(revision: ID!): ${mTypeName}Response\n\n unpublish${typeName}(revision: ID!): ${mTypeName}Response\n \n request${typeName}Review(revision: ID!): ${mTypeName}Response\n \n request${typeName}Changes(revision: ID!): ${mTypeName}Response\n }\n `;\n};\n"]}
|