@strapi/content-manager 0.0.0-next.8f0cdd4f9e4697ffed86c783465297fe532713f8 → 0.0.0-next.913e7071c9410ff8af2e776e25f9fb1c38cb59dd

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 (238) hide show
  1. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +1 -1
  2. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
  4. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/Fields.js +4 -1
  6. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.mjs +5 -2
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  12. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  13. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  14. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  15. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/LeftMenu.js +91 -51
  26. package/dist/admin/components/LeftMenu.js.map +1 -1
  27. package/dist/admin/components/LeftMenu.mjs +93 -53
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/Widgets.js +37 -14
  30. package/dist/admin/components/Widgets.js.map +1 -1
  31. package/dist/admin/components/Widgets.mjs +38 -15
  32. package/dist/admin/components/Widgets.mjs.map +1 -1
  33. package/dist/admin/history/components/VersionHeader.js +1 -0
  34. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  35. package/dist/admin/history/components/VersionHeader.mjs +1 -0
  36. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  37. package/dist/admin/history/components/VersionsList.js +1 -1
  38. package/dist/admin/history/components/VersionsList.js.map +1 -1
  39. package/dist/admin/history/components/VersionsList.mjs +1 -1
  40. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  41. package/dist/admin/history/pages/History.js +7 -7
  42. package/dist/admin/history/pages/History.js.map +1 -1
  43. package/dist/admin/history/pages/History.mjs +7 -7
  44. package/dist/admin/history/pages/History.mjs.map +1 -1
  45. package/dist/admin/layout.js +27 -6
  46. package/dist/admin/layout.js.map +1 -1
  47. package/dist/admin/layout.mjs +28 -7
  48. package/dist/admin/layout.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/EditViewPage.js +19 -22
  50. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  51. package/dist/admin/pages/EditView/EditViewPage.mjs +20 -23
  52. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  54. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  55. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  56. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  57. package/dist/admin/pages/EditView/components/DocumentActions.js +22 -1
  58. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/DocumentActions.mjs +23 -2
  60. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  64. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  68. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  70. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  72. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -1
  74. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +3 -2
  76. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  78. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  80. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
  82. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -4
  84. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +2 -1
  86. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +3 -2
  88. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  90. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  92. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  94. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  96. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormLayout.js +13 -8
  98. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormLayout.mjs +14 -8
  100. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/Header.js +85 -25
  102. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  103. package/dist/admin/pages/EditView/components/Header.mjs +87 -27
  104. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  105. package/dist/admin/pages/EditView/components/InputRenderer.js +20 -7
  106. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  107. package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -7
  108. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  109. package/dist/admin/pages/EditView/utils/data.js +34 -9
  110. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  111. package/dist/admin/pages/EditView/utils/data.mjs +34 -9
  112. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  113. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  114. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  115. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  116. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  117. package/dist/admin/pages/ListView/ListViewPage.js +8 -8
  118. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  119. package/dist/admin/pages/ListView/ListViewPage.mjs +8 -8
  120. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  121. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  122. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  123. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  124. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  125. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  126. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  127. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  128. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  129. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  130. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  131. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  132. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  133. package/dist/admin/preview/components/InputPopover.js +189 -0
  134. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  135. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  136. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  137. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  138. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  139. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  140. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  141. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  142. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  143. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  144. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  145. package/dist/admin/preview/pages/Preview.js +144 -106
  146. package/dist/admin/preview/pages/Preview.js.map +1 -1
  147. package/dist/admin/preview/pages/Preview.mjs +145 -107
  148. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  149. package/dist/admin/preview/utils/constants.js +56 -0
  150. package/dist/admin/preview/utils/constants.js.map +1 -0
  151. package/dist/admin/preview/utils/constants.mjs +52 -0
  152. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  153. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  154. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  155. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  156. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  157. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  158. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  159. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  160. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  161. package/dist/admin/preview/utils/previewScript.js +534 -0
  162. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  163. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  164. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  165. package/dist/admin/services/api.js +2 -1
  166. package/dist/admin/services/api.js.map +1 -1
  167. package/dist/admin/services/api.mjs +2 -1
  168. package/dist/admin/services/api.mjs.map +1 -1
  169. package/dist/admin/services/documents.js +31 -13
  170. package/dist/admin/services/documents.js.map +1 -1
  171. package/dist/admin/services/documents.mjs +31 -13
  172. package/dist/admin/services/documents.mjs.map +1 -1
  173. package/dist/admin/services/homepage.js +2 -11
  174. package/dist/admin/services/homepage.js.map +1 -1
  175. package/dist/admin/services/homepage.mjs +3 -11
  176. package/dist/admin/services/homepage.mjs.map +1 -1
  177. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  178. package/dist/admin/src/components/Widgets.d.ts +6 -2
  179. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  180. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  181. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  182. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
  183. package/dist/admin/src/pages/EditView/components/Header.d.ts +4 -0
  184. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  185. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  186. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  187. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  188. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  189. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  190. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  191. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  192. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  193. package/dist/admin/src/services/api.d.ts +1 -1
  194. package/dist/admin/src/services/components.d.ts +2 -2
  195. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  196. package/dist/admin/src/services/documents.d.ts +16 -16
  197. package/dist/admin/src/services/homepage.d.ts +2 -6
  198. package/dist/admin/src/services/init.d.ts +1 -1
  199. package/dist/admin/src/services/relations.d.ts +2 -2
  200. package/dist/admin/src/services/uid.d.ts +3 -3
  201. package/dist/admin/translations/en.json.js +6 -0
  202. package/dist/admin/translations/en.json.js.map +1 -1
  203. package/dist/admin/translations/en.json.mjs +6 -0
  204. package/dist/admin/translations/en.json.mjs.map +1 -1
  205. package/dist/admin/translations/es.json.js +1 -0
  206. package/dist/admin/translations/es.json.js.map +1 -1
  207. package/dist/admin/translations/es.json.mjs +1 -0
  208. package/dist/admin/translations/es.json.mjs.map +1 -1
  209. package/dist/admin/translations/fr.json.js +1 -0
  210. package/dist/admin/translations/fr.json.js.map +1 -1
  211. package/dist/admin/translations/fr.json.mjs +1 -0
  212. package/dist/admin/translations/fr.json.mjs.map +1 -1
  213. package/dist/server/controllers/collection-types.js +22 -2
  214. package/dist/server/controllers/collection-types.js.map +1 -1
  215. package/dist/server/controllers/collection-types.mjs +22 -2
  216. package/dist/server/controllers/collection-types.mjs.map +1 -1
  217. package/dist/server/controllers/relations.js +6 -4
  218. package/dist/server/controllers/relations.js.map +1 -1
  219. package/dist/server/controllers/relations.mjs +6 -4
  220. package/dist/server/controllers/relations.mjs.map +1 -1
  221. package/dist/server/controllers/single-types.js +9 -0
  222. package/dist/server/controllers/single-types.js.map +1 -1
  223. package/dist/server/controllers/single-types.mjs +9 -0
  224. package/dist/server/controllers/single-types.mjs.map +1 -1
  225. package/dist/server/homepage/services/homepage.js +2 -2
  226. package/dist/server/homepage/services/homepage.js.map +1 -1
  227. package/dist/server/homepage/services/homepage.mjs +2 -2
  228. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  229. package/dist/server/preview/services/preview-config.js +8 -33
  230. package/dist/server/preview/services/preview-config.js.map +1 -1
  231. package/dist/server/preview/services/preview-config.mjs +9 -34
  232. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  233. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  234. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  235. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  236. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  237. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  238. package/package.json +7 -7
