@strapi/admin 5.37.1 → 5.38.1

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 (992) hide show
  1. package/dist/admin/admin/src/App.js +1 -1
  2. package/dist/admin/admin/src/App.js.map +1 -1
  3. package/dist/admin/admin/src/App.mjs +1 -1
  4. package/dist/admin/admin/src/App.mjs.map +1 -1
  5. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  6. package/dist/admin/admin/src/StrapiApp.mjs +2 -2
  7. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  8. package/dist/admin/admin/src/assets/images/free-trial.png.js.map +1 -1
  9. package/dist/admin/admin/src/assets/images/free-trial.png.mjs.map +1 -1
  10. package/dist/admin/admin/src/assets/images/logo-strapi-2022.svg.js.map +1 -1
  11. package/dist/admin/admin/src/assets/images/logo-strapi-2022.svg.mjs.map +1 -1
  12. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  13. package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
  14. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  15. package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
  16. package/dist/admin/admin/src/components/Context.js.map +1 -1
  17. package/dist/admin/admin/src/components/Context.mjs.map +1 -1
  18. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  19. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
  20. package/dist/admin/admin/src/components/DragLayer.js.map +1 -1
  21. package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -1
  22. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  23. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  24. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  25. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  26. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/Form.js +14 -0
  28. package/dist/admin/admin/src/components/Form.js.map +1 -1
  29. package/dist/admin/admin/src/components/Form.mjs +15 -1
  30. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  32. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/FormInputs/Checkbox.js.map +1 -1
  34. package/dist/admin/admin/src/components/FormInputs/Checkbox.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  36. package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/FormInputs/DateTime.js.map +1 -1
  38. package/dist/admin/admin/src/components/FormInputs/DateTime.mjs.map +1 -1
  39. package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
  40. package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  42. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  43. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  44. package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
  46. package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
  47. package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
  48. package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  50. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
  52. package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
  53. package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
  54. package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
  55. package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
  56. package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
  57. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  58. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
  59. package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
  60. package/dist/admin/admin/src/components/GradientBadge.mjs.map +1 -1
  61. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  62. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
  63. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -1
  64. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -1
  65. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  66. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +1 -1
  67. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  68. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.js.map +1 -1
  69. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs +1 -1
  70. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs.map +1 -1
  71. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.js.map +1 -1
  72. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.mjs.map +1 -1
  73. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  74. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  75. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  76. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs +2 -2
  77. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  78. package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
  79. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  80. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +2 -2
  81. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  82. package/dist/admin/admin/src/components/GuidedTour/utils/constants.js.map +1 -1
  83. package/dist/admin/admin/src/components/GuidedTour/utils/constants.mjs.map +1 -1
  84. package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js.map +1 -1
  85. package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs.map +1 -1
  86. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  87. package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
  88. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  89. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
  90. package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
  91. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
  92. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  93. package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
  94. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  95. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +1 -1
  96. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  97. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  98. package/dist/admin/admin/src/components/Layouts/Layout.mjs +1 -1
  99. package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
  100. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  101. package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
  102. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  103. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  104. package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
  105. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
  106. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +1 -1
  107. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -1
  108. package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
  109. package/dist/admin/admin/src/components/MainNav/NavBrand.mjs.map +1 -1
  110. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
  111. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +2 -2
  112. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -1
  113. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  114. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -2
  115. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  116. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  117. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +2 -2
  118. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  119. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  120. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +1 -1
  121. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
  122. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  123. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  124. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  125. package/dist/admin/admin/src/components/PageHelpers.mjs +2 -2
  126. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  127. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  128. package/dist/admin/admin/src/components/Pagination.mjs +1 -1
  129. package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
  130. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  131. package/dist/admin/admin/src/components/PluginsInitializer.mjs.map +1 -1
  132. package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
  133. package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
  134. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  135. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  136. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  137. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  138. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  139. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
  140. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  141. package/dist/admin/admin/src/components/SearchInput.mjs.map +1 -1
  142. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  143. package/dist/admin/admin/src/components/SubNav.mjs +3 -3
  144. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  145. package/dist/admin/admin/src/components/Table.js.map +1 -1
  146. package/dist/admin/admin/src/components/Table.mjs +1 -1
  147. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  148. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  149. package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
  150. package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
  151. package/dist/admin/admin/src/components/UnauthenticatedLogo.mjs.map +1 -1
  152. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  153. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  154. package/dist/admin/admin/src/components/WidgetHelpers.js.map +1 -1
  155. package/dist/admin/admin/src/components/WidgetHelpers.mjs +3 -3
  156. package/dist/admin/admin/src/components/WidgetHelpers.mjs.map +1 -1
  157. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  158. package/dist/admin/admin/src/components/WidgetRoot.mjs +2 -2
  159. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  160. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  161. package/dist/admin/admin/src/components/Widgets.mjs +3 -3
  162. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  163. package/dist/admin/admin/src/constants/filters.js.map +1 -1
  164. package/dist/admin/admin/src/constants/filters.mjs.map +1 -1
  165. package/dist/admin/admin/src/constants/theme.js.map +1 -1
  166. package/dist/admin/admin/src/constants/theme.mjs.map +1 -1
  167. package/dist/admin/admin/src/constants.js.map +1 -1
  168. package/dist/admin/admin/src/constants.mjs.map +1 -1
  169. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  170. package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
  171. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  172. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  173. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  174. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  175. package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
  176. package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
  177. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  178. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  179. package/dist/admin/admin/src/core/store/configure.js.map +1 -1
  180. package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
  181. package/dist/admin/admin/src/core/store/hooks.js.map +1 -1
  182. package/dist/admin/admin/src/core/store/hooks.mjs.map +1 -1
  183. package/dist/admin/admin/src/core/utils/basename.js.map +1 -1
  184. package/dist/admin/admin/src/core/utils/basename.mjs.map +1 -1
  185. package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
  186. package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
  187. package/dist/admin/admin/src/features/AppInfo.js.map +1 -1
  188. package/dist/admin/admin/src/features/AppInfo.mjs.map +1 -1
  189. package/dist/admin/admin/src/features/Auth.js +0 -1
  190. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  191. package/dist/admin/admin/src/features/Auth.mjs +1 -2
  192. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  193. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  194. package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
  195. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  196. package/dist/admin/admin/src/features/Configuration.mjs.map +1 -1
  197. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  198. package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
  199. package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
  200. package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
  201. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  202. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  203. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  204. package/dist/admin/admin/src/features/Widgets.mjs +1 -1
  205. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  206. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  207. package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
  208. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  209. package/dist/admin/admin/src/hooks/useAdminRoles.mjs.map +1 -1
  210. package/dist/admin/admin/src/hooks/useClipboard.js.map +1 -1
  211. package/dist/admin/admin/src/hooks/useClipboard.mjs.map +1 -1
  212. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  213. package/dist/admin/admin/src/hooks/useControllableState.mjs.map +1 -1
  214. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  215. package/dist/admin/admin/src/hooks/useDebounce.mjs.map +1 -1
  216. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  217. package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -1
  218. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  219. package/dist/admin/admin/src/hooks/useElementOnScreen.mjs.map +1 -1
  220. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  221. package/dist/admin/admin/src/hooks/useEnterprise.mjs.map +1 -1
  222. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  223. package/dist/admin/admin/src/hooks/useFetchClient.mjs.map +1 -1
  224. package/dist/admin/admin/src/hooks/useFocusInputField.js.map +1 -1
  225. package/dist/admin/admin/src/hooks/useFocusInputField.mjs.map +1 -1
  226. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  227. package/dist/admin/admin/src/hooks/useForceUpdate.mjs.map +1 -1
  228. package/dist/admin/admin/src/hooks/useInjectReducer.js.map +1 -1
  229. package/dist/admin/admin/src/hooks/useInjectReducer.mjs.map +1 -1
  230. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  231. package/dist/admin/admin/src/hooks/useIsMounted.mjs.map +1 -1
  232. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  233. package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -1
  234. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  235. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  236. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  237. package/dist/admin/admin/src/hooks/useOnce.mjs.map +1 -1
  238. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  239. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  240. package/dist/admin/admin/src/hooks/usePrev.js.map +1 -1
  241. package/dist/admin/admin/src/hooks/usePrev.mjs.map +1 -1
  242. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  243. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  244. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  245. package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
  246. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  247. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs.map +1 -1
  248. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  249. package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
  250. package/dist/admin/admin/src/hooks/useWarnIfUnsavedChanges.js.map +1 -1
  251. package/dist/admin/admin/src/hooks/useWarnIfUnsavedChanges.mjs.map +1 -1
  252. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  253. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  254. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  255. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +1 -1
  256. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
  257. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  258. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  259. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  260. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.mjs.map +1 -1
  261. package/dist/admin/admin/src/pages/Auth/components/ForgotPasswordSuccess.js.map +1 -1
  262. package/dist/admin/admin/src/pages/Auth/components/ForgotPasswordSuccess.mjs.map +1 -1
  263. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  264. package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
  265. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  266. package/dist/admin/admin/src/pages/Auth/components/Oops.mjs.map +1 -1
  267. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  268. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  269. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  270. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  271. package/dist/admin/admin/src/pages/Auth/constants.js.map +1 -1
  272. package/dist/admin/admin/src/pages/Auth/constants.mjs.map +1 -1
  273. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  274. package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -1
  275. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  276. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  277. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
  278. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
  279. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  280. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  281. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  282. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  283. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
  284. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
  285. package/dist/admin/admin/src/pages/NotFoundPage.js.map +1 -1
  286. package/dist/admin/admin/src/pages/NotFoundPage.mjs.map +1 -1
  287. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  288. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  289. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  290. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  291. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-dark.jpg.js.map +1 -1
  292. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-dark.jpg.mjs.map +1 -1
  293. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-light.jpg.js.map +1 -1
  294. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-light.jpg.mjs.map +1 -1
  295. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-dark.jpg.js.map +1 -1
  296. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-dark.jpg.mjs.map +1 -1
  297. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-light.jpg.js.map +1 -1
  298. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-light.jpg.mjs.map +1 -1
  299. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-dark.jpg.js.map +1 -1
  300. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-dark.jpg.mjs.map +1 -1
  301. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-light.jpg.js.map +1 -1
  302. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-light.jpg.mjs.map +1 -1
  303. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  304. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +1 -1
  305. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  306. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  307. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
  308. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  309. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  310. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  311. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  312. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +2 -2
  313. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  314. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  315. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
  316. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  317. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenDescription.js.map +1 -1
  318. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenDescription.mjs.map +1 -1
  319. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js.map +1 -1
  320. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs.map +1 -1
  321. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
  322. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
  323. package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
  324. package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
  325. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/CreateView.js.map +1 -1
  326. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/CreateView.mjs.map +1 -1
  327. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  328. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  329. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.js.map +1 -1
  330. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.mjs.map +1 -1
  331. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.js.map +1 -1
  332. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.mjs.map +1 -1
  333. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  334. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs +1 -1
  335. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
  336. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  337. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -2
  338. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  339. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.js.map +1 -1
  340. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.mjs.map +1 -1
  341. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +1 -1
  342. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +1 -1
  343. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.js.map +1 -1
  344. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.mjs.map +1 -1
  345. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +1 -1
  346. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +1 -1
  347. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  348. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
  349. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +1 -1
  350. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +1 -1
  351. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  352. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  353. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  354. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  355. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -1
  356. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  357. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -2
  358. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  359. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  360. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +2 -2
  361. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  362. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.js.map +1 -1
  363. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.mjs.map +1 -1
  364. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
  365. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
  366. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  367. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  368. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
  369. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
  370. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
  371. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
  372. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
  373. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
  374. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  375. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +1 -1
  376. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  377. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  378. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +1 -1
  379. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  380. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  381. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs +1 -1
  382. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
  383. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
  384. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.mjs.map +1 -1
  385. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  386. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +1 -1
  387. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  388. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  389. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.mjs +1 -1
  390. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.mjs.map +1 -1
  391. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  392. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  393. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  394. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +1 -1
  395. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  396. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypes.js.map +1 -1
  397. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypes.mjs.map +1 -1
  398. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  399. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  400. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
  401. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.mjs.map +1 -1
  402. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  403. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +1 -1
  404. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  405. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  406. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  407. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RequiredSign.js.map +1 -1
  408. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RequiredSign.mjs.map +1 -1
  409. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
  410. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
  411. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleRow.js.map +1 -1
  412. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleRow.mjs.map +1 -1
  413. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.js.map +1 -1
  414. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.mjs.map +1 -1
  415. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  416. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
  417. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/constants.js.map +1 -1
  418. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/constants.mjs.map +1 -1
  419. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
  420. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
  421. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  422. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.mjs.map +1 -1
  423. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  424. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  425. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.js.map +1 -1
  426. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.mjs.map +1 -1
  427. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  428. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.mjs.map +1 -1
  429. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
  430. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
  431. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.js.map +1 -1
  432. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.mjs.map +1 -1
  433. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  434. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.mjs.map +1 -1
  435. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
  436. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
  437. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/CreateView.js.map +1 -1
  438. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/CreateView.mjs.map +1 -1
  439. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  440. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  441. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  442. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
  443. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  444. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +1 -1
  445. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  446. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  447. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  448. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  449. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.mjs.map +1 -1
  450. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.js.map +1 -1
  451. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
  452. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.js.map +1 -1
  453. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.mjs.map +1 -1
  454. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  455. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
  456. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  457. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs +1 -1
  458. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
  459. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  460. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.mjs.map +1 -1
  461. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/CreatePage.js.map +1 -1
  462. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/CreatePage.mjs.map +1 -1
  463. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  464. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
  465. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  466. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -1
  467. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  468. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +1 -3
  469. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  470. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +2 -4
  471. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
  472. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.js.map +1 -1
  473. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.mjs.map +1 -1
  474. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  475. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +1 -1
  476. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  477. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.js.map +1 -1
  478. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.mjs.map +1 -1
  479. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  480. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +1 -1
  481. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  482. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.js.map +1 -1
  483. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.mjs.map +1 -1
  484. package/dist/admin/admin/src/pages/Settings/utils/forms.js.map +1 -1
  485. package/dist/admin/admin/src/pages/Settings/utils/forms.mjs.map +1 -1
  486. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  487. package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
  488. package/dist/admin/admin/src/reducer.js.map +1 -1
  489. package/dist/admin/admin/src/reducer.mjs +1 -1
  490. package/dist/admin/admin/src/reducer.mjs.map +1 -1
  491. package/dist/admin/admin/src/render.js.map +1 -1
  492. package/dist/admin/admin/src/render.mjs.map +1 -1
  493. package/dist/admin/admin/src/router.js +4 -4
  494. package/dist/admin/admin/src/router.js.map +1 -1
  495. package/dist/admin/admin/src/router.mjs.map +1 -1
  496. package/dist/admin/admin/src/selectors.js.map +1 -1
  497. package/dist/admin/admin/src/selectors.mjs.map +1 -1
  498. package/dist/admin/admin/src/services/admin.js.map +1 -1
  499. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  500. package/dist/admin/admin/src/services/api.js.map +1 -1
  501. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  502. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  503. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  504. package/dist/admin/admin/src/services/auth.js.map +1 -1
  505. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  506. package/dist/admin/admin/src/services/contentApi.js.map +1 -1
  507. package/dist/admin/admin/src/services/contentApi.mjs.map +1 -1
  508. package/dist/admin/admin/src/services/homepage.js.map +1 -1
  509. package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
  510. package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
  511. package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
  512. package/dist/admin/admin/src/services/users.js.map +1 -1
  513. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  514. package/dist/admin/admin/src/services/webhooks.js.map +1 -1
  515. package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
  516. package/dist/admin/admin/src/translations/es.json.js +356 -120
  517. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  518. package/dist/admin/admin/src/translations/es.json.mjs +355 -121
  519. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  520. package/dist/admin/admin/src/translations/fr.json.js +126 -1
  521. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  522. package/dist/admin/admin/src/translations/fr.json.mjs +126 -1
  523. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  524. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  525. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  526. package/dist/admin/admin/src/utils/arrays.js.map +1 -1
  527. package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
  528. package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
  529. package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
  530. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  531. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  532. package/dist/admin/admin/src/utils/deviceId.js.map +1 -1
  533. package/dist/admin/admin/src/utils/deviceId.mjs.map +1 -1
  534. package/dist/admin/admin/src/utils/getFetchClient.js +1 -3
  535. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  536. package/dist/admin/admin/src/utils/getFetchClient.mjs +1 -3
  537. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  538. package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
  539. package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
  540. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  541. package/dist/admin/admin/src/utils/locales.mjs.map +1 -1
  542. package/dist/admin/admin/src/utils/normalizeAPIError.js.map +1 -1
  543. package/dist/admin/admin/src/utils/normalizeAPIError.mjs.map +1 -1
  544. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  545. package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
  546. package/dist/admin/admin/src/utils/once.js.map +1 -1
  547. package/dist/admin/admin/src/utils/once.mjs.map +1 -1
  548. package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -1
  549. package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -1
  550. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  551. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  552. package/dist/admin/admin/src/utils/shims.js.map +1 -1
  553. package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
  554. package/dist/admin/admin/src/utils/strings.js.map +1 -1
  555. package/dist/admin/admin/src/utils/strings.mjs.map +1 -1
  556. package/dist/admin/admin/src/utils/translatedErrors.js.map +1 -1
  557. package/dist/admin/admin/src/utils/translatedErrors.mjs.map +1 -1
  558. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  559. package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
  560. package/dist/admin/admin/src/utils/users.js.map +1 -1
  561. package/dist/admin/admin/src/utils/users.mjs.map +1 -1
  562. package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -1
  563. package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -1
  564. package/dist/admin/admin/tests/mockData.js.map +1 -1
  565. package/dist/admin/admin/tests/mockData.mjs.map +1 -1
  566. package/dist/admin/admin/tests/server.js.map +1 -1
  567. package/dist/admin/admin/tests/server.mjs.map +1 -1
  568. package/dist/admin/admin/tests/store.js.map +1 -1
  569. package/dist/admin/admin/tests/store.mjs.map +1 -1
  570. package/dist/admin/admin/tests/utils.js.map +1 -1
  571. package/dist/admin/admin/tests/utils.mjs +1 -1
  572. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  573. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  574. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
  575. package/dist/admin/ee/admin/src/components/GlobalNotifications.js.map +1 -1
  576. package/dist/admin/ee/admin/src/components/GlobalNotifications.mjs.map +1 -1
  577. package/dist/admin/ee/admin/src/constants.js.map +1 -1
  578. package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
  579. package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
  580. package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
  581. package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js.map +1 -1
  582. package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs.map +1 -1
  583. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  584. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  585. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  586. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs.map +1 -1
  587. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
  588. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.mjs +1 -1
  589. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.mjs.map +1 -1
  590. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
  591. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.mjs +1 -1
  592. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.mjs.map +1 -1
  593. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  594. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs +1 -1
  595. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
  596. package/dist/admin/ee/admin/src/pages/AuthPage/constants.js.map +1 -1
  597. package/dist/admin/ee/admin/src/pages/AuthPage/constants.mjs.map +1 -1
  598. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  599. package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
  600. package/dist/admin/ee/admin/src/pages/HomePage.js.map +1 -1
  601. package/dist/admin/ee/admin/src/pages/HomePage.mjs.map +1 -1
  602. package/dist/admin/ee/admin/src/pages/SettingsPage/constants.js.map +1 -1
  603. package/dist/admin/ee/admin/src/pages/SettingsPage/constants.mjs.map +1 -1
  604. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  605. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +1 -1
  606. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  607. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  608. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  609. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
  610. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
  611. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
  612. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
  613. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  614. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs +1 -1
  615. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
  616. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  617. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.mjs.map +1 -1
  618. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  619. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
  620. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  621. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  622. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
  623. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
  624. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  625. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  626. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.js.map +1 -1
  627. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.mjs.map +1 -1
  628. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  629. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.mjs.map +1 -1
  630. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
  631. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
  632. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.js.map +1 -1
  633. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.mjs.map +1 -1
  634. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.js.map +1 -1
  635. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.mjs.map +1 -1
  636. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  637. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  638. package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
  639. package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
  640. package/dist/admin/index.js +10 -6
  641. package/dist/admin/index.js.map +1 -1
  642. package/dist/admin/index.mjs +1 -0
  643. package/dist/admin/index.mjs.map +1 -1
  644. package/dist/admin/src/components/DefaultDocument.js.map +1 -1
  645. package/dist/admin/src/components/DefaultDocument.mjs.map +1 -1
  646. package/dist/admin/src/components/Form.d.ts +1 -0
  647. package/dist/admin/src/components/NoJavascript.js.map +1 -1
  648. package/dist/admin/src/components/NoJavascript.mjs.map +1 -1
  649. package/dist/admin/src/index.d.ts +1 -0
  650. package/dist/server/ee/server/src/ai/containers/ai.js +0 -4
  651. package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -1
  652. package/dist/server/ee/server/src/ai/containers/ai.mjs +0 -4
  653. package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -1
  654. package/dist/server/ee/server/src/ai/controllers/ai.js +0 -4
  655. package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
  656. package/dist/server/ee/server/src/ai/controllers/ai.mjs +0 -4
  657. package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
  658. package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
  659. package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
  660. package/dist/server/ee/server/src/audit-logs/content-types/audit-log.js.map +1 -1
  661. package/dist/server/ee/server/src/audit-logs/content-types/audit-log.mjs.map +1 -1
  662. package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js.map +1 -1
  663. package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs.map +1 -1
  664. package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js.map +1 -1
  665. package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs.map +1 -1
  666. package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
  667. package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
  668. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  669. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  670. package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js.map +1 -1
  671. package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs.map +1 -1
  672. package/dist/server/ee/server/src/bootstrap.js.map +1 -1
  673. package/dist/server/ee/server/src/bootstrap.mjs.map +1 -1
  674. package/dist/server/ee/server/src/config/admin-actions.js.map +1 -1
  675. package/dist/server/ee/server/src/config/admin-actions.mjs.map +1 -1
  676. package/dist/server/ee/server/src/content-types/index.js.map +1 -1
  677. package/dist/server/ee/server/src/content-types/index.mjs.map +1 -1
  678. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  679. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  680. package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
  681. package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
  682. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  683. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  684. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  685. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +1 -1
  686. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  687. package/dist/server/ee/server/src/controllers/authentication.js +5 -5
  688. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  689. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  690. package/dist/server/ee/server/src/controllers/index.js.map +1 -1
  691. package/dist/server/ee/server/src/controllers/index.mjs.map +1 -1
  692. package/dist/server/ee/server/src/controllers/role.js.map +1 -1
  693. package/dist/server/ee/server/src/controllers/role.mjs +1 -1
  694. package/dist/server/ee/server/src/controllers/role.mjs.map +1 -1
  695. package/dist/server/ee/server/src/controllers/user.js +4 -4
  696. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  697. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  698. package/dist/server/ee/server/src/index.js +16 -16
  699. package/dist/server/ee/server/src/index.js.map +1 -1
  700. package/dist/server/ee/server/src/index.mjs.map +1 -1
  701. package/dist/server/ee/server/src/register.js.map +1 -1
  702. package/dist/server/ee/server/src/register.mjs.map +1 -1
  703. package/dist/server/ee/server/src/routes/index.js.map +1 -1
  704. package/dist/server/ee/server/src/routes/index.mjs.map +1 -1
  705. package/dist/server/ee/server/src/routes/license-limit.js.map +1 -1
  706. package/dist/server/ee/server/src/routes/license-limit.mjs.map +1 -1
  707. package/dist/server/ee/server/src/routes/sso.js.map +1 -1
  708. package/dist/server/ee/server/src/routes/sso.mjs.map +1 -1
  709. package/dist/server/ee/server/src/routes/utils.js.map +1 -1
  710. package/dist/server/ee/server/src/routes/utils.mjs.map +1 -1
  711. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  712. package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
  713. package/dist/server/ee/server/src/services/index.js.map +1 -1
  714. package/dist/server/ee/server/src/services/index.mjs.map +1 -1
  715. package/dist/server/ee/server/src/services/metrics.js.map +1 -1
  716. package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
  717. package/dist/server/ee/server/src/services/passport/provider-registry.js.map +1 -1
  718. package/dist/server/ee/server/src/services/passport/provider-registry.mjs.map +1 -1
  719. package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
  720. package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
  721. package/dist/server/ee/server/src/services/passport.js.map +1 -1
  722. package/dist/server/ee/server/src/services/passport.mjs.map +1 -1
  723. package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
  724. package/dist/server/ee/server/src/services/persist-tables.mjs +4 -4
  725. package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
  726. package/dist/server/ee/server/src/services/role.js.map +1 -1
  727. package/dist/server/ee/server/src/services/role.mjs.map +1 -1
  728. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  729. package/dist/server/ee/server/src/services/seat-enforcement.mjs +1 -1
  730. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  731. package/dist/server/ee/server/src/services/user.js.map +1 -1
  732. package/dist/server/ee/server/src/services/user.mjs +1 -1
  733. package/dist/server/ee/server/src/services/user.mjs.map +1 -1
  734. package/dist/server/ee/server/src/utils/index.js.map +1 -1
  735. package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
  736. package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
  737. package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
  738. package/dist/server/ee/server/src/validation/authentication.js.map +1 -1
  739. package/dist/server/ee/server/src/validation/authentication.mjs.map +1 -1
  740. package/dist/server/ee/server/src/validation/role.js.map +1 -1
  741. package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
  742. package/dist/server/ee/server/src/validation/user.js.map +1 -1
  743. package/dist/server/ee/server/src/validation/user.mjs.map +1 -1
  744. package/dist/server/index.js +18 -18
  745. package/dist/server/index.js.map +1 -1
  746. package/dist/server/index.mjs +2 -2
  747. package/dist/server/index.mjs.map +1 -1
  748. package/dist/server/server/src/bootstrap.js.map +1 -1
  749. package/dist/server/server/src/bootstrap.mjs +1 -1
  750. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  751. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  752. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  753. package/dist/server/server/src/config/admin-conditions.js.map +1 -1
  754. package/dist/server/server/src/config/admin-conditions.mjs.map +1 -1
  755. package/dist/server/server/src/config/email-templates/forgot-password.js.map +1 -1
  756. package/dist/server/server/src/config/email-templates/forgot-password.mjs.map +1 -1
  757. package/dist/server/server/src/config/index.js.map +1 -1
  758. package/dist/server/server/src/config/index.mjs.map +1 -1
  759. package/dist/server/server/src/content-types/Permission.js.map +1 -1
  760. package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
  761. package/dist/server/server/src/content-types/Role.js.map +1 -1
  762. package/dist/server/server/src/content-types/Role.mjs.map +1 -1
  763. package/dist/server/server/src/content-types/User.js.map +1 -1
  764. package/dist/server/server/src/content-types/User.mjs.map +1 -1
  765. package/dist/server/server/src/content-types/api-token-permission.js.map +1 -1
  766. package/dist/server/server/src/content-types/api-token-permission.mjs.map +1 -1
  767. package/dist/server/server/src/content-types/api-token.js.map +1 -1
  768. package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
  769. package/dist/server/server/src/content-types/index.js.map +1 -1
  770. package/dist/server/server/src/content-types/index.mjs.map +1 -1
  771. package/dist/server/server/src/content-types/session.js.map +1 -1
  772. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  773. package/dist/server/server/src/content-types/transfer-token-permission.js.map +1 -1
  774. package/dist/server/server/src/content-types/transfer-token-permission.mjs.map +1 -1
  775. package/dist/server/server/src/content-types/transfer-token.js.map +1 -1
  776. package/dist/server/server/src/content-types/transfer-token.mjs.map +1 -1
  777. package/dist/server/server/src/controllers/admin.js.map +1 -1
  778. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  779. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  780. package/dist/server/server/src/controllers/api-token.mjs +3 -3
  781. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  782. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  783. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  784. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  785. package/dist/server/server/src/controllers/authentication.mjs +2 -2
  786. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  787. package/dist/server/server/src/controllers/content-api.js.map +1 -1
  788. package/dist/server/server/src/controllers/content-api.mjs.map +1 -1
  789. package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
  790. package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
  791. package/dist/server/server/src/controllers/homepage.js.map +1 -1
  792. package/dist/server/server/src/controllers/homepage.mjs.map +1 -1
  793. package/dist/server/server/src/controllers/index.js.map +1 -1
  794. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  795. package/dist/server/server/src/controllers/permission.js.map +1 -1
  796. package/dist/server/server/src/controllers/permission.mjs.map +1 -1
  797. package/dist/server/server/src/controllers/role.js.map +1 -1
  798. package/dist/server/server/src/controllers/role.mjs +1 -1
  799. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  800. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  801. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  802. package/dist/server/server/src/controllers/transfer/runner.js.map +1 -1
  803. package/dist/server/server/src/controllers/transfer/runner.mjs.map +1 -1
  804. package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
  805. package/dist/server/server/src/controllers/transfer/token.mjs +2 -2
  806. package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
  807. package/dist/server/server/src/controllers/user.js.map +1 -1
  808. package/dist/server/server/src/controllers/user.mjs +1 -1
  809. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  810. package/dist/server/server/src/controllers/validation/schema.js.map +1 -1
  811. package/dist/server/server/src/controllers/validation/schema.mjs.map +1 -1
  812. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  813. package/dist/server/server/src/controllers/webhooks.mjs.map +1 -1
  814. package/dist/server/server/src/destroy.js.map +1 -1
  815. package/dist/server/server/src/destroy.mjs.map +1 -1
  816. package/dist/server/server/src/domain/action/index.js.map +1 -1
  817. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  818. package/dist/server/server/src/domain/action/provider.js.map +1 -1
  819. package/dist/server/server/src/domain/action/provider.mjs +1 -1
  820. package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
  821. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  822. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  823. package/dist/server/server/src/domain/condition/provider.js.map +1 -1
  824. package/dist/server/server/src/domain/condition/provider.mjs.map +1 -1
  825. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  826. package/dist/server/server/src/domain/permission/index.mjs +1 -1
  827. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  828. package/dist/server/server/src/domain/user.js.map +1 -1
  829. package/dist/server/server/src/domain/user.mjs.map +1 -1
  830. package/dist/server/server/src/middlewares/data-transfer.js.map +1 -1
  831. package/dist/server/server/src/middlewares/data-transfer.mjs.map +1 -1
  832. package/dist/server/server/src/middlewares/index.js.map +1 -1
  833. package/dist/server/server/src/middlewares/index.mjs.map +1 -1
  834. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  835. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  836. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  837. package/dist/server/server/src/policies/hasPermissions.mjs.map +1 -1
  838. package/dist/server/server/src/policies/index.js.map +1 -1
  839. package/dist/server/server/src/policies/index.mjs.map +1 -1
  840. package/dist/server/server/src/policies/isAuthenticatedAdmin.js.map +1 -1
  841. package/dist/server/server/src/policies/isAuthenticatedAdmin.mjs.map +1 -1
  842. package/dist/server/server/src/policies/isTelemetryEnabled.js.map +1 -1
  843. package/dist/server/server/src/policies/isTelemetryEnabled.mjs.map +1 -1
  844. package/dist/server/server/src/register.js.map +1 -1
  845. package/dist/server/server/src/register.mjs.map +1 -1
  846. package/dist/server/server/src/routes/admin.js.map +1 -1
  847. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  848. package/dist/server/server/src/routes/api-tokens.js.map +1 -1
  849. package/dist/server/server/src/routes/api-tokens.mjs.map +1 -1
  850. package/dist/server/server/src/routes/authentication.js.map +1 -1
  851. package/dist/server/server/src/routes/authentication.mjs.map +1 -1
  852. package/dist/server/server/src/routes/content-api.js.map +1 -1
  853. package/dist/server/server/src/routes/content-api.mjs.map +1 -1
  854. package/dist/server/server/src/routes/homepage.js.map +1 -1
  855. package/dist/server/server/src/routes/homepage.mjs.map +1 -1
  856. package/dist/server/server/src/routes/index.js.map +1 -1
  857. package/dist/server/server/src/routes/index.mjs.map +1 -1
  858. package/dist/server/server/src/routes/permissions.js.map +1 -1
  859. package/dist/server/server/src/routes/permissions.mjs.map +1 -1
  860. package/dist/server/server/src/routes/roles.js.map +1 -1
  861. package/dist/server/server/src/routes/roles.mjs.map +1 -1
  862. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  863. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  864. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  865. package/dist/server/server/src/routes/transfer.js.map +1 -1
  866. package/dist/server/server/src/routes/transfer.mjs.map +1 -1
  867. package/dist/server/server/src/routes/users.js.map +1 -1
  868. package/dist/server/server/src/routes/users.mjs.map +1 -1
  869. package/dist/server/server/src/routes/webhooks.js.map +1 -1
  870. package/dist/server/server/src/routes/webhooks.mjs.map +1 -1
  871. package/dist/server/server/src/services/action.js.map +1 -1
  872. package/dist/server/server/src/services/action.mjs.map +1 -1
  873. package/dist/server/server/src/services/api-token.js.map +1 -1
  874. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  875. package/dist/server/server/src/services/auth.js.map +1 -1
  876. package/dist/server/server/src/services/auth.mjs.map +1 -1
  877. package/dist/server/server/src/services/condition.js.map +1 -1
  878. package/dist/server/server/src/services/condition.mjs.map +1 -1
  879. package/dist/server/server/src/services/constants.js.map +1 -1
  880. package/dist/server/server/src/services/constants.mjs.map +1 -1
  881. package/dist/server/server/src/services/content-type.js +9 -9
  882. package/dist/server/server/src/services/content-type.js.map +1 -1
  883. package/dist/server/server/src/services/content-type.mjs +1 -1
  884. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  885. package/dist/server/server/src/services/encryption.js.map +1 -1
  886. package/dist/server/server/src/services/encryption.mjs.map +1 -1
  887. package/dist/server/server/src/services/homepage.js.map +1 -1
  888. package/dist/server/server/src/services/homepage.mjs +1 -1
  889. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  890. package/dist/server/server/src/services/index.js.map +1 -1
  891. package/dist/server/server/src/services/index.mjs.map +1 -1
  892. package/dist/server/server/src/services/metrics.js.map +1 -1
  893. package/dist/server/server/src/services/metrics.mjs.map +1 -1
  894. package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
  895. package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
  896. package/dist/server/server/src/services/passport.js.map +1 -1
  897. package/dist/server/server/src/services/passport.mjs.map +1 -1
  898. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  899. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  900. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  901. package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
  902. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  903. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  904. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  905. package/dist/server/server/src/services/permission/permissions-manager/query-builders.mjs.map +1 -1
  906. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  907. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +2 -2
  908. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  909. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  910. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +2 -2
  911. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  912. package/dist/server/server/src/services/permission/queries.js +9 -9
  913. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  914. package/dist/server/server/src/services/permission/queries.mjs +1 -1
  915. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  916. package/dist/server/server/src/services/permission/sections-builder/builder.js.map +1 -1
  917. package/dist/server/server/src/services/permission/sections-builder/builder.mjs.map +1 -1
  918. package/dist/server/server/src/services/permission/sections-builder/handlers.js +10 -10
  919. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  920. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +1 -1
  921. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  922. package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
  923. package/dist/server/server/src/services/permission/sections-builder/index.mjs +1 -1
  924. package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
  925. package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
  926. package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
  927. package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
  928. package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
  929. package/dist/server/server/src/services/permission.js.map +1 -1
  930. package/dist/server/server/src/services/permission.mjs.map +1 -1
  931. package/dist/server/server/src/services/project-settings.js.map +1 -1
  932. package/dist/server/server/src/services/project-settings.mjs.map +1 -1
  933. package/dist/server/server/src/services/role.js.map +1 -1
  934. package/dist/server/server/src/services/role.mjs +2 -2
  935. package/dist/server/server/src/services/role.mjs.map +1 -1
  936. package/dist/server/server/src/services/token.js.map +1 -1
  937. package/dist/server/server/src/services/token.mjs.map +1 -1
  938. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  939. package/dist/server/server/src/services/transfer/permission.mjs.map +1 -1
  940. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  941. package/dist/server/server/src/services/transfer/token.mjs +1 -1
  942. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  943. package/dist/server/server/src/services/transfer/utils.js.map +1 -1
  944. package/dist/server/server/src/services/transfer/utils.mjs.map +1 -1
  945. package/dist/server/server/src/services/user.js.map +1 -1
  946. package/dist/server/server/src/services/user.mjs +2 -2
  947. package/dist/server/server/src/services/user.mjs.map +1 -1
  948. package/dist/server/server/src/strategies/admin.js.map +1 -1
  949. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  950. package/dist/server/server/src/strategies/api-token.js.map +1 -1
  951. package/dist/server/server/src/strategies/api-token.mjs.map +1 -1
  952. package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
  953. package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
  954. package/dist/server/server/src/utils/index.js.map +1 -1
  955. package/dist/server/server/src/utils/index.mjs.map +1 -1
  956. package/dist/server/server/src/validation/action-provider.js.map +1 -1
  957. package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
  958. package/dist/server/server/src/validation/api-tokens.js.map +1 -1
  959. package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
  960. package/dist/server/server/src/validation/authentication/forgot-password.js.map +1 -1
  961. package/dist/server/server/src/validation/authentication/forgot-password.mjs.map +1 -1
  962. package/dist/server/server/src/validation/authentication/login.js.map +1 -1
  963. package/dist/server/server/src/validation/authentication/login.mjs.map +1 -1
  964. package/dist/server/server/src/validation/authentication/register.js.map +1 -1
  965. package/dist/server/server/src/validation/authentication/register.mjs.map +1 -1
  966. package/dist/server/server/src/validation/authentication/reset-password.js.map +1 -1
  967. package/dist/server/server/src/validation/authentication/reset-password.mjs.map +1 -1
  968. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  969. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
  970. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  971. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.mjs.map +1 -1
  972. package/dist/server/server/src/validation/common-validators.js +2 -4
  973. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  974. package/dist/server/server/src/validation/common-validators.mjs +4 -5
  975. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  976. package/dist/server/server/src/validation/permission.js.map +1 -1
  977. package/dist/server/server/src/validation/permission.mjs.map +1 -1
  978. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  979. package/dist/server/server/src/validation/policies/hasPermissions.mjs.map +1 -1
  980. package/dist/server/server/src/validation/project-settings.js.map +1 -1
  981. package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
  982. package/dist/server/server/src/validation/role.js.map +1 -1
  983. package/dist/server/server/src/validation/role.mjs.map +1 -1
  984. package/dist/server/server/src/validation/transfer/token.js.map +1 -1
  985. package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
  986. package/dist/server/server/src/validation/user.js +1 -4
  987. package/dist/server/server/src/validation/user.js.map +1 -1
  988. package/dist/server/server/src/validation/user.mjs +1 -4
  989. package/dist/server/server/src/validation/user.mjs.map +1 -1
  990. package/dist/server/shared/utils/session-auth.js.map +1 -1
  991. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  992. package/package.json +17 -12
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sources":["../../../../../../server/src/services/permission/queries.ts"],"sourcesContent":["import { isNil, isArray, prop, xor, eq, map, differenceWith } from 'lodash/fp';\nimport pmap from 'p-map';\nimport type { Data } from '@strapi/types';\nimport { getService } from '../../utils';\nimport permissionDomain, { CreatePermissionPayload } from '../../domain/permission';\nimport type { AdminUser, Permission } from '../../../../shared/contracts/shared';\nimport { Action } from '../../domain/action';\n\n/**\n * Delete permissions of roles in database\n * @param rolesIds ids of roles\n */\nexport const deleteByRolesIds = async (rolesIds: Data.ID[]): Promise<void> => {\n const permissionsToDelete = await strapi.db.query('admin::permission').findMany({\n select: ['id'],\n where: {\n role: { id: rolesIds },\n },\n });\n\n if (permissionsToDelete.length > 0) {\n await deleteByIds(permissionsToDelete.map(prop('id')));\n }\n};\n\n/**\n * Delete permissions\n * @param ids ids of permissions\n */\nexport const deleteByIds = async (ids: Data.ID[]): Promise<void> => {\n const result: unknown[] = [];\n for (const id of ids) {\n const queryResult = await strapi.db.query('admin::permission').delete({ where: { id } });\n result.push(queryResult);\n }\n strapi.eventHub.emit('permission.delete', { permissions: result });\n};\n\n/**\n * Create many permissions\n * @param permissions\n */\nexport const createMany = async (permissions: CreatePermissionPayload[]): Promise<Permission[]> => {\n const createdPermissions: CreatePermissionPayload[] = [];\n for (const permission of permissions) {\n const newPerm = await strapi.db.query('admin::permission').create({ data: permission });\n createdPermissions.push(newPerm);\n }\n\n const permissionsToReturn = permissionDomain.toPermission(createdPermissions);\n strapi.eventHub.emit('permission.create', { permissions: permissionsToReturn });\n\n return permissionsToReturn;\n};\n\n/**\n * Update a permission\n * @param params\n * @param attributes\n */\nconst update = async (params: unknown, attributes: Partial<Permission>) => {\n const updatedPermission = (await strapi.db\n .query('admin::permission')\n .update({ where: params, data: attributes })) as Permission;\n\n const permissionToReturn = permissionDomain.toPermission(updatedPermission);\n strapi.eventHub.emit('permission.update', { permissions: permissionToReturn });\n\n return permissionToReturn;\n};\n\n/**\n * Find assigned permissions in the database\n * @param params query params to find the permissions\n */\nexport const findMany = async (params = {}): Promise<Permission[]> => {\n const rawPermissions = await strapi.db.query('admin::permission').findMany(params);\n\n return permissionDomain.toPermission(rawPermissions);\n};\n\n/**\n * Find all permissions for a user\n * @param user - user\n */\nexport const findUserPermissions = async (user: AdminUser): Promise<Permission[]> => {\n return findMany({ where: { role: { users: { id: user.id } } } });\n};\n\nconst filterPermissionsToRemove = async (permissions: Permission[]) => {\n const { actionProvider } = getService('permission');\n\n const permissionsToRemove: Permission[] = [];\n\n for (const permission of permissions) {\n const { subjects, options = {} as Action['options'] } =\n (actionProvider.get(permission.action) as Action) || {};\n const { applyToProperties } = options;\n\n const invalidProperties = await Promise.all(\n (applyToProperties || []).map(async (property) => {\n const applies = await actionProvider.appliesToProperty(\n property,\n permission.action,\n permission.subject\n );\n\n return applies && isNil(permissionDomain.getProperty(property, permission));\n })\n );\n\n const isRegisteredAction = actionProvider.has(permission.action);\n const hasInvalidProperties = isArray(applyToProperties) && invalidProperties.every(eq(true));\n const isInvalidSubject = isArray(subjects) && !subjects.includes(permission.subject as string);\n\n // If the permission has an invalid action, an invalid subject or invalid properties, then add it to the toBeRemoved collection\n if (!isRegisteredAction || isInvalidSubject || hasInvalidProperties) {\n permissionsToRemove.push(permission);\n }\n }\n\n return permissionsToRemove;\n};\n\n/**\n * Removes permissions in database that don't exist anymore\n */\nexport const cleanPermissionsInDatabase = async (): Promise<void> => {\n const pageSize = 200;\n\n const contentTypeService = getService('content-type');\n\n const total = await strapi.db.query('admin::permission').count();\n const pageCount = Math.ceil(total / pageSize);\n\n for (let page = 0; page < pageCount; page += 1) {\n // 1. Find invalid permissions and collect their ID to delete them later\n const results = (await strapi.db\n .query('admin::permission')\n .findMany({ limit: pageSize, offset: page * pageSize })) as Permission[];\n\n const permissions = permissionDomain.toPermission(results);\n const permissionsToRemove = await filterPermissionsToRemove(permissions);\n const permissionsIdToRemove = map(prop('id'), permissionsToRemove);\n\n // 2. Clean permissions' fields (add required ones, remove the non-existing ones)\n const remainingPermissions = permissions.filter(\n (permission: Permission) => !permissionsIdToRemove.includes(permission.id)\n );\n\n const permissionsWithCleanFields = contentTypeService.cleanPermissionFields(\n remainingPermissions\n ) as Permission[];\n\n // Update only the ones that need to be updated\n const permissionsNeedingToBeUpdated = differenceWith(\n (a: Permission, b: Permission) => {\n return a.id === b.id && xor(a.properties.fields, b.properties.fields).length === 0;\n },\n permissionsWithCleanFields,\n remainingPermissions\n );\n\n const updatePromiseProvider = (permission: Permission) => {\n return update({ id: permission.id }, permission);\n };\n\n // Execute all the queries, update the database\n await Promise.all([\n deleteByIds(permissionsIdToRemove),\n pmap(permissionsNeedingToBeUpdated, updatePromiseProvider, {\n concurrency: 100,\n stopOnError: true,\n }),\n ]);\n }\n};\n\nexport default {\n createMany,\n findMany,\n deleteByRolesIds,\n deleteByIds,\n findUserPermissions,\n cleanPermissionsInDatabase,\n};\n"],"names":["deleteByRolesIds","rolesIds","permissionsToDelete","strapi","db","query","findMany","select","where","role","id","length","deleteByIds","map","prop","ids","result","queryResult","delete","push","eventHub","emit","permissions","createMany","createdPermissions","permission","newPerm","create","data","permissionsToReturn","permissionDomain","toPermission","update","params","attributes","updatedPermission","permissionToReturn","rawPermissions","findUserPermissions","user","users","filterPermissionsToRemove","actionProvider","getService","permissionsToRemove","subjects","options","get","action","applyToProperties","invalidProperties","Promise","all","property","applies","appliesToProperty","subject","isNil","getProperty","isRegisteredAction","has","hasInvalidProperties","isArray","every","eq","isInvalidSubject","includes","cleanPermissionsInDatabase","pageSize","contentTypeService","total","count","pageCount","Math","ceil","page","results","limit","offset","permissionsIdToRemove","remainingPermissions","filter","permissionsWithCleanFields","cleanPermissionFields","permissionsNeedingToBeUpdated","differenceWith","a","b","xor","properties","fields","updatePromiseProvider","pmap","concurrency","stopOnError"],"mappings":"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"}
1
+ {"version":3,"file":"queries.js","sources":["../../../../../../server/src/services/permission/queries.ts"],"sourcesContent":["import { isNil, isArray, prop, xor, eq, map, differenceWith } from 'lodash/fp';\nimport pmap from 'p-map';\nimport type { Data } from '@strapi/types';\nimport { getService } from '../../utils';\nimport permissionDomain, { CreatePermissionPayload } from '../../domain/permission';\nimport type { AdminUser, Permission } from '../../../../shared/contracts/shared';\nimport { Action } from '../../domain/action';\n\n/**\n * Delete permissions of roles in database\n * @param rolesIds ids of roles\n */\nexport const deleteByRolesIds = async (rolesIds: Data.ID[]): Promise<void> => {\n const permissionsToDelete = await strapi.db.query('admin::permission').findMany({\n select: ['id'],\n where: {\n role: { id: rolesIds },\n },\n });\n\n if (permissionsToDelete.length > 0) {\n await deleteByIds(permissionsToDelete.map(prop('id')));\n }\n};\n\n/**\n * Delete permissions\n * @param ids ids of permissions\n */\nexport const deleteByIds = async (ids: Data.ID[]): Promise<void> => {\n const result: unknown[] = [];\n for (const id of ids) {\n const queryResult = await strapi.db.query('admin::permission').delete({ where: { id } });\n result.push(queryResult);\n }\n strapi.eventHub.emit('permission.delete', { permissions: result });\n};\n\n/**\n * Create many permissions\n * @param permissions\n */\nexport const createMany = async (permissions: CreatePermissionPayload[]): Promise<Permission[]> => {\n const createdPermissions: CreatePermissionPayload[] = [];\n for (const permission of permissions) {\n const newPerm = await strapi.db.query('admin::permission').create({ data: permission });\n createdPermissions.push(newPerm);\n }\n\n const permissionsToReturn = permissionDomain.toPermission(createdPermissions);\n strapi.eventHub.emit('permission.create', { permissions: permissionsToReturn });\n\n return permissionsToReturn;\n};\n\n/**\n * Update a permission\n * @param params\n * @param attributes\n */\nconst update = async (params: unknown, attributes: Partial<Permission>) => {\n const updatedPermission = (await strapi.db\n .query('admin::permission')\n .update({ where: params, data: attributes })) as Permission;\n\n const permissionToReturn = permissionDomain.toPermission(updatedPermission);\n strapi.eventHub.emit('permission.update', { permissions: permissionToReturn });\n\n return permissionToReturn;\n};\n\n/**\n * Find assigned permissions in the database\n * @param params query params to find the permissions\n */\nexport const findMany = async (params = {}): Promise<Permission[]> => {\n const rawPermissions = await strapi.db.query('admin::permission').findMany(params);\n\n return permissionDomain.toPermission(rawPermissions);\n};\n\n/**\n * Find all permissions for a user\n * @param user - user\n */\nexport const findUserPermissions = async (user: AdminUser): Promise<Permission[]> => {\n return findMany({ where: { role: { users: { id: user.id } } } });\n};\n\nconst filterPermissionsToRemove = async (permissions: Permission[]) => {\n const { actionProvider } = getService('permission');\n\n const permissionsToRemove: Permission[] = [];\n\n for (const permission of permissions) {\n const { subjects, options = {} as Action['options'] } =\n (actionProvider.get(permission.action) as Action) || {};\n const { applyToProperties } = options;\n\n const invalidProperties = await Promise.all(\n (applyToProperties || []).map(async (property) => {\n const applies = await actionProvider.appliesToProperty(\n property,\n permission.action,\n permission.subject\n );\n\n return applies && isNil(permissionDomain.getProperty(property, permission));\n })\n );\n\n const isRegisteredAction = actionProvider.has(permission.action);\n const hasInvalidProperties = isArray(applyToProperties) && invalidProperties.every(eq(true));\n const isInvalidSubject = isArray(subjects) && !subjects.includes(permission.subject as string);\n\n // If the permission has an invalid action, an invalid subject or invalid properties, then add it to the toBeRemoved collection\n if (!isRegisteredAction || isInvalidSubject || hasInvalidProperties) {\n permissionsToRemove.push(permission);\n }\n }\n\n return permissionsToRemove;\n};\n\n/**\n * Removes permissions in database that don't exist anymore\n */\nexport const cleanPermissionsInDatabase = async (): Promise<void> => {\n const pageSize = 200;\n\n const contentTypeService = getService('content-type');\n\n const total = await strapi.db.query('admin::permission').count();\n const pageCount = Math.ceil(total / pageSize);\n\n for (let page = 0; page < pageCount; page += 1) {\n // 1. Find invalid permissions and collect their ID to delete them later\n const results = (await strapi.db\n .query('admin::permission')\n .findMany({ limit: pageSize, offset: page * pageSize })) as Permission[];\n\n const permissions = permissionDomain.toPermission(results);\n const permissionsToRemove = await filterPermissionsToRemove(permissions);\n const permissionsIdToRemove = map(prop('id'), permissionsToRemove);\n\n // 2. Clean permissions' fields (add required ones, remove the non-existing ones)\n const remainingPermissions = permissions.filter(\n (permission: Permission) => !permissionsIdToRemove.includes(permission.id)\n );\n\n const permissionsWithCleanFields = contentTypeService.cleanPermissionFields(\n remainingPermissions\n ) as Permission[];\n\n // Update only the ones that need to be updated\n const permissionsNeedingToBeUpdated = differenceWith(\n (a: Permission, b: Permission) => {\n return a.id === b.id && xor(a.properties.fields, b.properties.fields).length === 0;\n },\n permissionsWithCleanFields,\n remainingPermissions\n );\n\n const updatePromiseProvider = (permission: Permission) => {\n return update({ id: permission.id }, permission);\n };\n\n // Execute all the queries, update the database\n await Promise.all([\n deleteByIds(permissionsIdToRemove),\n pmap(permissionsNeedingToBeUpdated, updatePromiseProvider, {\n concurrency: 100,\n stopOnError: true,\n }),\n ]);\n }\n};\n\nexport default {\n createMany,\n findMany,\n deleteByRolesIds,\n deleteByIds,\n findUserPermissions,\n cleanPermissionsInDatabase,\n};\n"],"names":["deleteByRolesIds","rolesIds","permissionsToDelete","strapi","db","query","findMany","select","where","role","id","length","deleteByIds","map","prop","ids","result","queryResult","delete","push","eventHub","emit","permissions","createMany","createdPermissions","permission","newPerm","create","data","permissionsToReturn","permissionDomain","toPermission","update","params","attributes","updatedPermission","permissionToReturn","rawPermissions","findUserPermissions","user","users","filterPermissionsToRemove","actionProvider","getService","permissionsToRemove","subjects","options","get","action","applyToProperties","invalidProperties","Promise","all","property","applies","appliesToProperty","subject","isNil","getProperty","isRegisteredAction","has","hasInvalidProperties","isArray","every","eq","isInvalidSubject","includes","cleanPermissionsInDatabase","pageSize","contentTypeService","total","count","pageCount","Math","ceil","page","results","limit","offset","permissionsIdToRemove","remainingPermissions","filter","permissionsWithCleanFields","cleanPermissionFields","permissionsNeedingToBeUpdated","differenceWith","a","b","xor","properties","fields","updatePromiseProvider","pmap","concurrency","stopOnError"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { prop, map, differenceWith, xor, isNil, isArray, eq } from 'lodash/fp';
1
+ import { map, prop, differenceWith, xor, isNil, isArray, eq } from 'lodash/fp';
2
2
  import pmap from 'p-map';
3
3
  import { getService } from '../../utils/index.mjs';
4
4
  import permissionDomain from '../../domain/permission/index.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"queries.mjs","sources":["../../../../../../server/src/services/permission/queries.ts"],"sourcesContent":["import { isNil, isArray, prop, xor, eq, map, differenceWith } from 'lodash/fp';\nimport pmap from 'p-map';\nimport type { Data } from '@strapi/types';\nimport { getService } from '../../utils';\nimport permissionDomain, { CreatePermissionPayload } from '../../domain/permission';\nimport type { AdminUser, Permission } from '../../../../shared/contracts/shared';\nimport { Action } from '../../domain/action';\n\n/**\n * Delete permissions of roles in database\n * @param rolesIds ids of roles\n */\nexport const deleteByRolesIds = async (rolesIds: Data.ID[]): Promise<void> => {\n const permissionsToDelete = await strapi.db.query('admin::permission').findMany({\n select: ['id'],\n where: {\n role: { id: rolesIds },\n },\n });\n\n if (permissionsToDelete.length > 0) {\n await deleteByIds(permissionsToDelete.map(prop('id')));\n }\n};\n\n/**\n * Delete permissions\n * @param ids ids of permissions\n */\nexport const deleteByIds = async (ids: Data.ID[]): Promise<void> => {\n const result: unknown[] = [];\n for (const id of ids) {\n const queryResult = await strapi.db.query('admin::permission').delete({ where: { id } });\n result.push(queryResult);\n }\n strapi.eventHub.emit('permission.delete', { permissions: result });\n};\n\n/**\n * Create many permissions\n * @param permissions\n */\nexport const createMany = async (permissions: CreatePermissionPayload[]): Promise<Permission[]> => {\n const createdPermissions: CreatePermissionPayload[] = [];\n for (const permission of permissions) {\n const newPerm = await strapi.db.query('admin::permission').create({ data: permission });\n createdPermissions.push(newPerm);\n }\n\n const permissionsToReturn = permissionDomain.toPermission(createdPermissions);\n strapi.eventHub.emit('permission.create', { permissions: permissionsToReturn });\n\n return permissionsToReturn;\n};\n\n/**\n * Update a permission\n * @param params\n * @param attributes\n */\nconst update = async (params: unknown, attributes: Partial<Permission>) => {\n const updatedPermission = (await strapi.db\n .query('admin::permission')\n .update({ where: params, data: attributes })) as Permission;\n\n const permissionToReturn = permissionDomain.toPermission(updatedPermission);\n strapi.eventHub.emit('permission.update', { permissions: permissionToReturn });\n\n return permissionToReturn;\n};\n\n/**\n * Find assigned permissions in the database\n * @param params query params to find the permissions\n */\nexport const findMany = async (params = {}): Promise<Permission[]> => {\n const rawPermissions = await strapi.db.query('admin::permission').findMany(params);\n\n return permissionDomain.toPermission(rawPermissions);\n};\n\n/**\n * Find all permissions for a user\n * @param user - user\n */\nexport const findUserPermissions = async (user: AdminUser): Promise<Permission[]> => {\n return findMany({ where: { role: { users: { id: user.id } } } });\n};\n\nconst filterPermissionsToRemove = async (permissions: Permission[]) => {\n const { actionProvider } = getService('permission');\n\n const permissionsToRemove: Permission[] = [];\n\n for (const permission of permissions) {\n const { subjects, options = {} as Action['options'] } =\n (actionProvider.get(permission.action) as Action) || {};\n const { applyToProperties } = options;\n\n const invalidProperties = await Promise.all(\n (applyToProperties || []).map(async (property) => {\n const applies = await actionProvider.appliesToProperty(\n property,\n permission.action,\n permission.subject\n );\n\n return applies && isNil(permissionDomain.getProperty(property, permission));\n })\n );\n\n const isRegisteredAction = actionProvider.has(permission.action);\n const hasInvalidProperties = isArray(applyToProperties) && invalidProperties.every(eq(true));\n const isInvalidSubject = isArray(subjects) && !subjects.includes(permission.subject as string);\n\n // If the permission has an invalid action, an invalid subject or invalid properties, then add it to the toBeRemoved collection\n if (!isRegisteredAction || isInvalidSubject || hasInvalidProperties) {\n permissionsToRemove.push(permission);\n }\n }\n\n return permissionsToRemove;\n};\n\n/**\n * Removes permissions in database that don't exist anymore\n */\nexport const cleanPermissionsInDatabase = async (): Promise<void> => {\n const pageSize = 200;\n\n const contentTypeService = getService('content-type');\n\n const total = await strapi.db.query('admin::permission').count();\n const pageCount = Math.ceil(total / pageSize);\n\n for (let page = 0; page < pageCount; page += 1) {\n // 1. Find invalid permissions and collect their ID to delete them later\n const results = (await strapi.db\n .query('admin::permission')\n .findMany({ limit: pageSize, offset: page * pageSize })) as Permission[];\n\n const permissions = permissionDomain.toPermission(results);\n const permissionsToRemove = await filterPermissionsToRemove(permissions);\n const permissionsIdToRemove = map(prop('id'), permissionsToRemove);\n\n // 2. Clean permissions' fields (add required ones, remove the non-existing ones)\n const remainingPermissions = permissions.filter(\n (permission: Permission) => !permissionsIdToRemove.includes(permission.id)\n );\n\n const permissionsWithCleanFields = contentTypeService.cleanPermissionFields(\n remainingPermissions\n ) as Permission[];\n\n // Update only the ones that need to be updated\n const permissionsNeedingToBeUpdated = differenceWith(\n (a: Permission, b: Permission) => {\n return a.id === b.id && xor(a.properties.fields, b.properties.fields).length === 0;\n },\n permissionsWithCleanFields,\n remainingPermissions\n );\n\n const updatePromiseProvider = (permission: Permission) => {\n return update({ id: permission.id }, permission);\n };\n\n // Execute all the queries, update the database\n await Promise.all([\n deleteByIds(permissionsIdToRemove),\n pmap(permissionsNeedingToBeUpdated, updatePromiseProvider, {\n concurrency: 100,\n stopOnError: true,\n }),\n ]);\n }\n};\n\nexport default {\n createMany,\n findMany,\n deleteByRolesIds,\n deleteByIds,\n findUserPermissions,\n cleanPermissionsInDatabase,\n};\n"],"names":["deleteByRolesIds","rolesIds","permissionsToDelete","strapi","db","query","findMany","select","where","role","id","length","deleteByIds","map","prop","ids","result","queryResult","delete","push","eventHub","emit","permissions","createMany","createdPermissions","permission","newPerm","create","data","permissionsToReturn","permissionDomain","toPermission","update","params","attributes","updatedPermission","permissionToReturn","rawPermissions","findUserPermissions","user","users","filterPermissionsToRemove","actionProvider","getService","permissionsToRemove","subjects","options","get","action","applyToProperties","invalidProperties","Promise","all","property","applies","appliesToProperty","subject","isNil","getProperty","isRegisteredAction","has","hasInvalidProperties","isArray","every","eq","isInvalidSubject","includes","cleanPermissionsInDatabase","pageSize","contentTypeService","total","count","pageCount","Math","ceil","page","results","limit","offset","permissionsIdToRemove","remainingPermissions","filter","permissionsWithCleanFields","cleanPermissionFields","permissionsNeedingToBeUpdated","differenceWith","a","b","xor","properties","fields","updatePromiseProvider","pmap","concurrency","stopOnError"],"mappings":"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"}
1
+ {"version":3,"file":"queries.mjs","sources":["../../../../../../server/src/services/permission/queries.ts"],"sourcesContent":["import { isNil, isArray, prop, xor, eq, map, differenceWith } from 'lodash/fp';\nimport pmap from 'p-map';\nimport type { Data } from '@strapi/types';\nimport { getService } from '../../utils';\nimport permissionDomain, { CreatePermissionPayload } from '../../domain/permission';\nimport type { AdminUser, Permission } from '../../../../shared/contracts/shared';\nimport { Action } from '../../domain/action';\n\n/**\n * Delete permissions of roles in database\n * @param rolesIds ids of roles\n */\nexport const deleteByRolesIds = async (rolesIds: Data.ID[]): Promise<void> => {\n const permissionsToDelete = await strapi.db.query('admin::permission').findMany({\n select: ['id'],\n where: {\n role: { id: rolesIds },\n },\n });\n\n if (permissionsToDelete.length > 0) {\n await deleteByIds(permissionsToDelete.map(prop('id')));\n }\n};\n\n/**\n * Delete permissions\n * @param ids ids of permissions\n */\nexport const deleteByIds = async (ids: Data.ID[]): Promise<void> => {\n const result: unknown[] = [];\n for (const id of ids) {\n const queryResult = await strapi.db.query('admin::permission').delete({ where: { id } });\n result.push(queryResult);\n }\n strapi.eventHub.emit('permission.delete', { permissions: result });\n};\n\n/**\n * Create many permissions\n * @param permissions\n */\nexport const createMany = async (permissions: CreatePermissionPayload[]): Promise<Permission[]> => {\n const createdPermissions: CreatePermissionPayload[] = [];\n for (const permission of permissions) {\n const newPerm = await strapi.db.query('admin::permission').create({ data: permission });\n createdPermissions.push(newPerm);\n }\n\n const permissionsToReturn = permissionDomain.toPermission(createdPermissions);\n strapi.eventHub.emit('permission.create', { permissions: permissionsToReturn });\n\n return permissionsToReturn;\n};\n\n/**\n * Update a permission\n * @param params\n * @param attributes\n */\nconst update = async (params: unknown, attributes: Partial<Permission>) => {\n const updatedPermission = (await strapi.db\n .query('admin::permission')\n .update({ where: params, data: attributes })) as Permission;\n\n const permissionToReturn = permissionDomain.toPermission(updatedPermission);\n strapi.eventHub.emit('permission.update', { permissions: permissionToReturn });\n\n return permissionToReturn;\n};\n\n/**\n * Find assigned permissions in the database\n * @param params query params to find the permissions\n */\nexport const findMany = async (params = {}): Promise<Permission[]> => {\n const rawPermissions = await strapi.db.query('admin::permission').findMany(params);\n\n return permissionDomain.toPermission(rawPermissions);\n};\n\n/**\n * Find all permissions for a user\n * @param user - user\n */\nexport const findUserPermissions = async (user: AdminUser): Promise<Permission[]> => {\n return findMany({ where: { role: { users: { id: user.id } } } });\n};\n\nconst filterPermissionsToRemove = async (permissions: Permission[]) => {\n const { actionProvider } = getService('permission');\n\n const permissionsToRemove: Permission[] = [];\n\n for (const permission of permissions) {\n const { subjects, options = {} as Action['options'] } =\n (actionProvider.get(permission.action) as Action) || {};\n const { applyToProperties } = options;\n\n const invalidProperties = await Promise.all(\n (applyToProperties || []).map(async (property) => {\n const applies = await actionProvider.appliesToProperty(\n property,\n permission.action,\n permission.subject\n );\n\n return applies && isNil(permissionDomain.getProperty(property, permission));\n })\n );\n\n const isRegisteredAction = actionProvider.has(permission.action);\n const hasInvalidProperties = isArray(applyToProperties) && invalidProperties.every(eq(true));\n const isInvalidSubject = isArray(subjects) && !subjects.includes(permission.subject as string);\n\n // If the permission has an invalid action, an invalid subject or invalid properties, then add it to the toBeRemoved collection\n if (!isRegisteredAction || isInvalidSubject || hasInvalidProperties) {\n permissionsToRemove.push(permission);\n }\n }\n\n return permissionsToRemove;\n};\n\n/**\n * Removes permissions in database that don't exist anymore\n */\nexport const cleanPermissionsInDatabase = async (): Promise<void> => {\n const pageSize = 200;\n\n const contentTypeService = getService('content-type');\n\n const total = await strapi.db.query('admin::permission').count();\n const pageCount = Math.ceil(total / pageSize);\n\n for (let page = 0; page < pageCount; page += 1) {\n // 1. Find invalid permissions and collect their ID to delete them later\n const results = (await strapi.db\n .query('admin::permission')\n .findMany({ limit: pageSize, offset: page * pageSize })) as Permission[];\n\n const permissions = permissionDomain.toPermission(results);\n const permissionsToRemove = await filterPermissionsToRemove(permissions);\n const permissionsIdToRemove = map(prop('id'), permissionsToRemove);\n\n // 2. Clean permissions' fields (add required ones, remove the non-existing ones)\n const remainingPermissions = permissions.filter(\n (permission: Permission) => !permissionsIdToRemove.includes(permission.id)\n );\n\n const permissionsWithCleanFields = contentTypeService.cleanPermissionFields(\n remainingPermissions\n ) as Permission[];\n\n // Update only the ones that need to be updated\n const permissionsNeedingToBeUpdated = differenceWith(\n (a: Permission, b: Permission) => {\n return a.id === b.id && xor(a.properties.fields, b.properties.fields).length === 0;\n },\n permissionsWithCleanFields,\n remainingPermissions\n );\n\n const updatePromiseProvider = (permission: Permission) => {\n return update({ id: permission.id }, permission);\n };\n\n // Execute all the queries, update the database\n await Promise.all([\n deleteByIds(permissionsIdToRemove),\n pmap(permissionsNeedingToBeUpdated, updatePromiseProvider, {\n concurrency: 100,\n stopOnError: true,\n }),\n ]);\n }\n};\n\nexport default {\n createMany,\n findMany,\n deleteByRolesIds,\n deleteByIds,\n findUserPermissions,\n cleanPermissionsInDatabase,\n};\n"],"names":["deleteByRolesIds","rolesIds","permissionsToDelete","strapi","db","query","findMany","select","where","role","id","length","deleteByIds","map","prop","ids","result","queryResult","delete","push","eventHub","emit","permissions","createMany","createdPermissions","permission","newPerm","create","data","permissionsToReturn","permissionDomain","toPermission","update","params","attributes","updatedPermission","permissionToReturn","rawPermissions","findUserPermissions","user","users","filterPermissionsToRemove","actionProvider","getService","permissionsToRemove","subjects","options","get","action","applyToProperties","invalidProperties","Promise","all","property","applies","appliesToProperty","subject","isNil","getProperty","isRegisteredAction","has","hasInvalidProperties","isArray","every","eq","isInvalidSubject","includes","cleanPermissionsInDatabase","pageSize","contentTypeService","total","count","pageCount","Math","ceil","page","results","limit","offset","permissionsIdToRemove","remainingPermissions","filter","permissionsWithCleanFields","cleanPermissionFields","permissionsNeedingToBeUpdated","differenceWith","a","b","xor","properties","fields","updatePromiseProvider","pmap","concurrency","stopOnError"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sources":["../../../../../../../server/src/services/permission/sections-builder/builder.ts"],"sourcesContent":["import { Action } from '../../../domain/action';\nimport createSection, { SectionOptions } from './section';\n\n/**\n * Create a new section builder with its own sections registry\n */\nconst createSectionBuilder = () => {\n const state = {\n sections: new Map(),\n };\n\n return {\n /**\n * Create & add a section to the builder's registry\n * @param sectionName - The unique name of the section\n * @param options - The options used to build a {@link Section}\n */\n createSection(sectionName: string, options: SectionOptions) {\n const section = createSection(options);\n\n state.sections.set(sectionName, section);\n\n return this;\n },\n\n /**\n * Removes a section from the builder's registry using its unique name\n * @param sectionName - The name of the section to delete\n */\n deleteSection(sectionName: string) {\n state.sections.delete(sectionName);\n\n return this;\n },\n\n /**\n * Register a handler function for a given section\n * @param sectionName - The name of the section\n * @param handler - The handler to register\n */\n addHandler(sectionName: string, handler: () => unknown) {\n if (state.sections.has(sectionName)) {\n state.sections.get(sectionName).hooks.handlers.register(handler);\n }\n\n return this;\n },\n\n /**\n * Register a matcher function for a given section\n * @param sectionName - The name of the section\n * @param matcher - The handler to register\n\n */\n addMatcher(sectionName: string, matcher: () => unknown) {\n if (state.sections.has(sectionName)) {\n state.sections.get(sectionName).hooks.matchers.register(matcher);\n }\n\n return this;\n },\n\n /**\n * Build a section tree based on the registered actions and the given actions\n * @param actions - The actions used to build each section\n */\n async build(actions = [] as Action[]) {\n const sections = {} as any;\n\n for (const [sectionName, section] of state.sections.entries()) {\n sections[sectionName] = await section.build(actions);\n }\n\n return sections;\n },\n };\n};\n\nexport default createSectionBuilder;\n"],"names":["createSectionBuilder","state","sections","Map","createSection","sectionName","options","section","set","deleteSection","delete","addHandler","handler","has","get","hooks","handlers","register","addMatcher","matcher","matchers","build","actions","entries"],"mappings":";;;;AAGA;;AAEC,UACKA,oBAAuB,GAAA,IAAA;AAC3B,IAAA,MAAMC,KAAQ,GAAA;AACZC,QAAAA,QAAAA,EAAU,IAAIC,GAAAA;AAChB,KAAA;IAEA,OAAO;AACL;;;;QAKAC,aAAAA,CAAAA,CAAcC,WAAmB,EAAEC,OAAuB,EAAA;AACxD,YAAA,MAAMC,YAAUH,OAAcE,CAAAA,OAAAA,CAAAA;AAE9BL,YAAAA,KAAAA,CAAMC,QAAQ,CAACM,GAAG,CAACH,WAAaE,EAAAA,SAAAA,CAAAA;AAEhC,YAAA,OAAO,IAAI;AACb,SAAA;AAEA;;;AAGC,QACDE,eAAcJ,WAAmB,EAAA;YAC/BJ,KAAMC,CAAAA,QAAQ,CAACQ,MAAM,CAACL,WAAAA,CAAAA;AAEtB,YAAA,OAAO,IAAI;AACb,SAAA;AAEA;;;;QAKAM,UAAAA,CAAAA,CAAWN,WAAmB,EAAEO,OAAsB,EAAA;AACpD,YAAA,IAAIX,KAAMC,CAAAA,QAAQ,CAACW,GAAG,CAACR,WAAc,CAAA,EAAA;gBACnCJ,KAAMC,CAAAA,QAAQ,CAACY,GAAG,CAACT,WAAAA,CAAAA,CAAaU,KAAK,CAACC,QAAQ,CAACC,QAAQ,CAACL,OAAAA,CAAAA;AAC1D;AAEA,YAAA,OAAO,IAAI;AACb,SAAA;AAEA;;;;;QAMAM,UAAAA,CAAAA,CAAWb,WAAmB,EAAEc,OAAsB,EAAA;AACpD,YAAA,IAAIlB,KAAMC,CAAAA,QAAQ,CAACW,GAAG,CAACR,WAAc,CAAA,EAAA;gBACnCJ,KAAMC,CAAAA,QAAQ,CAACY,GAAG,CAACT,WAAAA,CAAAA,CAAaU,KAAK,CAACK,QAAQ,CAACH,QAAQ,CAACE,OAAAA,CAAAA;AAC1D;AAEA,YAAA,OAAO,IAAI;AACb,SAAA;AAEA;;;AAGC,QACD,MAAME,KAAAA,CAAAA,CAAMC,OAAU,GAAA,EAAE,EAAY;AAClC,YAAA,MAAMpB,WAAW,EAAC;YAElB,KAAK,MAAM,CAACG,WAAaE,EAAAA,OAAAA,CAAQ,IAAIN,KAAMC,CAAAA,QAAQ,CAACqB,OAAO,EAAI,CAAA;AAC7DrB,gBAAAA,QAAQ,CAACG,WAAY,CAAA,GAAG,MAAME,OAAAA,CAAQc,KAAK,CAACC,OAAAA,CAAAA;AAC9C;YAEA,OAAOpB,QAAAA;AACT;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"builder.js","sources":["../../../../../../../server/src/services/permission/sections-builder/builder.ts"],"sourcesContent":["import { Action } from '../../../domain/action';\nimport createSection, { SectionOptions } from './section';\n\n/**\n * Create a new section builder with its own sections registry\n */\nconst createSectionBuilder = () => {\n const state = {\n sections: new Map(),\n };\n\n return {\n /**\n * Create & add a section to the builder's registry\n * @param sectionName - The unique name of the section\n * @param options - The options used to build a {@link Section}\n */\n createSection(sectionName: string, options: SectionOptions) {\n const section = createSection(options);\n\n state.sections.set(sectionName, section);\n\n return this;\n },\n\n /**\n * Removes a section from the builder's registry using its unique name\n * @param sectionName - The name of the section to delete\n */\n deleteSection(sectionName: string) {\n state.sections.delete(sectionName);\n\n return this;\n },\n\n /**\n * Register a handler function for a given section\n * @param sectionName - The name of the section\n * @param handler - The handler to register\n */\n addHandler(sectionName: string, handler: () => unknown) {\n if (state.sections.has(sectionName)) {\n state.sections.get(sectionName).hooks.handlers.register(handler);\n }\n\n return this;\n },\n\n /**\n * Register a matcher function for a given section\n * @param sectionName - The name of the section\n * @param matcher - The handler to register\n\n */\n addMatcher(sectionName: string, matcher: () => unknown) {\n if (state.sections.has(sectionName)) {\n state.sections.get(sectionName).hooks.matchers.register(matcher);\n }\n\n return this;\n },\n\n /**\n * Build a section tree based on the registered actions and the given actions\n * @param actions - The actions used to build each section\n */\n async build(actions = [] as Action[]) {\n const sections = {} as any;\n\n for (const [sectionName, section] of state.sections.entries()) {\n sections[sectionName] = await section.build(actions);\n }\n\n return sections;\n },\n };\n};\n\nexport default createSectionBuilder;\n"],"names":["createSectionBuilder","state","sections","Map","createSection","sectionName","options","section","set","deleteSection","delete","addHandler","handler","has","get","hooks","handlers","register","addMatcher","matcher","matchers","build","actions","entries"],"mappings":";;;;AAGA;;AAEC,UACKA,oBAAAA,GAAuB,IAAA;AAC3B,IAAA,MAAMC,KAAAA,GAAQ;AACZC,QAAAA,QAAAA,EAAU,IAAIC,GAAAA;AAChB,KAAA;IAEA,OAAO;AACL;;;;QAKAC,aAAAA,CAAAA,CAAcC,WAAmB,EAAEC,OAAuB,EAAA;AACxD,YAAA,MAAMC,YAAUH,OAAAA,CAAcE,OAAAA,CAAAA;AAE9BL,YAAAA,KAAAA,CAAMC,QAAQ,CAACM,GAAG,CAACH,WAAAA,EAAaE,SAAAA,CAAAA;AAEhC,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;AAGC,QACDE,eAAcJ,WAAmB,EAAA;YAC/BJ,KAAAA,CAAMC,QAAQ,CAACQ,MAAM,CAACL,WAAAA,CAAAA;AAEtB,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;QAKAM,UAAAA,CAAAA,CAAWN,WAAmB,EAAEO,OAAsB,EAAA;AACpD,YAAA,IAAIX,KAAAA,CAAMC,QAAQ,CAACW,GAAG,CAACR,WAAAA,CAAAA,EAAc;gBACnCJ,KAAAA,CAAMC,QAAQ,CAACY,GAAG,CAACT,WAAAA,CAAAA,CAAaU,KAAK,CAACC,QAAQ,CAACC,QAAQ,CAACL,OAAAA,CAAAA;AAC1D,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;;QAMAM,UAAAA,CAAAA,CAAWb,WAAmB,EAAEc,OAAsB,EAAA;AACpD,YAAA,IAAIlB,KAAAA,CAAMC,QAAQ,CAACW,GAAG,CAACR,WAAAA,CAAAA,EAAc;gBACnCJ,KAAAA,CAAMC,QAAQ,CAACY,GAAG,CAACT,WAAAA,CAAAA,CAAaU,KAAK,CAACK,QAAQ,CAACH,QAAQ,CAACE,OAAAA,CAAAA;AAC1D,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;AAGC,QACD,MAAME,KAAAA,CAAAA,CAAMC,OAAAA,GAAU,EAAE,EAAY;AAClC,YAAA,MAAMpB,WAAW,EAAC;YAElB,KAAK,MAAM,CAACG,WAAAA,EAAaE,OAAAA,CAAQ,IAAIN,KAAAA,CAAMC,QAAQ,CAACqB,OAAO,EAAA,CAAI;AAC7DrB,gBAAAA,QAAQ,CAACG,WAAAA,CAAY,GAAG,MAAME,OAAAA,CAAQc,KAAK,CAACC,OAAAA,CAAAA;AAC9C,YAAA;YAEA,OAAOpB,QAAAA;AACT,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"builder.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/builder.ts"],"sourcesContent":["import { Action } from '../../../domain/action';\nimport createSection, { SectionOptions } from './section';\n\n/**\n * Create a new section builder with its own sections registry\n */\nconst createSectionBuilder = () => {\n const state = {\n sections: new Map(),\n };\n\n return {\n /**\n * Create & add a section to the builder's registry\n * @param sectionName - The unique name of the section\n * @param options - The options used to build a {@link Section}\n */\n createSection(sectionName: string, options: SectionOptions) {\n const section = createSection(options);\n\n state.sections.set(sectionName, section);\n\n return this;\n },\n\n /**\n * Removes a section from the builder's registry using its unique name\n * @param sectionName - The name of the section to delete\n */\n deleteSection(sectionName: string) {\n state.sections.delete(sectionName);\n\n return this;\n },\n\n /**\n * Register a handler function for a given section\n * @param sectionName - The name of the section\n * @param handler - The handler to register\n */\n addHandler(sectionName: string, handler: () => unknown) {\n if (state.sections.has(sectionName)) {\n state.sections.get(sectionName).hooks.handlers.register(handler);\n }\n\n return this;\n },\n\n /**\n * Register a matcher function for a given section\n * @param sectionName - The name of the section\n * @param matcher - The handler to register\n\n */\n addMatcher(sectionName: string, matcher: () => unknown) {\n if (state.sections.has(sectionName)) {\n state.sections.get(sectionName).hooks.matchers.register(matcher);\n }\n\n return this;\n },\n\n /**\n * Build a section tree based on the registered actions and the given actions\n * @param actions - The actions used to build each section\n */\n async build(actions = [] as Action[]) {\n const sections = {} as any;\n\n for (const [sectionName, section] of state.sections.entries()) {\n sections[sectionName] = await section.build(actions);\n }\n\n return sections;\n },\n };\n};\n\nexport default createSectionBuilder;\n"],"names":["createSectionBuilder","state","sections","Map","createSection","sectionName","options","section","set","deleteSection","delete","addHandler","handler","has","get","hooks","handlers","register","addMatcher","matcher","matchers","build","actions","entries"],"mappings":";;AAGA;;AAEC,UACKA,oBAAuB,GAAA,IAAA;AAC3B,IAAA,MAAMC,KAAQ,GAAA;AACZC,QAAAA,QAAAA,EAAU,IAAIC,GAAAA;AAChB,KAAA;IAEA,OAAO;AACL;;;;QAKAC,aAAAA,CAAAA,CAAcC,WAAmB,EAAEC,OAAuB,EAAA;AACxD,YAAA,MAAMC,UAAUH,aAAcE,CAAAA,OAAAA,CAAAA;AAE9BL,YAAAA,KAAAA,CAAMC,QAAQ,CAACM,GAAG,CAACH,WAAaE,EAAAA,OAAAA,CAAAA;AAEhC,YAAA,OAAO,IAAI;AACb,SAAA;AAEA;;;AAGC,QACDE,eAAcJ,WAAmB,EAAA;YAC/BJ,KAAMC,CAAAA,QAAQ,CAACQ,MAAM,CAACL,WAAAA,CAAAA;AAEtB,YAAA,OAAO,IAAI;AACb,SAAA;AAEA;;;;QAKAM,UAAAA,CAAAA,CAAWN,WAAmB,EAAEO,OAAsB,EAAA;AACpD,YAAA,IAAIX,KAAMC,CAAAA,QAAQ,CAACW,GAAG,CAACR,WAAc,CAAA,EAAA;gBACnCJ,KAAMC,CAAAA,QAAQ,CAACY,GAAG,CAACT,WAAAA,CAAAA,CAAaU,KAAK,CAACC,QAAQ,CAACC,QAAQ,CAACL,OAAAA,CAAAA;AAC1D;AAEA,YAAA,OAAO,IAAI;AACb,SAAA;AAEA;;;;;QAMAM,UAAAA,CAAAA,CAAWb,WAAmB,EAAEc,OAAsB,EAAA;AACpD,YAAA,IAAIlB,KAAMC,CAAAA,QAAQ,CAACW,GAAG,CAACR,WAAc,CAAA,EAAA;gBACnCJ,KAAMC,CAAAA,QAAQ,CAACY,GAAG,CAACT,WAAAA,CAAAA,CAAaU,KAAK,CAACK,QAAQ,CAACH,QAAQ,CAACE,OAAAA,CAAAA;AAC1D;AAEA,YAAA,OAAO,IAAI;AACb,SAAA;AAEA;;;AAGC,QACD,MAAME,KAAAA,CAAAA,CAAMC,OAAU,GAAA,EAAE,EAAY;AAClC,YAAA,MAAMpB,WAAW,EAAC;YAElB,KAAK,MAAM,CAACG,WAAaE,EAAAA,OAAAA,CAAQ,IAAIN,KAAMC,CAAAA,QAAQ,CAACqB,OAAO,EAAI,CAAA;AAC7DrB,gBAAAA,QAAQ,CAACG,WAAY,CAAA,GAAG,MAAME,OAAAA,CAAQc,KAAK,CAACC,OAAAA,CAAAA;AAC9C;YAEA,OAAOpB,QAAAA;AACT;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"builder.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/builder.ts"],"sourcesContent":["import { Action } from '../../../domain/action';\nimport createSection, { SectionOptions } from './section';\n\n/**\n * Create a new section builder with its own sections registry\n */\nconst createSectionBuilder = () => {\n const state = {\n sections: new Map(),\n };\n\n return {\n /**\n * Create & add a section to the builder's registry\n * @param sectionName - The unique name of the section\n * @param options - The options used to build a {@link Section}\n */\n createSection(sectionName: string, options: SectionOptions) {\n const section = createSection(options);\n\n state.sections.set(sectionName, section);\n\n return this;\n },\n\n /**\n * Removes a section from the builder's registry using its unique name\n * @param sectionName - The name of the section to delete\n */\n deleteSection(sectionName: string) {\n state.sections.delete(sectionName);\n\n return this;\n },\n\n /**\n * Register a handler function for a given section\n * @param sectionName - The name of the section\n * @param handler - The handler to register\n */\n addHandler(sectionName: string, handler: () => unknown) {\n if (state.sections.has(sectionName)) {\n state.sections.get(sectionName).hooks.handlers.register(handler);\n }\n\n return this;\n },\n\n /**\n * Register a matcher function for a given section\n * @param sectionName - The name of the section\n * @param matcher - The handler to register\n\n */\n addMatcher(sectionName: string, matcher: () => unknown) {\n if (state.sections.has(sectionName)) {\n state.sections.get(sectionName).hooks.matchers.register(matcher);\n }\n\n return this;\n },\n\n /**\n * Build a section tree based on the registered actions and the given actions\n * @param actions - The actions used to build each section\n */\n async build(actions = [] as Action[]) {\n const sections = {} as any;\n\n for (const [sectionName, section] of state.sections.entries()) {\n sections[sectionName] = await section.build(actions);\n }\n\n return sections;\n },\n };\n};\n\nexport default createSectionBuilder;\n"],"names":["createSectionBuilder","state","sections","Map","createSection","sectionName","options","section","set","deleteSection","delete","addHandler","handler","has","get","hooks","handlers","register","addMatcher","matcher","matchers","build","actions","entries"],"mappings":";;AAGA;;AAEC,UACKA,oBAAAA,GAAuB,IAAA;AAC3B,IAAA,MAAMC,KAAAA,GAAQ;AACZC,QAAAA,QAAAA,EAAU,IAAIC,GAAAA;AAChB,KAAA;IAEA,OAAO;AACL;;;;QAKAC,aAAAA,CAAAA,CAAcC,WAAmB,EAAEC,OAAuB,EAAA;AACxD,YAAA,MAAMC,UAAUH,aAAAA,CAAcE,OAAAA,CAAAA;AAE9BL,YAAAA,KAAAA,CAAMC,QAAQ,CAACM,GAAG,CAACH,WAAAA,EAAaE,OAAAA,CAAAA;AAEhC,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;AAGC,QACDE,eAAcJ,WAAmB,EAAA;YAC/BJ,KAAAA,CAAMC,QAAQ,CAACQ,MAAM,CAACL,WAAAA,CAAAA;AAEtB,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;QAKAM,UAAAA,CAAAA,CAAWN,WAAmB,EAAEO,OAAsB,EAAA;AACpD,YAAA,IAAIX,KAAAA,CAAMC,QAAQ,CAACW,GAAG,CAACR,WAAAA,CAAAA,EAAc;gBACnCJ,KAAAA,CAAMC,QAAQ,CAACY,GAAG,CAACT,WAAAA,CAAAA,CAAaU,KAAK,CAACC,QAAQ,CAACC,QAAQ,CAACL,OAAAA,CAAAA;AAC1D,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;;QAMAM,UAAAA,CAAAA,CAAWb,WAAmB,EAAEc,OAAsB,EAAA;AACpD,YAAA,IAAIlB,KAAAA,CAAMC,QAAQ,CAACW,GAAG,CAACR,WAAAA,CAAAA,EAAc;gBACnCJ,KAAAA,CAAMC,QAAQ,CAACY,GAAG,CAACT,WAAAA,CAAAA,CAAaU,KAAK,CAACK,QAAQ,CAACH,QAAQ,CAACE,OAAAA,CAAAA;AAC1D,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;AAGC,QACD,MAAME,KAAAA,CAAAA,CAAMC,OAAAA,GAAU,EAAE,EAAY;AAClC,YAAA,MAAMpB,WAAW,EAAC;YAElB,KAAK,MAAM,CAACG,WAAAA,EAAaE,OAAAA,CAAQ,IAAIN,KAAAA,CAAMC,QAAQ,CAACqB,OAAO,EAAA,CAAI;AAC7DrB,gBAAAA,QAAQ,CAACG,WAAAA,CAAY,GAAG,MAAME,OAAAA,CAAQc,KAAK,CAACC,OAAAA,CAAAA;AAC9C,YAAA;YAEA,OAAOpB,QAAAA;AACT,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var utils$1 = require('@strapi/utils');
4
- var utils = require('./utils.js');
3
+ var utils = require('@strapi/utils');
4
+ var utils$1 = require('./utils.js');
5
5
 
6
- const { isVisibleAttribute } = utils$1.contentTypes;
6
+ const { isVisibleAttribute } = utils.contentTypes;
7
7
  /**
8
8
  * Transforms & adds the given setting action to the section
9
9
  * Note: The action is transformed to a setting specific format
@@ -50,7 +50,7 @@ const { isVisibleAttribute } = utils$1.contentTypes;
50
50
  label: displayName,
51
51
  actionId,
52
52
  subjects,
53
- ...utils.getValidOptions(options)
53
+ ...utils$1.getValidOptions(options)
54
54
  });
55
55
  };
56
56
  /**
@@ -62,10 +62,10 @@ const { isVisibleAttribute } = utils$1.contentTypes;
62
62
  return;
63
63
  }
64
64
  const newSubjects = subjects// Ignore already added subjects
65
- .filter(utils.isNotInSubjects(contentTypesSection.subjects))// Transform UIDs into content-types
66
- .map(utils.resolveContentType)// Only keep specific kind of content-types
67
- .filter(utils.isOfKind(kind))// Transform the content-types into section's subjects
68
- .map(utils.toSubjectTemplate);
65
+ .filter(utils$1.isNotInSubjects(contentTypesSection.subjects))// Transform UIDs into content-types
66
+ .map(utils$1.resolveContentType)// Only keep specific kind of content-types
67
+ .filter(utils$1.isOfKind(kind))// Transform the content-types into section's subjects
68
+ .map(utils$1.toSubjectTemplate);
69
69
  contentTypesSection.subjects.push(...newSubjects);
70
70
  };
71
71
  const buildNode = (model, attributeName, attribute)=>{
@@ -99,8 +99,8 @@ const buildDeepAttributesCollection = (model)=>{
99
99
  const { subjects } = action;
100
100
  section.subjects.filter((subject)=>subjects?.includes(subject.uid)).forEach((subject)=>{
101
101
  const { uid } = subject;
102
- const contentType = utils.resolveContentType(uid);
103
- if (utils.hasProperty('fields', subject)) {
102
+ const contentType = utils$1.resolveContentType(uid);
103
+ if (utils$1.hasProperty('fields', subject)) {
104
104
  return;
105
105
  }
106
106
  const fields = buildDeepAttributesCollection(contentType);
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sources":["../../../../../../../server/src/services/permission/sections-builder/handlers.ts"],"sourcesContent":["import type { Internal } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport {\n toSubjectTemplate,\n getValidOptions,\n hasProperty,\n isNotInSubjects,\n resolveContentType,\n isOfKind,\n} from './utils';\nimport type { Action } from '../../../domain/action';\n\nconst { isVisibleAttribute } = contentTypes;\n\nexport type ContentTypesSection = {\n actions: Action[];\n subjects: any[];\n};\n\nexport type ActionArraySection = Action[];\n\n/**\n * Transforms & adds the given setting action to the section\n * Note: The action is transformed to a setting specific format\n * @param options\n * @param options.action\n * @param section\n */\nconst settings = ({ action, section }: { action: Action; section: ActionArraySection }) => {\n const { category, subCategory, displayName, actionId } = action;\n\n section.push({\n displayName,\n category,\n subCategory,\n // TODO: Investigate at which point the action property is transformed to actionId\n // @ts-expect-error - action should be actionID\n action: actionId,\n });\n};\n\n/**\n * Transforms & adds the given plugin action to the section\n * Note: The action is transformed to a plugin specific format\n * @param {object} options\n * @param {Action} options.action\n * @param {ActionArraySection} section\n */\nconst plugins = ({ action, section }: { action: Action; section: ActionArraySection }) => {\n const { pluginName, subCategory, displayName, actionId } = action;\n\n section.push({\n displayName,\n // @ts-expect-error - plugin should be pluginName, TODO: Investigate at which point the plugin property\n plugin: pluginName,\n subCategory,\n action: actionId,\n });\n};\n\n/**\n * Transforms & adds the given action to the section's actions field\n * Note: The action is transformed to a content-type specific format\n * @param {object} options\n * @param {Action} options.action\n * @param {ContentTypesSection} section\n */\nconst contentTypesBase = ({\n action,\n section,\n}: {\n action: Action;\n section: ContentTypesSection;\n}) => {\n const { displayName, actionId, subjects, options } = action;\n\n section.actions.push({\n // @ts-expect-error - label should be displayName, TODO: Investigate at which point the label property\n label: displayName,\n actionId,\n subjects,\n ...getValidOptions(options),\n });\n};\n\n/**\n * Initialize the subjects array of a section based on the action's subjects\n */\nconst subjectsHandlerFor =\n (kind: string) =>\n ({ action, section: contentTypesSection }: { action: Action; section: ContentTypesSection }) => {\n // TODO: add a type guard for UID.ContentType\n const subjects = action.subjects as Internal.UID.ContentType[];\n\n if (!subjects?.length) {\n return;\n }\n\n const newSubjects = subjects\n // Ignore already added subjects\n .filter(isNotInSubjects(contentTypesSection.subjects))\n // Transform UIDs into content-types\n .map(resolveContentType)\n // Only keep specific kind of content-types\n .filter(isOfKind(kind))\n // Transform the content-types into section's subjects\n .map(toSubjectTemplate);\n\n contentTypesSection.subjects.push(...newSubjects);\n };\n\nconst buildNode = (model: any, attributeName: string, attribute: any) => {\n if (!isVisibleAttribute(model, attributeName)) {\n return null;\n }\n\n const node = { label: attributeName, value: attributeName };\n\n if (attribute.required) {\n Object.assign(node, { required: true });\n }\n\n if (attribute.type === 'component') {\n const component = strapi.components[attribute.component];\n return { ...node, children: buildDeepAttributesCollection(component) };\n }\n\n return node;\n};\n\nconst buildDeepAttributesCollection = (model: any): unknown => {\n return Object.entries(model.attributes)\n .map(([attributeName, attribute]) => buildNode(model, attributeName, attribute))\n .filter((node) => node !== null);\n};\n\n/**\n * Create and populate the fields property for section's subjects based on the action's subjects list\n */\nconst fieldsProperty = ({ action, section }: { action: Action; section: ContentTypesSection }) => {\n const { subjects } = action;\n\n section.subjects\n .filter((subject) => subjects?.includes(subject.uid))\n .forEach((subject) => {\n const { uid } = subject;\n const contentType = resolveContentType(uid);\n\n if (hasProperty('fields', subject)) {\n return;\n }\n\n const fields = buildDeepAttributesCollection(contentType);\n const fieldsProp = { label: 'Fields', value: 'fields', children: fields };\n\n subject.properties.push(fieldsProp);\n });\n};\n\nexport { plugins, settings, subjectsHandlerFor, contentTypesBase, fieldsProperty };\n"],"names":["isVisibleAttribute","contentTypes","settings","action","section","category","subCategory","displayName","actionId","push","plugins","pluginName","plugin","contentTypesBase","subjects","options","actions","label","getValidOptions","subjectsHandlerFor","kind","contentTypesSection","length","newSubjects","filter","isNotInSubjects","map","resolveContentType","isOfKind","toSubjectTemplate","buildNode","model","attributeName","attribute","node","value","required","Object","assign","type","component","strapi","components","children","buildDeepAttributesCollection","entries","attributes","fieldsProperty","subject","includes","uid","forEach","contentType","hasProperty","fields","fieldsProp","properties"],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sources":["../../../../../../../server/src/services/permission/sections-builder/handlers.ts"],"sourcesContent":["import type { Internal } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport {\n toSubjectTemplate,\n getValidOptions,\n hasProperty,\n isNotInSubjects,\n resolveContentType,\n isOfKind,\n} from './utils';\nimport type { Action } from '../../../domain/action';\n\nconst { isVisibleAttribute } = contentTypes;\n\nexport type ContentTypesSection = {\n actions: Action[];\n subjects: any[];\n};\n\nexport type ActionArraySection = Action[];\n\n/**\n * Transforms & adds the given setting action to the section\n * Note: The action is transformed to a setting specific format\n * @param options\n * @param options.action\n * @param section\n */\nconst settings = ({ action, section }: { action: Action; section: ActionArraySection }) => {\n const { category, subCategory, displayName, actionId } = action;\n\n section.push({\n displayName,\n category,\n subCategory,\n // TODO: Investigate at which point the action property is transformed to actionId\n // @ts-expect-error - action should be actionID\n action: actionId,\n });\n};\n\n/**\n * Transforms & adds the given plugin action to the section\n * Note: The action is transformed to a plugin specific format\n * @param {object} options\n * @param {Action} options.action\n * @param {ActionArraySection} section\n */\nconst plugins = ({ action, section }: { action: Action; section: ActionArraySection }) => {\n const { pluginName, subCategory, displayName, actionId } = action;\n\n section.push({\n displayName,\n // @ts-expect-error - plugin should be pluginName, TODO: Investigate at which point the plugin property\n plugin: pluginName,\n subCategory,\n action: actionId,\n });\n};\n\n/**\n * Transforms & adds the given action to the section's actions field\n * Note: The action is transformed to a content-type specific format\n * @param {object} options\n * @param {Action} options.action\n * @param {ContentTypesSection} section\n */\nconst contentTypesBase = ({\n action,\n section,\n}: {\n action: Action;\n section: ContentTypesSection;\n}) => {\n const { displayName, actionId, subjects, options } = action;\n\n section.actions.push({\n // @ts-expect-error - label should be displayName, TODO: Investigate at which point the label property\n label: displayName,\n actionId,\n subjects,\n ...getValidOptions(options),\n });\n};\n\n/**\n * Initialize the subjects array of a section based on the action's subjects\n */\nconst subjectsHandlerFor =\n (kind: string) =>\n ({ action, section: contentTypesSection }: { action: Action; section: ContentTypesSection }) => {\n // TODO: add a type guard for UID.ContentType\n const subjects = action.subjects as Internal.UID.ContentType[];\n\n if (!subjects?.length) {\n return;\n }\n\n const newSubjects = subjects\n // Ignore already added subjects\n .filter(isNotInSubjects(contentTypesSection.subjects))\n // Transform UIDs into content-types\n .map(resolveContentType)\n // Only keep specific kind of content-types\n .filter(isOfKind(kind))\n // Transform the content-types into section's subjects\n .map(toSubjectTemplate);\n\n contentTypesSection.subjects.push(...newSubjects);\n };\n\nconst buildNode = (model: any, attributeName: string, attribute: any) => {\n if (!isVisibleAttribute(model, attributeName)) {\n return null;\n }\n\n const node = { label: attributeName, value: attributeName };\n\n if (attribute.required) {\n Object.assign(node, { required: true });\n }\n\n if (attribute.type === 'component') {\n const component = strapi.components[attribute.component];\n return { ...node, children: buildDeepAttributesCollection(component) };\n }\n\n return node;\n};\n\nconst buildDeepAttributesCollection = (model: any): unknown => {\n return Object.entries(model.attributes)\n .map(([attributeName, attribute]) => buildNode(model, attributeName, attribute))\n .filter((node) => node !== null);\n};\n\n/**\n * Create and populate the fields property for section's subjects based on the action's subjects list\n */\nconst fieldsProperty = ({ action, section }: { action: Action; section: ContentTypesSection }) => {\n const { subjects } = action;\n\n section.subjects\n .filter((subject) => subjects?.includes(subject.uid))\n .forEach((subject) => {\n const { uid } = subject;\n const contentType = resolveContentType(uid);\n\n if (hasProperty('fields', subject)) {\n return;\n }\n\n const fields = buildDeepAttributesCollection(contentType);\n const fieldsProp = { label: 'Fields', value: 'fields', children: fields };\n\n subject.properties.push(fieldsProp);\n });\n};\n\nexport { plugins, settings, subjectsHandlerFor, contentTypesBase, fieldsProperty };\n"],"names":["isVisibleAttribute","contentTypes","settings","action","section","category","subCategory","displayName","actionId","push","plugins","pluginName","plugin","contentTypesBase","subjects","options","actions","label","getValidOptions","subjectsHandlerFor","kind","contentTypesSection","length","newSubjects","filter","isNotInSubjects","map","resolveContentType","isOfKind","toSubjectTemplate","buildNode","model","attributeName","attribute","node","value","required","Object","assign","type","component","strapi","components","children","buildDeepAttributesCollection","entries","attributes","fieldsProperty","subject","includes","uid","forEach","contentType","hasProperty","fields","fieldsProp","properties"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { contentTypes } from '@strapi/utils';
2
- import { getValidOptions, isNotInSubjects, resolveContentType, isOfKind, toSubjectTemplate, hasProperty } from './utils.mjs';
2
+ import { getValidOptions, resolveContentType, hasProperty, isNotInSubjects, isOfKind, toSubjectTemplate } from './utils.mjs';
3
3
 
4
4
  const { isVisibleAttribute } = contentTypes;
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/handlers.ts"],"sourcesContent":["import type { Internal } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport {\n toSubjectTemplate,\n getValidOptions,\n hasProperty,\n isNotInSubjects,\n resolveContentType,\n isOfKind,\n} from './utils';\nimport type { Action } from '../../../domain/action';\n\nconst { isVisibleAttribute } = contentTypes;\n\nexport type ContentTypesSection = {\n actions: Action[];\n subjects: any[];\n};\n\nexport type ActionArraySection = Action[];\n\n/**\n * Transforms & adds the given setting action to the section\n * Note: The action is transformed to a setting specific format\n * @param options\n * @param options.action\n * @param section\n */\nconst settings = ({ action, section }: { action: Action; section: ActionArraySection }) => {\n const { category, subCategory, displayName, actionId } = action;\n\n section.push({\n displayName,\n category,\n subCategory,\n // TODO: Investigate at which point the action property is transformed to actionId\n // @ts-expect-error - action should be actionID\n action: actionId,\n });\n};\n\n/**\n * Transforms & adds the given plugin action to the section\n * Note: The action is transformed to a plugin specific format\n * @param {object} options\n * @param {Action} options.action\n * @param {ActionArraySection} section\n */\nconst plugins = ({ action, section }: { action: Action; section: ActionArraySection }) => {\n const { pluginName, subCategory, displayName, actionId } = action;\n\n section.push({\n displayName,\n // @ts-expect-error - plugin should be pluginName, TODO: Investigate at which point the plugin property\n plugin: pluginName,\n subCategory,\n action: actionId,\n });\n};\n\n/**\n * Transforms & adds the given action to the section's actions field\n * Note: The action is transformed to a content-type specific format\n * @param {object} options\n * @param {Action} options.action\n * @param {ContentTypesSection} section\n */\nconst contentTypesBase = ({\n action,\n section,\n}: {\n action: Action;\n section: ContentTypesSection;\n}) => {\n const { displayName, actionId, subjects, options } = action;\n\n section.actions.push({\n // @ts-expect-error - label should be displayName, TODO: Investigate at which point the label property\n label: displayName,\n actionId,\n subjects,\n ...getValidOptions(options),\n });\n};\n\n/**\n * Initialize the subjects array of a section based on the action's subjects\n */\nconst subjectsHandlerFor =\n (kind: string) =>\n ({ action, section: contentTypesSection }: { action: Action; section: ContentTypesSection }) => {\n // TODO: add a type guard for UID.ContentType\n const subjects = action.subjects as Internal.UID.ContentType[];\n\n if (!subjects?.length) {\n return;\n }\n\n const newSubjects = subjects\n // Ignore already added subjects\n .filter(isNotInSubjects(contentTypesSection.subjects))\n // Transform UIDs into content-types\n .map(resolveContentType)\n // Only keep specific kind of content-types\n .filter(isOfKind(kind))\n // Transform the content-types into section's subjects\n .map(toSubjectTemplate);\n\n contentTypesSection.subjects.push(...newSubjects);\n };\n\nconst buildNode = (model: any, attributeName: string, attribute: any) => {\n if (!isVisibleAttribute(model, attributeName)) {\n return null;\n }\n\n const node = { label: attributeName, value: attributeName };\n\n if (attribute.required) {\n Object.assign(node, { required: true });\n }\n\n if (attribute.type === 'component') {\n const component = strapi.components[attribute.component];\n return { ...node, children: buildDeepAttributesCollection(component) };\n }\n\n return node;\n};\n\nconst buildDeepAttributesCollection = (model: any): unknown => {\n return Object.entries(model.attributes)\n .map(([attributeName, attribute]) => buildNode(model, attributeName, attribute))\n .filter((node) => node !== null);\n};\n\n/**\n * Create and populate the fields property for section's subjects based on the action's subjects list\n */\nconst fieldsProperty = ({ action, section }: { action: Action; section: ContentTypesSection }) => {\n const { subjects } = action;\n\n section.subjects\n .filter((subject) => subjects?.includes(subject.uid))\n .forEach((subject) => {\n const { uid } = subject;\n const contentType = resolveContentType(uid);\n\n if (hasProperty('fields', subject)) {\n return;\n }\n\n const fields = buildDeepAttributesCollection(contentType);\n const fieldsProp = { label: 'Fields', value: 'fields', children: fields };\n\n subject.properties.push(fieldsProp);\n });\n};\n\nexport { plugins, settings, subjectsHandlerFor, contentTypesBase, fieldsProperty };\n"],"names":["isVisibleAttribute","contentTypes","settings","action","section","category","subCategory","displayName","actionId","push","plugins","pluginName","plugin","contentTypesBase","subjects","options","actions","label","getValidOptions","subjectsHandlerFor","kind","contentTypesSection","length","newSubjects","filter","isNotInSubjects","map","resolveContentType","isOfKind","toSubjectTemplate","buildNode","model","attributeName","attribute","node","value","required","Object","assign","type","component","strapi","components","children","buildDeepAttributesCollection","entries","attributes","fieldsProperty","subject","includes","uid","forEach","contentType","hasProperty","fields","fieldsProp","properties"],"mappings":"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"}
1
+ {"version":3,"file":"handlers.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/handlers.ts"],"sourcesContent":["import type { Internal } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport {\n toSubjectTemplate,\n getValidOptions,\n hasProperty,\n isNotInSubjects,\n resolveContentType,\n isOfKind,\n} from './utils';\nimport type { Action } from '../../../domain/action';\n\nconst { isVisibleAttribute } = contentTypes;\n\nexport type ContentTypesSection = {\n actions: Action[];\n subjects: any[];\n};\n\nexport type ActionArraySection = Action[];\n\n/**\n * Transforms & adds the given setting action to the section\n * Note: The action is transformed to a setting specific format\n * @param options\n * @param options.action\n * @param section\n */\nconst settings = ({ action, section }: { action: Action; section: ActionArraySection }) => {\n const { category, subCategory, displayName, actionId } = action;\n\n section.push({\n displayName,\n category,\n subCategory,\n // TODO: Investigate at which point the action property is transformed to actionId\n // @ts-expect-error - action should be actionID\n action: actionId,\n });\n};\n\n/**\n * Transforms & adds the given plugin action to the section\n * Note: The action is transformed to a plugin specific format\n * @param {object} options\n * @param {Action} options.action\n * @param {ActionArraySection} section\n */\nconst plugins = ({ action, section }: { action: Action; section: ActionArraySection }) => {\n const { pluginName, subCategory, displayName, actionId } = action;\n\n section.push({\n displayName,\n // @ts-expect-error - plugin should be pluginName, TODO: Investigate at which point the plugin property\n plugin: pluginName,\n subCategory,\n action: actionId,\n });\n};\n\n/**\n * Transforms & adds the given action to the section's actions field\n * Note: The action is transformed to a content-type specific format\n * @param {object} options\n * @param {Action} options.action\n * @param {ContentTypesSection} section\n */\nconst contentTypesBase = ({\n action,\n section,\n}: {\n action: Action;\n section: ContentTypesSection;\n}) => {\n const { displayName, actionId, subjects, options } = action;\n\n section.actions.push({\n // @ts-expect-error - label should be displayName, TODO: Investigate at which point the label property\n label: displayName,\n actionId,\n subjects,\n ...getValidOptions(options),\n });\n};\n\n/**\n * Initialize the subjects array of a section based on the action's subjects\n */\nconst subjectsHandlerFor =\n (kind: string) =>\n ({ action, section: contentTypesSection }: { action: Action; section: ContentTypesSection }) => {\n // TODO: add a type guard for UID.ContentType\n const subjects = action.subjects as Internal.UID.ContentType[];\n\n if (!subjects?.length) {\n return;\n }\n\n const newSubjects = subjects\n // Ignore already added subjects\n .filter(isNotInSubjects(contentTypesSection.subjects))\n // Transform UIDs into content-types\n .map(resolveContentType)\n // Only keep specific kind of content-types\n .filter(isOfKind(kind))\n // Transform the content-types into section's subjects\n .map(toSubjectTemplate);\n\n contentTypesSection.subjects.push(...newSubjects);\n };\n\nconst buildNode = (model: any, attributeName: string, attribute: any) => {\n if (!isVisibleAttribute(model, attributeName)) {\n return null;\n }\n\n const node = { label: attributeName, value: attributeName };\n\n if (attribute.required) {\n Object.assign(node, { required: true });\n }\n\n if (attribute.type === 'component') {\n const component = strapi.components[attribute.component];\n return { ...node, children: buildDeepAttributesCollection(component) };\n }\n\n return node;\n};\n\nconst buildDeepAttributesCollection = (model: any): unknown => {\n return Object.entries(model.attributes)\n .map(([attributeName, attribute]) => buildNode(model, attributeName, attribute))\n .filter((node) => node !== null);\n};\n\n/**\n * Create and populate the fields property for section's subjects based on the action's subjects list\n */\nconst fieldsProperty = ({ action, section }: { action: Action; section: ContentTypesSection }) => {\n const { subjects } = action;\n\n section.subjects\n .filter((subject) => subjects?.includes(subject.uid))\n .forEach((subject) => {\n const { uid } = subject;\n const contentType = resolveContentType(uid);\n\n if (hasProperty('fields', subject)) {\n return;\n }\n\n const fields = buildDeepAttributesCollection(contentType);\n const fieldsProp = { label: 'Fields', value: 'fields', children: fields };\n\n subject.properties.push(fieldsProp);\n });\n};\n\nexport { plugins, settings, subjectsHandlerFor, contentTypesBase, fieldsProperty };\n"],"names":["isVisibleAttribute","contentTypes","settings","action","section","category","subCategory","displayName","actionId","push","plugins","pluginName","plugin","contentTypesBase","subjects","options","actions","label","getValidOptions","subjectsHandlerFor","kind","contentTypesSection","length","newSubjects","filter","isNotInSubjects","map","resolveContentType","isOfKind","toSubjectTemplate","buildNode","model","attributeName","attribute","node","value","required","Object","assign","type","component","strapi","components","children","buildDeepAttributesCollection","entries","attributes","fieldsProperty","subject","includes","uid","forEach","contentType","hasProperty","fields","fieldsProp","properties"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../../server/src/services/permission/sections-builder/index.ts"],"sourcesContent":["import { propEq } from 'lodash/fp';\nimport createSectionBuilder from './builder';\nimport {\n subjectsHandlerFor,\n contentTypesBase,\n fieldsProperty,\n plugins as pluginsHandler,\n settings as settingsHandler,\n} from './handlers';\n\nconst sectionPropMatcher = propEq('section');\n\nconst createContentTypesInitialState = () => ({\n actions: [],\n subjects: [],\n});\n\nconst createDefaultSectionBuilder = () => {\n const builder = createSectionBuilder();\n\n builder.createSection('plugins', {\n initialStateFactory: () => [],\n handlers: [pluginsHandler],\n matchers: [sectionPropMatcher('plugins')],\n });\n\n builder.createSection('settings', {\n initialStateFactory: () => [],\n handlers: [settingsHandler],\n matchers: [sectionPropMatcher('settings')],\n });\n\n builder.createSection('singleTypes', {\n initialStateFactory: createContentTypesInitialState,\n handlers: [contentTypesBase, subjectsHandlerFor('singleType'), fieldsProperty],\n matchers: [sectionPropMatcher('contentTypes')],\n });\n\n builder.createSection('collectionTypes', {\n initialStateFactory: createContentTypesInitialState,\n handlers: [contentTypesBase, subjectsHandlerFor('collectionType'), fieldsProperty],\n matchers: [sectionPropMatcher('contentTypes')],\n });\n\n return builder;\n};\n\nexport default createDefaultSectionBuilder;\n"],"names":["sectionPropMatcher","propEq","createContentTypesInitialState","actions","subjects","createDefaultSectionBuilder","builder","createSectionBuilder","createSection","initialStateFactory","handlers","pluginsHandler","matchers","settingsHandler","contentTypesBase","subjectsHandlerFor","fieldsProperty"],"mappings":";;;;;;AAUA,MAAMA,qBAAqBC,SAAO,CAAA,SAAA,CAAA;AAElC,MAAMC,8BAAAA,GAAiC,KAAO;AAC5CC,QAAAA,OAAAA,EAAS,EAAE;AACXC,QAAAA,QAAAA,EAAU;KACZ,CAAA;AAEA,MAAMC,2BAA8B,GAAA,IAAA;AAClC,IAAA,MAAMC,SAAUC,GAAAA,OAAAA,EAAAA;IAEhBD,SAAQE,CAAAA,aAAa,CAAC,SAAW,EAAA;AAC/BC,QAAAA,mBAAAA,EAAqB,IAAM,EAAE;QAC7BC,QAAU,EAAA;AAACC,YAAAA;AAAe,SAAA;QAC1BC,QAAU,EAAA;YAACZ,kBAAmB,CAAA,SAAA;AAAW;AAC3C,KAAA,CAAA;IAEAM,SAAQE,CAAAA,aAAa,CAAC,UAAY,EAAA;AAChCC,QAAAA,mBAAAA,EAAqB,IAAM,EAAE;QAC7BC,QAAU,EAAA;AAACG,YAAAA;AAAgB,SAAA;QAC3BD,QAAU,EAAA;YAACZ,kBAAmB,CAAA,UAAA;AAAY;AAC5C,KAAA,CAAA;IAEAM,SAAQE,CAAAA,aAAa,CAAC,aAAe,EAAA;QACnCC,mBAAqBP,EAAAA,8BAAAA;QACrBQ,QAAU,EAAA;AAACI,YAAAA,yBAAAA;YAAkBC,2BAAmB,CAAA,YAAA,CAAA;AAAeC,YAAAA;AAAe,SAAA;QAC9EJ,QAAU,EAAA;YAACZ,kBAAmB,CAAA,cAAA;AAAgB;AAChD,KAAA,CAAA;IAEAM,SAAQE,CAAAA,aAAa,CAAC,iBAAmB,EAAA;QACvCC,mBAAqBP,EAAAA,8BAAAA;QACrBQ,QAAU,EAAA;AAACI,YAAAA,yBAAAA;YAAkBC,2BAAmB,CAAA,gBAAA,CAAA;AAAmBC,YAAAA;AAAe,SAAA;QAClFJ,QAAU,EAAA;YAACZ,kBAAmB,CAAA,cAAA;AAAgB;AAChD,KAAA,CAAA;IAEA,OAAOM,SAAAA;AACT;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../../server/src/services/permission/sections-builder/index.ts"],"sourcesContent":["import { propEq } from 'lodash/fp';\nimport createSectionBuilder from './builder';\nimport {\n subjectsHandlerFor,\n contentTypesBase,\n fieldsProperty,\n plugins as pluginsHandler,\n settings as settingsHandler,\n} from './handlers';\n\nconst sectionPropMatcher = propEq('section');\n\nconst createContentTypesInitialState = () => ({\n actions: [],\n subjects: [],\n});\n\nconst createDefaultSectionBuilder = () => {\n const builder = createSectionBuilder();\n\n builder.createSection('plugins', {\n initialStateFactory: () => [],\n handlers: [pluginsHandler],\n matchers: [sectionPropMatcher('plugins')],\n });\n\n builder.createSection('settings', {\n initialStateFactory: () => [],\n handlers: [settingsHandler],\n matchers: [sectionPropMatcher('settings')],\n });\n\n builder.createSection('singleTypes', {\n initialStateFactory: createContentTypesInitialState,\n handlers: [contentTypesBase, subjectsHandlerFor('singleType'), fieldsProperty],\n matchers: [sectionPropMatcher('contentTypes')],\n });\n\n builder.createSection('collectionTypes', {\n initialStateFactory: createContentTypesInitialState,\n handlers: [contentTypesBase, subjectsHandlerFor('collectionType'), fieldsProperty],\n matchers: [sectionPropMatcher('contentTypes')],\n });\n\n return builder;\n};\n\nexport default createDefaultSectionBuilder;\n"],"names":["sectionPropMatcher","propEq","createContentTypesInitialState","actions","subjects","createDefaultSectionBuilder","builder","createSectionBuilder","createSection","initialStateFactory","handlers","pluginsHandler","matchers","settingsHandler","contentTypesBase","subjectsHandlerFor","fieldsProperty"],"mappings":";;;;;;AAUA,MAAMA,qBAAqBC,SAAAA,CAAO,SAAA,CAAA;AAElC,MAAMC,8BAAAA,GAAiC,KAAO;AAC5CC,QAAAA,OAAAA,EAAS,EAAE;AACXC,QAAAA,QAAAA,EAAU;KACZ,CAAA;AAEA,MAAMC,2BAAAA,GAA8B,IAAA;AAClC,IAAA,MAAMC,SAAAA,GAAUC,OAAAA,EAAAA;IAEhBD,SAAAA,CAAQE,aAAa,CAAC,SAAA,EAAW;AAC/BC,QAAAA,mBAAAA,EAAqB,IAAM,EAAE;QAC7BC,QAAAA,EAAU;AAACC,YAAAA;AAAe,SAAA;QAC1BC,QAAAA,EAAU;YAACZ,kBAAAA,CAAmB,SAAA;AAAW;AAC3C,KAAA,CAAA;IAEAM,SAAAA,CAAQE,aAAa,CAAC,UAAA,EAAY;AAChCC,QAAAA,mBAAAA,EAAqB,IAAM,EAAE;QAC7BC,QAAAA,EAAU;AAACG,YAAAA;AAAgB,SAAA;QAC3BD,QAAAA,EAAU;YAACZ,kBAAAA,CAAmB,UAAA;AAAY;AAC5C,KAAA,CAAA;IAEAM,SAAAA,CAAQE,aAAa,CAAC,aAAA,EAAe;QACnCC,mBAAAA,EAAqBP,8BAAAA;QACrBQ,QAAAA,EAAU;AAACI,YAAAA,yBAAAA;YAAkBC,2BAAAA,CAAmB,YAAA,CAAA;AAAeC,YAAAA;AAAe,SAAA;QAC9EJ,QAAAA,EAAU;YAACZ,kBAAAA,CAAmB,cAAA;AAAgB;AAChD,KAAA,CAAA;IAEAM,SAAAA,CAAQE,aAAa,CAAC,iBAAA,EAAmB;QACvCC,mBAAAA,EAAqBP,8BAAAA;QACrBQ,QAAAA,EAAU;AAACI,YAAAA,yBAAAA;YAAkBC,2BAAAA,CAAmB,gBAAA,CAAA;AAAmBC,YAAAA;AAAe,SAAA;QAClFJ,QAAAA,EAAU;YAACZ,kBAAAA,CAAmB,cAAA;AAAgB;AAChD,KAAA,CAAA;IAEA,OAAOM,SAAAA;AACT;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { propEq } from 'lodash/fp';
2
2
  import createSectionBuilder from './builder.mjs';
3
- import { plugins, settings, contentTypesBase, subjectsHandlerFor, fieldsProperty } from './handlers.mjs';
3
+ import { plugins, settings, contentTypesBase, fieldsProperty, subjectsHandlerFor } from './handlers.mjs';
4
4
 
5
5
  const sectionPropMatcher = propEq('section');
6
6
  const createContentTypesInitialState = ()=>({
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/index.ts"],"sourcesContent":["import { propEq } from 'lodash/fp';\nimport createSectionBuilder from './builder';\nimport {\n subjectsHandlerFor,\n contentTypesBase,\n fieldsProperty,\n plugins as pluginsHandler,\n settings as settingsHandler,\n} from './handlers';\n\nconst sectionPropMatcher = propEq('section');\n\nconst createContentTypesInitialState = () => ({\n actions: [],\n subjects: [],\n});\n\nconst createDefaultSectionBuilder = () => {\n const builder = createSectionBuilder();\n\n builder.createSection('plugins', {\n initialStateFactory: () => [],\n handlers: [pluginsHandler],\n matchers: [sectionPropMatcher('plugins')],\n });\n\n builder.createSection('settings', {\n initialStateFactory: () => [],\n handlers: [settingsHandler],\n matchers: [sectionPropMatcher('settings')],\n });\n\n builder.createSection('singleTypes', {\n initialStateFactory: createContentTypesInitialState,\n handlers: [contentTypesBase, subjectsHandlerFor('singleType'), fieldsProperty],\n matchers: [sectionPropMatcher('contentTypes')],\n });\n\n builder.createSection('collectionTypes', {\n initialStateFactory: createContentTypesInitialState,\n handlers: [contentTypesBase, subjectsHandlerFor('collectionType'), fieldsProperty],\n matchers: [sectionPropMatcher('contentTypes')],\n });\n\n return builder;\n};\n\nexport default createDefaultSectionBuilder;\n"],"names":["sectionPropMatcher","propEq","createContentTypesInitialState","actions","subjects","createDefaultSectionBuilder","builder","createSectionBuilder","createSection","initialStateFactory","handlers","pluginsHandler","matchers","settingsHandler","contentTypesBase","subjectsHandlerFor","fieldsProperty"],"mappings":";;;;AAUA,MAAMA,qBAAqBC,MAAO,CAAA,SAAA,CAAA;AAElC,MAAMC,8BAAAA,GAAiC,KAAO;AAC5CC,QAAAA,OAAAA,EAAS,EAAE;AACXC,QAAAA,QAAAA,EAAU;KACZ,CAAA;AAEA,MAAMC,2BAA8B,GAAA,IAAA;AAClC,IAAA,MAAMC,OAAUC,GAAAA,oBAAAA,EAAAA;IAEhBD,OAAQE,CAAAA,aAAa,CAAC,SAAW,EAAA;AAC/BC,QAAAA,mBAAAA,EAAqB,IAAM,EAAE;QAC7BC,QAAU,EAAA;AAACC,YAAAA;AAAe,SAAA;QAC1BC,QAAU,EAAA;YAACZ,kBAAmB,CAAA,SAAA;AAAW;AAC3C,KAAA,CAAA;IAEAM,OAAQE,CAAAA,aAAa,CAAC,UAAY,EAAA;AAChCC,QAAAA,mBAAAA,EAAqB,IAAM,EAAE;QAC7BC,QAAU,EAAA;AAACG,YAAAA;AAAgB,SAAA;QAC3BD,QAAU,EAAA;YAACZ,kBAAmB,CAAA,UAAA;AAAY;AAC5C,KAAA,CAAA;IAEAM,OAAQE,CAAAA,aAAa,CAAC,aAAe,EAAA;QACnCC,mBAAqBP,EAAAA,8BAAAA;QACrBQ,QAAU,EAAA;AAACI,YAAAA,gBAAAA;YAAkBC,kBAAmB,CAAA,YAAA,CAAA;AAAeC,YAAAA;AAAe,SAAA;QAC9EJ,QAAU,EAAA;YAACZ,kBAAmB,CAAA,cAAA;AAAgB;AAChD,KAAA,CAAA;IAEAM,OAAQE,CAAAA,aAAa,CAAC,iBAAmB,EAAA;QACvCC,mBAAqBP,EAAAA,8BAAAA;QACrBQ,QAAU,EAAA;AAACI,YAAAA,gBAAAA;YAAkBC,kBAAmB,CAAA,gBAAA,CAAA;AAAmBC,YAAAA;AAAe,SAAA;QAClFJ,QAAU,EAAA;YAACZ,kBAAmB,CAAA,cAAA;AAAgB;AAChD,KAAA,CAAA;IAEA,OAAOM,OAAAA;AACT;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/index.ts"],"sourcesContent":["import { propEq } from 'lodash/fp';\nimport createSectionBuilder from './builder';\nimport {\n subjectsHandlerFor,\n contentTypesBase,\n fieldsProperty,\n plugins as pluginsHandler,\n settings as settingsHandler,\n} from './handlers';\n\nconst sectionPropMatcher = propEq('section');\n\nconst createContentTypesInitialState = () => ({\n actions: [],\n subjects: [],\n});\n\nconst createDefaultSectionBuilder = () => {\n const builder = createSectionBuilder();\n\n builder.createSection('plugins', {\n initialStateFactory: () => [],\n handlers: [pluginsHandler],\n matchers: [sectionPropMatcher('plugins')],\n });\n\n builder.createSection('settings', {\n initialStateFactory: () => [],\n handlers: [settingsHandler],\n matchers: [sectionPropMatcher('settings')],\n });\n\n builder.createSection('singleTypes', {\n initialStateFactory: createContentTypesInitialState,\n handlers: [contentTypesBase, subjectsHandlerFor('singleType'), fieldsProperty],\n matchers: [sectionPropMatcher('contentTypes')],\n });\n\n builder.createSection('collectionTypes', {\n initialStateFactory: createContentTypesInitialState,\n handlers: [contentTypesBase, subjectsHandlerFor('collectionType'), fieldsProperty],\n matchers: [sectionPropMatcher('contentTypes')],\n });\n\n return builder;\n};\n\nexport default createDefaultSectionBuilder;\n"],"names":["sectionPropMatcher","propEq","createContentTypesInitialState","actions","subjects","createDefaultSectionBuilder","builder","createSectionBuilder","createSection","initialStateFactory","handlers","pluginsHandler","matchers","settingsHandler","contentTypesBase","subjectsHandlerFor","fieldsProperty"],"mappings":";;;;AAUA,MAAMA,qBAAqBC,MAAAA,CAAO,SAAA,CAAA;AAElC,MAAMC,8BAAAA,GAAiC,KAAO;AAC5CC,QAAAA,OAAAA,EAAS,EAAE;AACXC,QAAAA,QAAAA,EAAU;KACZ,CAAA;AAEA,MAAMC,2BAAAA,GAA8B,IAAA;AAClC,IAAA,MAAMC,OAAAA,GAAUC,oBAAAA,EAAAA;IAEhBD,OAAAA,CAAQE,aAAa,CAAC,SAAA,EAAW;AAC/BC,QAAAA,mBAAAA,EAAqB,IAAM,EAAE;QAC7BC,QAAAA,EAAU;AAACC,YAAAA;AAAe,SAAA;QAC1BC,QAAAA,EAAU;YAACZ,kBAAAA,CAAmB,SAAA;AAAW;AAC3C,KAAA,CAAA;IAEAM,OAAAA,CAAQE,aAAa,CAAC,UAAA,EAAY;AAChCC,QAAAA,mBAAAA,EAAqB,IAAM,EAAE;QAC7BC,QAAAA,EAAU;AAACG,YAAAA;AAAgB,SAAA;QAC3BD,QAAAA,EAAU;YAACZ,kBAAAA,CAAmB,UAAA;AAAY;AAC5C,KAAA,CAAA;IAEAM,OAAAA,CAAQE,aAAa,CAAC,aAAA,EAAe;QACnCC,mBAAAA,EAAqBP,8BAAAA;QACrBQ,QAAAA,EAAU;AAACI,YAAAA,gBAAAA;YAAkBC,kBAAAA,CAAmB,YAAA,CAAA;AAAeC,YAAAA;AAAe,SAAA;QAC9EJ,QAAAA,EAAU;YAACZ,kBAAAA,CAAmB,cAAA;AAAgB;AAChD,KAAA,CAAA;IAEAM,OAAAA,CAAQE,aAAa,CAAC,iBAAA,EAAmB;QACvCC,mBAAAA,EAAqBP,8BAAAA;QACrBQ,QAAAA,EAAU;AAACI,YAAAA,gBAAAA;YAAkBC,kBAAAA,CAAmB,gBAAA,CAAA;AAAmBC,YAAAA;AAAe,SAAA;QAClFJ,QAAAA,EAAU;YAACZ,kBAAAA,CAAmB,cAAA;AAAgB;AAChD,KAAA,CAAA;IAEA,OAAOM,OAAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"section.js","sources":["../../../../../../../server/src/services/permission/sections-builder/section.ts"],"sourcesContent":["import { eq } from 'lodash/fp';\nimport { hooks } from '@strapi/utils';\nimport type { Action } from '../../../domain/action';\n\nexport type SectionOptions = {\n initialStateFactory?: (...args: any) => unknown; // A factory function that returns the default shape of the section\n handlers?: ((...args: any) => unknown)[]; // An initial collection of handlers which will be registered in the handlers hook\n matchers?: ((...args: any) => unknown)[]; // An initial collection of matchers which will be registered in the matchers hook\n};\n\nconst emptyObjectFactory = () => ({});\n\n/**\n * Upon call, creates a new section object\n */\nconst createSection = (\n { initialStateFactory = emptyObjectFactory, handlers = [], matchers = [] } = {} as SectionOptions\n) => {\n const state = {\n hooks: {\n handlers: hooks.createAsyncSeriesHook(),\n matchers: hooks.createAsyncParallelHook(),\n },\n };\n\n // Register initial hooks\n handlers.forEach((handler) => state.hooks.handlers.register(handler));\n matchers.forEach((matcher) => state.hooks.matchers.register(matcher));\n\n return {\n hooks: state.hooks,\n\n /**\n * Verifies if an action can be applied to the section by running the matchers hook.\n * If any of the registered matcher functions returns true, then the condition applies.\n */\n async appliesToAction(action: Action): Promise<boolean> {\n const results = await state.hooks.matchers.call(action);\n\n return results.some(eq(true));\n },\n\n /**\n * Init, build and returns a section object based on the given actions\n * @param actions - A list of actions used to populate the section\n */\n async build(actions = [] as Action[]) {\n const section = initialStateFactory();\n\n for (const action of actions) {\n const applies = await this.appliesToAction(action);\n\n if (applies) {\n await state.hooks.handlers.call({ action, section });\n }\n }\n\n return section;\n },\n };\n};\n\nexport default createSection;\n"],"names":["emptyObjectFactory","createSection","initialStateFactory","handlers","matchers","state","hooks","createAsyncSeriesHook","createAsyncParallelHook","forEach","handler","register","matcher","appliesToAction","action","results","call","some","eq","build","actions","section","applies"],"mappings":";;;;;AAUA,MAAMA,kBAAqB,GAAA,KAAO,EAAC,CAAA;AAEnC;;AAEC,IACKC,MAAAA,aAAAA,GAAgB,CACpB,EAAEC,sBAAsBF,kBAAkB,EAAEG,QAAW,GAAA,EAAE,EAAEC,QAAW,GAAA,EAAE,EAAE,GAAG,EAAoB,GAAA;AAEjG,IAAA,MAAMC,KAAQ,GAAA;QACZC,KAAO,EAAA;AACLH,YAAAA,QAAAA,EAAUG,YAAMC,qBAAqB,EAAA;AACrCH,YAAAA,QAAAA,EAAUE,YAAME,uBAAuB;AACzC;AACF,KAAA;;IAGAL,QAASM,CAAAA,OAAO,CAAC,CAACC,OAAYL,GAAAA,KAAAA,CAAMC,KAAK,CAACH,QAAQ,CAACQ,QAAQ,CAACD,OAAAA,CAAAA,CAAAA;IAC5DN,QAASK,CAAAA,OAAO,CAAC,CAACG,OAAYP,GAAAA,KAAAA,CAAMC,KAAK,CAACF,QAAQ,CAACO,QAAQ,CAACC,OAAAA,CAAAA,CAAAA;IAE5D,OAAO;AACLN,QAAAA,KAAAA,EAAOD,MAAMC,KAAK;AAElB;;;QAIA,MAAMO,iBAAgBC,MAAc,EAAA;YAClC,MAAMC,OAAAA,GAAU,MAAMV,KAAMC,CAAAA,KAAK,CAACF,QAAQ,CAACY,IAAI,CAACF,MAAAA,CAAAA;YAEhD,OAAOC,OAAAA,CAAQE,IAAI,CAACC,KAAG,CAAA,IAAA,CAAA,CAAA;AACzB,SAAA;AAEA;;;AAGC,QACD,MAAMC,KAAAA,CAAAA,CAAMC,OAAU,GAAA,EAAE,EAAY;AAClC,YAAA,MAAMC,OAAUnB,GAAAA,mBAAAA,EAAAA;YAEhB,KAAK,MAAMY,UAAUM,OAAS,CAAA;AAC5B,gBAAA,MAAME,OAAU,GAAA,MAAM,IAAI,CAACT,eAAe,CAACC,MAAAA,CAAAA;AAE3C,gBAAA,IAAIQ,OAAS,EAAA;AACX,oBAAA,MAAMjB,MAAMC,KAAK,CAACH,QAAQ,CAACa,IAAI,CAAC;AAAEF,wBAAAA,MAAAA;AAAQO,wBAAAA;AAAQ,qBAAA,CAAA;AACpD;AACF;YAEA,OAAOA,OAAAA;AACT;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"section.js","sources":["../../../../../../../server/src/services/permission/sections-builder/section.ts"],"sourcesContent":["import { eq } from 'lodash/fp';\nimport { hooks } from '@strapi/utils';\nimport type { Action } from '../../../domain/action';\n\nexport type SectionOptions = {\n initialStateFactory?: (...args: any) => unknown; // A factory function that returns the default shape of the section\n handlers?: ((...args: any) => unknown)[]; // An initial collection of handlers which will be registered in the handlers hook\n matchers?: ((...args: any) => unknown)[]; // An initial collection of matchers which will be registered in the matchers hook\n};\n\nconst emptyObjectFactory = () => ({});\n\n/**\n * Upon call, creates a new section object\n */\nconst createSection = (\n { initialStateFactory = emptyObjectFactory, handlers = [], matchers = [] } = {} as SectionOptions\n) => {\n const state = {\n hooks: {\n handlers: hooks.createAsyncSeriesHook(),\n matchers: hooks.createAsyncParallelHook(),\n },\n };\n\n // Register initial hooks\n handlers.forEach((handler) => state.hooks.handlers.register(handler));\n matchers.forEach((matcher) => state.hooks.matchers.register(matcher));\n\n return {\n hooks: state.hooks,\n\n /**\n * Verifies if an action can be applied to the section by running the matchers hook.\n * If any of the registered matcher functions returns true, then the condition applies.\n */\n async appliesToAction(action: Action): Promise<boolean> {\n const results = await state.hooks.matchers.call(action);\n\n return results.some(eq(true));\n },\n\n /**\n * Init, build and returns a section object based on the given actions\n * @param actions - A list of actions used to populate the section\n */\n async build(actions = [] as Action[]) {\n const section = initialStateFactory();\n\n for (const action of actions) {\n const applies = await this.appliesToAction(action);\n\n if (applies) {\n await state.hooks.handlers.call({ action, section });\n }\n }\n\n return section;\n },\n };\n};\n\nexport default createSection;\n"],"names":["emptyObjectFactory","createSection","initialStateFactory","handlers","matchers","state","hooks","createAsyncSeriesHook","createAsyncParallelHook","forEach","handler","register","matcher","appliesToAction","action","results","call","some","eq","build","actions","section","applies"],"mappings":";;;;;AAUA,MAAMA,kBAAAA,GAAqB,KAAO,EAAC,CAAA;AAEnC;;AAEC,IACD,MAAMC,aAAAA,GAAgB,CACpB,EAAEC,sBAAsBF,kBAAkB,EAAEG,QAAAA,GAAW,EAAE,EAAEC,QAAAA,GAAW,EAAE,EAAE,GAAG,EAAoB,GAAA;AAEjG,IAAA,MAAMC,KAAAA,GAAQ;QACZC,KAAAA,EAAO;AACLH,YAAAA,QAAAA,EAAUG,YAAMC,qBAAqB,EAAA;AACrCH,YAAAA,QAAAA,EAAUE,YAAME,uBAAuB;AACzC;AACF,KAAA;;IAGAL,QAAAA,CAASM,OAAO,CAAC,CAACC,OAAAA,GAAYL,KAAAA,CAAMC,KAAK,CAACH,QAAQ,CAACQ,QAAQ,CAACD,OAAAA,CAAAA,CAAAA;IAC5DN,QAAAA,CAASK,OAAO,CAAC,CAACG,OAAAA,GAAYP,KAAAA,CAAMC,KAAK,CAACF,QAAQ,CAACO,QAAQ,CAACC,OAAAA,CAAAA,CAAAA;IAE5D,OAAO;AACLN,QAAAA,KAAAA,EAAOD,MAAMC,KAAK;AAElB;;;QAIA,MAAMO,iBAAgBC,MAAc,EAAA;YAClC,MAAMC,OAAAA,GAAU,MAAMV,KAAAA,CAAMC,KAAK,CAACF,QAAQ,CAACY,IAAI,CAACF,MAAAA,CAAAA;YAEhD,OAAOC,OAAAA,CAAQE,IAAI,CAACC,KAAAA,CAAG,IAAA,CAAA,CAAA;AACzB,QAAA,CAAA;AAEA;;;AAGC,QACD,MAAMC,KAAAA,CAAAA,CAAMC,OAAAA,GAAU,EAAE,EAAY;AAClC,YAAA,MAAMC,OAAAA,GAAUnB,mBAAAA,EAAAA;YAEhB,KAAK,MAAMY,UAAUM,OAAAA,CAAS;AAC5B,gBAAA,MAAME,OAAAA,GAAU,MAAM,IAAI,CAACT,eAAe,CAACC,MAAAA,CAAAA;AAE3C,gBAAA,IAAIQ,OAAAA,EAAS;AACX,oBAAA,MAAMjB,MAAMC,KAAK,CAACH,QAAQ,CAACa,IAAI,CAAC;AAAEF,wBAAAA,MAAAA;AAAQO,wBAAAA;AAAQ,qBAAA,CAAA;AACpD,gBAAA;AACF,YAAA;YAEA,OAAOA,OAAAA;AACT,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"section.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/section.ts"],"sourcesContent":["import { eq } from 'lodash/fp';\nimport { hooks } from '@strapi/utils';\nimport type { Action } from '../../../domain/action';\n\nexport type SectionOptions = {\n initialStateFactory?: (...args: any) => unknown; // A factory function that returns the default shape of the section\n handlers?: ((...args: any) => unknown)[]; // An initial collection of handlers which will be registered in the handlers hook\n matchers?: ((...args: any) => unknown)[]; // An initial collection of matchers which will be registered in the matchers hook\n};\n\nconst emptyObjectFactory = () => ({});\n\n/**\n * Upon call, creates a new section object\n */\nconst createSection = (\n { initialStateFactory = emptyObjectFactory, handlers = [], matchers = [] } = {} as SectionOptions\n) => {\n const state = {\n hooks: {\n handlers: hooks.createAsyncSeriesHook(),\n matchers: hooks.createAsyncParallelHook(),\n },\n };\n\n // Register initial hooks\n handlers.forEach((handler) => state.hooks.handlers.register(handler));\n matchers.forEach((matcher) => state.hooks.matchers.register(matcher));\n\n return {\n hooks: state.hooks,\n\n /**\n * Verifies if an action can be applied to the section by running the matchers hook.\n * If any of the registered matcher functions returns true, then the condition applies.\n */\n async appliesToAction(action: Action): Promise<boolean> {\n const results = await state.hooks.matchers.call(action);\n\n return results.some(eq(true));\n },\n\n /**\n * Init, build and returns a section object based on the given actions\n * @param actions - A list of actions used to populate the section\n */\n async build(actions = [] as Action[]) {\n const section = initialStateFactory();\n\n for (const action of actions) {\n const applies = await this.appliesToAction(action);\n\n if (applies) {\n await state.hooks.handlers.call({ action, section });\n }\n }\n\n return section;\n },\n };\n};\n\nexport default createSection;\n"],"names":["emptyObjectFactory","createSection","initialStateFactory","handlers","matchers","state","hooks","createAsyncSeriesHook","createAsyncParallelHook","forEach","handler","register","matcher","appliesToAction","action","results","call","some","eq","build","actions","section","applies"],"mappings":";;;AAUA,MAAMA,kBAAqB,GAAA,KAAO,EAAC,CAAA;AAEnC;;AAEC,IACKC,MAAAA,aAAAA,GAAgB,CACpB,EAAEC,sBAAsBF,kBAAkB,EAAEG,QAAW,GAAA,EAAE,EAAEC,QAAW,GAAA,EAAE,EAAE,GAAG,EAAoB,GAAA;AAEjG,IAAA,MAAMC,KAAQ,GAAA;QACZC,KAAO,EAAA;AACLH,YAAAA,QAAAA,EAAUG,MAAMC,qBAAqB,EAAA;AACrCH,YAAAA,QAAAA,EAAUE,MAAME,uBAAuB;AACzC;AACF,KAAA;;IAGAL,QAASM,CAAAA,OAAO,CAAC,CAACC,OAAYL,GAAAA,KAAAA,CAAMC,KAAK,CAACH,QAAQ,CAACQ,QAAQ,CAACD,OAAAA,CAAAA,CAAAA;IAC5DN,QAASK,CAAAA,OAAO,CAAC,CAACG,OAAYP,GAAAA,KAAAA,CAAMC,KAAK,CAACF,QAAQ,CAACO,QAAQ,CAACC,OAAAA,CAAAA,CAAAA;IAE5D,OAAO;AACLN,QAAAA,KAAAA,EAAOD,MAAMC,KAAK;AAElB;;;QAIA,MAAMO,iBAAgBC,MAAc,EAAA;YAClC,MAAMC,OAAAA,GAAU,MAAMV,KAAMC,CAAAA,KAAK,CAACF,QAAQ,CAACY,IAAI,CAACF,MAAAA,CAAAA;YAEhD,OAAOC,OAAAA,CAAQE,IAAI,CAACC,EAAG,CAAA,IAAA,CAAA,CAAA;AACzB,SAAA;AAEA;;;AAGC,QACD,MAAMC,KAAAA,CAAAA,CAAMC,OAAU,GAAA,EAAE,EAAY;AAClC,YAAA,MAAMC,OAAUnB,GAAAA,mBAAAA,EAAAA;YAEhB,KAAK,MAAMY,UAAUM,OAAS,CAAA;AAC5B,gBAAA,MAAME,OAAU,GAAA,MAAM,IAAI,CAACT,eAAe,CAACC,MAAAA,CAAAA;AAE3C,gBAAA,IAAIQ,OAAS,EAAA;AACX,oBAAA,MAAMjB,MAAMC,KAAK,CAACH,QAAQ,CAACa,IAAI,CAAC;AAAEF,wBAAAA,MAAAA;AAAQO,wBAAAA;AAAQ,qBAAA,CAAA;AACpD;AACF;YAEA,OAAOA,OAAAA;AACT;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"section.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/section.ts"],"sourcesContent":["import { eq } from 'lodash/fp';\nimport { hooks } from '@strapi/utils';\nimport type { Action } from '../../../domain/action';\n\nexport type SectionOptions = {\n initialStateFactory?: (...args: any) => unknown; // A factory function that returns the default shape of the section\n handlers?: ((...args: any) => unknown)[]; // An initial collection of handlers which will be registered in the handlers hook\n matchers?: ((...args: any) => unknown)[]; // An initial collection of matchers which will be registered in the matchers hook\n};\n\nconst emptyObjectFactory = () => ({});\n\n/**\n * Upon call, creates a new section object\n */\nconst createSection = (\n { initialStateFactory = emptyObjectFactory, handlers = [], matchers = [] } = {} as SectionOptions\n) => {\n const state = {\n hooks: {\n handlers: hooks.createAsyncSeriesHook(),\n matchers: hooks.createAsyncParallelHook(),\n },\n };\n\n // Register initial hooks\n handlers.forEach((handler) => state.hooks.handlers.register(handler));\n matchers.forEach((matcher) => state.hooks.matchers.register(matcher));\n\n return {\n hooks: state.hooks,\n\n /**\n * Verifies if an action can be applied to the section by running the matchers hook.\n * If any of the registered matcher functions returns true, then the condition applies.\n */\n async appliesToAction(action: Action): Promise<boolean> {\n const results = await state.hooks.matchers.call(action);\n\n return results.some(eq(true));\n },\n\n /**\n * Init, build and returns a section object based on the given actions\n * @param actions - A list of actions used to populate the section\n */\n async build(actions = [] as Action[]) {\n const section = initialStateFactory();\n\n for (const action of actions) {\n const applies = await this.appliesToAction(action);\n\n if (applies) {\n await state.hooks.handlers.call({ action, section });\n }\n }\n\n return section;\n },\n };\n};\n\nexport default createSection;\n"],"names":["emptyObjectFactory","createSection","initialStateFactory","handlers","matchers","state","hooks","createAsyncSeriesHook","createAsyncParallelHook","forEach","handler","register","matcher","appliesToAction","action","results","call","some","eq","build","actions","section","applies"],"mappings":";;;AAUA,MAAMA,kBAAAA,GAAqB,KAAO,EAAC,CAAA;AAEnC;;AAEC,IACD,MAAMC,aAAAA,GAAgB,CACpB,EAAEC,sBAAsBF,kBAAkB,EAAEG,QAAAA,GAAW,EAAE,EAAEC,QAAAA,GAAW,EAAE,EAAE,GAAG,EAAoB,GAAA;AAEjG,IAAA,MAAMC,KAAAA,GAAQ;QACZC,KAAAA,EAAO;AACLH,YAAAA,QAAAA,EAAUG,MAAMC,qBAAqB,EAAA;AACrCH,YAAAA,QAAAA,EAAUE,MAAME,uBAAuB;AACzC;AACF,KAAA;;IAGAL,QAAAA,CAASM,OAAO,CAAC,CAACC,OAAAA,GAAYL,KAAAA,CAAMC,KAAK,CAACH,QAAQ,CAACQ,QAAQ,CAACD,OAAAA,CAAAA,CAAAA;IAC5DN,QAAAA,CAASK,OAAO,CAAC,CAACG,OAAAA,GAAYP,KAAAA,CAAMC,KAAK,CAACF,QAAQ,CAACO,QAAQ,CAACC,OAAAA,CAAAA,CAAAA;IAE5D,OAAO;AACLN,QAAAA,KAAAA,EAAOD,MAAMC,KAAK;AAElB;;;QAIA,MAAMO,iBAAgBC,MAAc,EAAA;YAClC,MAAMC,OAAAA,GAAU,MAAMV,KAAAA,CAAMC,KAAK,CAACF,QAAQ,CAACY,IAAI,CAACF,MAAAA,CAAAA;YAEhD,OAAOC,OAAAA,CAAQE,IAAI,CAACC,EAAAA,CAAG,IAAA,CAAA,CAAA;AACzB,QAAA,CAAA;AAEA;;;AAGC,QACD,MAAMC,KAAAA,CAAAA,CAAMC,OAAAA,GAAU,EAAE,EAAY;AAClC,YAAA,MAAMC,OAAAA,GAAUnB,mBAAAA,EAAAA;YAEhB,KAAK,MAAMY,UAAUM,OAAAA,CAAS;AAC5B,gBAAA,MAAME,OAAAA,GAAU,MAAM,IAAI,CAACT,eAAe,CAACC,MAAAA,CAAAA;AAE3C,gBAAA,IAAIQ,OAAAA,EAAS;AACX,oBAAA,MAAMjB,MAAMC,KAAK,CAACH,QAAQ,CAACa,IAAI,CAAC;AAAEF,wBAAAA,MAAAA;AAAQO,wBAAAA;AAAQ,qBAAA,CAAA;AACpD,gBAAA;AACF,YAAA;YAEA,OAAOA,OAAAA;AACT,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../../server/src/services/permission/sections-builder/utils.ts"],"sourcesContent":["import { curry, matchesProperty, pick } from 'lodash/fp';\nimport type { Internal, Struct } from '@strapi/types';\n\nconst isOfKind = (kind: unknown) => matchesProperty('kind', kind);\n\nconst resolveContentType = (uid: Internal.UID.ContentType): Struct.ContentTypeSchema => {\n return strapi.contentTypes[uid];\n};\n\nconst isNotInSubjects = (subjects: any) => (uid: unknown) =>\n !subjects.find((subject: any) => subject.uid === uid);\n\nconst hasProperty = curry((property: unknown, subject: any) => {\n return !!subject.properties.find((prop: any) => prop.value === property);\n});\n\nconst getValidOptions = pick(['applyToProperties']);\n\nconst toSubjectTemplate = (ct: any) => ({\n uid: ct.uid,\n label: ct.info.singularName,\n properties: [],\n});\n\nexport {\n isOfKind,\n resolveContentType,\n isNotInSubjects,\n hasProperty,\n getValidOptions,\n toSubjectTemplate,\n};\n"],"names":["isOfKind","kind","matchesProperty","resolveContentType","uid","strapi","contentTypes","isNotInSubjects","subjects","find","subject","hasProperty","curry","property","properties","prop","value","getValidOptions","pick","toSubjectTemplate","ct","label","info","singularName"],"mappings":";;;;AAGA,MAAMA,QAAW,GAAA,CAACC,IAAkBC,GAAAA,kBAAAA,CAAgB,MAAQD,EAAAA,IAAAA;AAE5D,MAAME,qBAAqB,CAACC,GAAAA,GAAAA;IAC1B,OAAOC,MAAAA,CAAOC,YAAY,CAACF,GAAI,CAAA;AACjC;AAEA,MAAMG,eAAkB,GAAA,CAACC,QAAkB,GAAA,CAACJ,GAC1C,GAAA,CAACI,QAASC,CAAAA,IAAI,CAAC,CAACC,OAAiBA,GAAAA,OAAAA,CAAQN,GAAG,KAAKA,GAAAA;AAE7CO,MAAAA,WAAAA,GAAcC,QAAM,CAAA,CAACC,QAAmBH,EAAAA,OAAAA,GAAAA;IAC5C,OAAO,CAAC,CAACA,OAAAA,CAAQI,UAAU,CAACL,IAAI,CAAC,CAACM,IAAAA,GAAcA,IAAKC,CAAAA,KAAK,KAAKH,QAAAA,CAAAA;AACjE,CAAA;AAEA,MAAMI,kBAAkBC,OAAK,CAAA;AAAC,IAAA;AAAoB,CAAA;AAE5CC,MAAAA,iBAAAA,GAAoB,CAACC,EAAAA,IAAa;AACtChB,QAAAA,GAAAA,EAAKgB,GAAGhB,GAAG;QACXiB,KAAOD,EAAAA,EAAAA,CAAGE,IAAI,CAACC,YAAY;AAC3BT,QAAAA,UAAAA,EAAY;KACd;;;;;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../../server/src/services/permission/sections-builder/utils.ts"],"sourcesContent":["import { curry, matchesProperty, pick } from 'lodash/fp';\nimport type { Internal, Struct } from '@strapi/types';\n\nconst isOfKind = (kind: unknown) => matchesProperty('kind', kind);\n\nconst resolveContentType = (uid: Internal.UID.ContentType): Struct.ContentTypeSchema => {\n return strapi.contentTypes[uid];\n};\n\nconst isNotInSubjects = (subjects: any) => (uid: unknown) =>\n !subjects.find((subject: any) => subject.uid === uid);\n\nconst hasProperty = curry((property: unknown, subject: any) => {\n return !!subject.properties.find((prop: any) => prop.value === property);\n});\n\nconst getValidOptions = pick(['applyToProperties']);\n\nconst toSubjectTemplate = (ct: any) => ({\n uid: ct.uid,\n label: ct.info.singularName,\n properties: [],\n});\n\nexport {\n isOfKind,\n resolveContentType,\n isNotInSubjects,\n hasProperty,\n getValidOptions,\n toSubjectTemplate,\n};\n"],"names":["isOfKind","kind","matchesProperty","resolveContentType","uid","strapi","contentTypes","isNotInSubjects","subjects","find","subject","hasProperty","curry","property","properties","prop","value","getValidOptions","pick","toSubjectTemplate","ct","label","info","singularName"],"mappings":";;;;AAGA,MAAMA,QAAAA,GAAW,CAACC,IAAAA,GAAkBC,kBAAAA,CAAgB,MAAA,EAAQD,IAAAA;AAE5D,MAAME,qBAAqB,CAACC,GAAAA,GAAAA;IAC1B,OAAOC,MAAAA,CAAOC,YAAY,CAACF,GAAAA,CAAI;AACjC;AAEA,MAAMG,eAAAA,GAAkB,CAACC,QAAAA,GAAkB,CAACJ,GAAAA,GAC1C,CAACI,QAAAA,CAASC,IAAI,CAAC,CAACC,OAAAA,GAAiBA,OAAAA,CAAQN,GAAG,KAAKA,GAAAA;AAEnD,MAAMO,WAAAA,GAAcC,QAAAA,CAAM,CAACC,QAAAA,EAAmBH,OAAAA,GAAAA;IAC5C,OAAO,CAAC,CAACA,OAAAA,CAAQI,UAAU,CAACL,IAAI,CAAC,CAACM,IAAAA,GAAcA,IAAAA,CAAKC,KAAK,KAAKH,QAAAA,CAAAA;AACjE,CAAA;AAEA,MAAMI,kBAAkBC,OAAAA,CAAK;AAAC,IAAA;AAAoB,CAAA;AAElD,MAAMC,iBAAAA,GAAoB,CAACC,EAAAA,IAAa;AACtChB,QAAAA,GAAAA,EAAKgB,GAAGhB,GAAG;QACXiB,KAAAA,EAAOD,EAAAA,CAAGE,IAAI,CAACC,YAAY;AAC3BT,QAAAA,UAAAA,EAAY;KACd;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/utils.ts"],"sourcesContent":["import { curry, matchesProperty, pick } from 'lodash/fp';\nimport type { Internal, Struct } from '@strapi/types';\n\nconst isOfKind = (kind: unknown) => matchesProperty('kind', kind);\n\nconst resolveContentType = (uid: Internal.UID.ContentType): Struct.ContentTypeSchema => {\n return strapi.contentTypes[uid];\n};\n\nconst isNotInSubjects = (subjects: any) => (uid: unknown) =>\n !subjects.find((subject: any) => subject.uid === uid);\n\nconst hasProperty = curry((property: unknown, subject: any) => {\n return !!subject.properties.find((prop: any) => prop.value === property);\n});\n\nconst getValidOptions = pick(['applyToProperties']);\n\nconst toSubjectTemplate = (ct: any) => ({\n uid: ct.uid,\n label: ct.info.singularName,\n properties: [],\n});\n\nexport {\n isOfKind,\n resolveContentType,\n isNotInSubjects,\n hasProperty,\n getValidOptions,\n toSubjectTemplate,\n};\n"],"names":["isOfKind","kind","matchesProperty","resolveContentType","uid","strapi","contentTypes","isNotInSubjects","subjects","find","subject","hasProperty","curry","property","properties","prop","value","getValidOptions","pick","toSubjectTemplate","ct","label","info","singularName"],"mappings":";;AAGA,MAAMA,QAAW,GAAA,CAACC,IAAkBC,GAAAA,eAAAA,CAAgB,MAAQD,EAAAA,IAAAA;AAE5D,MAAME,qBAAqB,CAACC,GAAAA,GAAAA;IAC1B,OAAOC,MAAAA,CAAOC,YAAY,CAACF,GAAI,CAAA;AACjC;AAEA,MAAMG,eAAkB,GAAA,CAACC,QAAkB,GAAA,CAACJ,GAC1C,GAAA,CAACI,QAASC,CAAAA,IAAI,CAAC,CAACC,OAAiBA,GAAAA,OAAAA,CAAQN,GAAG,KAAKA,GAAAA;AAE7CO,MAAAA,WAAAA,GAAcC,KAAM,CAAA,CAACC,QAAmBH,EAAAA,OAAAA,GAAAA;IAC5C,OAAO,CAAC,CAACA,OAAAA,CAAQI,UAAU,CAACL,IAAI,CAAC,CAACM,IAAAA,GAAcA,IAAKC,CAAAA,KAAK,KAAKH,QAAAA,CAAAA;AACjE,CAAA;AAEA,MAAMI,kBAAkBC,IAAK,CAAA;AAAC,IAAA;AAAoB,CAAA;AAE5CC,MAAAA,iBAAAA,GAAoB,CAACC,EAAAA,IAAa;AACtChB,QAAAA,GAAAA,EAAKgB,GAAGhB,GAAG;QACXiB,KAAOD,EAAAA,EAAAA,CAAGE,IAAI,CAACC,YAAY;AAC3BT,QAAAA,UAAAA,EAAY;KACd;;;;"}
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../../../../server/src/services/permission/sections-builder/utils.ts"],"sourcesContent":["import { curry, matchesProperty, pick } from 'lodash/fp';\nimport type { Internal, Struct } from '@strapi/types';\n\nconst isOfKind = (kind: unknown) => matchesProperty('kind', kind);\n\nconst resolveContentType = (uid: Internal.UID.ContentType): Struct.ContentTypeSchema => {\n return strapi.contentTypes[uid];\n};\n\nconst isNotInSubjects = (subjects: any) => (uid: unknown) =>\n !subjects.find((subject: any) => subject.uid === uid);\n\nconst hasProperty = curry((property: unknown, subject: any) => {\n return !!subject.properties.find((prop: any) => prop.value === property);\n});\n\nconst getValidOptions = pick(['applyToProperties']);\n\nconst toSubjectTemplate = (ct: any) => ({\n uid: ct.uid,\n label: ct.info.singularName,\n properties: [],\n});\n\nexport {\n isOfKind,\n resolveContentType,\n isNotInSubjects,\n hasProperty,\n getValidOptions,\n toSubjectTemplate,\n};\n"],"names":["isOfKind","kind","matchesProperty","resolveContentType","uid","strapi","contentTypes","isNotInSubjects","subjects","find","subject","hasProperty","curry","property","properties","prop","value","getValidOptions","pick","toSubjectTemplate","ct","label","info","singularName"],"mappings":";;AAGA,MAAMA,QAAAA,GAAW,CAACC,IAAAA,GAAkBC,eAAAA,CAAgB,MAAA,EAAQD,IAAAA;AAE5D,MAAME,qBAAqB,CAACC,GAAAA,GAAAA;IAC1B,OAAOC,MAAAA,CAAOC,YAAY,CAACF,GAAAA,CAAI;AACjC;AAEA,MAAMG,eAAAA,GAAkB,CAACC,QAAAA,GAAkB,CAACJ,GAAAA,GAC1C,CAACI,QAAAA,CAASC,IAAI,CAAC,CAACC,OAAAA,GAAiBA,OAAAA,CAAQN,GAAG,KAAKA,GAAAA;AAEnD,MAAMO,WAAAA,GAAcC,KAAAA,CAAM,CAACC,QAAAA,EAAmBH,OAAAA,GAAAA;IAC5C,OAAO,CAAC,CAACA,OAAAA,CAAQI,UAAU,CAACL,IAAI,CAAC,CAACM,IAAAA,GAAcA,IAAAA,CAAKC,KAAK,KAAKH,QAAAA,CAAAA;AACjE,CAAA;AAEA,MAAMI,kBAAkBC,IAAAA,CAAK;AAAC,IAAA;AAAoB,CAAA;AAElD,MAAMC,iBAAAA,GAAoB,CAACC,EAAAA,IAAa;AACtChB,QAAAA,GAAAA,EAAKgB,GAAGhB,GAAG;QACXiB,KAAAA,EAAOD,EAAAA,CAAGE,IAAI,CAACC,YAAY;AAC3BT,QAAAA,UAAAA,EAAY;KACd;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission.js","sources":["../../../../../server/src/services/permission.ts"],"sourcesContent":["import domain from '../domain/permission';\nimport createActionProvider from '../domain/action/provider';\nimport createConditionProvider from '../domain/condition/provider';\nimport createPermissionsManager from './permission/permissions-manager';\nimport createPermissionEngine from './permission/engine';\nimport createSectionsBuilder from './permission/sections-builder';\nimport {\n cleanPermissionsInDatabase,\n createMany,\n deleteByIds,\n deleteByRolesIds,\n findMany,\n findUserPermissions,\n} from './permission/queries';\n\nconst actionProvider = createActionProvider();\nconst conditionProvider = createConditionProvider();\nconst sectionsBuilder = createSectionsBuilder();\n\nconst sanitizePermission = domain.sanitizePermissionFields;\n\nconst engine = createPermissionEngine({\n providers: { action: actionProvider, condition: conditionProvider },\n});\n\nexport {\n // Queries / Actions\n cleanPermissionsInDatabase,\n createMany,\n deleteByIds,\n deleteByRolesIds,\n findMany,\n findUserPermissions,\n // Utils\n createPermissionsManager,\n sectionsBuilder,\n sanitizePermission,\n // Engine\n engine,\n // Providers\n actionProvider,\n conditionProvider,\n};\n"],"names":["actionProvider","createActionProvider","conditionProvider","createConditionProvider","sectionsBuilder","createSectionsBuilder","sanitizePermission","domain","sanitizePermissionFields","engine","createPermissionEngine","providers","action","condition"],"mappings":";;;;;;;;;;AAeA,MAAMA,cAAiBC,GAAAA,QAAAA;AACvB,MAAMC,iBAAoBC,GAAAA,UAAAA;AAC1B,MAAMC,eAAkBC,GAAAA,OAAAA;AAElBC,MAAAA,kBAAAA,GAAqBC,gBAAOC;AAElC,MAAMC,SAASC,QAAuB,CAAA;IACpCC,SAAW,EAAA;QAAEC,MAAQZ,EAAAA,cAAAA;QAAgBa,SAAWX,EAAAA;AAAkB;AACpE,CAAA;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"permission.js","sources":["../../../../../server/src/services/permission.ts"],"sourcesContent":["import domain from '../domain/permission';\nimport createActionProvider from '../domain/action/provider';\nimport createConditionProvider from '../domain/condition/provider';\nimport createPermissionsManager from './permission/permissions-manager';\nimport createPermissionEngine from './permission/engine';\nimport createSectionsBuilder from './permission/sections-builder';\nimport {\n cleanPermissionsInDatabase,\n createMany,\n deleteByIds,\n deleteByRolesIds,\n findMany,\n findUserPermissions,\n} from './permission/queries';\n\nconst actionProvider = createActionProvider();\nconst conditionProvider = createConditionProvider();\nconst sectionsBuilder = createSectionsBuilder();\n\nconst sanitizePermission = domain.sanitizePermissionFields;\n\nconst engine = createPermissionEngine({\n providers: { action: actionProvider, condition: conditionProvider },\n});\n\nexport {\n // Queries / Actions\n cleanPermissionsInDatabase,\n createMany,\n deleteByIds,\n deleteByRolesIds,\n findMany,\n findUserPermissions,\n // Utils\n createPermissionsManager,\n sectionsBuilder,\n sanitizePermission,\n // Engine\n engine,\n // Providers\n actionProvider,\n conditionProvider,\n};\n"],"names":["actionProvider","createActionProvider","conditionProvider","createConditionProvider","sectionsBuilder","createSectionsBuilder","sanitizePermission","domain","sanitizePermissionFields","engine","createPermissionEngine","providers","action","condition"],"mappings":";;;;;;;;;;AAeA,MAAMA,cAAAA,GAAiBC,QAAAA;AACvB,MAAMC,iBAAAA,GAAoBC,UAAAA;AAC1B,MAAMC,eAAAA,GAAkBC,OAAAA;AAExB,MAAMC,kBAAAA,GAAqBC,gBAAOC;AAElC,MAAMC,SAASC,QAAAA,CAAuB;IACpCC,SAAAA,EAAW;QAAEC,MAAAA,EAAQZ,cAAAA;QAAgBa,SAAAA,EAAWX;AAAkB;AACpE,CAAA;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission.mjs","sources":["../../../../../server/src/services/permission.ts"],"sourcesContent":["import domain from '../domain/permission';\nimport createActionProvider from '../domain/action/provider';\nimport createConditionProvider from '../domain/condition/provider';\nimport createPermissionsManager from './permission/permissions-manager';\nimport createPermissionEngine from './permission/engine';\nimport createSectionsBuilder from './permission/sections-builder';\nimport {\n cleanPermissionsInDatabase,\n createMany,\n deleteByIds,\n deleteByRolesIds,\n findMany,\n findUserPermissions,\n} from './permission/queries';\n\nconst actionProvider = createActionProvider();\nconst conditionProvider = createConditionProvider();\nconst sectionsBuilder = createSectionsBuilder();\n\nconst sanitizePermission = domain.sanitizePermissionFields;\n\nconst engine = createPermissionEngine({\n providers: { action: actionProvider, condition: conditionProvider },\n});\n\nexport {\n // Queries / Actions\n cleanPermissionsInDatabase,\n createMany,\n deleteByIds,\n deleteByRolesIds,\n findMany,\n findUserPermissions,\n // Utils\n createPermissionsManager,\n sectionsBuilder,\n sanitizePermission,\n // Engine\n engine,\n // Providers\n actionProvider,\n conditionProvider,\n};\n"],"names":["actionProvider","createActionProvider","conditionProvider","createConditionProvider","sectionsBuilder","createSectionsBuilder","sanitizePermission","domain","sanitizePermissionFields","engine","createPermissionEngine","providers","action","condition"],"mappings":";;;;;;;;AAeA,MAAMA,cAAiBC,GAAAA,oBAAAA;AACvB,MAAMC,iBAAoBC,GAAAA,uBAAAA;AAC1B,MAAMC,eAAkBC,GAAAA,2BAAAA;AAElBC,MAAAA,kBAAAA,GAAqBC,iBAAOC;AAElC,MAAMC,SAASC,sBAAuB,CAAA;IACpCC,SAAW,EAAA;QAAEC,MAAQZ,EAAAA,cAAAA;QAAgBa,SAAWX,EAAAA;AAAkB;AACpE,CAAA;;;;"}
1
+ {"version":3,"file":"permission.mjs","sources":["../../../../../server/src/services/permission.ts"],"sourcesContent":["import domain from '../domain/permission';\nimport createActionProvider from '../domain/action/provider';\nimport createConditionProvider from '../domain/condition/provider';\nimport createPermissionsManager from './permission/permissions-manager';\nimport createPermissionEngine from './permission/engine';\nimport createSectionsBuilder from './permission/sections-builder';\nimport {\n cleanPermissionsInDatabase,\n createMany,\n deleteByIds,\n deleteByRolesIds,\n findMany,\n findUserPermissions,\n} from './permission/queries';\n\nconst actionProvider = createActionProvider();\nconst conditionProvider = createConditionProvider();\nconst sectionsBuilder = createSectionsBuilder();\n\nconst sanitizePermission = domain.sanitizePermissionFields;\n\nconst engine = createPermissionEngine({\n providers: { action: actionProvider, condition: conditionProvider },\n});\n\nexport {\n // Queries / Actions\n cleanPermissionsInDatabase,\n createMany,\n deleteByIds,\n deleteByRolesIds,\n findMany,\n findUserPermissions,\n // Utils\n createPermissionsManager,\n sectionsBuilder,\n sanitizePermission,\n // Engine\n engine,\n // Providers\n actionProvider,\n conditionProvider,\n};\n"],"names":["actionProvider","createActionProvider","conditionProvider","createConditionProvider","sectionsBuilder","createSectionsBuilder","sanitizePermission","domain","sanitizePermissionFields","engine","createPermissionEngine","providers","action","condition"],"mappings":";;;;;;;;AAeA,MAAMA,cAAAA,GAAiBC,oBAAAA;AACvB,MAAMC,iBAAAA,GAAoBC,uBAAAA;AAC1B,MAAMC,eAAAA,GAAkBC,2BAAAA;AAExB,MAAMC,kBAAAA,GAAqBC,iBAAOC;AAElC,MAAMC,SAASC,sBAAAA,CAAuB;IACpCC,SAAAA,EAAW;QAAEC,MAAAA,EAAQZ,cAAAA;QAAgBa,SAAAA,EAAWX;AAAkB;AACpE,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-settings.js","sources":["../../../../../server/src/services/project-settings.ts"],"sourcesContent":["import fs from 'fs';\nimport { pick } from 'lodash';\nimport { GetProjectSettings, UpdateProjectSettings } from '../../../shared/contracts/admin';\n\nconst PROJECT_SETTINGS_FILE_INPUTS = ['menuLogo', 'authLogo'] as const;\n\ninterface UploadFile {\n name: string;\n path: string;\n type: string;\n size: number;\n stream: fs.ReadStream;\n tmpPath: string;\n hash: string;\n url: string;\n width: number;\n height: number;\n ext: string;\n provider: unknown;\n}\n\ntype FormattedFiles = Partial<\n Record<keyof UpdateProjectSettings.Request['files'], Partial<UploadFile>>\n>;\n\nconst parseFilesData = async (files: UpdateProjectSettings.Request['files']) => {\n const formatedFilesData: FormattedFiles = {};\n\n await Promise.all(\n PROJECT_SETTINGS_FILE_INPUTS.map(async (inputName) => {\n const file = files[inputName];\n\n // Skip empty file inputs\n if (!file) {\n return;\n }\n\n const getStream = () => fs.createReadStream(file.filepath);\n\n // Add formated data for the upload provider\n formatedFilesData[inputName] = await strapi\n .plugin('upload')\n .service('upload')\n .formatFileInfo({\n filename: file.originalFilename,\n type: file.mimetype,\n size: file.size,\n });\n\n // Add image dimensions\n Object.assign(\n formatedFilesData[inputName]!,\n await strapi.plugin('upload').service('image-manipulation').getDimensions({ getStream })\n );\n\n // Add file path, and stream\n Object.assign(formatedFilesData[inputName]!, {\n stream: getStream(),\n tmpPath: file.filepath,\n // TODO\n // @ts-expect-error define the correct return type\n provider: strapi.config.get('plugin::upload').provider,\n });\n })\n );\n\n return formatedFilesData;\n};\n\nconst getProjectSettings = async (): Promise<GetProjectSettings.Response> => {\n const store = strapi.store({ type: 'core', name: 'admin' });\n\n // Returns an object with file inputs names as key and null as value\n const defaultProjectSettings = PROJECT_SETTINGS_FILE_INPUTS.reduce((prev: any, cur: any) => {\n prev[cur] = null;\n return prev;\n }, {});\n\n const projectSettings = {\n ...defaultProjectSettings,\n // @ts-expect-error spread can be applied to return value\n ...(await store.get({ key: 'project-settings' })),\n };\n\n // Filter file input fields\n PROJECT_SETTINGS_FILE_INPUTS.forEach((inputName) => {\n if (!projectSettings[inputName]) {\n return;\n }\n\n projectSettings[inputName] = pick(projectSettings[inputName], [\n 'name',\n 'url',\n 'width',\n 'height',\n 'ext',\n 'size',\n ]);\n });\n\n return projectSettings;\n};\n\nconst uploadFiles = async (files: LogoFiles = {}) => {\n // Call the provider upload function for each file\n return Promise.all(\n Object.values(files)\n .filter((file) => file?.stream instanceof fs.ReadStream)\n .map((file) => strapi.plugin('upload').provider.uploadStream(file))\n );\n};\n\nconst deleteOldFiles = async ({ previousSettings, newSettings }: any) => {\n return Promise.all(\n PROJECT_SETTINGS_FILE_INPUTS.map(async (inputName) => {\n // Skip if the store doesn't contain project settings\n if (!previousSettings) {\n return;\n }\n\n // Skip if there was no previous file\n if (!previousSettings[inputName]) {\n return;\n }\n\n // Skip if the file was not changed\n if (\n newSettings[inputName] &&\n previousSettings[inputName].hash === newSettings[inputName].hash\n ) {\n return;\n }\n\n // Skip if the file was not uploaded with the current provider\n // TODO\n // @ts-expect-error define the correct return type\n if (strapi.config.get('plugin::upload').provider !== previousSettings[inputName].provider) {\n return;\n }\n\n // There was a previous file and an new file was uploaded\n // Remove the previous file\n strapi.plugin('upload').provider.delete(previousSettings[inputName]);\n })\n );\n};\n\ntype LogoFiles = { [K in keyof FormattedFiles]: FormattedFiles[K] | null };\n\nconst updateProjectSettings = async (\n newSettings: Omit<UpdateProjectSettings.Request['body'], 'menuLogo' | 'authLogo'> & LogoFiles\n) => {\n const store = strapi.store({ type: 'core', name: 'admin' });\n const previousSettings = (await store.get({ key: 'project-settings' })) as any;\n const files = pick(newSettings, PROJECT_SETTINGS_FILE_INPUTS);\n\n await uploadFiles(files);\n\n PROJECT_SETTINGS_FILE_INPUTS.forEach((inputName) => {\n // If the user input exists but is not a formdata \"file\" remove it\n if (newSettings[inputName] !== undefined && !(typeof newSettings[inputName] === 'object')) {\n newSettings[inputName] = null;\n return;\n }\n\n // If the user input is undefined reuse previous setting (do not update field)\n if (!newSettings[inputName] && previousSettings) {\n newSettings[inputName] = previousSettings[inputName];\n return;\n }\n\n // Update the file\n newSettings[inputName] = pick(newSettings[inputName], [\n 'name',\n 'hash',\n 'url',\n 'width',\n 'height',\n 'ext',\n 'size',\n 'provider',\n ]);\n });\n\n // No await to proceed asynchronously\n deleteOldFiles({ previousSettings, newSettings });\n\n await store.set({\n key: 'project-settings',\n value: { ...previousSettings, ...newSettings },\n });\n\n return getProjectSettings();\n};\n\nexport { deleteOldFiles, parseFilesData, getProjectSettings, updateProjectSettings };\n"],"names":["PROJECT_SETTINGS_FILE_INPUTS","parseFilesData","files","formatedFilesData","Promise","all","map","inputName","file","getStream","fs","createReadStream","filepath","strapi","plugin","service","formatFileInfo","filename","originalFilename","type","mimetype","size","Object","assign","getDimensions","stream","tmpPath","provider","config","get","getProjectSettings","store","name","defaultProjectSettings","reduce","prev","cur","projectSettings","key","forEach","pick","uploadFiles","values","filter","ReadStream","uploadStream","deleteOldFiles","previousSettings","newSettings","hash","delete","updateProjectSettings","undefined","set","value"],"mappings":"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"}
1
+ {"version":3,"file":"project-settings.js","sources":["../../../../../server/src/services/project-settings.ts"],"sourcesContent":["import fs from 'fs';\nimport { pick } from 'lodash';\nimport { GetProjectSettings, UpdateProjectSettings } from '../../../shared/contracts/admin';\n\nconst PROJECT_SETTINGS_FILE_INPUTS = ['menuLogo', 'authLogo'] as const;\n\ninterface UploadFile {\n name: string;\n path: string;\n type: string;\n size: number;\n stream: fs.ReadStream;\n tmpPath: string;\n hash: string;\n url: string;\n width: number;\n height: number;\n ext: string;\n provider: unknown;\n}\n\ntype FormattedFiles = Partial<\n Record<keyof UpdateProjectSettings.Request['files'], Partial<UploadFile>>\n>;\n\nconst parseFilesData = async (files: UpdateProjectSettings.Request['files']) => {\n const formatedFilesData: FormattedFiles = {};\n\n await Promise.all(\n PROJECT_SETTINGS_FILE_INPUTS.map(async (inputName) => {\n const file = files[inputName];\n\n // Skip empty file inputs\n if (!file) {\n return;\n }\n\n const getStream = () => fs.createReadStream(file.filepath);\n\n // Add formated data for the upload provider\n formatedFilesData[inputName] = await strapi\n .plugin('upload')\n .service('upload')\n .formatFileInfo({\n filename: file.originalFilename,\n type: file.mimetype,\n size: file.size,\n });\n\n // Add image dimensions\n Object.assign(\n formatedFilesData[inputName]!,\n await strapi.plugin('upload').service('image-manipulation').getDimensions({ getStream })\n );\n\n // Add file path, and stream\n Object.assign(formatedFilesData[inputName]!, {\n stream: getStream(),\n tmpPath: file.filepath,\n // TODO\n // @ts-expect-error define the correct return type\n provider: strapi.config.get('plugin::upload').provider,\n });\n })\n );\n\n return formatedFilesData;\n};\n\nconst getProjectSettings = async (): Promise<GetProjectSettings.Response> => {\n const store = strapi.store({ type: 'core', name: 'admin' });\n\n // Returns an object with file inputs names as key and null as value\n const defaultProjectSettings = PROJECT_SETTINGS_FILE_INPUTS.reduce((prev: any, cur: any) => {\n prev[cur] = null;\n return prev;\n }, {});\n\n const projectSettings = {\n ...defaultProjectSettings,\n // @ts-expect-error spread can be applied to return value\n ...(await store.get({ key: 'project-settings' })),\n };\n\n // Filter file input fields\n PROJECT_SETTINGS_FILE_INPUTS.forEach((inputName) => {\n if (!projectSettings[inputName]) {\n return;\n }\n\n projectSettings[inputName] = pick(projectSettings[inputName], [\n 'name',\n 'url',\n 'width',\n 'height',\n 'ext',\n 'size',\n ]);\n });\n\n return projectSettings;\n};\n\nconst uploadFiles = async (files: LogoFiles = {}) => {\n // Call the provider upload function for each file\n return Promise.all(\n Object.values(files)\n .filter((file) => file?.stream instanceof fs.ReadStream)\n .map((file) => strapi.plugin('upload').provider.uploadStream(file))\n );\n};\n\nconst deleteOldFiles = async ({ previousSettings, newSettings }: any) => {\n return Promise.all(\n PROJECT_SETTINGS_FILE_INPUTS.map(async (inputName) => {\n // Skip if the store doesn't contain project settings\n if (!previousSettings) {\n return;\n }\n\n // Skip if there was no previous file\n if (!previousSettings[inputName]) {\n return;\n }\n\n // Skip if the file was not changed\n if (\n newSettings[inputName] &&\n previousSettings[inputName].hash === newSettings[inputName].hash\n ) {\n return;\n }\n\n // Skip if the file was not uploaded with the current provider\n // TODO\n // @ts-expect-error define the correct return type\n if (strapi.config.get('plugin::upload').provider !== previousSettings[inputName].provider) {\n return;\n }\n\n // There was a previous file and an new file was uploaded\n // Remove the previous file\n strapi.plugin('upload').provider.delete(previousSettings[inputName]);\n })\n );\n};\n\ntype LogoFiles = { [K in keyof FormattedFiles]: FormattedFiles[K] | null };\n\nconst updateProjectSettings = async (\n newSettings: Omit<UpdateProjectSettings.Request['body'], 'menuLogo' | 'authLogo'> & LogoFiles\n) => {\n const store = strapi.store({ type: 'core', name: 'admin' });\n const previousSettings = (await store.get({ key: 'project-settings' })) as any;\n const files = pick(newSettings, PROJECT_SETTINGS_FILE_INPUTS);\n\n await uploadFiles(files);\n\n PROJECT_SETTINGS_FILE_INPUTS.forEach((inputName) => {\n // If the user input exists but is not a formdata \"file\" remove it\n if (newSettings[inputName] !== undefined && !(typeof newSettings[inputName] === 'object')) {\n newSettings[inputName] = null;\n return;\n }\n\n // If the user input is undefined reuse previous setting (do not update field)\n if (!newSettings[inputName] && previousSettings) {\n newSettings[inputName] = previousSettings[inputName];\n return;\n }\n\n // Update the file\n newSettings[inputName] = pick(newSettings[inputName], [\n 'name',\n 'hash',\n 'url',\n 'width',\n 'height',\n 'ext',\n 'size',\n 'provider',\n ]);\n });\n\n // No await to proceed asynchronously\n deleteOldFiles({ previousSettings, newSettings });\n\n await store.set({\n key: 'project-settings',\n value: { ...previousSettings, ...newSettings },\n });\n\n return getProjectSettings();\n};\n\nexport { deleteOldFiles, parseFilesData, getProjectSettings, updateProjectSettings };\n"],"names":["PROJECT_SETTINGS_FILE_INPUTS","parseFilesData","files","formatedFilesData","Promise","all","map","inputName","file","getStream","fs","createReadStream","filepath","strapi","plugin","service","formatFileInfo","filename","originalFilename","type","mimetype","size","Object","assign","getDimensions","stream","tmpPath","provider","config","get","getProjectSettings","store","name","defaultProjectSettings","reduce","prev","cur","projectSettings","key","forEach","pick","uploadFiles","values","filter","ReadStream","uploadStream","deleteOldFiles","previousSettings","newSettings","hash","delete","updateProjectSettings","undefined","set","value"],"mappings":"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"}