@webiny/api-headless-cms 5.23.1 → 5.25.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 (255) hide show
  1. package/content/contextSetup.js.map +1 -0
  2. package/content/graphQLHandlerFactory.js +12 -2
  3. package/content/graphQLHandlerFactory.js.map +1 -0
  4. package/content/parameterPlugins.js.map +1 -0
  5. package/content/plugins/CmsGroupPlugin.js.map +1 -0
  6. package/content/plugins/CmsModelPlugin.js.map +1 -0
  7. package/content/plugins/CmsParametersPlugin.d.ts +1 -1
  8. package/content/plugins/CmsParametersPlugin.js.map +1 -0
  9. package/content/plugins/buildSchemaPlugins.js.map +1 -0
  10. package/content/plugins/crud/contentEntry/afterDelete.d.ts +3 -2
  11. package/content/plugins/crud/contentEntry/afterDelete.js +2 -1
  12. package/content/plugins/crud/contentEntry/afterDelete.js.map +1 -0
  13. package/content/plugins/crud/contentEntry/beforeCreate.d.ts +3 -2
  14. package/content/plugins/crud/contentEntry/beforeCreate.js.map +1 -0
  15. package/content/plugins/crud/contentEntry/beforeUpdate.d.ts +3 -2
  16. package/content/plugins/crud/contentEntry/beforeUpdate.js.map +1 -0
  17. package/content/plugins/crud/contentEntry/entryDataValidation.d.ts +2 -2
  18. package/content/plugins/crud/contentEntry/entryDataValidation.js +2 -3
  19. package/content/plugins/crud/contentEntry/entryDataValidation.js.map +1 -0
  20. package/content/plugins/crud/contentEntry/markLockedFields.d.ts +2 -1
  21. package/content/plugins/crud/contentEntry/markLockedFields.js +1 -1
  22. package/content/plugins/crud/contentEntry/markLockedFields.js.map +1 -0
  23. package/content/plugins/crud/contentEntry/referenceFieldsMapping.js +7 -3
  24. package/content/plugins/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
  25. package/content/plugins/crud/contentEntry.crud.d.ts +2 -2
  26. package/content/plugins/crud/contentEntry.crud.js +24 -13
  27. package/content/plugins/crud/contentEntry.crud.js.map +1 -0
  28. package/content/plugins/crud/contentModel/afterCreate.d.ts +3 -2
  29. package/content/plugins/crud/contentModel/afterCreate.js.map +1 -0
  30. package/content/plugins/crud/contentModel/afterDelete.d.ts +3 -2
  31. package/content/plugins/crud/contentModel/afterDelete.js.map +1 -0
  32. package/content/plugins/crud/contentModel/afterUpdate.d.ts +3 -2
  33. package/content/plugins/crud/contentModel/afterUpdate.js.map +1 -0
  34. package/content/plugins/crud/contentModel/beforeCreate.d.ts +5 -4
  35. package/content/plugins/crud/contentModel/beforeCreate.js +1 -1
  36. package/content/plugins/crud/contentModel/beforeCreate.js.map +1 -0
  37. package/content/plugins/crud/contentModel/beforeDelete.d.ts +3 -2
  38. package/content/plugins/crud/contentModel/beforeDelete.js.map +1 -0
  39. package/content/plugins/crud/contentModel/beforeUpdate.d.ts +3 -2
  40. package/content/plugins/crud/contentModel/beforeUpdate.js +77 -0
  41. package/content/plugins/crud/contentModel/beforeUpdate.js.map +1 -0
  42. package/content/plugins/crud/contentModel/contentModelManagerFactory.d.ts +2 -2
  43. package/content/plugins/crud/contentModel/contentModelManagerFactory.js.map +1 -0
  44. package/content/plugins/crud/contentModel/createFieldModels.js.map +1 -0
  45. package/content/plugins/crud/contentModel/idValidation.js.map +1 -0
  46. package/content/plugins/crud/contentModel/models.js +9 -0
  47. package/content/plugins/crud/contentModel/models.js.map +1 -0
  48. package/content/plugins/crud/contentModel/validateLayout.js.map +1 -0
  49. package/content/plugins/crud/contentModel.crud.d.ts +2 -2
  50. package/content/plugins/crud/contentModel.crud.js +2 -2
  51. package/content/plugins/crud/contentModel.crud.js.map +1 -0
  52. package/content/plugins/crud/contentModelGroup/beforeCreate.d.ts +3 -2
  53. package/content/plugins/crud/contentModelGroup/beforeCreate.js.map +1 -0
  54. package/content/plugins/crud/contentModelGroup/beforeDelete.d.ts +3 -2
  55. package/content/plugins/crud/contentModelGroup/beforeDelete.js.map +1 -0
  56. package/content/plugins/crud/contentModelGroup/beforeUpdate.d.ts +3 -2
  57. package/content/plugins/crud/contentModelGroup/beforeUpdate.js.map +1 -0
  58. package/content/plugins/crud/contentModelGroup.crud.d.ts +2 -2
  59. package/content/plugins/crud/contentModelGroup.crud.js.map +1 -0
  60. package/content/plugins/crud/index.d.ts +2 -2
  61. package/content/plugins/crud/index.js.map +1 -0
  62. package/content/plugins/graphqlFields/boolean.js +2 -6
  63. package/content/plugins/graphqlFields/boolean.js.map +1 -0
  64. package/content/plugins/graphqlFields/datetime.js +5 -3
  65. package/content/plugins/graphqlFields/datetime.js.map +1 -0
  66. package/content/plugins/graphqlFields/file.js +2 -6
  67. package/content/plugins/graphqlFields/file.js.map +1 -0
  68. package/content/plugins/graphqlFields/helpers.d.ts +6 -0
  69. package/content/plugins/graphqlFields/helpers.js +49 -0
  70. package/content/plugins/graphqlFields/helpers.js.map +1 -0
  71. package/content/plugins/graphqlFields/index.js.map +1 -0
  72. package/content/plugins/graphqlFields/longText.js +2 -6
  73. package/content/plugins/graphqlFields/longText.js.map +1 -0
  74. package/content/plugins/graphqlFields/number.js +2 -6
  75. package/content/plugins/graphqlFields/number.js.map +1 -0
  76. package/content/plugins/graphqlFields/object.js +20 -18
  77. package/content/plugins/graphqlFields/object.js.map +1 -0
  78. package/content/plugins/graphqlFields/ref.js +51 -18
  79. package/content/plugins/graphqlFields/ref.js.map +1 -0
  80. package/content/plugins/graphqlFields/richText.js +2 -6
  81. package/content/plugins/graphqlFields/richText.js.map +1 -0
  82. package/content/plugins/graphqlFields/text.js +2 -6
  83. package/content/plugins/graphqlFields/text.js.map +1 -0
  84. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +1 -1
  85. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +1 -0
  86. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js.map +1 -0
  87. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +1 -1
  88. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +1 -0
  89. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js.map +1 -0
  90. package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +3 -3
  91. package/content/plugins/modelManager/DefaultCmsModelManager.js.map +1 -0
  92. package/content/plugins/modelManager/index.js.map +1 -0
  93. package/content/plugins/schema/baseSchema.js +1 -0
  94. package/content/plugins/schema/baseSchema.js.map +1 -0
  95. package/content/plugins/schema/contentEntries.js +12 -5
  96. package/content/plugins/schema/contentEntries.js.map +1 -0
  97. package/content/plugins/schema/contentModelGroups.js +1 -2
  98. package/content/plugins/schema/contentModelGroups.js.map +1 -0
  99. package/content/plugins/schema/contentModels.js +2 -3
  100. package/content/plugins/schema/contentModels.js.map +1 -0
  101. package/content/plugins/schema/createFieldResolvers.d.ts +8 -7
  102. package/content/plugins/schema/createFieldResolvers.js +25 -12
  103. package/content/plugins/schema/createFieldResolvers.js.map +1 -0
  104. package/content/plugins/schema/createManageResolvers.d.ts +7 -6
  105. package/content/plugins/schema/createManageResolvers.js.map +1 -0
  106. package/content/plugins/schema/createManageSDL.d.ts +5 -4
  107. package/content/plugins/schema/createManageSDL.js.map +1 -0
  108. package/content/plugins/schema/createPreviewResolvers.d.ts +8 -6
  109. package/content/plugins/schema/createPreviewResolvers.js.map +1 -0
  110. package/content/plugins/schema/createReadResolvers.d.ts +8 -6
  111. package/content/plugins/schema/createReadResolvers.js.map +1 -0
  112. package/content/plugins/schema/createReadSDL.d.ts +7 -6
  113. package/content/plugins/schema/createReadSDL.js.map +1 -0
  114. package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +1 -1
  115. package/content/plugins/schema/resolvers/commonFieldResolvers.js.map +1 -0
  116. package/content/plugins/schema/resolvers/manage/resolveCreate.d.ts +5 -4
  117. package/content/plugins/schema/resolvers/manage/resolveCreate.js +2 -4
  118. package/content/plugins/schema/resolvers/manage/resolveCreate.js.map +1 -0
  119. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.d.ts +5 -4
  120. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js +2 -4
  121. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
  122. package/content/plugins/schema/resolvers/manage/resolveDelete.d.ts +6 -1
  123. package/content/plugins/schema/resolvers/manage/resolveDelete.js +4 -8
  124. package/content/plugins/schema/resolvers/manage/resolveDelete.js.map +1 -0
  125. package/content/plugins/schema/resolvers/manage/resolveGet.d.ts +6 -1
  126. package/content/plugins/schema/resolvers/manage/resolveGet.js.map +1 -0
  127. package/content/plugins/schema/resolvers/manage/resolveGetByIds.d.ts +6 -1
  128. package/content/plugins/schema/resolvers/manage/resolveGetByIds.js +2 -4
  129. package/content/plugins/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
  130. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.d.ts +6 -1
  131. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js +2 -4
  132. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
  133. package/content/plugins/schema/resolvers/manage/resolveList.d.ts +4 -2
  134. package/content/plugins/schema/resolvers/manage/resolveList.js +2 -4
  135. package/content/plugins/schema/resolvers/manage/resolveList.js.map +1 -0
  136. package/content/plugins/schema/resolvers/manage/resolvePublish.d.ts +6 -1
  137. package/content/plugins/schema/resolvers/manage/resolvePublish.js.map +1 -0
  138. package/content/plugins/schema/resolvers/manage/resolveRepublish.d.ts +6 -1
  139. package/content/plugins/schema/resolvers/manage/resolveRepublish.js.map +1 -0
  140. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.d.ts +3 -2
  141. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js +2 -4
  142. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js.map +1 -0
  143. package/content/plugins/schema/resolvers/manage/resolveRequestReview.d.ts +3 -2
  144. package/content/plugins/schema/resolvers/manage/resolveRequestReview.js +2 -4
  145. package/content/plugins/schema/resolvers/manage/resolveRequestReview.js.map +1 -0
  146. package/content/plugins/schema/resolvers/manage/resolveUnpublish.d.ts +6 -1
  147. package/content/plugins/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
  148. package/content/plugins/schema/resolvers/manage/resolveUpdate.d.ts +5 -4
  149. package/content/plugins/schema/resolvers/manage/resolveUpdate.js +2 -4
  150. package/content/plugins/schema/resolvers/manage/resolveUpdate.js.map +1 -0
  151. package/content/plugins/schema/resolvers/preview/resolveGet.d.ts +4 -2
  152. package/content/plugins/schema/resolvers/preview/resolveGet.js.map +1 -0
  153. package/content/plugins/schema/resolvers/preview/resolveList.d.ts +4 -2
  154. package/content/plugins/schema/resolvers/preview/resolveList.js +2 -4
  155. package/content/plugins/schema/resolvers/preview/resolveList.js.map +1 -0
  156. package/content/plugins/schema/resolvers/read/resolveGet.d.ts +4 -2
  157. package/content/plugins/schema/resolvers/read/resolveGet.js.map +1 -0
  158. package/content/plugins/schema/resolvers/read/resolveList.d.ts +4 -2
  159. package/content/plugins/schema/resolvers/read/resolveList.js +2 -4
  160. package/content/plugins/schema/resolvers/read/resolveList.js.map +1 -0
  161. package/content/plugins/schema/schemaPlugins.js.map +1 -0
  162. package/content/plugins/storage/StorageTransformPlugin.d.ts +2 -2
  163. package/content/plugins/storage/StorageTransformPlugin.js.map +1 -0
  164. package/content/plugins/storage/default.js.map +1 -0
  165. package/content/plugins/storage/object.js +15 -10
  166. package/content/plugins/storage/object.js.map +1 -0
  167. package/content/plugins/utils/createTypeName.d.ts +3 -3
  168. package/content/plugins/utils/createTypeName.js.map +1 -0
  169. package/content/plugins/utils/entryStorage.d.ts +2 -2
  170. package/content/plugins/utils/entryStorage.js +0 -4
  171. package/content/plugins/utils/entryStorage.js.map +1 -0
  172. package/content/plugins/utils/getEntryTitle.d.ts +1 -1
  173. package/content/plugins/utils/getEntryTitle.js +1 -1
  174. package/content/plugins/utils/getEntryTitle.js.map +1 -0
  175. package/content/plugins/utils/getSchemaFromFieldPlugins.d.ts +7 -6
  176. package/content/plugins/utils/getSchemaFromFieldPlugins.js +12 -7
  177. package/content/plugins/utils/getSchemaFromFieldPlugins.js.map +1 -0
  178. package/content/plugins/utils/pluralizedTypeName.d.ts +1 -1
  179. package/content/plugins/utils/pluralizedTypeName.js.map +1 -0
  180. package/content/plugins/utils/renderFields.d.ts +11 -12
  181. package/content/plugins/utils/renderFields.js +1 -1
  182. package/content/plugins/utils/renderFields.js.map +1 -0
  183. package/content/plugins/utils/renderGetFilterFields.d.ts +5 -4
  184. package/content/plugins/utils/renderGetFilterFields.js +28 -13
  185. package/content/plugins/utils/renderGetFilterFields.js.map +1 -0
  186. package/content/plugins/utils/renderInputFields.d.ts +10 -10
  187. package/content/plugins/utils/renderInputFields.js.map +1 -0
  188. package/content/plugins/utils/renderListFilterFields.d.ts +7 -6
  189. package/content/plugins/utils/renderListFilterFields.js +24 -12
  190. package/content/plugins/utils/renderListFilterFields.js.map +1 -0
  191. package/content/plugins/utils/renderSortEnum.js +5 -5
  192. package/content/plugins/utils/renderSortEnum.js.map +1 -0
  193. package/content/plugins/validators/dateGte.js +1 -1
  194. package/content/plugins/validators/dateGte.js.map +1 -0
  195. package/content/plugins/validators/dateLte.js +1 -1
  196. package/content/plugins/validators/dateLte.js.map +1 -0
  197. package/content/plugins/validators/gte.js +3 -1
  198. package/content/plugins/validators/gte.js.map +1 -0
  199. package/content/plugins/validators/in.js +3 -1
  200. package/content/plugins/validators/in.js.map +1 -0
  201. package/content/plugins/validators/index.js.map +1 -0
  202. package/content/plugins/validators/lte.js +3 -1
  203. package/content/plugins/validators/lte.js.map +1 -0
  204. package/content/plugins/validators/maxLength.js +3 -1
  205. package/content/plugins/validators/maxLength.js.map +1 -0
  206. package/content/plugins/validators/minLength.js +3 -1
  207. package/content/plugins/validators/minLength.js.map +1 -0
  208. package/content/plugins/validators/pattern.js +2 -2
  209. package/content/plugins/validators/pattern.js.map +1 -0
  210. package/content/plugins/validators/patternPlugins/email.js.map +1 -0
  211. package/content/plugins/validators/patternPlugins/index.js.map +1 -0
  212. package/content/plugins/validators/patternPlugins/lowerCase.js.map +1 -0
  213. package/content/plugins/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
  214. package/content/plugins/validators/patternPlugins/upperCase.js.map +1 -0
  215. package/content/plugins/validators/patternPlugins/upperCaseSpace.js.map +1 -0
  216. package/content/plugins/validators/patternPlugins/url.js.map +1 -0
  217. package/content/plugins/validators/required.js.map +1 -0
  218. package/content/plugins/validators/timeGte.js +3 -1
  219. package/content/plugins/validators/timeGte.js.map +1 -0
  220. package/content/plugins/validators/timeLte.js +3 -1
  221. package/content/plugins/validators/timeLte.js.map +1 -0
  222. package/content/plugins/validators/unique.js +1 -0
  223. package/content/plugins/validators/unique.js.map +1 -0
  224. package/index.d.ts +3 -3
  225. package/index.js.map +1 -0
  226. package/migrateCMSPermissions.d.ts +2 -2
  227. package/migrateCMSPermissions.js +4 -0
  228. package/migrateCMSPermissions.js.map +1 -0
  229. package/package.json +27 -26
  230. package/plugins/context.js +8 -3
  231. package/plugins/context.js.map +1 -0
  232. package/plugins/crud/index.d.ts +2 -2
  233. package/plugins/crud/index.js.map +1 -0
  234. package/plugins/crud/settings.crud.d.ts +2 -2
  235. package/plugins/crud/settings.crud.js.map +1 -0
  236. package/plugins/crud/system.crud.d.ts +3 -2
  237. package/plugins/crud/system.crud.js +2 -2
  238. package/plugins/crud/system.crud.js.map +1 -0
  239. package/plugins/graphql/system.d.ts +5 -4
  240. package/plugins/graphql/system.js +5 -3
  241. package/plugins/graphql/system.js.map +1 -0
  242. package/plugins/graphql.js +7 -0
  243. package/plugins/graphql.js.map +1 -0
  244. package/plugins/upgrades/index.js.map +1 -0
  245. package/plugins/upgrades/v5.5.0/helpers.js.map +1 -0
  246. package/plugins/upgrades/v5.5.0/index.js +5 -0
  247. package/plugins/upgrades/v5.5.0/index.js.map +1 -0
  248. package/transformers.js.map +1 -0
  249. package/types.d.ts +70 -40
  250. package/types.js +6 -0
  251. package/types.js.map +1 -0
  252. package/utils.d.ts +14 -16
  253. package/utils.js.map +1 -0
  254. package/content/plugins/graphqlFields/requiredField.d.ts +0 -2
  255. package/content/plugins/graphqlFields/requiredField.js +0 -24
