@webiny/api-headless-cms-ddb-es 0.0.0-unstable.78f581c1d2 → 0.0.0-unstable.7be00a75a9

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 (411) hide show
  1. package/README.md +6 -30
  2. package/configurations.d.ts +13 -6
  3. package/configurations.js +28 -40
  4. package/configurations.js.map +1 -1
  5. package/definitions/entry.d.ts +4 -5
  6. package/definitions/entry.js +9 -88
  7. package/definitions/entry.js.map +1 -1
  8. package/definitions/group.d.ts +6 -6
  9. package/definitions/group.js +9 -68
  10. package/definitions/group.js.map +1 -1
  11. package/definitions/model.d.ts +6 -6
  12. package/definitions/model.js +9 -90
  13. package/definitions/model.js.map +1 -1
  14. package/definitions/types.d.ts +65 -0
  15. package/definitions/types.js +0 -0
  16. package/elasticsearch/createElasticsearchIndex.d.ts +5 -5
  17. package/elasticsearch/createElasticsearchIndex.js +53 -56
  18. package/elasticsearch/createElasticsearchIndex.js.map +1 -1
  19. package/elasticsearch/deleteElasticsearchIndex.d.ts +3 -3
  20. package/elasticsearch/deleteElasticsearchIndex.js +20 -40
  21. package/elasticsearch/deleteElasticsearchIndex.js.map +1 -1
  22. package/exports/api/cms/opensearch.d.ts +9 -0
  23. package/exports/api/cms/opensearch.js +9 -0
  24. package/feature.d.ts +1 -0
  25. package/feature.js +179 -0
  26. package/feature.js.map +1 -0
  27. package/features/CmsEntryOpenSearchBodyModifier/abstractions.d.ts +16 -0
  28. package/features/CmsEntryOpenSearchBodyModifier/abstractions.js +5 -0
  29. package/features/CmsEntryOpenSearchBodyModifier/abstractions.js.map +1 -0
  30. package/features/CmsEntryOpenSearchBodyModifier/index.d.ts +1 -0
  31. package/features/CmsEntryOpenSearchBodyModifier/index.js +1 -0
  32. package/features/CmsEntryOpenSearchFieldIndex/CmsEntryOpenSearchFieldIndexRegistry.d.ts +14 -0
  33. package/features/CmsEntryOpenSearchFieldIndex/CmsEntryOpenSearchFieldIndexRegistry.js +42 -0
  34. package/features/CmsEntryOpenSearchFieldIndex/CmsEntryOpenSearchFieldIndexRegistry.js.map +1 -0
  35. package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndex.d.ts +32 -0
  36. package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndex.js +5 -0
  37. package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndex.js.map +1 -0
  38. package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndexRegistry.d.ts +11 -0
  39. package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndexRegistry.js +5 -0
  40. package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndexRegistry.js.map +1 -0
  41. package/features/CmsEntryOpenSearchFieldIndex/constants.d.ts +1 -0
  42. package/features/CmsEntryOpenSearchFieldIndex/constants.js +4 -0
  43. package/features/CmsEntryOpenSearchFieldIndex/constants.js.map +1 -0
  44. package/features/CmsEntryOpenSearchFieldIndex/feature.d.ts +4 -0
  45. package/features/CmsEntryOpenSearchFieldIndex/feature.js +29 -0
  46. package/features/CmsEntryOpenSearchFieldIndex/feature.js.map +1 -0
  47. package/features/CmsEntryOpenSearchFieldIndex/fields/DateTimeFieldIndex.d.ts +11 -0
  48. package/features/CmsEntryOpenSearchFieldIndex/fields/DateTimeFieldIndex.js +60 -0
  49. package/features/CmsEntryOpenSearchFieldIndex/fields/DateTimeFieldIndex.js.map +1 -0
  50. package/features/CmsEntryOpenSearchFieldIndex/fields/DefaultFieldIndex.d.ts +13 -0
  51. package/features/CmsEntryOpenSearchFieldIndex/fields/DefaultFieldIndex.js +33 -0
  52. package/features/CmsEntryOpenSearchFieldIndex/fields/DefaultFieldIndex.js.map +1 -0
  53. package/features/CmsEntryOpenSearchFieldIndex/fields/JsonFieldIndex.d.ts +10 -0
  54. package/features/CmsEntryOpenSearchFieldIndex/fields/JsonFieldIndex.js +21 -0
  55. package/features/CmsEntryOpenSearchFieldIndex/fields/JsonFieldIndex.js.map +1 -0
  56. package/features/CmsEntryOpenSearchFieldIndex/fields/LongTextFieldIndex.d.ts +10 -0
  57. package/features/CmsEntryOpenSearchFieldIndex/fields/LongTextFieldIndex.js +22 -0
  58. package/features/CmsEntryOpenSearchFieldIndex/fields/LongTextFieldIndex.js.map +1 -0
  59. package/features/CmsEntryOpenSearchFieldIndex/fields/NumberFieldIndex.d.ts +11 -0
  60. package/features/CmsEntryOpenSearchFieldIndex/fields/NumberFieldIndex.js +32 -0
  61. package/features/CmsEntryOpenSearchFieldIndex/fields/NumberFieldIndex.js.map +1 -0
  62. package/features/CmsEntryOpenSearchFieldIndex/fields/ObjectFieldIndex.d.ts +12 -0
  63. package/features/CmsEntryOpenSearchFieldIndex/fields/ObjectFieldIndex.js +107 -0
  64. package/features/CmsEntryOpenSearchFieldIndex/fields/ObjectFieldIndex.js.map +1 -0
  65. package/features/CmsEntryOpenSearchFieldIndex/fields/RichTextFieldIndex.d.ts +10 -0
  66. package/features/CmsEntryOpenSearchFieldIndex/fields/RichTextFieldIndex.js +21 -0
  67. package/features/CmsEntryOpenSearchFieldIndex/fields/RichTextFieldIndex.js.map +1 -0
  68. package/features/CmsEntryOpenSearchFieldIndex/fields/TextCompressedFieldIndex.d.ts +15 -0
  69. package/features/CmsEntryOpenSearchFieldIndex/fields/TextCompressedFieldIndex.js +40 -0
  70. package/features/CmsEntryOpenSearchFieldIndex/fields/TextCompressedFieldIndex.js.map +1 -0
  71. package/features/CmsEntryOpenSearchFieldIndex/fields/TextEncryptedFieldIndex.d.ts +15 -0
  72. package/features/CmsEntryOpenSearchFieldIndex/fields/TextEncryptedFieldIndex.js +40 -0
  73. package/features/CmsEntryOpenSearchFieldIndex/fields/TextEncryptedFieldIndex.js.map +1 -0
  74. package/features/CmsEntryOpenSearchFieldIndex/index.d.ts +3 -0
  75. package/features/CmsEntryOpenSearchFieldIndex/index.js +3 -0
  76. package/features/CmsEntryOpenSearchFilter/CmsEntryOpenSearchFilterRegistry.d.ts +11 -0
  77. package/features/CmsEntryOpenSearchFilter/CmsEntryOpenSearchFilterRegistry.js +36 -0
  78. package/features/CmsEntryOpenSearchFilter/CmsEntryOpenSearchFilterRegistry.js.map +1 -0
  79. package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilter.d.ts +37 -0
  80. package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilter.js +5 -0
  81. package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilter.js.map +1 -0
  82. package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilterRegistry.d.ts +9 -0
  83. package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilterRegistry.js +5 -0
  84. package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilterRegistry.js.map +1 -0
  85. package/features/CmsEntryOpenSearchFilter/constants.d.ts +1 -0
  86. package/features/CmsEntryOpenSearchFilter/constants.js +4 -0
  87. package/features/CmsEntryOpenSearchFilter/constants.js.map +1 -0
  88. package/features/CmsEntryOpenSearchFilter/feature.d.ts +4 -0
  89. package/features/CmsEntryOpenSearchFilter/feature.js +17 -0
  90. package/features/CmsEntryOpenSearchFilter/feature.js.map +1 -0
  91. package/features/CmsEntryOpenSearchFilter/fields/DefaultFilter.d.ts +9 -0
  92. package/features/CmsEntryOpenSearchFilter/fields/DefaultFilter.js +26 -0
  93. package/features/CmsEntryOpenSearchFilter/fields/DefaultFilter.js.map +1 -0
  94. package/features/CmsEntryOpenSearchFilter/fields/ObjectFilter.d.ts +9 -0
  95. package/features/CmsEntryOpenSearchFilter/fields/ObjectFilter.js +43 -0
  96. package/features/CmsEntryOpenSearchFilter/fields/ObjectFilter.js.map +1 -0
  97. package/features/CmsEntryOpenSearchFilter/fields/RefFilter.d.ts +9 -0
  98. package/features/CmsEntryOpenSearchFilter/fields/RefFilter.js +36 -0
  99. package/features/CmsEntryOpenSearchFilter/fields/RefFilter.js.map +1 -0
  100. package/features/CmsEntryOpenSearchFilter/index.d.ts +3 -0
  101. package/features/CmsEntryOpenSearchFilter/index.js +3 -0
  102. package/features/CmsEntryOpenSearchFullTextSearch/abstractions.d.ts +20 -0
  103. package/features/CmsEntryOpenSearchFullTextSearch/abstractions.js +5 -0
  104. package/features/CmsEntryOpenSearchFullTextSearch/abstractions.js.map +1 -0
  105. package/features/CmsEntryOpenSearchFullTextSearch/index.d.ts +1 -0
  106. package/features/CmsEntryOpenSearchFullTextSearch/index.js +1 -0
  107. package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.d.ts +11 -0
  108. package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.js +17 -0
  109. package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.js.map +1 -0
  110. package/features/CmsEntryOpenSearchIndex/abstractions.d.ts +14 -0
  111. package/features/CmsEntryOpenSearchIndex/abstractions.js +5 -0
  112. package/features/CmsEntryOpenSearchIndex/abstractions.js.map +1 -0
  113. package/features/CmsEntryOpenSearchIndex/feature.d.ts +4 -0
  114. package/features/CmsEntryOpenSearchIndex/feature.js +11 -0
  115. package/features/CmsEntryOpenSearchIndex/feature.js.map +1 -0
  116. package/features/CmsEntryOpenSearchIndex/index.d.ts +3 -0
  117. package/features/CmsEntryOpenSearchIndex/index.js +3 -0
  118. package/features/CmsEntryOpenSearchQueryModifier/abstractions.d.ts +16 -0
  119. package/features/CmsEntryOpenSearchQueryModifier/abstractions.js +5 -0
  120. package/features/CmsEntryOpenSearchQueryModifier/abstractions.js.map +1 -0
  121. package/features/CmsEntryOpenSearchQueryModifier/index.d.ts +1 -0
  122. package/features/CmsEntryOpenSearchQueryModifier/index.js +1 -0
  123. package/features/CmsEntryOpenSearchSortModifier/abstractions.d.ts +15 -0
  124. package/features/CmsEntryOpenSearchSortModifier/abstractions.js +5 -0
  125. package/features/CmsEntryOpenSearchSortModifier/abstractions.js.map +1 -0
  126. package/features/CmsEntryOpenSearchSortModifier/index.d.ts +1 -0
  127. package/features/CmsEntryOpenSearchSortModifier/index.js +1 -0
  128. package/features/CmsEntryOpenSearchValueSearch/CmsEntryOpenSearchValueSearchRegistry.d.ts +12 -0
  129. package/features/CmsEntryOpenSearchValueSearch/CmsEntryOpenSearchValueSearchRegistry.js +31 -0
  130. package/features/CmsEntryOpenSearchValueSearch/CmsEntryOpenSearchValueSearchRegistry.js.map +1 -0
  131. package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearch.d.ts +22 -0
  132. package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearch.js +5 -0
  133. package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearch.js.map +1 -0
  134. package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearchRegistry.d.ts +10 -0
  135. package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearchRegistry.js +5 -0
  136. package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearchRegistry.js.map +1 -0
  137. package/features/CmsEntryOpenSearchValueSearch/feature.d.ts +4 -0
  138. package/features/CmsEntryOpenSearchValueSearch/feature.js +17 -0
  139. package/features/CmsEntryOpenSearchValueSearch/feature.js.map +1 -0
  140. package/features/CmsEntryOpenSearchValueSearch/fields/RefSearch.d.ts +10 -0
  141. package/features/CmsEntryOpenSearchValueSearch/fields/RefSearch.js +21 -0
  142. package/features/CmsEntryOpenSearchValueSearch/fields/RefSearch.js.map +1 -0
  143. package/features/CmsEntryOpenSearchValueSearch/fields/SearchableJsonSearch.d.ts +10 -0
  144. package/features/CmsEntryOpenSearchValueSearch/fields/SearchableJsonSearch.js +44 -0
  145. package/features/CmsEntryOpenSearchValueSearch/fields/SearchableJsonSearch.js.map +1 -0
  146. package/features/CmsEntryOpenSearchValueSearch/fields/TimeSearch.d.ts +10 -0
  147. package/features/CmsEntryOpenSearchValueSearch/fields/TimeSearch.js +22 -0
  148. package/features/CmsEntryOpenSearchValueSearch/fields/TimeSearch.js.map +1 -0
  149. package/features/CmsEntryOpenSearchValueSearch/index.d.ts +3 -0
  150. package/features/CmsEntryOpenSearchValueSearch/index.js +3 -0
  151. package/features/CmsEntryOpenSearchValuesModifier/abstractions.d.ts +23 -0
  152. package/features/CmsEntryOpenSearchValuesModifier/abstractions.js +5 -0
  153. package/features/CmsEntryOpenSearchValuesModifier/abstractions.js.map +1 -0
  154. package/features/CmsEntryOpenSearchValuesModifier/index.d.ts +1 -0
  155. package/features/CmsEntryOpenSearchValuesModifier/index.js +1 -0
  156. package/helpers/entryIndexHelpers.d.ts +13 -11
  157. package/helpers/entryIndexHelpers.js +72 -196
  158. package/helpers/entryIndexHelpers.js.map +1 -1
  159. package/helpers/fieldIdentifier.d.ts +6 -0
  160. package/helpers/fieldIdentifier.js +23 -0
  161. package/helpers/fieldIdentifier.js.map +1 -0
  162. package/helpers/index.d.ts +2 -2
  163. package/helpers/index.js +2 -31
  164. package/index.d.ts +1 -3
  165. package/index.js +1 -268
  166. package/operations/entry/dataLoader/DataLoaderCache.d.ts +16 -0
  167. package/operations/entry/dataLoader/DataLoaderCache.js +27 -0
  168. package/operations/entry/dataLoader/DataLoaderCache.js.map +1 -0
  169. package/operations/entry/dataLoader/constants.d.ts +1 -0
  170. package/operations/entry/dataLoader/constants.js +5 -0
  171. package/operations/entry/dataLoader/constants.js.map +1 -0
  172. package/operations/entry/dataLoader/createBatchScheduleFn.d.ts +8 -0
  173. package/operations/entry/dataLoader/createBatchScheduleFn.js +10 -0
  174. package/operations/entry/dataLoader/createBatchScheduleFn.js.map +1 -0
  175. package/operations/entry/dataLoader/getAllEntryRevisions.d.ts +4 -0
  176. package/operations/entry/dataLoader/getAllEntryRevisions.js +24 -0
  177. package/operations/entry/dataLoader/getAllEntryRevisions.js.map +1 -0
  178. package/operations/entry/dataLoader/getLatestRevisionByEntryId.d.ts +4 -0
  179. package/operations/entry/dataLoader/getLatestRevisionByEntryId.js +34 -0
  180. package/operations/entry/dataLoader/getLatestRevisionByEntryId.js.map +1 -0
  181. package/operations/entry/dataLoader/getPublishedRevisionByEntryId.d.ts +4 -0
  182. package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js +34 -0
  183. package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js.map +1 -0
  184. package/operations/entry/dataLoader/getRevisionById.d.ts +4 -0
  185. package/operations/entry/dataLoader/getRevisionById.js +40 -0
  186. package/operations/entry/dataLoader/getRevisionById.js.map +1 -0
  187. package/operations/entry/dataLoader/index.d.ts +8 -0
  188. package/operations/entry/dataLoader/index.js +18 -0
  189. package/operations/entry/dataLoader/index.js.map +1 -0
  190. package/operations/entry/dataLoader/types.d.ts +6 -0
  191. package/operations/entry/dataLoader/types.js +0 -0
  192. package/operations/entry/dataLoaders.d.ts +17 -38
  193. package/operations/entry/dataLoaders.js +82 -357
  194. package/operations/entry/dataLoaders.js.map +1 -1
  195. package/operations/entry/elasticsearch/assignMinimumShouldMatchToQuery.d.ts +18 -0
  196. package/operations/entry/elasticsearch/assignMinimumShouldMatchToQuery.js +9 -0
  197. package/operations/entry/elasticsearch/assignMinimumShouldMatchToQuery.js.map +1 -0
  198. package/operations/entry/elasticsearch/body.d.ts +29 -0
  199. package/operations/entry/elasticsearch/body.js +87 -0
  200. package/operations/entry/elasticsearch/body.js.map +1 -0
  201. package/operations/entry/elasticsearch/fields/createSystemField.d.ts +4 -0
  202. package/operations/entry/elasticsearch/fields/createSystemField.js +9 -0
  203. package/operations/entry/elasticsearch/fields/createSystemField.js.map +1 -0
  204. package/operations/entry/elasticsearch/fields/live.d.ts +2 -0
  205. package/operations/entry/elasticsearch/fields/live.js +50 -0
  206. package/operations/entry/elasticsearch/fields/live.js.map +1 -0
  207. package/operations/entry/elasticsearch/fields/location.d.ts +2 -0
  208. package/operations/entry/elasticsearch/fields/location.js +50 -0
  209. package/operations/entry/elasticsearch/fields/location.js.map +1 -0
  210. package/operations/entry/elasticsearch/fields/state.d.ts +2 -0
  211. package/operations/entry/elasticsearch/fields/state.js +104 -0
  212. package/operations/entry/elasticsearch/fields/state.js.map +1 -0
  213. package/operations/entry/elasticsearch/fields.d.ts +12 -0
  214. package/operations/entry/elasticsearch/fields.js +207 -0
  215. package/operations/entry/elasticsearch/fields.js.map +1 -0
  216. package/operations/entry/elasticsearch/filtering/applyFiltering.d.ts +9 -0
  217. package/operations/entry/elasticsearch/filtering/applyFiltering.js +39 -0
  218. package/operations/entry/elasticsearch/filtering/applyFiltering.js.map +1 -0
  219. package/operations/entry/elasticsearch/filtering/exec.d.ts +22 -0
  220. package/operations/entry/elasticsearch/filtering/exec.js +96 -0
  221. package/operations/entry/elasticsearch/filtering/exec.js.map +1 -0
  222. package/operations/entry/elasticsearch/filtering/index.d.ts +1 -0
  223. package/operations/entry/elasticsearch/filtering/index.js +1 -0
  224. package/operations/entry/elasticsearch/filtering/path.d.ts +17 -0
  225. package/operations/entry/elasticsearch/filtering/path.js +27 -0
  226. package/operations/entry/elasticsearch/filtering/path.js.map +1 -0
  227. package/operations/entry/elasticsearch/filtering/populated.d.ts +2 -0
  228. package/operations/entry/elasticsearch/filtering/populated.js +12 -0
  229. package/operations/entry/elasticsearch/filtering/populated.js.map +1 -0
  230. package/operations/entry/elasticsearch/filtering/values.d.ts +2 -0
  231. package/operations/entry/elasticsearch/filtering/values.js +15 -0
  232. package/operations/entry/elasticsearch/filtering/values.js.map +1 -0
  233. package/operations/entry/elasticsearch/fullTextSearch.d.ts +13 -0
  234. package/operations/entry/elasticsearch/fullTextSearch.js +51 -0
  235. package/operations/entry/elasticsearch/fullTextSearch.js.map +1 -0
  236. package/operations/entry/elasticsearch/fullTextSearchFields.d.ts +8 -0
  237. package/operations/entry/elasticsearch/fullTextSearchFields.js +10 -0
  238. package/operations/entry/elasticsearch/fullTextSearchFields.js.map +1 -0
  239. package/operations/entry/elasticsearch/initialQuery.d.ts +17 -0
  240. package/operations/entry/elasticsearch/initialQuery.js +45 -0
  241. package/operations/entry/elasticsearch/initialQuery.js.map +1 -0
  242. package/operations/entry/elasticsearch/keyword.d.ts +2 -0
  243. package/operations/entry/elasticsearch/keyword.js +17 -0
  244. package/operations/entry/elasticsearch/keyword.js.map +1 -0
  245. package/operations/entry/elasticsearch/plugins/operator.d.ts +7 -0
  246. package/operations/entry/elasticsearch/plugins/operator.js +13 -0
  247. package/operations/entry/elasticsearch/plugins/operator.js.map +1 -0
  248. package/operations/entry/elasticsearch/shouldIgnoreEsResponseError.d.ts +2 -0
  249. package/operations/entry/elasticsearch/shouldIgnoreEsResponseError.js +8 -0
  250. package/operations/entry/elasticsearch/shouldIgnoreEsResponseError.js.map +1 -0
  251. package/operations/entry/elasticsearch/sort.d.ts +12 -0
  252. package/operations/entry/elasticsearch/sort.js +80 -0
  253. package/operations/entry/elasticsearch/sort.js.map +1 -0
  254. package/operations/entry/elasticsearch/transformValueForSearch.d.ts +9 -0
  255. package/operations/entry/elasticsearch/transformValueForSearch.js +12 -0
  256. package/operations/entry/elasticsearch/transformValueForSearch.js.map +1 -0
  257. package/operations/entry/elasticsearch/types.d.ts +34 -0
  258. package/operations/entry/elasticsearch/types.js +0 -0
  259. package/operations/entry/index.d.ts +27 -8
  260. package/operations/entry/index.js +1344 -1245
  261. package/operations/entry/index.js.map +1 -1
  262. package/operations/entry/keys.d.ts +31 -1
  263. package/operations/entry/keys.js +45 -35
  264. package/operations/entry/keys.js.map +1 -1
  265. package/operations/entry/recordType.d.ts +3 -0
  266. package/operations/entry/recordType.js +6 -0
  267. package/operations/entry/recordType.js.map +1 -0
  268. package/operations/entry/transformations/convertEntryKeys.d.ts +8 -0
  269. package/operations/entry/transformations/convertEntryKeys.js +25 -0
  270. package/operations/entry/transformations/convertEntryKeys.js.map +1 -0
  271. package/operations/entry/transformations/index.d.ts +33 -0
  272. package/operations/entry/transformations/index.js +91 -0
  273. package/operations/entry/transformations/index.js.map +1 -0
  274. package/operations/entry/transformations/modifyEntryValues.d.ts +53 -0
  275. package/operations/entry/transformations/modifyEntryValues.js +16 -0
  276. package/operations/entry/transformations/modifyEntryValues.js.map +1 -0
  277. package/operations/entry/transformations/transformEntryKeys.d.ts +11 -0
  278. package/operations/entry/transformations/transformEntryKeys.js +17 -0
  279. package/operations/entry/transformations/transformEntryKeys.js.map +1 -0
  280. package/operations/entry/transformations/transformEntryToIndex.d.ts +10 -0
  281. package/operations/entry/transformations/transformEntryToIndex.js +20 -0
  282. package/operations/entry/transformations/transformEntryToIndex.js.map +1 -0
  283. package/operations/group/index.d.ts +7 -6
  284. package/operations/group/index.js +116 -190
  285. package/operations/group/index.js.map +1 -1
  286. package/operations/model/index.d.ts +4 -4
  287. package/operations/model/index.js +130 -199
  288. package/operations/model/index.js.map +1 -1
  289. package/package.json +44 -41
  290. package/tasks/createIndexTaskPlugin.d.ts +2 -0
  291. package/tasks/createIndexTaskPlugin.js +45 -0
  292. package/tasks/createIndexTaskPlugin.js.map +1 -0
  293. package/types.d.ts +34 -137
  294. package/types.js +10 -47
  295. package/types.js.map +1 -1
  296. package/values/NoValueContainer.d.ts +5 -0
  297. package/values/NoValueContainer.js +11 -0
  298. package/values/NoValueContainer.js.map +1 -0
  299. package/definitions/entryElasticsearch.d.ts +0 -8
  300. package/definitions/entryElasticsearch.js +0 -42
  301. package/definitions/entryElasticsearch.js.map +0 -1
  302. package/definitions/settings.d.ts +0 -8
  303. package/definitions/settings.js +0 -58
  304. package/definitions/settings.js.map +0 -1
  305. package/definitions/system.d.ts +0 -8
  306. package/definitions/system.js +0 -46
  307. package/definitions/system.js.map +0 -1
  308. package/definitions/table.d.ts +0 -8
  309. package/definitions/table.js +0 -24
  310. package/definitions/table.js.map +0 -1
  311. package/definitions/tableElasticsearch.d.ts +0 -8
  312. package/definitions/tableElasticsearch.js +0 -24
  313. package/definitions/tableElasticsearch.js.map +0 -1
  314. package/dynamoDb/index.d.ts +0 -2
  315. package/dynamoDb/index.js +0 -16
  316. package/dynamoDb/index.js.map +0 -1
  317. package/dynamoDb/storage/date.d.ts +0 -2
  318. package/dynamoDb/storage/date.js +0 -99
  319. package/dynamoDb/storage/date.js.map +0 -1
  320. package/dynamoDb/storage/longText.d.ts +0 -10
  321. package/dynamoDb/storage/longText.js +0 -101
  322. package/dynamoDb/storage/longText.js.map +0 -1
  323. package/dynamoDb/storage/richText.d.ts +0 -7
  324. package/dynamoDb/storage/richText.js +0 -128
  325. package/dynamoDb/storage/richText.js.map +0 -1
  326. package/elasticsearch/index.d.ts +0 -2
  327. package/elasticsearch/index.js +0 -16
  328. package/elasticsearch/index.js.map +0 -1
  329. package/elasticsearch/indexing/dateTimeIndexing.d.ts +0 -3
  330. package/elasticsearch/indexing/dateTimeIndexing.js +0 -103
  331. package/elasticsearch/indexing/dateTimeIndexing.js.map +0 -1
  332. package/elasticsearch/indexing/defaultFieldIndexing.d.ts +0 -3
  333. package/elasticsearch/indexing/defaultFieldIndexing.js +0 -47
  334. package/elasticsearch/indexing/defaultFieldIndexing.js.map +0 -1
  335. package/elasticsearch/indexing/index.d.ts +0 -2
  336. package/elasticsearch/indexing/index.js +0 -24
  337. package/elasticsearch/indexing/index.js.map +0 -1
  338. package/elasticsearch/indexing/longTextIndexing.d.ts +0 -3
  339. package/elasticsearch/indexing/longTextIndexing.js +0 -36
  340. package/elasticsearch/indexing/longTextIndexing.js.map +0 -1
  341. package/elasticsearch/indexing/numberIndexing.d.ts +0 -3
  342. package/elasticsearch/indexing/numberIndexing.js +0 -48
  343. package/elasticsearch/indexing/numberIndexing.js.map +0 -1
  344. package/elasticsearch/indexing/objectIndexing.d.ts +0 -12
  345. package/elasticsearch/indexing/objectIndexing.js +0 -223
  346. package/elasticsearch/indexing/objectIndexing.js.map +0 -1
  347. package/elasticsearch/indexing/richTextIndexing.d.ts +0 -3
  348. package/elasticsearch/indexing/richTextIndexing.js +0 -34
  349. package/elasticsearch/indexing/richTextIndexing.js.map +0 -1
  350. package/elasticsearch/indices/base.d.ts +0 -2
  351. package/elasticsearch/indices/base.js +0 -15
  352. package/elasticsearch/indices/base.js.map +0 -1
  353. package/elasticsearch/indices/index.d.ts +0 -1
  354. package/elasticsearch/indices/index.js +0 -16
  355. package/elasticsearch/indices/index.js.map +0 -1
  356. package/elasticsearch/indices/japanese.d.ts +0 -2
  357. package/elasticsearch/indices/japanese.js +0 -16
  358. package/elasticsearch/indices/japanese.js.map +0 -1
  359. package/elasticsearch/search/index.d.ts +0 -3
  360. package/elasticsearch/search/index.js +0 -14
  361. package/elasticsearch/search/index.js.map +0 -1
  362. package/elasticsearch/search/refSearch.d.ts +0 -2
  363. package/elasticsearch/search/refSearch.js +0 -33
  364. package/elasticsearch/search/refSearch.js.map +0 -1
  365. package/elasticsearch/search/timeSearch.d.ts +0 -2
  366. package/elasticsearch/search/timeSearch.js +0 -33
  367. package/elasticsearch/search/timeSearch.js.map +0 -1
  368. package/helpers/createElasticsearchQueryBody.d.ts +0 -11
  369. package/helpers/createElasticsearchQueryBody.js +0 -611
  370. package/helpers/createElasticsearchQueryBody.js.map +0 -1
  371. package/helpers/fields.d.ts +0 -19
  372. package/helpers/fields.js +0 -205
  373. package/helpers/fields.js.map +0 -1
  374. package/helpers/index.js.map +0 -1
  375. package/helpers/searchPluginsList.d.ts +0 -6
  376. package/helpers/searchPluginsList.js +0 -26
  377. package/helpers/searchPluginsList.js.map +0 -1
  378. package/helpers/transformValueForSearch.d.ts +0 -12
  379. package/helpers/transformValueForSearch.js +0 -29
  380. package/helpers/transformValueForSearch.js.map +0 -1
  381. package/index.js.map +0 -1
  382. package/operations/entry/elasticsearchFields.d.ts +0 -2
  383. package/operations/entry/elasticsearchFields.js +0 -38
  384. package/operations/entry/elasticsearchFields.js.map +0 -1
  385. package/operations/settings/index.d.ts +0 -6
  386. package/operations/settings/index.js +0 -135
  387. package/operations/settings/index.js.map +0 -1
  388. package/operations/system/index.d.ts +0 -6
  389. package/operations/system/index.js +0 -99
  390. package/operations/system/index.js.map +0 -1
  391. package/plugins/CmsEntryElasticsearchBodyModifierPlugin.d.ts +0 -20
  392. package/plugins/CmsEntryElasticsearchBodyModifierPlugin.js +0 -24
  393. package/plugins/CmsEntryElasticsearchBodyModifierPlugin.js.map +0 -1
  394. package/plugins/CmsEntryElasticsearchFieldPlugin.d.ts +0 -12
  395. package/plugins/CmsEntryElasticsearchFieldPlugin.js +0 -24
  396. package/plugins/CmsEntryElasticsearchFieldPlugin.js.map +0 -1
  397. package/plugins/CmsEntryElasticsearchIndexPlugin.d.ts +0 -4
  398. package/plugins/CmsEntryElasticsearchIndexPlugin.js +0 -17
  399. package/plugins/CmsEntryElasticsearchIndexPlugin.js.map +0 -1
  400. package/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin.d.ts +0 -30
  401. package/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin.js +0 -43
  402. package/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin.js.map +0 -1
  403. package/plugins/CmsEntryElasticsearchQueryModifierPlugin.d.ts +0 -17
  404. package/plugins/CmsEntryElasticsearchQueryModifierPlugin.js +0 -24
  405. package/plugins/CmsEntryElasticsearchQueryModifierPlugin.js.map +0 -1
  406. package/plugins/CmsEntryElasticsearchSortModifierPlugin.d.ts +0 -17
  407. package/plugins/CmsEntryElasticsearchSortModifierPlugin.js +0 -24
  408. package/plugins/CmsEntryElasticsearchSortModifierPlugin.js.map +0 -1
  409. package/plugins/index.d.ts +0 -6
  410. package/plugins/index.js +0 -83
  411. package/plugins/index.js.map +0 -1
