@strapi/admin 5.48.1 → 5.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +33 -20
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +6 -1
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/Context.js +4 -3
  8. package/dist/admin/admin/src/components/Context.js.map +1 -1
  9. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
  10. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  11. package/dist/admin/admin/src/components/ErrorElement.js +97 -2
  12. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  13. package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
  14. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/Filters.js +3 -2
  16. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  17. package/dist/admin/admin/src/components/Form.js +9 -5
  18. package/dist/admin/admin/src/components/Form.js.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  20. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  22. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  24. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  26. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  27. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  28. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  30. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  31. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  32. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  33. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  34. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  35. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  36. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  38. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  40. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  41. package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
  42. package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
  43. package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
  44. package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
  45. package/dist/admin/admin/src/components/LeftMenu.js +3 -2
  46. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  47. package/dist/admin/admin/src/components/MainNav/NavUser.js +10 -0
  48. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  49. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
  50. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  52. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  53. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  54. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  55. package/dist/admin/admin/src/components/Pagination.js +3 -2
  56. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  57. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  58. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  59. package/dist/admin/admin/src/components/RelativeTime.js +6 -4
  60. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  61. package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
  62. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  63. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  64. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  65. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  66. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  67. package/dist/admin/admin/src/components/Table.js +3 -2
  68. package/dist/admin/admin/src/components/Table.js.map +1 -1
  69. package/dist/admin/admin/src/components/Theme.js +3 -2
  70. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  71. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  72. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  73. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  74. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  75. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  76. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  77. package/dist/admin/admin/src/core/apis/router.js +39 -33
  78. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  79. package/dist/admin/admin/src/core/apis/router.mjs +19 -17
  80. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  81. package/dist/admin/admin/src/features/Auth.js +78 -6
  82. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  83. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  84. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  85. package/dist/admin/admin/src/features/BackButton.js +3 -2
  86. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  87. package/dist/admin/admin/src/features/Configuration.js +3 -2
  88. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  89. package/dist/admin/admin/src/features/Notifications.js +3 -2
  90. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  91. package/dist/admin/admin/src/features/Tracking.js +7 -3
  92. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  93. package/dist/admin/admin/src/features/Widgets.js +3 -2
  94. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  95. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  96. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  97. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  98. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  99. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  100. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  101. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  102. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  103. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  104. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  105. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  106. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  107. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  108. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  109. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  110. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  111. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  112. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  113. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  114. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  115. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  116. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  117. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  118. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  119. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  120. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  121. package/dist/admin/admin/src/hooks/useMenu.js +7 -3
  122. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  123. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  124. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  125. package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
  126. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  127. package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
  128. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  129. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  130. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  131. package/dist/admin/admin/src/hooks/useSettingsMenu.js +7 -3
  132. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  133. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  134. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  135. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -7
  136. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  137. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -2
  138. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
  140. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  141. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
  142. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  144. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  145. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  146. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  147. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  148. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  150. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  151. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  152. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  153. package/dist/admin/admin/src/pages/Home/HomePage.js +3 -2
  154. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  155. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  156. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  157. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +7 -3
  158. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  160. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  161. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  162. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  163. package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
  164. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
  165. package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
  166. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
  167. package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
  168. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
  170. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  172. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  174. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  176. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  178. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  179. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  180. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  181. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  182. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  184. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  186. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  188. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  192. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  194. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +4 -2
  196. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -0
  198. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  200. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +11 -3
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +11 -4
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  211. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  212. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  213. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -6
  214. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  215. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
  216. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  217. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  218. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  219. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  220. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  221. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  222. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  223. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  224. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  225. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +71 -27
  226. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  227. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
  228. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  229. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  230. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  231. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  232. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  233. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  234. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  235. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +26 -4
  236. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  237. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
  238. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  239. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  240. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  241. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
  242. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
  243. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
  244. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
  245. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  246. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  247. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  248. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  249. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  250. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  251. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  252. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  253. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  254. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  255. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  256. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  257. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  258. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  259. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  260. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  261. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  262. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  263. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  264. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  265. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  266. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  267. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  268. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  269. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  270. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  271. package/dist/admin/admin/src/router.js +9 -0
  272. package/dist/admin/admin/src/router.js.map +1 -1
  273. package/dist/admin/admin/src/router.mjs +9 -0
  274. package/dist/admin/admin/src/router.mjs.map +1 -1
  275. package/dist/admin/admin/src/services/auth.js +43 -2
  276. package/dist/admin/admin/src/services/auth.js.map +1 -1
  277. package/dist/admin/admin/src/services/auth.mjs +41 -3
  278. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  279. package/dist/admin/admin/src/translations/en.json.js +22 -0
  280. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  281. package/dist/admin/admin/src/translations/en.json.mjs +22 -0
  282. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  283. package/dist/admin/admin/src/translations/ja.json.js +748 -265
  284. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  285. package/dist/admin/admin/src/translations/ja.json.mjs +745 -266
  286. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  287. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
  288. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  289. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
  290. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  291. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  292. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  293. package/dist/admin/admin/src/utils/locales.js +3 -2
  294. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  295. package/dist/admin/admin/src/utils/objects.js +9 -4
  296. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  297. package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
  298. package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
  299. package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
  300. package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
  301. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  302. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  303. package/dist/admin/admin/src/utils/urls.js +5 -1
  304. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  305. package/dist/admin/admin/tests/server.js +25 -0
  306. package/dist/admin/admin/tests/server.js.map +1 -1
  307. package/dist/admin/admin/tests/server.mjs +25 -0
  308. package/dist/admin/admin/tests/server.mjs.map +1 -1
  309. package/dist/admin/admin/tests/utils.js +3 -2
  310. package/dist/admin/admin/tests/utils.js.map +1 -1
  311. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  312. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  313. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  314. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  315. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  316. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  317. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  318. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  319. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  320. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  321. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  322. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  323. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  324. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  325. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  326. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  327. package/dist/admin/index.js +2 -0
  328. package/dist/admin/index.js.map +1 -1
  329. package/dist/admin/index.mjs +1 -0
  330. package/dist/admin/index.mjs.map +1 -1
  331. package/dist/admin/src/StrapiApp.d.ts +11 -5
  332. package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
  333. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
  334. package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
  335. package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
  336. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
  337. package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
  338. package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
  339. package/dist/admin/src/components/FormInputs/Renderer.d.ts +0 -1
  340. package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
  341. package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
  342. package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
  343. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
  344. package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
  345. package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
  346. package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
  347. package/dist/admin/src/components/SubNav.d.ts +5 -6
  348. package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
  349. package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
  350. package/dist/admin/src/core/apis/router.d.ts +2 -3
  351. package/dist/admin/src/core/store/configure.d.ts +2 -2
  352. package/dist/admin/src/core/utils/createHook.d.ts +4 -4
  353. package/dist/admin/src/features/AppInfo.d.ts +1 -2
  354. package/dist/admin/src/features/StrapiApp.d.ts +1 -2
  355. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  356. package/dist/admin/src/hooks/useAdminRoles.d.ts +2 -2
  357. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  358. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  359. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  360. package/dist/admin/src/hooks/useQueryParams.d.ts +1 -1
  361. package/dist/admin/src/hooks/useThrottledCallback.d.ts +0 -1
  362. package/dist/admin/src/index.d.ts +1 -0
  363. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  364. package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
  365. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
  366. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  367. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
  368. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
  369. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
  370. package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
  371. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
  372. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
  373. package/dist/admin/src/reducer.d.ts +1 -1
  374. package/dist/admin/src/services/admin.d.ts +2 -2
  375. package/dist/admin/src/services/api.d.ts +1 -1
  376. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  377. package/dist/admin/src/services/auth.d.ts +29 -27
  378. package/dist/admin/src/services/contentApi.d.ts +1 -1
  379. package/dist/admin/src/services/users.d.ts +7 -7
  380. package/dist/admin/src/services/webhooks.d.ts +2 -2
  381. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
  382. package/dist/admin/src/utils/locales.d.ts +0 -1
  383. package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
  384. package/dist/admin/src/utils/shims.d.ts +1 -1
  385. package/dist/admin/tests/store.d.ts +4 -4
  386. package/dist/admin/tests/utils.d.ts +5 -5
  387. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
  388. package/dist/ee/admin/src/services/ai.d.ts +2 -2
  389. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
  390. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
  391. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
  392. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  393. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
  394. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
  395. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  396. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
  397. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  398. package/dist/ee/server/src/controllers/index.d.ts +1 -2
  399. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  400. package/dist/ee/server/src/controllers/user.d.ts +1 -1
  401. package/dist/ee/server/src/destroy.d.ts.map +1 -1
  402. package/dist/ee/server/src/index.d.ts +2 -3
  403. package/dist/ee/server/src/index.d.ts.map +1 -1
  404. package/dist/ee/server/src/register.d.ts.map +1 -1
  405. package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
  406. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  407. package/dist/ee/server/src/services/index.d.ts +1 -1
  408. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  409. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
  410. package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
  411. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  412. package/dist/ee/server/src/services/role.d.ts.map +1 -1
  413. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  414. package/dist/ee/server/src/utils/index.d.ts.map +1 -1
  415. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
  416. package/dist/ee/server/src/validation/authentication.d.ts +2 -2
  417. package/dist/ee/server/src/validation/role.d.ts +6 -6
  418. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  419. package/dist/ee/server/src/validation/user.d.ts.map +1 -1
  420. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  421. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  422. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  423. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  424. package/dist/server/ee/server/src/controllers/user.js +6 -2
  425. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  426. package/dist/server/ee/server/src/services/auth.js +5 -1
  427. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  428. package/dist/server/ee/server/src/services/user.js +8 -4
  429. package/dist/server/ee/server/src/services/user.js.map +1 -1
  430. package/dist/server/index.js +6 -2
  431. package/dist/server/index.js.map +1 -1
  432. package/dist/server/server/src/ai/services/ai.js +10 -4
  433. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  434. package/dist/server/server/src/content-types/session.js +6 -0
  435. package/dist/server/server/src/content-types/session.js.map +1 -1
  436. package/dist/server/server/src/content-types/session.mjs +6 -0
  437. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  438. package/dist/server/server/src/controllers/admin.js +9 -4
  439. package/dist/server/server/src/controllers/admin.js.map +1 -1
  440. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  441. package/dist/server/server/src/controllers/authenticated-session.js +61 -0
  442. package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
  443. package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
  444. package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
  445. package/dist/server/server/src/controllers/authentication.js +18 -6
  446. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  447. package/dist/server/server/src/controllers/authentication.mjs +12 -5
  448. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  449. package/dist/server/server/src/controllers/index.js +2 -0
  450. package/dist/server/server/src/controllers/index.js.map +1 -1
  451. package/dist/server/server/src/controllers/index.mjs +2 -0
  452. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  453. package/dist/server/server/src/controllers/role.js +2 -4
  454. package/dist/server/server/src/controllers/role.js.map +1 -1
  455. package/dist/server/server/src/controllers/role.mjs +2 -4
  456. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  457. package/dist/server/server/src/controllers/user.js +3 -2
  458. package/dist/server/server/src/controllers/user.js.map +1 -1
  459. package/dist/server/server/src/controllers/webhooks.js +7 -2
  460. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  461. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  462. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  463. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  464. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  465. package/dist/server/server/src/routes/serve-admin-panel.js +9 -4
  466. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  467. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  468. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  469. package/dist/server/server/src/routes/users.js +12 -26
  470. package/dist/server/server/src/routes/users.js.map +1 -1
  471. package/dist/server/server/src/routes/users.mjs +12 -26
  472. package/dist/server/server/src/routes/users.mjs.map +1 -1
  473. package/dist/server/server/src/services/api-token.js +7 -3
  474. package/dist/server/server/src/services/api-token.js.map +1 -1
  475. package/dist/server/server/src/services/auth.js +8 -3
  476. package/dist/server/server/src/services/auth.js.map +1 -1
  477. package/dist/server/server/src/services/content-type.js +6 -2
  478. package/dist/server/server/src/services/content-type.js.map +1 -1
  479. package/dist/server/server/src/services/encryption.js +8 -4
  480. package/dist/server/server/src/services/encryption.js.map +1 -1
  481. package/dist/server/server/src/services/passport.js +6 -2
  482. package/dist/server/server/src/services/passport.js.map +1 -1
  483. package/dist/server/server/src/services/permission/engine.js +5 -1
  484. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  485. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  486. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  487. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  488. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  489. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
  490. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  491. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
  492. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  493. package/dist/server/server/src/services/permission/queries.js +5 -1
  494. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  495. package/dist/server/server/src/services/project-settings.js +6 -2
  496. package/dist/server/server/src/services/project-settings.js.map +1 -1
  497. package/dist/server/server/src/services/role.js +10 -5
  498. package/dist/server/server/src/services/role.js.map +1 -1
  499. package/dist/server/server/src/services/role.mjs +2 -1
  500. package/dist/server/server/src/services/role.mjs.map +1 -1
  501. package/dist/server/server/src/services/token.js +7 -2
  502. package/dist/server/server/src/services/token.js.map +1 -1
  503. package/dist/server/server/src/services/transfer/permission.js +5 -1
  504. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  505. package/dist/server/server/src/services/transfer/token.js +10 -5
  506. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  507. package/dist/server/server/src/services/user.js +10 -6
  508. package/dist/server/server/src/services/user.js.map +1 -1
  509. package/dist/server/server/src/strategies/admin.js +4 -0
  510. package/dist/server/server/src/strategies/admin.js.map +1 -1
  511. package/dist/server/server/src/strategies/admin.mjs +4 -0
  512. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  513. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  514. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  515. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  516. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  517. package/dist/server/server/src/validation/common-validators.js +6 -2
  518. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  519. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  520. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  521. package/dist/server/shared/utils/session-auth.js +5 -1
  522. package/dist/server/shared/utils/session-auth.js.map +1 -1
  523. package/dist/server/src/ai/controllers/ai.d.ts +3 -3
  524. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  525. package/dist/server/src/bootstrap.d.ts.map +1 -1
  526. package/dist/server/src/config/admin-conditions.d.ts +2 -2
  527. package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
  528. package/dist/server/src/content-types/index.d.ts +6 -0
  529. package/dist/server/src/content-types/index.d.ts.map +1 -1
  530. package/dist/server/src/content-types/session.d.ts +6 -0
  531. package/dist/server/src/content-types/session.d.ts.map +1 -1
  532. package/dist/server/src/controllers/admin-token.d.ts +5 -5
  533. package/dist/server/src/controllers/api-token.d.ts +1 -1
  534. package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
  535. package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
  536. package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
  537. package/dist/server/src/controllers/authentication.d.ts +4 -4
  538. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  539. package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
  540. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  541. package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
  542. package/dist/server/src/controllers/homepage.d.ts +2 -2
  543. package/dist/server/src/controllers/homepage.d.ts.map +1 -1
  544. package/dist/server/src/controllers/index.d.ts +33 -43
  545. package/dist/server/src/controllers/index.d.ts.map +1 -1
  546. package/dist/server/src/controllers/role.d.ts +4 -4
  547. package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
  548. package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
  549. package/dist/server/src/controllers/transfer/token.d.ts +1 -1
  550. package/dist/server/src/controllers/user.d.ts +2 -2
  551. package/dist/server/src/controllers/webhooks.d.ts +4 -4
  552. package/dist/server/src/domain/action/index.d.ts +4 -65
  553. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  554. package/dist/server/src/domain/action/provider.d.ts +30 -3
  555. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  556. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  557. package/dist/server/src/domain/condition/provider.d.ts +19 -2
  558. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  559. package/dist/server/src/domain/permission/index.d.ts +0 -1
  560. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  561. package/dist/server/src/domain/user.d.ts.map +1 -1
  562. package/dist/server/src/index.d.ts +51 -63
  563. package/dist/server/src/index.d.ts.map +1 -1
  564. package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
  565. package/dist/server/src/middlewares/index.d.ts +0 -1
  566. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  567. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  568. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  569. package/dist/server/src/policies/index.d.ts.map +1 -1
  570. package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
  571. package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
  572. package/dist/server/src/register.d.ts.map +1 -1
  573. package/dist/server/src/routes/index.d.ts +0 -1
  574. package/dist/server/src/routes/index.d.ts.map +1 -1
  575. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  576. package/dist/server/src/routes/transfer.d.ts +0 -1
  577. package/dist/server/src/routes/transfer.d.ts.map +1 -1
  578. package/dist/server/src/routes/users.d.ts.map +1 -1
  579. package/dist/server/src/services/action.d.ts.map +1 -1
  580. package/dist/server/src/services/api-token.d.ts +5 -6
  581. package/dist/server/src/services/api-token.d.ts.map +1 -1
  582. package/dist/server/src/services/auth.d.ts.map +1 -1
  583. package/dist/server/src/services/condition.d.ts.map +1 -1
  584. package/dist/server/src/services/content-type.d.ts.map +1 -1
  585. package/dist/server/src/services/encryption.d.ts.map +1 -1
  586. package/dist/server/src/services/homepage.d.ts.map +1 -1
  587. package/dist/server/src/services/index.d.ts +12 -21
  588. package/dist/server/src/services/index.d.ts.map +1 -1
  589. package/dist/server/src/services/metrics.d.ts.map +1 -1
  590. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  591. package/dist/server/src/services/passport.d.ts +0 -1
  592. package/dist/server/src/services/passport.d.ts.map +1 -1
  593. package/dist/server/src/services/permission/engine.d.ts +1 -2
  594. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  595. package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
  596. package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
  597. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  598. package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
  599. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
  600. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  601. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  602. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  603. package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
  604. package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
  605. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  606. package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
  607. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  608. package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
  609. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  610. package/dist/server/src/services/permission.d.ts +13 -38
  611. package/dist/server/src/services/permission.d.ts.map +1 -1
  612. package/dist/server/src/services/project-settings.d.ts +2 -4
  613. package/dist/server/src/services/project-settings.d.ts.map +1 -1
  614. package/dist/server/src/services/role.d.ts +7 -1
  615. package/dist/server/src/services/role.d.ts.map +1 -1
  616. package/dist/server/src/services/token.d.ts +1 -1
  617. package/dist/server/src/services/token.d.ts.map +1 -1
  618. package/dist/server/src/services/transfer/token.d.ts +11 -11
  619. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  620. package/dist/server/src/services/user.d.ts +3 -3
  621. package/dist/server/src/services/user.d.ts.map +1 -1
  622. package/dist/server/src/strategies/admin-token.d.ts +4 -4
  623. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  624. package/dist/server/src/strategies/admin.d.ts.map +1 -1
  625. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
  626. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  627. package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
  628. package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
  629. package/dist/server/src/validation/action-provider.d.ts +2 -2
  630. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  631. package/dist/server/src/validation/admin-tokens.d.ts +2 -2
  632. package/dist/server/src/validation/api-tokens.d.ts +4 -4
  633. package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
  634. package/dist/server/src/validation/authentication/login.d.ts +1 -1
  635. package/dist/server/src/validation/authentication/register.d.ts +6 -6
  636. package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
  637. package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
  638. package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
  639. package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
  640. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  641. package/dist/server/src/validation/permission.d.ts +6 -6
  642. package/dist/server/src/validation/permission.d.ts.map +1 -1
  643. package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
  644. package/dist/server/src/validation/project-settings.d.ts +6 -6
  645. package/dist/server/src/validation/role.d.ts +8 -8
  646. package/dist/server/src/validation/role.d.ts.map +1 -1
  647. package/dist/server/src/validation/transfer/token.d.ts +4 -4
  648. package/dist/server/src/validation/user.d.ts +8 -8
  649. package/dist/shared/contracts/permissions.d.ts +1 -0
  650. package/dist/shared/contracts/permissions.d.ts.map +1 -1
  651. package/dist/shared/contracts/sessions.d.ts +62 -0
  652. package/dist/shared/contracts/sessions.d.ts.map +1 -0
  653. package/dist/shared/contracts/shared.d.ts +1 -1
  654. package/dist/shared/contracts/shared.d.ts.map +1 -1
  655. package/dist/shared/utils/session-auth.d.ts +1 -1
  656. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  657. package/package.json +11 -11
