@strapi/admin 5.49.0 → 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 (369) hide show
  1. package/dist/admin/admin/src/components/ErrorElement.js +97 -2
  2. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  3. package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
  4. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  6. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  7. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  8. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
  10. package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
  11. package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
  12. package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
  13. package/dist/admin/admin/src/components/MainNav/NavUser.js +10 -0
  14. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  15. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
  16. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  18. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  19. package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
  20. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  21. package/dist/admin/admin/src/core/apis/router.js +19 -17
  22. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  23. package/dist/admin/admin/src/core/apis/router.mjs +19 -17
  24. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  25. package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
  26. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  27. package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
  28. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  29. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -2
  30. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  31. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -2
  32. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  33. package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
  34. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  35. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
  36. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  37. package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
  38. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
  39. package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
  40. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
  41. package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
  42. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  43. package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
  44. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -0
  46. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  47. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -0
  48. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  49. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +7 -0
  50. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  51. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
  52. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  53. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +7 -1
  54. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  55. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
  56. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  57. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +34 -0
  58. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  59. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
  60. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  61. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +38 -2
  62. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
  64. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +18 -1
  66. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
  68. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
  70. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
  71. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
  72. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
  73. package/dist/admin/admin/src/router.js +9 -0
  74. package/dist/admin/admin/src/router.js.map +1 -1
  75. package/dist/admin/admin/src/router.mjs +9 -0
  76. package/dist/admin/admin/src/router.mjs.map +1 -1
  77. package/dist/admin/admin/src/services/auth.js +43 -2
  78. package/dist/admin/admin/src/services/auth.js.map +1 -1
  79. package/dist/admin/admin/src/services/auth.mjs +41 -3
  80. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  81. package/dist/admin/admin/src/translations/en.json.js +22 -0
  82. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  83. package/dist/admin/admin/src/translations/en.json.mjs +22 -0
  84. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  85. package/dist/admin/admin/src/translations/ja.json.js +748 -265
  86. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  87. package/dist/admin/admin/src/translations/ja.json.mjs +745 -266
  88. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  89. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
  90. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  91. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
  92. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  93. package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
  94. package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
  95. package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
  96. package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
  97. package/dist/admin/admin/tests/server.js +25 -0
  98. package/dist/admin/admin/tests/server.js.map +1 -1
  99. package/dist/admin/admin/tests/server.mjs +25 -0
  100. package/dist/admin/admin/tests/server.mjs.map +1 -1
  101. package/dist/admin/index.js +2 -0
  102. package/dist/admin/index.js.map +1 -1
  103. package/dist/admin/index.mjs +1 -0
  104. package/dist/admin/index.mjs.map +1 -1
  105. package/dist/admin/src/StrapiApp.d.ts +5 -5
  106. package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
  107. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
  108. package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
  109. package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
  110. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
  111. package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
  112. package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
  113. package/dist/admin/src/components/FormInputs/Renderer.d.ts +0 -1
  114. package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
  115. package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
  116. package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
  117. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
  118. package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
  119. package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
  120. package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
  121. package/dist/admin/src/components/SubNav.d.ts +5 -6
  122. package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
  123. package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
  124. package/dist/admin/src/core/apis/router.d.ts +1 -1
  125. package/dist/admin/src/core/store/configure.d.ts +2 -2
  126. package/dist/admin/src/core/utils/createHook.d.ts +4 -4
  127. package/dist/admin/src/features/AppInfo.d.ts +1 -2
  128. package/dist/admin/src/features/StrapiApp.d.ts +1 -2
  129. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  130. package/dist/admin/src/hooks/useAdminRoles.d.ts +2 -2
  131. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  132. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  133. package/dist/admin/src/hooks/useQueryParams.d.ts +1 -1
  134. package/dist/admin/src/hooks/useThrottledCallback.d.ts +0 -1
  135. package/dist/admin/src/index.d.ts +1 -0
  136. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  137. package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
  138. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
  139. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  140. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
  141. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
  142. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
  143. package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
  144. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
  145. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
  146. package/dist/admin/src/reducer.d.ts +1 -1
  147. package/dist/admin/src/services/admin.d.ts +2 -2
  148. package/dist/admin/src/services/api.d.ts +1 -1
  149. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  150. package/dist/admin/src/services/auth.d.ts +29 -27
  151. package/dist/admin/src/services/contentApi.d.ts +1 -1
  152. package/dist/admin/src/services/users.d.ts +7 -7
  153. package/dist/admin/src/services/webhooks.d.ts +2 -2
  154. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
  155. package/dist/admin/src/utils/locales.d.ts +0 -1
  156. package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
  157. package/dist/admin/src/utils/shims.d.ts +1 -1
  158. package/dist/admin/tests/store.d.ts +4 -4
  159. package/dist/admin/tests/utils.d.ts +5 -5
  160. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
  161. package/dist/ee/admin/src/services/ai.d.ts +2 -2
  162. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
  163. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
  164. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
  165. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  166. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
  167. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
  168. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  169. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
  170. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  171. package/dist/ee/server/src/controllers/index.d.ts +1 -2
  172. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  173. package/dist/ee/server/src/controllers/user.d.ts +1 -1
  174. package/dist/ee/server/src/destroy.d.ts.map +1 -1
  175. package/dist/ee/server/src/index.d.ts +2 -3
  176. package/dist/ee/server/src/index.d.ts.map +1 -1
  177. package/dist/ee/server/src/register.d.ts.map +1 -1
  178. package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
  179. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  180. package/dist/ee/server/src/services/index.d.ts +1 -1
  181. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  182. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
  183. package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
  184. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  185. package/dist/ee/server/src/services/role.d.ts.map +1 -1
  186. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  187. package/dist/ee/server/src/utils/index.d.ts.map +1 -1
  188. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
  189. package/dist/ee/server/src/validation/authentication.d.ts +2 -2
  190. package/dist/ee/server/src/validation/role.d.ts +6 -6
  191. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  192. package/dist/ee/server/src/validation/user.d.ts.map +1 -1
  193. package/dist/server/server/src/content-types/session.js +6 -0
  194. package/dist/server/server/src/content-types/session.js.map +1 -1
  195. package/dist/server/server/src/content-types/session.mjs +6 -0
  196. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  197. package/dist/server/server/src/controllers/admin.js.map +1 -1
  198. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  199. package/dist/server/server/src/controllers/authenticated-session.js +61 -0
  200. package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
  201. package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
  202. package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
  203. package/dist/server/server/src/controllers/authentication.js +11 -4
  204. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  205. package/dist/server/server/src/controllers/authentication.mjs +12 -5
  206. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  207. package/dist/server/server/src/controllers/index.js +2 -0
  208. package/dist/server/server/src/controllers/index.js.map +1 -1
  209. package/dist/server/server/src/controllers/index.mjs +2 -0
  210. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  211. package/dist/server/server/src/controllers/role.js +2 -4
  212. package/dist/server/server/src/controllers/role.js.map +1 -1
  213. package/dist/server/server/src/controllers/role.mjs +2 -4
  214. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  215. package/dist/server/server/src/routes/serve-admin-panel.js +1 -1
  216. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  217. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  218. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  219. package/dist/server/server/src/routes/users.js +12 -26
  220. package/dist/server/server/src/routes/users.js.map +1 -1
  221. package/dist/server/server/src/routes/users.mjs +12 -26
  222. package/dist/server/server/src/routes/users.mjs.map +1 -1
  223. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
  224. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  225. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
  226. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  227. package/dist/server/server/src/services/role.js +2 -1
  228. package/dist/server/server/src/services/role.js.map +1 -1
  229. package/dist/server/server/src/services/role.mjs +2 -1
  230. package/dist/server/server/src/services/role.mjs.map +1 -1
  231. package/dist/server/server/src/strategies/admin.js +4 -0
  232. package/dist/server/server/src/strategies/admin.js.map +1 -1
  233. package/dist/server/server/src/strategies/admin.mjs +4 -0
  234. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  235. package/dist/server/src/ai/controllers/ai.d.ts +3 -3
  236. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  237. package/dist/server/src/bootstrap.d.ts.map +1 -1
  238. package/dist/server/src/config/admin-conditions.d.ts +2 -2
  239. package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
  240. package/dist/server/src/content-types/index.d.ts +6 -0
  241. package/dist/server/src/content-types/index.d.ts.map +1 -1
  242. package/dist/server/src/content-types/session.d.ts +6 -0
  243. package/dist/server/src/content-types/session.d.ts.map +1 -1
  244. package/dist/server/src/controllers/admin-token.d.ts +5 -5
  245. package/dist/server/src/controllers/api-token.d.ts +1 -1
  246. package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
  247. package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
  248. package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
  249. package/dist/server/src/controllers/authentication.d.ts +4 -4
  250. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  251. package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
  252. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  253. package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
  254. package/dist/server/src/controllers/homepage.d.ts +2 -2
  255. package/dist/server/src/controllers/homepage.d.ts.map +1 -1
  256. package/dist/server/src/controllers/index.d.ts +33 -43
  257. package/dist/server/src/controllers/index.d.ts.map +1 -1
  258. package/dist/server/src/controllers/role.d.ts +4 -4
  259. package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
  260. package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
  261. package/dist/server/src/controllers/transfer/token.d.ts +1 -1
  262. package/dist/server/src/controllers/user.d.ts +2 -2
  263. package/dist/server/src/controllers/webhooks.d.ts +4 -4
  264. package/dist/server/src/domain/action/index.d.ts +4 -65
  265. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  266. package/dist/server/src/domain/action/provider.d.ts +30 -3
  267. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  268. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  269. package/dist/server/src/domain/condition/provider.d.ts +19 -2
  270. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  271. package/dist/server/src/domain/permission/index.d.ts +0 -1
  272. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  273. package/dist/server/src/domain/user.d.ts.map +1 -1
  274. package/dist/server/src/index.d.ts +51 -63
  275. package/dist/server/src/index.d.ts.map +1 -1
  276. package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
  277. package/dist/server/src/middlewares/index.d.ts +0 -1
  278. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  279. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  280. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  281. package/dist/server/src/policies/index.d.ts.map +1 -1
  282. package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
  283. package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
  284. package/dist/server/src/register.d.ts.map +1 -1
  285. package/dist/server/src/routes/index.d.ts +0 -1
  286. package/dist/server/src/routes/index.d.ts.map +1 -1
  287. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  288. package/dist/server/src/routes/transfer.d.ts +0 -1
  289. package/dist/server/src/routes/transfer.d.ts.map +1 -1
  290. package/dist/server/src/routes/users.d.ts.map +1 -1
  291. package/dist/server/src/services/action.d.ts.map +1 -1
  292. package/dist/server/src/services/api-token.d.ts +5 -6
  293. package/dist/server/src/services/api-token.d.ts.map +1 -1
  294. package/dist/server/src/services/auth.d.ts.map +1 -1
  295. package/dist/server/src/services/condition.d.ts.map +1 -1
  296. package/dist/server/src/services/content-type.d.ts.map +1 -1
  297. package/dist/server/src/services/encryption.d.ts.map +1 -1
  298. package/dist/server/src/services/homepage.d.ts.map +1 -1
  299. package/dist/server/src/services/index.d.ts +12 -21
  300. package/dist/server/src/services/index.d.ts.map +1 -1
  301. package/dist/server/src/services/metrics.d.ts.map +1 -1
  302. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  303. package/dist/server/src/services/passport.d.ts +0 -1
  304. package/dist/server/src/services/passport.d.ts.map +1 -1
  305. package/dist/server/src/services/permission/engine.d.ts +1 -2
  306. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  307. package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
  308. package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
  309. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  310. package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
  311. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
  312. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  313. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  314. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  315. package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
  316. package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
  317. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  318. package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
  319. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  320. package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
  321. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  322. package/dist/server/src/services/permission.d.ts +13 -38
  323. package/dist/server/src/services/permission.d.ts.map +1 -1
  324. package/dist/server/src/services/project-settings.d.ts +2 -4
  325. package/dist/server/src/services/project-settings.d.ts.map +1 -1
  326. package/dist/server/src/services/role.d.ts +7 -1
  327. package/dist/server/src/services/role.d.ts.map +1 -1
  328. package/dist/server/src/services/token.d.ts +1 -1
  329. package/dist/server/src/services/token.d.ts.map +1 -1
  330. package/dist/server/src/services/transfer/token.d.ts +11 -11
  331. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  332. package/dist/server/src/services/user.d.ts +3 -3
  333. package/dist/server/src/services/user.d.ts.map +1 -1
  334. package/dist/server/src/strategies/admin-token.d.ts +4 -4
  335. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  336. package/dist/server/src/strategies/admin.d.ts.map +1 -1
  337. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
  338. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  339. package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
  340. package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
  341. package/dist/server/src/validation/action-provider.d.ts +2 -2
  342. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  343. package/dist/server/src/validation/admin-tokens.d.ts +2 -2
  344. package/dist/server/src/validation/api-tokens.d.ts +4 -4
  345. package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
  346. package/dist/server/src/validation/authentication/login.d.ts +1 -1
  347. package/dist/server/src/validation/authentication/register.d.ts +6 -6
  348. package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
  349. package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
  350. package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
  351. package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
  352. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  353. package/dist/server/src/validation/permission.d.ts +6 -6
  354. package/dist/server/src/validation/permission.d.ts.map +1 -1
  355. package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
  356. package/dist/server/src/validation/project-settings.d.ts +6 -6
  357. package/dist/server/src/validation/role.d.ts +8 -8
  358. package/dist/server/src/validation/role.d.ts.map +1 -1
  359. package/dist/server/src/validation/transfer/token.d.ts +4 -4
  360. package/dist/server/src/validation/user.d.ts +8 -8
  361. package/dist/shared/contracts/permissions.d.ts +1 -0
  362. package/dist/shared/contracts/permissions.d.ts.map +1 -1
  363. package/dist/shared/contracts/sessions.d.ts +62 -0
  364. package/dist/shared/contracts/sessions.d.ts.map +1 -0
  365. package/dist/shared/contracts/shared.d.ts +1 -1
  366. package/dist/shared/contracts/shared.d.ts.map +1 -1
  367. package/dist/shared/utils/session-auth.d.ts +1 -1
  368. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  369. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryParams.mjs","sources":["../../../../../admin/src/hooks/useQueryParams.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { parse, stringify } from 'qs';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nconst useSearch = () => {\n const { search } = useLocation();\n\n return useMemo(() => search, [search]);\n};\n\nconst useQueryParams = <TQuery extends object>(initialParams?: TQuery) => {\n const search = useSearch();\n const navigate = useNavigate();\n\n const query = useMemo(() => {\n // TODO: investigate why sometimes we're getting the search with a leading `?` and sometimes not.\n const searchQuery = search.startsWith('?') ? search.slice(1) : search;\n if (!search && initialParams) {\n return initialParams;\n }\n\n return { ...initialParams, ...parse(searchQuery) } as TQuery;\n }, [search, initialParams]);\n\n const setQuery = useCallback(\n (nextParams: TQuery, method: 'push' | 'remove' = 'push', replace = false) => {\n let nextQuery = { ...query };\n\n if (method === 'remove') {\n Object.keys(nextParams).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(nextQuery, key)) {\n // @ts-expect-error – this is fine, if you want to fix it, please do.\n delete nextQuery[key];\n }\n });\n } else {\n nextQuery = { ...query, ...nextParams };\n }\n\n navigate({ search: stringify(nextQuery, { encode: false }) }, { replace });\n },\n [navigate, query]\n );\n\n return [{ query, rawQuery: search }, setQuery] as const;\n};\n\nexport { useQueryParams };\n"],"names":["useSearch","search","useLocation","useMemo","useQueryParams","initialParams","navigate","useNavigate","query","searchQuery","startsWith","slice","parse","setQuery","useCallback","nextParams","method","replace","nextQuery","Object","keys","forEach","key","prototype","hasOwnProperty","call","stringify","encode","rawQuery"],"mappings":";;;;AAKA,MAAMA,SAAAA,GAAY,IAAA;IAChB,MAAM,EAAEC,MAAM,EAAE,GAAGC,WAAAA,EAAAA;IAEnB,OAAOC,OAAAA,CAAQ,IAAMF,MAAAA,EAAQ;AAACA,QAAAA;AAAO,KAAA,CAAA;AACvC,CAAA;AAEA,MAAMG,iBAAiB,CAAwBC,aAAAA,GAAAA;AAC7C,IAAA,MAAMJ,MAAAA,GAASD,SAAAA,EAAAA;AACf,IAAA,MAAMM,QAAAA,GAAWC,WAAAA,EAAAA;AAEjB,IAAA,MAAMC,QAAQL,OAAAA,CAAQ,IAAA;;QAEpB,MAAMM,WAAAA,GAAcR,OAAOS,UAAU,CAAC,OAAOT,MAAAA,CAAOU,KAAK,CAAC,CAAA,CAAA,GAAKV,MAAAA;QAC/D,IAAI,CAACA,UAAUI,aAAAA,EAAe;YAC5B,OAAOA,aAAAA;AACT,QAAA;QAEA,OAAO;AAAE,YAAA,GAAGA,aAAa;AAAE,YAAA,GAAGO,MAAMH,WAAAA;AAAa,SAAA;IACnD,CAAA,EAAG;AAACR,QAAAA,MAAAA;AAAQI,QAAAA;AAAc,KAAA,CAAA;IAE1B,MAAMQ,QAAAA,GAAWC,YACf,CAACC,UAAAA,EAAoBC,SAA4B,MAAM,EAAEC,UAAU,KAAK,GAAA;AACtE,QAAA,IAAIC,SAAAA,GAAY;AAAE,YAAA,GAAGV;AAAM,SAAA;AAE3B,QAAA,IAAIQ,WAAW,QAAA,EAAU;AACvBG,YAAAA,MAAAA,CAAOC,IAAI,CAACL,UAAAA,CAAAA,CAAYM,OAAO,CAAC,CAACC,GAAAA,GAAAA;gBAC/B,IAAIH,MAAAA,CAAOI,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,WAAWI,GAAAA,CAAAA,EAAM;;oBAExD,OAAOJ,SAAS,CAACI,GAAAA,CAAI;AACvB,gBAAA;AACF,YAAA,CAAA,CAAA;QACF,CAAA,MAAO;YACLJ,SAAAA,GAAY;AAAE,gBAAA,GAAGV,KAAK;AAAE,gBAAA,GAAGO;AAAW,aAAA;AACxC,QAAA;QAEAT,QAAAA,CAAS;AAAEL,YAAAA,MAAAA,EAAQyB,UAAUR,SAAAA,EAAW;gBAAES,MAAAA,EAAQ;AAAM,aAAA;SAAG,EAAG;AAAEV,YAAAA;AAAQ,SAAA,CAAA;IAC1E,CAAA,EACA;AAACX,QAAAA,QAAAA;AAAUE,QAAAA;AAAM,KAAA,CAAA;IAGnB,OAAO;AAAC,QAAA;AAAEA,YAAAA,KAAAA;YAAOoB,QAAAA,EAAU3B;AAAO,SAAA;AAAGY,QAAAA;AAAS,KAAA;AAChD;;;;"}
1
+ {"version":3,"file":"useQueryParams.mjs","sources":["../../../../../admin/src/hooks/useQueryParams.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { parse, stringify } from 'qs';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nconst useSearch = () => {\n const { search } = useLocation();\n\n return useMemo(() => search, [search]);\n};\n\nconst useQueryParams = <TQuery extends object>(initialParams?: TQuery) => {\n const search = useSearch();\n const navigate = useNavigate();\n\n const query = useMemo(() => {\n // TODO: investigate why sometimes we're getting the search with a leading `?` and sometimes not.\n const searchQuery = search.startsWith('?') ? search.slice(1) : search;\n if (!search && initialParams) {\n return initialParams;\n }\n\n return { ...initialParams, ...parse(searchQuery) } as TQuery;\n }, [search, initialParams]);\n\n const setQuery = useCallback(\n (nextParams: TQuery, method: 'push' | 'remove' = 'push', replace = false) => {\n let nextQuery: Partial<TQuery> = { ...query };\n\n if (method === 'remove') {\n Object.keys(nextParams).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(nextQuery, key)) {\n delete nextQuery[key as keyof TQuery];\n }\n });\n } else {\n nextQuery = { ...query, ...nextParams };\n }\n\n navigate({ search: stringify(nextQuery, { encode: false }) }, { replace });\n },\n [navigate, query]\n );\n\n return [{ query, rawQuery: search }, setQuery] as const;\n};\n\nexport { useQueryParams };\n"],"names":["useSearch","search","useLocation","useMemo","useQueryParams","initialParams","navigate","useNavigate","query","searchQuery","startsWith","slice","parse","setQuery","useCallback","nextParams","method","replace","nextQuery","Object","keys","forEach","key","prototype","hasOwnProperty","call","stringify","encode","rawQuery"],"mappings":";;;;AAKA,MAAMA,SAAAA,GAAY,IAAA;IAChB,MAAM,EAAEC,MAAM,EAAE,GAAGC,WAAAA,EAAAA;IAEnB,OAAOC,OAAAA,CAAQ,IAAMF,MAAAA,EAAQ;AAACA,QAAAA;AAAO,KAAA,CAAA;AACvC,CAAA;AAEA,MAAMG,iBAAiB,CAAwBC,aAAAA,GAAAA;AAC7C,IAAA,MAAMJ,MAAAA,GAASD,SAAAA,EAAAA;AACf,IAAA,MAAMM,QAAAA,GAAWC,WAAAA,EAAAA;AAEjB,IAAA,MAAMC,QAAQL,OAAAA,CAAQ,IAAA;;QAEpB,MAAMM,WAAAA,GAAcR,OAAOS,UAAU,CAAC,OAAOT,MAAAA,CAAOU,KAAK,CAAC,CAAA,CAAA,GAAKV,MAAAA;QAC/D,IAAI,CAACA,UAAUI,aAAAA,EAAe;YAC5B,OAAOA,aAAAA;AACT,QAAA;QAEA,OAAO;AAAE,YAAA,GAAGA,aAAa;AAAE,YAAA,GAAGO,MAAMH,WAAAA;AAAa,SAAA;IACnD,CAAA,EAAG;AAACR,QAAAA,MAAAA;AAAQI,QAAAA;AAAc,KAAA,CAAA;IAE1B,MAAMQ,QAAAA,GAAWC,YACf,CAACC,UAAAA,EAAoBC,SAA4B,MAAM,EAAEC,UAAU,KAAK,GAAA;AACtE,QAAA,IAAIC,SAAAA,GAA6B;AAAE,YAAA,GAAGV;AAAM,SAAA;AAE5C,QAAA,IAAIQ,WAAW,QAAA,EAAU;AACvBG,YAAAA,MAAAA,CAAOC,IAAI,CAACL,UAAAA,CAAAA,CAAYM,OAAO,CAAC,CAACC,GAAAA,GAAAA;gBAC/B,IAAIH,MAAAA,CAAOI,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,WAAWI,GAAAA,CAAAA,EAAM;oBACxD,OAAOJ,SAAS,CAACI,GAAAA,CAAoB;AACvC,gBAAA;AACF,YAAA,CAAA,CAAA;QACF,CAAA,MAAO;YACLJ,SAAAA,GAAY;AAAE,gBAAA,GAAGV,KAAK;AAAE,gBAAA,GAAGO;AAAW,aAAA;AACxC,QAAA;QAEAT,QAAAA,CAAS;AAAEL,YAAAA,MAAAA,EAAQyB,UAAUR,SAAAA,EAAW;gBAAES,MAAAA,EAAQ;AAAM,aAAA;SAAG,EAAG;AAAEV,YAAAA;AAAQ,SAAA,CAAA;IAC1E,CAAA,EACA;AAACX,QAAAA,QAAAA;AAAUE,QAAAA;AAAM,KAAA,CAAA;IAGnB,OAAO;AAAC,QAAA;AAAEA,YAAAA,KAAAA;YAAOoB,QAAAA,EAAU3B;AAAO,SAAA;AAAGY,QAAAA;AAAS,KAAA;AAChD;;;;"}
@@ -7,9 +7,9 @@ var designSystem = require('@strapi/design-system');
7
7
  var reactDnd = require('react-dnd');
8
8
  var reactDndHtml5Backend = require('react-dnd-html5-backend');
9
9
  var reactIntl = require('react-intl');
10
- var reactRouterDom = require('react-router-dom');
11
10
  var lt = require('semver/functions/lt');
12
11
  var valid = require('semver/functions/valid');
12
+ var LazyOutlet = require('../components/LazyOutlet.js');
13
13
  var LeftMenu = require('../components/LeftMenu.js');
14
14
  var NpsSurvey = require('../components/NpsSurvey.js');
15
15
  var PageHelpers = require('../components/PageHelpers.js');
@@ -152,7 +152,9 @@ const AdminLayout = ()=>{
152
152
  },
153
153
  children: [
154
154
  /*#__PURE__*/ jsxRuntime.jsx(UpsellBanner.UpsellBanner, {}),
155
- /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Outlet, {})
155
+ /*#__PURE__*/ jsxRuntime.jsx(LazyOutlet.LazyOutlet, {
156
+ suspenseOnly: true
157
+ })
156
158
  ]
157
159
  })
