@strapi/content-manager 0.0.0-experimental.c23f51fc41b3ef5de081f427d07e87af93cdcb2c → 0.0.0-experimental.c2b08ee20b017fc174cccf35c56c39438b0237b0

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 (375) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/DragPreviews/RelationDragPreview.js +1 -1
  6. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  7. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +1 -1
  8. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  9. package/dist/admin/components/LeftMenu.js +34 -30
  10. package/dist/admin/components/LeftMenu.js.map +1 -1
  11. package/dist/admin/components/LeftMenu.mjs +36 -32
  12. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  13. package/dist/admin/components/Widgets.js +414 -0
  14. package/dist/admin/components/Widgets.js.map +1 -0
  15. package/dist/admin/components/Widgets.mjs +391 -0
  16. package/dist/admin/components/Widgets.mjs.map +1 -0
  17. package/dist/admin/content-manager.js.map +1 -1
  18. package/dist/admin/content-manager.mjs.map +1 -1
  19. package/dist/admin/features/DocumentRBAC.js +7 -6
  20. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  21. package/dist/admin/features/DocumentRBAC.mjs +7 -6
  22. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  23. package/dist/admin/history/components/VersionContent.js +24 -3
  24. package/dist/admin/history/components/VersionContent.js.map +1 -1
  25. package/dist/admin/history/components/VersionContent.mjs +25 -4
  26. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  27. package/dist/admin/history/components/VersionHeader.js +6 -0
  28. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  29. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  30. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  31. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  32. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  33. package/dist/admin/history/pages/History.js.map +1 -1
  34. package/dist/admin/history/pages/History.mjs.map +1 -1
  35. package/dist/admin/hooks/useDocumentActions.js +30 -6
  36. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  37. package/dist/admin/hooks/useDocumentActions.mjs +30 -6
  38. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  39. package/dist/admin/hooks/useDocumentContext.js +57 -0
  40. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  41. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  42. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  43. package/dist/admin/index.js +81 -5
  44. package/dist/admin/index.js.map +1 -1
  45. package/dist/admin/index.mjs +80 -3
  46. package/dist/admin/index.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/EditViewPage.js +102 -75
  48. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  49. package/dist/admin/pages/EditView/EditViewPage.mjs +104 -77
  50. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/DocumentActions.js +321 -112
  52. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/DocumentActions.mjs +328 -119
  54. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/DocumentStatus.js +1 -2
  56. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/DocumentStatus.mjs +1 -2
  58. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  64. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  66. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  68. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  70. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  72. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  74. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  76. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  78. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +16 -2
  80. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +17 -3
  82. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +20 -5
  84. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +21 -6
  86. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +17 -8
  88. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +17 -8
  90. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +23 -6
  92. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +26 -9
  94. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -2
  96. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -2
  98. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +622 -0
  100. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -0
  101. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +598 -0
  102. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -0
  103. package/dist/admin/pages/EditView/components/FormInputs/{Relations.js → Relations/Relations.js} +211 -79
  104. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -0
  105. package/dist/admin/pages/EditView/components/FormInputs/{Relations.mjs → Relations/Relations.mjs} +214 -82
  106. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -0
  107. package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
  108. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
  110. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  112. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  114. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  116. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  118. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  120. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  122. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormLayout.js +63 -36
  124. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormLayout.mjs +63 -36
  126. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/InputRenderer.js +29 -9
  128. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  129. package/dist/admin/pages/EditView/components/InputRenderer.mjs +12 -11
  130. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/utils/data.js +103 -0
  132. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  133. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  134. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  135. package/dist/admin/pages/ListView/ListViewPage.js +227 -132
  136. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  137. package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
  138. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  139. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  140. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  141. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  142. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  143. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  144. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  145. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  146. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  147. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  148. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  149. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  150. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  151. package/dist/admin/pages/ListView/components/TableCells/Relations.js +0 -1
  152. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  153. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +0 -1
  154. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  155. package/dist/admin/preview/components/PreviewHeader.js +4 -79
  156. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  157. package/dist/admin/preview/components/PreviewHeader.mjs +6 -80
  158. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  159. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  160. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  161. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  162. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  163. package/dist/admin/preview/pages/Preview.js +138 -72
  164. package/dist/admin/preview/pages/Preview.js.map +1 -1
  165. package/dist/admin/preview/pages/Preview.mjs +140 -74
  166. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  167. package/dist/admin/services/api.js +3 -1
  168. package/dist/admin/services/api.js.map +1 -1
  169. package/dist/admin/services/api.mjs +3 -1
  170. package/dist/admin/services/api.mjs.map +1 -1
  171. package/dist/admin/services/documents.js +48 -16
  172. package/dist/admin/services/documents.js.map +1 -1
  173. package/dist/admin/services/documents.mjs +48 -16
  174. package/dist/admin/services/documents.mjs.map +1 -1
  175. package/dist/admin/services/homepage.js +39 -0
  176. package/dist/admin/services/homepage.js.map +1 -0
  177. package/dist/admin/services/homepage.mjs +36 -0
  178. package/dist/admin/services/homepage.mjs.map +1 -0
  179. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  180. package/dist/admin/src/components/Widgets.d.ts +4 -0
  181. package/dist/admin/src/content-manager.d.ts +0 -1
  182. package/dist/admin/src/exports.d.ts +1 -0
  183. package/dist/admin/src/features/DocumentRBAC.d.ts +4 -3
  184. package/dist/admin/src/history/pages/History.d.ts +1 -1
  185. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  186. package/dist/admin/src/hooks/useDocumentActions.d.ts +2 -1
  187. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  188. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
  189. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  190. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  191. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  192. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +74 -0
  193. package/dist/admin/src/pages/EditView/components/FormInputs/{Relations.d.ts → Relations/Relations.d.ts} +9 -2
  194. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  195. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +13 -9
  196. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +7 -4
  197. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  198. package/dist/admin/src/preview/components/PreviewHeader.d.ts +1 -2
  199. package/dist/admin/src/preview/pages/Preview.d.ts +2 -3
  200. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  201. package/dist/admin/src/services/api.d.ts +1 -1
  202. package/dist/admin/src/services/components.d.ts +2 -2
  203. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  204. package/dist/admin/src/services/documents.d.ts +23 -17
  205. package/dist/admin/src/services/homepage.d.ts +9 -0
  206. package/dist/admin/src/services/init.d.ts +1 -1
  207. package/dist/admin/src/services/relations.d.ts +2 -2
  208. package/dist/admin/src/services/uid.d.ts +3 -3
  209. package/dist/admin/src/utils/validation.d.ts +1 -0
  210. package/dist/admin/translations/en.json.js +12 -1
  211. package/dist/admin/translations/en.json.js.map +1 -1
  212. package/dist/admin/translations/en.json.mjs +12 -1
  213. package/dist/admin/translations/en.json.mjs.map +1 -1
  214. package/dist/admin/translations/es.json.js +5 -2
  215. package/dist/admin/translations/es.json.js.map +1 -1
  216. package/dist/admin/translations/es.json.mjs +5 -2
  217. package/dist/admin/translations/es.json.mjs.map +1 -1
  218. package/dist/admin/translations/fr.json.js +10 -2
  219. package/dist/admin/translations/fr.json.js.map +1 -1
  220. package/dist/admin/translations/fr.json.mjs +10 -2
  221. package/dist/admin/translations/fr.json.mjs.map +1 -1
  222. package/dist/admin/translations/ru.json.js +235 -226
  223. package/dist/admin/translations/ru.json.js.map +1 -1
  224. package/dist/admin/translations/ru.json.mjs +230 -226
  225. package/dist/admin/translations/ru.json.mjs.map +1 -1
  226. package/dist/admin/translations/zh-Hans.json.js +2 -1
  227. package/dist/admin/translations/zh-Hans.json.js.map +1 -1
  228. package/dist/admin/translations/zh-Hans.json.mjs +2 -1
  229. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
  230. package/dist/admin/utils/validation.js +17 -6
  231. package/dist/admin/utils/validation.js.map +1 -1
  232. package/dist/admin/utils/validation.mjs +17 -6
  233. package/dist/admin/utils/validation.mjs.map +1 -1
  234. package/dist/server/controllers/content-types.js +11 -1
  235. package/dist/server/controllers/content-types.js.map +1 -1
  236. package/dist/server/controllers/content-types.mjs +11 -1
  237. package/dist/server/controllers/content-types.mjs.map +1 -1
  238. package/dist/server/controllers/index.js +3 -1
  239. package/dist/server/controllers/index.js.map +1 -1
  240. package/dist/server/controllers/index.mjs +3 -1
  241. package/dist/server/controllers/index.mjs.map +1 -1
  242. package/dist/server/controllers/relations.js +2 -2
  243. package/dist/server/controllers/relations.js.map +1 -1
  244. package/dist/server/controllers/relations.mjs +2 -2
  245. package/dist/server/controllers/relations.mjs.map +1 -1
  246. package/dist/server/controllers/validation/index.js +14 -2
  247. package/dist/server/controllers/validation/index.js.map +1 -1
  248. package/dist/server/controllers/validation/index.mjs +14 -2
  249. package/dist/server/controllers/validation/index.mjs.map +1 -1
  250. package/dist/server/history/services/lifecycles.js +3 -0
  251. package/dist/server/history/services/lifecycles.js.map +1 -1
  252. package/dist/server/history/services/lifecycles.mjs +3 -0
  253. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  254. package/dist/server/homepage/controllers/homepage.js +62 -0
  255. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  256. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  257. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  258. package/dist/server/homepage/controllers/index.js +10 -0
  259. package/dist/server/homepage/controllers/index.js.map +1 -0
  260. package/dist/server/homepage/controllers/index.mjs +8 -0
  261. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  262. package/dist/server/homepage/index.js +14 -0
  263. package/dist/server/homepage/index.js.map +1 -0
  264. package/dist/server/homepage/index.mjs +12 -0
  265. package/dist/server/homepage/index.mjs.map +1 -0
  266. package/dist/server/homepage/routes/homepage.js +36 -0
  267. package/dist/server/homepage/routes/homepage.js.map +1 -0
  268. package/dist/server/homepage/routes/homepage.mjs +34 -0
  269. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  270. package/dist/server/homepage/routes/index.js +13 -0
  271. package/dist/server/homepage/routes/index.js.map +1 -0
  272. package/dist/server/homepage/routes/index.mjs +11 -0
  273. package/dist/server/homepage/routes/index.mjs.map +1 -0
  274. package/dist/server/homepage/services/homepage.js +197 -0
  275. package/dist/server/homepage/services/homepage.js.map +1 -0
  276. package/dist/server/homepage/services/homepage.mjs +195 -0
  277. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  278. package/dist/server/homepage/services/index.js +10 -0
  279. package/dist/server/homepage/services/index.js.map +1 -0
  280. package/dist/server/homepage/services/index.mjs +8 -0
  281. package/dist/server/homepage/services/index.mjs.map +1 -0
  282. package/dist/server/preview/services/preview-config.js +5 -1
  283. package/dist/server/preview/services/preview-config.js.map +1 -1
  284. package/dist/server/preview/services/preview-config.mjs +5 -1
  285. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  286. package/dist/server/preview/services/preview.js +4 -1
  287. package/dist/server/preview/services/preview.js.map +1 -1
  288. package/dist/server/preview/services/preview.mjs +4 -1
  289. package/dist/server/preview/services/preview.mjs.map +1 -1
  290. package/dist/server/routes/index.js +3 -1
  291. package/dist/server/routes/index.js.map +1 -1
  292. package/dist/server/routes/index.mjs +3 -1
  293. package/dist/server/routes/index.mjs.map +1 -1
  294. package/dist/server/services/data-mapper.js +4 -1
  295. package/dist/server/services/data-mapper.js.map +1 -1
  296. package/dist/server/services/data-mapper.mjs +4 -1
  297. package/dist/server/services/data-mapper.mjs.map +1 -1
  298. package/dist/server/services/document-manager.js +8 -1
  299. package/dist/server/services/document-manager.js.map +1 -1
  300. package/dist/server/services/document-manager.mjs +8 -1
  301. package/dist/server/services/document-manager.mjs.map +1 -1
  302. package/dist/server/services/document-metadata.js +3 -1
  303. package/dist/server/services/document-metadata.js.map +1 -1
  304. package/dist/server/services/document-metadata.mjs +3 -1
  305. package/dist/server/services/document-metadata.mjs.map +1 -1
  306. package/dist/server/services/index.js +3 -1
  307. package/dist/server/services/index.js.map +1 -1
  308. package/dist/server/services/index.mjs +3 -1
  309. package/dist/server/services/index.mjs.map +1 -1
  310. package/dist/server/services/utils/configuration/attributes.js +1 -1
  311. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  312. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  313. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  314. package/dist/server/services/utils/configuration/layouts.js +1 -1
  315. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  316. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  317. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  318. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  319. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  320. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  321. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  322. package/dist/server/services/utils/populate.js +11 -0
  323. package/dist/server/services/utils/populate.js.map +1 -1
  324. package/dist/server/services/utils/populate.mjs +11 -0
  325. package/dist/server/services/utils/populate.mjs.map +1 -1
  326. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  327. package/dist/server/src/controllers/index.d.ts.map +1 -1
  328. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  329. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  330. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  331. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  332. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  333. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  334. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  335. package/dist/server/src/homepage/index.d.ts +23 -0
  336. package/dist/server/src/homepage/index.d.ts.map +1 -0
  337. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  338. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  339. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  340. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  341. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  342. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  343. package/dist/server/src/homepage/services/index.d.ts +16 -0
  344. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  345. package/dist/server/src/index.d.ts +15 -0
  346. package/dist/server/src/index.d.ts.map +1 -1
  347. package/dist/server/src/preview/services/index.d.ts +1 -0
  348. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  349. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  350. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  351. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  352. package/dist/server/src/preview/utils.d.ts +1 -0
  353. package/dist/server/src/preview/utils.d.ts.map +1 -1
  354. package/dist/server/src/routes/index.d.ts +1 -0
  355. package/dist/server/src/routes/index.d.ts.map +1 -1
  356. package/dist/server/src/services/data-mapper.d.ts +1 -0
  357. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  358. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  359. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  360. package/dist/server/src/services/index.d.ts +14 -0
  361. package/dist/server/src/services/index.d.ts.map +1 -1
  362. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  363. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  364. package/dist/shared/contracts/collection-types.d.ts +0 -1
  365. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  366. package/dist/shared/contracts/homepage.d.ts +38 -0
  367. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  368. package/package.json +13 -10
  369. package/dist/admin/pages/EditView/components/FormInputs/Relations.js.map +0 -1
  370. package/dist/admin/pages/EditView/components/FormInputs/Relations.mjs.map +0 -1
  371. package/dist/admin/preview/components/PreviewContent.js +0 -25
  372. package/dist/admin/preview/components/PreviewContent.js.map +0 -1
  373. package/dist/admin/preview/components/PreviewContent.mjs +0 -23
  374. package/dist/admin/preview/components/PreviewContent.mjs.map +0 -1
  375. package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -2
