@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.615a930a68

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 (140) hide show
  1. package/context.js +3 -7
  2. package/context.js.map +1 -1
  3. package/crud/contentEntry/afterDelete.d.ts +2 -2
  4. package/crud/contentEntry/afterDelete.js +2 -2
  5. package/crud/contentEntry/afterDelete.js.map +1 -1
  6. package/crud/contentEntry/beforeCreate.d.ts +2 -2
  7. package/crud/contentEntry/beforeCreate.js +2 -2
  8. package/crud/contentEntry/beforeCreate.js.map +1 -1
  9. package/crud/contentEntry/beforeUpdate.d.ts +2 -2
  10. package/crud/contentEntry/beforeUpdate.js +2 -2
  11. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  12. package/crud/contentEntry/entryDataValidation.js +3 -7
  13. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  14. package/crud/contentEntry/markLockedFields.js +6 -10
  15. package/crud/contentEntry/markLockedFields.js.map +1 -1
  16. package/crud/contentEntry/referenceFieldsMapping.js +3 -9
  17. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  18. package/crud/contentEntry/searchableFields.d.ts +9 -0
  19. package/crud/contentEntry/searchableFields.js +83 -0
  20. package/crud/contentEntry/searchableFields.js.map +1 -0
  21. package/crud/contentEntry.crud.d.ts +0 -2
  22. package/crud/contentEntry.crud.js +200 -269
  23. package/crud/contentEntry.crud.js.map +1 -1
  24. package/crud/contentModel/afterCreate.d.ts +3 -3
  25. package/crud/contentModel/afterCreate.js +5 -5
  26. package/crud/contentModel/afterCreate.js.map +1 -1
  27. package/crud/contentModel/afterCreateFrom.d.ts +3 -3
  28. package/crud/contentModel/afterCreateFrom.js +5 -5
  29. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  30. package/crud/contentModel/afterDelete.d.ts +3 -3
  31. package/crud/contentModel/afterDelete.js +5 -5
  32. package/crud/contentModel/afterDelete.js.map +1 -1
  33. package/crud/contentModel/afterUpdate.d.ts +3 -3
  34. package/crud/contentModel/afterUpdate.js +5 -5
  35. package/crud/contentModel/afterUpdate.js.map +1 -1
  36. package/crud/contentModel/beforeCreate.d.ts +4 -4
  37. package/crud/contentModel/beforeCreate.js +10 -10
  38. package/crud/contentModel/beforeCreate.js.map +1 -1
  39. package/crud/contentModel/beforeDelete.d.ts +3 -3
  40. package/crud/contentModel/beforeDelete.js +6 -6
  41. package/crud/contentModel/beforeDelete.js.map +1 -1
  42. package/crud/contentModel/beforeUpdate.d.ts +3 -3
  43. package/crud/contentModel/beforeUpdate.js +5 -5
  44. package/crud/contentModel/beforeUpdate.js.map +1 -1
  45. package/crud/contentModel/validateModel.js +1 -1
  46. package/crud/contentModel/validateModelFields.js +3 -7
  47. package/crud/contentModel/validateModelFields.js.map +1 -1
  48. package/crud/contentModel.crud.js +84 -60
  49. package/crud/contentModel.crud.js.map +1 -1
  50. package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
  51. package/crud/contentModelGroup/beforeCreate.js +3 -3
  52. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  53. package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
  54. package/crud/contentModelGroup/beforeDelete.js +3 -3
  55. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  56. package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
  57. package/crud/contentModelGroup/beforeUpdate.js +2 -2
  58. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  59. package/crud/contentModelGroup.crud.js +58 -38
  60. package/crud/contentModelGroup.crud.js.map +1 -1
  61. package/crud/index.js +3 -7
  62. package/crud/index.js.map +1 -1
  63. package/crud/settings.crud.js +3 -8
  64. package/crud/settings.crud.js.map +1 -1
  65. package/crud/system.crud.js +63 -51
  66. package/crud/system.crud.js.map +1 -1
  67. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -1
  68. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +17 -19
  69. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  70. package/graphql/graphQLHandlerFactory.js +1 -1
  71. package/graphql/schema/baseContentSchema.js +5 -9
  72. package/graphql/schema/baseContentSchema.js.map +1 -1
  73. package/graphql/schema/contentEntries.js +1 -1
  74. package/graphql/schema/contentModels.js +19 -0
  75. package/graphql/schema/contentModels.js.map +1 -1
  76. package/graphql/schema/createFieldResolvers.js +4 -10
  77. package/graphql/schema/createFieldResolvers.js.map +1 -1
  78. package/graphql/schema/createManageResolvers.js +4 -18
  79. package/graphql/schema/createManageResolvers.js.map +1 -1
  80. package/graphql/schema/createManageSDL.js +6 -8
  81. package/graphql/schema/createManageSDL.js.map +1 -1
  82. package/graphql/schema/createPreviewResolvers.js +3 -7
  83. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  84. package/graphql/schema/createReadResolvers.js +3 -7
  85. package/graphql/schema/createReadResolvers.js.map +1 -1
  86. package/graphql/schema/createReadSDL.js +3 -1
  87. package/graphql/schema/createReadSDL.js.map +1 -1
  88. package/graphql/schema/resolvers/manage/resolveGet.js +5 -9
  89. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  90. package/graphql/schema/resolvers/preview/resolveGet.js +3 -7
  91. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  92. package/graphql/schema/resolvers/read/resolveGet.js +3 -7
  93. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  94. package/graphqlFields/number.js +4 -0
  95. package/graphqlFields/number.js.map +1 -1
  96. package/graphqlFields/object.js +102 -16
  97. package/graphqlFields/object.js.map +1 -1
  98. package/graphqlFields/ref.js +4 -8
  99. package/graphqlFields/ref.js.map +1 -1
  100. package/modelManager/DefaultCmsModelManager.d.ts +7 -7
  101. package/modelManager/DefaultCmsModelManager.js +1 -1
  102. package/package.json +27 -28
  103. package/parameters/header.js +1 -1
  104. package/parameters/manual.js +7 -8
  105. package/parameters/manual.js.map +1 -1
  106. package/parameters/path.js +1 -1
  107. package/plugins/CmsGroupPlugin.js +1 -1
  108. package/plugins/CmsModelFieldConverterPlugin.js +1 -1
  109. package/plugins/CmsModelPlugin.d.ts +6 -2
  110. package/plugins/CmsModelPlugin.js +18 -13
  111. package/plugins/CmsModelPlugin.js.map +1 -1
  112. package/plugins/CmsParametersPlugin.js +1 -1
  113. package/plugins/StorageTransformPlugin.d.ts +1 -1
  114. package/plugins/StorageTransformPlugin.js +1 -1
  115. package/plugins/StorageTransformPlugin.js.map +1 -1
  116. package/storage/object.js +3 -7
  117. package/storage/object.js.map +1 -1
  118. package/types.d.ts +276 -127
  119. package/types.js +0 -2
  120. package/types.js.map +1 -1
  121. package/upgrades/5.33.0/index.js +5 -9
  122. package/upgrades/5.33.0/index.js.map +1 -1
  123. package/utils/converters/Converter.js +1 -1
  124. package/utils/converters/ConverterCollection.d.ts +7 -0
  125. package/utils/converters/ConverterCollection.js +31 -7
  126. package/utils/converters/ConverterCollection.js.map +1 -1
  127. package/utils/converters/valueKeyStorageConverter.js +3 -7
  128. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  129. package/utils/createTypeName.js +1 -1
  130. package/utils/entryStorage.js +3 -7
  131. package/utils/entryStorage.js.map +1 -1
  132. package/utils/filterModelFields.js +5 -9
  133. package/utils/filterModelFields.js.map +1 -1
  134. package/utils/permissions.js +1 -5
  135. package/utils/permissions.js.map +1 -1
  136. package/utils/pluralizedTypeName.js +1 -1
  137. package/utils/renderListFilterFields.js +9 -1
  138. package/utils/renderListFilterFields.js.map +1 -1
  139. package/utils/toSlug.js +1 -1
  140. package/validators/unique.js +1 -1
