@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.6e5425ee89
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.js +3 -22
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.d.ts +2 -2
- package/crud/contentEntry/afterDelete.js +2 -7
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.d.ts +2 -2
- package/crud/contentEntry/beforeCreate.js +2 -5
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.d.ts +2 -2
- package/crud/contentEntry/beforeUpdate.js +2 -5
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +4 -47
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +8 -35
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +8 -68
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry.crud.d.ts +0 -2
- package/crud/contentEntry.crud.js +201 -361
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.d.ts +3 -3
- package/crud/contentModel/afterCreate.js +5 -7
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.d.ts +3 -3
- package/crud/contentModel/afterCreateFrom.js +5 -7
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.d.ts +3 -3
- package/crud/contentModel/afterDelete.js +5 -7
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.d.ts +3 -3
- package/crud/contentModel/afterUpdate.js +5 -7
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +4 -4
- package/crud/contentModel/beforeCreate.js +14 -42
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.d.ts +3 -3
- package/crud/contentModel/beforeDelete.js +6 -16
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +3 -3
- package/crud/contentModel/beforeUpdate.js +5 -10
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/contentModelManagerFactory.js +0 -7
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
- package/crud/contentModel/createFieldModels.js +0 -6
- package/crud/contentModel/createFieldModels.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +0 -2
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/fieldIdValidation.js +0 -5
- package/crud/contentModel/fieldIdValidation.js.map +1 -1
- package/crud/contentModel/idValidation.js +0 -5
- package/crud/contentModel/idValidation.js.map +1 -1
- package/crud/contentModel/models.js +1 -8
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/systemFields.js.map +1 -1
- package/crud/contentModel/validateLayout.js +0 -8
- package/crud/contentModel/validateLayout.js.map +1 -1
- package/crud/contentModel/validateModel.js +1 -9
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +11 -67
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel.crud.js +84 -145
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
- package/crud/contentModelGroup/beforeCreate.js +3 -15
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
- package/crud/contentModelGroup/beforeDelete.js +3 -11
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
- package/crud/contentModelGroup/beforeUpdate.js +2 -7
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup.crud.js +59 -76
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/index.js +3 -23
- package/crud/index.js.map +1 -1
- package/crud/settings.crud.js +3 -20
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +61 -84
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -14
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +16 -71
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.js +0 -4
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.js +5 -9
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +4 -29
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.js +1 -8
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.js +6 -18
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +3 -43
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.js +2 -19
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.js +20 -17
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +7 -31
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +4 -44
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +4 -21
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +3 -17
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +3 -17
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.js +0 -10
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/commonFieldResolvers.js +0 -2
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +5 -25
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +0 -3
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +3 -15
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +0 -3
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +3 -15
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +0 -3
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/schemaPlugins.js +5 -19
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +1 -14
- package/graphql/system.js.map +1 -1
- package/graphqlFields/boolean.js +0 -12
- package/graphqlFields/boolean.js.map +1 -1
- package/graphqlFields/datetime.js +0 -17
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/file.js +0 -8
- package/graphqlFields/file.js.map +1 -1
- package/graphqlFields/helpers.js +0 -10
- package/graphqlFields/helpers.js.map +1 -1
- package/graphqlFields/index.js +0 -11
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/longText.js +0 -10
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +0 -12
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +7 -37
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +21 -59
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText.js +0 -9
- package/graphqlFields/richText.js.map +1 -1
- package/graphqlFields/text.js +0 -11
- package/graphqlFields/text.js.map +1 -1
- package/index.js +0 -19
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +7 -7
- package/modelManager/DefaultCmsModelManager.js +1 -17
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/modelManager/index.js +0 -4
- package/modelManager/index.js.map +1 -1
- package/package.json +27 -28
- package/parameters/context.js +0 -4
- package/parameters/context.js.map +1 -1
- package/parameters/header.js +1 -12
- package/parameters/header.js.map +1 -1
- package/parameters/index.js +0 -8
- package/parameters/index.js.map +1 -1
- package/parameters/manual.js +7 -15
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +1 -12
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGroupPlugin.js +1 -9
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js +1 -6
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +6 -2
- package/plugins/CmsModelPlugin.js +18 -49
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +1 -8
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.js +1 -10
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.js +0 -10
- package/plugins/index.js.map +1 -1
- package/storage/default.js +0 -3
- package/storage/default.js.map +1 -1
- package/storage/object.js +3 -25
- package/storage/object.js.map +1 -1
- package/types.d.ts +267 -126
- package/types.js +0 -64
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +8 -35
- package/upgrades/5.33.0/index.js.map +1 -1
- package/upgrades/index.js +0 -3
- package/upgrades/index.js.map +1 -1
- package/utils/access.js +11 -25
- package/utils/access.js.map +1 -1
- package/utils/converters/Converter.js +1 -14
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.d.ts +7 -0
- package/utils/converters/ConverterCollection.js +31 -30
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +3 -33
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeName.js +1 -9
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +13 -33
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +0 -5
- package/utils/filterAsync.js.map +1 -1
- package/utils/filterModelFields.js +8 -18
- package/utils/filterModelFields.js.map +1 -1
- package/utils/getEntryTitle.js +0 -9
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.js +2 -6
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/ownership.js +0 -8
- package/utils/ownership.js.map +1 -1
- package/utils/permissions.js +7 -26
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +1 -7
- package/utils/pluralizedTypeName.js.map +1 -1
- package/utils/renderFields.js +0 -8
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +0 -11
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +0 -8
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +7 -8
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.js +0 -7
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +1 -5
- package/utils/toSlug.js.map +1 -1
- package/validators/dateGte.js +0 -7
- package/validators/dateGte.js.map +1 -1
- package/validators/dateLte.js +0 -7
- package/validators/dateLte.js.map +1 -1
- package/validators/gte.js +0 -8
- package/validators/gte.js.map +1 -1
- package/validators/in.js +0 -8
- package/validators/in.js.map +1 -1
- package/validators/index.js +0 -15
- package/validators/index.js.map +1 -1
- package/validators/lte.js +0 -8
- package/validators/lte.js.map +1 -1
- package/validators/maxLength.js +0 -8
- package/validators/maxLength.js.map +1 -1
- package/validators/minLength.js +0 -8
- package/validators/minLength.js.map +1 -1
- package/validators/pattern.js +0 -9
- package/validators/pattern.js.map +1 -1
- package/validators/patternPlugins/email.js +0 -2
- package/validators/patternPlugins/email.js.map +1 -1
- package/validators/patternPlugins/index.js +0 -8
- package/validators/patternPlugins/index.js.map +1 -1
- package/validators/patternPlugins/lowerCase.js +0 -2
- package/validators/patternPlugins/lowerCase.js.map +1 -1
- package/validators/patternPlugins/lowerCaseSpace.js +0 -2
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
- package/validators/patternPlugins/upperCase.js +0 -2
- package/validators/patternPlugins/upperCase.js.map +1 -1
- package/validators/patternPlugins/upperCaseSpace.js +0 -2
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
- package/validators/patternPlugins/url.js +0 -2
- package/validators/patternPlugins/url.js.map +1 -1
- package/validators/required.js +0 -5
- package/validators/required.js.map +1 -1
- package/validators/timeGte.js +0 -8
- package/validators/timeGte.js.map +1 -1
- package/validators/timeLte.js +0 -8
- package/validators/timeLte.js.map +1 -1
- package/validators/unique.js +1 -8
- package/validators/unique.js.map +1 -1
|
@@ -1,90 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createModelsCrud = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
12
9
|
var _dataloader = _interopRequireDefault(require("dataloader"));
|
|
13
|
-
|
|
14
10
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
15
|
-
|
|
16
11
|
var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
|
|
17
|
-
|
|
18
12
|
var _models = require("./contentModel/models");
|
|
19
|
-
|
|
20
13
|
var _createFieldModels = require("./contentModel/createFieldModels");
|
|
21
|
-
|
|
22
14
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
23
|
-
|
|
24
15
|
var _pubsub = require("@webiny/pubsub");
|
|
25
|
-
|
|
26
16
|
var _beforeCreate = require("./contentModel/beforeCreate");
|
|
27
|
-
|
|
28
17
|
var _beforeUpdate = require("./contentModel/beforeUpdate");
|
|
29
|
-
|
|
30
18
|
var _beforeDelete = require("./contentModel/beforeDelete");
|
|
31
|
-
|
|
32
19
|
var _afterCreate = require("./contentModel/afterCreate");
|
|
33
|
-
|
|
34
20
|
var _afterUpdate = require("./contentModel/afterUpdate");
|
|
35
|
-
|
|
36
21
|
var _afterDelete = require("./contentModel/afterDelete");
|
|
37
|
-
|
|
38
22
|
var _afterCreateFrom = require("./contentModel/afterCreateFrom");
|
|
39
|
-
|
|
40
23
|
var _CmsModelPlugin = require("../plugins/CmsModelPlugin");
|
|
41
|
-
|
|
42
24
|
var _permissions = require("../utils/permissions");
|
|
43
|
-
|
|
44
25
|
var _filterAsync = require("../utils/filterAsync");
|
|
45
|
-
|
|
46
26
|
var _ownership = require("../utils/ownership");
|
|
47
|
-
|
|
48
27
|
var _access = require("../utils/access");
|
|
49
|
-
|
|
50
28
|
var _validateModelFields = require("./contentModel/validateModelFields");
|
|
51
|
-
|
|
52
29
|
var _semver = _interopRequireDefault(require("semver"));
|
|
53
|
-
|
|
54
|
-
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; }
|
|
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; }
|
|
57
|
-
|
|
58
30
|
/**
|
|
59
31
|
* TODO: remove for 5.34.0
|
|
60
32
|
* Required because of the 5.33.0 upgrade.
|
|
61
33
|
* Until the upgrade is done, API will break because there is no storageId assigned.
|
|
62
34
|
*/
|
|
63
35
|
const featureVersion = _semver.default.coerce("5.33.0");
|
|
64
|
-
|
|
65
36
|
const attachStorageIdToFields = fields => {
|
|
66
37
|
return fields.map(field => {
|
|
67
38
|
var _field$settings;
|
|
68
|
-
|
|
69
39
|
if ((_field$settings = field.settings) !== null && _field$settings !== void 0 && _field$settings.fields) {
|
|
70
40
|
field.settings.fields = attachStorageIdToFields(field.settings.fields);
|
|
71
41
|
}
|
|
72
|
-
|
|
73
42
|
if (!field.storageId) {
|
|
74
43
|
field.storageId = field.fieldId;
|
|
75
44
|
}
|
|
76
|
-
|
|
77
45
|
return field;
|
|
78
46
|
});
|
|
79
47
|
};
|
|
80
|
-
|
|
81
48
|
const attachStorageIdToModelFields = model => {
|
|
82
49
|
if (!model.webinyVersion) {
|
|
83
50
|
return model.fields;
|
|
84
51
|
}
|
|
85
|
-
|
|
86
52
|
const version = _semver.default.coerce(model.webinyVersion);
|
|
87
|
-
|
|
88
53
|
if (!version) {
|
|
89
54
|
return model.fields;
|
|
90
55
|
}
|
|
@@ -92,19 +57,14 @@ const attachStorageIdToModelFields = model => {
|
|
|
92
57
|
* Unfortunately we need to check for beta and next.
|
|
93
58
|
* TODO remove after 5.33.0
|
|
94
59
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
60
|
if (model.webinyVersion.match(/beta|next/)) {
|
|
98
61
|
return attachStorageIdToFields(model.fields);
|
|
99
62
|
}
|
|
100
|
-
|
|
101
63
|
if (_semver.default.compare(version, featureVersion) >= 0) {
|
|
102
64
|
return model.fields;
|
|
103
65
|
}
|
|
104
|
-
|
|
105
66
|
return attachStorageIdToFields(model.fields);
|
|
106
67
|
};
|
|
107
|
-
|
|
108
68
|
const createModelsCrud = params => {
|
|
109
69
|
const {
|
|
110
70
|
getTenant,
|
|
@@ -122,7 +82,7 @@ const createModelsCrud = params => {
|
|
|
122
82
|
}
|
|
123
83
|
});
|
|
124
84
|
return [models.map(model => {
|
|
125
|
-
return
|
|
85
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
126
86
|
fields: attachStorageIdToModelFields(model),
|
|
127
87
|
tenant: model.tenant || getTenant().id,
|
|
128
88
|
locale: model.locale || getLocale().code
|
|
@@ -130,27 +90,22 @@ const createModelsCrud = params => {
|
|
|
130
90
|
})];
|
|
131
91
|
})
|
|
132
92
|
};
|
|
133
|
-
|
|
134
93
|
const clearModelsCache = () => {
|
|
135
94
|
for (const loader of Object.values(loaders)) {
|
|
136
95
|
loader.clearAll();
|
|
137
96
|
}
|
|
138
97
|
};
|
|
139
|
-
|
|
140
98
|
const managers = new Map();
|
|
141
|
-
|
|
142
99
|
const updateManager = async (context, model) => {
|
|
143
100
|
const manager = await (0, _contentModelManagerFactory.contentModelManagerFactory)(context, model);
|
|
144
101
|
managers.set(model.modelId, manager);
|
|
145
102
|
return manager;
|
|
146
103
|
};
|
|
147
|
-
|
|
148
104
|
const checkModelPermissions = check => {
|
|
149
105
|
return (0, _permissions.checkPermissions)(context, "cms.contentModel", {
|
|
150
106
|
rwd: check
|
|
151
107
|
});
|
|
152
108
|
};
|
|
153
|
-
|
|
154
109
|
const getModelsAsPlugins = () => {
|
|
155
110
|
const tenant = getTenant().id;
|
|
156
111
|
const locale = getLocale().code;
|
|
@@ -158,22 +113,19 @@ const createModelsCrud = params => {
|
|
|
158
113
|
/**
|
|
159
114
|
* We need to filter out models that are not for this tenant or locale.
|
|
160
115
|
* If it does not have tenant or locale define, it is for every locale and tenant
|
|
161
|
-
|
|
162
|
-
.filter(plugin => {
|
|
116
|
+
*/.filter(plugin => {
|
|
163
117
|
const {
|
|
164
118
|
tenant: t,
|
|
165
119
|
locale: l
|
|
166
120
|
} = plugin.contentModel;
|
|
167
|
-
|
|
168
121
|
if (t && t !== tenant) {
|
|
169
122
|
return false;
|
|
170
123
|
} else if (l && l !== locale) {
|
|
171
124
|
return false;
|
|
172
125
|
}
|
|
173
|
-
|
|
174
126
|
return true;
|
|
175
127
|
}).map(plugin => {
|
|
176
|
-
return
|
|
128
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
|
|
177
129
|
tenant,
|
|
178
130
|
locale,
|
|
179
131
|
webinyVersion: context.WEBINY_VERSION
|
|
@@ -182,46 +134,37 @@ const createModelsCrud = params => {
|
|
|
182
134
|
/**
|
|
183
135
|
* Only point where we can truly validate the user model is in the runtime.
|
|
184
136
|
*/
|
|
185
|
-
|
|
186
137
|
for (const model of models) {
|
|
187
138
|
(0, _validateModelFields.validateModelFields)({
|
|
188
139
|
model,
|
|
189
140
|
plugins: context.plugins
|
|
190
141
|
});
|
|
191
142
|
}
|
|
192
|
-
|
|
193
143
|
return models;
|
|
194
144
|
};
|
|
195
|
-
|
|
196
145
|
const modelsGet = async modelId => {
|
|
197
146
|
const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);
|
|
198
|
-
|
|
199
147
|
if (pluginModel) {
|
|
200
148
|
return pluginModel;
|
|
201
149
|
}
|
|
202
|
-
|
|
203
150
|
const model = await storageOperations.models.get({
|
|
204
151
|
tenant: getTenant().id,
|
|
205
152
|
locale: getLocale().code,
|
|
206
153
|
modelId
|
|
207
154
|
});
|
|
208
|
-
|
|
209
155
|
if (!model) {
|
|
210
156
|
throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
|
|
211
157
|
}
|
|
212
|
-
|
|
213
|
-
return _objectSpread(_objectSpread({}, model), {}, {
|
|
158
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
214
159
|
tenant: model.tenant || getTenant().id,
|
|
215
160
|
locale: model.locale || getLocale().code
|
|
216
161
|
});
|
|
217
162
|
};
|
|
218
|
-
|
|
219
163
|
const modelsList = async () => {
|
|
220
164
|
const databaseModels = await loaders.listModels.load("listModels");
|
|
221
165
|
const pluginsModels = getModelsAsPlugins();
|
|
222
166
|
return databaseModels.concat(pluginsModels);
|
|
223
167
|
};
|
|
224
|
-
|
|
225
168
|
const listModels = async () => {
|
|
226
169
|
const permission = await checkModelPermissions("r");
|
|
227
170
|
const models = await modelsList();
|
|
@@ -229,11 +172,9 @@ const createModelsCrud = params => {
|
|
|
229
172
|
if (!(0, _ownership.validateOwnership)(context, permission, model)) {
|
|
230
173
|
return false;
|
|
231
174
|
}
|
|
232
|
-
|
|
233
175
|
return (0, _access.validateModelAccess)(context, model);
|
|
234
176
|
});
|
|
235
177
|
};
|
|
236
|
-
|
|
237
178
|
const getModel = async modelId => {
|
|
238
179
|
const permission = await checkModelPermissions("r");
|
|
239
180
|
const model = await modelsGet(modelId);
|
|
@@ -241,81 +182,94 @@ const createModelsCrud = params => {
|
|
|
241
182
|
await (0, _access.checkModelAccess)(context, model);
|
|
242
183
|
return model;
|
|
243
184
|
};
|
|
244
|
-
|
|
245
185
|
const getModelManager = async target => {
|
|
246
186
|
const modelId = typeof target === "string" ? target : target.modelId;
|
|
247
|
-
|
|
248
187
|
if (managers.has(modelId)) {
|
|
249
188
|
return managers.get(modelId);
|
|
250
189
|
}
|
|
251
|
-
|
|
252
190
|
const models = await modelsList();
|
|
253
191
|
const model = models.find(m => m.modelId === modelId);
|
|
254
|
-
|
|
255
192
|
if (!model) {
|
|
256
193
|
throw new _handlerGraphql.NotFoundError(`There is no content model "${modelId}".`);
|
|
257
194
|
}
|
|
258
|
-
|
|
259
195
|
return await updateManager(context, model);
|
|
260
196
|
};
|
|
261
197
|
|
|
262
|
-
|
|
263
|
-
const
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
const
|
|
267
|
-
const
|
|
268
|
-
|
|
269
|
-
const
|
|
198
|
+
// create
|
|
199
|
+
const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
|
|
200
|
+
const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
|
|
201
|
+
// create from
|
|
202
|
+
const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
|
|
203
|
+
const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
|
|
204
|
+
// update
|
|
205
|
+
const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
|
|
206
|
+
const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
|
|
207
|
+
// delete
|
|
208
|
+
const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
|
|
209
|
+
const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
|
|
210
|
+
const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
|
|
270
211
|
/**
|
|
271
212
|
* We need to assign some default behaviors.
|
|
272
213
|
*/
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
onBeforeModelCreateFrom,
|
|
214
|
+
(0, _beforeCreate.assignModelBeforeCreate)({
|
|
215
|
+
onModelBeforeCreate,
|
|
216
|
+
onModelBeforeCreateFrom,
|
|
277
217
|
plugins: context.plugins,
|
|
278
218
|
storageOperations
|
|
279
219
|
});
|
|
280
|
-
(0, _afterCreate.
|
|
220
|
+
(0, _afterCreate.assignModelAfterCreate)({
|
|
281
221
|
context,
|
|
282
|
-
|
|
222
|
+
onModelAfterCreate
|
|
283
223
|
});
|
|
284
|
-
(0, _beforeUpdate.
|
|
285
|
-
|
|
224
|
+
(0, _beforeUpdate.assignModelBeforeUpdate)({
|
|
225
|
+
onModelBeforeUpdate,
|
|
286
226
|
plugins: context.plugins,
|
|
287
227
|
storageOperations
|
|
288
228
|
});
|
|
289
|
-
(0, _afterUpdate.
|
|
229
|
+
(0, _afterUpdate.assignModelAfterUpdate)({
|
|
290
230
|
context,
|
|
291
|
-
|
|
231
|
+
onModelAfterUpdate
|
|
292
232
|
});
|
|
293
|
-
(0, _afterCreateFrom.
|
|
233
|
+
(0, _afterCreateFrom.assignModelAfterCreateFrom)({
|
|
294
234
|
context,
|
|
295
|
-
|
|
235
|
+
onModelAfterCreateFrom
|
|
296
236
|
});
|
|
297
|
-
(0, _beforeDelete.
|
|
298
|
-
|
|
237
|
+
(0, _beforeDelete.assignModelBeforeDelete)({
|
|
238
|
+
onModelBeforeDelete,
|
|
299
239
|
plugins: context.plugins,
|
|
300
240
|
storageOperations
|
|
301
241
|
});
|
|
302
|
-
(0, _afterDelete.
|
|
242
|
+
(0, _afterDelete.assignModelAfterDelete)({
|
|
303
243
|
context,
|
|
304
|
-
|
|
244
|
+
onModelAfterDelete
|
|
305
245
|
});
|
|
306
246
|
return {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
247
|
+
/**
|
|
248
|
+
* Deprecated - will be removed in 5.36.0
|
|
249
|
+
*/
|
|
250
|
+
onBeforeModelCreate: onModelBeforeCreate,
|
|
251
|
+
onAfterModelCreate: onModelAfterCreate,
|
|
252
|
+
onBeforeModelCreateFrom: onModelBeforeCreateFrom,
|
|
253
|
+
onAfterModelCreateFrom: onModelAfterCreateFrom,
|
|
254
|
+
onBeforeModelUpdate: onModelBeforeUpdate,
|
|
255
|
+
onAfterModelUpdate: onModelAfterUpdate,
|
|
256
|
+
onBeforeModelDelete: onModelBeforeDelete,
|
|
257
|
+
onAfterModelDelete: onModelAfterDelete,
|
|
258
|
+
/**
|
|
259
|
+
* Released in 5.34.0
|
|
260
|
+
*/
|
|
261
|
+
onModelBeforeCreate,
|
|
262
|
+
onModelAfterCreate,
|
|
263
|
+
onModelBeforeCreateFrom,
|
|
264
|
+
onModelAfterCreateFrom,
|
|
265
|
+
onModelBeforeUpdate,
|
|
266
|
+
onModelAfterUpdate,
|
|
267
|
+
onModelBeforeDelete,
|
|
268
|
+
onModelAfterDelete,
|
|
269
|
+
onModelInitialize,
|
|
315
270
|
clearModelsCache,
|
|
316
271
|
getModel,
|
|
317
272
|
listModels,
|
|
318
|
-
|
|
319
273
|
async createModel(inputData) {
|
|
320
274
|
await checkModelPermissions("w");
|
|
321
275
|
const createdData = new _models.CreateContentModelModel().populate(inputData);
|
|
@@ -324,11 +278,9 @@ const createModelsCrud = params => {
|
|
|
324
278
|
context.security.disableAuthorization();
|
|
325
279
|
const group = await context.cms.getGroup(input.group);
|
|
326
280
|
context.security.enableAuthorization();
|
|
327
|
-
|
|
328
281
|
if (!group) {
|
|
329
282
|
throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
|
|
330
283
|
}
|
|
331
|
-
|
|
332
284
|
const fields = await (0, _createFieldModels.createFieldModels)(input.fields);
|
|
333
285
|
const identity = getIdentity();
|
|
334
286
|
const model = {
|
|
@@ -354,7 +306,7 @@ const createModelsCrud = params => {
|
|
|
354
306
|
layout: input.layout || [],
|
|
355
307
|
webinyVersion: context.WEBINY_VERSION
|
|
356
308
|
};
|
|
357
|
-
await
|
|
309
|
+
await onModelBeforeCreate.publish({
|
|
358
310
|
input,
|
|
359
311
|
model
|
|
360
312
|
});
|
|
@@ -363,13 +315,12 @@ const createModelsCrud = params => {
|
|
|
363
315
|
});
|
|
364
316
|
loaders.listModels.clearAll();
|
|
365
317
|
await updateManager(context, model);
|
|
366
|
-
await
|
|
318
|
+
await onModelAfterCreate.publish({
|
|
367
319
|
input,
|
|
368
320
|
model: createdModel
|
|
369
321
|
});
|
|
370
322
|
return createdModel;
|
|
371
323
|
},
|
|
372
|
-
|
|
373
324
|
/**
|
|
374
325
|
* Method does not check for permissions or ownership.
|
|
375
326
|
* @internal
|
|
@@ -379,14 +330,12 @@ const createModelsCrud = params => {
|
|
|
379
330
|
model: initialModel,
|
|
380
331
|
original
|
|
381
332
|
} = params;
|
|
382
|
-
|
|
383
|
-
const model = _objectSpread(_objectSpread({}, initialModel), {}, {
|
|
333
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialModel), {}, {
|
|
384
334
|
tenant: initialModel.tenant || getTenant().id,
|
|
385
335
|
locale: initialModel.locale || getLocale().code,
|
|
386
336
|
webinyVersion: context.WEBINY_VERSION
|
|
387
337
|
});
|
|
388
|
-
|
|
389
|
-
await onBeforeModelUpdate.publish({
|
|
338
|
+
await onModelBeforeUpdate.publish({
|
|
390
339
|
input: {},
|
|
391
340
|
original,
|
|
392
341
|
model
|
|
@@ -396,20 +345,18 @@ const createModelsCrud = params => {
|
|
|
396
345
|
});
|
|
397
346
|
await updateManager(context, resultModel);
|
|
398
347
|
loaders.listModels.clearAll();
|
|
399
|
-
await
|
|
348
|
+
await onModelAfterUpdate.publish({
|
|
400
349
|
input: {},
|
|
401
350
|
original,
|
|
402
351
|
model: resultModel
|
|
403
352
|
});
|
|
404
353
|
return resultModel;
|
|
405
354
|
},
|
|
406
|
-
|
|
407
355
|
async createModelFrom(modelId, data) {
|
|
408
356
|
await checkModelPermissions("w");
|
|
409
357
|
/**
|
|
410
358
|
* Get a model record; this will also perform ownership validation.
|
|
411
359
|
*/
|
|
412
|
-
|
|
413
360
|
const original = await getModel(modelId);
|
|
414
361
|
const createdData = new _models.CreateContentModelModelFrom().populate({
|
|
415
362
|
name: data.name,
|
|
@@ -421,28 +368,22 @@ const createModelsCrud = params => {
|
|
|
421
368
|
await createdData.validate();
|
|
422
369
|
const input = await createdData.toJSON();
|
|
423
370
|
const locale = await context.i18n.getLocale(input.locale || original.locale);
|
|
424
|
-
|
|
425
371
|
if (!locale) {
|
|
426
372
|
throw new _handlerGraphql.NotFoundError(`There is no locale "${input.locale}".`);
|
|
427
373
|
}
|
|
428
374
|
/**
|
|
429
375
|
* Use storage operations directly because we cannot get group from different locale via context methods.
|
|
430
376
|
*/
|
|
431
|
-
|
|
432
|
-
|
|
433
377
|
const group = await context.cms.storageOperations.groups.get({
|
|
434
378
|
id: input.group,
|
|
435
379
|
tenant: original.tenant,
|
|
436
380
|
locale: locale.code
|
|
437
381
|
});
|
|
438
|
-
|
|
439
382
|
if (!group) {
|
|
440
383
|
throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
|
|
441
384
|
}
|
|
442
|
-
|
|
443
385
|
const identity = getIdentity();
|
|
444
|
-
|
|
445
|
-
const model = _objectSpread(_objectSpread({}, original), {}, {
|
|
386
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
|
|
446
387
|
locale: locale.code,
|
|
447
388
|
group: {
|
|
448
389
|
id: group.id,
|
|
@@ -461,8 +402,7 @@ const createModelsCrud = params => {
|
|
|
461
402
|
lockedFields: [],
|
|
462
403
|
webinyVersion: context.WEBINY_VERSION
|
|
463
404
|
});
|
|
464
|
-
|
|
465
|
-
await onBeforeModelCreateFrom.publish({
|
|
405
|
+
await onModelBeforeCreateFrom.publish({
|
|
466
406
|
input,
|
|
467
407
|
model,
|
|
468
408
|
original
|
|
@@ -472,54 +412,47 @@ const createModelsCrud = params => {
|
|
|
472
412
|
});
|
|
473
413
|
loaders.listModels.clearAll();
|
|
474
414
|
await updateManager(context, model);
|
|
475
|
-
await
|
|
415
|
+
await onModelAfterCreateFrom.publish({
|
|
476
416
|
input,
|
|
477
417
|
original,
|
|
478
418
|
model: createdModel
|
|
479
419
|
});
|
|
480
420
|
return createdModel;
|
|
481
421
|
},
|
|
482
|
-
|
|
483
422
|
async updateModel(modelId, inputData) {
|
|
484
|
-
await checkModelPermissions("w");
|
|
423
|
+
await checkModelPermissions("w");
|
|
485
424
|
|
|
425
|
+
// Get a model record; this will also perform ownership validation.
|
|
486
426
|
const original = await getModel(modelId);
|
|
487
427
|
const updatedData = new _models.UpdateContentModelModel().populate(inputData);
|
|
488
428
|
await updatedData.validate();
|
|
489
429
|
const input = await updatedData.toJSON({
|
|
490
430
|
onlyDirty: true
|
|
491
431
|
});
|
|
492
|
-
|
|
493
432
|
if (Object.keys(input).length === 0) {
|
|
494
433
|
/**
|
|
495
434
|
* We need to return the original if nothing is to be updated.
|
|
496
435
|
*/
|
|
497
436
|
return original;
|
|
498
437
|
}
|
|
499
|
-
|
|
500
438
|
let group = {
|
|
501
439
|
id: original.group.id,
|
|
502
440
|
name: original.group.name
|
|
503
441
|
};
|
|
504
|
-
|
|
505
442
|
if (input.group) {
|
|
506
443
|
context.security.disableAuthorization();
|
|
507
444
|
const groupData = await context.cms.getGroup(input.group);
|
|
508
445
|
context.security.enableAuthorization();
|
|
509
|
-
|
|
510
446
|
if (!groupData) {
|
|
511
447
|
throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
|
|
512
448
|
}
|
|
513
|
-
|
|
514
449
|
group = {
|
|
515
450
|
id: groupData.id,
|
|
516
451
|
name: groupData.name
|
|
517
452
|
};
|
|
518
453
|
}
|
|
519
|
-
|
|
520
454
|
const fields = await (0, _createFieldModels.createFieldModels)(inputData.fields);
|
|
521
|
-
|
|
522
|
-
const model = _objectSpread(_objectSpread(_objectSpread({}, original), input), {}, {
|
|
455
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
|
|
523
456
|
group,
|
|
524
457
|
tenant: original.tenant || getTenant().id,
|
|
525
458
|
locale: original.locale || getLocale().code,
|
|
@@ -527,8 +460,7 @@ const createModelsCrud = params => {
|
|
|
527
460
|
fields,
|
|
528
461
|
savedOn: new Date().toISOString()
|
|
529
462
|
});
|
|
530
|
-
|
|
531
|
-
await onBeforeModelUpdate.publish({
|
|
463
|
+
await onModelBeforeUpdate.publish({
|
|
532
464
|
input,
|
|
533
465
|
original,
|
|
534
466
|
model
|
|
@@ -537,21 +469,19 @@ const createModelsCrud = params => {
|
|
|
537
469
|
model
|
|
538
470
|
});
|
|
539
471
|
await updateManager(context, resultModel);
|
|
540
|
-
await
|
|
472
|
+
await onModelAfterUpdate.publish({
|
|
541
473
|
input,
|
|
542
474
|
original,
|
|
543
475
|
model: resultModel
|
|
544
476
|
});
|
|
545
477
|
return resultModel;
|
|
546
478
|
},
|
|
547
|
-
|
|
548
479
|
async deleteModel(modelId) {
|
|
549
480
|
await checkModelPermissions("d");
|
|
550
481
|
const model = await getModel(modelId);
|
|
551
|
-
await
|
|
482
|
+
await onModelBeforeDelete.publish({
|
|
552
483
|
model
|
|
553
484
|
});
|
|
554
|
-
|
|
555
485
|
try {
|
|
556
486
|
await storageOperations.models.delete({
|
|
557
487
|
model
|
|
@@ -562,13 +492,23 @@ const createModelsCrud = params => {
|
|
|
562
492
|
modelId: model.modelId
|
|
563
493
|
});
|
|
564
494
|
}
|
|
565
|
-
|
|
566
|
-
await onAfterModelDelete.publish({
|
|
495
|
+
await onModelAfterDelete.publish({
|
|
567
496
|
model
|
|
568
497
|
});
|
|
569
498
|
managers.delete(model.modelId);
|
|
570
499
|
},
|
|
571
|
-
|
|
500
|
+
async initializeModel(modelId) {
|
|
501
|
+
/**
|
|
502
|
+
* We require that users have write permissions to initialize models.
|
|
503
|
+
* Maybe introduce another permission for it?
|
|
504
|
+
*/
|
|
505
|
+
await checkModelPermissions("w");
|
|
506
|
+
const model = await getModel(modelId);
|
|
507
|
+
await onModelInitialize.publish({
|
|
508
|
+
model
|
|
509
|
+
});
|
|
510
|
+
return true;
|
|
511
|
+
},
|
|
572
512
|
getModelManager,
|
|
573
513
|
getEntryManager: async model => {
|
|
574
514
|
return getModelManager(model);
|
|
@@ -577,5 +517,4 @@ const createModelsCrud = params => {
|
|
|
577
517
|
getEntryManagers: () => managers
|
|
578
518
|
};
|
|
579
519
|
};
|
|
580
|
-
|
|
581
520
|
exports.createModelsCrud = createModelsCrud;
|