@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
package/constants.js
CHANGED
package/context.js
CHANGED
|
@@ -10,7 +10,6 @@ var _error = _interopRequireDefault(require("@webiny/error"));
|
|
|
10
10
|
var _api = require("@webiny/api");
|
|
11
11
|
var _CmsParametersPlugin = require("./plugins/CmsParametersPlugin");
|
|
12
12
|
var _system = require("./crud/system.crud");
|
|
13
|
-
var _settings = require("./crud/settings.crud");
|
|
14
13
|
var _contentModelGroup = require("./crud/contentModelGroup.crud");
|
|
15
14
|
var _contentModel = require("./crud/contentModel.crud");
|
|
16
15
|
var _contentEntry = require("./crud/contentEntry.crud");
|
|
@@ -19,7 +18,8 @@ var _valueKeyStorageConverter = require("./utils/converters/valueKeyStorageConve
|
|
|
19
18
|
var _ModelsPermissions = require("./utils/permissions/ModelsPermissions");
|
|
20
19
|
var _ModelGroupsPermissions = require("./utils/permissions/ModelGroupsPermissions");
|
|
21
20
|
var _EntriesPermissions = require("./utils/permissions/EntriesPermissions");
|
|
22
|
-
var
|
|
21
|
+
var _export = require("./export");
|
|
22
|
+
var _importing = require("./export/crud/importing");
|
|
23
23
|
const getParameters = async context => {
|
|
24
24
|
const plugins = context.plugins.byType(_CmsParametersPlugin.CmsParametersPlugin.type);
|
|
25
25
|
for (const plugin of plugins) {
|
|
@@ -70,11 +70,6 @@ const createContextPlugin = ({
|
|
|
70
70
|
getPermissions: () => context.security.getPermissions("cms.contentEntry"),
|
|
71
71
|
fullAccessPermissionName: "cms.*"
|
|
72
72
|
});
|
|
73
|
-
const settingsPermissions = new _SettingsPermissions.SettingsPermissions({
|
|
74
|
-
getIdentity: context.security.getIdentity,
|
|
75
|
-
getPermissions: () => context.security.getPermissions("cms.settings"),
|
|
76
|
-
fullAccessPermissionName: "cms.*"
|
|
77
|
-
});
|
|
78
73
|
context.cms = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
79
74
|
type,
|
|
80
75
|
locale,
|
|
@@ -86,8 +81,7 @@ const createContextPlugin = ({
|
|
|
86
81
|
permissions: {
|
|
87
82
|
groups: modelGroupsPermissions,
|
|
88
83
|
models: modelsPermissions,
|
|
89
|
-
entries: entriesPermissions
|
|
90
|
-
settings: settingsPermissions
|
|
84
|
+
entries: entriesPermissions
|
|
91
85
|
}
|
|
92
86
|
}, (0, _system.createSystemCrud)({
|
|
93
87
|
context,
|
|
@@ -95,12 +89,6 @@ const createContextPlugin = ({
|
|
|
95
89
|
getLocale,
|
|
96
90
|
getIdentity,
|
|
97
91
|
storageOperations
|
|
98
|
-
})), (0, _settings.createSettingsCrud)({
|
|
99
|
-
context,
|
|
100
|
-
getTenant,
|
|
101
|
-
getLocale,
|
|
102
|
-
storageOperations,
|
|
103
|
-
settingsPermissions
|
|
104
92
|
})), (0, _contentModelGroup.createModelGroupsCrud)({
|
|
105
93
|
context,
|
|
106
94
|
getTenant,
|
|
@@ -123,7 +111,10 @@ const createContextPlugin = ({
|
|
|
123
111
|
storageOperations,
|
|
124
112
|
entriesPermissions,
|
|
125
113
|
modelsPermissions
|
|
126
|
-
}))
|
|
114
|
+
})), {}, {
|
|
115
|
+
export: (0, _objectSpread2.default)({}, (0, _export.createExportCrud)(context)),
|
|
116
|
+
importing: (0, _objectSpread2.default)({}, (0, _importing.createImportCrud)(context))
|
|
117
|
+
});
|
|
127
118
|
if (!storageOperations.init) {
|
|
128
119
|
return;
|
|
129
120
|
}
|
|
@@ -133,4 +124,6 @@ const createContextPlugin = ({
|
|
|
133
124
|
plugin.name = "cms.createContext";
|
|
134
125
|
return plugin;
|
|
135
126
|
};
|
|
136
|
-
exports.createContextPlugin = createContextPlugin;
|
|
127
|
+
exports.createContextPlugin = createContextPlugin;
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=context.js.map
|
package/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_api","_CmsParametersPlugin","_system","_settings","_contentModelGroup","_contentModel","_contentEntry","_plugins","_valueKeyStorageConverter","_ModelsPermissions","_ModelGroupsPermissions","_EntriesPermissions","_SettingsPermissions","getParameters","context","plugins","byType","CmsParametersPlugin","type","plugin","result","WebinyError","createContextPlugin","storageOperations","ContextPlugin","locale","getLocale","systemLocale","i18n","getIdentity","security","getTenant","tenancy","getCurrentTenant","register","StorageOperationsCmsModelPlugin","createCmsModelFieldConvertersAttachFactory","benchmark","measure","beforeInit","modelGroupsPermissions","ModelGroupsPermissions","getPermissions","fullAccessPermissionName","modelsPermissions","ModelsPermissions","entriesPermissions","EntriesPermissions","settingsPermissions","SettingsPermissions","cms","_objectSpread2","default","READ","PREVIEW","MANAGE","permissions","groups","models","entries","settings","createSystemCrud","createSettingsCrud","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","init","name","exports"],"sources":["context.ts"],"sourcesContent":["import { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { CmsParametersPlugin, CmsParametersPluginResponse } from \"~/plugins/CmsParametersPlugin\";\nimport { createSystemCrud } from \"~/crud/system.crud\";\nimport { createSettingsCrud } from \"~/crud/settings.crud\";\nimport { createModelGroupsCrud } from \"~/crud/contentModelGroup.crud\";\nimport { createModelsCrud } from \"~/crud/contentModel.crud\";\nimport { createContentEntryCrud } from \"~/crud/contentEntry.crud\";\nimport { StorageOperationsCmsModelPlugin } from \"~/plugins\";\nimport { createCmsModelFieldConvertersAttachFactory } from \"~/utils/converters/valueKeyStorageConverter\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\nimport { ModelGroupsPermissions } from \"./utils/permissions/ModelGroupsPermissions\";\nimport { EntriesPermissions } from \"./utils/permissions/EntriesPermissions\";\nimport { SettingsPermissions } from \"./utils/permissions/SettingsPermissions\";\n\nconst getParameters = async (context: CmsContext): Promise<CmsParametersPluginResponse> => {\n const plugins = context.plugins.byType<CmsParametersPlugin>(CmsParametersPlugin.type);\n\n for (const plugin of plugins) {\n const result = await plugin.getParameters(context);\n if (result !== null) {\n return result;\n }\n }\n throw new WebinyError(\n \"Could not determine locale and/or type of the CMS.\",\n \"CMS_LOCALE_AND_TYPE_ERROR\"\n );\n};\n\nexport interface CrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createContextPlugin = ({ storageOperations }: CrudParams) => {\n const plugin = new ContextPlugin<CmsContext>(async context => {\n const { type, locale } = await getParameters(context);\n\n const getLocale = () => {\n const systemLocale = context.i18n.getLocale(locale);\n if (!systemLocale) {\n throw new WebinyError(`There is no locale \"${locale}\" in the system.`);\n }\n return systemLocale;\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n context.plugins.register(\n new StorageOperationsCmsModelPlugin(\n createCmsModelFieldConvertersAttachFactory(context.plugins)\n )\n );\n\n await context.benchmark.measure(\"headlessCms.createContext\", async () => {\n await storageOperations.beforeInit(context);\n\n const modelGroupsPermissions = new ModelGroupsPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentModelGroup\"),\n fullAccessPermissionName: \"cms.*\"\n });\n\n const modelsPermissions = new ModelsPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentModel\"),\n fullAccessPermissionName: \"cms.*\",\n modelGroupsPermissions\n });\n\n const entriesPermissions = new EntriesPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentEntry\"),\n fullAccessPermissionName: \"cms.*\"\n });\n\n const settingsPermissions = new SettingsPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.settings\"),\n fullAccessPermissionName: \"cms.*\"\n });\n\n context.cms = {\n type,\n locale,\n getLocale,\n READ: type === \"read\",\n PREVIEW: type === \"preview\",\n MANAGE: type === \"manage\",\n storageOperations,\n permissions: {\n groups: modelGroupsPermissions,\n models: modelsPermissions,\n entries: entriesPermissions,\n settings: settingsPermissions\n },\n ...createSystemCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createSettingsCrud({\n context,\n getTenant,\n getLocale,\n storageOperations,\n settingsPermissions\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations,\n modelGroupsPermissions\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations,\n modelsPermissions\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n getTenant,\n getLocale,\n storageOperations,\n entriesPermissions,\n modelsPermissions\n })\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n });\n\n plugin.name = \"cms.createContext\";\n\n return plugin;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_api","_CmsParametersPlugin","_system","_contentModelGroup","_contentModel","_contentEntry","_plugins","_valueKeyStorageConverter","_ModelsPermissions","_ModelGroupsPermissions","_EntriesPermissions","_export","_importing","getParameters","context","plugins","byType","CmsParametersPlugin","type","plugin","result","WebinyError","createContextPlugin","storageOperations","ContextPlugin","locale","getLocale","systemLocale","i18n","getIdentity","security","getTenant","tenancy","getCurrentTenant","register","StorageOperationsCmsModelPlugin","createCmsModelFieldConvertersAttachFactory","benchmark","measure","beforeInit","modelGroupsPermissions","ModelGroupsPermissions","getPermissions","fullAccessPermissionName","modelsPermissions","ModelsPermissions","entriesPermissions","EntriesPermissions","cms","_objectSpread2","default","READ","PREVIEW","MANAGE","permissions","groups","models","entries","createSystemCrud","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","export","createExportCrud","importing","createImportCrud","init","name","exports"],"sources":["context.ts"],"sourcesContent":["import { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { CmsParametersPlugin, CmsParametersPluginResponse } from \"~/plugins/CmsParametersPlugin\";\nimport { createSystemCrud } from \"~/crud/system.crud\";\nimport { createModelGroupsCrud } from \"~/crud/contentModelGroup.crud\";\nimport { createModelsCrud } from \"~/crud/contentModel.crud\";\nimport { createContentEntryCrud } from \"~/crud/contentEntry.crud\";\nimport { StorageOperationsCmsModelPlugin } from \"~/plugins\";\nimport { createCmsModelFieldConvertersAttachFactory } from \"~/utils/converters/valueKeyStorageConverter\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\nimport { ModelGroupsPermissions } from \"./utils/permissions/ModelGroupsPermissions\";\nimport { EntriesPermissions } from \"./utils/permissions/EntriesPermissions\";\nimport { createExportCrud } from \"~/export\";\nimport { createImportCrud } from \"~/export/crud/importing\";\n\nconst getParameters = async (context: CmsContext): Promise<CmsParametersPluginResponse> => {\n const plugins = context.plugins.byType<CmsParametersPlugin>(CmsParametersPlugin.type);\n\n for (const plugin of plugins) {\n const result = await plugin.getParameters(context);\n if (result !== null) {\n return result;\n }\n }\n throw new WebinyError(\n \"Could not determine locale and/or type of the CMS.\",\n \"CMS_LOCALE_AND_TYPE_ERROR\"\n );\n};\n\nexport interface CrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createContextPlugin = ({ storageOperations }: CrudParams) => {\n const plugin = new ContextPlugin<CmsContext>(async context => {\n const { type, locale } = await getParameters(context);\n\n const getLocale = () => {\n const systemLocale = context.i18n.getLocale(locale);\n if (!systemLocale) {\n throw new WebinyError(`There is no locale \"${locale}\" in the system.`);\n }\n return systemLocale;\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n context.plugins.register(\n new StorageOperationsCmsModelPlugin(\n createCmsModelFieldConvertersAttachFactory(context.plugins)\n )\n );\n\n await context.benchmark.measure(\"headlessCms.createContext\", async () => {\n await storageOperations.beforeInit(context);\n\n const modelGroupsPermissions = new ModelGroupsPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentModelGroup\"),\n fullAccessPermissionName: \"cms.*\"\n });\n\n const modelsPermissions = new ModelsPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentModel\"),\n fullAccessPermissionName: \"cms.*\",\n modelGroupsPermissions\n });\n\n const entriesPermissions = new EntriesPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentEntry\"),\n fullAccessPermissionName: \"cms.*\"\n });\n\n context.cms = {\n type,\n locale,\n getLocale,\n READ: type === \"read\",\n PREVIEW: type === \"preview\",\n MANAGE: type === \"manage\",\n storageOperations,\n permissions: {\n groups: modelGroupsPermissions,\n models: modelsPermissions,\n entries: entriesPermissions\n },\n ...createSystemCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations,\n modelGroupsPermissions\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations,\n modelsPermissions\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n getTenant,\n getLocale,\n storageOperations,\n entriesPermissions,\n modelsPermissions\n }),\n export: {\n ...createExportCrud(context)\n },\n importing: {\n ...createImportCrud(context)\n }\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n });\n\n plugin.name = \"cms.createContext\";\n\n return plugin;\n};\n"],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CmsContext, CmsEntry, CmsModel } from "../../types";
|
|
2
2
|
declare type InputData = Record<string, any>;
|
|
3
3
|
export interface ValidateModelEntryDataParams {
|
|
4
4
|
context: CmsContext;
|
|
5
5
|
model: CmsModel;
|
|
6
6
|
data: InputData;
|
|
7
7
|
entry?: CmsEntry;
|
|
8
|
+
skipValidators?: string[];
|
|
8
9
|
}
|
|
9
|
-
export declare const validateModelEntryData: (params: ValidateModelEntryDataParams) => Promise<
|
|
10
|
+
export declare const validateModelEntryData: (params: ValidateModelEntryDataParams) => Promise<any[]>;
|
|
11
|
+
export declare const validateModelEntryDataOrThrow: (params: ValidateModelEntryDataParams) => Promise<void>;
|
|
10
12
|
export {};
|
|
@@ -4,10 +4,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.validateModelEntryData = void 0;
|
|
7
|
+
exports.validateModelEntryDataOrThrow = exports.validateModelEntryData = void 0;
|
|
8
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
10
|
-
|
|
10
|
+
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
|
|
11
|
+
const validateValue = async (params, fieldValidators, value) => {
|
|
11
12
|
if (!fieldValidators) {
|
|
12
13
|
return null;
|
|
13
14
|
}
|
|
@@ -17,7 +18,7 @@ const validateValue = async (args, fieldValidators, value) => {
|
|
|
17
18
|
field,
|
|
18
19
|
model,
|
|
19
20
|
entry
|
|
20
|
-
} =
|
|
21
|
+
} = params;
|
|
21
22
|
try {
|
|
22
23
|
for (const fieldValidator of fieldValidators) {
|
|
23
24
|
const name = fieldValidator.name;
|
|
@@ -53,33 +54,45 @@ const validatePredefinedValue = (field, value) => {
|
|
|
53
54
|
return null;
|
|
54
55
|
} else if (Array.isArray(predefinedValues) === false || predefinedValues.length === 0) {
|
|
55
56
|
return "Missing predefined values to validate against.";
|
|
57
|
+
} else if (value == "" || value == null || value == undefined) {
|
|
58
|
+
return null;
|
|
56
59
|
}
|
|
57
60
|
for (const predefinedValue of predefinedValues) {
|
|
61
|
+
/**
|
|
62
|
+
* No strict compare because the value sent can be 12345 (number) and predefinedValue can be "12345" (string),
|
|
63
|
+
* and we want it to match.
|
|
64
|
+
*/
|
|
58
65
|
if (predefinedValue.value == value) {
|
|
59
66
|
return null;
|
|
60
67
|
}
|
|
61
68
|
}
|
|
62
69
|
return "Value sent does not match any of the available predefined values.";
|
|
63
70
|
};
|
|
71
|
+
const getFieldValidation = listValidation => {
|
|
72
|
+
if (!(listValidation !== null && listValidation !== void 0 && listValidation.length)) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
return listValidation.filter(item => item.name !== "dynamicZone");
|
|
76
|
+
};
|
|
64
77
|
/**
|
|
65
78
|
* When multiple values is selected we must run validations on the array containing the values
|
|
66
79
|
* And then on each value in the array
|
|
67
80
|
*/
|
|
68
|
-
const runFieldMultipleValuesValidations = async
|
|
81
|
+
const runFieldMultipleValuesValidations = async params => {
|
|
69
82
|
const {
|
|
70
83
|
field,
|
|
71
84
|
data
|
|
72
|
-
} =
|
|
73
|
-
const values = data[field.fieldId]
|
|
74
|
-
|
|
75
|
-
return `Value of the field "${field.fieldId}" is not an array.`;
|
|
76
|
-
}
|
|
77
|
-
const valuesError = await validateValue(args, field.listValidation || [], values);
|
|
85
|
+
} = params;
|
|
86
|
+
const values = data === null || data === void 0 ? void 0 : data[field.fieldId];
|
|
87
|
+
const valuesError = await validateValue(params, getFieldValidation(field.listValidation), values);
|
|
78
88
|
if (valuesError) {
|
|
79
89
|
return valuesError;
|
|
80
90
|
}
|
|
91
|
+
if (values === null || values === undefined) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
81
94
|
for (const value of values) {
|
|
82
|
-
const valueError = await validateValue(
|
|
95
|
+
const valueError = await validateValue(params, getFieldValidation(field.validation), value);
|
|
83
96
|
if (valueError) {
|
|
84
97
|
return valueError;
|
|
85
98
|
}
|
|
@@ -93,69 +106,229 @@ const runFieldMultipleValuesValidations = async args => {
|
|
|
93
106
|
/**
|
|
94
107
|
* Runs validation on given value.
|
|
95
108
|
*/
|
|
96
|
-
const runFieldValueValidations = async
|
|
109
|
+
const runFieldValueValidations = async params => {
|
|
97
110
|
const {
|
|
98
111
|
data,
|
|
99
112
|
field
|
|
100
|
-
} =
|
|
113
|
+
} = params;
|
|
101
114
|
const value = data[field.fieldId];
|
|
102
|
-
const error = await validateValue(
|
|
115
|
+
const error = await validateValue(params, field.validation || [], value);
|
|
103
116
|
if (error) {
|
|
104
117
|
return error;
|
|
105
118
|
}
|
|
106
119
|
return validatePredefinedValue(field, value);
|
|
107
120
|
};
|
|
108
|
-
const execValidation = async
|
|
109
|
-
|
|
110
|
-
|
|
121
|
+
const execValidation = async params => {
|
|
122
|
+
const {
|
|
123
|
+
field
|
|
124
|
+
} = params;
|
|
125
|
+
if (field.multipleValues) {
|
|
126
|
+
return await runFieldMultipleValuesValidations(params);
|
|
111
127
|
}
|
|
112
|
-
return await runFieldValueValidations(
|
|
128
|
+
return await runFieldValueValidations(params);
|
|
113
129
|
};
|
|
114
130
|
const validateModelEntryData = async params => {
|
|
115
131
|
const {
|
|
116
132
|
context,
|
|
117
133
|
model,
|
|
118
134
|
entry,
|
|
119
|
-
data
|
|
135
|
+
data,
|
|
136
|
+
skipValidators
|
|
120
137
|
} = params;
|
|
138
|
+
const isValidatorSkipped = plugin => {
|
|
139
|
+
if (!skipValidators) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
return skipValidators.includes((0, _camelCase.default)(plugin.validator.name));
|
|
143
|
+
};
|
|
144
|
+
const skippedValidators = new Set();
|
|
145
|
+
|
|
121
146
|
/**
|
|
122
147
|
* To later simplify searching for the validations we map them to a name.
|
|
123
148
|
* @see CmsModelFieldValidatorPlugin.validator.validate
|
|
124
149
|
*/
|
|
125
|
-
const validatorList =
|
|
150
|
+
const validatorList = {};
|
|
151
|
+
const validators = context.plugins.byType("cms-model-field-validator");
|
|
152
|
+
for (const plugin of validators) {
|
|
126
153
|
const name = plugin.validator.name;
|
|
127
|
-
if (!
|
|
128
|
-
|
|
154
|
+
if (!validatorList[name]) {
|
|
155
|
+
validatorList[name] = [];
|
|
129
156
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
157
|
+
const isSkipped = isValidatorSkipped(plugin);
|
|
158
|
+
if (isSkipped) {
|
|
159
|
+
skippedValidators.add(name);
|
|
160
|
+
}
|
|
161
|
+
validatorList[name].push(isSkipped ? async () => true : plugin.validator.validate);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* No point in continuing if all validators are skipped.
|
|
165
|
+
*/
|
|
166
|
+
const keys = Object.keys(validatorList);
|
|
167
|
+
if (keys.length === skippedValidators.size) {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
return await validate({
|
|
171
|
+
validatorList,
|
|
172
|
+
context,
|
|
173
|
+
model,
|
|
174
|
+
entry,
|
|
175
|
+
parents: [],
|
|
176
|
+
fields: model.fields,
|
|
177
|
+
data: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, entry === null || entry === void 0 ? void 0 : entry.values), data)
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
exports.validateModelEntryData = validateModelEntryData;
|
|
181
|
+
const validateModelEntryDataOrThrow = async params => {
|
|
182
|
+
const invalidFields = await validateModelEntryData(params);
|
|
183
|
+
if (invalidFields.length === 0) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
throw new _error.default("Validation failed.", "VALIDATION_FAILED", invalidFields);
|
|
187
|
+
};
|
|
133
188
|
|
|
189
|
+
/**
|
|
190
|
+
*
|
|
191
|
+
*/
|
|
192
|
+
exports.validateModelEntryDataOrThrow = validateModelEntryDataOrThrow;
|
|
193
|
+
const executeFieldValidation = async params => {
|
|
194
|
+
// TODO put per-field validation into plugins.
|
|
195
|
+
const {
|
|
196
|
+
field
|
|
197
|
+
} = params;
|
|
134
198
|
/**
|
|
135
|
-
*
|
|
136
|
-
* Run validation only if the field has validation configured.
|
|
199
|
+
* Object field.
|
|
137
200
|
*/
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
201
|
+
if (field.type === "object") {
|
|
202
|
+
var _field$settings, _params$data;
|
|
203
|
+
const fields = (_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields;
|
|
204
|
+
if (!Array.isArray(fields)) {
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
const validations = [];
|
|
208
|
+
/**
|
|
209
|
+
* We need to validate the object field as well.
|
|
210
|
+
*/
|
|
211
|
+
const error = await execValidation((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
212
|
+
field
|
|
213
|
+
}));
|
|
214
|
+
if (error) {
|
|
215
|
+
validations.push({
|
|
216
|
+
id: field.id,
|
|
217
|
+
fieldId: field.fieldId,
|
|
218
|
+
storageId: field.storageId,
|
|
219
|
+
error,
|
|
220
|
+
parents: params.parents
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
const objectValue = (_params$data = params.data) === null || _params$data === void 0 ? void 0 : _params$data[field.fieldId];
|
|
224
|
+
if (!objectValue) {
|
|
225
|
+
return validations;
|
|
226
|
+
}
|
|
227
|
+
const values = Array.isArray(objectValue) ? objectValue : [objectValue];
|
|
228
|
+
for (const index in values) {
|
|
229
|
+
const parents = field.multipleValues ? [field.fieldId, index] : [field.fieldId];
|
|
230
|
+
const value = values[index];
|
|
231
|
+
for (const childField of fields) {
|
|
232
|
+
const errors = await executeFieldValidation((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
233
|
+
parents: params.parents.concat(parents),
|
|
234
|
+
field: childField,
|
|
235
|
+
data: value
|
|
236
|
+
}));
|
|
237
|
+
if (errors.length === 0) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
validations.push(...errors);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return validations;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Dynamic Zone Field
|
|
247
|
+
*/
|
|
248
|
+
//
|
|
249
|
+
else if (field.type === "dynamicZone") {
|
|
250
|
+
var _field$settings2;
|
|
251
|
+
const validations = [];
|
|
252
|
+
const error = await execValidation((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
253
|
+
field
|
|
254
|
+
}));
|
|
255
|
+
if (error) {
|
|
256
|
+
validations.push({
|
|
257
|
+
id: field.id,
|
|
258
|
+
fieldId: field.fieldId,
|
|
259
|
+
storageId: field.storageId,
|
|
260
|
+
error,
|
|
261
|
+
parents: params.parents
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
const templates = ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.templates) || [];
|
|
265
|
+
for (const template of templates) {
|
|
266
|
+
var _params$data2;
|
|
267
|
+
const fields = template.fields;
|
|
268
|
+
const fieldData = (_params$data2 = params.data) === null || _params$data2 === void 0 ? void 0 : _params$data2[field.fieldId];
|
|
269
|
+
if (!fieldData) {
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
const values = Array.isArray(fieldData) ? fieldData : [fieldData];
|
|
273
|
+
for (const index in values) {
|
|
274
|
+
var _values$index;
|
|
275
|
+
const templateValue = (_values$index = values[index]) === null || _values$index === void 0 ? void 0 : _values$index[template.gqlTypeName];
|
|
276
|
+
if (!templateValue) {
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Order of the parents must be
|
|
281
|
+
* - fieldId
|
|
282
|
+
* - index (if multiple values)
|
|
283
|
+
* - gqlTypeName
|
|
284
|
+
*/
|
|
285
|
+
const parents = [field.fieldId];
|
|
286
|
+
if (field.multipleValues) {
|
|
287
|
+
parents.push(index);
|
|
288
|
+
}
|
|
289
|
+
parents.push(template.gqlTypeName);
|
|
290
|
+
for (const childField of fields) {
|
|
291
|
+
const errors = await executeFieldValidation((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
292
|
+
parents: params.parents.concat(parents),
|
|
293
|
+
field: childField,
|
|
294
|
+
data: templateValue
|
|
295
|
+
}));
|
|
296
|
+
if (errors.length === 0) {
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
validations.push(...errors);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
150
302
|
}
|
|
151
|
-
|
|
152
|
-
fieldId: field.fieldId,
|
|
153
|
-
storageId: field.storageId,
|
|
154
|
-
error
|
|
155
|
-
});
|
|
303
|
+
return validations;
|
|
156
304
|
}
|
|
157
|
-
|
|
158
|
-
|
|
305
|
+
const error = await execValidation((0, _objectSpread2.default)({}, params));
|
|
306
|
+
if (!error) {
|
|
307
|
+
return [];
|
|
159
308
|
}
|
|
309
|
+
return [{
|
|
310
|
+
id: field.id,
|
|
311
|
+
fieldId: field.fieldId,
|
|
312
|
+
storageId: field.storageId,
|
|
313
|
+
error,
|
|
314
|
+
parents: params.parents
|
|
315
|
+
}];
|
|
160
316
|
};
|
|
161
|
-
|
|
317
|
+
const validate = async params => {
|
|
318
|
+
const {
|
|
319
|
+
fields
|
|
320
|
+
} = params;
|
|
321
|
+
const errors = [];
|
|
322
|
+
for (const field of fields) {
|
|
323
|
+
const results = await executeFieldValidation((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
324
|
+
field
|
|
325
|
+
}));
|
|
326
|
+
if (results.length === 0) {
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
errors.push(...results);
|
|
330
|
+
}
|
|
331
|
+
return errors;
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
//# sourceMappingURL=entryDataValidation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","validateValue","args","fieldValidators","value","validatorList","context","field","model","entry","fieldValidator","name","validations","length","validate","result","validator","message","ex","validatePredefinedValue","enabled","values","predefinedValues","Array","isArray","predefinedValue","runFieldMultipleValuesValidations","data","fieldId","valuesError","listValidation","valueError","validation","predefinedValueError","runFieldValueValidations","error","execValidation","multipleValues","validateModelEntryData","params","plugins","byType","reduce","acc","plugin","push","invalidFields","fields","_objectSpread2","default","storageId","WebinyError","exports"],"sources":["entryDataValidation.ts"],"sourcesContent":["import {\n CmsModel,\n CmsModelField,\n CmsModelFieldValidation,\n CmsContext,\n CmsModelFieldValidatorPlugin,\n CmsModelFieldValidatorValidateParams,\n CmsEntry\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\n\ntype PluginValidationCallable = (params: CmsModelFieldValidatorValidateParams) => Promise<boolean>;\ntype PluginValidationList = Record<string, PluginValidationCallable[]>;\ntype InputData = Record<string, any>;\n\ninterface ValidateArgs {\n validatorList: PluginValidationList;\n field: CmsModelField;\n model: CmsModel;\n data: InputData;\n context: CmsContext;\n entry?: CmsEntry;\n}\n\ntype PossibleValue = boolean | number | string | null | undefined;\n\nconst validateValue = async (\n args: ValidateArgs,\n fieldValidators: CmsModelFieldValidation[],\n value: PossibleValue | PossibleValue[]\n): Promise<string | null> => {\n if (!fieldValidators) {\n return null;\n }\n\n const { validatorList, context, field, model, entry } = args;\n try {\n for (const fieldValidator of fieldValidators) {\n const name = fieldValidator.name;\n const validations = validatorList[name];\n if (!validations || validations.length === 0) {\n return `There are no \"${name}\" validators defined.`;\n }\n for (const validate of validations) {\n const result = await validate({\n value,\n context,\n validator: fieldValidator,\n field,\n model,\n entry\n });\n if (!result) {\n return fieldValidator.message;\n }\n }\n }\n } catch (ex) {\n return ex.message;\n }\n\n return null;\n};\n\nconst validatePredefinedValue = (field: CmsModelField, value: any | any[]): string | null => {\n const { enabled = false, values: predefinedValues = [] } = field.predefinedValues || {};\n if (!enabled) {\n return null;\n } else if (Array.isArray(predefinedValues) === false || predefinedValues.length === 0) {\n return \"Missing predefined values to validate against.\";\n }\n for (const predefinedValue of predefinedValues) {\n if (predefinedValue.value == value) {\n return null;\n }\n }\n return \"Value sent does not match any of the available predefined values.\";\n};\n/**\n * When multiple values is selected we must run validations on the array containing the values\n * And then on each value in the array\n */\nconst runFieldMultipleValuesValidations = async (args: ValidateArgs): Promise<string | null> => {\n const { field, data } = args;\n const values = data[field.fieldId] || [];\n if (Array.isArray(values) === false) {\n return `Value of the field \"${field.fieldId}\" is not an array.`;\n }\n const valuesError = await validateValue(args, field.listValidation || [], values);\n if (valuesError) {\n return valuesError;\n }\n for (const value of values) {\n const valueError = await validateValue(args, field.validation || [], value);\n if (valueError) {\n return valueError;\n }\n const predefinedValueError = validatePredefinedValue(field, value);\n if (predefinedValueError) {\n return predefinedValueError;\n }\n }\n return null;\n};\n/**\n * Runs validation on given value.\n */\nconst runFieldValueValidations = async (args: ValidateArgs): Promise<string | null> => {\n const { data, field } = args;\n const value = data[field.fieldId];\n const error = await validateValue(args, field.validation || [], value);\n if (error) {\n return error;\n }\n return validatePredefinedValue(field, value);\n};\n\nconst execValidation = async (args: ValidateArgs): Promise<string | null> => {\n if (args.field.multipleValues) {\n return await runFieldMultipleValuesValidations(args);\n }\n return await runFieldValueValidations(args);\n};\n\nexport interface ValidateModelEntryDataParams {\n context: CmsContext;\n model: CmsModel;\n data: InputData;\n entry?: CmsEntry;\n}\nexport const validateModelEntryData = async (params: ValidateModelEntryDataParams) => {\n const { context, model, entry, data } = params;\n /**\n * To later simplify searching for the validations we map them to a name.\n * @see CmsModelFieldValidatorPlugin.validator.validate\n */\n const validatorList: PluginValidationList = context.plugins\n .byType<CmsModelFieldValidatorPlugin>(\"cms-model-field-validator\")\n .reduce((acc, plugin) => {\n const name = plugin.validator.name;\n if (!acc[name]) {\n acc[name] = [];\n }\n acc[name].push(plugin.validator.validate);\n\n return acc;\n }, {} as PluginValidationList);\n\n /**\n * Loop through model fields and validate the corresponding data.\n * Run validation only if the field has validation configured.\n */\n const invalidFields = [];\n for (const field of model.fields) {\n const error = await execValidation({\n model,\n validatorList,\n field,\n data: {\n ...(entry?.values || {}),\n ...data\n },\n context,\n entry\n });\n if (!error) {\n continue;\n }\n invalidFields.push({\n fieldId: field.fieldId,\n storageId: field.storageId,\n error\n });\n }\n\n if (invalidFields.length > 0) {\n throw new WebinyError(\"Validation failed.\", \"VALIDATION_FAILED\", invalidFields);\n }\n};\n"],"mappings":";;;;;;;;AASA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAiBA,MAAMC,aAAa,GAAG,MAAAA,CAClBC,IAAkB,EAClBC,eAA0C,EAC1CC,KAAsC,KACb;EACzB,IAAI,CAACD,eAAe,EAAE;IAClB,OAAO,IAAI;EACf;EAEA,MAAM;IAAEE,aAAa;IAAEC,OAAO;IAAEC,KAAK;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGP,IAAI;EAC5D,IAAI;IACA,KAAK,MAAMQ,cAAc,IAAIP,eAAe,EAAE;MAC1C,MAAMQ,IAAI,GAAGD,cAAc,CAACC,IAAI;MAChC,MAAMC,WAAW,GAAGP,aAAa,CAACM,IAAI,CAAC;MACvC,IAAI,CAACC,WAAW,IAAIA,WAAW,CAACC,MAAM,KAAK,CAAC,EAAE;QAC1C,OAAQ,iBAAgBF,IAAK,uBAAsB;MACvD;MACA,KAAK,MAAMG,QAAQ,IAAIF,WAAW,EAAE;QAChC,MAAMG,MAAM,GAAG,MAAMD,QAAQ,CAAC;UAC1BV,KAAK;UACLE,OAAO;UACPU,SAAS,EAAEN,cAAc;UACzBH,KAAK;UACLC,KAAK;UACLC;QACJ,CAAC,CAAC;QACF,IAAI,CAACM,MAAM,EAAE;UACT,OAAOL,cAAc,CAACO,OAAO;QACjC;MACJ;IACJ;EACJ,CAAC,CAAC,OAAOC,EAAE,EAAE;IACT,OAAOA,EAAE,CAACD,OAAO;EACrB;EAEA,OAAO,IAAI;AACf,CAAC;AAED,MAAME,uBAAuB,GAAGA,CAACZ,KAAoB,EAAEH,KAAkB,KAAoB;EACzF,MAAM;IAAEgB,OAAO,GAAG,KAAK;IAAEC,MAAM,EAAEC,gBAAgB,GAAG;EAAG,CAAC,GAAGf,KAAK,CAACe,gBAAgB,IAAI,CAAC,CAAC;EACvF,IAAI,CAACF,OAAO,EAAE;IACV,OAAO,IAAI;EACf,CAAC,MAAM,IAAIG,KAAK,CAACC,OAAO,CAACF,gBAAgB,CAAC,KAAK,KAAK,IAAIA,gBAAgB,CAACT,MAAM,KAAK,CAAC,EAAE;IACnF,OAAO,gDAAgD;EAC3D;EACA,KAAK,MAAMY,eAAe,IAAIH,gBAAgB,EAAE;IAC5C,IAAIG,eAAe,CAACrB,KAAK,IAAIA,KAAK,EAAE;MAChC,OAAO,IAAI;IACf;EACJ;EACA,OAAO,mEAAmE;AAC9E,CAAC;AACD;AACA;AACA;AACA;AACA,MAAMsB,iCAAiC,GAAG,MAAOxB,IAAkB,IAA6B;EAC5F,MAAM;IAAEK,KAAK;IAAEoB;EAAK,CAAC,GAAGzB,IAAI;EAC5B,MAAMmB,MAAM,GAAGM,IAAI,CAACpB,KAAK,CAACqB,OAAO,CAAC,IAAI,EAAE;EACxC,IAAIL,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,KAAK,KAAK,EAAE;IACjC,OAAQ,uBAAsBd,KAAK,CAACqB,OAAQ,oBAAmB;EACnE;EACA,MAAMC,WAAW,GAAG,MAAM5B,aAAa,CAACC,IAAI,EAAEK,KAAK,CAACuB,cAAc,IAAI,EAAE,EAAET,MAAM,CAAC;EACjF,IAAIQ,WAAW,EAAE;IACb,OAAOA,WAAW;EACtB;EACA,KAAK,MAAMzB,KAAK,IAAIiB,MAAM,EAAE;IACxB,MAAMU,UAAU,GAAG,MAAM9B,aAAa,CAACC,IAAI,EAAEK,KAAK,CAACyB,UAAU,IAAI,EAAE,EAAE5B,KAAK,CAAC;IAC3E,IAAI2B,UAAU,EAAE;MACZ,OAAOA,UAAU;IACrB;IACA,MAAME,oBAAoB,GAAGd,uBAAuB,CAACZ,KAAK,EAAEH,KAAK,CAAC;IAClE,IAAI6B,oBAAoB,EAAE;MACtB,OAAOA,oBAAoB;IAC/B;EACJ;EACA,OAAO,IAAI;AACf,CAAC;AACD;AACA;AACA;AACA,MAAMC,wBAAwB,GAAG,MAAOhC,IAAkB,IAA6B;EACnF,MAAM;IAAEyB,IAAI;IAAEpB;EAAM,CAAC,GAAGL,IAAI;EAC5B,MAAME,KAAK,GAAGuB,IAAI,CAACpB,KAAK,CAACqB,OAAO,CAAC;EACjC,MAAMO,KAAK,GAAG,MAAMlC,aAAa,CAACC,IAAI,EAAEK,KAAK,CAACyB,UAAU,IAAI,EAAE,EAAE5B,KAAK,CAAC;EACtE,IAAI+B,KAAK,EAAE;IACP,OAAOA,KAAK;EAChB;EACA,OAAOhB,uBAAuB,CAACZ,KAAK,EAAEH,KAAK,CAAC;AAChD,CAAC;AAED,MAAMgC,cAAc,GAAG,MAAOlC,IAAkB,IAA6B;EACzE,IAAIA,IAAI,CAACK,KAAK,CAAC8B,cAAc,EAAE;IAC3B,OAAO,MAAMX,iCAAiC,CAACxB,IAAI,CAAC;EACxD;EACA,OAAO,MAAMgC,wBAAwB,CAAChC,IAAI,CAAC;AAC/C,CAAC;AAQM,MAAMoC,sBAAsB,GAAG,MAAOC,MAAoC,IAAK;EAClF,MAAM;IAAEjC,OAAO;IAAEE,KAAK;IAAEC,KAAK;IAAEkB;EAAK,CAAC,GAAGY,MAAM;EAC9C;AACJ;AACA;AACA;EACI,MAAMlC,aAAmC,GAAGC,OAAO,CAACkC,OAAO,CACtDC,MAAM,CAA+B,2BAA2B,CAAC,CACjEC,MAAM,CAAC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACrB,MAAMjC,IAAI,GAAGiC,MAAM,CAAC5B,SAAS,CAACL,IAAI;IAClC,IAAI,CAACgC,GAAG,CAAChC,IAAI,CAAC,EAAE;MACZgC,GAAG,CAAChC,IAAI,CAAC,GAAG,EAAE;IAClB;IACAgC,GAAG,CAAChC,IAAI,CAAC,CAACkC,IAAI,CAACD,MAAM,CAAC5B,SAAS,CAACF,QAAQ,CAAC;IAEzC,OAAO6B,GAAG;EACd,CAAC,EAAE,CAAC,CAAyB,CAAC;;EAElC;AACJ;AACA;AACA;EACI,MAAMG,aAAa,GAAG,EAAE;EACxB,KAAK,MAAMvC,KAAK,IAAIC,KAAK,CAACuC,MAAM,EAAE;IAC9B,MAAMZ,KAAK,GAAG,MAAMC,cAAc,CAAC;MAC/B5B,KAAK;MACLH,aAAa;MACbE,KAAK;MACLoB,IAAI,MAAAqB,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACI,CAAAxC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEY,MAAM,KAAI,CAAC,CAAC,GACpBM,IAAI,CACV;MACDrB,OAAO;MACPG;IACJ,CAAC,CAAC;IACF,IAAI,CAAC0B,KAAK,EAAE;MACR;IACJ;IACAW,aAAa,CAACD,IAAI,CAAC;MACfjB,OAAO,EAAErB,KAAK,CAACqB,OAAO;MACtBsB,SAAS,EAAE3C,KAAK,CAAC2C,SAAS;MAC1Bf;IACJ,CAAC,CAAC;EACN;EAEA,IAAIW,aAAa,CAACjC,MAAM,GAAG,CAAC,EAAE;IAC1B,MAAM,IAAIsC,cAAW,CAAC,oBAAoB,EAAE,mBAAmB,EAAEL,aAAa,CAAC;EACnF;AACJ,CAAC;AAACM,OAAA,CAAAd,sBAAA,GAAAA,sBAAA"}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_camelCase","validateValue","params","fieldValidators","value","validatorList","context","field","model","entry","fieldValidator","name","validations","length","validate","result","validator","message","ex","validatePredefinedValue","enabled","values","predefinedValues","Array","isArray","undefined","predefinedValue","getFieldValidation","listValidation","filter","item","runFieldMultipleValuesValidations","data","fieldId","valuesError","valueError","validation","predefinedValueError","runFieldValueValidations","error","execValidation","multipleValues","validateModelEntryData","skipValidators","isValidatorSkipped","plugin","includes","camelCase","skippedValidators","Set","validators","plugins","byType","isSkipped","add","push","keys","Object","size","parents","fields","_objectSpread2","default","exports","validateModelEntryDataOrThrow","invalidFields","WebinyError","executeFieldValidation","type","_field$settings","_params$data","settings","id","storageId","objectValue","index","childField","errors","concat","_field$settings2","templates","template","_params$data2","fieldData","_values$index","templateValue","gqlTypeName","results"],"sources":["entryDataValidation.ts"],"sourcesContent":["import {\n CmsContext,\n CmsDynamicZoneTemplate,\n CmsEntry,\n CmsModel,\n CmsModelField,\n CmsModelFieldValidation,\n CmsModelFieldValidatorPlugin,\n CmsModelFieldValidatorValidateParams\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport camelCase from \"lodash/camelCase\";\n\ntype PluginValidationCallable = (params: CmsModelFieldValidatorValidateParams) => Promise<boolean>;\ntype PluginValidationList = Record<string, PluginValidationCallable[]>;\ntype InputData = Record<string, any>;\n\ninterface ExecuteValidationParams {\n validatorList: PluginValidationList;\n field: CmsModelField;\n model: CmsModel;\n data: InputData;\n context: CmsContext;\n entry?: CmsEntry;\n}\n\ntype PossibleValue = boolean | number | string | null | undefined;\n\nconst validateValue = async (\n params: ExecuteValidationParams,\n fieldValidators: CmsModelFieldValidation[],\n value: PossibleValue | PossibleValue[]\n): Promise<string | null> => {\n if (!fieldValidators) {\n return null;\n }\n const { validatorList, context, field, model, entry } = params;\n try {\n for (const fieldValidator of fieldValidators) {\n const name = fieldValidator.name;\n const validations = validatorList[name];\n if (!validations || validations.length === 0) {\n return `There are no \"${name}\" validators defined.`;\n }\n for (const validate of validations) {\n const result = await validate({\n value,\n context,\n validator: fieldValidator,\n field,\n model,\n entry\n });\n if (!result) {\n return fieldValidator.message;\n }\n }\n }\n } catch (ex) {\n return ex.message;\n }\n\n return null;\n};\n\nconst validatePredefinedValue = (field: CmsModelField, value: any | any[]): string | null => {\n const { enabled = false, values: predefinedValues = [] } = field.predefinedValues || {};\n if (!enabled) {\n return null;\n } else if (Array.isArray(predefinedValues) === false || predefinedValues.length === 0) {\n return \"Missing predefined values to validate against.\";\n } else if (value == \"\" || value == null || value == undefined) {\n return null;\n }\n for (const predefinedValue of predefinedValues) {\n /**\n * No strict compare because the value sent can be 12345 (number) and predefinedValue can be \"12345\" (string),\n * and we want it to match.\n */\n if (predefinedValue.value == value) {\n return null;\n }\n }\n return \"Value sent does not match any of the available predefined values.\";\n};\n\nconst getFieldValidation = (\n listValidation?: CmsModelFieldValidation[]\n): CmsModelFieldValidation[] => {\n if (!listValidation?.length) {\n return [];\n }\n return listValidation.filter(item => item.name !== \"dynamicZone\");\n};\n/**\n * When multiple values is selected we must run validations on the array containing the values\n * And then on each value in the array\n */\nconst runFieldMultipleValuesValidations = async (\n params: ExecuteValidationParams\n): Promise<string | null> => {\n const { field, data } = params;\n const values = data?.[field.fieldId];\n const valuesError = await validateValue(\n params,\n getFieldValidation(field.listValidation),\n values\n );\n if (valuesError) {\n return valuesError;\n }\n if (values === null || values === undefined) {\n return null;\n }\n for (const value of values) {\n const valueError = await validateValue(params, getFieldValidation(field.validation), value);\n if (valueError) {\n return valueError;\n }\n const predefinedValueError = validatePredefinedValue(field, value);\n if (predefinedValueError) {\n return predefinedValueError;\n }\n }\n return null;\n};\n/**\n * Runs validation on given value.\n */\nconst runFieldValueValidations = async (\n params: ExecuteValidationParams\n): Promise<string | null> => {\n const { data, field } = params;\n const value = data[field.fieldId];\n const error = await validateValue(params, field.validation || [], value);\n if (error) {\n return error;\n }\n return validatePredefinedValue(field, value);\n};\n\nconst execValidation = async (params: ExecuteValidationParams): Promise<string | null> => {\n const { field } = params;\n if (field.multipleValues) {\n return await runFieldMultipleValuesValidations(params);\n }\n return await runFieldValueValidations(params);\n};\n\nexport interface ValidateModelEntryDataParams {\n context: CmsContext;\n model: CmsModel;\n data: InputData;\n entry?: CmsEntry;\n skipValidators?: string[];\n}\n\nexport const validateModelEntryData = async (params: ValidateModelEntryDataParams) => {\n const { context, model, entry, data, skipValidators } = params;\n\n const isValidatorSkipped = (plugin: CmsModelFieldValidatorPlugin) => {\n if (!skipValidators) {\n return false;\n }\n return skipValidators.includes(camelCase(plugin.validator.name));\n };\n\n const skippedValidators = new Set<string>();\n\n /**\n * To later simplify searching for the validations we map them to a name.\n * @see CmsModelFieldValidatorPlugin.validator.validate\n */\n const validatorList: PluginValidationList = {};\n const validators = context.plugins.byType<CmsModelFieldValidatorPlugin>(\n \"cms-model-field-validator\"\n );\n for (const plugin of validators) {\n const name = plugin.validator.name;\n if (!validatorList[name]) {\n validatorList[name] = [];\n }\n const isSkipped = isValidatorSkipped(plugin);\n if (isSkipped) {\n skippedValidators.add(name);\n }\n validatorList[name].push(isSkipped ? async () => true : plugin.validator.validate);\n }\n /**\n * No point in continuing if all validators are skipped.\n */\n const keys = Object.keys(validatorList);\n if (keys.length === skippedValidators.size) {\n return [];\n }\n\n return await validate({\n validatorList,\n context,\n model,\n entry,\n parents: [],\n fields: model.fields,\n data: {\n ...entry?.values,\n ...data\n }\n });\n};\n\nexport const validateModelEntryDataOrThrow = async (params: ValidateModelEntryDataParams) => {\n const invalidFields = await validateModelEntryData(params);\n if (invalidFields.length === 0) {\n return;\n }\n throw new WebinyError(\"Validation failed.\", \"VALIDATION_FAILED\", invalidFields);\n};\n\n/**\n *\n */\ninterface FieldError {\n id: string;\n fieldId: string;\n storageId: string;\n error: any;\n parents: string[];\n}\n\ninterface ValidateParams {\n validatorList: PluginValidationList;\n parents: string[];\n model: CmsModel;\n data: InputData;\n context: CmsContext;\n fields: CmsModelField[];\n entry?: CmsEntry;\n}\n\nconst executeFieldValidation = async (\n params: Omit<ValidateParams, \"fields\"> & {\n field: CmsModelField;\n }\n): Promise<FieldError[]> => {\n // TODO put per-field validation into plugins.\n const { field } = params;\n /**\n * Object field.\n */\n if (field.type === \"object\") {\n const fields = field.settings?.fields;\n if (!Array.isArray(fields)) {\n return [];\n }\n const validations: FieldError[] = [];\n /**\n * We need to validate the object field as well.\n */\n const error = await execValidation({\n ...params,\n field\n });\n if (error) {\n validations.push({\n id: field.id,\n fieldId: field.fieldId,\n storageId: field.storageId,\n error,\n parents: params.parents\n });\n }\n const objectValue = params.data?.[field.fieldId];\n if (!objectValue) {\n return validations;\n }\n const values = Array.isArray(objectValue) ? objectValue : [objectValue];\n for (const index in values) {\n const parents = field.multipleValues ? [field.fieldId, index] : [field.fieldId];\n const value = values[index];\n for (const childField of fields) {\n const errors = await executeFieldValidation({\n ...params,\n parents: params.parents.concat(parents),\n field: childField,\n data: value\n });\n if (errors.length === 0) {\n continue;\n }\n validations.push(...errors);\n }\n }\n return validations;\n }\n /**\n * Dynamic Zone Field\n */\n //\n else if (field.type === \"dynamicZone\") {\n const validations: FieldError[] = [];\n\n const error = await execValidation({\n ...params,\n field\n });\n if (error) {\n validations.push({\n id: field.id,\n fieldId: field.fieldId,\n storageId: field.storageId,\n error,\n parents: params.parents\n });\n }\n\n const templates = (field.settings?.templates || []) as CmsDynamicZoneTemplate[];\n for (const template of templates) {\n const fields = template.fields;\n const fieldData = params.data?.[field.fieldId];\n if (!fieldData) {\n continue;\n }\n const values = Array.isArray(fieldData) ? fieldData : [fieldData];\n for (const index in values) {\n const templateValue = values[index]?.[template.gqlTypeName];\n if (!templateValue) {\n continue;\n }\n /**\n * Order of the parents must be\n * - fieldId\n * - index (if multiple values)\n * - gqlTypeName\n */\n const parents = [field.fieldId];\n if (field.multipleValues) {\n parents.push(index);\n }\n parents.push(template.gqlTypeName);\n for (const childField of fields) {\n const errors = await executeFieldValidation({\n ...params,\n parents: params.parents.concat(parents),\n field: childField,\n data: templateValue\n });\n if (errors.length === 0) {\n continue;\n }\n validations.push(...errors);\n }\n }\n }\n\n return validations;\n }\n const error = await execValidation({\n ...params\n });\n if (!error) {\n return [];\n }\n return [\n {\n id: field.id,\n fieldId: field.fieldId,\n storageId: field.storageId,\n error,\n parents: params.parents\n }\n ];\n};\n\nconst validate = async (params: ValidateParams): Promise<any[]> => {\n const { fields } = params;\n const errors: FieldError[] = [];\n for (const field of fields) {\n const results = await executeFieldValidation({\n ...params,\n field\n });\n if (results.length === 0) {\n continue;\n }\n errors.push(...results);\n }\n return errors;\n};\n"],"mappings":"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"}
|
|
@@ -9,5 +9,11 @@ interface Params {
|
|
|
9
9
|
input: Record<string, ReferenceObject | ReferenceObject[]>;
|
|
10
10
|
validateEntries?: boolean;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* This function traverses the content entry input value, extracts all occurrences of the `ref` field,
|
|
14
|
+
* optionally verifies that those referenced entries exist (by loading them), and normalizes the `ref` value to
|
|
15
|
+
* always contain `{ id, modelId, entryId }`. `entryId` is important when data is being loaded via
|
|
16
|
+
* the `read` and `preview` endpoint.
|
|
17
|
+
*/
|
|
12
18
|
export declare const referenceFieldsMapping: (params: Params) => Promise<Record<string, any>>;
|
|
13
19
|
export {};
|