@@ -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.createObjectField = void 0;
9
9
 
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
10
12
  var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
11
13
 
12
14
  var _renderFields = require("../utils/renderFields");
@@ -18,21 +20,21 @@ var _createTypeName = require("../utils/createTypeName");
18
20
  var _helpers = require("./helpers");
19
21
 
20
22
  const typeFromField = params => {
21
- var _field$settings;
23
+ var _parentField$settings;
22
24
 
23
25
  const {
24
26
  typeOfType,
25
27
  model,
26
28
  type,
27
- field,
29
+ field: parentField,
28
30
  fieldTypePlugins
29
31
  } = params;
30
32
  const typeSuffix = typeOfType === "input" ? "Input" : "";
31
33
  const typeName = (0, _createTypeName.createTypeName)(model.modelId);
32
34
  const mTypeName = (0, _createTypeName.createManageTypeName)(typeName); // `field` is an "object" field
33
35
 
34
- const fields = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
35
- const fieldTypeName = `${mTypeName}_${(0, _upperFirst.default)(field.fieldId)}`;
36
+ const fields = ((_parentField$settings = parentField.settings) === null || _parentField$settings === void 0 ? void 0 : _parentField$settings.fields) || [];
37
+ const fieldTypeName = `${mTypeName}_${(0, _upperFirst.default)(parentField.fieldId)}`;
36
38
  const typeFields = [];
37
39
  const nestedTypes = []; // Once the loop below starts, we'll be executing a recursive "object" type generation.
38
40
  // The main trick here is that nested objects don't know who the parent is, and will generate
@@ -42,14 +44,14 @@ const typeFromField = params => {
42
44
 
43
45
  const replace = new RegExp(`${mTypeName}_`, "g");
44
46
 
45
- for (const f of fields) {
47
+ for (const field of fields) {
46
48
  const result = typeOfType === "type" ? (0, _renderFields.renderField)({
47
- field: f,
49
+ field,
48
50
  type,
49
51
  model,
50
52
  fieldTypePlugins
51
53
  }) : (0, _renderInputFields.renderInputField)({
52
- field: f,
54
+ field,
53
55
  model,
54
56
  fieldTypePlugins
55
57
  });
@@ -83,6 +85,76 @@ const typeFromField = params => {
83
85
  };
84
86
  };
85
87
 
88
+ const createChildTypeDefs = params => {
89
+ var _field$settings, _field$settings2;
90
+
91
+ const {
92
+ field,
93
+ plugins,
94
+ model,
95
+ endpointType
96
+ } = params;
97
+ const fields = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
98
+ const typeName = createTypeName({
99
+ model,
100
+ field,
101
+ parents: (_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.parents
102
+ });
103
+ const filters = fields.map(child => {
104
+ var _child$settings;
105
+
106
+ const createListFilters = plugins[child.type][endpointType].createListFilters;
107
+
108
+ if (!createListFilters) {
109
+ return null;
110
+ }
111
+
112
+ const filters = createListFilters({
113
+ model,
114
+ field: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
115
+ settings: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child.settings), {}, {
116
+ parents: (((_child$settings = child.settings) === null || _child$settings === void 0 ? void 0 : _child$settings.parents) || []).concat([field.fieldId])
117
+ })
118
+ }),
119
+ plugins
120
+ });
121
+
122
+ if (!filters) {
123
+ return null;
124
+ }
125
+
126
+ return filters;
127
+ }).filter(Boolean).join("\n");
128
+ return `input ${typeName}WhereInput {
129
+ ${filters}
130
+ }`;
131
+ };
132
+
133
+ const createTypeName = params => {
134
+ const {
135
+ model,
136
+ parents = [],
137
+ field
138
+ } = params;
139
+ return [model.modelId].concat(parents).concat([field.fieldId]).filter(Boolean).map(id => {
140
+ return (0, _upperFirst.default)(id);
141
+ }).join("_");
142
+ };
143
+
144
+ const createListFilters = ({
145
+ field,
146
+ model
147
+ }) => {
148
+ var _field$settings3;
149
+
150
+ const typeName = createTypeName({
151
+ model,
152
+ field,
153
+ parents: (_field$settings3 = field.settings) === null || _field$settings3 === void 0 ? void 0 : _field$settings3.parents
154
+ });
155
+ return `${field.fieldId}: ${typeName}WhereInput`;
156
+ };
157
+
86
158
  const createObjectField = () => {
87
159
  return {
88
160
  name: "cms-model-field-to-graphql-object",
@@ -112,9 +184,15 @@ const createObjectField = () => {
112
184
  fieldType,
113
185
  typeDefs
114
186
  } = result;
187
+ const childTypeDefs = createChildTypeDefs({
188
+ model,
189
+ field,
190
+ plugins: fieldTypePlugins,
191
+ endpointType: "read"
192
+ });
115
193
  return {
116
194
  fields: `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,
117
- typeDefs
195
+ typeDefs: `${typeDefs}${childTypeDefs}`
118
196
  };
119
197
  },
120
198
 
@@ -123,9 +201,9 @@ const createObjectField = () => {
123
201
  createFieldResolvers,
124
202
  graphQLType
125
203
  }) {
126
- var _field$settings2;
204
+ var _field$settings4;
127
205
 
128
- if (!((_field$settings2 = field.settings) !== null && _field$settings2 !== void 0 && _field$settings2.fields) || field.settings.fields.length === 0) {
206
+ if (!((_field$settings4 = field.settings) !== null && _field$settings4 !== void 0 && _field$settings4.fields) || field.settings.fields.length === 0) {
129
207
  return false;
130
208
  }
131
209
 
@@ -138,8 +216,9 @@ const createObjectField = () => {
138
216
  resolver: null,
139
217
  typeResolvers: typeResolvers || {}
140
218
  };
141
- }
219
+ },
142
220
 
221
+ createListFilters
143
222
  },
144
223
  manage: {
145
224
  createTypeField({
@@ -163,9 +242,15 @@ const createObjectField = () => {
163
242
  fieldType,
164
243
  typeDefs
165
244
  } = result;
245
+ const childTypeDefs = createChildTypeDefs({
246
+ model,
247
+ field,
248
+ plugins: fieldTypePlugins,
249
+ endpointType: "manage"
250
+ });
166
251
  return {
167
252
  fields: `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,
168
- typeDefs
253
+ typeDefs: `${typeDefs}${childTypeDefs}`
169
254
  };
170
255
  },
171
256
 
@@ -201,9 +286,9 @@ const createObjectField = () => {
201
286
  field,
202
287
  createFieldResolvers
203
288
  }) {
204
- var _field$settings3;
289
+ var _field$settings5;
205
290
 
206
- if (!((_field$settings3 = field.settings) !== null && _field$settings3 !== void 0 && _field$settings3.fields) || field.settings.fields.length === 0) {
291
+ if (!((_field$settings5 = field.settings) !== null && _field$settings5 !== void 0 && _field$settings5.fields) || field.settings.fields.length === 0) {
207
292
  return false;
208
293
  }
209
294
 
@@ -216,8 +301,9 @@ const createObjectField = () => {
216
301
  resolver: null,
217
302
  typeResolvers: typeResolvers || {}
218
303
  };
219
- }
304
+ },
220
305
 