@@ -13,7 +13,7 @@ var _createTypeName = require("../utils/createTypeName");
13
13
 
14
14
  var _utils = require("@webiny/utils");
15
15
 
16
- var _requiredField = require("./requiredField");
16
+ var _helpers = require("./helpers");
17
17
 
18
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
19
 
@@ -53,6 +53,19 @@ const appendTypename = (entries, typename) => {
53
53
  });
54
54
  });
55
55
  };
56
+ /**
57
+ * We cast settings.models as object to have modelId because internally we know that it is so.
58
+ * Internal stuff so we are sure that settings.models contains what we require.
59
+ */
60
+
61
+
62
+ const getFieldModels = field => {
63
+ if (!field.settings || Array.isArray(field.settings.models) === false) {
64
+ return [];
65
+ }
66
+
67
+ return field.settings.models;
68
+ };
56
69
 
57
70
  const modelIdToTypeName = new Map();
58
71
  const plugin = {
@@ -66,15 +79,28 @@ const plugin = {
66
79
  model,
67
80
  field
68
81
  }) {
69
- const gqlType = field.settings.models.length > 1 ? createUnionTypeName(model, field) : (0, _createTypeName.createReadTypeName)(field.settings.models[0].modelId);
82
+ var _field$settings;
83
+
84
+ const models = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.models) || [];
85
+ const gqlType = models.length > 1 ? createUnionTypeName(model, field) : (0, _createTypeName.createReadTypeName)(models[0].modelId);
70
86
  return field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`;
71
87
  },
72
88
 
73
- createResolver({
74
- field
75
- }) {
76
- // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.
77
- for (const item of field.settings.models) {
89
+ /**
90
+ * TS is complaining about mixed types for createResolver.
91
+ * TODO @ts-refactor @pavel Maybe we should have a single createResolver method?
92
+ */
93
+ // @ts-ignore
94
+ createResolver(params) {
95
+ var _field$settings2;
96
+
97
+ const {
98
+ field
99
+ } = params; // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.
100
+
101
+ const models = ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.models) || [];
102
+
103
+ for (const item of models) {
78
104
  modelIdToTypeName.set(item.modelId, (0, _createTypeName.createReadTypeName)(item.modelId));
79
105
  }
80
106
 
@@ -83,14 +109,20 @@ const plugin = {
83
109
  cms
84
110
  } = context; // Get field value for this entry
85
111
 
86
- const value = parent[field.fieldId];
112
+ const initialValue = parent[field.fieldId];
87
113
 
88
- if (!value) {
114
+ if (!initialValue) {
89
115
  return null;
90
116
  }
91
117
 
92
118
  if (field.multipleValues) {
93
- if (!value.length) {
119
+ /**
120
+ * We cast because value really can be array and single value.
121
+ * At this point, we are 99% sure that it is an array (+ we check for it)
122
+ */
123
+ const value = initialValue;
124
+
125
+ if (Array.isArray(value) === false || value.length === 0) {
94
126
  return [];
95
127
  }
96
128
 
@@ -120,8 +152,9 @@ const plugin = {
120
152
  return appendTypename(entries, modelIdToTypeName.get(modelId));
121
153
  });
122
154
  return await Promise.all(getters).then(results => results.reduce((result, item) => result.concat(item), []));
123
- } // Get model manager, to get access to CRUD methods
155
+ }
124
156
 
157
+ const value = initialValue; // Get model manager, to get access to CRUD methods
125
158
 
126
159
  const model = await cms.getModelManager(value.modelId);
127
160
  let revisions; // `read` API works with `published` data
@@ -154,7 +187,11 @@ const plugin = {
154
187
 
155
188
  for (const model of models) {
156
189
  // Generate a dedicated union type for every `ref` field which has more than 1 content model assigned.
157
- model.fields.filter(field => field.type === "ref" && field.settings.models.length > 1).forEach(field => unionFields.push({
190
+ model.fields.filter(field => {
191
+ var _field$settings3;
192
+
193
+ return field.type === "ref" && (((_field$settings3 = field.settings) === null || _field$settings3 === void 0 ? void 0 : _field$settings3.models) || []).length > 1;
194
+ }).forEach(field => unionFields.push({
158
195
  model,
159
196
  field,
160
197
  typeName: createUnionTypeName(model, field)
@@ -164,7 +201,7 @@ const plugin = {
164
201
  const unionFieldsTypeDef = unionFields.map(({
165
202
  field,
166
203
  typeName
167
- }) => `union ${typeName} = ${field.settings.models.map(({
204
+ }) => `union ${typeName} = ${getFieldModels(field).map(({
168
205
  modelId
169
206
  }) => (0, _createTypeName.createReadTypeName)(modelId)).join(" | ")}`).join("\n");
170
207
  const filteringTypeDef = `
@@ -229,11 +266,7 @@ const plugin = {
229
266
  createInputField({
230
267
  field
231
268
  }) {
232
- if (field.multipleValues) {
233
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [RefFieldInput!]", field);
234
- }
235
-
236
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": RefFieldInput", field);
269
+ return (0, _helpers.createGraphQLInputField)(field, "RefFieldInput");
237
270
  },
238
271
 
239
272
  createListFilters
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ref.ts"],"names":["createUnionTypeName","model","field","modelId","fieldId","createListFilters","createFilteringTypeDef","appendTypename","entries","typename","map","item","__typename","getFieldModels","settings","Array","isArray","models","modelIdToTypeName","Map","plugin","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","createInputField"],"mappings":";;;;;;;;;;;AAOA;;AACA;;AACA;;;;;;AAcA,MAAMA,mBAAmB,GAAG,CAACC,KAAD,EAAkBC,KAAlB,KAA2C;AACnE,SAAQ,GAAE,wCAAmBD,KAAK,CAACE,OAAzB,CAAkC,GAAE,wCAAmBD,KAAK,CAACE,OAAzB,CAAkC,EAAhF;AACH,CAFD;;AAOA,MAAMC,iBAAiB,GAAG,CAAC;AAAEH,EAAAA;AAAF,CAAD,KAAuC;AAC7D,SAAQ;AACZ,UAAUA,KAAK,CAACE,OAAQ;AACxB,KAFI;AAGH,CAJD;;AAMA,MAAME,sBAAsB,GAAG,MAAM;AACjC,SAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAXI;AAYH,CAbD;;AAeA,MAAMC,cAAc,GAAG,CAACC,OAAD,EAAsBC,QAAtB,KAAuD;AAC1E,SAAOD,OAAO,CAACE,GAAR,CAAYC,IAAI,IAAI;AACvB,2CACOA,IADP;AAEIC,MAAAA,UAAU,EAAEH;AAFhB;AAIH,GALM,CAAP;AAMH,CAPD;AAQA;AACA;AACA;AACA;;;AACA,MAAMI,cAAc,GAAIX,KAAD,IAAuD;AAC1E,MAAI,CAACA,KAAK,CAACY,QAAP,IAAmBC,KAAK,CAACC,OAAN,CAAcd,KAAK,CAACY,QAAN,CAAeG,MAA7B,MAAyC,KAAhE,EAAuE;AACnE,WAAO,EAAP;AACH;;AACD,SAAOf,KAAK,CAACY,QAAN,CAAeG,MAAtB;AACH,CALD;;AAOA,MAAMC,iBAAiB,GAAG,IAAIC,GAAJ,EAA1B;AAEA,MAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,gCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,KAH8B;AAIzCC,EAAAA,UAAU,EAAE,KAJ6B;AAKzCC,EAAAA,YAAY,EAAE,IAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFC,IAAAA,eAAe,CAAC;AAAE1B,MAAAA,KAAF;AAASC,MAAAA;AAAT,KAAD,EAAmB;AAAA;;AAC9B,YAAMe,MAAM,GAAG,oBAAAf,KAAK,CAACY,QAAN,oEAAgBG,MAAhB,KAA0B,EAAzC;AACA,YAAMW,OAAO,GACTX,MAAM,CAACY,MAAP,GAAgB,CAAhB,GACM7B,mBAAmB,CAACC,KAAD,EAAQC,KAAR,CADzB,GAEM,wCAAmBe,MAAM,CAAC,CAAD,CAAN,CAAUd,OAA7B,CAHV;AAKA,aAAOD,KAAK,CAACE,OAAN,GAAiB,KAAIF,KAAK,CAAC4B,cAAN,GAAwB,IAAGF,OAAQ,GAAnC,GAAwCA,OAAQ,EAA5E;AACH,KATC;;AAUF;AACR;AACA;AACA;AACQ;AACAG,IAAAA,cAAc,CAACC,MAAD,EAAS;AAAA;;AACnB,YAAM;AAAE9B,QAAAA;AAAF,UAAY8B,MAAlB,CADmB,CAEnB;;AACA,YAAMf,MAAM,GAAG,qBAAAf,KAAK,CAACY,QAAN,sEAAgBG,MAAhB,KAA0B,EAAzC;;AACA,WAAK,MAAMN,IAAX,IAAmBM,MAAnB,EAA2B;AACvBC,QAAAA,iBAAiB,CAACe,GAAlB,CAAsBtB,IAAI,CAACR,OAA3B,EAAoC,wCAAmBQ,IAAI,CAACR,OAAxB,CAApC;AACH;;AAED,aAAO,OAAO+B,MAAP,EAAeC,CAAf,EAAkBC,OAAlB,KAA0C;AAC7C,cAAM;AAAEC,UAAAA;AAAF,YAAUD,OAAhB,CAD6C,CAG7C;;AACA,cAAME,YAAY,GAAGJ,MAAM,CAAChC,KAAK,CAACE,OAAP,CAA3B;;AAEA,YAAI,CAACkC,YAAL,EAAmB;AACf,iBAAO,IAAP;AACH;;AAED,YAAIpC,KAAK,CAAC4B,cAAV,EAA0B;AACtB;AACpB;AACA;AACA;AACoB,gBAAMS,KAAK,GAAGD,YAAd;;AACA,cAAIvB,KAAK,CAACC,OAAN,CAAcuB,KAAd,MAAyB,KAAzB,IAAkCA,KAAK,CAACV,MAAN,KAAiB,CAAvD,EAA0D;AACtD,mBAAO,EAAP;AACH;;AAED,gBAAMW,cAAc,GAAGD,KAAK,CAACE,MAAN,CAAa,CAACC,UAAD,EAAaC,GAAb,KAAqB;AACrD,gBAAI,CAACD,UAAU,CAACC,GAAG,CAACxC,OAAL,CAAf,EAA8B;AAC1BuC,cAAAA,UAAU,CAACC,GAAG,CAACxC,OAAL,CAAV,GAA0B,EAA1B;AACH,aAFD,MAEO,IAAIuC,UAAU,CAACC,GAAG,CAACxC,OAAL,CAAV,CAAwByC,QAAxB,CAAiCD,GAAG,CAACE,OAArC,MAAkD,IAAtD,EAA4D;AAC/D,qBAAOH,UAAP;AACH;;AAEDA,YAAAA,UAAU,CAACC,GAAG,CAACxC,OAAL,CAAV,CAAwB2C,IAAxB,CAA6BH,GAAG,CAACE,OAAjC;AAEA,mBAAOH,UAAP;AACH,WAVsB,EAUpB,EAVoB,CAAvB;AAYA,gBAAMK,OAAO,GAAGC,MAAM,CAACC,IAAP,CAAYT,cAAZ,EAA4B9B,GAA5B,CAAgC,MAAMP,OAAN,IAAiB;AAC7D,kBAAM+C,MAAM,GAAGV,cAAc,CAACrC,OAAD,CAA7B,CAD6D,CAE7D;;AACA,kBAAMF,KAAK,GAAG,MAAMoC,GAAG,CAACc,eAAJ,CAAoBhD,OAApB,CAApB;AAEA,gBAAIK,OAAJ,CAL6D,CAM7D;;AACA,gBAAI6B,GAAG,CAACe,IAAR,EAAc;AACV5C,cAAAA,OAAO,GAAG,MAAMP,KAAK,CAACoD,iBAAN,CAAwBH,MAAxB,CAAhB;AACH,aAFD,CAGA;AAHA,iBAIK;AACD1C,cAAAA,OAAO,GAAG,MAAMP,KAAK,CAACqD,cAAN,CAAqBJ,MAArB,CAAhB;AACH;;AAED,mBAAO3C,cAAc,CAACC,OAAD,EAAUU,iBAAiB,CAACqC,GAAlB,CAAsBpD,OAAtB,CAAV,CAArB;AACH,WAhBe,CAAhB;AAkBA,iBAAO,MAAMqD,OAAO,CAACC,GAAR,CAAYV,OAAZ,EAAqBW,IAArB,CAA2BC,OAAD,IACnCA,OAAO,CAAClB,MAAR,CAAe,CAACmB,MAAD,EAASjD,IAAT,KAAkBiD,MAAM,CAACC,MAAP,CAAclD,IAAd,CAAjC,EAAsD,EAAtD,CADS,CAAb;AAGH;;AAED,cAAM4B,KAAK,GAAGD,YAAd,CAvD6C,CAyD7C;;AACA,cAAMrC,KAAK,GAAG,MAAMoC,GAAG,CAACc,eAAJ,CAAoBZ,KAAK,CAACpC,OAA1B,CAApB;AAEA,YAAI2D,SAAJ,CA5D6C,CA6D7C;;AACA,YAAIzB,GAAG,CAACe,IAAR,EAAc;AACVU,UAAAA,SAAS,GAAG,MAAM7D,KAAK,CAACoD,iBAAN,CAAwB,CAACd,KAAK,CAACM,OAAP,CAAxB,CAAlB;AACH,SAFD,CAGA;AAHA,aAIK;AACDiB,UAAAA,SAAS,GAAG,MAAM7D,KAAK,CAACqD,cAAN,CAAqB,CAACf,KAAK,CAACM,OAAP,CAArB,CAAlB;AACH;AAED;AAChB;AACA;;;AACgB,YAAI,CAACiB,SAAD,IAAcA,SAAS,CAACjC,MAAV,KAAqB,CAAvC,EAA0C;AACtC,iBAAO,IAAP;AACH;;AACD,+CACOiC,SAAS,CAAC,CAAD,CADhB;AAEIlD,UAAAA,UAAU,EAAEM,iBAAiB,CAACqC,GAAlB,CAAsBhB,KAAK,CAACpC,OAA5B;AAFhB;AAIH,OAhFD;AAiFH,KAxGC;;AAyGF4D,IAAAA,YAAY,CAAC;AAAE9C,MAAAA;AAAF,KAAD,EAAa;AACrB,YAAM+C,WAAyB,GAAG,EAAlC;;AACA,WAAK,MAAM/D,KAAX,IAAoBgB,MAApB,EAA4B;AACxB;AACAhB,QAAAA,KAAK,CAACgE,MAAN,CACKC,MADL,CAEQhE,KAAK;AAAA;;AAAA,iBAAIA,KAAK,CAACoB,IAAN,KAAe,KAAf,IAAwB,CAAC,qBAAApB,KAAK,CAACY,QAAN,sEAAgBG,MAAhB,KAA0B,EAA3B,EAA+BY,MAA/B,GAAwC,CAApE;AAAA,SAFb,EAIKsC,OAJL,CAIajE,KAAK,IACV8D,WAAW,CAAClB,IAAZ,CAAiB;AACb7C,UAAAA,KADa;AAEbC,UAAAA,KAFa;AAGbkE,UAAAA,QAAQ,EAAEpE,mBAAmB,CAACC,KAAD,EAAQC,KAAR;AAHhB,SAAjB,CALR;AAWH;;AACD,YAAMmE,kBAAkB,GAAGL,WAAW,CACjCtD,GADsB,CAEnB,CAAC;AAAER,QAAAA,KAAF;AAASkE,QAAAA;AAAT,OAAD,KACK,SAAQA,QAAS,MAAKvD,cAAc,CAACX,KAAD,CAAd,CAClBQ,GADkB,CACd,CAAC;AAAEP,QAAAA;AAAF,OAAD,KAAiB,wCAAmBA,OAAnB,CADH,EAElBmE,IAFkB,CAEb,KAFa,CAEN,EALF,EAOtBA,IAPsB,CAOjB,IAPiB,CAA3B;AASA,YAAMC,gBAAgB,GAAI;AACtC,kBAAkBjE,sBAAsB,EAAG;AAC3C;AACA,kBAAkB+D,kBAAmB;AACrC,aAJY;AAMA,aAAO;AACHG,QAAAA,QAAQ,EAAED,gBADP;AAEHE,QAAAA,SAAS,EAAE;AAFR,OAAP;AAIH,KA5IC;;AA6IFpE,IAAAA;AA7IE,GANmC;AAqJzCqE,EAAAA,MAAM,EAAE;AACJX,IAAAA,YAAY,GAAG;AACX;AACZ;AACA;AACY,aAAO;AACHS,QAAAA,QAAQ,EAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsBlE,sBAAsB,EAAG;AAC/C,iBAdmB;AAeHmE,QAAAA,SAAS,EAAE;AACPE,UAAAA,QAAQ,EAAE;AACN9B,YAAAA,OAAO,EAAGX,MAAD,IAA2B;AAChC,oBAAM;AAAE0C,gBAAAA;AAAF,kBAAS,4BAAgB1C,MAAM,CAACW,OAAP,IAAkBX,MAAM,CAAC0C,EAAzC,CAAf;AACA,qBAAOA,EAAP;AACH,aAJK;AAKNA,YAAAA,EAAE,EAAG1C,MAAD,IAA2B;AAC3B,qBAAOA,MAAM,CAAC0C,EAAP,IAAa1C,MAAM,CAACW,OAA3B;AACH;AAPK;AADH;AAfR,OAAP;AA2BH,KAhCG;;AAiCJlB,IAAAA,eAAe,CAAC;AAAEzB,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAAC4B,cAAV,EAA0B;AACtB,eAAQ,GAAE5B,KAAK,CAACE,OAAQ,eAAxB;AACH;;AACD,aAAQ,GAAEF,KAAK,CAACE,OAAQ,YAAxB;AACH,KAtCG;;AAuCJyE,IAAAA,gBAAgB,CAAC;AAAE3E,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,eAA/B,CAAP;AACH,KAzCG;;AA0CJG,IAAAA;AA1CI;AArJiC,CAA7C;eAmMee,M","sourcesContent":["import {\n CmsEntry,\n CmsContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModel,\n CmsModelField\n} from \"~/types\";\nimport { createReadTypeName } from \"~/content/plugins/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\nconst plugin: CmsModelFieldToGraphQLPlugin = {\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 => 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\nexport default plugin;\n"]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _requiredField = require("./requiredField");
8
+ var _helpers = require("./helpers");
9
9
 
10
10
  const plugin = {
11
11
  name: "cms-model-field-to-graphql-rich-text",
@@ -45,11 +45,7 @@ const plugin = {
45
45
  createInputField({
46
46
  field
47
47
  }) {
48
- if (field.multipleValues) {
49
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [JSON]", field);
50
- }
51
-
52
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": JSON", field);
48
+ return (0, _helpers.createGraphQLInputField)(field, "JSON");
53
49
  }
54
50
 
55
51
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["richText.ts"],"names":["plugin","name","type","fieldType","isSortable","isSearchable","read","createTypeField","field","multipleValues","fieldId","createGetFilters","manage","createInputField"],"mappings":";;;;;;;AACA;;AAEA,MAAMA,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,sCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,WAH8B;AAIzCC,EAAAA,UAAU,EAAE,KAJ6B;AAKzCC,EAAAA,YAAY,EAAE,KAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFC,IAAAA,eAAe,CAAC;AAAEC,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACC,cAAV,EAA0B;AACtB,eAAQ,GAAED,KAAK,CAACE,OAAQ,UAAxB;AACH;;AAED,aAAQ,GAAEF,KAAK,CAACE,OAAQ,QAAxB;AACH,KAPC;;AAQFC,IAAAA,gBAAgB,CAAC;AAAEH,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAQ,GAAEA,KAAK,CAACE,OAAQ,QAAxB;AACH;;AAVC,GANmC;AAkBzCE,EAAAA,MAAM,EAAE;AACJL,IAAAA,eAAe,CAAC;AAAEC,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACC,cAAV,EAA0B;AACtB,eAAQ,GAAED,KAAK,CAACE,OAAQ,UAAxB;AACH;;AACD,aAAQ,GAAEF,KAAK,CAACE,OAAQ,QAAxB;AACH,KANG;;AAOJG,IAAAA,gBAAgB,CAAC;AAAEL,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,MAA/B,CAAP;AACH;;AATG;AAlBiC,CAA7C;eA+BeR,M","sourcesContent":["import { CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-rich-text\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"rich-text\",\n isSortable: false,\n isSearchable: false,\n read: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [JSON]`;\n }\n\n return `${field.fieldId}: JSON`;\n },\n createGetFilters({ field }) {\n return `${field.fieldId}: JSON`;\n }\n },\n manage: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [JSON]`;\n }\n return `${field.fieldId}: JSON`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"JSON\");\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _requiredField = require("./requiredField");
8
+ var _helpers = require("./helpers");
9
9
 
10
10
  const createListFilters = ({
11
11
  field
@@ -61,11 +61,7 @@ const plugin = {
61
61
  createInputField({
62
62
  field
63
63
  }) {
64
- if (field.multipleValues) {
65
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [String]", field);
66
- }
67
-
68
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": String", field);
64
+ return (0, _helpers.createGraphQLInputField)(field, "String");
69
65
  }
70
66
 
71
67
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["text.ts"],"names":["createListFilters","field","fieldId","plugin","name","type","fieldType","isSortable","isSearchable","read","createTypeField","multipleValues","createGetFilters","manage","createInputField"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,iBAAiB,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAAwC;AAC9D,SAAQ;AACZ,UAAUA,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,KAPI;AAQH,CATD;;AAWA,MAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,iCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,MAH8B;AAIzCC,EAAAA,UAAU,EAAE,IAJ6B;AAKzCC,EAAAA,YAAY,EAAE,IAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFC,IAAAA,eAAe,CAAC;AAAET,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACU,cAAV,EAA0B;AACtB,eAAQ,GAAEV,KAAK,CAACC,OAAQ,YAAxB;AACH;;AACD,aAAQ,GAAED,KAAK,CAACC,OAAQ,UAAxB;AACH,KANC;;AAOFU,IAAAA,gBAAgB,CAAC;AAAEX,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAQ,GAAEA,KAAK,CAACC,OAAQ,UAAxB;AACH,KATC;;AAUFF,IAAAA;AAVE,GANmC;AAkBzCa,EAAAA,MAAM,EAAE;AACJb,IAAAA,iBADI;;AAEJU,IAAAA,eAAe,CAAC;AAAET,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACU,cAAV,EAA0B;AACtB,eAAQ,GAAEV,KAAK,CAACC,OAAQ,YAAxB;AACH;;AACD,aAAQ,GAAED,KAAK,CAACC,OAAQ,UAAxB;AACH,KAPG;;AAQJY,IAAAA,gBAAgB,CAAC;AAAEb,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,QAA/B,CAAP;AACH;;AAVG;AAlBiC,CAA7C;eAgCeE,M","sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFiltersParams) => {\n return `\n ${field.fieldId}: String\n ${field.fieldId}_not: String\n ${field.fieldId}_in: [String]\n ${field.fieldId}_not_in: [String]\n ${field.fieldId}_contains: String\n ${field.fieldId}_not_contains: String\n `;\n};\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-text\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"text\",\n isSortable: true,\n isSearchable: true,\n read: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [String]`;\n }\n return `${field.fieldId}: String`;\n },\n createGetFilters({ field }) {\n return `${field.fieldId}: String`;\n },\n createListFilters\n },\n manage: {\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [String]`;\n }\n return `${field.fieldId}: String`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"String\");\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -2,7 +2,7 @@ import { AuthenticationPlugin } from "@webiny/api-security/plugins/Authenticatio
2
2
  import { SecurityIdentity } from "@webiny/api-security/types";
3
3
  import { CmsContext } from "../../../types";
4
4
  export declare class InternalAuthenticationPlugin extends AuthenticationPlugin {
5
- private _identityType;
5
+ private readonly _identityType;
6
6
  constructor(identityType: string);
7
7
  authenticate(context: CmsContext): Promise<undefined | SecurityIdentity>;
8
8
  }
@@ -11,6 +11,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
11
11
 
12
12
  var _AuthenticationPlugin = require("@webiny/api-security/plugins/AuthenticationPlugin");
13
13
 
14
+ // TODO @ts-refactor @pavel
14
15
  // @ts-nocheck
15
16
  class InternalAuthenticationPlugin extends _AuthenticationPlugin.AuthenticationPlugin {
16
17
  constructor(identityType) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["InternalAuthenticationPlugin.ts"],"names":["InternalAuthenticationPlugin","AuthenticationPlugin","constructor","identityType","_identityType","authenticate","context","headers","http","request","header","apiKey","split","pop","cms","getReadAPIKey","id","displayName","type","permissions","name"],"mappings":";;;;;;;;;;;AAEA;;AAFA;AACA;AAKO,MAAMA,4BAAN,SAA2CC,0CAA3C,CAAgE;AAG5DC,EAAAA,WAAW,CAACC,YAAD,EAAuB;AACrC;AADqC;AAGrC,SAAKC,aAAL,GAAqBD,YAArB;AACH;;AAEwB,QAAZE,YAAY,CAACC,OAAD,EAA6D;AAClF,UAAM;AAAEC,MAAAA;AAAF,QAAcD,OAAO,CAACE,IAAR,CAAaC,OAAjC;AACA,UAAMC,MAAM,GAAGH,OAAO,CAAC,eAAD,CAAP,IAA4BA,OAAO,CAAC,eAAD,CAAlD;AACA,UAAMI,MAAM,GAAGD,MAAM,GAAGA,MAAM,CAACE,KAAP,CAAa,GAAb,EAAkBC,GAAlB,EAAH,GAA6B,IAAlD;;AACA,QAAI,CAACF,MAAD,IAAWA,MAAM,MAAM,MAAML,OAAO,CAACQ,GAAR,CAAYC,aAAZ,EAAZ,CAArB,EAA+D;AAC3D;AACH;AAED;AACR;AACA;AACA;;;AACQ,WAAO;AACHC,MAAAA,EAAE,EAAE,cADD;AAEHC,MAAAA,WAAW,EAAE,cAFV;AAGHC,MAAAA,IAAI,EAAE,KAAKd,aAHR;AAIHe,MAAAA,WAAW,EAAE,CACT;AAAEC,QAAAA,IAAI,EAAE;AAAR,OADS,EAET;AAAEA,QAAAA,IAAI,EAAE;AAAR,OAFS,EAGT;AAAEA,QAAAA,IAAI,EAAE;AAAR,OAHS;AAJV,KAAP;AAUH;;AA/BkE","sourcesContent":["// TODO @ts-refactor @pavel\n// @ts-nocheck\nimport { AuthenticationPlugin } from \"@webiny/api-security/plugins/AuthenticationPlugin\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { CmsContext } from \"~/types\";\n\nexport class InternalAuthenticationPlugin extends AuthenticationPlugin {\n private readonly _identityType: string;\n\n public constructor(identityType: string) {\n super();\n\n this._identityType = identityType;\n }\n\n public async authenticate(context: CmsContext): Promise<undefined | SecurityIdentity> {\n const { headers } = context.http.request;\n const header = headers[\"Authorization\"] || headers[\"authorization\"];\n const apiKey = header ? header.split(\" \").pop() : null;\n if (!apiKey || apiKey !== (await context.cms.getReadAPIKey())) {\n return;\n }\n\n /**\n * This is an internal identity, which has access to `read` endpoint, all content models,\n * content entries, and all content locales.\n */\n return {\n id: \"read-api-key\",\n displayName: \"Read API key\",\n type: this._identityType,\n permissions: [\n { name: \"cms.endpoint.read\" },\n { name: \"cms.content*\" },\n { name: \"content.i18n\" }\n ]\n };\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { AuthorizationPlugin } from "@webiny/api-security/plugins/AuthorizationPlugin";
2
2
  import { CmsContext } from "../../../types";
3
3
  export declare class InternalAuthorizationPlugin extends AuthorizationPlugin {
4
- private _identityType;
4
+ private readonly _identityType;
5
5
  constructor(identityType: string);
6
6
  getPermissions(context: CmsContext): any;
7
7
  }
@@ -11,6 +11,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
11
11
 
12
12
  var _AuthorizationPlugin = require("@webiny/api-security/plugins/AuthorizationPlugin");
13
13
 
14
+ // TODO @ts-refactor @pavel
14
15
  // @ts-nocheck
15
16
  class InternalAuthorizationPlugin extends _AuthorizationPlugin.AuthorizationPlugin {
16
17
  constructor(identityType) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["InternalAuthorizationPlugin.ts"],"names":["InternalAuthorizationPlugin","AuthorizationPlugin","constructor","identityType","_identityType","getPermissions","context","identity","security","getIdentity","type","permissions"],"mappings":";;;;;;;;;;;AAEA;;AAFA;AACA;AAIO,MAAMA,2BAAN,SAA0CC,wCAA1C,CAA8D;AAG1DC,EAAAA,WAAW,CAACC,YAAD,EAAuB;AACrC;AADqC;AAGrC,SAAKC,aAAL,GAAqBD,YAArB;AACH;;AAEME,EAAAA,cAAc,CAACC,OAAD,EAAsB;AACvC,UAAMC,QAAQ,GAAGD,OAAO,CAACE,QAAR,CAAiBC,WAAjB,EAAjB;;AAEA,QAAI,CAACF,QAAD,IAAaA,QAAQ,CAACG,IAAT,KAAkB,KAAKN,aAAxC,EAAuD;AACnD;AACH,KALsC,CAOvC;;;AACA,WAAOG,QAAQ,CAACI,WAAhB;AACH;;AAlBgE","sourcesContent":["// TODO @ts-refactor @pavel\n// @ts-nocheck\nimport { AuthorizationPlugin } from \"@webiny/api-security/plugins/AuthorizationPlugin\";\nimport { CmsContext } from \"~/types\";\n\nexport class InternalAuthorizationPlugin extends AuthorizationPlugin {\n private readonly _identityType: string;\n\n public constructor(identityType: string) {\n super();\n\n this._identityType = identityType;\n }\n\n public getPermissions(context: CmsContext) {\n const identity = context.security.getIdentity();\n\n if (!identity || identity.type !== this._identityType) {\n return;\n }\n\n // Return permissions we defined in the authentication plugin.\n return identity.permissions;\n }\n}\n"]}
@@ -1,14 +1,14 @@
1
- import { CmsModelManager, CmsModel, CmsContext, CmsEntryListParams } from "../../../types";
1
+ import { CmsModelManager, CmsModel, CmsContext, CmsEntryListParams, CreateCmsEntryInput, UpdateCmsEntryInput } from "../../../types";
2
2
  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: any): Promise<import("../../../types").CmsEntry>;
6
+ create(data: CreateCmsEntryInput): Promise<import("../../../types").CmsEntry>;
7
7
  delete(id: string): Promise<void>;
8
8
  get(id: string): Promise<import("../../../types").CmsEntry>;
9
9
  listPublished(params: CmsEntryListParams): Promise<[import("../../../types").CmsEntry[], import("../../../types").CmsEntryMeta]>;
10
10
  listLatest(params: CmsEntryListParams): Promise<[import("../../../types").CmsEntry[], import("../../../types").CmsEntryMeta]>;
11
11
  getPublishedByIds(ids: string[]): Promise<import("../../../types").CmsEntry[]>;
12
12
  getLatestByIds(ids: string[]): Promise<import("../../../types").CmsEntry[]>;
13
- update(id: any, data: any): Promise<import("../../../types").CmsEntry>;
13
+ update(id: string, data: UpdateCmsEntryInput): Promise<import("../../../types").CmsEntry>;
14
14
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["DefaultCmsModelManager.ts"],"names":["DefaultCmsModelManager","constructor","context","model","_context","_model","create","data","cms","createEntry","delete","id","version","deleteEntryRevision","deleteEntry","get","getEntryById","listPublished","params","listPublishedEntries","listLatest","listLatestEntries","getPublishedByIds","ids","getPublishedEntriesByIds","getLatestByIds","getLatestEntriesByIds","update","updateEntry"],"mappings":";;;;;;;;;;;AAQA;;AAEO,MAAMA,sBAAN,CAAwD;AAIpDC,EAAAA,WAAW,CAACC,OAAD,EAAsBC,KAAtB,EAAuC;AAAA;AAAA;AACrD,SAAKC,QAAL,GAAgBF,OAAhB;AACA,SAAKG,MAAL,GAAcF,KAAd;AACH;;AAEkB,QAANG,MAAM,CAACC,IAAD,EAA4B;AAC3C,WAAO,KAAKH,QAAL,CAAcI,GAAd,CAAkBC,WAAlB,CAA8B,KAAKJ,MAAnC,EAA2CE,IAA3C,CAAP;AACH;;AAEkB,QAANG,MAAM,CAACC,EAAD,EAAa;AAC5B,UAAM;AAAEC,MAAAA;AAAF,QAAc,4BAAgBD,EAAhB,CAApB;;AACA,QAAIC,OAAJ,EAAa;AACT,aAAO,KAAKR,QAAL,CAAcI,GAAd,CAAkBK,mBAAlB,CAAsC,KAAKR,MAA3C,EAAmDM,EAAnD,CAAP;AACH;;AAED,WAAO,KAAKP,QAAL,CAAcI,GAAd,CAAkBM,WAAlB,CAA8B,KAAKT,MAAnC,EAA2CM,EAA3C,CAAP;AACH;;AAEe,QAAHI,GAAG,CAACJ,EAAD,EAAa;AACzB,WAAO,KAAKP,QAAL,CAAcI,GAAd,CAAkBQ,YAAlB,CAA+B,KAAKX,MAApC,EAA4CM,EAA5C,CAAP;AACH;;AAEyB,QAAbM,aAAa,CAACC,MAAD,EAA6B;AACnD,WAAO,KAAKd,QAAL,CAAcI,GAAd,CAAkBW,oBAAlB,CAAuC,KAAKd,MAA5C,EAAoDa,MAApD,CAAP;AACH;;AAEsB,QAAVE,UAAU,CAACF,MAAD,EAA6B;AAChD,WAAO,KAAKd,QAAL,CAAcI,GAAd,CAAkBa,iBAAlB,CAAoC,KAAKhB,MAAzC,EAAiDa,MAAjD,CAAP;AACH;;AAE6B,QAAjBI,iBAAiB,CAACC,GAAD,EAAgB;AAC1C,WAAO,KAAKnB,QAAL,CAAcI,GAAd,CAAkBgB,wBAAlB,CAA2C,KAAKnB,MAAhD,EAAwDkB,GAAxD,CAAP;AACH;;AAE0B,QAAdE,cAAc,CAACF,GAAD,EAAgB;AACvC,WAAO,KAAKnB,QAAL,CAAcI,GAAd,CAAkBkB,qBAAlB,CAAwC,KAAKrB,MAA7C,EAAqDkB,GAArD,CAAP;AACH;;AAEkB,QAANI,MAAM,CAAChB,EAAD,EAAaJ,IAAb,EAAwC;AACvD,WAAO,KAAKH,QAAL,CAAcI,GAAd,CAAkBoB,WAAlB,CAA8B,KAAKvB,MAAnC,EAA2CM,EAA3C,EAA+CJ,IAA/C,CAAP;AACH;;AA5C0D","sourcesContent":["import {\n CmsModelManager,\n CmsModel,\n CmsContext,\n CmsEntryListParams,\n CreateCmsEntryInput,\n UpdateCmsEntryInput\n} from \"~/types\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nexport class DefaultCmsModelManager implements CmsModelManager {\n private readonly _context: CmsContext;\n private readonly _model: CmsModel;\n\n public constructor(context: CmsContext, model: CmsModel) {\n this._context = context;\n this._model = model;\n }\n\n public async create(data: CreateCmsEntryInput) {\n return this._context.cms.createEntry(this._model, data);\n }\n\n public async delete(id: string) {\n const { version } = parseIdentifier(id);\n if (version) {\n return this._context.cms.deleteEntryRevision(this._model, id);\n }\n\n return this._context.cms.deleteEntry(this._model, id);\n }\n\n public async get(id: string) {\n return this._context.cms.getEntryById(this._model, id);\n }\n\n public async listPublished(params: CmsEntryListParams) {\n return this._context.cms.listPublishedEntries(this._model, params);\n }\n\n public async listLatest(params: CmsEntryListParams) {\n return this._context.cms.listLatestEntries(this._model, params);\n }\n\n public async getPublishedByIds(ids: string[]) {\n return this._context.cms.getPublishedEntriesByIds(this._model, ids);\n }\n\n public async getLatestByIds(ids: string[]) {\n return this._context.cms.getLatestEntriesByIds(this._model, ids);\n }\n\n public async update(id: string, data: UpdateCmsEntryInput) {\n return this._context.cms.updateEntry(this._model, id, data);\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["plugin","type","name","create","context","model","DefaultCmsModelManager"],"mappings":";;;;;;;AACA;;AAEA,MAAMA,MAA0B,GAAG;AAC/BC,EAAAA,IAAI,EAAE,2BADyB;AAE/BC,EAAAA,IAAI,EAAE,+BAFyB;AAG/BC,EAAAA,MAAM,EAAE,OAAOC,OAAP,EAAgBC,KAAhB,KAA0B;AAC9B,WAAO,IAAIC,8CAAJ,CAA2BF,OAA3B,EAAoCC,KAApC,CAAP;AACH;AAL8B,CAAnC;;eAQe,MAAML,M","sourcesContent":["import { ModelManagerPlugin } from \"~/types\";\nimport { DefaultCmsModelManager } from \"./DefaultCmsModelManager\";\n\nconst plugin: ModelManagerPlugin = {\n type: \"cms-content-model-manager\",\n name: \"content-model-manager-default\",\n create: async (context, model) => {\n return new DefaultCmsModelManager(context, model);\n }\n};\n\nexport default () => plugin;\n"]}
@@ -44,6 +44,7 @@ const baseSchema = context => {
44
44
  code: String
45
45
  message: String
46
46
  data: JSON
47
+ stack: String
47
48
  }
48
49
 
49
50
  type CmsListMeta {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["baseSchema.ts"],"names":["baseSchema","context","scalars","plugins","byType","map","item","scalar","GraphQLSchemaPlugin","typeDefs","name","join","resolvers","reduce","acc","s","JSON","JsonScalar","Long","LongScalar","RefInput","Number","NumberScalar","Any","AnyScalar","DateTime","DateTimeScalar","DateTimeZ","DateTimeZScalar","Date","DateScalar","Time","TimeScalar","Mutation","_empty"],"mappings":";;;;;;;;;;;AAEA;;AAWA;;;;;;AAGA,MAAMA,UAAU,GAAIC,OAAD,IAA8C;AAC7D,QAAMC,OAAO,GAAGD,OAAO,CAACE,OAAR,CACXC,MADW,CACiB,gBADjB,EAEXC,GAFW,CAEPC,IAAI,IAAIA,IAAI,CAACC,MAFN,CAAhB;AAIA,SAAO,IAAIC,wCAAJ,CAAwB;AAC3BC,IAAAA,QAAQ;AAAE;AAAe;AACjC,cAAcP,OAAO,CAACG,GAAR,CAAYE,MAAM,IAAK,UAASA,MAAM,CAACG,IAAK,EAA5C,EAA+CC,IAA/C,CAAoD,GAApD,CAAyD;AACvE;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,SArDmC;AAsD3BC,IAAAA,SAAS,kCACFV,OAAO,CAACW,MAAR,CAAe,CAACC,GAAD,EAAMC,CAAN,KAAY;AAC1BD,MAAAA,GAAG,CAACC,CAAC,CAACL,IAAH,CAAH,GAAcK,CAAd;AACA,aAAOD,GAAP;AACH,KAHE,EAGA,EAHA,CADE;AAKLE,MAAAA,IAAI,EAAEC,wBALD;AAMLC,MAAAA,IAAI,EAAEC,wBAND;AAOLC,MAAAA,QAAQ,EAARA,sBAPK;AAQLC,MAAAA,MAAM,EAAEC,oBARH;AASLC,MAAAA,GAAG,EAAEC,iBATA;AAULC,MAAAA,QAAQ,EAAEC,4BAVL;AAWLC,MAAAA,SAAS,EAAEC,6BAXN;AAYLC,MAAAA,IAAI,EAAEC,wBAZD;AAaLC,MAAAA,IAAI,EAAEC,wBAbD;AAcLC,MAAAA,QAAQ,EAAE;AACNC,QAAAA,MAAM,EAAE,MAAM;AADR;AAdL;AAtDkB,GAAxB,CAAP;AAyEH,CA9ED;;eAgFelC,U","sourcesContent":["import { GraphQLScalarPlugin } from \"@webiny/handler-graphql/types\";\nimport { CmsContext } from \"~/types\";\nimport {\n RefInput,\n Number as NumberScalar,\n Any as AnyScalar,\n DateTimeScalar,\n DateScalar,\n TimeScalar,\n LongScalar,\n JsonScalar,\n DateTimeZScalar\n} from \"@webiny/handler-graphql/builtInTypes\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { GraphQLScalarType } from \"graphql\";\n\nconst baseSchema = (context: CmsContext): GraphQLSchemaPlugin => {\n const scalars = context.plugins\n .byType<GraphQLScalarPlugin>(\"graphql-scalar\")\n .map(item => item.scalar);\n\n return new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n ${scalars.map(scalar => `scalar ${scalar.name}`).join(\" \")}\n scalar JSON\n scalar Long\n scalar RefInput\n scalar Number\n scalar Any\n scalar Date\n scalar DateTime\n scalar DateTimeZ\n scalar Time\n\n type Query\n\n type Mutation {\n _empty: String\n }\n\n type CmsError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type CmsListMeta {\n cursor: String\n hasMoreItems: Boolean\n totalCount: Int\n }\n\n type CmsDeleteResponse {\n data: Boolean\n error: CmsError\n }\n\n type CmsBooleanResponse {\n data: Boolean\n error: CmsError\n }\n\n type CmsCreatedBy {\n id: String\n displayName: String\n type: String\n }\n\n type CmsOwnedBy {\n id: String\n displayName: String\n type: String\n }\n `,\n resolvers: {\n ...scalars.reduce((acc, s) => {\n acc[s.name] = s;\n return acc;\n }, {} as Record<string, GraphQLScalarType>),\n JSON: JsonScalar,\n Long: LongScalar,\n RefInput,\n Number: NumberScalar,\n Any: AnyScalar,\n DateTime: DateTimeScalar,\n DateTimeZ: DateTimeZScalar,\n Date: DateScalar,\n Time: TimeScalar,\n Mutation: {\n _empty: () => \"_empty\"\n }\n }\n });\n};\n\nexport default baseSchema;\n"]}
@@ -15,7 +15,10 @@ var _getEntryTitle = require("../utils/getEntryTitle");
15
15
 
16
16
  const plugin = context => {
17
17
  if (!context.cms.MANAGE) {
18
- return null;
18
+ return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
19
+ typeDefs: "",
20
+ resolvers: {}
21
+ });
19
22
  }
