@strapi/admin 5.48.1 → 5.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/StrapiApp.js +33 -20
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +6 -1
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/Context.js +4 -3
- package/dist/admin/admin/src/components/Context.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js +97 -2
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
- package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
- package/dist/admin/admin/src/components/Filters.js +3 -2
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Form.js +9 -5
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
- package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js +3 -2
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
- package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
- package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
- package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
- package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
- package/dist/admin/admin/src/components/LeftMenu.js +3 -2
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +10 -0
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +3 -2
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/Pagination.js +3 -2
- package/dist/admin/admin/src/components/Pagination.js.map +1 -1
- package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
- package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js +6 -4
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/SearchInput.js +3 -2
- package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
- package/dist/admin/admin/src/components/Table.js +3 -2
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +3 -2
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
- package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js +39 -33
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs +19 -17
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/features/Auth.js +78 -6
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +77 -6
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/BackButton.js +3 -2
- package/dist/admin/admin/src/features/BackButton.js.map +1 -1
- package/dist/admin/admin/src/features/Configuration.js +3 -2
- package/dist/admin/admin/src/features/Configuration.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.js +3 -2
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +7 -3
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js +3 -2
- package/dist/admin/admin/src/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
- package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
- package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
- package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
- package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
- package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
- package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
- package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
- package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
- package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
- package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
- package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
- package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
- package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
- package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
- package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
- package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.js +7 -3
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useOnce.js +3 -2
- package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
- package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
- package/dist/admin/admin/src/hooks/useSettingsMenu.js +7 -3
- package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -7
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
- package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
- package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
- package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
- package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +3 -2
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +7 -3
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
- package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
- package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
- package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
- package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
- package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +4 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +11 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +11 -4
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -6
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +71 -27
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +26 -4
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/router.js +9 -0
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs +9 -0
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/services/auth.js +43 -2
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs +41 -3
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +22 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +22 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.js +748 -265
- package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.mjs +745 -266
- package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
- package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
- package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/locales.js +3 -2
- package/dist/admin/admin/src/utils/locales.js.map +1 -1
- package/dist/admin/admin/src/utils/objects.js +9 -4
- package/dist/admin/admin/src/utils/objects.js.map +1 -1
- package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
- package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/urls.js +5 -1
- package/dist/admin/admin/src/utils/urls.js.map +1 -1
- package/dist/admin/admin/tests/server.js +25 -0
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs +25 -0
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js +3 -2
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
- package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/StrapiApp.d.ts +11 -5
- package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Renderer.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
- package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
- package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
- package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
- package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
- package/dist/admin/src/components/SubNav.d.ts +5 -6
- package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
- package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
- package/dist/admin/src/core/apis/router.d.ts +2 -3
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/utils/createHook.d.ts +4 -4
- package/dist/admin/src/features/AppInfo.d.ts +1 -2
- package/dist/admin/src/features/StrapiApp.d.ts +1 -2
- package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
- package/dist/admin/src/hooks/useAdminRoles.d.ts +2 -2
- package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
- package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
- package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
- package/dist/admin/src/hooks/useQueryParams.d.ts +1 -1
- package/dist/admin/src/hooks/useThrottledCallback.d.ts +0 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
- package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
- package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
- package/dist/admin/src/reducer.d.ts +1 -1
- package/dist/admin/src/services/admin.d.ts +2 -2
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/apiTokens.d.ts +1 -1
- package/dist/admin/src/services/auth.d.ts +29 -27
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +7 -7
- package/dist/admin/src/services/webhooks.d.ts +2 -2
- package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
- package/dist/admin/src/utils/locales.d.ts +0 -1
- package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
- package/dist/admin/src/utils/shims.d.ts +1 -1
- package/dist/admin/tests/store.d.ts +4 -4
- package/dist/admin/tests/utils.d.ts +5 -5
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
- package/dist/ee/admin/src/services/ai.d.ts +2 -2
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
- package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +1 -2
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/user.d.ts +1 -1
- package/dist/ee/server/src/destroy.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +2 -3
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/ee/server/src/register.d.ts.map +1 -1
- package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
- package/dist/ee/server/src/services/auth.d.ts.map +1 -1
- package/dist/ee/server/src/services/index.d.ts +1 -1
- package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
- package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
- package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
- package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
- package/dist/ee/server/src/services/role.d.ts.map +1 -1
- package/dist/ee/server/src/services/user.d.ts.map +1 -1
- package/dist/ee/server/src/utils/index.d.ts.map +1 -1
- package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
- package/dist/ee/server/src/validation/authentication.d.ts +2 -2
- package/dist/ee/server/src/validation/role.d.ts +6 -6
- package/dist/ee/server/src/validation/role.d.ts.map +1 -1
- package/dist/ee/server/src/validation/user.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.js +5 -1
- package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/ee/server/src/controllers/user.js +6 -2
- package/dist/server/ee/server/src/controllers/user.js.map +1 -1
- package/dist/server/ee/server/src/services/auth.js +5 -1
- package/dist/server/ee/server/src/services/auth.js.map +1 -1
- package/dist/server/ee/server/src/services/user.js +8 -4
- package/dist/server/ee/server/src/services/user.js.map +1 -1
- package/dist/server/index.js +6 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/server/src/ai/services/ai.js +10 -4
- package/dist/server/server/src/ai/services/ai.js.map +1 -1
- package/dist/server/server/src/content-types/session.js +6 -0
- package/dist/server/server/src/content-types/session.js.map +1 -1
- package/dist/server/server/src/content-types/session.mjs +6 -0
- package/dist/server/server/src/content-types/session.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +9 -4
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-session.js +61 -0
- package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
- package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
- package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
- package/dist/server/server/src/controllers/authentication.js +18 -6
- package/dist/server/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/server/src/controllers/authentication.mjs +12 -5
- package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/server/src/controllers/index.js +2 -0
- package/dist/server/server/src/controllers/index.js.map +1 -1
- package/dist/server/server/src/controllers/index.mjs +2 -0
- package/dist/server/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/role.js +2 -4
- package/dist/server/server/src/controllers/role.js.map +1 -1
- package/dist/server/server/src/controllers/role.mjs +2 -4
- package/dist/server/server/src/controllers/role.mjs.map +1 -1
- package/dist/server/server/src/controllers/user.js +3 -2
- package/dist/server/server/src/controllers/user.js.map +1 -1
- package/dist/server/server/src/controllers/webhooks.js +7 -2
- package/dist/server/server/src/controllers/webhooks.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.js +7 -2
- package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/policies/hasPermissions.js +7 -3
- package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js +9 -4
- package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js +12 -26
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs +12 -26
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +7 -3
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/auth.js +8 -3
- package/dist/server/server/src/services/auth.js.map +1 -1
- package/dist/server/server/src/services/content-type.js +6 -2
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/encryption.js +8 -4
- package/dist/server/server/src/services/encryption.js.map +1 -1
- package/dist/server/server/src/services/passport.js +6 -2
- package/dist/server/server/src/services/passport.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.js +5 -1
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
- package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
- package/dist/server/server/src/services/permission/queries.js +5 -1
- package/dist/server/server/src/services/permission/queries.js.map +1 -1
- package/dist/server/server/src/services/project-settings.js +6 -2
- package/dist/server/server/src/services/project-settings.js.map +1 -1
- package/dist/server/server/src/services/role.js +10 -5
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +2 -1
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/services/token.js +7 -2
- package/dist/server/server/src/services/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/permission.js +5 -1
- package/dist/server/server/src/services/transfer/permission.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.js +10 -5
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/user.js +10 -6
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/strategies/admin.js +4 -0
- package/dist/server/server/src/strategies/admin.js.map +1 -1
- package/dist/server/server/src/strategies/admin.mjs +4 -0
- package/dist/server/server/src/strategies/admin.mjs.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
- package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.js +6 -2
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
- package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
- package/dist/server/shared/utils/session-auth.js +5 -1
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/src/ai/controllers/ai.d.ts +3 -3
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/config/admin-conditions.d.ts +2 -2
- package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +6 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/content-types/session.d.ts +6 -0
- package/dist/server/src/content-types/session.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-token.d.ts +5 -5
- package/dist/server/src/controllers/api-token.d.ts +1 -1
- package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
- package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
- package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
- package/dist/server/src/controllers/authentication.d.ts +4 -4
- package/dist/server/src/controllers/authentication.d.ts.map +1 -1
- package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
- package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
- package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
- package/dist/server/src/controllers/homepage.d.ts +2 -2
- package/dist/server/src/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +33 -43
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/role.d.ts +4 -4
- package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
- package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
- package/dist/server/src/controllers/transfer/token.d.ts +1 -1
- package/dist/server/src/controllers/user.d.ts +2 -2
- package/dist/server/src/controllers/webhooks.d.ts +4 -4
- package/dist/server/src/domain/action/index.d.ts +4 -65
- package/dist/server/src/domain/action/index.d.ts.map +1 -1
- package/dist/server/src/domain/action/provider.d.ts +30 -3
- package/dist/server/src/domain/action/provider.d.ts.map +1 -1
- package/dist/server/src/domain/condition/index.d.ts.map +1 -1
- package/dist/server/src/domain/condition/provider.d.ts +19 -2
- package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts +0 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/domain/user.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +51 -63
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
- package/dist/server/src/middlewares/index.d.ts +0 -1
- package/dist/server/src/middlewares/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
- package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +0 -1
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
- package/dist/server/src/routes/transfer.d.ts +0 -1
- package/dist/server/src/routes/transfer.d.ts.map +1 -1
- package/dist/server/src/routes/users.d.ts.map +1 -1
- package/dist/server/src/services/action.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts +5 -6
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/auth.d.ts.map +1 -1
- package/dist/server/src/services/condition.d.ts.map +1 -1
- package/dist/server/src/services/content-type.d.ts.map +1 -1
- package/dist/server/src/services/encryption.d.ts.map +1 -1
- package/dist/server/src/services/homepage.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +12 -21
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
- package/dist/server/src/services/passport.d.ts +0 -1
- package/dist/server/src/services/passport.d.ts.map +1 -1
- package/dist/server/src/services/permission/engine.d.ts +1 -2
- package/dist/server/src/services/permission/engine.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
- package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
- package/dist/server/src/services/permission/queries.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
- package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
- package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +13 -38
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/project-settings.d.ts +2 -4
- package/dist/server/src/services/project-settings.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts +7 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/services/token.d.ts +1 -1
- package/dist/server/src/services/token.d.ts.map +1 -1
- package/dist/server/src/services/transfer/token.d.ts +11 -11
- package/dist/server/src/services/transfer/token.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts +3 -3
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/server/src/strategies/admin-token.d.ts +4 -4
- package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
- package/dist/server/src/strategies/admin.d.ts.map +1 -1
- package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
- package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
- package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
- package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
- package/dist/server/src/validation/action-provider.d.ts +2 -2
- package/dist/server/src/validation/action-provider.d.ts.map +1 -1
- package/dist/server/src/validation/admin-tokens.d.ts +2 -2
- package/dist/server/src/validation/api-tokens.d.ts +4 -4
- package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
- package/dist/server/src/validation/authentication/login.d.ts +1 -1
- package/dist/server/src/validation/authentication/register.d.ts +6 -6
- package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
- package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
- package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
- package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
- package/dist/server/src/validation/common-validators.d.ts.map +1 -1
- package/dist/server/src/validation/permission.d.ts +6 -6
- package/dist/server/src/validation/permission.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
- package/dist/server/src/validation/project-settings.d.ts +6 -6
- package/dist/server/src/validation/role.d.ts +8 -8
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/server/src/validation/transfer/token.d.ts +4 -4
- package/dist/server/src/validation/user.d.ts +8 -8
- package/dist/shared/contracts/permissions.d.ts +1 -0
- package/dist/shared/contracts/permissions.d.ts.map +1 -1
- package/dist/shared/contracts/sessions.d.ts +62 -0
- package/dist/shared/contracts/sessions.d.ts.map +1 -0
- package/dist/shared/contracts/shared.d.ts +1 -1
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts +1 -1
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +11 -11
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var invariant = require('invariant');
|
|
4
4
|
|
|
5
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var invariant__default = /*#__PURE__*/_interopDefault(invariant);
|
|
8
|
+
|
|
5
9
|
class Widgets {
|
|
6
10
|
register(widgets) {
|
|
7
11
|
if (Array.isArray(widgets)) {
|
|
@@ -29,10 +33,10 @@ class Widgets {
|
|
|
29
33
|
};
|
|
30
34
|
this.checkWidgets = (widgets)=>{
|
|
31
35
|
widgets.forEach((widget)=>{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
invariant__default.default(widget.id, 'An id must be provided');
|
|
37
|
+
invariant__default.default(widget.component, 'A component must be provided');
|
|
38
|
+
invariant__default.default(widget.title, 'A title must be provided');
|
|
39
|
+
invariant__default.default(widget.icon, 'An icon must be provided');
|
|
36
40
|
});
|
|
37
41
|
};
|
|
38
42
|
this.getAll = ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Widgets.js","sources":["../../../../../../admin/src/core/apis/Widgets.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport invariant from 'invariant';\nimport { To } from 'react-router-dom';\n\nimport { Permission } from '../../../../shared/contracts/shared';\n\nimport type { Internal, Utils } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype WidgetUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype WidgetArgs = {\n icon?: typeof import('@strapi/icons').PuzzlePiece;\n title: MessageDescriptor;\n link?: {\n label: MessageDescriptor;\n href: To;\n };\n component: () => Promise<React.ComponentType>;\n pluginId?: string;\n id: string;\n permissions?: Array<Pick<Permission, 'action'> & Partial<Omit<Permission, 'action'>>>;\n roles?: string[];\n};\n\ntype WidgetWithUID = Omit<WidgetArgs, 'id' | 'pluginId'> & { uid: WidgetUID };\n\ntype DescriptionReducer = (prev: WidgetArgs[]) => WidgetArgs[];\n\nclass Widgets {\n widgets: WidgetArgs[];\n\n constructor() {\n this.widgets = [];\n }\n\n private generateUid = (widget: WidgetArgs): WidgetUID => {\n return widget.pluginId ? `plugin::${widget.pluginId}.${widget.id}` : `global::${widget.id}`;\n };\n\n private checkWidgets = (widgets: WidgetArgs[]): void => {\n widgets.forEach((widget) => {\n invariant(widget.id, 'An id must be provided');\n invariant(widget.component, 'A component must be provided');\n invariant(widget.title, 'A title must be provided');\n invariant(widget.icon, 'An icon must be provided');\n });\n };\n\n register(widgets: WidgetArgs | WidgetArgs[] | DescriptionReducer) {\n if (Array.isArray(widgets)) {\n this.checkWidgets(widgets);\n this.widgets = [...this.widgets, ...widgets];\n } else if (typeof widgets === 'function') {\n const newWidgets = widgets(this.widgets);\n this.checkWidgets(newWidgets);\n this.widgets = newWidgets;\n } else if (typeof widgets === 'object') {\n this.checkWidgets([widgets]);\n this.widgets.push(widgets);\n } else {\n throw new Error('Expected widgets to be an array or a reducer function');\n }\n }\n\n getAll = (): WidgetWithUID[] => {\n return this.widgets.map((widget) => {\n const { id, pluginId, ...widgetBase } = widget;\n return {\n ...widgetBase,\n uid: this.generateUid(widget),\n };\n });\n };\n}\n\nexport { Widgets };\nexport type { WidgetArgs, WidgetWithUID };\n"],"names":["Widgets","register","widgets","Array","isArray","checkWidgets","newWidgets","push","Error","generateUid","widget","pluginId","id","forEach","invariant","component","title","icon","getAll","map","widgetBase","uid"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Widgets.js","sources":["../../../../../../admin/src/core/apis/Widgets.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport invariant from 'invariant';\nimport { To } from 'react-router-dom';\n\nimport { Permission } from '../../../../shared/contracts/shared';\n\nimport type { Internal, Utils } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype WidgetUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype WidgetArgs = {\n icon?: typeof import('@strapi/icons').PuzzlePiece;\n title: MessageDescriptor;\n link?: {\n label: MessageDescriptor;\n href: To;\n };\n component: () => Promise<React.ComponentType>;\n pluginId?: string;\n id: string;\n permissions?: Array<Pick<Permission, 'action'> & Partial<Omit<Permission, 'action'>>>;\n roles?: string[];\n};\n\ntype WidgetWithUID = Omit<WidgetArgs, 'id' | 'pluginId'> & { uid: WidgetUID };\n\ntype DescriptionReducer = (prev: WidgetArgs[]) => WidgetArgs[];\n\nclass Widgets {\n widgets: WidgetArgs[];\n\n constructor() {\n this.widgets = [];\n }\n\n private generateUid = (widget: WidgetArgs): WidgetUID => {\n return widget.pluginId ? `plugin::${widget.pluginId}.${widget.id}` : `global::${widget.id}`;\n };\n\n private checkWidgets = (widgets: WidgetArgs[]): void => {\n widgets.forEach((widget) => {\n invariant(widget.id, 'An id must be provided');\n invariant(widget.component, 'A component must be provided');\n invariant(widget.title, 'A title must be provided');\n invariant(widget.icon, 'An icon must be provided');\n });\n };\n\n register(widgets: WidgetArgs | WidgetArgs[] | DescriptionReducer) {\n if (Array.isArray(widgets)) {\n this.checkWidgets(widgets);\n this.widgets = [...this.widgets, ...widgets];\n } else if (typeof widgets === 'function') {\n const newWidgets = widgets(this.widgets);\n this.checkWidgets(newWidgets);\n this.widgets = newWidgets;\n } else if (typeof widgets === 'object') {\n this.checkWidgets([widgets]);\n this.widgets.push(widgets);\n } else {\n throw new Error('Expected widgets to be an array or a reducer function');\n }\n }\n\n getAll = (): WidgetWithUID[] => {\n return this.widgets.map((widget) => {\n const { id, pluginId, ...widgetBase } = widget;\n return {\n ...widgetBase,\n uid: this.generateUid(widget),\n };\n });\n };\n}\n\nexport { Widgets };\nexport type { WidgetArgs, WidgetWithUID };\n"],"names":["Widgets","register","widgets","Array","isArray","checkWidgets","newWidgets","push","Error","generateUid","widget","pluginId","id","forEach","invariant","component","title","icon","getAll","map","widgetBase","uid"],"mappings":";;;;;;;;AAkCA,MAAMA,OAAAA,CAAAA;AAoBJC,IAAAA,QAAAA,CAASC,OAAuD,EAAE;QAChE,IAAIC,KAAAA,CAAMC,OAAO,CAACF,OAAAA,CAAAA,EAAU;YAC1B,IAAI,CAACG,YAAY,CAACH,OAAAA,CAAAA;YAClB,IAAI,CAACA,OAAO,GAAG;AAAI,gBAAA,GAAA,IAAI,CAACA,OAAO;AAAKA,gBAAAA,GAAAA;AAAQ,aAAA;QAC9C,CAAA,MAAO,IAAI,OAAOA,OAAAA,KAAY,UAAA,EAAY;AACxC,YAAA,MAAMI,UAAAA,GAAaJ,OAAAA,CAAQ,IAAI,CAACA,OAAO,CAAA;YACvC,IAAI,CAACG,YAAY,CAACC,UAAAA,CAAAA;YAClB,IAAI,CAACJ,OAAO,GAAGI,UAAAA;QACjB,CAAA,MAAO,IAAI,OAAOJ,OAAAA,KAAY,QAAA,EAAU;YACtC,IAAI,CAACG,YAAY,CAAC;AAACH,gBAAAA;AAAQ,aAAA,CAAA;AAC3B,YAAA,IAAI,CAACA,OAAO,CAACK,IAAI,CAACL,OAAAA,CAAAA;QACpB,CAAA,MAAO;AACL,YAAA,MAAM,IAAIM,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;AACF,IAAA;IA/BA,WAAA,EAAc;AAINC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,CAACC,MAAAA,GAAAA;YACrB,OAAOA,MAAAA,CAAOC,QAAQ,GAAG,CAAC,QAAQ,EAAED,MAAAA,CAAOC,QAAQ,CAAC,CAAC,EAAED,MAAAA,CAAOE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAEF,MAAAA,CAAOE,EAAE,CAAA,CAAE;AAC7F,QAAA,CAAA;AAEQP,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,CAACH,OAAAA,GAAAA;YACtBA,OAAAA,CAAQW,OAAO,CAAC,CAACH,MAAAA,GAAAA;gBACfI,0BAAAA,CAAUJ,MAAAA,CAAOE,EAAE,EAAE,wBAAA,CAAA;gBACrBE,0BAAAA,CAAUJ,MAAAA,CAAOK,SAAS,EAAE,8BAAA,CAAA;gBAC5BD,0BAAAA,CAAUJ,MAAAA,CAAOM,KAAK,EAAE,0BAAA,CAAA;gBACxBF,0BAAAA,CAAUJ,MAAAA,CAAOO,IAAI,EAAE,0BAAA,CAAA;AACzB,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;aAkBAC,MAAAA,GAAS,IAAA;AACP,YAAA,OAAO,IAAI,CAAChB,OAAO,CAACiB,GAAG,CAAC,CAACT,MAAAA,GAAAA;AACvB,gBAAA,MAAM,EAAEE,EAAE,EAAED,QAAQ,EAAE,GAAGS,YAAY,GAAGV,MAAAA;gBACxC,OAAO;AACL,oBAAA,GAAGU,UAAU;oBACbC,GAAAA,EAAK,IAAI,CAACZ,WAAW,CAACC,MAAAA;AACxB,iBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAxCE,IAAI,CAACR,OAAO,GAAG,EAAE;AACnB,IAAA;AAwCF;;;;"}
|
|
@@ -11,6 +11,11 @@ var LanguageProvider = require('../../components/LanguageProvider.js');
|
|
|
11
11
|
var Theme = require('../../components/Theme.js');
|
|
12
12
|
var NotFoundPage = require('../../pages/NotFoundPage.js');
|
|
13
13
|
var router = require('../../router.js');
|
|
14
|
+
var retryDynamicImport = require('../../utils/retryDynamicImport.js');
|
|
15
|
+
|
|
16
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
|
|
18
|
+
var invariant__default = /*#__PURE__*/_interopDefault(invariant);
|
|
14
19
|
|
|
15
20
|
class Router {
|
|
16
21
|
get routes() {
|
|
@@ -26,6 +31,22 @@ class Router {
|
|
|
26
31
|
* @internal This method is used internally by Strapi to create the router.
|
|
27
32
|
* It should not be used by plugins, doing so will likely break the application.
|
|
28
33
|
*/ createRouter(strapi, { memory, ...opts } = {}) {
|
|
34
|
+
const authenticatedLayoutRoute = {
|
|
35
|
+
path: '/*',
|
|
36
|
+
lazy: async ()=>{
|
|
37
|
+
const { PrivateAdminLayout } = await Promise.resolve().then(function () { return require('../../layouts/AuthenticatedLayout.js'); });
|
|
38
|
+
return {
|
|
39
|
+
Component: PrivateAdminLayout
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
children: [
|
|
43
|
+
...this.routes,
|
|
44
|
+
{
|
|
45
|
+
path: '*',
|
|
46
|
+
element: /*#__PURE__*/ jsxRuntime.jsx(NotFoundPage.NotFoundPage, {})
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
};
|
|
29
50
|
const routes = [
|
|
30
51
|
{
|
|
31
52
|
path: '/*',
|
|
@@ -44,23 +65,8 @@ class Router {
|
|
|
44
65
|
store: strapi.store
|
|
45
66
|
}),
|
|
46
67
|
children: [
|
|
47
|
-
...router.getImmutableRoutes(),
|
|
48
|
-
|
|
49
|
-
path: '/*',
|
|
50
|
-
lazy: async ()=>{
|
|
51
|
-
const { PrivateAdminLayout } = await Promise.resolve().then(function () { return require('../../layouts/AuthenticatedLayout.js'); });
|
|
52
|
-
return {
|
|
53
|
-
Component: PrivateAdminLayout
|
|
54
|
-
};
|
|
55
|
-
},
|
|
56
|
-
children: [
|
|
57
|
-
...this.routes,
|
|
58
|
-
{
|
|
59
|
-
path: '*',
|
|
60
|
-
element: /*#__PURE__*/ jsxRuntime.jsx(NotFoundPage.NotFoundPage, {})
|
|
61
|
-
}
|
|
62
|
-
]
|
|
63
|
-
}
|
|
68
|
+
...retryDynamicImport.wrapRouteObjectsLazyWithRetry(router.getImmutableRoutes()),
|
|
69
|
+
retryDynamicImport.wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute)
|
|
64
70
|
]
|
|
65
71
|
}
|
|
66
72
|
];
|
|
@@ -75,10 +81,10 @@ class Router {
|
|
|
75
81
|
if (typeof section === 'object' && 'links' in section) {
|
|
76
82
|
/**
|
|
77
83
|
* Someone has passed an entire pre-configured section object
|
|
78
|
-
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
*/ invariant__default.default(section.id, 'section.id should be defined');
|
|
85
|
+
invariant__default.default(section.intlLabel?.id && section.intlLabel?.defaultMessage, 'section.intlLabel should be defined');
|
|
86
|
+
invariant__default.default(this.settings[section.id] === undefined, 'A similar section already exists');
|
|
87
|
+
invariant__default.default(Array.isArray(section.links), 'TypeError expected links to be an array');
|
|
82
88
|
this.settings[section.id] = {
|
|
83
89
|
...section,
|
|
84
90
|
links: []
|
|
@@ -89,9 +95,9 @@ class Router {
|
|
|
89
95
|
} else if (typeof section === 'object' && link) {
|
|
90
96
|
/**
|
|
91
97
|
* we need to create the section first
|
|
92
|
-
*/
|
|
93
|
-
|
|
94
|
-
|
|
98
|
+
*/ invariant__default.default(section.id, 'section.id should be defined');
|
|
99
|
+
invariant__default.default(section.intlLabel?.id && section.intlLabel?.defaultMessage, 'section.intlLabel should be defined');
|
|
100
|
+
invariant__default.default(this.settings[section.id] === undefined, 'A similar section already exists');
|
|
95
101
|
this.settings[section.id] = {
|
|
96
102
|
...section,
|
|
97
103
|
links: []
|
|
@@ -145,10 +151,10 @@ class Router {
|
|
|
145
151
|
}
|
|
146
152
|
};
|
|
147
153
|
this.addMenuLink = (link)=>{
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
154
|
+
invariant__default.default(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);
|
|
155
|
+
invariant__default.default(typeof link.to === 'string', `[${link.intlLabel.defaultMessage}]: Expected link.to to be a string instead received ${typeof link.to}`);
|
|
156
|
+
invariant__default.default(link.intlLabel?.id && link.intlLabel?.defaultMessage, `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`);
|
|
157
|
+
invariant__default.default(!link.Component || link.Component && typeof link.Component === 'function', `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \`Component: () => import(path)\` instead.`);
|
|
152
158
|
if (link.Component && typeof link.Component === 'function' && // @ts-expect-error – shh
|
|
153
159
|
link.Component[Symbol.toStringTag] === 'AsyncFunction') {
|
|
154
160
|
console.warn(`
|
|
@@ -180,11 +186,11 @@ class Router {
|
|
|
180
186
|
this.menu.push(restLink);
|
|
181
187
|
};
|
|
182
188
|
this.createSettingsLink = (sectionId, link)=>{
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
189
|
+
invariant__default.default(this._settings[sectionId], 'The section does not exist');
|
|
190
|
+
invariant__default.default(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);
|
|
191
|
+
invariant__default.default(link.intlLabel?.id && link.intlLabel?.defaultMessage, `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`);
|
|
192
|
+
invariant__default.default(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);
|
|
193
|
+
invariant__default.default(!link.Component || link.Component && typeof link.Component === 'function', `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \`Component: () => import(path)\` instead.`);
|
|
188
194
|
if (link.Component && typeof link.Component === 'function' && // @ts-expect-error – shh
|
|
189
195
|
link.Component[Symbol.toStringTag] === 'AsyncFunction') {
|
|
190
196
|
console.warn(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sources":["../../../../../../admin/src/core/apis/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\n\nimport type { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n target?: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...getImmutableRoutes(),\n {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n },\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component?: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n"],"names":["Router","routes","_routes","menu","_menu","settings","_settings","createRouter","strapi","memory","opts","path","errorElement","_jsx","Provider","store","LanguageProvider","messages","configurations","translations","Theme","themes","ErrorElement","element","App","children","getImmutableRoutes","lazy","PrivateAdminLayout","Component","NotFoundPage","router","createMemoryRouter","createBrowserRouter","addSettingsLink","section","link","invariant","id","intlLabel","defaultMessage","undefined","Array","isArray","links","forEach","createSettingsLink","l","Error","addRoute","route","push","getPrintableType","initialRoutes","global","addMenuLink","to","Symbol","toStringTag","console","warn","trim","startsWith","slice","restLink","mod","default","sectionId","split","join","settingsIndex","findIndex","value","nativeType","Object","name"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sources":["../../../../../../admin/src/core/apis/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\nimport {\n wrapRouteObjectLazyWithRetry,\n wrapRouteObjectsLazyWithRetry,\n} from '../../utils/retryDynamicImport';\n\nimport type { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n target?: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const authenticatedLayoutRoute: RouteObject = {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n };\n\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...wrapRouteObjectsLazyWithRetry(getImmutableRoutes()),\n wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute),\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component?: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n section: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n"],"names":["Router","routes","_routes","menu","_menu","settings","_settings","createRouter","strapi","memory","opts","authenticatedLayoutRoute","path","lazy","PrivateAdminLayout","Component","children","element","_jsx","NotFoundPage","errorElement","Provider","store","LanguageProvider","messages","configurations","translations","Theme","themes","ErrorElement","App","wrapRouteObjectsLazyWithRetry","getImmutableRoutes","wrapRouteObjectLazyWithRetry","router","createMemoryRouter","createBrowserRouter","addSettingsLink","section","link","invariant","id","intlLabel","defaultMessage","undefined","Array","isArray","links","forEach","createSettingsLink","l","Error","addRoute","route","push","getPrintableType","initialRoutes","global","addMenuLink","to","Symbol","toStringTag","console","warn","trim","startsWith","slice","restLink","mod","default","sectionId","split","join","settingsIndex","findIndex","value","nativeType","Object","name"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { LanguageProvider } from '../../components/LanguageProvider.mjs';
|
|
|
9
9
|
import { Theme } from '../../components/Theme.mjs';
|
|
10
10
|
import { NotFoundPage } from '../../pages/NotFoundPage.mjs';
|
|
11
11
|
import { getImmutableRoutes } from '../../router.mjs';
|
|
12
|
+
import { wrapRouteObjectsLazyWithRetry, wrapRouteObjectLazyWithRetry } from '../../utils/retryDynamicImport.mjs';
|
|
12
13
|
|
|
13
14
|
class Router {
|
|
14
15
|
get routes() {
|
|
@@ -24,6 +25,22 @@ class Router {
|
|
|
24
25
|
* @internal This method is used internally by Strapi to create the router.
|
|
25
26
|
* It should not be used by plugins, doing so will likely break the application.
|
|
26
27
|
*/ createRouter(strapi, { memory, ...opts } = {}) {
|
|
28
|
+
const authenticatedLayoutRoute = {
|
|
29
|
+
path: '/*',
|
|
30
|
+
lazy: async ()=>{
|
|
31
|
+
const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout.mjs');
|
|
32
|
+
return {
|
|
33
|
+
Component: PrivateAdminLayout
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
children: [
|
|
37
|
+
...this.routes,
|
|
38
|
+
{
|
|
39
|
+
path: '*',
|
|
40
|
+
element: /*#__PURE__*/ jsx(NotFoundPage, {})
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
};
|
|
27
44
|
const routes = [
|
|
28
45
|
{
|
|
29
46
|
path: '/*',
|
|
@@ -42,23 +59,8 @@ class Router {
|
|
|
42
59
|
store: strapi.store
|
|
43
60
|
}),
|
|
44
61
|
children: [
|
|
45
|
-
...getImmutableRoutes(),
|
|
46
|
-
|
|
47
|
-
path: '/*',
|
|
48
|
-
lazy: async ()=>{
|
|
49
|
-
const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout.mjs');
|
|
50
|
-
return {
|
|
51
|
-
Component: PrivateAdminLayout
|
|
52
|
-
};
|
|
53
|
-
},
|
|
54
|
-
children: [
|
|
55
|
-
...this.routes,
|
|
56
|
-
{
|
|
57
|
-
path: '*',
|
|
58
|
-
element: /*#__PURE__*/ jsx(NotFoundPage, {})
|
|
59
|
-
}
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
+
...wrapRouteObjectsLazyWithRetry(getImmutableRoutes()),
|
|
63
|
+
wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute)
|
|
62
64
|
]
|
|
63
65
|
}
|
|
64
66
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.mjs","sources":["../../../../../../admin/src/core/apis/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\n\nimport type { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n target?: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...getImmutableRoutes(),\n {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n },\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component?: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n"],"names":["Router","routes","_routes","menu","_menu","settings","_settings","createRouter","strapi","memory","opts","path","errorElement","_jsx","Provider","store","LanguageProvider","messages","configurations","translations","Theme","themes","ErrorElement","element","App","children","getImmutableRoutes","lazy","PrivateAdminLayout","Component","NotFoundPage","router","createMemoryRouter","createBrowserRouter","addSettingsLink","section","link","invariant","id","intlLabel","defaultMessage","undefined","Array","isArray","links","forEach","createSettingsLink","l","Error","addRoute","route","push","getPrintableType","initialRoutes","global","addMenuLink","to","Symbol","toStringTag","console","warn","trim","startsWith","slice","restLink","mod","default","sectionId","split","join","settingsIndex","findIndex","value","nativeType","Object","name"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.mjs","sources":["../../../../../../admin/src/core/apis/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\nimport {\n wrapRouteObjectLazyWithRetry,\n wrapRouteObjectsLazyWithRetry,\n} from '../../utils/retryDynamicImport';\n\nimport type { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n target?: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const authenticatedLayoutRoute: RouteObject = {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n };\n\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...wrapRouteObjectsLazyWithRetry(getImmutableRoutes()),\n wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute),\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component?: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n section: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". Component loaders should return a dynamic import with a default export shape, e.g. \\`Component: () => import(path).then((mod) => ({ default: mod.Component }))\\`. Async wrapper functions will stop being supported in a future version.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n"],"names":["Router","routes","_routes","menu","_menu","settings","_settings","createRouter","strapi","memory","opts","authenticatedLayoutRoute","path","lazy","PrivateAdminLayout","Component","children","element","_jsx","NotFoundPage","errorElement","Provider","store","LanguageProvider","messages","configurations","translations","Theme","themes","ErrorElement","App","wrapRouteObjectsLazyWithRetry","getImmutableRoutes","wrapRouteObjectLazyWithRetry","router","createMemoryRouter","createBrowserRouter","addSettingsLink","section","link","invariant","id","intlLabel","defaultMessage","undefined","Array","isArray","links","forEach","createSettingsLink","l","Error","addRoute","route","push","getPrintableType","initialRoutes","global","addMenuLink","to","Symbol","toStringTag","console","warn","trim","startsWith","slice","restLink","mod","default","sectionId","split","join","settingsIndex","findIndex","value","nativeType","Object","name"],"mappings":"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"}
|
|
@@ -15,7 +15,8 @@ var normalizeAdminLocale = require('../translations/normalizeAdminLocale.js');
|
|
|
15
15
|
var deviceId = require('../utils/deviceId.js');
|
|
16
16
|
var getFetchClient = require('../utils/getFetchClient.js');
|
|
17
17
|
|
|
18
|
-
function
|
|
18
|
+
function _interopNamespace(e) {
|
|
19
|
+
if (e && e.__esModule) return e;
|
|
19
20
|
var n = Object.create(null);
|
|
20
21
|
if (e) {
|
|
21
22
|
Object.keys(e).forEach(function (k) {
|
|
@@ -32,7 +33,7 @@ function _interopNamespaceDefault(e) {
|
|
|
32
33
|
return Object.freeze(n);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
var React__namespace = /*#__PURE__*/
|
|
36
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* ensure the Auth context never exposes a non-function for checkUserHasPermissions.
|
|
@@ -86,6 +87,69 @@ const AuthProvider = ({ children, _defaultPermissions = [], _disableRenewToken =
|
|
|
86
87
|
dispatch,
|
|
87
88
|
navigate
|
|
88
89
|
]);
|
|
90
|
+
/**
|
|
91
|
+
* Clear *only this tab's* session and redirect to login, without removing the
|
|
92
|
+
* shared `isLoggedIn`/`jwtToken` storage keys. Unlike `clearStateAndLogout`,
|
|
93
|
+
* this does not dispatch `logoutAction`, so it does not fire the cross-tab
|
|
94
|
+
* `storage` event that logs every tab out. Used by the speculative idle timer,
|
|
95
|
+
* which fires per-tab at the access token's `exp`: an idle tab must never tear
|
|
96
|
+
* down a session that another tab is still actively using. A genuine logout
|
|
97
|
+
* (user-initiated, or a server-confirmed 401 via `setOnSessionExpired`) still
|
|
98
|
+
* goes through `clearStateAndLogout` and broadcasts to all tabs.
|
|
99
|
+
*/ const clearLocalSessionAndRedirect = React__namespace.useCallback(()=>{
|
|
100
|
+
dispatch(api.adminApi.util.resetApiState());
|
|
101
|
+
dispatch(reducer.setToken(null));
|
|
102
|
+
navigate('/auth/login');
|
|
103
|
+
}, [
|
|
104
|
+
dispatch,
|
|
105
|
+
navigate
|
|
106
|
+
]);
|
|
107
|
+
const resyncToken = React__namespace.useCallback((newToken)=>{
|
|
108
|
+
dispatch(reducer.setToken(newToken));
|
|
109
|
+
}, [
|
|
110
|
+
dispatch
|
|
111
|
+
]);
|
|
112
|
+
/**
|
|
113
|
+
* Track the timestamp of the user's last interaction. This is the activity
|
|
114
|
+
* signal `useIdleSessionLogout` uses to tell an active user (silently renew
|
|
115
|
+
* their session) apart from a genuinely idle one (log out). Successful API
|
|
116
|
+
* calls don't refresh the short-lived access token on their own, so without
|
|
117
|
+
* this an actively-working user is logged out the moment the token expires.
|
|
118
|
+
*/ const lastActivityRef = React__namespace.useRef(Date.now());
|
|
119
|
+
React__namespace.useEffect(()=>{
|
|
120
|
+
const markActivity = ()=>{
|
|
121
|
+
lastActivityRef.current = Date.now();
|
|
122
|
+
};
|
|
123
|
+
const events = [
|
|
124
|
+
'pointerdown',
|
|
125
|
+
'keydown',
|
|
126
|
+
'click',
|
|
127
|
+
'scroll',
|
|
128
|
+
'touchstart'
|
|
129
|
+
];
|
|
130
|
+
events.forEach((event)=>window.addEventListener(event, markActivity, {
|
|
131
|
+
passive: true,
|
|
132
|
+
capture: true
|
|
133
|
+
}));
|
|
134
|
+
return ()=>{
|
|
135
|
+
events.forEach((event)=>window.removeEventListener(event, markActivity, {
|
|
136
|
+
capture: true
|
|
137
|
+
}));
|
|
138
|
+
};
|
|
139
|
+
}, []);
|
|
140
|
+
const getLastActivityAt = React__namespace.useCallback(()=>lastActivityRef.current, []);
|
|
141
|
+
/**
|
|
142
|
+
* Silently rotate the refresh token and mint a new access token. Returns
|
|
143
|
+
* `true` on success (the resulting `setToken` re-arms the idle timer) and
|
|
144
|
+
* `false` when the server rejects it (session genuinely over).
|
|
145
|
+
*/ const renewSession = React__namespace.useCallback(async ()=>{
|
|
146
|
+
try {
|
|
147
|
+
await getFetchClient.attemptTokenRefresh();
|
|
148
|
+
return true;
|
|
149
|
+
} catch {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
}, []);
|
|
89
153
|
React__namespace.useEffect(()=>{
|
|
90
154
|
if (user) {
|
|
91
155
|
if (user.preferedLanguage) {
|
|
@@ -125,12 +189,20 @@ const AuthProvider = ({ children, _defaultPermissions = [], _disableRenewToken =
|
|
|
125
189
|
clearStateAndLogout
|
|
126
190
|
]);
|
|
127
191
|
/**
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
192
|
+
* Session lifecycle at access-token expiry. The timer fires per-tab; the hook
|
|
193
|
+
* then either (1) re-syncs from a token another tab refreshed, (2) silently
|
|
194
|
+
* renews when the user has been active, or (3) logs out. Idle logout is local
|
|
195
|
+
* so an idle tab can't force-logout an actively-used one; a server-confirmed
|
|
196
|
+
* dead session (renewal rejected) broadcasts globally. See
|
|
197
|
+
* `useIdleSessionLogout` for the full rationale.
|
|
131
198
|
*/ useIdleSessionLogout.useIdleSessionLogout({
|
|
132
199
|
token,
|
|
133
|
-
onExpired:
|
|
200
|
+
onExpired: clearLocalSessionAndRedirect,
|
|
201
|
+
onSessionDead: clearStateAndLogout,
|
|
202
|
+
getStoredToken: reducer.getStoredToken,
|
|
203
|
+
onResync: resyncToken,
|
|
204
|
+
getLastActivityAt,
|
|
205
|
+
renewSession,
|
|
134
206
|
disabled: _disableRenewToken
|
|
135
207
|
});
|
|
136
208
|
React__namespace.useEffect(()=>{
|