@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.60e968001a
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/context.d.ts +5 -2
- package/context.js +63 -8
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.d.ts +2 -2
- package/crud/contentEntry/afterDelete.js +2 -2
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.d.ts +2 -2
- package/crud/contentEntry/beforeCreate.js +2 -2
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.d.ts +2 -2
- package/crud/contentEntry/beforeUpdate.js +2 -2
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +3 -7
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +10 -11
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +11 -13
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +83 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.d.ts +0 -2
- package/crud/contentEntry.crud.js +253 -270
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.d.ts +3 -3
- package/crud/contentModel/afterCreate.js +5 -5
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.d.ts +3 -3
- package/crud/contentModel/afterCreateFrom.js +5 -5
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.d.ts +3 -3
- package/crud/contentModel/afterDelete.js +5 -5
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.d.ts +3 -3
- package/crud/contentModel/afterUpdate.js +5 -5
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +4 -4
- package/crud/contentModel/beforeCreate.js +10 -10
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.d.ts +3 -3
- package/crud/contentModel/beforeDelete.js +6 -6
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +3 -3
- package/crud/contentModel/beforeUpdate.js +5 -5
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +5 -1
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/models.js +12 -0
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/validateModel.js +1 -1
- package/crud/contentModel/validateModelFields.js +47 -42
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +477 -0
- package/crud/contentModel/validation.js +109 -0
- package/crud/contentModel/validation.js.map +1 -0
- package/crud/contentModel.crud.js +287 -211
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
- package/crud/contentModelGroup/beforeCreate.js +3 -3
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
- package/crud/contentModelGroup/beforeDelete.js +3 -3
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
- package/crud/contentModelGroup/beforeUpdate.js +2 -2
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +30 -0
- package/crud/contentModelGroup/validation.js +43 -0
- package/crud/contentModelGroup/validation.js.map +1 -0
- package/crud/contentModelGroup.crud.js +102 -82
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/settings.crud.js +3 -8
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +63 -51
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +239 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +17 -19
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.d.ts +2 -1
- package/fieldConverters/index.js +3 -1
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.d.ts +2 -2
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +59 -29
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +2 -2
- package/graphql/index.js +49 -38
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.d.ts +2 -2
- package/graphql/schema/baseContentSchema.js +8 -12
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/contentEntries.d.ts +2 -2
- package/graphql/schema/contentEntries.js +6 -6
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.d.ts +2 -2
- package/graphql/schema/contentModelGroups.js +3 -3
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.d.ts +2 -2
- package/graphql/schema/contentModels.js +42 -4
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +26 -16
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +4 -18
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +2 -0
- package/graphql/schema/createManageSDL.js +11 -12
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +3 -7
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +8 -7
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +2 -0
- package/graphql/schema/createReadSDL.js +11 -5
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +5 -9
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +3 -7
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +3 -7
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/schemaPlugins.d.ts +2 -2
- package/graphql/schema/schemaPlugins.js +11 -8
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +79 -82
- package/graphql/system.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +234 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +21 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/index.d.ts +1 -1
- package/graphqlFields/index.js +3 -1
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/number.js +4 -0
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +123 -73
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +38 -56
- package/graphqlFields/ref.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +4 -8
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +7 -7
- package/modelManager/DefaultCmsModelManager.js +1 -1
- package/package.json +30 -31
- package/parameters/header.js +1 -1
- package/parameters/manual.js +7 -8
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +1 -1
- package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
- package/plugins/CmsGraphQLSchemaPlugin.js +17 -0
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +38 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
- package/plugins/CmsGroupPlugin.js +1 -1
- package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
- package/plugins/CmsModelFieldConverterPlugin.js +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +6 -2
- package/plugins/CmsModelPlugin.js +18 -13
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +1 -1
- package/plugins/StorageTransformPlugin.d.ts +11 -11
- package/plugins/StorageTransformPlugin.js +1 -1
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +26 -0
- package/plugins/index.js.map +1 -1
- package/storage/object.js +7 -8
- package/storage/object.js.map +1 -1
- package/types.d.ts +469 -180
- package/types.js +55 -9
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +5 -9
- package/upgrades/5.33.0/index.js.map +1 -1
- package/utils/converters/Converter.js +1 -1
- package/utils/converters/ConverterCollection.d.ts +7 -0
- package/utils/converters/ConverterCollection.js +36 -8
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +3 -7
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +15 -0
- package/utils/createTypeFromFields.js +75 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.js +4 -2
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +17 -18
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterModelFields.js +5 -9
- package/utils/filterModelFields.js.map +1 -1
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +12 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/permissions.js +1 -5
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +1 -1
- package/utils/renderFields.js +3 -1
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +8 -3
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +3 -1
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +12 -2
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +7 -4
- package/utils/renderSortEnum.js +23 -4
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +1 -1
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +24 -0
- package/validators/dynamicZone.js.map +1 -0
- package/validators/index.js +3 -1
- package/validators/index.js.map +1 -1
- package/validators/unique.js +1 -1
- package/crud/index.d.ts +0 -6
- package/crud/index.js +0 -89
- package/crud/index.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.createModelsCrud = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
11
|
|
|
12
12
|
var _dataloader = _interopRequireDefault(require("dataloader"));
|
|
13
13
|
|
|
14
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
15
|
+
|
|
14
16
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
15
17
|
|
|
16
18
|
var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
|
|
17
19
|
|
|
18
|
-
var _models = require("./contentModel/models");
|
|
19
|
-
|
|
20
|
-
var _createFieldModels = require("./contentModel/createFieldModels");
|
|
21
|
-
|
|
22
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
23
|
-
|
|
24
20
|
var _pubsub = require("@webiny/pubsub");
|
|
25
21
|
|
|
26
22
|
var _beforeCreate = require("./contentModel/beforeCreate");
|
|
@@ -49,60 +45,23 @@ var _access = require("../utils/access");
|
|
|
49
45
|
|
|
50
46
|
var _validateModelFields = require("./contentModel/validateModelFields");
|
|
51
47
|
|
|
52
|
-
var
|
|
48
|
+
var _validation = require("./contentModel/validation");
|
|
53
49
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
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; }
|
|
50
|
+
var _utils = require("@webiny/utils");
|
|
57
51
|
|
|
58
52
|
/**
|
|
59
|
-
*
|
|
60
|
-
* Required because of the 5.33.0 upgrade.
|
|
61
|
-
* Until the upgrade is done, API will break because there is no storageId assigned.
|
|
53
|
+
* Given a model, return an array of tags ensuring the `type` tag is set.
|
|
62
54
|
*/
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var _field$settings;
|
|
55
|
+
const ensureTypeTag = model => {
|
|
56
|
+
// Let's make sure we have a `type` tag assigned.
|
|
57
|
+
// If `type` tag is not set, set it to a default one (`model`).
|
|
58
|
+
const tags = model.tags || [];
|
|
68
59
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (!field.storageId) {
|
|
74
|
-
field.storageId = field.fieldId;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return field;
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
const attachStorageIdToModelFields = model => {
|
|
82
|
-
if (!model.webinyVersion) {
|
|
83
|
-
return model.fields;
|
|
60
|
+
if (!tags.some(tag => tag.startsWith("type:"))) {
|
|
61
|
+
tags.push("type:model");
|
|
84
62
|
}
|
|
85
63
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (!version) {
|
|
89
|
-
return model.fields;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Unfortunately we need to check for beta and next.
|
|
93
|
-
* TODO remove after 5.33.0
|
|
94
|
-
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (model.webinyVersion.match(/beta|next/)) {
|
|
98
|
-
return attachStorageIdToFields(model.fields);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (_semver.default.compare(version, featureVersion) >= 0) {
|
|
102
|
-
return model.fields;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return attachStorageIdToFields(model.fields);
|
|
64
|
+
return tags;
|
|
106
65
|
};
|
|
107
66
|
|
|
108
67
|
const createModelsCrud = params => {
|
|
@@ -122,8 +81,8 @@ const createModelsCrud = params => {
|
|
|
122
81
|
}
|
|
123
82
|
});
|
|
124
83
|
return [models.map(model => {
|
|
125
|
-
return
|
|
126
|
-
|
|
84
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
85
|
+
tags: ensureTypeTag(model),
|
|
127
86
|
tenant: model.tenant || getTenant().id,
|
|
128
87
|
locale: model.locale || getLocale().code
|
|
129
88
|
});
|
|
@@ -161,19 +120,20 @@ const createModelsCrud = params => {
|
|
|
161
120
|
*/
|
|
162
121
|
.filter(plugin => {
|
|
163
122
|
const {
|
|
164
|
-
tenant:
|
|
165
|
-
locale:
|
|
123
|
+
tenant: modelTenant,
|
|
124
|
+
locale: modelLocale
|
|
166
125
|
} = plugin.contentModel;
|
|
167
126
|
|
|
168
|
-
if (
|
|
127
|
+
if (modelTenant && modelTenant !== tenant) {
|
|
169
128
|
return false;
|
|
170
|
-
} else if (
|
|
129
|
+
} else if (modelLocale && modelLocale !== locale) {
|
|
171
130
|
return false;
|
|
172
131
|
}
|
|
173
132
|
|
|
174
133
|
return true;
|
|
175
134
|
}).map(plugin => {
|
|
176
|
-
return
|
|
135
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
|
|
136
|
+
tags: ensureTypeTag(plugin.contentModel),
|
|
177
137
|
tenant,
|
|
178
138
|
locale,
|
|
179
139
|
webinyVersion: context.WEBINY_VERSION
|
|
@@ -210,7 +170,8 @@ const createModelsCrud = params => {
|
|
|
210
170
|
throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
|
|
211
171
|
}
|
|
212
172
|
|
|
213
|
-
return
|
|
173
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
174
|
+
tags: ensureTypeTag(model),
|
|
214
175
|
tenant: model.tenant || getTenant().id,
|
|
215
176
|
locale: model.locale || getLocale().code
|
|
216
177
|
});
|
|
@@ -258,83 +219,131 @@ const createModelsCrud = params => {
|
|
|
258
219
|
|
|
259
220
|
return await updateManager(context, model);
|
|
260
221
|
};
|
|
222
|
+
/**
|
|
223
|
+
* Create
|
|
224
|
+
*/
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
|
|
228
|
+
const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
|
|
229
|
+
const onModelCreateError = (0, _pubsub.createTopic)("cms.onModelCreateError");
|
|
230
|
+
/**
|
|
231
|
+
* Create from / clone
|
|
232
|
+
*/
|
|
261
233
|
|
|
262
|
-
const
|
|
263
|
-
const
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
const
|
|
234
|
+
const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
|
|
235
|
+
const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
|
|
236
|
+
const onModelCreateFromError = (0, _pubsub.createTopic)("cms.onModelCreateFromError");
|
|
237
|
+
/**
|
|
238
|
+
* Update
|
|
239
|
+
*/
|
|
240
|
+
|
|
241
|
+
const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
|
|
242
|
+
const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
|
|
243
|
+
const onModelUpdateError = (0, _pubsub.createTopic)("cms.onModelUpdateError");
|
|
244
|
+
/**
|
|
245
|
+
* Delete
|
|
246
|
+
*/
|
|
247
|
+
|
|
248
|
+
const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
|
|
249
|
+
const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
|
|
250
|
+
const onModelDeleteError = (0, _pubsub.createTopic)("cms.onModelDeleteError");
|
|
251
|
+
/**
|
|
252
|
+
* Initialize
|
|
253
|
+
*/
|
|
254
|
+
|
|
255
|
+
const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
|
|
270
256
|
/**
|
|
271
257
|
* We need to assign some default behaviors.
|
|
272
258
|
*/
|
|
273
259
|
|
|
274
|
-
(0, _beforeCreate.
|
|
275
|
-
|
|
276
|
-
|
|
260
|
+
(0, _beforeCreate.assignModelBeforeCreate)({
|
|
261
|
+
onModelBeforeCreate,
|
|
262
|
+
onModelBeforeCreateFrom,
|
|
277
263
|
plugins: context.plugins,
|
|
278
264
|
storageOperations
|
|
279
265
|
});
|
|
280
|
-
(0, _afterCreate.
|
|
266
|
+
(0, _afterCreate.assignModelAfterCreate)({
|
|
281
267
|
context,
|
|
282
|
-
|
|
268
|
+
onModelAfterCreate
|
|
283
269
|
});
|
|
284
|
-
(0, _beforeUpdate.
|
|
285
|
-
|
|
270
|
+
(0, _beforeUpdate.assignModelBeforeUpdate)({
|
|
271
|
+
onModelBeforeUpdate,
|
|
286
272
|
plugins: context.plugins,
|
|
287
273
|
storageOperations
|
|
288
274
|
});
|
|
289
|
-
(0, _afterUpdate.
|
|
275
|
+
(0, _afterUpdate.assignModelAfterUpdate)({
|
|
290
276
|
context,
|
|
291
|
-
|
|
277
|
+
onModelAfterUpdate
|
|
292
278
|
});
|
|
293
|
-
(0, _afterCreateFrom.
|
|
279
|
+
(0, _afterCreateFrom.assignModelAfterCreateFrom)({
|
|
294
280
|
context,
|
|
295
|
-
|
|
281
|
+
onModelAfterCreateFrom
|
|
296
282
|
});
|
|
297
|
-
(0, _beforeDelete.
|
|
298
|
-
|
|
283
|
+
(0, _beforeDelete.assignModelBeforeDelete)({
|
|
284
|
+
onModelBeforeDelete,
|
|
299
285
|
plugins: context.plugins,
|
|
300
286
|
storageOperations
|
|
301
287
|
});
|
|
302
|
-
(0, _afterDelete.
|
|
288
|
+
(0, _afterDelete.assignModelAfterDelete)({
|
|
303
289
|
context,
|
|
304
|
-
|
|
290
|
+
onModelAfterDelete
|
|
305
291
|
});
|
|
306
292
|
return {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
293
|
+
/**
|
|
294
|
+
* Deprecated - will be removed in 5.36.0
|
|
295
|
+
*/
|
|
296
|
+
onBeforeModelCreate: onModelBeforeCreate,
|
|
297
|
+
onAfterModelCreate: onModelAfterCreate,
|
|
298
|
+
onBeforeModelCreateFrom: onModelBeforeCreateFrom,
|
|
299
|
+
onAfterModelCreateFrom: onModelAfterCreateFrom,
|
|
300
|
+
onBeforeModelUpdate: onModelBeforeUpdate,
|
|
301
|
+
onAfterModelUpdate: onModelAfterUpdate,
|
|
302
|
+
onBeforeModelDelete: onModelBeforeDelete,
|
|
303
|
+
onAfterModelDelete: onModelAfterDelete,
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Released in 5.34.0
|
|
307
|
+
*/
|
|
308
|
+
onModelBeforeCreate,
|
|
309
|
+
onModelAfterCreate,
|
|
310
|
+
onModelCreateError,
|
|
311
|
+
onModelBeforeCreateFrom,
|
|
312
|
+
onModelAfterCreateFrom,
|
|
313
|
+
onModelCreateFromError,
|
|
314
|
+
onModelBeforeUpdate,
|
|
315
|
+
onModelAfterUpdate,
|
|
316
|
+
onModelUpdateError,
|
|
317
|
+
onModelBeforeDelete,
|
|
318
|
+
onModelAfterDelete,
|
|
319
|
+
onModelDeleteError,
|
|
320
|
+
onModelInitialize,
|
|
315
321
|
clearModelsCache,
|
|
316
322
|
getModel,
|
|
317
323
|
listModels,
|
|
318
324
|
|
|
319
|
-
async createModel(
|
|
325
|
+
async createModel(input) {
|
|
320
326
|
await checkModelPermissions("w");
|
|
321
|
-
const
|
|
322
|
-
|
|
323
|
-
|
|
327
|
+
const result = await (0, _validation.createModelCreateValidation)().safeParseAsync(input);
|
|
328
|
+
|
|
329
|
+
if (!result.success) {
|
|
330
|
+
throw (0, _utils.createZodError)(result.error);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
const data = result.data;
|
|
324
334
|
context.security.disableAuthorization();
|
|
325
|
-
const group = await context.cms.getGroup(
|
|
335
|
+
const group = await context.cms.getGroup(data.group);
|
|
326
336
|
context.security.enableAuthorization();
|
|
327
337
|
|
|
328
338
|
if (!group) {
|
|
329
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
339
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
330
340
|
}
|
|
331
341
|
|
|
332
|
-
const fields = await (0, _createFieldModels.createFieldModels)(input.fields);
|
|
333
342
|
const identity = getIdentity();
|
|
334
343
|
const model = {
|
|
335
|
-
name:
|
|
336
|
-
description:
|
|
337
|
-
modelId:
|
|
344
|
+
name: data.name,
|
|
345
|
+
description: data.description || "",
|
|
346
|
+
modelId: data.modelId || "",
|
|
338
347
|
titleFieldId: "id",
|
|
339
348
|
locale: getLocale().code,
|
|
340
349
|
tenant: getTenant().id,
|
|
@@ -349,25 +358,37 @@ const createModelsCrud = params => {
|
|
|
349
358
|
},
|
|
350
359
|
createdOn: new Date().toISOString(),
|
|
351
360
|
savedOn: new Date().toISOString(),
|
|
352
|
-
fields,
|
|
361
|
+
fields: data.fields,
|
|
353
362
|
lockedFields: [],
|
|
354
|
-
layout:
|
|
363
|
+
layout: data.layout || [],
|
|
364
|
+
tags: [...(data.tags || [])],
|
|
355
365
|
webinyVersion: context.WEBINY_VERSION
|
|
356
366
|
};
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
model
|
|
369
|
-
|
|
370
|
-
|
|
367
|
+
model.tags = ensureTypeTag(model);
|
|
368
|
+
|
|
369
|
+
try {
|
|
370
|
+
await onModelBeforeCreate.publish({
|
|
371
|
+
input: data,
|
|
372
|
+
model
|
|
373
|
+
});
|
|
374
|
+
const createdModel = await storageOperations.models.create({
|
|
375
|
+
model
|
|
376
|
+
});
|
|
377
|
+
loaders.listModels.clearAll();
|
|
378
|
+
await updateManager(context, model);
|
|
379
|
+
await onModelAfterCreate.publish({
|
|
380
|
+
input: data,
|
|
381
|
+
model: createdModel
|
|
382
|
+
});
|
|
383
|
+
return createdModel;
|
|
384
|
+
} catch (ex) {
|
|
385
|
+
await onModelCreateError.publish({
|
|
386
|
+
input: data,
|
|
387
|
+
model,
|
|
388
|
+
error: ex
|
|
389
|
+
});
|
|
390
|
+
throw ex;
|
|
391
|
+
}
|
|
371
392
|
},
|
|
372
393
|
|
|
373
394
|
/**
|
|
@@ -379,51 +400,64 @@ const createModelsCrud = params => {
|
|
|
379
400
|
model: initialModel,
|
|
380
401
|
original
|
|
381
402
|
} = params;
|
|
382
|
-
|
|
383
|
-
const model = _objectSpread(_objectSpread({}, initialModel), {}, {
|
|
403
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialModel), {}, {
|
|
384
404
|
tenant: initialModel.tenant || getTenant().id,
|
|
385
405
|
locale: initialModel.locale || getLocale().code,
|
|
386
406
|
webinyVersion: context.WEBINY_VERSION
|
|
387
407
|
});
|
|
388
408
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
409
|
+
try {
|
|
410
|
+
await onModelBeforeUpdate.publish({
|
|
411
|
+
input: {},
|
|
412
|
+
original,
|
|
413
|
+
model
|
|
414
|
+
});
|
|
415
|
+
const resultModel = await storageOperations.models.update({
|
|
416
|
+
model
|
|
417
|
+
});
|
|
418
|
+
await updateManager(context, resultModel);
|
|
419
|
+
loaders.listModels.clearAll();
|
|
420
|
+
await onModelAfterUpdate.publish({
|
|
421
|
+
input: {},
|
|
422
|
+
original,
|
|
423
|
+
model: resultModel
|
|
424
|
+
});
|
|
425
|
+
return resultModel;
|
|
426
|
+
} catch (ex) {
|
|
427
|
+
await onModelUpdateError.publish({
|
|
428
|
+
input: {},
|
|
429
|
+
original,
|
|
430
|
+
model,
|
|
431
|
+
error: ex
|
|
432
|
+
});
|
|
433
|
+
throw ex;
|
|
434
|
+
}
|
|
405
435
|
},
|
|
406
436
|
|
|
407
|
-
async createModelFrom(modelId,
|
|
437
|
+
async createModelFrom(modelId, userInput) {
|
|
408
438
|
await checkModelPermissions("w");
|
|
409
439
|
/**
|
|
410
440
|
* Get a model record; this will also perform ownership validation.
|
|
411
441
|
*/
|
|
412
442
|
|
|
413
443
|
const original = await getModel(modelId);
|
|
414
|
-
const
|
|
415
|
-
name:
|
|
416
|
-
modelId:
|
|
417
|
-
description:
|
|
418
|
-
group:
|
|
419
|
-
locale:
|
|
444
|
+
const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync({
|
|
445
|
+
name: userInput.name,
|
|
446
|
+
modelId: userInput.modelId,
|
|
447
|
+
description: userInput.description || original.description,
|
|
448
|
+
group: userInput.group,
|
|
449
|
+
locale: userInput.locale
|
|
420
450
|
});
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
451
|
+
|
|
452
|
+
if (!result.success) {
|
|
453
|
+
throw (0, _utils.createZodError)(result.error);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
const data = result.data;
|
|
457
|
+
const locale = await context.i18n.getLocale(data.locale || original.locale);
|
|
424
458
|
|
|
425
459
|
if (!locale) {
|
|
426
|
-
throw new _handlerGraphql.NotFoundError(`There is no locale "${
|
|
460
|
+
throw new _handlerGraphql.NotFoundError(`There is no locale "${data.locale}".`);
|
|
427
461
|
}
|
|
428
462
|
/**
|
|
429
463
|
* Use storage operations directly because we cannot get group from different locale via context methods.
|
|
@@ -431,26 +465,25 @@ const createModelsCrud = params => {
|
|
|
431
465
|
|
|
432
466
|
|
|
433
467
|
const group = await context.cms.storageOperations.groups.get({
|
|
434
|
-
id:
|
|
468
|
+
id: data.group,
|
|
435
469
|
tenant: original.tenant,
|
|
436
470
|
locale: locale.code
|
|
437
471
|
});
|
|
438
472
|
|
|
439
473
|
if (!group) {
|
|
440
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
474
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
441
475
|
}
|
|
442
476
|
|
|
443
477
|
const identity = getIdentity();
|
|
444
|
-
|
|
445
|
-
const model = _objectSpread(_objectSpread({}, original), {}, {
|
|
478
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
|
|
446
479
|
locale: locale.code,
|
|
447
480
|
group: {
|
|
448
481
|
id: group.id,
|
|
449
482
|
name: group.name
|
|
450
483
|
},
|
|
451
|
-
name:
|
|
452
|
-
modelId:
|
|
453
|
-
description:
|
|
484
|
+
name: data.name,
|
|
485
|
+
modelId: data.modelId || "",
|
|
486
|
+
description: data.description || "",
|
|
454
487
|
createdBy: {
|
|
455
488
|
id: identity.id,
|
|
456
489
|
displayName: identity.displayName,
|
|
@@ -462,35 +495,47 @@ const createModelsCrud = params => {
|
|
|
462
495
|
webinyVersion: context.WEBINY_VERSION
|
|
463
496
|
});
|
|
464
497
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
498
|
+
try {
|
|
499
|
+
await onModelBeforeCreateFrom.publish({
|
|
500
|
+
input: data,
|
|
501
|
+
model,
|
|
502
|
+
original
|
|
503
|
+
});
|
|
504
|
+
const createdModel = await storageOperations.models.create({
|
|
505
|
+
model
|
|
506
|
+
});
|
|
507
|
+
loaders.listModels.clearAll();
|
|
508
|
+
await updateManager(context, model);
|
|
509
|
+
await onModelAfterCreateFrom.publish({
|
|
510
|
+
input: data,
|
|
511
|
+
original,
|
|
512
|
+
model: createdModel
|
|
513
|
+
});
|
|
514
|
+
return createdModel;
|
|
515
|
+
} catch (ex) {
|
|
516
|
+
await onModelCreateFromError.publish({
|
|
517
|
+
input: data,
|
|
518
|
+
original,
|
|
519
|
+
model,
|
|
520
|
+
error: ex
|
|
521
|
+
});
|
|
522
|
+
throw ex;
|
|
523
|
+
}
|
|
481
524
|
},
|
|
482
525
|
|
|
483
|
-
async updateModel(modelId,
|
|
526
|
+
async updateModel(modelId, input) {
|
|
484
527
|
await checkModelPermissions("w"); // Get a model record; this will also perform ownership validation.
|
|
485
528
|
|
|
486
529
|
const original = await getModel(modelId);
|
|
487
|
-
const
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
}
|
|
530
|
+
const result = await (0, _validation.createModelUpdateValidation)().safeParseAsync(input);
|
|
531
|
+
|
|
532
|
+
if (!result.success) {
|
|
533
|
+
throw (0, _utils.createZodError)(result.error);
|
|
534
|
+
}
|
|
492
535
|
|
|
493
|
-
|
|
536
|
+
const data = result.data;
|
|
537
|
+
|
|
538
|
+
if (Object.keys(data).length === 0) {
|
|
494
539
|
/**
|
|
495
540
|
* We need to return the original if nothing is to be updated.
|
|
496
541
|
*/
|
|
@@ -502,13 +547,13 @@ const createModelsCrud = params => {
|
|
|
502
547
|
name: original.group.name
|
|
503
548
|
};
|
|
504
549
|
|
|
505
|
-
if (
|
|
550
|
+
if (data.group) {
|
|
506
551
|
context.security.disableAuthorization();
|
|
507
|
-
const groupData = await context.cms.getGroup(
|
|
552
|
+
const groupData = await context.cms.getGroup(data.group);
|
|
508
553
|
context.security.enableAuthorization();
|
|
509
554
|
|
|
510
555
|
if (!groupData) {
|
|
511
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
556
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
512
557
|
}
|
|
513
558
|
|
|
514
559
|
group = {
|
|
@@ -517,56 +562,87 @@ const createModelsCrud = params => {
|
|
|
517
562
|
};
|
|
518
563
|
}
|
|
519
564
|
|
|
520
|
-
const
|
|
521
|
-
|
|
522
|
-
const model = _objectSpread(_objectSpread(_objectSpread({}, original), input), {}, {
|
|
565
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
|
|
523
566
|
group,
|
|
524
567
|
tenant: original.tenant || getTenant().id,
|
|
525
568
|
locale: original.locale || getLocale().code,
|
|
526
569
|
webinyVersion: context.WEBINY_VERSION,
|
|
527
|
-
fields,
|
|
528
570
|
savedOn: new Date().toISOString()
|
|
529
571
|
});
|
|
572
|
+
model.tags = ensureTypeTag(model);
|
|
530
573
|
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
574
|
+
try {
|
|
575
|
+
await onModelBeforeUpdate.publish({
|
|
576
|
+
input: data,
|
|
577
|
+
original,
|
|
578
|
+
model
|
|
579
|
+
});
|
|
580
|
+
const resultModel = await storageOperations.models.update({
|
|
581
|
+
model
|
|
582
|
+
});
|
|
583
|
+
await updateManager(context, resultModel);
|
|
584
|
+
await onModelAfterUpdate.publish({
|
|
585
|
+
input: data,
|
|
586
|
+
original,
|
|
587
|
+
model: resultModel
|
|
588
|
+
});
|
|
589
|
+
return resultModel;
|
|
590
|
+
} catch (ex) {
|
|
591
|
+
await onModelUpdateError.publish({
|
|
592
|
+
input: data,
|
|
593
|
+
model,
|
|
594
|
+
original,
|
|
595
|
+
error: ex
|
|
596
|
+
});
|
|
597
|
+
throw ex;
|
|
598
|
+
}
|
|
546
599
|
},
|
|
547
600
|
|
|
548
601
|
async deleteModel(modelId) {
|
|
549
602
|
await checkModelPermissions("d");
|
|
550
603
|
const model = await getModel(modelId);
|
|
551
|
-
await onBeforeModelDelete.publish({
|
|
552
|
-
model
|
|
553
|
-
});
|
|
554
604
|
|
|
555
605
|
try {
|
|
556
|
-
await
|
|
606
|
+
await onModelBeforeDelete.publish({
|
|
607
|
+
model
|
|
608
|
+
});
|
|
609
|
+
|
|
610
|
+
try {
|
|
611
|
+
await storageOperations.models.delete({
|
|
612
|
+
model
|
|
613
|
+
});
|
|
614
|
+
} catch (ex) {
|
|
615
|
+
throw new _error.default(ex.message || "Could not delete the content model", ex.code || "CONTENT_MODEL_DELETE_ERROR", {
|
|
616
|
+
error: ex,
|
|
617
|
+
modelId: model.modelId
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
await onModelAfterDelete.publish({
|
|
557
622
|
model
|
|
558
623
|
});
|
|
624
|
+
managers.delete(model.modelId);
|
|
559
625
|
} catch (ex) {
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
626
|
+
await onModelDeleteError.publish({
|
|
627
|
+
model,
|
|
628
|
+
error: ex
|
|
563
629
|
});
|
|
630
|
+
throw ex;
|
|
564
631
|
}
|
|
632
|
+
},
|
|
565
633
|
|
|
566
|
-
|
|
567
|
-
|
|
634
|
+
async initializeModel(modelId, data) {
|
|
635
|
+
/**
|
|
636
|
+
* We require that users have write permissions to initialize models.
|
|
637
|
+
* Maybe introduce another permission for it?
|
|
638
|
+
*/
|
|
639
|
+
await checkModelPermissions("w");
|
|
640
|
+
const model = await getModel(modelId);
|
|
641
|
+
await onModelInitialize.publish({
|
|
642
|
+
model,
|
|
643
|
+
data
|
|
568
644
|
});
|
|
569
|
-
|
|
645
|
+
return true;
|
|
570
646
|
},
|
|
571
647
|
|
|
572
648
|
getModelManager,
|