@@ -2,6 +2,10 @@
2
2
 
3
3
  var invariant = require('invariant');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var invariant__default = /*#__PURE__*/_interopDefault(invariant);
8
+
5
9
  class Widgets {
6
10
  register(widgets) {
7
11
  if (Array.isArray(widgets)) {
@@ -29,10 +33,10 @@ class Widgets {
29
33
  };
30
34
  this.checkWidgets = (widgets)=>{
31
35
  widgets.forEach((widget)=>{
32
- invariant(widget.id, 'An id must be provided');
33
- invariant(widget.component, 'A component must be provided');
34
- invariant(widget.title, 'A title must be provided');
35
- invariant(widget.icon, 'An icon must be provided');
36
+ invariant__default.default(widget.id, 'An id must be provided');
37
+ invariant__default.default(widget.component, 'A component must be provided');
38
+ invariant__default.default(widget.title, 'A title must be provided');
39
+ invariant__default.default(widget.icon, 'An icon must be provided');
36
40
  });
37
41
  };
38
42
  this.getAll = ()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"Widgets.js","sources":["../../../../../../admin/src/core/apis/Widgets.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport invariant from 'invariant';\nimport { To } from 'react-router-dom';\n\nimport { Permission } from '../../../../shared/contracts/shared';\n\nimport type { Internal, Utils } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype WidgetUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype WidgetArgs = {\n icon?: typeof import('@strapi/icons').PuzzlePiece;\n title: MessageDescriptor;\n link?: {\n label: MessageDescriptor;\n href: To;\n };\n component: () => Promise<React.ComponentType>;\n pluginId?: string;\n id: string;\n permissions?: Array<Pick<Permission, 'action'> & Partial<Omit<Permission, 'action'>>>;\n roles?: string[];\n};\n\ntype WidgetWithUID = Omit<WidgetArgs, 'id' | 'pluginId'> & { uid: WidgetUID };\n\ntype DescriptionReducer = (prev: WidgetArgs[]) => WidgetArgs[];\n\nclass Widgets {\n widgets: WidgetArgs[];\n\n constructor() {\n this.widgets = [];\n }\n\n private generateUid = (widget: WidgetArgs): WidgetUID => {\n return widget.pluginId ? `plugin::${widget.pluginId}.${widget.id}` : `global::${widget.id}`;\n };\n\n private checkWidgets = (widgets: WidgetArgs[]): void => {\n widgets.forEach((widget) => {\n invariant(widget.id, 'An id must be provided');\n invariant(widget.component, 'A component must be provided');\n invariant(widget.title, 'A title must be provided');\n invariant(widget.icon, 'An icon must be provided');\n });\n };\n\n register(widgets: WidgetArgs | WidgetArgs[] | DescriptionReducer) {\n if (Array.isArray(widgets)) {\n this.checkWidgets(widgets);\n this.widgets = [...this.widgets, ...widgets];\n } else if (typeof widgets === 'function') {\n const newWidgets = widgets(this.widgets);\n this.checkWidgets(newWidgets);\n this.widgets = newWidgets;\n } else if (typeof widgets === 'object') {\n this.checkWidgets([widgets]);\n this.widgets.push(widgets);\n } else {\n throw new Error('Expected widgets to be an array or a reducer function');\n }\n }\n\n getAll = (): WidgetWithUID[] => {\n return this.widgets.map((widget) => {\n const { id, pluginId, ...widgetBase } = widget;\n return {\n ...widgetBase,\n uid: this.generateUid(widget),\n };\n });\n };\n}\n\nexport { Widgets };\nexport type { WidgetArgs, WidgetWithUID };\n"],"names":["Widgets","register","widgets","Array","isArray","checkWidgets","newWidgets","push","Error","generateUid","widget","pluginId","id","forEach","invariant","component","title","icon","getAll","map","widgetBase","uid"],"mappings":";;;;AAkCA,MAAMA,OAAAA,CAAAA;AAoBJC,IAAAA,QAAAA,CAASC,OAAuD,EAAE;QAChE,IAAIC,KAAAA,CAAMC,OAAO,CAACF,OAAAA,CAAAA,EAAU;YAC1B,IAAI,CAACG,YAAY,CAACH,OAAAA,CAAAA;YAClB,IAAI,CAACA,OAAO,GAAG;AAAI,gBAAA,GAAA,IAAI,CAACA,OAAO;AAAKA,gBAAAA,GAAAA;AAAQ,aAAA;QAC9C,CAAA,MAAO,IAAI,OAAOA,OAAAA,KAAY,UAAA,EAAY;AACxC,YAAA,MAAMI,UAAAA,GAAaJ,OAAAA,CAAQ,IAAI,CAACA,OAAO,CAAA;YACvC,IAAI,CAACG,YAAY,CAACC,UAAAA,CAAAA;YAClB,IAAI,CAACJ,OAAO,GAAGI,UAAAA;QACjB,CAAA,MAAO,IAAI,OAAOJ,OAAAA,KAAY,QAAA,EAAU;YACtC,IAAI,CAACG,YAAY,CAAC;AAACH,gBAAAA;AAAQ,aAAA,CAAA;AAC3B,YAAA,IAAI,CAACA,OAAO,CAACK,IAAI,CAACL,OAAAA,CAAAA;QACpB,CAAA,MAAO;AACL,YAAA,MAAM,IAAIM,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;AACF,IAAA;IA/BA,WAAA,EAAc;AAINC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,CAACC,MAAAA,GAAAA;YACrB,OAAOA,MAAAA,CAAOC,QAAQ,GAAG,CAAC,QAAQ,EAAED,MAAAA,CAAOC,QAAQ,CAAC,CAAC,EAAED,MAAAA,CAAOE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAEF,MAAAA,CAAOE,EAAE,CAAA,CAAE;AAC7F,QAAA,CAAA;AAEQP,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,CAACH,OAAAA,GAAAA;YACtBA,OAAAA,CAAQW,OAAO,CAAC,CAACH,MAAAA,GAAAA;gBACfI,SAAAA,CAAUJ,MAAAA,CAAOE,EAAE,EAAE,wBAAA,CAAA;gBACrBE,SAAAA,CAAUJ,MAAAA,CAAOK,SAAS,EAAE,8BAAA,CAAA;gBAC5BD,SAAAA,CAAUJ,MAAAA,CAAOM,KAAK,EAAE,0BAAA,CAAA;gBACxBF,SAAAA,CAAUJ,MAAAA,CAAOO,IAAI,EAAE,0BAAA,CAAA;AACzB,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;aAkBAC,MAAAA,GAAS,IAAA;AACP,YAAA,OAAO,IAAI,CAAChB,OAAO,CAACiB,GAAG,CAAC,CAACT,MAAAA,GAAAA;AACvB,gBAAA,MAAM,EAAEE,EAAE,EAAED,QAAQ,EAAE,GAAGS,YAAY,GAAGV,MAAAA;gBACxC,OAAO;AACL,oBAAA,GAAGU,UAAU;oBACbC,GAAAA,EAAK,IAAI,CAACZ,WAAW,CAACC,MAAAA;AACxB,iBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAxCE,IAAI,CAACR,OAAO,GAAG,EAAE;AACnB,IAAA;AAwCF;;;;"}
1
+ {"version":3,"file":"Widgets.js","sources":["../../../../../../admin/src/core/apis/Widgets.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport invariant from 'invariant';\nimport { To } from 'react-router-dom';\n\nimport { Permission } from '../../../../shared/contracts/shared';\n\nimport type { Internal, Utils } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype WidgetUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype WidgetArgs = {\n icon?: typeof import('@strapi/icons').PuzzlePiece;\n title: MessageDescriptor;\n link?: {\n label: MessageDescriptor;\n href: To;\n };\n component: () => Promise<React.ComponentType>;\n pluginId?: string;\n id: string;\n permissions?: Array<Pick<Permission, 'action'> & Partial<Omit<Permission, 'action'>>>;\n roles?: string[];\n};\n\ntype WidgetWithUID = Omit<WidgetArgs, 'id' | 'pluginId'> & { uid: WidgetUID };\n\ntype DescriptionReducer = (prev: WidgetArgs[]) => WidgetArgs[];\n\nclass Widgets {\n widgets: WidgetArgs[];\n\n constructor() {\n this.widgets = [];\n }\n\n private generateUid = (widget: WidgetArgs): WidgetUID => {\n return widget.pluginId ? `plugin::${widget.pluginId}.${widget.id}` : `global::${widget.id}`;\n };\n\n private checkWidgets = (widgets: WidgetArgs[]): void => {\n widgets.forEach((widget) => {\n invariant(widget.id, 'An id must be provided');\n invariant(widget.component, 'A component must be provided');\n invariant(widget.title, 'A title must be provided');\n invariant(widget.icon, 'An icon must be provided');\n });\n };\n\n register(widgets: WidgetArgs | WidgetArgs[] | DescriptionReducer) {\n if (Array.isArray(widgets)) {\n this.checkWidgets(widgets);\n this.widgets = [...this.widgets, ...widgets];\n } else if (typeof widgets === 'function') {\n const newWidgets = widgets(this.widgets);\n this.checkWidgets(newWidgets);\n this.widgets = newWidgets;\n } else if (typeof widgets === 'object') {\n this.checkWidgets([widgets]);\n this.widgets.push(widgets);\n } else {\n throw new Error('Expected widgets to be an array or a reducer function');\n }\n }\n\n getAll = (): WidgetWithUID[] => {\n return this.widgets.map((widget) => {\n const { id, pluginId, ...widgetBase } = widget;\n return {\n ...widgetBase,\n uid: this.generateUid(widget),\n };\n });\n };\n}\n\nexport { Widgets };\nexport type { WidgetArgs, WidgetWithUID };\n"],"names":["Widgets","register","widgets","Array","isArray","checkWidgets","newWidgets","push","Error","generateUid","widget","pluginId","id","forEach","invariant","component","title","icon","getAll","map","widgetBase","uid"],"mappings":";;;;;;;;AAkCA,MAAMA,OAAAA,CAAAA;AAoBJC,IAAAA,QAAAA,CAASC,OAAuD,EAAE;QAChE,IAAIC,KAAAA,CAAMC,OAAO,CAACF,OAAAA,CAAAA,EAAU;YAC1B,IAAI,CAACG,YAAY,CAACH,OAAAA,CAAAA;YAClB,IAAI,CAACA,OAAO,GAAG;AAAI,gBAAA,GAAA,IAAI,CAACA,OAAO;AAAKA,gBAAAA,GAAAA;AAAQ,aAAA;QAC9C,CAAA,MAAO,IAAI,OAAOA,OAAAA,KAAY,UAAA,EAAY;AACxC,YAAA,MAAMI,UAAAA,GAAaJ,OAAAA,CAAQ,IAAI,CAACA,OAAO,CAAA;YACvC,IAAI,CAACG,YAAY,CAACC,UAAAA,CAAAA;YAClB,IAAI,CAACJ,OAAO,GAAGI,UAAAA;QACjB,CAAA,MAAO,IAAI,OAAOJ,OAAAA,KAAY,QAAA,EAAU;YACtC,IAAI,CAACG,YAAY,CAAC;AAACH,gBAAAA;AAAQ,aAAA,CAAA;AAC3B,YAAA,IAAI,CAACA,OAAO,CAACK,IAAI,CAACL,OAAAA,CAAAA;QACpB,CAAA,MAAO;AACL,YAAA,MAAM,IAAIM,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;AACF,IAAA;IA/BA,WAAA,EAAc;AAINC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,CAACC,MAAAA,GAAAA;YACrB,OAAOA,MAAAA,CAAOC,QAAQ,GAAG,CAAC,QAAQ,EAAED,MAAAA,CAAOC,QAAQ,CAAC,CAAC,EAAED,MAAAA,CAAOE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAEF,MAAAA,CAAOE,EAAE,CAAA,CAAE;AAC7F,QAAA,CAAA;AAEQP,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,CAACH,OAAAA,GAAAA;YACtBA,OAAAA,CAAQW,OAAO,CAAC,CAACH,MAAAA,GAAAA;gBACfI,0BAAAA,CAAUJ,MAAAA,CAAOE,EAAE,EAAE,wBAAA,CAAA;gBACrBE,0BAAAA,CAAUJ,MAAAA,CAAOK,SAAS,EAAE,8BAAA,CAAA;gBAC5BD,0BAAAA,CAAUJ,MAAAA,CAAOM,KAAK,EAAE,0BAAA,CAAA;gBACxBF,0BAAAA,CAAUJ,MAAAA,CAAOO,IAAI,EAAE,0BAAA,CAAA;AACzB,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;aAkBAC,MAAAA,GAAS,IAAA;AACP,YAAA,OAAO,IAAI,CAAChB,OAAO,CAACiB,GAAG,CAAC,CAACT,MAAAA,GAAAA;AACvB,gBAAA,MAAM,EAAEE,EAAE,EAAED,QAAQ,EAAE,GAAGS,YAAY,GAAGV,MAAAA;gBACxC,OAAO;AACL,oBAAA,GAAGU,UAAU;oBACbC,GAAAA,EAAK,IAAI,CAACZ,WAAW,CAACC,MAAAA;AACxB,iBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAxCE,IAAI,CAACR,OAAO,GAAG,EAAE;AACnB,IAAA;AAwCF;;;;"}
@@ -11,6 +11,11 @@ var LanguageProvider = require('../../components/LanguageProvider.js');
11
11
  var Theme = require('../../components/Theme.js');
12
12
  var NotFoundPage = require('../../pages/NotFoundPage.js');
13
13
  var router = require('../../router.js');
14
+ var retryDynamicImport = require('../../utils/retryDynamicImport.js');
15
+
16
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
+
18
+ var invariant__default = /*#__PURE__*/_interopDefault(invariant);
14
19
 
15
20
  class Router {
16
21
  get routes() {
@@ -26,6 +31,22 @@ class Router {
26
31
  * @internal This method is used internally by Strapi to create the router.
27
32
  * It should not be used by plugins, doing so will likely break the application.
28
33
  */ createRouter(strapi, { memory, ...opts } = {}) {
34
+ const authenticatedLayoutRoute = {
35
+ path: '/*',
36
+ lazy: async ()=>{
37
+ const { PrivateAdminLayout } = await Promise.resolve().then(function () { return require('../../layouts/AuthenticatedLayout.js'); });
38
+ return {
39
+ Component: PrivateAdminLayout
40
+ };
41
+ },
42
+ children: [
43
+ ...this.routes,
44
+ {
45
+ path: '*',
46
+ element: /*#__PURE__*/ jsxRuntime.jsx(NotFoundPage.NotFoundPage, {})
47
+ }
48
+ ]
49
+ };
29
50
  const routes = [
30
51
  {
31
52
  path: '/*',
@@ -44,23 +65,8 @@ class Router {
44
65
  store: strapi.store
45
66
  }),
46
67
  children: [
47
- ...router.getImmutableRoutes(),
48
- {
49
- path: '/*',
50
- lazy: async ()=>{
51
- const { PrivateAdminLayout } = await Promise.resolve().then(function () { return require('../../layouts/AuthenticatedLayout.js'); });
52
- return {
53
- Component: PrivateAdminLayout
54
- };
55
- },
56
- children: [
57
- ...this.routes,
58
- {
59
- path: '*',
60
- element: /*#__PURE__*/ jsxRuntime.jsx(NotFoundPage.NotFoundPage, {})
61
- }
62
- ]
63
- }
68
+ ...retryDynamicImport.wrapRouteObjectsLazyWithRetry(router.getImmutableRoutes()),
69
+ retryDynamicImport.wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute)
64
70
  ]
65
71
  }
66
72
  ];
@@ -75,10 +81,10 @@ class Router {
75
81
  if (typeof section === 'object' && 'links' in section) {
76
82
  /**
77
83
  * Someone has passed an entire pre-configured section object
78
- */ invariant(section.id, 'section.id should be defined');
79
- invariant(section.intlLabel?.id && section.intlLabel?.defaultMessage, 'section.intlLabel should be defined');
80
- invariant(this.settings[section.id] === undefined, 'A similar section already exists');
81
- invariant(Array.isArray(section.links), 'TypeError expected links to be an array');
84
+ */ invariant__default.default(section.id, 'section.id should be defined');
85
+ invariant__default.default(section.intlLabel?.id && section.intlLabel?.defaultMessage, 'section.intlLabel should be defined');
86
+ invariant__default.default(this.settings[section.id] === undefined, 'A similar section already exists');
87
+ invariant__default.default(Array.isArray(section.links), 'TypeError expected links to be an array');
82
88
  this.settings[section.id] = {
83
89
  ...section,
84
90
  links: []
@@ -89,9 +95,9 @@ class Router {
89
95
  } else if (typeof section === 'object' && link) {
90
96
  /**
91
97
  * we need to create the section first
92
- */ invariant(section.id, 'section.id should be defined');
93
- invariant(section.intlLabel?.id && section.intlLabel?.defaultMessage, 'section.intlLabel should be defined');
94
- invariant(this.settings[section.id] === undefined, 'A similar section already exists');
98
+ */ invariant__default.default(section.id, 'section.id should be defined');
99
+ invariant__default.default(section.intlLabel?.id && section.intlLabel?.defaultMessage, 'section.intlLabel should be defined');
100
+ invariant__default.default(this.settings[section.id] === undefined, 'A similar section already exists');
95
101
  this.settings[section.id] = {
96
102
  ...section,
97
103
  links: []
@@ -145,10 +151,10 @@ class Router {
145
151
  }
146
152
  };
147
153
  this.addMenuLink = (link)=>{
148
- invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);
149
- invariant(typeof link.to === 'string', `[${link.intlLabel.defaultMessage}]: Expected link.to to be a string instead received ${typeof link.to}`);
150
- invariant(link.intlLabel?.id && link.intlLabel?.defaultMessage, `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`);
151
- invariant(!link.Component || link.Component && typeof link.Component === 'function', `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \`Component: () => import(path)\` instead.`);
154
+ invariant__default.default(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);
155
+ invariant__default.default(typeof link.to === 'string', `[${link.intlLabel.defaultMessage}]: Expected link.to to be a string instead received ${typeof link.to}`);
156
+ invariant__default.default(link.intlLabel?.id && link.intlLabel?.defaultMessage, `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`);
157
+ invariant__default.default(!link.Component || link.Component && typeof link.Component === 'function', `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \`Component: () => import(path)\` instead.`);
152
158
  if (link.Component && typeof link.Component === 'function' && // @ts-expect-error – shh
153
159
  link.Component[Symbol.toStringTag] === 'AsyncFunction') {
154
160
  console.warn(`
@@ -180,11 +186,11 @@ class Router {
180
186
  this.menu.push(restLink);
181
187
  };
182
188
  this.createSettingsLink = (sectionId, link)=>{
183
- invariant(this._settings[sectionId], 'The section does not exist');
184
- invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);
185
- invariant(link.intlLabel?.id && link.intlLabel?.defaultMessage, `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`);
186
- invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);
187
- invariant(!link.Component || link.Component && typeof link.Component === 'function', `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \`Component: () => import(path)\` instead.`);
189
+ invariant__default.default(this._settings[sectionId], 'The section does not exist');
190
+ invariant__default.default(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);
191
+ invariant__default.default(link.intlLabel?.id && link.intlLabel?.defaultMessage, `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`);
192
+ invariant__default.default(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);
193
+ invariant__default.default(!link.Component || link.Component && typeof link.Component === 'function', `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \`Component: () => import(path)\` instead.`);
188
194
  if (link.Component && typeof link.Component === 'function' && // @ts-expect-error – shh
189
195
  link.Component[Symbol.toStringTag] === 'AsyncFunction') {
190
196
  console.warn(`
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sources":["../../../../../../admin/src/core/apis/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\n\nimport type { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n target?: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...getImmutableRoutes(),\n {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n },\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component?: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n"],"names":["Router","routes","_routes","menu","_menu","settings","_settings","createRouter","strapi","memory","opts","path","errorElement","_jsx","Provider","store","LanguageProvider","messages","configurations","translations","Theme","themes","ErrorElement","element","App","children","getImmutableRoutes","lazy","PrivateAdminLayout","Component","NotFoundPage","router","createMemoryRouter","createBrowserRouter","addSettingsLink","section","link","invariant","id","intlLabel","defaultMessage","undefined","Array","isArray","links","forEach","createSettingsLink","l","Error","addRoute","route","push","getPrintableType","initialRoutes","global","addMenuLink","to","Symbol","toStringTag","console","warn","trim","startsWith","slice","restLink","mod","default","sectionId","split","join","settingsIndex","findIndex","value","nativeType","Object","name"],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sources":["../../../../../../admin/src/core/apis/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\nimport {\n wrapRouteObjectLazyWithRetry,\n wrapRouteObjectsLazyWithRetry,\n} from '../../utils/retryDynamicImport';\n\nimport type { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n target?: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const authenticatedLayoutRoute: RouteObject = {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n };\n\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...wrapRouteObjectsLazyWithRetry(getImmutableRoutes()),\n wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute),\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component?: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n section: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n"],"names":["Router","routes","_routes","menu","_menu","settings","_settings","createRouter","strapi","memory","opts","authenticatedLayoutRoute","path","lazy","PrivateAdminLayout","Component","children","element","_jsx","NotFoundPage","errorElement","Provider","store","LanguageProvider","messages","configurations","translations","Theme","themes","ErrorElement","App","wrapRouteObjectsLazyWithRetry","getImmutableRoutes","wrapRouteObjectLazyWithRetry","router","createMemoryRouter","createBrowserRouter","addSettingsLink","section","link","invariant","id","intlLabel","defaultMessage","undefined","Array","isArray","links","forEach","createSettingsLink","l","Error","addRoute","route","push","getPrintableType","initialRoutes","global","addMenuLink","to","Symbol","toStringTag","console","warn","trim","startsWith","slice","restLink","mod","default","sectionId","split","join","settingsIndex","findIndex","value","nativeType","Object","name"],"mappings":"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"}
@@ -9,6 +9,7 @@ import { LanguageProvider } from '../../components/LanguageProvider.mjs';
9
9
  import { Theme } from '../../components/Theme.mjs';
10
10
  import { NotFoundPage } from '../../pages/NotFoundPage.mjs';
11
11
  import { getImmutableRoutes } from '../../router.mjs';
12
+ import { wrapRouteObjectsLazyWithRetry, wrapRouteObjectLazyWithRetry } from '../../utils/retryDynamicImport.mjs';
12
13
 
13
14
  class Router {
14
15
  get routes() {
@@ -24,6 +25,22 @@ class Router {
24
25
  * @internal This method is used internally by Strapi to create the router.
25
26
  * It should not be used by plugins, doing so will likely break the application.
26
27
  */ createRouter(strapi, { memory, ...opts } = {}) {
28
+ const authenticatedLayoutRoute = {
29
+ path: '/*',
30
+ lazy: async ()=>{
31
+ const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout.mjs');
32
+ return {
33
+ Component: PrivateAdminLayout
34
+ };
35
+ },
36
+ children: [
37
+ ...this.routes,
38
+ {
39
+ path: '*',
40
+ element: /*#__PURE__*/ jsx(NotFoundPage, {})
41
+ }
42
+ ]
43
+ };
27
44
  const routes = [
28
45
  {
29
46
  path: '/*',
@@ -42,23 +59,8 @@ class Router {
42
59
  store: strapi.store
43
60
  }),
44
61
  children: [
45
- ...getImmutableRoutes(),
46
- {
47
- path: '/*',
48
- lazy: async ()=>{
49
- const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout.mjs');
50
- return {
51
- Component: PrivateAdminLayout
52
- };
53
- },
54
- children: [
55
- ...this.routes,
56
- {
57
- path: '*',
58
- element: /*#__PURE__*/ jsx(NotFoundPage, {})
59
- }
60
- ]
61
- }
62
+ ...wrapRouteObjectsLazyWithRetry(getImmutableRoutes()),
63
+ wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute)
62
64
  ]
63
65
  }
64
66
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"router.mjs","sources":["../../../../../../admin/src/core/apis/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\n\nimport type { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n target?: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...getImmutableRoutes(),\n {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n },\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component?: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n"],"names":["Router","routes","_routes","menu","_menu","settings","_settings","createRouter","strapi","memory","opts","path","errorElement","_jsx","Provider","store","LanguageProvider","messages","configurations","translations","Theme","themes","ErrorElement","element","App","children","getImmutableRoutes","lazy","PrivateAdminLayout","Component","NotFoundPage","router","createMemoryRouter","createBrowserRouter","addSettingsLink","section","link","invariant","id","intlLabel","defaultMessage","undefined","Array","isArray","links","forEach","createSettingsLink","l","Error","addRoute","route","push","getPrintableType","initialRoutes","global","addMenuLink","to","Symbol","toStringTag","console","warn","trim","startsWith","slice","restLink","mod","default","sectionId","split","join","settingsIndex","findIndex","value","nativeType","Object","name"],"mappings":"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"}
1
+ {"version":3,"file":"router.mjs","sources":["../../../../../../admin/src/core/apis/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\nimport {\n wrapRouteObjectLazyWithRetry,\n wrapRouteObjectsLazyWithRetry,\n} from '../../utils/retryDynamicImport';\n\nimport type { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n target?: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const authenticatedLayoutRoute: RouteObject = {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n };\n\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...wrapRouteObjectsLazyWithRetry(getImmutableRoutes()),\n wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute),\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component?: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n section: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n"],"names":["Router","routes","_routes","menu","_menu","settings","_settings","createRouter","strapi","memory","opts","authenticatedLayoutRoute","path","lazy","PrivateAdminLayout","Component","children","element","_jsx","NotFoundPage","errorElement","Provider","store","LanguageProvider","messages","configurations","translations","Theme","themes","ErrorElement","App","wrapRouteObjectsLazyWithRetry","getImmutableRoutes","wrapRouteObjectLazyWithRetry","router","createMemoryRouter","createBrowserRouter","addSettingsLink","section","link","invariant","id","intlLabel","defaultMessage","undefined","Array","isArray","links","forEach","createSettingsLink","l","Error","addRoute","route","push","getPrintableType","initialRoutes","global","addMenuLink","to","Symbol","toStringTag","console","warn","trim","startsWith","slice","restLink","mod","default","sectionId","split","join","settingsIndex","findIndex","value","nativeType","Object","name"],"mappings":"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"}
@@ -15,7 +15,8 @@ var normalizeAdminLocale = require('../translations/normalizeAdminLocale.js');
15
15
  var deviceId = require('../utils/deviceId.js');
16
16
  var getFetchClient = require('../utils/getFetchClient.js');
17
17
 
18
- function _interopNamespaceDefault(e) {
18
+ function _interopNamespace(e) {
19
+ if (e && e.__esModule) return e;
19
20
  var n = Object.create(null);
20
21
  if (e) {
21
22
  Object.keys(e).forEach(function (k) {
@@ -32,7 +33,7 @@ function _interopNamespaceDefault(e) {
32
33
  return Object.freeze(n);
33
34
  }
34
35
 
35
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
36
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
37
 
37
38
  /**
38
39
  * ensure the Auth context never exposes a non-function for checkUserHasPermissions.
@@ -86,6 +87,69 @@ const AuthProvider = ({ children, _defaultPermissions = [], _disableRenewToken =
86
87
  dispatch,
87
88
  navigate
88
89
  ]);
90
+ /**
91
+ * Clear *only this tab's* session and redirect to login, without removing the
92
+ * shared `isLoggedIn`/`jwtToken` storage keys. Unlike `clearStateAndLogout`,
93
+ * this does not dispatch `logoutAction`, so it does not fire the cross-tab
94
+ * `storage` event that logs every tab out. Used by the speculative idle timer,
95
+ * which fires per-tab at the access token's `exp`: an idle tab must never tear
96
+ * down a session that another tab is still actively using. A genuine logout
97
+ * (user-initiated, or a server-confirmed 401 via `setOnSessionExpired`) still
98
+ * goes through `clearStateAndLogout` and broadcasts to all tabs.
99
+ */ const clearLocalSessionAndRedirect = React__namespace.useCallback(()=>{
100
+ dispatch(api.adminApi.util.resetApiState());
101
+ dispatch(reducer.setToken(null));
102
+ navigate('/auth/login');
103
+ }, [
104
+ dispatch,
105
+ navigate
106
+ ]);
107
+ const resyncToken = React__namespace.useCallback((newToken)=>{
108
+ dispatch(reducer.setToken(newToken));
109
+ }, [
110
+ dispatch
111
+ ]);
112
+ /**
113
+ * Track the timestamp of the user's last interaction. This is the activity
114
+ * signal `useIdleSessionLogout` uses to tell an active user (silently renew
115
+ * their session) apart from a genuinely idle one (log out). Successful API
116
+ * calls don't refresh the short-lived access token on their own, so without
117
+ * this an actively-working user is logged out the moment the token expires.
118
+ */ const lastActivityRef = React__namespace.useRef(Date.now());
119
+ React__namespace.useEffect(()=>{
120
+ const markActivity = ()=>{
121
+ lastActivityRef.current = Date.now();
122
+ };
123
+ const events = [
124
+ 'pointerdown',
125
+ 'keydown',
126
+ 'click',
127
+ 'scroll',
128
+ 'touchstart'
129
+ ];
130
+ events.forEach((event)=>window.addEventListener(event, markActivity, {
131
+ passive: true,
132
+ capture: true
133
+ }));
134
+ return ()=>{
135
+ events.forEach((event)=>window.removeEventListener(event, markActivity, {
136
+ capture: true
137
+ }));
138
+ };
139
+ }, []);
140
+ const getLastActivityAt = React__namespace.useCallback(()=>lastActivityRef.current, []);
141
+ /**
142
+ * Silently rotate the refresh token and mint a new access token. Returns
143
+ * `true` on success (the resulting `setToken` re-arms the idle timer) and
144
+ * `false` when the server rejects it (session genuinely over).
145
+ */ const renewSession = React__namespace.useCallback(async ()=>{
146
+ try {
147
+ await getFetchClient.attemptTokenRefresh();
148
+ return true;
149
+ } catch {
150
+ return false;
151
+ }
152
+ }, []);
89
153
  React__namespace.useEffect(()=>{
90
154
  if (user) {
91
155
  if (user.preferedLanguage) {
@@ -125,12 +189,20 @@ const AuthProvider = ({ children, _defaultPermissions = [], _disableRenewToken =
125
189
  clearStateAndLogout
126
190
  ]);
127
191
  /**
128
- * Proactive idle-session detection. See `useIdleSessionLogout` for the full
129
- * rationale and the UX trade-off (a user actively typing in a form with no
130
- * outgoing API calls will still be logged out at `exp`).
192
+ * Session lifecycle at access-token expiry. The timer fires per-tab; the hook
193
+ * then either (1) re-syncs from a token another tab refreshed, (2) silently
194
+ * renews when the user has been active, or (3) logs out. Idle logout is local
195
+ * so an idle tab can't force-logout an actively-used one; a server-confirmed
196
+ * dead session (renewal rejected) broadcasts globally. See
197
+ * `useIdleSessionLogout` for the full rationale.
131
198
  */ useIdleSessionLogout.useIdleSessionLogout({
132
199
  token,
133
- onExpired: clearStateAndLogout,
200
+ onExpired: clearLocalSessionAndRedirect,
201
+ onSessionDead: clearStateAndLogout,
202
+ getStoredToken: reducer.getStoredToken,
203
+ onResync: resyncToken,
204
+ getLastActivityAt,
205
+ renewSession,
134
206
  disabled: _disableRenewToken
135
207
  });
136
208
  React__namespace.useEffect(()=>{