@webiny/api-headless-cms 5.23.1 → 5.25.0-beta.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/content/contextSetup.js.map +1 -0
- package/content/graphQLHandlerFactory.js +12 -2
- package/content/graphQLHandlerFactory.js.map +1 -0
- package/content/parameterPlugins.js.map +1 -0
- package/content/plugins/CmsGroupPlugin.js.map +1 -0
- package/content/plugins/CmsModelPlugin.js.map +1 -0
- package/content/plugins/CmsParametersPlugin.d.ts +1 -1
- package/content/plugins/CmsParametersPlugin.js.map +1 -0
- package/content/plugins/buildSchemaPlugins.js.map +1 -0
- package/content/plugins/crud/contentEntry/afterDelete.d.ts +3 -2
- package/content/plugins/crud/contentEntry/afterDelete.js +2 -1
- package/content/plugins/crud/contentEntry/afterDelete.js.map +1 -0
- package/content/plugins/crud/contentEntry/beforeCreate.d.ts +3 -2
- package/content/plugins/crud/contentEntry/beforeCreate.js.map +1 -0
- package/content/plugins/crud/contentEntry/beforeUpdate.d.ts +3 -2
- package/content/plugins/crud/contentEntry/beforeUpdate.js.map +1 -0
- package/content/plugins/crud/contentEntry/entryDataValidation.d.ts +2 -2
- package/content/plugins/crud/contentEntry/entryDataValidation.js +2 -3
- package/content/plugins/crud/contentEntry/entryDataValidation.js.map +1 -0
- package/content/plugins/crud/contentEntry/markLockedFields.d.ts +2 -1
- package/content/plugins/crud/contentEntry/markLockedFields.js +1 -1
- package/content/plugins/crud/contentEntry/markLockedFields.js.map +1 -0
- package/content/plugins/crud/contentEntry/referenceFieldsMapping.js +7 -3
- package/content/plugins/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
- package/content/plugins/crud/contentEntry.crud.d.ts +2 -2
- package/content/plugins/crud/contentEntry.crud.js +24 -13
- package/content/plugins/crud/contentEntry.crud.js.map +1 -0
- package/content/plugins/crud/contentModel/afterCreate.d.ts +3 -2
- package/content/plugins/crud/contentModel/afterCreate.js.map +1 -0
- package/content/plugins/crud/contentModel/afterDelete.d.ts +3 -2
- package/content/plugins/crud/contentModel/afterDelete.js.map +1 -0
- package/content/plugins/crud/contentModel/afterUpdate.d.ts +3 -2
- package/content/plugins/crud/contentModel/afterUpdate.js.map +1 -0
- package/content/plugins/crud/contentModel/beforeCreate.d.ts +5 -4
- package/content/plugins/crud/contentModel/beforeCreate.js +1 -1
- package/content/plugins/crud/contentModel/beforeCreate.js.map +1 -0
- package/content/plugins/crud/contentModel/beforeDelete.d.ts +3 -2
- package/content/plugins/crud/contentModel/beforeDelete.js.map +1 -0
- package/content/plugins/crud/contentModel/beforeUpdate.d.ts +3 -2
- package/content/plugins/crud/contentModel/beforeUpdate.js +77 -0
- package/content/plugins/crud/contentModel/beforeUpdate.js.map +1 -0
- package/content/plugins/crud/contentModel/contentModelManagerFactory.d.ts +2 -2
- package/content/plugins/crud/contentModel/contentModelManagerFactory.js.map +1 -0
- package/content/plugins/crud/contentModel/createFieldModels.js.map +1 -0
- package/content/plugins/crud/contentModel/idValidation.js.map +1 -0
- package/content/plugins/crud/contentModel/models.js +9 -0
- package/content/plugins/crud/contentModel/models.js.map +1 -0
- package/content/plugins/crud/contentModel/validateLayout.js.map +1 -0
- package/content/plugins/crud/contentModel.crud.d.ts +2 -2
- package/content/plugins/crud/contentModel.crud.js +2 -2
- package/content/plugins/crud/contentModel.crud.js.map +1 -0
- package/content/plugins/crud/contentModelGroup/beforeCreate.d.ts +3 -2
- package/content/plugins/crud/contentModelGroup/beforeCreate.js.map +1 -0
- package/content/plugins/crud/contentModelGroup/beforeDelete.d.ts +3 -2
- package/content/plugins/crud/contentModelGroup/beforeDelete.js.map +1 -0
- package/content/plugins/crud/contentModelGroup/beforeUpdate.d.ts +3 -2
- package/content/plugins/crud/contentModelGroup/beforeUpdate.js.map +1 -0
- package/content/plugins/crud/contentModelGroup.crud.d.ts +2 -2
- package/content/plugins/crud/contentModelGroup.crud.js.map +1 -0
- package/content/plugins/crud/index.d.ts +2 -2
- package/content/plugins/crud/index.js.map +1 -0
- package/content/plugins/graphqlFields/boolean.js +2 -6
- package/content/plugins/graphqlFields/boolean.js.map +1 -0
- package/content/plugins/graphqlFields/datetime.js +5 -3
- package/content/plugins/graphqlFields/datetime.js.map +1 -0
- package/content/plugins/graphqlFields/file.js +2 -6
- package/content/plugins/graphqlFields/file.js.map +1 -0
- package/content/plugins/graphqlFields/helpers.d.ts +6 -0
- package/content/plugins/graphqlFields/helpers.js +49 -0
- package/content/plugins/graphqlFields/helpers.js.map +1 -0
- package/content/plugins/graphqlFields/index.js.map +1 -0
- package/content/plugins/graphqlFields/longText.js +2 -6
- package/content/plugins/graphqlFields/longText.js.map +1 -0
- package/content/plugins/graphqlFields/number.js +2 -6
- package/content/plugins/graphqlFields/number.js.map +1 -0
- package/content/plugins/graphqlFields/object.js +20 -18
- package/content/plugins/graphqlFields/object.js.map +1 -0
- package/content/plugins/graphqlFields/ref.js +51 -18
- package/content/plugins/graphqlFields/ref.js.map +1 -0
- package/content/plugins/graphqlFields/richText.js +2 -6
- package/content/plugins/graphqlFields/richText.js.map +1 -0
- package/content/plugins/graphqlFields/text.js +2 -6
- package/content/plugins/graphqlFields/text.js.map +1 -0
- package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +1 -1
- package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +1 -0
- package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js.map +1 -0
- package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +1 -1
- package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +1 -0
- package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js.map +1 -0
- package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +3 -3
- package/content/plugins/modelManager/DefaultCmsModelManager.js.map +1 -0
- package/content/plugins/modelManager/index.js.map +1 -0
- package/content/plugins/schema/baseSchema.js +1 -0
- package/content/plugins/schema/baseSchema.js.map +1 -0
- package/content/plugins/schema/contentEntries.js +12 -5
- package/content/plugins/schema/contentEntries.js.map +1 -0
- package/content/plugins/schema/contentModelGroups.js +1 -2
- package/content/plugins/schema/contentModelGroups.js.map +1 -0
- package/content/plugins/schema/contentModels.js +2 -3
- package/content/plugins/schema/contentModels.js.map +1 -0
- package/content/plugins/schema/createFieldResolvers.d.ts +8 -7
- package/content/plugins/schema/createFieldResolvers.js +25 -12
- package/content/plugins/schema/createFieldResolvers.js.map +1 -0
- package/content/plugins/schema/createManageResolvers.d.ts +7 -6
- package/content/plugins/schema/createManageResolvers.js.map +1 -0
- package/content/plugins/schema/createManageSDL.d.ts +5 -4
- package/content/plugins/schema/createManageSDL.js.map +1 -0
- package/content/plugins/schema/createPreviewResolvers.d.ts +8 -6
- package/content/plugins/schema/createPreviewResolvers.js.map +1 -0
- package/content/plugins/schema/createReadResolvers.d.ts +8 -6
- package/content/plugins/schema/createReadResolvers.js.map +1 -0
- package/content/plugins/schema/createReadSDL.d.ts +7 -6
- package/content/plugins/schema/createReadSDL.js.map +1 -0
- package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +1 -1
- package/content/plugins/schema/resolvers/commonFieldResolvers.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveCreate.d.ts +5 -4
- package/content/plugins/schema/resolvers/manage/resolveCreate.js +2 -4
- package/content/plugins/schema/resolvers/manage/resolveCreate.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveCreateFrom.d.ts +5 -4
- package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js +2 -4
- package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveDelete.d.ts +6 -1
- package/content/plugins/schema/resolvers/manage/resolveDelete.js +4 -8
- package/content/plugins/schema/resolvers/manage/resolveDelete.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveGet.d.ts +6 -1
- package/content/plugins/schema/resolvers/manage/resolveGet.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveGetByIds.d.ts +6 -1
- package/content/plugins/schema/resolvers/manage/resolveGetByIds.js +2 -4
- package/content/plugins/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveGetRevisions.d.ts +6 -1
- package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js +2 -4
- package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveList.d.ts +4 -2
- package/content/plugins/schema/resolvers/manage/resolveList.js +2 -4
- package/content/plugins/schema/resolvers/manage/resolveList.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolvePublish.d.ts +6 -1
- package/content/plugins/schema/resolvers/manage/resolvePublish.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveRepublish.d.ts +6 -1
- package/content/plugins/schema/resolvers/manage/resolveRepublish.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveRequestChanges.d.ts +3 -2
- package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js +2 -4
- package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveRequestReview.d.ts +3 -2
- package/content/plugins/schema/resolvers/manage/resolveRequestReview.js +2 -4
- package/content/plugins/schema/resolvers/manage/resolveRequestReview.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveUnpublish.d.ts +6 -1
- package/content/plugins/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
- package/content/plugins/schema/resolvers/manage/resolveUpdate.d.ts +5 -4
- package/content/plugins/schema/resolvers/manage/resolveUpdate.js +2 -4
- package/content/plugins/schema/resolvers/manage/resolveUpdate.js.map +1 -0
- package/content/plugins/schema/resolvers/preview/resolveGet.d.ts +4 -2
- package/content/plugins/schema/resolvers/preview/resolveGet.js.map +1 -0
- package/content/plugins/schema/resolvers/preview/resolveList.d.ts +4 -2
- package/content/plugins/schema/resolvers/preview/resolveList.js +2 -4
- package/content/plugins/schema/resolvers/preview/resolveList.js.map +1 -0
- package/content/plugins/schema/resolvers/read/resolveGet.d.ts +4 -2
- package/content/plugins/schema/resolvers/read/resolveGet.js.map +1 -0
- package/content/plugins/schema/resolvers/read/resolveList.d.ts +4 -2
- package/content/plugins/schema/resolvers/read/resolveList.js +2 -4
- package/content/plugins/schema/resolvers/read/resolveList.js.map +1 -0
- package/content/plugins/schema/schemaPlugins.js.map +1 -0
- package/content/plugins/storage/StorageTransformPlugin.d.ts +2 -2
- package/content/plugins/storage/StorageTransformPlugin.js.map +1 -0
- package/content/plugins/storage/default.js.map +1 -0
- package/content/plugins/storage/object.js +15 -10
- package/content/plugins/storage/object.js.map +1 -0
- package/content/plugins/utils/createTypeName.d.ts +3 -3
- package/content/plugins/utils/createTypeName.js.map +1 -0
- package/content/plugins/utils/entryStorage.d.ts +2 -2
- package/content/plugins/utils/entryStorage.js +0 -4
- package/content/plugins/utils/entryStorage.js.map +1 -0
- package/content/plugins/utils/getEntryTitle.d.ts +1 -1
- package/content/plugins/utils/getEntryTitle.js +1 -1
- package/content/plugins/utils/getEntryTitle.js.map +1 -0
- package/content/plugins/utils/getSchemaFromFieldPlugins.d.ts +7 -6
- package/content/plugins/utils/getSchemaFromFieldPlugins.js +12 -7
- package/content/plugins/utils/getSchemaFromFieldPlugins.js.map +1 -0
- package/content/plugins/utils/pluralizedTypeName.d.ts +1 -1
- package/content/plugins/utils/pluralizedTypeName.js.map +1 -0
- package/content/plugins/utils/renderFields.d.ts +11 -12
- package/content/plugins/utils/renderFields.js +1 -1
- package/content/plugins/utils/renderFields.js.map +1 -0
- package/content/plugins/utils/renderGetFilterFields.d.ts +5 -4
- package/content/plugins/utils/renderGetFilterFields.js +28 -13
- package/content/plugins/utils/renderGetFilterFields.js.map +1 -0
- package/content/plugins/utils/renderInputFields.d.ts +10 -10
- package/content/plugins/utils/renderInputFields.js.map +1 -0
- package/content/plugins/utils/renderListFilterFields.d.ts +7 -6
- package/content/plugins/utils/renderListFilterFields.js +24 -12
- package/content/plugins/utils/renderListFilterFields.js.map +1 -0
- package/content/plugins/utils/renderSortEnum.js +5 -5
- package/content/plugins/utils/renderSortEnum.js.map +1 -0
- package/content/plugins/validators/dateGte.js +1 -1
- package/content/plugins/validators/dateGte.js.map +1 -0
- package/content/plugins/validators/dateLte.js +1 -1
- package/content/plugins/validators/dateLte.js.map +1 -0
- package/content/plugins/validators/gte.js +3 -1
- package/content/plugins/validators/gte.js.map +1 -0
- package/content/plugins/validators/in.js +3 -1
- package/content/plugins/validators/in.js.map +1 -0
- package/content/plugins/validators/index.js.map +1 -0
- package/content/plugins/validators/lte.js +3 -1
- package/content/plugins/validators/lte.js.map +1 -0
- package/content/plugins/validators/maxLength.js +3 -1
- package/content/plugins/validators/maxLength.js.map +1 -0
- package/content/plugins/validators/minLength.js +3 -1
- package/content/plugins/validators/minLength.js.map +1 -0
- package/content/plugins/validators/pattern.js +2 -2
- package/content/plugins/validators/pattern.js.map +1 -0
- package/content/plugins/validators/patternPlugins/email.js.map +1 -0
- package/content/plugins/validators/patternPlugins/index.js.map +1 -0
- package/content/plugins/validators/patternPlugins/lowerCase.js.map +1 -0
- package/content/plugins/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
- package/content/plugins/validators/patternPlugins/upperCase.js.map +1 -0
- package/content/plugins/validators/patternPlugins/upperCaseSpace.js.map +1 -0
- package/content/plugins/validators/patternPlugins/url.js.map +1 -0
- package/content/plugins/validators/required.js.map +1 -0
- package/content/plugins/validators/timeGte.js +3 -1
- package/content/plugins/validators/timeGte.js.map +1 -0
- package/content/plugins/validators/timeLte.js +3 -1
- package/content/plugins/validators/timeLte.js.map +1 -0
- package/content/plugins/validators/unique.js +1 -0
- package/content/plugins/validators/unique.js.map +1 -0
- package/index.d.ts +3 -3
- package/index.js.map +1 -0
- package/migrateCMSPermissions.d.ts +2 -2
- package/migrateCMSPermissions.js +4 -0
- package/migrateCMSPermissions.js.map +1 -0
- package/package.json +27 -26
- package/plugins/context.js +8 -3
- package/plugins/context.js.map +1 -0
- package/plugins/crud/index.d.ts +2 -2
- package/plugins/crud/index.js.map +1 -0
- package/plugins/crud/settings.crud.d.ts +2 -2
- package/plugins/crud/settings.crud.js.map +1 -0
- package/plugins/crud/system.crud.d.ts +3 -2
- package/plugins/crud/system.crud.js +2 -2
- package/plugins/crud/system.crud.js.map +1 -0
- package/plugins/graphql/system.d.ts +5 -4
- package/plugins/graphql/system.js +5 -3
- package/plugins/graphql/system.js.map +1 -0
- package/plugins/graphql.js +7 -0
- package/plugins/graphql.js.map +1 -0
- package/plugins/upgrades/index.js.map +1 -0
- package/plugins/upgrades/v5.5.0/helpers.js.map +1 -0
- package/plugins/upgrades/v5.5.0/index.js +5 -0
- package/plugins/upgrades/v5.5.0/index.js.map +1 -0
- package/transformers.js.map +1 -0
- package/types.d.ts +70 -40
- package/types.js +6 -0
- package/types.js.map +1 -0
- package/utils.d.ts +14 -16
- package/utils.js.map +1 -0
- package/content/plugins/graphqlFields/requiredField.d.ts +0 -2
- package/content/plugins/graphqlFields/requiredField.js +0 -24
|
@@ -13,7 +13,7 @@ var _createTypeName = require("../utils/createTypeName");
|
|
|
13
13
|
|
|
14
14
|
var _utils = require("@webiny/utils");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _helpers = require("./helpers");
|
|
17
17
|
|
|
18
18
|
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; }
|
|
19
19
|
|
|
@@ -53,6 +53,19 @@ const appendTypename = (entries, typename) => {
|
|
|
53
53
|
});
|
|
54
54
|
});
|
|
55
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* We cast settings.models as object to have modelId because internally we know that it is so.
|
|
58
|
+
* Internal stuff so we are sure that settings.models contains what we require.
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
const getFieldModels = field => {
|
|
63
|
+
if (!field.settings || Array.isArray(field.settings.models) === false) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return field.settings.models;
|
|
68
|
+
};
|
|
56
69
|
|
|
57
70
|
const modelIdToTypeName = new Map();
|
|
58
71
|
const plugin = {
|
|
@@ -66,15 +79,28 @@ const plugin = {
|
|
|
66
79
|
model,
|
|
67
80
|
field
|
|
68
81
|
}) {
|
|
69
|
-
|
|
82
|
+
var _field$settings;
|
|
83
|
+
|
|
84
|
+
const models = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.models) || [];
|
|
85
|
+
const gqlType = models.length > 1 ? createUnionTypeName(model, field) : (0, _createTypeName.createReadTypeName)(models[0].modelId);
|
|
70
86
|
return field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`;
|
|
71
87
|
},
|
|
72
88
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
89
|
+
/**
|
|
90
|
+
* TS is complaining about mixed types for createResolver.
|
|
91
|
+
* TODO @ts-refactor @pavel Maybe we should have a single createResolver method?
|
|
92
|
+
*/
|
|
93
|
+
// @ts-ignore
|
|
94
|
+
createResolver(params) {
|
|
95
|
+
var _field$settings2;
|
|
96
|
+
|
|
97
|
+
const {
|
|
98
|
+
field
|
|
99
|
+
} = params; // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.
|
|
100
|
+
|
|
101
|
+
const models = ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.models) || [];
|
|
102
|
+
|
|
103
|
+
for (const item of models) {
|
|
78
104
|
modelIdToTypeName.set(item.modelId, (0, _createTypeName.createReadTypeName)(item.modelId));
|
|
79
105
|
}
|
|
80
106
|
|
|
@@ -83,14 +109,20 @@ const plugin = {
|
|
|
83
109
|
cms
|
|
84
110
|
} = context; // Get field value for this entry
|
|
85
111
|
|
|
86
|
-
const
|
|
112
|
+
const initialValue = parent[field.fieldId];
|
|
87
113
|
|
|
88
|
-
if (!
|
|
114
|
+
if (!initialValue) {
|
|
89
115
|
return null;
|
|
90
116
|
}
|
|
91
117
|
|
|
92
118
|
if (field.multipleValues) {
|
|
93
|
-
|
|
119
|
+
/**
|
|
120
|
+
* We cast because value really can be array and single value.
|
|
121
|
+
* At this point, we are 99% sure that it is an array (+ we check for it)
|
|
122
|
+
*/
|
|
123
|
+
const value = initialValue;
|
|
124
|
+
|
|
125
|
+
if (Array.isArray(value) === false || value.length === 0) {
|
|
94
126
|
return [];
|
|
95
127
|
}
|
|
96
128
|
|
|
@@ -120,8 +152,9 @@ const plugin = {
|
|
|
120
152
|
return appendTypename(entries, modelIdToTypeName.get(modelId));
|
|
121
153
|
});
|
|
122
154
|
return await Promise.all(getters).then(results => results.reduce((result, item) => result.concat(item), []));
|
|
123
|
-
}
|
|
155
|
+
}
|
|
124
156
|
|
|
157
|
+
const value = initialValue; // Get model manager, to get access to CRUD methods
|
|
125
158
|
|
|
126
159
|
const model = await cms.getModelManager(value.modelId);
|
|
127
160
|
let revisions; // `read` API works with `published` data
|
|
@@ -154,7 +187,11 @@ const plugin = {
|
|
|
154
187
|
|
|
155
188
|
for (const model of models) {
|
|
156
189
|
// Generate a dedicated union type for every `ref` field which has more than 1 content model assigned.
|
|
157
|
-
model.fields.filter(field =>
|
|
190
|
+
model.fields.filter(field => {
|
|
191
|
+
var _field$settings3;
|
|
192
|
+
|
|
193
|
+
return field.type === "ref" && (((_field$settings3 = field.settings) === null || _field$settings3 === void 0 ? void 0 : _field$settings3.models) || []).length > 1;
|
|
194
|
+
}).forEach(field => unionFields.push({
|
|
158
195
|
model,
|
|
159
196
|
field,
|
|
160
197
|
typeName: createUnionTypeName(model, field)
|
|
@@ -164,7 +201,7 @@ const plugin = {
|
|
|
164
201
|
const unionFieldsTypeDef = unionFields.map(({
|
|
165
202
|
field,
|
|
166
203
|
typeName
|
|
167
|
-
}) => `union ${typeName} = ${field.
|
|
204
|
+
}) => `union ${typeName} = ${getFieldModels(field).map(({
|
|
168
205
|
modelId
|
|
169
206
|
}) => (0, _createTypeName.createReadTypeName)(modelId)).join(" | ")}`).join("\n");
|
|
170
207
|
const filteringTypeDef = `
|
|
@@ -229,11 +266,7 @@ const plugin = {
|
|
|
229
266
|
createInputField({
|
|
230
267
|
field
|
|
231
268
|
}) {
|
|
232
|
-
|
|
233
|
-
return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [RefFieldInput!]", field);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": RefFieldInput", field);
|
|
269
|
+
return (0, _helpers.createGraphQLInputField)(field, "RefFieldInput");
|
|
237
270
|
},
|
|
238
271
|
|
|
239
272
|
createListFilters
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ref.ts"],"names":["createUnionTypeName","model","field","modelId","fieldId","createListFilters","createFilteringTypeDef","appendTypename","entries","typename","map","item","__typename","getFieldModels","settings","Array","isArray","models","modelIdToTypeName","Map","plugin","name","type","fieldType","isSortable","isSearchable","read","createTypeField","gqlType","length","multipleValues","createResolver","params","set","parent","_","context","cms","initialValue","value","entriesByModel","reduce","collection","ref","includes","entryId","push","getters","Object","keys","idList","getModelManager","READ","getPublishedByIds","getLatestByIds","get","Promise","all","then","results","result","concat","revisions","createSchema","unionFields","fields","filter","forEach","typeName","unionFieldsTypeDef","join","filteringTypeDef","typeDefs","resolvers","manage","RefField","id","createInputField"],"mappings":"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","sourcesContent":["import {\n CmsEntry,\n CmsContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModel,\n CmsModelField\n} from \"~/types\";\nimport { createReadTypeName } from \"~/content/plugins/utils/createTypeName\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface RefFieldValue {\n id?: string;\n entryId: string;\n modelId: string;\n}\n\ninterface UnionField {\n model: CmsModel;\n field: CmsModelField;\n typeName: string;\n}\n\nconst createUnionTypeName = (model: CmsModel, field: CmsModelField) => {\n return `${createReadTypeName(model.modelId)}${createReadTypeName(field.fieldId)}`;\n};\n\ninterface CreateListFilterParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFilterParams) => {\n return `\n ${field.fieldId}: RefFieldWhereInput\n `;\n};\n\nconst createFilteringTypeDef = () => {\n return `\n input RefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n `;\n};\n\nconst appendTypename = (entries: CmsEntry[], typename: string): CmsEntry[] => {\n return entries.map(item => {\n return {\n ...item,\n __typename: typename\n };\n });\n};\n/**\n * We cast settings.models as object to have modelId because internally we know that it is so.\n * Internal stuff so we are sure that settings.models contains what we require.\n */\nconst getFieldModels = (field: CmsModelField): Pick<CmsModel, \"modelId\">[] => {\n if (!field.settings || Array.isArray(field.settings.models) === false) {\n return [];\n }\n return field.settings.models as Pick<CmsModel, \"modelId\">[];\n};\n\nconst modelIdToTypeName = new Map();\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-ref\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"ref\",\n isSortable: false,\n isSearchable: true,\n read: {\n createTypeField({ model, field }) {\n const models = field.settings?.models || [];\n const gqlType =\n models.length > 1\n ? createUnionTypeName(model, field)\n : createReadTypeName(models[0].modelId);\n\n return field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`;\n },\n /**\n * TS is complaining about mixed types for createResolver.\n * TODO @ts-refactor @pavel Maybe we should have a single createResolver method?\n */\n // @ts-ignore\n createResolver(params) {\n const { field } = params;\n // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.\n const models = field.settings?.models || [];\n for (const item of models) {\n modelIdToTypeName.set(item.modelId, createReadTypeName(item.modelId));\n }\n\n return async (parent, _, context: CmsContext) => {\n const { cms } = context;\n\n // Get field value for this entry\n const initialValue = parent[field.fieldId] as RefFieldValue | RefFieldValue[];\n\n if (!initialValue) {\n return null;\n }\n\n if (field.multipleValues) {\n /**\n * We cast because value really can be array and single value.\n * At this point, we are 99% sure that it is an array (+ we check for it)\n */\n const value = initialValue as RefFieldValue[];\n if (Array.isArray(value) === false || value.length === 0) {\n return [];\n }\n\n const entriesByModel = value.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.entryId) === true) {\n return collection;\n }\n\n collection[ref.modelId].push(ref.entryId);\n\n return collection;\n }, {} as Record<string, string[]>);\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(modelId);\n\n let entries: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n entries = await model.getPublishedByIds(idList);\n }\n // `preview` and `manage` with `latest` data\n else {\n entries = await model.getLatestByIds(idList);\n }\n\n return appendTypename(entries, modelIdToTypeName.get(modelId));\n });\n\n return await Promise.all(getters).then((results: any[]) =>\n results.reduce((result, item) => result.concat(item), [])\n );\n }\n\n const value = initialValue as RefFieldValue;\n\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(value.modelId);\n\n let revisions: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n revisions = await model.getPublishedByIds([value.entryId]);\n }\n // `preview` API works with `latest` data\n else {\n revisions = await model.getLatestByIds([value.entryId]);\n }\n\n /**\n * If there are no revisions we must return null.\n */\n if (!revisions || revisions.length === 0) {\n return null;\n }\n return {\n ...revisions[0],\n __typename: modelIdToTypeName.get(value.modelId)\n };\n };\n },\n createSchema({ models }) {\n const unionFields: UnionField[] = [];\n for (const model of models) {\n // Generate a dedicated union type for every `ref` field which has more than 1 content model assigned.\n model.fields\n .filter(\n field => field.type === \"ref\" && (field.settings?.models || []).length > 1\n )\n .forEach(field =>\n unionFields.push({\n model,\n field,\n typeName: createUnionTypeName(model, field)\n })\n );\n }\n const unionFieldsTypeDef = unionFields\n .map(\n ({ field, typeName }) =>\n `union ${typeName} = ${getFieldModels(field)\n .map(({ modelId }) => createReadTypeName(modelId))\n .join(\" | \")}`\n )\n .join(\"\\n\");\n\n const filteringTypeDef = `\n ${createFilteringTypeDef()}\n \n ${unionFieldsTypeDef}\n `;\n\n return {\n typeDefs: filteringTypeDef,\n resolvers: {}\n };\n },\n createListFilters\n },\n manage: {\n createSchema() {\n /**\n * entryId in RefFieldInput is deprecated but cannot mark it as GraphQL does not allow marking input fields as deprecated\n */\n return {\n typeDefs: `\n type RefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n \n input RefFieldInput {\n modelId: String!\n id: ID!\n }\n \n ${createFilteringTypeDef()}\n `,\n resolvers: {\n RefField: {\n entryId: (parent: RefFieldValue) => {\n const { id } = parseIdentifier(parent.entryId || parent.id);\n return id;\n },\n id: (parent: RefFieldValue) => {\n return parent.id || parent.entryId;\n }\n }\n }\n };\n },\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"RefFieldInput\");\n },\n createListFilters\n }\n};\n\nexport default plugin;\n"]}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _helpers = require("./helpers");
|
|
9
9
|
|
|
10
10
|
const plugin = {
|
|
11
11
|
name: "cms-model-field-to-graphql-rich-text",
|
|
@@ -45,11 +45,7 @@ const plugin = {
|
|
|
45
45
|
createInputField({
|
|
46
46
|
field
|
|
47
47
|
}) {
|
|
48
|
-
|
|
49
|
-
return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [JSON]", field);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": JSON", field);
|
|
48
|
+
return (0, _helpers.createGraphQLInputField)(field, "JSON");
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["richText.ts"],"names":["plugin","name","type","fieldType","isSortable","isSearchable","read","createTypeField","field","multipleValues","fieldId","createGetFilters","manage","createInputField"],"mappings":";;;;;;;AACA;;AAEA,MAAMA,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,sCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,WAH8B;AAIzCC,EAAAA,UAAU,EAAE,KAJ6B;AAKzCC,EAAAA,YAAY,EAAE,KAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFC,IAAAA,eAAe,CAAC;AAAEC,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACC,cAAV,EAA0B;AACtB,eAAQ,GAAED,KAAK,CAACE,OAAQ,UAAxB;AACH;;AAED,aAAQ,GAAEF,KAAK,CAACE,OAAQ,QAAxB;AACH,KAPC;;AAQFC,IAAAA,gBAAgB,CAAC;AAAEH,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAQ,GAAEA,KAAK,CAACE,OAAQ,QAAxB;AACH;;AAVC,GANmC;AAkBzCE,EAAAA,MAAM,EAAE;AACJL,IAAAA,eAAe,CAAC;AAAEC,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACC,cAAV,EAA0B;AACtB,eAAQ,GAAED,KAAK,CAACE,OAAQ,UAAxB;AACH;;AACD,aAAQ,GAAEF,KAAK,CAACE,OAAQ,QAAxB;AACH,KANG;;AAOJG,IAAAA,gBAAgB,CAAC;AAAEL,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,MAA/B,CAAP;AACH;;AATG;AAlBiC,CAA7C;eA+BeR,M","sourcesContent":["import { CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-rich-text\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"rich-text\",\n isSortable: false,\n isSearchable: false,\n read: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [JSON]`;\n }\n\n return `${field.fieldId}: JSON`;\n },\n createGetFilters({ field }) {\n return `${field.fieldId}: JSON`;\n }\n },\n manage: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [JSON]`;\n }\n return `${field.fieldId}: JSON`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"JSON\");\n }\n }\n};\n\nexport default plugin;\n"]}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _helpers = require("./helpers");
|
|
9
9
|
|
|
10
10
|
const createListFilters = ({
|
|
11
11
|
field
|
|
@@ -61,11 +61,7 @@ const plugin = {
|
|
|
61
61
|
createInputField({
|
|
62
62
|
field
|
|
63
63
|
}) {
|
|
64
|
-
|
|
65
|
-
return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [String]", field);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": String", field);
|
|
64
|
+
return (0, _helpers.createGraphQLInputField)(field, "String");
|
|
69
65
|
}
|
|
70
66
|
|
|
71
67
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["text.ts"],"names":["createListFilters","field","fieldId","plugin","name","type","fieldType","isSortable","isSearchable","read","createTypeField","multipleValues","createGetFilters","manage","createInputField"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,iBAAiB,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAAwC;AAC9D,SAAQ;AACZ,UAAUA,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,KAPI;AAQH,CATD;;AAWA,MAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,iCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,MAH8B;AAIzCC,EAAAA,UAAU,EAAE,IAJ6B;AAKzCC,EAAAA,YAAY,EAAE,IAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFC,IAAAA,eAAe,CAAC;AAAET,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACU,cAAV,EAA0B;AACtB,eAAQ,GAAEV,KAAK,CAACC,OAAQ,YAAxB;AACH;;AACD,aAAQ,GAAED,KAAK,CAACC,OAAQ,UAAxB;AACH,KANC;;AAOFU,IAAAA,gBAAgB,CAAC;AAAEX,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAQ,GAAEA,KAAK,CAACC,OAAQ,UAAxB;AACH,KATC;;AAUFF,IAAAA;AAVE,GANmC;AAkBzCa,EAAAA,MAAM,EAAE;AACJb,IAAAA,iBADI;;AAEJU,IAAAA,eAAe,CAAC;AAAET,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACU,cAAV,EAA0B;AACtB,eAAQ,GAAEV,KAAK,CAACC,OAAQ,YAAxB;AACH;;AACD,aAAQ,GAAED,KAAK,CAACC,OAAQ,UAAxB;AACH,KAPG;;AAQJY,IAAAA,gBAAgB,CAAC;AAAEb,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,QAA/B,CAAP;AACH;;AAVG;AAlBiC,CAA7C;eAgCeE,M","sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFiltersParams) => {\n return `\n ${field.fieldId}: String\n ${field.fieldId}_not: String\n ${field.fieldId}_in: [String]\n ${field.fieldId}_not_in: [String]\n ${field.fieldId}_contains: String\n ${field.fieldId}_not_contains: String\n `;\n};\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-text\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"text\",\n isSortable: true,\n isSearchable: true,\n read: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [String]`;\n }\n return `${field.fieldId}: String`;\n },\n createGetFilters({ field }) {\n return `${field.fieldId}: String`;\n },\n createListFilters\n },\n manage: {\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [String]`;\n }\n return `${field.fieldId}: String`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"String\");\n }\n }\n};\n\nexport default plugin;\n"]}
|
|
@@ -2,7 +2,7 @@ import { AuthenticationPlugin } from "@webiny/api-security/plugins/Authenticatio
|
|
|
2
2
|
import { SecurityIdentity } from "@webiny/api-security/types";
|
|
3
3
|
import { CmsContext } from "../../../types";
|
|
4
4
|
export declare class InternalAuthenticationPlugin extends AuthenticationPlugin {
|
|
5
|
-
private _identityType;
|
|
5
|
+
private readonly _identityType;
|
|
6
6
|
constructor(identityType: string);
|
|
7
7
|
authenticate(context: CmsContext): Promise<undefined | SecurityIdentity>;
|
|
8
8
|
}
|
|
@@ -11,6 +11,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
11
11
|
|
|
12
12
|
var _AuthenticationPlugin = require("@webiny/api-security/plugins/AuthenticationPlugin");
|
|
13
13
|
|
|
14
|
+
// TODO @ts-refactor @pavel
|
|
14
15
|
// @ts-nocheck
|
|
15
16
|
class InternalAuthenticationPlugin extends _AuthenticationPlugin.AuthenticationPlugin {
|
|
16
17
|
constructor(identityType) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["InternalAuthenticationPlugin.ts"],"names":["InternalAuthenticationPlugin","AuthenticationPlugin","constructor","identityType","_identityType","authenticate","context","headers","http","request","header","apiKey","split","pop","cms","getReadAPIKey","id","displayName","type","permissions","name"],"mappings":";;;;;;;;;;;AAEA;;AAFA;AACA;AAKO,MAAMA,4BAAN,SAA2CC,0CAA3C,CAAgE;AAG5DC,EAAAA,WAAW,CAACC,YAAD,EAAuB;AACrC;AADqC;AAGrC,SAAKC,aAAL,GAAqBD,YAArB;AACH;;AAEwB,QAAZE,YAAY,CAACC,OAAD,EAA6D;AAClF,UAAM;AAAEC,MAAAA;AAAF,QAAcD,OAAO,CAACE,IAAR,CAAaC,OAAjC;AACA,UAAMC,MAAM,GAAGH,OAAO,CAAC,eAAD,CAAP,IAA4BA,OAAO,CAAC,eAAD,CAAlD;AACA,UAAMI,MAAM,GAAGD,MAAM,GAAGA,MAAM,CAACE,KAAP,CAAa,GAAb,EAAkBC,GAAlB,EAAH,GAA6B,IAAlD;;AACA,QAAI,CAACF,MAAD,IAAWA,MAAM,MAAM,MAAML,OAAO,CAACQ,GAAR,CAAYC,aAAZ,EAAZ,CAArB,EAA+D;AAC3D;AACH;AAED;AACR;AACA;AACA;;;AACQ,WAAO;AACHC,MAAAA,EAAE,EAAE,cADD;AAEHC,MAAAA,WAAW,EAAE,cAFV;AAGHC,MAAAA,IAAI,EAAE,KAAKd,aAHR;AAIHe,MAAAA,WAAW,EAAE,CACT;AAAEC,QAAAA,IAAI,EAAE;AAAR,OADS,EAET;AAAEA,QAAAA,IAAI,EAAE;AAAR,OAFS,EAGT;AAAEA,QAAAA,IAAI,EAAE;AAAR,OAHS;AAJV,KAAP;AAUH;;AA/BkE","sourcesContent":["// TODO @ts-refactor @pavel\n// @ts-nocheck\nimport { AuthenticationPlugin } from \"@webiny/api-security/plugins/AuthenticationPlugin\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { CmsContext } from \"~/types\";\n\nexport class InternalAuthenticationPlugin extends AuthenticationPlugin {\n private readonly _identityType: string;\n\n public constructor(identityType: string) {\n super();\n\n this._identityType = identityType;\n }\n\n public async authenticate(context: CmsContext): Promise<undefined | SecurityIdentity> {\n const { headers } = context.http.request;\n const header = headers[\"Authorization\"] || headers[\"authorization\"];\n const apiKey = header ? header.split(\" \").pop() : null;\n if (!apiKey || apiKey !== (await context.cms.getReadAPIKey())) {\n return;\n }\n\n /**\n * This is an internal identity, which has access to `read` endpoint, all content models,\n * content entries, and all content locales.\n */\n return {\n id: \"read-api-key\",\n displayName: \"Read API key\",\n type: this._identityType,\n permissions: [\n { name: \"cms.endpoint.read\" },\n { name: \"cms.content*\" },\n { name: \"content.i18n\" }\n ]\n };\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AuthorizationPlugin } from "@webiny/api-security/plugins/AuthorizationPlugin";
|
|
2
2
|
import { CmsContext } from "../../../types";
|
|
3
3
|
export declare class InternalAuthorizationPlugin extends AuthorizationPlugin {
|
|
4
|
-
private _identityType;
|
|
4
|
+
private readonly _identityType;
|
|
5
5
|
constructor(identityType: string);
|
|
6
6
|
getPermissions(context: CmsContext): any;
|
|
7
7
|
}
|
|
@@ -11,6 +11,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
11
11
|
|
|
12
12
|
var _AuthorizationPlugin = require("@webiny/api-security/plugins/AuthorizationPlugin");
|
|
13
13
|
|
|
14
|
+
// TODO @ts-refactor @pavel
|
|
14
15
|
// @ts-nocheck
|
|
15
16
|
class InternalAuthorizationPlugin extends _AuthorizationPlugin.AuthorizationPlugin {
|
|
16
17
|
constructor(identityType) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["InternalAuthorizationPlugin.ts"],"names":["InternalAuthorizationPlugin","AuthorizationPlugin","constructor","identityType","_identityType","getPermissions","context","identity","security","getIdentity","type","permissions"],"mappings":";;;;;;;;;;;AAEA;;AAFA;AACA;AAIO,MAAMA,2BAAN,SAA0CC,wCAA1C,CAA8D;AAG1DC,EAAAA,WAAW,CAACC,YAAD,EAAuB;AACrC;AADqC;AAGrC,SAAKC,aAAL,GAAqBD,YAArB;AACH;;AAEME,EAAAA,cAAc,CAACC,OAAD,EAAsB;AACvC,UAAMC,QAAQ,GAAGD,OAAO,CAACE,QAAR,CAAiBC,WAAjB,EAAjB;;AAEA,QAAI,CAACF,QAAD,IAAaA,QAAQ,CAACG,IAAT,KAAkB,KAAKN,aAAxC,EAAuD;AACnD;AACH,KALsC,CAOvC;;;AACA,WAAOG,QAAQ,CAACI,WAAhB;AACH;;AAlBgE","sourcesContent":["// TODO @ts-refactor @pavel\n// @ts-nocheck\nimport { AuthorizationPlugin } from \"@webiny/api-security/plugins/AuthorizationPlugin\";\nimport { CmsContext } from \"~/types\";\n\nexport class InternalAuthorizationPlugin extends AuthorizationPlugin {\n private readonly _identityType: string;\n\n public constructor(identityType: string) {\n super();\n\n this._identityType = identityType;\n }\n\n public getPermissions(context: CmsContext) {\n const identity = context.security.getIdentity();\n\n if (!identity || identity.type !== this._identityType) {\n return;\n }\n\n // Return permissions we defined in the authentication plugin.\n return identity.permissions;\n }\n}\n"]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { CmsModelManager, CmsModel, CmsContext, CmsEntryListParams } from "../../../types";
|
|
1
|
+
import { CmsModelManager, CmsModel, CmsContext, CmsEntryListParams, CreateCmsEntryInput, UpdateCmsEntryInput } from "../../../types";
|
|
2
2
|
export declare class DefaultCmsModelManager implements CmsModelManager {
|
|
3
3
|
private readonly _context;
|
|
4
4
|
private readonly _model;
|
|
5
5
|
constructor(context: CmsContext, model: CmsModel);
|
|
6
|
-
create(data:
|
|
6
|
+
create(data: CreateCmsEntryInput): Promise<import("../../../types").CmsEntry>;
|
|
7
7
|
delete(id: string): Promise<void>;
|
|
8
8
|
get(id: string): Promise<import("../../../types").CmsEntry>;
|
|
9
9
|
listPublished(params: CmsEntryListParams): Promise<[import("../../../types").CmsEntry[], import("../../../types").CmsEntryMeta]>;
|
|
10
10
|
listLatest(params: CmsEntryListParams): Promise<[import("../../../types").CmsEntry[], import("../../../types").CmsEntryMeta]>;
|
|
11
11
|
getPublishedByIds(ids: string[]): Promise<import("../../../types").CmsEntry[]>;
|
|
12
12
|
getLatestByIds(ids: string[]): Promise<import("../../../types").CmsEntry[]>;
|
|
13
|
-
update(id:
|
|
13
|
+
update(id: string, data: UpdateCmsEntryInput): Promise<import("../../../types").CmsEntry>;
|
|
14
14
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["DefaultCmsModelManager.ts"],"names":["DefaultCmsModelManager","constructor","context","model","_context","_model","create","data","cms","createEntry","delete","id","version","deleteEntryRevision","deleteEntry","get","getEntryById","listPublished","params","listPublishedEntries","listLatest","listLatestEntries","getPublishedByIds","ids","getPublishedEntriesByIds","getLatestByIds","getLatestEntriesByIds","update","updateEntry"],"mappings":";;;;;;;;;;;AAQA;;AAEO,MAAMA,sBAAN,CAAwD;AAIpDC,EAAAA,WAAW,CAACC,OAAD,EAAsBC,KAAtB,EAAuC;AAAA;AAAA;AACrD,SAAKC,QAAL,GAAgBF,OAAhB;AACA,SAAKG,MAAL,GAAcF,KAAd;AACH;;AAEkB,QAANG,MAAM,CAACC,IAAD,EAA4B;AAC3C,WAAO,KAAKH,QAAL,CAAcI,GAAd,CAAkBC,WAAlB,CAA8B,KAAKJ,MAAnC,EAA2CE,IAA3C,CAAP;AACH;;AAEkB,QAANG,MAAM,CAACC,EAAD,EAAa;AAC5B,UAAM;AAAEC,MAAAA;AAAF,QAAc,4BAAgBD,EAAhB,CAApB;;AACA,QAAIC,OAAJ,EAAa;AACT,aAAO,KAAKR,QAAL,CAAcI,GAAd,CAAkBK,mBAAlB,CAAsC,KAAKR,MAA3C,EAAmDM,EAAnD,CAAP;AACH;;AAED,WAAO,KAAKP,QAAL,CAAcI,GAAd,CAAkBM,WAAlB,CAA8B,KAAKT,MAAnC,EAA2CM,EAA3C,CAAP;AACH;;AAEe,QAAHI,GAAG,CAACJ,EAAD,EAAa;AACzB,WAAO,KAAKP,QAAL,CAAcI,GAAd,CAAkBQ,YAAlB,CAA+B,KAAKX,MAApC,EAA4CM,EAA5C,CAAP;AACH;;AAEyB,QAAbM,aAAa,CAACC,MAAD,EAA6B;AACnD,WAAO,KAAKd,QAAL,CAAcI,GAAd,CAAkBW,oBAAlB,CAAuC,KAAKd,MAA5C,EAAoDa,MAApD,CAAP;AACH;;AAEsB,QAAVE,UAAU,CAACF,MAAD,EAA6B;AAChD,WAAO,KAAKd,QAAL,CAAcI,GAAd,CAAkBa,iBAAlB,CAAoC,KAAKhB,MAAzC,EAAiDa,MAAjD,CAAP;AACH;;AAE6B,QAAjBI,iBAAiB,CAACC,GAAD,EAAgB;AAC1C,WAAO,KAAKnB,QAAL,CAAcI,GAAd,CAAkBgB,wBAAlB,CAA2C,KAAKnB,MAAhD,EAAwDkB,GAAxD,CAAP;AACH;;AAE0B,QAAdE,cAAc,CAACF,GAAD,EAAgB;AACvC,WAAO,KAAKnB,QAAL,CAAcI,GAAd,CAAkBkB,qBAAlB,CAAwC,KAAKrB,MAA7C,EAAqDkB,GAArD,CAAP;AACH;;AAEkB,QAANI,MAAM,CAAChB,EAAD,EAAaJ,IAAb,EAAwC;AACvD,WAAO,KAAKH,QAAL,CAAcI,GAAd,CAAkBoB,WAAlB,CAA8B,KAAKvB,MAAnC,EAA2CM,EAA3C,EAA+CJ,IAA/C,CAAP;AACH;;AA5C0D","sourcesContent":["import {\n CmsModelManager,\n CmsModel,\n CmsContext,\n CmsEntryListParams,\n CreateCmsEntryInput,\n UpdateCmsEntryInput\n} from \"~/types\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nexport class DefaultCmsModelManager implements CmsModelManager {\n private readonly _context: CmsContext;\n private readonly _model: CmsModel;\n\n public constructor(context: CmsContext, model: CmsModel) {\n this._context = context;\n this._model = model;\n }\n\n public async create(data: CreateCmsEntryInput) {\n return this._context.cms.createEntry(this._model, data);\n }\n\n public async delete(id: string) {\n const { version } = parseIdentifier(id);\n if (version) {\n return this._context.cms.deleteEntryRevision(this._model, id);\n }\n\n return this._context.cms.deleteEntry(this._model, id);\n }\n\n public async get(id: string) {\n return this._context.cms.getEntryById(this._model, id);\n }\n\n public async listPublished(params: CmsEntryListParams) {\n return this._context.cms.listPublishedEntries(this._model, params);\n }\n\n public async listLatest(params: CmsEntryListParams) {\n return this._context.cms.listLatestEntries(this._model, params);\n }\n\n public async getPublishedByIds(ids: string[]) {\n return this._context.cms.getPublishedEntriesByIds(this._model, ids);\n }\n\n public async getLatestByIds(ids: string[]) {\n return this._context.cms.getLatestEntriesByIds(this._model, ids);\n }\n\n public async update(id: string, data: UpdateCmsEntryInput) {\n return this._context.cms.updateEntry(this._model, id, data);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["plugin","type","name","create","context","model","DefaultCmsModelManager"],"mappings":";;;;;;;AACA;;AAEA,MAAMA,MAA0B,GAAG;AAC/BC,EAAAA,IAAI,EAAE,2BADyB;AAE/BC,EAAAA,IAAI,EAAE,+BAFyB;AAG/BC,EAAAA,MAAM,EAAE,OAAOC,OAAP,EAAgBC,KAAhB,KAA0B;AAC9B,WAAO,IAAIC,8CAAJ,CAA2BF,OAA3B,EAAoCC,KAApC,CAAP;AACH;AAL8B,CAAnC;;eAQe,MAAML,M","sourcesContent":["import { ModelManagerPlugin } from \"~/types\";\nimport { DefaultCmsModelManager } from \"./DefaultCmsModelManager\";\n\nconst plugin: ModelManagerPlugin = {\n type: \"cms-content-model-manager\",\n name: \"content-model-manager-default\",\n create: async (context, model) => {\n return new DefaultCmsModelManager(context, model);\n }\n};\n\nexport default () => plugin;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["baseSchema.ts"],"names":["baseSchema","context","scalars","plugins","byType","map","item","scalar","GraphQLSchemaPlugin","typeDefs","name","join","resolvers","reduce","acc","s","JSON","JsonScalar","Long","LongScalar","RefInput","Number","NumberScalar","Any","AnyScalar","DateTime","DateTimeScalar","DateTimeZ","DateTimeZScalar","Date","DateScalar","Time","TimeScalar","Mutation","_empty"],"mappings":";;;;;;;;;;;AAEA;;AAWA;;;;;;AAGA,MAAMA,UAAU,GAAIC,OAAD,IAA8C;AAC7D,QAAMC,OAAO,GAAGD,OAAO,CAACE,OAAR,CACXC,MADW,CACiB,gBADjB,EAEXC,GAFW,CAEPC,IAAI,IAAIA,IAAI,CAACC,MAFN,CAAhB;AAIA,SAAO,IAAIC,wCAAJ,CAAwB;AAC3BC,IAAAA,QAAQ;AAAE;AAAe;AACjC,cAAcP,OAAO,CAACG,GAAR,CAAYE,MAAM,IAAK,UAASA,MAAM,CAACG,IAAK,EAA5C,EAA+CC,IAA/C,CAAoD,GAApD,CAAyD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SArDmC;AAsD3BC,IAAAA,SAAS,kCACFV,OAAO,CAACW,MAAR,CAAe,CAACC,GAAD,EAAMC,CAAN,KAAY;AAC1BD,MAAAA,GAAG,CAACC,CAAC,CAACL,IAAH,CAAH,GAAcK,CAAd;AACA,aAAOD,GAAP;AACH,KAHE,EAGA,EAHA,CADE;AAKLE,MAAAA,IAAI,EAAEC,wBALD;AAMLC,MAAAA,IAAI,EAAEC,wBAND;AAOLC,MAAAA,QAAQ,EAARA,sBAPK;AAQLC,MAAAA,MAAM,EAAEC,oBARH;AASLC,MAAAA,GAAG,EAAEC,iBATA;AAULC,MAAAA,QAAQ,EAAEC,4BAVL;AAWLC,MAAAA,SAAS,EAAEC,6BAXN;AAYLC,MAAAA,IAAI,EAAEC,wBAZD;AAaLC,MAAAA,IAAI,EAAEC,wBAbD;AAcLC,MAAAA,QAAQ,EAAE;AACNC,QAAAA,MAAM,EAAE,MAAM;AADR;AAdL;AAtDkB,GAAxB,CAAP;AAyEH,CA9ED;;eAgFelC,U","sourcesContent":["import { GraphQLScalarPlugin } from \"@webiny/handler-graphql/types\";\nimport { CmsContext } from \"~/types\";\nimport {\n RefInput,\n Number as NumberScalar,\n Any as AnyScalar,\n DateTimeScalar,\n DateScalar,\n TimeScalar,\n LongScalar,\n JsonScalar,\n DateTimeZScalar\n} from \"@webiny/handler-graphql/builtInTypes\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { GraphQLScalarType } from \"graphql\";\n\nconst baseSchema = (context: CmsContext): GraphQLSchemaPlugin => {\n const scalars = context.plugins\n .byType<GraphQLScalarPlugin>(\"graphql-scalar\")\n .map(item => item.scalar);\n\n return new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n ${scalars.map(scalar => `scalar ${scalar.name}`).join(\" \")}\n scalar JSON\n scalar Long\n scalar RefInput\n scalar Number\n scalar Any\n scalar Date\n scalar DateTime\n scalar DateTimeZ\n scalar Time\n\n type Query\n\n type Mutation {\n _empty: String\n }\n\n type CmsError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type CmsListMeta {\n cursor: String\n hasMoreItems: Boolean\n totalCount: Int\n }\n\n type CmsDeleteResponse {\n data: Boolean\n error: CmsError\n }\n\n type CmsBooleanResponse {\n data: Boolean\n error: CmsError\n }\n\n type CmsCreatedBy {\n id: String\n displayName: String\n type: String\n }\n\n type CmsOwnedBy {\n id: String\n displayName: String\n type: String\n }\n `,\n resolvers: {\n ...scalars.reduce((acc, s) => {\n acc[s.name] = s;\n return acc;\n }, {} as Record<string, GraphQLScalarType>),\n JSON: JsonScalar,\n Long: LongScalar,\n RefInput,\n Number: NumberScalar,\n Any: AnyScalar,\n DateTime: DateTimeScalar,\n DateTimeZ: DateTimeZScalar,\n Date: DateScalar,\n Time: TimeScalar,\n Mutation: {\n _empty: () => \"_empty\"\n }\n }\n });\n};\n\nexport default baseSchema;\n"]}
|
|
@@ -15,7 +15,10 @@ var _getEntryTitle = require("../utils/getEntryTitle");
|
|
|
15
15
|
|
|
16
16
|
const plugin = context => {
|
|
17
17
|
if (!context.cms.MANAGE) {
|
|
18
|
-
return
|
|
18
|
+
return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
19
|
+
typeDefs: "",
|
|
20
|
+
resolvers: {}
|
|
21
|
+
});
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
@@ -76,7 +79,9 @@ const plugin = context => {
|
|
|
76
79
|
const getters = models.filter(model => modelIds.includes(model.modelId)).map(async model => {
|
|
77
80
|
const latest = query === "__latest__";
|
|
78
81
|
const modelManager = await context.cms.getModelManager(model.modelId);
|
|
79
|
-
const where = {
|
|
82
|
+
const where = {
|
|
83
|
+
tenant: model.tenant
|
|
84
|
+
};
|
|
80
85
|
|
|
81
86
|
if (!latest) {
|
|
82
87
|
where[`${model.titleFieldId}_contains`] = query;
|
|
@@ -118,7 +123,8 @@ const plugin = context => {
|
|
|
118
123
|
});
|
|
119
124
|
}
|
|
120
125
|
|
|
121
|
-
const
|
|
126
|
+
const result = await context.cms.getEntriesByIds(model, [id]);
|
|
127
|
+
const [entry] = result;
|
|
122
128
|
return new _handlerGraphql.Response({
|
|
123
129
|
id: entry.id,
|
|
124
130
|
model: {
|
|
@@ -136,10 +142,11 @@ const plugin = context => {
|
|
|
136
142
|
collection[model.modelId] = model;
|
|
137
143
|
return collection;
|
|
138
144
|
}, {});
|
|
139
|
-
const
|
|
145
|
+
const argsEntries = args.entries;
|
|
146
|
+
const entriesByModel = argsEntries.reduce((collection, ref) => {
|
|
140
147
|
if (!collection[ref.modelId]) {
|
|
141
148
|
collection[ref.modelId] = [];
|
|
142
|
-
} else if (collection[ref.modelId].includes(ref.id)
|
|
149
|
+
} else if (collection[ref.modelId].includes(ref.id)) {
|
|
143
150
|
return collection;
|
|
144
151
|
}
|
|
145
152
|
|
|
@@ -0,0 +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"]}
|
|
@@ -74,8 +74,7 @@ const plugin = context => {
|
|
|
74
74
|
return models.filter(m => m.group === group.id).length;
|
|
75
75
|
},
|
|
76
76
|
plugin: async (group, _, context) => {
|
|
77
|
-
|
|
78
|
-
return Boolean(groupPlugin);
|
|
77
|
+
return context.plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type).some(item => item.contentModelGroup.id === group.id);
|
|
79
78
|
}
|
|
80
79
|
},
|
|
81
80
|
Query: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["contentModelGroups.ts"],"names":["plugin","context","manageSchema","cms","MANAGE","resolvers","CmsContentModelGroup","contentModels","group","_","security","disableAuthorization","models","listModels","enableAuthorization","filter","m","id","totalContentModels","length","plugins","byType","CmsGroupPlugin","type","some","item","contentModelGroup","Query","getContentModelGroup","args","model","getGroup","Response","e","ErrorResponse","listContentModelGroups","__","listGroups","Mutation","createContentModelGroup","createGroup","data","updateContentModelGroup","updateGroup","deleteContentModelGroup","deleteGroup","GraphQLSchemaPlugin","typeDefs"],"mappings":"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","sourcesContent":["import { ErrorResponse, Response } from \"@webiny/handler-graphql\";\n\nimport { CmsContext } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\n\nconst plugin = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n manageSchema = /* GraphQL */ `\n input CmsContentModelGroupInput {\n name: String!\n slug: String\n description: String\n icon: String!\n }\n\n type CmsContentModelGroupResponse {\n data: CmsContentModelGroup\n error: CmsError\n }\n\n type CmsContentModelGroupListResponse {\n data: [CmsContentModelGroup]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModelGroup(id: ID): CmsContentModelGroupResponse\n listContentModelGroups: CmsContentModelGroupListResponse\n }\n\n extend type Mutation {\n createContentModelGroup(\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n updateContentModelGroup(\n id: ID!\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n deleteContentModelGroup(id: ID!): CmsDeleteResponse\n }\n `;\n }\n\n let resolvers: Resolvers<CmsContext> = {};\n\n if (context.cms.MANAGE) {\n resolvers = {\n CmsContentModelGroup: {\n contentModels: async (group, _, context) => {\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n return models.filter(m => m.group.id === group.id);\n },\n totalContentModels: async (group, _, context) => {\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n return models.filter(m => m.group === group.id).length;\n },\n plugin: async (group, _, context: CmsContext): Promise<boolean> => {\n return context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .some(item => item.contentModelGroup.id === group.id);\n }\n },\n Query: {\n getContentModelGroup: async (_, args: any, context) => {\n try {\n const { id } = args;\n const model = await context.cms.getGroup(id);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModelGroups: async (_, __, context) => {\n try {\n const models = await context.cms.listGroups();\n return new Response(models);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n Mutation: {\n createContentModelGroup: async (_, args: any, context) => {\n try {\n const model = await context.cms.createGroup(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModelGroup: async (_, args: any, context) => {\n try {\n const group = await context.cms.updateGroup(args.id, args.data);\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModelGroup: async (_, args: any, context) => {\n try {\n await context.cms.deleteGroup(args.id);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n };\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsContentModelGroup {\n id: ID!\n createdOn: DateTime\n savedOn: DateTime\n name: String!\n contentModels: [CmsContentModel!]\n totalContentModels: Int!\n slug: String!\n description: String\n icon: String\n createdBy: CmsCreatedBy\n\n # Returns true if the content model group is registered via a plugin.\n plugin: Boolean!\n }\n ${manageSchema}\n `,\n resolvers\n });\n};\n\nexport default plugin;\n"]}
|
|
@@ -33,15 +33,14 @@ const plugin = context => {
|
|
|
33
33
|
},
|
|
34
34
|
CmsContentModel: {
|
|
35
35
|
plugin: async (model, _, context) => {
|
|
36
|
-
|
|
37
|
-
return Boolean(modelPlugin);
|
|
36
|
+
return context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type).some(item => item.contentModel.modelId === model.modelId);
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
39
|
};
|
|
41
40
|
let manageSchema = "";
|
|
42
41
|
|
|
43
42
|
if (context.cms.MANAGE) {
|
|
44
|
-
resolvers
|
|
43
|
+
resolvers["Mutation"] = {
|
|
45
44
|
createContentModel: async (_, args, context) => {
|
|
46
45
|
try {
|
|
47
46
|
const model = await context.cms.createModel(args.data);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["contentModels.ts"],"names":["plugin","context","resolvers","Query","getContentModel","_","args","model","cms","getModel","modelId","Response","e","ErrorResponse","listContentModels","__","listModels","CmsContentModel","plugins","byType","CmsModelPlugin","type","some","item","contentModel","manageSchema","MANAGE","createContentModel","createModel","data","createContentModelFrom","createModelFrom","updateContentModel","updateModel","deleteContentModel","deleteModel","GraphQLSchemaPlugin","typeDefs"],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SA3EQ;AA4EH;;AAED,SAAO,IAAIW,wCAAJ,CAAoC;AACvCC,IAAAA,QAAQ;AAAE;AAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcZ,YAAa;AAC3B,SAzE+C;AA0EvCvB,IAAAA;AA1EuC,GAApC,CAAP;AA4EH,CA9ND;;eAgOeF,M","sourcesContent":["import { ErrorResponse, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsModelPlugin } from \"~/content/plugins/CmsModelPlugin\";\n\nconst plugin = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n const resolvers: Resolvers<CmsContext> = {\n Query: {\n getContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.getModel(args.modelId);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModels: async (_: unknown, __: unknown, context: CmsContext) => {\n try {\n const model = await context.cms.listModels();\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n CmsContentModel: {\n plugin: async (model, _, context): Promise<boolean> => {\n return context.plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .some(item => item.contentModel.modelId === model.modelId);\n }\n }\n };\n\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n resolvers[\"Mutation\"] = {\n createContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModel(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n createContentModelFrom: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModelFrom(args.modelId, args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModel: async (_: unknown, args: any, context) => {\n const { modelId, data } = args;\n try {\n const model = await context.cms.updateModel(modelId, data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModel: async (_: unknown, args: any, context) => {\n const { modelId } = args;\n try {\n await context.cms.deleteModel(modelId);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n };\n\n manageSchema = /* GraphQL */ `\n input CmsPredefinedValueInput {\n label: String!\n value: String!\n selected: Boolean\n }\n\n input CmsPredefinedValuesInput {\n enabled: Boolean\n values: [CmsPredefinedValueInput]\n }\n input CmsFieldRendererInput {\n name: String\n }\n\n input CmsFieldValidationInput {\n name: String!\n message: String\n settings: JSON\n }\n\n input CmsContentModelFieldInput {\n id: ID!\n label: String!\n helpText: String\n placeholderText: String\n fieldId: String!\n type: String!\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValuesInput\n renderer: CmsFieldRendererInput\n validation: [CmsFieldValidationInput]\n listValidation: [CmsFieldValidationInput]\n settings: JSON\n }\n\n input CmsContentModelCreateInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n }\n\n input CmsContentModelCreateFromInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n locale: String\n }\n\n input CmsContentModelUpdateInput {\n name: String\n group: RefInput\n description: String\n layout: [[ID!]!]!\n fields: [CmsContentModelFieldInput!]!\n titleFieldId: String\n }\n\n extend type Mutation {\n createContentModel(data: CmsContentModelCreateInput!): CmsContentModelResponse\n\n createContentModelFrom(\n modelId: ID!\n data: CmsContentModelCreateFromInput!\n ): CmsContentModelResponse\n\n updateContentModel(\n modelId: ID!\n data: CmsContentModelUpdateInput!\n ): CmsContentModelResponse\n\n deleteContentModel(modelId: ID!): CmsDeleteResponse\n }\n `;\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsFieldValidation {\n name: String!\n message: String\n settings: JSON\n }\n\n type CmsFieldRenderer {\n name: String\n }\n\n type CmsPredefinedValue {\n label: String\n value: String\n selected: Boolean\n }\n\n type CmsPredefinedValues {\n enabled: Boolean\n values: [CmsPredefinedValue]\n }\n\n type CmsContentModelField {\n id: ID!\n fieldId: String!\n label: String!\n helpText: String\n placeholderText: String\n type: String!\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValues\n renderer: CmsFieldRenderer\n validation: [CmsFieldValidation!]\n listValidation: [CmsFieldValidation!]\n settings: JSON\n }\n\n type CmsContentModel {\n name: String!\n modelId: String!\n description: String\n group: CmsContentModelGroup!\n createdOn: DateTime\n savedOn: DateTime\n createdBy: CmsCreatedBy\n fields: [CmsContentModelField!]!\n lockedFields: [JSON]\n layout: [[String!]!]!\n titleFieldId: String\n\n # Returns true if the content model is registered via a plugin.\n plugin: Boolean!\n }\n\n type CmsContentModelResponse {\n data: CmsContentModel\n error: CmsError\n }\n\n type CmsContentModelListResponse {\n data: [CmsContentModel]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModel(modelId: ID!, where: JSON, sort: String): CmsContentModelResponse\n\n listContentModels: CmsContentModelListResponse\n }\n\n ${manageSchema}\n `,\n resolvers\n });\n};\n\nexport default plugin;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CmsModelField } from "../../../types";
|
|
1
|
+
import { CmsModelField, ApiEndpoint, CmsModel, CmsFieldTypePlugins } from "../../../types";
|
|
2
2
|
import { Resolvers } from "@webiny/handler-graphql/types";
|
|
3
3
|
interface CreateFieldResolvers {
|
|
4
4
|
graphQLType: string;
|
|
@@ -6,14 +6,15 @@ interface CreateFieldResolvers {
|
|
|
6
6
|
isRoot: boolean;
|
|
7
7
|
extraResolvers?: Resolvers<any>;
|
|
8
8
|
}
|
|
9
|
+
interface CreateFieldResolversFactoryParams {
|
|
10
|
+
endpointType: ApiEndpoint;
|
|
11
|
+
models: CmsModel[];
|
|
12
|
+
model: CmsModel;
|
|
13
|
+
fieldTypePlugins: CmsFieldTypePlugins;
|
|
14
|
+
}
|
|
9
15
|
/**
|
|
10
16
|
* We use a factory to avoid passing the parameters for recursive invocations.
|
|
11
17
|
* This way they will always be in the function scope and we can only pass "fields".
|
|
12
18
|
*/
|
|
13
|
-
export declare
|
|
14
|
-
endpointType: any;
|
|
15
|
-
models: any;
|
|
16
|
-
model: any;
|
|
17
|
-
fieldTypePlugins: any;
|
|
18
|
-
}): (params: CreateFieldResolvers) => {};
|
|
19
|
+
export declare const createFieldResolversFactory: (factoryParams: CreateFieldResolversFactoryParams) => (params: CreateFieldResolvers) => {};
|
|
19
20
|
export {};
|
|
@@ -5,12 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.createFieldResolversFactory =
|
|
8
|
+
exports.createFieldResolversFactory = void 0;
|
|
9
9
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
12
|
-
var _get = _interopRequireDefault(require("lodash/get"));
|
|
13
|
-
|
|
14
12
|
var _set = _interopRequireDefault(require("lodash/set"));
|
|
15
13
|
|
|
16
14
|
var _entryStorage = require("../utils/entryStorage");
|
|
@@ -19,16 +17,28 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
19
17
|
|
|
20
18
|
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; }
|
|
21
19
|
|
|
20
|
+
const getCreateResolver = (plugins, field, endpointType) => {
|
|
21
|
+
if (!plugins[field.type]) {
|
|
22
|
+
return null;
|
|
23
|
+
} else if (!plugins[field.type][endpointType]) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return plugins[field.type][endpointType].createResolver;
|
|
28
|
+
};
|
|
22
29
|
/**
|
|
23
30
|
* We use a factory to avoid passing the parameters for recursive invocations.
|
|
24
31
|
* This way they will always be in the function scope and we can only pass "fields".
|
|
25
32
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
const createFieldResolversFactory = factoryParams => {
|
|
36
|
+
const {
|
|
37
|
+
endpointType,
|
|
38
|
+
models,
|
|
39
|
+
model,
|
|
40
|
+
fieldTypePlugins
|
|
41
|
+
} = factoryParams;
|
|
32
42
|
return function createFieldResolvers(params) {
|
|
33
43
|
const {
|
|
34
44
|
graphQLType,
|
|
@@ -46,7 +56,7 @@ function createFieldResolversFactory({
|
|
|
46
56
|
continue;
|
|
47
57
|
}
|
|
48
58
|
|
|
49
|
-
const createResolver = (
|
|
59
|
+
const createResolver = getCreateResolver(fieldTypePlugins, field, endpointType);
|
|
50
60
|
let resolver;
|
|
51
61
|
const fieldResolver = createResolver ? createResolver({
|
|
52
62
|
graphQLType,
|
|
@@ -71,7 +81,8 @@ function createFieldResolversFactory({
|
|
|
71
81
|
|
|
72
82
|
const {
|
|
73
83
|
fieldId
|
|
74
|
-
} = field;
|
|
84
|
+
} = field; // TODO @ts-refactor figure out types for parameters
|
|
85
|
+
// @ts-ignore
|
|
75
86
|
|
|
76
87
|
fieldResolvers[fieldId] = async (parent, args, context, info) => {
|
|
77
88
|
// Get transformed value (eg. data decompression)
|
|
@@ -95,4 +106,6 @@ function createFieldResolversFactory({
|
|
|
95
106
|
[graphQLType]: fieldResolvers
|
|
96
107
|
}, typeResolvers);
|
|
97
108
|
};
|
|
98
|
-
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
exports.createFieldResolversFactory = createFieldResolversFactory;
|