@@ -0,0 +1,195 @@
1
+ import { contentTypes } from '@strapi/utils';
2
+
3
+ const createHomepageService = ({ strapi })=>{
4
+ const MAX_DOCUMENTS = 4;
5
+ const metadataService = strapi.plugin('content-manager').service('document-metadata');
6
+ const permissionService = strapi.admin.services.permission;
7
+ const getConfiguration = async (contentTypeUids)=>{
8
+ /**
9
+ * Don't use the strapi.store util because we need to make
10
+ * more precise queries than exact key matches, in order to make as few queries as possible.
11
+ */ const coreStore = strapi.db.query('strapi::core-store');
12
+ const rawConfigurations = await coreStore.findMany({
13
+ where: {
14
+ key: {
15
+ $in: contentTypeUids.map((contentType)=>`plugin_content_manager_configuration_content_types::${contentType}`)
16
+ }
17
+ }
18
+ });
19
+ return rawConfigurations.map((rawConfiguration)=>{
20
+ return JSON.parse(rawConfiguration.value);
21
+ });
22
+ };
23
+ const getPermittedContentTypes = async ()=>{
24
+ const readPermissions = await permissionService.findMany({
25
+ where: {
26
+ role: {
27
+ users: {
28
+ id: strapi.requestContext.get()?.state?.user.id
29
+ }
30
+ },
31
+ action: 'plugin::content-manager.explorer.read'
32
+ }
33
+ });
34
+ return readPermissions.map((permission)=>permission.subject).filter(Boolean);
35
+ };
36
+ const getContentTypesMeta = (allowedContentTypeUids, configurations)=>{
37
+ return allowedContentTypeUids.map((uid)=>{
38
+ const configuration = configurations.find((config)=>config.uid === uid);
39
+ const contentType = strapi.contentType(uid);
40
+ const fields = [
41
+ 'documentId',
42
+ 'updatedAt'
43
+ ];
44
+ // Add fields required to get the status if D&P is enabled
45
+ const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);
46
+ if (hasDraftAndPublish) {
47
+ fields.push('publishedAt');
48
+ }
49
+ // Only add the main field if it's defined
50
+ if (configuration?.settings.mainField) {
51
+ fields.push(configuration.settings.mainField);
52
+ }
53
+ // Only add locale if it's localized
54
+ const isLocalized = contentType.pluginOptions?.i18n?.localized;
55
+ if (isLocalized) {
56
+ fields.push('locale');
57
+ }
58
+ return {
59
+ fields,
60
+ mainField: configuration.settings.mainField,
61
+ contentType,
62
+ hasDraftAndPublish,
63
+ uid
64
+ };
65
+ });
66
+ };
67
+ const formatDocuments = (documents, meta, populate)=>{
68
+ return documents.map((document)=>{
69
+ const additionalFields = populate?.reduce((acc, key)=>{
70
+ acc[key] = document[key];
71
+ return acc;
72
+ }, {}) || {};
73
+ return {
74
+ documentId: document.documentId,
75
+ locale: document.locale ?? null,
76
+ updatedAt: new Date(document.updatedAt),
77
+ title: document[meta.mainField ?? 'documentId'],
78
+ publishedAt: meta.hasDraftAndPublish && document.publishedAt ? new Date(document.publishedAt) : null,
79
+ contentTypeUid: meta.uid,
80
+ contentTypeDisplayName: meta.contentType.info.displayName,
81
+ kind: meta.contentType.kind,
82
+ ...additionalFields
83
+ };
84
+ });
85
+ };
86
+ const permissionCheckerService = strapi.plugin('content-manager').service('permission-checker');
87
+ const getPermissionChecker = (uid)=>permissionCheckerService.create({
88
+ userAbility: strapi.requestContext.get()?.state.userAbility,
89
+ model: uid
90
+ });
91
+ return {
92
+ async addStatusToDocuments (documents) {
93
+ return Promise.all(documents.map(async (recentDocument)=>{
94
+ const hasDraftAndPublish = contentTypes.hasDraftAndPublish(strapi.contentType(recentDocument.contentTypeUid));
95
+ /**
96
+ * Tries to query the other version of the document if draft and publish is enabled,
97
+ * so that we know when to give the "modified" status.
98
+ */ const { availableStatus } = await metadataService.getMetadata(recentDocument.contentTypeUid, recentDocument, {
99
+ availableStatus: hasDraftAndPublish,
100
+ availableLocales: false
101
+ });
102
+ const status = metadataService.getStatus(recentDocument, availableStatus);
103
+ return {
104
+ ...recentDocument,
105
+ status: hasDraftAndPublish ? status : undefined
106
+ };
107
+ }));
108
+ },
109
+ async queryLastDocuments (additionalQueryParams, draftAndPublishOnly) {
110
+ const permittedContentTypes = await getPermittedContentTypes();
111
+ const allowedContentTypeUids = draftAndPublishOnly ? permittedContentTypes.filter((uid)=>{
112
+ return contentTypes.hasDraftAndPublish(strapi.contentType(uid));
113
+ }) : permittedContentTypes;
114
+ // Fetch the configuration for each content type in a single query
115
+ const configurations = await getConfiguration(allowedContentTypeUids);
116
+ // Get the necessary metadata for the documents
117
+ const contentTypesMeta = getContentTypesMeta(allowedContentTypeUids, configurations);
118
+ const recentDocuments = await Promise.all(contentTypesMeta.map(async (meta)=>{
119
+ const permissionQuery = await getPermissionChecker(meta.uid).sanitizedQuery.read({
120
+ limit: MAX_DOCUMENTS,
121
+ fields: meta.fields,
122
+ ...additionalQueryParams
123
+ });
124
+ const docs = await strapi.documents(meta.uid).findMany(permissionQuery);
125
+ const populate = additionalQueryParams?.populate;
126
+ return formatDocuments(docs, meta, populate);
127
+ }));
128
+ return recentDocuments.flat().sort((a, b)=>{
129
+ switch(additionalQueryParams?.sort){
130
+ case 'publishedAt:desc':
131
+ if (!a.publishedAt || !b.publishedAt) return 0;
132
+ return b.publishedAt.valueOf() - a.publishedAt.valueOf();
133
+ case 'publishedAt:asc':
134
+ if (!a.publishedAt || !b.publishedAt) return 0;
135
+ return a.publishedAt.valueOf() - b.publishedAt.valueOf();
136
+ case 'updatedAt:desc':
137
+ if (!a.updatedAt || !b.updatedAt) return 0;
138
+ return b.updatedAt.valueOf() - a.updatedAt.valueOf();
139
+ case 'updatedAt:asc':
140
+ if (!a.updatedAt || !b.updatedAt) return 0;
141
+ return a.updatedAt.valueOf() - b.updatedAt.valueOf();
142
+ default:
143
+ return 0;
144
+ }
145
+ }).slice(0, MAX_DOCUMENTS);
146
+ },
147
+ async getRecentlyPublishedDocuments () {
148
+ const recentlyPublishedDocuments = await this.queryLastDocuments({
149
+ sort: 'publishedAt:desc',
150
+ status: 'published'
151
+ }, true);
152
+ return this.addStatusToDocuments(recentlyPublishedDocuments);
153
+ },
154
+ async getRecentlyUpdatedDocuments () {
155
+ const recentlyUpdatedDocuments = await this.queryLastDocuments({
156
+ sort: 'updatedAt:desc'
157
+ });
158
+ return this.addStatusToDocuments(recentlyUpdatedDocuments);
159
+ },
160
+ async getCountDocuments () {
161
+ const permittedContentTypes = await getPermittedContentTypes();
162
+ // Fetch the configuration for each content type in a single query
163
+ const configurations = await getConfiguration(permittedContentTypes);
164
+ // Get the necessary metadata for the documents
165
+ const contentTypesMeta = getContentTypesMeta(permittedContentTypes, configurations);
166
+ const countDocuments = {
167
+ draft: 0,
168
+ published: 0,
169
+ modified: 0
170
+ };
171
+ await Promise.all(contentTypesMeta.map(async (meta)=>{
172
+ const strapiDBConnection = strapi.db.connection;
173
+ const tableName = strapi.contentType(meta.uid).collectionName;
174
+ if (tableName) {
175
+ const draftDocuments = await strapiDBConnection(tableName).whereNull('published_at').whereIn('document_id', function() {
176
+ this.select('document_id').from(tableName).groupBy('document_id').havingRaw('COUNT(*) = 1');
177
+ }).count('* as count').first();
178
+ countDocuments.draft += Number(draftDocuments?.count) || 0;
179
+ const publishedDocuments = meta.hasDraftAndPublish ? await strapiDBConnection(tableName).select('draft.document_id').from(`${tableName} as draft`).join(`${tableName} as published`, function() {
180
+ this.on('draft.document_id', '=', 'published.document_id').andOn('draft.updated_at', '=', 'published.updated_at').andOnNull('draft.published_at').andOnNotNull('published.published_at');
181
+ }).countDistinct('draft.document_id as count').groupBy('draft.document_id').first() : await strapiDBConnection(tableName).select('document_id').from(`${tableName}`).countDistinct('document_id as count').groupBy('document_id').first();
182
+ countDocuments.published += Number(publishedDocuments?.count) || 0;
183
+ const modifiedDocuments = await strapiDBConnection(tableName).select('draft.document_id').from(`${tableName} as draft`).join(`${tableName} as published`, function() {
184
+ this.on('draft.document_id', '=', 'published.document_id').andOn('draft.updated_at', '!=', 'published.updated_at').andOnNull('draft.published_at').andOnNotNull('published.published_at');
185
+ }).countDistinct('draft.document_id as count').groupBy('draft.document_id').first();
186
+ countDocuments.modified += Number(modifiedDocuments?.count) || 0;
187
+ }
188
+ }));
189
+ return countDocuments;
190
+ }
191
+ };
192
+ };
193
+
194
+ export { createHomepageService };
195
+ //# sourceMappingURL=homepage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.mjs","sources":["../../../../server/src/homepage/services/homepage.ts"],"sourcesContent":["import type { Core, Modules, Schema } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\nimport type {\n GetCountDocuments,\n GetRecentDocuments,\n RecentDocument,\n} from '../../../../shared/contracts/homepage';\n\nconst createHomepageService = ({ strapi }: { strapi: Core.Strapi }) => {\n const MAX_DOCUMENTS = 4;\n\n const metadataService = strapi.plugin('content-manager').service('document-metadata');\n const permissionService = strapi.admin.services.permission;\n\n type ContentTypeConfiguration = {\n uid: RecentDocument['contentTypeUid'];\n settings: { mainField: string };\n };\n const getConfiguration = async (\n contentTypeUids: RecentDocument['contentTypeUid'][]\n ): Promise<ContentTypeConfiguration[]> => {\n /**\n * Don't use the strapi.store util because we need to make\n * more precise queries than exact key matches, in order to make as few queries as possible.\n */\n const coreStore = strapi.db.query('strapi::core-store');\n const rawConfigurations = await coreStore.findMany({\n where: {\n key: {\n $in: contentTypeUids.map(\n (contentType) => `plugin_content_manager_configuration_content_types::${contentType}`\n ),\n },\n },\n });\n\n return rawConfigurations.map((rawConfiguration) => {\n return JSON.parse(rawConfiguration.value);\n });\n };\n\n const getPermittedContentTypes = async () => {\n const readPermissions: Modules.Permissions.PermissionRule[] = await permissionService.findMany({\n where: {\n role: { users: { id: strapi.requestContext.get()?.state?.user.id } },\n action: 'plugin::content-manager.explorer.read',\n },\n });\n\n return readPermissions\n .map((permission) => permission.subject)\n .filter(Boolean) as RecentDocument['contentTypeUid'][];\n };\n\n type ContentTypeMeta = {\n fields: string[];\n mainField: string;\n contentType: Schema.ContentType;\n hasDraftAndPublish: boolean;\n uid: RecentDocument['contentTypeUid'];\n };\n\n const getContentTypesMeta = (\n allowedContentTypeUids: RecentDocument['contentTypeUid'][],\n configurations: ContentTypeConfiguration[]\n ): ContentTypeMeta[] => {\n return allowedContentTypeUids.map((uid) => {\n const configuration = configurations.find((config) => config.uid === uid);\n const contentType = strapi.contentType(uid);\n const fields = ['documentId', 'updatedAt'];\n\n // Add fields required to get the status if D&P is enabled\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n if (hasDraftAndPublish) {\n fields.push('publishedAt');\n }\n\n // Only add the main field if it's defined\n if (configuration?.settings.mainField) {\n fields.push(configuration.settings.mainField);\n }\n\n // Only add locale if it's localized\n const isLocalized = (contentType.pluginOptions?.i18n as any)?.localized;\n if (isLocalized) {\n fields.push('locale');\n }\n\n return {\n fields,\n mainField: configuration!.settings.mainField,\n contentType,\n hasDraftAndPublish,\n uid,\n };\n });\n };\n\n const formatDocuments = (\n documents: Modules.Documents.AnyDocument[],\n meta: ContentTypeMeta,\n populate?: string[]\n ) => {\n return documents.map((document) => {\n const additionalFields =\n populate?.reduce(\n (acc, key) => {\n acc[key] = document[key];\n return acc;\n },\n {} as Record<string, any>\n ) || {};\n return {\n documentId: document.documentId,\n locale: document.locale ?? null,\n updatedAt: new Date(document.updatedAt),\n title: document[meta.mainField ?? 'documentId'],\n publishedAt:\n meta.hasDraftAndPublish && document.publishedAt ? new Date(document.publishedAt) : null,\n contentTypeUid: meta.uid,\n contentTypeDisplayName: meta.contentType.info.displayName,\n kind: meta.contentType.kind,\n ...additionalFields,\n };\n });\n };\n\n const permissionCheckerService = strapi.plugin('content-manager').service('permission-checker');\n const getPermissionChecker = (uid: string) =>\n permissionCheckerService.create({\n userAbility: strapi.requestContext.get()?.state.userAbility,\n model: uid,\n });\n\n return {\n async addStatusToDocuments(documents: RecentDocument[]): Promise<RecentDocument[]> {\n return Promise.all(\n documents.map(async (recentDocument) => {\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(\n strapi.contentType(recentDocument.contentTypeUid)\n );\n /**\n * Tries to query the other version of the document if draft and publish is enabled,\n * so that we know when to give the \"modified\" status.\n */\n const { availableStatus } = await metadataService.getMetadata(\n recentDocument.contentTypeUid,\n recentDocument,\n {\n availableStatus: hasDraftAndPublish,\n availableLocales: false,\n }\n );\n const status: RecentDocument['status'] = metadataService.getStatus(\n recentDocument,\n availableStatus\n );\n\n return {\n ...recentDocument,\n status: hasDraftAndPublish ? status : undefined,\n };\n })\n );\n },\n\n async queryLastDocuments(\n additionalQueryParams?: Record<string, unknown>,\n draftAndPublishOnly?: boolean\n ): Promise<RecentDocument[]> {\n const permittedContentTypes = await getPermittedContentTypes();\n const allowedContentTypeUids = draftAndPublishOnly\n ? permittedContentTypes.filter((uid) => {\n return contentTypes.hasDraftAndPublish(strapi.contentType(uid));\n })\n : permittedContentTypes;\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(allowedContentTypeUids);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(allowedContentTypeUids, configurations);\n\n const recentDocuments = await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const permissionQuery = await getPermissionChecker(meta.uid).sanitizedQuery.read({\n limit: MAX_DOCUMENTS,\n fields: meta.fields,\n ...additionalQueryParams,\n });\n\n const docs = await strapi.documents(meta.uid).findMany(permissionQuery);\n const populate = additionalQueryParams?.populate as string[];\n\n return formatDocuments(docs, meta, populate);\n })\n );\n\n return recentDocuments\n .flat()\n .sort((a, b) => {\n switch (additionalQueryParams?.sort) {\n case 'publishedAt:desc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return b.publishedAt.valueOf() - a.publishedAt.valueOf();\n case 'publishedAt:asc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return a.publishedAt.valueOf() - b.publishedAt.valueOf();\n case 'updatedAt:desc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return b.updatedAt.valueOf() - a.updatedAt.valueOf();\n case 'updatedAt:asc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return a.updatedAt.valueOf() - b.updatedAt.valueOf();\n default:\n return 0;\n }\n })\n .slice(0, MAX_DOCUMENTS);\n },\n\n async getRecentlyPublishedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyPublishedDocuments = await this.queryLastDocuments(\n {\n sort: 'publishedAt:desc',\n status: 'published',\n },\n true\n );\n\n return this.addStatusToDocuments(recentlyPublishedDocuments);\n },\n\n async getRecentlyUpdatedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyUpdatedDocuments = await this.queryLastDocuments({\n sort: 'updatedAt:desc',\n });\n\n return this.addStatusToDocuments(recentlyUpdatedDocuments);\n },\n\n async getCountDocuments(): Promise<GetCountDocuments.Response['data']> {\n const permittedContentTypes = await getPermittedContentTypes();\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(permittedContentTypes);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(permittedContentTypes, configurations);\n\n const countDocuments = {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const strapiDBConnection = strapi.db.connection;\n const tableName = strapi.contentType(meta.uid).collectionName;\n if (tableName) {\n const draftDocuments = await strapiDBConnection(tableName)\n .whereNull('published_at')\n .whereIn('document_id', function () {\n this.select('document_id')\n .from(tableName)\n .groupBy('document_id')\n .havingRaw('COUNT(*) = 1');\n })\n .count('* as count')\n .first();\n countDocuments.draft += Number(draftDocuments?.count) || 0;\n\n const publishedDocuments = meta.hasDraftAndPublish\n ? await strapiDBConnection(tableName)\n .select('draft.document_id')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .countDistinct('draft.document_id as count')\n .groupBy('draft.document_id')\n .first()\n : await strapiDBConnection(tableName)\n .select('document_id')\n .from(`${tableName}`)\n .countDistinct('document_id as count')\n .groupBy('document_id')\n .first();\n countDocuments.published += Number(publishedDocuments?.count) || 0;\n\n const modifiedDocuments = await strapiDBConnection(tableName)\n .select('draft.document_id')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '!=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .countDistinct('draft.document_id as count')\n .groupBy('draft.document_id')\n .first();\n countDocuments.modified += Number(modifiedDocuments?.count) || 0;\n }\n })\n );\n\n return countDocuments;\n },\n };\n};\n\nexport { createHomepageService };\n"],"names":["createHomepageService","strapi","MAX_DOCUMENTS","metadataService","plugin","service","permissionService","admin","services","permission","getConfiguration","contentTypeUids","coreStore","db","query","rawConfigurations","findMany","where","key","$in","map","contentType","rawConfiguration","JSON","parse","value","getPermittedContentTypes","readPermissions","role","users","id","requestContext","get","state","user","action","subject","filter","Boolean","getContentTypesMeta","allowedContentTypeUids","configurations","uid","configuration","find","config","fields","hasDraftAndPublish","contentTypes","push","settings","mainField","isLocalized","pluginOptions","i18n","localized","formatDocuments","documents","meta","populate","document","additionalFields","reduce","acc","documentId","locale","updatedAt","Date","title","publishedAt","contentTypeUid","contentTypeDisplayName","info","displayName","kind","permissionCheckerService","getPermissionChecker","create","userAbility","model","addStatusToDocuments","Promise","all","recentDocument","availableStatus","getMetadata","availableLocales","status","getStatus","undefined","queryLastDocuments","additionalQueryParams","draftAndPublishOnly","permittedContentTypes","contentTypesMeta","recentDocuments","permissionQuery","sanitizedQuery","read","limit","docs","flat","sort","a","b","valueOf","slice","getRecentlyPublishedDocuments","recentlyPublishedDocuments","getRecentlyUpdatedDocuments","recentlyUpdatedDocuments","getCountDocuments","countDocuments","draft","published","modified","strapiDBConnection","connection","tableName","collectionName","draftDocuments","whereNull","whereIn","select","from","groupBy","havingRaw","count","first","Number","publishedDocuments","join","on","andOn","andOnNull","andOnNotNull","countDistinct","modifiedDocuments"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var homepage = require('./homepage.js');
4
+
5
+ const services = {
6
+ homepage: homepage.createHomepageService
7
+ };
8
+
9
+ exports.services = services;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../server/src/homepage/services/index.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\n\nimport { createHomepageService } from './homepage';\n\nexport const services = {\n homepage: createHomepageService,\n} satisfies Plugin.LoadedPlugin['services'];\n"],"names":["services","homepage","createHomepageService"],"mappings":";;;;MAIaA,QAAW,GAAA;IACtBC,QAAUC,EAAAA;AACZ;;;;"}
@@ -0,0 +1,8 @@
1
+ import { createHomepageService } from './homepage.mjs';
2
+
3
+ const services = {
4
+ homepage: createHomepageService
5
+ };
6
+
7
+ export { services };
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../server/src/homepage/services/index.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\n\nimport { createHomepageService } from './homepage';\n\nexport const services = {\n homepage: createHomepageService,\n} satisfies Plugin.LoadedPlugin['services'];\n"],"names":["services","homepage","createHomepageService"],"mappings":";;MAIaA,QAAW,GAAA;IACtBC,QAAUC,EAAAA;AACZ;;;;"}
@@ -53,6 +53,10 @@ var strapiUtils = require('@strapi/utils');
53
53
  });
