@webiny/api-headless-cms 5.37.8 → 5.38.0-beta.1
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/constants.js +3 -1
- package/context.js +10 -17
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.js +3 -1
- package/crud/contentEntry/beforeCreate.js +3 -1
- package/crud/contentEntry/beforeUpdate.js +3 -1
- package/crud/contentEntry/entryDataValidation.d.ts +4 -2
- package/crud/contentEntry/entryDataValidation.js +220 -47
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +3 -1
- package/crud/contentEntry/referenceFieldsMapping.d.ts +6 -0
- package/crud/contentEntry/referenceFieldsMapping.js +118 -97
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.js +5 -3
- package/crud/contentEntry/searchableFields.js.map +1 -1
- package/crud/contentEntry.crud.js +68 -64
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +1 -1
- package/crud/contentModel/beforeCreate.js +11 -9
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.js +3 -1
- package/crud/contentModel/beforeUpdate.d.ts +1 -1
- package/crud/contentModel/beforeUpdate.js +3 -6
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/compatibility/modelApiName.js +3 -1
- package/crud/contentModel/contentModelManagerFactory.js +3 -1
- package/crud/contentModel/createFieldStorageId.js +3 -1
- package/crud/contentModel/defaultFields.js +3 -1
- package/crud/contentModel/ensureTypeTag.d.ts +5 -0
- package/crud/contentModel/ensureTypeTag.js +21 -0
- package/crud/contentModel/ensureTypeTag.js.map +1 -0
- package/crud/contentModel/fields/descriptionField.js +3 -1
- package/crud/contentModel/fields/imageField.js +3 -1
- package/crud/contentModel/fields/titleField.js +3 -1
- package/crud/contentModel/listModelsFromDatabase.d.ts +10 -0
- package/crud/contentModel/listModelsFromDatabase.js +39 -0
- package/crud/contentModel/listModelsFromDatabase.js.map +1 -0
- package/crud/contentModel/validate/endingAllowed.js +3 -1
- package/crud/contentModel/validate/isModelEndingAllowed.js +4 -2
- package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -1
- package/crud/contentModel/validate/modelId.js +3 -1
- package/crud/contentModel/validate/pluralApiName.js +3 -1
- package/crud/contentModel/validate/singularApiName.js +3 -1
- package/crud/contentModel/validateModel.js +3 -1
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +3 -1
- package/crud/contentModel/validation.d.ts +339 -58
- package/crud/contentModel/validation.js +71 -11
- package/crud/contentModel/validation.js.map +1 -1
- package/crud/contentModel.crud.js +80 -156
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.d.ts +1 -1
- package/crud/contentModelGroup/beforeCreate.js +15 -1
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.js +3 -1
- package/crud/contentModelGroup/beforeUpdate.js +3 -1
- package/crud/contentModelGroup/listGroupsFromDatabase.d.ts +8 -0
- package/crud/contentModelGroup/listGroupsFromDatabase.js +22 -0
- package/crud/contentModelGroup/listGroupsFromDatabase.js.map +1 -0
- package/crud/contentModelGroup/validation.d.ts +9 -6
- package/crud/contentModelGroup/validation.js +5 -2
- package/crud/contentModelGroup/validation.js.map +1 -1
- package/crud/contentModelGroup.crud.js +89 -110
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/system.crud.js +4 -7
- package/crud/system.crud.js.map +1 -1
- package/export/crud/exporting.d.ts +3 -0
- package/export/crud/exporting.js +50 -0
- package/export/crud/exporting.js.map +1 -0
- package/export/crud/importing.d.ts +3 -0
- package/export/crud/importing.js +79 -0
- package/export/crud/importing.js.map +1 -0
- package/export/crud/imports/importData.d.ts +14 -0
- package/export/crud/imports/importData.js +25 -0
- package/export/crud/imports/importData.js.map +1 -0
- package/export/crud/imports/importGroups.d.ts +8 -0
- package/export/crud/imports/importGroups.js +99 -0
- package/export/crud/imports/importGroups.js.map +1 -0
- package/export/crud/imports/importModels.d.ts +8 -0
- package/export/crud/imports/importModels.js +134 -0
- package/export/crud/imports/importModels.js.map +1 -0
- package/export/crud/imports/validateGroups.d.ts +8 -0
- package/export/crud/imports/validateGroups.js +106 -0
- package/export/crud/imports/validateGroups.js.map +1 -0
- package/export/crud/imports/validateInput.d.ts +19 -0
- package/export/crud/imports/validateInput.js +49 -0
- package/export/crud/imports/validateInput.js.map +1 -0
- package/export/crud/imports/validateModels.d.ts +9 -0
- package/export/crud/imports/validateModels.js +204 -0
- package/export/crud/imports/validateModels.js.map +1 -0
- package/export/crud/index.d.ts +4 -0
- package/export/crud/index.js +15 -0
- package/export/crud/index.js.map +1 -0
- package/export/crud/sanitize.d.ts +4 -0
- package/export/crud/sanitize.js +35 -0
- package/export/crud/sanitize.js.map +1 -0
- package/export/graphql/index.d.ts +3 -0
- package/export/graphql/index.js +188 -0
- package/export/graphql/index.js.map +1 -0
- package/export/index.d.ts +2 -0
- package/export/index.js +29 -0
- package/export/index.js.map +1 -0
- package/export/types.d.ts +111 -0
- package/export/types.js +22 -0
- package/export/types.js.map +1 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +3 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +3 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +3 -1
- package/fieldConverters/index.js +3 -1
- package/graphql/buildSchemaPlugins.js +3 -1
- package/graphql/checkEndpointAccess.js +3 -1
- package/graphql/createExecutableSchema.js +3 -1
- package/graphql/createRequestBody.js +3 -1
- package/graphql/formatErrorPayload.js +3 -1
- package/graphql/generateSchema.js +3 -1
- package/graphql/getSchema.d.ts +0 -1
- package/graphql/getSchema.js +23 -13
- package/graphql/getSchema.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +3 -1
- package/graphql/handleRequest.js +3 -5
- package/graphql/handleRequest.js.map +1 -1
- package/graphql/index.d.ts +1 -1
- package/graphql/index.js +4 -2
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.js +3 -1
- package/graphql/schema/baseSchema.d.ts +2 -3
- package/graphql/schema/baseSchema.js +58 -2
- package/graphql/schema/baseSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +4 -2
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.js +4 -1
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.js +5 -5
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +3 -1
- package/graphql/schema/createFieldTypePluginRecords.js +3 -1
- package/graphql/schema/createManageResolvers.js +7 -1
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +8 -4
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +3 -1
- package/graphql/schema/createReadResolvers.js +3 -1
- package/graphql/schema/createReadSDL.js +3 -1
- package/graphql/schema/resolvers/commonFieldResolvers.js +3 -1
- package/graphql/schema/resolvers/manage/resolveCreate.d.ts +2 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +4 -2
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +2 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +4 -2
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +3 -1
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +3 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +3 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +3 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +3 -1
- package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +3 -1
- package/graphql/schema/resolvers/manage/resolveList.js +3 -1
- package/graphql/schema/resolvers/manage/resolveMove.js +3 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +3 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +3 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +3 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +2 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +4 -2
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveValidate.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveValidate.js +20 -0
- package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -0
- package/graphql/schema/resolvers/preview/resolveGet.js +3 -1
- package/graphql/schema/resolvers/preview/resolveList.js +3 -1
- package/graphql/schema/resolvers/read/resolveGet.js +3 -1
- package/graphql/schema/resolvers/read/resolveList.js +3 -1
- package/graphql/schema/schemaPlugins.js +3 -1
- package/graphql/system.js +3 -1
- package/graphqlFields/boolean.js +3 -1
- package/graphqlFields/datetime.js +4 -3
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.js +29 -6
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +3 -1
- package/graphqlFields/dynamicZone/index.js +3 -1
- package/graphqlFields/file.js +3 -1
- package/graphqlFields/helpers.d.ts +0 -1
- package/graphqlFields/helpers.js +6 -18
- package/graphqlFields/helpers.js.map +1 -1
- package/graphqlFields/index.js +3 -1
- package/graphqlFields/longText.js +14 -3
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +3 -1
- package/graphqlFields/object.js +5 -17
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +4 -2
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText.js +3 -1
- package/graphqlFields/text.js +3 -1
- package/index.d.ts +1 -1
- package/index.js +5 -2
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.js +3 -1
- package/modelManager/index.js +3 -1
- package/package.json +18 -19
- package/parameters/context.js +3 -1
- package/parameters/header.js +3 -1
- package/parameters/index.js +3 -1
- package/parameters/manual.js +3 -1
- package/parameters/path.js +3 -1
- package/plugins/CmsGraphQLSchemaPlugin.js +3 -1
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +3 -1
- package/plugins/CmsGroupPlugin.d.ts +6 -3
- package/plugins/CmsGroupPlugin.js +7 -2
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js +3 -1
- package/plugins/CmsModelPlugin.d.ts +2 -2
- package/plugins/CmsModelPlugin.js +6 -2
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +3 -1
- package/plugins/StorageOperationsCmsModelPlugin.js +3 -1
- package/plugins/StorageTransformPlugin.js +3 -1
- package/plugins/index.js +3 -1
- package/storage/default.js +3 -1
- package/storage/object.js +3 -1
- package/types.d.ts +62 -230
- package/types.js +3 -17
- package/types.js.map +1 -1
- package/utils/access.js +3 -1
- package/utils/caching/Cache.d.ts +2 -0
- package/utils/caching/Cache.js +53 -0
- package/utils/caching/Cache.js.map +1 -0
- package/utils/caching/CacheKey.d.ts +3 -0
- package/utils/caching/CacheKey.js +41 -0
- package/utils/caching/CacheKey.js.map +1 -0
- package/utils/caching/index.d.ts +2 -0
- package/utils/caching/index.js +29 -0
- package/utils/caching/index.js.map +1 -0
- package/utils/caching/types.d.ts +9 -0
- package/utils/caching/types.js +7 -0
- package/utils/caching/types.js.map +1 -0
- package/utils/converters/Converter.js +3 -1
- package/utils/converters/ConverterCollection.js +3 -1
- package/utils/converters/valueKeyStorageConverter.js +3 -1
- package/utils/createTypeFromFields.js +6 -1
- package/utils/createTypeFromFields.js.map +1 -1
- package/utils/createTypeName.js +3 -1
- package/utils/entryStorage.js +3 -1
- package/utils/filterAsync.js +3 -1
- package/utils/getBaseFieldType.js +3 -1
- package/utils/getEntryDescription.js +3 -1
- package/utils/getEntryImage.js +3 -1
- package/utils/getEntryTitle.js +3 -1
- package/utils/getSchemaFromFieldPlugins.js +3 -1
- package/utils/incrementEntryIdVersion.js +3 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +18 -0
- package/utils/index.js.map +1 -0
- package/utils/permissions/EntriesPermissions.js +3 -1
- package/utils/permissions/ModelGroupsPermissions.js +3 -1
- package/utils/permissions/ModelsPermissions.js +3 -1
- package/utils/renderFields.js +3 -1
- package/utils/renderGetFilterFields.js +3 -1
- package/utils/renderInputFields.js +3 -1
- package/utils/renderListFilterFields.js +3 -1
- package/utils/renderSortEnum.js +3 -1
- package/utils/toSlug.js +3 -1
- package/validators/dateGte.js +3 -1
- package/validators/dateLte.js +3 -1
- package/validators/gte.js +3 -1
- package/validators/in.js +3 -1
- package/validators/index.js +4 -3
- package/validators/index.js.map +1 -1
- package/validators/lte.js +3 -1
- package/validators/maxLength.js +3 -1
- package/validators/minLength.js +3 -1
- package/validators/pattern.js +3 -1
- package/validators/patternPlugins/email.js +3 -1
- package/validators/patternPlugins/index.js +3 -1
- package/validators/patternPlugins/lowerCase.js +3 -1
- package/validators/patternPlugins/lowerCaseSpace.js +3 -1
- package/validators/patternPlugins/upperCase.js +3 -1
- package/validators/patternPlugins/upperCaseSpace.js +3 -1
- package/validators/patternPlugins/url.js +3 -1
- package/validators/required.js +3 -1
- package/validators/timeGte.js +3 -1
- package/validators/timeLte.js +3 -1
- package/validators/unique.js +4 -2
- package/validators/unique.js.map +1 -1
- package/crud/contentModel/afterCreate.d.ts +0 -8
- package/crud/contentModel/afterCreate.js +0 -16
- package/crud/contentModel/afterCreate.js.map +0 -1
- package/crud/contentModel/afterCreateFrom.d.ts +0 -8
- package/crud/contentModel/afterCreateFrom.js +0 -16
- package/crud/contentModel/afterCreateFrom.js.map +0 -1
- package/crud/contentModel/afterDelete.d.ts +0 -8
- package/crud/contentModel/afterDelete.js +0 -16
- package/crud/contentModel/afterDelete.js.map +0 -1
- package/crud/contentModel/afterUpdate.d.ts +0 -8
- package/crud/contentModel/afterUpdate.js +0 -16
- package/crud/contentModel/afterUpdate.js.map +0 -1
- package/crud/contentModel/validateLayout.d.ts +0 -2
- package/crud/contentModel/validateLayout.js +0 -28
- package/crud/contentModel/validateLayout.js.map +0 -1
- package/crud/settings.crud.d.ts +0 -12
- package/crud/settings.crud.js +0 -62
- package/crud/settings.crud.js.map +0 -1
- package/utils/permissions/SettingsPermissions.d.ts +0 -4
- package/utils/permissions/SettingsPermissions.js +0 -9
- package/utils/permissions/SettingsPermissions.js.map +0 -1
- package/validators/dynamicZone.d.ts +0 -2
- package/validators/dynamicZone.js +0 -20
- package/validators/dynamicZone.js.map +0 -1
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.createModelUpdateValidation = exports.createModelCreateValidation = exports.createModelCreateFromValidation = void 0;
|
|
7
|
+
exports.createModelUpdateValidation = exports.createModelImportValidation = exports.createModelCreateValidation = exports.createModelCreateFromValidation = void 0;
|
|
8
8
|
var _zod = _interopRequireDefault(require("zod"));
|
|
9
9
|
var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
|
|
10
10
|
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
|
|
@@ -71,7 +71,10 @@ const fieldSchema = _zod.default.object({
|
|
|
71
71
|
return value || {};
|
|
72
72
|
}).default({})
|
|
73
73
|
});
|
|
74
|
-
const
|
|
74
|
+
const apiNameRefinementValidation = value => {
|
|
75
|
+
if (value.match(/^[A-Z]/) === null) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
75
78
|
return value === (0, _upperFirst.default)((0, _camelCase.default)(value));
|
|
76
79
|
};
|
|
77
80
|
const refinementSingularValidationMessage = value => {
|
|
@@ -84,12 +87,43 @@ const refinementPluralValidationMessage = value => {
|
|
|
84
87
|
message: `The Plural API Name value "${value || "undefined"}" is not valid. It must in Upper First + Camel Cased form. For example: "ArticleCategories" or "CarMakes".`
|
|
85
88
|
};
|
|
86
89
|
};
|
|
90
|
+
const refinementModelIdValidation = value => {
|
|
91
|
+
if (!value) {
|
|
92
|
+
return true;
|
|
93
|
+
} else if (value.match(/^[a-zA-Z]/) === null) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
const camelCasedValue = (0, _camelCase.default)(value).toLowerCase();
|
|
97
|
+
return camelCasedValue === value.toLowerCase();
|
|
98
|
+
};
|
|
99
|
+
const refinementModelIdValidationMessage = value => {
|
|
100
|
+
if (!value) {
|
|
101
|
+
return {};
|
|
102
|
+
} else if (value.match(/^[a-zA-Z]/) === null) {
|
|
103
|
+
return {
|
|
104
|
+
message: `The modelId "${value}" is not valid. It must start with a A-Z or a-z.`
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
message: `The modelId "${value}" is not valid.`
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
const modelIdTransformation = value => {
|
|
112
|
+
if (!value) {
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
const camelCasedValue = (0, _camelCase.default)(value);
|
|
116
|
+
if (camelCasedValue.toLowerCase() === value.toLowerCase()) {
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
return camelCasedValue;
|
|
120
|
+
};
|
|
87
121
|
const createModelCreateValidation = () => {
|
|
88
122
|
return _zod.default.object({
|
|
89
123
|
name: shortString,
|
|
90
|
-
modelId: optionalShortString,
|
|
91
|
-
singularApiName: shortString.refine(
|
|
92
|
-
pluralApiName: shortString.refine(
|
|
124
|
+
modelId: optionalShortString.transform(modelIdTransformation),
|
|
125
|
+
singularApiName: shortString.min(1).refine(apiNameRefinementValidation, refinementSingularValidationMessage),
|
|
126
|
+
pluralApiName: shortString.min(1).refine(apiNameRefinementValidation, refinementPluralValidationMessage),
|
|
93
127
|
description: optionalNullishShortString,
|
|
94
128
|
group: shortString,
|
|
95
129
|
icon: optionalNullishShortString,
|
|
@@ -103,12 +137,36 @@ const createModelCreateValidation = () => {
|
|
|
103
137
|
});
|
|
104
138
|
};
|
|
105
139
|
exports.createModelCreateValidation = createModelCreateValidation;
|
|
140
|
+
const createModelImportValidation = () => {
|
|
141
|
+
return _zod.default.object({
|
|
142
|
+
name: shortString.min(1).refine(value => {
|
|
143
|
+
return value.match(/[a-zA-Z]/) !== null;
|
|
144
|
+
}, value => {
|
|
145
|
+
return {
|
|
146
|
+
message: `The name "${value}" is not valid.`
|
|
147
|
+
};
|
|
148
|
+
}),
|
|
149
|
+
modelId: shortString.min(1).refine(refinementModelIdValidation, refinementModelIdValidationMessage).transform(modelIdTransformation),
|
|
150
|
+
singularApiName: shortString.min(1).refine(apiNameRefinementValidation, refinementSingularValidationMessage),
|
|
151
|
+
pluralApiName: shortString.min(1).refine(apiNameRefinementValidation, refinementPluralValidationMessage),
|
|
152
|
+
description: optionalNullishShortString,
|
|
153
|
+
group: shortString,
|
|
154
|
+
icon: optionalNullishShortString,
|
|
155
|
+
fields: _zod.default.array(fieldSchema).min(1),
|
|
156
|
+
layout: _zod.default.array(_zod.default.array(shortString)).min(1),
|
|
157
|
+
tags: _zod.default.array(shortString).optional(),
|
|
158
|
+
titleFieldId: shortString.nullish(),
|
|
159
|
+
descriptionFieldId: optionalShortString.nullish(),
|
|
160
|
+
imageFieldId: optionalShortString.nullish()
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
exports.createModelImportValidation = createModelImportValidation;
|
|
106
164
|
const createModelCreateFromValidation = () => {
|
|
107
165
|
return _zod.default.object({
|
|
108
166
|
name: shortString,
|
|
109
|
-
modelId: optionalShortString,
|
|
110
|
-
singularApiName: shortString.refine(
|
|
111
|
-
pluralApiName: shortString.refine(
|
|
167
|
+
modelId: optionalShortString.transform(modelIdTransformation),
|
|
168
|
+
singularApiName: shortString.refine(apiNameRefinementValidation, refinementSingularValidationMessage),
|
|
169
|
+
pluralApiName: shortString.refine(apiNameRefinementValidation, refinementPluralValidationMessage),
|
|
112
170
|
description: optionalNullishShortString,
|
|
113
171
|
group: shortString,
|
|
114
172
|
icon: optionalNullishShortString,
|
|
@@ -123,13 +181,13 @@ const createModelUpdateValidation = () => {
|
|
|
123
181
|
if (!value) {
|
|
124
182
|
return true;
|
|
125
183
|
}
|
|
126
|
-
return
|
|
184
|
+
return apiNameRefinementValidation(value);
|
|
127
185
|
}, refinementSingularValidationMessage),
|
|
128
186
|
pluralApiName: optionalShortString.refine(value => {
|
|
129
187
|
if (!value) {
|
|
130
188
|
return true;
|
|
131
189
|
}
|
|
132
|
-
return
|
|
190
|
+
return apiNameRefinementValidation(value);
|
|
133
191
|
}, refinementPluralValidationMessage),
|
|
134
192
|
description: optionalNullishShortString,
|
|
135
193
|
group: optionalShortString,
|
|
@@ -142,4 +200,6 @@ const createModelUpdateValidation = () => {
|
|
|
142
200
|
tags: _zod.default.array(shortString).optional()
|
|
143
201
|
});
|
|
144
202
|
};
|
|
145
|
-
exports.createModelUpdateValidation = createModelUpdateValidation;
|
|
203
|
+
exports.createModelUpdateValidation = createModelUpdateValidation;
|
|
204
|
+
|
|
205
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_zod","_interopRequireDefault","require","_upperFirst","_camelCase","fieldSystemFields","str","zod","string","trim","shortString","max","optionalShortString","optional","optionalNullishShortString","nullish","fieldSchema","object","id","storageId","transform","fieldId","regex","message","superRefine","value","ctx","includes","addIssue","code","ZodIssueCode","custom","path","label","helpText","default","placeholderText","nullable","type","tags","array","multipleValues","boolean","predefinedValues","enabled","values","selected","renderer","name","validation","settings","passthrough","listValidation","refinementValidation","upperFirst","camelCase","refinementSingularValidationMessage","refinementPluralValidationMessage","createModelCreateValidation","modelId","singularApiName","refine","pluralApiName","description","group","icon","fields","layout","titleFieldId","descriptionFieldId","imageFieldId","defaultFields","exports","createModelCreateFromValidation","locale","createModelUpdateValidation"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport upperFirst from \"lodash/upperFirst\";\nimport camelCase from \"lodash/camelCase\";\n\nconst fieldSystemFields: string[] = [\n \"id\",\n \"fieldId\",\n \"storageId\",\n \"label\",\n \"helpText\",\n \"placeholderText\",\n \"type\",\n \"multipleValues\",\n \"predefinedValues\",\n \"renderer\",\n \"validation\",\n \"listValidation\",\n \"settings\"\n];\n\nconst str = zod.string().trim();\nconst shortString = str.max(255);\nconst optionalShortString = shortString.optional();\nconst optionalNullishShortString = optionalShortString.nullish();\n\nconst fieldSchema = zod.object({\n id: shortString,\n storageId: zod\n .string()\n .optional()\n .transform(() => {\n return \"\";\n }),\n fieldId: shortString\n .max(100)\n .regex(/^!?[a-zA-Z]/, {\n message: `Provided value is not valid - must not start with a number.`\n })\n .regex(/^(^[a-zA-Z0-9]+)$/, {\n message: `Provided value is not valid - must be alphanumeric string.`\n })\n .superRefine((value, ctx) => {\n if (fieldSystemFields.includes(value)) {\n return ctx.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `Provided ${value} is not valid - \"${value}\" is an auto-generated field.`,\n path: [\"fieldId\"]\n });\n }\n }),\n label: shortString,\n helpText: optionalShortString.optional().nullish().default(null),\n placeholderText: optionalShortString.optional().nullable().default(null),\n type: shortString,\n tags: zod.array(shortString).optional().default([]),\n multipleValues: zod\n .boolean()\n .optional()\n .nullish()\n .transform(value => {\n return !!value;\n })\n .default(false),\n predefinedValues: zod\n .object({\n enabled: zod.boolean(),\n values: zod\n .array(\n zod.object({\n value: shortString,\n label: shortString,\n selected: zod.boolean().optional().default(false)\n })\n )\n .default([])\n })\n .default({\n enabled: false,\n values: []\n })\n .optional(),\n renderer: zod\n .object({\n name: shortString\n })\n .optional(),\n validation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .nullish()\n .optional()\n .default([])\n .transform(value => value || []),\n listValidation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .nullish()\n .optional()\n .default([])\n .transform(value => value || []),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n});\n\nconst refinementValidation = (value: string): boolean => {\n return value === upperFirst(camelCase(value));\n};\nconst refinementSingularValidationMessage = (value?: string) => {\n return {\n message: `The Singular API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategory\" or \"CarMake\".`\n };\n};\nconst refinementPluralValidationMessage = (value?: string) => {\n return {\n message: `The Plural API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategories\" or \"CarMakes\".`\n };\n};\n\nexport const createModelCreateValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString,\n singularApiName: shortString.refine(\n refinementValidation,\n refinementSingularValidationMessage\n ),\n pluralApiName: shortString.refine(refinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema).default([]),\n layout: zod.array(zod.array(shortString)).default([]),\n tags: zod.array(shortString).optional(),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n defaultFields: zod.boolean().nullish()\n });\n};\n\nexport const createModelCreateFromValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString,\n singularApiName: shortString.refine(\n refinementValidation,\n refinementSingularValidationMessage\n ),\n pluralApiName: shortString.refine(refinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n locale: optionalShortString\n });\n};\n\nexport const createModelUpdateValidation = () => {\n return zod.object({\n name: optionalShortString,\n singularApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return refinementValidation(value);\n }, refinementSingularValidationMessage),\n pluralApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return refinementValidation(value);\n }, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: optionalShortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema),\n layout: zod.array(zod.array(shortString)),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n tags: zod.array(shortString).optional()\n });\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_zod","_interopRequireDefault","require","_upperFirst","_camelCase","fieldSystemFields","str","zod","string","trim","shortString","max","optionalShortString","optional","optionalNullishShortString","nullish","fieldSchema","object","id","storageId","transform","fieldId","regex","message","superRefine","value","ctx","includes","addIssue","code","ZodIssueCode","custom","path","label","helpText","default","placeholderText","nullable","type","tags","array","multipleValues","boolean","predefinedValues","enabled","values","selected","renderer","name","validation","settings","passthrough","listValidation","apiNameRefinementValidation","match","upperFirst","camelCase","refinementSingularValidationMessage","refinementPluralValidationMessage","refinementModelIdValidation","camelCasedValue","toLowerCase","refinementModelIdValidationMessage","modelIdTransformation","createModelCreateValidation","modelId","singularApiName","min","refine","pluralApiName","description","group","icon","fields","layout","titleFieldId","descriptionFieldId","imageFieldId","defaultFields","exports","createModelImportValidation","createModelCreateFromValidation","locale","createModelUpdateValidation"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport upperFirst from \"lodash/upperFirst\";\nimport camelCase from \"lodash/camelCase\";\n\nconst fieldSystemFields: string[] = [\n \"id\",\n \"fieldId\",\n \"storageId\",\n \"label\",\n \"helpText\",\n \"placeholderText\",\n \"type\",\n \"multipleValues\",\n \"predefinedValues\",\n \"renderer\",\n \"validation\",\n \"listValidation\",\n \"settings\"\n];\n\nconst str = zod.string().trim();\nconst shortString = str.max(255);\nconst optionalShortString = shortString.optional();\nconst optionalNullishShortString = optionalShortString.nullish();\n\nconst fieldSchema = zod.object({\n id: shortString,\n storageId: zod\n .string()\n .optional()\n .transform(() => {\n return \"\";\n }),\n fieldId: shortString\n .max(100)\n .regex(/^!?[a-zA-Z]/, {\n message: `Provided value is not valid - must not start with a number.`\n })\n .regex(/^(^[a-zA-Z0-9]+)$/, {\n message: `Provided value is not valid - must be alphanumeric string.`\n })\n .superRefine((value, ctx) => {\n if (fieldSystemFields.includes(value)) {\n return ctx.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `Provided ${value} is not valid - \"${value}\" is an auto-generated field.`,\n path: [\"fieldId\"]\n });\n }\n }),\n label: shortString,\n helpText: optionalShortString.optional().nullish().default(null),\n placeholderText: optionalShortString.optional().nullable().default(null),\n type: shortString,\n tags: zod.array(shortString).optional().default([]),\n multipleValues: zod\n .boolean()\n .optional()\n .nullish()\n .transform(value => {\n return !!value;\n })\n .default(false),\n predefinedValues: zod\n .object({\n enabled: zod.boolean(),\n values: zod\n .array(\n zod.object({\n value: shortString,\n label: shortString,\n selected: zod.boolean().optional().default(false)\n })\n )\n .default([])\n })\n .default({\n enabled: false,\n values: []\n })\n .optional(),\n renderer: zod\n .object({\n name: shortString\n })\n .optional(),\n validation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .nullish()\n .optional()\n .default([])\n .transform(value => value || []),\n listValidation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .nullish()\n .optional()\n .default([])\n .transform(value => value || []),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n});\n\nconst apiNameRefinementValidation = (value: string): boolean => {\n if (value.match(/^[A-Z]/) === null) {\n return false;\n }\n return value === upperFirst(camelCase(value));\n};\nconst refinementSingularValidationMessage = (value?: string) => {\n return {\n message: `The Singular API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategory\" or \"CarMake\".`\n };\n};\nconst refinementPluralValidationMessage = (value?: string) => {\n return {\n message: `The Plural API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategories\" or \"CarMakes\".`\n };\n};\n\nconst refinementModelIdValidation = (value?: string) => {\n if (!value) {\n return true;\n } else if (value.match(/^[a-zA-Z]/) === null) {\n return false;\n }\n const camelCasedValue = camelCase(value).toLowerCase();\n return camelCasedValue === value.toLowerCase();\n};\nconst refinementModelIdValidationMessage = (value?: string) => {\n if (!value) {\n return {};\n } else if (value.match(/^[a-zA-Z]/) === null) {\n return {\n message: `The modelId \"${value}\" is not valid. It must start with a A-Z or a-z.`\n };\n }\n return {\n message: `The modelId \"${value}\" is not valid.`\n };\n};\n\nconst modelIdTransformation = (value?: string) => {\n if (!value) {\n return value;\n }\n const camelCasedValue = camelCase(value);\n if (camelCasedValue.toLowerCase() === value.toLowerCase()) {\n return value;\n }\n return camelCasedValue;\n};\n\nexport const createModelCreateValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString.transform(modelIdTransformation),\n singularApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementSingularValidationMessage),\n pluralApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema).default([]),\n layout: zod.array(zod.array(shortString)).default([]),\n tags: zod.array(shortString).optional(),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n defaultFields: zod.boolean().nullish()\n });\n};\n\nexport const createModelImportValidation = () => {\n return zod.object({\n name: shortString.min(1).refine(\n value => {\n return value.match(/[a-zA-Z]/) !== null;\n },\n value => {\n return {\n message: `The name \"${value}\" is not valid.`\n };\n }\n ),\n modelId: shortString\n .min(1)\n .refine(refinementModelIdValidation, refinementModelIdValidationMessage)\n .transform(modelIdTransformation),\n singularApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementSingularValidationMessage),\n pluralApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema).min(1),\n layout: zod.array(zod.array(shortString)).min(1),\n tags: zod.array(shortString).optional(),\n titleFieldId: shortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish()\n });\n};\n\nexport const createModelCreateFromValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString.transform(modelIdTransformation),\n singularApiName: shortString.refine(\n apiNameRefinementValidation,\n refinementSingularValidationMessage\n ),\n pluralApiName: shortString.refine(\n apiNameRefinementValidation,\n refinementPluralValidationMessage\n ),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n locale: optionalShortString\n });\n};\n\nexport const createModelUpdateValidation = () => {\n return zod.object({\n name: optionalShortString,\n singularApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return apiNameRefinementValidation(value);\n }, refinementSingularValidationMessage),\n pluralApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return apiNameRefinementValidation(value);\n }, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: optionalShortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema),\n layout: zod.array(zod.array(shortString)),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n tags: zod.array(shortString).optional()\n });\n};\n"],"mappings":"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"}
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.createModelsCrud = void 0;
|
|
8
8
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
|
-
var _dataloader = _interopRequireDefault(require("dataloader"));
|
|
11
10
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
12
11
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
13
12
|
var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
|
|
@@ -15,29 +14,15 @@ var _pubsub = require("@webiny/pubsub");
|
|
|
15
14
|
var _beforeCreate = require("./contentModel/beforeCreate");
|
|
16
15
|
var _beforeUpdate = require("./contentModel/beforeUpdate");
|
|
17
16
|
var _beforeDelete = require("./contentModel/beforeDelete");
|
|
18
|
-
var _afterCreate = require("./contentModel/afterCreate");
|
|
19
|
-
var _afterUpdate = require("./contentModel/afterUpdate");
|
|
20
|
-
var _afterDelete = require("./contentModel/afterDelete");
|
|
21
|
-
var _afterCreateFrom = require("./contentModel/afterCreateFrom");
|
|
22
17
|
var _CmsModelPlugin = require("../plugins/CmsModelPlugin");
|
|
23
18
|
var _filterAsync = require("../utils/filterAsync");
|
|
24
19
|
var _validation = require("./contentModel/validation");
|
|
25
20
|
var _utils = require("@webiny/utils");
|
|
26
21
|
var _defaultFields = require("./contentModel/defaultFields");
|
|
27
|
-
var
|
|
22
|
+
var _utils2 = require("../utils");
|
|
23
|
+
var _ensureTypeTag = require("./contentModel/ensureTypeTag");
|
|
24
|
+
var _listModelsFromDatabase = require("./contentModel/listModelsFromDatabase");
|
|
28
25
|
const _excluded = ["defaultFields"];
|
|
29
|
-
/**
|
|
30
|
-
* Given a model, return an array of tags ensuring the `type` tag is set.
|
|
31
|
-
*/
|
|
32
|
-
const ensureTypeTag = model => {
|
|
33
|
-
// Let's make sure we have a `type` tag assigned.
|
|
34
|
-
// If `type` tag is not set, set it to a default one (`model`).
|
|
35
|
-
const tags = model.tags || [];
|
|
36
|
-
if (!tags.some(tag => tag.startsWith("type:"))) {
|
|
37
|
-
tags.push("type:model");
|
|
38
|
-
}
|
|
39
|
-
return tags;
|
|
40
|
-
};
|
|
41
26
|
const createModelsCrud = params => {
|
|
42
27
|
const {
|
|
43
28
|
getTenant,
|
|
@@ -47,35 +32,11 @@ const createModelsCrud = params => {
|
|
|
47
32
|
modelsPermissions,
|
|
48
33
|
context
|
|
49
34
|
} = params;
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
const models = await storageOperations.models.list({
|
|
53
|
-
where: {
|
|
54
|
-
tenant: getTenant().id,
|
|
55
|
-
locale: getLocale().code
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return [models.map(model => {
|
|
59
|
-
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
60
|
-
tags: ensureTypeTag(model),
|
|
61
|
-
tenant: model.tenant || getTenant().id,
|
|
62
|
-
locale: model.locale || getLocale().code,
|
|
63
|
-
/**
|
|
64
|
-
* TODO: remove in v5.36.0
|
|
65
|
-
* This is for backward compatibility while migrations are not yet executed.
|
|
66
|
-
*/
|
|
67
|
-
singularApiName: (0, _modelApiName.ensureSingularApiName)(model),
|
|
68
|
-
pluralApiName: (0, _modelApiName.ensurePluralApiName)(model)
|
|
69
|
-
});
|
|
70
|
-
})];
|
|
71
|
-
})
|
|
72
|
-
};
|
|
73
|
-
const listModelsCache = new Map();
|
|
35
|
+
const listPluginModelsCache = (0, _utils2.createMemoryCache)();
|
|
36
|
+
const listAllModelsCache = (0, _utils2.createMemoryCache)();
|
|
74
37
|
const clearModelsCache = () => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
listModelsCache.clear();
|
|
38
|
+
listAllModelsCache.clear();
|
|
39
|
+
listPluginModelsCache.clear();
|
|
79
40
|
};
|
|
80
41
|
const managers = new Map();
|
|
81
42
|
const updateManager = async (context, model) => {
|
|
@@ -83,62 +44,61 @@ const createModelsCrud = params => {
|
|
|
83
44
|
managers.set(model.modelId, manager);
|
|
84
45
|
return manager;
|
|
85
46
|
};
|
|
86
|
-
const checkModelPermissions = rwd => {
|
|
47
|
+
const checkModelPermissions = async rwd => {
|
|
87
48
|
return modelsPermissions.ensure({
|
|
88
49
|
rwd
|
|
89
50
|
});
|
|
90
51
|
};
|
|
91
|
-
const getModelsAsPlugins = () => {
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
tenant
|
|
113
|
-
|
|
114
|
-
|
|
52
|
+
const getModelsAsPlugins = (tenant, locale) => {
|
|
53
|
+
const modelPlugins = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type);
|
|
54
|
+
const cacheKey = (0, _utils2.createCacheKey)({
|
|
55
|
+
tenant,
|
|
56
|
+
locale,
|
|
57
|
+
models: modelPlugins.map(({
|
|
58
|
+
contentModel: model
|
|
59
|
+
}) => {
|
|
60
|
+
return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${model.savedOn || "unknown"}`;
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
return listPluginModelsCache.getOrSet(cacheKey, () => {
|
|
64
|
+
return modelPlugins
|
|
65
|
+
/**
|
|
66
|
+
* We need to filter out models that are not for this tenant or locale.
|
|
67
|
+
* If it does not have tenant or locale define, it is for every locale and tenant
|
|
68
|
+
*/.filter(plugin => {
|
|
69
|
+
const {
|
|
70
|
+
tenant: modelTenant,
|
|
71
|
+
locale: modelLocale
|
|
72
|
+
} = plugin.contentModel;
|
|
73
|
+
if (modelTenant && modelTenant !== tenant) {
|
|
74
|
+
return false;
|
|
75
|
+
} else if (modelLocale && modelLocale !== locale) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
79
|
+
}).map(plugin => {
|
|
80
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
|
|
81
|
+
tags: (0, _ensureTypeTag.ensureTypeTag)(plugin.contentModel),
|
|
82
|
+
tenant,
|
|
83
|
+
locale,
|
|
84
|
+
webinyVersion: context.WEBINY_VERSION
|
|
85
|
+
});
|
|
115
86
|
});
|
|
116
87
|
});
|
|
117
88
|
};
|
|
118
|
-
const
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
return pluginModel;
|
|
122
|
-
}
|
|
123
|
-
const model = await storageOperations.models.get({
|
|
124
|
-
tenant: getTenant().id,
|
|
125
|
-
locale: getLocale().code,
|
|
126
|
-
modelId
|
|
127
|
-
});
|
|
89
|
+
const getModelFromCache = async modelId => {
|
|
90
|
+
const models = await listModels();
|
|
91
|
+
const model = models.find(m => m.modelId === modelId);
|
|
128
92
|
if (!model) {
|
|
129
93
|
throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
|
|
130
94
|
}
|
|
131
95
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
132
|
-
tags: ensureTypeTag(model),
|
|
96
|
+
tags: (0, _ensureTypeTag.ensureTypeTag)(model),
|
|
133
97
|
tenant: model.tenant || getTenant().id,
|
|
134
98
|
locale: model.locale || getLocale().code
|
|
135
99
|
});
|
|
136
100
|
};
|
|
137
|
-
|
|
138
|
-
const databaseModels = await loaders.listModels.load("listModels");
|
|
139
|
-
const pluginsModels = getModelsAsPlugins();
|
|
140
|
-
return databaseModels.concat(pluginsModels);
|
|
141
|
-
};
|
|
101
|
+
|
|
142
102
|
/**
|
|
143
103
|
* The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.
|
|
144
104
|
*/
|
|
@@ -149,17 +109,24 @@ const createModelsCrud = params => {
|
|
|
149
109
|
*
|
|
150
110
|
* TODO: @adrian please check if possible.
|
|
151
111
|
*/
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
112
|
+
const tenant = getTenant().id;
|
|
113
|
+
const locale = getLocale().code;
|
|
114
|
+
const pluginModels = getModelsAsPlugins(tenant, locale);
|
|
115
|
+
const cacheKey = (0, _utils2.createCacheKey)({
|
|
116
|
+
tenant,
|
|
117
|
+
locale,
|
|
118
|
+
identity: context.security.isAuthorizationEnabled() ? (_getIdentity = getIdentity()) === null || _getIdentity === void 0 ? void 0 : _getIdentity.id : undefined,
|
|
119
|
+
plugins: pluginModels.map(model => {
|
|
120
|
+
return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${model.savedOn || "unknown"}`;
|
|
121
|
+
})
|
|
156
122
|
});
|
|
157
|
-
|
|
158
|
-
return listModelsCache.get(key);
|
|
159
|
-
}
|
|
160
|
-
const cachedModelList = async () => {
|
|
123
|
+
return listAllModelsCache.getOrSet(cacheKey, async () => {
|
|
161
124
|
return context.benchmark.measure("headlessCms.crud.models.listModels", async () => {
|
|
162
|
-
const
|
|
125
|
+
const databaseModels = await (0, _listModelsFromDatabase.listModelsFromDatabase)(params);
|
|
126
|
+
const models = databaseModels.concat(pluginModels);
|
|
127
|
+
/**
|
|
128
|
+
* Filter models based on permissions.
|
|
129
|
+
*/
|
|
163
130
|
return (0, _filterAsync.filterAsync)(models, async model => {
|
|
164
131
|
const ownsModel = await modelsPermissions.ensure({
|
|
165
132
|
owns: model.createdBy
|
|
@@ -174,14 +141,17 @@ const createModelsCrud = params => {
|
|
|
174
141
|
});
|
|
175
142
|
});
|
|
176
143
|
});
|
|
177
|
-
};
|
|
178
|
-
listModelsCache.set(key, cachedModelList());
|
|
179
|
-
return listModelsCache.get(key);
|
|
144
|
+
});
|
|
180
145
|
};
|
|
181
146
|
const getModel = async modelId => {
|
|
182
147
|
return context.benchmark.measure("headlessCms.crud.models.getModel", async () => {
|
|
183
148
|
await checkModelPermissions("r");
|
|
184
|
-
const model = await
|
|
149
|
+
const model = await context.security.withoutAuthorization(async () => {
|
|
150
|
+
return await getModelFromCache(modelId);
|
|
151
|
+
});
|
|
152
|
+
if (!model) {
|
|
153
|
+
throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
|
|
154
|
+
}
|
|
185
155
|
await modelsPermissions.ensure({
|
|
186
156
|
owns: model.createdBy
|
|
187
157
|
});
|
|
@@ -191,16 +161,12 @@ const createModelsCrud = params => {
|
|
|
191
161
|
return model;
|
|
192
162
|
});
|
|
193
163
|
};
|
|
194
|
-
const
|
|
164
|
+
const getEntryManager = async target => {
|
|
195
165
|
const modelId = typeof target === "string" ? target : target.modelId;
|
|
196
166
|
if (managers.has(modelId)) {
|
|
197
167
|
return managers.get(modelId);
|
|
198
168
|
}
|
|
199
|
-
const
|
|
200
|
-
const model = models.find(m => m.modelId === modelId);
|
|
201
|
-
if (!model) {
|
|
202
|
-
throw new _handlerGraphql.NotFoundError(`There is no content model "${modelId}".`);
|
|
203
|
-
}
|
|
169
|
+
const model = await getModelFromCache(modelId);
|
|
204
170
|
return await updateManager(context, model);
|
|
205
171
|
};
|
|
206
172
|
|
|
@@ -241,31 +207,15 @@ const createModelsCrud = params => {
|
|
|
241
207
|
context,
|
|
242
208
|
storageOperations
|
|
243
209
|
});
|
|
244
|
-
(0, _afterCreate.assignModelAfterCreate)({
|
|
245
|
-
context,
|
|
246
|
-
onModelAfterCreate
|
|
247
|
-
});
|
|
248
210
|
(0, _beforeUpdate.assignModelBeforeUpdate)({
|
|
249
211
|
onModelBeforeUpdate,
|
|
250
212
|
context
|
|
251
213
|
});
|
|
252
|
-
(0, _afterUpdate.assignModelAfterUpdate)({
|
|
253
|
-
context,
|
|
254
|
-
onModelAfterUpdate
|
|
255
|
-
});
|
|
256
|
-
(0, _afterCreateFrom.assignModelAfterCreateFrom)({
|
|
257
|
-
context,
|
|
258
|
-
onModelAfterCreateFrom
|
|
259
|
-
});
|
|
260
214
|
(0, _beforeDelete.assignModelBeforeDelete)({
|
|
261
215
|
onModelBeforeDelete,
|
|
262
216
|
plugins: context.plugins,
|
|
263
217
|
storageOperations
|
|
264
218
|
});
|
|
265
|
-
(0, _afterDelete.assignModelAfterDelete)({
|
|
266
|
-
context,
|
|
267
|
-
onModelAfterDelete
|
|
268
|
-
});
|
|
269
219
|
|
|
270
220
|
/**
|
|
271
221
|
* CRUD methods
|
|
@@ -287,12 +237,7 @@ const createModelsCrud = params => {
|
|
|
287
237
|
if (defaultFields) {
|
|
288
238
|
(0, _defaultFields.assignModelDefaultFields)(data);
|
|
289
239
|
}
|
|
290
|
-
const group = await context.
|
|
291
|
-
return context.cms.getGroup(data.group);
|
|
292
|
-
});
|
|
293
|
-
if (!group) {
|
|
294
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
295
|
-
}
|
|
240
|
+
const group = await context.cms.getGroup(data.group);
|
|
296
241
|
const identity = getIdentity();
|
|
297
242
|
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
|
|
298
243
|
modelId: data.modelId || "",
|
|
@@ -318,7 +263,7 @@ const createModelsCrud = params => {
|
|
|
318
263
|
lockedFields: [],
|
|
319
264
|
webinyVersion: context.WEBINY_VERSION
|
|
320
265
|
});
|
|
321
|
-
model.tags = ensureTypeTag(model);
|
|
266
|
+
model.tags = (0, _ensureTypeTag.ensureTypeTag)(model);
|
|
322
267
|
try {
|
|
323
268
|
await onModelBeforeCreate.publish({
|
|
324
269
|
input: data,
|
|
@@ -365,12 +310,7 @@ const createModelsCrud = params => {
|
|
|
365
310
|
};
|
|
366
311
|
const groupId = data.group;
|
|
367
312
|
if (groupId) {
|
|
368
|
-
const groupData = await context.
|
|
369
|
-
return context.cms.getGroup(groupId);
|
|
370
|
-
});
|
|
371
|
-
if (!groupData) {
|
|
372
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${groupId}".`);
|
|
373
|
-
}
|
|
313
|
+
const groupData = await context.cms.getGroup(groupId);
|
|
374
314
|
group = {
|
|
375
315
|
id: groupData.id,
|
|
376
316
|
name: groupData.name
|
|
@@ -387,7 +327,7 @@ const createModelsCrud = params => {
|
|
|
387
327
|
webinyVersion: context.WEBINY_VERSION,
|
|
388
328
|
savedOn: new Date().toISOString()
|
|
389
329
|
});
|
|
390
|
-
model.tags = ensureTypeTag(model);
|
|
330
|
+
model.tags = (0, _ensureTypeTag.ensureTypeTag)(model);
|
|
391
331
|
try {
|
|
392
332
|
await onModelBeforeUpdate.publish({
|
|
393
333
|
input: data,
|
|
@@ -573,20 +513,6 @@ const createModelsCrud = params => {
|
|
|
573
513
|
return true;
|
|
574
514
|
};
|
|
575
515
|
return {
|
|
576
|
-
/**
|
|
577
|
-
* Deprecated - will be removed in 5.36.0
|
|
578
|
-
*/
|
|
579
|
-
onBeforeModelCreate: onModelBeforeCreate,
|
|
580
|
-
onAfterModelCreate: onModelAfterCreate,
|
|
581
|
-
onBeforeModelCreateFrom: onModelBeforeCreateFrom,
|
|
582
|
-
onAfterModelCreateFrom: onModelAfterCreateFrom,
|
|
583
|
-
onBeforeModelUpdate: onModelBeforeUpdate,
|
|
584
|
-
onAfterModelUpdate: onModelAfterUpdate,
|
|
585
|
-
onBeforeModelDelete: onModelBeforeDelete,
|
|
586
|
-
onAfterModelDelete: onModelAfterDelete,
|
|
587
|
-
/**
|
|
588
|
-
* Released in 5.34.0
|
|
589
|
-
*/
|
|
590
516
|
onModelBeforeCreate,
|
|
591
517
|
onModelAfterCreate,
|
|
592
518
|
onModelCreateError,
|
|
@@ -637,12 +563,10 @@ const createModelsCrud = params => {
|
|
|
637
563
|
return initializeModel(modelId, data);
|
|
638
564
|
});
|
|
639
565
|
},
|
|
640
|
-
|
|
641
|
-
getEntryManager: async model => {
|
|
642
|
-
return getModelManager(model);
|
|
643
|
-
},
|
|
644
|
-
getManagers: () => managers,
|
|
566
|
+
getEntryManager,
|
|
645
567
|
getEntryManagers: () => managers
|
|
646
568
|
};
|
|
647
569
|
};
|
|
648
|
-
exports.createModelsCrud = createModelsCrud;
|
|
570
|
+
exports.createModelsCrud = createModelsCrud;
|
|
571
|
+
|
|
572
|
+
//# sourceMappingURL=contentModel.crud.js.map
|