@webiny/api-headless-cms 5.34.8 → 5.35.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/context.js +47 -68
  2. package/context.js.map +1 -1
  3. package/crud/contentEntry/afterDelete.js +0 -5
  4. package/crud/contentEntry/afterDelete.js.map +1 -1
  5. package/crud/contentEntry/beforeCreate.js +0 -3
  6. package/crud/contentEntry/beforeCreate.js.map +1 -1
  7. package/crud/contentEntry/beforeUpdate.js +0 -3
  8. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  9. package/crud/contentEntry/entryDataValidation.js +1 -40
  10. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  11. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  12. package/crud/contentEntry/markLockedFields.js +5 -26
  13. package/crud/contentEntry/markLockedFields.js.map +1 -1
  14. package/crud/contentEntry/referenceFieldsMapping.js +39 -66
  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.d.ts +5 -2
  19. package/crud/contentEntry.crud.js +859 -941
  20. package/crud/contentEntry.crud.js.map +1 -1
  21. package/crud/contentModel/afterCreate.js +0 -2
  22. package/crud/contentModel/afterCreate.js.map +1 -1
  23. package/crud/contentModel/afterCreateFrom.js +0 -2
  24. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  25. package/crud/contentModel/afterDelete.js +0 -2
  26. package/crud/contentModel/afterDelete.js.map +1 -1
  27. package/crud/contentModel/afterUpdate.js +0 -2
  28. package/crud/contentModel/afterUpdate.js.map +1 -1
  29. package/crud/contentModel/beforeCreate.js +39 -105
  30. package/crud/contentModel/beforeCreate.js.map +1 -1
  31. package/crud/contentModel/beforeDelete.d.ts +1 -1
  32. package/crud/contentModel/beforeDelete.js +1 -15
  33. package/crud/contentModel/beforeDelete.js.map +1 -1
  34. package/crud/contentModel/beforeUpdate.js +31 -8
  35. package/crud/contentModel/beforeUpdate.js.map +1 -1
  36. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  37. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  38. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  39. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  40. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  41. package/crud/contentModel/createFieldStorageId.js +0 -3
  42. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  43. package/crud/contentModel/defaultFields.d.ts +5 -0
  44. package/crud/contentModel/defaultFields.js +58 -0
  45. package/crud/contentModel/defaultFields.js.map +1 -0
  46. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  47. package/crud/contentModel/fields/descriptionField.js +42 -0
  48. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  49. package/crud/contentModel/fields/imageField.d.ts +2 -0
  50. package/crud/contentModel/fields/imageField.js +46 -0
  51. package/crud/contentModel/fields/imageField.js.map +1 -0
  52. package/crud/contentModel/fields/titleField.d.ts +2 -0
  53. package/crud/contentModel/fields/titleField.js +58 -0
  54. package/crud/contentModel/fields/titleField.js.map +1 -0
  55. package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
  56. package/crud/contentModel/validate/endingAllowed.js +26 -0
  57. package/crud/contentModel/validate/endingAllowed.js.map +1 -0
  58. package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
  59. package/crud/contentModel/validate/isModelEndingAllowed.js +24 -0
  60. package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
  61. package/crud/contentModel/validate/modelId.d.ts +11 -0
  62. package/crud/contentModel/validate/modelId.js +36 -0
  63. package/crud/contentModel/validate/modelId.js.map +1 -0
  64. package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
  65. package/crud/contentModel/validate/pluralApiName.js +24 -0
  66. package/crud/contentModel/validate/pluralApiName.js.map +1 -0
  67. package/crud/contentModel/validate/singularApiName.d.ts +7 -0
  68. package/crud/contentModel/validate/singularApiName.js +24 -0
  69. package/crud/contentModel/validate/singularApiName.js.map +1 -0
  70. package/crud/contentModel/validateLayout.js +0 -8
  71. package/crud/contentModel/validateLayout.js.map +1 -1
  72. package/crud/contentModel/validateModel.d.ts +1 -0
  73. package/crud/contentModel/validateModel.js +0 -8
  74. package/crud/contentModel/validateModel.js.map +1 -1
  75. package/crud/contentModel/validateModelFields.d.ts +2 -1
  76. package/crud/contentModel/validateModelFields.js +25 -133
  77. package/crud/contentModel/validateModelFields.js.map +1 -1
  78. package/crud/contentModel/validation.d.ts +551 -0
  79. package/crud/contentModel/validation.js +145 -0
  80. package/crud/contentModel/validation.js.map +1 -0
  81. package/crud/contentModel.crud.js +354 -373
  82. package/crud/contentModel.crud.js.map +1 -1
  83. package/crud/contentModelGroup/beforeCreate.js +0 -12
  84. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  85. package/crud/contentModelGroup/beforeDelete.js +0 -8
  86. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  87. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  88. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  89. package/crud/contentModelGroup/validation.d.ts +30 -0
  90. package/crud/contentModelGroup/validation.js +34 -0
  91. package/crud/contentModelGroup/validation.js.map +1 -0
  92. package/crud/contentModelGroup.crud.js +177 -221
  93. package/crud/contentModelGroup.crud.js.map +1 -1
  94. package/crud/settings.crud.d.ts +1 -1
  95. package/crud/settings.crud.js +5 -22
  96. package/crud/settings.crud.js.map +1 -1
  97. package/crud/system.crud.js +1 -96
  98. package/crud/system.crud.js.map +1 -1
  99. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  100. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  101. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +0 -36
  102. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  103. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
  104. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  105. package/fieldConverters/index.js +0 -5
  106. package/fieldConverters/index.js.map +1 -1
  107. package/graphql/buildSchemaPlugins.d.ts +2 -2
  108. package/graphql/buildSchemaPlugins.js +4 -9
  109. package/graphql/buildSchemaPlugins.js.map +1 -1
  110. package/graphql/checkEndpointAccess.d.ts +2 -0
  111. package/graphql/checkEndpointAccess.js +18 -0
  112. package/graphql/checkEndpointAccess.js.map +1 -0
  113. package/graphql/createExecutableSchema.d.ts +2 -3
  114. package/graphql/createExecutableSchema.js +2 -6
  115. package/graphql/createExecutableSchema.js.map +1 -1
  116. package/graphql/createRequestBody.d.ts +2 -0
  117. package/graphql/createRequestBody.js +14 -0
  118. package/graphql/createRequestBody.js.map +1 -0
  119. package/graphql/formatErrorPayload.d.ts +1 -0
  120. package/graphql/formatErrorPayload.js +25 -0
  121. package/graphql/formatErrorPayload.js.map +1 -0
  122. package/graphql/generateSchema.js +2 -9
  123. package/graphql/generateSchema.js.map +1 -1
  124. package/graphql/getSchema.d.ts +17 -0
  125. package/graphql/getSchema.js +102 -0
  126. package/graphql/getSchema.js.map +1 -0
  127. package/graphql/graphQLHandlerFactory.js +6 -173
  128. package/graphql/graphQLHandlerFactory.js.map +1 -1
  129. package/graphql/handleRequest.d.ts +11 -0
  130. package/graphql/handleRequest.js +81 -0
  131. package/graphql/handleRequest.js.map +1 -0
  132. package/graphql/index.d.ts +1 -1
  133. package/graphql/index.js +0 -5
  134. package/graphql/index.js.map +1 -1
  135. package/graphql/schema/baseContentSchema.d.ts +2 -2
  136. package/graphql/schema/baseContentSchema.js +5 -19
  137. package/graphql/schema/baseContentSchema.js.map +1 -1
  138. package/graphql/schema/baseSchema.d.ts +1 -1
  139. package/graphql/schema/baseSchema.js +5 -10
  140. package/graphql/schema/baseSchema.js.map +1 -1
  141. package/graphql/schema/contentEntries.d.ts +2 -2
  142. package/graphql/schema/contentEntries.js +98 -100
  143. package/graphql/schema/contentEntries.js.map +1 -1
  144. package/graphql/schema/contentModelGroups.d.ts +2 -2
  145. package/graphql/schema/contentModelGroups.js +12 -29
  146. package/graphql/schema/contentModelGroups.js.map +1 -1
  147. package/graphql/schema/contentModels.d.ts +2 -2
  148. package/graphql/schema/contentModels.js +28 -31
  149. package/graphql/schema/contentModels.js.map +1 -1
  150. package/graphql/schema/createFieldResolvers.js +7 -29
  151. package/graphql/schema/createFieldResolvers.js.map +1 -1
  152. package/graphql/schema/createManageResolvers.d.ts +1 -1
  153. package/graphql/schema/createManageResolvers.js +33 -43
  154. package/graphql/schema/createManageResolvers.js.map +1 -1
  155. package/graphql/schema/createManageSDL.d.ts +1 -0
  156. package/graphql/schema/createManageSDL.js +56 -63
  157. package/graphql/schema/createManageSDL.js.map +1 -1
  158. package/graphql/schema/createPreviewResolvers.js +3 -17
  159. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  160. package/graphql/schema/createReadResolvers.js +4 -18
  161. package/graphql/schema/createReadResolvers.js.map +1 -1
  162. package/graphql/schema/createReadSDL.d.ts +1 -0
  163. package/graphql/schema/createReadSDL.js +24 -32
  164. package/graphql/schema/createReadSDL.js.map +1 -1
  165. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  166. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
  167. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  168. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  169. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  170. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  171. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  172. package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
  173. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  174. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  175. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  176. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  177. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  178. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  179. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  180. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  181. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  182. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  183. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  184. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  185. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  186. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  187. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  188. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  189. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  190. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  191. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  192. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  193. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  194. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  195. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  196. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  197. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  198. package/graphql/schema/schemaPlugins.d.ts +2 -2
  199. package/graphql/schema/schemaPlugins.js +21 -30
  200. package/graphql/schema/schemaPlugins.js.map +1 -1
  201. package/graphql/system.js +55 -87
  202. package/graphql/system.js.map +1 -1
  203. package/graphqlFields/boolean.js +0 -12
  204. package/graphqlFields/boolean.js.map +1 -1
  205. package/graphqlFields/datetime.js +0 -17
  206. package/graphqlFields/datetime.js.map +1 -1
  207. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +1 -1
  208. package/graphqlFields/dynamicZone/dynamicZoneField.js +57 -48
  209. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  210. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +2 -18
  211. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
  212. package/graphqlFields/dynamicZone/index.js +0 -2
  213. package/graphqlFields/dynamicZone/index.js.map +1 -1
  214. package/graphqlFields/file.js +0 -8
  215. package/graphqlFields/file.js.map +1 -1
  216. package/graphqlFields/helpers.js +0 -10
  217. package/graphqlFields/helpers.js.map +1 -1
  218. package/graphqlFields/index.js +0 -12
  219. package/graphqlFields/index.js.map +1 -1
  220. package/graphqlFields/longText.js +0 -10
  221. package/graphqlFields/longText.js.map +1 -1
  222. package/graphqlFields/number.js +0 -12
  223. package/graphqlFields/number.js.map +1 -1
  224. package/graphqlFields/object.js +21 -38
  225. package/graphqlFields/object.js.map +1 -1
  226. package/graphqlFields/ref.js +59 -65
  227. package/graphqlFields/ref.js.map +1 -1
  228. package/graphqlFields/richText.js +0 -9
  229. package/graphqlFields/richText.js.map +1 -1
  230. package/graphqlFields/text.js +0 -11
  231. package/graphqlFields/text.js.map +1 -1
  232. package/index.d.ts +4 -2
  233. package/index.js +26 -22
  234. package/index.js.map +1 -1
  235. package/modelManager/DefaultCmsModelManager.js +0 -16
  236. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  237. package/modelManager/index.js +0 -4
  238. package/modelManager/index.js.map +1 -1
  239. package/package.json +26 -28
  240. package/parameters/context.js +0 -4
  241. package/parameters/context.js.map +1 -1
  242. package/parameters/header.js +0 -11
  243. package/parameters/header.js.map +1 -1
  244. package/parameters/index.js +0 -8
  245. package/parameters/index.js.map +1 -1
  246. package/parameters/manual.js +1 -8
  247. package/parameters/manual.js.map +1 -1
  248. package/parameters/path.js +0 -11
  249. package/parameters/path.js.map +1 -1
  250. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  251. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  252. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  253. package/plugins/CmsGraphQLSchemaSorterPlugin.js +0 -10
  254. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -1
  255. package/plugins/CmsGroupPlugin.js +0 -8
  256. package/plugins/CmsGroupPlugin.js.map +1 -1
  257. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  258. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  259. package/plugins/CmsModelPlugin.d.ts +21 -3
  260. package/plugins/CmsModelPlugin.js +30 -40
  261. package/plugins/CmsModelPlugin.js.map +1 -1
  262. package/plugins/CmsParametersPlugin.js +0 -7
  263. package/plugins/CmsParametersPlugin.js.map +1 -1
  264. package/plugins/StorageOperationsCmsModelPlugin.d.ts +23 -0
  265. package/plugins/StorageOperationsCmsModelPlugin.js +42 -0
  266. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -0
  267. package/plugins/StorageTransformPlugin.js +0 -9
  268. package/plugins/StorageTransformPlugin.js.map +1 -1
  269. package/plugins/index.d.ts +2 -0
  270. package/plugins/index.js +22 -12
  271. package/plugins/index.js.map +1 -1
  272. package/storage/default.js +0 -3
  273. package/storage/default.js.map +1 -1
  274. package/storage/object.js +0 -19
  275. package/storage/object.js.map +1 -1
  276. package/types.d.ts +173 -79
  277. package/types.js +23 -73
  278. package/types.js.map +1 -1
  279. package/utils/access.js +11 -25
  280. package/utils/access.js.map +1 -1
  281. package/utils/converters/Converter.js +0 -13
  282. package/utils/converters/Converter.js.map +1 -1
  283. package/utils/converters/ConverterCollection.js +9 -33
  284. package/utils/converters/ConverterCollection.js.map +1 -1
  285. package/utils/converters/valueKeyStorageConverter.d.ts +1 -5
  286. package/utils/converters/valueKeyStorageConverter.js +21 -44
  287. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  288. package/utils/createTypeFromFields.d.ts +1 -0
  289. package/utils/createTypeFromFields.js +11 -20
  290. package/utils/createTypeFromFields.js.map +1 -1
  291. package/utils/createTypeName.d.ts +0 -2
  292. package/utils/createTypeName.js +2 -19
  293. package/utils/createTypeName.js.map +1 -1
  294. package/utils/entryStorage.js +10 -26
  295. package/utils/entryStorage.js.map +1 -1
  296. package/utils/filterAsync.js +0 -5
  297. package/utils/filterAsync.js.map +1 -1
  298. package/utils/getBaseFieldType.js +0 -2
  299. package/utils/getBaseFieldType.js.map +1 -1
  300. package/utils/getEntryDescription.d.ts +2 -0
  301. package/utils/getEntryDescription.js +17 -0
  302. package/utils/getEntryDescription.js.map +1 -0
  303. package/utils/getEntryImage.d.ts +2 -0
  304. package/utils/getEntryImage.js +17 -0
  305. package/utils/getEntryImage.js.map +1 -0
  306. package/utils/getEntryTitle.js +0 -9
  307. package/utils/getEntryTitle.js.map +1 -1
  308. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  309. package/utils/getSchemaFromFieldPlugins.js +23 -19
  310. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  311. package/utils/incrementEntryIdVersion.d.ts +5 -0
  312. package/utils/incrementEntryIdVersion.js +29 -0
  313. package/utils/incrementEntryIdVersion.js.map +1 -0
  314. package/utils/ownership.d.ts +3 -3
  315. package/utils/ownership.js +0 -8
  316. package/utils/ownership.js.map +1 -1
  317. package/utils/permissions.js +8 -23
  318. package/utils/permissions.js.map +1 -1
  319. package/utils/renderFields.d.ts +2 -1
  320. package/utils/renderFields.js +8 -10
  321. package/utils/renderFields.js.map +1 -1
  322. package/utils/renderGetFilterFields.js +0 -13
  323. package/utils/renderGetFilterFields.js.map +1 -1
  324. package/utils/renderInputFields.d.ts +2 -1
  325. package/utils/renderInputFields.js +4 -9
  326. package/utils/renderInputFields.js.map +1 -1
  327. package/utils/renderListFilterFields.js +1 -10
  328. package/utils/renderListFilterFields.js.map +1 -1
  329. package/utils/renderSortEnum.js +0 -9
  330. package/utils/renderSortEnum.js.map +1 -1
  331. package/utils/toSlug.js +0 -4
  332. package/utils/toSlug.js.map +1 -1
  333. package/validators/dateGte.js +0 -7
  334. package/validators/dateGte.js.map +1 -1
  335. package/validators/dateLte.js +0 -7
  336. package/validators/dateLte.js.map +1 -1
  337. package/validators/dynamicZone.js +0 -4
  338. package/validators/dynamicZone.js.map +1 -1
  339. package/validators/gte.js +0 -8
  340. package/validators/gte.js.map +1 -1
  341. package/validators/in.js +0 -8
  342. package/validators/in.js.map +1 -1
  343. package/validators/index.js +0 -16
  344. package/validators/index.js.map +1 -1
  345. package/validators/lte.js +0 -8
  346. package/validators/lte.js.map +1 -1
  347. package/validators/maxLength.js +0 -8
  348. package/validators/maxLength.js.map +1 -1
  349. package/validators/minLength.js +0 -8
  350. package/validators/minLength.js.map +1 -1
  351. package/validators/pattern.js +0 -9
  352. package/validators/pattern.js.map +1 -1
  353. package/validators/patternPlugins/email.js +0 -2
  354. package/validators/patternPlugins/email.js.map +1 -1
  355. package/validators/patternPlugins/index.js +0 -8
  356. package/validators/patternPlugins/index.js.map +1 -1
  357. package/validators/patternPlugins/lowerCase.js +0 -2
  358. package/validators/patternPlugins/lowerCase.js.map +1 -1
  359. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  360. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  361. package/validators/patternPlugins/upperCase.js +0 -2
  362. package/validators/patternPlugins/upperCase.js.map +1 -1
  363. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  364. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  365. package/validators/patternPlugins/url.js +0 -2
  366. package/validators/patternPlugins/url.js.map +1 -1
  367. package/validators/required.js +0 -5
  368. package/validators/required.js.map +1 -1
  369. package/validators/timeGte.js +0 -8
  370. package/validators/timeGte.js.map +1 -1
  371. package/validators/timeLte.js +0 -8
  372. package/validators/timeLte.js.map +1 -1
  373. package/validators/unique.js +0 -7
  374. package/validators/unique.js.map +1 -1