20
23
 
21
24
  return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
@@ -76,7 +79,9 @@ const plugin = context => {
76
79
  const getters = models.filter(model => modelIds.includes(model.modelId)).map(async model => {
77
80
  const latest = query === "__latest__";
78
81
  const modelManager = await context.cms.getModelManager(model.modelId);
79
- const where = {};
82
+ const where = {
83
+ tenant: model.tenant
84
+ };
80
85
 
81
86
  if (!latest) {
82
87
  where[`${model.titleFieldId}_contains`] = query;
@@ -118,7 +123,8 @@ const plugin = context => {
118
123
  });
119
124
  }
120
125
 
121
- const [entry] = await context.cms.getEntriesByIds(model, [id]);
126
+ const result = await context.cms.getEntriesByIds(model, [id]);
127
+ const [entry] = result;
122
128
  return new _handlerGraphql.Response({
123
129
  id: entry.id,
124
130
  model: {
@@ -136,10 +142,11 @@ const plugin = context => {
136
142
  collection[model.modelId] = model;
137
143
  return collection;
138
144
  }, {});
139
- const entriesByModel = args.entries.reduce((collection, ref) => {
145
+ const argsEntries = args.entries;
146
+ const entriesByModel = argsEntries.reduce((collection, ref) => {
140
147
  if (!collection[ref.modelId]) {
141
148
  collection[ref.modelId] = [];
142
- } else if (collection[ref.modelId].includes(ref.id) === true) {
149
+ } else if (collection[ref.modelId].includes(ref.id)) {
143
150
  return collection;
144
151
  }
145
152
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["contentEntries.ts"],"names":["plugin","context","cms","MANAGE","GraphQLSchemaPlugin","typeDefs","resolvers","Query","searchContentEntries","_","args","modelIds","query","limit","models","listModels","getters","filter","model","includes","modelId","map","latest","modelManager","getModelManager","where","tenant","titleFieldId","items","listLatest","entry","id","name","status","title","savedOn","entries","Promise","all","then","results","reduce","result","item","concat","Response","sort","a","b","Date","parse","slice","getContentEntry","find","m","NotAuthorizedResponse","data","getEntriesByIds","getContentEntries","modelsMap","collection","argsEntries","entriesByModel","ref","push","Object","keys","length"],"mappings":"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","sourcesContent":["import { Response } from \"@webiny/handler-graphql\";\nimport { CmsEntry, CmsContext, CmsModel, CmsEntryListWhere } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { getEntryTitle } from \"~/content/plugins/utils/getEntryTitle\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\nconst plugin = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n return new GraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsModelMeta {\n modelId: String\n name: String\n }\n\n type CmsContentEntry {\n id: ID\n model: CmsModelMeta\n status: String\n title: String\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String!\n limit: Int\n ): CmsContentEntriesResponse\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n }\n `,\n resolvers: {\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const latest = query === \"__latest__\";\n const modelManager = await context.cms.getModelManager(model.modelId);\n const where: CmsEntryListWhere = {\n tenant: model.tenant\n };\n if (!latest) {\n where[`${model.titleFieldId}_contains`] = query;\n }\n const [items] = await modelManager.listLatest({\n limit,\n where\n });\n\n return items.map((entry: CmsEntry) => ({\n id: entry.id,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n // We need `savedOn` to sort entries from latest to oldest\n savedOn: entry.savedOn\n }));\n });\n\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn))\n .slice(0, limit)\n );\n },\n async getContentEntry(_, args: any, context) {\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({ data: { modelId } });\n }\n\n const result = await context.cms.getEntriesByIds(model, [id]);\n\n const [entry] = result;\n\n return new Response({\n id: entry.id,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry)\n });\n },\n async getContentEntries(_, args: any, context) {\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(\n async modelId => {\n return context.cms.getEntriesByIds(\n modelsMap[modelId],\n entriesByModel[modelId]\n );\n }\n );\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n const results = await Promise.all(getters);\n\n const entries = results.reduce((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return {\n id: item.id,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: item.status,\n title: getEntryTitle(model, item)\n };\n })\n );\n }, [] as any[]);\n\n return new Response(entries);\n }\n }\n }\n });\n};\n\nexport default plugin;\n"]}
@@ -74,8 +74,7 @@ const plugin = context => {
74
74
  return models.filter(m => m.group === group.id).length;
75
75
  },
76
76
  plugin: async (group, _, context) => {
77
- const groupPlugin = context.plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type).find(item => item.contentModelGroup.id === group.id);
78
- return Boolean(groupPlugin);
77
+ return context.plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type).some(item => item.contentModelGroup.id === group.id);
79
78
  }
80
79
  },
81
80
  Query: {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["contentModelGroups.ts"],"names":["plugin","context","manageSchema","cms","MANAGE","resolvers","CmsContentModelGroup","contentModels","group","_","security","disableAuthorization","models","listModels","enableAuthorization","filter","m","id","totalContentModels","length","plugins","byType","CmsGroupPlugin","type","some","item","contentModelGroup","Query","getContentModelGroup","args","model","getGroup","Response","e","ErrorResponse","listContentModelGroups","__","listGroups","Mutation","createContentModelGroup","createGroup","data","updateContentModelGroup","updateGroup","deleteContentModelGroup","deleteGroup","GraphQLSchemaPlugin","typeDefs"],"mappings":"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","sourcesContent":["import { ErrorResponse, Response } from \"@webiny/handler-graphql\";\n\nimport { CmsContext } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\n\nconst plugin = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n manageSchema = /* GraphQL */ `\n input CmsContentModelGroupInput {\n name: String!\n slug: String\n description: String\n icon: String!\n }\n\n type CmsContentModelGroupResponse {\n data: CmsContentModelGroup\n error: CmsError\n }\n\n type CmsContentModelGroupListResponse {\n data: [CmsContentModelGroup]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModelGroup(id: ID): CmsContentModelGroupResponse\n listContentModelGroups: CmsContentModelGroupListResponse\n }\n\n extend type Mutation {\n createContentModelGroup(\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n updateContentModelGroup(\n id: ID!\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n deleteContentModelGroup(id: ID!): CmsDeleteResponse\n }\n `;\n }\n\n let resolvers: Resolvers<CmsContext> = {};\n\n if (context.cms.MANAGE) {\n resolvers = {\n CmsContentModelGroup: {\n contentModels: async (group, _, context) => {\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n return models.filter(m => m.group.id === group.id);\n },\n totalContentModels: async (group, _, context) => {\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n return models.filter(m => m.group === group.id).length;\n },\n plugin: async (group, _, context: CmsContext): Promise<boolean> => {\n return context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .some(item => item.contentModelGroup.id === group.id);\n }\n },\n Query: {\n getContentModelGroup: async (_, args: any, context) => {\n try {\n const { id } = args;\n const model = await context.cms.getGroup(id);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModelGroups: async (_, __, context) => {\n try {\n const models = await context.cms.listGroups();\n return new Response(models);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n Mutation: {\n createContentModelGroup: async (_, args: any, context) => {\n try {\n const model = await context.cms.createGroup(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModelGroup: async (_, args: any, context) => {\n try {\n const group = await context.cms.updateGroup(args.id, args.data);\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModelGroup: async (_, args: any, context) => {\n try {\n await context.cms.deleteGroup(args.id);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n };\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsContentModelGroup {\n id: ID!\n createdOn: DateTime\n savedOn: DateTime\n name: String!\n contentModels: [CmsContentModel!]\n totalContentModels: Int!\n slug: String!\n description: String\n icon: String\n createdBy: CmsCreatedBy\n\n # Returns true if the content model group is registered via a plugin.\n plugin: Boolean!\n }\n ${manageSchema}\n `,\n resolvers\n });\n};\n\nexport default plugin;\n"]}
@@ -33,15 +33,14 @@ const plugin = context => {
33
33
  },
34
34
  CmsContentModel: {
35
35
  plugin: async (model, _, context) => {
36
- const modelPlugin = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type).find(item => item.contentModel.modelId === model.modelId);
37
- return Boolean(modelPlugin);
36
+ return context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type).some(item => item.contentModel.modelId === model.modelId);
38
37
  }
39
38
  }
40
39
  };
41
40
  let manageSchema = "";
42
41
 
43
42
  if (context.cms.MANAGE) {
44
- resolvers.Mutation = {
43
+ resolvers["Mutation"] = {
45
44
  createContentModel: async (_, args, context) => {
46
45
  try {
47
46
  const model = await context.cms.createModel(args.data);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["contentModels.ts"],"names":["plugin","context","resolvers","Query","getContentModel","_","args","model","cms","getModel","modelId","Response","e","ErrorResponse","listContentModels","__","listModels","CmsContentModel","plugins","byType","CmsModelPlugin","type","some","item","contentModel","manageSchema","MANAGE","createContentModel","createModel","data","createContentModelFrom","createModelFrom","updateContentModel","updateModel","deleteContentModel","deleteModel","GraphQLSchemaPlugin","typeDefs"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEA,MAAMA,MAAM,GAAIC,OAAD,IAA0D;AACrE,QAAMC,SAAgC,GAAG;AACrCC,IAAAA,KAAK,EAAE;AACHC,MAAAA,eAAe,EAAE,OAAOC,CAAP,EAAmBC,IAAnB,EAA8BL,OAA9B,KAA0C;AACvD,YAAI;AACA,gBAAMM,KAAK,GAAG,MAAMN,OAAO,CAACO,GAAR,CAAYC,QAAZ,CAAqBH,IAAI,CAACI,OAA1B,CAApB;AACA,iBAAO,IAAIC,wBAAJ,CAAaJ,KAAb,CAAP;AACH,SAHD,CAGE,OAAOK,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ,OARE;AASHE,MAAAA,iBAAiB,EAAE,OAAOT,CAAP,EAAmBU,EAAnB,EAAgCd,OAAhC,KAAwD;AACvE,YAAI;AACA,gBAAMM,KAAK,GAAG,MAAMN,OAAO,CAACO,GAAR,CAAYQ,UAAZ,EAApB;AACA,iBAAO,IAAIL,wBAAJ,CAAaJ,KAAb,CAAP;AACH,SAHD,CAGE,OAAOK,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ;AAhBE,KAD8B;AAmBrCK,IAAAA,eAAe,EAAE;AACbjB,MAAAA,MAAM,EAAE,OAAOO,KAAP,EAAcF,CAAd,EAAiBJ,OAAjB,KAA+C;AACnD,eAAOA,OAAO,CAACiB,OAAR,CACFC,MADE,CACqBC,+BAAeC,IADpC,EAEFC,IAFE,CAEGC,IAAI,IAAIA,IAAI,CAACC,YAAL,CAAkBd,OAAlB,KAA8BH,KAAK,CAACG,OAF/C,CAAP;AAGH;AALY;AAnBoB,GAAzC;AA4BA,MAAIe,YAAY,GAAG,EAAnB;;AACA,MAAIxB,OAAO,CAACO,GAAR,CAAYkB,MAAhB,EAAwB;AACpBxB,IAAAA,SAAS,CAAC,UAAD,CAAT,GAAwB;AACpByB,MAAAA,kBAAkB,EAAE,OAAOtB,CAAP,EAAmBC,IAAnB,EAA8BL,OAA9B,KAA0C;AAC1D,YAAI;AACA,gBAAMM,KAAK,GAAG,MAAMN,OAAO,CAACO,GAAR,CAAYoB,WAAZ,CAAwBtB,IAAI,CAACuB,IAA7B,CAApB;AACA,iBAAO,IAAIlB,wBAAJ,CAAaJ,KAAb,CAAP;AACH,SAHD,CAGE,OAAOK,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ,OARmB;AASpBkB,MAAAA,sBAAsB,EAAE,OAAOzB,CAAP,EAAmBC,IAAnB,EAA8BL,OAA9B,KAA0C;AAC9D,YAAI;AACA,gBAAMM,KAAK,GAAG,MAAMN,OAAO,CAACO,GAAR,CAAYuB,eAAZ,CAA4BzB,IAAI,CAACI,OAAjC,EAA0CJ,IAAI,CAACuB,IAA/C,CAApB;AACA,iBAAO,IAAIlB,wBAAJ,CAAaJ,KAAb,CAAP;AACH,SAHD,CAGE,OAAOK,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ,OAhBmB;AAiBpBoB,MAAAA,kBAAkB,EAAE,OAAO3B,CAAP,EAAmBC,IAAnB,EAA8BL,OAA9B,KAA0C;AAC1D,cAAM;AAAES,UAAAA,OAAF;AAAWmB,UAAAA;AAAX,YAAoBvB,IAA1B;;AACA,YAAI;AACA,gBAAMC,KAAK,GAAG,MAAMN,OAAO,CAACO,GAAR,CAAYyB,WAAZ,CAAwBvB,OAAxB,EAAiCmB,IAAjC,CAApB;AACA,iBAAO,IAAIlB,wBAAJ,CAAaJ,KAAb,CAAP;AACH,SAHD,CAGE,OAAOK,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ,OAzBmB;AA0BpBsB,MAAAA,kBAAkB,EAAE,OAAO7B,CAAP,EAAmBC,IAAnB,EAA8BL,OAA9B,KAA0C;AAC1D,cAAM;AAAES,UAAAA;AAAF,YAAcJ,IAApB;;AACA,YAAI;AACA,gBAAML,OAAO,CAACO,GAAR,CAAY2B,WAAZ,CAAwBzB,OAAxB,CAAN;AACA,iBAAO,IAAIC,wBAAJ,CAAa,IAAb,CAAP;AACH,SAHD,CAGE,OAAOC,CAAP,EAAU;AACR,iBAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ;AAlCmB,KAAxB;AAqCAa,IAAAA,YAAY;AAAG;AAAe;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,SA3EQ;AA4EH;;AAED,SAAO,IAAIW,wCAAJ,CAAoC;AACvCC,IAAAA,QAAQ;AAAE;AAAe;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;AA0EvCvB,IAAAA;AA1EuC,GAApC,CAAP;AA4EH,CA9ND;;eAgOeF,M","sourcesContent":["import { ErrorResponse, 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 \"~/content/plugins/CmsModelPlugin\";\n\nconst plugin = (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 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 model = await context.cms.listModels();\n return new Response(model);\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 }\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\nexport default plugin;\n"]}
@@ -1,4 +1,4 @@
1
- import { CmsModelField } from "../../../types";
1
+ import { CmsModelField, ApiEndpoint, CmsModel, CmsFieldTypePlugins } from "../../../types";
2
2
  import { Resolvers } from "@webiny/handler-graphql/types";
3
3
  interface CreateFieldResolvers {
4
4
  graphQLType: string;
@@ -6,14 +6,15 @@ interface CreateFieldResolvers {
6
6
  isRoot: boolean;
7
7
  extraResolvers?: Resolvers<any>;
8
8
  }
9
+ interface CreateFieldResolversFactoryParams {
10
+ endpointType: ApiEndpoint;
11
+ models: CmsModel[];
12
+ model: CmsModel;
13
+ fieldTypePlugins: CmsFieldTypePlugins;
14
+ }
9
15
  /**
10
16
  * We use a factory to avoid passing the parameters for recursive invocations.
11
17
  * This way they will always be in the function scope and we can only pass "fields".
12
18
  */
13
- export declare function createFieldResolversFactory({ endpointType, models, model, fieldTypePlugins }: {
14
- endpointType: any;
15
- models: any;
16
- model: any;
17
- fieldTypePlugins: any;
18
- }): (params: CreateFieldResolvers) => {};
19
+ export declare const createFieldResolversFactory: (factoryParams: CreateFieldResolversFactoryParams) => (params: CreateFieldResolvers) => {};
19
20
  export {};
@@ -5,12 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createFieldResolversFactory = createFieldResolversFactory;
8
+ exports.createFieldResolversFactory = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _get = _interopRequireDefault(require("lodash/get"));
13
-
14
12
  var _set = _interopRequireDefault(require("lodash/set"));
15
13
 
16
14
  var _entryStorage = require("../utils/entryStorage");
@@ -19,16 +17,28 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
19
17
 
20
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; }
21
19
 
20
+ const getCreateResolver = (plugins, field, endpointType) => {
21
+ if (!plugins[field.type]) {
22
+ return null;
23
+ } else if (!plugins[field.type][endpointType]) {
24
+ return null;
25
+ }
26
+
27
+ return plugins[field.type][endpointType].createResolver;
28
+ };
22
29
  /**
23
30
  * We use a factory to avoid passing the parameters for recursive invocations.
24
31
  * This way they will always be in the function scope and we can only pass "fields".
25
32
  */
26
- function createFieldResolversFactory({
27
- endpointType,
28
- models,
29
- model,
30
- fieldTypePlugins
31
- }) {
33
+
34
+
35
+ const createFieldResolversFactory = factoryParams => {
36
+ const {
37
+ endpointType,
38
+ models,
39
+ model,
40
+ fieldTypePlugins
41
+ } = factoryParams;
32
42
  return function createFieldResolvers(params) {
33
43
  const {
34
44
  graphQLType,
@@ -46,7 +56,7 @@ function createFieldResolversFactory({
46
56
  continue;
47
57
  }
48
58
 
49
- const createResolver = (0, _get.default)(fieldTypePlugins, `${field.type}.${endpointType}.createResolver`);
59
+ const createResolver = getCreateResolver(fieldTypePlugins, field, endpointType);
50
60
  let resolver;
51
61
  const fieldResolver = createResolver ? createResolver({
52
62
  graphQLType,
@@ -71,7 +81,8 @@ function createFieldResolversFactory({
71
81
 
72
82
  const {
73
83
  fieldId
74
- } = field;
84
+ } = field; // TODO @ts-refactor figure out types for parameters
85
+ // @ts-ignore
75
86
 
76
87
  fieldResolvers[fieldId] = async (parent, args, context, info) => {
77
88
  // Get transformed value (eg. data decompression)
@@ -95,4 +106,6 @@ function createFieldResolversFactory({
95
106
  [graphQLType]: fieldResolvers
96
107
  }, typeResolvers);
97
108
  };
98
- }
109
+ };
110
+
111
+ exports.createFieldResolversFactory = createFieldResolversFactory;