306
+ createListFilters
221
307
  }
222
308
  };
223
309
  };
@@ -1 +1 @@
1
- {"version":3,"names":["typeFromField","params","typeOfType","model","type","field","fieldTypePlugins","typeSuffix","typeName","createTypeName","modelId","mTypeName","createManageTypeName","fields","settings","fieldTypeName","upperFirst","fieldId","typeFields","nestedTypes","replace","RegExp","f","result","renderField","renderInputField","typeDefs","push","fieldType","join","createObjectField","name","isSortable","isSearchable","read","createTypeField","multipleValues","createResolver","createFieldResolvers","graphQLType","length","typeResolvers","resolver","manage","createInputField","attachRequiredFieldValue"],"sources":["object.ts"],"sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport {\n ApiEndpoint,\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { renderField } from \"~/utils/renderFields\";\nimport { renderInputField } from \"~/utils/renderInputFields\";\nimport { createManageTypeName, createTypeName } from \"~/utils/createTypeName\";\nimport { attachRequiredFieldValue } from \"./helpers\";\n\ninterface TypeFromFieldParams {\n typeOfType: string;\n model: CmsModel;\n type: ApiEndpoint;\n field: CmsModelField;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface TypeFromFieldResponse {\n fieldType: string;\n typeDefs: string;\n}\nconst typeFromField = (params: TypeFromFieldParams): TypeFromFieldResponse | null => {\n const { typeOfType, model, type, field, fieldTypePlugins } = params;\n const typeSuffix = typeOfType === \"input\" ? \"Input\" : \"\";\n const typeName = createTypeName(model.modelId);\n const mTypeName = createManageTypeName(typeName);\n\n // `field` is an \"object\" field\n const fields: CmsModelField[] = field.settings?.fields || [];\n\n const fieldTypeName = `${mTypeName}_${upperFirst(field.fieldId)}`;\n\n const typeFields = [];\n const nestedTypes = [];\n\n // Once the loop below starts, we'll be executing a recursive \"object\" type generation.\n // The main trick here is that nested objects don't know who the parent is, and will generate\n // type names using the \"model\", as if they're at the top level:\n // Every time the types are returned, we need to replace the model name in the generated type name\n // with the actual prefix which includes parent field name type.\n const replace = new RegExp(`${mTypeName}_`, \"g\");\n\n for (const f of fields) {\n const result =\n typeOfType === \"type\"\n ? renderField({ field: f, type, model, fieldTypePlugins })\n : renderInputField({ field: f, model, fieldTypePlugins });\n\n if (!result) {\n continue;\n }\n\n const { fields, typeDefs } = result;\n\n typeFields.push(fields.replace(replace, `${fieldTypeName}_`));\n if (typeDefs) {\n nestedTypes.push(typeDefs.replace(replace, `${fieldTypeName}_`));\n }\n }\n\n return {\n fieldType: `${fieldTypeName}${typeSuffix}`,\n typeDefs: /* GraphQL */ `\n ${nestedTypes.join(\"\\n\")}\n \n ${typeOfType} ${fieldTypeName}${typeSuffix} {\n ${typeFields.join(\"\\n\")}\n }\n `\n };\n};\n\nexport const createObjectField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-object\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"object\",\n isSortable: false,\n isSearchable: false,\n read: {\n createTypeField({ field, model, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"type\",\n model,\n type: \"read\",\n field,\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: `${field.fieldId}: ${\n field.multipleValues ? `[${fieldType}!]` : fieldType\n }`,\n typeDefs\n };\n },\n createResolver({ field, createFieldResolvers, graphQLType }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n }\n },\n manage: {\n createTypeField({ model, field, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"type\",\n model,\n type: \"manage\",\n field,\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: `${field.fieldId}: ${\n field.multipleValues ? `[${fieldType}!]` : fieldType\n }`,\n typeDefs\n };\n },\n createInputField({ model, field, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"input\",\n model,\n type: \"manage\",\n field,\n fieldTypePlugins\n });\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: attachRequiredFieldValue(\n `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,\n field\n ),\n typeDefs\n };\n },\n createResolver({ graphQLType, field, createFieldResolvers }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n }\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["typeFromField","params","typeOfType","model","type","field","parentField","fieldTypePlugins","typeSuffix","typeName","createModelTypeName","modelId","mTypeName","createManageTypeName","fields","settings","fieldTypeName","upperFirst","fieldId","typeFields","nestedTypes","replace","RegExp","result","renderField","renderInputField","typeDefs","push","fieldType","join","createChildTypeDefs","plugins","endpointType","createTypeName","parents","filters","map","child","createListFilters","concat","filter","Boolean","id","lodashUpperFirst","createObjectField","name","isSortable","isSearchable","read","createTypeField","childTypeDefs","multipleValues","createResolver","createFieldResolvers","graphQLType","length","typeResolvers","resolver","manage","createInputField","attachRequiredFieldValue"],"sources":["object.ts"],"sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport {\n ApiEndpoint,\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { renderField } from \"~/utils/renderFields\";\nimport { renderInputField } from \"~/utils/renderInputFields\";\nimport {\n createManageTypeName,\n createTypeName as createModelTypeName\n} from \"~/utils/createTypeName\";\nimport { attachRequiredFieldValue } from \"./helpers\";\nimport lodashUpperFirst from \"lodash/upperFirst\";\n\ninterface TypeFromFieldParams {\n typeOfType: string;\n model: CmsModel;\n type: ApiEndpoint;\n field: CmsModelField;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface TypeFromFieldResponse {\n fieldType: string;\n typeDefs: string;\n}\nconst typeFromField = (params: TypeFromFieldParams): TypeFromFieldResponse | null => {\n const { typeOfType, model, type, field: parentField, fieldTypePlugins } = params;\n const typeSuffix = typeOfType === \"input\" ? \"Input\" : \"\";\n const typeName = createModelTypeName(model.modelId);\n const mTypeName = createManageTypeName(typeName);\n\n // `field` is an \"object\" field\n const fields: CmsModelField[] = parentField.settings?.fields || [];\n\n const fieldTypeName = `${mTypeName}_${upperFirst(parentField.fieldId)}`;\n\n const typeFields = [];\n const nestedTypes = [];\n\n // Once the loop below starts, we'll be executing a recursive \"object\" type generation.\n // The main trick here is that nested objects don't know who the parent is, and will generate\n // type names using the \"model\", as if they're at the top level:\n // Every time the types are returned, we need to replace the model name in the generated type name\n // with the actual prefix which includes parent field name type.\n const replace = new RegExp(`${mTypeName}_`, \"g\");\n\n for (const field of fields) {\n const result =\n typeOfType === \"type\"\n ? renderField({\n field,\n type,\n model,\n fieldTypePlugins\n })\n : renderInputField({\n field,\n model,\n fieldTypePlugins\n });\n\n if (!result) {\n continue;\n }\n\n const { fields, typeDefs } = result;\n\n typeFields.push(fields.replace(replace, `${fieldTypeName}_`));\n if (typeDefs) {\n nestedTypes.push(typeDefs.replace(replace, `${fieldTypeName}_`));\n }\n }\n\n return {\n fieldType: `${fieldTypeName}${typeSuffix}`,\n typeDefs: /* GraphQL */ `\n ${nestedTypes.join(\"\\n\")}\n \n ${typeOfType} ${fieldTypeName}${typeSuffix} {\n ${typeFields.join(\"\\n\")}\n }\n `\n };\n};\n\ninterface AttachTypeDefinitionsParams {\n model: CmsModel;\n field: CmsModelField;\n plugins: CmsFieldTypePlugins;\n endpointType: \"manage\" | \"read\";\n}\nconst createChildTypeDefs = (params: AttachTypeDefinitionsParams): string => {\n const { field, plugins, model, endpointType } = params;\n const fields = field.settings?.fields || [];\n\n const typeName = createTypeName({\n model,\n field,\n parents: field.settings?.parents\n });\n\n const filters = fields\n .map(child => {\n const createListFilters = plugins[child.type][endpointType].createListFilters;\n if (!createListFilters) {\n return null;\n }\n\n const filters = createListFilters({\n model,\n field: {\n ...child,\n settings: {\n ...child.settings,\n parents: (child.settings?.parents || []).concat([field.fieldId])\n }\n },\n plugins\n });\n if (!filters) {\n return null;\n }\n return filters;\n })\n .filter(Boolean)\n .join(\"\\n\");\n return `input ${typeName}WhereInput {\n ${filters}\n }`;\n};\n\ninterface CreateTypeNameParams {\n model: CmsModel;\n parents?: string[];\n field: CmsModelField;\n}\nconst createTypeName = (params: CreateTypeNameParams): string => {\n const { model, parents = [], field } = params;\n return [model.modelId]\n .concat(parents)\n .concat([field.fieldId])\n .filter(Boolean)\n .map(id => {\n return lodashUpperFirst(id);\n })\n .join(\"_\");\n};\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n model: CmsModel;\n}\nconst createListFilters = ({ field, model }: CreateListFiltersParams) => {\n const typeName = createTypeName({\n model,\n field,\n parents: field.settings?.parents\n });\n\n return `${field.fieldId}: ${typeName}WhereInput`;\n};\n\nexport const createObjectField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-object\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"object\",\n isSortable: false,\n isSearchable: false,\n read: {\n createTypeField({ field, model, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"type\",\n model,\n type: \"read\",\n field,\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n const childTypeDefs = createChildTypeDefs({\n model,\n field,\n plugins: fieldTypePlugins,\n endpointType: \"read\"\n });\n\n return {\n fields: `${field.fieldId}: ${\n field.multipleValues ? `[${fieldType}!]` : fieldType\n }`,\n typeDefs: `${typeDefs}${childTypeDefs}`\n };\n },\n createResolver({ field, createFieldResolvers, graphQLType }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n },\n createListFilters\n },\n manage: {\n createTypeField({ model, field, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"type\",\n model,\n type: \"manage\",\n field,\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n const childTypeDefs = createChildTypeDefs({\n model,\n field,\n plugins: fieldTypePlugins,\n endpointType: \"manage\"\n });\n\n return {\n fields: `${field.fieldId}: ${\n field.multipleValues ? `[${fieldType}!]` : fieldType\n }`,\n typeDefs: `${typeDefs}${childTypeDefs}`\n };\n },\n createInputField({ model, field, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"input\",\n model,\n type: \"manage\",\n field,\n fieldTypePlugins\n });\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: attachRequiredFieldValue(\n `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,\n field\n ),\n typeDefs\n };\n },\n createResolver({ graphQLType, field, createFieldResolvers }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n },\n createListFilters\n }\n };\n};\n"],"mappings":"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"}
@@ -1,13 +1,13 @@
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.createRefField = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _createTypeName = require("../utils/createTypeName");
13
13
 