54
54
  }
55
55
  },
56
+ isConfigured () {
57
+ const config = strapi1.config.get('admin.preview');
58
+ return config?.enabled === false || config?.config?.handler != null;
59
+ },
56
60
  isEnabled () {
57
61
  const config = strapi1.config.get('admin.preview');
58
62
  if (!config) {
@@ -75,13 +79,13 @@ var strapiUtils = require('@strapi/utils');
75
79
  /**
76
80
  * Utility to get the preview handler from the configuration
77
81
  */ getPreviewHandler () {
78
- const config = strapi1.config.get('admin.preview');
79
82
  const emptyHandler = ()=>{
80
83
  return undefined;
81
84
  };
82
85
  if (!this.isEnabled()) {
83
86
  return emptyHandler;
84
87
  }
88
+ const config = strapi1.config.get('admin.preview');
85
89
  return config?.config?.handler || emptyHandler;
86
90
  }
87
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"preview-config.js","sources":["../../../../server/src/preview/services/preview-config.ts"],"sourcesContent":["import { mergeWith } from 'lodash/fp';\n\nimport type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nexport type HandlerParams = {\n documentId: string;\n locale: string;\n status: 'published' | 'draft';\n};\n\nexport interface PreviewConfig {\n enabled: boolean;\n config: {\n // List of CSP allowed origins. This is a shortcut to setting it up inside `config/middlewares.js`\n allowedOrigins: string[];\n handler: (uid: UID.Schema, params: HandlerParams) => string | undefined;\n };\n}\n\n/**\n * Utility to extend Strapi configuration middlewares. Mainly used to extend the CSP directives from the security middleware.\n */\nconst extendMiddlewareConfiguration = (middleware = { name: '', config: {} }) => {\n const middlewares = strapi.config.get('middlewares') as (string | object)[];\n\n const configuredMiddlewares = middlewares.map((currentMiddleware) => {\n if (currentMiddleware === middleware.name) {\n // Use the new config object if the middleware has no config property yet\n return middleware;\n }\n\n // @ts-expect-error - currentMiddleware is not a string\n if (currentMiddleware.name === middleware.name) {\n // Deep merge (+ concat arrays) the new config with the current middleware config\n return mergeWith(\n (objValue, srcValue) => {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n\n return undefined;\n },\n currentMiddleware,\n middleware\n );\n }\n\n return currentMiddleware;\n });\n\n strapi.config.set('middlewares', configuredMiddlewares);\n};\n\n/**\n * Read configuration for static preview\n */\nconst createPreviewConfigService = ({ strapi }: { strapi: Core.Strapi }) => {\n return {\n register() {\n if (!this.isEnabled()) {\n return;\n }\n\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n /**\n * Register the allowed origins for CSP, so the preview URL can be displayed\n */\n if (config.config?.allowedOrigins) {\n extendMiddlewareConfiguration({\n name: 'strapi::security',\n config: {\n contentSecurityPolicy: {\n directives: {\n 'frame-src': config.config.allowedOrigins,\n },\n },\n },\n });\n }\n },\n\n isEnabled() {\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n if (!config) {\n return false;\n }\n\n return config?.enabled ?? true;\n },\n\n /**\n * Validate if the configuration is valid\n */\n validate() {\n if (!this.isEnabled()) {\n return;\n }\n\n const handler = this.getPreviewHandler();\n\n // Handler must be a function\n if (typeof handler !== 'function') {\n throw new errors.ValidationError(\n 'Preview configuration is invalid. Handler must be a function'\n );\n }\n },\n\n /**\n * Utility to get the preview handler from the configuration\n */\n getPreviewHandler(): PreviewConfig['config']['handler'] {\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n const emptyHandler = () => {\n return undefined;\n };\n\n if (!this.isEnabled()) {\n return emptyHandler;\n }\n\n return config?.config?.handler || emptyHandler;\n },\n };\n};\n\nexport { createPreviewConfigService };\n"],"names":["extendMiddlewareConfiguration","middleware","name","config","middlewares","strapi","get","configuredMiddlewares","map","currentMiddleware","mergeWith","objValue","srcValue","Array","isArray","concat","undefined","set","createPreviewConfigService","register","isEnabled","allowedOrigins","contentSecurityPolicy","directives","enabled","validate","handler","getPreviewHandler","errors","ValidationError","emptyHandler"],"mappings":";;;;;AAoBA;;IAGA,MAAMA,6BAAgC,GAAA,CAACC,UAAa,GAAA;IAAEC,IAAM,EAAA,EAAA;AAAIC,IAAAA,MAAAA,EAAQ;AAAG,CAAC,GAAA;AAC1E,IAAA,MAAMC,WAAcC,GAAAA,MAAAA,CAAOF,MAAM,CAACG,GAAG,CAAC,aAAA,CAAA;AAEtC,IAAA,MAAMC,qBAAwBH,GAAAA,WAAAA,CAAYI,GAAG,CAAC,CAACC,iBAAAA,GAAAA;QAC7C,IAAIA,iBAAAA,KAAsBR,UAAWC,CAAAA,IAAI,EAAE;;YAEzC,OAAOD,UAAAA;AACT;;AAGA,QAAA,IAAIQ,iBAAkBP,CAAAA,IAAI,KAAKD,UAAAA,CAAWC,IAAI,EAAE;;YAE9C,OAAOQ,YAAAA,CACL,CAACC,QAAUC,EAAAA,QAAAA,GAAAA;gBACT,IAAIC,KAAAA,CAAMC,OAAO,CAACH,QAAW,CAAA,EAAA;oBAC3B,OAAOA,QAAAA,CAASI,MAAM,CAACH,QAAAA,CAAAA;AACzB;gBAEA,OAAOI,SAAAA;AACT,aAAA,EACAP,iBACAR,EAAAA,UAAAA,CAAAA;AAEJ;QAEA,OAAOQ,iBAAAA;AACT,KAAA,CAAA;AAEAJ,IAAAA,MAAAA,CAAOF,MAAM,CAACc,GAAG,CAAC,aAAeV,EAAAA,qBAAAA,CAAAA;AACnC,CAAA;AAEA;;AAEC,UACKW,0BAA6B,GAAA,CAAC,EAAEb,MAAAA,EAAAA,OAAM,EAA2B,GAAA;IACrE,OAAO;AACLc,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAAC,IAAI,CAACC,SAAS,EAAI,EAAA;AACrB,gBAAA;AACF;AAEA,YAAA,MAAMjB,MAASE,GAAAA,OAAAA,CAAOF,MAAM,CAACG,GAAG,CAAC,eAAA,CAAA;AAEjC;;AAEC,UACD,IAAIH,MAAAA,CAAOA,MAAM,EAAEkB,cAAgB,EAAA;gBACjCrB,6BAA8B,CAAA;oBAC5BE,IAAM,EAAA,kBAAA;oBACNC,MAAQ,EAAA;wBACNmB,qBAAuB,EAAA;4BACrBC,UAAY,EAAA;gCACV,WAAapB,EAAAA,MAAAA,CAAOA,MAAM,CAACkB;AAC7B;AACF;AACF;AACF,iBAAA,CAAA;AACF;AACF,SAAA;AAEAD,QAAAA,SAAAA,CAAAA,GAAAA;AACE,YAAA,MAAMjB,MAASE,GAAAA,OAAAA,CAAOF,MAAM,CAACG,GAAG,CAAC,eAAA,CAAA;AAEjC,YAAA,IAAI,CAACH,MAAQ,EAAA;gBACX,OAAO,KAAA;AACT;AAEA,YAAA,OAAOA,QAAQqB,OAAW,IAAA,IAAA;AAC5B,SAAA;AAEA;;QAGAC,QAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAAC,IAAI,CAACL,SAAS,EAAI,EAAA;AACrB,gBAAA;AACF;YAEA,MAAMM,OAAAA,GAAU,IAAI,CAACC,iBAAiB,EAAA;;YAGtC,IAAI,OAAOD,YAAY,UAAY,EAAA;gBACjC,MAAM,IAAIE,kBAAOC,CAAAA,eAAe,CAC9B,8DAAA,CAAA;AAEJ;AACF,SAAA;AAEA;;QAGAF,iBAAAA,CAAAA,GAAAA;AACE,YAAA,MAAMxB,MAASE,GAAAA,OAAAA,CAAOF,MAAM,CAACG,GAAG,CAAC,eAAA,CAAA;AAEjC,YAAA,MAAMwB,YAAe,GAAA,IAAA;gBACnB,OAAOd,SAAAA;AACT,aAAA;AAEA,YAAA,IAAI,CAAC,IAAI,CAACI,SAAS,EAAI,EAAA;gBACrB,OAAOU,YAAAA;AACT;YAEA,OAAO3B,MAAAA,EAAQA,QAAQuB,OAAWI,IAAAA,YAAAA;AACpC;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"preview-config.js","sources":["../../../../server/src/preview/services/preview-config.ts"],"sourcesContent":["import { mergeWith } from 'lodash/fp';\n\nimport type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nexport type HandlerParams = {\n documentId: string;\n locale: string;\n status: 'published' | 'draft';\n};\n\nexport interface PreviewConfig {\n enabled: boolean;\n config: {\n // List of CSP allowed origins. This is a shortcut to setting it up inside `config/middlewares.js`\n allowedOrigins: string[];\n handler: (uid: UID.Schema, params: HandlerParams) => string | undefined;\n };\n}\n\n/**\n * Utility to extend Strapi configuration middlewares. Mainly used to extend the CSP directives from the security middleware.\n */\nconst extendMiddlewareConfiguration = (middleware = { name: '', config: {} }) => {\n const middlewares = strapi.config.get('middlewares') as (string | object)[];\n\n const configuredMiddlewares = middlewares.map((currentMiddleware) => {\n if (currentMiddleware === middleware.name) {\n // Use the new config object if the middleware has no config property yet\n return middleware;\n }\n\n // @ts-expect-error - currentMiddleware is not a string\n if (currentMiddleware.name === middleware.name) {\n // Deep merge (+ concat arrays) the new config with the current middleware config\n return mergeWith(\n (objValue, srcValue) => {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n\n return undefined;\n },\n currentMiddleware,\n middleware\n );\n }\n\n return currentMiddleware;\n });\n\n strapi.config.set('middlewares', configuredMiddlewares);\n};\n\n/**\n * Read configuration for static preview\n */\nconst createPreviewConfigService = ({ strapi }: { strapi: Core.Strapi }) => {\n return {\n register() {\n if (!this.isEnabled()) {\n return;\n }\n\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n /**\n * Register the allowed origins for CSP, so the preview URL can be displayed\n */\n if (config.config?.allowedOrigins) {\n extendMiddlewareConfiguration({\n name: 'strapi::security',\n config: {\n contentSecurityPolicy: {\n directives: {\n 'frame-src': config.config.allowedOrigins,\n },\n },\n },\n });\n }\n },\n\n isConfigured() {\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n return config?.enabled === false || config?.config?.handler != null;\n },\n\n isEnabled() {\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n if (!config) {\n return false;\n }\n\n return config?.enabled ?? true;\n },\n\n /**\n * Validate if the configuration is valid\n */\n validate() {\n if (!this.isEnabled()) {\n return;\n }\n\n const handler = this.getPreviewHandler();\n\n // Handler must be a function\n if (typeof handler !== 'function') {\n throw new errors.ValidationError(\n 'Preview configuration is invalid. Handler must be a function'\n );\n }\n },\n\n /**\n * Utility to get the preview handler from the configuration\n */\n getPreviewHandler(): PreviewConfig['config']['handler'] {\n const emptyHandler = () => {\n return undefined;\n };\n\n if (!this.isEnabled()) {\n return emptyHandler;\n }\n\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n return config?.config?.handler || emptyHandler;\n },\n };\n};\n\nexport { createPreviewConfigService };\n"],"names":["extendMiddlewareConfiguration","middleware","name","config","middlewares","strapi","get","configuredMiddlewares","map","currentMiddleware","mergeWith","objValue","srcValue","Array","isArray","concat","undefined","set","createPreviewConfigService","register","isEnabled","allowedOrigins","contentSecurityPolicy","directives","isConfigured","enabled","handler","validate","getPreviewHandler","errors","ValidationError","emptyHandler"],"mappings":"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"}
@@ -51,6 +51,10 @@ import { errors } from '@strapi/utils';
51
51
  });
52
52
  }
53
53
  },
