@webiny/api-headless-cms 0.0.0-unstable.611c5af35e → 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 (277) hide show
  1. package/context.js +15 -0
  2. package/context.js.map +1 -1
  3. package/crud/contentEntry/afterDelete.js +5 -0
  4. package/crud/contentEntry/afterDelete.js.map +1 -1
  5. package/crud/contentEntry/beforeCreate.js +3 -0
  6. package/crud/contentEntry/beforeCreate.js.map +1 -1
  7. package/crud/contentEntry/beforeUpdate.js +3 -0
  8. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  9. package/crud/contentEntry/entryDataValidation.js +40 -1
  10. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  11. package/crud/contentEntry/markLockedFields.js +25 -2
  12. package/crud/contentEntry/markLockedFields.js.map +1 -1
  13. package/crud/contentEntry/referenceFieldsMapping.js +59 -5
  14. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  15. package/crud/contentEntry/searchableFields.d.ts +9 -0
  16. package/crud/contentEntry/searchableFields.js +83 -0
  17. package/crud/contentEntry/searchableFields.js.map +1 -0
  18. package/crud/contentEntry.crud.js +146 -55
  19. package/crud/contentEntry.crud.js.map +1 -1
  20. package/crud/contentModel/afterCreate.js +2 -0
  21. package/crud/contentModel/afterCreate.js.map +1 -1
  22. package/crud/contentModel/afterCreateFrom.js +2 -0
  23. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  24. package/crud/contentModel/afterDelete.js +2 -0
  25. package/crud/contentModel/afterDelete.js.map +1 -1
  26. package/crud/contentModel/afterUpdate.js +2 -0
  27. package/crud/contentModel/afterUpdate.js.map +1 -1
  28. package/crud/contentModel/beforeCreate.js +32 -4
  29. package/crud/contentModel/beforeCreate.js.map +1 -1
  30. package/crud/contentModel/beforeDelete.js +10 -0
  31. package/crud/contentModel/beforeDelete.js.map +1 -1
  32. package/crud/contentModel/beforeUpdate.js +5 -0
  33. package/crud/contentModel/beforeUpdate.js.map +1 -1
  34. package/crud/contentModel/contentModelManagerFactory.js +7 -0
  35. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  36. package/crud/contentModel/createFieldModels.js +6 -0
  37. package/crud/contentModel/createFieldModels.js.map +1 -1
  38. package/crud/contentModel/createFieldStorageId.js +2 -0
  39. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  40. package/crud/contentModel/fieldIdValidation.js +5 -0
  41. package/crud/contentModel/fieldIdValidation.js.map +1 -1
  42. package/crud/contentModel/idValidation.js +5 -0
  43. package/crud/contentModel/idValidation.js.map +1 -1
  44. package/crud/contentModel/models.js +8 -1
  45. package/crud/contentModel/models.js.map +1 -1
  46. package/crud/contentModel/systemFields.js.map +1 -1
  47. package/crud/contentModel/validateLayout.js +8 -0
  48. package/crud/contentModel/validateLayout.js.map +1 -1
  49. package/crud/contentModel/validateModel.js +8 -0
  50. package/crud/contentModel/validateModel.js.map +1 -1
  51. package/crud/contentModel/validateModelFields.js +60 -8
  52. package/crud/contentModel/validateModelFields.js.map +1 -1
  53. package/crud/contentModel.crud.js +96 -11
  54. package/crud/contentModel.crud.js.map +1 -1
  55. package/crud/contentModelGroup/beforeCreate.js +12 -0
  56. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  57. package/crud/contentModelGroup/beforeDelete.js +8 -0
  58. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  59. package/crud/contentModelGroup/beforeUpdate.js +5 -0
  60. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  61. package/crud/contentModelGroup.crud.js +47 -10
  62. package/crud/contentModelGroup.crud.js.map +1 -1
  63. package/crud/index.js +16 -0
  64. package/crud/index.js.map +1 -1
  65. package/crud/settings.crud.js +12 -0
  66. package/crud/settings.crud.js.map +1 -1
  67. package/crud/system.crud.js +37 -2
  68. package/crud/system.crud.js.map +1 -1
  69. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +13 -0
  70. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  71. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +53 -0
  72. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  73. package/fieldConverters/index.js +4 -0
  74. package/fieldConverters/index.js.map +1 -1
  75. package/graphql/buildSchemaPlugins.js +9 -5
  76. package/graphql/buildSchemaPlugins.js.map +1 -1
  77. package/graphql/graphQLHandlerFactory.js +28 -3
  78. package/graphql/graphQLHandlerFactory.js.map +1 -1
  79. package/graphql/index.js +8 -1
  80. package/graphql/index.js.map +1 -1
  81. package/graphql/schema/baseContentSchema.js +9 -1
  82. package/graphql/schema/baseContentSchema.js.map +1 -1
  83. package/graphql/schema/contentEntries.js +42 -2
  84. package/graphql/schema/contentEntries.js.map +1 -1
  85. package/graphql/schema/contentModelGroups.js +19 -2
  86. package/graphql/schema/contentModelGroups.js.map +1 -1
  87. package/graphql/schema/contentModels.js +18 -2
  88. package/graphql/schema/contentModels.js.map +1 -1
  89. package/graphql/schema/createFieldResolvers.js +21 -3
  90. package/graphql/schema/createFieldResolvers.js.map +1 -1
  91. package/graphql/schema/createManageResolvers.js +26 -0
  92. package/graphql/schema/createManageResolvers.js.map +1 -1
  93. package/graphql/schema/createManageSDL.js +17 -2
  94. package/graphql/schema/createManageSDL.js.map +1 -1
  95. package/graphql/schema/createPreviewResolvers.js +10 -0
  96. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  97. package/graphql/schema/createReadResolvers.js +10 -0
  98. package/graphql/schema/createReadResolvers.js.map +1 -1
  99. package/graphql/schema/createReadSDL.js +13 -1
  100. package/graphql/schema/createReadSDL.js.map +1 -1
  101. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -0
  102. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  103. package/graphql/schema/resolvers/manage/resolveCreate.js +3 -0
  104. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  105. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +3 -0
  106. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  107. package/graphql/schema/resolvers/manage/resolveDelete.js +6 -0
  108. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  109. package/graphql/schema/resolvers/manage/resolveGet.js +16 -0
  110. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  111. package/graphql/schema/resolvers/manage/resolveGetByIds.js +3 -0
  112. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  113. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +3 -0
  114. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  115. package/graphql/schema/resolvers/manage/resolveList.js +3 -0
  116. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  117. package/graphql/schema/resolvers/manage/resolvePublish.js +3 -0
  118. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  119. package/graphql/schema/resolvers/manage/resolveRepublish.js +3 -0
  120. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  121. package/graphql/schema/resolvers/manage/resolveUnpublish.js +3 -0
  122. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  123. package/graphql/schema/resolvers/manage/resolveUpdate.js +3 -0
  124. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  125. package/graphql/schema/resolvers/preview/resolveGet.js +8 -0
  126. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  127. package/graphql/schema/resolvers/preview/resolveList.js +3 -0
  128. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  129. package/graphql/schema/resolvers/read/resolveGet.js +8 -0
  130. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  131. package/graphql/schema/resolvers/read/resolveList.js +3 -0
  132. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  133. package/graphql/schema/schemaPlugins.js +19 -5
  134. package/graphql/schema/schemaPlugins.js.map +1 -1
  135. package/graphql/system.js +14 -1
  136. package/graphql/system.js.map +1 -1
  137. package/graphqlFields/boolean.js +12 -0
  138. package/graphqlFields/boolean.js.map +1 -1
  139. package/graphqlFields/datetime.js +17 -0
  140. package/graphqlFields/datetime.js.map +1 -1
  141. package/graphqlFields/file.js +8 -0
  142. package/graphqlFields/file.js.map +1 -1
  143. package/graphqlFields/helpers.js +10 -0
  144. package/graphqlFields/helpers.js.map +1 -1
  145. package/graphqlFields/index.js +11 -0
  146. package/graphqlFields/index.js.map +1 -1
  147. package/graphqlFields/longText.js +10 -0
  148. package/graphqlFields/longText.js.map +1 -1
  149. package/graphqlFields/number.js +16 -0
  150. package/graphqlFields/number.js.map +1 -1
  151. package/graphqlFields/object.js +137 -21
  152. package/graphqlFields/object.js.map +1 -1
  153. package/graphqlFields/ref.js +51 -17
  154. package/graphqlFields/ref.js.map +1 -1
  155. package/graphqlFields/richText.js +9 -0
  156. package/graphqlFields/richText.js.map +1 -1
  157. package/graphqlFields/text.js +11 -0
  158. package/graphqlFields/text.js.map +1 -1
  159. package/index.js +19 -0
  160. package/index.js.map +1 -1
  161. package/modelManager/DefaultCmsModelManager.js +16 -0
  162. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  163. package/modelManager/index.js +4 -0
  164. package/modelManager/index.js.map +1 -1
  165. package/package.json +24 -24
  166. package/parameters/context.js +4 -0
  167. package/parameters/context.js.map +1 -1
  168. package/parameters/header.js +11 -0
  169. package/parameters/header.js.map +1 -1
  170. package/parameters/index.js +8 -0
  171. package/parameters/index.js.map +1 -1
  172. package/parameters/manual.js +8 -1
  173. package/parameters/manual.js.map +1 -1
  174. package/parameters/path.js +11 -0
  175. package/parameters/path.js.map +1 -1
  176. package/plugins/CmsGroupPlugin.js +8 -0
  177. package/plugins/CmsGroupPlugin.js.map +1 -1
  178. package/plugins/CmsModelFieldConverterPlugin.js +5 -0
  179. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  180. package/plugins/CmsModelPlugin.js +38 -2
  181. package/plugins/CmsModelPlugin.js.map +1 -1
  182. package/plugins/CmsParametersPlugin.js +7 -0
  183. package/plugins/CmsParametersPlugin.js.map +1 -1
  184. package/plugins/StorageTransformPlugin.d.ts +1 -1
  185. package/plugins/StorageTransformPlugin.js +9 -0
  186. package/plugins/StorageTransformPlugin.js.map +1 -1
  187. package/plugins/index.js +10 -0
  188. package/plugins/index.js.map +1 -1
  189. package/storage/default.js +3 -0
  190. package/storage/default.js.map +1 -1
  191. package/storage/object.js +18 -0
  192. package/storage/object.js.map +1 -1
  193. package/types.d.ts +9 -1
  194. package/types.js +62 -0
  195. package/types.js.map +1 -1
  196. package/upgrades/5.33.0/index.js +26 -3
  197. package/upgrades/5.33.0/index.js.map +1 -1
  198. package/upgrades/index.js +3 -0
  199. package/upgrades/index.js.map +1 -1
  200. package/utils/access.js +25 -11
  201. package/utils/access.js.map +1 -1
  202. package/utils/converters/Converter.js +13 -0
  203. package/utils/converters/Converter.js.map +1 -1
  204. package/utils/converters/ConverterCollection.js +32 -9
  205. package/utils/converters/ConverterCollection.js.map +1 -1
  206. package/utils/converters/valueKeyStorageConverter.js +26 -0
  207. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  208. package/utils/createTypeName.js +8 -0
  209. package/utils/createTypeName.js.map +1 -1
  210. package/utils/entryStorage.js +26 -10
  211. package/utils/entryStorage.js.map +1 -1
  212. package/utils/filterAsync.js +5 -0
  213. package/utils/filterAsync.js.map +1 -1
  214. package/utils/filterModelFields.js +9 -3
  215. package/utils/filterModelFields.js.map +1 -1
  216. package/utils/getEntryTitle.js +9 -0
  217. package/utils/getEntryTitle.js.map +1 -1
  218. package/utils/getSchemaFromFieldPlugins.js +6 -2
  219. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  220. package/utils/ownership.js +8 -0
  221. package/utils/ownership.js.map +1 -1
  222. package/utils/permissions.js +23 -8
  223. package/utils/permissions.js.map +1 -1
  224. package/utils/pluralizedTypeName.js +6 -0
  225. package/utils/pluralizedTypeName.js.map +1 -1
  226. package/utils/renderFields.js +8 -0
  227. package/utils/renderFields.js.map +1 -1
  228. package/utils/renderGetFilterFields.js +11 -0
  229. package/utils/renderGetFilterFields.js.map +1 -1
  230. package/utils/renderInputFields.js +8 -0
  231. package/utils/renderInputFields.js.map +1 -1
  232. package/utils/renderListFilterFields.js +11 -2
  233. package/utils/renderListFilterFields.js.map +1 -1
  234. package/utils/renderSortEnum.js +7 -0
  235. package/utils/renderSortEnum.js.map +1 -1
  236. package/utils/toSlug.js +4 -0
  237. package/utils/toSlug.js.map +1 -1
  238. package/validators/dateGte.js +7 -0
  239. package/validators/dateGte.js.map +1 -1
  240. package/validators/dateLte.js +7 -0
  241. package/validators/dateLte.js.map +1 -1
  242. package/validators/gte.js +8 -0
  243. package/validators/gte.js.map +1 -1
  244. package/validators/in.js +8 -0
  245. package/validators/in.js.map +1 -1
  246. package/validators/index.js +15 -0
  247. package/validators/index.js.map +1 -1
  248. package/validators/lte.js +8 -0
  249. package/validators/lte.js.map +1 -1
  250. package/validators/maxLength.js +8 -0
  251. package/validators/maxLength.js.map +1 -1
  252. package/validators/minLength.js +8 -0
  253. package/validators/minLength.js.map +1 -1
  254. package/validators/pattern.js +9 -0
  255. package/validators/pattern.js.map +1 -1
  256. package/validators/patternPlugins/email.js +2 -0
  257. package/validators/patternPlugins/email.js.map +1 -1
  258. package/validators/patternPlugins/index.js +8 -0
  259. package/validators/patternPlugins/index.js.map +1 -1
  260. package/validators/patternPlugins/lowerCase.js +2 -0
  261. package/validators/patternPlugins/lowerCase.js.map +1 -1
  262. package/validators/patternPlugins/lowerCaseSpace.js +2 -0
  263. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  264. package/validators/patternPlugins/upperCase.js +2 -0
  265. package/validators/patternPlugins/upperCase.js.map +1 -1
  266. package/validators/patternPlugins/upperCaseSpace.js +2 -0
  267. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  268. package/validators/patternPlugins/url.js +2 -0
  269. package/validators/patternPlugins/url.js.map +1 -1
  270. package/validators/required.js +5 -0
  271. package/validators/required.js.map +1 -1
  272. package/validators/timeGte.js +8 -0
  273. package/validators/timeGte.js.map +1 -1
  274. package/validators/timeLte.js +8 -0
  275. package/validators/timeLte.js.map +1 -1
  276. package/validators/unique.js +7 -0
  277. package/validators/unique.js.map +1 -1
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.referenceFieldsMapping = void 0;
9
+
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
9
12
  var _error = _interopRequireDefault(require("@webiny/error"));