@@ -1,51 +1,30 @@
1
- import { CmsEntry, CmsModel } from "@webiny/api-headless-cms/types";
2
- import { Entity } from "dynamodb-toolbox";
3
- export interface GetAllEntryRevisionsParams {
1
+ import type { CmsEntryValues, CmsModel, CmsStorageEntry } from "@webiny/api-headless-cms/types/index.js";
2
+ import type { DataLoadersHandlerInterfaceClearAllParams, IDataLoadersHandler } from "../../types.js";
3
+ import type { IEntryEntity } from "../../definitions/types.js";
4
+ interface DataLoaderParams {
5
+ model: Pick<CmsModel, "tenant" | "modelId">;
4
6
  ids: readonly string[];
5
- model: CmsModel;
6
7
  }
7
- export interface GetRevisionByIdParams {
8
- ids: readonly string[];
9
- model: CmsModel;
10
- }
11
- export interface GetPublishedRevisionByEntryIdParams {
12
- ids: readonly string[];
13
- model: CmsModel;
14
- }
15
- export interface GetLatestRevisionByEntryIdParams {
16
- ids: readonly string[];
17
- model: CmsModel;
18
- }
19
- interface ClearLoaderParams {
20
- model: CmsModel;
21
- entry?: CmsEntry;
8
+ interface IDataLoadersHandlerParams {
9
+ entity: IEntryEntity;
22
10
  }
23
- export interface DataLoadersHandlerParams {
24
- entity: Entity<any>;
11
+ export interface ClearAllParams {
12
+ model: Pick<CmsModel, "tenant" | "modelId">;
25
13
  }
26
- export declare class DataLoadersHandler {
27
- private readonly loaders;
14
+ export declare class DataLoadersHandler implements IDataLoadersHandler {
28
15
  private readonly entity;
29
- constructor(params: DataLoadersHandlerParams);
30
- getAllEntryRevisions(params: GetAllEntryRevisionsParams): Promise<CmsEntry[]>;
31
- clearAllEntryRevisions(params: ClearLoaderParams): void;
32
- getRevisionById(params: GetRevisionByIdParams): Promise<CmsEntry[]>;
33
- clearRevisionById(params: ClearLoaderParams): void;
34
- getPublishedRevisionByEntryId(params: GetPublishedRevisionByEntryIdParams): Promise<CmsEntry[]>;
35
- clearPublishedRevisionByEntryId(params: ClearLoaderParams): void;
36
- getLatestRevisionByEntryId(params: GetLatestRevisionByEntryIdParams): Promise<CmsEntry[]>;
37
- clearLatestRevisionByEntryId(params: ClearLoaderParams): void;
16
+ private readonly cache;
17
+ constructor(params: IDataLoadersHandlerParams);
18
+ getAllEntryRevisions<T extends CmsEntryValues = CmsEntryValues>(params: DataLoaderParams): Promise<CmsStorageEntry<T>[]>;
19
+ getRevisionById<T extends CmsEntryValues = CmsEntryValues>(params: DataLoaderParams): Promise<CmsStorageEntry<T>[]>;
20
+ getPublishedRevisionByEntryId<T extends CmsEntryValues = CmsEntryValues>(params: DataLoaderParams): Promise<CmsStorageEntry<T>[]>;
21
+ getLatestRevisionByEntryId<T extends CmsEntryValues = CmsEntryValues>(params: DataLoaderParams): Promise<CmsStorageEntry<T>[]>;
38
22
  /**
39
23
  * TODO @ts-refactor
40
24
  * Maybe pass on the generics to DataLoader definition?
41
25
  */
42
26
  private getLoader;
43
27
  private loadMany;
44
- clearAll(params: Omit<ClearLoaderParams, "entry">): void;
45
- /**
46
- * Helper to clear the cache for certain data loader.
47
- * If entry is passed then clear target key only.
48
- */
49
- private clear;
28
+ clearAll(params?: DataLoadersHandlerInterfaceClearAllParams): void;
50
29
  }
51
30
  export {};
@@ -1,365 +1,90 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.DataLoadersHandler = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _dataloader = _interopRequireDefault(require("dataloader"));
15
-
16
- var _error = _interopRequireDefault(require("@webiny/error"));
17
-
18
- var _query = require("@webiny/db-dynamodb/utils/query");
19
-
20
- var _keys = require("./keys");
21
-
22
- var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
23
-
24
- var _utils = require("@webiny/utils");
25
-
26
- var _batchRead = require("@webiny/db-dynamodb/utils/batchRead");
27
-
28
- const getAllEntryRevisions = params => {
29
- const {
30
- entity,
31
- model
32
- } = params;
33
- const {
34
- tenant,
35
- locale
36
- } = model;
37
- return new _dataloader.default(async ids => {
38
- const results = {};
39
-
40
- for (const id of ids) {
41
- const queryAllParams = {
42
- entity,
43
- partitionKey: (0, _keys.createPartitionKey)({
44
- tenant,
45
- locale,
46
- id
47
- }),
48
- options: {
49
- beginsWith: "REV#"
50
- }
51
- };
52
- const items = await (0, _query.queryAll)(queryAllParams);
53
- results[id] = (0, _cleanup.cleanupItems)(entity, items);
54
- }
55
-
56
- return ids.map(id => {
57
- return results[id] || [];
58
- });
59
- });
60
- };
61
-
62
- const getRevisionById = params => {
63
- const {
64
- entity,
65
- model
66
- } = params;
67
- const {
68
- locale,
69
- tenant
70
- } = model;
71
- return new _dataloader.default(async ids => {
72
- const queries = ids.reduce((collection, id) => {
73
- const partitionKey = (0, _keys.createPartitionKey)({
74
- tenant,
75
- locale,
76
- id
77
- });
78
- const {
79
- version
80
- } = (0, _utils.parseIdentifier)(id);
81
-
82
- if (!version) {
83
- return collection;
84
- }
85
-
86
- const sortKey = (0, _keys.createRevisionSortKey)({
87
- version
88
- });
89
- const keys = `${partitionKey}__${sortKey}`;
90
-
91
- if (collection[keys]) {
92
- return collection;
93
- }
94
-
95
- collection[keys] = entity.getBatch({
96
- PK: partitionKey,
97
- SK: sortKey
98
- });
99
- return collection;
100
- /**
101
- * We use any because there is no type for the return type.
102
- */
103
- }, {});
104
- const records = await (0, _batchRead.batchReadAll)({
105
- table: entity.table,
106
- items: Object.values(queries)
107
- });
108
- const items = (0, _cleanup.cleanupItems)(entity, records);
109
- return ids.map(id => {
110
- return items.filter(item => {
111
- return id === item.id;
112
- });
113
- });
114
- });
115
- };
116
-
117
- const getPublishedRevisionByEntryId = params => {
118
- const {
119
- entity,
120
- model
121
- } = params;
122
- const {
123
- locale,
124
- tenant
125
- } = model;
126
- const publishedKey = (0, _keys.createPublishedSortKey)();
127
- return new _dataloader.default(async ids => {
128
- const queries = ids.reduce((collection, id) => {
129
- const partitionKey = (0, _keys.createPartitionKey)({
130
- tenant,
131
- locale,
132
- id
133
- });
134
-
135
- if (collection[partitionKey]) {
136
- return collection;
137
- }
138
-
139
- collection[partitionKey] = entity.getBatch({
140
- PK: partitionKey,
141
- SK: publishedKey
142
- });
143
- return collection;
144
- /**
145
- * We use any because there is no type for the return type.
146
- */
147
- }, {});
148
- const records = await (0, _batchRead.batchReadAll)({
149
- table: entity.table,
150
- items: Object.values(queries)
151
- });
152
- const items = (0, _cleanup.cleanupItems)(entity, records);
153
- return ids.map(id => {
154
- const {
155
- id: entryId
156
- } = (0, _utils.parseIdentifier)(id);
157
- return items.filter(item => {
158
- return entryId === item.entryId;
159
- });
160
- });
161
- });
162
- };
163
-
164
- const getLatestRevisionByEntryId = params => {
165
- const {
166
- entity,
167
- model
168
- } = params;
169
- const {
170
- locale,
171
- tenant
172
- } = model;
173
- const latestKey = (0, _keys.createLatestSortKey)();
174
- return new _dataloader.default(async ids => {
175
- const queries = ids.reduce((collection, id) => {
176
- const partitionKey = (0, _keys.createPartitionKey)({
177
- tenant,
178
- locale,
179
- id
180
- });
181
-
182
- if (collection[partitionKey]) {
183
- return collection;
184
- }
185
-
186
- collection[partitionKey] = entity.getBatch({
187
- PK: partitionKey,
188
- SK: latestKey
189
- });
190
- return collection;
191
- /**
192
- * We use any because there is no type for the return type.
193
- */
194
- }, {});
195
- const records = await (0, _batchRead.batchReadAll)({
196
- table: entity.table,
197
- items: Object.values(queries)
198
- });
199
- const items = (0, _cleanup.cleanupItems)(entity, records);
200
- return ids.map(id => {
201
- const {
202
- id: entryId
203
- } = (0, _utils.parseIdentifier)(id);
204
- return items.filter(item => {
205
- return entryId === item.entryId;
206
- });
207
- });
208
- });
209
- };
210
-
211
- const dataLoaders = {
212
- getAllEntryRevisions,
213
- getRevisionById,
214
- getPublishedRevisionByEntryId,
215
- getLatestRevisionByEntryId
216
- };
217
- const loaderNames = Object.keys(dataLoaders);
218
-
1
+ import error from "@webiny/error";
2
+ import { DataLoaderCache } from "./dataLoader/DataLoaderCache.js";
3
+ import { getDataLoaderFactory } from "./dataLoader/index.js";
4
+ import { parseIdentifier } from "@webiny/utils";
219
5
  class DataLoadersHandler {
220
- constructor(params) {
221
- (0, _defineProperty2.default)(this, "loaders", new Map());
222
- (0, _defineProperty2.default)(this, "entity", void 0);
223
- this.entity = params.entity;
224
- }
225
-
226
- async getAllEntryRevisions(params) {
227
- return await this.loadMany("getAllEntryRevisions", params, params.ids);
228
- }
229
-
230
- clearAllEntryRevisions(params) {
231
- this.clear("getAllEntryRevisions", params);
232
- }
233
-
234
- async getRevisionById(params) {
235
- return await this.loadMany("getRevisionById", params, params.ids);
236
- }
237
-
238
- clearRevisionById(params) {
239
- this.clear("getRevisionById", params);
240
- }
241
-
242
- async getPublishedRevisionByEntryId(params) {
243
- return await this.loadMany("getPublishedRevisionByEntryId", params, params.ids);
244
- }
245
-
246
- clearPublishedRevisionByEntryId(params) {
247
- this.clear("getPublishedRevisionByEntryId", params);
248
- }
249
-
250
- async getLatestRevisionByEntryId(params) {
251
- return await this.loadMany("getLatestRevisionByEntryId", params, params.ids);
252
- }
253
-
254
- clearLatestRevisionByEntryId(params) {
255
- this.clear("getLatestRevisionByEntryId", params);
256
- }
257
- /**
258
- * TODO @ts-refactor
259
- * Maybe pass on the generics to DataLoader definition?
260
- */
261
-
262
-
263
- getLoader(name, params) {
264
- if (!dataLoaders[name]) {
265
- throw new _error.default("Unknown data loader.", "UNKNOWN_DATA_LOADER", {
266
- name
267
- });
6
+ constructor(params){
7
+ this.cache = new DataLoaderCache();
8
+ this.entity = params.entity;
268
9
  }
269
-
270
- const {
271
- model
272
- } = params;
273
- const {
274
- tenant,
275
- locale
276
- } = model;
277
- const loaderKey = `${name}-${tenant}-${locale}-${model.modelId}`;
278
-
279
- if (!this.loaders.has(loaderKey)) {
280
- this.loaders.set(loaderKey, dataLoaders[name]((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
281
- entity: this.entity
282
- })));
10
+ async getAllEntryRevisions(params) {
11
+ const ids = params.ids.map((id)=>{
12
+ const { id: entryId } = parseIdentifier(id);
13
+ return entryId;
14
+ });
15
+ return await this.loadMany("getAllEntryRevisions", params, ids);
283
16
  }
284
-
285
- return this.loaders.get(loaderKey);
286
- }
287
-
288
- async loadMany(loader, params, ids) {
289
- let results;
290
-
291
- try {
292
- results = await this.getLoader(loader, params).loadMany(ids);
293
-
294
- if (Array.isArray(results) === true) {
295
- return results.reduce((acc, res) => {
296
- if (Array.isArray(res) === false) {
297
- if (res && res.message) {
298
- throw new _error.default(res.message, res.code, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, res), {}, {
299
- data: JSON.stringify(res.data || {})
300
- }));
301
- }
302
-
303
- throw new _error.default("Result from the data loader must be an array of arrays which contain requested items.", "DATA_LOADER_RESULTS_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
304
- loader
305
- }));
306
- }
307
-
308
- acc.push(...res);
309
- return acc;
310
- }, []);
311
- }
312
- } catch (ex) {
313
- throw new _error.default(ex.message || "Data loader error.", ex.code || "DATA_LOADER_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({
314
- error: ex
315
- }, params), {}, {
316
- loader,
317
- ids
318
- }));
17
+ async getRevisionById(params) {
18
+ return await this.loadMany("getRevisionById", params, params.ids);
319
19
  }
320
-
321
- throw new _error.default(`Data loader did not return array of items or empty array.`, "INVALID_DATA_LOADER_RESULT", {
322
- loader,
323
- ids,
324
- results
325
- });
326
- }
327
-
328
- clearAll(params) {
329
- for (const name of loaderNames) {
330
- const loader = this.getLoader(name, params);
331
- loader.clearAll();
20
+ async getPublishedRevisionByEntryId(params) {
21
+ const ids = params.ids.map((id)=>{
22
+ const { id: entryId } = parseIdentifier(id);
23
+ return entryId;
24
+ });
25
+ return await this.loadMany("getPublishedRevisionByEntryId", params, ids);
332
26
  }
333
- }
334
- /**
335
- * Helper to clear the cache for certain data loader.
336
- * If entry is passed then clear target key only.
337
- */
338
-
339
-
340
- clear(name, params) {
341
- const {
342
- entry
343
- } = params;
344
- const loader = this.getLoader(name, params);
345
-
346
- if (!entry) {
347
- loader.clearAll();
348
- return;
27
+ async getLatestRevisionByEntryId(params) {
28
+ const ids = params.ids.map((id)=>{
29
+ const { id: entryId } = parseIdentifier(id);
30
+ return entryId;
31
+ });
32
+ return await this.loadMany("getLatestRevisionByEntryId", params, ids);
33
+ }
34
+ getLoader(name, params) {
35
+ const { model } = params;
36
+ const cacheParams = {
37
+ tenant: model.tenant,
38
+ modelId: model.modelId,
39
+ name
40
+ };
41
+ let loader = this.cache.getDataLoader(cacheParams);
42
+ if (loader) return loader;
43
+ const factory = getDataLoaderFactory(name);
44
+ loader = factory({
45
+ entity: this.entity,
46
+ tenant: model.tenant,
47
+ modelId: model.modelId
48
+ });
49
+ this.cache.setDataLoader(cacheParams, loader);
50
+ return loader;
51
+ }
52
+ async loadMany(loader, params, ids) {
53
+ let results = [];
54
+ try {
55
+ results = await this.getLoader(loader, params).loadMany(ids);
56
+ if (true === Array.isArray(results)) return results.reduce((acc, res)=>{
57
+ if (false === Array.isArray(res)) {
58
+ if (res && res.message) throw new error(res.message, res.code, {
59
+ ...res,
60
+ data: JSON.stringify(res.data || {})
61
+ });
62
+ throw new error("Result from the data loader must be an array of arrays which contain requested items.", "DATA_LOADER_RESULTS_ERROR", {
63
+ ...params,
64
+ loader
65
+ });
66
+ }
67
+ acc.push(...res);
68
+ return acc;
69
+ }, []);
70
+ } catch (ex) {
71
+ throw new error(ex.message || "Data loader error.", ex.code || "DATA_LOADER_ERROR", {
72
+ error: ex,
73
+ ...params,
74
+ loader,
75
+ ids
76
+ });
77
+ }
78
+ throw new error("Data loader did not return array of items or empty array.", "INVALID_DATA_LOADER_RESULT", {
79
+ loader,
80
+ ids,
81
+ results
82
+ });
83
+ }
84
+ clearAll(params) {
85
+ this.cache.clearAll(params?.model);
349
86
  }
350
-
351
- loader.clear(entry.id);
352
- const {
353
- tenant,
354
- locale
355
- } = params.model;
356
- loader.clear((0, _keys.createPartitionKey)({
357
- tenant,
358
- locale,
359
- id: entry.id
360
- }));
361
- }
362
-
363
87
  }
88
+ export { DataLoadersHandler };
364
89
 
365
- exports.DataLoadersHandler = DataLoadersHandler;
90
+ //# sourceMappingURL=dataLoaders.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getAllEntryRevisions","params","entity","model","tenant","locale","DataLoader","ids","results","id","queryAllParams","partitionKey","createPartitionKey","options","beginsWith","items","queryAll","cleanupItems","map","getRevisionById","queries","reduce","collection","version","parseIdentifier","sortKey","createRevisionSortKey","keys","getBatch","PK","SK","records","batchReadAll","table","Object","values","filter","item","getPublishedRevisionByEntryId","publishedKey","createPublishedSortKey","entryId","getLatestRevisionByEntryId","latestKey","createLatestSortKey","dataLoaders","loaderNames","DataLoadersHandler","constructor","Map","loadMany","clearAllEntryRevisions","clear","clearRevisionById","clearPublishedRevisionByEntryId","clearLatestRevisionByEntryId","getLoader","name","WebinyError","loaderKey","modelId","loaders","has","set","get","loader","Array","isArray","acc","res","message","code","data","JSON","stringify","push","ex","error","clearAll","entry"],"sources":["dataLoaders.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport {\n createLatestSortKey,\n createPartitionKey,\n createPublishedSortKey,\n createRevisionSortKey\n} from \"./keys\";\nimport { cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\n\nconst getAllEntryRevisions = (params: LoaderParams) => {\n const { entity, model } = params;\n const { tenant, locale } = model;\n return new DataLoader<string, CmsEntry[]>(async (ids: readonly string[]) => {\n const results: Record<string, CmsEntry[]> = {};\n for (const id of ids) {\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n tenant,\n locale,\n id\n }),\n options: {\n beginsWith: \"REV#\"\n }\n };\n const items = await queryAll<CmsEntry>(queryAllParams);\n\n results[id] = cleanupItems(entity, items);\n }\n\n return ids.map(id => {\n return results[id] || [];\n });\n });\n};\n\nconst getRevisionById = (params: LoaderParams) => {\n const { entity, model } = params;\n const { locale, tenant } = model;\n\n return new DataLoader<string, CmsEntry[]>(async (ids: readonly string[]) => {\n const queries = ids.reduce((collection, id) => {\n const partitionKey = createPartitionKey({\n tenant,\n locale,\n id\n });\n const { version } = parseIdentifier(id);\n if (!version) {\n return collection;\n }\n const sortKey = createRevisionSortKey({\n version\n });\n const keys = `${partitionKey}__${sortKey}`;\n if (collection[keys]) {\n return collection;\n }\n\n collection[keys] = entity.getBatch({\n PK: partitionKey,\n SK: sortKey\n });\n\n return collection;\n /**\n * We use any because there is no type for the return type.\n */\n }, {} as Record<string, any>);\n\n const records = await batchReadAll<CmsEntry>({\n table: entity.table,\n items: Object.values(queries)\n });\n const items = cleanupItems(entity, records);\n\n return ids.map(id => {\n return items.filter(item => {\n return id === item.id;\n });\n });\n });\n};\n\nconst getPublishedRevisionByEntryId = (params: LoaderParams) => {\n const { entity, model } = params;\n const { locale, tenant } = model;\n\n const publishedKey = createPublishedSortKey();\n\n return new DataLoader<string, CmsEntry[]>(async (ids: readonly string[]) => {\n const queries = ids.reduce((collection, id) => {\n const partitionKey = createPartitionKey({\n tenant,\n locale,\n id\n });\n if (collection[partitionKey]) {\n return collection;\n }\n collection[partitionKey] = entity.getBatch({\n PK: partitionKey,\n SK: publishedKey\n });\n return collection;\n /**\n * We use any because there is no type for the return type.\n */\n }, {} as Record<string, any>);\n\n const records = await batchReadAll<CmsEntry>({\n table: entity.table,\n items: Object.values(queries)\n });\n const items = cleanupItems(entity, records);\n\n return ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return items.filter(item => {\n return entryId === item.entryId;\n });\n });\n });\n};\n\nconst getLatestRevisionByEntryId = (params: LoaderParams) => {\n const { entity, model } = params;\n const { locale, tenant } = model;\n\n const latestKey = createLatestSortKey();\n\n return new DataLoader<string, CmsEntry[]>(async (ids: readonly string[]) => {\n const queries = ids.reduce((collection, id) => {\n const partitionKey = createPartitionKey({\n tenant,\n locale,\n id\n });\n if (collection[partitionKey]) {\n return collection;\n }\n collection[partitionKey] = entity.getBatch({\n PK: partitionKey,\n SK: latestKey\n });\n return collection;\n /**\n * We use any because there is no type for the return type.\n */\n }, {} as Record<string, any>);\n\n const records = await batchReadAll<CmsEntry>({\n table: entity.table,\n items: Object.values(queries)\n });\n const items = cleanupItems(entity, records);\n\n return ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return items.filter(item => {\n return entryId === item.entryId;\n });\n });\n });\n};\n\nconst dataLoaders: Record<Loaders, any> = {\n getAllEntryRevisions,\n getRevisionById,\n getPublishedRevisionByEntryId,\n getLatestRevisionByEntryId\n};\n\nexport interface GetAllEntryRevisionsParams {\n ids: readonly string[];\n model: CmsModel;\n}\n\nexport interface GetRevisionByIdParams {\n ids: readonly string[];\n model: CmsModel;\n}\n\nexport interface GetPublishedRevisionByEntryIdParams {\n ids: readonly string[];\n model: CmsModel;\n}\n\nexport interface GetLatestRevisionByEntryIdParams {\n ids: readonly string[];\n model: CmsModel;\n}\n\ninterface LoaderParams {\n entity: Entity<any>;\n model: CmsModel;\n}\n\ninterface GetLoaderParams {\n model: CmsModel;\n}\n\ninterface ClearLoaderParams {\n model: CmsModel;\n entry?: CmsEntry;\n}\n\ntype Loaders =\n | \"getAllEntryRevisions\"\n | \"getRevisionById\"\n | \"getPublishedRevisionByEntryId\"\n | \"getLatestRevisionByEntryId\";\n\nconst loaderNames = Object.keys(dataLoaders) as Loaders[];\n\nexport interface DataLoadersHandlerParams {\n entity: Entity<any>;\n}\nexport class DataLoadersHandler {\n private readonly loaders: Map<string, DataLoader<any, any>> = new Map();\n private readonly entity: Entity<any>;\n\n public constructor(params: DataLoadersHandlerParams) {\n this.entity = params.entity;\n }\n\n public async getAllEntryRevisions(params: GetAllEntryRevisionsParams): Promise<CmsEntry[]> {\n return await this.loadMany(\"getAllEntryRevisions\", params, params.ids);\n }\n\n public clearAllEntryRevisions(params: ClearLoaderParams): void {\n this.clear(\"getAllEntryRevisions\", params);\n }\n\n public async getRevisionById(params: GetRevisionByIdParams): Promise<CmsEntry[]> {\n return await this.loadMany(\"getRevisionById\", params, params.ids);\n }\n\n public clearRevisionById(params: ClearLoaderParams): void {\n this.clear(\"getRevisionById\", params);\n }\n\n public async getPublishedRevisionByEntryId(\n params: GetPublishedRevisionByEntryIdParams\n ): Promise<CmsEntry[]> {\n return await this.loadMany(\"getPublishedRevisionByEntryId\", params, params.ids);\n }\n public clearPublishedRevisionByEntryId(params: ClearLoaderParams): void {\n this.clear(\"getPublishedRevisionByEntryId\", params);\n }\n\n public async getLatestRevisionByEntryId(\n params: GetLatestRevisionByEntryIdParams\n ): Promise<CmsEntry[]> {\n return await this.loadMany(\"getLatestRevisionByEntryId\", params, params.ids);\n }\n\n public clearLatestRevisionByEntryId(params: ClearLoaderParams): void {\n this.clear(\"getLatestRevisionByEntryId\", params);\n }\n /**\n * TODO @ts-refactor\n * Maybe pass on the generics to DataLoader definition?\n */\n private getLoader(name: Loaders, params: GetLoaderParams): DataLoader<any, any> {\n if (!dataLoaders[name]) {\n throw new WebinyError(\"Unknown data loader.\", \"UNKNOWN_DATA_LOADER\", {\n name\n });\n }\n const { model } = params;\n const { tenant, locale } = model;\n const loaderKey = `${name}-${tenant}-${locale}-${model.modelId}`;\n if (!this.loaders.has(loaderKey)) {\n this.loaders.set(\n loaderKey,\n dataLoaders[name]({\n ...params,\n entity: this.entity\n })\n );\n }\n return this.loaders.get(loaderKey) as DataLoader<any, any>;\n }\n\n private async loadMany(\n loader: Loaders,\n params: GetLoaderParams,\n ids: readonly string[]\n ): Promise<CmsEntry[]> {\n let results;\n try {\n results = await this.getLoader(loader, params).loadMany(ids);\n if (Array.isArray(results) === true) {\n return results.reduce((acc, res) => {\n if (Array.isArray(res) === false) {\n if (res && res.message) {\n throw new WebinyError(res.message, res.code, {\n ...res,\n data: JSON.stringify(res.data || {})\n });\n }\n throw new WebinyError(\n \"Result from the data loader must be an array of arrays which contain requested items.\",\n \"DATA_LOADER_RESULTS_ERROR\",\n {\n ...params,\n loader\n }\n );\n }\n acc.push(...res);\n return acc;\n }, []);\n }\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Data loader error.\",\n ex.code || \"DATA_LOADER_ERROR\",\n {\n error: ex,\n ...params,\n loader,\n ids\n }\n );\n }\n throw new WebinyError(\n `Data loader did not return array of items or empty array.`,\n \"INVALID_DATA_LOADER_RESULT\",\n {\n loader,\n ids,\n results\n }\n );\n }\n\n public clearAll(params: Omit<ClearLoaderParams, \"entry\">): void {\n for (const name of loaderNames) {\n const loader = this.getLoader(name, params);\n loader.clearAll();\n }\n }\n /**\n * Helper to clear the cache for certain data loader.\n * If entry is passed then clear target key only.\n */\n private clear(name: Loaders, params: ClearLoaderParams): void {\n const { entry } = params;\n const loader = this.getLoader(name, params);\n if (!entry) {\n loader.clearAll();\n return;\n }\n loader.clear(entry.id);\n const { tenant, locale } = params.model;\n loader.clear(\n createPartitionKey({\n tenant,\n locale,\n id: entry.id\n })\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"operations/entry/dataLoaders.js","sources":["../../../src/operations/entry/dataLoaders.ts"],"sourcesContent":["import type DataLoader from \"dataloader\";\nimport WebinyError from \"@webiny/error\";\nimport type {\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport type { CacheKeyParams } from \"~/operations/entry/dataLoader/DataLoaderCache.js\";\nimport { DataLoaderCache } from \"~/operations/entry/dataLoader/DataLoaderCache.js\";\nimport type { DataLoaders } from \"~/operations/entry/dataLoader/index.js\";\nimport { getDataLoaderFactory } from \"~/operations/entry/dataLoader/index.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport type { DataLoadersHandlerInterfaceClearAllParams, IDataLoadersHandler } from \"~/types.js\";\nimport type { IEntryEntity } from \"~/definitions/types.js\";\n\ninterface DataLoaderParams {\n model: Pick<CmsModel, \"tenant\" | \"modelId\">;\n ids: readonly string[];\n}\n\ninterface GetLoaderParams {\n model: Pick<CmsModel, \"tenant\" | \"modelId\">;\n}\n\ninterface IDataLoadersHandlerParams {\n entity: IEntryEntity;\n}\n\nexport interface ClearAllParams {\n model: Pick<CmsModel, \"tenant\" | \"modelId\">;\n}\n\nexport class DataLoadersHandler implements IDataLoadersHandler {\n private readonly entity;\n private readonly cache = new DataLoaderCache();\n\n public constructor(params: IDataLoadersHandlerParams) {\n this.entity = params.entity;\n }\n\n public async getAllEntryRevisions<T extends CmsEntryValues = CmsEntryValues>(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry<T>[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany<T>(\"getAllEntryRevisions\", params, ids);\n }\n\n public async getRevisionById<T extends CmsEntryValues = CmsEntryValues>(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry<T>[]> {\n return await this.loadMany<T>(\"getRevisionById\", params, params.ids);\n }\n\n public async getPublishedRevisionByEntryId<T extends CmsEntryValues = CmsEntryValues>(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry<T>[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany<T>(\"getPublishedRevisionByEntryId\", params, ids);\n }\n\n public async getLatestRevisionByEntryId<T extends CmsEntryValues = CmsEntryValues>(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry<T>[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany<T>(\"getLatestRevisionByEntryId\", params, ids);\n }\n\n /**\n * TODO @ts-refactor\n * Maybe pass on the generics to DataLoader definition?\n */\n private getLoader(name: DataLoaders, params: GetLoaderParams): DataLoader<any, any> {\n const { model } = params;\n const cacheParams: CacheKeyParams = {\n tenant: model.tenant,\n modelId: model.modelId,\n name\n };\n let loader = this.cache.getDataLoader(cacheParams);\n if (loader) {\n return loader;\n }\n const factory = getDataLoaderFactory(name);\n loader = factory({\n entity: this.entity,\n tenant: model.tenant,\n modelId: model.modelId\n });\n this.cache.setDataLoader(cacheParams, loader);\n return loader;\n }\n\n private async loadMany<T extends CmsEntryValues = CmsEntryValues>(\n loader: DataLoaders,\n params: GetLoaderParams,\n ids: readonly string[]\n ): Promise<CmsStorageEntry<T>[]> {\n let results: CmsStorageEntry<T>[] = [];\n try {\n results = await this.getLoader(loader, params).loadMany(ids);\n if (Array.isArray(results) === true) {\n return results.reduce<CmsStorageEntry<T>[]>((acc, res) => {\n if (Array.isArray(res) === false) {\n if (res && res.message) {\n throw new WebinyError(res.message, res.code, {\n ...res,\n data: JSON.stringify(res.data || {})\n });\n }\n throw new WebinyError(\n \"Result from the data loader must be an array of arrays which contain requested items.\",\n \"DATA_LOADER_RESULTS_ERROR\",\n {\n ...params,\n loader\n }\n );\n }\n acc.push(...res);\n return acc;\n }, []);\n }\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Data loader error.\",\n ex.code || \"DATA_LOADER_ERROR\",\n {\n error: ex,\n ...params,\n loader,\n ids\n }\n );\n }\n throw new WebinyError(\n `Data loader did not return array of items or empty array.`,\n \"INVALID_DATA_LOADER_RESULT\",\n {\n loader,\n ids,\n results\n }\n );\n }\n\n public clearAll(params?: DataLoadersHandlerInterfaceClearAllParams): void {\n this.cache.clearAll(params?.model);\n }\n}\n"],"names":["DataLoadersHandler","params","DataLoaderCache","ids","id","entryId","parseIdentifier","name","model","cacheParams","loader","factory","getDataLoaderFactory","results","Array","acc","res","WebinyError","JSON","ex"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { QueryDslBoolQuery as BoolQueryConfig } from "@webiny/api-opensearch/types.js";
2
+ /**
3
+ * This function will assign a minimum_should_match for the query if conditions are met:
4
+ * * should is an array
5
+ * * it is not empty
6
+ * * minimum_should_match is not already set
7
+ *
8
+ *
9
+ * By the default we set it to 1 as we want at least one OR condition to produce results.
10
+ *
11
+ * Users can modify minimum_should_match value via the body or query modification plugins.
12
+ */
13
+ interface Params {
14
+ query: BoolQueryConfig;
15
+ value?: number;
16
+ }
17
+ export declare const assignMinimumShouldMatchToQuery: ({ query, value }: Params) => void;
18
+ export {};
@@ -0,0 +1,9 @@
1
+ const assignMinimumShouldMatchToQuery = ({ query, value = 1 })=>{
2
+ if (!Array.isArray(query.should)) return;
3
+ if (0 === query.should.length) return;
4
+ if (query.minimum_should_match) return;
5
+ query.minimum_should_match = value > 0 ? value : 1;
6
+ };
7
+ export { assignMinimumShouldMatchToQuery };
8
+
9
+ //# sourceMappingURL=assignMinimumShouldMatchToQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations/entry/elasticsearch/assignMinimumShouldMatchToQuery.js","sources":["../../../../src/operations/entry/elasticsearch/assignMinimumShouldMatchToQuery.ts"],"sourcesContent":["import type { QueryDslBoolQuery as BoolQueryConfig } from \"@webiny/api-opensearch/types.js\";\n\n/**\n * This function will assign a minimum_should_match for the query if conditions are met:\n * * should is an array\n * * it is not empty\n * * minimum_should_match is not already set\n *\n *\n * By the default we set it to 1 as we want at least one OR condition to produce results.\n *\n * Users can modify minimum_should_match value via the body or query modification plugins.\n */\ninterface Params {\n query: BoolQueryConfig;\n value?: number;\n}\nexport const assignMinimumShouldMatchToQuery = ({ query, value = 1 }: Params): void => {\n if (!Array.isArray(query.should)) {\n return;\n } else if (query.should.length === 0) {\n return;\n } else if (query.minimum_should_match) {\n return;\n }\n query.minimum_should_match = value > 0 ? value : 1;\n};\n"],"names":["assignMinimumShouldMatchToQuery","query","value","Array"],"mappings":"AAiBO,MAAMA,kCAAkC,CAAC,EAAEC,KAAK,EAAEC,QAAQ,CAAC,EAAU;IACxE,IAAI,CAACC,MAAM,OAAO,CAACF,MAAM,MAAM,GAC3B;IACG,IAAIA,AAAwB,MAAxBA,MAAM,MAAM,CAAC,MAAM,EAC1B;IACG,IAAIA,MAAM,oBAAoB,EACjC;IAEJA,MAAM,oBAAoB,GAAGC,QAAQ,IAAIA,QAAQ;AACrD"}
@@ -0,0 +1,29 @@
1
+ import type { PluginsContainer } from "@webiny/plugins";
2
+ import type { CmsEntryListParams, CmsEntryListWhere, CmsModel } from "@webiny/api-headless-cms/types/index.js";
3
+ import type { CmsEntryOpenSearchBodyModifier } from "../../../features/CmsEntryOpenSearchBodyModifier/index.js";
4
+ import type { CmsEntryOpenSearchSortModifier } from "../../../features/CmsEntryOpenSearchSortModifier/index.js";
5
+ import type { CmsEntryOpenSearchQueryModifier } from "../../../features/CmsEntryOpenSearchQueryModifier/index.js";
6
+ import type { CmsEntryOpenSearchValueSearchRegistry } from "../../../features/CmsEntryOpenSearchValueSearch/index.js";
7
+ import type { CmsEntryOpenSearchFullTextSearch } from "../../../features/CmsEntryOpenSearchFullTextSearch/index.js";
8
+ import type { PrimitiveValue, SearchBody } from "@webiny/api-opensearch/types.js";
9
+ import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/features/graphql/index.js";
10
+ import { CmsEntryOpenSearchFieldIndexRegistry } from "../../../features/CmsEntryOpenSearchFieldIndex/index.js";
11
+ import type { CmsEntryOpenSearchFilterRegistry } from "../../../features/CmsEntryOpenSearchFilter/index.js";
12
+ interface ICreateElasticsearchBodyParams {
13
+ plugins: PluginsContainer;
14
+ model: CmsModel;
15
+ fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;
16
+ fieldIndexRegistry: CmsEntryOpenSearchFieldIndexRegistry.Interface;
17
+ bodyModifiers: CmsEntryOpenSearchBodyModifier.Interface[];
18
+ sortModifiers: CmsEntryOpenSearchSortModifier.Interface[];
19
+ queryModifiers: CmsEntryOpenSearchQueryModifier.Interface[];
20
+ valueSearchRegistry: CmsEntryOpenSearchValueSearchRegistry.Interface;
21
+ fullTextSearches: CmsEntryOpenSearchFullTextSearch.Interface[];
22
+ filterRegistry: CmsEntryOpenSearchFilterRegistry.Interface;
23
+ params: Omit<CmsEntryListParams, "where" | "after"> & {
24
+ where: CmsEntryListWhere;
25
+ after?: PrimitiveValue[];
26
+ };
27
+ }
28
+ export declare const createElasticsearchBody: ({ plugins, model, params, fieldRegistry, fieldIndexRegistry, bodyModifiers, sortModifiers, queryModifiers, valueSearchRegistry, fullTextSearches, filterRegistry }: ICreateElasticsearchBodyParams) => SearchBody;
29
+ export {};