@strapi/content-manager 5.37.0 → 5.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  2. package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
  3. package/dist/admin/components/ComponentIcon.js.map +1 -1
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs +2 -2
  9. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js +62 -30
  11. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  12. package/dist/admin/components/ConfigurationForm/Form.mjs +62 -30
  13. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  14. package/dist/admin/components/DragLayer.js.map +1 -1
  15. package/dist/admin/components/DragLayer.mjs.map +1 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  20. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  22. package/dist/admin/components/FieldTypeIcon.js.map +1 -1
  23. package/dist/admin/components/FieldTypeIcon.mjs +1 -1
  24. package/dist/admin/components/FieldTypeIcon.mjs.map +1 -1
  25. package/dist/admin/components/InjectionZone.js.map +1 -1
  26. package/dist/admin/components/InjectionZone.mjs.map +1 -1
  27. package/dist/admin/components/LeftMenu.js.map +1 -1
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/RelativeTime.js.map +1 -1
  30. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  31. package/dist/admin/components/Widgets.js.map +1 -1
  32. package/dist/admin/components/Widgets.mjs +1 -1
  33. package/dist/admin/components/Widgets.mjs.map +1 -1
  34. package/dist/admin/constants/attributes.js.map +1 -1
  35. package/dist/admin/constants/attributes.mjs.map +1 -1
  36. package/dist/admin/constants/collections.js.map +1 -1
  37. package/dist/admin/constants/collections.mjs.map +1 -1
  38. package/dist/admin/constants/dragAndDrop.js.map +1 -1
  39. package/dist/admin/constants/dragAndDrop.mjs.map +1 -1
  40. package/dist/admin/constants/hooks.js.map +1 -1
  41. package/dist/admin/constants/hooks.mjs.map +1 -1
  42. package/dist/admin/constants/plugin.js.map +1 -1
  43. package/dist/admin/constants/plugin.mjs.map +1 -1
  44. package/dist/admin/content-manager.js.map +1 -1
  45. package/dist/admin/content-manager.mjs.map +1 -1
  46. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  47. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  48. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  49. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  50. package/dist/admin/history/components/VersionContent.js.map +1 -1
  51. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  52. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  53. package/dist/admin/history/components/VersionHeader.mjs +1 -1
  54. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  55. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  56. package/dist/admin/history/components/VersionInputRenderer.mjs +1 -1
  57. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  58. package/dist/admin/history/components/VersionsList.js.map +1 -1
  59. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  60. package/dist/admin/history/index.js.map +1 -1
  61. package/dist/admin/history/index.mjs.map +1 -1
  62. package/dist/admin/history/pages/History.js.map +1 -1
  63. package/dist/admin/history/pages/History.mjs +1 -1
  64. package/dist/admin/history/pages/History.mjs.map +1 -1
  65. package/dist/admin/history/routes.js.map +1 -1
  66. package/dist/admin/history/routes.mjs.map +1 -1
  67. package/dist/admin/history/services/historyVersion.js.map +1 -1
  68. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  69. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  70. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  71. package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
  72. package/dist/admin/hooks/useContentTypeSchema.mjs.map +1 -1
  73. package/dist/admin/hooks/useDebounce.js.map +1 -1
  74. package/dist/admin/hooks/useDebounce.mjs.map +1 -1
  75. package/dist/admin/hooks/useDocument.js.map +1 -1
  76. package/dist/admin/hooks/useDocument.mjs +1 -1
  77. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  78. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  79. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  80. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  81. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  82. package/dist/admin/hooks/useDocumentLayout.js +2 -1
  83. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  84. package/dist/admin/hooks/useDocumentLayout.mjs +2 -1
  85. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  86. package/dist/admin/hooks/useDragAndDrop.js +1 -3
  87. package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
  88. package/dist/admin/hooks/useDragAndDrop.mjs +1 -3
  89. package/dist/admin/hooks/useDragAndDrop.mjs.map +1 -1
  90. package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
  91. package/dist/admin/hooks/useKeyboardDragAndDrop.mjs.map +1 -1
  92. package/dist/admin/hooks/useLazyComponents.js.map +1 -1
  93. package/dist/admin/hooks/useLazyComponents.mjs.map +1 -1
  94. package/dist/admin/hooks/useOnce.js.map +1 -1
  95. package/dist/admin/hooks/useOnce.mjs.map +1 -1
  96. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
  97. package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
  98. package/dist/admin/hooks/usePrev.js.map +1 -1
  99. package/dist/admin/hooks/usePrev.mjs.map +1 -1
  100. package/dist/admin/index.js.map +1 -1
  101. package/dist/admin/index.mjs.map +1 -1
  102. package/dist/admin/layout.js.map +1 -1
  103. package/dist/admin/layout.mjs.map +1 -1
  104. package/dist/admin/modules/app.js.map +1 -1
  105. package/dist/admin/modules/app.mjs.map +1 -1
  106. package/dist/admin/modules/hooks.js.map +1 -1
  107. package/dist/admin/modules/hooks.mjs +1 -1
  108. package/dist/admin/modules/hooks.mjs.map +1 -1
  109. package/dist/admin/modules/reducers.js.map +1 -1
  110. package/dist/admin/modules/reducers.mjs.map +1 -1
  111. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  112. package/dist/admin/pages/ComponentConfigurationPage.mjs +1 -1
  113. package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
  114. package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
  115. package/dist/admin/pages/EditConfigurationPage.mjs +1 -1
  116. package/dist/admin/pages/EditConfigurationPage.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  118. package/dist/admin/pages/EditView/EditViewPage.mjs +4 -4
  119. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  120. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -1
  121. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -1
  122. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/DocumentActions.mjs +4 -4
  124. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  126. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  128. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  130. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +1 -1
  134. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  136. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  140. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +2 -2
  142. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.js.map +1 -1
  144. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  146. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  148. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  150. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  151. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  152. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
  153. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  154. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  156. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +1 -1
  158. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  160. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +2 -2
  161. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.js.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.mjs.map +1 -1
  166. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.js.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.mjs.map +1 -1
  168. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.js.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.mjs.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
  172. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
  174. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  180. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.js.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.mjs.map +1 -1
  182. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  183. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  184. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  185. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  186. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  187. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  188. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  189. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  190. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.js.map +1 -1
  191. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.mjs.map +1 -1
  192. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  193. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  194. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.js.map +1 -1
  195. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.mjs.map +1 -1
  196. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +45 -6
  197. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  198. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +46 -9
  199. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  200. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  201. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +2 -2
  202. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  203. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  204. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  205. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  206. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  207. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  208. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  209. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  210. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
  211. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  212. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  213. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
  214. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
  215. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  216. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +2 -2
  217. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  218. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  219. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  220. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
  221. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.mjs.map +1 -1
  222. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
  223. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.mjs.map +1 -1
  224. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js +8 -6
  225. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  226. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs +8 -6
  227. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  228. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  229. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  230. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  231. package/dist/admin/pages/EditView/components/Header.mjs +2 -2
  232. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  233. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  234. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  235. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  236. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  237. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  238. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  239. package/dist/admin/pages/EditView/utils/forms.js.map +1 -1
  240. package/dist/admin/pages/EditView/utils/forms.mjs.map +1 -1
  241. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  242. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -1
  243. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  244. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  245. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +1 -1
  246. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  247. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  248. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
  249. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
  250. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  251. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  252. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  253. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  254. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  255. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  256. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  257. package/dist/admin/pages/ListView/ListViewPage.mjs +3 -3
  258. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  259. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  260. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  261. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  262. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  263. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -4
  264. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  265. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -5
  266. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  267. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -4
  268. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  269. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +2 -2
  270. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  271. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  272. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  273. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  274. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  275. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  276. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  277. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -1
  278. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  279. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +7 -1
  280. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
  281. package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
  282. package/dist/admin/pages/ListView/components/TableCells/Components.mjs +2 -2
  283. package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
  284. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  285. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
  286. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  287. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  288. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  289. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  290. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  291. package/dist/admin/pages/NoContentTypePage.js.map +1 -1
  292. package/dist/admin/pages/NoContentTypePage.mjs.map +1 -1
  293. package/dist/admin/pages/NoPermissionsPage.js.map +1 -1
  294. package/dist/admin/pages/NoPermissionsPage.mjs.map +1 -1
  295. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  296. package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
  297. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  298. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  299. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  300. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  301. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  302. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
  303. package/dist/admin/preview/index.js.map +1 -1
  304. package/dist/admin/preview/index.mjs.map +1 -1
  305. package/dist/admin/preview/pages/Preview.js.map +1 -1
  306. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  307. package/dist/admin/preview/routes.js.map +1 -1
  308. package/dist/admin/preview/routes.mjs.map +1 -1
  309. package/dist/admin/preview/services/preview.js.map +1 -1
  310. package/dist/admin/preview/services/preview.mjs.map +1 -1
  311. package/dist/admin/preview/utils/constants.js +0 -1
  312. package/dist/admin/preview/utils/constants.js.map +1 -1
  313. package/dist/admin/preview/utils/constants.mjs +0 -1
  314. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  315. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  316. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  317. package/dist/admin/preview/utils/getSendMessage.js.map +1 -1
  318. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -1
  319. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  320. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  321. package/dist/admin/router.js.map +1 -1
  322. package/dist/admin/router.mjs.map +1 -1
  323. package/dist/admin/services/api.js.map +1 -1
  324. package/dist/admin/services/api.mjs.map +1 -1
  325. package/dist/admin/services/components.js.map +1 -1
  326. package/dist/admin/services/components.mjs.map +1 -1
  327. package/dist/admin/services/contentTypes.js.map +1 -1
  328. package/dist/admin/services/contentTypes.mjs.map +1 -1
  329. package/dist/admin/services/documents.js.map +1 -1
  330. package/dist/admin/services/documents.mjs.map +1 -1
  331. package/dist/admin/services/homepage.js.map +1 -1
  332. package/dist/admin/services/homepage.mjs.map +1 -1
  333. package/dist/admin/services/init.js.map +1 -1
  334. package/dist/admin/services/init.mjs.map +1 -1
  335. package/dist/admin/services/relations.js.map +1 -1
  336. package/dist/admin/services/relations.mjs.map +1 -1
  337. package/dist/admin/services/uid.js.map +1 -1
  338. package/dist/admin/services/uid.mjs.map +1 -1
  339. package/dist/admin/src/hooks/useDocumentLayout.d.ts +1 -0
  340. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +7 -2
  341. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
  342. package/dist/admin/translations/en.json.js +5 -0
  343. package/dist/admin/translations/en.json.js.map +1 -1
  344. package/dist/admin/translations/en.json.mjs +5 -0
  345. package/dist/admin/translations/en.json.mjs.map +1 -1
  346. package/dist/admin/translations/fr.json.js +72 -1
  347. package/dist/admin/translations/fr.json.js.map +1 -1
  348. package/dist/admin/translations/fr.json.mjs +72 -1
  349. package/dist/admin/translations/fr.json.mjs.map +1 -1
  350. package/dist/admin/utils/api.js.map +1 -1
  351. package/dist/admin/utils/api.mjs.map +1 -1
  352. package/dist/admin/utils/attributes.js.map +1 -1
  353. package/dist/admin/utils/attributes.mjs.map +1 -1
  354. package/dist/admin/utils/objects.js.map +1 -1
  355. package/dist/admin/utils/objects.mjs.map +1 -1
  356. package/dist/admin/utils/relations.js.map +1 -1
  357. package/dist/admin/utils/relations.mjs.map +1 -1
  358. package/dist/admin/utils/strings.js.map +1 -1
  359. package/dist/admin/utils/strings.mjs.map +1 -1
  360. package/dist/admin/utils/translations.js.map +1 -1
  361. package/dist/admin/utils/translations.mjs.map +1 -1
  362. package/dist/admin/utils/urls.js.map +1 -1
  363. package/dist/admin/utils/urls.mjs.map +1 -1
  364. package/dist/admin/utils/users.js.map +1 -1
  365. package/dist/admin/utils/users.mjs.map +1 -1
  366. package/dist/admin/utils/validation.js.map +1 -1
  367. package/dist/admin/utils/validation.mjs.map +1 -1
  368. package/dist/server/bootstrap.js.map +1 -1
  369. package/dist/server/bootstrap.mjs.map +1 -1
  370. package/dist/server/constants/index.js.map +1 -1
  371. package/dist/server/constants/index.mjs.map +1 -1
  372. package/dist/server/controllers/collection-types.js.map +1 -1
  373. package/dist/server/controllers/collection-types.mjs +1 -1
  374. package/dist/server/controllers/collection-types.mjs.map +1 -1
  375. package/dist/server/controllers/components.js.map +1 -1
  376. package/dist/server/controllers/components.mjs.map +1 -1
  377. package/dist/server/controllers/content-types.js +10 -10
  378. package/dist/server/controllers/content-types.js.map +1 -1
  379. package/dist/server/controllers/content-types.mjs.map +1 -1
  380. package/dist/server/controllers/index.js +4 -4
  381. package/dist/server/controllers/index.js.map +1 -1
  382. package/dist/server/controllers/index.mjs.map +1 -1
  383. package/dist/server/controllers/init.js.map +1 -1
  384. package/dist/server/controllers/init.mjs.map +1 -1
  385. package/dist/server/controllers/relations.js.map +1 -1
  386. package/dist/server/controllers/relations.mjs +3 -3
  387. package/dist/server/controllers/relations.mjs.map +1 -1
  388. package/dist/server/controllers/single-types.js.map +1 -1
  389. package/dist/server/controllers/single-types.mjs +1 -1
  390. package/dist/server/controllers/single-types.mjs.map +1 -1
  391. package/dist/server/controllers/uid.js.map +1 -1
  392. package/dist/server/controllers/uid.mjs +1 -1
  393. package/dist/server/controllers/uid.mjs.map +1 -1
  394. package/dist/server/controllers/utils/clone.js.map +1 -1
  395. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  396. package/dist/server/controllers/utils/document-status.js.map +1 -1
  397. package/dist/server/controllers/utils/document-status.mjs.map +1 -1
  398. package/dist/server/controllers/utils/metadata.js.map +1 -1
  399. package/dist/server/controllers/utils/metadata.mjs.map +1 -1
  400. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  401. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  402. package/dist/server/controllers/validation/index.js.map +1 -1
  403. package/dist/server/controllers/validation/index.mjs +1 -1
  404. package/dist/server/controllers/validation/index.mjs.map +1 -1
  405. package/dist/server/controllers/validation/model-configuration.js +6 -1
  406. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  407. package/dist/server/controllers/validation/model-configuration.mjs +6 -1
  408. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  409. package/dist/server/controllers/validation/relations.js.map +1 -1
  410. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  411. package/dist/server/destroy.js.map +1 -1
  412. package/dist/server/destroy.mjs.map +1 -1
  413. package/dist/server/history/constants.js.map +1 -1
  414. package/dist/server/history/constants.mjs.map +1 -1
  415. package/dist/server/history/controllers/history-version.js.map +1 -1
  416. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  417. package/dist/server/history/controllers/index.js.map +1 -1
  418. package/dist/server/history/controllers/index.mjs.map +1 -1
  419. package/dist/server/history/controllers/validation/history-version.js.map +1 -1
  420. package/dist/server/history/controllers/validation/history-version.mjs.map +1 -1
  421. package/dist/server/history/index.js +4 -4
  422. package/dist/server/history/index.js.map +1 -1
  423. package/dist/server/history/index.mjs.map +1 -1
  424. package/dist/server/history/models/history-version.js.map +1 -1
  425. package/dist/server/history/models/history-version.mjs.map +1 -1
  426. package/dist/server/history/routes/history-version.js.map +1 -1
  427. package/dist/server/history/routes/history-version.mjs.map +1 -1
  428. package/dist/server/history/routes/index.js.map +1 -1
  429. package/dist/server/history/routes/index.mjs.map +1 -1
  430. package/dist/server/history/services/history.js.map +1 -1
  431. package/dist/server/history/services/history.mjs.map +1 -1
  432. package/dist/server/history/services/index.js.map +1 -1
  433. package/dist/server/history/services/index.mjs.map +1 -1
  434. package/dist/server/history/services/lifecycles.js.map +1 -1
  435. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  436. package/dist/server/history/services/utils.js.map +1 -1
  437. package/dist/server/history/services/utils.mjs.map +1 -1
  438. package/dist/server/history/utils.js.map +1 -1
  439. package/dist/server/history/utils.mjs.map +1 -1
  440. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  441. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  442. package/dist/server/homepage/controllers/index.js.map +1 -1
  443. package/dist/server/homepage/controllers/index.mjs.map +1 -1
  444. package/dist/server/homepage/index.js +6 -6
  445. package/dist/server/homepage/index.js.map +1 -1
  446. package/dist/server/homepage/index.mjs.map +1 -1
  447. package/dist/server/homepage/routes/homepage.js.map +1 -1
  448. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  449. package/dist/server/homepage/routes/index.js.map +1 -1
  450. package/dist/server/homepage/routes/index.mjs.map +1 -1
  451. package/dist/server/homepage/services/homepage.js.map +1 -1
  452. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  453. package/dist/server/homepage/services/index.js.map +1 -1
  454. package/dist/server/homepage/services/index.mjs.map +1 -1
  455. package/dist/server/index.js +8 -8
  456. package/dist/server/middlewares/routing.js.map +1 -1
  457. package/dist/server/middlewares/routing.mjs.map +1 -1
  458. package/dist/server/policies/hasPermissions.js.map +1 -1
  459. package/dist/server/policies/hasPermissions.mjs.map +1 -1
  460. package/dist/server/policies/index.js.map +1 -1
  461. package/dist/server/policies/index.mjs.map +1 -1
  462. package/dist/server/preview/controllers/index.js.map +1 -1
  463. package/dist/server/preview/controllers/index.mjs.map +1 -1
  464. package/dist/server/preview/controllers/preview.js.map +1 -1
  465. package/dist/server/preview/controllers/preview.mjs.map +1 -1
  466. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  467. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  468. package/dist/server/preview/index.js +4 -4
  469. package/dist/server/preview/index.js.map +1 -1
  470. package/dist/server/preview/index.mjs.map +1 -1
  471. package/dist/server/preview/routes/index.js.map +1 -1
  472. package/dist/server/preview/routes/index.mjs.map +1 -1
  473. package/dist/server/preview/routes/preview.js.map +1 -1
  474. package/dist/server/preview/routes/preview.mjs.map +1 -1
  475. package/dist/server/preview/services/index.js.map +1 -1
  476. package/dist/server/preview/services/index.mjs.map +1 -1
  477. package/dist/server/preview/services/preview-config.js.map +1 -1
  478. package/dist/server/preview/services/preview-config.mjs +1 -1
  479. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  480. package/dist/server/preview/services/preview.js.map +1 -1
  481. package/dist/server/preview/services/preview.mjs.map +1 -1
  482. package/dist/server/preview/utils.js.map +1 -1
  483. package/dist/server/preview/utils.mjs.map +1 -1
  484. package/dist/server/register.js.map +1 -1
  485. package/dist/server/register.mjs.map +1 -1
  486. package/dist/server/routes/admin.js.map +1 -1
  487. package/dist/server/routes/admin.mjs.map +1 -1
  488. package/dist/server/routes/index.js +4 -4
  489. package/dist/server/routes/index.js.map +1 -1
  490. package/dist/server/routes/index.mjs.map +1 -1
  491. package/dist/server/services/components.js.map +1 -1
  492. package/dist/server/services/components.mjs.map +1 -1
  493. package/dist/server/services/configuration.js.map +1 -1
  494. package/dist/server/services/configuration.mjs.map +1 -1
  495. package/dist/server/services/content-types.js.map +1 -1
  496. package/dist/server/services/content-types.mjs.map +1 -1
  497. package/dist/server/services/data-mapper.js.map +1 -1
  498. package/dist/server/services/data-mapper.mjs.map +1 -1
  499. package/dist/server/services/document-manager.js.map +1 -1
  500. package/dist/server/services/document-manager.mjs +2 -2
  501. package/dist/server/services/document-manager.mjs.map +1 -1
  502. package/dist/server/services/document-metadata.js.map +1 -1
  503. package/dist/server/services/document-metadata.mjs +2 -2
  504. package/dist/server/services/document-metadata.mjs.map +1 -1
  505. package/dist/server/services/field-sizes.js.map +1 -1
  506. package/dist/server/services/field-sizes.mjs.map +1 -1
  507. package/dist/server/services/index.js +4 -4
  508. package/dist/server/services/index.js.map +1 -1
  509. package/dist/server/services/index.mjs.map +1 -1
  510. package/dist/server/services/metrics.js.map +1 -1
  511. package/dist/server/services/metrics.mjs.map +1 -1
  512. package/dist/server/services/permission-checker.js.map +1 -1
  513. package/dist/server/services/permission-checker.mjs.map +1 -1
  514. package/dist/server/services/permission.js.map +1 -1
  515. package/dist/server/services/permission.mjs.map +1 -1
  516. package/dist/server/services/populate-builder.js.map +1 -1
  517. package/dist/server/services/populate-builder.mjs +4 -4
  518. package/dist/server/services/populate-builder.mjs.map +1 -1
  519. package/dist/server/services/uid.js.map +1 -1
  520. package/dist/server/services/uid.mjs.map +1 -1
  521. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  522. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  523. package/dist/server/services/utils/configuration/index.js.map +1 -1
  524. package/dist/server/services/utils/configuration/index.mjs +3 -3
  525. package/dist/server/services/utils/configuration/index.mjs.map +1 -1
  526. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  527. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  528. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  529. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  530. package/dist/server/services/utils/configuration/metadatas.mjs +1 -1
  531. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  532. package/dist/server/services/utils/configuration/settings.js +4 -2
  533. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  534. package/dist/server/services/utils/configuration/settings.mjs +5 -3
  535. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  536. package/dist/server/services/utils/draft.js.map +1 -1
  537. package/dist/server/services/utils/draft.mjs.map +1 -1
  538. package/dist/server/services/utils/populate.js.map +1 -1
  539. package/dist/server/services/utils/populate.mjs +1 -1
  540. package/dist/server/services/utils/populate.mjs.map +1 -1
  541. package/dist/server/services/utils/store.js.map +1 -1
  542. package/dist/server/services/utils/store.mjs.map +1 -1
  543. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  544. package/dist/server/utils/index.js.map +1 -1
  545. package/dist/server/utils/index.mjs.map +1 -1
  546. package/dist/server/validation/policies/hasPermissions.js.map +1 -1
  547. package/dist/server/validation/policies/hasPermissions.mjs.map +1 -1
  548. package/dist/shared/contracts/content-types.d.ts +2 -0
  549. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  550. package/dist/shared/contracts/relations.d.ts +1 -1
  551. package/dist/shared/contracts/relations.d.ts.map +1 -1
  552. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.mjs","sources":["../../../server/src/services/metrics.ts"],"sourcesContent":["import { intersection, prop } from 'lodash/fp';\nimport { relations } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\nimport type { Configuration } from '../../../shared/contracts/content-types';\n\nconst { getRelationalFields } = relations;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sendDidConfigureListView = async (\n contentType: Struct.ContentTypeSchema,\n configuration: Configuration\n ) => {\n const displayedFields = prop('length', configuration.layouts.list);\n const relationalFields = getRelationalFields(contentType);\n const displayedRelationalFields = intersection(\n relationalFields,\n configuration.layouts.list\n ).length;\n\n const data = {\n eventProperties: { containsRelationalFields: !!displayedRelationalFields },\n };\n\n if (data.eventProperties.containsRelationalFields) {\n Object.assign(data.eventProperties, {\n displayedFields,\n displayedRelationalFields,\n });\n }\n\n try {\n await strapi.telemetry.send('didConfigureListView', data);\n } catch (e) {\n // silence\n }\n };\n\n return {\n sendDidConfigureListView,\n };\n};\n"],"names":["getRelationalFields","relations","strapi","sendDidConfigureListView","contentType","configuration","displayedFields","prop","layouts","list","relationalFields","displayedRelationalFields","intersection","length","data","eventProperties","containsRelationalFields","Object","assign","telemetry","send","e"],"mappings":";;;AAKA,MAAM,EAAEA,mBAAmB,EAAE,GAAGC,SAAAA;AAEhC,cAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACjD,MAAMC,wBAAAA,GAA2B,OAC/BC,WACAC,EAAAA,aAAAA,GAAAA;AAEA,QAAA,MAAMC,kBAAkBC,IAAK,CAAA,QAAA,EAAUF,aAAcG,CAAAA,OAAO,CAACC,IAAI,CAAA;AACjE,QAAA,MAAMC,mBAAmBV,mBAAoBI,CAAAA,WAAAA,CAAAA;QAC7C,MAAMO,yBAAAA,GAA4BC,aAChCF,gBACAL,EAAAA,aAAAA,CAAcG,OAAO,CAACC,IAAI,EAC1BI,MAAM;AAER,QAAA,MAAMC,IAAO,GAAA;YACXC,eAAiB,EAAA;AAAEC,gBAAAA,wBAAAA,EAA0B,CAAC,CAACL;AAA0B;AAC3E,SAAA;AAEA,QAAA,IAAIG,IAAKC,CAAAA,eAAe,CAACC,wBAAwB,EAAE;AACjDC,YAAAA,MAAAA,CAAOC,MAAM,CAACJ,IAAKC,CAAAA,eAAe,EAAE;AAClCT,gBAAAA,eAAAA;AACAK,gBAAAA;AACF,aAAA,CAAA;AACF;QAEA,IAAI;AACF,YAAA,MAAMT,MAAOiB,CAAAA,SAAS,CAACC,IAAI,CAAC,sBAAwBN,EAAAA,IAAAA,CAAAA;AACtD,SAAA,CAAE,OAAOO,CAAG,EAAA;;AAEZ;AACF,KAAA;IAEA,OAAO;AACLlB,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"metrics.mjs","sources":["../../../server/src/services/metrics.ts"],"sourcesContent":["import { intersection, prop } from 'lodash/fp';\nimport { relations } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\nimport type { Configuration } from '../../../shared/contracts/content-types';\n\nconst { getRelationalFields } = relations;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sendDidConfigureListView = async (\n contentType: Struct.ContentTypeSchema,\n configuration: Configuration\n ) => {\n const displayedFields = prop('length', configuration.layouts.list);\n const relationalFields = getRelationalFields(contentType);\n const displayedRelationalFields = intersection(\n relationalFields,\n configuration.layouts.list\n ).length;\n\n const data = {\n eventProperties: { containsRelationalFields: !!displayedRelationalFields },\n };\n\n if (data.eventProperties.containsRelationalFields) {\n Object.assign(data.eventProperties, {\n displayedFields,\n displayedRelationalFields,\n });\n }\n\n try {\n await strapi.telemetry.send('didConfigureListView', data);\n } catch (e) {\n // silence\n }\n };\n\n return {\n sendDidConfigureListView,\n };\n};\n"],"names":["getRelationalFields","relations","strapi","sendDidConfigureListView","contentType","configuration","displayedFields","prop","layouts","list","relationalFields","displayedRelationalFields","intersection","length","data","eventProperties","containsRelationalFields","Object","assign","telemetry","send","e"],"mappings":";;;AAKA,MAAM,EAAEA,mBAAmB,EAAE,GAAGC,SAAAA;AAEhC,cAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACjD,MAAMC,wBAAAA,GAA2B,OAC/BC,WAAAA,EACAC,aAAAA,GAAAA;AAEA,QAAA,MAAMC,kBAAkBC,IAAAA,CAAK,QAAA,EAAUF,aAAAA,CAAcG,OAAO,CAACC,IAAI,CAAA;AACjE,QAAA,MAAMC,mBAAmBV,mBAAAA,CAAoBI,WAAAA,CAAAA;QAC7C,MAAMO,yBAAAA,GAA4BC,aAChCF,gBAAAA,EACAL,aAAAA,CAAcG,OAAO,CAACC,IAAI,EAC1BI,MAAM;AAER,QAAA,MAAMC,IAAAA,GAAO;YACXC,eAAAA,EAAiB;AAAEC,gBAAAA,wBAAAA,EAA0B,CAAC,CAACL;AAA0B;AAC3E,SAAA;AAEA,QAAA,IAAIG,IAAAA,CAAKC,eAAe,CAACC,wBAAwB,EAAE;AACjDC,YAAAA,MAAAA,CAAOC,MAAM,CAACJ,IAAAA,CAAKC,eAAe,EAAE;AAClCT,gBAAAA,eAAAA;AACAK,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;QAEA,IAAI;AACF,YAAA,MAAMT,MAAAA,CAAOiB,SAAS,CAACC,IAAI,CAAC,sBAAA,EAAwBN,IAAAA,CAAAA;AACtD,QAAA,CAAA,CAAE,OAAOO,CAAAA,EAAG;;AAEZ,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACLlB,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission-checker.js","sources":["../../../server/src/services/permission-checker.ts"],"sourcesContent":["import { async } from '@strapi/utils';\nimport { isEmpty } from 'lodash/fp';\nimport type { Core, UID, Modules } from '@strapi/types';\n\nconst ACTIONS = {\n read: 'plugin::content-manager.explorer.read',\n create: 'plugin::content-manager.explorer.create',\n update: 'plugin::content-manager.explorer.update',\n delete: 'plugin::content-manager.explorer.delete',\n publish: 'plugin::content-manager.explorer.publish',\n unpublish: 'plugin::content-manager.explorer.publish',\n discard: 'plugin::content-manager.explorer.update',\n} as const;\n\ntype Entity = Modules.EntityService.Result<UID.ContentType>;\ntype Query = {\n page?: string;\n pageSize?: string;\n sort?: string;\n};\n\nconst createPermissionChecker =\n (strapi: Core.Strapi) =>\n ({ userAbility, model }: { userAbility: any; model: string }) => {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n model,\n });\n\n const { actionProvider } = strapi.service('admin::permission');\n\n const toSubject = (entity?: Entity) => {\n return entity ? permissionsManager.toSubject(entity, model) : model;\n };\n\n // @ts-expect-error preserve the parameter order\n // eslint-disable-next-line @typescript-eslint/default-param-last\n const can = (action: string, entity?: Entity, field: string) => {\n const subject = toSubject(entity);\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n\n return (\n // Test the original action to see if it passes\n userAbility.can(action, subject, field) ||\n // Else try every known alias if at least one of them succeed, then the user \"can\"\n aliases.some((alias) => userAbility.can(alias, subject, field))\n );\n };\n\n // @ts-expect-error preserve the parameter order\n // eslint-disable-next-line @typescript-eslint/default-param-last\n const cannot = (action: string, entity?: Entity, field: string) => {\n const subject = toSubject(entity);\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n\n return (\n // Test both the original action\n userAbility.cannot(action, subject, field) &&\n // and every known alias, if all of them fail (cannot), then the user truly \"cannot\"\n aliases.every((alias) => userAbility.cannot(alias, subject, field))\n );\n };\n\n const sanitizeOutput = (data: Entity, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.sanitizeOutput(data, { subject: toSubject(data), action });\n };\n\n const getRulesForAction = (action: string) => {\n if (typeof userAbility.rulesFor !== 'function') {\n return [];\n }\n\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n const actions = [action, ...aliases];\n\n return actions.flatMap((actionName) => userAbility.rulesFor(actionName, model));\n };\n\n // Tell callers if we need the full entity to check access\n const requiresEntity = (action: string) => {\n if (typeof userAbility.rulesFor !== 'function') {\n return true;\n }\n\n const rules = getRulesForAction(action);\n\n return rules.some((rule: any) => rule.conditions && !isEmpty(rule.conditions));\n };\n\n const sanitizeQuery = (query: Query, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.sanitizeQuery(query, { subject: model, action });\n };\n\n const sanitizeInput = (action: string, data: any, entity?: Entity) => {\n return permissionsManager.sanitizeInput(data, {\n subject: entity ? toSubject(entity) : model,\n action,\n });\n };\n\n const validateQuery = (query: Query, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.validateQuery(query, { subject: model, action });\n };\n\n const validateInput = (action: string, data: any, entity?: Entity) => {\n return permissionsManager.validateInput(data, {\n subject: entity ? toSubject(entity) : model,\n action,\n });\n };\n\n const sanitizeCreateInput = (data: any) => sanitizeInput(ACTIONS.create, data);\n const sanitizeUpdateInput = (entity: Entity) => (data: any) =>\n sanitizeInput(ACTIONS.update, data, entity);\n\n const buildPermissionQuery = (query: Query, action: { action?: string } = {}) => {\n return permissionsManager.addPermissionsQueryTo(query, action);\n };\n\n const sanitizedQuery = (query: Query, action: { action?: string } = {}) => {\n return async.pipe(\n (q: Query) => sanitizeQuery(q, action),\n (q: Query) => buildPermissionQuery(q, action)\n )(query);\n };\n\n // Sanitized queries shortcuts\n Object.keys(ACTIONS).forEach((action) => {\n // @ts-expect-error TODO\n sanitizedQuery[action] = (query: Query) => sanitizedQuery(query, ACTIONS[action]);\n });\n\n // Permission utils shortcuts\n Object.keys(ACTIONS).forEach((action) => {\n // @ts-expect-error TODO\n can[action] = (...args: any) => can(ACTIONS[action], ...args);\n // @ts-expect-error TODO\n cannot[action] = (...args: any) => cannot(ACTIONS[action], ...args);\n // @ts-expect-error TODO\n requiresEntity[action] = () => requiresEntity(ACTIONS[action]);\n });\n\n return {\n // Permission utils\n can, // check if you have the permission\n cannot, // check if you don't have the permission\n requiresEntity, // check if entity data is needed for permission evaluation\n // Sanitizers\n sanitizeOutput,\n sanitizeQuery,\n sanitizeCreateInput,\n sanitizeUpdateInput,\n // Validators\n validateQuery,\n validateInput,\n // Queries Builder\n sanitizedQuery,\n };\n };\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n create: createPermissionChecker(strapi),\n});\n"],"names":["ACTIONS","read","create","update","delete","publish","unpublish","discard","createPermissionChecker","strapi","userAbility","model","permissionsManager","service","createPermissionsManager","ability","actionProvider","toSubject","entity","can","action","field","subject","aliases","unstable_aliases","some","alias","cannot","every","sanitizeOutput","data","getRulesForAction","rulesFor","actions","flatMap","actionName","requiresEntity","rules","rule","conditions","isEmpty","sanitizeQuery","query","sanitizeInput","validateQuery","validateInput","sanitizeCreateInput","sanitizeUpdateInput","buildPermissionQuery","addPermissionsQueryTo","sanitizedQuery","async","pipe","q","Object","keys","forEach","args"],"mappings":"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"}
1
+ {"version":3,"file":"permission-checker.js","sources":["../../../server/src/services/permission-checker.ts"],"sourcesContent":["import { async } from '@strapi/utils';\nimport { isEmpty } from 'lodash/fp';\nimport type { Core, UID, Modules } from '@strapi/types';\n\nconst ACTIONS = {\n read: 'plugin::content-manager.explorer.read',\n create: 'plugin::content-manager.explorer.create',\n update: 'plugin::content-manager.explorer.update',\n delete: 'plugin::content-manager.explorer.delete',\n publish: 'plugin::content-manager.explorer.publish',\n unpublish: 'plugin::content-manager.explorer.publish',\n discard: 'plugin::content-manager.explorer.update',\n} as const;\n\ntype Entity = Modules.EntityService.Result<UID.ContentType>;\ntype Query = {\n page?: string;\n pageSize?: string;\n sort?: string;\n};\n\nconst createPermissionChecker =\n (strapi: Core.Strapi) =>\n ({ userAbility, model }: { userAbility: any; model: string }) => {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n model,\n });\n\n const { actionProvider } = strapi.service('admin::permission');\n\n const toSubject = (entity?: Entity) => {\n return entity ? permissionsManager.toSubject(entity, model) : model;\n };\n\n // @ts-expect-error preserve the parameter order\n // eslint-disable-next-line @typescript-eslint/default-param-last\n const can = (action: string, entity?: Entity, field: string) => {\n const subject = toSubject(entity);\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n\n return (\n // Test the original action to see if it passes\n userAbility.can(action, subject, field) ||\n // Else try every known alias if at least one of them succeed, then the user \"can\"\n aliases.some((alias) => userAbility.can(alias, subject, field))\n );\n };\n\n // @ts-expect-error preserve the parameter order\n // eslint-disable-next-line @typescript-eslint/default-param-last\n const cannot = (action: string, entity?: Entity, field: string) => {\n const subject = toSubject(entity);\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n\n return (\n // Test both the original action\n userAbility.cannot(action, subject, field) &&\n // and every known alias, if all of them fail (cannot), then the user truly \"cannot\"\n aliases.every((alias) => userAbility.cannot(alias, subject, field))\n );\n };\n\n const sanitizeOutput = (data: Entity, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.sanitizeOutput(data, { subject: toSubject(data), action });\n };\n\n const getRulesForAction = (action: string) => {\n if (typeof userAbility.rulesFor !== 'function') {\n return [];\n }\n\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n const actions = [action, ...aliases];\n\n return actions.flatMap((actionName) => userAbility.rulesFor(actionName, model));\n };\n\n // Tell callers if we need the full entity to check access\n const requiresEntity = (action: string) => {\n if (typeof userAbility.rulesFor !== 'function') {\n return true;\n }\n\n const rules = getRulesForAction(action);\n\n return rules.some((rule: any) => rule.conditions && !isEmpty(rule.conditions));\n };\n\n const sanitizeQuery = (query: Query, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.sanitizeQuery(query, { subject: model, action });\n };\n\n const sanitizeInput = (action: string, data: any, entity?: Entity) => {\n return permissionsManager.sanitizeInput(data, {\n subject: entity ? toSubject(entity) : model,\n action,\n });\n };\n\n const validateQuery = (query: Query, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.validateQuery(query, { subject: model, action });\n };\n\n const validateInput = (action: string, data: any, entity?: Entity) => {\n return permissionsManager.validateInput(data, {\n subject: entity ? toSubject(entity) : model,\n action,\n });\n };\n\n const sanitizeCreateInput = (data: any) => sanitizeInput(ACTIONS.create, data);\n const sanitizeUpdateInput = (entity: Entity) => (data: any) =>\n sanitizeInput(ACTIONS.update, data, entity);\n\n const buildPermissionQuery = (query: Query, action: { action?: string } = {}) => {\n return permissionsManager.addPermissionsQueryTo(query, action);\n };\n\n const sanitizedQuery = (query: Query, action: { action?: string } = {}) => {\n return async.pipe(\n (q: Query) => sanitizeQuery(q, action),\n (q: Query) => buildPermissionQuery(q, action)\n )(query);\n };\n\n // Sanitized queries shortcuts\n Object.keys(ACTIONS).forEach((action) => {\n // @ts-expect-error TODO\n sanitizedQuery[action] = (query: Query) => sanitizedQuery(query, ACTIONS[action]);\n });\n\n // Permission utils shortcuts\n Object.keys(ACTIONS).forEach((action) => {\n // @ts-expect-error TODO\n can[action] = (...args: any) => can(ACTIONS[action], ...args);\n // @ts-expect-error TODO\n cannot[action] = (...args: any) => cannot(ACTIONS[action], ...args);\n // @ts-expect-error TODO\n requiresEntity[action] = () => requiresEntity(ACTIONS[action]);\n });\n\n return {\n // Permission utils\n can, // check if you have the permission\n cannot, // check if you don't have the permission\n requiresEntity, // check if entity data is needed for permission evaluation\n // Sanitizers\n sanitizeOutput,\n sanitizeQuery,\n sanitizeCreateInput,\n sanitizeUpdateInput,\n // Validators\n validateQuery,\n validateInput,\n // Queries Builder\n sanitizedQuery,\n };\n };\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n create: createPermissionChecker(strapi),\n});\n"],"names":["ACTIONS","read","create","update","delete","publish","unpublish","discard","createPermissionChecker","strapi","userAbility","model","permissionsManager","service","createPermissionsManager","ability","actionProvider","toSubject","entity","can","action","field","subject","aliases","unstable_aliases","some","alias","cannot","every","sanitizeOutput","data","getRulesForAction","rulesFor","actions","flatMap","actionName","requiresEntity","rules","rule","conditions","isEmpty","sanitizeQuery","query","sanitizeInput","validateQuery","validateInput","sanitizeCreateInput","sanitizeUpdateInput","buildPermissionQuery","addPermissionsQueryTo","sanitizedQuery","async","pipe","q","Object","keys","forEach","args"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission-checker.mjs","sources":["../../../server/src/services/permission-checker.ts"],"sourcesContent":["import { async } from '@strapi/utils';\nimport { isEmpty } from 'lodash/fp';\nimport type { Core, UID, Modules } from '@strapi/types';\n\nconst ACTIONS = {\n read: 'plugin::content-manager.explorer.read',\n create: 'plugin::content-manager.explorer.create',\n update: 'plugin::content-manager.explorer.update',\n delete: 'plugin::content-manager.explorer.delete',\n publish: 'plugin::content-manager.explorer.publish',\n unpublish: 'plugin::content-manager.explorer.publish',\n discard: 'plugin::content-manager.explorer.update',\n} as const;\n\ntype Entity = Modules.EntityService.Result<UID.ContentType>;\ntype Query = {\n page?: string;\n pageSize?: string;\n sort?: string;\n};\n\nconst createPermissionChecker =\n (strapi: Core.Strapi) =>\n ({ userAbility, model }: { userAbility: any; model: string }) => {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n model,\n });\n\n const { actionProvider } = strapi.service('admin::permission');\n\n const toSubject = (entity?: Entity) => {\n return entity ? permissionsManager.toSubject(entity, model) : model;\n };\n\n // @ts-expect-error preserve the parameter order\n // eslint-disable-next-line @typescript-eslint/default-param-last\n const can = (action: string, entity?: Entity, field: string) => {\n const subject = toSubject(entity);\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n\n return (\n // Test the original action to see if it passes\n userAbility.can(action, subject, field) ||\n // Else try every known alias if at least one of them succeed, then the user \"can\"\n aliases.some((alias) => userAbility.can(alias, subject, field))\n );\n };\n\n // @ts-expect-error preserve the parameter order\n // eslint-disable-next-line @typescript-eslint/default-param-last\n const cannot = (action: string, entity?: Entity, field: string) => {\n const subject = toSubject(entity);\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n\n return (\n // Test both the original action\n userAbility.cannot(action, subject, field) &&\n // and every known alias, if all of them fail (cannot), then the user truly \"cannot\"\n aliases.every((alias) => userAbility.cannot(alias, subject, field))\n );\n };\n\n const sanitizeOutput = (data: Entity, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.sanitizeOutput(data, { subject: toSubject(data), action });\n };\n\n const getRulesForAction = (action: string) => {\n if (typeof userAbility.rulesFor !== 'function') {\n return [];\n }\n\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n const actions = [action, ...aliases];\n\n return actions.flatMap((actionName) => userAbility.rulesFor(actionName, model));\n };\n\n // Tell callers if we need the full entity to check access\n const requiresEntity = (action: string) => {\n if (typeof userAbility.rulesFor !== 'function') {\n return true;\n }\n\n const rules = getRulesForAction(action);\n\n return rules.some((rule: any) => rule.conditions && !isEmpty(rule.conditions));\n };\n\n const sanitizeQuery = (query: Query, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.sanitizeQuery(query, { subject: model, action });\n };\n\n const sanitizeInput = (action: string, data: any, entity?: Entity) => {\n return permissionsManager.sanitizeInput(data, {\n subject: entity ? toSubject(entity) : model,\n action,\n });\n };\n\n const validateQuery = (query: Query, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.validateQuery(query, { subject: model, action });\n };\n\n const validateInput = (action: string, data: any, entity?: Entity) => {\n return permissionsManager.validateInput(data, {\n subject: entity ? toSubject(entity) : model,\n action,\n });\n };\n\n const sanitizeCreateInput = (data: any) => sanitizeInput(ACTIONS.create, data);\n const sanitizeUpdateInput = (entity: Entity) => (data: any) =>\n sanitizeInput(ACTIONS.update, data, entity);\n\n const buildPermissionQuery = (query: Query, action: { action?: string } = {}) => {\n return permissionsManager.addPermissionsQueryTo(query, action);\n };\n\n const sanitizedQuery = (query: Query, action: { action?: string } = {}) => {\n return async.pipe(\n (q: Query) => sanitizeQuery(q, action),\n (q: Query) => buildPermissionQuery(q, action)\n )(query);\n };\n\n // Sanitized queries shortcuts\n Object.keys(ACTIONS).forEach((action) => {\n // @ts-expect-error TODO\n sanitizedQuery[action] = (query: Query) => sanitizedQuery(query, ACTIONS[action]);\n });\n\n // Permission utils shortcuts\n Object.keys(ACTIONS).forEach((action) => {\n // @ts-expect-error TODO\n can[action] = (...args: any) => can(ACTIONS[action], ...args);\n // @ts-expect-error TODO\n cannot[action] = (...args: any) => cannot(ACTIONS[action], ...args);\n // @ts-expect-error TODO\n requiresEntity[action] = () => requiresEntity(ACTIONS[action]);\n });\n\n return {\n // Permission utils\n can, // check if you have the permission\n cannot, // check if you don't have the permission\n requiresEntity, // check if entity data is needed for permission evaluation\n // Sanitizers\n sanitizeOutput,\n sanitizeQuery,\n sanitizeCreateInput,\n sanitizeUpdateInput,\n // Validators\n validateQuery,\n validateInput,\n // Queries Builder\n sanitizedQuery,\n };\n };\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n create: createPermissionChecker(strapi),\n});\n"],"names":["ACTIONS","read","create","update","delete","publish","unpublish","discard","createPermissionChecker","strapi","userAbility","model","permissionsManager","service","createPermissionsManager","ability","actionProvider","toSubject","entity","can","action","field","subject","aliases","unstable_aliases","some","alias","cannot","every","sanitizeOutput","data","getRulesForAction","rulesFor","actions","flatMap","actionName","requiresEntity","rules","rule","conditions","isEmpty","sanitizeQuery","query","sanitizeInput","validateQuery","validateInput","sanitizeCreateInput","sanitizeUpdateInput","buildPermissionQuery","addPermissionsQueryTo","sanitizedQuery","async","pipe","q","Object","keys","forEach","args"],"mappings":"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"}
1
+ {"version":3,"file":"permission-checker.mjs","sources":["../../../server/src/services/permission-checker.ts"],"sourcesContent":["import { async } from '@strapi/utils';\nimport { isEmpty } from 'lodash/fp';\nimport type { Core, UID, Modules } from '@strapi/types';\n\nconst ACTIONS = {\n read: 'plugin::content-manager.explorer.read',\n create: 'plugin::content-manager.explorer.create',\n update: 'plugin::content-manager.explorer.update',\n delete: 'plugin::content-manager.explorer.delete',\n publish: 'plugin::content-manager.explorer.publish',\n unpublish: 'plugin::content-manager.explorer.publish',\n discard: 'plugin::content-manager.explorer.update',\n} as const;\n\ntype Entity = Modules.EntityService.Result<UID.ContentType>;\ntype Query = {\n page?: string;\n pageSize?: string;\n sort?: string;\n};\n\nconst createPermissionChecker =\n (strapi: Core.Strapi) =>\n ({ userAbility, model }: { userAbility: any; model: string }) => {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n model,\n });\n\n const { actionProvider } = strapi.service('admin::permission');\n\n const toSubject = (entity?: Entity) => {\n return entity ? permissionsManager.toSubject(entity, model) : model;\n };\n\n // @ts-expect-error preserve the parameter order\n // eslint-disable-next-line @typescript-eslint/default-param-last\n const can = (action: string, entity?: Entity, field: string) => {\n const subject = toSubject(entity);\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n\n return (\n // Test the original action to see if it passes\n userAbility.can(action, subject, field) ||\n // Else try every known alias if at least one of them succeed, then the user \"can\"\n aliases.some((alias) => userAbility.can(alias, subject, field))\n );\n };\n\n // @ts-expect-error preserve the parameter order\n // eslint-disable-next-line @typescript-eslint/default-param-last\n const cannot = (action: string, entity?: Entity, field: string) => {\n const subject = toSubject(entity);\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n\n return (\n // Test both the original action\n userAbility.cannot(action, subject, field) &&\n // and every known alias, if all of them fail (cannot), then the user truly \"cannot\"\n aliases.every((alias) => userAbility.cannot(alias, subject, field))\n );\n };\n\n const sanitizeOutput = (data: Entity, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.sanitizeOutput(data, { subject: toSubject(data), action });\n };\n\n const getRulesForAction = (action: string) => {\n if (typeof userAbility.rulesFor !== 'function') {\n return [];\n }\n\n const aliases = actionProvider.unstable_aliases(action, model) as string[];\n const actions = [action, ...aliases];\n\n return actions.flatMap((actionName) => userAbility.rulesFor(actionName, model));\n };\n\n // Tell callers if we need the full entity to check access\n const requiresEntity = (action: string) => {\n if (typeof userAbility.rulesFor !== 'function') {\n return true;\n }\n\n const rules = getRulesForAction(action);\n\n return rules.some((rule: any) => rule.conditions && !isEmpty(rule.conditions));\n };\n\n const sanitizeQuery = (query: Query, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.sanitizeQuery(query, { subject: model, action });\n };\n\n const sanitizeInput = (action: string, data: any, entity?: Entity) => {\n return permissionsManager.sanitizeInput(data, {\n subject: entity ? toSubject(entity) : model,\n action,\n });\n };\n\n const validateQuery = (query: Query, { action = ACTIONS.read }: { action?: string } = {}) => {\n return permissionsManager.validateQuery(query, { subject: model, action });\n };\n\n const validateInput = (action: string, data: any, entity?: Entity) => {\n return permissionsManager.validateInput(data, {\n subject: entity ? toSubject(entity) : model,\n action,\n });\n };\n\n const sanitizeCreateInput = (data: any) => sanitizeInput(ACTIONS.create, data);\n const sanitizeUpdateInput = (entity: Entity) => (data: any) =>\n sanitizeInput(ACTIONS.update, data, entity);\n\n const buildPermissionQuery = (query: Query, action: { action?: string } = {}) => {\n return permissionsManager.addPermissionsQueryTo(query, action);\n };\n\n const sanitizedQuery = (query: Query, action: { action?: string } = {}) => {\n return async.pipe(\n (q: Query) => sanitizeQuery(q, action),\n (q: Query) => buildPermissionQuery(q, action)\n )(query);\n };\n\n // Sanitized queries shortcuts\n Object.keys(ACTIONS).forEach((action) => {\n // @ts-expect-error TODO\n sanitizedQuery[action] = (query: Query) => sanitizedQuery(query, ACTIONS[action]);\n });\n\n // Permission utils shortcuts\n Object.keys(ACTIONS).forEach((action) => {\n // @ts-expect-error TODO\n can[action] = (...args: any) => can(ACTIONS[action], ...args);\n // @ts-expect-error TODO\n cannot[action] = (...args: any) => cannot(ACTIONS[action], ...args);\n // @ts-expect-error TODO\n requiresEntity[action] = () => requiresEntity(ACTIONS[action]);\n });\n\n return {\n // Permission utils\n can, // check if you have the permission\n cannot, // check if you don't have the permission\n requiresEntity, // check if entity data is needed for permission evaluation\n // Sanitizers\n sanitizeOutput,\n sanitizeQuery,\n sanitizeCreateInput,\n sanitizeUpdateInput,\n // Validators\n validateQuery,\n validateInput,\n // Queries Builder\n sanitizedQuery,\n };\n };\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n create: createPermissionChecker(strapi),\n});\n"],"names":["ACTIONS","read","create","update","delete","publish","unpublish","discard","createPermissionChecker","strapi","userAbility","model","permissionsManager","service","createPermissionsManager","ability","actionProvider","toSubject","entity","can","action","field","subject","aliases","unstable_aliases","some","alias","cannot","every","sanitizeOutput","data","getRulesForAction","rulesFor","actions","flatMap","actionName","requiresEntity","rules","rule","conditions","isEmpty","sanitizeQuery","query","sanitizeInput","validateQuery","validateInput","sanitizeCreateInput","sanitizeUpdateInput","buildPermissionQuery","addPermissionsQueryTo","sanitizedQuery","async","pipe","q","Object","keys","forEach","args"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission.js","sources":["../../../server/src/services/permission.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Core, Struct } from '@strapi/types';\nimport { getService } from '../utils';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n canConfigureContentType({\n userAbility,\n contentType,\n }: {\n userAbility: any;\n contentType: Struct.ContentTypeSchema;\n }) {\n const action = contentTypesUtils.isSingleType(contentType)\n ? 'plugin::content-manager.single-types.configure-view'\n : 'plugin::content-manager.collection-types.configure-view';\n\n return userAbility.can(action);\n },\n\n async registerPermissions() {\n const displayedContentTypes = getService('content-types').findDisplayedContentTypes();\n const contentTypesUids = displayedContentTypes.map(prop('uid'));\n\n const actions = [\n {\n section: 'contentTypes',\n displayName: 'Create',\n uid: 'explorer.create',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Read',\n uid: 'explorer.read',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Update',\n uid: 'explorer.update',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Delete',\n uid: 'explorer.delete',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n },\n {\n section: 'contentTypes',\n displayName: 'Publish',\n uid: 'explorer.publish',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'single-types.configure-view',\n subCategory: 'single types',\n pluginName: 'content-manager',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'collection-types.configure-view',\n subCategory: 'collection types',\n pluginName: 'content-manager',\n },\n {\n section: 'plugins',\n displayName: 'Configure Layout',\n uid: 'components.configure-layout',\n subCategory: 'components',\n pluginName: 'content-manager',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n },\n});\n"],"names":["strapi","canConfigureContentType","userAbility","contentType","action","contentTypesUtils","isSingleType","can","registerPermissions","displayedContentTypes","getService","findDisplayedContentTypes","contentTypesUids","map","prop","actions","section","displayName","uid","pluginName","subjects","options","applyToProperties","subCategory","service","actionProvider","registerMany"],"mappings":";;;;;;AAMA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,IAAM;AACvDC,QAAAA,uBAAAA,CAAAA,CAAwB,EACtBC,WAAW,EACXC,WAAW,EAIZ,EAAA;AACC,YAAA,MAAMC,MAASC,GAAAA,wBAAAA,CAAkBC,YAAY,CAACH,eAC1C,qDACA,GAAA,yDAAA;YAEJ,OAAOD,WAAAA,CAAYK,GAAG,CAACH,MAAAA,CAAAA;AACzB,SAAA;QAEA,MAAMI,mBAAAA,CAAAA,GAAAA;YACJ,MAAMC,qBAAAA,GAAwBC,gBAAW,CAAA,eAAA,CAAA,CAAiBC,yBAAyB,EAAA;AACnF,YAAA,MAAMC,gBAAmBH,GAAAA,qBAAAA,CAAsBI,GAAG,CAACC,OAAK,CAAA,KAAA,CAAA,CAAA;AAExD,YAAA,MAAMC,OAAU,GAAA;AACd,gBAAA;oBACEC,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,QAAA;oBACbC,GAAK,EAAA,iBAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA,gBAAAA;oBACVS,OAAS,EAAA;wBACPC,iBAAmB,EAAA;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,MAAA;oBACbC,GAAK,EAAA,eAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA,gBAAAA;oBACVS,OAAS,EAAA;wBACPC,iBAAmB,EAAA;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,QAAA;oBACbC,GAAK,EAAA,iBAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA,gBAAAA;oBACVS,OAAS,EAAA;wBACPC,iBAAmB,EAAA;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,QAAA;oBACbC,GAAK,EAAA,iBAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA;AACZ,iBAAA;AACA,gBAAA;oBACEI,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,SAAA;oBACbC,GAAK,EAAA,kBAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA;AACZ,iBAAA;AACA,gBAAA;oBACEI,OAAS,EAAA,SAAA;oBACTC,WAAa,EAAA,gBAAA;oBACbC,GAAK,EAAA,6BAAA;oBACLK,WAAa,EAAA,cAAA;oBACbJ,UAAY,EAAA;AACd,iBAAA;AACA,gBAAA;oBACEH,OAAS,EAAA,SAAA;oBACTC,WAAa,EAAA,gBAAA;oBACbC,GAAK,EAAA,iCAAA;oBACLK,WAAa,EAAA,kBAAA;oBACbJ,UAAY,EAAA;AACd,iBAAA;AACA,gBAAA;oBACEH,OAAS,EAAA,SAAA;oBACTC,WAAa,EAAA,kBAAA;oBACbC,GAAK,EAAA,6BAAA;oBACLK,WAAa,EAAA,YAAA;oBACbJ,UAAY,EAAA;AACd;AACD,aAAA;AAED,YAAA,MAAMnB,OAAOwB,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACX,OAAAA,CAAAA;AACxE;AACF,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"permission.js","sources":["../../../server/src/services/permission.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Core, Struct } from '@strapi/types';\nimport { getService } from '../utils';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n canConfigureContentType({\n userAbility,\n contentType,\n }: {\n userAbility: any;\n contentType: Struct.ContentTypeSchema;\n }) {\n const action = contentTypesUtils.isSingleType(contentType)\n ? 'plugin::content-manager.single-types.configure-view'\n : 'plugin::content-manager.collection-types.configure-view';\n\n return userAbility.can(action);\n },\n\n async registerPermissions() {\n const displayedContentTypes = getService('content-types').findDisplayedContentTypes();\n const contentTypesUids = displayedContentTypes.map(prop('uid'));\n\n const actions = [\n {\n section: 'contentTypes',\n displayName: 'Create',\n uid: 'explorer.create',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Read',\n uid: 'explorer.read',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Update',\n uid: 'explorer.update',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Delete',\n uid: 'explorer.delete',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n },\n {\n section: 'contentTypes',\n displayName: 'Publish',\n uid: 'explorer.publish',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'single-types.configure-view',\n subCategory: 'single types',\n pluginName: 'content-manager',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'collection-types.configure-view',\n subCategory: 'collection types',\n pluginName: 'content-manager',\n },\n {\n section: 'plugins',\n displayName: 'Configure Layout',\n uid: 'components.configure-layout',\n subCategory: 'components',\n pluginName: 'content-manager',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n },\n});\n"],"names":["strapi","canConfigureContentType","userAbility","contentType","action","contentTypesUtils","isSingleType","can","registerPermissions","displayedContentTypes","getService","findDisplayedContentTypes","contentTypesUids","map","prop","actions","section","displayName","uid","pluginName","subjects","options","applyToProperties","subCategory","service","actionProvider","registerMany"],"mappings":";;;;;;AAMA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,IAAM;AACvDC,QAAAA,uBAAAA,CAAAA,CAAwB,EACtBC,WAAW,EACXC,WAAW,EAIZ,EAAA;AACC,YAAA,MAAMC,MAAAA,GAASC,wBAAAA,CAAkBC,YAAY,CAACH,eAC1C,qDAAA,GACA,yDAAA;YAEJ,OAAOD,WAAAA,CAAYK,GAAG,CAACH,MAAAA,CAAAA;AACzB,QAAA,CAAA;QAEA,MAAMI,mBAAAA,CAAAA,GAAAA;YACJ,MAAMC,qBAAAA,GAAwBC,gBAAAA,CAAW,eAAA,CAAA,CAAiBC,yBAAyB,EAAA;AACnF,YAAA,MAAMC,gBAAAA,GAAmBH,qBAAAA,CAAsBI,GAAG,CAACC,OAAAA,CAAK,KAAA,CAAA,CAAA;AAExD,YAAA,MAAMC,OAAAA,GAAU;AACd,gBAAA;oBACEC,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,QAAA;oBACbC,GAAAA,EAAK,iBAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR,gBAAAA;oBACVS,OAAAA,EAAS;wBACPC,iBAAAA,EAAmB;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,MAAA;oBACbC,GAAAA,EAAK,eAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR,gBAAAA;oBACVS,OAAAA,EAAS;wBACPC,iBAAAA,EAAmB;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,QAAA;oBACbC,GAAAA,EAAK,iBAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR,gBAAAA;oBACVS,OAAAA,EAAS;wBACPC,iBAAAA,EAAmB;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,QAAA;oBACbC,GAAAA,EAAK,iBAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR;AACZ,iBAAA;AACA,gBAAA;oBACEI,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,SAAA;oBACbC,GAAAA,EAAK,kBAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR;AACZ,iBAAA;AACA,gBAAA;oBACEI,OAAAA,EAAS,SAAA;oBACTC,WAAAA,EAAa,gBAAA;oBACbC,GAAAA,EAAK,6BAAA;oBACLK,WAAAA,EAAa,cAAA;oBACbJ,UAAAA,EAAY;AACd,iBAAA;AACA,gBAAA;oBACEH,OAAAA,EAAS,SAAA;oBACTC,WAAAA,EAAa,gBAAA;oBACbC,GAAAA,EAAK,iCAAA;oBACLK,WAAAA,EAAa,kBAAA;oBACbJ,UAAAA,EAAY;AACd,iBAAA;AACA,gBAAA;oBACEH,OAAAA,EAAS,SAAA;oBACTC,WAAAA,EAAa,kBAAA;oBACbC,GAAAA,EAAK,6BAAA;oBACLK,WAAAA,EAAa,YAAA;oBACbJ,UAAAA,EAAY;AACd;AACD,aAAA;AAED,YAAA,MAAMnB,OAAOwB,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACX,OAAAA,CAAAA;AACxE,QAAA;AACF,KAAA,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission.mjs","sources":["../../../server/src/services/permission.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Core, Struct } from '@strapi/types';\nimport { getService } from '../utils';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n canConfigureContentType({\n userAbility,\n contentType,\n }: {\n userAbility: any;\n contentType: Struct.ContentTypeSchema;\n }) {\n const action = contentTypesUtils.isSingleType(contentType)\n ? 'plugin::content-manager.single-types.configure-view'\n : 'plugin::content-manager.collection-types.configure-view';\n\n return userAbility.can(action);\n },\n\n async registerPermissions() {\n const displayedContentTypes = getService('content-types').findDisplayedContentTypes();\n const contentTypesUids = displayedContentTypes.map(prop('uid'));\n\n const actions = [\n {\n section: 'contentTypes',\n displayName: 'Create',\n uid: 'explorer.create',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Read',\n uid: 'explorer.read',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Update',\n uid: 'explorer.update',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Delete',\n uid: 'explorer.delete',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n },\n {\n section: 'contentTypes',\n displayName: 'Publish',\n uid: 'explorer.publish',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'single-types.configure-view',\n subCategory: 'single types',\n pluginName: 'content-manager',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'collection-types.configure-view',\n subCategory: 'collection types',\n pluginName: 'content-manager',\n },\n {\n section: 'plugins',\n displayName: 'Configure Layout',\n uid: 'components.configure-layout',\n subCategory: 'components',\n pluginName: 'content-manager',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n },\n});\n"],"names":["strapi","canConfigureContentType","userAbility","contentType","action","contentTypesUtils","isSingleType","can","registerPermissions","displayedContentTypes","getService","findDisplayedContentTypes","contentTypesUids","map","prop","actions","section","displayName","uid","pluginName","subjects","options","applyToProperties","subCategory","service","actionProvider","registerMany"],"mappings":";;;;AAMA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,IAAM;AACvDC,QAAAA,uBAAAA,CAAAA,CAAwB,EACtBC,WAAW,EACXC,WAAW,EAIZ,EAAA;AACC,YAAA,MAAMC,MAASC,GAAAA,YAAAA,CAAkBC,YAAY,CAACH,eAC1C,qDACA,GAAA,yDAAA;YAEJ,OAAOD,WAAAA,CAAYK,GAAG,CAACH,MAAAA,CAAAA;AACzB,SAAA;QAEA,MAAMI,mBAAAA,CAAAA,GAAAA;YACJ,MAAMC,qBAAAA,GAAwBC,UAAW,CAAA,eAAA,CAAA,CAAiBC,yBAAyB,EAAA;AACnF,YAAA,MAAMC,gBAAmBH,GAAAA,qBAAAA,CAAsBI,GAAG,CAACC,IAAK,CAAA,KAAA,CAAA,CAAA;AAExD,YAAA,MAAMC,OAAU,GAAA;AACd,gBAAA;oBACEC,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,QAAA;oBACbC,GAAK,EAAA,iBAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA,gBAAAA;oBACVS,OAAS,EAAA;wBACPC,iBAAmB,EAAA;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,MAAA;oBACbC,GAAK,EAAA,eAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA,gBAAAA;oBACVS,OAAS,EAAA;wBACPC,iBAAmB,EAAA;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,QAAA;oBACbC,GAAK,EAAA,iBAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA,gBAAAA;oBACVS,OAAS,EAAA;wBACPC,iBAAmB,EAAA;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,QAAA;oBACbC,GAAK,EAAA,iBAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA;AACZ,iBAAA;AACA,gBAAA;oBACEI,OAAS,EAAA,cAAA;oBACTC,WAAa,EAAA,SAAA;oBACbC,GAAK,EAAA,kBAAA;oBACLC,UAAY,EAAA,iBAAA;oBACZC,QAAUR,EAAAA;AACZ,iBAAA;AACA,gBAAA;oBACEI,OAAS,EAAA,SAAA;oBACTC,WAAa,EAAA,gBAAA;oBACbC,GAAK,EAAA,6BAAA;oBACLK,WAAa,EAAA,cAAA;oBACbJ,UAAY,EAAA;AACd,iBAAA;AACA,gBAAA;oBACEH,OAAS,EAAA,SAAA;oBACTC,WAAa,EAAA,gBAAA;oBACbC,GAAK,EAAA,iCAAA;oBACLK,WAAa,EAAA,kBAAA;oBACbJ,UAAY,EAAA;AACd,iBAAA;AACA,gBAAA;oBACEH,OAAS,EAAA,SAAA;oBACTC,WAAa,EAAA,kBAAA;oBACbC,GAAK,EAAA,6BAAA;oBACLK,WAAa,EAAA,YAAA;oBACbJ,UAAY,EAAA;AACd;AACD,aAAA;AAED,YAAA,MAAMnB,OAAOwB,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACX,OAAAA,CAAAA;AACxE;AACF,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"permission.mjs","sources":["../../../server/src/services/permission.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Core, Struct } from '@strapi/types';\nimport { getService } from '../utils';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n canConfigureContentType({\n userAbility,\n contentType,\n }: {\n userAbility: any;\n contentType: Struct.ContentTypeSchema;\n }) {\n const action = contentTypesUtils.isSingleType(contentType)\n ? 'plugin::content-manager.single-types.configure-view'\n : 'plugin::content-manager.collection-types.configure-view';\n\n return userAbility.can(action);\n },\n\n async registerPermissions() {\n const displayedContentTypes = getService('content-types').findDisplayedContentTypes();\n const contentTypesUids = displayedContentTypes.map(prop('uid'));\n\n const actions = [\n {\n section: 'contentTypes',\n displayName: 'Create',\n uid: 'explorer.create',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Read',\n uid: 'explorer.read',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Update',\n uid: 'explorer.update',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n options: {\n applyToProperties: ['fields'],\n },\n },\n {\n section: 'contentTypes',\n displayName: 'Delete',\n uid: 'explorer.delete',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n },\n {\n section: 'contentTypes',\n displayName: 'Publish',\n uid: 'explorer.publish',\n pluginName: 'content-manager',\n subjects: contentTypesUids,\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'single-types.configure-view',\n subCategory: 'single types',\n pluginName: 'content-manager',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'collection-types.configure-view',\n subCategory: 'collection types',\n pluginName: 'content-manager',\n },\n {\n section: 'plugins',\n displayName: 'Configure Layout',\n uid: 'components.configure-layout',\n subCategory: 'components',\n pluginName: 'content-manager',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n },\n});\n"],"names":["strapi","canConfigureContentType","userAbility","contentType","action","contentTypesUtils","isSingleType","can","registerPermissions","displayedContentTypes","getService","findDisplayedContentTypes","contentTypesUids","map","prop","actions","section","displayName","uid","pluginName","subjects","options","applyToProperties","subCategory","service","actionProvider","registerMany"],"mappings":";;;;AAMA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,IAAM;AACvDC,QAAAA,uBAAAA,CAAAA,CAAwB,EACtBC,WAAW,EACXC,WAAW,EAIZ,EAAA;AACC,YAAA,MAAMC,MAAAA,GAASC,YAAAA,CAAkBC,YAAY,CAACH,eAC1C,qDAAA,GACA,yDAAA;YAEJ,OAAOD,WAAAA,CAAYK,GAAG,CAACH,MAAAA,CAAAA;AACzB,QAAA,CAAA;QAEA,MAAMI,mBAAAA,CAAAA,GAAAA;YACJ,MAAMC,qBAAAA,GAAwBC,UAAAA,CAAW,eAAA,CAAA,CAAiBC,yBAAyB,EAAA;AACnF,YAAA,MAAMC,gBAAAA,GAAmBH,qBAAAA,CAAsBI,GAAG,CAACC,IAAAA,CAAK,KAAA,CAAA,CAAA;AAExD,YAAA,MAAMC,OAAAA,GAAU;AACd,gBAAA;oBACEC,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,QAAA;oBACbC,GAAAA,EAAK,iBAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR,gBAAAA;oBACVS,OAAAA,EAAS;wBACPC,iBAAAA,EAAmB;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,MAAA;oBACbC,GAAAA,EAAK,eAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR,gBAAAA;oBACVS,OAAAA,EAAS;wBACPC,iBAAAA,EAAmB;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,QAAA;oBACbC,GAAAA,EAAK,iBAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR,gBAAAA;oBACVS,OAAAA,EAAS;wBACPC,iBAAAA,EAAmB;AAAC,4BAAA;AAAS;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEN,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,QAAA;oBACbC,GAAAA,EAAK,iBAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR;AACZ,iBAAA;AACA,gBAAA;oBACEI,OAAAA,EAAS,cAAA;oBACTC,WAAAA,EAAa,SAAA;oBACbC,GAAAA,EAAK,kBAAA;oBACLC,UAAAA,EAAY,iBAAA;oBACZC,QAAAA,EAAUR;AACZ,iBAAA;AACA,gBAAA;oBACEI,OAAAA,EAAS,SAAA;oBACTC,WAAAA,EAAa,gBAAA;oBACbC,GAAAA,EAAK,6BAAA;oBACLK,WAAAA,EAAa,cAAA;oBACbJ,UAAAA,EAAY;AACd,iBAAA;AACA,gBAAA;oBACEH,OAAAA,EAAS,SAAA;oBACTC,WAAAA,EAAa,gBAAA;oBACbC,GAAAA,EAAK,iCAAA;oBACLK,WAAAA,EAAa,kBAAA;oBACbJ,UAAAA,EAAY;AACd,iBAAA;AACA,gBAAA;oBACEH,OAAAA,EAAS,SAAA;oBACTC,WAAAA,EAAa,kBAAA;oBACbC,GAAAA,EAAK,6BAAA;oBACLK,WAAAA,EAAa,YAAA;oBACbJ,UAAAA,EAAY;AACd;AACD,aAAA;AAED,YAAA,MAAMnB,OAAOwB,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACX,OAAAA,CAAAA;AACxE,QAAA;AACF,KAAA,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"populate-builder.js","sources":["../../../server/src/services/populate-builder.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport type { UID } from '@strapi/types';\nimport { type Populate, getDeepPopulate, getQueryPopulate } from './utils/populate';\n\n/**\n * Builder to create a Strapi populate object.\n *\n * @param uid - Content type UID\n *\n * @example\n * const populate = await populateBuilder('api::article.article').countRelations().build();\n * // populate = { article: { populate: { count: true } } }\n *\n */\nconst populateBuilder = (uid: UID.Schema) => {\n let getInitialPopulate = async (): Promise<undefined | Populate> => {\n return undefined;\n };\n const deepPopulateOptions = {\n countMany: false,\n countOne: false,\n maxLevel: -1,\n };\n\n const builder = {\n /**\n * Populates all attribute fields present in a query.\n * @param query - Strapi query object\n */\n populateFromQuery(query: object) {\n getInitialPopulate = async () => getQueryPopulate(uid, query);\n return builder;\n },\n\n /**\n * Populate relations as count.\n * @param [options]\n * @param [options.toMany] - Populate XtoMany relations as count if true.\n * @param [options.toOne] - Populate XtoOne relations as count if true.\n */\n countRelations({ toMany, toOne } = { toMany: true, toOne: true }) {\n if (!isNil(toMany)) {\n deepPopulateOptions.countMany = toMany;\n }\n if (!isNil(toOne)) {\n deepPopulateOptions.countOne = toOne;\n }\n return builder;\n },\n\n /**\n * Populate relations deeply, up to a certain level.\n * @param [level=Infinity] - Max level of nested populate.\n */\n populateDeep(level = Infinity) {\n deepPopulateOptions.maxLevel = level;\n return builder;\n },\n\n /**\n * Construct the populate object based on the builder options.\n * @returns Populate object\n */\n async build() {\n const initialPopulate = await getInitialPopulate();\n\n if (deepPopulateOptions.maxLevel === -1) {\n return initialPopulate;\n }\n\n return getDeepPopulate(uid, { ...deepPopulateOptions, initialPopulate });\n },\n };\n\n return builder;\n};\n\nexport default () => populateBuilder;\n"],"names":["populateBuilder","uid","getInitialPopulate","undefined","deepPopulateOptions","countMany","countOne","maxLevel","builder","populateFromQuery","query","getQueryPopulate","countRelations","toMany","toOne","isNil","populateDeep","level","Infinity","build","initialPopulate","getDeepPopulate"],"mappings":";;;;;AAIA;;;;;;;;;IAUA,MAAMA,kBAAkB,CAACC,GAAAA,GAAAA;AACvB,IAAA,IAAIC,kBAAqB,GAAA,UAAA;QACvB,OAAOC,SAAAA;AACT,KAAA;AACA,IAAA,MAAMC,mBAAsB,GAAA;QAC1BC,SAAW,EAAA,KAAA;QACXC,QAAU,EAAA,KAAA;AACVC,QAAAA,QAAAA,EAAU,CAAC;AACb,KAAA;AAEA,IAAA,MAAMC,OAAU,GAAA;AACd;;;AAGC,QACDC,mBAAkBC,KAAa,EAAA;YAC7BR,kBAAqB,GAAA,UAAYS,0BAAiBV,GAAKS,EAAAA,KAAAA,CAAAA;YACvD,OAAOF,OAAAA;AACT,SAAA;AAEA;;;;;AAKC,QACDI,gBAAe,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAG;YAAED,MAAQ,EAAA,IAAA;YAAMC,KAAO,EAAA;SAAM,EAAA;YAC9D,IAAI,CAACC,SAAMF,MAAS,CAAA,EAAA;AAClBT,gBAAAA,mBAAAA,CAAoBC,SAAS,GAAGQ,MAAAA;AAClC;YACA,IAAI,CAACE,SAAMD,KAAQ,CAAA,EAAA;AACjBV,gBAAAA,mBAAAA,CAAoBE,QAAQ,GAAGQ,KAAAA;AACjC;YACA,OAAON,OAAAA;AACT,SAAA;AAEA;;;QAIAQ,YAAAA,CAAAA,CAAaC,QAAQC,QAAQ,EAAA;AAC3Bd,YAAAA,mBAAAA,CAAoBG,QAAQ,GAAGU,KAAAA;YAC/B,OAAOT,OAAAA;AACT,SAAA;AAEA;;;AAGC,QACD,MAAMW,KAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMC,kBAAkB,MAAMlB,kBAAAA,EAAAA;AAE9B,YAAA,IAAIE,mBAAoBG,CAAAA,QAAQ,KAAK,CAAC,CAAG,EAAA;gBACvC,OAAOa,eAAAA;AACT;AAEA,YAAA,OAAOC,yBAAgBpB,GAAK,EAAA;AAAE,gBAAA,GAAGG,mBAAmB;AAAEgB,gBAAAA;AAAgB,aAAA,CAAA;AACxE;AACF,KAAA;IAEA,OAAOZ,OAAAA;AACT,CAAA;AAEA,wBAAe,CAAA,IAAMR,eAAc;;;;"}
1
+ {"version":3,"file":"populate-builder.js","sources":["../../../server/src/services/populate-builder.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport type { UID } from '@strapi/types';\nimport { type Populate, getDeepPopulate, getQueryPopulate } from './utils/populate';\n\n/**\n * Builder to create a Strapi populate object.\n *\n * @param uid - Content type UID\n *\n * @example\n * const populate = await populateBuilder('api::article.article').countRelations().build();\n * // populate = { article: { populate: { count: true } } }\n *\n */\nconst populateBuilder = (uid: UID.Schema) => {\n let getInitialPopulate = async (): Promise<undefined | Populate> => {\n return undefined;\n };\n const deepPopulateOptions = {\n countMany: false,\n countOne: false,\n maxLevel: -1,\n };\n\n const builder = {\n /**\n * Populates all attribute fields present in a query.\n * @param query - Strapi query object\n */\n populateFromQuery(query: object) {\n getInitialPopulate = async () => getQueryPopulate(uid, query);\n return builder;\n },\n\n /**\n * Populate relations as count.\n * @param [options]\n * @param [options.toMany] - Populate XtoMany relations as count if true.\n * @param [options.toOne] - Populate XtoOne relations as count if true.\n */\n countRelations({ toMany, toOne } = { toMany: true, toOne: true }) {\n if (!isNil(toMany)) {\n deepPopulateOptions.countMany = toMany;\n }\n if (!isNil(toOne)) {\n deepPopulateOptions.countOne = toOne;\n }\n return builder;\n },\n\n /**\n * Populate relations deeply, up to a certain level.\n * @param [level=Infinity] - Max level of nested populate.\n */\n populateDeep(level = Infinity) {\n deepPopulateOptions.maxLevel = level;\n return builder;\n },\n\n /**\n * Construct the populate object based on the builder options.\n * @returns Populate object\n */\n async build() {\n const initialPopulate = await getInitialPopulate();\n\n if (deepPopulateOptions.maxLevel === -1) {\n return initialPopulate;\n }\n\n return getDeepPopulate(uid, { ...deepPopulateOptions, initialPopulate });\n },\n };\n\n return builder;\n};\n\nexport default () => populateBuilder;\n"],"names":["populateBuilder","uid","getInitialPopulate","undefined","deepPopulateOptions","countMany","countOne","maxLevel","builder","populateFromQuery","query","getQueryPopulate","countRelations","toMany","toOne","isNil","populateDeep","level","Infinity","build","initialPopulate","getDeepPopulate"],"mappings":";;;;;AAIA;;;;;;;;;IAUA,MAAMA,kBAAkB,CAACC,GAAAA,GAAAA;AACvB,IAAA,IAAIC,kBAAAA,GAAqB,UAAA;QACvB,OAAOC,SAAAA;AACT,IAAA,CAAA;AACA,IAAA,MAAMC,mBAAAA,GAAsB;QAC1BC,SAAAA,EAAW,KAAA;QACXC,QAAAA,EAAU,KAAA;AACVC,QAAAA,QAAAA,EAAU;AACZ,KAAA;AAEA,IAAA,MAAMC,OAAAA,GAAU;AACd;;;AAGC,QACDC,mBAAkBC,KAAa,EAAA;YAC7BR,kBAAAA,GAAqB,UAAYS,0BAAiBV,GAAAA,EAAKS,KAAAA,CAAAA;YACvD,OAAOF,OAAAA;AACT,QAAA,CAAA;AAEA;;;;;AAKC,QACDI,gBAAe,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAG;YAAED,MAAAA,EAAQ,IAAA;YAAMC,KAAAA,EAAO;SAAM,EAAA;YAC9D,IAAI,CAACC,SAAMF,MAAAA,CAAAA,EAAS;AAClBT,gBAAAA,mBAAAA,CAAoBC,SAAS,GAAGQ,MAAAA;AAClC,YAAA;YACA,IAAI,CAACE,SAAMD,KAAAA,CAAAA,EAAQ;AACjBV,gBAAAA,mBAAAA,CAAoBE,QAAQ,GAAGQ,KAAAA;AACjC,YAAA;YACA,OAAON,OAAAA;AACT,QAAA,CAAA;AAEA;;;QAIAQ,YAAAA,CAAAA,CAAaC,QAAQC,QAAQ,EAAA;AAC3Bd,YAAAA,mBAAAA,CAAoBG,QAAQ,GAAGU,KAAAA;YAC/B,OAAOT,OAAAA;AACT,QAAA,CAAA;AAEA;;;AAGC,QACD,MAAMW,KAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMC,kBAAkB,MAAMlB,kBAAAA,EAAAA;AAE9B,YAAA,IAAIE,mBAAAA,CAAoBG,QAAQ,KAAK,EAAC,EAAG;gBACvC,OAAOa,eAAAA;AACT,YAAA;AAEA,YAAA,OAAOC,yBAAgBpB,GAAAA,EAAK;AAAE,gBAAA,GAAGG,mBAAmB;AAAEgB,gBAAAA;AAAgB,aAAA,CAAA;AACxE,QAAA;AACF,KAAA;IAEA,OAAOZ,OAAAA;AACT,CAAA;AAEA,wBAAe,CAAA,IAAMR,eAAc;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { isNil } from 'lodash/fp';
2
- import { getDeepPopulate, getQueryPopulate } from './utils/populate.mjs';
2
+ import { getQueryPopulate, getDeepPopulate } from './utils/populate.mjs';
3
3
 
4
4
  /**
5
5
  * Builder to create a Strapi populate object.
@@ -10,7 +10,7 @@ import { getDeepPopulate, getQueryPopulate } from './utils/populate.mjs';
10
10
  * const populate = await populateBuilder('api::article.article').countRelations().build();
11
11
  * // populate = { article: { populate: { count: true } } }
12
12
  *
13
- */ const populateBuilder = (uid)=>{
13
+ */ const populateBuilder$1 = (uid)=>{
14
14
  let getInitialPopulate = async ()=>{
15
15
  return undefined;
16
16
  };
@@ -67,7 +67,7 @@ import { getDeepPopulate, getQueryPopulate } from './utils/populate.mjs';
67
67
  };
68
68
  return builder;
69
69
  };
70
- var populateBuilder$1 = (()=>populateBuilder);
70
+ var populateBuilder = (()=>populateBuilder$1);
71
71
 
72
- export { populateBuilder$1 as default };
72
+ export { populateBuilder as default };
73
73
  //# sourceMappingURL=populate-builder.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"populate-builder.mjs","sources":["../../../server/src/services/populate-builder.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport type { UID } from '@strapi/types';\nimport { type Populate, getDeepPopulate, getQueryPopulate } from './utils/populate';\n\n/**\n * Builder to create a Strapi populate object.\n *\n * @param uid - Content type UID\n *\n * @example\n * const populate = await populateBuilder('api::article.article').countRelations().build();\n * // populate = { article: { populate: { count: true } } }\n *\n */\nconst populateBuilder = (uid: UID.Schema) => {\n let getInitialPopulate = async (): Promise<undefined | Populate> => {\n return undefined;\n };\n const deepPopulateOptions = {\n countMany: false,\n countOne: false,\n maxLevel: -1,\n };\n\n const builder = {\n /**\n * Populates all attribute fields present in a query.\n * @param query - Strapi query object\n */\n populateFromQuery(query: object) {\n getInitialPopulate = async () => getQueryPopulate(uid, query);\n return builder;\n },\n\n /**\n * Populate relations as count.\n * @param [options]\n * @param [options.toMany] - Populate XtoMany relations as count if true.\n * @param [options.toOne] - Populate XtoOne relations as count if true.\n */\n countRelations({ toMany, toOne } = { toMany: true, toOne: true }) {\n if (!isNil(toMany)) {\n deepPopulateOptions.countMany = toMany;\n }\n if (!isNil(toOne)) {\n deepPopulateOptions.countOne = toOne;\n }\n return builder;\n },\n\n /**\n * Populate relations deeply, up to a certain level.\n * @param [level=Infinity] - Max level of nested populate.\n */\n populateDeep(level = Infinity) {\n deepPopulateOptions.maxLevel = level;\n return builder;\n },\n\n /**\n * Construct the populate object based on the builder options.\n * @returns Populate object\n */\n async build() {\n const initialPopulate = await getInitialPopulate();\n\n if (deepPopulateOptions.maxLevel === -1) {\n return initialPopulate;\n }\n\n return getDeepPopulate(uid, { ...deepPopulateOptions, initialPopulate });\n },\n };\n\n return builder;\n};\n\nexport default () => populateBuilder;\n"],"names":["populateBuilder","uid","getInitialPopulate","undefined","deepPopulateOptions","countMany","countOne","maxLevel","builder","populateFromQuery","query","getQueryPopulate","countRelations","toMany","toOne","isNil","populateDeep","level","Infinity","build","initialPopulate","getDeepPopulate"],"mappings":";;;AAIA;;;;;;;;;IAUA,MAAMA,kBAAkB,CAACC,GAAAA,GAAAA;AACvB,IAAA,IAAIC,kBAAqB,GAAA,UAAA;QACvB,OAAOC,SAAAA;AACT,KAAA;AACA,IAAA,MAAMC,mBAAsB,GAAA;QAC1BC,SAAW,EAAA,KAAA;QACXC,QAAU,EAAA,KAAA;AACVC,QAAAA,QAAAA,EAAU,CAAC;AACb,KAAA;AAEA,IAAA,MAAMC,OAAU,GAAA;AACd;;;AAGC,QACDC,mBAAkBC,KAAa,EAAA;YAC7BR,kBAAqB,GAAA,UAAYS,iBAAiBV,GAAKS,EAAAA,KAAAA,CAAAA;YACvD,OAAOF,OAAAA;AACT,SAAA;AAEA;;;;;AAKC,QACDI,gBAAe,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAG;YAAED,MAAQ,EAAA,IAAA;YAAMC,KAAO,EAAA;SAAM,EAAA;YAC9D,IAAI,CAACC,MAAMF,MAAS,CAAA,EAAA;AAClBT,gBAAAA,mBAAAA,CAAoBC,SAAS,GAAGQ,MAAAA;AAClC;YACA,IAAI,CAACE,MAAMD,KAAQ,CAAA,EAAA;AACjBV,gBAAAA,mBAAAA,CAAoBE,QAAQ,GAAGQ,KAAAA;AACjC;YACA,OAAON,OAAAA;AACT,SAAA;AAEA;;;QAIAQ,YAAAA,CAAAA,CAAaC,QAAQC,QAAQ,EAAA;AAC3Bd,YAAAA,mBAAAA,CAAoBG,QAAQ,GAAGU,KAAAA;YAC/B,OAAOT,OAAAA;AACT,SAAA;AAEA;;;AAGC,QACD,MAAMW,KAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMC,kBAAkB,MAAMlB,kBAAAA,EAAAA;AAE9B,YAAA,IAAIE,mBAAoBG,CAAAA,QAAQ,KAAK,CAAC,CAAG,EAAA;gBACvC,OAAOa,eAAAA;AACT;AAEA,YAAA,OAAOC,gBAAgBpB,GAAK,EAAA;AAAE,gBAAA,GAAGG,mBAAmB;AAAEgB,gBAAAA;AAAgB,aAAA,CAAA;AACxE;AACF,KAAA;IAEA,OAAOZ,OAAAA;AACT,CAAA;AAEA,wBAAe,CAAA,IAAMR,eAAc;;;;"}
1
+ {"version":3,"file":"populate-builder.mjs","sources":["../../../server/src/services/populate-builder.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport type { UID } from '@strapi/types';\nimport { type Populate, getDeepPopulate, getQueryPopulate } from './utils/populate';\n\n/**\n * Builder to create a Strapi populate object.\n *\n * @param uid - Content type UID\n *\n * @example\n * const populate = await populateBuilder('api::article.article').countRelations().build();\n * // populate = { article: { populate: { count: true } } }\n *\n */\nconst populateBuilder = (uid: UID.Schema) => {\n let getInitialPopulate = async (): Promise<undefined | Populate> => {\n return undefined;\n };\n const deepPopulateOptions = {\n countMany: false,\n countOne: false,\n maxLevel: -1,\n };\n\n const builder = {\n /**\n * Populates all attribute fields present in a query.\n * @param query - Strapi query object\n */\n populateFromQuery(query: object) {\n getInitialPopulate = async () => getQueryPopulate(uid, query);\n return builder;\n },\n\n /**\n * Populate relations as count.\n * @param [options]\n * @param [options.toMany] - Populate XtoMany relations as count if true.\n * @param [options.toOne] - Populate XtoOne relations as count if true.\n */\n countRelations({ toMany, toOne } = { toMany: true, toOne: true }) {\n if (!isNil(toMany)) {\n deepPopulateOptions.countMany = toMany;\n }\n if (!isNil(toOne)) {\n deepPopulateOptions.countOne = toOne;\n }\n return builder;\n },\n\n /**\n * Populate relations deeply, up to a certain level.\n * @param [level=Infinity] - Max level of nested populate.\n */\n populateDeep(level = Infinity) {\n deepPopulateOptions.maxLevel = level;\n return builder;\n },\n\n /**\n * Construct the populate object based on the builder options.\n * @returns Populate object\n */\n async build() {\n const initialPopulate = await getInitialPopulate();\n\n if (deepPopulateOptions.maxLevel === -1) {\n return initialPopulate;\n }\n\n return getDeepPopulate(uid, { ...deepPopulateOptions, initialPopulate });\n },\n };\n\n return builder;\n};\n\nexport default () => populateBuilder;\n"],"names":["populateBuilder","uid","getInitialPopulate","undefined","deepPopulateOptions","countMany","countOne","maxLevel","builder","populateFromQuery","query","getQueryPopulate","countRelations","toMany","toOne","isNil","populateDeep","level","Infinity","build","initialPopulate","getDeepPopulate"],"mappings":";;;AAIA;;;;;;;;;IAUA,MAAMA,oBAAkB,CAACC,GAAAA,GAAAA;AACvB,IAAA,IAAIC,kBAAAA,GAAqB,UAAA;QACvB,OAAOC,SAAAA;AACT,IAAA,CAAA;AACA,IAAA,MAAMC,mBAAAA,GAAsB;QAC1BC,SAAAA,EAAW,KAAA;QACXC,QAAAA,EAAU,KAAA;AACVC,QAAAA,QAAAA,EAAU;AACZ,KAAA;AAEA,IAAA,MAAMC,OAAAA,GAAU;AACd;;;AAGC,QACDC,mBAAkBC,KAAa,EAAA;YAC7BR,kBAAAA,GAAqB,UAAYS,iBAAiBV,GAAAA,EAAKS,KAAAA,CAAAA;YACvD,OAAOF,OAAAA;AACT,QAAA,CAAA;AAEA;;;;;AAKC,QACDI,gBAAe,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAG;YAAED,MAAAA,EAAQ,IAAA;YAAMC,KAAAA,EAAO;SAAM,EAAA;YAC9D,IAAI,CAACC,MAAMF,MAAAA,CAAAA,EAAS;AAClBT,gBAAAA,mBAAAA,CAAoBC,SAAS,GAAGQ,MAAAA;AAClC,YAAA;YACA,IAAI,CAACE,MAAMD,KAAAA,CAAAA,EAAQ;AACjBV,gBAAAA,mBAAAA,CAAoBE,QAAQ,GAAGQ,KAAAA;AACjC,YAAA;YACA,OAAON,OAAAA;AACT,QAAA,CAAA;AAEA;;;QAIAQ,YAAAA,CAAAA,CAAaC,QAAQC,QAAQ,EAAA;AAC3Bd,YAAAA,mBAAAA,CAAoBG,QAAQ,GAAGU,KAAAA;YAC/B,OAAOT,OAAAA;AACT,QAAA,CAAA;AAEA;;;AAGC,QACD,MAAMW,KAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMC,kBAAkB,MAAMlB,kBAAAA,EAAAA;AAE9B,YAAA,IAAIE,mBAAAA,CAAoBG,QAAQ,KAAK,EAAC,EAAG;gBACvC,OAAOa,eAAAA;AACT,YAAA;AAEA,YAAA,OAAOC,gBAAgBpB,GAAAA,EAAK;AAAE,gBAAA,GAAGG,mBAAmB;AAAEgB,gBAAAA;AAAgB,aAAA,CAAA;AACxE,QAAA;AACF,KAAA;IAEA,OAAOZ,OAAAA;AACT,CAAA;AAEA,sBAAe,CAAA,IAAMR,iBAAc;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"uid.js","sources":["../../../server/src/services/uid.ts"],"sourcesContent":["import _ from 'lodash';\nimport slugify from '@sindresorhus/slugify';\n\nimport type { Core, Schema, UID } from '@strapi/types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async generateUIDField({\n contentTypeUID,\n field,\n data,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n data: Record<string, any>;\n locale?: string;\n }) {\n const contentType = strapi.contentTypes[contentTypeUID];\n const { attributes } = contentType;\n\n const {\n targetField,\n default: defaultValue,\n options,\n } = attributes[field] as Schema.Attribute.UID;\n\n // @ts-expect-error targetField can be undefined\n const targetValue = _.get(data, targetField);\n\n if (!_.isEmpty(targetValue)) {\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(targetValue, options),\n locale,\n });\n }\n\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(\n _.isFunction(defaultValue) ? defaultValue() : defaultValue || contentType.modelName,\n options\n ),\n locale,\n });\n },\n\n async findUniqueUID({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const foundDocuments = await strapi.documents(contentTypeUID).findMany({\n filters: {\n [field]: { $startsWith: value },\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (!foundDocuments || foundDocuments.length === 0) {\n // If there are no documents found we can return the value as is\n return value;\n }\n\n let possibleCollisions: string[];\n if (!Array.isArray(foundDocuments)) {\n possibleCollisions = [foundDocuments[field]];\n } else {\n possibleCollisions = foundDocuments.map((doc: any) => doc[field]);\n }\n\n // If there are no documents sharing the proposed UID, we can return the value as is\n if (!possibleCollisions.includes(value)) {\n return value;\n }\n\n let i = 1;\n let tmpUId = `${value}-${i}`;\n while (possibleCollisions.includes(tmpUId)) {\n // While there are documents sharing the proposed UID, we need to find a new one\n // by incrementing the suffix until we find a unique one\n i += 1;\n tmpUId = `${value}-${i}`;\n }\n\n return tmpUId;\n },\n\n async checkUIDAvailability({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const documentCount = await strapi.documents(contentTypeUID).count({\n filters: {\n [field]: value,\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (documentCount && documentCount > 0) {\n // If there are documents sharing the proposed UID, we can return false\n return false;\n }\n\n return true;\n },\n});\n"],"names":["strapi","generateUIDField","contentTypeUID","field","data","locale","contentType","contentTypes","attributes","targetField","default","defaultValue","options","targetValue","_","get","isEmpty","findUniqueUID","value","slugify","isFunction","modelName","foundDocuments","documents","findMany","filters","$startsWith","status","length","possibleCollisions","Array","isArray","map","doc","includes","i","tmpUId","checkUIDAvailability","documentCount","count"],"mappings":"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"}
1
+ {"version":3,"file":"uid.js","sources":["../../../server/src/services/uid.ts"],"sourcesContent":["import _ from 'lodash';\nimport slugify from '@sindresorhus/slugify';\n\nimport type { Core, Schema, UID } from '@strapi/types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async generateUIDField({\n contentTypeUID,\n field,\n data,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n data: Record<string, any>;\n locale?: string;\n }) {\n const contentType = strapi.contentTypes[contentTypeUID];\n const { attributes } = contentType;\n\n const {\n targetField,\n default: defaultValue,\n options,\n } = attributes[field] as Schema.Attribute.UID;\n\n // @ts-expect-error targetField can be undefined\n const targetValue = _.get(data, targetField);\n\n if (!_.isEmpty(targetValue)) {\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(targetValue, options),\n locale,\n });\n }\n\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(\n _.isFunction(defaultValue) ? defaultValue() : defaultValue || contentType.modelName,\n options\n ),\n locale,\n });\n },\n\n async findUniqueUID({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const foundDocuments = await strapi.documents(contentTypeUID).findMany({\n filters: {\n [field]: { $startsWith: value },\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (!foundDocuments || foundDocuments.length === 0) {\n // If there are no documents found we can return the value as is\n return value;\n }\n\n let possibleCollisions: string[];\n if (!Array.isArray(foundDocuments)) {\n possibleCollisions = [foundDocuments[field]];\n } else {\n possibleCollisions = foundDocuments.map((doc: any) => doc[field]);\n }\n\n // If there are no documents sharing the proposed UID, we can return the value as is\n if (!possibleCollisions.includes(value)) {\n return value;\n }\n\n let i = 1;\n let tmpUId = `${value}-${i}`;\n while (possibleCollisions.includes(tmpUId)) {\n // While there are documents sharing the proposed UID, we need to find a new one\n // by incrementing the suffix until we find a unique one\n i += 1;\n tmpUId = `${value}-${i}`;\n }\n\n return tmpUId;\n },\n\n async checkUIDAvailability({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const documentCount = await strapi.documents(contentTypeUID).count({\n filters: {\n [field]: value,\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (documentCount && documentCount > 0) {\n // If there are documents sharing the proposed UID, we can return false\n return false;\n }\n\n return true;\n },\n});\n"],"names":["strapi","generateUIDField","contentTypeUID","field","data","locale","contentType","contentTypes","attributes","targetField","default","defaultValue","options","targetValue","_","get","isEmpty","findUniqueUID","value","slugify","isFunction","modelName","foundDocuments","documents","findMany","filters","$startsWith","status","length","possibleCollisions","Array","isArray","map","doc","includes","i","tmpUId","checkUIDAvailability","documentCount","count"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"uid.mjs","sources":["../../../server/src/services/uid.ts"],"sourcesContent":["import _ from 'lodash';\nimport slugify from '@sindresorhus/slugify';\n\nimport type { Core, Schema, UID } from '@strapi/types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async generateUIDField({\n contentTypeUID,\n field,\n data,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n data: Record<string, any>;\n locale?: string;\n }) {\n const contentType = strapi.contentTypes[contentTypeUID];\n const { attributes } = contentType;\n\n const {\n targetField,\n default: defaultValue,\n options,\n } = attributes[field] as Schema.Attribute.UID;\n\n // @ts-expect-error targetField can be undefined\n const targetValue = _.get(data, targetField);\n\n if (!_.isEmpty(targetValue)) {\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(targetValue, options),\n locale,\n });\n }\n\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(\n _.isFunction(defaultValue) ? defaultValue() : defaultValue || contentType.modelName,\n options\n ),\n locale,\n });\n },\n\n async findUniqueUID({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const foundDocuments = await strapi.documents(contentTypeUID).findMany({\n filters: {\n [field]: { $startsWith: value },\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (!foundDocuments || foundDocuments.length === 0) {\n // If there are no documents found we can return the value as is\n return value;\n }\n\n let possibleCollisions: string[];\n if (!Array.isArray(foundDocuments)) {\n possibleCollisions = [foundDocuments[field]];\n } else {\n possibleCollisions = foundDocuments.map((doc: any) => doc[field]);\n }\n\n // If there are no documents sharing the proposed UID, we can return the value as is\n if (!possibleCollisions.includes(value)) {\n return value;\n }\n\n let i = 1;\n let tmpUId = `${value}-${i}`;\n while (possibleCollisions.includes(tmpUId)) {\n // While there are documents sharing the proposed UID, we need to find a new one\n // by incrementing the suffix until we find a unique one\n i += 1;\n tmpUId = `${value}-${i}`;\n }\n\n return tmpUId;\n },\n\n async checkUIDAvailability({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const documentCount = await strapi.documents(contentTypeUID).count({\n filters: {\n [field]: value,\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (documentCount && documentCount > 0) {\n // If there are documents sharing the proposed UID, we can return false\n return false;\n }\n\n return true;\n },\n});\n"],"names":["strapi","generateUIDField","contentTypeUID","field","data","locale","contentType","contentTypes","attributes","targetField","default","defaultValue","options","targetValue","_","get","isEmpty","findUniqueUID","value","slugify","isFunction","modelName","foundDocuments","documents","findMany","filters","$startsWith","status","length","possibleCollisions","Array","isArray","map","doc","includes","i","tmpUId","checkUIDAvailability","documentCount","count"],"mappings":"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"}
1
+ {"version":3,"file":"uid.mjs","sources":["../../../server/src/services/uid.ts"],"sourcesContent":["import _ from 'lodash';\nimport slugify from '@sindresorhus/slugify';\n\nimport type { Core, Schema, UID } from '@strapi/types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async generateUIDField({\n contentTypeUID,\n field,\n data,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n data: Record<string, any>;\n locale?: string;\n }) {\n const contentType = strapi.contentTypes[contentTypeUID];\n const { attributes } = contentType;\n\n const {\n targetField,\n default: defaultValue,\n options,\n } = attributes[field] as Schema.Attribute.UID;\n\n // @ts-expect-error targetField can be undefined\n const targetValue = _.get(data, targetField);\n\n if (!_.isEmpty(targetValue)) {\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(targetValue, options),\n locale,\n });\n }\n\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(\n _.isFunction(defaultValue) ? defaultValue() : defaultValue || contentType.modelName,\n options\n ),\n locale,\n });\n },\n\n async findUniqueUID({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const foundDocuments = await strapi.documents(contentTypeUID).findMany({\n filters: {\n [field]: { $startsWith: value },\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (!foundDocuments || foundDocuments.length === 0) {\n // If there are no documents found we can return the value as is\n return value;\n }\n\n let possibleCollisions: string[];\n if (!Array.isArray(foundDocuments)) {\n possibleCollisions = [foundDocuments[field]];\n } else {\n possibleCollisions = foundDocuments.map((doc: any) => doc[field]);\n }\n\n // If there are no documents sharing the proposed UID, we can return the value as is\n if (!possibleCollisions.includes(value)) {\n return value;\n }\n\n let i = 1;\n let tmpUId = `${value}-${i}`;\n while (possibleCollisions.includes(tmpUId)) {\n // While there are documents sharing the proposed UID, we need to find a new one\n // by incrementing the suffix until we find a unique one\n i += 1;\n tmpUId = `${value}-${i}`;\n }\n\n return tmpUId;\n },\n\n async checkUIDAvailability({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const documentCount = await strapi.documents(contentTypeUID).count({\n filters: {\n [field]: value,\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (documentCount && documentCount > 0) {\n // If there are documents sharing the proposed UID, we can return false\n return false;\n }\n\n return true;\n },\n});\n"],"names":["strapi","generateUIDField","contentTypeUID","field","data","locale","contentType","contentTypes","attributes","targetField","default","defaultValue","options","targetValue","_","get","isEmpty","findUniqueUID","value","slugify","isFunction","modelName","foundDocuments","documents","findMany","filters","$startsWith","status","length","possibleCollisions","Array","isArray","map","doc","includes","i","tmpUId","checkUIDAvailability","documentCount","count"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","sources":["../../../../../server/src/services/utils/configuration/attributes.ts"],"sourcesContent":["import _ from 'lodash';\nimport { intersection } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nconst { getNonVisibleAttributes, getWritableAttributes } = contentTypesUtils;\nconst { PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } =\n contentTypesUtils.constants;\n\nconst NON_SORTABLES = ['component', 'json', 'media', 'richtext', 'dynamiczone', 'blocks'];\nconst SORTABLE_RELATIONS = ['oneToOne', 'manyToOne'];\n\nconst NON_LISTABLES = ['json', 'password', 'richtext', 'dynamiczone', 'blocks'];\nconst LISTABLE_RELATIONS = ['oneToOne', 'oneToMany', 'manyToOne', 'manyToMany'];\n\n// hidden fields are fields that are configured to be hidden from list, and edit views\nconst isHidden = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const isHidden = _.get(schema, ['config', 'attributes', name, 'hidden'], false);\n if (isHidden === true) {\n return true;\n }\n\n return false;\n};\n\nconst isListable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n const attribute = schema.attributes[name];\n if (NON_LISTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !LISTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSortable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (schema.modelType === 'component' && name === 'id') return false;\n\n const attribute = schema.attributes[name];\n if (NON_SORTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !SORTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSearchable = (schema: any, name: any) => {\n return isSortable(schema, name);\n};\n\nconst isVisible = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (isTimestamp(schema, name) || name === 'id' || name === 'documentId') {\n return false;\n }\n\n if (isPublicationField(name)) {\n return false;\n }\n\n if (isCreatorField(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst isPublicationField = (name: any) => PUBLISHED_AT_ATTRIBUTE === name;\n\nconst isTimestamp = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const timestamps = contentTypesUtils.getTimestamps(schema);\n if (!timestamps || !Array.isArray(timestamps)) {\n return false;\n }\n\n if (timestamps.includes(name)) {\n return true;\n }\n};\n\nconst isCreatorField = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const creatorFields = contentTypesUtils.getCreatorFields(schema);\n if (!creatorFields || !Array.isArray(creatorFields)) {\n return false;\n }\n\n if (creatorFields.includes(name)) {\n return true;\n }\n};\n\nconst isRelation = (attribute: any) => attribute.type === 'relation';\n\nconst hasRelationAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return isRelation(schema.attributes[name]);\n};\n\nconst hasEditableAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst findFirstStringAttribute = (schema: any) => {\n return Object.keys(schema.attributes || {}).find((key) => {\n const { type } = schema.attributes[key];\n return type === 'string' && key !== 'id';\n });\n};\n\nconst getDefaultMainField = (schema: any) => findFirstStringAttribute(schema) || 'id';\n\n/**\n * Returns list of all sortable attributes for a given content type schema\n * TODO V5: Refactor non visible fields to be a part of content-manager schema so we can use isSortable instead\n * @param {*} schema\n * @returns\n */\nconst getSortableAttributes = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const model = strapi.getModel(schema.uid);\n const nonVisibleWritableAttributes = intersection(\n getNonVisibleAttributes(model),\n getWritableAttributes(model)\n );\n\n return [\n 'id',\n ...validAttributes,\n ...nonVisibleWritableAttributes,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n ];\n};\n\nexport {\n isSortable,\n isVisible,\n isSearchable,\n isRelation,\n isListable,\n hasEditableAttribute,\n hasRelationAttribute,\n getDefaultMainField,\n getSortableAttributes,\n};\n"],"names":["getNonVisibleAttributes","getWritableAttributes","contentTypesUtils","PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","constants","NON_SORTABLES","SORTABLE_RELATIONS","NON_LISTABLES","LISTABLE_RELATIONS","isHidden","schema","name","_","has","attributes","get","isListable","attribute","includes","type","isRelation","relationType","isSortable","modelType","isSearchable","isVisible","isTimestamp","isPublicationField","isCreatorField","timestamps","getTimestamps","Array","isArray","creatorFields","getCreatorFields","hasRelationAttribute","hasEditableAttribute","findFirstStringAttribute","Object","keys","find","key","getDefaultMainField","getSortableAttributes","validAttributes","filter","model","strapi","getModel","uid","nonVisibleWritableAttributes","intersection"],"mappings":"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"}
1
+ {"version":3,"file":"attributes.js","sources":["../../../../../server/src/services/utils/configuration/attributes.ts"],"sourcesContent":["import _ from 'lodash';\nimport { intersection } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nconst { getNonVisibleAttributes, getWritableAttributes } = contentTypesUtils;\nconst { PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } =\n contentTypesUtils.constants;\n\nconst NON_SORTABLES = ['component', 'json', 'media', 'richtext', 'dynamiczone', 'blocks'];\nconst SORTABLE_RELATIONS = ['oneToOne', 'manyToOne'];\n\nconst NON_LISTABLES = ['json', 'password', 'richtext', 'dynamiczone', 'blocks'];\nconst LISTABLE_RELATIONS = ['oneToOne', 'oneToMany', 'manyToOne', 'manyToMany'];\n\n// hidden fields are fields that are configured to be hidden from list, and edit views\nconst isHidden = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const isHidden = _.get(schema, ['config', 'attributes', name, 'hidden'], false);\n if (isHidden === true) {\n return true;\n }\n\n return false;\n};\n\nconst isListable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n const attribute = schema.attributes[name];\n if (NON_LISTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !LISTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSortable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (schema.modelType === 'component' && name === 'id') return false;\n\n const attribute = schema.attributes[name];\n if (NON_SORTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !SORTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSearchable = (schema: any, name: any) => {\n return isSortable(schema, name);\n};\n\nconst isVisible = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (isTimestamp(schema, name) || name === 'id' || name === 'documentId') {\n return false;\n }\n\n if (isPublicationField(name)) {\n return false;\n }\n\n if (isCreatorField(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst isPublicationField = (name: any) => PUBLISHED_AT_ATTRIBUTE === name;\n\nconst isTimestamp = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const timestamps = contentTypesUtils.getTimestamps(schema);\n if (!timestamps || !Array.isArray(timestamps)) {\n return false;\n }\n\n if (timestamps.includes(name)) {\n return true;\n }\n};\n\nconst isCreatorField = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const creatorFields = contentTypesUtils.getCreatorFields(schema);\n if (!creatorFields || !Array.isArray(creatorFields)) {\n return false;\n }\n\n if (creatorFields.includes(name)) {\n return true;\n }\n};\n\nconst isRelation = (attribute: any) => attribute.type === 'relation';\n\nconst hasRelationAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return isRelation(schema.attributes[name]);\n};\n\nconst hasEditableAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst findFirstStringAttribute = (schema: any) => {\n return Object.keys(schema.attributes || {}).find((key) => {\n const { type } = schema.attributes[key];\n return type === 'string' && key !== 'id';\n });\n};\n\nconst getDefaultMainField = (schema: any) => findFirstStringAttribute(schema) || 'id';\n\n/**\n * Returns list of all sortable attributes for a given content type schema\n * TODO V5: Refactor non visible fields to be a part of content-manager schema so we can use isSortable instead\n * @param {*} schema\n * @returns\n */\nconst getSortableAttributes = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const model = strapi.getModel(schema.uid);\n const nonVisibleWritableAttributes = intersection(\n getNonVisibleAttributes(model),\n getWritableAttributes(model)\n );\n\n return [\n 'id',\n ...validAttributes,\n ...nonVisibleWritableAttributes,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n ];\n};\n\nexport {\n isSortable,\n isVisible,\n isSearchable,\n isRelation,\n isListable,\n hasEditableAttribute,\n hasRelationAttribute,\n getDefaultMainField,\n getSortableAttributes,\n};\n"],"names":["getNonVisibleAttributes","getWritableAttributes","contentTypesUtils","PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","constants","NON_SORTABLES","SORTABLE_RELATIONS","NON_LISTABLES","LISTABLE_RELATIONS","isHidden","schema","name","_","has","attributes","get","isListable","attribute","includes","type","isRelation","relationType","isSortable","modelType","isSearchable","isVisible","isTimestamp","isPublicationField","isCreatorField","timestamps","getTimestamps","Array","isArray","creatorFields","getCreatorFields","hasRelationAttribute","hasEditableAttribute","findFirstStringAttribute","Object","keys","find","key","getDefaultMainField","getSortableAttributes","validAttributes","filter","model","strapi","getModel","uid","nonVisibleWritableAttributes","intersection"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.mjs","sources":["../../../../../server/src/services/utils/configuration/attributes.ts"],"sourcesContent":["import _ from 'lodash';\nimport { intersection } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nconst { getNonVisibleAttributes, getWritableAttributes } = contentTypesUtils;\nconst { PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } =\n contentTypesUtils.constants;\n\nconst NON_SORTABLES = ['component', 'json', 'media', 'richtext', 'dynamiczone', 'blocks'];\nconst SORTABLE_RELATIONS = ['oneToOne', 'manyToOne'];\n\nconst NON_LISTABLES = ['json', 'password', 'richtext', 'dynamiczone', 'blocks'];\nconst LISTABLE_RELATIONS = ['oneToOne', 'oneToMany', 'manyToOne', 'manyToMany'];\n\n// hidden fields are fields that are configured to be hidden from list, and edit views\nconst isHidden = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const isHidden = _.get(schema, ['config', 'attributes', name, 'hidden'], false);\n if (isHidden === true) {\n return true;\n }\n\n return false;\n};\n\nconst isListable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n const attribute = schema.attributes[name];\n if (NON_LISTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !LISTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSortable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (schema.modelType === 'component' && name === 'id') return false;\n\n const attribute = schema.attributes[name];\n if (NON_SORTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !SORTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSearchable = (schema: any, name: any) => {\n return isSortable(schema, name);\n};\n\nconst isVisible = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (isTimestamp(schema, name) || name === 'id' || name === 'documentId') {\n return false;\n }\n\n if (isPublicationField(name)) {\n return false;\n }\n\n if (isCreatorField(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst isPublicationField = (name: any) => PUBLISHED_AT_ATTRIBUTE === name;\n\nconst isTimestamp = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const timestamps = contentTypesUtils.getTimestamps(schema);\n if (!timestamps || !Array.isArray(timestamps)) {\n return false;\n }\n\n if (timestamps.includes(name)) {\n return true;\n }\n};\n\nconst isCreatorField = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const creatorFields = contentTypesUtils.getCreatorFields(schema);\n if (!creatorFields || !Array.isArray(creatorFields)) {\n return false;\n }\n\n if (creatorFields.includes(name)) {\n return true;\n }\n};\n\nconst isRelation = (attribute: any) => attribute.type === 'relation';\n\nconst hasRelationAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return isRelation(schema.attributes[name]);\n};\n\nconst hasEditableAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst findFirstStringAttribute = (schema: any) => {\n return Object.keys(schema.attributes || {}).find((key) => {\n const { type } = schema.attributes[key];\n return type === 'string' && key !== 'id';\n });\n};\n\nconst getDefaultMainField = (schema: any) => findFirstStringAttribute(schema) || 'id';\n\n/**\n * Returns list of all sortable attributes for a given content type schema\n * TODO V5: Refactor non visible fields to be a part of content-manager schema so we can use isSortable instead\n * @param {*} schema\n * @returns\n */\nconst getSortableAttributes = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const model = strapi.getModel(schema.uid);\n const nonVisibleWritableAttributes = intersection(\n getNonVisibleAttributes(model),\n getWritableAttributes(model)\n );\n\n return [\n 'id',\n ...validAttributes,\n ...nonVisibleWritableAttributes,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n ];\n};\n\nexport {\n isSortable,\n isVisible,\n isSearchable,\n isRelation,\n isListable,\n hasEditableAttribute,\n hasRelationAttribute,\n getDefaultMainField,\n getSortableAttributes,\n};\n"],"names":["getNonVisibleAttributes","getWritableAttributes","contentTypesUtils","PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","constants","NON_SORTABLES","SORTABLE_RELATIONS","NON_LISTABLES","LISTABLE_RELATIONS","isHidden","schema","name","_","has","attributes","get","isListable","attribute","includes","type","isRelation","relationType","isSortable","modelType","isSearchable","isVisible","isTimestamp","isPublicationField","isCreatorField","timestamps","getTimestamps","Array","isArray","creatorFields","getCreatorFields","hasRelationAttribute","hasEditableAttribute","findFirstStringAttribute","Object","keys","find","key","getDefaultMainField","getSortableAttributes","validAttributes","filter","model","strapi","getModel","uid","nonVisibleWritableAttributes","intersection"],"mappings":";;;;AAIA,MAAM,EAAEA,uBAAuB,EAAEC,qBAAqB,EAAE,GAAGC,YAAAA;AAC3D,MAAM,EAAEC,sBAAsB,EAAEC,oBAAoB,EAAEC,oBAAoB,EAAE,GAC1EH,YAAAA,CAAkBI,SAAS;AAE7B,MAAMC,aAAgB,GAAA;AAAC,IAAA,WAAA;AAAa,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,UAAA;AAAY,IAAA,aAAA;AAAe,IAAA;AAAS,CAAA;AACzF,MAAMC,kBAAqB,GAAA;AAAC,IAAA,UAAA;AAAY,IAAA;AAAY,CAAA;AAEpD,MAAMC,aAAgB,GAAA;AAAC,IAAA,MAAA;AAAQ,IAAA,UAAA;AAAY,IAAA,UAAA;AAAY,IAAA,aAAA;AAAe,IAAA;AAAS,CAAA;AAC/E,MAAMC,kBAAqB,GAAA;AAAC,IAAA,UAAA;AAAY,IAAA,WAAA;AAAa,IAAA,WAAA;AAAa,IAAA;AAAa,CAAA;AAE/E;AACA,MAAMC,QAAAA,GAAW,CAACC,MAAaC,EAAAA,IAAAA,GAAAA;AAC7B,IAAA,IAAI,CAACC,CAAEC,CAAAA,GAAG,CAACH,MAAOI,CAAAA,UAAU,EAAEH,IAAO,CAAA,EAAA;QACnC,OAAO,KAAA;AACT;AAEA,IAAA,MAAMF,QAAWG,GAAAA,CAAAA,CAAEG,GAAG,CAACL,MAAQ,EAAA;AAAC,QAAA,QAAA;AAAU,QAAA,YAAA;AAAcC,QAAAA,IAAAA;AAAM,QAAA;KAAS,EAAE,KAAA,CAAA;AACzE,IAAA,IAAIF,aAAa,IAAM,EAAA;QACrB,OAAO,IAAA;AACT;IAEA,OAAO,KAAA;AACT,CAAA;AAEMO,MAAAA,UAAAA,GAAa,CAACN,MAAaC,EAAAA,IAAAA,GAAAA;AAC/B,IAAA,IAAI,CAACC,CAAEC,CAAAA,GAAG,CAACH,MAAOI,CAAAA,UAAU,EAAEH,IAAO,CAAA,EAAA;QACnC,OAAO,KAAA;AACT;IAEA,IAAIF,QAAAA,CAASC,QAAQC,IAAO,CAAA,EAAA;QAC1B,OAAO,KAAA;AACT;AAEA,IAAA,MAAMM,SAAYP,GAAAA,MAAAA,CAAOI,UAAU,CAACH,IAAK,CAAA;AACzC,IAAA,IAAIJ,aAAcW,CAAAA,QAAQ,CAACD,SAAAA,CAAUE,IAAI,CAAG,EAAA;QAC1C,OAAO,KAAA;AACT;IAEA,IAAIC,UAAAA,CAAWH,cAAc,CAACT,kBAAAA,CAAmBU,QAAQ,CAACD,SAAAA,CAAUI,YAAY,CAAG,EAAA;QACjF,OAAO,KAAA;AACT;IAEA,OAAO,IAAA;AACT;AAEMC,MAAAA,UAAAA,GAAa,CAACZ,MAAaC,EAAAA,IAAAA,GAAAA;AAC/B,IAAA,IAAI,CAACC,CAAEC,CAAAA,GAAG,CAACH,MAAOI,CAAAA,UAAU,EAAEH,IAAO,CAAA,EAAA;QACnC,OAAO,KAAA;AACT;AAEA,IAAA,IAAID,OAAOa,SAAS,KAAK,WAAeZ,IAAAA,IAAAA,KAAS,MAAM,OAAO,KAAA;AAE9D,IAAA,MAAMM,SAAYP,GAAAA,MAAAA,CAAOI,UAAU,CAACH,IAAK,CAAA;AACzC,IAAA,IAAIN,aAAca,CAAAA,QAAQ,CAACD,SAAAA,CAAUE,IAAI,CAAG,EAAA;QAC1C,OAAO,KAAA;AACT;IAEA,IAAIC,UAAAA,CAAWH,cAAc,CAACX,kBAAAA,CAAmBY,QAAQ,CAACD,SAAAA,CAAUI,YAAY,CAAG,EAAA;QACjF,OAAO,KAAA;AACT;IAEA,OAAO,IAAA;AACT;AAEMG,MAAAA,YAAAA,GAAe,CAACd,MAAaC,EAAAA,IAAAA,GAAAA;AACjC,IAAA,OAAOW,WAAWZ,MAAQC,EAAAA,IAAAA,CAAAA;AAC5B;AAEMc,MAAAA,SAAAA,GAAY,CAACf,MAAaC,EAAAA,IAAAA,GAAAA;AAC9B,IAAA,IAAI,CAACC,CAAEC,CAAAA,GAAG,CAACH,MAAOI,CAAAA,UAAU,EAAEH,IAAO,CAAA,EAAA;QACnC,OAAO,KAAA;AACT;IAEA,IAAIF,QAAAA,CAASC,QAAQC,IAAO,CAAA,EAAA;QAC1B,OAAO,KAAA;AACT;AAEA,IAAA,IAAIe,YAAYhB,MAAQC,EAAAA,IAAAA,CAAAA,IAASA,IAAS,KAAA,IAAA,IAAQA,SAAS,YAAc,EAAA;QACvE,OAAO,KAAA;AACT;AAEA,IAAA,IAAIgB,mBAAmBhB,IAAO,CAAA,EAAA;QAC5B,OAAO,KAAA;AACT;IAEA,IAAIiB,cAAAA,CAAelB,QAAQC,IAAO,CAAA,EAAA;QAChC,OAAO,KAAA;AACT;IAEA,OAAO,IAAA;AACT;AAEA,MAAMgB,kBAAAA,GAAqB,CAAChB,IAAAA,GAAcV,sBAA2BU,KAAAA,IAAAA;AAErE,MAAMe,WAAAA,GAAc,CAAChB,MAAaC,EAAAA,IAAAA,GAAAA;AAChC,IAAA,IAAI,CAACC,CAAEC,CAAAA,GAAG,CAACH,MAAOI,CAAAA,UAAU,EAAEH,IAAO,CAAA,EAAA;QACnC,OAAO,KAAA;AACT;IAEA,MAAMkB,UAAAA,GAAa7B,YAAkB8B,CAAAA,aAAa,CAACpB,MAAAA,CAAAA;AACnD,IAAA,IAAI,CAACmB,UAAc,IAAA,CAACE,KAAMC,CAAAA,OAAO,CAACH,UAAa,CAAA,EAAA;QAC7C,OAAO,KAAA;AACT;IAEA,IAAIA,UAAAA,CAAWX,QAAQ,CAACP,IAAO,CAAA,EAAA;QAC7B,OAAO,IAAA;AACT;AACF,CAAA;AAEA,MAAMiB,cAAAA,GAAiB,CAAClB,MAAaC,EAAAA,IAAAA,GAAAA;AACnC,IAAA,IAAI,CAACC,CAAEC,CAAAA,GAAG,CAACH,MAAOI,CAAAA,UAAU,EAAEH,IAAO,CAAA,EAAA;QACnC,OAAO,KAAA;AACT;IAEA,MAAMsB,aAAAA,GAAgBjC,YAAkBkC,CAAAA,gBAAgB,CAACxB,MAAAA,CAAAA;AACzD,IAAA,IAAI,CAACuB,aAAiB,IAAA,CAACF,KAAMC,CAAAA,OAAO,CAACC,aAAgB,CAAA,EAAA;QACnD,OAAO,KAAA;AACT;IAEA,IAAIA,aAAAA,CAAcf,QAAQ,CAACP,IAAO,CAAA,EAAA;QAChC,OAAO,IAAA;AACT;AACF,CAAA;AAEA,MAAMS,UAAa,GAAA,CAACH,SAAmBA,GAAAA,SAAAA,CAAUE,IAAI,KAAK;AAEpDgB,MAAAA,oBAAAA,GAAuB,CAACzB,MAAaC,EAAAA,IAAAA,GAAAA;AACzC,IAAA,IAAI,CAACC,CAAEC,CAAAA,GAAG,CAACH,MAAOI,CAAAA,UAAU,EAAEH,IAAO,CAAA,EAAA;QACnC,OAAO,KAAA;AACT;IAEA,IAAIF,QAAAA,CAASC,QAAQC,IAAO,CAAA,EAAA;QAC1B,OAAO,KAAA;AACT;IAEA,IAAI,CAACc,SAAUf,CAAAA,MAAAA,EAAQC,IAAO,CAAA,EAAA;QAC5B,OAAO,KAAA;AACT;AAEA,IAAA,OAAOS,UAAWV,CAAAA,MAAAA,CAAOI,UAAU,CAACH,IAAK,CAAA,CAAA;AAC3C;AAEMyB,MAAAA,oBAAAA,GAAuB,CAAC1B,MAAaC,EAAAA,IAAAA,GAAAA;AACzC,IAAA,IAAI,CAACC,CAAEC,CAAAA,GAAG,CAACH,MAAOI,CAAAA,UAAU,EAAEH,IAAO,CAAA,EAAA;QACnC,OAAO,KAAA;AACT;IAEA,IAAIF,QAAAA,CAASC,QAAQC,IAAO,CAAA,EAAA;QAC1B,OAAO,KAAA;AACT;IAEA,IAAI,CAACc,SAAUf,CAAAA,MAAAA,EAAQC,IAAO,CAAA,EAAA;QAC5B,OAAO,KAAA;AACT;IAEA,OAAO,IAAA;AACT;AAEA,MAAM0B,2BAA2B,CAAC3B,MAAAA,GAAAA;IAChC,OAAO4B,MAAAA,CAAOC,IAAI,CAAC7B,MAAOI,CAAAA,UAAU,IAAI,EAAC,CAAA,CAAG0B,IAAI,CAAC,CAACC,GAAAA,GAAAA;AAChD,QAAA,MAAM,EAAEtB,IAAI,EAAE,GAAGT,MAAOI,CAAAA,UAAU,CAAC2B,GAAI,CAAA;QACvC,OAAOtB,IAAAA,KAAS,YAAYsB,GAAQ,KAAA,IAAA;AACtC,KAAA,CAAA;AACF,CAAA;AAEA,MAAMC,mBAAsB,GAAA,CAAChC,MAAgB2B,GAAAA,wBAAAA,CAAyB3B,MAAW,CAAA,IAAA;AAEjF;;;;;IAMA,MAAMiC,wBAAwB,CAACjC,MAAAA,GAAAA;AAC7B,IAAA,MAAMkC,eAAkBN,GAAAA,MAAAA,CAAOC,IAAI,CAAC7B,MAAOI,CAAAA,UAAU,CAAE+B,CAAAA,MAAM,CAAC,CAACJ,GAAQzB,GAAAA,UAAAA,CAAWN,MAAQ+B,EAAAA,GAAAA,CAAAA,CAAAA;AAE1F,IAAA,MAAMK,KAAQC,GAAAA,MAAAA,CAAOC,QAAQ,CAACtC,OAAOuC,GAAG,CAAA;AACxC,IAAA,MAAMC,4BAA+BC,GAAAA,YAAAA,CACnCrD,uBAAwBgD,CAAAA,KAAAA,CAAAA,EACxB/C,qBAAsB+C,CAAAA,KAAAA,CAAAA,CAAAA;IAGxB,OAAO;AACL,QAAA,IAAA;AACGF,QAAAA,GAAAA,eAAAA;AACAM,QAAAA,GAAAA,4BAAAA;AACHhD,QAAAA,oBAAAA;AACAC,QAAAA;AACD,KAAA;AACH;;;;"}
1
+ {"version":3,"file":"attributes.mjs","sources":["../../../../../server/src/services/utils/configuration/attributes.ts"],"sourcesContent":["import _ from 'lodash';\nimport { intersection } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nconst { getNonVisibleAttributes, getWritableAttributes } = contentTypesUtils;\nconst { PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } =\n contentTypesUtils.constants;\n\nconst NON_SORTABLES = ['component', 'json', 'media', 'richtext', 'dynamiczone', 'blocks'];\nconst SORTABLE_RELATIONS = ['oneToOne', 'manyToOne'];\n\nconst NON_LISTABLES = ['json', 'password', 'richtext', 'dynamiczone', 'blocks'];\nconst LISTABLE_RELATIONS = ['oneToOne', 'oneToMany', 'manyToOne', 'manyToMany'];\n\n// hidden fields are fields that are configured to be hidden from list, and edit views\nconst isHidden = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const isHidden = _.get(schema, ['config', 'attributes', name, 'hidden'], false);\n if (isHidden === true) {\n return true;\n }\n\n return false;\n};\n\nconst isListable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n const attribute = schema.attributes[name];\n if (NON_LISTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !LISTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSortable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (schema.modelType === 'component' && name === 'id') return false;\n\n const attribute = schema.attributes[name];\n if (NON_SORTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !SORTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSearchable = (schema: any, name: any) => {\n return isSortable(schema, name);\n};\n\nconst isVisible = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (isTimestamp(schema, name) || name === 'id' || name === 'documentId') {\n return false;\n }\n\n if (isPublicationField(name)) {\n return false;\n }\n\n if (isCreatorField(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst isPublicationField = (name: any) => PUBLISHED_AT_ATTRIBUTE === name;\n\nconst isTimestamp = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const timestamps = contentTypesUtils.getTimestamps(schema);\n if (!timestamps || !Array.isArray(timestamps)) {\n return false;\n }\n\n if (timestamps.includes(name)) {\n return true;\n }\n};\n\nconst isCreatorField = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const creatorFields = contentTypesUtils.getCreatorFields(schema);\n if (!creatorFields || !Array.isArray(creatorFields)) {\n return false;\n }\n\n if (creatorFields.includes(name)) {\n return true;\n }\n};\n\nconst isRelation = (attribute: any) => attribute.type === 'relation';\n\nconst hasRelationAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return isRelation(schema.attributes[name]);\n};\n\nconst hasEditableAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst findFirstStringAttribute = (schema: any) => {\n return Object.keys(schema.attributes || {}).find((key) => {\n const { type } = schema.attributes[key];\n return type === 'string' && key !== 'id';\n });\n};\n\nconst getDefaultMainField = (schema: any) => findFirstStringAttribute(schema) || 'id';\n\n/**\n * Returns list of all sortable attributes for a given content type schema\n * TODO V5: Refactor non visible fields to be a part of content-manager schema so we can use isSortable instead\n * @param {*} schema\n * @returns\n */\nconst getSortableAttributes = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const model = strapi.getModel(schema.uid);\n const nonVisibleWritableAttributes = intersection(\n getNonVisibleAttributes(model),\n getWritableAttributes(model)\n );\n\n return [\n 'id',\n ...validAttributes,\n ...nonVisibleWritableAttributes,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n ];\n};\n\nexport {\n isSortable,\n isVisible,\n isSearchable,\n isRelation,\n isListable,\n hasEditableAttribute,\n hasRelationAttribute,\n getDefaultMainField,\n getSortableAttributes,\n};\n"],"names":["getNonVisibleAttributes","getWritableAttributes","contentTypesUtils","PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","constants","NON_SORTABLES","SORTABLE_RELATIONS","NON_LISTABLES","LISTABLE_RELATIONS","isHidden","schema","name","_","has","attributes","get","isListable","attribute","includes","type","isRelation","relationType","isSortable","modelType","isSearchable","isVisible","isTimestamp","isPublicationField","isCreatorField","timestamps","getTimestamps","Array","isArray","creatorFields","getCreatorFields","hasRelationAttribute","hasEditableAttribute","findFirstStringAttribute","Object","keys","find","key","getDefaultMainField","getSortableAttributes","validAttributes","filter","model","strapi","getModel","uid","nonVisibleWritableAttributes","intersection"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../server/src/services/utils/configuration/index.ts"],"sourcesContent":["import { createModelConfigurationSchema } from '../../../controllers/validation';\nimport { createDefaultSettings, syncSettings } from './settings';\nimport { createDefaultMetadatas, syncMetadatas } from './metadatas';\nimport { createDefaultLayouts, syncLayouts } from './layouts';\n\nasync function validateCustomConfig(schema: any) {\n try {\n await createModelConfigurationSchema(schema, {\n allowUndefined: true,\n }).validate(schema.config);\n } catch (error: any) {\n throw new Error(\n `Invalid Model configuration for model ${schema.uid}. Verify your {{ modelName }}.config.js(on) file:\\n - ${error.message}\\n`\n );\n }\n}\n\nasync function createDefaultConfiguration(schema: any) {\n await validateCustomConfig(schema);\n\n return {\n settings: await createDefaultSettings(schema),\n metadatas: await createDefaultMetadatas(schema),\n layouts: await createDefaultLayouts(schema),\n };\n}\n\nasync function syncConfiguration(conf: any, schema: any) {\n await validateCustomConfig(schema);\n\n return {\n settings: await syncSettings(conf, schema),\n layouts: await syncLayouts(conf, schema),\n metadatas: await syncMetadatas(conf, schema),\n };\n}\n\nexport { createDefaultConfiguration, syncConfiguration };\n"],"names":["validateCustomConfig","schema","createModelConfigurationSchema","allowUndefined","validate","config","error","Error","uid","message","createDefaultConfiguration","settings","createDefaultSettings","metadatas","createDefaultMetadatas","layouts","createDefaultLayouts","syncConfiguration","conf","syncSettings","syncLayouts","syncMetadatas"],"mappings":";;;;;;;;AAKA,eAAeA,qBAAqBC,MAAW,EAAA;IAC7C,IAAI;AACF,QAAA,MAAMC,mBAA+BD,MAAQ,EAAA;YAC3CE,cAAgB,EAAA;SACfC,CAAAA,CAAAA,QAAQ,CAACH,MAAAA,CAAOI,MAAM,CAAA;AAC3B,KAAA,CAAE,OAAOC,KAAY,EAAA;AACnB,QAAA,MAAM,IAAIC,KAAAA,CACR,CAAC,sCAAsC,EAAEN,MAAOO,CAAAA,GAAG,CAAC,uDAAuD,EAAEF,KAAAA,CAAMG,OAAO,CAAC,EAAE,CAAC,CAAA;AAElI;AACF;AAEA,eAAeC,2BAA2BT,MAAW,EAAA;AACnD,IAAA,MAAMD,oBAAqBC,CAAAA,MAAAA,CAAAA;IAE3B,OAAO;AACLU,QAAAA,QAAAA,EAAU,MAAMC,8BAAsBX,CAAAA,MAAAA,CAAAA;AACtCY,QAAAA,SAAAA,EAAW,MAAMC,gCAAuBb,CAAAA,MAAAA,CAAAA;AACxCc,QAAAA,OAAAA,EAAS,MAAMC,4BAAqBf,CAAAA,MAAAA;AACtC,KAAA;AACF;AAEA,eAAegB,iBAAAA,CAAkBC,IAAS,EAAEjB,MAAW,EAAA;AACrD,IAAA,MAAMD,oBAAqBC,CAAAA,MAAAA,CAAAA;IAE3B,OAAO;QACLU,QAAU,EAAA,MAAMQ,sBAAaD,IAAMjB,EAAAA,MAAAA,CAAAA;QACnCc,OAAS,EAAA,MAAMK,oBAAYF,IAAMjB,EAAAA,MAAAA,CAAAA;QACjCY,SAAW,EAAA,MAAMQ,wBAAcH,IAAMjB,EAAAA,MAAAA;AACvC,KAAA;AACF;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../server/src/services/utils/configuration/index.ts"],"sourcesContent":["import { createModelConfigurationSchema } from '../../../controllers/validation';\nimport { createDefaultSettings, syncSettings } from './settings';\nimport { createDefaultMetadatas, syncMetadatas } from './metadatas';\nimport { createDefaultLayouts, syncLayouts } from './layouts';\n\nasync function validateCustomConfig(schema: any) {\n try {\n await createModelConfigurationSchema(schema, {\n allowUndefined: true,\n }).validate(schema.config);\n } catch (error: any) {\n throw new Error(\n `Invalid Model configuration for model ${schema.uid}. Verify your {{ modelName }}.config.js(on) file:\\n - ${error.message}\\n`\n );\n }\n}\n\nasync function createDefaultConfiguration(schema: any) {\n await validateCustomConfig(schema);\n\n return {\n settings: await createDefaultSettings(schema),\n metadatas: await createDefaultMetadatas(schema),\n layouts: await createDefaultLayouts(schema),\n };\n}\n\nasync function syncConfiguration(conf: any, schema: any) {\n await validateCustomConfig(schema);\n\n return {\n settings: await syncSettings(conf, schema),\n layouts: await syncLayouts(conf, schema),\n metadatas: await syncMetadatas(conf, schema),\n };\n}\n\nexport { createDefaultConfiguration, syncConfiguration };\n"],"names":["validateCustomConfig","schema","createModelConfigurationSchema","allowUndefined","validate","config","error","Error","uid","message","createDefaultConfiguration","settings","createDefaultSettings","metadatas","createDefaultMetadatas","layouts","createDefaultLayouts","syncConfiguration","conf","syncSettings","syncLayouts","syncMetadatas"],"mappings":";;;;;;;;AAKA,eAAeA,qBAAqBC,MAAW,EAAA;IAC7C,IAAI;AACF,QAAA,MAAMC,mBAA+BD,MAAAA,EAAQ;YAC3CE,cAAAA,EAAgB;SAClB,CAAA,CAAGC,QAAQ,CAACH,MAAAA,CAAOI,MAAM,CAAA;AAC3B,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAY;AACnB,QAAA,MAAM,IAAIC,KAAAA,CACR,CAAC,sCAAsC,EAAEN,MAAAA,CAAOO,GAAG,CAAC,uDAAuD,EAAEF,KAAAA,CAAMG,OAAO,CAAC,EAAE,CAAC,CAAA;AAElI,IAAA;AACF;AAEA,eAAeC,2BAA2BT,MAAW,EAAA;AACnD,IAAA,MAAMD,oBAAAA,CAAqBC,MAAAA,CAAAA;IAE3B,OAAO;AACLU,QAAAA,QAAAA,EAAU,MAAMC,8BAAAA,CAAsBX,MAAAA,CAAAA;AACtCY,QAAAA,SAAAA,EAAW,MAAMC,gCAAAA,CAAuBb,MAAAA,CAAAA;AACxCc,QAAAA,OAAAA,EAAS,MAAMC,4BAAAA,CAAqBf,MAAAA;AACtC,KAAA;AACF;AAEA,eAAegB,iBAAAA,CAAkBC,IAAS,EAAEjB,MAAW,EAAA;AACrD,IAAA,MAAMD,oBAAAA,CAAqBC,MAAAA,CAAAA;IAE3B,OAAO;QACLU,QAAAA,EAAU,MAAMQ,sBAAaD,IAAAA,EAAMjB,MAAAA,CAAAA;QACnCc,OAAAA,EAAS,MAAMK,oBAAYF,IAAAA,EAAMjB,MAAAA,CAAAA;QACjCY,SAAAA,EAAW,MAAMQ,wBAAcH,IAAAA,EAAMjB,MAAAA;AACvC,KAAA;AACF;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import '../../../controllers/validation/index.mjs';
2
- import { createDefaultSettings, syncSettings } from './settings.mjs';
3
- import { createDefaultMetadatas, syncMetadatas } from './metadatas.mjs';
4
- import { createDefaultLayouts, syncLayouts } from './layouts.mjs';
2
+ import { syncSettings, createDefaultSettings } from './settings.mjs';
3
+ import { syncMetadatas, createDefaultMetadatas } from './metadatas.mjs';
4
+ import { syncLayouts, createDefaultLayouts } from './layouts.mjs';
5
5
  import createModelConfigurationSchema from '../../../controllers/validation/model-configuration.mjs';
6
6
 
7
7
  async function validateCustomConfig(schema) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../server/src/services/utils/configuration/index.ts"],"sourcesContent":["import { createModelConfigurationSchema } from '../../../controllers/validation';\nimport { createDefaultSettings, syncSettings } from './settings';\nimport { createDefaultMetadatas, syncMetadatas } from './metadatas';\nimport { createDefaultLayouts, syncLayouts } from './layouts';\n\nasync function validateCustomConfig(schema: any) {\n try {\n await createModelConfigurationSchema(schema, {\n allowUndefined: true,\n }).validate(schema.config);\n } catch (error: any) {\n throw new Error(\n `Invalid Model configuration for model ${schema.uid}. Verify your {{ modelName }}.config.js(on) file:\\n - ${error.message}\\n`\n );\n }\n}\n\nasync function createDefaultConfiguration(schema: any) {\n await validateCustomConfig(schema);\n\n return {\n settings: await createDefaultSettings(schema),\n metadatas: await createDefaultMetadatas(schema),\n layouts: await createDefaultLayouts(schema),\n };\n}\n\nasync function syncConfiguration(conf: any, schema: any) {\n await validateCustomConfig(schema);\n\n return {\n settings: await syncSettings(conf, schema),\n layouts: await syncLayouts(conf, schema),\n metadatas: await syncMetadatas(conf, schema),\n };\n}\n\nexport { createDefaultConfiguration, syncConfiguration };\n"],"names":["validateCustomConfig","schema","createModelConfigurationSchema","allowUndefined","validate","config","error","Error","uid","message","createDefaultConfiguration","settings","createDefaultSettings","metadatas","createDefaultMetadatas","layouts","createDefaultLayouts","syncConfiguration","conf","syncSettings","syncLayouts","syncMetadatas"],"mappings":";;;;;;AAKA,eAAeA,qBAAqBC,MAAW,EAAA;IAC7C,IAAI;AACF,QAAA,MAAMC,+BAA+BD,MAAQ,EAAA;YAC3CE,cAAgB,EAAA;SACfC,CAAAA,CAAAA,QAAQ,CAACH,MAAAA,CAAOI,MAAM,CAAA;AAC3B,KAAA,CAAE,OAAOC,KAAY,EAAA;AACnB,QAAA,MAAM,IAAIC,KAAAA,CACR,CAAC,sCAAsC,EAAEN,MAAOO,CAAAA,GAAG,CAAC,uDAAuD,EAAEF,KAAAA,CAAMG,OAAO,CAAC,EAAE,CAAC,CAAA;AAElI;AACF;AAEA,eAAeC,2BAA2BT,MAAW,EAAA;AACnD,IAAA,MAAMD,oBAAqBC,CAAAA,MAAAA,CAAAA;IAE3B,OAAO;AACLU,QAAAA,QAAAA,EAAU,MAAMC,qBAAsBX,CAAAA,MAAAA,CAAAA;AACtCY,QAAAA,SAAAA,EAAW,MAAMC,sBAAuBb,CAAAA,MAAAA,CAAAA;AACxCc,QAAAA,OAAAA,EAAS,MAAMC,oBAAqBf,CAAAA,MAAAA;AACtC,KAAA;AACF;AAEA,eAAegB,iBAAAA,CAAkBC,IAAS,EAAEjB,MAAW,EAAA;AACrD,IAAA,MAAMD,oBAAqBC,CAAAA,MAAAA,CAAAA;IAE3B,OAAO;QACLU,QAAU,EAAA,MAAMQ,aAAaD,IAAMjB,EAAAA,MAAAA,CAAAA;QACnCc,OAAS,EAAA,MAAMK,YAAYF,IAAMjB,EAAAA,MAAAA,CAAAA;QACjCY,SAAW,EAAA,MAAMQ,cAAcH,IAAMjB,EAAAA,MAAAA;AACvC,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../server/src/services/utils/configuration/index.ts"],"sourcesContent":["import { createModelConfigurationSchema } from '../../../controllers/validation';\nimport { createDefaultSettings, syncSettings } from './settings';\nimport { createDefaultMetadatas, syncMetadatas } from './metadatas';\nimport { createDefaultLayouts, syncLayouts } from './layouts';\n\nasync function validateCustomConfig(schema: any) {\n try {\n await createModelConfigurationSchema(schema, {\n allowUndefined: true,\n }).validate(schema.config);\n } catch (error: any) {\n throw new Error(\n `Invalid Model configuration for model ${schema.uid}. Verify your {{ modelName }}.config.js(on) file:\\n - ${error.message}\\n`\n );\n }\n}\n\nasync function createDefaultConfiguration(schema: any) {\n await validateCustomConfig(schema);\n\n return {\n settings: await createDefaultSettings(schema),\n metadatas: await createDefaultMetadatas(schema),\n layouts: await createDefaultLayouts(schema),\n };\n}\n\nasync function syncConfiguration(conf: any, schema: any) {\n await validateCustomConfig(schema);\n\n return {\n settings: await syncSettings(conf, schema),\n layouts: await syncLayouts(conf, schema),\n metadatas: await syncMetadatas(conf, schema),\n };\n}\n\nexport { createDefaultConfiguration, syncConfiguration };\n"],"names":["validateCustomConfig","schema","createModelConfigurationSchema","allowUndefined","validate","config","error","Error","uid","message","createDefaultConfiguration","settings","createDefaultSettings","metadatas","createDefaultMetadatas","layouts","createDefaultLayouts","syncConfiguration","conf","syncSettings","syncLayouts","syncMetadatas"],"mappings":";;;;;;AAKA,eAAeA,qBAAqBC,MAAW,EAAA;IAC7C,IAAI;AACF,QAAA,MAAMC,+BAA+BD,MAAAA,EAAQ;YAC3CE,cAAAA,EAAgB;SAClB,CAAA,CAAGC,QAAQ,CAACH,MAAAA,CAAOI,MAAM,CAAA;AAC3B,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAY;AACnB,QAAA,MAAM,IAAIC,KAAAA,CACR,CAAC,sCAAsC,EAAEN,MAAAA,CAAOO,GAAG,CAAC,uDAAuD,EAAEF,KAAAA,CAAMG,OAAO,CAAC,EAAE,CAAC,CAAA;AAElI,IAAA;AACF;AAEA,eAAeC,2BAA2BT,MAAW,EAAA;AACnD,IAAA,MAAMD,oBAAAA,CAAqBC,MAAAA,CAAAA;IAE3B,OAAO;AACLU,QAAAA,QAAAA,EAAU,MAAMC,qBAAAA,CAAsBX,MAAAA,CAAAA;AACtCY,QAAAA,SAAAA,EAAW,MAAMC,sBAAAA,CAAuBb,MAAAA,CAAAA;AACxCc,QAAAA,OAAAA,EAAS,MAAMC,oBAAAA,CAAqBf,MAAAA;AACtC,KAAA;AACF;AAEA,eAAegB,iBAAAA,CAAkBC,IAAS,EAAEjB,MAAW,EAAA;AACrD,IAAA,MAAMD,oBAAAA,CAAqBC,MAAAA,CAAAA;IAE3B,OAAO;QACLU,QAAAA,EAAU,MAAMQ,aAAaD,IAAAA,EAAMjB,MAAAA,CAAAA;QACnCc,OAAAA,EAAS,MAAMK,YAAYF,IAAAA,EAAMjB,MAAAA,CAAAA;QACjCY,SAAAA,EAAW,MAAMQ,cAAcH,IAAAA,EAAMjB,MAAAA;AACvC,KAAA;AACF;;;;"}