54
+ isConfigured () {
55
+ const config = strapi1.config.get('admin.preview');
56
+ return config?.enabled === false || config?.config?.handler != null;
57
+ },
54
58
  isEnabled () {
55
59
  const config = strapi1.config.get('admin.preview');
56
60
  if (!config) {
@@ -73,13 +77,13 @@ import { errors } from '@strapi/utils';
73
77
  /**
74
78
  * Utility to get the preview handler from the configuration
75
79
  */ getPreviewHandler () {
76
- const config = strapi1.config.get('admin.preview');
77
80
  const emptyHandler = ()=>{
78
81
  return undefined;
79
82
  };
80
83
  if (!this.isEnabled()) {
81
84
  return emptyHandler;
82
85
  }
86
+ const config = strapi1.config.get('admin.preview');
83
87
  return config?.config?.handler || emptyHandler;
84
88
  }
85
89
  };
@@ -1 +1 @@
1
- {"version":3,"file":"preview-config.mjs","sources":["../../../../server/src/preview/services/preview-config.ts"],"sourcesContent":["import { mergeWith } from 'lodash/fp';\n\nimport type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nexport type HandlerParams = {\n documentId: string;\n locale: string;\n status: 'published' | 'draft';\n};\n\nexport interface PreviewConfig {\n enabled: boolean;\n config: {\n // List of CSP allowed origins. This is a shortcut to setting it up inside `config/middlewares.js`\n allowedOrigins: string[];\n handler: (uid: UID.Schema, params: HandlerParams) => string | undefined;\n };\n}\n\n/**\n * Utility to extend Strapi configuration middlewares. Mainly used to extend the CSP directives from the security middleware.\n */\nconst extendMiddlewareConfiguration = (middleware = { name: '', config: {} }) => {\n const middlewares = strapi.config.get('middlewares') as (string | object)[];\n\n const configuredMiddlewares = middlewares.map((currentMiddleware) => {\n if (currentMiddleware === middleware.name) {\n // Use the new config object if the middleware has no config property yet\n return middleware;\n }\n\n // @ts-expect-error - currentMiddleware is not a string\n if (currentMiddleware.name === middleware.name) {\n // Deep merge (+ concat arrays) the new config with the current middleware config\n return mergeWith(\n (objValue, srcValue) => {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n\n return undefined;\n },\n currentMiddleware,\n middleware\n );\n }\n\n return currentMiddleware;\n });\n\n strapi.config.set('middlewares', configuredMiddlewares);\n};\n\n/**\n * Read configuration for static preview\n */\nconst createPreviewConfigService = ({ strapi }: { strapi: Core.Strapi }) => {\n return {\n register() {\n if (!this.isEnabled()) {\n return;\n }\n\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n /**\n * Register the allowed origins for CSP, so the preview URL can be displayed\n */\n if (config.config?.allowedOrigins) {\n extendMiddlewareConfiguration({\n name: 'strapi::security',\n config: {\n contentSecurityPolicy: {\n directives: {\n 'frame-src': config.config.allowedOrigins,\n },\n },\n },\n });\n }\n },\n\n isEnabled() {\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n if (!config) {\n return false;\n }\n\n return config?.enabled ?? true;\n },\n\n /**\n * Validate if the configuration is valid\n */\n validate() {\n if (!this.isEnabled()) {\n return;\n }\n\n const handler = this.getPreviewHandler();\n\n // Handler must be a function\n if (typeof handler !== 'function') {\n throw new errors.ValidationError(\n 'Preview configuration is invalid. Handler must be a function'\n );\n }\n },\n\n /**\n * Utility to get the preview handler from the configuration\n */\n getPreviewHandler(): PreviewConfig['config']['handler'] {\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n const emptyHandler = () => {\n return undefined;\n };\n\n if (!this.isEnabled()) {\n return emptyHandler;\n }\n\n return config?.config?.handler || emptyHandler;\n },\n };\n};\n\nexport { createPreviewConfigService };\n"],"names":["extendMiddlewareConfiguration","middleware","name","config","middlewares","strapi","get","configuredMiddlewares","map","currentMiddleware","mergeWith","objValue","srcValue","Array","isArray","concat","undefined","set","createPreviewConfigService","register","isEnabled","allowedOrigins","contentSecurityPolicy","directives","enabled","validate","handler","getPreviewHandler","errors","ValidationError","emptyHandler"],"mappings":";;;AAoBA;;IAGA,MAAMA,6BAAgC,GAAA,CAACC,UAAa,GAAA;IAAEC,IAAM,EAAA,EAAA;AAAIC,IAAAA,MAAAA,EAAQ;AAAG,CAAC,GAAA;AAC1E,IAAA,MAAMC,WAAcC,GAAAA,MAAAA,CAAOF,MAAM,CAACG,GAAG,CAAC,aAAA,CAAA;AAEtC,IAAA,MAAMC,qBAAwBH,GAAAA,WAAAA,CAAYI,GAAG,CAAC,CAACC,iBAAAA,GAAAA;QAC7C,IAAIA,iBAAAA,KAAsBR,UAAWC,CAAAA,IAAI,EAAE;;YAEzC,OAAOD,UAAAA;AACT;;AAGA,QAAA,IAAIQ,iBAAkBP,CAAAA,IAAI,KAAKD,UAAAA,CAAWC,IAAI,EAAE;;YAE9C,OAAOQ,SAAAA,CACL,CAACC,QAAUC,EAAAA,QAAAA,GAAAA;gBACT,IAAIC,KAAAA,CAAMC,OAAO,CAACH,QAAW,CAAA,EAAA;oBAC3B,OAAOA,QAAAA,CAASI,MAAM,CAACH,QAAAA,CAAAA;AACzB;gBAEA,OAAOI,SAAAA;AACT,aAAA,EACAP,iBACAR,EAAAA,UAAAA,CAAAA;AAEJ;QAEA,OAAOQ,iBAAAA;AACT,KAAA,CAAA;AAEAJ,IAAAA,MAAAA,CAAOF,MAAM,CAACc,GAAG,CAAC,aAAeV,EAAAA,qBAAAA,CAAAA;AACnC,CAAA;AAEA;;AAEC,UACKW,0BAA6B,GAAA,CAAC,EAAEb,MAAAA,EAAAA,OAAM,EAA2B,GAAA;IACrE,OAAO;AACLc,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAAC,IAAI,CAACC,SAAS,EAAI,EAAA;AACrB,gBAAA;AACF;AAEA,YAAA,MAAMjB,MAASE,GAAAA,OAAAA,CAAOF,MAAM,CAACG,GAAG,CAAC,eAAA,CAAA;AAEjC;;AAEC,UACD,IAAIH,MAAAA,CAAOA,MAAM,EAAEkB,cAAgB,EAAA;gBACjCrB,6BAA8B,CAAA;oBAC5BE,IAAM,EAAA,kBAAA;oBACNC,MAAQ,EAAA;wBACNmB,qBAAuB,EAAA;4BACrBC,UAAY,EAAA;gCACV,WAAapB,EAAAA,MAAAA,CAAOA,MAAM,CAACkB;AAC7B;AACF;AACF;AACF,iBAAA,CAAA;AACF;AACF,SAAA;AAEAD,QAAAA,SAAAA,CAAAA,GAAAA;AACE,YAAA,MAAMjB,MAASE,GAAAA,OAAAA,CAAOF,MAAM,CAACG,GAAG,CAAC,eAAA,CAAA;AAEjC,YAAA,IAAI,CAACH,MAAQ,EAAA;gBACX,OAAO,KAAA;AACT;AAEA,YAAA,OAAOA,QAAQqB,OAAW,IAAA,IAAA;AAC5B,SAAA;AAEA;;QAGAC,QAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAAC,IAAI,CAACL,SAAS,EAAI,EAAA;AACrB,gBAAA;AACF;YAEA,MAAMM,OAAAA,GAAU,IAAI,CAACC,iBAAiB,EAAA;;YAGtC,IAAI,OAAOD,YAAY,UAAY,EAAA;gBACjC,MAAM,IAAIE,MAAOC,CAAAA,eAAe,CAC9B,8DAAA,CAAA;AAEJ;AACF,SAAA;AAEA;;QAGAF,iBAAAA,CAAAA,GAAAA;AACE,YAAA,MAAMxB,MAASE,GAAAA,OAAAA,CAAOF,MAAM,CAACG,GAAG,CAAC,eAAA,CAAA;AAEjC,YAAA,MAAMwB,YAAe,GAAA,IAAA;gBACnB,OAAOd,SAAAA;AACT,aAAA;AAEA,YAAA,IAAI,CAAC,IAAI,CAACI,SAAS,EAAI,EAAA;gBACrB,OAAOU,YAAAA;AACT;YAEA,OAAO3B,MAAAA,EAAQA,QAAQuB,OAAWI,IAAAA,YAAAA;AACpC;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"preview-config.mjs","sources":["../../../../server/src/preview/services/preview-config.ts"],"sourcesContent":["import { mergeWith } from 'lodash/fp';\n\nimport type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nexport type HandlerParams = {\n documentId: string;\n locale: string;\n status: 'published' | 'draft';\n};\n\nexport interface PreviewConfig {\n enabled: boolean;\n config: {\n // List of CSP allowed origins. This is a shortcut to setting it up inside `config/middlewares.js`\n allowedOrigins: string[];\n handler: (uid: UID.Schema, params: HandlerParams) => string | undefined;\n };\n}\n\n/**\n * Utility to extend Strapi configuration middlewares. Mainly used to extend the CSP directives from the security middleware.\n */\nconst extendMiddlewareConfiguration = (middleware = { name: '', config: {} }) => {\n const middlewares = strapi.config.get('middlewares') as (string | object)[];\n\n const configuredMiddlewares = middlewares.map((currentMiddleware) => {\n if (currentMiddleware === middleware.name) {\n // Use the new config object if the middleware has no config property yet\n return middleware;\n }\n\n // @ts-expect-error - currentMiddleware is not a string\n if (currentMiddleware.name === middleware.name) {\n // Deep merge (+ concat arrays) the new config with the current middleware config\n return mergeWith(\n (objValue, srcValue) => {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n\n return undefined;\n },\n currentMiddleware,\n middleware\n );\n }\n\n return currentMiddleware;\n });\n\n strapi.config.set('middlewares', configuredMiddlewares);\n};\n\n/**\n * Read configuration for static preview\n */\nconst createPreviewConfigService = ({ strapi }: { strapi: Core.Strapi }) => {\n return {\n register() {\n if (!this.isEnabled()) {\n return;\n }\n\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n /**\n * Register the allowed origins for CSP, so the preview URL can be displayed\n */\n if (config.config?.allowedOrigins) {\n extendMiddlewareConfiguration({\n name: 'strapi::security',\n config: {\n contentSecurityPolicy: {\n directives: {\n 'frame-src': config.config.allowedOrigins,\n },\n },\n },\n });\n }\n },\n\n isConfigured() {\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n return config?.enabled === false || config?.config?.handler != null;\n },\n\n isEnabled() {\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n if (!config) {\n return false;\n }\n\n return config?.enabled ?? true;\n },\n\n /**\n * Validate if the configuration is valid\n */\n validate() {\n if (!this.isEnabled()) {\n return;\n }\n\n const handler = this.getPreviewHandler();\n\n // Handler must be a function\n if (typeof handler !== 'function') {\n throw new errors.ValidationError(\n 'Preview configuration is invalid. Handler must be a function'\n );\n }\n },\n\n /**\n * Utility to get the preview handler from the configuration\n */\n getPreviewHandler(): PreviewConfig['config']['handler'] {\n const emptyHandler = () => {\n return undefined;\n };\n\n if (!this.isEnabled()) {\n return emptyHandler;\n }\n\n const config = strapi.config.get('admin.preview') as PreviewConfig;\n\n return config?.config?.handler || emptyHandler;\n },\n };\n};\n\nexport { createPreviewConfigService };\n"],"names":["extendMiddlewareConfiguration","middleware","name","config","middlewares","strapi","get","configuredMiddlewares","map","currentMiddleware","mergeWith","objValue","srcValue","Array","isArray","concat","undefined","set","createPreviewConfigService","register","isEnabled","allowedOrigins","contentSecurityPolicy","directives","isConfigured","enabled","handler","validate","getPreviewHandler","errors","ValidationError","emptyHandler"],"mappings":"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"}
@@ -9,6 +9,10 @@ var utils = require('../utils.js');
9
9
  const config = utils.getService(strapi, 'preview-config');
10
10
  return {
11
11
  async getPreviewUrl (uid, params) {
12
+ const isConfigured = config.isConfigured();
13
+ if (!isConfigured) {
14
+ throw new strapiUtils.errors.NotFoundError('Preview config not found');
15
+ }
12
16
  const handler = config.getPreviewHandler();
13
17
  try {
14
18
  // Try to get the preview URL from the user-defined handler
@@ -18,7 +22,6 @@ var utils = require('../utils.js');
18
22
  strapi.log.error(`Failed to get preview URL: ${error}`);
19
23
  throw new strapiUtils.errors.ApplicationError('Failed to get preview URL');
20
24
  }
21
- return;
22
25
  }
23
26
  };
24
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","sources":["../../../../server/src/preview/services/preview.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nimport { getService } from '../utils';\nimport type { HandlerParams } from './preview-config';\n\n/**\n * Responsible of routing an entry to a preview URL.\n */\nconst createPreviewService = ({ strapi }: { strapi: Core.Strapi }) => {\n const config = getService(strapi, 'preview-config');\n\n return {\n async getPreviewUrl(uid: UID.ContentType, params: HandlerParams) {\n const handler = config.getPreviewHandler();\n\n try {\n // Try to get the preview URL from the user-defined handler\n return handler(uid, params);\n } catch (error) {\n // Log the error and throw a generic error\n strapi.log.error(`Failed to get preview URL: ${error}`);\n throw new errors.ApplicationError('Failed to get preview URL');\n }\n\n return;\n },\n };\n};\n\nexport { createPreviewService };\n"],"names":["createPreviewService","strapi","config","getService","getPreviewUrl","uid","params","handler","getPreviewHandler","error","log","errors","ApplicationError"],"mappings":";;;;;AAMA;;AAEC,IACKA,MAAAA,oBAAAA,GAAuB,CAAC,EAAEC,MAAM,EAA2B,GAAA;IAC/D,MAAMC,MAAAA,GAASC,iBAAWF,MAAQ,EAAA,gBAAA,CAAA;IAElC,OAAO;QACL,MAAMG,aAAAA,CAAAA,CAAcC,GAAoB,EAAEC,MAAqB,EAAA;YAC7D,MAAMC,OAAAA,GAAUL,OAAOM,iBAAiB,EAAA;YAExC,IAAI;;AAEF,gBAAA,OAAOD,QAAQF,GAAKC,EAAAA,MAAAA,CAAAA;AACtB,aAAA,CAAE,OAAOG,KAAO,EAAA;;gBAEdR,MAAOS,CAAAA,GAAG,CAACD,KAAK,CAAC,CAAC,2BAA2B,EAAEA,MAAM,CAAC,CAAA;gBACtD,MAAM,IAAIE,kBAAOC,CAAAA,gBAAgB,CAAC,2BAAA,CAAA;AACpC;AAEA,YAAA;AACF;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"preview.js","sources":["../../../../server/src/preview/services/preview.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nimport { getService } from '../utils';\nimport type { HandlerParams } from './preview-config';\n\n/**\n * Responsible of routing an entry to a preview URL.\n */\nconst createPreviewService = ({ strapi }: { strapi: Core.Strapi }) => {\n const config = getService(strapi, 'preview-config');\n\n return {\n async getPreviewUrl(uid: UID.ContentType, params: HandlerParams) {\n const isConfigured = config.isConfigured();\n\n if (!isConfigured) {\n throw new errors.NotFoundError('Preview config not found');\n }\n\n const handler = config.getPreviewHandler();\n\n try {\n // Try to get the preview URL from the user-defined handler\n return handler(uid, params);\n } catch (error) {\n // Log the error and throw a generic error\n strapi.log.error(`Failed to get preview URL: ${error}`);\n throw new errors.ApplicationError('Failed to get preview URL');\n }\n },\n };\n};\n\nexport { createPreviewService };\n"],"names":["createPreviewService","strapi","config","getService","getPreviewUrl","uid","params","isConfigured","errors","NotFoundError","handler","getPreviewHandler","error","log","ApplicationError"],"mappings":";;;;;AAMA;;AAEC,IACKA,MAAAA,oBAAAA,GAAuB,CAAC,EAAEC,MAAM,EAA2B,GAAA;IAC/D,MAAMC,MAAAA,GAASC,iBAAWF,MAAQ,EAAA,gBAAA,CAAA;IAElC,OAAO;QACL,MAAMG,aAAAA,CAAAA,CAAcC,GAAoB,EAAEC,MAAqB,EAAA;YAC7D,MAAMC,YAAAA,GAAeL,OAAOK,YAAY,EAAA;AAExC,YAAA,IAAI,CAACA,YAAc,EAAA;gBACjB,MAAM,IAAIC,kBAAOC,CAAAA,aAAa,CAAC,0BAAA,CAAA;AACjC;YAEA,MAAMC,OAAAA,GAAUR,OAAOS,iBAAiB,EAAA;YAExC,IAAI;;AAEF,gBAAA,OAAOD,QAAQL,GAAKC,EAAAA,MAAAA,CAAAA;AACtB,aAAA,CAAE,OAAOM,KAAO,EAAA;;gBAEdX,MAAOY,CAAAA,GAAG,CAACD,KAAK,CAAC,CAAC,2BAA2B,EAAEA,MAAM,CAAC,CAAA;gBACtD,MAAM,IAAIJ,kBAAOM,CAAAA,gBAAgB,CAAC,2BAAA,CAAA;AACpC;AACF;AACF,KAAA;AACF;;;;"}
@@ -7,6 +7,10 @@ import { getService } from '../utils.mjs';
7
7
  const config = getService(strapi, 'preview-config');
8
8
  return {
9
9
  async getPreviewUrl (uid, params) {
10
+ const isConfigured = config.isConfigured();
11
+ if (!isConfigured) {
12
+ throw new errors.NotFoundError('Preview config not found');
13
+ }
10
14
  const handler = config.getPreviewHandler();
11
15
  try {
12
16
  // Try to get the preview URL from the user-defined handler
@@ -16,7 +20,6 @@ import { getService } from '../utils.mjs';
16
20
  strapi.log.error(`Failed to get preview URL: ${error}`);
17
21
  throw new errors.ApplicationError('Failed to get preview URL');
18
22
  }
19
- return;
20
23
  }
21
24
  };
22
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"preview.mjs","sources":["../../../../server/src/preview/services/preview.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nimport { getService } from '../utils';\nimport type { HandlerParams } from './preview-config';\n\n/**\n * Responsible of routing an entry to a preview URL.\n */\nconst createPreviewService = ({ strapi }: { strapi: Core.Strapi }) => {\n const config = getService(strapi, 'preview-config');\n\n return {\n async getPreviewUrl(uid: UID.ContentType, params: HandlerParams) {\n const handler = config.getPreviewHandler();\n\n try {\n // Try to get the preview URL from the user-defined handler\n return handler(uid, params);\n } catch (error) {\n // Log the error and throw a generic error\n strapi.log.error(`Failed to get preview URL: ${error}`);\n throw new errors.ApplicationError('Failed to get preview URL');\n }\n\n return;\n },\n };\n};\n\nexport { createPreviewService };\n"],"names":["createPreviewService","strapi","config","getService","getPreviewUrl","uid","params","handler","getPreviewHandler","error","log","errors","ApplicationError"],"mappings":";;;AAMA;;AAEC,IACKA,MAAAA,oBAAAA,GAAuB,CAAC,EAAEC,MAAM,EAA2B,GAAA;IAC/D,MAAMC,MAAAA,GAASC,WAAWF,MAAQ,EAAA,gBAAA,CAAA;IAElC,OAAO;QACL,MAAMG,aAAAA,CAAAA,CAAcC,GAAoB,EAAEC,MAAqB,EAAA;YAC7D,MAAMC,OAAAA,GAAUL,OAAOM,iBAAiB,EAAA;YAExC,IAAI;;AAEF,gBAAA,OAAOD,QAAQF,GAAKC,EAAAA,MAAAA,CAAAA;AACtB,aAAA,CAAE,OAAOG,KAAO,EAAA;;gBAEdR,MAAOS,CAAAA,GAAG,CAACD,KAAK,CAAC,CAAC,2BAA2B,EAAEA,MAAM,CAAC,CAAA;gBACtD,MAAM,IAAIE,MAAOC,CAAAA,gBAAgB,CAAC,2BAAA,CAAA;AACpC;AAEA,YAAA;AACF;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"preview.mjs","sources":["../../../../server/src/preview/services/preview.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nimport { getService } from '../utils';\nimport type { HandlerParams } from './preview-config';\n\n/**\n * Responsible of routing an entry to a preview URL.\n */\nconst createPreviewService = ({ strapi }: { strapi: Core.Strapi }) => {\n const config = getService(strapi, 'preview-config');\n\n return {\n async getPreviewUrl(uid: UID.ContentType, params: HandlerParams) {\n const isConfigured = config.isConfigured();\n\n if (!isConfigured) {\n throw new errors.NotFoundError('Preview config not found');\n }\n\n const handler = config.getPreviewHandler();\n\n try {\n // Try to get the preview URL from the user-defined handler\n return handler(uid, params);\n } catch (error) {\n // Log the error and throw a generic error\n strapi.log.error(`Failed to get preview URL: ${error}`);\n throw new errors.ApplicationError('Failed to get preview URL');\n }\n },\n };\n};\n\nexport { createPreviewService };\n"],"names":["createPreviewService","strapi","config","getService","getPreviewUrl","uid","params","isConfigured","errors","NotFoundError","handler","getPreviewHandler","error","log","ApplicationError"],"mappings":";;;AAMA;;AAEC,IACKA,MAAAA,oBAAAA,GAAuB,CAAC,EAAEC,MAAM,EAA2B,GAAA;IAC/D,MAAMC,MAAAA,GAASC,WAAWF,MAAQ,EAAA,gBAAA,CAAA;IAElC,OAAO;QACL,MAAMG,aAAAA,CAAAA,CAAcC,GAAoB,EAAEC,MAAqB,EAAA;YAC7D,MAAMC,YAAAA,GAAeL,OAAOK,YAAY,EAAA;AAExC,YAAA,IAAI,CAACA,YAAc,EAAA;gBACjB,MAAM,IAAIC,MAAOC,CAAAA,aAAa,CAAC,0BAAA,CAAA;AACjC;YAEA,MAAMC,OAAAA,GAAUR,OAAOS,iBAAiB,EAAA;YAExC,IAAI;;AAEF,gBAAA,OAAOD,QAAQL,GAAKC,EAAAA,MAAAA,CAAAA;AACtB,aAAA,CAAE,OAAOM,KAAO,EAAA;;gBAEdX,MAAOY,CAAAA,GAAG,CAACD,KAAK,CAAC,CAAC,2BAA2B,EAAEA,MAAM,CAAC,CAAA;gBACtD,MAAM,IAAIJ,MAAOM,CAAAA,gBAAgB,CAAC,2BAAA,CAAA;AACpC;AACF;AACF,KAAA;AACF;;;;"}
@@ -3,11 +3,13 @@
3
3
  var admin = require('./admin.js');
4
4
  var index = require('../history/index.js');
5
5
  var index$1 = require('../preview/index.js');
6
+ var index$2 = require('../homepage/index.js');
6
7
 
7
8
  var routes = {
8
9
  admin,
9
10
  ...index.routes ? index.routes : {},
10
- ...index$1.routes ? index$1.routes : {}
11
+ ...index$1.routes ? index$1.routes : {},
12
+ ...index$2.routes
11
13
  };
12
14
 
13
15
  module.exports = routes;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import admin from './admin';\nimport history from '../history';\nimport preview from '../preview';\n\nexport default {\n admin,\n ...(history.routes ? history.routes : {}),\n ...(preview.routes ? preview.routes : {}),\n};\n"],"names":["admin","history","routes","preview"],"mappings":";;;;;;AAIA,aAAe;AACbA,IAAAA,KAAAA;AACA,IAAA,GAAIC,MAAQC,MAAM,GAAGD,MAAQC,MAAM,GAAG,EAAE;AACxC,IAAA,GAAIC,QAAQD,MAAM,GAAGC,QAAQD,MAAM,GAAG;AACxC,CAAE;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import admin from './admin';\nimport history from '../history';\nimport preview from '../preview';\nimport homepage from '../homepage';\n\nexport default {\n admin,\n ...(history.routes ? history.routes : {}),\n ...(preview.routes ? preview.routes : {}),\n ...homepage.routes,\n};\n"],"names":["admin","history","routes","preview","homepage"],"mappings":";;;;;;;AAKA,aAAe;AACbA,IAAAA,KAAAA;AACA,IAAA,GAAIC,MAAQC,MAAM,GAAGD,MAAQC,MAAM,GAAG,EAAE;AACxC,IAAA,GAAIC,QAAQD,MAAM,GAAGC,QAAQD,MAAM,GAAG,EAAE;AACxC,IAAA,GAAGE,QAASF;AACd,CAAE;;;;"}
@@ -1,11 +1,13 @@
1
1
  import admin from './admin.mjs';
2
2
  import history from '../history/index.mjs';
3
3
  import preview from '../preview/index.mjs';
4
+ import homepage from '../homepage/index.mjs';
4
5
 
5
6
  var routes = {
6
7
  admin,
7
8
  ...history.routes ? history.routes : {},
8
- ...preview.routes ? preview.routes : {}
9
+ ...preview.routes ? preview.routes : {},
10
+ ...homepage.routes
9
11
  };
10
12
 
11
13
  export { routes as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import admin from './admin';\nimport history from '../history';\nimport preview from '../preview';\n\nexport default {\n admin,\n ...(history.routes ? history.routes : {}),\n ...(preview.routes ? preview.routes : {}),\n};\n"],"names":["admin","history","routes","preview"],"mappings":";;;;AAIA,aAAe;AACbA,IAAAA,KAAAA;AACA,IAAA,GAAIC,QAAQC,MAAM,GAAGD,QAAQC,MAAM,GAAG,EAAE;AACxC,IAAA,GAAIC,QAAQD,MAAM,GAAGC,QAAQD,MAAM,GAAG;AACxC,CAAE;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import admin from './admin';\nimport history from '../history';\nimport preview from '../preview';\nimport homepage from '../homepage';\n\nexport default {\n admin,\n ...(history.routes ? history.routes : {}),\n ...(preview.routes ? preview.routes : {}),\n ...homepage.routes,\n};\n"],"names":["admin","history","routes","preview","homepage"],"mappings":";;;;;AAKA,aAAe;AACbA,IAAAA,KAAAA;AACA,IAAA,GAAIC,QAAQC,MAAM,GAAGD,QAAQC,MAAM,GAAG,EAAE;AACxC,IAAA,GAAIC,QAAQD,MAAM,GAAGC,QAAQD,MAAM,GAAG,EAAE;AACxC,IAAA,GAAGE,SAASF;AACd,CAAE;;;;"}
@@ -25,7 +25,10 @@ var dataMapper = (()=>({
25
25
  id: {
26
26
  type: 'integer'
27
27
  },
28
- ...formatAttributes(contentType)
28
+ ...formatAttributes(contentType),
29
+ documentId: {
30
+ type: 'string'
31
+ }
29
32
  }
30
33
  };
31
34
  },
@@ -1 +1 @@
1
- {"version":3,"file":"data-mapper.js","sources":["../../../server/src/services/data-mapper.ts"],"sourcesContent":["import { pick, getOr } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Schema, Struct } from '@strapi/types';\n\nconst dtoFields = [\n 'uid',\n 'isDisplayed',\n 'apiID',\n 'kind',\n 'category',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'pluginOptions',\n];\n\nexport default () => ({\n toContentManagerModel(contentType: Struct.ComponentSchema) {\n return {\n ...contentType,\n apiID: contentType.modelName,\n isDisplayed: isVisible(contentType),\n attributes: {\n id: {\n type: 'integer',\n },\n ...formatAttributes(contentType),\n },\n };\n },\n\n toDto: pick(dtoFields),\n});\n\nconst formatAttributes = (contentType: Struct.ComponentSchema) => {\n const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypesUtils;\n\n // only get attributes that can be seen in the auto generated Edit view or List view\n return getVisibleAttributes(contentType)\n .concat(getTimestamps(contentType))\n .concat(getCreatorFields(contentType))\n .reduce((acc: any, key: string) => {\n const attribute = contentType.attributes[key];\n\n // ignore morph until they are handled in the front\n if (attribute.type === 'relation' && attribute.relation.toLowerCase().includes('morph')) {\n return acc;\n }\n\n acc[key] = formatAttribute(key, attribute);\n return acc;\n }, {});\n};\n\n// FIXME: not needed\nconst formatAttribute = (key: any, attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.type === 'relation') {\n return toRelation(attribute);\n }\n\n return attribute;\n};\n\n// FIXME: not needed\nconst toRelation = (attribute: Schema.Attribute.Relation) => {\n return {\n ...attribute,\n type: 'relation',\n targetModel: 'target' in attribute ? attribute.target : undefined,\n relationType: attribute.relation,\n };\n};\n\nconst isVisible = (model: Struct.ComponentSchema): boolean =>\n getOr(true, 'pluginOptions.content-manager.visible', model) === true;\n"],"names":["dtoFields","toContentManagerModel","contentType","apiID","modelName","isDisplayed","isVisible","attributes","id","type","formatAttributes","toDto","pick","getVisibleAttributes","getTimestamps","getCreatorFields","contentTypesUtils","concat","reduce","acc","key","attribute","relation","toLowerCase","includes","formatAttribute","toRelation","targetModel","target","undefined","relationType","model","getOr"],"mappings":";;;;;AAKA,MAAMA,SAAY,GAAA;AAChB,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAED,iBAAe,CAAA,KAAO;AACpBC,QAAAA,qBAAAA,CAAAA,CAAsBC,WAAmC,EAAA;YACvD,OAAO;AACL,gBAAA,GAAGA,WAAW;AACdC,gBAAAA,KAAAA,EAAOD,YAAYE,SAAS;AAC5BC,gBAAAA,WAAAA,EAAaC,SAAUJ,CAAAA,WAAAA,CAAAA;gBACvBK,UAAY,EAAA;oBACVC,EAAI,EAAA;wBACFC,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA,GAAGC,iBAAiBR,WAAY;AAClC;AACF,aAAA;AACF,SAAA;AAEAS,QAAAA,KAAAA,EAAOC,OAAKZ,CAAAA,SAAAA;AACd,KAAA,CAAC;AAED,MAAMU,mBAAmB,CAACR,WAAAA,GAAAA;AACxB,IAAA,MAAM,EAAEW,oBAAoB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGC,wBAAAA;;AAGlE,IAAA,OAAOH,oBAAqBX,CAAAA,WAAAA,CAAAA,CACzBe,MAAM,CAACH,aAAcZ,CAAAA,WAAAA,CAAAA,CAAAA,CACrBe,MAAM,CAACF,gBAAiBb,CAAAA,WAAAA,CAAAA,CAAAA,CACxBgB,MAAM,CAAC,CAACC,GAAUC,EAAAA,GAAAA,GAAAA;AACjB,QAAA,MAAMC,SAAYnB,GAAAA,WAAAA,CAAYK,UAAU,CAACa,GAAI,CAAA;;QAG7C,IAAIC,SAAAA,CAAUZ,IAAI,KAAK,UAAcY,IAAAA,SAAAA,CAAUC,QAAQ,CAACC,WAAW,EAAA,CAAGC,QAAQ,CAAC,OAAU,CAAA,EAAA;YACvF,OAAOL,GAAAA;AACT;AAEAA,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGK,eAAAA,CAAgBL,GAAKC,EAAAA,SAAAA,CAAAA;QAChC,OAAOF,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACR,CAAA;AAEA;AACA,MAAMM,eAAAA,GAAkB,CAACL,GAAUC,EAAAA,SAAAA,GAAAA;IACjC,IAAIA,SAAAA,CAAUZ,IAAI,KAAK,UAAY,EAAA;AACjC,QAAA,OAAOiB,UAAWL,CAAAA,SAAAA,CAAAA;AACpB;IAEA,OAAOA,SAAAA;AACT,CAAA;AAEA;AACA,MAAMK,aAAa,CAACL,SAAAA,GAAAA;IAClB,OAAO;AACL,QAAA,GAAGA,SAAS;QACZZ,IAAM,EAAA,UAAA;AACNkB,QAAAA,WAAAA,EAAa,QAAYN,IAAAA,SAAAA,GAAYA,SAAUO,CAAAA,MAAM,GAAGC,SAAAA;AACxDC,QAAAA,YAAAA,EAAcT,UAAUC;AAC1B,KAAA;AACF,CAAA;AAEA,MAAMhB,YAAY,CAACyB,KAAAA,GACjBC,QAAM,CAAA,IAAA,EAAM,yCAAyCD,KAAW,CAAA,KAAA,IAAA;;;;"}
1
+ {"version":3,"file":"data-mapper.js","sources":["../../../server/src/services/data-mapper.ts"],"sourcesContent":["import { pick, getOr } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Schema, Struct } from '@strapi/types';\n\nconst dtoFields = [\n 'uid',\n 'isDisplayed',\n 'apiID',\n 'kind',\n 'category',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'pluginOptions',\n];\n\nexport default () => ({\n toContentManagerModel(contentType: Struct.ComponentSchema) {\n return {\n ...contentType,\n apiID: contentType.modelName,\n isDisplayed: isVisible(contentType),\n attributes: {\n id: {\n type: 'integer',\n },\n ...formatAttributes(contentType),\n documentId: {\n type: 'string',\n },\n },\n };\n },\n\n toDto: pick(dtoFields),\n});\n\nconst formatAttributes = (contentType: Struct.ComponentSchema) => {\n const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypesUtils;\n\n // only get attributes that can be seen in the auto generated Edit view or List view\n return getVisibleAttributes(contentType)\n .concat(getTimestamps(contentType))\n .concat(getCreatorFields(contentType))\n .reduce((acc: any, key: string) => {\n const attribute = contentType.attributes[key];\n\n // ignore morph until they are handled in the front\n if (attribute.type === 'relation' && attribute.relation.toLowerCase().includes('morph')) {\n return acc;\n }\n\n acc[key] = formatAttribute(key, attribute);\n return acc;\n }, {});\n};\n\n// FIXME: not needed\nconst formatAttribute = (key: any, attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.type === 'relation') {\n return toRelation(attribute);\n }\n\n return attribute;\n};\n\n// FIXME: not needed\nconst toRelation = (attribute: Schema.Attribute.Relation) => {\n return {\n ...attribute,\n type: 'relation',\n targetModel: 'target' in attribute ? attribute.target : undefined,\n relationType: attribute.relation,\n };\n};\n\nconst isVisible = (model: Struct.ComponentSchema): boolean =>\n getOr(true, 'pluginOptions.content-manager.visible', model) === true;\n"],"names":["dtoFields","toContentManagerModel","contentType","apiID","modelName","isDisplayed","isVisible","attributes","id","type","formatAttributes","documentId","toDto","pick","getVisibleAttributes","getTimestamps","getCreatorFields","contentTypesUtils","concat","reduce","acc","key","attribute","relation","toLowerCase","includes","formatAttribute","toRelation","targetModel","target","undefined","relationType","model","getOr"],"mappings":";;;;;AAKA,MAAMA,SAAY,GAAA;AAChB,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAED,iBAAe,CAAA,KAAO;AACpBC,QAAAA,qBAAAA,CAAAA,CAAsBC,WAAmC,EAAA;YACvD,OAAO;AACL,gBAAA,GAAGA,WAAW;AACdC,gBAAAA,KAAAA,EAAOD,YAAYE,SAAS;AAC5BC,gBAAAA,WAAAA,EAAaC,SAAUJ,CAAAA,WAAAA,CAAAA;gBACvBK,UAAY,EAAA;oBACVC,EAAI,EAAA;wBACFC,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA,GAAGC,iBAAiBR,WAAY,CAAA;oBAChCS,UAAY,EAAA;wBACVF,IAAM,EAAA;AACR;AACF;AACF,aAAA;AACF,SAAA;AAEAG,QAAAA,KAAAA,EAAOC,OAAKb,CAAAA,SAAAA;AACd,KAAA,CAAC;AAED,MAAMU,mBAAmB,CAACR,WAAAA,GAAAA;AACxB,IAAA,MAAM,EAAEY,oBAAoB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGC,wBAAAA;;AAGlE,IAAA,OAAOH,oBAAqBZ,CAAAA,WAAAA,CAAAA,CACzBgB,MAAM,CAACH,aAAcb,CAAAA,WAAAA,CAAAA,CAAAA,CACrBgB,MAAM,CAACF,gBAAiBd,CAAAA,WAAAA,CAAAA,CAAAA,CACxBiB,MAAM,CAAC,CAACC,GAAUC,EAAAA,GAAAA,GAAAA;AACjB,QAAA,MAAMC,SAAYpB,GAAAA,WAAAA,CAAYK,UAAU,CAACc,GAAI,CAAA;;QAG7C,IAAIC,SAAAA,CAAUb,IAAI,KAAK,UAAca,IAAAA,SAAAA,CAAUC,QAAQ,CAACC,WAAW,EAAA,CAAGC,QAAQ,CAAC,OAAU,CAAA,EAAA;YACvF,OAAOL,GAAAA;AACT;AAEAA,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGK,eAAAA,CAAgBL,GAAKC,EAAAA,SAAAA,CAAAA;QAChC,OAAOF,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACR,CAAA;AAEA;AACA,MAAMM,eAAAA,GAAkB,CAACL,GAAUC,EAAAA,SAAAA,GAAAA;IACjC,IAAIA,SAAAA,CAAUb,IAAI,KAAK,UAAY,EAAA;AACjC,QAAA,OAAOkB,UAAWL,CAAAA,SAAAA,CAAAA;AACpB;IAEA,OAAOA,SAAAA;AACT,CAAA;AAEA;AACA,MAAMK,aAAa,CAACL,SAAAA,GAAAA;IAClB,OAAO;AACL,QAAA,GAAGA,SAAS;QACZb,IAAM,EAAA,UAAA;AACNmB,QAAAA,WAAAA,EAAa,QAAYN,IAAAA,SAAAA,GAAYA,SAAUO,CAAAA,MAAM,GAAGC,SAAAA;AACxDC,QAAAA,YAAAA,EAAcT,UAAUC;AAC1B,KAAA;AACF,CAAA;AAEA,MAAMjB,YAAY,CAAC0B,KAAAA,GACjBC,QAAM,CAAA,IAAA,EAAM,yCAAyCD,KAAW,CAAA,KAAA,IAAA;;;;"}
@@ -23,7 +23,10 @@ var dataMapper = (()=>({
23
23
  id: {
24
24
  type: 'integer'
25
25
  },
26
- ...formatAttributes(contentType)
26
+ ...formatAttributes(contentType),
27
+ documentId: {
28
+ type: 'string'
29
+ }
27
30
  }
28
31
  };
29
32
  },
@@ -1 +1 @@
1
- {"version":3,"file":"data-mapper.mjs","sources":["../../../server/src/services/data-mapper.ts"],"sourcesContent":["import { pick, getOr } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Schema, Struct } from '@strapi/types';\n\nconst dtoFields = [\n 'uid',\n 'isDisplayed',\n 'apiID',\n 'kind',\n 'category',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'pluginOptions',\n];\n\nexport default () => ({\n toContentManagerModel(contentType: Struct.ComponentSchema) {\n return {\n ...contentType,\n apiID: contentType.modelName,\n isDisplayed: isVisible(contentType),\n attributes: {\n id: {\n type: 'integer',\n },\n ...formatAttributes(contentType),\n },\n };\n },\n\n toDto: pick(dtoFields),\n});\n\nconst formatAttributes = (contentType: Struct.ComponentSchema) => {\n const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypesUtils;\n\n // only get attributes that can be seen in the auto generated Edit view or List view\n return getVisibleAttributes(contentType)\n .concat(getTimestamps(contentType))\n .concat(getCreatorFields(contentType))\n .reduce((acc: any, key: string) => {\n const attribute = contentType.attributes[key];\n\n // ignore morph until they are handled in the front\n if (attribute.type === 'relation' && attribute.relation.toLowerCase().includes('morph')) {\n return acc;\n }\n\n acc[key] = formatAttribute(key, attribute);\n return acc;\n }, {});\n};\n\n// FIXME: not needed\nconst formatAttribute = (key: any, attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.type === 'relation') {\n return toRelation(attribute);\n }\n\n return attribute;\n};\n\n// FIXME: not needed\nconst toRelation = (attribute: Schema.Attribute.Relation) => {\n return {\n ...attribute,\n type: 'relation',\n targetModel: 'target' in attribute ? attribute.target : undefined,\n relationType: attribute.relation,\n };\n};\n\nconst isVisible = (model: Struct.ComponentSchema): boolean =>\n getOr(true, 'pluginOptions.content-manager.visible', model) === true;\n"],"names":["dtoFields","toContentManagerModel","contentType","apiID","modelName","isDisplayed","isVisible","attributes","id","type","formatAttributes","toDto","pick","getVisibleAttributes","getTimestamps","getCreatorFields","contentTypesUtils","concat","reduce","acc","key","attribute","relation","toLowerCase","includes","formatAttribute","toRelation","targetModel","target","undefined","relationType","model","getOr"],"mappings":";;;AAKA,MAAMA,SAAY,GAAA;AAChB,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAED,iBAAe,CAAA,KAAO;AACpBC,QAAAA,qBAAAA,CAAAA,CAAsBC,WAAmC,EAAA;YACvD,OAAO;AACL,gBAAA,GAAGA,WAAW;AACdC,gBAAAA,KAAAA,EAAOD,YAAYE,SAAS;AAC5BC,gBAAAA,WAAAA,EAAaC,SAAUJ,CAAAA,WAAAA,CAAAA;gBACvBK,UAAY,EAAA;oBACVC,EAAI,EAAA;wBACFC,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA,GAAGC,iBAAiBR,WAAY;AAClC;AACF,aAAA;AACF,SAAA;AAEAS,QAAAA,KAAAA,EAAOC,IAAKZ,CAAAA,SAAAA;AACd,KAAA,CAAC;AAED,MAAMU,mBAAmB,CAACR,WAAAA,GAAAA;AACxB,IAAA,MAAM,EAAEW,oBAAoB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGC,YAAAA;;AAGlE,IAAA,OAAOH,oBAAqBX,CAAAA,WAAAA,CAAAA,CACzBe,MAAM,CAACH,aAAcZ,CAAAA,WAAAA,CAAAA,CAAAA,CACrBe,MAAM,CAACF,gBAAiBb,CAAAA,WAAAA,CAAAA,CAAAA,CACxBgB,MAAM,CAAC,CAACC,GAAUC,EAAAA,GAAAA,GAAAA;AACjB,QAAA,MAAMC,SAAYnB,GAAAA,WAAAA,CAAYK,UAAU,CAACa,GAAI,CAAA;;QAG7C,IAAIC,SAAAA,CAAUZ,IAAI,KAAK,UAAcY,IAAAA,SAAAA,CAAUC,QAAQ,CAACC,WAAW,EAAA,CAAGC,QAAQ,CAAC,OAAU,CAAA,EAAA;YACvF,OAAOL,GAAAA;AACT;AAEAA,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGK,eAAAA,CAAgBL,GAAKC,EAAAA,SAAAA,CAAAA;QAChC,OAAOF,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACR,CAAA;AAEA;AACA,MAAMM,eAAAA,GAAkB,CAACL,GAAUC,EAAAA,SAAAA,GAAAA;IACjC,IAAIA,SAAAA,CAAUZ,IAAI,KAAK,UAAY,EAAA;AACjC,QAAA,OAAOiB,UAAWL,CAAAA,SAAAA,CAAAA;AACpB;IAEA,OAAOA,SAAAA;AACT,CAAA;AAEA;AACA,MAAMK,aAAa,CAACL,SAAAA,GAAAA;IAClB,OAAO;AACL,QAAA,GAAGA,SAAS;QACZZ,IAAM,EAAA,UAAA;AACNkB,QAAAA,WAAAA,EAAa,QAAYN,IAAAA,SAAAA,GAAYA,SAAUO,CAAAA,MAAM,GAAGC,SAAAA;AACxDC,QAAAA,YAAAA,EAAcT,UAAUC;AAC1B,KAAA;AACF,CAAA;AAEA,MAAMhB,YAAY,CAACyB,KAAAA,GACjBC,KAAM,CAAA,IAAA,EAAM,yCAAyCD,KAAW,CAAA,KAAA,IAAA;;;;"}
1
+ {"version":3,"file":"data-mapper.mjs","sources":["../../../server/src/services/data-mapper.ts"],"sourcesContent":["import { pick, getOr } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Schema, Struct } from '@strapi/types';\n\nconst dtoFields = [\n 'uid',\n 'isDisplayed',\n 'apiID',\n 'kind',\n 'category',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'pluginOptions',\n];\n\nexport default () => ({\n toContentManagerModel(contentType: Struct.ComponentSchema) {\n return {\n ...contentType,\n apiID: contentType.modelName,\n isDisplayed: isVisible(contentType),\n attributes: {\n id: {\n type: 'integer',\n },\n ...formatAttributes(contentType),\n documentId: {\n type: 'string',\n },\n },\n };\n },\n\n toDto: pick(dtoFields),\n});\n\nconst formatAttributes = (contentType: Struct.ComponentSchema) => {\n const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypesUtils;\n\n // only get attributes that can be seen in the auto generated Edit view or List view\n return getVisibleAttributes(contentType)\n .concat(getTimestamps(contentType))\n .concat(getCreatorFields(contentType))\n .reduce((acc: any, key: string) => {\n const attribute = contentType.attributes[key];\n\n // ignore morph until they are handled in the front\n if (attribute.type === 'relation' && attribute.relation.toLowerCase().includes('morph')) {\n return acc;\n }\n\n acc[key] = formatAttribute(key, attribute);\n return acc;\n }, {});\n};\n\n// FIXME: not needed\nconst formatAttribute = (key: any, attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.type === 'relation') {\n return toRelation(attribute);\n }\n\n return attribute;\n};\n\n// FIXME: not needed\nconst toRelation = (attribute: Schema.Attribute.Relation) => {\n return {\n ...attribute,\n type: 'relation',\n targetModel: 'target' in attribute ? attribute.target : undefined,\n relationType: attribute.relation,\n };\n};\n\nconst isVisible = (model: Struct.ComponentSchema): boolean =>\n getOr(true, 'pluginOptions.content-manager.visible', model) === true;\n"],"names":["dtoFields","toContentManagerModel","contentType","apiID","modelName","isDisplayed","isVisible","attributes","id","type","formatAttributes","documentId","toDto","pick","getVisibleAttributes","getTimestamps","getCreatorFields","contentTypesUtils","concat","reduce","acc","key","attribute","relation","toLowerCase","includes","formatAttribute","toRelation","targetModel","target","undefined","relationType","model","getOr"],"mappings":";;;AAKA,MAAMA,SAAY,GAAA;AAChB,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAED,iBAAe,CAAA,KAAO;AACpBC,QAAAA,qBAAAA,CAAAA,CAAsBC,WAAmC,EAAA;YACvD,OAAO;AACL,gBAAA,GAAGA,WAAW;AACdC,gBAAAA,KAAAA,EAAOD,YAAYE,SAAS;AAC5BC,gBAAAA,WAAAA,EAAaC,SAAUJ,CAAAA,WAAAA,CAAAA;gBACvBK,UAAY,EAAA;oBACVC,EAAI,EAAA;wBACFC,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA,GAAGC,iBAAiBR,WAAY,CAAA;oBAChCS,UAAY,EAAA;wBACVF,IAAM,EAAA;AACR;AACF;AACF,aAAA;AACF,SAAA;AAEAG,QAAAA,KAAAA,EAAOC,IAAKb,CAAAA,SAAAA;AACd,KAAA,CAAC;AAED,MAAMU,mBAAmB,CAACR,WAAAA,GAAAA;AACxB,IAAA,MAAM,EAAEY,oBAAoB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGC,YAAAA;;AAGlE,IAAA,OAAOH,oBAAqBZ,CAAAA,WAAAA,CAAAA,CACzBgB,MAAM,CAACH,aAAcb,CAAAA,WAAAA,CAAAA,CAAAA,CACrBgB,MAAM,CAACF,gBAAiBd,CAAAA,WAAAA,CAAAA,CAAAA,CACxBiB,MAAM,CAAC,CAACC,GAAUC,EAAAA,GAAAA,GAAAA;AACjB,QAAA,MAAMC,SAAYpB,GAAAA,WAAAA,CAAYK,UAAU,CAACc,GAAI,CAAA;;QAG7C,IAAIC,SAAAA,CAAUb,IAAI,KAAK,UAAca,IAAAA,SAAAA,CAAUC,QAAQ,CAACC,WAAW,EAAA,CAAGC,QAAQ,CAAC,OAAU,CAAA,EAAA;YACvF,OAAOL,GAAAA;AACT;AAEAA,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGK,eAAAA,CAAgBL,GAAKC,EAAAA,SAAAA,CAAAA;QAChC,OAAOF,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACR,CAAA;AAEA;AACA,MAAMM,eAAAA,GAAkB,CAACL,GAAUC,EAAAA,SAAAA,GAAAA;IACjC,IAAIA,SAAAA,CAAUb,IAAI,KAAK,UAAY,EAAA;AACjC,QAAA,OAAOkB,UAAWL,CAAAA,SAAAA,CAAAA;AACpB;IAEA,OAAOA,SAAAA;AACT,CAAA;AAEA;AACA,MAAMK,aAAa,CAACL,SAAAA,GAAAA;IAClB,OAAO;AACL,QAAA,GAAGA,SAAS;QACZb,IAAM,EAAA,UAAA;AACNmB,QAAAA,WAAAA,EAAa,QAAYN,IAAAA,SAAAA,GAAYA,SAAUO,CAAAA,MAAM,GAAGC,SAAAA;AACxDC,QAAAA,YAAAA,EAAcT,UAAUC;AAC1B,KAAA;AACF,CAAA;AAEA,MAAMjB,YAAY,CAAC0B,KAAAA,GACjBC,KAAM,CAAA,IAAA,EAAM,yCAAyCD,KAAW,CAAA,KAAA,IAAA;;;;"}
@@ -91,8 +91,15 @@ const documentManager = ({ strapi })=>{
91
91
  },
92
92
  async clone (id, body, uid) {
93
93
  const populate$1 = await populate.buildDeepPopulate(uid);
94
+ // Extract the locale to pass it as a plain param
95
+ const locale = body?.locale;
94
96
  const params = {
95
- data: omitIdField(body),
97
+ // Ensure id and documentId are not copied to the clone
98
+ data: fp.omit([
99
+ 'id',
100
+ 'documentId'
101
+ ], body),
102
+ locale,
96
103
  populate: populate$1
97
104
  };
98
105
  return strapi.documents(uid).clone({