@webiny/api-headless-cms 0.0.0-unstable.d16f688daf → 0.0.0-unstable.d65ec29d44

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 (322) hide show
  1. package/context.d.ts +5 -2
  2. package/context.js +53 -19
  3. package/context.js.map +1 -1
  4. package/crud/contentEntry/afterDelete.js +0 -5
  5. package/crud/contentEntry/afterDelete.js.map +1 -1
  6. package/crud/contentEntry/beforeCreate.js +0 -3
  7. package/crud/contentEntry/beforeCreate.js.map +1 -1
  8. package/crud/contentEntry/beforeUpdate.js +0 -3
  9. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  10. package/crud/contentEntry/entryDataValidation.js +1 -40
  11. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  12. package/crud/contentEntry/markLockedFields.js +12 -28
  13. package/crud/contentEntry/markLockedFields.js.map +1 -1
  14. package/crud/contentEntry/referenceFieldsMapping.js +5 -61
  15. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  16. package/crud/contentEntry/searchableFields.js +1 -12
  17. package/crud/contentEntry/searchableFields.js.map +1 -1
  18. package/crud/contentEntry.crud.js +72 -155
  19. package/crud/contentEntry.crud.js.map +1 -1
  20. package/crud/contentModel/afterCreate.js +0 -2
  21. package/crud/contentModel/afterCreate.js.map +1 -1
  22. package/crud/contentModel/afterCreateFrom.js +0 -2
  23. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  24. package/crud/contentModel/afterDelete.js +0 -2
  25. package/crud/contentModel/afterDelete.js.map +1 -1
  26. package/crud/contentModel/afterUpdate.js +0 -2
  27. package/crud/contentModel/afterUpdate.js.map +1 -1
  28. package/crud/contentModel/beforeCreate.d.ts +2 -3
  29. package/crud/contentModel/beforeCreate.js +7 -36
  30. package/crud/contentModel/beforeCreate.js.map +1 -1
  31. package/crud/contentModel/beforeDelete.js +0 -10
  32. package/crud/contentModel/beforeDelete.js.map +1 -1
  33. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  34. package/crud/contentModel/beforeUpdate.js +2 -7
  35. package/crud/contentModel/beforeUpdate.js.map +1 -1
  36. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  37. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  38. package/crud/contentModel/createFieldStorageId.js +0 -3
  39. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  40. package/crud/contentModel/systemFields.js.map +1 -1
  41. package/crud/contentModel/validateLayout.js +0 -8
  42. package/crud/contentModel/validateLayout.js.map +1 -1
  43. package/crud/contentModel/validateModel.d.ts +3 -4
  44. package/crud/contentModel/validateModel.js +6 -11
  45. package/crud/contentModel/validateModel.js.map +1 -1
  46. package/crud/contentModel/validateModelFields.d.ts +3 -4
  47. package/crud/contentModel/validateModelFields.js +84 -75
  48. package/crud/contentModel/validateModelFields.js.map +1 -1
  49. package/crud/contentModel/validation.d.ts +477 -0
  50. package/crud/contentModel/validation.js +97 -0
  51. package/crud/contentModel/validation.js.map +1 -0
  52. package/crud/contentModel.crud.js +63 -158
  53. package/crud/contentModel.crud.js.map +1 -1
  54. package/crud/contentModelGroup/beforeCreate.js +0 -12
  55. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  56. package/crud/contentModelGroup/beforeDelete.js +0 -8
  57. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  58. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  59. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  60. package/crud/contentModelGroup/validation.d.ts +30 -0
  61. package/crud/contentModelGroup/validation.js +34 -0
  62. package/crud/contentModelGroup/validation.js.map +1 -0
  63. package/crud/contentModelGroup.crud.js +21 -93
  64. package/crud/contentModelGroup.crud.js.map +1 -1
  65. package/crud/settings.crud.js +0 -12
  66. package/crud/settings.crud.js.map +1 -1
  67. package/crud/system.crud.js +2 -37
  68. package/crud/system.crud.js.map +1 -1
  69. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  70. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  71. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +0 -36
  72. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  73. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
  74. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  75. package/fieldConverters/index.js +0 -5
  76. package/fieldConverters/index.js.map +1 -1
  77. package/graphql/buildSchemaPlugins.d.ts +8 -3
  78. package/graphql/buildSchemaPlugins.js +6 -14
  79. package/graphql/buildSchemaPlugins.js.map +1 -1
  80. package/graphql/createExecutableSchema.d.ts +7 -0
  81. package/graphql/createExecutableSchema.js +29 -0
  82. package/graphql/createExecutableSchema.js.map +1 -0
  83. package/graphql/generateSchema.d.ts +8 -0
  84. package/graphql/generateSchema.js +31 -0
  85. package/graphql/generateSchema.js.map +1 -0
  86. package/graphql/graphQLHandlerFactory.js +69 -97
  87. package/graphql/graphQLHandlerFactory.js.map +1 -1
  88. package/graphql/index.d.ts +1 -3
  89. package/graphql/index.js +2 -46
  90. package/graphql/index.js.map +1 -1
  91. package/graphql/schema/baseContentSchema.d.ts +6 -2
  92. package/graphql/schema/baseContentSchema.js +8 -12
  93. package/graphql/schema/baseContentSchema.js.map +1 -1
  94. package/graphql/schema/baseSchema.d.ts +3 -0
  95. package/graphql/schema/baseSchema.js +53 -0
  96. package/graphql/schema/baseSchema.js.map +1 -0
  97. package/graphql/schema/contentEntries.d.ts +6 -2
  98. package/graphql/schema/contentEntries.js +39 -65
  99. package/graphql/schema/contentEntries.js.map +1 -1
  100. package/graphql/schema/contentModelGroups.d.ts +6 -2
  101. package/graphql/schema/contentModelGroups.js +9 -22
  102. package/graphql/schema/contentModelGroups.js.map +1 -1
  103. package/graphql/schema/contentModels.d.ts +6 -2
  104. package/graphql/schema/contentModels.js +21 -23
  105. package/graphql/schema/contentModels.js.map +1 -1
  106. package/graphql/schema/createFieldResolvers.js +13 -24
  107. package/graphql/schema/createFieldResolvers.js.map +1 -1
  108. package/graphql/schema/createManageResolvers.js +0 -26
  109. package/graphql/schema/createManageResolvers.js.map +1 -1
  110. package/graphql/schema/createManageSDL.d.ts +2 -0
  111. package/graphql/schema/createManageSDL.js +6 -16
  112. package/graphql/schema/createManageSDL.js.map +1 -1
  113. package/graphql/schema/createPreviewResolvers.js +0 -10
  114. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  115. package/graphql/schema/createReadResolvers.js +5 -10
  116. package/graphql/schema/createReadResolvers.js.map +1 -1
  117. package/graphql/schema/createReadSDL.d.ts +2 -0
  118. package/graphql/schema/createReadSDL.js +6 -12
  119. package/graphql/schema/createReadSDL.js.map +1 -1
  120. package/graphql/schema/resolvers/commonFieldResolvers.js +0 -2
  121. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  122. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  123. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  124. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  125. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  126. package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
  127. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  128. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  129. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  130. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  131. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  132. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  133. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  134. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  135. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  136. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  137. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  138. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  139. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  140. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  141. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  142. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  143. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  144. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  145. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  146. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  147. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  148. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  149. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  150. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  151. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  152. package/graphql/schema/schemaPlugins.d.ts +8 -3
  153. package/graphql/schema/schemaPlugins.js +63 -65
  154. package/graphql/schema/schemaPlugins.js.map +1 -1
  155. package/graphql/system.js +69 -85
  156. package/graphql/system.js.map +1 -1
  157. package/graphqlFields/boolean.js +0 -12
  158. package/graphqlFields/boolean.js.map +1 -1
  159. package/graphqlFields/datetime.js +0 -17
  160. package/graphqlFields/datetime.js.map +1 -1
  161. package/graphqlFields/dynamicZone/dynamicZoneField.js +3 -29
  162. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  163. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +2 -18
  164. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
  165. package/graphqlFields/dynamicZone/index.js +0 -2
  166. package/graphqlFields/dynamicZone/index.js.map +1 -1
  167. package/graphqlFields/file.js +0 -8
  168. package/graphqlFields/file.js.map +1 -1
  169. package/graphqlFields/helpers.js +0 -10
  170. package/graphqlFields/helpers.js.map +1 -1
  171. package/graphqlFields/index.js +0 -12
  172. package/graphqlFields/index.js.map +1 -1
  173. package/graphqlFields/longText.js +0 -10
  174. package/graphqlFields/longText.js.map +1 -1
  175. package/graphqlFields/number.js +0 -12
  176. package/graphqlFields/number.js.map +1 -1
  177. package/graphqlFields/object.js +1 -37
  178. package/graphqlFields/object.js.map +1 -1
  179. package/graphqlFields/ref.js +23 -53
  180. package/graphqlFields/ref.js.map +1 -1
  181. package/graphqlFields/richText.js +0 -9
  182. package/graphqlFields/richText.js.map +1 -1
  183. package/graphqlFields/text.js +0 -11
  184. package/graphqlFields/text.js.map +1 -1
  185. package/index.d.ts +3 -3
  186. package/index.js +2 -27
  187. package/index.js.map +1 -1
  188. package/modelManager/DefaultCmsModelManager.js +0 -16
  189. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  190. package/modelManager/index.js +0 -4
  191. package/modelManager/index.js.map +1 -1
  192. package/package.json +27 -28
  193. package/parameters/context.js +0 -4
  194. package/parameters/context.js.map +1 -1
  195. package/parameters/header.js +0 -11
  196. package/parameters/header.js.map +1 -1
  197. package/parameters/index.js +0 -8
  198. package/parameters/index.js.map +1 -1
  199. package/parameters/manual.js +1 -8
  200. package/parameters/manual.js.map +1 -1
  201. package/parameters/path.js +0 -11
  202. package/parameters/path.js.map +1 -1
  203. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  204. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  205. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  206. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  207. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  208. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  209. package/plugins/CmsGroupPlugin.js +0 -8
  210. package/plugins/CmsGroupPlugin.js.map +1 -1
  211. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  212. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  213. package/plugins/CmsModelPlugin.js +2 -38
  214. package/plugins/CmsModelPlugin.js.map +1 -1
  215. package/plugins/CmsParametersPlugin.js +0 -7
  216. package/plugins/CmsParametersPlugin.js.map +1 -1
  217. package/plugins/StorageTransformPlugin.js +0 -9
  218. package/plugins/StorageTransformPlugin.js.map +1 -1
  219. package/plugins/index.d.ts +2 -0
  220. package/plugins/index.js +22 -10
  221. package/plugins/index.js.map +1 -1
  222. package/storage/default.js +0 -3
  223. package/storage/default.js.map +1 -1
  224. package/storage/object.js +0 -19
  225. package/storage/object.js.map +1 -1
  226. package/types.d.ts +56 -15
  227. package/types.js +22 -72
  228. package/types.js.map +1 -1
  229. package/upgrades/5.33.0/index.js +3 -26
  230. package/upgrades/5.33.0/index.js.map +1 -1
  231. package/upgrades/index.js +0 -3
  232. package/upgrades/index.js.map +1 -1
  233. package/utils/access.js +11 -25
  234. package/utils/access.js.map +1 -1
  235. package/utils/converters/Converter.js +0 -13
  236. package/utils/converters/Converter.js.map +1 -1
  237. package/utils/converters/ConverterCollection.js +9 -33
  238. package/utils/converters/ConverterCollection.js.map +1 -1
  239. package/utils/converters/valueKeyStorageConverter.js +0 -26
  240. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  241. package/utils/createTypeFromFields.js +4 -15
  242. package/utils/createTypeFromFields.js.map +1 -1
  243. package/utils/createTypeName.js +0 -9
  244. package/utils/createTypeName.js.map +1 -1
  245. package/utils/entryStorage.js +10 -26
  246. package/utils/entryStorage.js.map +1 -1
  247. package/utils/filterAsync.js +0 -5
  248. package/utils/filterAsync.js.map +1 -1
  249. package/utils/getBaseFieldType.js +0 -2
  250. package/utils/getBaseFieldType.js.map +1 -1
  251. package/utils/getEntryTitle.js +0 -9
  252. package/utils/getEntryTitle.js.map +1 -1
  253. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  254. package/utils/getSchemaFromFieldPlugins.js +23 -19
  255. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  256. package/utils/ownership.js +0 -8
  257. package/utils/ownership.js.map +1 -1
  258. package/utils/permissions.js +8 -23
  259. package/utils/permissions.js.map +1 -1
  260. package/utils/pluralizedTypeName.js +0 -6
  261. package/utils/pluralizedTypeName.js.map +1 -1
  262. package/utils/renderFields.js +0 -9
  263. package/utils/renderFields.js.map +1 -1
  264. package/utils/renderGetFilterFields.js +0 -13
  265. package/utils/renderGetFilterFields.js.map +1 -1
  266. package/utils/renderInputFields.js +0 -9
  267. package/utils/renderInputFields.js.map +1 -1
  268. package/utils/renderListFilterFields.js +1 -10
  269. package/utils/renderListFilterFields.js.map +1 -1
  270. package/utils/renderSortEnum.d.ts +7 -4
  271. package/utils/renderSortEnum.js +19 -11
  272. package/utils/renderSortEnum.js.map +1 -1
  273. package/utils/toSlug.js +0 -4
  274. package/utils/toSlug.js.map +1 -1
  275. package/validators/dateGte.js +0 -7
  276. package/validators/dateGte.js.map +1 -1
  277. package/validators/dateLte.js +0 -7
  278. package/validators/dateLte.js.map +1 -1
  279. package/validators/dynamicZone.js +0 -4
  280. package/validators/dynamicZone.js.map +1 -1
  281. package/validators/gte.js +0 -8
  282. package/validators/gte.js.map +1 -1
  283. package/validators/in.js +0 -8
  284. package/validators/in.js.map +1 -1
  285. package/validators/index.js +0 -16
  286. package/validators/index.js.map +1 -1
  287. package/validators/lte.js +0 -8
  288. package/validators/lte.js.map +1 -1
  289. package/validators/maxLength.js +0 -8
  290. package/validators/maxLength.js.map +1 -1
  291. package/validators/minLength.js +0 -8
  292. package/validators/minLength.js.map +1 -1
  293. package/validators/pattern.js +0 -9
  294. package/validators/pattern.js.map +1 -1
  295. package/validators/patternPlugins/email.js +0 -2
  296. package/validators/patternPlugins/email.js.map +1 -1
  297. package/validators/patternPlugins/index.js +0 -8
  298. package/validators/patternPlugins/index.js.map +1 -1
  299. package/validators/patternPlugins/lowerCase.js +0 -2
  300. package/validators/patternPlugins/lowerCase.js.map +1 -1
  301. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  302. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  303. package/validators/patternPlugins/upperCase.js +0 -2
  304. package/validators/patternPlugins/upperCase.js.map +1 -1
  305. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  306. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  307. package/validators/patternPlugins/url.js +0 -2
  308. package/validators/patternPlugins/url.js.map +1 -1
  309. package/validators/required.js +0 -5
  310. package/validators/required.js.map +1 -1
  311. package/validators/timeGte.js +0 -8
  312. package/validators/timeGte.js.map +1 -1
  313. package/validators/timeLte.js +0 -8
  314. package/validators/timeLte.js.map +1 -1
  315. package/validators/unique.js +0 -7
  316. package/validators/unique.js.map +1 -1
  317. package/crud/index.d.ts +0 -6
  318. package/crud/index.js +0 -85
  319. package/crud/index.js.map +0 -1
  320. package/utils/filterModelFields.d.ts +0 -16
  321. package/utils/filterModelFields.js +0 -77
  322. package/utils/filterModelFields.js.map +0 -1
