@webiny/api-headless-cms 5.32.0 → 5.33.0-beta.0

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.
Files changed (108) hide show
  1. package/crud/contentEntry/entryDataValidation.js +1 -0
  2. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  3. package/crud/contentEntry/markLockedFields.js +2 -2
  4. package/crud/contentEntry/markLockedFields.js.map +1 -1
  5. package/crud/contentEntry.crud.js +170 -60
  6. package/crud/contentEntry.crud.js.map +1 -1
  7. package/crud/contentModel/beforeCreate.js +11 -4
  8. package/crud/contentModel/beforeCreate.js.map +1 -1
  9. package/crud/contentModel/beforeDelete.js +6 -1
  10. package/crud/contentModel/beforeDelete.js.map +1 -1
  11. package/crud/contentModel/beforeUpdate.js +18 -4
  12. package/crud/contentModel/beforeUpdate.js.map +1 -1
  13. package/crud/contentModel/createFieldStorageId.d.ts +2 -0
  14. package/crud/contentModel/createFieldStorageId.js +16 -0
  15. package/crud/contentModel/createFieldStorageId.js.map +1 -0
  16. package/crud/contentModel/fieldIdValidation.d.ts +1 -0
  17. package/crud/contentModel/fieldIdValidation.js +25 -0
  18. package/crud/contentModel/fieldIdValidation.js.map +1 -0
  19. package/crud/contentModel/models.js +9 -8
  20. package/crud/contentModel/models.js.map +1 -1
  21. package/crud/contentModel/systemFields.d.ts +1 -0
  22. package/crud/contentModel/systemFields.js +8 -0
  23. package/crud/contentModel/systemFields.js.map +1 -0
  24. package/crud/contentModel/validateLayout.d.ts +1 -1
  25. package/crud/contentModel/validateLayout.js +1 -2
  26. package/crud/contentModel/validateLayout.js.map +1 -1
  27. package/crud/contentModel/validateModel.d.ts +9 -0
  28. package/crud/contentModel/validateModel.js +32 -0
  29. package/crud/contentModel/validateModel.js.map +1 -0
  30. package/crud/contentModel/validateModelFields.d.ts +3 -2
  31. package/crud/contentModel/validateModelFields.js +200 -38
  32. package/crud/contentModel/validateModelFields.js.map +1 -1
  33. package/crud/contentModel.crud.js +59 -5
  34. package/crud/contentModel.crud.js.map +1 -1
  35. package/crud/contentModelGroup/beforeCreate.js +3 -3
  36. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  37. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.d.ts +7 -0
  38. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +66 -0
  39. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -0
  40. package/fieldConverters/CmsModelObjectFieldConverterPlugin.d.ts +11 -0
  41. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +306 -0
  42. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -0
  43. package/fieldConverters/index.d.ts +3 -0
  44. package/fieldConverters/index.js +16 -0
  45. package/fieldConverters/index.js.map +1 -0
  46. package/graphql/index.d.ts +1 -1
  47. package/graphql/schema/contentModels.js +6 -0
  48. package/graphql/schema/contentModels.js.map +1 -1
  49. package/graphql/schema/createFieldResolvers.js +13 -1
  50. package/graphql/schema/createFieldResolvers.js.map +1 -1
  51. package/graphql/schema/createReadSDL.js +3 -2
  52. package/graphql/schema/createReadSDL.js.map +1 -1
  53. package/graphql/schema/schemaPlugins.js +7 -1
  54. package/graphql/schema/schemaPlugins.js.map +1 -1
  55. package/graphqlFields/datetime.js +6 -1
  56. package/graphqlFields/datetime.js.map +1 -1
  57. package/graphqlFields/helpers.js +1 -1
  58. package/graphqlFields/helpers.js.map +1 -1
  59. package/graphqlFields/object.js +1 -1
  60. package/graphqlFields/object.js.map +1 -1
  61. package/index.d.ts +2 -2
  62. package/index.js +3 -1
  63. package/index.js.map +1 -1
  64. package/package.json +24 -24
  65. package/plugins/CmsGroupPlugin.d.ts +1 -1
  66. package/plugins/CmsGroupPlugin.js.map +1 -1
  67. package/plugins/CmsModelFieldConverterPlugin.d.ts +14 -0
  68. package/plugins/CmsModelFieldConverterPlugin.js +17 -0
  69. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -0
  70. package/plugins/CmsModelPlugin.d.ts +32 -4
  71. package/plugins/CmsModelPlugin.js +160 -1
  72. package/plugins/CmsModelPlugin.js.map +1 -1
  73. package/plugins/index.d.ts +1 -0
  74. package/plugins/index.js +13 -0
  75. package/plugins/index.js.map +1 -1
  76. package/types.d.ts +143 -81
  77. package/types.js +24 -0
  78. package/types.js.map +1 -1
  79. package/upgrades/5.33.0/index.d.ts +3 -0
  80. package/upgrades/5.33.0/index.js +186 -0
  81. package/upgrades/5.33.0/index.js.map +1 -0
  82. package/upgrades/index.d.ts +1 -1
  83. package/upgrades/index.js +3 -1
  84. package/upgrades/index.js.map +1 -1
  85. package/utils/converters/Converter.d.ts +27 -0
  86. package/utils/converters/Converter.js +71 -0
  87. package/utils/converters/Converter.js.map +1 -0
  88. package/utils/converters/ConverterCollection.d.ts +24 -0
  89. package/utils/converters/ConverterCollection.js +115 -0
  90. package/utils/converters/ConverterCollection.js.map +1 -0
  91. package/utils/converters/valueKeyStorageConverter.d.ts +18 -0
  92. package/utils/converters/valueKeyStorageConverter.js +152 -0
  93. package/utils/converters/valueKeyStorageConverter.js.map +1 -0
  94. package/utils/filterModelFields.d.ts +16 -0
  95. package/utils/filterModelFields.js +81 -0
  96. package/utils/filterModelFields.js.map +1 -0
  97. package/utils/getEntryTitle.js +6 -5
  98. package/utils/getEntryTitle.js.map +1 -1
  99. package/utils/ownership.js +4 -2
  100. package/utils/ownership.js.map +1 -1
  101. package/utils/renderGetFilterFields.js +3 -3
  102. package/utils/renderGetFilterFields.js.map +1 -1
  103. package/utils/renderListFilterFields.js +6 -5
  104. package/utils/renderListFilterFields.js.map +1 -1
  105. package/utils/renderSortEnum.js +4 -4
  106. package/utils/renderSortEnum.js.map +1 -1
  107. package/validators/unique.js +1 -0
  108. package/validators/unique.js.map +1 -1
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.CmsModelObjectFieldConverterPlugin = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _CmsModelFieldConverterPlugin = require("../plugins/CmsModelFieldConverterPlugin");
13
+
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
+ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.CmsModelFieldConverterPlugin {
19
+ constructor(...args) {
20
+ super(...args);
21
+ (0, _defineProperty2.default)(this, "name", "cms.field.converter.object");
22
+ }
23
+
24
+ getFieldType() {
25
+ return "object";
26
+ }
27
+
28
+ getChildFields({
29
+ field
30
+ }) {
31
+ var _field$settings;
32
+
33
+ return (field === null || field === void 0 ? void 0 : (_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
34
+ }
35
+
36
+ convertToStorage(params) {
37
+ const {
38
+ field,
39
+ value,
40
+ converterCollection
41
+ } = params;
42
+ const childFields = this.getChildFields({
43
+ field
44
+ });
45
+
46
+ if (childFields.length === 0) {
47
+ return {};
48
+ }
49
+
50
+ if (field.multipleValues) {
51
+ if (Array.isArray(value) === false) {
52
+ return {
53
+ [field.storageId]: []
54
+ };
55
+ }
56
+
57
+ return {
58
+ [field.storageId]: value.map(itemValue => {
59
+ return this.processChildFieldsToStorage({
60
+ fields: childFields.map(child => {
61
+ return _objectSpread(_objectSpread({}, child), {}, {
62
+ parent: field
63
+ });
64
+ }),
65
+ value: itemValue,
66
+ converterCollection
67
+ });
68
+ })
69
+ };
70
+ }
71
+
72
+ const values = this.processChildFieldsToStorage({
73
+ fields: childFields.map(child => {
74
+ return _objectSpread(_objectSpread({}, child), {}, {
75
+ parent: field
76
+ });
77
+ }),
78
+ value,
79
+ converterCollection
80
+ });
81
+
82
+ if (values === undefined) {
83
+ return {};
84
+ }
85
+
86
+ return {
87
+ [field.storageId]: values
88
+ };
89
+ }
90
+
91
+ processChildFieldsToStorage(params) {
92
+ const {
93
+ fields,
94
+ value,
95
+ converterCollection
96
+ } = params;
97
+
98
+ if (value === undefined || value === null) {
99
+ return undefined;
100
+ }
101
+
102
+ return fields.reduce((output, field) => {
103
+ const childFields = this.getChildFields({
104
+ field
105
+ });
106
+
107
+ if (childFields.length > 0) {
108
+ if (field.multipleValues) {
109
+ if (Array.isArray(value[field.fieldId]) === false) {
110
+ return output;
111
+ }
112
+
113
+ const values = value[field.fieldId].map(childValue => {
114
+ return converterCollection.convertToStorage({
115
+ fields: childFields.map(child => {
116
+ return _objectSpread(_objectSpread({}, child), {}, {
117
+ parent: field
118
+ });
119
+ }),
120
+ values: childValue
121
+ });
122
+ });
123
+
124
+ if (values === undefined) {
125
+ return output;
126
+ }
127
+
128
+ return _objectSpread(_objectSpread({}, output), {}, {
129
+ [field.storageId]: values
130
+ });
131
+ }
132
+ /**
133
+ * No need to process child fields if no value is provided.
134
+ */
135
+
136
+
137
+ if (!value[field.fieldId]) {
138
+ return output;
139
+ }
140
+
141
+ const values = converterCollection.convertToStorage({
142
+ fields: childFields.map(child => {
143
+ return _objectSpread(_objectSpread({}, child), {}, {
144
+ parent: field
145
+ });
146
+ }),
147
+ values: value[field.fieldId]
148
+ });
149
+
150
+ if (values === undefined) {
151
+ return output;
152
+ }
153
+
154
+ return _objectSpread(_objectSpread({}, output), {}, {
155
+ [field.storageId]: values
156
+ });
157
+ }
158
+
159
+ if (value[field.fieldId] === undefined) {
160
+ return output;
161
+ }
162
+
163
+ return _objectSpread(_objectSpread({}, output), {}, {
164
+ [field.storageId]: value[field.fieldId]
165
+ });
166
+ }, {});
167
+ }
168
+
169
+ convertFromStorage(params) {
170
+ const {
171
+ field,
172
+ value,
173
+ converterCollection
174
+ } = params;
175
+ const childFields = this.getChildFields({
176
+ field
177
+ });
178
+
179
+ if (childFields.length === 0) {
180
+ return {};
181
+ }
182
+
183
+ if (field.multipleValues) {
184
+ if (Array.isArray(value) === false) {
185
+ return {
186
+ [field.fieldId]: []
187
+ };
188
+ }
189
+
190
+ return {
191
+ [field.fieldId]: value.map(itemValue => {
192
+ return this.processChildFieldsFromStorage({
193
+ fields: childFields.map(child => {
194
+ return _objectSpread(_objectSpread({}, child), {}, {
195
+ parent: field
196
+ });
197
+ }),
198
+ value: itemValue,
199
+ converterCollection
200
+ });
201
+ })
202
+ };
203
+ }
204
+
205
+ const values = this.processChildFieldsFromStorage({
206
+ fields: childFields.map(child => {
207
+ return _objectSpread(_objectSpread({}, child), {}, {
208
+ parent: field
209
+ });
210
+ }),
211
+ value,
212
+ converterCollection
213
+ });
214
+
215
+ if (values === undefined) {
216
+ return {};
217
+ }
218
+
219
+ return {
220
+ [field.fieldId]: values
221
+ };
222
+ }
223
+
224
+ processChildFieldsFromStorage(params) {
225
+ const {
226
+ fields,
227
+ value,
228
+ converterCollection
229
+ } = params;
230
+
231
+ if (value === undefined || value === null) {
232
+ return undefined;
233
+ }
234
+
235
+ return fields.reduce((output, field) => {
236
+ const childFields = this.getChildFields({
237
+ field
238
+ });
239
+
240
+ if (childFields.length > 0) {
241
+ if (field.multipleValues) {
242
+ const inputValues = value[field.storageId];
243
+
244
+ if (!inputValues || Array.isArray(inputValues) === false) {
245
+ return output;
246
+ }
247
+
248
+ const values = inputValues.map(childValue => {
249
+ return converterCollection.convertFromStorage({
250
+ fields: childFields.map(child => {
251
+ return _objectSpread(_objectSpread({}, child), {}, {
252
+ parent: field
253
+ });
254
+ }),
255
+ values: childValue
256
+ });
257
+ });
258
+
259
+ if (values === undefined) {
260
+ return output;
261
+ }
262
+
263
+ return _objectSpread(_objectSpread({}, output), {}, {
264
+ [field.fieldId]: values
265
+ });
266
+ }
267
+ /**
268
+ * No need to process child fields if no value is provided.
269
+ */
270
+
271
+
272
+ if (!value[field.storageId]) {
273
+ return output;
274
+ }
275
+
276
+ const values = converterCollection.convertFromStorage({
277
+ fields: childFields.map(child => {
278
+ return _objectSpread(_objectSpread({}, child), {}, {
279
+ parent: field
280
+ });
281
+ }),
282
+ values: value[field.storageId]
283
+ });
284
+
285
+ if (values === undefined) {
286
+ return output;
287
+ }
288
+
289
+ return _objectSpread(_objectSpread({}, output), {}, {
290
+ [field.fieldId]: values
291
+ });
292
+ }
293
+
294
+ if (value[field.storageId] === undefined) {
295
+ return output;
296
+ }
297
+
298
+ return _objectSpread(_objectSpread({}, output), {}, {
299
+ [field.fieldId]: value[field.storageId]
300
+ });
301
+ }, {});
302
+ }
303
+
304
+ }
305
+
306
+ exports.CmsModelObjectFieldConverterPlugin = CmsModelObjectFieldConverterPlugin;
@@ -0,0 +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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"}
@@ -0,0 +1,3 @@
1
+ import { CmsModelObjectFieldConverterPlugin } from "./CmsModelObjectFieldConverterPlugin";
2
+ import { CmsModelDefaultFieldConverterPlugin } from "./CmsModelDefaultFieldConverterPlugin";
3
+ export declare const createFieldConverters: () => (CmsModelObjectFieldConverterPlugin | CmsModelDefaultFieldConverterPlugin)[];
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createFieldConverters = void 0;
7
+
8
+ var _CmsModelObjectFieldConverterPlugin = require("./CmsModelObjectFieldConverterPlugin");
9
+
10
+ var _CmsModelDefaultFieldConverterPlugin = require("./CmsModelDefaultFieldConverterPlugin");
11
+
12
+ const createFieldConverters = () => {
13
+ return [new _CmsModelObjectFieldConverterPlugin.CmsModelObjectFieldConverterPlugin(), new _CmsModelDefaultFieldConverterPlugin.CmsModelDefaultFieldConverterPlugin()];
14
+ };
15
+
16
+ exports.createFieldConverters = createFieldConverters;
@@ -0,0 +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(), new CmsModelDefaultFieldConverterPlugin()];\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,MAAMA,qBAAqB,GAAG,MAAM;EACvC,OAAO,CAAC,IAAIC,sEAAJ,EAAD,EAA2C,IAAIC,wEAAJ,EAA3C,CAAP;AACH,CAFM"}
@@ -2,4 +2,4 @@ import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/types";
2
2
  import { GraphQLHandlerFactoryParams } from "./graphQLHandlerFactory";
3
3
  import { CmsContext } from "../types";
4
4
  export declare type CreateGraphQLParams = GraphQLHandlerFactoryParams;
5
- export declare const createGraphQL: (params: CreateGraphQLParams) => (import("@webiny/plugins/types").PluginCollection | import("@webiny/api").ContextPlugin<CmsContext> | GraphQLSchemaPlugin<CmsContext>)[];
5
+ export declare const createGraphQL: (params: CreateGraphQLParams) => (import("@webiny/api").ContextPlugin<CmsContext> | GraphQLSchemaPlugin<CmsContext> | import("@webiny/plugins/types").PluginCollection)[];
@@ -118,6 +118,9 @@ const createModelsSchema = context => {
118
118
  label: String!
119
119
  helpText: String
120
120
  placeholderText: String
121
+ # we never use user input - this is here to the GraphQL does not break when posting from our UI
122
+ # used for debugging purposes
123
+ storageId: String
121
124
  fieldId: String!
122
125
  type: String!
123
126
  multipleValues: Boolean
@@ -200,6 +203,9 @@ const createModelsSchema = context => {
200
203
 
201
204
  type CmsContentModelField {
202
205
  id: ID!
206
+ # auto-generated value
207
+ # used for debugging purposes
208
+ storageId: String
203
209
  fieldId: String!
204
210
  label: String!
205
211
  helpText: String
@@ -1 +1 @@
1
- {"version":3,"names":["createModelsSchema","context","resolvers","Query","getContentModel","_","args","model","cms","getModel","modelId","isPrivate","NotFoundError","Response","e","ErrorResponse","listContentModels","__","models","listModels","filter","CmsContentModel","plugin","plugins","byType","CmsModelPlugin","type","some","item","contentModel","manageSchema","MANAGE","createContentModel","createModel","data","createContentModelFrom","createModelFrom","updateContentModel","updateModel","deleteContentModel","deleteModel","GraphQLSchemaPlugin","typeDefs"],"sources":["contentModels.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\n\nexport const createModelsSchema = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n const resolvers: Resolvers<CmsContext> = {\n Query: {\n getContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.getModel(args.modelId);\n if (model?.isPrivate === true) {\n if (!model) {\n throw new NotFoundError(\n `Content model \"${args.modelId}\" was not found!`\n );\n }\n }\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModels: async (_: unknown, __: unknown, context: CmsContext) => {\n try {\n const models = await context.cms.listModels();\n return new Response(models.filter(model => model.isPrivate !== true));\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n CmsContentModel: {\n plugin: async (model, _, context): Promise<boolean> => {\n return context.plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .some(item => item.contentModel.modelId === model.modelId);\n }\n }\n };\n\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n resolvers[\"Mutation\"] = {\n createContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModel(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n createContentModelFrom: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModelFrom(args.modelId, args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModel: async (_: unknown, args: any, context) => {\n const { modelId, data } = args;\n try {\n const model = await context.cms.updateModel(modelId, data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModel: async (_: unknown, args: any, context) => {\n const { modelId } = args;\n try {\n await context.cms.deleteModel(modelId);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n };\n\n manageSchema = /* GraphQL */ `\n input CmsPredefinedValueInput {\n label: String!\n value: String!\n selected: Boolean\n }\n\n input CmsPredefinedValuesInput {\n enabled: Boolean\n values: [CmsPredefinedValueInput]\n }\n input CmsFieldRendererInput {\n name: String\n }\n\n input CmsFieldValidationInput {\n name: String!\n message: String\n settings: JSON\n }\n\n input CmsContentModelFieldInput {\n id: ID!\n label: String!\n helpText: String\n placeholderText: String\n fieldId: String!\n type: String!\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValuesInput\n renderer: CmsFieldRendererInput\n validation: [CmsFieldValidationInput]\n listValidation: [CmsFieldValidationInput]\n settings: JSON\n }\n\n input CmsContentModelCreateInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n layout: [[ID!]!]\n fields: [CmsContentModelFieldInput!]\n titleFieldId: String\n }\n\n input CmsContentModelCreateFromInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n locale: String\n }\n\n input CmsContentModelUpdateInput {\n name: String\n group: RefInput\n description: String\n layout: [[ID!]!]!\n fields: [CmsContentModelFieldInput!]!\n titleFieldId: String\n }\n\n extend type Mutation {\n createContentModel(data: CmsContentModelCreateInput!): CmsContentModelResponse\n\n createContentModelFrom(\n modelId: ID!\n data: CmsContentModelCreateFromInput!\n ): CmsContentModelResponse\n\n updateContentModel(\n modelId: ID!\n data: CmsContentModelUpdateInput!\n ): CmsContentModelResponse\n\n deleteContentModel(modelId: ID!): CmsDeleteResponse\n }\n `;\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsFieldValidation {\n name: String!\n message: String\n settings: JSON\n }\n\n type CmsFieldRenderer {\n name: String\n }\n\n type CmsPredefinedValue {\n label: String\n value: String\n selected: Boolean\n }\n\n type CmsPredefinedValues {\n enabled: Boolean\n values: [CmsPredefinedValue]\n }\n\n type CmsContentModelField {\n id: ID!\n fieldId: String!\n label: String!\n helpText: String\n placeholderText: String\n type: String!\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValues\n renderer: CmsFieldRenderer\n validation: [CmsFieldValidation!]\n listValidation: [CmsFieldValidation!]\n settings: JSON\n }\n\n type CmsContentModel {\n name: String!\n modelId: String!\n description: String\n group: CmsContentModelGroup!\n createdOn: DateTime\n savedOn: DateTime\n createdBy: CmsCreatedBy\n fields: [CmsContentModelField!]!\n lockedFields: [JSON]\n layout: [[String!]!]!\n titleFieldId: String\n\n # Returns true if the content model is registered via a plugin.\n plugin: Boolean!\n }\n\n type CmsContentModelResponse {\n data: CmsContentModel\n error: CmsError\n }\n\n type CmsContentModelListResponse {\n data: [CmsContentModel]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModel(modelId: ID!, where: JSON, sort: String): CmsContentModelResponse\n\n listContentModels: CmsContentModelListResponse\n }\n\n ${manageSchema}\n `,\n resolvers\n });\n};\n"],"mappings":"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H,CAHD,CAGE,OAAOC,CAAP,EAAU;UACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;QACH;MACJ;IAlCmB,CAAxB;IAqCAgB,YAAY;IAAG;IAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SA9EQ;EA+EH;;EAED,OAAO,IAAIW,wCAAJ,CAAoC;IACvCC,QAAQ;IAAE;IAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcZ,YAAa;AAC3B,SAzE+C;IA0EvC5B;EA1EuC,CAApC,CAAP;AA4EH,CAxOM"}
1
+ {"version":3,"names":["createModelsSchema","context","resolvers","Query","getContentModel","_","args","model","cms","getModel","modelId","isPrivate","NotFoundError","Response","e","ErrorResponse","listContentModels","__","models","listModels","filter","CmsContentModel","plugin","plugins","byType","CmsModelPlugin","type","some","item","contentModel","manageSchema","MANAGE","createContentModel","createModel","data","createContentModelFrom","createModelFrom","updateContentModel","updateModel","deleteContentModel","deleteModel","GraphQLSchemaPlugin","typeDefs"],"sources":["contentModels.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\n\nexport const createModelsSchema = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n const resolvers: Resolvers<CmsContext> = {\n Query: {\n getContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.getModel(args.modelId);\n if (model?.isPrivate === true) {\n if (!model) {\n throw new NotFoundError(\n `Content model \"${args.modelId}\" was not found!`\n );\n }\n }\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModels: async (_: unknown, __: unknown, context: CmsContext) => {\n try {\n const models = await context.cms.listModels();\n return new Response(models.filter(model => model.isPrivate !== true));\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n CmsContentModel: {\n plugin: async (model, _, context): Promise<boolean> => {\n return context.plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .some(item => item.contentModel.modelId === model.modelId);\n }\n }\n };\n\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n resolvers[\"Mutation\"] = {\n createContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModel(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n createContentModelFrom: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModelFrom(args.modelId, args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModel: async (_: unknown, args: any, context) => {\n const { modelId, data } = args;\n try {\n const model = await context.cms.updateModel(modelId, data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModel: async (_: unknown, args: any, context) => {\n const { modelId } = args;\n try {\n await context.cms.deleteModel(modelId);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n };\n\n manageSchema = /* GraphQL */ `\n input CmsPredefinedValueInput {\n label: String!\n value: String!\n selected: Boolean\n }\n\n input CmsPredefinedValuesInput {\n enabled: Boolean\n values: [CmsPredefinedValueInput]\n }\n input CmsFieldRendererInput {\n name: String\n }\n\n input CmsFieldValidationInput {\n name: String!\n message: String\n settings: JSON\n }\n\n input CmsContentModelFieldInput {\n id: ID!\n label: String!\n helpText: String\n placeholderText: String\n # we never use user input - this is here to the GraphQL does not break when posting from our UI\n # used for debugging purposes\n storageId: String\n fieldId: String!\n type: String!\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValuesInput\n renderer: CmsFieldRendererInput\n validation: [CmsFieldValidationInput]\n listValidation: [CmsFieldValidationInput]\n settings: JSON\n }\n\n input CmsContentModelCreateInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n layout: [[ID!]!]\n fields: [CmsContentModelFieldInput!]\n titleFieldId: String\n }\n\n input CmsContentModelCreateFromInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n locale: String\n }\n\n input CmsContentModelUpdateInput {\n name: String\n group: RefInput\n description: String\n layout: [[ID!]!]!\n fields: [CmsContentModelFieldInput!]!\n titleFieldId: String\n }\n\n extend type Mutation {\n createContentModel(data: CmsContentModelCreateInput!): CmsContentModelResponse\n\n createContentModelFrom(\n modelId: ID!\n data: CmsContentModelCreateFromInput!\n ): CmsContentModelResponse\n\n updateContentModel(\n modelId: ID!\n data: CmsContentModelUpdateInput!\n ): CmsContentModelResponse\n\n deleteContentModel(modelId: ID!): CmsDeleteResponse\n }\n `;\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsFieldValidation {\n name: String!\n message: String\n settings: JSON\n }\n\n type CmsFieldRenderer {\n name: String\n }\n\n type CmsPredefinedValue {\n label: String\n value: String\n selected: Boolean\n }\n\n type CmsPredefinedValues {\n enabled: Boolean\n values: [CmsPredefinedValue]\n }\n\n type CmsContentModelField {\n id: ID!\n # auto-generated value\n # used for debugging purposes\n storageId: String\n fieldId: String!\n label: String!\n helpText: String\n placeholderText: String\n type: String!\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValues\n renderer: CmsFieldRenderer\n validation: [CmsFieldValidation!]\n listValidation: [CmsFieldValidation!]\n settings: JSON\n }\n\n type CmsContentModel {\n name: String!\n modelId: String!\n description: String\n group: CmsContentModelGroup!\n createdOn: DateTime\n savedOn: DateTime\n createdBy: CmsCreatedBy\n fields: [CmsContentModelField!]!\n lockedFields: [JSON]\n layout: [[String!]!]!\n titleFieldId: String\n\n # Returns true if the content model is registered via a plugin.\n plugin: Boolean!\n }\n\n type CmsContentModelResponse {\n data: CmsContentModel\n error: CmsError\n }\n\n type CmsContentModelListResponse {\n data: [CmsContentModel]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModel(modelId: ID!, where: JSON, sort: String): CmsContentModelResponse\n\n listContentModels: CmsContentModelListResponse\n }\n\n ${manageSchema}\n `,\n resolvers\n });\n};\n"],"mappings":"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H,CAHD,CAGE,OAAOC,CAAP,EAAU;UACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;QACH;MACJ;IAlCmB,CAAxB;IAqCAgB,YAAY;IAAG;IAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAjFQ;EAkFH;;EAED,OAAO,IAAIW,wCAAJ,CAAoC;IACvCC,QAAQ;IAAE;IAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcZ,YAAa;AAC3B,SA5E+C;IA6EvC5B;EA7EuC,CAApC,CAAP;AA+EH,CA9OM"}
@@ -13,6 +13,8 @@ var _set = _interopRequireDefault(require("lodash/set"));
13
13
 
14
14
  var _entryStorage = require("../../utils/entryStorage");
15
15
 
16
+ var _error = _interopRequireDefault(require("@webiny/error"));
17
+
16
18
  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; }
17
19
 
18
20
  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; }
@@ -55,6 +57,16 @@ const createFieldResolversFactory = factoryParams => {
55
57
  if (!fieldTypePlugins[field.type]) {
56
58
  continue;
57
59
  }
60
+ /**
61
+ * Field that is passed into this factory MUST have fieldId, so filter it before the method call.
62
+ */
63
+
64
+
65
+ if (!field.fieldId) {
66
+ throw new _error.default("Field is missing an `fieldId`. Cannot process field without the `fieldId` in the resolvers.", "FIELD_ID_ERROR", {
67
+ field
68
+ });
69
+ }
58
70
 
59
71
  const createResolver = getCreateResolver(fieldTypePlugins, field, endpointType);
60
72
  let resolver;
@@ -66,7 +78,7 @@ const createFieldResolversFactory = factoryParams => {
66
78
  createFieldResolvers
67
79
  }) : null;
68
80
  /**
69
- * When fieldResolver is false it will completely skip adding fieldId into the resolvers.
81
+ * When fieldResolver is false it will completely skip adding field fieldId into the resolvers.
70
82
  * This is to fix the breaking of GraphQL schema.
71
83
  */
72
84
 
@@ -1 +1 @@
1
- {"version":3,"names":["getCreateResolver","plugins","field","endpointType","type","createResolver","createFieldResolversFactory","factoryParams","models","model","fieldTypePlugins","createFieldResolvers","params","graphQLType","fields","isRoot","extraResolvers","fieldResolvers","typeResolvers","resolver","fieldResolver","Object","assign","fieldId","parent","args","context","info","transformedValue","entryFieldFromStorageTransform","value","values","set"],"sources":["createFieldResolvers.ts"],"sourcesContent":["import set from \"lodash/set\";\nimport {\n CmsModelField,\n CmsContext,\n CmsModelFieldToGraphQLCreateResolver,\n ApiEndpoint,\n CmsModel,\n CmsFieldTypePlugins\n} from \"~/types\";\nimport { entryFieldFromStorageTransform } from \"~/utils/entryStorage\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\n\ninterface CreateFieldResolvers {\n graphQLType: string;\n fields: CmsModelField[];\n isRoot: boolean;\n extraResolvers?: Resolvers<any>;\n}\n\ninterface CreateFieldResolversFactoryParams {\n endpointType: ApiEndpoint;\n models: CmsModel[];\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\n\nconst getCreateResolver = (\n plugins: CmsFieldTypePlugins,\n field: CmsModelField,\n endpointType: ApiEndpoint\n): CmsModelFieldToGraphQLCreateResolver | null => {\n if (!plugins[field.type]) {\n return null;\n } else if (!plugins[field.type][endpointType]) {\n return null;\n }\n return plugins[field.type][endpointType].createResolver;\n};\n/**\n * We use a factory to avoid passing the parameters for recursive invocations.\n * This way they will always be in the function scope and we can only pass \"fields\".\n */\nexport const createFieldResolversFactory = (factoryParams: CreateFieldResolversFactoryParams) => {\n const { endpointType, models, model, fieldTypePlugins } = factoryParams;\n return function createFieldResolvers(params: CreateFieldResolvers) {\n const { graphQLType, fields, isRoot = false, extraResolvers = {} } = params;\n\n const fieldResolvers = { ...extraResolvers };\n const typeResolvers = {};\n\n for (const field of fields) {\n if (!fieldTypePlugins[field.type]) {\n continue;\n }\n\n const createResolver = getCreateResolver(fieldTypePlugins, field, endpointType);\n\n let resolver: any;\n const fieldResolver = createResolver\n ? createResolver({ graphQLType, models, model, field, createFieldResolvers })\n : null;\n\n /**\n * When fieldResolver is false it will completely skip adding fieldId into the resolvers.\n * This is to fix the breaking of GraphQL schema.\n */\n if (fieldResolver === false) {\n continue;\n } else if (typeof fieldResolver === \"function\") {\n resolver = fieldResolver;\n } else if (fieldResolver) {\n resolver = fieldResolver.resolver;\n Object.assign(typeResolvers, fieldResolver.typeResolvers);\n }\n\n const { fieldId } = field;\n // TODO @ts-refactor figure out types for parameters\n // @ts-ignore\n fieldResolvers[fieldId] = async (parent, args, context: CmsContext, info) => {\n // Get transformed value (eg. data decompression)\n const transformedValue = await entryFieldFromStorageTransform({\n context,\n model,\n field,\n value: isRoot ? parent.values[fieldId] : parent[fieldId]\n });\n\n set(isRoot ? parent.values : parent, fieldId, transformedValue);\n\n if (!resolver) {\n return isRoot ? parent.values[fieldId] : parent[fieldId];\n }\n\n return await resolver(isRoot ? parent.values : parent, args, context, info);\n };\n }\n\n return { [graphQLType]: fieldResolvers, ...typeResolvers };\n };\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AASA;;;;;;AAiBA,MAAMA,iBAAiB,GAAG,CACtBC,OADsB,EAEtBC,KAFsB,EAGtBC,YAHsB,KAIwB;EAC9C,IAAI,CAACF,OAAO,CAACC,KAAK,CAACE,IAAP,CAAZ,EAA0B;IACtB,OAAO,IAAP;EACH,CAFD,MAEO,IAAI,CAACH,OAAO,CAACC,KAAK,CAACE,IAAP,CAAP,CAAoBD,YAApB,CAAL,EAAwC;IAC3C,OAAO,IAAP;EACH;;EACD,OAAOF,OAAO,CAACC,KAAK,CAACE,IAAP,CAAP,CAAoBD,YAApB,EAAkCE,cAAzC;AACH,CAXD;AAYA;AACA;AACA;AACA;;;AACO,MAAMC,2BAA2B,GAAIC,aAAD,IAAsD;EAC7F,MAAM;IAAEJ,YAAF;IAAgBK,MAAhB;IAAwBC,KAAxB;IAA+BC;EAA/B,IAAoDH,aAA1D;EACA,OAAO,SAASI,oBAAT,CAA8BC,MAA9B,EAA4D;IAC/D,MAAM;MAAEC,WAAF;MAAeC,MAAf;MAAuBC,MAAM,GAAG,KAAhC;MAAuCC,cAAc,GAAG;IAAxD,IAA+DJ,MAArE;;IAEA,MAAMK,cAAc,qBAAQD,cAAR,CAApB;;IACA,MAAME,aAAa,GAAG,EAAtB;;IAEA,KAAK,MAAMhB,KAAX,IAAoBY,MAApB,EAA4B;MACxB,IAAI,CAACJ,gBAAgB,CAACR,KAAK,CAACE,IAAP,CAArB,EAAmC;QAC/B;MACH;;MAED,MAAMC,cAAc,GAAGL,iBAAiB,CAACU,gBAAD,EAAmBR,KAAnB,EAA0BC,YAA1B,CAAxC;MAEA,IAAIgB,QAAJ;MACA,MAAMC,aAAa,GAAGf,cAAc,GAC9BA,cAAc,CAAC;QAAEQ,WAAF;QAAeL,MAAf;QAAuBC,KAAvB;QAA8BP,KAA9B;QAAqCS;MAArC,CAAD,CADgB,GAE9B,IAFN;MAIA;AACZ;AACA;AACA;;MACY,IAAIS,aAAa,KAAK,KAAtB,EAA6B;QACzB;MACH,CAFD,MAEO,IAAI,OAAOA,aAAP,KAAyB,UAA7B,EAAyC;QAC5CD,QAAQ,GAAGC,aAAX;MACH,CAFM,MAEA,IAAIA,aAAJ,EAAmB;QACtBD,QAAQ,GAAGC,aAAa,CAACD,QAAzB;QACAE,MAAM,CAACC,MAAP,CAAcJ,aAAd,EAA6BE,aAAa,CAACF,aAA3C;MACH;;MAED,MAAM;QAAEK;MAAF,IAAcrB,KAApB,CAzBwB,CA0BxB;MACA;;MACAe,cAAc,CAACM,OAAD,CAAd,GAA0B,OAAOC,MAAP,EAAeC,IAAf,EAAqBC,OAArB,EAA0CC,IAA1C,KAAmD;QACzE;QACA,MAAMC,gBAAgB,GAAG,MAAM,IAAAC,4CAAA,EAA+B;UAC1DH,OAD0D;UAE1DjB,KAF0D;UAG1DP,KAH0D;UAI1D4B,KAAK,EAAEf,MAAM,GAAGS,MAAM,CAACO,MAAP,CAAcR,OAAd,CAAH,GAA4BC,MAAM,CAACD,OAAD;QAJW,CAA/B,CAA/B;QAOA,IAAAS,YAAA,EAAIjB,MAAM,GAAGS,MAAM,CAACO,MAAV,GAAmBP,MAA7B,EAAqCD,OAArC,EAA8CK,gBAA9C;;QAEA,IAAI,CAACT,QAAL,EAAe;UACX,OAAOJ,MAAM,GAAGS,MAAM,CAACO,MAAP,CAAcR,OAAd,CAAH,GAA4BC,MAAM,CAACD,OAAD,CAA/C;QACH;;QAED,OAAO,MAAMJ,QAAQ,CAACJ,MAAM,GAAGS,MAAM,CAACO,MAAV,GAAmBP,MAA1B,EAAkCC,IAAlC,EAAwCC,OAAxC,EAAiDC,IAAjD,CAArB;MACH,CAhBD;IAiBH;;IAED;MAAS,CAACd,WAAD,GAAeI;IAAxB,GAA2CC,aAA3C;EACH,CAtDD;AAuDH,CAzDM"}
1
+ {"version":3,"names":["getCreateResolver","plugins","field","endpointType","type","createResolver","createFieldResolversFactory","factoryParams","models","model","fieldTypePlugins","createFieldResolvers","params","graphQLType","fields","isRoot","extraResolvers","fieldResolvers","typeResolvers","fieldId","WebinyError","resolver","fieldResolver","Object","assign","parent","args","context","info","transformedValue","entryFieldFromStorageTransform","value","values","set"],"sources":["createFieldResolvers.ts"],"sourcesContent":["import set from \"lodash/set\";\nimport {\n CmsModelField,\n CmsContext,\n CmsModelFieldToGraphQLCreateResolver,\n ApiEndpoint,\n CmsModel,\n CmsFieldTypePlugins\n} from \"~/types\";\nimport { entryFieldFromStorageTransform } from \"~/utils/entryStorage\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport WebinyError from \"@webiny/error\";\n\ninterface CreateFieldResolvers {\n graphQLType: string;\n fields: CmsModelField[];\n isRoot: boolean;\n extraResolvers?: Resolvers<any>;\n}\n\ninterface CreateFieldResolversFactoryParams {\n endpointType: ApiEndpoint;\n models: CmsModel[];\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\n\nconst getCreateResolver = (\n plugins: CmsFieldTypePlugins,\n field: CmsModelField,\n endpointType: ApiEndpoint\n): CmsModelFieldToGraphQLCreateResolver | null => {\n if (!plugins[field.type]) {\n return null;\n } else if (!plugins[field.type][endpointType]) {\n return null;\n }\n return plugins[field.type][endpointType].createResolver;\n};\n/**\n * We use a factory to avoid passing the parameters for recursive invocations.\n * This way they will always be in the function scope and we can only pass \"fields\".\n */\nexport const createFieldResolversFactory = (factoryParams: CreateFieldResolversFactoryParams) => {\n const { endpointType, models, model, fieldTypePlugins } = factoryParams;\n return function createFieldResolvers(params: CreateFieldResolvers) {\n const { graphQLType, fields, isRoot = false, extraResolvers = {} } = params;\n\n const fieldResolvers = { ...extraResolvers };\n const typeResolvers = {};\n\n for (const field of fields) {\n if (!fieldTypePlugins[field.type]) {\n continue;\n }\n /**\n * Field that is passed into this factory MUST have fieldId, so filter it before the method call.\n */\n if (!field.fieldId) {\n throw new WebinyError(\n \"Field is missing an `fieldId`. Cannot process field without the `fieldId` in the resolvers.\",\n \"FIELD_ID_ERROR\",\n {\n field\n }\n );\n }\n\n const createResolver = getCreateResolver(fieldTypePlugins, field, endpointType);\n\n let resolver: any;\n const fieldResolver = createResolver\n ? createResolver({ graphQLType, models, model, field, createFieldResolvers })\n : null;\n\n /**\n * When fieldResolver is false it will completely skip adding field fieldId into the resolvers.\n * This is to fix the breaking of GraphQL schema.\n */\n if (fieldResolver === false) {\n continue;\n } else if (typeof fieldResolver === \"function\") {\n resolver = fieldResolver;\n } else if (fieldResolver) {\n resolver = fieldResolver.resolver;\n Object.assign(typeResolvers, fieldResolver.typeResolvers);\n }\n\n const { fieldId } = field;\n // TODO @ts-refactor figure out types for parameters\n // @ts-ignore\n fieldResolvers[fieldId] = async (parent, args, context: CmsContext, info) => {\n // Get transformed value (eg. data decompression)\n const transformedValue = await entryFieldFromStorageTransform({\n context,\n model,\n field,\n value: isRoot ? parent.values[fieldId] : parent[fieldId]\n });\n\n set(isRoot ? parent.values : parent, fieldId, transformedValue);\n\n if (!resolver) {\n return isRoot ? parent.values[fieldId] : parent[fieldId];\n }\n\n return await resolver(isRoot ? parent.values : parent, args, context, info);\n };\n }\n\n return { [graphQLType]: fieldResolvers, ...typeResolvers };\n };\n};\n"],"mappings":"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"}
@@ -23,9 +23,10 @@ const createReadSDL = ({
23
23
  }) => {
24
24
  const typeName = (0, _createTypeName.createTypeName)(model.modelId);
25
25
  const rTypeName = (0, _createTypeName.createReadTypeName)(typeName);
26
+ const type = "read";
26
27
  const listFilterFieldsRender = (0, _renderListFilterFields.renderListFilterFields)({
27
28
  model,
28
- type: "read",
29
+ type,
29
30
  fieldTypePlugins
30
31
  });
31
32
  const sortEnumRender = (0, _renderSortEnum.renderSortEnum)({
@@ -38,7 +39,7 @@ const createReadSDL = ({
38
39
  });
39
40
  const fieldsRender = (0, _renderFields.renderFields)({
40
41
  model,
41
- type: "read",
42
+ type,
42
43
  fieldTypePlugins
43
44
  });
44
45
 
@@ -1 +1 @@
1
- {"version":3,"names":["createReadSDL","model","fieldTypePlugins","typeName","createTypeName","modelId","rTypeName","createReadTypeName","listFilterFieldsRender","renderListFilterFields","type","sortEnumRender","renderSortEnum","getFilterFieldsRender","renderGetFilterFields","fieldsRender","renderFields","length","description","map","f","typeDefs","filter","Boolean","join","fields","pluralizedTypeName"],"sources":["createReadSDL.ts"],"sourcesContent":["import { CmsModel, CmsFieldTypePlugins } from \"~/types\";\nimport { createReadTypeName, createTypeName } from \"~/utils/createTypeName\";\nimport { renderListFilterFields } from \"~/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"~/utils/renderSortEnum\";\nimport { renderFields } from \"~/utils/renderFields\";\nimport { renderGetFilterFields } from \"~/utils/renderGetFilterFields\";\nimport { pluralizedTypeName } from \"~/utils/pluralizedTypeName\";\n\ninterface CreateReadSDLParams {\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface CreateReadSDL {\n (params: CreateReadSDLParams): string;\n}\n\nexport const createReadSDL: CreateReadSDL = ({ model, fieldTypePlugins }): string => {\n const typeName = createTypeName(model.modelId);\n const rTypeName = createReadTypeName(typeName);\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n type: \"read\",\n fieldTypePlugins\n });\n\n const sortEnumRender = renderSortEnum({ model, fieldTypePlugins });\n const getFilterFieldsRender = renderGetFilterFields({ model, fieldTypePlugins });\n const fieldsRender = renderFields({ model, type: \"read\", fieldTypePlugins });\n\n if (fieldsRender.length === 0) {\n return \"\";\n }\n\n return `\n \"\"\"${model.description || \"\"}\"\"\"\n ${fieldsRender\n .map(f => f.typeDefs)\n .filter(Boolean)\n .join(\"\\n\")}\n \n type ${rTypeName} {\n id: ID!\n entryId: String!\n createdOn: DateTime!\n savedOn: DateTime!\n createdBy: CmsCreatedBy!\n ownedBy: CmsOwnedBy!\n ${fieldsRender.map(f => f.fields).join(\"\\n\")}\n }\n \n ${\n getFilterFieldsRender &&\n `input ${rTypeName}GetWhereInput {\n ${getFilterFieldsRender}\n }`\n }\n \n \n ${\n listFilterFieldsRender &&\n `input ${rTypeName}ListWhereInput {\n ${listFilterFieldsRender}\n }`\n }\n \n \n ${\n sortEnumRender &&\n `enum ${rTypeName}ListSorter {\n ${sortEnumRender}\n }`\n }\n \n type ${rTypeName}Response {\n data: ${rTypeName}\n error: CmsError\n }\n \n type ${rTypeName}ListResponse {\n data: [${rTypeName}]\n meta: CmsListMeta\n error: CmsError\n }\n \n extend type Query {\n get${typeName}(where: ${rTypeName}GetWhereInput!): ${rTypeName}Response\n\n list${pluralizedTypeName(typeName)}(\n where: ${rTypeName}ListWhereInput\n sort: [${rTypeName}ListSorter]\n limit: Int\n after: String\n ): ${rTypeName}ListResponse\n }\n `;\n};\n"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAUO,MAAMA,aAA4B,GAAG,CAAC;EAAEC,KAAF;EAASC;AAAT,CAAD,KAAyC;EACjF,MAAMC,QAAQ,GAAG,IAAAC,8BAAA,EAAeH,KAAK,CAACI,OAArB,CAAjB;EACA,MAAMC,SAAS,GAAG,IAAAC,kCAAA,EAAmBJ,QAAnB,CAAlB;EAEA,MAAMK,sBAAsB,GAAG,IAAAC,8CAAA,EAAuB;IAClDR,KADkD;IAElDS,IAAI,EAAE,MAF4C;IAGlDR;EAHkD,CAAvB,CAA/B;EAMA,MAAMS,cAAc,GAAG,IAAAC,8BAAA,EAAe;IAAEX,KAAF;IAASC;EAAT,CAAf,CAAvB;EACA,MAAMW,qBAAqB,GAAG,IAAAC,4CAAA,EAAsB;IAAEb,KAAF;IAASC;EAAT,CAAtB,CAA9B;EACA,MAAMa,YAAY,GAAG,IAAAC,0BAAA,EAAa;IAAEf,KAAF;IAASS,IAAI,EAAE,MAAf;IAAuBR;EAAvB,CAAb,CAArB;;EAEA,IAAIa,YAAY,CAACE,MAAb,KAAwB,CAA5B,EAA+B;IAC3B,OAAO,EAAP;EACH;;EAED,OAAQ;AACZ,aAAahB,KAAK,CAACiB,WAAN,IAAqB,EAAG;AACrC,UAAUH,YAAY,CACTI,GADH,CACOC,CAAC,IAAIA,CAAC,CAACC,QADd,EAEGC,MAFH,CAEUC,OAFV,EAGGC,IAHH,CAGQ,IAHR,CAGc;AACxB;AACA,eAAelB,SAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,cAAcS,YAAY,CAACI,GAAb,CAAiBC,CAAC,IAAIA,CAAC,CAACK,MAAxB,EAAgCD,IAAhC,CAAqC,IAArC,CAA2C;AACzD;AACA;AACA,UACYX,qBAAqB,IACpB,SAAQP,SAAU;AAC/B,cAAcO,qBAAsB;AACpC,UACS;AACT;AACA;AACA,UACYL,sBAAsB,IACrB,SAAQF,SAAU;AAC/B,cAAcE,sBAAuB;AACrC,UACS;AACT;AACA;AACA,UACYG,cAAc,IACb,QAAOL,SAAU;AAC9B,cAAcK,cAAe;AAC7B,UACS;AACT;AACA,eAAeL,SAAU;AACzB,oBAAoBA,SAAU;AAC9B;AACA;AACA;AACA,eAAeA,SAAU;AACzB,qBAAqBA,SAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,iBAAiBH,QAAS,WAAUG,SAAU,oBAAmBA,SAAU;AAC3E;AACA,kBAAkB,IAAAoB,sCAAA,EAAmBvB,QAAnB,CAA6B;AAC/C,yBAAyBG,SAAU;AACnC,yBAAyBA,SAAU;AACnC;AACA;AACA,iBAAiBA,SAAU;AAC3B;AACA,KA7DI;AA8DH,CAhFM"}
1
+ {"version":3,"names":["createReadSDL","model","fieldTypePlugins","typeName","createTypeName","modelId","rTypeName","createReadTypeName","type","listFilterFieldsRender","renderListFilterFields","sortEnumRender","renderSortEnum","getFilterFieldsRender","renderGetFilterFields","fieldsRender","renderFields","length","description","map","f","typeDefs","filter","Boolean","join","fields","pluralizedTypeName"],"sources":["createReadSDL.ts"],"sourcesContent":["import { CmsModel, CmsFieldTypePlugins, ApiEndpoint } from \"~/types\";\nimport { createReadTypeName, createTypeName } from \"~/utils/createTypeName\";\nimport { renderListFilterFields } from \"~/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"~/utils/renderSortEnum\";\nimport { renderFields } from \"~/utils/renderFields\";\nimport { renderGetFilterFields } from \"~/utils/renderGetFilterFields\";\nimport { pluralizedTypeName } from \"~/utils/pluralizedTypeName\";\n\ninterface CreateReadSDLParams {\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface CreateReadSDL {\n (params: CreateReadSDLParams): string;\n}\n\nexport const createReadSDL: CreateReadSDL = ({ model, fieldTypePlugins }): string => {\n const typeName = createTypeName(model.modelId);\n const rTypeName = createReadTypeName(typeName);\n\n const type: ApiEndpoint = \"read\";\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n type,\n fieldTypePlugins\n });\n\n const sortEnumRender = renderSortEnum({\n model,\n fieldTypePlugins\n });\n const getFilterFieldsRender = renderGetFilterFields({\n model,\n fieldTypePlugins\n });\n const fieldsRender = renderFields({\n model,\n type,\n fieldTypePlugins\n });\n\n if (fieldsRender.length === 0) {\n return \"\";\n }\n\n return `\n \"\"\"${model.description || \"\"}\"\"\"\n ${fieldsRender\n .map(f => f.typeDefs)\n .filter(Boolean)\n .join(\"\\n\")}\n \n type ${rTypeName} {\n id: ID!\n entryId: String!\n createdOn: DateTime!\n savedOn: DateTime!\n createdBy: CmsCreatedBy!\n ownedBy: CmsOwnedBy!\n ${fieldsRender.map(f => f.fields).join(\"\\n\")}\n }\n \n ${\n getFilterFieldsRender &&\n `input ${rTypeName}GetWhereInput {\n ${getFilterFieldsRender}\n }`\n }\n \n \n ${\n listFilterFieldsRender &&\n `input ${rTypeName}ListWhereInput {\n ${listFilterFieldsRender}\n }`\n }\n \n \n ${\n sortEnumRender &&\n `enum ${rTypeName}ListSorter {\n ${sortEnumRender}\n }`\n }\n \n type ${rTypeName}Response {\n data: ${rTypeName}\n error: CmsError\n }\n \n type ${rTypeName}ListResponse {\n data: [${rTypeName}]\n meta: CmsListMeta\n error: CmsError\n }\n \n extend type Query {\n get${typeName}(where: ${rTypeName}GetWhereInput!): ${rTypeName}Response\n\n list${pluralizedTypeName(typeName)}(\n where: ${rTypeName}ListWhereInput\n sort: [${rTypeName}ListSorter]\n limit: Int\n after: String\n ): ${rTypeName}ListResponse\n }\n `;\n};\n"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAUO,MAAMA,aAA4B,GAAG,CAAC;EAAEC,KAAF;EAASC;AAAT,CAAD,KAAyC;EACjF,MAAMC,QAAQ,GAAG,IAAAC,8BAAA,EAAeH,KAAK,CAACI,OAArB,CAAjB;EACA,MAAMC,SAAS,GAAG,IAAAC,kCAAA,EAAmBJ,QAAnB,CAAlB;EAEA,MAAMK,IAAiB,GAAG,MAA1B;EAEA,MAAMC,sBAAsB,GAAG,IAAAC,8CAAA,EAAuB;IAClDT,KADkD;IAElDO,IAFkD;IAGlDN;EAHkD,CAAvB,CAA/B;EAMA,MAAMS,cAAc,GAAG,IAAAC,8BAAA,EAAe;IAClCX,KADkC;IAElCC;EAFkC,CAAf,CAAvB;EAIA,MAAMW,qBAAqB,GAAG,IAAAC,4CAAA,EAAsB;IAChDb,KADgD;IAEhDC;EAFgD,CAAtB,CAA9B;EAIA,MAAMa,YAAY,GAAG,IAAAC,0BAAA,EAAa;IAC9Bf,KAD8B;IAE9BO,IAF8B;IAG9BN;EAH8B,CAAb,CAArB;;EAMA,IAAIa,YAAY,CAACE,MAAb,KAAwB,CAA5B,EAA+B;IAC3B,OAAO,EAAP;EACH;;EAED,OAAQ;AACZ,aAAahB,KAAK,CAACiB,WAAN,IAAqB,EAAG;AACrC,UAAUH,YAAY,CACTI,GADH,CACOC,CAAC,IAAIA,CAAC,CAACC,QADd,EAEGC,MAFH,CAEUC,OAFV,EAGGC,IAHH,CAGQ,IAHR,CAGc;AACxB;AACA,eAAelB,SAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,cAAcS,YAAY,CAACI,GAAb,CAAiBC,CAAC,IAAIA,CAAC,CAACK,MAAxB,EAAgCD,IAAhC,CAAqC,IAArC,CAA2C;AACzD;AACA;AACA,UACYX,qBAAqB,IACpB,SAAQP,SAAU;AAC/B,cAAcO,qBAAsB;AACpC,UACS;AACT;AACA;AACA,UACYJ,sBAAsB,IACrB,SAAQH,SAAU;AAC/B,cAAcG,sBAAuB;AACrC,UACS;AACT;AACA;AACA,UACYE,cAAc,IACb,QAAOL,SAAU;AAC9B,cAAcK,cAAe;AAC7B,UACS;AACT;AACA,eAAeL,SAAU;AACzB,oBAAoBA,SAAU;AAC9B;AACA;AACA;AACA,eAAeA,SAAU;AACzB,qBAAqBA,SAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,iBAAiBH,QAAS,WAAUG,SAAU,oBAAmBA,SAAU;AAC3E;AACA,kBAAkB,IAAAoB,sCAAA,EAAmBvB,QAAnB,CAA6B;AAC/C,yBAAyBG,SAAU;AACnC,yBAAyBA,SAAU;AACnC;AACA;AACA,iBAAiBA,SAAU;AAC3B;AACA,KA7DI;AA8DH,CA5FM"}
@@ -19,6 +19,8 @@ var _createPreviewResolvers = require("./createPreviewResolvers");
19
19
 
20
20
  var _getSchemaFromFieldPlugins = require("../../utils/getSchemaFromFieldPlugins");
21
21
 
22
+ var _filterModelFields = require("../../utils/filterModelFields");
23
+
22
24
  const generateSchemaPlugins = async context => {
23
25
  const {
24
26
  plugins,
@@ -44,8 +46,12 @@ const generateSchemaPlugins = async context => {
44
46
  }, {}); // Load model data
45
47
 
46
48
  context.security.disableAuthorization();
47
- const models = (await cms.listModels()).filter(model => model.isPrivate !== true);
49
+ const initialModels = (await cms.listModels()).filter(model => model.isPrivate !== true);
48
50
  context.security.enableAuthorization();
51
+ const models = (0, _filterModelFields.filterModelsDeletedFields)({
52
+ models: initialModels,
53
+ type
54
+ });
49
55
  const schemas = (0, _getSchemaFromFieldPlugins.getSchemaFromFieldPlugins)({
50
56
  models,
51
57
  fieldTypePlugins,
@@ -1 +1 @@
1
- {"version":3,"names":["generateSchemaPlugins","context","plugins","cms","type","fieldTypePlugins","byType","reduce","acc","pl","fieldType","security","disableAuthorization","models","listModels","filter","model","isPrivate","enableAuthorization","schemas","getSchemaFromFieldPlugins","newPlugins","schema","push","GraphQLSchemaPlugin","fields","length","forEach","typeDefs","createManageSDL","resolvers","createManageResolvers","createReadSDL","READ","createReadResolvers","createPreviewResolvers"],"sources":["schemaPlugins.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { CmsModelFieldToGraphQLPlugin, CmsFieldTypePlugins, CmsContext } from \"~/types\";\nimport { createManageSDL } from \"./createManageSDL\";\nimport { createReadSDL } from \"./createReadSDL\";\nimport { createManageResolvers } from \"./createManageResolvers\";\nimport { createReadResolvers } from \"./createReadResolvers\";\nimport { createPreviewResolvers } from \"./createPreviewResolvers\";\nimport { getSchemaFromFieldPlugins } from \"~/utils/getSchemaFromFieldPlugins\";\n\nexport const generateSchemaPlugins = async (\n context: CmsContext\n): Promise<GraphQLSchemaPlugin<CmsContext>[]> => {\n const { plugins, cms } = context;\n\n /**\n * If type does not exist, we are not generating schema plugins for models.\n * It should not come to this point, but we check it anyways.\n */\n const { type } = cms;\n if (!type) {\n return [];\n }\n\n // Structure plugins for faster access\n const fieldTypePlugins: CmsFieldTypePlugins = plugins\n .byType<CmsModelFieldToGraphQLPlugin>(\"cms-model-field-to-graphql\")\n .reduce((acc, pl) => {\n acc[pl.fieldType] = pl;\n return acc;\n }, {} as Record<string, CmsModelFieldToGraphQLPlugin>);\n\n // Load model data\n context.security.disableAuthorization();\n const models = (await cms.listModels()).filter(model => model.isPrivate !== true);\n context.security.enableAuthorization();\n\n const schemas = getSchemaFromFieldPlugins({\n models,\n fieldTypePlugins,\n type\n });\n\n const newPlugins: GraphQLSchemaPlugin<CmsContext>[] = [];\n for (const schema of schemas) {\n newPlugins.push(new GraphQLSchemaPlugin(schema));\n }\n\n models\n .filter(model => model.fields.length > 0)\n .forEach(model => {\n switch (type) {\n case \"manage\":\n newPlugins.push(\n new GraphQLSchemaPlugin({\n typeDefs: createManageSDL({ model, fieldTypePlugins }),\n resolvers: createManageResolvers({\n models,\n model,\n fieldTypePlugins,\n context\n })\n })\n );\n\n break;\n case \"preview\":\n case \"read\":\n newPlugins.push(\n new GraphQLSchemaPlugin({\n typeDefs: createReadSDL({ model, fieldTypePlugins }),\n resolvers: cms.READ\n ? createReadResolvers({\n models,\n model,\n fieldTypePlugins,\n context\n })\n : createPreviewResolvers({\n models,\n model,\n fieldTypePlugins,\n context\n })\n })\n );\n break;\n default:\n return;\n }\n });\n\n return newPlugins.filter(pl => !!pl.schema.typeDefs);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,MAAMA,qBAAqB,GAAG,MACjCC,OADiC,IAEY;EAC7C,MAAM;IAAEC,OAAF;IAAWC;EAAX,IAAmBF,OAAzB;EAEA;AACJ;AACA;AACA;;EACI,MAAM;IAAEG;EAAF,IAAWD,GAAjB;;EACA,IAAI,CAACC,IAAL,EAAW;IACP,OAAO,EAAP;EACH,CAV4C,CAY7C;;;EACA,MAAMC,gBAAqC,GAAGH,OAAO,CAChDI,MADyC,CACJ,4BADI,EAEzCC,MAFyC,CAElC,CAACC,GAAD,EAAMC,EAAN,KAAa;IACjBD,GAAG,CAACC,EAAE,CAACC,SAAJ,CAAH,GAAoBD,EAApB;IACA,OAAOD,GAAP;EACH,CALyC,EAKvC,EALuC,CAA9C,CAb6C,CAoB7C;;EACAP,OAAO,CAACU,QAAR,CAAiBC,oBAAjB;EACA,MAAMC,MAAM,GAAG,CAAC,MAAMV,GAAG,CAACW,UAAJ,EAAP,EAAyBC,MAAzB,CAAgCC,KAAK,IAAIA,KAAK,CAACC,SAAN,KAAoB,IAA7D,CAAf;EACAhB,OAAO,CAACU,QAAR,CAAiBO,mBAAjB;EAEA,MAAMC,OAAO,GAAG,IAAAC,oDAAA,EAA0B;IACtCP,MADsC;IAEtCR,gBAFsC;IAGtCD;EAHsC,CAA1B,CAAhB;EAMA,MAAMiB,UAA6C,GAAG,EAAtD;;EACA,KAAK,MAAMC,MAAX,IAAqBH,OAArB,EAA8B;IAC1BE,UAAU,CAACE,IAAX,CAAgB,IAAIC,wCAAJ,CAAwBF,MAAxB,CAAhB;EACH;;EAEDT,MAAM,CACDE,MADL,CACYC,KAAK,IAAIA,KAAK,CAACS,MAAN,CAAaC,MAAb,GAAsB,CAD3C,EAEKC,OAFL,CAEaX,KAAK,IAAI;IACd,QAAQZ,IAAR;MACI,KAAK,QAAL;QACIiB,UAAU,CAACE,IAAX,CACI,IAAIC,wCAAJ,CAAwB;UACpBI,QAAQ,EAAE,IAAAC,gCAAA,EAAgB;YAAEb,KAAF;YAASX;UAAT,CAAhB,CADU;UAEpByB,SAAS,EAAE,IAAAC,4CAAA,EAAsB;YAC7BlB,MAD6B;YAE7BG,KAF6B;YAG7BX,gBAH6B;YAI7BJ;UAJ6B,CAAtB;QAFS,CAAxB,CADJ;QAYA;;MACJ,KAAK,SAAL;MACA,KAAK,MAAL;QACIoB,UAAU,CAACE,IAAX,CACI,IAAIC,wCAAJ,CAAwB;UACpBI,QAAQ,EAAE,IAAAI,4BAAA,EAAc;YAAEhB,KAAF;YAASX;UAAT,CAAd,CADU;UAEpByB,SAAS,EAAE3B,GAAG,CAAC8B,IAAJ,GACL,IAAAC,wCAAA,EAAoB;YAChBrB,MADgB;YAEhBG,KAFgB;YAGhBX,gBAHgB;YAIhBJ;UAJgB,CAApB,CADK,GAOL,IAAAkC,8CAAA,EAAuB;YACnBtB,MADmB;YAEnBG,KAFmB;YAGnBX,gBAHmB;YAInBJ;UAJmB,CAAvB;QATc,CAAxB,CADJ;QAkBA;;MACJ;QACI;IArCR;EAuCH,CA1CL;EA4CA,OAAOoB,UAAU,CAACN,MAAX,CAAkBN,EAAE,IAAI,CAAC,CAACA,EAAE,CAACa,MAAH,CAAUM,QAApC,CAAP;AACH,CAnFM"}
1
+ {"version":3,"names":["generateSchemaPlugins","context","plugins","cms","type","fieldTypePlugins","byType","reduce","acc","pl","fieldType","security","disableAuthorization","initialModels","listModels","filter","model","isPrivate","enableAuthorization","models","filterModelsDeletedFields","schemas","getSchemaFromFieldPlugins","newPlugins","schema","push","GraphQLSchemaPlugin","fields","length","forEach","typeDefs","createManageSDL","resolvers","createManageResolvers","createReadSDL","READ","createReadResolvers","createPreviewResolvers"],"sources":["schemaPlugins.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { CmsModelFieldToGraphQLPlugin, CmsFieldTypePlugins, CmsContext } from \"~/types\";\nimport { createManageSDL } from \"./createManageSDL\";\nimport { createReadSDL } from \"./createReadSDL\";\nimport { createManageResolvers } from \"./createManageResolvers\";\nimport { createReadResolvers } from \"./createReadResolvers\";\nimport { createPreviewResolvers } from \"./createPreviewResolvers\";\nimport { getSchemaFromFieldPlugins } from \"~/utils/getSchemaFromFieldPlugins\";\nimport { filterModelsDeletedFields } from \"~/utils/filterModelFields\";\n\nexport const generateSchemaPlugins = async (\n context: CmsContext\n): Promise<GraphQLSchemaPlugin<CmsContext>[]> => {\n const { plugins, cms } = context;\n\n /**\n * If type does not exist, we are not generating schema plugins for models.\n * It should not come to this point, but we check it anyways.\n */\n const { type } = cms;\n if (!type) {\n return [];\n }\n\n // Structure plugins for faster access\n const fieldTypePlugins: CmsFieldTypePlugins = plugins\n .byType<CmsModelFieldToGraphQLPlugin>(\"cms-model-field-to-graphql\")\n .reduce((acc, pl) => {\n acc[pl.fieldType] = pl;\n return acc;\n }, {} as Record<string, CmsModelFieldToGraphQLPlugin>);\n\n // Load model data\n context.security.disableAuthorization();\n const initialModels = (await cms.listModels()).filter(model => model.isPrivate !== true);\n context.security.enableAuthorization();\n\n const models = filterModelsDeletedFields({\n models: initialModels,\n type\n });\n\n const schemas = getSchemaFromFieldPlugins({\n models,\n fieldTypePlugins,\n type\n });\n\n const newPlugins: GraphQLSchemaPlugin<CmsContext>[] = [];\n for (const schema of schemas) {\n newPlugins.push(new GraphQLSchemaPlugin(schema));\n }\n\n models\n .filter(model => model.fields.length > 0)\n .forEach(model => {\n switch (type) {\n case \"manage\":\n newPlugins.push(\n new GraphQLSchemaPlugin({\n typeDefs: createManageSDL({ model, fieldTypePlugins }),\n resolvers: createManageResolvers({\n models,\n model,\n fieldTypePlugins,\n context\n })\n })\n );\n\n break;\n case \"preview\":\n case \"read\":\n newPlugins.push(\n new GraphQLSchemaPlugin({\n typeDefs: createReadSDL({ model, fieldTypePlugins }),\n resolvers: cms.READ\n ? createReadResolvers({\n models,\n model,\n fieldTypePlugins,\n context\n })\n : createPreviewResolvers({\n models,\n model,\n fieldTypePlugins,\n context\n })\n })\n );\n break;\n default:\n return;\n }\n });\n\n return newPlugins.filter(pl => !!pl.schema.typeDefs);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,MAAMA,qBAAqB,GAAG,MACjCC,OADiC,IAEY;EAC7C,MAAM;IAAEC,OAAF;IAAWC;EAAX,IAAmBF,OAAzB;EAEA;AACJ;AACA;AACA;;EACI,MAAM;IAAEG;EAAF,IAAWD,GAAjB;;EACA,IAAI,CAACC,IAAL,EAAW;IACP,OAAO,EAAP;EACH,CAV4C,CAY7C;;;EACA,MAAMC,gBAAqC,GAAGH,OAAO,CAChDI,MADyC,CACJ,4BADI,EAEzCC,MAFyC,CAElC,CAACC,GAAD,EAAMC,EAAN,KAAa;IACjBD,GAAG,CAACC,EAAE,CAACC,SAAJ,CAAH,GAAoBD,EAApB;IACA,OAAOD,GAAP;EACH,CALyC,EAKvC,EALuC,CAA9C,CAb6C,CAoB7C;;EACAP,OAAO,CAACU,QAAR,CAAiBC,oBAAjB;EACA,MAAMC,aAAa,GAAG,CAAC,MAAMV,GAAG,CAACW,UAAJ,EAAP,EAAyBC,MAAzB,CAAgCC,KAAK,IAAIA,KAAK,CAACC,SAAN,KAAoB,IAA7D,CAAtB;EACAhB,OAAO,CAACU,QAAR,CAAiBO,mBAAjB;EAEA,MAAMC,MAAM,GAAG,IAAAC,4CAAA,EAA0B;IACrCD,MAAM,EAAEN,aAD6B;IAErCT;EAFqC,CAA1B,CAAf;EAKA,MAAMiB,OAAO,GAAG,IAAAC,oDAAA,EAA0B;IACtCH,MADsC;IAEtCd,gBAFsC;IAGtCD;EAHsC,CAA1B,CAAhB;EAMA,MAAMmB,UAA6C,GAAG,EAAtD;;EACA,KAAK,MAAMC,MAAX,IAAqBH,OAArB,EAA8B;IAC1BE,UAAU,CAACE,IAAX,CAAgB,IAAIC,wCAAJ,CAAwBF,MAAxB,CAAhB;EACH;;EAEDL,MAAM,CACDJ,MADL,CACYC,KAAK,IAAIA,KAAK,CAACW,MAAN,CAAaC,MAAb,GAAsB,CAD3C,EAEKC,OAFL,CAEab,KAAK,IAAI;IACd,QAAQZ,IAAR;MACI,KAAK,QAAL;QACImB,UAAU,CAACE,IAAX,CACI,IAAIC,wCAAJ,CAAwB;UACpBI,QAAQ,EAAE,IAAAC,gCAAA,EAAgB;YAAEf,KAAF;YAASX;UAAT,CAAhB,CADU;UAEpB2B,SAAS,EAAE,IAAAC,4CAAA,EAAsB;YAC7Bd,MAD6B;YAE7BH,KAF6B;YAG7BX,gBAH6B;YAI7BJ;UAJ6B,CAAtB;QAFS,CAAxB,CADJ;QAYA;;MACJ,KAAK,SAAL;MACA,KAAK,MAAL;QACIsB,UAAU,CAACE,IAAX,CACI,IAAIC,wCAAJ,CAAwB;UACpBI,QAAQ,EAAE,IAAAI,4BAAA,EAAc;YAAElB,KAAF;YAASX;UAAT,CAAd,CADU;UAEpB2B,SAAS,EAAE7B,GAAG,CAACgC,IAAJ,GACL,IAAAC,wCAAA,EAAoB;YAChBjB,MADgB;YAEhBH,KAFgB;YAGhBX,gBAHgB;YAIhBJ;UAJgB,CAApB,CADK,GAOL,IAAAoC,8CAAA,EAAuB;YACnBlB,MADmB;YAEnBH,KAFmB;YAGnBX,gBAHmB;YAInBJ;UAJmB,CAAvB;QATc,CAAxB,CADJ;QAkBA;;MACJ;QACI;IArCR;EAuCH,CA1CL;EA4CA,OAAOsB,UAAU,CAACR,MAAX,CAAkBN,EAAE,IAAI,CAAC,CAACA,EAAE,CAACe,MAAH,CAAUM,QAApC,CAAP;AACH,CAxFM"}