@@ -15,10 +15,6 @@ var _utils = require("@webiny/utils");
15
15
 
16
16
  var _helpers = require("./helpers");
17
17
 
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; }
19
-
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; }
21
-
22
18
  const createUnionTypeName = (model, field) => {
23
19
  return `${(0, _createTypeName.createReadTypeName)(model.modelId)}${(0, _createTypeName.createReadTypeName)(field.fieldId)}`;
24
20
  };
@@ -48,7 +44,7 @@ const createFilteringTypeDef = () => {
48
44
 
49
45
  const appendTypename = (entries, typename) => {
50
46
  return entries.map(item => {
51
- return _objectSpread(_objectSpread({}, item), {}, {
47
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
52
48
  __typename: typename
53
49
  });
54
50
  });
@@ -176,7 +172,7 @@ const createRefField = () => {
176
172
  return null;
177
173
  }
178
174
 
179
- return _objectSpread(_objectSpread({}, revisions[0]), {}, {
175
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, revisions[0]), {}, {
180
176
  __typename: modelIdToTypeName.get(value.modelId)
181
177
  });
182
178
  };
@@ -1 +1 @@
1
- {"version":3,"names":["createUnionTypeName","model","field","createReadTypeName","modelId","fieldId","createListFilters","createFilteringTypeDef","appendTypename","entries","typename","map","item","__typename","getFieldModels","settings","Array","isArray","models","modelIdToTypeName","Map","createRefField","name","type","fieldType","isSortable","isSearchable","read","createTypeField","gqlType","length","multipleValues","createResolver","params","set","parent","_","context","cms","initialValue","value","entriesByModel","reduce","collection","ref","includes","entryId","push","getters","Object","keys","idList","getModelManager","READ","getPublishedByIds","getLatestByIds","get","Promise","all","then","results","result","concat","revisions","createSchema","unionFields","fields","filter","forEach","typeName","unionFieldsTypeDef","join","filteringTypeDef","typeDefs","resolvers","manage","RefField","id","parseIdentifier","createInputField","createGraphQLInputField"],"sources":["ref.ts"],"sourcesContent":["import {\n CmsEntry,\n CmsContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModel,\n CmsModelField\n} from \"~/types\";\nimport { createReadTypeName } from \"~/utils/createTypeName\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface RefFieldValue {\n id?: string;\n entryId: string;\n modelId: string;\n}\n\ninterface UnionField {\n model: CmsModel;\n field: CmsModelField;\n typeName: string;\n}\n\nconst createUnionTypeName = (model: CmsModel, field: CmsModelField) => {\n return `${createReadTypeName(model.modelId)}${createReadTypeName(field.fieldId)}`;\n};\n\ninterface CreateListFilterParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFilterParams) => {\n return `\n ${field.fieldId}: RefFieldWhereInput\n `;\n};\n\nconst createFilteringTypeDef = () => {\n return `\n input RefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n `;\n};\n\nconst appendTypename = (entries: CmsEntry[], typename: string): CmsEntry[] => {\n return entries.map(item => {\n return {\n ...item,\n __typename: typename\n };\n });\n};\n/**\n * We cast settings.models as object to have modelId because internally we know that it is so.\n * Internal stuff so we are sure that settings.models contains what we require.\n */\nconst getFieldModels = (field: CmsModelField): Pick<CmsModel, \"modelId\">[] => {\n if (!field.settings || Array.isArray(field.settings.models) === false) {\n return [];\n }\n return field.settings.models as Pick<CmsModel, \"modelId\">[];\n};\n\nconst modelIdToTypeName = new Map();\n\nexport const createRefField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-ref\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"ref\",\n isSortable: false,\n isSearchable: true,\n read: {\n createTypeField({ model, field }) {\n const models = field.settings?.models || [];\n const gqlType =\n models.length > 1\n ? createUnionTypeName(model, field)\n : createReadTypeName(models[0].modelId);\n\n return field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`;\n },\n /**\n * TS is complaining about mixed types for createResolver.\n * TODO @ts-refactor @pavel Maybe we should have a single createResolver method?\n */\n // @ts-ignore\n createResolver(params) {\n const { field } = params;\n // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.\n const models = field.settings?.models || [];\n for (const item of models) {\n modelIdToTypeName.set(item.modelId, createReadTypeName(item.modelId));\n }\n\n return async (parent, _, context: CmsContext) => {\n const { cms } = context;\n\n // Get field value for this entry\n const initialValue = parent[field.fieldId] as RefFieldValue | RefFieldValue[];\n\n if (!initialValue) {\n return null;\n }\n\n if (field.multipleValues) {\n /**\n * We cast because value really can be array and single value.\n * At this point, we are 99% sure that it is an array (+ we check for it)\n */\n const value = initialValue as RefFieldValue[];\n if (Array.isArray(value) === false || value.length === 0) {\n return [];\n }\n\n const entriesByModel = value.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.entryId) === true) {\n return collection;\n }\n\n collection[ref.modelId].push(ref.entryId);\n\n return collection;\n }, {} as Record<string, string[]>);\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(modelId);\n\n let entries: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n entries = await model.getPublishedByIds(idList);\n }\n // `preview` and `manage` with `latest` data\n else {\n entries = await model.getLatestByIds(idList);\n }\n\n return appendTypename(entries, modelIdToTypeName.get(modelId));\n });\n\n return await Promise.all(getters).then((results: any[]) =>\n results.reduce((result, item) => result.concat(item), [])\n );\n }\n\n const value = initialValue as RefFieldValue;\n\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(value.modelId);\n\n let revisions: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n revisions = await model.getPublishedByIds([value.entryId]);\n }\n // `preview` API works with `latest` data\n else {\n revisions = await model.getLatestByIds([value.entryId]);\n }\n\n /**\n * If there are no revisions we must return null.\n */\n if (!revisions || revisions.length === 0) {\n return null;\n }\n return {\n ...revisions[0],\n __typename: modelIdToTypeName.get(value.modelId)\n };\n };\n },\n createSchema({ models }) {\n const unionFields: UnionField[] = [];\n for (const model of models) {\n // Generate a dedicated union type for every `ref` field which has more than 1 content model assigned.\n model.fields\n .filter(\n field =>\n field.type === \"ref\" && (field.settings?.models || []).length > 1\n )\n .forEach(field =>\n unionFields.push({\n model,\n field,\n typeName: createUnionTypeName(model, field)\n })\n );\n }\n const unionFieldsTypeDef = unionFields\n .map(\n ({ field, typeName }) =>\n `union ${typeName} = ${getFieldModels(field)\n .map(({ modelId }) => createReadTypeName(modelId))\n .join(\" | \")}`\n )\n .join(\"\\n\");\n\n const filteringTypeDef = `\n ${createFilteringTypeDef()}\n \n ${unionFieldsTypeDef}\n `;\n\n return {\n typeDefs: filteringTypeDef,\n resolvers: {}\n };\n },\n createListFilters\n },\n manage: {\n createSchema() {\n /**\n * entryId in RefFieldInput is deprecated but cannot mark it as GraphQL does not allow marking input fields as deprecated\n */\n return {\n typeDefs: `\n type RefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n \n input RefFieldInput {\n modelId: String!\n id: ID!\n }\n \n ${createFilteringTypeDef()}\n `,\n resolvers: {\n RefField: {\n entryId: (parent: RefFieldValue) => {\n const { id } = parseIdentifier(parent.entryId || parent.id);\n return id;\n },\n id: (parent: RefFieldValue) => {\n return parent.id || parent.entryId;\n }\n }\n }\n };\n },\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"RefFieldInput\");\n },\n createListFilters\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createUnionTypeName","model","field","createReadTypeName","modelId","fieldId","createListFilters","createFilteringTypeDef","appendTypename","entries","typename","map","item","__typename","getFieldModels","settings","Array","isArray","models","modelIdToTypeName","Map","createRefField","name","type","fieldType","isSortable","isSearchable","read","createTypeField","gqlType","length","multipleValues","createResolver","params","set","parent","_","context","cms","initialValue","value","entriesByModel","reduce","collection","ref","includes","entryId","push","getters","Object","keys","idList","getModelManager","READ","getPublishedByIds","getLatestByIds","get","Promise","all","then","results","result","concat","revisions","createSchema","unionFields","fields","filter","forEach","typeName","unionFieldsTypeDef","join","filteringTypeDef","typeDefs","resolvers","manage","RefField","id","parseIdentifier","createInputField","createGraphQLInputField"],"sources":["ref.ts"],"sourcesContent":["import {\n CmsEntry,\n CmsContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModel,\n CmsModelField\n} from \"~/types\";\nimport { createReadTypeName } from \"~/utils/createTypeName\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface RefFieldValue {\n id?: string;\n entryId: string;\n modelId: string;\n}\n\ninterface UnionField {\n model: CmsModel;\n field: CmsModelField;\n typeName: string;\n}\n\nconst createUnionTypeName = (model: CmsModel, field: CmsModelField) => {\n return `${createReadTypeName(model.modelId)}${createReadTypeName(field.fieldId)}`;\n};\n\ninterface CreateListFilterParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFilterParams) => {\n return `\n ${field.fieldId}: RefFieldWhereInput\n `;\n};\n\nconst createFilteringTypeDef = () => {\n return `\n input RefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n `;\n};\n\nconst appendTypename = (entries: CmsEntry[], typename: string): CmsEntry[] => {\n return entries.map(item => {\n return {\n ...item,\n __typename: typename\n };\n });\n};\n/**\n * We cast settings.models as object to have modelId because internally we know that it is so.\n * Internal stuff so we are sure that settings.models contains what we require.\n */\nconst getFieldModels = (field: CmsModelField): Pick<CmsModel, \"modelId\">[] => {\n if (!field.settings || Array.isArray(field.settings.models) === false) {\n return [];\n }\n return field.settings.models as Pick<CmsModel, \"modelId\">[];\n};\n\nconst modelIdToTypeName = new Map();\n\nexport const createRefField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-ref\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"ref\",\n isSortable: false,\n isSearchable: true,\n read: {\n createTypeField({ model, field }) {\n const models = field.settings?.models || [];\n const gqlType =\n models.length > 1\n ? createUnionTypeName(model, field)\n : createReadTypeName(models[0].modelId);\n\n return field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`;\n },\n /**\n * TS is complaining about mixed types for createResolver.\n * TODO @ts-refactor @pavel Maybe we should have a single createResolver method?\n */\n // @ts-ignore\n createResolver(params) {\n const { field } = params;\n // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.\n const models = field.settings?.models || [];\n for (const item of models) {\n modelIdToTypeName.set(item.modelId, createReadTypeName(item.modelId));\n }\n\n return async (parent, _, context: CmsContext) => {\n const { cms } = context;\n\n // Get field value for this entry\n const initialValue = parent[field.fieldId] as RefFieldValue | RefFieldValue[];\n\n if (!initialValue) {\n return null;\n }\n\n if (field.multipleValues) {\n /**\n * We cast because value really can be array and single value.\n * At this point, we are 99% sure that it is an array (+ we check for it)\n */\n const value = initialValue as RefFieldValue[];\n if (Array.isArray(value) === false || value.length === 0) {\n return [];\n }\n\n const entriesByModel = value.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.entryId) === true) {\n return collection;\n }\n\n collection[ref.modelId].push(ref.entryId);\n\n return collection;\n }, {} as Record<string, string[]>);\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(modelId);\n\n let entries: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n entries = await model.getPublishedByIds(idList);\n }\n // `preview` and `manage` with `latest` data\n else {\n entries = await model.getLatestByIds(idList);\n }\n\n return appendTypename(entries, modelIdToTypeName.get(modelId));\n });\n\n return await Promise.all(getters).then((results: any[]) =>\n results.reduce((result, item) => result.concat(item), [])\n );\n }\n\n const value = initialValue as RefFieldValue;\n\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(value.modelId);\n\n let revisions: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n revisions = await model.getPublishedByIds([value.entryId]);\n }\n // `preview` API works with `latest` data\n else {\n revisions = await model.getLatestByIds([value.entryId]);\n }\n\n /**\n * If there are no revisions we must return null.\n */\n if (!revisions || revisions.length === 0) {\n return null;\n }\n return {\n ...revisions[0],\n __typename: modelIdToTypeName.get(value.modelId)\n };\n };\n },\n createSchema({ models }) {\n const unionFields: UnionField[] = [];\n for (const model of models) {\n // Generate a dedicated union type for every `ref` field which has more than 1 content model assigned.\n model.fields\n .filter(\n field =>\n field.type === \"ref\" && (field.settings?.models || []).length > 1\n )\n .forEach(field =>\n unionFields.push({\n model,\n field,\n typeName: createUnionTypeName(model, field)\n })\n );\n }\n const unionFieldsTypeDef = unionFields\n .map(\n ({ field, typeName }) =>\n `union ${typeName} = ${getFieldModels(field)\n .map(({ modelId }) => createReadTypeName(modelId))\n .join(\" | \")}`\n )\n .join(\"\\n\");\n\n const filteringTypeDef = `\n ${createFilteringTypeDef()}\n \n ${unionFieldsTypeDef}\n `;\n\n return {\n typeDefs: filteringTypeDef,\n resolvers: {}\n };\n },\n createListFilters\n },\n manage: {\n createSchema() {\n /**\n * entryId in RefFieldInput is deprecated but cannot mark it as GraphQL does not allow marking input fields as deprecated\n */\n return {\n typeDefs: `\n type RefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n \n input RefFieldInput {\n modelId: String!\n id: ID!\n }\n \n ${createFilteringTypeDef()}\n `,\n resolvers: {\n RefField: {\n entryId: (parent: RefFieldValue) => {\n const { id } = parseIdentifier(parent.entryId || parent.id);\n return id;\n },\n id: (parent: RefFieldValue) => {\n return parent.id || parent.entryId;\n }\n }\n }\n };\n },\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"RefFieldInput\");\n },\n createListFilters\n }\n };\n};\n"],"mappings":"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"}
@@ -3,12 +3,12 @@ export declare class DefaultCmsModelManager implements CmsModelManager {
3
3
  private readonly _context;
4
4
  private readonly _model;
5
5
  constructor(context: CmsContext, model: CmsModel);
6
- create(data: CreateCmsEntryInput): Promise<import("../types").CmsEntry>;
6
+ create(data: CreateCmsEntryInput): Promise<import("../types").CmsEntry<import("~/types").CmsEntryValues>>;
7
7
  delete(id: string): Promise<void>;
8
- get(id: string): Promise<import("../types").CmsEntry>;
9
- listPublished(params: CmsEntryListParams): Promise<[import("../types").CmsEntry[], import("../types").CmsEntryMeta]>;
10
- listLatest(params: CmsEntryListParams): Promise<[import("../types").CmsEntry[], import("../types").CmsEntryMeta]>;
11
- getPublishedByIds(ids: string[]): Promise<import("../types").CmsEntry[]>;
12
- getLatestByIds(ids: string[]): Promise<import("../types").CmsEntry[]>;
13
- update(id: string, data: UpdateCmsEntryInput): Promise<import("../types").CmsEntry>;
8
+ get(id: string): Promise<import("../types").CmsEntry<import("~/types").CmsEntryValues>>;
9
+ listPublished(params: CmsEntryListParams): Promise<[import("../types").CmsEntry<import("~/types").CmsEntryValues>[], import("../types").CmsEntryMeta]>;
10
+ listLatest(params: CmsEntryListParams): Promise<[import("../types").CmsEntry<import("~/types").CmsEntryValues>[], import("../types").CmsEntryMeta]>;
11
+ getPublishedByIds(ids: string[]): Promise<import("../types").CmsEntry<import("~/types").CmsEntryValues>[]>;
12
+ getLatestByIds(ids: string[]): Promise<import("../types").CmsEntry<import("~/types").CmsEntryValues>[]>;
13
+ update(id: string, data: UpdateCmsEntryInput): Promise<import("../types").CmsEntry<import("~/types").CmsEntryValues>>;
14
14
  }
@@ -1,6 +1,6 @@
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms",
3
- "version": "0.0.0-unstable.5e7233243f",
3
+ "version": "0.0.0-unstable.615a930a68",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "cms:base"
@@ -18,25 +18,25 @@
18
18
  ],