158
160
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LazyOutlet } from '../components/LazyOutlet';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n {/*\n * Top-level Suspense only — nested layouts (Settings, Content Manager) use\n * LazyOutlet with useNavigation so in-app navigations show loading in the content\n * column without hiding section side navs.\n */}\n <LazyOutlet suspenseOnly />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","LazyOutlet","suspenseOnly","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
@@ -5,9 +5,9 @@ import { Box, SkipToContent, Flex } from '@strapi/design-system';
5
5
  import { DndProvider } from 'react-dnd';
6
6
  import { HTML5Backend } from 'react-dnd-html5-backend';
7
7
  import { useIntl } from 'react-intl';
8
- import { Outlet } from 'react-router-dom';
9
8
  import lt from 'semver/functions/lt';
10
9
  import valid from 'semver/functions/valid';
10
+ import { LazyOutlet } from '../components/LazyOutlet.mjs';
11
11
  import { LeftMenu } from '../components/LeftMenu.mjs';
12
12
  import { NpsSurvey } from '../components/NpsSurvey.mjs';
13
13
  import { Page } from '../components/PageHelpers.mjs';
@@ -125,7 +125,9 @@ const AdminLayout = ()=>{
125
125
  },
126
126
  children: [
127
127
  /*#__PURE__*/ jsx(UpsellBanner, {}),
128
- /*#__PURE__*/ jsx(Outlet, {})
128
+ /*#__PURE__*/ jsx(LazyOutlet, {
129
+ suspenseOnly: true
130
+ })
129
131
  ]