@@ -1,22 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.referenceFieldsMapping = void 0;
9
-
10
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
9
  var _error = _interopRequireDefault(require("@webiny/error"));
13
-
14
10
  var _dotProp = _interopRequireDefault(require("dot-prop"));
15
-
16
11
  var _utils = require("@webiny/utils");
17
-
18
12
  var _getBaseFieldType = require("../../utils/getBaseFieldType");
19
-
20
13
  const buildReferenceFieldPaths = params => {
21
14
  const {
22
15
  fields,
@@ -27,77 +20,59 @@ const buildReferenceFieldPaths = params => {
27
20
  const isMultipleValues = Array.isArray(input);
28
21
  return fields.filter(field => ["object", "ref"].includes((0, _getBaseFieldType.getBaseFieldType)(field))).reduce((collection, field) => {
29
22
  var _field$settings2;
30
-
31
23
  /**
32
24
  * First we check the ref field
33
25
  */
34
26
  const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
35
-
36
27
  if (baseType === "ref") {
37
28
  const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(".")}.` : "";
38
-
39
29
  if (field.multipleValues) {
40
30
  const inputValue = _dotProp.default.get(input, `${field.fieldId}`, []);
41
-
42
31
  if (Array.isArray(inputValue) === false) {
43
32
  return collection;
44
33
  }
45
-
46
34
  for (const key in inputValue) {
47
35
  const path = `${parentPathsValue}${field.fieldId}.${key}`;
48
36
  collection.push(path);
49
37
  }
50
-
51
38
  return collection;
52
39
  }
53
-
54
40
  if (isMultipleValues) {
55
41
  for (const key in input) {
56
42
  const path = `${parentPathsValue}${key}.${field.fieldId}`;
57
43
  collection.push(path);
58
44
  }
59
-
60
45
  return collection;
61
46
  }
62
-
63
47
  collection.push(`${parentPathsValue}${field.fieldId}`);
64
48
  return collection;
65
49
  }
66
50
  /**
67
51
  * Then we move onto the object field
68
52
  */
69
-
70
-
71
53
  const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(".")}.` : "";
72
54
  /**
73
55
  * This is if received input is array. We need to map key with fieldId at this point.
74
56
  */
75
-
76
57
  if (isMultipleValues) {
77
58
  for (const key in input) {
78
59
  const path = `${parentPathsValue}${key}.${field.fieldId}`;
79
60
  collection.push(path);
80
61
  }
81
-
82
62
  return collection;
83
63
  }
84
-
85
64
  const objFieldPath = `${field.fieldId}`;
86
-
87
65
  const objFieldInputValue = _dotProp.default.get(input, objFieldPath, []);
66
+
88
67
  /**
89
68
  * If field is multiple values one, we need to go through the input and use the existing keys.
90
69
  */
91
-
92
-
93
70
  if (field.multipleValues) {
94
71
  if (Array.isArray(objFieldInputValue) === false) {
95
72
  return collection;
96
73
  }
97
-
98
74
  for (const key in objFieldInputValue) {
99
75
  var _field$settings;
100
-
101
76
  const result = buildReferenceFieldPaths({
102
77
  fields: ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [],
103
78
  input: objFieldInputValue[key],
@@ -105,14 +80,12 @@ const buildReferenceFieldPaths = params => {
105
80
  });
106
81
  collection.push(...result);
107
82
  }
108
-
109
83
  return collection;
110
84
  }
85
+
111
86
  /**
112
87
  * Single value reference field.
113
88
  */
114
-
115
-
116
89
  const results = buildReferenceFieldPaths({
117
90
  fields: ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.fields) || [],
118
91
  input: objFieldInputValue,
@@ -121,7 +94,6 @@ const buildReferenceFieldPaths = params => {
121
94
  return collection.concat(results);
122
95
  }, []);
123
96
  };
124
-
125
97
  const getReferenceFieldValue = ref => {
126
98
  if (!ref) {
127
99
  return {
@@ -129,13 +101,11 @@ const getReferenceFieldValue = ref => {
129
101
  modelId: null
130
102
  };
131
103
  }
132
-
133
104
  return {
134
105
  id: (ref.id || ref.entryId || "").trim() || null,
135
106
  modelId: (ref.modelId || "").trim() || null
136
107
  };
137
108
  };
138
-
139
109
  const referenceFieldsMapping = async params => {
140
110
  const {
141
111
  context,
@@ -149,72 +119,56 @@ const referenceFieldsMapping = async params => {
149
119
  input,
150
120
  parentPaths: []
151
121
  });
152
-
153
122
  if (referenceFieldPaths.length === 0) {
154
123
  return output;
155
124
  }
156
-
157
125
  const referencesByModel = {};
158
126
  const pathsByReferenceId = {};
159
-
160
127
  for (const path of referenceFieldPaths) {
161
128
  const ref = _dotProp.default.get(output, path);
162
-
163
129
  const {
164
130
  id,
165
131
  modelId
166
132
  } = getReferenceFieldValue(ref);
167
-
168
133
  if (!id || !modelId) {
169
134
  continue;
170
135
  }
171
-
172
136
  if (!referencesByModel[modelId]) {
173
137
  referencesByModel[modelId] = [];
174
138
  }
175
-
176
139
  referencesByModel[modelId].push(id);
177
-
178
140
  if (!pathsByReferenceId[id]) {
179
141
  pathsByReferenceId[id] = [];
180
142
  }
181
-
182
143
  pathsByReferenceId[id].push(path);
183
144
  }
145
+
184
146
  /**
185
147
  * Again, no point in going further.
186
148
  */
187
-
188
-
189
149
  if (Object.keys(referencesByModel).length === 0) {
190
150
  return output;
191
151
  }
192
152
  /**
193
153
  * Load all models and use only those that are used in reference.
194
154
  */
195
-
196
-
197
155
  const models = (await context.cms.listModels()).filter(model => {
198
156
  const entries = referencesByModel[model.modelId];
199
-
200
157
  if (!Array.isArray(entries) || entries.length === 0) {
201
158
  return false;
202
159
  }
203
-
204
160
  return true;
205
161
  });
206
162
  /**
207
163
  * Check for any model existence, just in case.
208
164
  */
209
-
210
165
  if (models.length === 0) {
211
166
  return output;
212
167
  }
168
+
213
169
  /**
214
170
  * Load all the entries by their ID
215
171
  */
216
-
217
-
218
172
  const promises = models.map(model => {
219
173
  return context.cms.getEntriesByIds(model, referencesByModel[model.modelId]);
220
174
  });
@@ -227,16 +181,13 @@ const referenceFieldsMapping = async params => {
227
181
  modelId: entry.modelId
228
182
  };
229
183
  }
230
-
231
184
  return collection;
232
185
  }, {});
233
186
  /**
234
187
  * Verify that all referenced entries actually exist.
235
188
  */
236
-
237
189
  for (const modelId in referencesByModel) {
238
190
  const entries = referencesByModel[modelId];
239
-
240
191
  for (const id of entries) {
241
192
  if (records[id]) {
242
193
  continue;
@@ -246,7 +197,6 @@ const referenceFieldsMapping = async params => {
246
197
  model: modelId
247
198
  });
248
199
  }
249
-
250
200
  const {
251
201
  id: entryId
252
202
  } = (0, _utils.parseIdentifier)(id);
@@ -257,15 +207,13 @@ const referenceFieldsMapping = async params => {
257
207
  };
258
208
  }
259
209
  }
210
+
260
211
  /**
261
212
  * In the end, assign the entryId, id and model values to the output.
262
213
  */
263
-
264
-
265
214
  for (const id in pathsByReferenceId) {
266
215
  const entry = records[id];
267
216
  const paths = pathsByReferenceId[id];
268
-
269
217
  if (!entry) {
270
218
  if (validateEntries) {
271
219
  throw new _error.default("Missing entry in records.", "ENTRY_ERROR", {
@@ -273,10 +221,8 @@ const referenceFieldsMapping = async params => {
273
221
  paths
274
222
  });
275
223
  }
276
-
277
224
  continue;
278
225
  }
279
-
280
226
  for (const path of paths) {
281
227
  output = _dotProp.default.set(output, path, {
282
228
  id: entry.id,
@@ -285,8 +231,6 @@ const referenceFieldsMapping = async params => {
285
231
  });
286
232
  }
287
233
  }
288
-
289
234
  return output;
290
235
  };
291
-
292
236
  exports.referenceFieldsMapping = referenceFieldsMapping;
@@ -1 +1 @@
1
- {"version":3,"names":["buildReferenceFieldPaths","params","fields","parentPaths","initialParentPaths","input","isMultipleValues","Array","isArray","filter","field","includes","getBaseFieldType","reduce","collection","baseType","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\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\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(getBaseFieldType(field)))\n .reduce((collection, field) => {\n /**\n * First we check the ref field\n */\n const baseType = getBaseFieldType(field);\n if (baseType === \"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) || 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) {\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) {\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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"}
1
+ {"version":3,"names":["buildReferenceFieldPaths","params","fields","parentPaths","initialParentPaths","input","isMultipleValues","Array","isArray","filter","field","includes","getBaseFieldType","reduce","collection","baseType","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\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\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(getBaseFieldType(field)))\n .reduce((collection, field) => {\n /**\n * First we check the ref field\n */\n const baseType = getBaseFieldType(field);\n if (baseType === \"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) || 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) {\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) {\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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"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getSearchableFields = void 0;
7
-
8
7
  const buildSearchableFieldList = params => {
9
8
  const {
10
9
  input,
@@ -14,22 +13,17 @@ const buildSearchableFieldList = params => {
14
13
  } = params;
15
14
  return fields.reduce((result, field) => {
16
15
  var _field$settings;
17
-
18
16
  /**
19
17
  * We need to check if the field is full text searchable, and for that we need a plugin for the field type.
20
18
  */
21
19
  const plugin = plugins[field.type];
22
-
23
20
  if (!plugin) {
24
21
  return result;
25
22
  }
26
23
  /**
27
24
  * There is a possibility that searchable fields exist in nested object field, so check that as well.
28
25
  */
29
-
30
-
31
26
  const childFields = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
32
-
33
27
  if (childFields.length > 0) {
34
28
  /**
35
29
  * So we build a list of searchable child fields and push it into the main result set.
@@ -46,22 +40,18 @@ const buildSearchableFieldList = params => {
46
40
  /**
47
41
  * If not searchable, continue further.
48
42
  */
49
-
50
-
51
43
  if (!plugin.fullTextSearch) {
52
44
  return result;
53
45
  }
46
+
54
47
  /**
55
48
  * Combine all parent paths with the current one and push it.
56
49
  */
57
-
58
-
59
50
  const path = [...parents, field.fieldId].join(".");
60
51
  result.push(path);
61
52
  return result;
62
53
  }, []);
63
54
  };
64
-
65
55
  const getSearchableFields = params => {
66
56
  const {
67
57
  plugins,
@@ -79,5 +69,4 @@ const getSearchableFields = params => {
79
69
  parents: []
80
70
  });
81
71
  };
82
-
83
72
  exports.getSearchableFields = getSearchableFields;
@@ -1 +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"}
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,MAAmB,IAAe;EAChE,MAAM;IAAEC,KAAK;IAAEC,OAAO;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGJ,MAAM;EAClD,OAAOG,MAAM,CAACE,MAAM,CAAW,CAACC,MAAM,EAAEC,KAAK,KAAK;IAAA;IAC9C;AACR;AACA;IACQ,MAAMC,MAAM,GAAGN,OAAO,CAACK,KAAK,CAACE,IAAI,CAAC;IAClC,IAAI,CAACD,MAAM,EAAE;MACT,OAAOF,MAAM;IACjB;IACA;AACR;AACA;IACQ,MAAMI,WAAW,GAAG,oBAAAH,KAAK,CAACI,QAAQ,oDAAd,gBAAgBR,MAAM,KAAI,EAAE;IAChD,IAAIO,WAAW,CAACE,MAAM,GAAG,CAAC,EAAE;MACxB;AACZ;AACA;MACY,MAAMC,YAAY,GAAGd,wBAAwB,CAAC;QAC1CI,MAAM,EAAEO,WAAW;QACnBN,OAAO,EAAE,CAAC,GAAGA,OAAO,EAAEG,KAAK,CAACO,OAAO,CAAC;QACpCZ,OAAO;QACPD;MACJ,CAAC,CAAC;MAEFK,MAAM,CAACS,IAAI,CAAC,GAAGF,YAAY,CAAC;MAC5B,OAAOP,MAAM;IACjB;IACA;AACR;AACA;IACQ,IAAI,CAACE,MAAM,CAACQ,cAAc,EAAE;MACxB,OAAOV,MAAM;IACjB;;IAEA;AACR;AACA;IACQ,MAAMW,IAAI,GAAG,CAAC,GAAGb,OAAO,EAAEG,KAAK,CAACO,OAAO,CAAC,CAACI,IAAI,CAAC,GAAG,CAAC;IAClDZ,MAAM,CAACS,IAAI,CAACE,IAAI,CAAC;IAEjB,OAAOX,MAAM;EACjB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAOM,MAAMa,mBAAmB,GAAInB,MAAc,IAAe;EAC7D,MAAM;IAAEE,OAAO;IAAED,KAAK;IAAEE;EAAO,CAAC,GAAGH,MAAM;EACzC,MAAMoB,cAAc,GAAGlB,OAAO,CACzBmB,MAAM,CAA+B,4BAA4B,CAAC,CAClEhB,MAAM,CAAC,CAACiB,UAAU,EAAEf,KAAK,KAAK;IAC3Be,UAAU,CAACf,KAAK,CAACgB,SAAS,CAAC,GAAGhB,KAAK;IACnC,OAAOe,UAAU;EACrB,CAAC,EAAE,CAAC,CAAC,CAAiD;EAE1D,OAAOvB,wBAAwB,CAAC;IAC5BI,MAAM;IACNF,KAAK;IACLC,OAAO,EAAEkB,cAAc;IACvBhB,OAAO,EAAE;EACb,CAAC,CAAC;AACN,CAAC;AAAC"}