13
+
10
14
  var _dotProp = _interopRequireDefault(require("dot-prop"));
15
+
11
16
  var _utils = require("@webiny/utils");
17
+
12
18
  const buildReferenceFieldPaths = params => {
13
19
  const {
14
20
  fields,
@@ -19,58 +25,75 @@ const buildReferenceFieldPaths = params => {
19
25
  const isMultipleValues = Array.isArray(input);
20
26
  return fields.filter(field => ["object", "ref"].includes(field.type)).reduce((collection, field) => {
21
27
  var _field$settings2;
28
+
22
29
  /**
23
30
  * First we check the ref field
24
31
  */
25
32
  if (field.type === "ref") {
26
33
  const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(".")}.` : "";
34
+
27
35
  if (field.multipleValues) {
28
36
  const inputValue = _dotProp.default.get(input, `${field.fieldId}`, []);
37
+
29
38
  if (Array.isArray(inputValue) === false) {
30
39
  return collection;
31
40
  }
41
+
32
42
  for (const key in inputValue) {
33
43
  const path = `${parentPathsValue}${field.fieldId}.${key}`;
34
44
  collection.push(path);
35
45
  }
46
+
36
47
  return collection;
37
48
  }
49
+
38
50
  if (isMultipleValues) {
39
51
  for (const key in input) {
40
52
  const path = `${parentPathsValue}${key}.${field.fieldId}`;
41
53
  collection.push(path);
42
54
  }
55
+
43
56
  return collection;
44
57
  }
58
+
45
59
  collection.push(`${parentPathsValue}${field.fieldId}`);
46
60
  return collection;
47
61
  }
48
62
  /**
49
63
  * Then we move onto the object field
50
64
  */
65
+
66
+
51
67
  const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(".")}.` : "";
52
68
  /**
53
69
  * This is if received input is array. We need to map key with fieldId at this point.
54
70
  */
71
+
55
72
  if (isMultipleValues) {
56
73
  for (const key in input) {
57
74
  const path = `${parentPathsValue}${key}.${field.fieldId}`;
58
75
  collection.push(path);
59
76
  }
77
+
60
78
  return collection;
61
79
  }
80
+
62
81
  const objFieldPath = `${field.fieldId}`;
63
- const objFieldInputValue = _dotProp.default.get(input, objFieldPath, []);
64
82
 
83
+ const objFieldInputValue = _dotProp.default.get(input, objFieldPath, []);
65
84
  /**
66
85
  * If field is multiple values one, we need to go through the input and use the existing keys.
67
86
  */
87
+
88
+
68
89
  if (field.multipleValues) {
69
90
  if (Array.isArray(objFieldInputValue) === false) {
70
91
  return collection;
71
92
  }
93
+
72
94
  for (const key in objFieldInputValue) {
73
95
  var _field$settings;
96
+
74
97
  const result = buildReferenceFieldPaths({
75
98
  fields: ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [],
76
99
  input: objFieldInputValue[key],
@@ -78,12 +101,14 @@ const buildReferenceFieldPaths = params => {
78
101
  });
79
102
  collection.push(...result);
80
103
  }
104
+
81
105
  return collection;
82
106
  }
83
-
84
107
  /**
85
108
  * Single value reference field.
86
109
  */
110
+
111
+
87
112
  const results = buildReferenceFieldPaths({
88
113
  fields: ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.fields) || [],
89
114
  input: objFieldInputValue,
@@ -92,6 +117,7 @@ const buildReferenceFieldPaths = params => {
92
117
  return collection.concat(results);
93
118
  }, []);
94
119
  };
120
+
95
121
  const getReferenceFieldValue = ref => {
96
122
  if (!ref) {
97
123
  return {
@@ -99,11 +125,13 @@ const getReferenceFieldValue = ref => {
99
125
  modelId: null
100
126
  };
101
127
  }
128
+
102
129
  return {
103
130
  id: (ref.id || ref.entryId || "").trim() || null,
104
131
  modelId: (ref.modelId || "").trim() || null
105
132
  };
106
133
  };
134
+
107
135
  const referenceFieldsMapping = async params => {
108
136
  const {
109
137
  context,
@@ -117,56 +145,72 @@ const referenceFieldsMapping = async params => {
117
145
  input,
118
146
  parentPaths: []
119
147
  });
148
+
120
149
  if (referenceFieldPaths.length === 0) {
121
150
  return output;
122
151
  }
152
+
123
153
  const referencesByModel = {};
124
154
  const pathsByReferenceId = {};
155
+
125
156
  for (const path of referenceFieldPaths) {
126
157
  const ref = _dotProp.default.get(output, path);
158
+
127
159
  const {
128
160
  id,
129
161
  modelId
130
162
  } = getReferenceFieldValue(ref);
163
+
131
164
  if (!id || !modelId) {
132
165
  continue;
133
166
  }
167
+
134
168
  if (!referencesByModel[modelId]) {
135
169
  referencesByModel[modelId] = [];
136
170
  }
171
+
137
172
  referencesByModel[modelId].push(id);
173
+
138
174
  if (!pathsByReferenceId[id]) {
139
175
  pathsByReferenceId[id] = [];
140
176
  }
177
+
141
178
  pathsByReferenceId[id].push(path);
142
179
  }
143
-
144
180
  /**
145
181
  * Again, no point in going further.
146
182
  */
183
+
184
+
147
185
  if (Object.keys(referencesByModel).length === 0) {
148
186
  return output;
149
187
  }
150
188
  /**
151
189
  * Load all models and use only those that are used in reference.
152
190
  */
191
+
192
+
153
193
  const models = (await context.cms.listModels()).filter(model => {
154
194
  const entries = referencesByModel[model.modelId];
195
+
155
196
  if (Array.isArray(entries) === false || entries.length === 0) {
156
197
  return false;
157
198
  }
199
+
158
200
  return true;
159
201
  });
160
202
  /**
161
203
  * Check for any model existence, just in case.
162
204
  */
205
+
163
206
  if (models.length === 0) {
164
207
  return output;
165
208
  }
166
-
167
209
  /**
168
210
  * Load all the entries by their ID
169
211
  */
212
+
213
+
170
214
  const promises = models.map(model => {
171
215
  return context.cms.getEntriesByIds(model, referencesByModel[model.modelId]);
172
216
  });
@@ -179,13 +223,16 @@ const referenceFieldsMapping = async params => {
179
223
  modelId: entry.modelId
180
224
  };
181
225
  }
226
+
182
227
  return collection;
183
228
  }, {});
184
229
  /**
185
230
  * Verify that all referenced entries actually exist.
186
231
  */
232
+
187
233
  for (const modelId in referencesByModel) {
188
234
  const entries = referencesByModel[modelId];
235
+
189
236
  for (const id of entries) {
190
237
  if (records[id]) {
191
238
  continue;
@@ -195,6 +242,7 @@ const referenceFieldsMapping = async params => {
195
242
  model: modelId
196
243
  });
197
244
  }
245
+
198
246
  const {
199
247
  id: entryId
200
248
  } = (0, _utils.parseIdentifier)(id);
@@ -205,13 +253,15 @@ const referenceFieldsMapping = async params => {
205
253
  };
206
254
  }
207
255
  }
208
-
209
256
  /**
210
257
  * In the end, assign the entryId, id and model values to the output.
211
258
  */
259
+
260
+
212
261
  for (const id in pathsByReferenceId) {
213
262
  const entry = records[id];
214
263
  const paths = pathsByReferenceId[id];
264
+
215
265
  if (!entry) {
216
266
  if (validateEntries === true) {
217
267
  throw new _error.default("Missing entry in records.", "ENTRY_ERROR", {
@@ -219,8 +269,10 @@ const referenceFieldsMapping = async params => {
219
269
  paths
220
270
  });
221
271
  }
272
+
222
273
  continue;
223
274
  }
275
+
224
276
  for (const path of paths) {
225
277
  output = _dotProp.default.set(output, path, {
226
278
  id: entry.id,
@@ -229,6 +281,8 @@ const referenceFieldsMapping = async params => {
229
281
  });
230
282
  }
231
283
  }
284
+
232
285
  return output;
233
286
  };
287
+
234
288
  exports.referenceFieldsMapping = referenceFieldsMapping;
@@ -1 +1 @@
1
- {"version":3,"names":["buildReferenceFieldPaths","params","fields","parentPaths","initialParentPaths","input","isMultipleValues","Array","isArray","filter","field","includes","type","reduce","collection","parentPathsValue","length","join","multipleValues","inputValue","dotProp","get","fieldId","key","path","push","objFieldPath","objFieldInputValue","result","settings","concat","results","getReferenceFieldValue","ref","id","modelId","entryId","trim","referenceFieldsMapping","context","model","validateEntries","output","referenceFieldPaths","referencesByModel","pathsByReferenceId","Object","keys","models","cms","listModels","entries","promises","map","getEntriesByIds","Promise","all","records","entry","WebinyError","parseIdentifier","paths","set"],"sources":["referenceFieldsMapping.ts"],"sourcesContent":["import { CmsContext, CmsModel, CmsModelField } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport dotProp from \"dot-prop\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\ninterface CmsRefEntry {\n id: string;\n entryId: string;\n modelId: string;\n}\n\ninterface ReferenceObject {\n id: string;\n modelId: string;\n}\n\ninterface Params {\n context: CmsContext;\n model: CmsModel;\n input: Record<string, ReferenceObject | ReferenceObject[]>;\n validateEntries?: boolean;\n}\n\ninterface BuildReferenceFieldPaths {\n fields: CmsModelField[];\n parentPaths: string[];\n input: Record<string, any>;\n}\n\nconst buildReferenceFieldPaths = (params: BuildReferenceFieldPaths): string[] => {\n const { fields, parentPaths: initialParentPaths, input } = params;\n\n const parentPaths = [...initialParentPaths];\n\n const isMultipleValues = Array.isArray(input);\n\n return fields\n .filter(field => [\"object\", \"ref\"].includes(field.type))\n .reduce((collection, field) => {\n /**\n * First we check the ref field\n */\n if (field.type === \"ref\") {\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n if (field.multipleValues) {\n const inputValue = dotProp.get(input, `${field.fieldId}`, []);\n if (Array.isArray(inputValue) === false) {\n return collection;\n }\n for (const key in inputValue) {\n const path = `${parentPathsValue}${field.fieldId}.${key}`;\n collection.push(path);\n }\n return collection;\n }\n\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n collection.push(`${parentPathsValue}${field.fieldId}`);\n\n return collection;\n }\n /**\n * Then we move onto the object field\n */\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n /**\n * This is if received input is array. We need to map key with fieldId at this point.\n */\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n const objFieldPath = `${field.fieldId}`;\n const objFieldInputValue = dotProp.get(input, objFieldPath, []);\n\n /**\n * If field is multiple values one, we need to go through the input and use the existing keys.\n */\n if (field.multipleValues) {\n if (Array.isArray(objFieldInputValue) === false) {\n return collection;\n }\n for (const key in objFieldInputValue) {\n const result = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue[key],\n parentPaths: parentPaths.concat([field.fieldId, key])\n });\n collection.push(...result);\n }\n\n return collection;\n }\n\n /**\n * Single value reference field.\n */\n const results = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue,\n parentPaths: parentPaths.concat([field.fieldId])\n });\n\n return collection.concat(results);\n }, [] as string[]);\n};\n\nconst getReferenceFieldValue = (ref: any): { id: string | null; modelId: string | null } => {\n if (!ref) {\n return {\n id: null,\n modelId: null\n };\n }\n return {\n id: (ref.id || ref.entryId || \"\").trim() || null,\n modelId: (ref.modelId || \"\").trim() || null\n };\n};\n\nexport const referenceFieldsMapping = async (params: Params): Promise<Record<string, any>> => {\n const { context, model, input, validateEntries = false } = params;\n\n let output: Record<string, any> = {\n ...input\n };\n\n const referenceFieldPaths = buildReferenceFieldPaths({\n fields: model.fields,\n input,\n parentPaths: []\n });\n if (referenceFieldPaths.length === 0) {\n return output;\n }\n\n const referencesByModel: Record<string, string[]> = {};\n const pathsByReferenceId: Record<string, string[]> = {};\n\n for (const path of referenceFieldPaths) {\n const ref = dotProp.get(output, path) as ReferenceObject | any;\n\n const { id, modelId } = getReferenceFieldValue(ref);\n\n if (!id || !modelId) {\n continue;\n }\n if (!referencesByModel[modelId]) {\n referencesByModel[modelId] = [];\n }\n referencesByModel[modelId].push(id);\n if (!pathsByReferenceId[id]) {\n pathsByReferenceId[id] = [];\n }\n pathsByReferenceId[id].push(path);\n }\n\n /**\n * Again, no point in going further.\n */\n if (Object.keys(referencesByModel).length === 0) {\n return output;\n }\n /**\n * Load all models and use only those that are used in reference.\n */\n const models = (await context.cms.listModels()).filter(model => {\n const entries = referencesByModel[model.modelId];\n if (Array.isArray(entries) === false || entries.length === 0) {\n return false;\n }\n return true;\n });\n /**\n * Check for any model existence, just in case.\n */\n if (models.length === 0) {\n return output;\n }\n\n /**\n * Load all the entries by their ID\n */\n const promises = models.map(model => {\n return context.cms.getEntriesByIds(model, referencesByModel[model.modelId]);\n });\n\n const results = await Promise.all(promises);\n\n const records: Record<string, CmsRefEntry> = results.reduce((collection, entries) => {\n for (const entry of entries) {\n collection[entry.id] = {\n id: entry.id,\n entryId: entry.entryId,\n modelId: entry.modelId\n };\n }\n return collection;\n }, {} as Record<string, CmsRefEntry>);\n /**\n * Verify that all referenced entries actually exist.\n */\n for (const modelId in referencesByModel) {\n const entries = referencesByModel[modelId];\n for (const id of entries) {\n if (records[id]) {\n continue;\n } else if (validateEntries === true) {\n throw new WebinyError(\n `Missing referenced entry with id \"${id}\" in model \"${modelId}\".`,\n \"ENTRY_NOT_FOUND\",\n {\n id,\n model: modelId\n }\n );\n }\n const { id: entryId } = parseIdentifier(id);\n records[id] = {\n id,\n entryId,\n modelId\n };\n }\n }\n\n /**\n * In the end, assign the entryId, id and model values to the output.\n */\n for (const id in pathsByReferenceId) {\n const entry = records[id];\n const paths = pathsByReferenceId[id];\n if (!entry) {\n if (validateEntries === true) {\n throw new WebinyError(\"Missing entry in records.\", \"ENTRY_ERROR\", {\n id,\n paths\n });\n }\n continue;\n }\n for (const path of paths) {\n output = dotProp.set(output, path, {\n id: entry.id,\n entryId: entry.entryId,\n modelId: entry.modelId\n });\n }\n }\n\n return output;\n};\n"],"mappings":";;;;;;;;AACA;AACA;AACA;AA0BA,MAAMA,wBAAwB,GAAIC,MAAgC,IAAe;EAC7E,MAAM;IAAEC,MAAM;IAAEC,WAAW,EAAEC,kBAAkB;IAAEC;EAAM,CAAC,GAAGJ,MAAM;EAEjE,MAAME,WAAW,GAAG,CAAC,GAAGC,kBAAkB,CAAC;EAE3C,MAAME,gBAAgB,GAAGC,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC;EAE7C,OAAOH,MAAM,CACRO,MAAM,CAACC,KAAK,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACD,KAAK,CAACE,IAAI,CAAC,CAAC,CACvDC,MAAM,CAAC,CAACC,UAAU,EAAEJ,KAAK,KAAK;IAAA;IAC3B;AACZ;AACA;IACY,IAAIA,KAAK,CAACE,IAAI,KAAK,KAAK,EAAE;MACtB,MAAMG,gBAAgB,GAAGZ,WAAW,CAACa,MAAM,GAAG,CAAC,GAAI,GAAEb,WAAW,CAACc,IAAI,CAAC,GAAG,CAAE,GAAE,GAAG,EAAE;MAClF,IAAIP,KAAK,CAACQ,cAAc,EAAE;QACtB,MAAMC,UAAU,GAAGC,gBAAO,CAACC,GAAG,CAAChB,KAAK,EAAG,GAAEK,KAAK,CAACY,OAAQ,EAAC,EAAE,EAAE,CAAC;QAC7D,IAAIf,KAAK,CAACC,OAAO,CAACW,UAAU,CAAC,KAAK,KAAK,EAAE;UACrC,OAAOL,UAAU;QACrB;QACA,KAAK,MAAMS,GAAG,IAAIJ,UAAU,EAAE;UAC1B,MAAMK,IAAI,GAAI,GAAET,gBAAiB,GAAEL,KAAK,CAACY,OAAQ,IAAGC,GAAI,EAAC;UACzDT,UAAU,CAACW,IAAI,CAACD,IAAI,CAAC;QACzB;QACA,OAAOV,UAAU;MACrB;MAEA,IAAIR,gBAAgB,EAAE;QAClB,KAAK,MAAMiB,GAAG,IAAIlB,KAAK,EAAE;UACrB,MAAMmB,IAAI,GAAI,GAAET,gBAAiB,GAAEQ,GAAI,IAAGb,KAAK,CAACY,OAAQ,EAAC;UACzDR,UAAU,CAACW,IAAI,CAACD,IAAI,CAAC;QACzB;QACA,OAAOV,UAAU;MACrB;MAEAA,UAAU,CAACW,IAAI,CAAE,GAAEV,gBAAiB,GAAEL,KAAK,CAACY,OAAQ,EAAC,CAAC;MAEtD,OAAOR,UAAU;IACrB;IACA;AACZ;AACA;IACY,MAAMC,gBAAgB,GAAGZ,WAAW,CAACa,MAAM,GAAG,CAAC,GAAI,GAAEb,WAAW,CAACc,IAAI,CAAC,GAAG,CAAE,GAAE,GAAG,EAAE;IAClF;AACZ;AACA;IACY,IAAIX,gBAAgB,EAAE;MAClB,KAAK,MAAMiB,GAAG,IAAIlB,KAAK,EAAE;QACrB,MAAMmB,IAAI,GAAI,GAAET,gBAAiB,GAAEQ,GAAI,IAAGb,KAAK,CAACY,OAAQ,EAAC;QACzDR,UAAU,CAACW,IAAI,CAACD,IAAI,CAAC;MACzB;MACA,OAAOV,UAAU;IACrB;IAEA,MAAMY,YAAY,GAAI,GAAEhB,KAAK,CAACY,OAAQ,EAAC;IACvC,MAAMK,kBAAkB,GAAGP,gBAAO,CAACC,GAAG,CAAChB,KAAK,EAAEqB,YAAY,EAAE,EAAE,CAAC;;IAE/D;AACZ;AACA;IACY,IAAIhB,KAAK,CAACQ,cAAc,EAAE;MACtB,IAAIX,KAAK,CAACC,OAAO,CAACmB,kBAAkB,CAAC,KAAK,KAAK,EAAE;QAC7C,OAAOb,UAAU;MACrB;MACA,KAAK,MAAMS,GAAG,IAAII,kBAAkB,EAAE;QAAA;QAClC,MAAMC,MAAM,GAAG5B,wBAAwB,CAAC;UACpCE,MAAM,EAAE,oBAAAQ,KAAK,CAACmB,QAAQ,oDAAd,gBAAgB3B,MAAM,KAAI,EAAE;UACpCG,KAAK,EAAEsB,kBAAkB,CAACJ,GAAG,CAAC;UAC9BpB,WAAW,EAAEA,WAAW,CAAC2B,MAAM,CAAC,CAACpB,KAAK,CAACY,OAAO,EAAEC,GAAG,CAAC;QACxD,CAAC,CAAC;QACFT,UAAU,CAACW,IAAI,CAAC,GAAGG,MAAM,CAAC;MAC9B;MAEA,OAAOd,UAAU;IACrB;;IAEA;AACZ;AACA;IACY,MAAMiB,OAAO,GAAG/B,wBAAwB,CAAC;MACrCE,MAAM,EAAE,qBAAAQ,KAAK,CAACmB,QAAQ,qDAAd,iBAAgB3B,MAAM,KAAI,EAAE;MACpCG,KAAK,EAAEsB,kBAAkB;MACzBxB,WAAW,EAAEA,WAAW,CAAC2B,MAAM,CAAC,CAACpB,KAAK,CAACY,OAAO,CAAC;IACnD,CAAC,CAAC;IAEF,OAAOR,UAAU,CAACgB,MAAM,CAACC,OAAO,CAAC;EACrC,CAAC,EAAE,EAAE,CAAa;AAC1B,CAAC;AAED,MAAMC,sBAAsB,GAAIC,GAAQ,IAAoD;EACxF,IAAI,CAACA,GAAG,EAAE;IACN,OAAO;MACHC,EAAE,EAAE,IAAI;MACRC,OAAO,EAAE;IACb,CAAC;EACL;EACA,OAAO;IACHD,EAAE,EAAE,CAACD,GAAG,CAACC,EAAE,IAAID,GAAG,CAACG,OAAO,IAAI,EAAE,EAAEC,IAAI,EAAE,IAAI,IAAI;IAChDF,OAAO,EAAE,CAACF,GAAG,CAACE,OAAO,IAAI,EAAE,EAAEE,IAAI,EAAE,IAAI;EAC3C,CAAC;AACL,CAAC;AAEM,MAAMC,sBAAsB,GAAG,MAAOrC,MAAc,IAAmC;EAC1F,MAAM;IAAEsC,OAAO;IAAEC,KAAK;IAAEnC,KAAK;IAAEoC,eAAe,GAAG;EAAM,CAAC,GAAGxC,MAAM;EAEjE,IAAIyC,MAA2B,mCACxBrC,KAAK,CACX;EAED,MAAMsC,mBAAmB,GAAG3C,wBAAwB,CAAC;IACjDE,MAAM,EAAEsC,KAAK,CAACtC,MAAM;IACpBG,KAAK;IACLF,WAAW,EAAE;EACjB,CAAC,CAAC;EACF,IAAIwC,mBAAmB,CAAC3B,MAAM,KAAK,CAAC,EAAE;IAClC,OAAO0B,MAAM;EACjB;EAEA,MAAME,iBAA2C,GAAG,CAAC,CAAC;EACtD,MAAMC,kBAA4C,GAAG,CAAC,CAAC;EAEvD,KAAK,MAAMrB,IAAI,IAAImB,mBAAmB,EAAE;IACpC,MAAMV,GAAG,GAAGb,gBAAO,CAACC,GAAG,CAACqB,MAAM,EAAElB,IAAI,CAA0B;IAE9D,MAAM;MAAEU,EAAE;MAAEC;IAAQ,CAAC,GAAGH,sBAAsB,CAACC,GAAG,CAAC;IAEnD,IAAI,CAACC,EAAE,IAAI,CAACC,OAAO,EAAE;MACjB;IACJ;IACA,IAAI,CAACS,iBAAiB,CAACT,OAAO,CAAC,EAAE;MAC7BS,iBAAiB,CAACT,OAAO,CAAC,GAAG,EAAE;IACnC;IACAS,iBAAiB,CAACT,OAAO,CAAC,CAACV,IAAI,CAACS,EAAE,CAAC;IACnC,IAAI,CAACW,kBAAkB,CAACX,EAAE,CAAC,EAAE;MACzBW,kBAAkB,CAACX,EAAE,CAAC,GAAG,EAAE;IAC/B;IACAW,kBAAkB,CAACX,EAAE,CAAC,CAACT,IAAI,CAACD,IAAI,CAAC;EACrC;;EAEA;AACJ;AACA;EACI,IAAIsB,MAAM,CAACC,IAAI,CAACH,iBAAiB,CAAC,CAAC5B,MAAM,KAAK,CAAC,EAAE;IAC7C,OAAO0B,MAAM;EACjB;EACA;AACJ;AACA;EACI,MAAMM,MAAM,GAAG,CAAC,MAAMT,OAAO,CAACU,GAAG,CAACC,UAAU,EAAE,EAAEzC,MAAM,CAAC+B,KAAK,IAAI;IAC5D,MAAMW,OAAO,GAAGP,iBAAiB,CAACJ,KAAK,CAACL,OAAO,CAAC;IAChD,IAAI5B,KAAK,CAACC,OAAO,CAAC2C,OAAO,CAAC,KAAK,KAAK,IAAIA,OAAO,CAACnC,MAAM,KAAK,CAAC,EAAE;MAC1D,OAAO,KAAK;IAChB;IACA,OAAO,IAAI;EACf,CAAC,CAAC;EACF;AACJ;AACA;EACI,IAAIgC,MAAM,CAAChC,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO0B,MAAM;EACjB;;EAEA;AACJ;AACA;EACI,MAAMU,QAAQ,GAAGJ,MAAM,CAACK,GAAG,CAACb,KAAK,IAAI;IACjC,OAAOD,OAAO,CAACU,GAAG,CAACK,eAAe,CAACd,KAAK,EAAEI,iBAAiB,CAACJ,KAAK,CAACL,OAAO,CAAC,CAAC;EAC/E,CAAC,CAAC;EAEF,MAAMJ,OAAO,GAAG,MAAMwB,OAAO,CAACC,GAAG,CAACJ,QAAQ,CAAC;EAE3C,MAAMK,OAAoC,GAAG1B,OAAO,CAAClB,MAAM,CAAC,CAACC,UAAU,EAAEqC,OAAO,KAAK;IACjF,KAAK,MAAMO,KAAK,IAAIP,OAAO,EAAE;MACzBrC,UAAU,CAAC4C,KAAK,CAACxB,EAAE,CAAC,GAAG;QACnBA,EAAE,EAAEwB,KAAK,CAACxB,EAAE;QACZE,OAAO,EAAEsB,KAAK,CAACtB,OAAO;QACtBD,OAAO,EAAEuB,KAAK,CAACvB;MACnB,CAAC;IACL;IACA,OAAOrB,UAAU;EACrB,CAAC,EAAE,CAAC,CAAC,CAAgC;EACrC;AACJ;AACA;EACI,KAAK,MAAMqB,OAAO,IAAIS,iBAAiB,EAAE;IACrC,MAAMO,OAAO,GAAGP,iBAAiB,CAACT,OAAO,CAAC;IAC1C,KAAK,MAAMD,EAAE,IAAIiB,OAAO,EAAE;MACtB,IAAIM,OAAO,CAACvB,EAAE,CAAC,EAAE;QACb;MACJ,CAAC,MAAM,IAAIO,eAAe,KAAK,IAAI,EAAE;QACjC,MAAM,IAAIkB,cAAW,CAChB,qCAAoCzB,EAAG,eAAcC,OAAQ,IAAG,EACjE,iBAAiB,EACjB;UACID,EAAE;UACFM,KAAK,EAAEL;QACX,CAAC,CACJ;MACL;MACA,MAAM;QAAED,EAAE,EAAEE;MAAQ,CAAC,GAAG,IAAAwB,sBAAe,EAAC1B,EAAE,CAAC;MAC3CuB,OAAO,CAACvB,EAAE,CAAC,GAAG;QACVA,EAAE;QACFE,OAAO;QACPD;MACJ,CAAC;IACL;EACJ;;EAEA;AACJ;AACA;EACI,KAAK,MAAMD,EAAE,IAAIW,kBAAkB,EAAE;IACjC,MAAMa,KAAK,GAAGD,OAAO,CAACvB,EAAE,CAAC;IACzB,MAAM2B,KAAK,GAAGhB,kBAAkB,CAACX,EAAE,CAAC;IACpC,IAAI,CAACwB,KAAK,EAAE;MACR,IAAIjB,eAAe,KAAK,IAAI,EAAE;QAC1B,MAAM,IAAIkB,cAAW,CAAC,2BAA2B,EAAE,aAAa,EAAE;UAC9DzB,EAAE;UACF2B;QACJ,CAAC,CAAC;MACN;MACA;IACJ;IACA,KAAK,MAAMrC,IAAI,IAAIqC,KAAK,EAAE;MACtBnB,MAAM,GAAGtB,gBAAO,CAAC0C,GAAG,CAACpB,MAAM,EAAElB,IAAI,EAAE;QAC/BU,EAAE,EAAEwB,KAAK,CAACxB,EAAE;QACZE,OAAO,EAAEsB,KAAK,CAACtB,OAAO;QACtBD,OAAO,EAAEuB,KAAK,CAACvB;MACnB,CAAC,CAAC;IACN;EACJ;EAEA,OAAOO,MAAM;AACjB,CAAC;AAAC"}
1
+ {"version":3,"names":["buildReferenceFieldPaths","params","fields","parentPaths","initialParentPaths","input","isMultipleValues","Array","isArray","filter","field","includes","type","reduce","collection","parentPathsValue","length","join","multipleValues","inputValue","dotProp","get","fieldId","key","path","push","objFieldPath","objFieldInputValue","result","settings","concat","results","getReferenceFieldValue","ref","id","modelId","entryId","trim","referenceFieldsMapping","context","model","validateEntries","output","referenceFieldPaths","referencesByModel","pathsByReferenceId","Object","keys","models","cms","listModels","entries","promises","map","getEntriesByIds","Promise","all","records","entry","WebinyError","parseIdentifier","paths","set"],"sources":["referenceFieldsMapping.ts"],"sourcesContent":["import { CmsContext, CmsModel, CmsModelField } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport dotProp from \"dot-prop\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\ninterface CmsRefEntry {\n id: string;\n entryId: string;\n modelId: string;\n}\n\ninterface ReferenceObject {\n id: string;\n modelId: string;\n}\n\ninterface Params {\n context: CmsContext;\n model: CmsModel;\n input: Record<string, ReferenceObject | ReferenceObject[]>;\n validateEntries?: boolean;\n}\n\ninterface BuildReferenceFieldPaths {\n fields: CmsModelField[];\n parentPaths: string[];\n input: Record<string, any>;\n}\n\nconst buildReferenceFieldPaths = (params: BuildReferenceFieldPaths): string[] => {\n const { fields, parentPaths: initialParentPaths, input } = params;\n\n const parentPaths = [...initialParentPaths];\n\n const isMultipleValues = Array.isArray(input);\n\n return fields\n .filter(field => [\"object\", \"ref\"].includes(field.type))\n .reduce((collection, field) => {\n /**\n * First we check the ref field\n */\n if (field.type === \"ref\") {\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n if (field.multipleValues) {\n const inputValue = dotProp.get(input, `${field.fieldId}`, []);\n if (Array.isArray(inputValue) === false) {\n return collection;\n }\n for (const key in inputValue) {\n const path = `${parentPathsValue}${field.fieldId}.${key}`;\n collection.push(path);\n }\n return collection;\n }\n\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n collection.push(`${parentPathsValue}${field.fieldId}`);\n\n return collection;\n }\n /**\n * Then we move onto the object field\n */\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n /**\n * This is if received input is array. We need to map key with fieldId at this point.\n */\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n const objFieldPath = `${field.fieldId}`;\n const objFieldInputValue = dotProp.get(input, objFieldPath, []);\n\n /**\n * If field is multiple values one, we need to go through the input and use the existing keys.\n */\n if (field.multipleValues) {\n if (Array.isArray(objFieldInputValue) === false) {\n return collection;\n }\n for (const key in objFieldInputValue) {\n const result = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue[key],\n parentPaths: parentPaths.concat([field.fieldId, key])\n });\n collection.push(...result);\n }\n\n return collection;\n }\n\n /**\n * Single value reference field.\n */\n const results = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue,\n parentPaths: parentPaths.concat([field.fieldId])\n });\n\n return collection.concat(results);\n }, [] as string[]);\n};\n\nconst getReferenceFieldValue = (ref: any): { id: string | null; modelId: string | null } => {\n if (!ref) {\n return {\n id: null,\n modelId: null\n };\n }\n return {\n id: (ref.id || ref.entryId || \"\").trim() || null,\n modelId: (ref.modelId || \"\").trim() || null\n };\n};\n\nexport const referenceFieldsMapping = async (params: Params): Promise<Record<string, any>> => {\n const { context, model, input, validateEntries = false } = params;\n\n let output: Record<string, any> = {\n ...input\n };\n\n const referenceFieldPaths = buildReferenceFieldPaths({\n fields: model.fields,\n input,\n parentPaths: []\n });\n if (referenceFieldPaths.length === 0) {\n return output;\n }\n\n const referencesByModel: Record<string, string[]> = {};\n const pathsByReferenceId: Record<string, string[]> = {};\n\n for (const path of referenceFieldPaths) {\n const ref = dotProp.get(output, path) as ReferenceObject | any;\n\n const { id, modelId } = getReferenceFieldValue(ref);\n\n if (!id || !modelId) {\n continue;\n }\n if (!referencesByModel[modelId]) {\n referencesByModel[modelId] = [];\n }\n referencesByModel[modelId].push(id);\n if (!pathsByReferenceId[id]) {\n pathsByReferenceId[id] = [];\n }\n pathsByReferenceId[id].push(path);\n }\n\n /**\n * Again, no point in going further.\n */\n if (Object.keys(referencesByModel).length === 0) {\n return output;\n }\n /**\n * Load all models and use only those that are used in reference.\n */\n const models = (await context.cms.listModels()).filter(model => {\n const entries = referencesByModel[model.modelId];\n if (Array.isArray(entries) === false || entries.length === 0) {\n return false;\n }\n return true;\n });\n /**\n * Check for any model existence, just in case.\n */\n if (models.length === 0) {\n return output;\n }\n\n /**\n * Load all the entries by their ID\n */\n const promises = models.map(model => {\n return context.cms.getEntriesByIds(model, referencesByModel[model.modelId]);\n });\n\n const results = await Promise.all(promises);\n\n const records: Record<string, CmsRefEntry> = results.reduce((collection, entries) => {\n for (const entry of entries) {\n collection[entry.id] = {\n id: entry.id,\n entryId: entry.entryId,\n modelId: entry.modelId\n };\n }\n return collection;\n }, {} as Record<string, CmsRefEntry>);\n /**\n * Verify that all referenced entries actually exist.\n */\n for (const modelId in referencesByModel) {\n const entries = referencesByModel[modelId];\n for (const id of entries) {\n if (records[id]) {\n continue;\n } else if (validateEntries === true) {\n throw new WebinyError(\n `Missing referenced entry with id \"${id}\" in model \"${modelId}\".`,\n \"ENTRY_NOT_FOUND\",\n {\n id,\n model: modelId\n }\n );\n }\n const { id: entryId } = parseIdentifier(id);\n records[id] = {\n id,\n entryId,\n modelId\n };\n }\n }\n\n /**\n * In the end, assign the entryId, id and model values to the output.\n */\n for (const id in pathsByReferenceId) {\n const entry = records[id];\n const paths = pathsByReferenceId[id];\n if (!entry) {\n if (validateEntries === true) {\n throw new WebinyError(\"Missing entry in records.\", \"ENTRY_ERROR\", {\n id,\n paths\n });\n }\n continue;\n }\n for (const path of paths) {\n output = dotProp.set(output, path, {\n id: entry.id,\n entryId: entry.entryId,\n modelId: entry.modelId\n });\n }\n }\n\n return output;\n};\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { CmsModelField } from "../../types";
2
+ import { PluginsContainer } from "@webiny/plugins";
3
+ interface Params {
4
+ input: string[];
5
+ fields: CmsModelField[];
6
+ plugins: PluginsContainer;
7
+ }
8
+ export declare const getSearchableFields: (params: Params) => string[];
9
+ export {};
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getSearchableFields = void 0;
7
+
8
+ const buildSearchableFieldList = params => {
9
+ const {
10
+ input,
11
+ plugins,
12
+ fields,
13
+ parents
14
+ } = params;
15
+ return fields.reduce((result, field) => {
16
+ var _field$settings;
17
+
18
+ /**
19
+ * We need to check if the field is full text searchable, and for that we need a plugin for the field type.
20
+ */
21
+ const plugin = plugins[field.type];
22
+
23
+ if (!plugin) {
24
+ return result;
25
+ }
26
+ /**
27
+ * There is a possibility that searchable fields exist in nested object field, so check that as well.
28
+ */
29
+
30
+
31
+ const childFields = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
32
+
33
+ if (childFields.length > 0) {
34
+ /**
35
+ * So we build a list of searchable child fields and push it into the main result set.
36
+ */
37
+ const childResults = buildSearchableFieldList({
38
+ fields: childFields,
39
+ parents: [...parents, field.fieldId],
40
+ plugins,
41
+ input
42
+ });
43
+ result.push(...childResults);
44
+ return result;
45
+ }
46
+ /**
47
+ * If not searchable, continue further.
48
+ */
49
+
50
+
51
+ if (!plugin.fullTextSearch) {
52
+ return result;
53
+ }
54
+ /**
55
+ * Combine all parent paths with the current one and push it.
56
+ */
57
+
58
+
59
+ const path = [...parents, field.fieldId].join(".");
60
+ result.push(path);
61
+ return result;
62
+ }, []);
63
+ };
64
+
65
+ const getSearchableFields = params => {
66
+ const {
67
+ plugins,
68
+ input,
69
+ fields
70
+ } = params;
71
+ const fieldPluginMap = plugins.byType("cms-model-field-to-graphql").reduce((collection, field) => {
72
+ collection[field.fieldType] = field;
73
+ return collection;
74
+ }, {});
75
+ return buildSearchableFieldList({
76
+ fields,
77
+ input,
78
+ plugins: fieldPluginMap,
79
+ parents: []
80
+ });
81
+ };
82
+
83
+ exports.getSearchableFields = getSearchableFields;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["buildSearchableFieldList","params","input","plugins","fields","parents","reduce","result","field","plugin","type","childFields","settings","length","childResults","fieldId","push","fullTextSearch","path","join","getSearchableFields","fieldPluginMap","byType","collection","fieldType"],"sources":["searchableFields.ts"],"sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface BuildParams {\n input: string[];\n fields: CmsModelField[];\n plugins: Record<string, CmsModelFieldToGraphQLPlugin>;\n parents: string[];\n}\nconst buildSearchableFieldList = (params: BuildParams): string[] => {\n const { input, plugins, fields, parents } = params;\n return fields.reduce<string[]>((result, field) => {\n /**\n * We need to check if the field is full text searchable, and for that we need a plugin for the field type.\n */\n const plugin = plugins[field.type];\n if (!plugin) {\n return result;\n }\n /**\n * There is a possibility that searchable fields exist in nested object field, so check that as well.\n */\n const childFields = field.settings?.fields || [];\n if (childFields.length > 0) {\n /**\n * So we build a list of searchable child fields and push it into the main result set.\n */\n const childResults = buildSearchableFieldList({\n fields: childFields,\n parents: [...parents, field.fieldId],\n plugins,\n input\n });\n\n result.push(...childResults);\n return result;\n }\n /**\n * If not searchable, continue further.\n */\n if (!plugin.fullTextSearch) {\n return result;\n }\n\n /**\n * Combine all parent paths with the current one and push it.\n */\n const path = [...parents, field.fieldId].join(\".\");\n result.push(path);\n\n return result;\n }, []);\n};\n\ninterface Params {\n input: string[];\n fields: CmsModelField[];\n plugins: PluginsContainer;\n}\nexport const getSearchableFields = (params: Params): string[] => {\n const { plugins, input, fields } = params;\n const fieldPluginMap = plugins\n .byType<CmsModelFieldToGraphQLPlugin>(\"cms-model-field-to-graphql\")\n .reduce((collection, field) => {\n collection[field.fieldType] = field;\n return collection;\n }, {} as Record<string, CmsModelFieldToGraphQLPlugin>);\n\n return buildSearchableFieldList({\n fields,\n input,\n plugins: fieldPluginMap,\n parents: []\n });\n};\n"],"mappings":";;;;;;;AASA,MAAMA,wBAAwB,GAAIC,MAAD,IAAmC;EAChE,MAAM;IAAEC,KAAF;IAASC,OAAT;IAAkBC,MAAlB;IAA0BC;EAA1B,IAAsCJ,MAA5C;EACA,OAAOG,MAAM,CAACE,MAAP,CAAwB,CAACC,MAAD,EAASC,KAAT,KAAmB;IAAA;;IAC9C;AACR;AACA;IACQ,MAAMC,MAAM,GAAGN,OAAO,CAACK,KAAK,CAACE,IAAP,CAAtB;;IACA,IAAI,CAACD,MAAL,EAAa;MACT,OAAOF,MAAP;IACH;IACD;AACR;AACA;;;IACQ,MAAMI,WAAW,GAAG,oBAAAH,KAAK,CAACI,QAAN,oEAAgBR,MAAhB,KAA0B,EAA9C;;IACA,IAAIO,WAAW,CAACE,MAAZ,GAAqB,CAAzB,EAA4B;MACxB;AACZ;AACA;MACY,MAAMC,YAAY,GAAGd,wBAAwB,CAAC;QAC1CI,MAAM,EAAEO,WADkC;QAE1CN,OAAO,EAAE,CAAC,GAAGA,OAAJ,EAAaG,KAAK,CAACO,OAAnB,CAFiC;QAG1CZ,OAH0C;QAI1CD;MAJ0C,CAAD,CAA7C;MAOAK,MAAM,CAACS,IAAP,CAAY,GAAGF,YAAf;MACA,OAAOP,MAAP;IACH;IACD;AACR;AACA;;;IACQ,IAAI,CAACE,MAAM,CAACQ,cAAZ,EAA4B;MACxB,OAAOV,MAAP;IACH;IAED;AACR;AACA;;;IACQ,MAAMW,IAAI,GAAG,CAAC,GAAGb,OAAJ,EAAaG,KAAK,CAACO,OAAnB,EAA4BI,IAA5B,CAAiC,GAAjC,CAAb;IACAZ,MAAM,CAACS,IAAP,CAAYE,IAAZ;IAEA,OAAOX,MAAP;EACH,CAxCM,EAwCJ,EAxCI,CAAP;AAyCH,CA3CD;;AAkDO,MAAMa,mBAAmB,GAAInB,MAAD,IAA8B;EAC7D,MAAM;IAAEE,OAAF;IAAWD,KAAX;IAAkBE;EAAlB,IAA6BH,MAAnC;EACA,MAAMoB,cAAc,GAAGlB,OAAO,CACzBmB,MADkB,CACmB,4BADnB,EAElBhB,MAFkB,CAEX,CAACiB,UAAD,EAAaf,KAAb,KAAuB;IAC3Be,UAAU,CAACf,KAAK,CAACgB,SAAP,CAAV,GAA8BhB,KAA9B;IACA,OAAOe,UAAP;EACH,CALkB,EAKhB,EALgB,CAAvB;EAOA,OAAOvB,wBAAwB,CAAC;IAC5BI,MAD4B;IAE5BF,KAF4B;IAG5BC,OAAO,EAAEkB,cAHmB;IAI5BhB,OAAO,EAAE;EAJmB,CAAD,CAA/B;AAMH,CAfM"}