@webiny/api-headless-cms 0.0.0-unstable.40876133bb → 0.0.0-unstable.496cf268ac
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context.d.ts +5 -2
- package/context.js +53 -19
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.js +0 -5
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.js +0 -3
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.js +0 -3
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +1 -40
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.d.ts +1 -1
- package/crud/contentEntry/markLockedFields.js +19 -29
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +12 -64
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +72 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.d.ts +2 -1
- package/crud/contentEntry.crud.js +140 -193
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.js +0 -2
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.js +0 -2
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.js +0 -2
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.js +0 -2
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +2 -3
- package/crud/contentModel/beforeCreate.js +11 -36
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.js +0 -10
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +2 -4
- package/crud/contentModel/beforeUpdate.js +6 -7
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
- package/crud/contentModel/compatibility/modelApiName.js +24 -0
- package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
- package/crud/contentModel/contentModelManagerFactory.js +0 -7
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +4 -3
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/defaultFields.d.ts +5 -0
- package/crud/contentModel/defaultFields.js +58 -0
- package/crud/contentModel/defaultFields.js.map +1 -0
- package/crud/contentModel/fields/descriptionField.d.ts +2 -0
- package/crud/contentModel/fields/descriptionField.js +42 -0
- package/crud/contentModel/fields/descriptionField.js.map +1 -0
- package/crud/contentModel/fields/imageField.d.ts +2 -0
- package/crud/contentModel/fields/imageField.js +46 -0
- package/crud/contentModel/fields/imageField.js.map +1 -0
- package/crud/contentModel/fields/titleField.d.ts +2 -0
- package/crud/contentModel/fields/titleField.js +58 -0
- package/crud/contentModel/fields/titleField.js.map +1 -0
- package/crud/contentModel/models.js +12 -0
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/validateLayout.js +0 -8
- package/crud/contentModel/validateLayout.js.map +1 -1
- package/crud/contentModel/validateModel.d.ts +4 -4
- package/crud/contentModel/validateModel.js +6 -11
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.d.ts +4 -4
- package/crud/contentModel/validateModelFields.js +131 -147
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +519 -0
- package/crud/contentModel/validation.js +145 -0
- package/crud/contentModel/validation.js.map +1 -0
- package/crud/contentModel.crud.js +245 -272
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.js +0 -12
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.js +0 -8
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.js +0 -5
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +30 -0
- package/crud/contentModelGroup/validation.js +34 -0
- package/crud/contentModelGroup/validation.js.map +1 -0
- package/crud/contentModelGroup.crud.js +53 -95
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/settings.crud.js +0 -12
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +1 -96
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.d.ts +2 -1
- package/fieldConverters/index.js +2 -5
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.d.ts +8 -3
- package/graphql/buildSchemaPlugins.js +6 -14
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/createExecutableSchema.d.ts +7 -0
- package/graphql/createExecutableSchema.js +29 -0
- package/graphql/createExecutableSchema.js.map +1 -0
- package/graphql/generateSchema.d.ts +8 -0
- package/graphql/generateSchema.js +31 -0
- package/graphql/generateSchema.js.map +1 -0
- package/graphql/graphQLHandlerFactory.js +95 -74
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +1 -3
- package/graphql/index.js +2 -46
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.d.ts +6 -2
- package/graphql/schema/baseContentSchema.js +10 -20
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +3 -0
- package/graphql/schema/baseSchema.js +53 -0
- package/graphql/schema/baseSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +6 -2
- package/graphql/schema/contentEntries.js +118 -107
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.d.ts +6 -2
- package/graphql/schema/contentModelGroups.js +10 -23
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.d.ts +6 -2
- package/graphql/schema/contentModels.js +62 -26
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +20 -27
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.d.ts +1 -1
- package/graphql/schema/createManageResolvers.js +33 -43
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +3 -0
- package/graphql/schema/createManageSDL.js +64 -67
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +3 -17
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +8 -17
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +3 -0
- package/graphql/schema/createReadSDL.js +33 -35
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
- package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +0 -3
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +0 -3
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +0 -8
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +0 -3
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/schemaPlugins.d.ts +8 -3
- package/graphql/schema/schemaPlugins.js +64 -66
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +55 -87
- package/graphql/system.js.map +1 -1
- package/graphqlFields/boolean.js +0 -12
- package/graphqlFields/boolean.js.map +1 -1
- package/graphqlFields/datetime.js +0 -17
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +216 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +19 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/file.js +0 -8
- package/graphqlFields/file.js.map +1 -1
- package/graphqlFields/helpers.js +0 -10
- package/graphqlFields/helpers.js.map +1 -1
- package/graphqlFields/index.d.ts +1 -1
- package/graphqlFields/index.js +2 -12
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/longText.js +0 -10
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +4 -12
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +118 -98
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +86 -106
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText.js +0 -9
- package/graphqlFields/richText.js.map +1 -1
- package/graphqlFields/text.js +0 -11
- package/graphqlFields/text.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +3 -27
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.js +0 -16
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/modelManager/index.js +0 -4
- package/modelManager/index.js.map +1 -1
- package/package.json +27 -28
- package/parameters/context.js +0 -4
- package/parameters/context.js.map +1 -1
- package/parameters/header.js +0 -11
- package/parameters/header.js.map +1 -1
- package/parameters/index.js +0 -8
- package/parameters/index.js.map +1 -1
- package/parameters/manual.js +1 -8
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +0 -11
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
- package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
- package/plugins/CmsGroupPlugin.js +0 -8
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
- package/plugins/CmsModelFieldConverterPlugin.js +0 -5
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +11 -1
- package/plugins/CmsModelPlugin.js +15 -40
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +0 -7
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.d.ts +11 -11
- package/plugins/StorageTransformPlugin.js +0 -9
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +22 -10
- package/plugins/index.js.map +1 -1
- package/storage/default.js +0 -3
- package/storage/default.js.map +1 -1
- package/storage/object.js +4 -20
- package/storage/object.js.map +1 -1
- package/types.d.ts +315 -77
- package/types.js +63 -70
- package/types.js.map +1 -1
- package/utils/access.js +11 -25
- package/utils/access.js.map +1 -1
- package/utils/converters/Converter.js +0 -13
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.js +14 -34
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +2 -27
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +16 -0
- package/utils/createTypeFromFields.js +67 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.js +2 -9
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +22 -35
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +0 -5
- package/utils/filterAsync.js.map +1 -1
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +10 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/getEntryDescription.d.ts +2 -0
- package/utils/getEntryDescription.js +17 -0
- package/utils/getEntryDescription.js.map +1 -0
- package/utils/getEntryImage.d.ts +2 -0
- package/utils/getEntryImage.js +17 -0
- package/utils/getEntryImage.js.map +1 -0
- package/utils/getEntryTitle.js +0 -9
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
- package/utils/getSchemaFromFieldPlugins.js +23 -19
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/ownership.d.ts +3 -3
- package/utils/ownership.js +0 -8
- package/utils/ownership.js.map +1 -1
- package/utils/permissions.js +8 -23
- package/utils/permissions.js.map +1 -1
- package/utils/removeNullValues.d.ts +1 -0
- package/utils/removeNullValues.js +17 -0
- package/utils/removeNullValues.js.map +1 -0
- package/utils/removeUndefinedValues.d.ts +1 -0
- package/utils/removeUndefinedValues.js +17 -0
- package/utils/removeUndefinedValues.js.map +1 -0
- package/utils/renderFields.d.ts +2 -1
- package/utils/renderFields.js +10 -10
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +6 -14
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.d.ts +2 -1
- package/utils/renderInputFields.js +6 -9
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +4 -10
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +7 -4
- package/utils/renderSortEnum.js +21 -11
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +0 -4
- package/utils/toSlug.js.map +1 -1
- package/validators/dateGte.js +0 -7
- package/validators/dateGte.js.map +1 -1
- package/validators/dateLte.js +0 -7
- package/validators/dateLte.js.map +1 -1
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +20 -0
- package/validators/dynamicZone.js.map +1 -0
- package/validators/gte.js +0 -8
- package/validators/gte.js.map +1 -1
- package/validators/in.js +0 -8
- package/validators/in.js.map +1 -1
- package/validators/index.js +2 -16
- package/validators/index.js.map +1 -1
- package/validators/lte.js +0 -8
- package/validators/lte.js.map +1 -1
- package/validators/maxLength.js +0 -8
- package/validators/maxLength.js.map +1 -1
- package/validators/minLength.js +0 -8
- package/validators/minLength.js.map +1 -1
- package/validators/pattern.js +0 -9
- package/validators/pattern.js.map +1 -1
- package/validators/patternPlugins/email.js +0 -2
- package/validators/patternPlugins/email.js.map +1 -1
- package/validators/patternPlugins/index.js +0 -8
- package/validators/patternPlugins/index.js.map +1 -1
- package/validators/patternPlugins/lowerCase.js +0 -2
- package/validators/patternPlugins/lowerCase.js.map +1 -1
- package/validators/patternPlugins/lowerCaseSpace.js +0 -2
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
- package/validators/patternPlugins/upperCase.js +0 -2
- package/validators/patternPlugins/upperCase.js.map +1 -1
- package/validators/patternPlugins/upperCaseSpace.js +0 -2
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
- package/validators/patternPlugins/url.js +0 -2
- package/validators/patternPlugins/url.js.map +1 -1
- package/validators/required.js +0 -5
- package/validators/required.js.map +1 -1
- package/validators/timeGte.js +0 -8
- package/validators/timeGte.js.map +1 -1
- package/validators/timeLte.js +0 -8
- package/validators/timeLte.js.map +1 -1
- package/validators/unique.js +0 -7
- package/validators/unique.js.map +1 -1
- package/crud/index.d.ts +0 -6
- package/crud/index.js +0 -85
- package/crud/index.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
- package/utils/filterModelFields.d.ts +0 -16
- package/utils/filterModelFields.js +0 -77
- package/utils/filterModelFields.js.map +0 -1
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.ConverterCollection = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
10
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
15
|
-
|
|
16
11
|
var _Converter = require("./Converter");
|
|
17
|
-
|
|
18
12
|
var _plugins = require("../../plugins");
|
|
19
|
-
|
|
13
|
+
var _getBaseFieldType = require("../getBaseFieldType");
|
|
20
14
|
class ConverterCollection {
|
|
21
15
|
constructor(params) {
|
|
22
16
|
(0, _defineProperty2.default)(this, "converters", new Map());
|
|
@@ -26,11 +20,9 @@ class ConverterCollection {
|
|
|
26
20
|
const fieldGraphQLPlugins = plugins.byType("cms-model-field-to-graphql");
|
|
27
21
|
const fieldConverterPlugins = plugins.byType(_plugins.CmsModelFieldConverterPlugin.type);
|
|
28
22
|
const defaultFieldConverterPlugin = fieldConverterPlugins.find(pl => pl.getFieldType() === "*");
|
|
29
|
-
|
|
30
23
|
if (defaultFieldConverterPlugin === undefined) {
|
|
31
24
|
throw new _error.default(`Missing default field converter plugin.`, "DEFAULT_FIELD_CONVERTER_ERROR");
|
|
32
25
|
}
|
|
33
|
-
|
|
34
26
|
for (const fieldGraphQLPlugin of fieldGraphQLPlugins) {
|
|
35
27
|
const plugin = fieldConverterPlugins.find(pl => pl.getFieldType() === fieldGraphQLPlugin.fieldType);
|
|
36
28
|
const converter = new _Converter.Converter({
|
|
@@ -40,42 +32,34 @@ class ConverterCollection {
|
|
|
40
32
|
this.addConverter(converter);
|
|
41
33
|
}
|
|
42
34
|
}
|
|
43
|
-
|
|
44
35
|
addConverter(converter) {
|
|
45
36
|
converter.setConverterCollection(this);
|
|
46
37
|
this.converters.set(converter.getType(), converter);
|
|
47
38
|
}
|
|
48
|
-
|
|
49
39
|
getConverter(type) {
|
|
50
40
|
const converter = this.converters.get(type);
|
|
51
|
-
|
|
52
41
|
if (converter === undefined) {
|
|
53
42
|
throw new _error.default(`Missing converter for field type "${type}".`, "CONVERTER_ERROR", {
|
|
54
43
|
type
|
|
55
44
|
});
|
|
56
45
|
}
|
|
57
|
-
|
|
58
46
|
return converter;
|
|
59
47
|
}
|
|
60
|
-
|
|
61
48
|
convertToStorage(params) {
|
|
62
49
|
const {
|
|
63
50
|
fields,
|
|
64
51
|
values: inputValues
|
|
65
52
|
} = params;
|
|
66
|
-
|
|
67
53
|
if (inputValues === undefined) {
|
|
68
54
|
return undefined;
|
|
69
55
|
}
|
|
70
|
-
|
|
71
56
|
this.attachHasOwnProperty(inputValues);
|
|
72
57
|
return fields.reduce((output, field) => {
|
|
73
|
-
const
|
|
74
|
-
|
|
58
|
+
const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
|
|
59
|
+
const converter = this.getConverter(baseType);
|
|
75
60
|
if (inputValues === null || inputValues.hasOwnProperty(field.fieldId) === false) {
|
|
76
61
|
return output;
|
|
77
62
|
}
|
|
78
|
-
|
|
79
63
|
const values = converter.convertToStorage({
|
|
80
64
|
field,
|
|
81
65
|
value: inputValues[field.fieldId]
|
|
@@ -83,24 +67,20 @@ class ConverterCollection {
|
|
|
83
67
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), values);
|
|
84
68
|
}, {});
|
|
85
69
|
}
|
|
86
|
-
|
|
87
70
|
convertFromStorage(params) {
|
|
88
71
|
const {
|
|
89
72
|
fields,
|
|
90
73
|
values: inputValues
|
|
91
74
|
} = params;
|
|
92
|
-
|
|
93
75
|
if (inputValues === undefined) {
|
|
94
76
|
return undefined;
|
|
95
77
|
}
|
|
96
|
-
|
|
97
78
|
return fields.reduce((output, field) => {
|
|
98
|
-
const
|
|
99
|
-
|
|
79
|
+
const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
|
|
80
|
+
const converter = this.getConverter(baseType);
|
|
100
81
|
if (inputValues === null || inputValues.hasOwnProperty(field.storageId) === false) {
|
|
101
82
|
return output;
|
|
102
83
|
}
|
|
103
|
-
|
|
104
84
|
const values = converter.convertFromStorage({
|
|
105
85
|
field,
|
|
106
86
|
value: inputValues[field.storageId]
|
|
@@ -108,23 +88,25 @@ class ConverterCollection {
|
|
|
108
88
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), values);
|
|
109
89
|
}, {});
|
|
110
90
|
}
|
|
91
|
+
|
|
111
92
|
/**
|
|
112
93
|
* This method attaches hasOwnProperty when received object was created via Object.create(null) - no inheritance of Object.
|
|
113
94
|
* At that point, hasOwnProperty does not exist, and we need to add it.
|
|
114
95
|
*
|
|
115
96
|
* TODO add more checks if required
|
|
116
97
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
98
|
attachHasOwnProperty(values) {
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
99
|
+
if (
|
|
100
|
+
// null or undefined?
|
|
101
|
+
values === null || values === undefined ||
|
|
102
|
+
// not an object?
|
|
103
|
+
typeof values !== "object" ||
|
|
104
|
+
// maybe it's an array?
|
|
105
|
+
Array.isArray(values) ||
|
|
106
|
+
// and in the end, check if hasOwnProperty is a function already
|
|
124
107
|
typeof (values === null || values === void 0 ? void 0 : values.hasOwnProperty) === "function") {
|
|
125
108
|
return;
|
|
126
109
|
}
|
|
127
|
-
|
|
128
110
|
Object.defineProperty(values, "hasOwnProperty", {
|
|
129
111
|
enumerable: false,
|
|
130
112
|
writable: false,
|
|
@@ -133,7 +115,5 @@ class ConverterCollection {
|
|
|
133
115
|
}
|
|
134
116
|
});
|
|
135
117
|
}
|
|
136
|
-
|
|
137
118
|
}
|
|
138
|
-
|
|
139
119
|
exports.ConverterCollection = ConverterCollection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ConverterCollection","constructor","params","Map","plugins","fieldGraphQLPlugins","byType","fieldConverterPlugins","CmsModelFieldConverterPlugin","type","defaultFieldConverterPlugin","find","pl","getFieldType","undefined","WebinyError","fieldGraphQLPlugin","plugin","fieldType","converter","Converter","addConverter","setConverterCollection","converters","set","getType","getConverter","get","convertToStorage","fields","values","inputValues","attachHasOwnProperty","reduce","output","field","hasOwnProperty","fieldId","value","convertFromStorage","storageId","Array","isArray","Object","defineProperty","enumerable","writable","property"],"sources":["ConverterCollection.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Converter } from \"./Converter\";\nimport { CmsEntryValues, CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { CmsModelFieldConverterPlugin } from \"~/plugins\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\nexport interface CmsModelFieldsWithParent extends CmsModelField {\n parent?: CmsModelField | null;\n}\n\nexport interface CmsModelConverterCallable {\n (params: ConverterCollectionConvertParams): CmsEntryValues;\n}\n\nexport interface ConverterCollectionConvertParams {\n fields: CmsModelFieldsWithParent[];\n values?: CmsEntryValues;\n}\n\nexport interface ConverterCollectionParams {\n plugins: PluginsContainer;\n}\n\nexport class ConverterCollection {\n private readonly converters: Map<string, Converter> = new Map();\n\n public constructor(params: ConverterCollectionParams) {\n const { plugins } = params;\n const fieldGraphQLPlugins = plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n const fieldConverterPlugins = plugins.byType<CmsModelFieldConverterPlugin>(\n CmsModelFieldConverterPlugin.type\n );\n const defaultFieldConverterPlugin = fieldConverterPlugins.find(\n pl => pl.getFieldType() === \"*\"\n );\n if (defaultFieldConverterPlugin === undefined) {\n throw new WebinyError(\n `Missing default field converter plugin.`,\n \"DEFAULT_FIELD_CONVERTER_ERROR\"\n );\n }\n for (const fieldGraphQLPlugin of fieldGraphQLPlugins) {\n const plugin = fieldConverterPlugins.find(\n pl => pl.getFieldType() === fieldGraphQLPlugin.fieldType\n );\n const converter = new Converter({\n type: fieldGraphQLPlugin.fieldType,\n plugin: plugin || defaultFieldConverterPlugin\n });\n\n this.addConverter(converter);\n }\n }\n\n public addConverter(converter: Converter): void {\n converter.setConverterCollection(this);\n this.converters.set(converter.getType(), converter);\n }\n\n public getConverter(type: string): Converter {\n const converter = this.converters.get(type);\n if (converter === undefined) {\n throw new WebinyError(\n `Missing converter for field type \"${type}\".`,\n \"CONVERTER_ERROR\",\n {\n type\n }\n );\n }\n return converter;\n }\n\n public convertToStorage(params: ConverterCollectionConvertParams): CmsEntryValues | undefined {\n const { fields, values: inputValues } = params;\n if (inputValues === undefined) {\n return undefined;\n }\n\n this.attachHasOwnProperty(inputValues);\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const converter = this.getConverter(
|
|
1
|
+
{"version":3,"names":["ConverterCollection","constructor","params","Map","plugins","fieldGraphQLPlugins","byType","fieldConverterPlugins","CmsModelFieldConverterPlugin","type","defaultFieldConverterPlugin","find","pl","getFieldType","undefined","WebinyError","fieldGraphQLPlugin","plugin","fieldType","converter","Converter","addConverter","setConverterCollection","converters","set","getType","getConverter","get","convertToStorage","fields","values","inputValues","attachHasOwnProperty","reduce","output","field","baseType","getBaseFieldType","hasOwnProperty","fieldId","value","convertFromStorage","storageId","Array","isArray","Object","defineProperty","enumerable","writable","property"],"sources":["ConverterCollection.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Converter } from \"./Converter\";\nimport { CmsEntryValues, CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { CmsModelFieldConverterPlugin } from \"~/plugins\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\nexport interface CmsModelFieldsWithParent extends CmsModelField {\n parent?: CmsModelField | null;\n}\n\nexport interface CmsModelConverterCallable {\n (params: ConverterCollectionConvertParams): CmsEntryValues;\n}\n\nexport interface ConverterCollectionConvertParams {\n fields: CmsModelFieldsWithParent[];\n values?: CmsEntryValues;\n}\n\nexport interface ConverterCollectionParams {\n plugins: PluginsContainer;\n}\n\nexport class ConverterCollection {\n private readonly converters: Map<string, Converter> = new Map();\n\n public constructor(params: ConverterCollectionParams) {\n const { plugins } = params;\n const fieldGraphQLPlugins = plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n const fieldConverterPlugins = plugins.byType<CmsModelFieldConverterPlugin>(\n CmsModelFieldConverterPlugin.type\n );\n const defaultFieldConverterPlugin = fieldConverterPlugins.find(\n pl => pl.getFieldType() === \"*\"\n );\n if (defaultFieldConverterPlugin === undefined) {\n throw new WebinyError(\n `Missing default field converter plugin.`,\n \"DEFAULT_FIELD_CONVERTER_ERROR\"\n );\n }\n for (const fieldGraphQLPlugin of fieldGraphQLPlugins) {\n const plugin = fieldConverterPlugins.find(\n pl => pl.getFieldType() === fieldGraphQLPlugin.fieldType\n );\n const converter = new Converter({\n type: fieldGraphQLPlugin.fieldType,\n plugin: plugin || defaultFieldConverterPlugin\n });\n\n this.addConverter(converter);\n }\n }\n\n public addConverter(converter: Converter): void {\n converter.setConverterCollection(this);\n this.converters.set(converter.getType(), converter);\n }\n\n public getConverter(type: string): Converter {\n const converter = this.converters.get(type);\n if (converter === undefined) {\n throw new WebinyError(\n `Missing converter for field type \"${type}\".`,\n \"CONVERTER_ERROR\",\n {\n type\n }\n );\n }\n return converter;\n }\n\n public convertToStorage(params: ConverterCollectionConvertParams): CmsEntryValues | undefined {\n const { fields, values: inputValues } = params;\n if (inputValues === undefined) {\n return undefined;\n }\n\n this.attachHasOwnProperty(inputValues);\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const baseType = getBaseFieldType(field);\n const converter = this.getConverter(baseType);\n if (inputValues === null || inputValues.hasOwnProperty(field.fieldId) === false) {\n return output;\n }\n const values = converter.convertToStorage({\n field,\n value: inputValues[field.fieldId]\n });\n\n return {\n ...output,\n ...values\n };\n }, {});\n }\n\n public convertFromStorage(\n params: ConverterCollectionConvertParams\n ): CmsEntryValues | undefined {\n const { fields, values: inputValues } = params;\n if (inputValues === undefined) {\n return undefined;\n }\n\n return fields.reduce((output, field) => {\n const baseType = getBaseFieldType(field);\n const converter = this.getConverter(baseType);\n if (inputValues === null || inputValues.hasOwnProperty(field.storageId) === false) {\n return output;\n }\n const values = converter.convertFromStorage({\n field,\n value: inputValues[field.storageId]\n });\n\n return {\n ...output,\n ...values\n };\n }, {});\n }\n\n /**\n * This method attaches hasOwnProperty when received object was created via Object.create(null) - no inheritance of Object.\n * At that point, hasOwnProperty does not exist, and we need to add it.\n *\n * TODO add more checks if required\n */\n private attachHasOwnProperty(values: CmsEntryValues) {\n if (\n // null or undefined?\n values === null ||\n values === undefined ||\n // not an object?\n typeof values !== \"object\" ||\n // maybe it's an array?\n Array.isArray(values) ||\n // and in the end, check if hasOwnProperty is a function already\n typeof values?.hasOwnProperty === \"function\"\n ) {\n return;\n }\n Object.defineProperty(values, \"hasOwnProperty\", {\n enumerable: false,\n writable: false,\n value: function (property: string) {\n return this[property] !== undefined;\n }\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createValueKeyToStorageConverter = exports.createValueKeyFromStorageConverter = exports.attachCmsModelFieldConverters = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _ConverterCollection = require("./ConverterCollection");
|
|
13
|
-
|
|
14
10
|
var _semver = _interopRequireDefault(require("semver"));
|
|
15
|
-
|
|
16
11
|
const featureVersion = _semver.default.coerce("5.33.0");
|
|
17
|
-
|
|
18
12
|
const isBetaOrNext = model => {
|
|
19
13
|
if (!model.webinyVersion) {
|
|
20
14
|
return false;
|
|
21
15
|
}
|
|
22
|
-
|
|
23
16
|
return model.webinyVersion.match(/next|beta/) !== null;
|
|
24
17
|
};
|
|
25
|
-
|
|
26
18
|
const isFeatureEnabled = model => {
|
|
27
19
|
/**
|
|
28
20
|
* In case of disabled webinyVersion value, we disable this feature.
|
|
@@ -34,16 +26,13 @@ const isFeatureEnabled = model => {
|
|
|
34
26
|
/**
|
|
35
27
|
* If is a test environment, always have this turned on.
|
|
36
28
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (process.env.NODE_ENV === "test" || isBetaOrNext(model) === true) {
|
|
29
|
+
const nodeEnv = process.env.NODE_ENV;
|
|
30
|
+
if (nodeEnv === "test" || nodeEnv === "disable" || isBetaOrNext(model)) {
|
|
40
31
|
return true;
|
|
41
32
|
}
|
|
42
33
|
/**
|
|
43
34
|
* Possibility that the version is not defined, this means it is a quite old system where models did not change.
|
|
44
35
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
36
|
if (!model.webinyVersion) {
|
|
48
37
|
return false;
|
|
49
38
|
}
|
|
@@ -52,26 +41,20 @@ const isFeatureEnabled = model => {
|
|
|
52
41
|
*
|
|
53
42
|
* TODO change if necessary after the update to the system
|
|
54
43
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
44
|
const modelVersion = _semver.default.coerce(model.webinyVersion);
|
|
58
|
-
|
|
59
45
|
if (!modelVersion) {
|
|
60
46
|
console.log(`Warning: Model "${model.modelId}" does not have valid Webiny version set.`);
|
|
61
47
|
return true;
|
|
62
48
|
} else if (_semver.default.compare(modelVersion, featureVersion) === -1) {
|
|
63
49
|
return false;
|
|
64
50
|
}
|
|
65
|
-
|
|
66
51
|
return true;
|
|
67
52
|
};
|
|
68
|
-
|
|
69
53
|
const createValueKeyToStorageConverter = params => {
|
|
70
54
|
const {
|
|
71
55
|
plugins,
|
|
72
56
|
model
|
|
73
57
|
} = params;
|
|
74
|
-
|
|
75
58
|
if (isFeatureEnabled(model) === false) {
|
|
76
59
|
return ({
|
|
77
60
|
values
|
|
@@ -79,7 +62,6 @@ const createValueKeyToStorageConverter = params => {
|
|
|
79
62
|
return values || {};
|
|
80
63
|
};
|
|
81
64
|
}
|
|
82
|
-
|
|
83
65
|
const converters = new _ConverterCollection.ConverterCollection({
|
|
84
66
|
plugins
|
|
85
67
|
});
|
|
@@ -94,15 +76,12 @@ const createValueKeyToStorageConverter = params => {
|
|
|
94
76
|
return result || {};
|
|
95
77
|
};
|
|
96
78
|
};
|
|
97
|
-
|
|
98
79
|
exports.createValueKeyToStorageConverter = createValueKeyToStorageConverter;
|
|
99
|
-
|
|
100
80
|
const createValueKeyFromStorageConverter = params => {
|
|
101
81
|
const {
|
|
102
82
|
plugins,
|
|
103
83
|
model
|
|
104
84
|
} = params;
|
|
105
|
-
|
|
106
85
|
if (isFeatureEnabled(model) === false) {
|
|
107
86
|
return ({
|
|
108
87
|
values
|
|
@@ -110,7 +89,6 @@ const createValueKeyFromStorageConverter = params => {
|
|
|
110
89
|
return values || {};
|
|
111
90
|
};
|
|
112
91
|
}
|
|
113
|
-
|
|
114
92
|
const converters = new _ConverterCollection.ConverterCollection({
|
|
115
93
|
plugins
|
|
116
94
|
});
|
|
@@ -125,9 +103,7 @@ const createValueKeyFromStorageConverter = params => {
|
|
|
125
103
|
return result || {};
|
|
126
104
|
};
|
|
127
105
|
};
|
|
128
|
-
|
|
129
106
|
exports.createValueKeyFromStorageConverter = createValueKeyFromStorageConverter;
|
|
130
|
-
|
|
131
107
|
const attachCmsModelFieldConverters = params => {
|
|
132
108
|
const {
|
|
133
109
|
model,
|
|
@@ -144,5 +120,4 @@ const attachCmsModelFieldConverters = params => {
|
|
|
144
120
|
})
|
|
145
121
|
});
|
|
146
122
|
};
|
|
147
|
-
|
|
148
123
|
exports.attachCmsModelFieldConverters = attachCmsModelFieldConverters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["featureVersion","semver","coerce","isBetaOrNext","model","webinyVersion","match","isFeatureEnabled","process","env","NODE_ENV","modelVersion","console","log","modelId","compare","createValueKeyToStorageConverter","params","plugins","values","converters","ConverterCollection","fields","result","convertToStorage","createValueKeyFromStorageConverter","convertFromStorage","attachCmsModelFieldConverters","convertValueKeyToStorage","convertValueKeyFromStorage"],"sources":["valueKeyStorageConverter.ts"],"sourcesContent":["import { PluginsContainer } from \"@webiny/plugins\";\nimport {\n CmsModelConverterCallable,\n ConverterCollection,\n ConverterCollectionConvertParams as BaseConverterCollectionConvertParams\n} from \"~/utils/converters/ConverterCollection\";\nimport { CmsModel, StorageOperationsCmsModel } from \"~/types\";\nimport semver, { SemVer } from \"semver\";\n\nconst featureVersion = semver.coerce(\"5.33.0\") as SemVer;\n\nconst isBetaOrNext = (model: CmsModel): boolean => {\n if (!model.webinyVersion) {\n return false;\n }\n return model.webinyVersion.match(/next|beta/) !== null;\n};\n\nconst isFeatureEnabled = (model: CmsModel): boolean => {\n /**\n * In case of disabled webinyVersion value, we disable this feature.\n * This is only for testing...\n */\n if (model.webinyVersion === \"disable\") {\n return false;\n }\n /**\n * If is a test environment, always have this turned on.\n */\n
|
|
1
|
+
{"version":3,"names":["featureVersion","semver","coerce","isBetaOrNext","model","webinyVersion","match","isFeatureEnabled","nodeEnv","process","env","NODE_ENV","modelVersion","console","log","modelId","compare","createValueKeyToStorageConverter","params","plugins","values","converters","ConverterCollection","fields","result","convertToStorage","createValueKeyFromStorageConverter","convertFromStorage","attachCmsModelFieldConverters","convertValueKeyToStorage","convertValueKeyFromStorage"],"sources":["valueKeyStorageConverter.ts"],"sourcesContent":["import { PluginsContainer } from \"@webiny/plugins\";\nimport {\n CmsModelConverterCallable,\n ConverterCollection,\n ConverterCollectionConvertParams as BaseConverterCollectionConvertParams\n} from \"~/utils/converters/ConverterCollection\";\nimport { CmsModel, StorageOperationsCmsModel } from \"~/types\";\nimport semver, { SemVer } from \"semver\";\n\nconst featureVersion = semver.coerce(\"5.33.0\") as SemVer;\n\nconst isBetaOrNext = (model: CmsModel): boolean => {\n if (!model.webinyVersion) {\n return false;\n }\n return model.webinyVersion.match(/next|beta/) !== null;\n};\n\nconst isFeatureEnabled = (model: CmsModel): boolean => {\n /**\n * In case of disabled webinyVersion value, we disable this feature.\n * This is only for testing...\n */\n if (model.webinyVersion === \"disable\") {\n return false;\n }\n /**\n * If is a test environment, always have this turned on.\n */\n const nodeEnv = process.env.NODE_ENV as string;\n if (nodeEnv === \"test\" || nodeEnv === \"disable\" || isBetaOrNext(model)) {\n return true;\n }\n /**\n * Possibility that the version is not defined, this means it is a quite old system where models did not change.\n */\n if (!model.webinyVersion) {\n return false;\n }\n /**\n * In case feature version value is greater than the model version, feature is not enabled as it is an older model with no storageId.\n *\n * TODO change if necessary after the update to the system\n */\n const modelVersion = semver.coerce(model.webinyVersion);\n if (!modelVersion) {\n console.log(`Warning: Model \"${model.modelId}\" does not have valid Webiny version set.`);\n return true;\n } else if (semver.compare(modelVersion, featureVersion) === -1) {\n return false;\n }\n return true;\n};\n\ninterface Params {\n /**\n * We need a model to determine if the conversion feature is enabled.\n */\n model: CmsModel;\n plugins: PluginsContainer;\n}\n\n/**\n * In the first call of the converter we do not need the fields property as it will be taken directly from the model.\n */\ninterface ConverterCollectionConvertParams\n extends Omit<BaseConverterCollectionConvertParams, \"fields\"> {\n fields?: BaseConverterCollectionConvertParams[\"fields\"];\n}\n\nexport const createValueKeyToStorageConverter = (params: Params): CmsModelConverterCallable => {\n const { plugins, model } = params;\n\n if (isFeatureEnabled(model) === false) {\n return ({ values }: ConverterCollectionConvertParams) => {\n return values || {};\n };\n }\n\n const converters = new ConverterCollection({\n plugins\n });\n\n return ({ fields, values }: ConverterCollectionConvertParams) => {\n const result = converters.convertToStorage({\n fields: fields || model.fields,\n values\n });\n return result || {};\n };\n};\n\nexport const createValueKeyFromStorageConverter = (params: Params): CmsModelConverterCallable => {\n const { plugins, model } = params;\n\n if (isFeatureEnabled(model) === false) {\n return ({ values }: ConverterCollectionConvertParams) => {\n return values || {};\n };\n }\n\n const converters = new ConverterCollection({\n plugins\n });\n\n return ({ fields, values }: ConverterCollectionConvertParams) => {\n const result = converters.convertFromStorage({\n fields: fields || model.fields,\n values\n });\n return result || {};\n };\n};\n\ninterface AttachConvertersParams {\n plugins: PluginsContainer;\n model: CmsModel;\n}\nexport const attachCmsModelFieldConverters = (\n params: AttachConvertersParams\n): StorageOperationsCmsModel => {\n const { model, plugins } = params;\n return {\n ...model,\n convertValueKeyToStorage: createValueKeyToStorageConverter({\n model,\n plugins\n }),\n convertValueKeyFromStorage: createValueKeyFromStorageConverter({\n model,\n plugins\n })\n };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiEndpoint, CmsFieldTypePlugins, CmsModel, CmsModelField } from "../types";
|
|
2
|
+
interface TypeFromFieldParams {
|
|
3
|
+
typeOfType: "type" | "input";
|
|
4
|
+
models: CmsModel[];
|
|
5
|
+
model: CmsModel;
|
|
6
|
+
type: ApiEndpoint;
|
|
7
|
+
typeNamePrefix: string;
|
|
8
|
+
fields: CmsModelField[];
|
|
9
|
+
fieldTypePlugins: CmsFieldTypePlugins;
|
|
10
|
+
}
|
|
11
|
+
interface TypeFromFieldResponse {
|
|
12
|
+
fieldType: string;
|
|
13
|
+
typeDefs: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const createTypeFromFields: (params: TypeFromFieldParams) => TypeFromFieldResponse | null;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createTypeFromFields = void 0;
|
|
7
|
+
var _createTypeName = require("./createTypeName");
|
|
8
|
+
var _renderFields = require("./renderFields");
|
|
9
|
+
var _renderInputFields = require("./renderInputFields");
|
|
10
|
+
const createTypeFromFields = params => {
|
|
11
|
+
const {
|
|
12
|
+
typeOfType,
|
|
13
|
+
model,
|
|
14
|
+
models,
|
|
15
|
+
type,
|
|
16
|
+
typeNamePrefix,
|
|
17
|
+
fields,
|
|
18
|
+
fieldTypePlugins
|
|
19
|
+
} = params;
|
|
20
|
+
const typeSuffix = typeOfType === "input" ? "Input" : "";
|
|
21
|
+
const mTypeName = (0, _createTypeName.createTypeName)(model.singularApiName);
|
|
22
|
+
const typeFields = [];
|
|
23
|
+
const nestedTypes = [];
|
|
24
|
+
|
|
25
|
+
// Once the loop below starts, we'll be executing a recursive "object" type generation.
|
|
26
|
+
// The main trick here is that nested objects don't know who the parent is, and will generate
|
|
27
|
+
// type names using the "model", as if they're at the top level:
|
|
28
|
+
// Every time the types are returned, we need to replace the model name in the generated type name
|
|
29
|
+
// with the actual prefix which includes parent field name type.
|
|
30
|
+
const replace = new RegExp(`${mTypeName}_`, "g");
|
|
31
|
+
for (const field of fields) {
|
|
32
|
+
const result = typeOfType === "type" ? (0, _renderFields.renderField)({
|
|
33
|
+
field,
|
|
34
|
+
type,
|
|
35
|
+
models,
|
|
36
|
+
model,
|
|
37
|
+
fieldTypePlugins
|
|
38
|
+
}) : (0, _renderInputFields.renderInputField)({
|
|
39
|
+
field,
|
|
40
|
+
models,
|
|
41
|
+
model,
|
|
42
|
+
fieldTypePlugins
|
|
43
|
+
});
|
|
44
|
+
if (!result) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const {
|
|
48
|
+
fields,
|
|
49
|
+
typeDefs
|
|
50
|
+
} = result;
|
|
51
|
+
typeFields.push(fields.replace(replace, `${typeNamePrefix}_`));
|
|
52
|
+
if (typeDefs) {
|
|
53
|
+
nestedTypes.push(typeDefs.replace(replace, `${typeNamePrefix}_`));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
fieldType: `${typeNamePrefix}${typeSuffix}`,
|
|
58
|
+
typeDefs: /* GraphQL */`
|
|
59
|
+
${nestedTypes.join("\n")}
|
|
60
|
+
|
|
61
|
+
${typeOfType} ${typeNamePrefix}${typeSuffix} {
|
|
62
|
+
${typeFields.join("\n")}
|
|
63
|
+
}
|
|
64
|
+
`
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
exports.createTypeFromFields = createTypeFromFields;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createTypeFromFields","params","typeOfType","model","models","type","typeNamePrefix","fields","fieldTypePlugins","typeSuffix","mTypeName","createTypeName","singularApiName","typeFields","nestedTypes","replace","RegExp","field","result","renderField","renderInputField","typeDefs","push","fieldType","join"],"sources":["createTypeFromFields.ts"],"sourcesContent":["import { createTypeName } from \"~/utils/createTypeName\";\nimport { renderField } from \"~/utils/renderFields\";\nimport { renderInputField } from \"~/utils/renderInputFields\";\nimport { ApiEndpoint, CmsFieldTypePlugins, CmsModel, CmsModelField } from \"~/types\";\n\ninterface TypeFromFieldParams {\n typeOfType: \"type\" | \"input\";\n models: CmsModel[];\n model: CmsModel;\n type: ApiEndpoint;\n typeNamePrefix: string;\n fields: CmsModelField[];\n fieldTypePlugins: CmsFieldTypePlugins;\n}\n\ninterface TypeFromFieldResponse {\n fieldType: string;\n typeDefs: string;\n}\n\nexport const createTypeFromFields = (params: TypeFromFieldParams): TypeFromFieldResponse | null => {\n const { typeOfType, model, models, type, typeNamePrefix, fields, fieldTypePlugins } = params;\n const typeSuffix = typeOfType === \"input\" ? \"Input\" : \"\";\n const mTypeName = createTypeName(model.singularApiName);\n\n const typeFields = [];\n const nestedTypes = [];\n\n // Once the loop below starts, we'll be executing a recursive \"object\" type generation.\n // The main trick here is that nested objects don't know who the parent is, and will generate\n // type names using the \"model\", as if they're at the top level:\n // Every time the types are returned, we need to replace the model name in the generated type name\n // with the actual prefix which includes parent field name type.\n const replace = new RegExp(`${mTypeName}_`, \"g\");\n\n for (const field of fields) {\n const result =\n typeOfType === \"type\"\n ? renderField({ field, type, models, model, fieldTypePlugins })\n : renderInputField({ field, models, model, fieldTypePlugins });\n\n if (!result) {\n continue;\n }\n\n const { fields, typeDefs } = result;\n\n typeFields.push(fields.replace(replace, `${typeNamePrefix}_`));\n if (typeDefs) {\n nestedTypes.push(typeDefs.replace(replace, `${typeNamePrefix}_`));\n }\n }\n\n return {\n fieldType: `${typeNamePrefix}${typeSuffix}`,\n typeDefs: /* GraphQL */ `\n ${nestedTypes.join(\"\\n\")}\n\n ${typeOfType} ${typeNamePrefix}${typeSuffix} {\n ${typeFields.join(\"\\n\")}\n }\n `\n };\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAkBO,MAAMA,oBAAoB,GAAIC,MAA2B,IAAmC;EAC/F,MAAM;IAAEC,UAAU;IAAEC,KAAK;IAAEC,MAAM;IAAEC,IAAI;IAAEC,cAAc;IAAEC,MAAM;IAAEC;EAAiB,CAAC,GAAGP,MAAM;EAC5F,MAAMQ,UAAU,GAAGP,UAAU,KAAK,OAAO,GAAG,OAAO,GAAG,EAAE;EACxD,MAAMQ,SAAS,GAAG,IAAAC,8BAAc,EAACR,KAAK,CAACS,eAAe,CAAC;EAEvD,MAAMC,UAAU,GAAG,EAAE;EACrB,MAAMC,WAAW,GAAG,EAAE;;EAEtB;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAG,IAAIC,MAAM,CAAE,GAAEN,SAAU,GAAE,EAAE,GAAG,CAAC;EAEhD,KAAK,MAAMO,KAAK,IAAIV,MAAM,EAAE;IACxB,MAAMW,MAAM,GACRhB,UAAU,KAAK,MAAM,GACf,IAAAiB,yBAAW,EAAC;MAAEF,KAAK;MAAEZ,IAAI;MAAED,MAAM;MAAED,KAAK;MAAEK;IAAiB,CAAC,CAAC,GAC7D,IAAAY,mCAAgB,EAAC;MAAEH,KAAK;MAAEb,MAAM;MAAED,KAAK;MAAEK;IAAiB,CAAC,CAAC;IAEtE,IAAI,CAACU,MAAM,EAAE;MACT;IACJ;IAEA,MAAM;MAAEX,MAAM;MAAEc;IAAS,CAAC,GAAGH,MAAM;IAEnCL,UAAU,CAACS,IAAI,CAACf,MAAM,CAACQ,OAAO,CAACA,OAAO,EAAG,GAAET,cAAe,GAAE,CAAC,CAAC;IAC9D,IAAIe,QAAQ,EAAE;MACVP,WAAW,CAACQ,IAAI,CAACD,QAAQ,CAACN,OAAO,CAACA,OAAO,EAAG,GAAET,cAAe,GAAE,CAAC,CAAC;IACrE;EACJ;EAEA,OAAO;IACHiB,SAAS,EAAG,GAAEjB,cAAe,GAAEG,UAAW,EAAC;IAC3CY,QAAQ,EAAE,aAAe;AACjC,cAAcP,WAAW,CAACU,IAAI,CAAC,IAAI,CAAE;AACrC;AACA,cAActB,UAAW,IAAGI,cAAe,GAAEG,UAAW;AACxD,kBAAkBI,UAAU,CAACW,IAAI,CAAC,IAAI,CAAE;AACxC;AACA;EACI,CAAC;AACL,CAAC;AAAC"}
|
package/utils/createTypeName.js
CHANGED
|
@@ -1,28 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createTypeName = exports.createReadTypeName = exports.createManageTypeName = void 0;
|
|
9
|
-
|
|
10
8
|
var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
|
|
11
|
-
|
|
9
|
+
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
|
|
12
10
|
const createTypeName = modelId => {
|
|
13
|
-
return (0, _upperFirst.default)(modelId);
|
|
11
|
+
return (0, _upperFirst.default)((0, _camelCase.default)(modelId));
|
|
14
12
|
};
|
|
15
|
-
|
|
16
13
|
exports.createTypeName = createTypeName;
|
|
17
|
-
|
|
18
14
|
const createReadTypeName = baseTypeName => {
|
|
19
15
|
return createTypeName(baseTypeName);
|
|
20
16
|
};
|
|
21
|
-
|
|
22
17
|
exports.createReadTypeName = createReadTypeName;
|
|
23
|
-
|
|
24
18
|
const createManageTypeName = baseTypeName => {
|
|
25
19
|
return createTypeName(baseTypeName);
|
|
26
20
|
};
|
|
27
|
-
|
|
28
21
|
exports.createManageTypeName = createManageTypeName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createTypeName","modelId","upperFirst","createReadTypeName","baseTypeName","createManageTypeName"],"sources":["createTypeName.ts"],"sourcesContent":["import upperFirst from \"lodash/upperFirst\";\n\nexport const createTypeName = (modelId: string): string => {\n return upperFirst(modelId);\n};\n\nexport const createReadTypeName = (baseTypeName: string): string => {\n return createTypeName(baseTypeName);\n};\n\nexport const createManageTypeName = (baseTypeName: string): string => {\n return createTypeName(baseTypeName);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["createTypeName","modelId","upperFirst","camelCase","createReadTypeName","baseTypeName","createManageTypeName"],"sources":["createTypeName.ts"],"sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport camelCase from \"lodash/camelCase\";\n\nexport const createTypeName = (modelId: string): string => {\n return upperFirst(camelCase(modelId));\n};\n\nexport const createReadTypeName = (baseTypeName: string): string => {\n return createTypeName(baseTypeName);\n};\n\nexport const createManageTypeName = (baseTypeName: string): string => {\n return createTypeName(baseTypeName);\n};\n"],"mappings":";;;;;;;AAAA;AACA;AAEO,MAAMA,cAAc,GAAIC,OAAe,IAAa;EACvD,OAAO,IAAAC,mBAAU,EAAC,IAAAC,kBAAS,EAACF,OAAO,CAAC,CAAC;AACzC,CAAC;AAAC;AAEK,MAAMG,kBAAkB,GAAIC,YAAoB,IAAa;EAChE,OAAOL,cAAc,CAACK,YAAY,CAAC;AACvC,CAAC;AAAC;AAEK,MAAMC,oBAAoB,GAAID,YAAoB,IAAa;EAClE,OAAOL,cAAc,CAACK,YAAY,CAAC;AACvC,CAAC;AAAC"}
|
package/utils/entryStorage.js
CHANGED
|
@@ -1,59 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.entryToStorageTransform = exports.entryFromStorageTransform = exports.entryFieldFromStorageTransform = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
10
|
var _StorageTransformPlugin = require("../plugins/StorageTransformPlugin");
|
|
15
|
-
|
|
11
|
+
var _getBaseFieldType = require("./getBaseFieldType");
|
|
16
12
|
const getStoragePluginFactory = context => {
|
|
17
13
|
let defaultStoragePlugin;
|
|
18
|
-
const plugins = context.plugins.byType(_StorageTransformPlugin.StorageTransformPlugin.type)
|
|
14
|
+
const plugins = context.plugins.byType(_StorageTransformPlugin.StorageTransformPlugin.type)
|
|
15
|
+
// we reverse plugins because we want to get latest added only
|
|
19
16
|
.reverse().reduce((collection, plugin) => {
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Check if it's a default plugin and set it - always override the previous one.
|
|
19
|
+
*/
|
|
20
|
+
if (plugin.fieldType === "*") {
|
|
22
21
|
defaultStoragePlugin = plugin;
|
|
23
22
|
return collection;
|
|
24
23
|
}
|
|
24
|
+
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
26
|
+
* We will just set the plugin for given type.
|
|
27
|
+
* The last one will override existing one - so users can override our default ones.
|
|
28
28
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (!collection[plugin.fieldType]) {
|
|
32
|
-
collection[plugin.fieldType] = plugin;
|
|
33
|
-
}
|
|
34
|
-
|
|
29
|
+
collection[plugin.fieldType] = plugin;
|
|
35
30
|
return collection;
|
|
36
31
|
}, {});
|
|
37
32
|
return fieldType => {
|
|
38
33
|
return plugins[fieldType] || defaultStoragePlugin;
|
|
39
34
|
};
|
|
40
35
|
};
|
|
36
|
+
|
|
41
37
|
/**
|
|
42
38
|
* This should be used when transforming the whole entry.
|
|
43
39
|
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
40
|
const entryStorageTransform = async (context, model, operation, entry) => {
|
|
47
41
|
const getStoragePlugin = getStoragePluginFactory(context);
|
|
48
42
|
const transformedValues = {};
|
|
49
|
-
|
|
50
43
|
for (const field of model.fields) {
|
|
51
|
-
const
|
|
52
|
-
|
|
44
|
+
const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
|
|
45
|
+
const plugin = getStoragePlugin(baseType);
|
|
46
|
+
// TODO: remove this once plugins are converted into classes
|
|
53
47
|
if (typeof plugin[operation] !== "function") {
|
|
54
|
-
throw new _error.default(`Missing "${operation}" function in storage plugin "${plugin.name}" for field type "${
|
|
48
|
+
throw new _error.default(`Missing "${operation}" function in storage plugin "${plugin.name}" for field type "${baseType}"`);
|
|
55
49
|
}
|
|
56
|
-
|
|
57
50
|
transformedValues[field.fieldId] = await plugin[operation]({
|
|
58
51
|
plugins: context.plugins,
|
|
59
52
|
model,
|
|
@@ -62,32 +55,26 @@ const entryStorageTransform = async (context, model, operation, entry) => {
|
|
|
62
55
|
getStoragePlugin
|
|
63
56
|
});
|
|
64
57
|
}
|
|
65
|
-
|
|
66
58
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, entry), {}, {
|
|
67
59
|
values: transformedValues
|
|
68
60
|
});
|
|
69
61
|
};
|
|
62
|
+
|
|
70
63
|
/**
|
|
71
64
|
* A function that is used in crud to transform entry into the storage type.
|
|
72
65
|
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
66
|
const entryToStorageTransform = async (context, model, entry) => {
|
|
76
67
|
return entryStorageTransform(context, model, "toStorage", entry);
|
|
77
68
|
};
|
|
69
|
+
|
|
78
70
|
/**
|
|
79
71
|
* A function that is used to transform the whole entry from storage into its native form.
|
|
80
72
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
73
|
exports.entryToStorageTransform = entryToStorageTransform;
|
|
84
|
-
|
|
85
74
|
const entryFromStorageTransform = async (context, model, entry) => {
|
|
86
75
|
return entryStorageTransform(context, model, "fromStorage", entry);
|
|
87
76
|
};
|
|
88
|
-
|
|
89
77
|
exports.entryFromStorageTransform = entryFromStorageTransform;
|
|
90
|
-
|
|
91
78
|
/*
|
|
92
79
|
* A function that is used to transform a single field from storage
|
|
93
80
|
*/
|
|
@@ -99,12 +86,13 @@ const entryFieldFromStorageTransform = async params => {
|
|
|
99
86
|
value
|
|
100
87
|
} = params;
|
|
101
88
|
const getStoragePlugin = getStoragePluginFactory(context);
|
|
102
|
-
const
|
|
89
|
+
const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
|
|
90
|
+
const plugin = getStoragePlugin(baseType);
|
|
103
91
|
|
|
92
|
+
// TODO: remove this once plugins are converted into classes
|
|
104
93
|
if (typeof plugin.fromStorage !== "function") {
|
|
105
|
-
throw new _error.default(`Missing "fromStorage" function in storage plugin "${plugin.name}" for field type "${
|
|
94
|
+
throw new _error.default(`Missing "fromStorage" function in storage plugin "${plugin.name}" for field type "${baseType}"`);
|
|
106
95
|
}
|
|
107
|
-
|
|
108
96
|
return plugin.fromStorage({
|
|
109
97
|
plugins: context.plugins,
|
|
110
98
|
model,
|
|
@@ -113,5 +101,4 @@ const entryFieldFromStorageTransform = async params => {
|
|
|
113
101
|
getStoragePlugin
|
|
114
102
|
});
|
|
115
103
|
};
|
|
116
|
-
|
|
117
104
|
exports.entryFieldFromStorageTransform = entryFieldFromStorageTransform;
|