@@ -1,20 +1,14 @@
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.markUnlockedFields = exports.markLockedFields = 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 _CmsModelPlugin = require("../../plugins/CmsModelPlugin");
15
-
16
11
  var _getBaseFieldType = require("../../utils/getBaseFieldType");
17
-
18
12
  const markLockedFields = async params => {
19
13
  const {
20
14
  model,
@@ -23,55 +17,46 @@ const markLockedFields = async params => {
23
17
  /**
24
18
  * If the model is registered via a plugin, we don't need do process anything.
25
19
  */
26
-
27
20
  const plugins = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type);
28
-
29
21
  if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {
30
22
  return;
31
23
  }
32
-
33
24
  const cmsLockedFieldPlugins = context.plugins.byType("cms-model-locked-field");
34
25
  const existingLockedFields = model.lockedFields || [];
35
26
  const lockedFields = [];
36
-
37
27
  for (const field of model.fields) {
38
28
  const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
39
29
  const alreadyLocked = existingLockedFields.some(lockedField => lockedField.fieldId === field.storageId);
40
-
41
30
  if (alreadyLocked) {
42
31
  continue;
43
32
  }
44
-
45
33
  let lockedFieldData = {};
46
34
  const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === baseType);
47
-
48
35
  for (const plugin of lockedFieldPlugins) {
49
36
  if (typeof plugin.getLockedFieldData !== "function") {
50
37
  continue;
51
38
  }
52
-
53
39
  const data = plugin.getLockedFieldData({
54
40
  field
55
41
  });
56
42
  lockedFieldData = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, lockedFieldData), data);
57
43
  }