19
19
  "license": "MIT",
20
20
  "dependencies": {
21
- "@babel/runtime": "7.18.9",
21
+ "@babel/runtime": "7.19.0",
22
22
  "@commodo/fields": "1.1.2-beta.20",
23
23
  "@graphql-tools/schema": "7.1.5",
24
- "@webiny/api": "0.0.0-unstable.5e7233243f",
25
- "@webiny/api-file-manager": "0.0.0-unstable.5e7233243f",
26
- "@webiny/api-i18n": "0.0.0-unstable.5e7233243f",
27
- "@webiny/api-i18n-ddb": "0.0.0-unstable.5e7233243f",
28
- "@webiny/api-security": "0.0.0-unstable.5e7233243f",
29
- "@webiny/api-tenancy": "0.0.0-unstable.5e7233243f",
30
- "@webiny/api-upgrade": "0.0.0-unstable.5e7233243f",
31
- "@webiny/error": "0.0.0-unstable.5e7233243f",
32
- "@webiny/handler": "0.0.0-unstable.5e7233243f",
33
- "@webiny/handler-aws": "0.0.0-unstable.5e7233243f",
34
- "@webiny/handler-db": "0.0.0-unstable.5e7233243f",
35
- "@webiny/handler-graphql": "0.0.0-unstable.5e7233243f",
36
- "@webiny/plugins": "0.0.0-unstable.5e7233243f",
37
- "@webiny/pubsub": "0.0.0-unstable.5e7233243f",
38
- "@webiny/utils": "0.0.0-unstable.5e7233243f",
39
- "@webiny/validation": "0.0.0-unstable.5e7233243f",
24
+ "@webiny/api": "0.0.0-unstable.615a930a68",
25
+ "@webiny/api-file-manager": "0.0.0-unstable.615a930a68",
26
+ "@webiny/api-i18n": "0.0.0-unstable.615a930a68",
27
+ "@webiny/api-i18n-ddb": "0.0.0-unstable.615a930a68",
28
+ "@webiny/api-security": "0.0.0-unstable.615a930a68",
29
+ "@webiny/api-tenancy": "0.0.0-unstable.615a930a68",
30
+ "@webiny/api-upgrade": "0.0.0-unstable.615a930a68",
31
+ "@webiny/error": "0.0.0-unstable.615a930a68",
32
+ "@webiny/handler": "0.0.0-unstable.615a930a68",
33
+ "@webiny/handler-aws": "0.0.0-unstable.615a930a68",
34
+ "@webiny/handler-db": "0.0.0-unstable.615a930a68",
35
+ "@webiny/handler-graphql": "0.0.0-unstable.615a930a68",
36
+ "@webiny/plugins": "0.0.0-unstable.615a930a68",
37
+ "@webiny/pubsub": "0.0.0-unstable.615a930a68",
38
+ "@webiny/utils": "0.0.0-unstable.615a930a68",
39
+ "@webiny/validation": "0.0.0-unstable.615a930a68",
40
40
  "commodo-fields-object": "1.0.6",
41
41
  "dataloader": "2.1.0",
42
42
  "dot-prop": "6.0.1",
@@ -49,15 +49,14 @@
49
49
  "slugify": "1.6.5"
50
50
  },
