@webiny/api-headless-cms 0.0.0-unstable.d16f688daf → 0.0.0-unstable.d65ec29d44
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 +53 -19
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.js +0 -5
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.js +0 -3
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.js +0 -3
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +1 -40
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +12 -28
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +5 -61
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.js +1 -12
- package/crud/contentEntry/searchableFields.js.map +1 -1
- package/crud/contentEntry.crud.js +72 -155
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.js +0 -2
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.js +0 -2
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.js +0 -2
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.js +0 -2
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +2 -3
- package/crud/contentModel/beforeCreate.js +7 -36
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.js +0 -10
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +2 -4
- package/crud/contentModel/beforeUpdate.js +2 -7
- 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/createFieldStorageId.js +0 -3
- package/crud/contentModel/createFieldStorageId.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.d.ts +3 -4
- package/crud/contentModel/validateModel.js +6 -11
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.d.ts +3 -4
- package/crud/contentModel/validateModelFields.js +84 -75
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +477 -0
- package/crud/contentModel/validation.js +97 -0
- package/crud/contentModel/validation.js.map +1 -0
- package/crud/contentModel.crud.js +63 -158
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.js +0 -12
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.js +0 -8
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.js +0 -5
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +30 -0
- package/crud/contentModelGroup/validation.js +34 -0
- package/crud/contentModelGroup/validation.js.map +1 -0
- package/crud/contentModelGroup.crud.js +21 -93
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/settings.crud.js +0 -12
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +2 -37
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +0 -36
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.js +0 -5
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.d.ts +8 -3
- package/graphql/buildSchemaPlugins.js +6 -14
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/createExecutableSchema.d.ts +7 -0
- package/graphql/createExecutableSchema.js +29 -0
- package/graphql/createExecutableSchema.js.map +1 -0
- package/graphql/generateSchema.d.ts +8 -0
- package/graphql/generateSchema.js +31 -0
- package/graphql/generateSchema.js.map +1 -0
- package/graphql/graphQLHandlerFactory.js +69 -97
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +1 -3
- package/graphql/index.js +2 -46
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.d.ts +6 -2
- package/graphql/schema/baseContentSchema.js +8 -12
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +3 -0
- package/graphql/schema/baseSchema.js +53 -0
- package/graphql/schema/baseSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +6 -2
- package/graphql/schema/contentEntries.js +39 -65
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.d.ts +6 -2
- package/graphql/schema/contentModelGroups.js +9 -22
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.d.ts +6 -2
- package/graphql/schema/contentModels.js +21 -23
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +13 -24
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +0 -26
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +2 -0
- package/graphql/schema/createManageSDL.js +6 -16
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +0 -10
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +5 -10
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +2 -0
- package/graphql/schema/createReadSDL.js +6 -12
- 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 +0 -16
- 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 +0 -8
- 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 +0 -8
- 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.d.ts +8 -3
- package/graphql/schema/schemaPlugins.js +63 -65
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +69 -85
- 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/dynamicZone/dynamicZoneField.js +3 -29
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +2 -18
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
- package/graphqlFields/dynamicZone/index.js +0 -2
- package/graphqlFields/dynamicZone/index.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 -12
- 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 +1 -37
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +23 -53
- 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.d.ts +3 -3
- package/index.js +2 -27
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.js +0 -16
- 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 +0 -11
- package/parameters/header.js.map +1 -1
- package/parameters/index.js +0 -8
- package/parameters/index.js.map +1 -1
- package/parameters/manual.js +1 -8
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +0 -11
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
- package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
- package/plugins/CmsGroupPlugin.js +0 -8
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js +0 -5
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.js +2 -38
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +0 -7
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.js +0 -9
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +22 -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 +0 -19
- package/storage/object.js.map +1 -1
- package/types.d.ts +56 -15
- package/types.js +22 -72
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +3 -26
- 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 +0 -13
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.js +9 -33
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +0 -26
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.js +4 -15
- package/utils/createTypeFromFields.js.map +1 -1
- package/utils/createTypeName.js +0 -9
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +10 -26
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +0 -5
- package/utils/filterAsync.js.map +1 -1
- package/utils/getBaseFieldType.js +0 -2
- package/utils/getBaseFieldType.js.map +1 -1
- package/utils/getEntryTitle.js +0 -9
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
- package/utils/getSchemaFromFieldPlugins.js +23 -19
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/ownership.js +0 -8
- package/utils/ownership.js.map +1 -1
- package/utils/permissions.js +8 -23
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +0 -6
- package/utils/pluralizedTypeName.js.map +1 -1
- package/utils/renderFields.js +0 -9
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +0 -13
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +0 -9
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +1 -10
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +7 -4
- package/utils/renderSortEnum.js +19 -11
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +0 -4
- 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/dynamicZone.js +0 -4
- package/validators/dynamicZone.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 -16
- 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 +0 -7
- package/validators/unique.js.map +1 -1
- package/crud/index.d.ts +0 -6
- package/crud/index.js +0 -85
- package/crud/index.js.map +0 -1
- package/utils/filterModelFields.d.ts +0 -16
- package/utils/filterModelFields.js +0 -77
- package/utils/filterModelFields.js.map +0 -1
|
@@ -1,54 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createModelsCrud = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _dataloader = _interopRequireDefault(require("dataloader"));
|
|
13
|
-
|
|
10
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
14
11
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
15
|
-
|
|
16
12
|
var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
|
|
17
|
-
|
|
18
|
-
var _models = require("./contentModel/models");
|
|
19
|
-
|
|
20
|
-
var _createFieldModels = require("./contentModel/createFieldModels");
|
|
21
|
-
|
|
22
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
23
|
-
|
|
24
13
|
var _pubsub = require("@webiny/pubsub");
|
|
25
|
-
|
|
26
14
|
var _beforeCreate = require("./contentModel/beforeCreate");
|
|
27
|
-
|
|
28
15
|
var _beforeUpdate = require("./contentModel/beforeUpdate");
|
|
29
|
-
|
|
30
16
|
var _beforeDelete = require("./contentModel/beforeDelete");
|
|
31
|
-
|
|
32
17
|
var _afterCreate = require("./contentModel/afterCreate");
|
|
33
|
-
|
|
34
18
|
var _afterUpdate = require("./contentModel/afterUpdate");
|
|
35
|
-
|
|
36
19
|
var _afterDelete = require("./contentModel/afterDelete");
|
|
37
|
-
|
|
38
20
|
var _afterCreateFrom = require("./contentModel/afterCreateFrom");
|
|
39
|
-
|
|
40
21
|
var _CmsModelPlugin = require("../plugins/CmsModelPlugin");
|
|
41
|
-
|
|
42
22
|
var _permissions = require("../utils/permissions");
|
|
43
|
-
|
|
44
23
|
var _filterAsync = require("../utils/filterAsync");
|
|
45
|
-
|
|
46
24
|
var _ownership = require("../utils/ownership");
|
|
47
|
-
|
|
48
25
|
var _access = require("../utils/access");
|
|
49
|
-
|
|
50
|
-
var
|
|
51
|
-
|
|
26
|
+
var _validation = require("./contentModel/validation");
|
|
27
|
+
var _utils = require("@webiny/utils");
|
|
52
28
|
/**
|
|
53
29
|
* Given a model, return an array of tags ensuring the `type` tag is set.
|
|
54
30
|
*/
|
|
@@ -56,14 +32,11 @@ const ensureTypeTag = model => {
|
|
|
56
32
|
// Let's make sure we have a `type` tag assigned.
|
|
57
33
|
// If `type` tag is not set, set it to a default one (`model`).
|
|
58
34
|
const tags = model.tags || [];
|
|
59
|
-
|
|
60
35
|
if (!tags.some(tag => tag.startsWith("type:"))) {
|
|
61
36
|
tags.push("type:model");
|
|
62
37
|
}
|
|
63
|
-
|
|
64
38
|
return tags;
|
|
65
39
|
};
|
|
66
|
-
|
|
67
40
|
const createModelsCrud = params => {
|
|
68
41
|
const {
|
|
69
42
|
getTenant,
|
|
@@ -89,47 +62,39 @@ const createModelsCrud = params => {
|
|
|
89
62
|
})];
|
|
90
63
|
})
|
|
91
64
|
};
|
|
92
|
-
|
|
93
65
|
const clearModelsCache = () => {
|
|
94
66
|
for (const loader of Object.values(loaders)) {
|
|
95
67
|
loader.clearAll();
|
|
96
68
|
}
|
|
97
69
|
};
|
|
98
|
-
|
|
99
70
|
const managers = new Map();
|
|
100
|
-
|
|
101
71
|
const updateManager = async (context, model) => {
|
|
102
72
|
const manager = await (0, _contentModelManagerFactory.contentModelManagerFactory)(context, model);
|
|
103
73
|
managers.set(model.modelId, manager);
|
|
104
74
|
return manager;
|
|
105
75
|
};
|
|
106
|
-
|
|
107
76
|
const checkModelPermissions = check => {
|
|
108
77
|
return (0, _permissions.checkPermissions)(context, "cms.contentModel", {
|
|
109
78
|
rwd: check
|
|
110
79
|
});
|
|
111
80
|
};
|
|
112
|
-
|
|
113
81
|
const getModelsAsPlugins = () => {
|
|
114
82
|
const tenant = getTenant().id;
|
|
115
83
|
const locale = getLocale().code;
|
|
116
|
-
|
|
84
|
+
return context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type)
|
|
117
85
|
/**
|
|
118
86
|
* We need to filter out models that are not for this tenant or locale.
|
|
119
87
|
* If it does not have tenant or locale define, it is for every locale and tenant
|
|
120
|
-
|
|
121
|
-
.filter(plugin => {
|
|
88
|
+
*/.filter(plugin => {
|
|
122
89
|
const {
|
|
123
90
|
tenant: modelTenant,
|
|
124
91
|
locale: modelLocale
|
|
125
92
|
} = plugin.contentModel;
|
|
126
|
-
|
|
127
93
|
if (modelTenant && modelTenant !== tenant) {
|
|
128
94
|
return false;
|
|
129
95
|
} else if (modelLocale && modelLocale !== locale) {
|
|
130
96
|
return false;
|
|
131
97
|
}
|
|
132
|
-
|
|
133
98
|
return true;
|
|
134
99
|
}).map(plugin => {
|
|
135
100
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
|
|
@@ -139,50 +104,31 @@ const createModelsCrud = params => {
|
|
|
139
104
|
webinyVersion: context.WEBINY_VERSION
|
|
140
105
|
});
|
|
141
106
|
});
|
|
142
|
-
/**
|
|
143
|
-
* Only point where we can truly validate the user model is in the runtime.
|
|
144
|
-
*/
|
|
145
|
-
|
|
146
|
-
for (const model of models) {
|
|
147
|
-
(0, _validateModelFields.validateModelFields)({
|
|
148
|
-
model,
|
|
149
|
-
plugins: context.plugins
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return models;
|
|
154
107
|
};
|
|
155
|
-
|
|
156
108
|
const modelsGet = async modelId => {
|
|
157
109
|
const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);
|
|
158
|
-
|
|
159
110
|
if (pluginModel) {
|
|
160
111
|
return pluginModel;
|
|
161
112
|
}
|
|
162
|
-
|
|
163
113
|
const model = await storageOperations.models.get({
|
|
164
114
|
tenant: getTenant().id,
|
|
165
115
|
locale: getLocale().code,
|
|
166
116
|
modelId
|
|
167
117
|
});
|
|
168
|
-
|
|
169
118
|
if (!model) {
|
|
170
119
|
throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
|
|
171
120
|
}
|
|
172
|
-
|
|
173
121
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
174
122
|
tags: ensureTypeTag(model),
|
|
175
123
|
tenant: model.tenant || getTenant().id,
|
|
176
124
|
locale: model.locale || getLocale().code
|
|
177
125
|
});
|
|
178
126
|
};
|
|
179
|
-
|
|
180
127
|
const modelsList = async () => {
|
|
181
128
|
const databaseModels = await loaders.listModels.load("listModels");
|
|
182
129
|
const pluginsModels = getModelsAsPlugins();
|
|
183
130
|
return databaseModels.concat(pluginsModels);
|
|
184
131
|
};
|
|
185
|
-
|
|
186
132
|
const listModels = async () => {
|
|
187
133
|
const permission = await checkModelPermissions("r");
|
|
188
134
|
const models = await modelsList();
|
|
@@ -190,11 +136,9 @@ const createModelsCrud = params => {
|
|
|
190
136
|
if (!(0, _ownership.validateOwnership)(context, permission, model)) {
|
|
191
137
|
return false;
|
|
192
138
|
}
|
|
193
|
-
|
|
194
139
|
return (0, _access.validateModelAccess)(context, model);
|
|
195
140
|
});
|
|
196
141
|
};
|
|
197
|
-
|
|
198
142
|
const getModel = async modelId => {
|
|
199
143
|
const permission = await checkModelPermissions("r");
|
|
200
144
|
const model = await modelsGet(modelId);
|
|
@@ -202,65 +146,54 @@ const createModelsCrud = params => {
|
|
|
202
146
|
await (0, _access.checkModelAccess)(context, model);
|
|
203
147
|
return model;
|
|
204
148
|
};
|
|
205
|
-
|
|
206
149
|
const getModelManager = async target => {
|
|
207
150
|
const modelId = typeof target === "string" ? target : target.modelId;
|
|
208
|
-
|
|
209
151
|
if (managers.has(modelId)) {
|
|
210
152
|
return managers.get(modelId);
|
|
211
153
|
}
|
|
212
|
-
|
|
213
154
|
const models = await modelsList();
|
|
214
155
|
const model = models.find(m => m.modelId === modelId);
|
|
215
|
-
|
|
216
156
|
if (!model) {
|
|
217
157
|
throw new _handlerGraphql.NotFoundError(`There is no content model "${modelId}".`);
|
|
218
158
|
}
|
|
219
|
-
|
|
220
159
|
return await updateManager(context, model);
|
|
221
160
|
};
|
|
161
|
+
|
|
222
162
|
/**
|
|
223
163
|
* Create
|
|
224
164
|
*/
|
|
225
|
-
|
|
226
|
-
|
|
227
165
|
const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
|
|
228
166
|
const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
|
|
229
167
|
const onModelCreateError = (0, _pubsub.createTopic)("cms.onModelCreateError");
|
|
230
168
|
/**
|
|
231
169
|
* Create from / clone
|
|
232
170
|
*/
|
|
233
|
-
|
|
234
171
|
const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
|
|
235
172
|
const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
|
|
236
173
|
const onModelCreateFromError = (0, _pubsub.createTopic)("cms.onModelCreateFromError");
|
|
237
174
|
/**
|
|
238
175
|
* Update
|
|
239
176
|
*/
|
|
240
|
-
|
|
241
177
|
const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
|
|
242
178
|
const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
|
|
243
179
|
const onModelUpdateError = (0, _pubsub.createTopic)("cms.onModelUpdateError");
|
|
244
180
|
/**
|
|
245
181
|
* Delete
|
|
246
182
|
*/
|
|
247
|
-
|
|
248
183
|
const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
|
|
249
184
|
const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
|
|
250
185
|
const onModelDeleteError = (0, _pubsub.createTopic)("cms.onModelDeleteError");
|
|
251
186
|
/**
|
|
252
187
|
* Initialize
|
|
253
188
|
*/
|
|
254
|
-
|
|
255
189
|
const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
|
|
256
190
|
/**
|
|
257
191
|
* We need to assign some default behaviors.
|
|
258
192
|
*/
|
|
259
|
-
|
|
260
193
|
(0, _beforeCreate.assignModelBeforeCreate)({
|
|
261
194
|
onModelBeforeCreate,
|
|
262
195
|
onModelBeforeCreateFrom,
|
|
263
|
-
|
|
196
|
+
context,
|
|
264
197
|
storageOperations
|
|
265
198
|
});
|
|
266
199
|
(0, _afterCreate.assignModelAfterCreate)({
|
|
@@ -269,8 +202,7 @@ const createModelsCrud = params => {
|
|
|
269
202
|
});
|
|
270
203
|
(0, _beforeUpdate.assignModelBeforeUpdate)({
|
|
271
204
|
onModelBeforeUpdate,
|
|
272
|
-
|
|
273
|
-
storageOperations
|
|
205
|
+
context
|
|
274
206
|
});
|
|
275
207
|
(0, _afterUpdate.assignModelAfterUpdate)({
|
|
276
208
|
context,
|
|
@@ -301,7 +233,6 @@ const createModelsCrud = params => {
|
|
|
301
233
|
onAfterModelUpdate: onModelAfterUpdate,
|
|
302
234
|
onBeforeModelDelete: onModelBeforeDelete,
|
|
303
235
|
onAfterModelDelete: onModelAfterDelete,
|
|
304
|
-
|
|
305
236
|
/**
|
|
306
237
|
* Released in 5.34.0
|
|
307
238
|
*/
|
|
@@ -321,26 +252,24 @@ const createModelsCrud = params => {
|
|
|
321
252
|
clearModelsCache,
|
|
322
253
|
getModel,
|
|
323
254
|
listModels,
|
|
324
|
-
|
|
325
|
-
async createModel(inputData) {
|
|
255
|
+
async createModel(input) {
|
|
326
256
|
await checkModelPermissions("w");
|
|
327
|
-
const
|
|
328
|
-
|
|
329
|
-
|
|
257
|
+
const result = await (0, _validation.createModelCreateValidation)().safeParseAsync(input);
|
|
258
|
+
if (!result.success) {
|
|
259
|
+
throw (0, _utils.createZodError)(result.error);
|
|
260
|
+
}
|
|
261
|
+
const data = result.data;
|
|
330
262
|
context.security.disableAuthorization();
|
|
331
|
-
const group = await context.cms.getGroup(
|
|
263
|
+
const group = await context.cms.getGroup(data.group);
|
|
332
264
|
context.security.enableAuthorization();
|
|
333
|
-
|
|
334
265
|
if (!group) {
|
|
335
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
266
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
336
267
|
}
|
|
337
|
-
|
|
338
|
-
const fields = await (0, _createFieldModels.createFieldModels)(input.fields);
|
|
339
268
|
const identity = getIdentity();
|
|
340
269
|
const model = {
|
|
341
|
-
name:
|
|
342
|
-
description:
|
|
343
|
-
modelId:
|
|
270
|
+
name: data.name,
|
|
271
|
+
description: data.description || "",
|
|
272
|
+
modelId: data.modelId || "",
|
|
344
273
|
titleFieldId: "id",
|
|
345
274
|
locale: getLocale().code,
|
|
346
275
|
tenant: getTenant().id,
|
|
@@ -355,17 +284,16 @@ const createModelsCrud = params => {
|
|
|
355
284
|
},
|
|
356
285
|
createdOn: new Date().toISOString(),
|
|
357
286
|
savedOn: new Date().toISOString(),
|
|
358
|
-
fields,
|
|
287
|
+
fields: data.fields,
|
|
359
288
|
lockedFields: [],
|
|
360
|
-
layout:
|
|
361
|
-
tags: [...(
|
|
289
|
+
layout: data.layout || [],
|
|
290
|
+
tags: [...(data.tags || [])],
|
|
362
291
|
webinyVersion: context.WEBINY_VERSION
|
|
363
292
|
};
|
|
364
293
|
model.tags = ensureTypeTag(model);
|
|
365
|
-
|
|
366
294
|
try {
|
|
367
295
|
await onModelBeforeCreate.publish({
|
|
368
|
-
input,
|
|
296
|
+
input: data,
|
|
369
297
|
model
|
|
370
298
|
});
|
|
371
299
|
const createdModel = await storageOperations.models.create({
|
|
@@ -374,20 +302,19 @@ const createModelsCrud = params => {
|
|
|
374
302
|
loaders.listModels.clearAll();
|
|
375
303
|
await updateManager(context, model);
|
|
376
304
|
await onModelAfterCreate.publish({
|
|
377
|
-
input,
|
|
305
|
+
input: data,
|
|
378
306
|
model: createdModel
|
|
379
307
|
});
|
|
380
308
|
return createdModel;
|
|
381
309
|
} catch (ex) {
|
|
382
310
|
await onModelCreateError.publish({
|
|
383
|
-
input,
|
|
311
|
+
input: data,
|
|
384
312
|
model,
|
|
385
313
|
error: ex
|
|
386
314
|
});
|
|
387
315
|
throw ex;
|
|
388
316
|
}
|
|
389
317
|
},
|
|
390
|
-
|
|
391
318
|
/**
|
|
392
319
|
* Method does not check for permissions or ownership.
|
|
393
320
|
* @internal
|
|
@@ -402,7 +329,6 @@ const createModelsCrud = params => {
|
|
|
402
329
|
locale: initialModel.locale || getLocale().code,
|
|
403
330
|
webinyVersion: context.WEBINY_VERSION
|
|
404
331
|
});
|
|
405
|
-
|
|
406
332
|
try {
|
|
407
333
|
await onModelBeforeUpdate.publish({
|
|
408
334
|
input: {},
|
|
@@ -430,43 +356,38 @@ const createModelsCrud = params => {
|
|
|
430
356
|
throw ex;
|
|
431
357
|
}
|
|
432
358
|
},
|
|
433
|
-
|
|
434
|
-
async createModelFrom(modelId, data) {
|
|
359
|
+
async createModelFrom(modelId, userInput) {
|
|
435
360
|
await checkModelPermissions("w");
|
|
436
361
|
/**
|
|
437
362
|
* Get a model record; this will also perform ownership validation.
|
|
438
363
|
*/
|
|
439
|
-
|
|
440
364
|
const original = await getModel(modelId);
|
|
441
|
-
const
|
|
442
|
-
name:
|
|
443
|
-
modelId:
|
|
444
|
-
description:
|
|
445
|
-
group:
|
|
446
|
-
locale:
|
|
365
|
+
const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync({
|
|
366
|
+
name: userInput.name,
|
|
367
|
+
modelId: userInput.modelId,
|
|
368
|
+
description: userInput.description || original.description,
|
|
369
|
+
group: userInput.group,
|
|
370
|
+
locale: userInput.locale
|
|
447
371
|
});
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
372
|
+
if (!result.success) {
|
|
373
|
+
throw (0, _utils.createZodError)(result.error);
|
|
374
|
+
}
|
|
375
|
+
const data = result.data;
|
|
376
|
+
const locale = await context.i18n.getLocale(data.locale || original.locale);
|
|
452
377
|
if (!locale) {
|
|
453
|
-
throw new _handlerGraphql.NotFoundError(`There is no locale "${
|
|
378
|
+
throw new _handlerGraphql.NotFoundError(`There is no locale "${data.locale}".`);
|
|
454
379
|
}
|
|
455
380
|
/**
|
|
456
381
|
* Use storage operations directly because we cannot get group from different locale via context methods.
|
|
457
382
|
*/
|
|
458
|
-
|
|
459
|
-
|
|
460
383
|
const group = await context.cms.storageOperations.groups.get({
|
|
461
|
-
id:
|
|
384
|
+
id: data.group,
|
|
462
385
|
tenant: original.tenant,
|
|
463
386
|
locale: locale.code
|
|
464
387
|
});
|
|
465
|
-
|
|
466
388
|
if (!group) {
|
|
467
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
389
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
468
390
|
}
|
|
469
|
-
|
|
470
391
|
const identity = getIdentity();
|
|
471
392
|
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
|
|
472
393
|
locale: locale.code,
|
|
@@ -474,9 +395,9 @@ const createModelsCrud = params => {
|
|
|
474
395
|
id: group.id,
|
|
475
396
|
name: group.name
|
|
476
397
|
},
|
|
477
|
-
name:
|
|
478
|
-
modelId:
|
|
479
|
-
description:
|
|
398
|
+
name: data.name,
|
|
399
|
+
modelId: data.modelId || "",
|
|
400
|
+
description: data.description || "",
|
|
480
401
|
createdBy: {
|
|
481
402
|
id: identity.id,
|
|
482
403
|
displayName: identity.displayName,
|
|
@@ -487,10 +408,9 @@ const createModelsCrud = params => {
|
|
|
487
408
|
lockedFields: [],
|
|
488
409
|
webinyVersion: context.WEBINY_VERSION
|
|
489
410
|
});
|
|
490
|
-
|
|
491
411
|
try {
|
|
492
412
|
await onModelBeforeCreateFrom.publish({
|
|
493
|
-
input,
|
|
413
|
+
input: data,
|
|
494
414
|
model,
|
|
495
415
|
original
|
|
496
416
|
});
|
|
@@ -500,14 +420,14 @@ const createModelsCrud = params => {
|
|
|
500
420
|
loaders.listModels.clearAll();
|
|
501
421
|
await updateManager(context, model);
|
|
502
422
|
await onModelAfterCreateFrom.publish({
|
|
503
|
-
input,
|
|
423
|
+
input: data,
|
|
504
424
|
original,
|
|
505
425
|
model: createdModel
|
|
506
426
|
});
|
|
507
427
|
return createdModel;
|
|
508
428
|
} catch (ex) {
|
|
509
429
|
await onModelCreateFromError.publish({
|
|
510
|
-
input,
|
|
430
|
+
input: data,
|
|
511
431
|
original,
|
|
512
432
|
model,
|
|
513
433
|
error: ex
|
|
@@ -515,58 +435,50 @@ const createModelsCrud = params => {
|
|
|
515
435
|
throw ex;
|
|
516
436
|
}
|
|
517
437
|
},
|
|
438
|
+
async updateModel(modelId, input) {
|
|
439
|
+
await checkModelPermissions("w");
|
|
518
440
|
|
|
519
|
-
|
|
520
|
-
await checkModelPermissions("w"); // Get a model record; this will also perform ownership validation.
|
|
521
|
-
|
|
441
|
+
// Get a model record; this will also perform ownership validation.
|
|
522
442
|
const original = await getModel(modelId);
|
|
523
|
-
const
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
if (Object.keys(input).length === 0) {
|
|
443
|
+
const result = await (0, _validation.createModelUpdateValidation)().safeParseAsync(input);
|
|
444
|
+
if (!result.success) {
|
|
445
|
+
throw (0, _utils.createZodError)(result.error);
|
|
446
|
+
}
|
|
447
|
+
const data = result.data;
|
|
448
|
+
if (Object.keys(data).length === 0) {
|
|
530
449
|
/**
|
|
531
450
|
* We need to return the original if nothing is to be updated.
|
|
532
451
|
*/
|
|
533
452
|
return original;
|
|
534
453
|
}
|
|
535
|
-
|
|
536
454
|
let group = {
|
|
537
455
|
id: original.group.id,
|
|
538
456
|
name: original.group.name
|
|
539
457
|
};
|
|
540
|
-
|
|
541
|
-
if (input.group) {
|
|
458
|
+
if (data.group) {
|
|
542
459
|
context.security.disableAuthorization();
|
|
543
|
-
const groupData = await context.cms.getGroup(
|
|
460
|
+
const groupData = await context.cms.getGroup(data.group);
|
|
544
461
|
context.security.enableAuthorization();
|
|
545
|
-
|
|
546
462
|
if (!groupData) {
|
|
547
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
463
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
548
464
|
}
|
|
549
|
-
|
|
550
465
|
group = {
|
|
551
466
|
id: groupData.id,
|
|
552
467
|
name: groupData.name
|
|
553
468
|
};
|
|
554
469
|
}
|
|
555
|
-
|
|
556
|
-
const fields = await (0, _createFieldModels.createFieldModels)(inputData.fields);
|
|
557
|
-
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
|
|
470
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
|
|
558
471
|
group,
|
|
472
|
+
description: data.description || original.description,
|
|
559
473
|
tenant: original.tenant || getTenant().id,
|
|
560
474
|
locale: original.locale || getLocale().code,
|
|
561
475
|
webinyVersion: context.WEBINY_VERSION,
|
|
562
|
-
fields,
|
|
563
476
|
savedOn: new Date().toISOString()
|
|
564
477
|
});
|
|
565
478
|
model.tags = ensureTypeTag(model);
|
|
566
|
-
|
|
567
479
|
try {
|
|
568
480
|
await onModelBeforeUpdate.publish({
|
|
569
|
-
input,
|
|
481
|
+
input: data,
|
|
570
482
|
original,
|
|
571
483
|
model
|
|
572
484
|
});
|
|
@@ -575,14 +487,14 @@ const createModelsCrud = params => {
|
|
|
575
487
|
});
|
|
576
488
|
await updateManager(context, resultModel);
|
|
577
489
|
await onModelAfterUpdate.publish({
|
|
578
|
-
input,
|
|
490
|
+
input: data,
|
|
579
491
|
original,
|
|
580
492
|
model: resultModel
|
|
581
493
|
});
|
|
582
494
|
return resultModel;
|
|
583
495
|
} catch (ex) {
|
|
584
496
|
await onModelUpdateError.publish({
|
|
585
|
-
input,
|
|
497
|
+
input: data,
|
|
586
498
|
model,
|
|
587
499
|
original,
|
|
588
500
|
error: ex
|
|
@@ -590,16 +502,13 @@ const createModelsCrud = params => {
|
|
|
590
502
|
throw ex;
|
|
591
503
|
}
|
|
592
504
|
},
|
|
593
|
-
|
|
594
505
|
async deleteModel(modelId) {
|
|
595
506
|
await checkModelPermissions("d");
|
|
596
507
|
const model = await getModel(modelId);
|
|
597
|
-
|
|
598
508
|
try {
|
|
599
509
|
await onModelBeforeDelete.publish({
|
|
600
510
|
model
|
|
601
511
|
});
|
|
602
|
-
|
|
603
512
|
try {
|
|
604
513
|
await storageOperations.models.delete({
|
|
605
514
|
model
|
|
@@ -610,7 +519,6 @@ const createModelsCrud = params => {
|
|
|
610
519
|
modelId: model.modelId
|
|
611
520
|
});
|
|
612
521
|
}
|
|
613
|
-
|
|
614
522
|
await onModelAfterDelete.publish({
|
|
615
523
|
model
|
|
616
524
|
});
|
|
@@ -623,7 +531,6 @@ const createModelsCrud = params => {
|
|
|
623
531
|
throw ex;
|
|
624
532
|
}
|
|
625
533
|
},
|
|
626
|
-
|
|
627
534
|
async initializeModel(modelId, data) {
|
|
628
535
|
/**
|
|
629
536
|
* We require that users have write permissions to initialize models.
|
|
@@ -637,7 +544,6 @@ const createModelsCrud = params => {
|
|
|
637
544
|
});
|
|
638
545
|
return true;
|
|
639
546
|
},
|
|
640
|
-
|
|
641
547
|
getModelManager,
|
|
642
548
|
getEntryManager: async model => {
|
|
643
549
|
return getModelManager(model);
|
|
@@ -646,5 +552,4 @@ const createModelsCrud = params => {
|
|
|
646
552
|
getEntryManagers: () => managers
|
|
647
553
|
};
|
|
648
554
|
};
|
|
649
|
-
|
|
650
555
|
exports.createModelsCrud = createModelsCrud;
|