58
-
59
44
  lockedFields.push((0, _objectSpread2.default)({
60
45
  fieldId: field.storageId,
61
46
  multipleValues: !!field.multipleValues,
62
47
  type: baseType
63
48
  }, lockedFieldData));
64
- } // no need to update anything if no locked fields were added
65
-
66
-
49
+ }
50
+ // no need to update anything if no locked fields were added
67
51
  if (lockedFields.length === 0) {
68
52
  return;
69
53
  }
70
-
71
54
  const newLockedFields = existingLockedFields.concat(lockedFields);
72
-
73
55
  try {
74
56
  await context.cms.updateModelDirect({
57
+ /**
58
+ * At this point we know this is a CmsModel, so it is safe to cast.
59
+ */
75
60
  original: model,
76
61
  model: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
77
62
  lockedFields: newLockedFields
@@ -86,9 +71,7 @@ const markLockedFields = async params => {
86
71
  });
87
72
  }
88
73
  };
89
-
90
74
  exports.markLockedFields = markLockedFields;
91
-
92
75
  const markUnlockedFields = async params => {
93
76
  const {
94
77
  context,
@@ -97,13 +80,10 @@ const markUnlockedFields = async params => {
97
80
  /**
98
81
  * If the model is registered via a plugin, we don't need do process anything.
99
82
  */
100
-
101
83
  const plugins = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type);
102
-
103
84
  if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {
104
85
  return;
105
86
  }
106
-
107
87
  try {
108
88
  await context.cms.updateModelDirect({
109
89
  original: model,
@@ -120,5 +100,4 @@ const markUnlockedFields = async params => {
120
100
  });
121
101
  }
122
102
  };
123
-
124
103
  exports.markUnlockedFields = markUnlockedFields;
@@ -1 +1 @@
1
- {"version":3,"names":["markLockedFields","params","model","context","plugins","byType","CmsModelPlugin","type","find","plugin","contentModel","modelId","cmsLockedFieldPlugins","existingLockedFields","lockedFields","field","fields","baseType","getBaseFieldType","alreadyLocked","some","lockedField","fieldId","storageId","lockedFieldData","lockedFieldPlugins","filter","pl","fieldType","getLockedFieldData","data","push","multipleValues","length","newLockedFields","concat","cms","updateModelDirect","original","ex","WebinyError","message","code","markUnlockedFields"],"sources":["markLockedFields.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, CmsContext, CmsModelLockedFieldPlugin, LockedField } from \"~/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\ninterface MarkLockedFieldsParams {\n model: CmsModel;\n entry: CmsEntry;\n context: CmsContext;\n}\nexport const markLockedFields = async (params: MarkLockedFieldsParams): Promise<void> => {\n const { model, context } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n const cmsLockedFieldPlugins =\n context.plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n const existingLockedFields = model.lockedFields || [];\n const lockedFields: LockedField[] = [];\n for (const field of model.fields) {\n const baseType = getBaseFieldType(field);\n const alreadyLocked = existingLockedFields.some(\n lockedField => lockedField.fieldId === field.storageId\n );\n if (alreadyLocked) {\n continue;\n }\n\n let lockedFieldData = {};\n\n const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === baseType);\n for (const plugin of lockedFieldPlugins) {\n if (typeof plugin.getLockedFieldData !== \"function\") {\n continue;\n }\n const data = plugin.getLockedFieldData({\n field\n });\n lockedFieldData = { ...lockedFieldData, ...data };\n }\n\n lockedFields.push({\n fieldId: field.storageId,\n multipleValues: !!field.multipleValues,\n type: baseType,\n ...lockedFieldData\n });\n }\n // no need to update anything if no locked fields were added\n if (lockedFields.length === 0) {\n return;\n }\n\n const newLockedFields = existingLockedFields.concat(lockedFields);\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: newLockedFields\n }\n });\n model.lockedFields = newLockedFields;\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with new locked fields.`,\n \"MODEL_LOCKED_FIELDS_UPDATE_FAILED\",\n {\n message: ex.message,\n code: ex.code,\n data: ex.data\n }\n );\n }\n};\n\nexport interface MarkFieldsUnlockedParams {\n context: CmsContext;\n model: CmsModel;\n}\nexport const markUnlockedFields = async (params: MarkFieldsUnlockedParams) => {\n const { context, model } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: []\n }\n });\n model.lockedFields = [];\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with unlocked fields.`,\n \"MODEL_UNLOCKED_FIELDS_UPDATE_FAILED\",\n {\n message: ex.message,\n code: ex.code,\n data: ex.data\n }\n );\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["markLockedFields","params","model","context","plugins","byType","CmsModelPlugin","type","find","plugin","contentModel","modelId","cmsLockedFieldPlugins","existingLockedFields","lockedFields","field","fields","baseType","getBaseFieldType","alreadyLocked","some","lockedField","fieldId","storageId","lockedFieldData","lockedFieldPlugins","filter","pl","fieldType","getLockedFieldData","data","push","multipleValues","length","newLockedFields","concat","cms","updateModelDirect","original","ex","WebinyError","message","code","markUnlockedFields"],"sources":["markLockedFields.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsContext, CmsModelLockedFieldPlugin, LockedField, CmsModel } from \"~/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\ninterface MarkLockedFieldsParams {\n model: CmsModel;\n entry: CmsEntry;\n context: CmsContext;\n}\n\nexport const markLockedFields = async (params: MarkLockedFieldsParams): Promise<void> => {\n const { model, context } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n const cmsLockedFieldPlugins =\n context.plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n const existingLockedFields = model.lockedFields || [];\n const lockedFields: LockedField[] = [];\n for (const field of model.fields) {\n const baseType = getBaseFieldType(field);\n const alreadyLocked = existingLockedFields.some(\n lockedField => lockedField.fieldId === field.storageId\n );\n if (alreadyLocked) {\n continue;\n }\n\n let lockedFieldData = {};\n\n const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === baseType);\n for (const plugin of lockedFieldPlugins) {\n if (typeof plugin.getLockedFieldData !== \"function\") {\n continue;\n }\n const data = plugin.getLockedFieldData({\n field\n });\n lockedFieldData = { ...lockedFieldData, ...data };\n }\n\n lockedFields.push({\n fieldId: field.storageId,\n multipleValues: !!field.multipleValues,\n type: baseType,\n ...lockedFieldData\n });\n }\n // no need to update anything if no locked fields were added\n if (lockedFields.length === 0) {\n return;\n }\n\n const newLockedFields = existingLockedFields.concat(lockedFields);\n\n try {\n await context.cms.updateModelDirect({\n /**\n * At this point we know this is a CmsModel, so it is safe to cast.\n */\n original: model as CmsModel,\n model: {\n ...model,\n lockedFields: newLockedFields\n } as CmsModel\n });\n model.lockedFields = newLockedFields;\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with new locked fields.`,\n \"MODEL_LOCKED_FIELDS_UPDATE_FAILED\",\n {\n message: ex.message,\n code: ex.code,\n data: ex.data\n }\n );\n }\n};\n\nexport interface MarkFieldsUnlockedParams {\n context: CmsContext;\n model: CmsModel;\n}\n\nexport const markUnlockedFields = async (params: MarkFieldsUnlockedParams) => {\n const { context, model } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n try {\n await context.cms.updateModelDirect({\n original: model as CmsModel,\n model: {\n ...model,\n lockedFields: []\n } as CmsModel\n });\n model.lockedFields = [];\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with unlocked fields.`,\n \"MODEL_UNLOCKED_FIELDS_UPDATE_FAILED\",\n {\n message: ex.message,\n code: ex.code,\n data: ex.data\n }\n );\n }\n};\n"],"mappings":"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"}
@@ -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,
@@ -25,103 +18,111 @@ const buildReferenceFieldPaths = params => {
25
18
  } = params;
26
19
  const parentPaths = [...initialParentPaths];
27
20
  const isMultipleValues = Array.isArray(input);
28
- return fields.filter(field => ["object", "ref"].includes((0, _getBaseFieldType.getBaseFieldType)(field))).reduce((collection, field) => {
29
- var _field$settings2;
30
-
21
+ return fields.filter(field => ["object", "ref", "dynamicZone"].includes((0, _getBaseFieldType.getBaseFieldType)(field))).reduce((collection, field) => {
22
+ var _field$settings3;
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
  }
50
+ if (baseType === "dynamicZone") {
51
+ var _field$settings;
52
+ const templates = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.templates) || [];
53
+ for (const template of templates) {
54
+ if (field.multipleValues) {
55
+ const inputValue = _dotProp.default.get(input, `${field.fieldId}`, []);
56
+ if (Array.isArray(inputValue) === false) {
57
+ return collection;
58
+ }
59
+ for (const key in inputValue) {
60
+ const result = buildReferenceFieldPaths({
61
+ fields: template.fields,
62
+ input: inputValue[key],
63
+ parentPaths: parentPaths.concat([field.fieldId, key, template.gqlTypeName])
64
+ });
65
+ collection.push(...result);
66
+ }
67
+ continue;
68
+ }
69
+ const result = buildReferenceFieldPaths({
70
+ fields: template.fields,
71
+ input,
72
+ parentPaths: parentPaths.concat([field.fieldId, template.gqlTypeName])
73
+ });
74
+ collection.push(...result);
75
+ }
76
+ return collection;
77
+ }
78
+
66
79
  /**
67
80
  * Then we move onto the object field
68
81
  */
69
-
70
-
71
82
  const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(".")}.` : "";
72
83
  /**
73
84
  * This is if received input is array. We need to map key with fieldId at this point.
74
85
  */
75
-
76
86
  if (isMultipleValues) {
77
87
  for (const key in input) {
78
88
  const path = `${parentPathsValue}${key}.${field.fieldId}`;
79
89
  collection.push(path);
80
90
  }
81
-
82
91
  return collection;
83
92
  }
84
-
85
93
  const objFieldPath = `${field.fieldId}`;
86
-
87
94
  const objFieldInputValue = _dotProp.default.get(input, objFieldPath, []);
95
+
88
96
  /**
89
97
  * If field is multiple values one, we need to go through the input and use the existing keys.
90
98
  */
91
-
92
-
93
99
  if (field.multipleValues) {
94
100
  if (Array.isArray(objFieldInputValue) === false) {
95
101
  return collection;
96
102
  }
97
-
98
103
  for (const key in objFieldInputValue) {
99
- var _field$settings;
100
-
104
+ var _field$settings2;
101
105
  const result = buildReferenceFieldPaths({
102
- fields: ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [],
106
+ fields: ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.fields) || [],
103
107
  input: objFieldInputValue[key],
104
108
  parentPaths: parentPaths.concat([field.fieldId, key])
105
109
  });
106
110
  collection.push(...result);
107
111
  }
108
-
109
112
  return collection;
110
113
  }
114
+
111
115
  /**
112
116
  * Single value reference field.
113
117
  */
114
-
115
-
116
118
  const results = buildReferenceFieldPaths({
117
- fields: ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.fields) || [],
119
+ fields: ((_field$settings3 = field.settings) === null || _field$settings3 === void 0 ? void 0 : _field$settings3.fields) || [],
118
120
  input: objFieldInputValue,
119
121
  parentPaths: parentPaths.concat([field.fieldId])
120
122
  });
121
123
  return collection.concat(results);
122
124
  }, []);
123
125
  };
124
-
125
126
  const getReferenceFieldValue = ref => {
126
127
  if (!ref) {
127
128
  return {
@@ -129,13 +130,11 @@ const getReferenceFieldValue = ref => {
129
130
  modelId: null
130
131
  };
131
132
  }
132
-
133
133
  return {
134
134
  id: (ref.id || ref.entryId || "").trim() || null,
135
135
  modelId: (ref.modelId || "").trim() || null
136
136
  };
137
137
  };
138
-
139
138
  const referenceFieldsMapping = async params => {
140
139
  const {
141
140
  context,
@@ -149,72 +148,56 @@ const referenceFieldsMapping = async params => {
149
148
  input,
150
149
  parentPaths: []
151
150
  });
152
-
153
151
  if (referenceFieldPaths.length === 0) {
154
152
  return output;
155
153
  }
156
-
157
154
  const referencesByModel = {};
158
155
  const pathsByReferenceId = {};
159
-
160
156
  for (const path of referenceFieldPaths) {
161
157
  const ref = _dotProp.default.get(output, path);
162
-
163
158
  const {
164
159
  id,
165
160
  modelId
166
161
  } = getReferenceFieldValue(ref);
167
-
168
162
  if (!id || !modelId) {
169
163
  continue;
170
164
  }
171
-
172
165
  if (!referencesByModel[modelId]) {
173
166
  referencesByModel[modelId] = [];
174
167
  }
175
-
176
168
  referencesByModel[modelId].push(id);
177
-
178
169
  if (!pathsByReferenceId[id]) {
179
170
  pathsByReferenceId[id] = [];
180
171
  }
181
-
182
172
  pathsByReferenceId[id].push(path);
183
173
  }
174
+
184
175
  /**
185
176
  * Again, no point in going further.
186
177
  */
187
-
188
-
189
178
  if (Object.keys(referencesByModel).length === 0) {
190
179
  return output;
191
180
  }
192
181
  /**
193
182
  * Load all models and use only those that are used in reference.
194
183
  */
195
-
196
-
197
184
  const models = (await context.cms.listModels()).filter(model => {
198
185
  const entries = referencesByModel[model.modelId];
199
-
200
186
  if (!Array.isArray(entries) || entries.length === 0) {
201
187
  return false;
202
188
  }
203
-
204
189
  return true;
205
190
  });
206
191
  /**
207
192
  * Check for any model existence, just in case.
208
193
  */
209
-
210
194
  if (models.length === 0) {
211
195
  return output;
212
196
  }
197
+
213
198
  /**
214
199
  * Load all the entries by their ID
215
200
  */
216
-
217
-
218
201
  const promises = models.map(model => {
219
202
  return context.cms.getEntriesByIds(model, referencesByModel[model.modelId]);
220
203
  });
@@ -227,16 +210,13 @@ const referenceFieldsMapping = async params => {
227
210
  modelId: entry.modelId
228
211
  };
229
212
  }
230
-
231
213
  return collection;
232
214
  }, {});
233
215
  /**
234
216
  * Verify that all referenced entries actually exist.
235
217
  */
236
-
237
218
  for (const modelId in referencesByModel) {
238
219
  const entries = referencesByModel[modelId];
239
-
240
220
  for (const id of entries) {
241
221
  if (records[id]) {
242
222
  continue;
@@ -246,7 +226,6 @@ const referenceFieldsMapping = async params => {
246
226
  model: modelId
247
227
  });
248
228
  }
249
-
250
229
  const {
251
230
  id: entryId
252
231
  } = (0, _utils.parseIdentifier)(id);
@@ -257,15 +236,13 @@ const referenceFieldsMapping = async params => {
257
236
  };
258
237
  }
259
238
  }
239
+
260
240
  /**
261
241
  * In the end, assign the entryId, id and model values to the output.
262
242
  */
263
-
264
-
265
243
  for (const id in pathsByReferenceId) {
266
244
  const entry = records[id];
267
245
  const paths = pathsByReferenceId[id];
268
-
269
246
  if (!entry) {
270
247
  if (validateEntries) {
271
248
  throw new _error.default("Missing entry in records.", "ENTRY_ERROR", {
@@ -273,10 +250,8 @@ const referenceFieldsMapping = async params => {
273
250
  paths
274
251
  });
275
252
  }
276
-
277
253
  continue;
278
254
  }
279
-
280
255
  for (const path of paths) {
281
256
  output = _dotProp.default.set(output, path, {
282
257
  id: entry.id,
@@ -285,8 +260,6 @@ const referenceFieldsMapping = async params => {
285
260
  });
286
261
  }
287
262
  }
288
-
289
263
  return output;
290
264
  };
291
-
292
265
  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","templates","settings","template","result","concat","gqlTypeName","objFieldPath","objFieldInputValue","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, CmsDynamicZoneTemplate, 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\", \"dynamicZone\"].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 if (baseType === \"dynamicZone\") {\n const templates: CmsDynamicZoneTemplate[] = field.settings?.templates || [];\n for (const template of templates) {\n if (field.multipleValues) {\n const inputValue = dotProp.get(input, `${field.fieldId}`, []);\n if (Array.isArray(inputValue) === false) {\n return collection;\n }\n\n for (const key in inputValue) {\n const result = buildReferenceFieldPaths({\n fields: template.fields,\n input: inputValue[key],\n parentPaths: parentPaths.concat([\n field.fieldId,\n key,\n template.gqlTypeName\n ])\n });\n collection.push(...result);\n }\n continue;\n }\n\n const result = buildReferenceFieldPaths({\n fields: template.fields,\n input,\n parentPaths: parentPaths.concat([field.fieldId, template.gqlTypeName])\n });\n collection.push(...result);\n }\n\n return collection;\n }\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"}
@@ -1,13 +1,16 @@
1
- import { CmsEntryContext, CmsContext, HeadlessCmsStorageOperations } from "../types";
1
+ import { CmsContext, CmsEntryContext, HeadlessCmsStorageOperations } from "../types";
2
2
  import { SecurityIdentity } from "@webiny/api-security/types";
3
3
  import { Tenant } from "@webiny/api-tenancy/types";
4
+ import { I18NLocale } from "@webiny/api-i18n/types";
4
5
  export declare const STATUS_DRAFT = "draft";
5
6
  export declare const STATUS_PUBLISHED = "published";
6
7
  export declare const STATUS_UNPUBLISHED = "unpublished";
7
- export interface CreateContentEntryCrudParams {
8
+ interface CreateContentEntryCrudParams {
8
9
  storageOperations: HeadlessCmsStorageOperations;
9
10
  context: CmsContext;
10
11
  getIdentity: () => SecurityIdentity;
11
12
  getTenant: () => Tenant;
13
+ getLocale: () => I18NLocale;
12
14
  }
13
15
  export declare const createContentEntryCrud: (params: CreateContentEntryCrudParams) => CmsEntryContext;
16
+ export {};