51
51
  "devDependencies": {
52
- "@babel/cli": "^7.16.0",
53
- "@babel/core": "^7.16.0",
54
- "@babel/preset-env": "^7.16.4",
55
- "@babel/preset-flow": "^7.16.0",
56
- "@webiny/api-security-so-ddb": "^0.0.0-unstable.5e7233243f",
57
- "@webiny/api-tenancy-so-ddb": "^0.0.0-unstable.5e7233243f",
58
- "@webiny/api-wcp": "^0.0.0-unstable.5e7233243f",
59
- "@webiny/cli": "^0.0.0-unstable.5e7233243f",
60
- "@webiny/project-utils": "^0.0.0-unstable.5e7233243f",
52
+ "@babel/cli": "^7.19.3",
53
+ "@babel/core": "^7.19.3",
54
+ "@babel/preset-env": "^7.19.4",
55
+ "@webiny/api-security-so-ddb": "^0.0.0-unstable.615a930a68",
56
+ "@webiny/api-tenancy-so-ddb": "^0.0.0-unstable.615a930a68",
57
+ "@webiny/api-wcp": "^0.0.0-unstable.615a930a68",
58
+ "@webiny/cli": "^0.0.0-unstable.615a930a68",
59
+ "@webiny/project-utils": "^0.0.0-unstable.615a930a68",
61
60
  "apollo-graphql": "^0.9.5",
62
61
  "get-yarn-workspaces": "^1.0.2",
63
62
  "graphql": "^15.7.2",
@@ -77,5 +76,5 @@
77
76
  "build": "yarn webiny run build",
78
77
  "watch": "yarn webiny run watch"
79
78
  },
