@webiny/api-headless-cms 5.33.5 → 5.34.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/context.js +3 -7
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.d.ts +2 -2
- package/crud/contentEntry/afterDelete.js +2 -2
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.d.ts +2 -2
- package/crud/contentEntry/beforeCreate.js +2 -2
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.d.ts +2 -2
- package/crud/contentEntry/beforeUpdate.js +2 -2
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +3 -7
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +10 -11
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +11 -13
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +83 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.d.ts +0 -2
- package/crud/contentEntry.crud.js +249 -269
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.d.ts +3 -3
- package/crud/contentModel/afterCreate.js +5 -5
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.d.ts +3 -3
- package/crud/contentModel/afterCreateFrom.js +5 -5
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.d.ts +3 -3
- package/crud/contentModel/afterDelete.js +5 -5
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.d.ts +3 -3
- package/crud/contentModel/afterUpdate.js +5 -5
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +4 -4
- package/crud/contentModel/beforeCreate.js +10 -10
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.d.ts +3 -3
- package/crud/contentModel/beforeDelete.js +6 -6
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +3 -3
- package/crud/contentModel/beforeUpdate.js +5 -5
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +5 -1
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/models.js +12 -0
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/validateModel.js +1 -1
- package/crud/contentModel/validateModelFields.js +42 -34
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel.crud.js +222 -169
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
- package/crud/contentModelGroup/beforeCreate.js +3 -3
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
- package/crud/contentModelGroup/beforeDelete.js +3 -3
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
- package/crud/contentModelGroup/beforeUpdate.js +2 -2
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup.crud.js +87 -37
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/index.js +3 -7
- package/crud/index.js.map +1 -1
- package/crud/settings.crud.js +3 -8
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +63 -51
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +239 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +17 -19
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.d.ts +2 -1
- package/fieldConverters/index.js +3 -1
- package/fieldConverters/index.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +27 -17
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/schema/baseContentSchema.js +4 -8
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +1 -1
- package/graphql/schema/contentModels.js +18 -1
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +12 -14
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +4 -18
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +7 -10
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +3 -7
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +3 -7
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.js +5 -3
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +5 -9
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +3 -7
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +3 -7
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +234 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +21 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/index.d.ts +1 -1
- package/graphqlFields/index.js +3 -1
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/number.js +4 -0
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +123 -73
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +23 -23
- package/graphqlFields/ref.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +7 -7
- package/modelManager/DefaultCmsModelManager.js +1 -1
- package/package.json +27 -28
- package/parameters/header.js +1 -1
- package/parameters/manual.js +7 -8
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +1 -1
- package/plugins/CmsGroupPlugin.js +1 -1
- package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
- package/plugins/CmsModelFieldConverterPlugin.js +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +6 -2
- package/plugins/CmsModelPlugin.js +18 -13
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +1 -1
- package/plugins/StorageTransformPlugin.d.ts +11 -11
- package/plugins/StorageTransformPlugin.js +1 -1
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/storage/object.js +7 -8
- package/storage/object.js.map +1 -1
- package/types.d.ts +436 -164
- package/types.js +50 -9
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +5 -9
- package/upgrades/5.33.0/index.js.map +1 -1
- package/utils/converters/Converter.js +1 -1
- package/utils/converters/ConverterCollection.js +10 -8
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +3 -7
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +15 -0
- package/utils/createTypeFromFields.js +75 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.js +4 -2
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +17 -18
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterModelFields.js +5 -9
- package/utils/filterModelFields.js.map +1 -1
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +12 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/permissions.js +1 -5
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +1 -1
- package/utils/renderFields.js +3 -1
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +8 -3
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +3 -1
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +12 -2
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.js +3 -1
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +1 -1
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +24 -0
- package/validators/dynamicZone.js.map +1 -0
- package/validators/index.js +3 -1
- package/validators/index.js.map +1 -1
- package/validators/unique.js +1 -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
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.CmsModelDynamicZoneFieldConverterPlugin = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
+
|
|
14
|
+
var _CmsModelFieldConverterPlugin = require("../plugins/CmsModelFieldConverterPlugin");
|
|
15
|
+
|
|
16
|
+
class CmsModelDynamicZoneFieldConverterPlugin extends _CmsModelFieldConverterPlugin.CmsModelFieldConverterPlugin {
|
|
17
|
+
constructor(...args) {
|
|
18
|
+
super(...args);
|
|
19
|
+
(0, _defineProperty2.default)(this, "name", "cms.field.converter.dynamicZone");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getFieldType() {
|
|
23
|
+
return "dynamicZone";
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getTemplates(field) {
|
|
27
|
+
var _field$settings;
|
|
28
|
+
|
|
29
|
+
return ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.templates) || [];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
convertToStorage(params) {
|
|
33
|
+
const {
|
|
34
|
+
field,
|
|
35
|
+
value,
|
|
36
|
+
converterCollection
|
|
37
|
+
} = params;
|
|
38
|
+
const templates = this.getTemplates(field);
|
|
39
|
+
|
|
40
|
+
if (templates.length === 0) {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (field.multipleValues) {
|
|
45
|
+
if (!Array.isArray(value)) {
|
|
46
|
+
throw new _error.default(`Dynamic zone field "${field.fieldId}" is expecting an array value.`, "DYNAMIC_ZONE_EXPECTING_ARRAY_VALUE", {
|
|
47
|
+
field,
|
|
48
|
+
value
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
[field.storageId]: value.map(item => {
|
|
54
|
+
return this.processToStorage({
|
|
55
|
+
templates,
|
|
56
|
+
converterCollection,
|
|
57
|
+
value: item
|
|
58
|
+
});
|
|
59
|
+
})
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (Array.isArray(value)) {
|
|
64
|
+
throw new _error.default(`Dynamic zone field "${field.fieldId}" is expecting a non-array value.`, "DYNAMIC_ZONE_EXPECTING_NON_ARRAY_VALUE", {
|
|
65
|
+
field,
|
|
66
|
+
value
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const processedValue = this.processToStorage({
|
|
71
|
+
templates,
|
|
72
|
+
converterCollection,
|
|
73
|
+
value
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
[field.storageId]: processedValue
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
processToStorage(params) {
|
|
81
|
+
const {
|
|
82
|
+
templates,
|
|
83
|
+
converterCollection
|
|
84
|
+
} = params;
|
|
85
|
+
let {
|
|
86
|
+
value
|
|
87
|
+
} = params;
|
|
88
|
+
|
|
89
|
+
if (value === null || value === undefined) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* There are two ways converter needs to work:
|
|
94
|
+
* 1. when there is a _templateId
|
|
95
|
+
* 2. when there is a key which identifies which template is the data for
|
|
96
|
+
*/
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* When we have a template key, everything is simple.
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
const templateId = value._templateId;
|
|
104
|
+
let graphQlName = undefined;
|
|
105
|
+
let template = undefined;
|
|
106
|
+
|
|
107
|
+
if (templateId) {
|
|
108
|
+
template = templates.find(t => {
|
|
109
|
+
return templateId === t.id;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* When we do not have a templateId, then the template identifier is the key of the value object.
|
|
114
|
+
* But at that point, values under that key become the value we are working with later on.
|
|
115
|
+
*/
|
|
116
|
+
//
|
|
117
|
+
else {
|
|
118
|
+
const keys = Object.keys(value);
|
|
119
|
+
|
|
120
|
+
if (keys.length === 0) {
|
|
121
|
+
return undefined;
|
|
122
|
+
} else if (keys.length > 1) {
|
|
123
|
+
throw new _error.default("There cannot be more than one dynamic zone template in a single dynamic zone field.", "DYNAMIC_ZONE_TOO_MANY_TEMPLATES", {
|
|
124
|
+
templates: keys
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
graphQlName = keys[0];
|
|
129
|
+
template = templates.find(t => t.gqlTypeName === graphQlName);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (!template) {
|
|
133
|
+
throw new _error.default("Unknown template - converting to storage.", "UNKNOWN_TEMPLATE", {
|
|
134
|
+
templateId,
|
|
135
|
+
graphQlName
|
|
136
|
+
});
|
|
137
|
+
} else if (graphQlName) {
|
|
138
|
+
value = value[graphQlName];
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return template.fields.reduce((values, field) => {
|
|
142
|
+
const converter = converterCollection.getConverter(field.type);
|
|
143
|
+
const converted = converter.convertToStorage({
|
|
144
|
+
field,
|
|
145
|
+
value: value ? value[field.fieldId] : undefined
|
|
146
|
+
});
|
|
147
|
+
Object.assign(values, converted);
|
|
148
|
+
return values;
|
|
149
|
+
}, {
|
|
150
|
+
_templateId: template.id
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
convertFromStorage(params) {
|
|
155
|
+
const {
|
|
156
|
+
field,
|
|
157
|
+
value,
|
|
158
|
+
converterCollection
|
|
159
|
+
} = params;
|
|
160
|
+
const templates = this.getTemplates(field);
|
|
161
|
+
|
|
162
|
+
if (templates.length === 0) {
|
|
163
|
+
return {};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (field.multipleValues) {
|
|
167
|
+
if (!Array.isArray(value)) {
|
|
168
|
+
throw new _error.default(`Dynamic zone field "${field.fieldId}" is expecting an array value.`, "DYNAMIC_ZONE_EXPECTING_ARRAY_VALUE", {
|
|
169
|
+
field,
|
|
170
|
+
value
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return {
|
|
175
|
+
[field.fieldId]: value.map(item => {
|
|
176
|
+
return this.processFromStorage({
|
|
177
|
+
templates,
|
|
178
|
+
converterCollection,
|
|
179
|
+
value: item
|
|
180
|
+
});
|
|
181
|
+
})
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (Array.isArray(value)) {
|
|
186
|
+
throw new _error.default(`Dynamic zone field "${field.fieldId}" is expecting a non-array value.`, "DYNAMIC_ZONE_EXPECTING_NON_ARRAY_VALUE", {
|
|
187
|
+
field,
|
|
188
|
+
value
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const processedValue = this.processFromStorage({
|
|
193
|
+
templates,
|
|
194
|
+
converterCollection,
|
|
195
|
+
value
|
|
196
|
+
});
|
|
197
|
+
return {
|
|
198
|
+
[field.fieldId]: processedValue
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
processFromStorage(params) {
|
|
203
|
+
const {
|
|
204
|
+
templates,
|
|
205
|
+
value,
|
|
206
|
+
converterCollection
|
|
207
|
+
} = params;
|
|
208
|
+
|
|
209
|
+
if (value === null || value === undefined) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const {
|
|
214
|
+
_templateId
|
|
215
|
+
} = value;
|
|
216
|
+
const template = templates.find(t => t.id === _templateId);
|
|
217
|
+
|
|
218
|
+
if (!template) {
|
|
219
|
+
throw new _error.default("Unknown template - converting from storage.", "UNKNOWN_TEMPLATE", {
|
|
220
|
+
templateId: _templateId
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return template.fields.reduce((values, field) => {
|
|
225
|
+
const converter = converterCollection.getConverter(field.type);
|
|
226
|
+
const converted = converter.convertFromStorage({
|
|
227
|
+
field,
|
|
228
|
+
value: value[field.storageId]
|
|
229
|
+
});
|
|
230
|
+
Object.assign(values, converted);
|
|
231
|
+
return values;
|
|
232
|
+
}, {
|
|
233
|
+
_templateId: template.id
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
exports.CmsModelDynamicZoneFieldConverterPlugin = CmsModelDynamicZoneFieldConverterPlugin;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CmsModelDynamicZoneFieldConverterPlugin","CmsModelFieldConverterPlugin","getFieldType","getTemplates","field","settings","templates","convertToStorage","params","value","converterCollection","length","multipleValues","Array","isArray","WebinyError","fieldId","storageId","map","item","processToStorage","processedValue","undefined","templateId","_templateId","graphQlName","template","find","t","id","keys","Object","gqlTypeName","fields","reduce","values","converter","getConverter","type","converted","assign","convertFromStorage","processFromStorage"],"sources":["CmsModelDynamicZoneFieldConverterPlugin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsModelFieldConverterPlugin,\n ConvertParams\n} from \"~/plugins/CmsModelFieldConverterPlugin\";\nimport { CmsDynamicZoneTemplate, CmsEntryValues, CmsModelDynamicZoneField } from \"~/types\";\nimport { ConverterCollection } from \"~/utils/converters/ConverterCollection\";\n\ninterface DynamicZoneValue {\n [key: string]: any;\n}\n\ninterface ProcessValue {\n templates: CmsDynamicZoneTemplate[];\n value: DynamicZoneValue | null;\n converterCollection: ConverterCollection;\n}\n\nexport class CmsModelDynamicZoneFieldConverterPlugin extends CmsModelFieldConverterPlugin {\n public override name = \"cms.field.converter.dynamicZone\";\n\n public override getFieldType(): string {\n return \"dynamicZone\";\n }\n\n private getTemplates(field: CmsModelDynamicZoneField): CmsDynamicZoneTemplate[] {\n return field.settings?.templates || [];\n }\n\n public override convertToStorage(\n params: ConvertParams<CmsModelDynamicZoneField>\n ): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const templates = this.getTemplates(field);\n\n if (templates.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (!Array.isArray(value)) {\n throw new WebinyError(\n `Dynamic zone field \"${field.fieldId}\" is expecting an array value.`,\n \"DYNAMIC_ZONE_EXPECTING_ARRAY_VALUE\",\n {\n field,\n value\n }\n );\n }\n return {\n [field.storageId]: value.map(item => {\n return this.processToStorage({\n templates,\n converterCollection,\n value: item\n });\n })\n };\n }\n if (Array.isArray(value)) {\n throw new WebinyError(\n `Dynamic zone field \"${field.fieldId}\" is expecting a non-array value.`,\n \"DYNAMIC_ZONE_EXPECTING_NON_ARRAY_VALUE\",\n {\n field,\n value\n }\n );\n }\n\n const processedValue = this.processToStorage({\n templates,\n converterCollection,\n value\n });\n return {\n [field.storageId]: processedValue\n };\n }\n\n private processToStorage(params: ProcessValue) {\n const { templates, converterCollection } = params;\n let { value } = params;\n if (value === null || value === undefined) {\n return undefined;\n }\n /**\n * There are two ways converter needs to work:\n * 1. when there is a _templateId\n * 2. when there is a key which identifies which template is the data for\n */\n\n /**\n * When we have a template key, everything is simple.\n */\n const templateId = value._templateId;\n let graphQlName: string | undefined = undefined;\n let template: CmsDynamicZoneTemplate | undefined = undefined;\n if (templateId) {\n template = templates.find(t => {\n return templateId === t.id;\n });\n }\n /**\n * When we do not have a templateId, then the template identifier is the key of the value object.\n * But at that point, values under that key become the value we are working with later on.\n */\n //\n else {\n const keys = Object.keys(value);\n if (keys.length === 0) {\n return undefined;\n } else if (keys.length > 1) {\n throw new WebinyError(\n \"There cannot be more than one dynamic zone template in a single dynamic zone field.\",\n \"DYNAMIC_ZONE_TOO_MANY_TEMPLATES\",\n {\n templates: keys\n }\n );\n }\n graphQlName = keys[0] as string;\n template = templates.find(t => t.gqlTypeName === graphQlName);\n }\n\n if (!template) {\n throw new WebinyError(\"Unknown template - converting to storage.\", \"UNKNOWN_TEMPLATE\", {\n templateId,\n graphQlName\n });\n } else if (graphQlName) {\n value = value[graphQlName];\n }\n\n return template.fields.reduce<Record<string, any>>(\n (values, field) => {\n const converter = converterCollection.getConverter(field.type);\n const converted = converter.convertToStorage({\n field,\n value: value ? value[field.fieldId] : undefined\n });\n Object.assign(values, converted);\n return values;\n },\n {\n _templateId: template.id\n }\n );\n }\n\n public override convertFromStorage(\n params: ConvertParams<CmsModelDynamicZoneField>\n ): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const templates = this.getTemplates(field);\n\n if (templates.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (!Array.isArray(value)) {\n throw new WebinyError(\n `Dynamic zone field \"${field.fieldId}\" is expecting an array value.`,\n \"DYNAMIC_ZONE_EXPECTING_ARRAY_VALUE\",\n {\n field,\n value\n }\n );\n }\n return {\n [field.fieldId]: value.map(item => {\n return this.processFromStorage({\n templates,\n converterCollection,\n value: item\n });\n })\n };\n }\n if (Array.isArray(value)) {\n throw new WebinyError(\n `Dynamic zone field \"${field.fieldId}\" is expecting a non-array value.`,\n \"DYNAMIC_ZONE_EXPECTING_NON_ARRAY_VALUE\",\n {\n field,\n value\n }\n );\n }\n\n const processedValue = this.processFromStorage({\n templates,\n converterCollection,\n value\n });\n return {\n [field.fieldId]: processedValue\n };\n }\n\n private processFromStorage(params: ProcessValue) {\n const { templates, value, converterCollection } = params;\n if (value === null || value === undefined) {\n return undefined;\n }\n\n const { _templateId } = value;\n\n const template = templates.find(t => t.id === _templateId);\n if (!template) {\n throw new WebinyError(\n \"Unknown template - converting from storage.\",\n \"UNKNOWN_TEMPLATE\",\n {\n templateId: _templateId\n }\n );\n }\n\n return template.fields.reduce<Record<string, any>>(\n (values, field) => {\n const converter = converterCollection.getConverter(field.type);\n const converted = converter.convertFromStorage({\n field,\n value: value[field.storageId]\n });\n Object.assign(values, converted);\n return values;\n },\n {\n _templateId: template.id\n }\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.CmsModelObjectFieldConverterPlugin = void 0;
|
|
9
9
|
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
10
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
13
|
|
|
12
14
|
var _CmsModelFieldConverterPlugin = require("../plugins/CmsModelFieldConverterPlugin");
|
|
13
15
|
|
|
14
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
-
|
|
16
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
|
-
|
|
18
16
|
class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.CmsModelFieldConverterPlugin {
|
|
19
17
|
constructor(...args) {
|
|
20
18
|
super(...args);
|
|
@@ -58,7 +56,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
58
56
|
[field.storageId]: value.map(itemValue => {
|
|
59
57
|
return this.processChildFieldsToStorage({
|
|
60
58
|
fields: childFields.map(child => {
|
|
61
|
-
return
|
|
59
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
62
60
|
parent: field
|
|
63
61
|
});
|
|
64
62
|
}),
|
|
@@ -71,7 +69,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
71
69
|
|
|
72
70
|
const values = this.processChildFieldsToStorage({
|
|
73
71
|
fields: childFields.map(child => {
|
|
74
|
-
return
|
|
72
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
75
73
|
parent: field
|
|
76
74
|
});
|
|
77
75
|
}),
|
|
@@ -113,7 +111,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
113
111
|
const values = value[field.fieldId].map(childValue => {
|
|
114
112
|
return converterCollection.convertToStorage({
|
|
115
113
|
fields: childFields.map(child => {
|
|
116
|
-
return
|
|
114
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
117
115
|
parent: field
|
|
118
116
|
});
|
|
119
117
|
}),
|
|
@@ -125,7 +123,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
125
123
|
return output;
|
|
126
124
|
}
|
|
127
125
|
|
|
128
|
-
return
|
|
126
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
|
|
129
127
|
[field.storageId]: values
|
|
130
128
|
});
|
|
131
129
|
}
|
|
@@ -140,7 +138,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
140
138
|
|
|
141
139
|
const values = converterCollection.convertToStorage({
|
|
142
140
|
fields: childFields.map(child => {
|
|
143
|
-
return
|
|
141
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
144
142
|
parent: field
|
|
145
143
|
});
|
|
146
144
|
}),
|
|
@@ -151,7 +149,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
151
149
|
return output;
|
|
152
150
|
}
|
|
153
151
|
|
|
154
|
-
return
|
|
152
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
|
|
155
153
|
[field.storageId]: values
|
|
156
154
|
});
|
|
157
155
|
}
|
|
@@ -160,7 +158,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
160
158
|
return output;
|
|
161
159
|
}
|
|
162
160
|
|
|
163
|
-
return
|
|
161
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
|
|
164
162
|
[field.storageId]: value[field.fieldId]
|
|
165
163
|
});
|
|
166
164
|
}, {});
|
|
@@ -191,7 +189,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
191
189
|
[field.fieldId]: value.map(itemValue => {
|
|
192
190
|
return this.processChildFieldsFromStorage({
|
|
193
191
|
fields: childFields.map(child => {
|
|
194
|
-
return
|
|
192
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
195
193
|
parent: field
|
|
196
194
|
});
|
|
197
195
|
}),
|
|
@@ -204,7 +202,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
204
202
|
|
|
205
203
|
const values = this.processChildFieldsFromStorage({
|
|
206
204
|
fields: childFields.map(child => {
|
|
207
|
-
return
|
|
205
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
208
206
|
parent: field
|
|
209
207
|
});
|
|
210
208
|
}),
|
|
@@ -248,7 +246,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
248
246
|
const values = inputValues.map(childValue => {
|
|
249
247
|
return converterCollection.convertFromStorage({
|
|
250
248
|
fields: childFields.map(child => {
|
|
251
|
-
return
|
|
249
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
252
250
|
parent: field
|
|
253
251
|
});
|
|
254
252
|
}),
|
|
@@ -260,7 +258,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
260
258
|
return output;
|
|
261
259
|
}
|
|
262
260
|
|
|
263
|
-
return
|
|
261
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
|
|
264
262
|
[field.fieldId]: values
|
|
265
263
|
});
|
|
266
264
|
}
|
|
@@ -275,7 +273,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
275
273
|
|
|
276
274
|
const values = converterCollection.convertFromStorage({
|
|
277
275
|
fields: childFields.map(child => {
|
|
278
|
-
return
|
|
276
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
279
277
|
parent: field
|
|
280
278
|
});
|
|
281
279
|
}),
|
|
@@ -286,7 +284,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
286
284
|
return output;
|
|
287
285
|
}
|
|
288
286
|
|
|
289
|
-
return
|
|
287
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
|
|
290
288
|
[field.fieldId]: values
|
|
291
289
|
});
|
|
292
290
|
}
|
|
@@ -295,7 +293,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
|
|
|
295
293
|
return output;
|
|
296
294
|
}
|
|
297
295
|
|
|
298
|
-
return
|
|
296
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
|
|
299
297
|
[field.fieldId]: value[field.storageId]
|
|
300
298
|
});
|
|
301
299
|
}, {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CmsModelObjectFieldConverterPlugin","CmsModelFieldConverterPlugin","getFieldType","getChildFields","field","settings","fields","convertToStorage","params","value","converterCollection","childFields","length","multipleValues","Array","isArray","storageId","map","itemValue","processChildFieldsToStorage","child","parent","values","undefined","reduce","output","fieldId","childValue","convertFromStorage","processChildFieldsFromStorage","inputValues"],"sources":["CmsModelObjectFieldConverterPlugin.ts"],"sourcesContent":["import {\n CmsModelFieldConverterPlugin,\n ConvertParams\n} from \"~/plugins/CmsModelFieldConverterPlugin\";\nimport { CmsEntryValues, CmsModelFieldWithParent } from \"~/types\";\nimport { ConverterCollection } from \"~/utils/converters/ConverterCollection\";\n\ninterface ProcessChildFieldsParams {\n fields: CmsModelFieldWithParent[];\n value?: Record<string, any> | null;\n converterCollection: ConverterCollection;\n}\n\ninterface GetChildFieldsParams {\n field?: CmsModelFieldWithParent | null;\n}\n\nexport class CmsModelObjectFieldConverterPlugin extends CmsModelFieldConverterPlugin {\n public override name = \"cms.field.converter.object\";\n\n public override getFieldType(): string {\n return \"object\";\n }\n\n private getChildFields({ field }: GetChildFieldsParams): CmsModelFieldWithParent[] {\n return field?.settings?.fields || [];\n }\n\n public override convertToStorage(params: ConvertParams): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const childFields = this.getChildFields({\n field\n });\n if (childFields.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (Array.isArray(value) === false) {\n return {\n [field.storageId]: []\n };\n }\n return {\n [field.storageId]: value.map((itemValue: any) => {\n return this.processChildFieldsToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value: itemValue,\n converterCollection\n });\n })\n };\n }\n\n const values = this.processChildFieldsToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value,\n converterCollection\n });\n if (values === undefined) {\n return {};\n }\n\n return {\n [field.storageId]: values\n };\n }\n\n private processChildFieldsToStorage(\n params: ProcessChildFieldsParams\n ): CmsEntryValues | undefined {\n const { fields, value, converterCollection } = params;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const childFields = this.getChildFields({\n field\n });\n\n if (childFields.length > 0) {\n if (field.multipleValues) {\n if (Array.isArray(value[field.fieldId]) === false) {\n return output;\n }\n const values = value[field.fieldId].map((childValue: any) => {\n return converterCollection.convertToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: childValue\n });\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.storageId]: values\n };\n }\n /**\n * No need to process child fields if no value is provided.\n */\n if (!value[field.fieldId]) {\n return output;\n }\n const values = converterCollection.convertToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: value[field.fieldId]\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.storageId]: values\n };\n }\n\n if (value[field.fieldId] === undefined) {\n return output;\n }\n\n return {\n ...output,\n [field.storageId]: value[field.fieldId]\n };\n }, {});\n }\n\n public override convertFromStorage(params: ConvertParams): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const childFields = this.getChildFields({\n field\n });\n if (childFields.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (Array.isArray(value) === false) {\n return {\n [field.fieldId]: []\n };\n }\n return {\n [field.fieldId]: value.map((itemValue: any) => {\n return this.processChildFieldsFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value: itemValue,\n converterCollection\n });\n })\n };\n }\n\n const values = this.processChildFieldsFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value,\n converterCollection\n });\n\n if (values === undefined) {\n return {};\n }\n\n return {\n [field.fieldId]: values\n };\n }\n\n private processChildFieldsFromStorage(\n params: ProcessChildFieldsParams\n ): CmsEntryValues | undefined {\n const { fields, value, converterCollection } = params;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const childFields = this.getChildFields({\n field\n });\n\n if (childFields.length > 0) {\n if (field.multipleValues) {\n const inputValues = value[field.storageId] as any[] | undefined;\n if (!inputValues || Array.isArray(inputValues) === false) {\n return output;\n }\n const values = inputValues.map(childValue => {\n return converterCollection.convertFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: childValue\n });\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: values\n };\n }\n /**\n * No need to process child fields if no value is provided.\n */\n if (!value[field.storageId]) {\n return output;\n }\n const values = converterCollection.convertFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: value[field.storageId]\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: values\n };\n }\n\n if (value[field.storageId] === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: value[field.storageId]\n };\n }, {});\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["CmsModelObjectFieldConverterPlugin","CmsModelFieldConverterPlugin","getFieldType","getChildFields","field","settings","fields","convertToStorage","params","value","converterCollection","childFields","length","multipleValues","Array","isArray","storageId","map","itemValue","processChildFieldsToStorage","child","parent","values","undefined","reduce","output","fieldId","childValue","convertFromStorage","processChildFieldsFromStorage","inputValues"],"sources":["CmsModelObjectFieldConverterPlugin.ts"],"sourcesContent":["import {\n CmsModelFieldConverterPlugin,\n ConvertParams\n} from \"~/plugins/CmsModelFieldConverterPlugin\";\nimport { CmsEntryValues, CmsModelFieldWithParent } from \"~/types\";\nimport { ConverterCollection } from \"~/utils/converters/ConverterCollection\";\n\ninterface ProcessChildFieldsParams {\n fields: CmsModelFieldWithParent[];\n value?: Record<string, any> | null;\n converterCollection: ConverterCollection;\n}\n\ninterface GetChildFieldsParams {\n field?: CmsModelFieldWithParent | null;\n}\n\nexport class CmsModelObjectFieldConverterPlugin extends CmsModelFieldConverterPlugin {\n public override name = \"cms.field.converter.object\";\n\n public override getFieldType(): string {\n return \"object\";\n }\n\n private getChildFields({ field }: GetChildFieldsParams): CmsModelFieldWithParent[] {\n return field?.settings?.fields || [];\n }\n\n public override convertToStorage(params: ConvertParams): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const childFields = this.getChildFields({\n field\n });\n if (childFields.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (Array.isArray(value) === false) {\n return {\n [field.storageId]: []\n };\n }\n return {\n [field.storageId]: value.map((itemValue: any) => {\n return this.processChildFieldsToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value: itemValue,\n converterCollection\n });\n })\n };\n }\n\n const values = this.processChildFieldsToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value,\n converterCollection\n });\n if (values === undefined) {\n return {};\n }\n\n return {\n [field.storageId]: values\n };\n }\n\n private processChildFieldsToStorage(\n params: ProcessChildFieldsParams\n ): CmsEntryValues | undefined {\n const { fields, value, converterCollection } = params;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const childFields = this.getChildFields({\n field\n });\n\n if (childFields.length > 0) {\n if (field.multipleValues) {\n if (Array.isArray(value[field.fieldId]) === false) {\n return output;\n }\n const values = value[field.fieldId].map((childValue: any) => {\n return converterCollection.convertToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: childValue\n });\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.storageId]: values\n };\n }\n /**\n * No need to process child fields if no value is provided.\n */\n if (!value[field.fieldId]) {\n return output;\n }\n const values = converterCollection.convertToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: value[field.fieldId]\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.storageId]: values\n };\n }\n\n if (value[field.fieldId] === undefined) {\n return output;\n }\n\n return {\n ...output,\n [field.storageId]: value[field.fieldId]\n };\n }, {});\n }\n\n public override convertFromStorage(params: ConvertParams): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const childFields = this.getChildFields({\n field\n });\n if (childFields.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (Array.isArray(value) === false) {\n return {\n [field.fieldId]: []\n };\n }\n return {\n [field.fieldId]: value.map((itemValue: any) => {\n return this.processChildFieldsFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value: itemValue,\n converterCollection\n });\n })\n };\n }\n\n const values = this.processChildFieldsFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value,\n converterCollection\n });\n\n if (values === undefined) {\n return {};\n }\n\n return {\n [field.fieldId]: values\n };\n }\n\n private processChildFieldsFromStorage(\n params: ProcessChildFieldsParams\n ): CmsEntryValues | undefined {\n const { fields, value, converterCollection } = params;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const childFields = this.getChildFields({\n field\n });\n\n if (childFields.length > 0) {\n if (field.multipleValues) {\n const inputValues = value[field.storageId] as any[] | undefined;\n if (!inputValues || Array.isArray(inputValues) === false) {\n return output;\n }\n const values = inputValues.map(childValue => {\n return converterCollection.convertFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: childValue\n });\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: values\n };\n }\n /**\n * No need to process child fields if no value is provided.\n */\n if (!value[field.storageId]) {\n return output;\n }\n const values = converterCollection.convertFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: value[field.storageId]\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: values\n };\n }\n\n if (value[field.storageId] === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: value[field.storageId]\n };\n }, {});\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAiBO,MAAMA,kCAAN,SAAiDC,0DAAjD,CAA8E;EAAA;IAAA;IAAA,4CAC1D,4BAD0D;EAAA;;EAGjEC,YAAY,GAAW;IACnC,OAAO,QAAP;EACH;;EAEOC,cAAc,CAAC;IAAEC;EAAF,CAAD,EAA6D;IAAA;;IAC/E,OAAO,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,+BAAAA,KAAK,CAAEC,QAAP,oEAAiBC,MAAjB,KAA2B,EAAlC;EACH;;EAEeC,gBAAgB,CAACC,MAAD,EAAwC;IACpE,MAAM;MAAEJ,KAAF;MAASK,KAAT;MAAgBC;IAAhB,IAAwCF,MAA9C;IAEA,MAAMG,WAAW,GAAG,KAAKR,cAAL,CAAoB;MACpCC;IADoC,CAApB,CAApB;;IAGA,IAAIO,WAAW,CAACC,MAAZ,KAAuB,CAA3B,EAA8B;MAC1B,OAAO,EAAP;IACH;;IAED,IAAIR,KAAK,CAACS,cAAV,EAA0B;MACtB,IAAIC,KAAK,CAACC,OAAN,CAAcN,KAAd,MAAyB,KAA7B,EAAoC;QAChC,OAAO;UACH,CAACL,KAAK,CAACY,SAAP,GAAmB;QADhB,CAAP;MAGH;;MACD,OAAO;QACH,CAACZ,KAAK,CAACY,SAAP,GAAmBP,KAAK,CAACQ,GAAN,CAAWC,SAAD,IAAoB;UAC7C,OAAO,KAAKC,2BAAL,CAAiC;YACpCb,MAAM,EAAEK,WAAW,CAACM,GAAZ,CAAgBG,KAAK,IAAI;cAC7B,mEACOA,KADP;gBAEIC,MAAM,EAAEjB;cAFZ;YAIH,CALO,CAD4B;YAOpCK,KAAK,EAAES,SAP6B;YAQpCR;UARoC,CAAjC,CAAP;QAUH,CAXkB;MADhB,CAAP;IAcH;;IAED,MAAMY,MAAM,GAAG,KAAKH,2BAAL,CAAiC;MAC5Cb,MAAM,EAAEK,WAAW,CAACM,GAAZ,CAAgBG,KAAK,IAAI;QAC7B,mEACOA,KADP;UAEIC,MAAM,EAAEjB;QAFZ;MAIH,CALO,CADoC;MAO5CK,KAP4C;MAQ5CC;IAR4C,CAAjC,CAAf;;IAUA,IAAIY,MAAM,KAAKC,SAAf,EAA0B;MACtB,OAAO,EAAP;IACH;;IAED,OAAO;MACH,CAACnB,KAAK,CAACY,SAAP,GAAmBM;IADhB,CAAP;EAGH;;EAEOH,2BAA2B,CAC/BX,MAD+B,EAEL;IAC1B,MAAM;MAAEF,MAAF;MAAUG,KAAV;MAAiBC;IAAjB,IAAyCF,MAA/C;;IAEA,IAAIC,KAAK,KAAKc,SAAV,IAAuBd,KAAK,KAAK,IAArC,EAA2C;MACvC,OAAOc,SAAP;IACH;;IAED,OAAOjB,MAAM,CAACkB,MAAP,CAA8B,CAACC,MAAD,EAASrB,KAAT,KAAmB;MACpD,MAAMO,WAAW,GAAG,KAAKR,cAAL,CAAoB;QACpCC;MADoC,CAApB,CAApB;;MAIA,IAAIO,WAAW,CAACC,MAAZ,GAAqB,CAAzB,EAA4B;QACxB,IAAIR,KAAK,CAACS,cAAV,EAA0B;UACtB,IAAIC,KAAK,CAACC,OAAN,CAAcN,KAAK,CAACL,KAAK,CAACsB,OAAP,CAAnB,MAAwC,KAA5C,EAAmD;YAC/C,OAAOD,MAAP;UACH;;UACD,MAAMH,MAAM,GAAGb,KAAK,CAACL,KAAK,CAACsB,OAAP,CAAL,CAAqBT,GAArB,CAA0BU,UAAD,IAAqB;YACzD,OAAOjB,mBAAmB,CAACH,gBAApB,CAAqC;cACxCD,MAAM,EAAEK,WAAW,CAACM,GAAZ,CAAgBG,KAAK,IAAI;gBAC7B,mEACOA,KADP;kBAEIC,MAAM,EAAEjB;gBAFZ;cAIH,CALO,CADgC;cAOxCkB,MAAM,EAAEK;YAPgC,CAArC,CAAP;UASH,CAVc,CAAf;;UAWA,IAAIL,MAAM,KAAKC,SAAf,EAA0B;YACtB,OAAOE,MAAP;UACH;;UACD,mEACOA,MADP;YAEI,CAACrB,KAAK,CAACY,SAAP,GAAmBM;UAFvB;QAIH;QACD;AAChB;AACA;;;QACgB,IAAI,CAACb,KAAK,CAACL,KAAK,CAACsB,OAAP,CAAV,EAA2B;UACvB,OAAOD,MAAP;QACH;;QACD,MAAMH,MAAM,GAAGZ,mBAAmB,CAACH,gBAApB,CAAqC;UAChDD,MAAM,EAAEK,WAAW,CAACM,GAAZ,CAAgBG,KAAK,IAAI;YAC7B,mEACOA,KADP;cAEIC,MAAM,EAAEjB;YAFZ;UAIH,CALO,CADwC;UAOhDkB,MAAM,EAAEb,KAAK,CAACL,KAAK,CAACsB,OAAP;QAPmC,CAArC,CAAf;;QASA,IAAIJ,MAAM,KAAKC,SAAf,EAA0B;UACtB,OAAOE,MAAP;QACH;;QACD,mEACOA,MADP;UAEI,CAACrB,KAAK,CAACY,SAAP,GAAmBM;QAFvB;MAIH;;MAED,IAAIb,KAAK,CAACL,KAAK,CAACsB,OAAP,CAAL,KAAyBH,SAA7B,EAAwC;QACpC,OAAOE,MAAP;MACH;;MAED,mEACOA,MADP;QAEI,CAACrB,KAAK,CAACY,SAAP,GAAmBP,KAAK,CAACL,KAAK,CAACsB,OAAP;MAF5B;IAIH,CA7DM,EA6DJ,EA7DI,CAAP;EA8DH;;EAEeE,kBAAkB,CAACpB,MAAD,EAAwC;IACtE,MAAM;MAAEJ,KAAF;MAASK,KAAT;MAAgBC;IAAhB,IAAwCF,MAA9C;IAEA,MAAMG,WAAW,GAAG,KAAKR,cAAL,CAAoB;MACpCC;IADoC,CAApB,CAApB;;IAGA,IAAIO,WAAW,CAACC,MAAZ,KAAuB,CAA3B,EAA8B;MAC1B,OAAO,EAAP;IACH;;IAED,IAAIR,KAAK,CAACS,cAAV,EAA0B;MACtB,IAAIC,KAAK,CAACC,OAAN,CAAcN,KAAd,MAAyB,KAA7B,EAAoC;QAChC,OAAO;UACH,CAACL,KAAK,CAACsB,OAAP,GAAiB;QADd,CAAP;MAGH;;MACD,OAAO;QACH,CAACtB,KAAK,CAACsB,OAAP,GAAiBjB,KAAK,CAACQ,GAAN,CAAWC,SAAD,IAAoB;UAC3C,OAAO,KAAKW,6BAAL,CAAmC;YACtCvB,MAAM,EAAEK,WAAW,CAACM,GAAZ,CAAgBG,KAAK,IAAI;cAC7B,mEACOA,KADP;gBAEIC,MAAM,EAAEjB;cAFZ;YAIH,CALO,CAD8B;YAOtCK,KAAK,EAAES,SAP+B;YAQtCR;UARsC,CAAnC,CAAP;QAUH,CAXgB;MADd,CAAP;IAcH;;IAED,MAAMY,MAAM,GAAG,KAAKO,6BAAL,CAAmC;MAC9CvB,MAAM,EAAEK,WAAW,CAACM,GAAZ,CAAgBG,KAAK,IAAI;QAC7B,mEACOA,KADP;UAEIC,MAAM,EAAEjB;QAFZ;MAIH,CALO,CADsC;MAO9CK,KAP8C;MAQ9CC;IAR8C,CAAnC,CAAf;;IAWA,IAAIY,MAAM,KAAKC,SAAf,EAA0B;MACtB,OAAO,EAAP;IACH;;IAED,OAAO;MACH,CAACnB,KAAK,CAACsB,OAAP,GAAiBJ;IADd,CAAP;EAGH;;EAEOO,6BAA6B,CACjCrB,MADiC,EAEP;IAC1B,MAAM;MAAEF,MAAF;MAAUG,KAAV;MAAiBC;IAAjB,IAAyCF,MAA/C;;IAEA,IAAIC,KAAK,KAAKc,SAAV,IAAuBd,KAAK,KAAK,IAArC,EAA2C;MACvC,OAAOc,SAAP;IACH;;IAED,OAAOjB,MAAM,CAACkB,MAAP,CAA8B,CAACC,MAAD,EAASrB,KAAT,KAAmB;MACpD,MAAMO,WAAW,GAAG,KAAKR,cAAL,CAAoB;QACpCC;MADoC,CAApB,CAApB;;MAIA,IAAIO,WAAW,CAACC,MAAZ,GAAqB,CAAzB,EAA4B;QACxB,IAAIR,KAAK,CAACS,cAAV,EAA0B;UACtB,MAAMiB,WAAW,GAAGrB,KAAK,CAACL,KAAK,CAACY,SAAP,CAAzB;;UACA,IAAI,CAACc,WAAD,IAAgBhB,KAAK,CAACC,OAAN,CAAce,WAAd,MAA+B,KAAnD,EAA0D;YACtD,OAAOL,MAAP;UACH;;UACD,MAAMH,MAAM,GAAGQ,WAAW,CAACb,GAAZ,CAAgBU,UAAU,IAAI;YACzC,OAAOjB,mBAAmB,CAACkB,kBAApB,CAAuC;cAC1CtB,MAAM,EAAEK,WAAW,CAACM,GAAZ,CAAgBG,KAAK,IAAI;gBAC7B,mEACOA,KADP;kBAEIC,MAAM,EAAEjB;gBAFZ;cAIH,CALO,CADkC;cAO1CkB,MAAM,EAAEK;YAPkC,CAAvC,CAAP;UASH,CAVc,CAAf;;UAWA,IAAIL,MAAM,KAAKC,SAAf,EAA0B;YACtB,OAAOE,MAAP;UACH;;UACD,mEACOA,MADP;YAEI,CAACrB,KAAK,CAACsB,OAAP,GAAiBJ;UAFrB;QAIH;QACD;AAChB;AACA;;;QACgB,IAAI,CAACb,KAAK,CAACL,KAAK,CAACY,SAAP,CAAV,EAA6B;UACzB,OAAOS,MAAP;QACH;;QACD,MAAMH,MAAM,GAAGZ,mBAAmB,CAACkB,kBAApB,CAAuC;UAClDtB,MAAM,EAAEK,WAAW,CAACM,GAAZ,CAAgBG,KAAK,IAAI;YAC7B,mEACOA,KADP;cAEIC,MAAM,EAAEjB;YAFZ;UAIH,CALO,CAD0C;UAOlDkB,MAAM,EAAEb,KAAK,CAACL,KAAK,CAACY,SAAP;QAPqC,CAAvC,CAAf;;QASA,IAAIM,MAAM,KAAKC,SAAf,EAA0B;UACtB,OAAOE,MAAP;QACH;;QACD,mEACOA,MADP;UAEI,CAACrB,KAAK,CAACsB,OAAP,GAAiBJ;QAFrB;MAIH;;MAED,IAAIb,KAAK,CAACL,KAAK,CAACY,SAAP,CAAL,KAA2BO,SAA/B,EAA0C;QACtC,OAAOE,MAAP;MACH;;MACD,mEACOA,MADP;QAEI,CAACrB,KAAK,CAACsB,OAAP,GAAiBjB,KAAK,CAACL,KAAK,CAACY,SAAP;MAF1B;IAIH,CA7DM,EA6DJ,EA7DI,CAAP;EA8DH;;AAlQgF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { CmsModelObjectFieldConverterPlugin } from "./CmsModelObjectFieldConverterPlugin";
|
|
2
2
|
import { CmsModelDefaultFieldConverterPlugin } from "./CmsModelDefaultFieldConverterPlugin";
|
|
3
|
-
|
|
3
|
+
import { CmsModelDynamicZoneFieldConverterPlugin } from "./CmsModelDynamicZoneFieldConverterPlugin";
|
|
4
|
+
export declare const createFieldConverters: () => (CmsModelObjectFieldConverterPlugin | CmsModelDefaultFieldConverterPlugin | CmsModelDynamicZoneFieldConverterPlugin)[];
|
package/fieldConverters/index.js
CHANGED
|
@@ -9,8 +9,10 @@ var _CmsModelObjectFieldConverterPlugin = require("./CmsModelObjectFieldConverte
|
|
|
9
9
|
|
|
10
10
|
var _CmsModelDefaultFieldConverterPlugin = require("./CmsModelDefaultFieldConverterPlugin");
|
|
11
11
|
|
|
12
|
+
var _CmsModelDynamicZoneFieldConverterPlugin = require("./CmsModelDynamicZoneFieldConverterPlugin");
|
|
13
|
+
|
|
12
14
|
const createFieldConverters = () => {
|
|
13
|
-
return [new _CmsModelObjectFieldConverterPlugin.CmsModelObjectFieldConverterPlugin(), new _CmsModelDefaultFieldConverterPlugin.CmsModelDefaultFieldConverterPlugin()];
|
|
15
|
+
return [new _CmsModelObjectFieldConverterPlugin.CmsModelObjectFieldConverterPlugin(), new _CmsModelDynamicZoneFieldConverterPlugin.CmsModelDynamicZoneFieldConverterPlugin(), new _CmsModelDefaultFieldConverterPlugin.CmsModelDefaultFieldConverterPlugin()];
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
exports.createFieldConverters = createFieldConverters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createFieldConverters","CmsModelObjectFieldConverterPlugin","CmsModelDefaultFieldConverterPlugin"],"sources":["index.ts"],"sourcesContent":["import { CmsModelObjectFieldConverterPlugin } from \"~/fieldConverters/CmsModelObjectFieldConverterPlugin\";\nimport { CmsModelDefaultFieldConverterPlugin } from \"~/fieldConverters/CmsModelDefaultFieldConverterPlugin\";\n\nexport const createFieldConverters = () => {\n return [new CmsModelObjectFieldConverterPlugin()
|
|
1
|
+
{"version":3,"names":["createFieldConverters","CmsModelObjectFieldConverterPlugin","CmsModelDynamicZoneFieldConverterPlugin","CmsModelDefaultFieldConverterPlugin"],"sources":["index.ts"],"sourcesContent":["import { CmsModelObjectFieldConverterPlugin } from \"~/fieldConverters/CmsModelObjectFieldConverterPlugin\";\nimport { CmsModelDefaultFieldConverterPlugin } from \"~/fieldConverters/CmsModelDefaultFieldConverterPlugin\";\nimport { CmsModelDynamicZoneFieldConverterPlugin } from \"~/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin\";\n\nexport const createFieldConverters = () => {\n return [\n new CmsModelObjectFieldConverterPlugin(),\n new CmsModelDynamicZoneFieldConverterPlugin(),\n new CmsModelDefaultFieldConverterPlugin()\n ];\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEO,MAAMA,qBAAqB,GAAG,MAAM;EACvC,OAAO,CACH,IAAIC,sEAAJ,EADG,EAEH,IAAIC,gFAAJ,EAFG,EAGH,IAAIC,wEAAJ,EAHG,CAAP;AAKH,CANM"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.graphQLHandlerFactory = void 0;
|
|
9
9
|
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
10
12
|
var _schema = require("@graphql-tools/schema");
|
|
11
13
|
|
|
12
14
|
var _apiSecurity = require("@webiny/api-security");
|
|
@@ -88,15 +90,18 @@ const getSchema = async params => {
|
|
|
88
90
|
});
|
|
89
91
|
return schema;
|
|
90
92
|
} catch (err) {
|
|
93
|
+
if (!Array.isArray(err.locations)) {
|
|
94
|
+
throw new _error.default((0, _objectSpread2.default)({}, err));
|
|
95
|
+
}
|
|
96
|
+
|
|
91
97
|
const [location] = err.locations;
|
|
92
|
-
const invalidSegment = (0, _codeFrame.default)(err.source.body, location.line, location.column, {
|
|
93
|
-
frameSize: 15
|
|
94
|
-
});
|
|
95
98
|
throw new _error.default({
|
|
96
99
|
code: "INVALID_GRAPHQL_SCHEMA",
|
|
97
100
|
message: err.message,
|
|
98
101
|
data: {
|
|
99
|
-
invalidSegment
|
|
102
|
+
invalidSegment: (0, _codeFrame.default)(err.source.body, location.line, location.column, {
|
|
103
|
+
frameSize: 15
|
|
104
|
+
})
|
|
100
105
|
}
|
|
101
106
|
});
|
|
102
107
|
}
|
|
@@ -132,6 +137,22 @@ const checkEndpointAccess = async context => {
|
|
|
132
137
|
}
|
|
133
138
|
};
|
|
134
139
|
|
|
140
|
+
const formatErrorPayload = error => {
|
|
141
|
+
if (error instanceof _error.default) {
|
|
142
|
+
return {
|
|
143
|
+
message: error.message,
|
|
144
|
+
code: error.code,
|
|
145
|
+
data: error.data
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return {
|
|
150
|
+
name: error.name,
|
|
151
|
+
message: error.message,
|
|
152
|
+
stack: error.stack
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
|
|
135
156
|
const cmsRoutes = new _handler.RoutePlugin(({
|
|
136
157
|
onPost,
|
|
137
158
|
onOptions,
|
|
@@ -162,18 +183,7 @@ const cmsRoutes = new _handler.RoutePlugin(({
|
|
|
162
183
|
const result = await (0, _processRequestBody.default)(body, schema, context);
|
|
163
184
|
return reply.code(200).send(result);
|
|
164
185
|
} catch (ex) {
|
|
165
|
-
|
|
166
|
-
return reply.code(500).send({
|
|
167
|
-
data: null,
|
|
168
|
-
error: {
|
|
169
|
-
message: ex.message,
|
|
170
|
-
code: ex.code,
|
|
171
|
-
data: ex.data
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return reply.code(500).send();
|
|
186
|
+
return reply.code(500).send(formatErrorPayload(ex));
|
|
177
187
|
}
|
|
178
188
|
});
|
|
179
189
|
onOptions("/cms/:type(^manage|preview|read$)/:locale", async (_, reply) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["schemaList","Map","generateCacheKey","args","context","locale","type","lastModelChange","cms","getModelLastChange","code","toISOString","join","generateSchema","plugins","register","buildSchemaPlugins","typeDefs","resolvers","schemaPlugins","byType","GraphQLSchemaPlugin","pl","push","schema","makeExecutableSchema","getSchema","params","tenantId","tenancy","getCurrentTenant","id","cacheKey","has","set","key","err","location","locations","invalidSegment","codeFrame","source","body","line","column","frameSize","WebinyError","message","data","cache","get","checkEndpointAccess","permission","security","getPermission","NotAuthorizedError","reason","cmsRoutes","RoutePlugin","onPost","onOptions","request","reply","ex","send","error","stack","getLocale","result","processRequestBody","_","hijack","graphQLHandlerFactory","debug","debugPlugins"],"sources":["graphQLHandlerFactory.ts"],"sourcesContent":["import { GraphQLSchema } from \"graphql\";\nimport { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { ApiEndpoint, CmsContext } from \"~/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport processRequestBody from \"@webiny/handler-graphql/processRequestBody\";\nimport { buildSchemaPlugins } from \"./buildSchemaPlugins\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { GraphQLRequestBody } from \"@webiny/handler-graphql/types\";\nimport { RoutePlugin } from \"@webiny/handler\";\nimport WebinyError from \"@webiny/error\";\n// @ts-ignore `code-frame` has no types\nimport codeFrame from \"code-frame\";\n\ninterface SchemaCache {\n key: string;\n schema: GraphQLSchema;\n}\ninterface GetSchemaParams {\n context: CmsContext;\n type: ApiEndpoint;\n locale: I18NLocale;\n}\n\nconst schemaList = new Map<string, SchemaCache>();\n\nconst generateCacheKey = async (args: GetSchemaParams): Promise<string> => {\n const { context, locale, type } = args;\n const lastModelChange = await context.cms.getModelLastChange();\n return [locale.code, type, lastModelChange.toISOString()].join(\"#\");\n};\n\nconst generateSchema = async (args: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context } = args;\n\n context.plugins.register(await buildSchemaPlugins(context));\n /**\n * Really hard to type this to satisfy the makeExecutableSchema\n */\n // TODO @ts-refactor\n const typeDefs: any = [];\n const resolvers: any = [];\n\n // Get schema definitions from plugins\n const schemaPlugins = context.plugins.byType<GraphQLSchemaPlugin>(GraphQLSchemaPlugin.type);\n for (const pl of schemaPlugins) {\n typeDefs.push(pl.schema.typeDefs);\n resolvers.push(pl.schema.resolvers);\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers\n });\n};\n\n/**\n * Gets an existing schema or rewrites existing one or creates a completely new one\n * depending on the schemaId created from type and locale parameters\n */\nconst getSchema = async (params: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context, type, locale } = params;\n const tenantId = context.tenancy.getCurrentTenant().id;\n const id = `${tenantId}#${type}#${locale.code}`;\n\n const cacheKey = await generateCacheKey(params);\n if (!schemaList.has(id)) {\n try {\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n } catch (err) {\n const [location] = err.locations;\n const invalidSegment = codeFrame(err.source.body, location.line, location.column, {\n frameSize: 15\n });\n\n throw new WebinyError({\n code: \"INVALID_GRAPHQL_SCHEMA\",\n message: err.message,\n data: {\n invalidSegment\n }\n });\n }\n }\n /**\n * Safe to cast because check was done few lines up.\n */\n const cache = schemaList.get(id) as SchemaCache;\n if (cache.key === cacheKey) {\n return cache.schema;\n }\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n};\n\nconst checkEndpointAccess = async (context: CmsContext): Promise<void> => {\n const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${context.cms.type}\" endpoint.`\n }\n });\n }\n};\n\nexport interface GraphQLHandlerFactoryParams {\n debug?: boolean;\n}\n\nconst cmsRoutes = new RoutePlugin<CmsContext>(({ onPost, onOptions, context }) => {\n onPost(\"/cms/:type(^manage|preview|read$)/:locale\", async (request, reply) => {\n try {\n await checkEndpointAccess(context);\n } catch (ex) {\n return reply.code(401).send({\n data: null,\n error: {\n message: ex.message || \"Not authorized!\",\n code: ex.code || \"SECURITY_NOT_AUTHORIZED\",\n data: ex.data || null,\n stack: null\n }\n });\n }\n\n try {\n const schema = await getSchema({\n context,\n locale: context.cms.getLocale(),\n type: context.cms.type as ApiEndpoint\n });\n const body: GraphQLRequestBody | GraphQLRequestBody[] = request.body as any;\n const result = await processRequestBody(body, schema, context);\n return reply.code(200).send(result);\n } catch (ex) {\n if (ex instanceof WebinyError) {\n return reply.code(500).send({\n data: null,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data\n }\n });\n }\n\n return reply.code(500).send();\n }\n });\n\n onOptions(\"/cms/:type(^manage|preview|read$)/:locale\", async (_, reply) => {\n return reply.hijack().send({});\n });\n});\n\nexport const graphQLHandlerFactory = ({ debug }: GraphQLHandlerFactoryParams): PluginCollection => {\n return [\n ...(debug ? debugPlugins() : []),\n cmsRoutes,\n {\n type: \"wcp-telemetry-tracker\"\n }\n ];\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["schemaList","Map","generateCacheKey","args","context","locale","type","lastModelChange","cms","getModelLastChange","code","toISOString","join","generateSchema","plugins","register","buildSchemaPlugins","typeDefs","resolvers","schemaPlugins","byType","GraphQLSchemaPlugin","pl","push","schema","makeExecutableSchema","getSchema","params","tenantId","tenancy","getCurrentTenant","id","cacheKey","has","set","key","err","Array","isArray","locations","WebinyError","location","message","data","invalidSegment","codeFrame","source","body","line","column","frameSize","cache","get","checkEndpointAccess","permission","security","getPermission","NotAuthorizedError","reason","formatErrorPayload","error","name","stack","cmsRoutes","RoutePlugin","onPost","onOptions","request","reply","ex","send","getLocale","result","processRequestBody","_","hijack","graphQLHandlerFactory","debug","debugPlugins"],"sources":["graphQLHandlerFactory.ts"],"sourcesContent":["import { GraphQLSchema } from \"graphql\";\nimport { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { ApiEndpoint, CmsContext } from \"~/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport processRequestBody from \"@webiny/handler-graphql/processRequestBody\";\nimport { buildSchemaPlugins } from \"./buildSchemaPlugins\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { GraphQLRequestBody } from \"@webiny/handler-graphql/types\";\nimport { RoutePlugin } from \"@webiny/handler\";\nimport WebinyError from \"@webiny/error\";\n// @ts-ignore `code-frame` has no types\nimport codeFrame from \"code-frame\";\n\ninterface SchemaCache {\n key: string;\n schema: GraphQLSchema;\n}\ninterface GetSchemaParams {\n context: CmsContext;\n type: ApiEndpoint;\n locale: I18NLocale;\n}\n\nconst schemaList = new Map<string, SchemaCache>();\n\nconst generateCacheKey = async (args: GetSchemaParams): Promise<string> => {\n const { context, locale, type } = args;\n const lastModelChange = await context.cms.getModelLastChange();\n return [locale.code, type, lastModelChange.toISOString()].join(\"#\");\n};\n\nconst generateSchema = async (args: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context } = args;\n\n context.plugins.register(await buildSchemaPlugins(context));\n /**\n * Really hard to type this to satisfy the makeExecutableSchema\n */\n // TODO @ts-refactor\n const typeDefs: any = [];\n const resolvers: any = [];\n\n // Get schema definitions from plugins\n const schemaPlugins = context.plugins.byType<GraphQLSchemaPlugin>(GraphQLSchemaPlugin.type);\n for (const pl of schemaPlugins) {\n typeDefs.push(pl.schema.typeDefs);\n resolvers.push(pl.schema.resolvers);\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers\n });\n};\n\n/**\n * Gets an existing schema or rewrites existing one or creates a completely new one\n * depending on the schemaId created from type and locale parameters\n */\nconst getSchema = async (params: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context, type, locale } = params;\n const tenantId = context.tenancy.getCurrentTenant().id;\n const id = `${tenantId}#${type}#${locale.code}`;\n\n const cacheKey = await generateCacheKey(params);\n if (!schemaList.has(id)) {\n try {\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n } catch (err) {\n if (!Array.isArray(err.locations)) {\n throw new WebinyError({\n ...err\n });\n }\n const [location] = err.locations;\n\n throw new WebinyError({\n code: \"INVALID_GRAPHQL_SCHEMA\",\n message: err.message,\n data: {\n invalidSegment: codeFrame(err.source.body, location.line, location.column, {\n frameSize: 15\n })\n }\n });\n }\n }\n /**\n * Safe to cast because check was done few lines up.\n */\n const cache = schemaList.get(id) as SchemaCache;\n if (cache.key === cacheKey) {\n return cache.schema;\n }\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n};\n\nconst checkEndpointAccess = async (context: CmsContext): Promise<void> => {\n const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${context.cms.type}\" endpoint.`\n }\n });\n }\n};\n\nconst formatErrorPayload = (error: Error) => {\n if (error instanceof WebinyError) {\n return {\n message: error.message,\n code: error.code,\n data: error.data\n };\n }\n\n return {\n name: error.name,\n message: error.message,\n stack: error.stack\n };\n};\n\nexport interface GraphQLHandlerFactoryParams {\n debug?: boolean;\n}\n\nconst cmsRoutes = new RoutePlugin<CmsContext>(({ onPost, onOptions, context }) => {\n onPost(\"/cms/:type(^manage|preview|read$)/:locale\", async (request, reply) => {\n try {\n await checkEndpointAccess(context);\n } catch (ex) {\n return reply.code(401).send({\n data: null,\n error: {\n message: ex.message || \"Not authorized!\",\n code: ex.code || \"SECURITY_NOT_AUTHORIZED\",\n data: ex.data || null,\n stack: null\n }\n });\n }\n\n try {\n const schema = await getSchema({\n context,\n locale: context.cms.getLocale(),\n type: context.cms.type as ApiEndpoint\n });\n const body: GraphQLRequestBody | GraphQLRequestBody[] = request.body as any;\n const result = await processRequestBody(body, schema, context);\n return reply.code(200).send(result);\n } catch (ex) {\n return reply.code(500).send(formatErrorPayload(ex));\n }\n });\n\n onOptions(\"/cms/:type(^manage|preview|read$)/:locale\", async (_, reply) => {\n return reply.hijack().send({});\n });\n});\n\nexport const graphQLHandlerFactory = ({ debug }: GraphQLHandlerFactoryParams): PluginCollection => {\n return [\n ...(debug ? debugPlugins() : []),\n cmsRoutes,\n {\n type: \"wcp-telemetry-tracker\"\n }\n ];\n};\n"],"mappings":"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"}
|