130
132
  })
131
133
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LazyOutlet } from '../components/LazyOutlet';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n {/*\n * Top-level Suspense only — nested layouts (Settings, Content Manager) use\n * LazyOutlet with useNavigation so in-app navigations show loading in the content\n * column without hiding section side navs.\n */}\n <LazyOutlet suspenseOnly />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","LazyOutlet","suspenseOnly","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
@@ -5,6 +5,7 @@ var reactRouterDom = require('react-router-dom');
5
5
  var Auth = require('../../features/Auth.js');
6
6
  var useEnterprise = require('../../hooks/useEnterprise.js');
7
7
  var admin = require('../../services/admin.js');
8
+ var retryDynamicImport = require('../../utils/retryDynamicImport.js');
8
9
  var Login = require('./components/Login.js');
9
10
  var constants = require('./constants.js');
10
11
 
@@ -16,8 +17,8 @@ var constants = require('./constants.js');
16
17
  const authType = match?.params.authType;
17
18
  const { data } = admin.useInitQuery();
18
19
  const { hasAdmin } = data ?? {};
19
- const Login$1 = useEnterprise.useEnterprise(Login.Login, async ()=>(await Promise.resolve().then(function () { return require('../../../../ee/admin/src/pages/AuthPage/components/Login.js'); })).LoginEE);
20
- const forms = useEnterprise.useEnterprise(constants.FORMS, async ()=>(await Promise.resolve().then(function () { return require('../../../../ee/admin/src/pages/AuthPage/constants.js'); })).FORMS, {
20
+ const Login$1 = useEnterprise.useEnterprise(Login.Login, async ()=>(await retryDynamicImport.retryDynamicImport(()=>Promise.resolve().then(function () { return require('../../../../ee/admin/src/pages/AuthPage/components/Login.js'); }))).LoginEE);
21
+ const forms = useEnterprise.useEnterprise(constants.FORMS, async ()=>(await retryDynamicImport.retryDynamicImport(()=>Promise.resolve().then(function () { return require('../../../../ee/admin/src/pages/AuthPage/constants.js'); }))).FORMS, {
21
22
  combine (ceForms, eeForms) {
22
23
  return {
23
24
  ...ceForms,
@@ -1 +1 @@
1
- {"version":3,"file":"AuthPage.js","sources":["../../../../../../admin/src/pages/Auth/AuthPage.tsx"],"sourcesContent":["import { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { useAuth } from '../../features/Auth';\nimport { useEnterprise } from '../../hooks/useEnterprise';\nimport { useInitQuery } from '../../services/admin';\n\nimport { Login as LoginCE } from './components/Login';\nimport { FORMS, FormDictionary } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * AuthPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AuthPage = () => {\n const { search } = useLocation();\n const match = useMatch('/auth/:authType');\n const authType = match?.params.authType;\n const { data } = useInitQuery();\n const { hasAdmin } = data ?? {};\n const Login = useEnterprise(\n LoginCE,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/components/Login')).LoginEE\n );\n const forms = useEnterprise<FormDictionary, Partial<FormDictionary>>(\n FORMS,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/constants')).FORMS,\n {\n combine(ceForms, eeForms) {\n return {\n ...ceForms,\n ...eeForms,\n };\n },\n defaultValue: FORMS,\n }\n );\n\n const { token } = useAuth('AuthPage', (auth) => auth);\n\n if (!authType || !forms) {\n return <Navigate to=\"/\" />;\n }\n\n const Component = forms[authType as keyof FormDictionary];\n\n // Redirect the user to the login page if\n // the endpoint does not exists\n if (!Component) {\n return <Navigate to=\"/\" />;\n }\n\n // User is already logged in\n if (authType !== 'register-admin' && authType !== 'register' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // there is already an admin user oo\n if (hasAdmin && authType === 'register-admin' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // Redirect the user to the register-admin if it is the first user\n if (!hasAdmin && authType !== 'register-admin') {\n return (\n <Navigate\n to={{\n pathname: '/auth/register-admin',\n // Forward the `?redirectTo` from /auth/login\n // /abc => /auth/login?redirectTo=%2Fabc => /auth/register-admin?redirectTo=%2Fabc\n search,\n }}\n />\n );\n }\n\n if (Login && authType === 'login') {\n // Assign the component to render for the login form\n return <Login />;\n } else if (authType === 'login' && !Login) {\n // block rendering until the Login EE component is fully loaded\n return null;\n }\n\n return <Component hasAdmin={hasAdmin} />;\n};\n\nexport { AuthPage };\n"],"names":["AuthPage","search","useLocation","match","useMatch","authType","params","data","useInitQuery","hasAdmin","Login","useEnterprise","LoginCE","LoginEE","forms","FORMS","combine","ceForms","eeForms","defaultValue","token","useAuth","auth","_jsx","Navigate","to","Component","pathname"],"mappings":";;;;;;;;;;AASA;;AAEkG,2GAE5FA,QAAAA,GAAW,IAAA;IACf,MAAM,EAAEC,MAAM,EAAE,GAAGC,0BAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAQC,uBAAAA,CAAS,iBAAA,CAAA;IACvB,MAAMC,QAAAA,GAAWF,OAAOG,MAAAA,CAAOD,QAAAA;IAC/B,MAAM,EAAEE,IAAI,EAAE,GAAGC,kBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGF,QAAQ,EAAC;IAC9B,MAAMG,OAAAA,GAAQC,2BAAAA,CACZC,WAAAA,EACA,UAAa,CAAA,MAAM,oDAAO,6DAAA,KAA0D,EAAGC,OAAO,CAAA;AAEhG,IAAA,MAAMC,KAAAA,GAAQH,2BAAAA,CACZI,eAAAA,EACA,UAAY,CAAC,MAAM,oDAAO,sDAAA,KAAmD,EAAGA,KAAK,EACrF;QACEC,OAAAA,CAAAA,CAAQC,OAAO,EAAEC,OAAO,EAAA;YACtB,OAAO;AACL,gBAAA,GAAGD,OAAO;AACV,gBAAA,GAAGC;AACL,aAAA;AACF,QAAA,CAAA;QACAC,YAAAA,EAAcJ;AAChB,KAAA,CAAA;AAGF,IAAA,MAAM,EAAEK,KAAK,EAAE,GAAGC,YAAAA,CAAQ,UAAA,EAAY,CAACC,IAAAA,GAASA,IAAAA,CAAAA;IAEhD,IAAI,CAACjB,QAAAA,IAAY,CAACS,KAAAA,EAAO;AACvB,QAAA,qBAAOS,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;IAEA,MAAMC,SAAAA,GAAYZ,KAAK,CAACT,QAAAA,CAAiC;;;AAIzD,IAAA,IAAI,CAACqB,SAAAA,EAAW;AACd,QAAA,qBAAOH,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;AAGA,IAAA,IAAIpB,QAAAA,KAAa,gBAAA,IAAoBA,QAAAA,KAAa,UAAA,IAAce,KAAAA,EAAO;AACrE,QAAA,qBAAOG,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;IAGA,IAAIhB,QAAAA,IAAYJ,QAAAA,KAAa,gBAAA,IAAoBe,KAAAA,EAAO;AACtD,QAAA,qBAAOG,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;IAGA,IAAI,CAAChB,QAAAA,IAAYJ,QAAAA,KAAa,gBAAA,EAAkB;AAC9C,QAAA,qBACEkB,cAAA,CAACC,uBAAAA,EAAAA;YACCC,EAAAA,EAAI;gBACFE,QAAAA,EAAU,sBAAA;;;AAGV1B,gBAAAA;AACF;;AAGN,IAAA;IAEA,IAAIS,OAAAA,IAASL,aAAa,OAAA,EAAS;;AAEjC,QAAA,qBAAOkB,cAAA,CAACb,OAAAA,EAAAA,EAAAA,CAAAA;AACV,IAAA,CAAA,MAAO,IAAIL,QAAAA,KAAa,OAAA,IAAW,CAACK,OAAAA,EAAO;;QAEzC,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBAAOa,cAAA,CAACG,SAAAA,EAAAA;QAAUjB,QAAAA,EAAUA;;AAC9B;;;;"}
1
+ {"version":3,"file":"AuthPage.js","sources":["../../../../../../admin/src/pages/Auth/AuthPage.tsx"],"sourcesContent":["import { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { useAuth } from '../../features/Auth';\nimport { useEnterprise } from '../../hooks/useEnterprise';\nimport { useInitQuery } from '../../services/admin';\nimport { retryDynamicImport } from '../../utils/retryDynamicImport';\n\nimport { Login as LoginCE } from './components/Login';\nimport { FORMS, FormDictionary } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * AuthPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AuthPage = () => {\n const { search } = useLocation();\n const match = useMatch('/auth/:authType');\n const authType = match?.params.authType;\n const { data } = useInitQuery();\n const { hasAdmin } = data ?? {};\n const Login = useEnterprise(\n LoginCE,\n async () =>\n (\n await retryDynamicImport(\n () => import('../../../../ee/admin/src/pages/AuthPage/components/Login')\n )\n ).LoginEE\n );\n const forms = useEnterprise<FormDictionary, Partial<FormDictionary>>(\n FORMS,\n async () =>\n (await retryDynamicImport(() => import('../../../../ee/admin/src/pages/AuthPage/constants')))\n .FORMS,\n {\n combine(ceForms, eeForms) {\n return {\n ...ceForms,\n ...eeForms,\n };\n },\n defaultValue: FORMS,\n }\n );\n\n const { token } = useAuth('AuthPage', (auth) => auth);\n\n if (!authType || !forms) {\n return <Navigate to=\"/\" />;\n }\n\n const Component = forms[authType as keyof FormDictionary];\n\n // Redirect the user to the login page if\n // the endpoint does not exists\n if (!Component) {\n return <Navigate to=\"/\" />;\n }\n\n // User is already logged in\n if (authType !== 'register-admin' && authType !== 'register' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // there is already an admin user oo\n if (hasAdmin && authType === 'register-admin' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // Redirect the user to the register-admin if it is the first user\n if (!hasAdmin && authType !== 'register-admin') {\n return (\n <Navigate\n to={{\n pathname: '/auth/register-admin',\n // Forward the `?redirectTo` from /auth/login\n // /abc => /auth/login?redirectTo=%2Fabc => /auth/register-admin?redirectTo=%2Fabc\n search,\n }}\n />\n );\n }\n\n if (Login && authType === 'login') {\n // Assign the component to render for the login form\n return <Login />;\n } else if (authType === 'login' && !Login) {\n // block rendering until the Login EE component is fully loaded\n return null;\n }\n\n return <Component hasAdmin={hasAdmin} />;\n};\n\nexport { AuthPage };\n"],"names":["AuthPage","search","useLocation","match","useMatch","authType","params","data","useInitQuery","hasAdmin","Login","useEnterprise","LoginCE","retryDynamicImport","LoginEE","forms","FORMS","combine","ceForms","eeForms","defaultValue","token","useAuth","auth","_jsx","Navigate","to","Component","pathname"],"mappings":";;;;;;;;;;;AAUA;;AAEkG,2GAE5FA,QAAAA,GAAW,IAAA;IACf,MAAM,EAAEC,MAAM,EAAE,GAAGC,0BAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAQC,uBAAAA,CAAS,iBAAA,CAAA;IACvB,MAAMC,QAAAA,GAAWF,OAAOG,MAAAA,CAAOD,QAAAA;IAC/B,MAAM,EAAEE,IAAI,EAAE,GAAGC,kBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGF,QAAQ,EAAC;AAC9B,IAAA,MAAMG,OAAAA,GAAQC,2BAAAA,CACZC,WAAAA,EACA,UACE,CACE,MAAMC,qCAAAA,CACJ,IAAM,oDAAO,6DAAA,KAAA,CACf,EACAC,OAAO,CAAA;AAEb,IAAA,MAAMC,KAAAA,GAAQJ,2BAAAA,CACZK,eAAAA,EACA,UACE,CAAC,MAAMH,qCAAAA,CAAmB,IAAM,oDAAO,sDAAA,KAAA,CAAoD,EACxFG,KAAK,EACV;QACEC,OAAAA,CAAAA,CAAQC,OAAO,EAAEC,OAAO,EAAA;YACtB,OAAO;AACL,gBAAA,GAAGD,OAAO;AACV,gBAAA,GAAGC;AACL,aAAA;AACF,QAAA,CAAA;QACAC,YAAAA,EAAcJ;AAChB,KAAA,CAAA;AAGF,IAAA,MAAM,EAAEK,KAAK,EAAE,GAAGC,YAAAA,CAAQ,UAAA,EAAY,CAACC,IAAAA,GAASA,IAAAA,CAAAA;IAEhD,IAAI,CAAClB,QAAAA,IAAY,CAACU,KAAAA,EAAO;AACvB,QAAA,qBAAOS,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;IAEA,MAAMC,SAAAA,GAAYZ,KAAK,CAACV,QAAAA,CAAiC;;;AAIzD,IAAA,IAAI,CAACsB,SAAAA,EAAW;AACd,QAAA,qBAAOH,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;AAGA,IAAA,IAAIrB,QAAAA,KAAa,gBAAA,IAAoBA,QAAAA,KAAa,UAAA,IAAcgB,KAAAA,EAAO;AACrE,QAAA,qBAAOG,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;IAGA,IAAIjB,QAAAA,IAAYJ,QAAAA,KAAa,gBAAA,IAAoBgB,KAAAA,EAAO;AACtD,QAAA,qBAAOG,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;IAGA,IAAI,CAACjB,QAAAA,IAAYJ,QAAAA,KAAa,gBAAA,EAAkB;AAC9C,QAAA,qBACEmB,cAAA,CAACC,uBAAAA,EAAAA;YACCC,EAAAA,EAAI;gBACFE,QAAAA,EAAU,sBAAA;;;AAGV3B,gBAAAA;AACF;;AAGN,IAAA;IAEA,IAAIS,OAAAA,IAASL,aAAa,OAAA,EAAS;;AAEjC,QAAA,qBAAOmB,cAAA,CAACd,OAAAA,EAAAA,EAAAA,CAAAA;AACV,IAAA,CAAA,MAAO,IAAIL,QAAAA,KAAa,OAAA,IAAW,CAACK,OAAAA,EAAO;;QAEzC,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBAAOc,cAAA,CAACG,SAAAA,EAAAA;QAAUlB,QAAAA,EAAUA;;AAC9B;;;;"}
@@ -3,6 +3,7 @@ import { useLocation, useMatch, Navigate } from 'react-router-dom';
3
3
  import { useAuth } from '../../features/Auth.mjs';
4
4
  import { useEnterprise } from '../../hooks/useEnterprise.mjs';
5
5
  import { useInitQuery } from '../../services/admin.mjs';
6
+ import { retryDynamicImport } from '../../utils/retryDynamicImport.mjs';
6
7
  import { Login } from './components/Login.mjs';
7
8
  import { FORMS } from './constants.mjs';
8
9
 
@@ -14,8 +15,8 @@ import { FORMS } from './constants.mjs';
14
15
  const authType = match?.params.authType;
15
16
  const { data } = useInitQuery();
16
17
  const { hasAdmin } = data ?? {};
17
- const Login$1 = useEnterprise(Login, async ()=>(await import('../../../../ee/admin/src/pages/AuthPage/components/Login.mjs')).LoginEE);
18
- const forms = useEnterprise(FORMS, async ()=>(await import('../../../../ee/admin/src/pages/AuthPage/constants.mjs')).FORMS, {
18
+ const Login$1 = useEnterprise(Login, async ()=>(await retryDynamicImport(()=>import('../../../../ee/admin/src/pages/AuthPage/components/Login.mjs'))).LoginEE);
19
+ const forms = useEnterprise(FORMS, async ()=>(await retryDynamicImport(()=>import('../../../../ee/admin/src/pages/AuthPage/constants.mjs'))).FORMS, {
19
20
  combine (ceForms, eeForms) {
20
21
  return {
21
22
  ...ceForms,
@@ -1 +1 @@
1
- {"version":3,"file":"AuthPage.mjs","sources":["../../../../../../admin/src/pages/Auth/AuthPage.tsx"],"sourcesContent":["import { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { useAuth } from '../../features/Auth';\nimport { useEnterprise } from '../../hooks/useEnterprise';\nimport { useInitQuery } from '../../services/admin';\n\nimport { Login as LoginCE } from './components/Login';\nimport { FORMS, FormDictionary } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * AuthPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AuthPage = () => {\n const { search } = useLocation();\n const match = useMatch('/auth/:authType');\n const authType = match?.params.authType;\n const { data } = useInitQuery();\n const { hasAdmin } = data ?? {};\n const Login = useEnterprise(\n LoginCE,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/components/Login')).LoginEE\n );\n const forms = useEnterprise<FormDictionary, Partial<FormDictionary>>(\n FORMS,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/constants')).FORMS,\n {\n combine(ceForms, eeForms) {\n return {\n ...ceForms,\n ...eeForms,\n };\n },\n defaultValue: FORMS,\n }\n );\n\n const { token } = useAuth('AuthPage', (auth) => auth);\n\n if (!authType || !forms) {\n return <Navigate to=\"/\" />;\n }\n\n const Component = forms[authType as keyof FormDictionary];\n\n // Redirect the user to the login page if\n // the endpoint does not exists\n if (!Component) {\n return <Navigate to=\"/\" />;\n }\n\n // User is already logged in\n if (authType !== 'register-admin' && authType !== 'register' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // there is already an admin user oo\n if (hasAdmin && authType === 'register-admin' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // Redirect the user to the register-admin if it is the first user\n if (!hasAdmin && authType !== 'register-admin') {\n return (\n <Navigate\n to={{\n pathname: '/auth/register-admin',\n // Forward the `?redirectTo` from /auth/login\n // /abc => /auth/login?redirectTo=%2Fabc => /auth/register-admin?redirectTo=%2Fabc\n search,\n }}\n />\n );\n }\n\n if (Login && authType === 'login') {\n // Assign the component to render for the login form\n return <Login />;\n } else if (authType === 'login' && !Login) {\n // block rendering until the Login EE component is fully loaded\n return null;\n }\n\n return <Component hasAdmin={hasAdmin} />;\n};\n\nexport { AuthPage };\n"],"names":["AuthPage","search","useLocation","match","useMatch","authType","params","data","useInitQuery","hasAdmin","Login","useEnterprise","LoginCE","LoginEE","forms","FORMS","combine","ceForms","eeForms","defaultValue","token","useAuth","auth","_jsx","Navigate","to","Component","pathname"],"mappings":";;;;;;;;AASA;;AAEkG,2GAE5FA,QAAAA,GAAW,IAAA;IACf,MAAM,EAAEC,MAAM,EAAE,GAAGC,WAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAQC,QAAAA,CAAS,iBAAA,CAAA;IACvB,MAAMC,QAAAA,GAAWF,OAAOG,MAAAA,CAAOD,QAAAA;IAC/B,MAAM,EAAEE,IAAI,EAAE,GAAGC,YAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGF,QAAQ,EAAC;IAC9B,MAAMG,OAAAA,GAAQC,aAAAA,CACZC,KAAAA,EACA,UAAa,CAAA,MAAM,OAAO,8DAAA,CAA0D,EAAGC,OAAO,CAAA;AAEhG,IAAA,MAAMC,KAAAA,GAAQH,aAAAA,CACZI,KAAAA,EACA,UAAY,CAAC,MAAM,OAAO,uDAAA,CAAmD,EAAGA,KAAK,EACrF;QACEC,OAAAA,CAAAA,CAAQC,OAAO,EAAEC,OAAO,EAAA;YACtB,OAAO;AACL,gBAAA,GAAGD,OAAO;AACV,gBAAA,GAAGC;AACL,aAAA;AACF,QAAA,CAAA;QACAC,YAAAA,EAAcJ;AAChB,KAAA,CAAA;AAGF,IAAA,MAAM,EAAEK,KAAK,EAAE,GAAGC,OAAAA,CAAQ,UAAA,EAAY,CAACC,IAAAA,GAASA,IAAAA,CAAAA;IAEhD,IAAI,CAACjB,QAAAA,IAAY,CAACS,KAAAA,EAAO;AACvB,QAAA,qBAAOS,GAAA,CAACC,QAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;IAEA,MAAMC,SAAAA,GAAYZ,KAAK,CAACT,QAAAA,CAAiC;;;AAIzD,IAAA,IAAI,CAACqB,SAAAA,EAAW;AACd,QAAA,qBAAOH,GAAA,CAACC,QAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;AAGA,IAAA,IAAIpB,QAAAA,KAAa,gBAAA,IAAoBA,QAAAA,KAAa,UAAA,IAAce,KAAAA,EAAO;AACrE,QAAA,qBAAOG,GAAA,CAACC,QAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;IAGA,IAAIhB,QAAAA,IAAYJ,QAAAA,KAAa,gBAAA,IAAoBe,KAAAA,EAAO;AACtD,QAAA,qBAAOG,GAAA,CAACC,QAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;IAGA,IAAI,CAAChB,QAAAA,IAAYJ,QAAAA,KAAa,gBAAA,EAAkB;AAC9C,QAAA,qBACEkB,GAAA,CAACC,QAAAA,EAAAA;YACCC,EAAAA,EAAI;gBACFE,QAAAA,EAAU,sBAAA;;;AAGV1B,gBAAAA;AACF;;AAGN,IAAA;IAEA,IAAIS,OAAAA,IAASL,aAAa,OAAA,EAAS;;AAEjC,QAAA,qBAAOkB,GAAA,CAACb,OAAAA,EAAAA,EAAAA,CAAAA;AACV,IAAA,CAAA,MAAO,IAAIL,QAAAA,KAAa,OAAA,IAAW,CAACK,OAAAA,EAAO;;QAEzC,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBAAOa,GAAA,CAACG,SAAAA,EAAAA;QAAUjB,QAAAA,EAAUA;;AAC9B;;;;"}
1
+ {"version":3,"file":"AuthPage.mjs","sources":["../../../../../../admin/src/pages/Auth/AuthPage.tsx"],"sourcesContent":["import { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { useAuth } from '../../features/Auth';\nimport { useEnterprise } from '../../hooks/useEnterprise';\nimport { useInitQuery } from '../../services/admin';\nimport { retryDynamicImport } from '../../utils/retryDynamicImport';\n\nimport { Login as LoginCE } from './components/Login';\nimport { FORMS, FormDictionary } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * AuthPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AuthPage = () => {\n const { search } = useLocation();\n const match = useMatch('/auth/:authType');\n const authType = match?.params.authType;\n const { data } = useInitQuery();\n const { hasAdmin } = data ?? {};\n const Login = useEnterprise(\n LoginCE,\n async () =>\n (\n await retryDynamicImport(\n () => import('../../../../ee/admin/src/pages/AuthPage/components/Login')\n )\n ).LoginEE\n );\n const forms = useEnterprise<FormDictionary, Partial<FormDictionary>>(\n FORMS,\n async () =>\n (await retryDynamicImport(() => import('../../../../ee/admin/src/pages/AuthPage/constants')))\n .FORMS,\n {\n combine(ceForms, eeForms) {\n return {\n ...ceForms,\n ...eeForms,\n };\n },\n defaultValue: FORMS,\n }\n );\n\n const { token } = useAuth('AuthPage', (auth) => auth);\n\n if (!authType || !forms) {\n return <Navigate to=\"/\" />;\n }\n\n const Component = forms[authType as keyof FormDictionary];\n\n // Redirect the user to the login page if\n // the endpoint does not exists\n if (!Component) {\n return <Navigate to=\"/\" />;\n }\n\n // User is already logged in\n if (authType !== 'register-admin' && authType !== 'register' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // there is already an admin user oo\n if (hasAdmin && authType === 'register-admin' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // Redirect the user to the register-admin if it is the first user\n if (!hasAdmin && authType !== 'register-admin') {\n return (\n <Navigate\n to={{\n pathname: '/auth/register-admin',\n // Forward the `?redirectTo` from /auth/login\n // /abc => /auth/login?redirectTo=%2Fabc => /auth/register-admin?redirectTo=%2Fabc\n search,\n }}\n />\n );\n }\n\n if (Login && authType === 'login') {\n // Assign the component to render for the login form\n return <Login />;\n } else if (authType === 'login' && !Login) {\n // block rendering until the Login EE component is fully loaded\n return null;\n }\n\n return <Component hasAdmin={hasAdmin} />;\n};\n\nexport { AuthPage };\n"],"names":["AuthPage","search","useLocation","match","useMatch","authType","params","data","useInitQuery","hasAdmin","Login","useEnterprise","LoginCE","retryDynamicImport","LoginEE","forms","FORMS","combine","ceForms","eeForms","defaultValue","token","useAuth","auth","_jsx","Navigate","to","Component","pathname"],"mappings":";;;;;;;;;AAUA;;AAEkG,2GAE5FA,QAAAA,GAAW,IAAA;IACf,MAAM,EAAEC,MAAM,EAAE,GAAGC,WAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAQC,QAAAA,CAAS,iBAAA,CAAA;IACvB,MAAMC,QAAAA,GAAWF,OAAOG,MAAAA,CAAOD,QAAAA;IAC/B,MAAM,EAAEE,IAAI,EAAE,GAAGC,YAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGF,QAAQ,EAAC;AAC9B,IAAA,MAAMG,OAAAA,GAAQC,aAAAA,CACZC,KAAAA,EACA,UACE,CACE,MAAMC,kBAAAA,CACJ,IAAM,OAAO,8DAAA,CAAA,CACf,EACAC,OAAO,CAAA;AAEb,IAAA,MAAMC,KAAAA,GAAQJ,aAAAA,CACZK,KAAAA,EACA,UACE,CAAC,MAAMH,kBAAAA,CAAmB,IAAM,OAAO,uDAAA,CAAA,CAAoD,EACxFG,KAAK,EACV;QACEC,OAAAA,CAAAA,CAAQC,OAAO,EAAEC,OAAO,EAAA;YACtB,OAAO;AACL,gBAAA,GAAGD,OAAO;AACV,gBAAA,GAAGC;AACL,aAAA;AACF,QAAA,CAAA;QACAC,YAAAA,EAAcJ;AAChB,KAAA,CAAA;AAGF,IAAA,MAAM,EAAEK,KAAK,EAAE,GAAGC,OAAAA,CAAQ,UAAA,EAAY,CAACC,IAAAA,GAASA,IAAAA,CAAAA;IAEhD,IAAI,CAAClB,QAAAA,IAAY,CAACU,KAAAA,EAAO;AACvB,QAAA,qBAAOS,GAAA,CAACC,QAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;IAEA,MAAMC,SAAAA,GAAYZ,KAAK,CAACV,QAAAA,CAAiC;;;AAIzD,IAAA,IAAI,CAACsB,SAAAA,EAAW;AACd,QAAA,qBAAOH,GAAA,CAACC,QAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;AAGA,IAAA,IAAIrB,QAAAA,KAAa,gBAAA,IAAoBA,QAAAA,KAAa,UAAA,IAAcgB,KAAAA,EAAO;AACrE,QAAA,qBAAOG,GAAA,CAACC,QAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;IAGA,IAAIjB,QAAAA,IAAYJ,QAAAA,KAAa,gBAAA,IAAoBgB,KAAAA,EAAO;AACtD,QAAA,qBAAOG,GAAA,CAACC,QAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;;IAGA,IAAI,CAACjB,QAAAA,IAAYJ,QAAAA,KAAa,gBAAA,EAAkB;AAC9C,QAAA,qBACEmB,GAAA,CAACC,QAAAA,EAAAA;YACCC,EAAAA,EAAI;gBACFE,QAAAA,EAAU,sBAAA;;;AAGV3B,gBAAAA;AACF;;AAGN,IAAA;IAEA,IAAIS,OAAAA,IAASL,aAAa,OAAA,EAAS;;AAEjC,QAAA,qBAAOmB,GAAA,CAACd,OAAAA,EAAAA,EAAAA,CAAAA;AACV,IAAA,CAAA,MAAO,IAAIL,QAAAA,KAAa,OAAA,IAAW,CAACK,OAAAA,EAAO;;QAEzC,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBAAOc,GAAA,CAACG,SAAAA,EAAAA;QAAUlB,QAAAA,EAAUA;;AAC9B;;;;"}
@@ -0,0 +1,318 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var designSystem = require('@strapi/design-system');
6
+ var icons = require('@strapi/icons');
7
+ var reactIntl = require('react-intl');
8
+ var reactRouterDom = require('react-router-dom');
9
+ var ConfirmDialog = require('../components/ConfirmDialog.js');
10
+ var Layout = require('../components/Layouts/Layout.js');
11
+ var PageHelpers = require('../components/PageHelpers.js');
12
+ var RelativeTime = require('../components/RelativeTime.js');
13
+ var Auth = require('../features/Auth.js');
14
+ var Notifications = require('../features/Notifications.js');
15
+ var useAPIErrorHandler = require('../hooks/useAPIErrorHandler.js');
16
+ var auth = require('../services/auth.js');
17
+ var baseQuery = require('../utils/baseQuery.js');
18
+
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
21
+ var n = Object.create(null);
22
+ if (e) {
23
+ Object.keys(e).forEach(function (k) {
24
+ if (k !== 'default') {
25
+ var d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: function () { return e[k]; }
29
+ });
30
+ }
31
+ });
32
+ }
33
+ n.default = e;
34
+ return Object.freeze(n);
35
+ }
36
+
37
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
38
+
39
+ /* -------------------------------------------------------------------------------------------------
40
+ * SessionsPage
41
+ * -----------------------------------------------------------------------------------------------*/ const SessionsPage = ()=>{
42
+ const { formatMessage } = reactIntl.useIntl();
43
+ const navigate = reactRouterDom.useNavigate();
44
+ const { toggleNotification } = Notifications.useNotification();
45
+ const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler.useAPIErrorHandler();
46
+ const logout = Auth.useAuth('SessionsPage', (state)=>state.logout);
47
+ const { data: sessions = [], isLoading, error } = auth.useGetActiveSessionsQuery();
48
+ const [revokeSession] = auth.useRevokeSessionMutation();
49
+ const [revokeAllSessions] = auth.useRevokeAllSessionsMutation();
50
+ const handleLogoutAndRedirect = React__namespace.useCallback(async ()=>{
51
+ await logout();
52
+ navigate('/auth/login');
53
+ }, [
54
+ logout,
55
+ navigate
56
+ ]);
57
+ const notifyError = React__namespace.useCallback((error)=>{
58
+ toggleNotification({
59
+ type: 'danger',
60
+ message: error && baseQuery.isBaseQueryError(error) ? formatAPIError(error) : formatMessage({
61
+ id: 'notification.error',
62
+ defaultMessage: 'An error occurred'
63
+ })
64
+ });
65
+ }, [
66
+ formatAPIError,
67
+ formatMessage,
68
+ toggleNotification
69
+ ]);
70
+ const runSessionMutation = React__namespace.useCallback(async (action, onSuccess)=>{
71
+ try {
72
+ const res = await action();
73
+ if (res && 'error' in res && res.error) {
74
+ notifyError(res.error);
75
+ return;
76
+ }
77
+ await onSuccess();
78
+ } catch {
79
+ notifyError();
80
+ }
81
+ }, [
82
+ notifyError
83
+ ]);
84
+ const handleRevoke = async (session)=>{
85
+ await runSessionMutation(()=>revokeSession(session.id), async ()=>{
86
+ if (session.current) {
87
+ await handleLogoutAndRedirect();
88
+ return;
89
+ }
90
+ toggleNotification({
91
+ type: 'success',
92
+ message: formatMessage({
93
+ id: 'Settings.sessions.revoke.success',
94
+ defaultMessage: 'Session ended'
95
+ })
96
+ });
97
+ });
98
+ };
99
+ const handleRevokeOthers = async ()=>{
100
+ await runSessionMutation(()=>revokeAllSessions({
101
+ keepCurrent: true
102
+ }), ()=>{
103
+ toggleNotification({
104
+ type: 'success',
105
+ message: formatMessage({
106
+ id: 'Settings.sessions.revokeOthers.success',
107
+ defaultMessage: 'Other sessions ended'
108
+ })
109
+ });
110
+ });
111
+ };
112
+ const handleRevokeAll = async ()=>{
113
+ await runSessionMutation(()=>revokeAllSessions(undefined), handleLogoutAndRedirect);
114
+ };
115
+ if (isLoading) {
116
+ return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Loading, {});
117
+ }
118
+ if (error) {
119
+ return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Error, {});
120
+ }
121
+ return /*#__PURE__*/ jsxRuntime.jsxs(PageHelpers.Page.Main, {
122
+ children: [
123
+ /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
124
+ children: formatMessage({
125
+ id: 'Settings.sessions.title',
126
+ defaultMessage: 'Active Devices'
127
+ })
128
+ }),
129
+ /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
130
+ title: formatMessage({
131
+ id: 'Settings.sessions.title',
132
+ defaultMessage: 'Active Devices'
133
+ }),
134
+ subtitle: formatMessage({
135
+ id: 'Settings.sessions.subtitle',
136
+ defaultMessage: 'These are the devices and sessions currently signed in to your account.'
137
+ }),
138
+ primaryAction: sessions.length > 0 ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
139
+ gap: 2,
140
+ children: [
141
+ sessions.length > 1 ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Root, {
142
+ children: [
143
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Trigger, {
144
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
145
+ variant: "secondary",
146
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.SignOut, {}),
147
+ children: formatMessage({
148
+ id: 'Settings.sessions.revokeOthers',
149
+ defaultMessage: 'Log out of other devices'
150
+ })
151
+ })
152
+ }),
153
+ /*#__PURE__*/ jsxRuntime.jsx(ConfirmDialog.ConfirmDialog, {
154
+ onConfirm: handleRevokeOthers,
155
+ children: formatMessage({
156
+ id: 'Settings.sessions.revokeOthers.confirm',
157
+ defaultMessage: 'Are you sure? This will end every other active session. You will stay signed in on this device.'
158
+ })
159
+ })
160
+ ]
161
+ }) : null,
162
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Root, {
163
+ children: [
164
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Trigger, {
165
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
166
+ variant: "danger-light",
167
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.SignOut, {}),
168
+ children: formatMessage({
169
+ id: 'Settings.sessions.revokeAll',
170
+ defaultMessage: 'Log out of all devices'
171
+ })
172
+ })
173
+ }),
174
+ /*#__PURE__*/ jsxRuntime.jsx(ConfirmDialog.ConfirmDialog, {
175
+ onConfirm: handleRevokeAll,
176
+ children: formatMessage({
177
+ id: 'Settings.sessions.revokeAll.confirm',
178
+ defaultMessage: 'Are you sure? This will end every active session, including this one, and you will need to log in again.'
179
+ })
180
+ })
181
+ ]
182
+ })
183
+ ]
184
+ }) : undefined
185
+ }),
186
+ /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
187
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
188
+ background: "neutral0",
189
+ hasRadius: true,
190
+ shadow: "filterShadow",
191
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Table, {
192
+ colCount: 4,
193
+ rowCount: sessions.length,
194
+ children: [
195
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Thead, {
196
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
197
+ children: [
198
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
199
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
200
+ variant: "sigma",
201
+ children: formatMessage({
202
+ id: 'Settings.sessions.device',
203
+ defaultMessage: 'Device'
204
+ })
205
+ })
206
+ }),
207
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
208
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
209
+ variant: "sigma",
210
+ children: formatMessage({
211
+ id: 'Settings.sessions.loginAt',
212
+ defaultMessage: 'Signed in'
213
+ })
214
+ })
215
+ }),
216
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
217
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
218
+ variant: "sigma",
219
+ children: formatMessage({
220
+ id: 'Settings.sessions.lastActiveAt',
221
+ defaultMessage: 'Last used'
222
+ })
223
+ })
224
+ }),
225
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
226
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
227
+ variant: "sigma",
228
+ children: formatMessage({
229
+ id: 'Settings.sessions.actions',
230
+ defaultMessage: 'Actions'
231
+ })
232
+ })
233
+ })
234
+ ]
235
+ })
236
+ }),
237
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tbody, {
238
+ children: sessions.map((session)=>/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
239
+ children: [
240
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
241
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
242
+ gap: 2,
243
+ children: [
244
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
245
+ textColor: "neutral800",
246
+ children: session.deviceName ?? (session.deviceId ? session.deviceId.slice(0, 8) : formatMessage({
247
+ id: 'Settings.sessions.unknownDevice',
248
+ defaultMessage: 'Unknown device'
249
+ }))
250
+ }),
251
+ session.current && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
252
+ children: formatMessage({
253
+ id: 'Settings.sessions.current',
254
+ defaultMessage: 'This device'
255
+ })
256
+ })
257
+ ]
258
+ })
259
+ }),
260
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
261
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
262
+ textColor: "neutral800",
263
+ children: session.loginAt ? /*#__PURE__*/ jsxRuntime.jsx(RelativeTime.RelativeTime, {
264
+ timestamp: new Date(session.loginAt)
265
+ }) : '-'
266
+ })
267
+ }),
268
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
269
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
270
+ textColor: "neutral800",
271
+ children: session.lastActiveAt ? /*#__PURE__*/ jsxRuntime.jsx(RelativeTime.RelativeTime, {
272
+ timestamp: new Date(session.lastActiveAt)
273
+ }) : '-'
274
+ })
275
+ }),
276
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
277
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
278
+ justifyContent: "end",
279
+ onClick: (e)=>e.stopPropagation(),
280
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Root, {
281
+ children: [
282
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Trigger, {
283
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
284
+ label: formatMessage({
285
+ id: 'Settings.sessions.revoke',
286
+ defaultMessage: 'End session'
287
+ }),
288
+ variant: "ghost",
289
+ children: /*#__PURE__*/ jsxRuntime.jsx(icons.SignOut, {})
290
+ })
291
+ }),
292
+ /*#__PURE__*/ jsxRuntime.jsx(ConfirmDialog.ConfirmDialog, {
293
+ onConfirm: ()=>handleRevoke(session),
294
+ children: session.current ? formatMessage({
295
+ id: 'Settings.sessions.revoke.confirmCurrent',
296
+ defaultMessage: 'This is the device you are currently using. Ending this session will log you out.'
297
+ }) : formatMessage({
298
+ id: 'Settings.sessions.revoke.confirm',
299
+ defaultMessage: 'Are you sure you want to end this session? The device will need to log in again.'
300
+ })
301
+ })
302
+ ]
303
+ })
304
+ })
305
+ })
306
+ ]
307
+ }, session.id))
308
+ })
309
+ ]
310
+ })
311
+ })
312
+ })
313
+ ]
314
+ });
315
+ };
316
+
317
+ exports.SessionsPage = SessionsPage;
318
+ //# sourceMappingURL=SessionsPage.js.map