80
- "gitHead": "995a4b337db9b8497c6615e335dcd206afe26f8f"
79
+ "gitHead": "615a930a68d692c832e4f100405eeb3f5a8874af"
81
80
  }
@@ -1,6 +1,6 @@
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
@@ -1,22 +1,21 @@
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.createManualPlugin = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _error = _interopRequireDefault(require("@webiny/error"));
13
13
 
14
14
  var _CmsParametersPlugin = require("../plugins/CmsParametersPlugin");
15
15
 
16
- 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
-
18
- 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; }
19
-
16
+ /**
17
+ * This would be used for custom Lambdas when there is no path or header information about the endpoint type and locale.
18
+ */
20
19
  const createManualPlugin = params => {
21
20
  return new _CmsParametersPlugin.CmsParametersPlugin(async () => {
22
21
  const {
@@ -30,9 +29,9 @@ const createManualPlugin = params => {
30
29
  if (!type && !locale) {
31
30
  return null;
32
31
  } else if (!type) {
33
- throw new _error.default(`There is defined "locale" CMS parameter but no "endpointType".`, "MALFORMED_ENDPOINT_TYPE", _objectSpread({}, params));
32
+ throw new _error.default(`There is defined "locale" CMS parameter but no "endpointType".`, "MALFORMED_ENDPOINT_TYPE", (0, _objectSpread2.default)({}, params));
34
33
  } else if (!locale) {
35
- throw new _error.default(`There is defined "endpointType" CMS parameter but no "locale".`, "MALFORMED_LOCALE_TYPE", _objectSpread({}, params));
34
+ throw new _error.default(`There is defined "endpointType" CMS parameter but no "locale".`, "MALFORMED_LOCALE_TYPE", (0, _objectSpread2.default)({}, params));
36
35
  }
37
36
 
38
37
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["createManualPlugin","params","CmsParametersPlugin","endpointType","type","locale","WebinyError"],"sources":["manual.ts"],"sourcesContent":["/**\n * This would be used for custom Lambdas when there is no path or header information about the endpoint type and locale.\n */\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsParametersPlugin,\n CmsParametersPluginResponseLocale,\n CmsParametersPluginResponseType\n} from \"~/plugins/CmsParametersPlugin\";\n\nexport interface ManualPluginParams {\n endpointType?: CmsParametersPluginResponseType;\n locale?: CmsParametersPluginResponseLocale;\n}\n\nexport const createManualPlugin = (params: ManualPluginParams): CmsParametersPlugin => {\n return new CmsParametersPlugin(async () => {\n const { endpointType: type, locale } = params;\n /**\n * if both of parameters are not existing, just skip this plugin.\n */\n if (!type && !locale) {\n return null;\n } else if (!type) {\n throw new WebinyError(\n `There is defined \"locale\" CMS parameter but no \"endpointType\".`,\n \"MALFORMED_ENDPOINT_TYPE\",\n {\n ...params\n }\n );\n } else if (!locale) {\n throw new WebinyError(\n `There is defined \"endpointType\" CMS parameter but no \"locale\".`,\n \"MALFORMED_LOCALE_TYPE\",\n {\n ...params\n }\n );\n }\n\n return {\n type,\n locale\n };\n });\n};\n"],"mappings":";;;;;;;;;;;AAGA;;AACA;;;;;;AAWO,MAAMA,kBAAkB,GAAIC,MAAD,IAAqD;EACnF,OAAO,IAAIC,wCAAJ,CAAwB,YAAY;IACvC,MAAM;MAAEC,YAAY,EAAEC,IAAhB;MAAsBC;IAAtB,IAAiCJ,MAAvC;IACA;AACR;AACA;;IACQ,IAAI,CAACG,IAAD,IAAS,CAACC,MAAd,EAAsB;MAClB,OAAO,IAAP;IACH,CAFD,MAEO,IAAI,CAACD,IAAL,EAAW;MACd,MAAM,IAAIE,cAAJ,CACD,gEADC,EAEF,yBAFE,oBAIKL,MAJL,EAAN;IAOH,CARM,MAQA,IAAI,CAACI,MAAL,EAAa;MAChB,MAAM,IAAIC,cAAJ,CACD,gEADC,EAEF,uBAFE,oBAIKL,MAJL,EAAN;IAOH;;IAED,OAAO;MACHG,IADG;MAEHC;IAFG,CAAP;EAIH,CA7BM,CAAP;AA8BH,CA/BM"}
1
+ {"version":3,"names":["createManualPlugin","params","CmsParametersPlugin","endpointType","type","locale","WebinyError"],"sources":["manual.ts"],"sourcesContent":["/**\n * This would be used for custom Lambdas when there is no path or header information about the endpoint type and locale.\n */\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsParametersPlugin,\n CmsParametersPluginResponseLocale,\n CmsParametersPluginResponseType\n} from \"~/plugins/CmsParametersPlugin\";\n\nexport interface ManualPluginParams {\n endpointType?: CmsParametersPluginResponseType;\n locale?: CmsParametersPluginResponseLocale;\n}\n\nexport const createManualPlugin = (params: ManualPluginParams): CmsParametersPlugin => {\n return new CmsParametersPlugin(async () => {\n const { endpointType: type, locale } = params;\n /**\n * if both of parameters are not existing, just skip this plugin.\n */\n if (!type && !locale) {\n return null;\n } else if (!type) {\n throw new WebinyError(\n `There is defined \"locale\" CMS parameter but no \"endpointType\".`,\n \"MALFORMED_ENDPOINT_TYPE\",\n {\n ...params\n }\n );\n } else if (!locale) {\n throw new WebinyError(\n `There is defined \"endpointType\" CMS parameter but no \"locale\".`,\n \"MALFORMED_LOCALE_TYPE\",\n {\n ...params\n }\n );\n }\n\n return {\n type,\n locale\n };\n });\n};\n"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAaO,MAAMA,kBAAkB,GAAIC,MAAD,IAAqD;EACnF,OAAO,IAAIC,wCAAJ,CAAwB,YAAY;IACvC,MAAM;MAAEC,YAAY,EAAEC,IAAhB;MAAsBC;IAAtB,IAAiCJ,MAAvC;IACA;AACR;AACA;;IACQ,IAAI,CAACG,IAAD,IAAS,CAACC,MAAd,EAAsB;MAClB,OAAO,IAAP;IACH,CAFD,MAEO,IAAI,CAACD,IAAL,EAAW;MACd,MAAM,IAAIE,cAAJ,CACD,gEADC,EAEF,yBAFE,kCAIKL,MAJL,EAAN;IAOH,CARM,MAQA,IAAI,CAACI,MAAL,EAAa;MAChB,MAAM,IAAIC,cAAJ,CACD,gEADC,EAEF,uBAFE,kCAIKL,MAJL,EAAN;IAOH;;IAED,OAAO;MACHG,IADG;MAEHC;IAFG,CAAP;EAIH,CA7BM,CAAP;AA8BH,CA/BM"}
@@ -1,6 +1,6 @@
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
@@ -1,6 +1,6 @@
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
@@ -1,6 +1,6 @@
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