@@ -12,7 +12,7 @@ declare const useGenerateUIDMutation: import("@reduxjs/toolkit/dist/query/react/
12
12
  field: string;
13
13
  } & {
14
14
  params: GenerateUID.Request['query'];
15
- }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "ComponentConfiguration" | "ContentTypesConfiguration" | "ContentTypeSettings" | "Document" | "InitialData" | "HistoryVersion" | "Relations" | "UidAvailability" | "RecentDocumentList" | "GuidedTourMeta" | "CountDocuments", string, "adminApi">>, useGetDefaultUIDQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<{
15
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "ComponentConfiguration" | "ContentTypesConfiguration" | "ContentTypeSettings" | "Document" | "InitialData" | "HistoryVersion" | "Relations" | "UidAvailability" | "RecentDocumentList" | "CountDocuments" | "UpcomingReleasesList", string, "adminApi">>, useGetDefaultUIDQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<{
16
16
  contentTypeUID: string;
17
17
  data: {
18
18
  id: import("@strapi/types/dist/data").ID;
@@ -22,11 +22,11 @@ declare const useGenerateUIDMutation: import("@reduxjs/toolkit/dist/query/react/
22
22
  field: string;
23
23
  } & {
24
24
  params: GenerateUID.Request['query'];
25
- }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "ComponentConfiguration" | "ContentTypesConfiguration" | "ContentTypeSettings" | "Document" | "InitialData" | "HistoryVersion" | "Relations" | "UidAvailability" | "RecentDocumentList" | "GuidedTourMeta" | "CountDocuments", string, "adminApi">>, useGetAvailabilityQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<{
25
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "ComponentConfiguration" | "ContentTypesConfiguration" | "ContentTypeSettings" | "Document" | "InitialData" | "HistoryVersion" | "Relations" | "UidAvailability" | "RecentDocumentList" | "CountDocuments" | "UpcomingReleasesList", string, "adminApi">>, useGetAvailabilityQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<{
26
26
  contentTypeUID: string;
27
27
  field: string;
28
28
  value: string;
29
29
  } & {
30
30
  params: CheckUIDAvailability.Request['query'];
31
- }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "ComponentConfiguration" | "ContentTypesConfiguration" | "ContentTypeSettings" | "Document" | "InitialData" | "HistoryVersion" | "Relations" | "UidAvailability" | "RecentDocumentList" | "GuidedTourMeta" | "CountDocuments", CheckUIDAvailability.Response, "adminApi">>;
31
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "ComponentConfiguration" | "ContentTypesConfiguration" | "ContentTypeSettings" | "Document" | "InitialData" | "HistoryVersion" | "Relations" | "UidAvailability" | "RecentDocumentList" | "CountDocuments" | "UpcomingReleasesList", CheckUIDAvailability.Response, "adminApi">>;
32
32
  export { useGenerateUIDMutation, useGetDefaultUIDQuery, useGetAvailabilityQuery };
@@ -260,6 +260,11 @@ var en = {
260
260
  "preview.device.select": "Select device type",
261
261
  "preview.device.desktop": "Desktop",
262
262
  "preview.device.mobile": "Mobile",
263
+ "preview.info.single-click-hint": "Double click to edit",
264
+ "preview.error.invalid-field-path": "Could not locate this field in the current document",
265
+ "preview.error.relations-not-handled": "Inline editing for relations is not currently supported.",
266
+ "preview.error.incomplete-strapi-source": "This field is missing some required preview information",
267
+ "preview.error.different-document": "This field comes from a different document",
263
268
  "relation.create": "Create a relation",
264
269
  "relation.add": "Add or create a relation",
265
270
  "relation.disconnect": "Remove",
@@ -313,6 +318,7 @@ var en = {
313
318
  "validation.error.unreadable-required-field": "Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.",
314
319
  "bulk-publish.edit": "Edit",
315
320
  "widget.chart-entries.title": "Entries",
321
+ "widget.chart-entries.count.label": "{count, plural, =0 {Entries} one {Entry} other {Entries}}",
316
322
  "widget.chart-entries.tooltip": "{count} {label}",
317
323
  "widget.last-edited.title": "Last edited entries",
318
324
  "widget.last-edited.single-type": "Single-Type",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -256,6 +256,11 @@ var en = {
256
256
  "preview.device.select": "Select device type",
257
257
  "preview.device.desktop": "Desktop",
258
258
  "preview.device.mobile": "Mobile",
259
+ "preview.info.single-click-hint": "Double click to edit",
260
+ "preview.error.invalid-field-path": "Could not locate this field in the current document",
261
+ "preview.error.relations-not-handled": "Inline editing for relations is not currently supported.",
262
+ "preview.error.incomplete-strapi-source": "This field is missing some required preview information",
263
+ "preview.error.different-document": "This field comes from a different document",
259
264
  "relation.create": "Create a relation",
260
265
  "relation.add": "Add or create a relation",
261
266
  "relation.disconnect": "Remove",
@@ -309,6 +314,7 @@ var en = {
309
314
  "validation.error.unreadable-required-field": "Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.",
310
315
  "bulk-publish.edit": "Edit",
311
316
  "widget.chart-entries.title": "Entries",
317
+ "widget.chart-entries.count.label": "{count, plural, =0 {Entries} one {Entry} other {Entries}}",
312
318
  "widget.chart-entries.tooltip": "{count} {label}",
313
319
  "widget.last-edited.title": "Last edited entries",
314
320
  "widget.last-edited.single-type": "Single-Type",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -192,6 +192,7 @@ var es = {
192
192
  "popUpWarning.warning.publish-question": "¿Aún quieres publicarlo?",
193
193
  "popUpwarning.warning.has-draft-relations.button-confirm": "Si, publicar",
194
194
  "widget.chart-entries.title": "Entradas",
195
+ "widget.chart-entries.count.label": "{count, plural, =0 {Entradas} one {Entrada} other {Entradas}}",
195
196
  "widget.chart-entries.tooltip": "{count} {label}"
196
197
  };
197
198
 
@@ -1 +1 @@
1
- {"version":3,"file":"es.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"es.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -188,6 +188,7 @@ var es = {
188
188
  "popUpWarning.warning.publish-question": "¿Aún quieres publicarlo?",
189
189
  "popUpwarning.warning.has-draft-relations.button-confirm": "Si, publicar",
190
190
  "widget.chart-entries.title": "Entradas",
191
+ "widget.chart-entries.count.label": "{count, plural, =0 {Entradas} one {Entrada} other {Entradas}}",
191
192
  "widget.chart-entries.tooltip": "{count} {label}"
192
193
  };
193
194
 
@@ -1 +1 @@
1
- {"version":3,"file":"es.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"es.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -215,6 +215,7 @@ var fr = {
215
215
  "history.restore.success.title": "Version restaurée.",
216
216
  "history.restore.success.message": "Le contenu de la version restaurée n'a pas encore été publié.",
217
217
  "widget.chart-entries.title": "Entrées",
218
+ "widget.chart-entries.count.label": "{count, plural, =0 {entrées} one {entrée} other {entrées}}",
218
219
  "widget.chart-entries.tooltip": "{count} {label}",
219
220
  "widget.last-edited.title": "Dernières entrées éditées",
220
221
  "widget.last-edited.single-type": "Types uniques",
@@ -1 +1 @@
1
- {"version":3,"file":"fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -211,6 +211,7 @@ var fr = {
211
211
  "history.restore.success.title": "Version restaurée.",
212
212
  "history.restore.success.message": "Le contenu de la version restaurée n'a pas encore été publié.",
213
213
  "widget.chart-entries.title": "Entrées",
214
+ "widget.chart-entries.count.label": "{count, plural, =0 {entrées} one {entrée} other {entrées}}",
214
215
  "widget.chart-entries.tooltip": "{count} {label}",
215
216
  "widget.last-edited.title": "Dernières entrées éditées",
216
217
  "widget.last-edited.single-type": "Types uniques",
@@ -1 +1 @@
1
- {"version":3,"file":"fr.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"fr.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -34,12 +34,22 @@ var metadata = require('./utils/metadata.js');
34
34
  const sanitizeFn = strapiUtils.async.pipe(pickPermittedFields, setCreator);
35
35
  const sanitizedBody = await sanitizeFn(body);
36
36
  const { locale, status } = await dimensions.getDocumentLocaleAndStatus(body, model);
37
- return documentManager.create(model, {
37
+ const createdDocument = await documentManager.create(model, {
38
38
  data: sanitizedBody,
39
39
  locale,
40
40
  status,
41
41
  populate: opts?.populate
42
42
  });
43
+ try {
44
+ // Don't await since localizations should be done in the background without blocking the request
45
+ strapi.plugin('i18n').service('ai-localizations').generateDocumentLocalizations({
46
+ model,
47
+ document: createdDocument
48
+ });
49
+ } catch (error) {
50
+ strapi.log.error('AI Localizations generation failed', error);
51
+ }
52
+ return createdDocument;
43
53
  // TODO: Revert the creation if create permission conditions are not met
44
54
  // if (permissionChecker.cannot.create(document)) {
45
55
  // throw new errors.ForbiddenError();
@@ -100,11 +110,21 @@ var metadata = require('./utils/metadata.js');
100
110
  });
101
111
  const sanitizeFn = strapiUtils.async.pipe(pickPermittedFields, setCreator);
102
112
  const sanitizedBody = await sanitizeFn(body);
103
- return documentManager.update(documentVersion?.documentId || id, model, {
113
+ const updatedDocument = await documentManager.update(documentVersion?.documentId || id, model, {
104
114
  data: sanitizedBody,
105
115
  populate: opts?.populate,
106
116
  locale
107
117
  });
118
+ try {
119
+ // Don't await since localizations should be done in the background without blocking the request
120
+ strapi.plugin('i18n').service('ai-localizations').generateDocumentLocalizations({
121
+ model,
122
+ document: updatedDocument
123
+ });
124
+ } catch (error) {
125
+ strapi.log.error('AI Localizations generation failed', error);
126
+ }
127
+ return updatedDocument;
108
128
  };
109
129
  var collectionTypes = {
110
130
  async find (ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"collection-types.js","sources":["../../../server/src/controllers/collection-types.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { setCreatorFields, async, errors } from '@strapi/utils';\nimport type { Modules, UID } from '@strapi/types';\n\nimport { getService } from '../utils';\nimport { validateBulkActionInput } from './validation';\nimport { getProhibitedCloningFields, excludeNotCreatableFields } from './utils/clone';\nimport { getDocumentLocaleAndStatus } from './validation/dimensions';\nimport { formatDocumentWithMetadata } from './utils/metadata';\n\ntype Options = Modules.Documents.Params.Pick<UID.ContentType, 'populate:object'>;\n\n/**\n * Create a new document.\n *\n * @param ctx - Koa context\n * @param opts - Options\n * @param opts.populate - Populate options of the returned document.\n * By default documentManager will populate all relations.\n */\nconst createDocument = async (ctx: any, opts?: Options) => {\n const { userAbility, user } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const pickPermittedFields = permissionChecker.sanitizeCreateInput;\n const setCreator = setCreatorFields({ user });\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n const sanitizedBody = await sanitizeFn(body);\n\n const { locale, status } = await getDocumentLocaleAndStatus(body, model);\n\n return documentManager.create(model, {\n data: sanitizedBody as any,\n locale,\n status,\n populate: opts?.populate,\n });\n\n // TODO: Revert the creation if create permission conditions are not met\n // if (permissionChecker.cannot.create(document)) {\n // throw new errors.ForbiddenError();\n // }\n};\n\n/**\n * Update a document version.\n * - If the document version exists, it will be updated.\n * - If the document version does not exist, a new document locale will be created.\n * By default documentManager will populate all relations.\n *\n * @param ctx - Koa context\n * @param opts - Options\n * @param opts.populate - Populate options of the returned document\n */\nconst updateDocument = async (ctx: any, opts?: Options) => {\n const { userAbility, user } = ctx.state;\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.update()) {\n throw new errors.ForbiddenError();\n }\n\n // Populate necessary fields to check permissions\n const permissionQuery = await permissionChecker.sanitizedQuery.update(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n // Load document version to update\n const [documentVersion, documentExists] = await Promise.all([\n documentManager.findOne(id, model, { populate, locale, status: 'draft' }),\n documentManager.exists(model, id),\n ]);\n\n if (!documentExists) {\n throw new errors.NotFoundError();\n }\n\n // If version is not found, but document exists,\n // the intent is to create a new document locale\n if (documentVersion) {\n if (permissionChecker.cannot.update(documentVersion)) {\n throw new errors.ForbiddenError();\n }\n } else if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const pickPermittedFields = documentVersion\n ? permissionChecker.sanitizeUpdateInput(documentVersion)\n : permissionChecker.sanitizeCreateInput;\n const setCreator = documentVersion\n ? setCreatorFields({ user, isEdition: true })\n : setCreatorFields({ user });\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n const sanitizedBody = await sanitizeFn(body);\n\n return documentManager.update(documentVersion?.documentId || id, model, {\n data: sanitizedBody as any,\n populate: opts?.populate,\n locale,\n });\n};\n\nexport default {\n async find(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query } = ctx.request;\n\n const documentMetadata = getService('document-metadata');\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(query);\n\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(1)\n .countRelations({ toOne: false, toMany: true })\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(query, model);\n\n const { results: documents, pagination } = await documentManager.findPage(\n { ...permissionQuery, populate, locale, status },\n model\n );\n\n // TODO: Skip this part if not necessary (if D&P disabled or columns not displayed in the view)\n const documentsAvailableStatus = await documentMetadata.getManyAvailableStatus(\n model,\n documents\n );\n\n const setStatus = (document: any) => {\n // Available status of document\n const availableStatuses = documentsAvailableStatus.filter(\n (d: any) => d.documentId === document.documentId\n );\n // Compute document version status\n document.status = documentMetadata.getStatus(document, availableStatuses);\n return document;\n };\n\n const results = await async.map(\n documents,\n async.pipe(permissionChecker.sanitizeOutput, setStatus)\n );\n\n ctx.body = {\n results,\n pagination,\n };\n },\n\n async findOne(ctx: any) {\n const { userAbility } = ctx.state;\n const { model, id } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);\n\n const version = await documentManager.findOne(id, model, {\n populate,\n locale,\n status,\n });\n\n if (!version) {\n // Check if document exists\n const exists = await documentManager.exists(model, id);\n if (!exists) {\n return ctx.notFound();\n }\n\n // If the requested locale doesn't exist, return an empty response\n const { meta } = await formatDocumentWithMetadata(\n permissionChecker,\n model,\n // @ts-expect-error TODO: fix\n { documentId: id, locale, publishedAt: null },\n { availableLocales: true, availableStatus: false }\n );\n\n ctx.body = { data: {}, meta };\n\n return;\n }\n\n // if the user has condition that needs populated content, it's not applied because entity don't have relations populated\n if (permissionChecker.cannot.read(version)) {\n return ctx.forbidden();\n }\n\n // TODO: Count populated relations by permissions\n const sanitizedDocument = await permissionChecker.sanitizeOutput(version);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async create(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const [totalEntries, document] = await Promise.all([\n strapi.db.query(model).count(),\n createDocument(ctx),\n ]);\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(document);\n ctx.status = 201;\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument, {\n // Empty metadata as it's not relevant for a new document\n availableLocales: false,\n availableStatus: false,\n });\n\n if (totalEntries === 0) {\n strapi.telemetry.send('didCreateFirstContentTypeEntry', {\n eventProperties: { model },\n });\n }\n },\n\n async update(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const updatedVersion = await updateDocument(ctx);\n\n const sanitizedVersion = await permissionChecker.sanitizeOutput(updatedVersion);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedVersion);\n },\n\n async clone(ctx: any) {\n const { userAbility, user } = ctx.state;\n const { model, sourceId: id } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.create(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'draft',\n });\n\n if (!document) {\n return ctx.notFound();\n }\n\n const pickPermittedFields = permissionChecker.sanitizeCreateInput;\n const setCreator = setCreatorFields({ user });\n const excludeNotCreatable = excludeNotCreatableFields(model, permissionChecker);\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any, excludeNotCreatable);\n const sanitizedBody = await sanitizeFn(body);\n\n const clonedDocument = await documentManager.clone(document.documentId, sanitizedBody, model);\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(clonedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument, {\n // Empty metadata as it's not relevant for a new document\n availableLocales: false,\n availableStatus: false,\n });\n },\n\n async autoClone(ctx: any) {\n const { model } = ctx.params;\n\n // Check if the model has fields that prevent auto cloning\n const prohibitedFields = getProhibitedCloningFields(model);\n\n if (prohibitedFields.length > 0) {\n return ctx.badRequest(\n 'Entity could not be cloned as it has unique and/or relational fields. ' +\n 'Please edit those fields manually and save to complete the cloning.',\n {\n prohibitedFields,\n }\n );\n }\n\n await this.clone(ctx);\n },\n\n async delete(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.delete(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(ctx.query, model);\n\n // Find locales to delete\n const documentLocales = await documentManager.findLocales(id, model, { populate, locale });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n const result = await documentManager.delete(id, model, { locale });\n\n ctx.body = await permissionChecker.sanitizeOutput(result);\n },\n\n /**\n * Publish a document version.\n * Supports creating/saving a document and publishing it in one request.\n */\n async publish(ctx: any) {\n const { userAbility } = ctx.state;\n // If id does not exist, the document has to be created\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const publishedDocument = await strapi.db.transaction(async () => {\n // Create or update document\n const permissionQuery = await permissionChecker.sanitizedQuery.publish(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n let document: any;\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n /**\n * Publish can be called on two scenarios:\n * 1. Create a new document and publish it in one request\n * 2. Update an existing document and publish it in one request\n *\n * Based on user permissions:\n * 1. User cannot create a document, but can publish\n * Action will be forbidden as user cannot create a document\n * 2. User can update and publish a document\n * Action will be allowed, but document will not be updated, only published with the latest draft\n */\n const isCreate = isNil(id);\n if (isCreate) {\n if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n document = await createDocument(ctx, { populate });\n }\n\n const isUpdate = !isCreate;\n if (isUpdate) {\n // check if the document exists\n const documentExists = await documentManager.exists(model, id);\n\n if (!documentExists) {\n throw new errors.NotFoundError('Document not found');\n }\n\n // check the document version\n document = await documentManager.findOne(id!, model, { populate, locale });\n\n if (!document) {\n // update and publish the new version\n if (\n permissionChecker.cannot.create({ locale }) ||\n permissionChecker.cannot.publish({ locale })\n ) {\n throw new errors.ForbiddenError();\n }\n document = await updateDocument(ctx);\n } else if (permissionChecker.can.update(document)) {\n await updateDocument(ctx);\n }\n }\n\n if (permissionChecker.cannot.publish(document)) {\n throw new errors.ForbiddenError();\n }\n\n const publishResult = await documentManager.publish(document.documentId, model, {\n locale,\n // TODO: Allow setting creator fields on publish\n // data: setCreatorFields({ user, isEdition: true })({}),\n });\n\n if (!publishResult || publishResult.length === 0) {\n throw new errors.NotFoundError('Document not found or already published.');\n }\n\n return publishResult[0];\n });\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(publishedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async bulkPublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.publish(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model, {\n allowMultipleLocales: true,\n });\n\n const entityPromises = documentIds.map((documentId: any) =>\n documentManager.findLocales(documentId, model, { populate, locale, isPublished: false })\n );\n const entities = (await Promise.all(entityPromises)).flat();\n\n for (const entity of entities) {\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.publish(entity)) {\n return ctx.forbidden();\n }\n }\n\n const count = await documentManager.publishMany(model, documentIds, locale);\n ctx.body = { count };\n },\n\n async bulkUnpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n const { locale } = await getDocumentLocaleAndStatus(body, model, {\n allowMultipleLocales: true,\n });\n\n const entityPromises = documentIds.map((documentId: any) =>\n documentManager.findLocales(documentId, model, { locale, isPublished: true })\n );\n const entities = (await Promise.all(entityPromises)).flat();\n\n for (const entity of entities) {\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.publish(entity)) {\n return ctx.forbidden();\n }\n }\n\n const entitiesIds = entities.map((document) => document.documentId);\n\n const { count } = await documentManager.unpublishMany(entitiesIds, model, { locale });\n\n ctx.body = { count };\n },\n\n async unpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n const {\n body: { discardDraft, ...body },\n } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.unpublish(ctx.query);\n\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n // TODO allow multiple locales for bulk locale unpublish\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'published',\n });\n\n if (!document) {\n throw new errors.NotFoundError();\n }\n\n if (permissionChecker.cannot.unpublish(document)) {\n throw new errors.ForbiddenError();\n }\n\n if (discardDraft && permissionChecker.cannot.discard(document)) {\n throw new errors.ForbiddenError();\n }\n\n await strapi.db.transaction(async () => {\n if (discardDraft) {\n await documentManager.discardDraft(document.documentId, model, { locale });\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.unpublish(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n });\n },\n\n async discard(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.discard(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'published',\n });\n\n // Can not discard a document that is not published\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.discardDraft(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n },\n\n async bulkDelete(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query, body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.delete(query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const documentLocales = await documentManager.findLocales(documentIds, model, {\n populate,\n locale,\n });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n // We filter out documentsIds that maybe doesn't exist in a specific locale\n const localeDocumentsIds = documentLocales.map((document) => document.documentId);\n\n const { count } = await documentManager.deleteMany(localeDocumentsIds, model, { locale });\n\n ctx.body = { count };\n },\n\n async countDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const { model, id } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);\n const entity = await documentManager.findOne(id, model, { populate, locale, status });\n\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.read(entity)) {\n return ctx.forbidden();\n }\n\n const number = await documentManager.countDraftRelations(id, model, locale);\n\n return {\n data: number,\n };\n },\n\n async countManyEntriesDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const ids = ctx.request.query.documentIds as string[];\n const locale = ctx.request.query.locale as string[];\n const { model } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const documents = await documentManager.findMany(\n {\n filters: {\n documentId: ids,\n },\n locale,\n },\n model\n );\n\n if (!documents) {\n return ctx.notFound();\n }\n\n const number = await documentManager.countManyEntriesDraftRelations(ids, model, locale);\n\n return {\n data: number,\n };\n },\n};\n"],"names":["createDocument","ctx","opts","userAbility","user","state","model","params","body","request","documentManager","getService","permissionChecker","create","cannot","errors","ForbiddenError","pickPermittedFields","sanitizeCreateInput","setCreator","setCreatorFields","sanitizeFn","async","pipe","sanitizedBody","locale","status","getDocumentLocaleAndStatus","data","populate","updateDocument","id","update","permissionQuery","sanitizedQuery","query","populateFromQuery","build","documentVersion","documentExists","Promise","all","findOne","exists","NotFoundError","sanitizeUpdateInput","isEdition","documentId","find","documentMetadata","read","forbidden","populateDeep","countRelations","toOne","toMany","results","documents","pagination","findPage","documentsAvailableStatus","getManyAvailableStatus","setStatus","document","availableStatuses","filter","d","getStatus","map","sanitizeOutput","Infinity","version","notFound","meta","formatDocumentWithMetadata","publishedAt","availableLocales","availableStatus","sanitizedDocument","totalEntries","strapi","db","count","telemetry","send","eventProperties","updatedVersion","sanitizedVersion","clone","sourceId","excludeNotCreatable","excludeNotCreatableFields","clonedDocument","autoClone","prohibitedFields","getProhibitedCloningFields","length","badRequest","delete","documentLocales","findLocales","result","publish","publishedDocument","transaction","isCreate","isNil","isUpdate","can","publishResult","bulkPublish","documentIds","validateBulkActionInput","allowMultipleLocales","entityPromises","isPublished","entities","flat","entity","publishMany","bulkUnpublish","unpublish","entitiesIds","unpublishMany","discardDraft","discard","bulkDelete","localeDocumentsIds","deleteMany","countDraftRelations","number","countManyEntriesDraftRelations","ids","findMany","filters"],"mappings":"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"}
1
+ {"version":3,"file":"collection-types.js","sources":["../../../server/src/controllers/collection-types.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { setCreatorFields, async, errors } from '@strapi/utils';\nimport type { Modules, UID } from '@strapi/types';\n\nimport { getService } from '../utils';\nimport { validateBulkActionInput } from './validation';\nimport { getProhibitedCloningFields, excludeNotCreatableFields } from './utils/clone';\nimport { getDocumentLocaleAndStatus } from './validation/dimensions';\nimport { formatDocumentWithMetadata } from './utils/metadata';\n\ntype Options = Modules.Documents.Params.Pick<UID.ContentType, 'populate:object'>;\n\n/**\n * Create a new document.\n *\n * @param ctx - Koa context\n * @param opts - Options\n * @param opts.populate - Populate options of the returned document.\n * By default documentManager will populate all relations.\n */\nconst createDocument = async (ctx: any, opts?: Options) => {\n const { userAbility, user } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const pickPermittedFields = permissionChecker.sanitizeCreateInput;\n const setCreator = setCreatorFields({ user });\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n const sanitizedBody = await sanitizeFn(body);\n\n const { locale, status } = await getDocumentLocaleAndStatus(body, model);\n\n const createdDocument = await documentManager.create(model, {\n data: sanitizedBody as any,\n locale,\n status,\n populate: opts?.populate,\n });\n\n try {\n // Don't await since localizations should be done in the background without blocking the request\n strapi.plugin('i18n').service('ai-localizations').generateDocumentLocalizations({\n model,\n document: createdDocument,\n });\n } catch (error) {\n strapi.log.error('AI Localizations generation failed', error);\n }\n\n return createdDocument;\n // TODO: Revert the creation if create permission conditions are not met\n // if (permissionChecker.cannot.create(document)) {\n // throw new errors.ForbiddenError();\n // }\n};\n\n/**\n * Update a document version.\n * - If the document version exists, it will be updated.\n * - If the document version does not exist, a new document locale will be created.\n * By default documentManager will populate all relations.\n *\n * @param ctx - Koa context\n * @param opts - Options\n * @param opts.populate - Populate options of the returned document\n */\nconst updateDocument = async (ctx: any, opts?: Options) => {\n const { userAbility, user } = ctx.state;\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.update()) {\n throw new errors.ForbiddenError();\n }\n\n // Populate necessary fields to check permissions\n const permissionQuery = await permissionChecker.sanitizedQuery.update(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n // Load document version to update\n const [documentVersion, documentExists] = await Promise.all([\n documentManager.findOne(id, model, { populate, locale, status: 'draft' }),\n documentManager.exists(model, id),\n ]);\n\n if (!documentExists) {\n throw new errors.NotFoundError();\n }\n\n // If version is not found, but document exists,\n // the intent is to create a new document locale\n if (documentVersion) {\n if (permissionChecker.cannot.update(documentVersion)) {\n throw new errors.ForbiddenError();\n }\n } else if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const pickPermittedFields = documentVersion\n ? permissionChecker.sanitizeUpdateInput(documentVersion)\n : permissionChecker.sanitizeCreateInput;\n const setCreator = documentVersion\n ? setCreatorFields({ user, isEdition: true })\n : setCreatorFields({ user });\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n const sanitizedBody = await sanitizeFn(body);\n\n const updatedDocument = await documentManager.update(documentVersion?.documentId || id, model, {\n data: sanitizedBody as any,\n populate: opts?.populate,\n locale,\n });\n\n try {\n // Don't await since localizations should be done in the background without blocking the request\n strapi.plugin('i18n').service('ai-localizations').generateDocumentLocalizations({\n model,\n document: updatedDocument,\n });\n } catch (error) {\n strapi.log.error('AI Localizations generation failed', error);\n }\n\n return updatedDocument;\n};\n\nexport default {\n async find(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query } = ctx.request;\n\n const documentMetadata = getService('document-metadata');\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(query);\n\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(1)\n .countRelations({ toOne: false, toMany: true })\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(query, model);\n\n const { results: documents, pagination } = await documentManager.findPage(\n { ...permissionQuery, populate, locale, status },\n model\n );\n\n // TODO: Skip this part if not necessary (if D&P disabled or columns not displayed in the view)\n const documentsAvailableStatus = await documentMetadata.getManyAvailableStatus(\n model,\n documents\n );\n\n const setStatus = (document: any) => {\n // Available status of document\n const availableStatuses = documentsAvailableStatus.filter(\n (d: any) => d.documentId === document.documentId\n );\n // Compute document version status\n document.status = documentMetadata.getStatus(document, availableStatuses);\n return document;\n };\n\n const results = await async.map(\n documents,\n async.pipe(permissionChecker.sanitizeOutput, setStatus)\n );\n\n ctx.body = {\n results,\n pagination,\n };\n },\n\n async findOne(ctx: any) {\n const { userAbility } = ctx.state;\n const { model, id } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);\n\n const version = await documentManager.findOne(id, model, {\n populate,\n locale,\n status,\n });\n\n if (!version) {\n // Check if document exists\n const exists = await documentManager.exists(model, id);\n if (!exists) {\n return ctx.notFound();\n }\n\n // If the requested locale doesn't exist, return an empty response\n const { meta } = await formatDocumentWithMetadata(\n permissionChecker,\n model,\n // @ts-expect-error TODO: fix\n { documentId: id, locale, publishedAt: null },\n { availableLocales: true, availableStatus: false }\n );\n\n ctx.body = { data: {}, meta };\n\n return;\n }\n\n // if the user has condition that needs populated content, it's not applied because entity don't have relations populated\n if (permissionChecker.cannot.read(version)) {\n return ctx.forbidden();\n }\n\n // TODO: Count populated relations by permissions\n const sanitizedDocument = await permissionChecker.sanitizeOutput(version);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async create(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const [totalEntries, document] = await Promise.all([\n strapi.db.query(model).count(),\n createDocument(ctx),\n ]);\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(document);\n ctx.status = 201;\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument, {\n // Empty metadata as it's not relevant for a new document\n availableLocales: false,\n availableStatus: false,\n });\n\n if (totalEntries === 0) {\n strapi.telemetry.send('didCreateFirstContentTypeEntry', {\n eventProperties: { model },\n });\n }\n },\n\n async update(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const updatedVersion = await updateDocument(ctx);\n\n const sanitizedVersion = await permissionChecker.sanitizeOutput(updatedVersion);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedVersion);\n },\n\n async clone(ctx: any) {\n const { userAbility, user } = ctx.state;\n const { model, sourceId: id } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.create(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'draft',\n });\n\n if (!document) {\n return ctx.notFound();\n }\n\n const pickPermittedFields = permissionChecker.sanitizeCreateInput;\n const setCreator = setCreatorFields({ user });\n const excludeNotCreatable = excludeNotCreatableFields(model, permissionChecker);\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any, excludeNotCreatable);\n const sanitizedBody = await sanitizeFn(body);\n\n const clonedDocument = await documentManager.clone(document.documentId, sanitizedBody, model);\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(clonedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument, {\n // Empty metadata as it's not relevant for a new document\n availableLocales: false,\n availableStatus: false,\n });\n },\n\n async autoClone(ctx: any) {\n const { model } = ctx.params;\n\n // Check if the model has fields that prevent auto cloning\n const prohibitedFields = getProhibitedCloningFields(model);\n\n if (prohibitedFields.length > 0) {\n return ctx.badRequest(\n 'Entity could not be cloned as it has unique and/or relational fields. ' +\n 'Please edit those fields manually and save to complete the cloning.',\n {\n prohibitedFields,\n }\n );\n }\n\n await this.clone(ctx);\n },\n\n async delete(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.delete(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(ctx.query, model);\n\n // Find locales to delete\n const documentLocales = await documentManager.findLocales(id, model, { populate, locale });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n const result = await documentManager.delete(id, model, { locale });\n\n ctx.body = await permissionChecker.sanitizeOutput(result);\n },\n\n /**\n * Publish a document version.\n * Supports creating/saving a document and publishing it in one request.\n */\n async publish(ctx: any) {\n const { userAbility } = ctx.state;\n // If id does not exist, the document has to be created\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const publishedDocument = await strapi.db.transaction(async () => {\n // Create or update document\n const permissionQuery = await permissionChecker.sanitizedQuery.publish(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n let document: any;\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n /**\n * Publish can be called on two scenarios:\n * 1. Create a new document and publish it in one request\n * 2. Update an existing document and publish it in one request\n *\n * Based on user permissions:\n * 1. User cannot create a document, but can publish\n * Action will be forbidden as user cannot create a document\n * 2. User can update and publish a document\n * Action will be allowed, but document will not be updated, only published with the latest draft\n */\n const isCreate = isNil(id);\n if (isCreate) {\n if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n document = await createDocument(ctx, { populate });\n }\n\n const isUpdate = !isCreate;\n if (isUpdate) {\n // check if the document exists\n const documentExists = await documentManager.exists(model, id);\n\n if (!documentExists) {\n throw new errors.NotFoundError('Document not found');\n }\n\n // check the document version\n document = await documentManager.findOne(id!, model, { populate, locale });\n\n if (!document) {\n // update and publish the new version\n if (\n permissionChecker.cannot.create({ locale }) ||\n permissionChecker.cannot.publish({ locale })\n ) {\n throw new errors.ForbiddenError();\n }\n document = await updateDocument(ctx);\n } else if (permissionChecker.can.update(document)) {\n await updateDocument(ctx);\n }\n }\n\n if (permissionChecker.cannot.publish(document)) {\n throw new errors.ForbiddenError();\n }\n\n const publishResult = await documentManager.publish(document.documentId, model, {\n locale,\n // TODO: Allow setting creator fields on publish\n // data: setCreatorFields({ user, isEdition: true })({}),\n });\n\n if (!publishResult || publishResult.length === 0) {\n throw new errors.NotFoundError('Document not found or already published.');\n }\n\n return publishResult[0];\n });\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(publishedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async bulkPublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.publish(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model, {\n allowMultipleLocales: true,\n });\n\n const entityPromises = documentIds.map((documentId: any) =>\n documentManager.findLocales(documentId, model, { populate, locale, isPublished: false })\n );\n const entities = (await Promise.all(entityPromises)).flat();\n\n for (const entity of entities) {\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.publish(entity)) {\n return ctx.forbidden();\n }\n }\n\n const count = await documentManager.publishMany(model, documentIds, locale);\n ctx.body = { count };\n },\n\n async bulkUnpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n const { locale } = await getDocumentLocaleAndStatus(body, model, {\n allowMultipleLocales: true,\n });\n\n const entityPromises = documentIds.map((documentId: any) =>\n documentManager.findLocales(documentId, model, { locale, isPublished: true })\n );\n const entities = (await Promise.all(entityPromises)).flat();\n\n for (const entity of entities) {\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.publish(entity)) {\n return ctx.forbidden();\n }\n }\n\n const entitiesIds = entities.map((document) => document.documentId);\n\n const { count } = await documentManager.unpublishMany(entitiesIds, model, { locale });\n\n ctx.body = { count };\n },\n\n async unpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n const {\n body: { discardDraft, ...body },\n } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.unpublish(ctx.query);\n\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n // TODO allow multiple locales for bulk locale unpublish\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'published',\n });\n\n if (!document) {\n throw new errors.NotFoundError();\n }\n\n if (permissionChecker.cannot.unpublish(document)) {\n throw new errors.ForbiddenError();\n }\n\n if (discardDraft && permissionChecker.cannot.discard(document)) {\n throw new errors.ForbiddenError();\n }\n\n await strapi.db.transaction(async () => {\n if (discardDraft) {\n await documentManager.discardDraft(document.documentId, model, { locale });\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.unpublish(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n });\n },\n\n async discard(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.discard(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'published',\n });\n\n // Can not discard a document that is not published\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.discardDraft(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n },\n\n async bulkDelete(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query, body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.delete(query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const documentLocales = await documentManager.findLocales(documentIds, model, {\n populate,\n locale,\n });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n // We filter out documentsIds that maybe doesn't exist in a specific locale\n const localeDocumentsIds = documentLocales.map((document) => document.documentId);\n\n const { count } = await documentManager.deleteMany(localeDocumentsIds, model, { locale });\n\n ctx.body = { count };\n },\n\n async countDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const { model, id } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);\n const entity = await documentManager.findOne(id, model, { populate, locale, status });\n\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.read(entity)) {\n return ctx.forbidden();\n }\n\n const number = await documentManager.countDraftRelations(id, model, locale);\n\n return {\n data: number,\n };\n },\n\n async countManyEntriesDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const ids = ctx.request.query.documentIds as string[];\n const locale = ctx.request.query.locale as string[];\n const { model } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const documents = await documentManager.findMany(\n {\n filters: {\n documentId: ids,\n },\n locale,\n },\n model\n );\n\n if (!documents) {\n return ctx.notFound();\n }\n\n const number = await documentManager.countManyEntriesDraftRelations(ids, model, locale);\n\n return {\n data: number,\n };\n },\n};\n"],"names":["createDocument","ctx","opts","userAbility","user","state","model","params","body","request","documentManager","getService","permissionChecker","create","cannot","errors","ForbiddenError","pickPermittedFields","sanitizeCreateInput","setCreator","setCreatorFields","sanitizeFn","async","pipe","sanitizedBody","locale","status","getDocumentLocaleAndStatus","createdDocument","data","populate","strapi","plugin","service","generateDocumentLocalizations","document","error","log","updateDocument","id","update","permissionQuery","sanitizedQuery","query","populateFromQuery","build","documentVersion","documentExists","Promise","all","findOne","exists","NotFoundError","sanitizeUpdateInput","isEdition","updatedDocument","documentId","find","documentMetadata","read","forbidden","populateDeep","countRelations","toOne","toMany","results","documents","pagination","findPage","documentsAvailableStatus","getManyAvailableStatus","setStatus","availableStatuses","filter","d","getStatus","map","sanitizeOutput","Infinity","version","notFound","meta","formatDocumentWithMetadata","publishedAt","availableLocales","availableStatus","sanitizedDocument","totalEntries","db","count","telemetry","send","eventProperties","updatedVersion","sanitizedVersion","clone","sourceId","excludeNotCreatable","excludeNotCreatableFields","clonedDocument","autoClone","prohibitedFields","getProhibitedCloningFields","length","badRequest","delete","documentLocales","findLocales","result","publish","publishedDocument","transaction","isCreate","isNil","isUpdate","can","publishResult","bulkPublish","documentIds","validateBulkActionInput","allowMultipleLocales","entityPromises","isPublished","entities","flat","entity","publishMany","bulkUnpublish","unpublish","entitiesIds","unpublishMany","discardDraft","discard","bulkDelete","localeDocumentsIds","deleteMany","countDraftRelations","number","countManyEntriesDraftRelations","ids","findMany","filters"],"mappings":"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"}
@@ -32,12 +32,22 @@ import { formatDocumentWithMetadata } from './utils/metadata.mjs';
32
32
  const sanitizeFn = async.pipe(pickPermittedFields, setCreator);
33
33
  const sanitizedBody = await sanitizeFn(body);
34
34
  const { locale, status } = await getDocumentLocaleAndStatus(body, model);
35
- return documentManager.create(model, {
35
+ const createdDocument = await documentManager.create(model, {
36
36
  data: sanitizedBody,
37
37
  locale,
38
38
  status,
39
39
  populate: opts?.populate
40
40
  });
41
+ try {
42
+ // Don't await since localizations should be done in the background without blocking the request
43
+ strapi.plugin('i18n').service('ai-localizations').generateDocumentLocalizations({
44
+ model,
45
+ document: createdDocument
46
+ });
47
+ } catch (error) {
48
+ strapi.log.error('AI Localizations generation failed', error);
49
+ }
50
+ return createdDocument;
41
51
  // TODO: Revert the creation if create permission conditions are not met
42
52
  // if (permissionChecker.cannot.create(document)) {
43
53
  // throw new errors.ForbiddenError();
@@ -98,11 +108,21 @@ import { formatDocumentWithMetadata } from './utils/metadata.mjs';
98
108
  });
99
109
  const sanitizeFn = async.pipe(pickPermittedFields, setCreator);
100
110
  const sanitizedBody = await sanitizeFn(body);
101
- return documentManager.update(documentVersion?.documentId || id, model, {
111
+ const updatedDocument = await documentManager.update(documentVersion?.documentId || id, model, {
102
112
  data: sanitizedBody,
103
113
  populate: opts?.populate,
104
114
  locale
105
115
  });
116
+ try {
117
+ // Don't await since localizations should be done in the background without blocking the request
118
+ strapi.plugin('i18n').service('ai-localizations').generateDocumentLocalizations({
119
+ model,
120
+ document: updatedDocument
121
+ });
122
+ } catch (error) {
123
+ strapi.log.error('AI Localizations generation failed', error);
124
+ }
125
+ return updatedDocument;
106
126
  };
107
127
  var collectionTypes = {
108
128
  async find (ctx) {